mapnik-vector-tile-1.6.1/000077500000000000000000000000001324304754200152355ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/.gitignore000066400000000000000000000003461324304754200172300ustar00rootroot00000000000000*.swp build deps archive python .DS_Store src/vector_tile.pb.cc src/vector_tile.pb.h python/vector_tile_pb2.py test/run-test test/run-geom-test test/run-raster-test *pyc archive TODO.md examples/c++/tileinfo mason_packages mason/ mapnik-vector-tile-1.6.1/.gitmodules000066400000000000000000000001761324304754200174160ustar00rootroot00000000000000[submodule "test/geometry-test-data"] path = test/geometry-test-data url = https://github.com/mapnik/geometry-test-data.git mapnik-vector-tile-1.6.1/.npmignore000066400000000000000000000003771324304754200172430ustar00rootroot00000000000000archive examples python .DS_Store src/vector_tile.pb.cc src/vector_tile.pb.h python/vector_tile_pb2.py test/run-test *pyc archive TODO.md mason mason_packages deps build .travis.yml scripts gyp test CONTRIBUTING.md bootstrap.sh install_mason.sh bin bench mapnik-vector-tile-1.6.1/.travis.yml000066400000000000000000000036771324304754200173630ustar00rootroot00000000000000language: generic git: depth: 10 cache: directories: - $HOME/.ccache env: global: - CCACHE_TEMPDIR=/tmp/.ccache-temp - CCACHE_COMPRESS=1 matrix: include: - os: linux sudo: false compiler: ": gcc5" env: JOBS=10 CXX="ccache g++-5" addons: apt: sources: ['ubuntu-toolchain-r-test'] packages: [ 'libstdc++-5-dev','g++-5', 'xutils-dev'] - os: linux sudo: false compiler: ": clang" env: JOBS=10 CXX="ccache clang++-4.0 -Qunused-arguments" addons: apt: sources: ['ubuntu-toolchain-r-test'] packages: [ 'libstdc++-5-dev', 'xutils-dev'] # test a build with sse disabled - os: linux sudo: false compiler: ": clang" env: JOBS=10 SSE_MATH=false CXX="ccache clang++-4.0 -Qunused-arguments" addons: apt: sources: ['ubuntu-toolchain-r-test'] packages: [ 'libstdc++-5-dev', 'xutils-dev'] - os: linux sudo: false compiler: ": clang-coverage" env: JOBS=10 CXX="ccache clang++-4.0 -Qunused-arguments" COVERAGE=true addons: apt: sources: ['ubuntu-toolchain-r-test'] packages: [ 'libstdc++-5-dev', 'xutils-dev'] - os: osx compiler: clang env: JOBS=10 # https://docs.travis-ci.com/user/languages/objective-c/#Supported-OS-X-iOS-SDK-versions osx_image: xcode8.3 # upgrades clang from 6 -> 7 before_install: - ./install_mason.sh - | if [[ $(uname -s) == 'Linux' ]]; then ./mason/mason install llvm-cov 4.0.1 ./mason/mason install clang++ 4.0.1 export PATH=$(./mason/mason prefix clang++ 4.0.1)/bin:${PATH} which clang++ export PATH=$(./mason/mason prefix llvm-cov 4.0.1)/bin:${PATH} which llvm-cov fi install: - source ./scripts/build.sh before_script: - ./scripts/coverage.sh script: # make sure tileinfo command works - ./build/Debug/tileinfo examples/data/14_2620_6331.vector.mvt.z mapnik-vector-tile-1.6.1/CHANGELOG.md000066400000000000000000000316671324304754200170630ustar00rootroot00000000000000# Changelog ## 1.6.1 - Solved problem surrounded odd reprojection issues when dealing with low zoom level tiles and projections covering small geographic areas. ## 1.6.0 - Bug fix for possible massive allocations in invalid vector tiles - Fixed mercator bounding box code so that it does not require tile size, removed spherical mercator class - Added the ability to use SSE code to improve the performance of simplification prior to vector tile creation. ## 1.5.0 - Added back ability to build against external mapnik (see docs for instructions) - Added support for variables @rafatower: https://github.com/mapbox/mapnik-vector-tile/pull/248 ## 1.4.0 - Fixed a bug associated with image height and width when reading from an image resulting in a size of zero causing exceptions. - Updated to use mapnik 3.0.14, previous version of mapnik will not work properly with this newest version. - Corrected issues with resolution associated with mapnik queries that was allowing the buffer size of the vector tile to affect the resolution. - Removed some duplicate code - Removed fuzzer from library ## 1.3.0 - Updated protozero to 1.5.1 - Changed build system to build against preset version of mapnik and dependencies in mason - Changed to use wagyu rather then the angus clipper. - Fixed bug associated with reprojections. ## 1.2.2 - Upgraded to protozero 1.4.2 - Added ability to dynamically get include paths by requiring module in node.js ## 1.2.1 - Updated clipper - Upgrade to clang-3.8 - Works with latest variant (stricter type matching) ## 1.2.0 - Big overhaul to the interface around the vector tile decoder - Slight performance increase in decoder - Fixed a bug around throwing on incorrect winding order incorrectly when the exterior ring in a polygon was dropped by its extent but an interior ring was included. ## 1.1.2 - Fix performance regression when passing raster through vector tile ## 1.1.1 - Corrected for numerical precision issue when using decoder where it was incorrectly considering very small triangles as having zero area. ## 1.1.0 - Changed defaults for `merge_from_buffer`. Now the tile loading API does not auto-upgrade from v1->v2 or validate by default. The `upgrade` and `validate` behavior are now options to `merge_from_buffer` and `merge_from_compressed_buffer` ## 1.0.6 - Removed boost simplification and implemented custom douglas peucker for big speed boost. - Updated the version of the clipper used. ## 1.0.5 - Several updates to the version of the clipper used. - Removed the code and its requirements in `vector_tile_geometry_intersects.hpp` as it is no longer used. ## 1.0.4 - Updated the version of the clipper again, fixing more problems with intersections. - Fixed bug in `vector_tile_geometry_feature.hpp` that was causing a segfault. ## 1.0.3 - Updated the version of clipper after a bug was found in clipper that would result in invalid polygons where interior rings were outside another exterior ring. - Fixed a bug in `bench/vtile-encode.cpp` - Fixed an issue with mapnik core no longer having `to_utf8` in the same directory in `vector_tile_layer.ipp` ## 1.0.2 - Added more errors and checks to `vector_tile_is_valid.hpp` ## 1.0.1 - Updated to protozero v1.3.0 ## 1.0.0 Extensive redesign in mapnik-vector-tile to properly support 2.0 of the [Mapbox Vector Tile specification](https://github.com/mapbox/vector-tile-spec/). A large number of changes have occured but a summary of these changes can be described as: - Removed `backend_pbf` - Changed `processor` interface - Removed requirement on libprotobuf `Tile` class when using the library. - Created new `tile` and `merc_tile` class - Added different processing logic for v1 and v2 decoding - Solved several small bugs around decoding and encoding - Added many more exceptions around the processing of invalid tiles. - Added `load_tile` and `composite` headers - Organized tests directory and added many more tests - Removed the concept of `is_solid` - Removed the concept of `path_multiplier` - Fixed bugs in `empty` concept. - `tile_size` is now directly related to the layer `extent` - Encoding no longer allows repeated points in lines and polygons - Corrected issues with winding order being reversed in some situations when decoding polygons - Changed the default configuration values for `processor` ## 0.14.3 - Fixed compile against latest Mapnik master (variant upgrade) ## 0.14.2 - Fixed premultiplication bug in raster encoding (#170) ## 0.14.1 - Had error in publish, republishing. ## 0.14.0 - Added the ability for the processor to continue processing invalid rings rather than throwing them out. This is exposed via the option `process_all_rings`. (default is `false` meaning that all interior rings will be skipped if an invalid exterior ring is encountered) - Exposed the ability for different fill types to be used (default is `NonZero` meaning that winding order of input polygons is expected to be reversed for interior rings vs exterior rings) - Added the ability for multipolygons to be unioned or not, exposed as option `multipoly_polyon_union` (default is `true` meaning that overlapping polygons in a multipolygon will be unioned) - Added new test suite for geometries to increase code coverage ## 0.13.0 - Updated the geometry decoder so that it now supports a variety of geometry formats with the ability to return mapnik geometries in value types other then doubles. ## 0.12.1 - Removed repeated points of linestrings prior to them being encoded. ## 0.12.0 - Reversed the winding order of the geometries that comes out of the angus clipper so they are not reversed again prior to encoding - Fixed an issue with nonZero fill not being applied on multipolygons - Removed unrequired unioning clipping operations as union of different paths occurs during the intersection operation. ## 0.11.0 - Changed processor so that it now can optionally turn on and off strict enforcing of simple geometries from the clipper - Updated angus clipper library used in Makefile to 6.4.0 (https://github.com/mapnik/clipper/tree/r496-mapnik) ## 0.10.0 - Changed the way painted is determined. Painted could not be marked as true but a vector tile would still be empty. ## 0.9.3 - Improvements to zlib compression API ## 0.9.2 - Fixed multipoint encoding (#144) - Optimized decoding by filtering geometry parts not within bbox (#146) - Optimized decoding by calling `vector.reserve` before `vector.emplace_back` (#119) ## 0.9.1 - Added `is_solid_extent` implementation based on protozero decoder ## 0.9.0 - Upgraded to protozero v1.0.0 - Fixed attribute handling bug in tile_datasource_pbf ## 0.8.5 - Remove geometries from clipping that never intersect with the bounding box of the tile (#135) - Fix indexing error in tile_datasource_pbf (#132) ## 0.8.4 - Started to skip coordinates that are out of range (#121) - Fix clipping box used when reprojecting data on the fly (#128) - Fixed decoding of degenerate polygons - we need to gracefully support these as they are commonly in the wild based on that AGG clipper used in v0.7.1 and earlier (#123) ## 0.8.3 - Started to skip coordinates that cannot be reprojected (#117) - Minor optimization in attribute encoding by using `emplace` instead of `insert` - Now depends on `pbf_writer.hpp` for zigzag implementation (no change in behavior) - Minor code cleanup to avoid unnecessary compiler warnings ## 0.8.2 - Optimized coordinate transform that skips proj4 failures (#116) ## 0.8.1 - Added `tile_datasource_pbf` - It should be used in places where you need to plug in a `mapnik::datasource` to read from a binary encoded .pbf buffer. (@danpat #114) - Updated bundled clipper to https://github.com/mapnik/clipper/commit/bfad32ec4b41783497d076c2ec44c7cbf4ebe56b - Clipper is now patched to avoid abort on out of range coordinates (#111) - Fixed handling of geometry collections (#106) - Added mapnik vector tile strategy for transform - Updated test cases ## 0.8.0 - Now using `boost::geometry` to clip lines and `ClipperLib` to clip polygons - Now splitting geometry collections into multiple features - Updated to new Mapnik 3.x geometry storage - Added support for simplifying geometries using `boost::geometry::simplify` - Added `area_threshold` option to throw out small polygons ## 0.7.1 - Minor build fixes ## 0.7.0 - First release series to exclusively focus on upcoming Mapnik 3.x release. ## 0.6.2 - The 0.6.x series will no longer support Mapnik 3.x going forward and will instead only maintain Mapnik 2.x support - Minor fixes to compile against latest Mapnik 3.x (works with ec2d644f6b698f) ## 0.6.1 - `tile_datasource` now has optional 6th arg to trigger exploding multipart geometries when decoding ## 0.6.0 - Adapted to vector tile v1.0.1 spec - Fixed compile with g++ / clashing namespace with protobuf ## 0.5.6 - Fix build against latest Mapnik 3.x ## 0.5.5 - Optimize raster rendering by clipping rasters to unbuffered tile extent when overzooming ## 0.5.4 - Fixed bug in line intersection test ## 0.5.3 - Fixed setting of `painted` property when a raster is successfully added - Added support for testing line intersections in is_solid check - Updated to work with latest Mapnik 3.x - Improved test coverage ## 0.5.2 - Build fixes to work against latest Mapnik 3.x ## 0.5.1 - Minor build fixes ## 0.5.0 - Experimental support for encoding images in vector tile features. - Fixed potential hang if trying to render a feature without geometries ## 0.4.2 - Additional optimizations and fixes to geometry encoding (#38 - avoid dropping vertex that forms horizontal or vertical right angle) ## 0.4.1 - Added initial support for Mapnik 3.x ## 0.4.0 - Refactored geometry encoder with fixes to drop duplicated/no-op verticies and/or close commands - `npm install` no longer runs `protoc` - the responsibility for this is now up to `node-mapnik` - Optimized is_solid check ## 0.3.7 - Add back protoc running to avoid unintended node-mapnik breakages with older versions. ## 0.3.6 - Avoided 'Unknown command type (is_solid_extent): 0' ## 0.3.5 - `npm install` no longer runs `protoc` - the responsibility for this is now up to `node-mapnik` - Improved tile encoding: empty layers are no longer added - All move_to commands and the last vertex in lines is no longer thrown out even with high `tolerance` - Rolled back the change from v0.3.4 - multipart geometries are now again not decoded correctly, but this needs to stay this way for performance reasons at the cost of correct marker/labeling placement on each geometry part - long term solutions tracked at mapnik/mapnik#2151. Re-enabled to v0.3.4 behavior by setting `-DEXPLODE_PARTS` in `CXXFLAGS`. ## 0.3.4 - Fixed tile_datasource geometry decoding such that it polygons are closed (for hit_test results) - Fixed tile_datasource geometry decoding such that it respects multipart geometries (#19) ## 0.3.3 - Added support in tileinfo demo program for reading zlib compressed tiles - Removed dependence on clipper.hp unless `-DCONV_CLIPPER` is defined in `CXXFLAGS` - Upgraded bundled cache.hpp test framework to `1.0 build 8` (kapouer) ## 0.3.2 - Fixed `mapnik::vector::tile_datasource` to respect the feature id if known ## 0.3.1 - Added support for reporting known attribute names for a given vector tile layer via `mapnik::vector::tile_datasource` `descriptors`. ## 0.3.0 - API change: mapnik::vector::processor now requires a mapnik::request object as the third argument. The reason for this is to make it more viable for calling programs to avoid needing to mutate the map before passing to the processor. Now the `width`, `height`, `buffer_size`, and `extent` will be taken from the mapnik::request object inside processor.apply(). For now the `srs` and `layers` will still be taken off the map. ## 0.2.5 - Fixed incorrect copy of protobuf writing backend when passed to the processor ## 0.2.4 - Marked tile_datasource implemented to avoid duplicate symbol errors if used from multiple compilation units ## 0.2.3 - Fixed casting between doubles and ints (solves test failures on 32 bit linux) ## 0.2.2 - Fixed accuracy of bbox filtering of features ## 0.2.1 - Removed tile_datasource validation that requested attributes exist in feature since current vector tiles do not guarantee that `tile_layer::keys` is populated with all possible attributes and rather only include those encounted by features processed. ## 0.2.0 - Now filtering features based on mapnik::query bbox and filtering attributes based on mapnik::query names. (#6) ## 0.1.0 - API change: Optimized spherical mercator math and reworked interface. `mapnik::vector::spherical_mercator` now is not templated on max zoom level and works with any zoom. `mapnik::vector::spherical_mercator::xyz` now expects references to doubles instead of a `mapnik::box2d`. ## 0.0.6 - Removed stale and unused code ## 0.0.5 - Packaging fix ## 0.0.4 - Compile fix to use consistent headers ## 0.0.3 - packaging fix ## 0.0.2 - test / readme improvements ## 0.0.1 - Initial release mapnik-vector-tile-1.6.1/CONTRIBUTING.md000066400000000000000000000014211324304754200174640ustar00rootroot00000000000000# Contributing General guidelines for contributing to mapnik-vector-tile ## Releasing To release a new mapnik-vector-tile version: - Make sure that all tests as passing (including travis tests). - Update the CHANGELOG.md - Make a "bump commit" by updating the version in `package.json` and adding a commit like `-m "bump to v0.8.5"` - Create a github tag like `git tag -a v0.8.5 -m "v0.8.5" && git push --tags` - Ensure travis tests are passing - Ensure you have a clean checkout (no extra files in your check that are not known by git). You need to be careful, for instance, to avoid a large accidental file being packaged by npm. You can get a view of what npm will publish by running `make testpack` - Then publish the module to npm repositories by running `npm publish` mapnik-vector-tile-1.6.1/LICENSE000066400000000000000000000026641324304754200162520ustar00rootroot00000000000000Copyright (c) MapBox All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name "MapBox" nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.mapnik-vector-tile-1.6.1/Makefile000077500000000000000000000040531324304754200167020ustar00rootroot00000000000000GYP_REVISION=3464008 SSE_MATH ?= true default: release mason_packages/.link/bin: SKIP_MAPNIK_INSTALL=YES ./install_mason.sh mason_packages/.link/bin/mapnik-config: ./install_mason.sh pre_build_check: @echo "Looking for mapnik-config on your PATH..." mapnik-config -v ./deps/gyp: git clone https://chromium.googlesource.com/external/gyp.git ./deps/gyp && cd ./deps/gyp && git checkout $(GYP_REVISION) build/Makefile: pre_build_check ./deps/gyp gyp/build.gyp test/* deps/gyp/gyp gyp/build.gyp -Denable_sse=$(SSE_MATH) --depth=. -DMAPNIK_PLUGINDIR=\"$(shell mapnik-config --input-plugins)\" -Goutput_dir=. --generator-output=./build -f make $(MAKE) -C build/ V=$(V) release: mason_packages/.link/bin/mapnik-config Makefile CXXFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0 $(CXXFLAGS)" $(MAKE) release_base debug: mason_packages/.link/bin/mapnik-config Makefile CXXFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0 $(CXXFLAGS)" $(MAKE) debug_base # note: we set PATH to the mason bins to pick up protoc # and CXXFLAGS/LDFLAGS to find protobuf headers/libs # This will only find mason installed mapnik-config if run via the `release` or `debug` targets release_base: mason_packages/.link/bin Makefile CXXFLAGS="-isystem `pwd`/mason_packages/.link/include $(CXXFLAGS)" \ LDFLAGS="-L`pwd`/mason_packages/.link/lib $(LDFLAGS)" \ PATH="`pwd`/mason_packages/.link/bin/:${PATH}" \ BUILDTYPE=Release $(MAKE) build/Makefile debug_base: mason_packages/.link/bin Makefile CXXFLAGS="-isystem `pwd`/mason_packages/.link/include $(CXXFLAGS)" \ LDFLAGS="-L`pwd`/mason_packages/.link/lib $(LDFLAGS)" \ PATH="`pwd`/mason_packages/.link/bin/:${PATH}" \ BUILDTYPE=Debug $(MAKE) build/Makefile test/geometry-test-data/README.md: git submodule update --init test: test/geometry-test-data/README.md BUILDTYPE=Release ./test/run.sh test-debug: test/geometry-test-data/README.md BUILDTYPE=Debug ./test/run.sh testpack: rm -f ./*tgz npm pack tar -ztvf *tgz rm -f ./*tgz clean: rm -rf ./build distclean: clean rm -rf ./mason rm -rf ./deps/gyp rm -rf ./mason_packages .PHONY: test build/Makefile mapnik-vector-tile-1.6.1/README.md000066400000000000000000000050001324304754200165070ustar00rootroot00000000000000## mapnik-vector-tile A Mapnik implemention of [Mapbox Vector Tile specification](https://github.com/mapbox/vector-tile-spec). Provides C++ headers that support rendering geodata into vector tiles and rendering vector tiles into images. - Master: [![Build Status](https://travis-ci.org/mapbox/mapnik-vector-tile.svg?branch=master)](https://travis-ci.org/mapbox/mapnik-vector-tile) - 0.6.x series: [![Build Status](https://secure.travis-ci.org/mapbox/mapnik-vector-tile.svg?branch=0.6.x)](http://travis-ci.org/mapbox/mapnik-vector-tile) [![codecov](https://codecov.io/gh/mapbox/mapnik-vector-tile/branch/master/graph/badge.svg)](https://codecov.io/gh/mapbox/mapnik-vector-tile) ## Depends ## Implementation details Vector tiles in this code represent a direct serialization of Mapnik layers optimized for space efficient storage and fast deserialization. For those familiar with the Mapnik API vector tiles here can be considered a named array of `mapnik::featureset_ptr` whose geometries have been pre-tiled. For more details see [vector-tile-spec](https://github.com/mapbox/vector-tile-spec). ## Building from source If you do not need to build against an external mapnik, just type: make This will download all deps (including Mapnik) and compile against them. To build and test in debug mode do: make debug test-debug If you have Mapnik, libprotobuf, and all the Mapnik deps already installed on your system then you can build against them with: make release_base Note: SSE optimizations are enabled by default. If you want to turn them off do: ``` SSE_MATH=false make ``` If building against an external Mapnik please know that Mapnik Vector Tile does not currently support Mapnik 3.1.x. - mapnik-vector-tile >=1.4.x depends on Mapnik >=v3.0.14 - mapnik-vector-tile >=1.0.x depends on Mapnik >=v3.0.11 - mapnik-vector-tile 1.0.0 to 0.7.x depends on Mapnik v3.0.x (until 3.0.0 is released this means latest mapnik HEAD) - mapnik-vector-tile 0.6.x and previous work with Mapnik v2.2.x or v2.3.x - You will need `libmapnik` and `mapnik-config` available - Protobuf: `libprotobuf` and `protoc` ## Tests Run the C++ tests like: make test ## Examples ### C++ See examples in examples/c++ ## Authors - [Artem Pavlenko](https://github.com/artemp) - [Dane Springmeyer](https://github.com/springmeyer) - [Konstantin Käfer](https://github.com/kkaefer) ## See also - http://mike.teczno.com/notes/postgreslessness-mapnik-vectiles.html - https://github.com/jones139/ceramic - https://github.com/opensciencemap/vtm mapnik-vector-tile-1.6.1/bench/000077500000000000000000000000001324304754200163145ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/bench/enf.t5yd5cdi_14_13089_8506.vector.mvt000066400000000000000000051235011324304754200243070ustar00rootroot00000000000000R multipoint͸"Ǹ             ;            ;            7             {             =            ;             7           y            9          7          7           w         7         ;              7                     =            ;       5        s            9           5       1       {           ;          7        1       w     ;       5        1                       ;         9            7       m         5           9          7        s         =         ;           9      }          9        ;        -               =           9         3             {         7        ;            =        y          5            9      =        y             5         3          3                 =           5         =          o          7          3          5         {          5         9         9           {       1       9         3                         ;          =          ;           }             ;             =         9        {          9           7           7       u         5           9         9                   3              =            5          {       5           ;            ;            }         ;           9           ;           w           ;        Ѹ"˸    9            9                        9         ;          =           y           7         ;           9         y            =            9          9    y           ;           ;         =                 =              5            7         q       1          9     9            {          ;         ;          =             {        =          ;         ;                  '          1           =       y          3    ;       /        w      ;        =            3          {           9         3                 1                            =             9           ;          {          9        9       7           }           ;      =         ;      u            9          =           7                      =           =        ;           {               ;           =         ;            }       ;      1          =           y         7            7         =                        ;          9          =            {              =            9           7           {        =             9          7          }             =            =            ;                        5          9        9        w           ;       9        1              {                7           ;          -          u           =           =           =                        -˸"Ÿ         ;            =            {          9             =           ;           w             /          ;         =            }           7           =           ;                         5          ;            =            {             ;             9         ;         {           9            =            ;            }            =            =            =                        7           ;        7           y           7            =          9             }           9         ;           =ϸ"ɸ             {            ;           =          1                1      ;          9     w         7  9        /      y         =       ;            ;           s         5          ;         =                      9             9          9          }           7         7             ;           y         7        ;       ;         o         3       ;           7                  ;            =          ;            {             =            =            =            }           ;        9        9          m         =            ;        =                    7       ;        7          w    5          5         -        u          =          ;             ;            s      ;          =             7                    -       9         1        s        -           =     /     w        7         ;           7          u          9        ;           7                          7          =          =           }            9          =            ;              {         ;            1             ;         y          9           7           7   ϸ"ɸ                      ;            9           ;           {            =            =             =            y           7       9           9          {       9        ;           ;                5        5          5       y    1           =     /           {          =         9           7              y        -          9         9                           5         7         ;       k           5           7      3        {           5         7          9              {            5         9          ;                          ;                =      7          y           =           ;       =          {             =           =            =            {            7            =              9                    =            =            9            }          ;             9        7         {              =           ;           =             {             9          ;           9                   5           ;       ;         y            ;         5           ;           y          3       ϸ"ɸ      7             ;          }            =          =           =                         ;        9            ;          }             ;             9            5   y            =           5            ;            y           ;         ;             =                        =          =         9               w             ;              =            ;         {         ;          9           =            }          9          ;       7                    5            =              7           {              5            9          9        }          7          =           ;            {         ;            =          =                        ;       ;          7         {           9         7      ;            {         7           =         1          q         ;      =       -                      7         7           9               {          =           9           =            {       ;            9       =        o            9               ;           9                7     -   +      w   5  ;   1    k     !   7    ˸"Ÿ      +   e    '  9   1              1    /        y        5    ;         9       {      9      =   . ;           {         1       5             -                   =             ;          =         u               ;            9              ;            w             9             ;          9            }           =            =             =                        =            =            =            }            ≠"Ƹ             =            =            }            =            =           3              w           9            ;        5                        ;           ;        1        }            =            ;            9            {    %              ;   5      }         9            7         9                       7        =           =             u          =            9            ;         }           5       =            =           y           9              =          =                          1           =            9      w        7            =          1          }        7            9       )     ]    ϸ"ɸ H    -           =      5          7          3           5            {          3       =          =               }       -           ;     1    q             9           1            9                 '    5         9            }    ;   9  "  7  4w          1        9            9           }         -      ;     5             1     /     1      o         5       =    /      }          7        9     7       q   3     ;          /                 =            =         =            y            =            =           9           }        =             ;         9       q            =            =         =                         7           =           =            {            ;              =           =            }             =            =            ;              y         ;          =          7                     5         ;         =        g            7           ;         7             w             7         ;          +             o            3             =          3                        ;             =  ̸"Ƹ           ;            y            9       =           7           {            7            9             ;            {          =              =            ;                        =            =            ;            {            9            =           ;            }           =           ;          =          {            =           =            5                      9           9              9             {            ;          7            7              {            9          =           5         }        ;             ;              =                  9              ;            =         u        ͸"Ǹ      =            9            ;            }             5             =          =            }          1             =           5                          9        7           =           {        5         7              5           }           ;           =           ;          {             ;           ;            =                         7           ;            =           w            9           9            ;            {           =            ;                ;         {           9           ;            ;                      =             ;               ;            {          ;         ;             ;            y          ;      7               9          {         9            =            3                  ;        7            5              y             ≠"Ƹ              =      7            {           =           ;            =            {            =            ;            =                       7           ;         9            {        ;             =             3             {            7            ;            =             u           ;             ;           ;                        9            =              7          {           7             =             ;         }                ;           ;          ;            y              =         5            ;                      ;             ;            =           u             =          = ̸"Ƹ            7             {         ;            =          ;              {             =         9          ;                       ;           =           9             }          ;             =               ;             }             ;            =              9            }            ;            =             ;                       9            =            ;              y            9            =          =           }            ;           =           =            }            ;            9             ;                         =            ;         =            }            ;  ̸"Ƹ             =            ;            {        5           =          9           w            =           =            =                       ;            =             =             }           =            ;            9           }          3             ;           ;            }        ;          =           ;                     9          7            ;            }             =           =             ;            }            ;            7             7              y            ;            =            7               ˸"Ÿ          7            =           =           {            9            =             =           }           7           ;           ;           w           =           =            =                      ;         9      =          {          7              =        3       {           ;           ;            =            u        ;          =            ;                          9            =             1             w         =           ;            ;                {          =              =          =            }         ;            ̸"Ƹ =            =                         7            9          9          {           5            =        5         }            7           ;      7         {          ;           7          5                   =           ;       ;           {            7            ;          =            }             =             =            ;            {            =             =            =                          7             =            =            }           =          =     ˸"Ÿ Z       ;            {            =            =           ;             }           =            =            =                       7           =       9         y      =             =          7       w            =            =           7             w             7           9         3                       ;            ;            =            {            ;            ;            =            }           9           =           =       {          =            =           ;                     ;              =       ͸"Ǹ      =            {               ;             =             9            }            9           =            ;            }           ;           ;          =                      3            ;            7         u            1            9             =          y          /           =            7            w              /           ;            =                    -            =           9          }          ;            ;          ;           }         ;           =           ;            }            =           9            ;                     =           7           ;           }           7             =          7           {           9            7          9          }          7             =         1                     ;           ;              =        ̸"Ƹ     {           =             =            =          {            9           =             ;            {            ;           ;             5                       ;       7           =            w         ;        =              ;         }           ;              9       9           }       3         ;       7                    ;            ;           =            {           =            =            =          {            9            =             ;            }            9           =            =                         9               Ѹ"˸  =       ;       q            /         9          =       {       ;       =          7          y       7      ;       7                     9          ;         =           o         9            ;           ;             {         9           9             7    i       ;           9      7                    9          ;          9           s           7          ;            ;           y        /          ;          =             u           =          9             9                        9           9           3           q           7          ;          7            u       7          =           =            y            5         ;           3                          =        ;          7            u            7             =      9            }          7      =          ;           y        =             7       ;                  9          =           9           w           5              ;         9              }        ;           =             =       w             5        9          7                      ;              9     9       s       3          =        5          y            ;              7         7       y           9         ;          9                   9          7          1      }           3        =         7          }       =          ;        ;         o          9         5          1                 3        9          ;    y           -         ;         ;         y           9           9         ͸"Ǹ    5           }           ;             7          =                     5         7        7         w           7         7             =            {            9            ;           7          w       ;      ;           =                   9           =           =          }       5            =             ;            }            =           =            =            }             ;            ;            =                         ;             =            =             y            =              =             ;             }          =         =            =            w         5        9           =                        =            =  ˸"Ÿ           =            }            =           =            =            }            ;            =            =            }           9            =          =                         9         =            ;             }           9             ;              =         }            =          ;              =            {               ;            9            ;                       ;            ;           9          y          5        ;          5      y        =         θ"ȸ ;            =            w            =         =          =                     7            7             9         w          9           7              5        }             7             9       ;           {          ;            9             ;                  ;            ;              7              w         7          ;         7            {            ;          ;            9          w          ;         7         7                     ;       ;             ;           u        5             7            ;         u           7            =            7           }        5        =             ;                        ;           =          =           {         7          ;          7             {           ;               =           7             }           =            =            9                        =            ;              ;            }            ;            =        ˸"Ÿ     =            {            =            =          ;              {            9            =             7                   9          ;            9             }          =         ;           ;            {          =            =            =            y            ;          =            =                      ;            9            =             y       5       ;             =         }             =            =            ;            {          ;            =            = θ"ȸ                       ;           9           ;           }          9          ;          7            {     7         =         =         u     7        7            -                        ;          5            9             w       9            =            ;             }    /             5      5       {           ;          =            7                        9            =           5          q           9        9         9       }             9             ;            =              w            /              ;           ;                        7         7           /         {         9        ;          9          {             ;          5          5       {               ;          =            =                    ;           ;             ;           y           9            =            7            {          5           =   ˸"Ÿ          ;            {            ;            =            =                        =           =            =            }            ;           =             =             }            ;            =            9         }            =           ;            =                     =            =      ̸"Ƹ       ;            }            ;             ;             =          y            =            ;            9           }         5             9          ;                       =             ;           ;           }              =            =             ;            {          =       ;         7            y           9            ;           5                        =           =            =            {             ;        =          ;             }          9           9           =          {          =             ;          =                       ;         ̸"Ƹ  =           ;            u              =           ;               7           }           9           =           =            {            7          =             ;                        9         =            =              {          =           ;              =         }           ;             9             =             }             9          =           ;                        ;            ;            ;            }             =          =               9               }             ;            ;       ;          }        9             =           7                    ;            ;            =            w  ̸"Ƹ          =           =            ;            {           7           =      ;           }            9            =            7                        ;            =             ;            {           ;         9           ;              }            9           =            ;         w          7            ;           1                     5            7           ;            }         9        ;            9           }                 9             =         =           }          =           9              7                       ;            =               =          {            9        =       9          {            =            ;             =          }         ϸ"ɸ    =            ;             =                     5           1           ;           y       ;            ;               =         s           7         =            =             u           9                   =           ;                        3         ;         7           s            ;           ;            ;        w            7              9           9             y               ;           3           ;                       /           9         3               s         ;              =          9            {            ;            ;           7            }            =             9           7                   =           7          7        y          /          ;           9          }           =           =              =        {          =             ;            ;                     ;           ;             9              {            ;           =              ;           {            ;              ;            ;           {          9          ;         9                        ;            =            ; ͸"Ǹ            }            ;             =            =              }            =            =            9             y           =            =            =                   =           9              =           }          =             ;           5                {            =            =            =            }              9            9           ;               7           9            7             o          9           =         +         q              7       ;             ;              }        ;           ;           ;                        =          ;          7          y        1          ;        ;         w           7        =           9             }          5           =         9                     9           ;     ̸"Ƹ       ;           w           7            =          7          }         ;          ;             =            }            =          =            =                       7              =                 9        y             9       9     7            {           3          =           7           w         5              7           ;                       ;            ;           =           }            =        ;             7          {           =            ;            =            y          7               9          =                          %     #         %   #      !    #                %      %      !        %       %      #      !      %                ʸ"ĸ  %       #      %      #      #      %                    !      %      %      %     #      %      %            %        #    #       #       !           % #           #      %      %      %      !      %       #     #      %      #       #      %      %      #      %     %      #     #               = #     7 %         #             1              3   #              9       ; !        = #        7%              ;        ;#           =  %          3 #         5%            9             9 !        ;#         9#         +           3 %          1             9 !      "       ; %              =  #            ;  #         7 !         9  #           = %            7  %            ;%              9#             7%     #       !      #      !        !      %       %              %     #          #             %        %      %                !           !         %       !              %                           #                 !                   #                !       !       %       #        !     !      %        !       %           #                                  %      %       !             #            %       !=          % ;              !  9            % 9          %  =             # 7            !  =          %/           ! 1         #=           % ;           %=           % 7             %7            ! ;        #1        #     7           !  9         /     %  9       7      # "/           !  /      %=        #9          %   7          +        *7      !  =           # ;         !    3           #    !%      (xmapnik-vector-tile-1.6.1/bench/multi_line_13_1310_3166.vector.mvt000066400000000000000000010065711324304754200241460ustar00rootroot00000000000000xtYmuk7_ߟ{nsX%K˱eY[d,ײ*妨"!*1IpCQH0!!NQ"! 1߀[};k֜c9|g3_oOۇz痚.?_?xz?x:?Ţs7ןlϯ5p.Q|=*7u{ן|;g.zmy¤wƯ6mˋ1i[0 W2;|/f垜#9(x<x.Ÿ^uEL~&޵Ũqe(VPz+Wx OjqYSed~ގovGV`r*I{j:I`zeT[ճsk#|?pqmʝ/@?I8~\? &{7)__Bh1%~6 oqKZ"Ql(H:`AӅFfSL%mU0X2|yQ; zzSovBҍg. 6@:^V6Hz11bA@'hvUFʕD[h:w# 2Ἄ>v̳Ηc:LQ)O >&dDV`$C%H[m8f{26[ؠ]xXXjyIqҊ>:] TPIX7[AxQ<4 2eb>c2l<.1},v>5C4YgE܅7. <~j [^ x\g6r|(f[yDģ蜍DOkZYDwM=XjWbFJiov5@tCCfķ9M*m%H-rҳ (cJ!ь '|V1We^#\0'b';9w@|ݘޓ5;+CRD7qKc8#9~S!eMԡ8ӟ(Z'e*ϖuBό}8D|ږ/~y,cQbq>ŝ !Y8(2Z{ƭbsW2wOyX3H&;r!3wHϞΝf#GX'z4{'pVy"cy fBKN 9Ɵp+>.G@}RnBbP#\i =Bݔ P,cˠwxIP ]r6ʬ\_, KͤPs8x^|{ ߌ YkB"N\ϖW~?/~#& ["ycWV\-LL^R/4%Ar;cA2+7 },z=#v+HpL*폏{17,08ZJ':F6#|)sY)D0QgQA‰#AaTb[(e\$%&fOώ c-"p'&ԁ!̴wXoΓ[&x)bFIS?=Bycޏ)txazߐP51P\xYŝ,XG}|ƶ/CL ܀`&6^Ɛ4U"0\wnj.ii1Xcx[ݎP416Eڅ%BvZd9DvN>h0&~nR29, ߄mN4;'z#{%`b#]fR">wt~ N_q u'}HL:U< J̞06 QO绞у-b,!=xRl5swI,mp[oૺwF̋" g0e!Ƒ,OWb~yQ'vW>'۫d>@^PN@m?ecq%l|ʻӬN)܊-v+Έ&ʐm\(y!p͵.d+?;@IZac8Bf*v'+5 0@% mB -oqAԅa<25=|U(Y!X/4);Qֵ M +B A_hU؎@#9'r(& Mˋ1~Y蓛/oٷ+H^YFzd38 Ty' SY*VL٭&{󇊌8Q>[_ןA7;nεc8: L`ojO* ǖx3$>NSxH8wn%bn1~RL^`g)Oʨ:::>< Uʞiq} +,k)/c$!MߔY-ϟiGr1{/JyW ɀ"M2ney |U񟏉w(̊&9j*x!b$^ 2zЖ[eZM]'G*Bv̰<(gW eJM x{/ޭDhIgRRM2!%D:_*rg`(׾Ei T cUHN 3<5+^yZ3x|ta#^_8-OshPԞsG7cXKJrH4Qx.VDC%7?ZARvN:wڍ7:m^H:e&L5aC@WWc㓳7M EyIŽ7(l v3yg6&ͷg52W8*Y*/0!mDƉNh#ܶ.S'UzWF $~>(8k{C^^Ԁԩ[qdXVST`v\s|S*`:! |ϱRYjvPkMLb8>iH]%7Z]&u#GoEəZ&q&t;z!W\yA'ĂEC|LX+Ea`,ofeZYi w,F&eJ.lJ[J. Xla1dNQF]*ZWn,G'>4MU9MFkaPkkwYžbLI QWǏ)MΥ'6e(%|q݅UɠPLOKd/oܜfJh()UbB">NԴ7hv k*$Ow]uR e;mIAVv+\X{jE qY+ o7K߮JŀK cq-ú)ʩ$!U;O25|7jZ~Io=Z׺*죊p.CG"yώ9 /&6F<+0{&DMf-#H8s`'![ĤҀ?O8t9̼WůTY 3'1t ߒ ,T,ߴ"K=g?bmP,$͚ c'T1'9?yrC y^FA)b2ɉ~;Ӵ*CD}=c8ܡ7lGE&<~V8Қ/%nZpokGWxBM)1N۱m#۽8h!a0OxF~Q 5~aW#"~(2W#Vz-\: .dbE֮ۢvAivVDմBAHABF@sjլKY7c4Я$[̷@h± H$pJٍ+-yc(Ӌ 7E JL,0p:vǥ0L3B(DĸH( DpW=6+ Jc2ԑK:Ar ?t 9C9VmTI[s8 (Z<5ӫ"ʲz2 -$+m&e Ffڔ%k ݐl[J>P/$lsRHc!{##3jUQyᙩ^j]?k{oW7Fy'L\@|1OK8As^Mwu&Ի&Q{7KŽc2;!v'Un靍lBkޠ5-IџCS4\{QYk-3qy@3J핱c͙NU֤#%v^4oeyo.3=mqVf7R{/c:az>ƀ"y{-ulivFKI&g?]'3gdJ^[Tb -3m5N=XYMR\wcF#m'<ݺ(ܞH %C/mTcIM#,ǪKÉzܕc{r1{nr߂F5 ^=6{Vkù'GIM26AX̠el -]5_o|_/\&HY` {,^=a-J8ڇ9VJHc,wmKzM!`ey}JŜl^wt݌ Δ~T}.NhrRx2P6jɪb^bLYg7&6)KV٤ Q^0RF]9,|řwIvi{\V-+%[̲aW0V򤬑;ݩQAPpB66j) $fdAjչvde!#݀-Ҋ|mYNJ I% X u{ lRyqЉgj/BàAs$^[bnpPuêNFj4vewyYr[VlVj$<\F(V b5r+'VVi,ʼ5inwؼ(6G_fUflfD Q#!XZ*ÐnSݼs_}o\6;pZbWvzmUvCJԠT^Pr33D^Y.Ժ~HRp:.J;P@#~~{6 *!o̰UVsU=9pԀfX)]M)Tt\(÷Rc{X,NWAӴHU;VBU޴0AW y|{FH&NmYq$C\KtvkXM\ot΂#6jiW}hHFr&4rbsF>E<.0Ӷk"gLMbYhpJL٢4X>^$KQy . K 8'HUY)ǟi?oyr?;2aalxy ?JNc2'6L[f]>dEկfuW쪹Nաcu䰉5I'/DшG*%7^kMoMrWrn6k8[J"l}u۰`Dw?@/Nt7%2;13XTDž֫S-|5Qk\7w"'"&DlyV4)K58tlt|KDF'ea3etu,վ@)aі$MrcZs晠њ@"FIv. _PvY<g2on!R>7:!RO-vIbԧ`ʓmĚ3D&ߘF1Cw77P1&V0#"P[Hm Mu1f/\SYyt],gԅ ֨ z,WVN;? - \7tȳ@`!8q* S;\@[6 L$OZ>"{RBr n;3Qhb6,Q:t'Vn\G3HSGjxѼviVݸ,8~hw"~ZX]Y|,(Ojb6 sqN8+{.؈T@];7QŲ+40_7 /TeMZ;WiNT:49E2FK!0S>(yr]Ư*4OS=rώdlE |#el}&v牒QYwQ;(q҄:wr)F~r6:uWH{ H/W@\ߥww2*u§6 2Kv{/w9 IT:ɲgR N׋t ֢L0sDφr H0 ʴ:Ud+ r)PDocDDjo3#TH8(l+ %m3Qj̗dwP:g $O B܄aшM*qF#e!0AE,m6«b*`ce| - ߤOn3ڢ iC/Q8c vFb` (%H}7hn.a;]+'cMj=)OtnҰNtW%\}BmpHV?+0X -|PbNΊVF.Q!w t{FJ* fBo %p?,‰(+5DuBGb7HkwSuzPh{a5;ZU8D$Tg>> S}kg~$)]0S{Qɮ\dzB C:~ Asbqg&ngzFܞIr-l#=aN>d8ܨ_R0uDntwܹ$ͬ[u^{&c*Gʞ.ϖ|.3MNrI)YwAz~,Zx5z~T29.[Kt}߮i7μt|=7$72_JuCmGN[9 斩VP 2y S!%h2ȱE@; XđV WtMj("$+44Cm8x c-ś{tFjp֦OFAdj85+.$1Y VmF?k}G;*WrSV vVKE2܄[$ψ٢(ZYzwo.ce!3&•J Sy)dFc S1=c7+7[{zag~T˨AH/)ھM6m|mTZx㉞*P-Eّ*FfH=&i3%>] Bh[{Or RDY|sBm.e ]ӲZ$oݍtPf|C$ܹo(D"Ʉs*bwͯNHxu9GeIzx*rMv*D50V S?+0<犄n ']0'uRv=𬢄LOv&r:e$YmAGLOk. -cN*%hQ{, "[$sUٟDhl?tWpXHa5ʦ e0gЙdW[]Sdڦ^DEFb@{Cq \JǢ8@gw\IJ!Xlʀ%ò7\Σ޲,0}5wW&UU4/7;1X|1JQhSx1icaQ(BR3w9Vn:.ɦq@;Nzl̏lZWc/IN={aIB48'u=h_M#AJଈJ9qg, P [u7:)up:eZ4(M'ͽTJLSrUϨß4S0B79ш:U`e!=/5F3v!xq@Sk.8wqGN B0ȄcN(rae_ɟ/O}7 O.5.X &s!g Qa(˵3؟Aרkϲ875KYW^IKBbzA@<@2qt•󯉣R1x&Y'b0^P|S()I&Y=Tb0q+UgnOxı#;&HFeŁ;-_oNB@ךNZ u Kq;8[HuT y7䪼ħ=;;O2 <_X%}9ThLsȲ)V]?qp?U ΐt{e\!/PbWjm[Q햦=oa4V0to:QdܙAie~F3iI+m@)df̂L&ұo'wv0B; (_xۃPIpcQ6O) 8dz]MMw8$ߴR\12IBK<^?8 g/3DL*N|O ь1 <0:%>W"Vd׈0Z}[xVqҝ1Ub a~Δp*uv0>\[yֲh+?ןi\G}P(rW =L·_ā۔sOb'8> E|^ n+wfQᛤ14>˂B|Scb_23etmOǜ}oLXdo r^J R00puzEBA)dһ%_?5$:mEg"Z;.l]l3${Wq(qĊp2uKj4lQc[?u'O#O{ey6b?SMͱbXh#y&ভŨY_.QZ2+׉ b` }}ۡ|c. |foЕ~k%VPF.V MXPiS\J5+ SYS7m6F&Q1 /!uwN/qHS4 "i=q && +$N2ha>n_ 0CۄXX1eXRgvI91D;BuӠ0zY~Y)uӡ-/#9 zKot 'Ӭ+QW<=*~A[0iePWUKqNs:uGw .<}RB7rx\n֝b2EܴS8{??ɓ^A^z7#\ t)ܕssT; oghx'H^ LsEDžexݷKkY)j q=g)>(Xh!2+tO`$I׮!M^6 |y7ZV"){Q32_D^O ؄S8?z:xP#u B4:QY~•ƙ vusQ[ףOeqnvЍ $G[vݮnƼ*y[H yx u@èK! -ut)ifwQ\9$ќcf w+78o[ [~K {t7: lObUǛ֐Hokޫ hbG[X1 M9'&9FV~ 54ʋڈJt'W?eXŨAe4֢_=hNdsw : ̓ 6`F[K>BJ6_p9ZyT>bw11/5^zq`/ zyzǷ\EjS,^ĭ)u!EJ'g>c:Lk:Yإ >Ϣc:(UtbDIK4s,Fe$\rf"%;&l}Y+IIeAڙEVuÌԭ>EgRoJ%*?F>c}TOVyH޵=+`k1>t EVBBҪ)Aٚ_*.xώ& VT~GmTa||/f; =2-ƾkY SmeCo}"a.'nh͝ _hE|:LAA}6ȃw{px03.b,|hPsW~,tPҟj͠Vk B_s1;l%s|xKK$;řnB%nf<{쩼6oa*ߩLhѨ$>;4Vĝe^Id,+9)kH҃靁 ,ݣ-#v:ƈ4PLRKW] ^ᗅ&Ρ'v|+i_jȍ8$r"?367Vpoٳ- q2B) $e{+t$_FB> >V:'249m붘Cۣ+6&.'^?#y|/J9J'6IeMDPۅ+#q ,.=BV~VP=cqzo hn$F۷RaVċrv/wʸn&J?ѸOxFDA?F'6pk垴J(*=XHo-,ى߾(gSiL>ZumN<~y]&n ۡeZ9uMc+D$Aŷ;eWgڵA863c%}9l>gTGdI{ vJsy[w^| {"wx"eZ#Q>(Sxr <7%5U-*m*!,jy\4۷Ș| "D 98Dpd[&A˿)OLlO13o4ebesY{QLvlcDnH%u8p2/:ް*#f9yg۴E1VQC~7m+|&4cQ*VZ)gx9]IF$oc,FlnmoQ?aP];*JD\{'LE@-lk-GW)Z.~LYC_@ ^]U^ڧN\teV^? P@ D^)Pr8z~] -$bllj _eD^߿H-n|#1"Wo2yni,1=5H+F^pq/ E(e';km&$ ZSD"R}r)W RTU! 4R&2!9*v?T⠼[[d`Vo/$?0W7 4e:PFyc8zwNY*Rfm>mX:oS|&!2۷?OwPt43B4<ER/c>>{EV3HfTp>!Hȃoj<! K_oYx[8{A>AhRk:ʀZk\Lڛ)?}f-cxd O=TnS%BB8WVQLAdrPxvs̭НUþ;aH(S>J-|y"/f'B z̊(nY!ȱk:S8BXX7],Z4u==Ey r"6T7,24P褶gy 4:kOFzqzNN40TȕVUzAeb|ן>cC`\#ZG.| g/K:EBV{%{(wr3BYÎ7dJzchN8Ii 'Tr*ޠQT#,ȥMdҮ+hZt 2 BW$Ɔ~zbůrSE,abz$dK.1px‘BWIC`mmelwHЏ:d?@ 9Eŕ;IpU{yQ[SSķ .pS %7 0~|[N<Bm<]5j8L.W[g,8@o"^[~!wiz7iҮ1!OPkبP-0(p1_\At3ߒofNCtT vYٙF^'cPfKLl%H R-BjrPX-n`-ʷ[sy6εe:~؛`T>9A@vw,d.eX$Q>Ȯm5h$2tecYz*=Ӳd6xo͜}"P^.k1HJ8jqٯiY 63U|HxT-.4 /HD X}uEqxAD&"k,38'CoC0)x,yUӕOtYy!"Gܲ&{4F*ⴑF&j!0WgzY!։54j3$XvGͯ6etsxG7uW.µrv.h*J$JwN.@x囼c&~j Ŵ YIBChH\gʟ`W耢ɠE-oXf=nbP{d]ji1;hp=|ZDw+8^#^Al-}ޱ֑/0}J3I7Uy6JbF8vTǨPzS++]>q f!opb~|ƃԭ=mWC$cLDT*4NTpЗBdQ/u{.6px,:BUL ;Xs\2 հl Ӥ=M+őվr%0˜]|pr`iG^~3ݓMբ2竖nKYSs(EeRmNpLɷOD*W[>y`ÔH ?A2p٣0E|^[SB`3-ܸY Z\Ep#2dRqP8%sv¥#uk kDj5W0s 597S4Gro `<7ڨ;Γ28Q:\/[]dU %&sDfTAAǨpi9y$jKlNY))gH7P!TH"/y~d1](UNՖgPC>}u ۄ,O% [,CEyT#8)b4%Y(2଩6ưV0bx9CV't.,uR&)ӊ&k}RM{z\*< xLJ?˻{*qÂDS=3Q B)wqܗ̤v<*H"r<692!h}`'IgeɍmWnvq=ZQۜ3'Y&~"&2@ ,Ƿ; x˪y[me-FхΜ;2 Qf_reYjyG)Ư 0~Šk4IYp;ܿd^,>'i[Aܨi;D}ˇA#s ܠKu",t0P f\Rٵ|@c]FzJKurOzG; },@mY<\[zb:r% F0֏%\p:Gq4LmN?M X+(Y+~A2=H~ qDL 6We|jz!B0emZTl / 9|5;2FJp joE3)ˉ^yrX#eLܻ=QVQ9 N u"w.FJ<֟;H=`R} l {BdI^wrپ$Q q幮03W`,:Gr2LIԨ4N$]/g Skv3]/TzOsζLRtu E%w-b?GS m0i{J`ILO/ovj#UrzgܩJ.X>>8_HFh33xɰ˃mYgeVn+탐ooV~+D&݉'܋bN7YW_^^ ^^e/䝢υ{oej9߮ǎ ѹ}}dXL5 b+sd˨Pr.dӚNhq.CWa\ rX3:)s씧e-]wt9:J1mǶs{AV)V'u_V!C.2:CNL> WN}sE;a.bv|| 6z7Zܖ /OA&15<,@:ojAGOdzs vtNq޴H<H %l9*glA9lBW864}yQ?_ h"NBfr{Z&J~X_<,ؐ}s'5(܊!]!EJuU;qNh(f\ ;Md{s^ VgS-Ʒ%0]xtX؂噇J}ݙL[NCPߢ ^ԥs)kYs<[Oj>L}|CGuµpۚٮCbQzзuuЉӪ_^|SyXܙ;kQh<%sf1dS V Lf$Wa#e0QZoYyʝ N 1‰N&rz%}- p$53[ 򃱎#U~NX^<{9uGB=\~$N〯‹5=Ķv—FzWB4s= #FeKyw3T 'r7[h2/4yS4iqv}FN=䙑o۾NiB~n ;'ĴIV`7, RcH܄+F @&Bo)e` *Tlf$';.3P˒{/Txj+;v梼 k8zoK+*6AztdkG}1 adUR}NG]zR9nсKJ[L&T^۰/YA]sKEf 9n#-wsu- ʦTiD)2ə'uͱqoR`!iMspY& =G~PP# NƱG:Oh!G,9&NyQ +*WXixlݙIauXh1M eẝtu{WV^)_'v:!]U [}z-Nt O{K־f MWYУBW푺 ,[H!.g1kT 8֯ؓS)6eZbk^r߉K2k7'ۿSzA+qT1?d 3?Rot7Ό.e.,h1ήB*r"u_(W2K!v2i˔iήL^Sc)~|QJ-J9ٻ,y` F pc[k9RK_%Z%Tǥ-ަ49܄ Yr0 i3Cf\38n+i/ ᲬjOnJqExg*A&Su6{F&rSM A'}UQDӲXHd]~ ]5A0!1~`; 1̨R2'?@eο|v24ȻoN4m%{Ӻs^9Y cUF1/8k@dMl(@i"٠&/h8J:TH'͟fJLc+ ^yĬ/^ȇL5׮4-#ߖ0$[!Uŕ:  SE?ʤ[*܆Xv*%||3?6tمhl;>yǕ so޻~VNpw {-dDFw&o`+D>Sa;)}NwL(0[W=^?+pra_~;ӎʲ.N͑؝<>3qwK`Q,gnb+VʝUw5ŲBAB8`b#,۬nk.sΩr.cЫ*RqU3^ x`Eͬ23w$&b6rOYyZJuw%"a%^{Bvfec族vx>:ಙʤ*PS^@HPY %hAӾ;I&!:1bM=_*MN̙Ntc 1e4(<(,`\'NY/,^> D.2.txWiCal/yVߜ%:{)2] #%7 ?)䌺 ?`9$)5%l|MiYV-C_M3(e䈺]K"usa‚F)4Gb2{RL? 2-ȥ.#pƚZ) \IǷ?b'g0.TEB.fS;gʼAy7e* ͳ# NLp&;it>E4 U  sK Dܨ[Nƍ;/C㝼P~C&;I2"KT" REu9T 3'"'Å@AiBϴK- Wcm`P(Rk5CS7BY`t}.( #;mɚF $# ̹~7Tq RHe&LМ<*\dKeѺFr:)e )*iYN> ANl|'?dU) W*w# ~{9ʆ RݹNՠ'g] ~E] =sI{G=x;;:rIr~nvqiLs3m{Ӕ7&܍oȸ ~MVc"lQN3Cq_M]rG(jEA[i+ֲ˚IV7IyLŽ9f!2yUX<˅n5w̭` )">*$w~l{+kk~u\ŗʝ$N$Ɂ>ISy'^ip'dzsLFMV|v+͞8̧aD$NrCd _Y%P h! `In l^-s#n)Y|W\ (a~p?H#Yŝ_p<ɒX4ХB.Zp1唤-tDE4d2W~rJ%lq_瓻6j#$ɮBmν<(AjÜil<-(Dq@gQ>"s,sc~wzie3ݓx$Ar۷mՁ),O\s1Stj:^UI/wp HpQght Ff}=u[6v`yf3Ek3ۍodkl3źH#m]A;fȵFn9EoЭwxnE Bò"y8uISHۉTvIl-ēoi xuA2Z䢝2CGѺ#v>my9WɳdAafȋ|V9|kSȪ% 9 YW;2ZEL΢t|SPQ^砫~Hs,daSxlHg_qi{m&@dQŶs&Y4(?Pj 2726^d3߽A֮UDmSԧ?0BFy+@_[#9U `#.1 ů$ƒB=eyRjL(ݴ8 L[{<s>x?k\wb&mVzZ_YT52EYۛBAXb4M2 |1|q=«e3CK$C@!#$`2~ d[иr[*ĕ5۹'&6;ZۼE#[E>T}2{ݔ9zxAI-OW[J.!nt@(yzC/':/ypIUŽ߾ ˔(y57QI~Tn 5lB= &%w~r' 4-Za#ǨT T"U) QLLHXZ5B%ng K^^UNpR<FubOSG$g8`tseѝg*Up:m;E5u`ܺGxhwKexj|8`lDK_9|R[fت}3w"B DˣC=ޡlD@ H(N3%:WZY-p,+{,]rlM˿{,,$RhAB{4)1!{ *ϊ31aSN@f)Z|cV;唓) 8qن؄˚ <2p`$9&(Ne@7t"ٵE@%V5zOʺ\aQ [(! Eiּk&'w?Ӟ})QUaaC1{}Aht0߶f3`2kU6o4g3U%TLBQo[25r[ᫌ q >8_Zɲp 8 }+fǔ(w͕p4Y$D;#YfE KȚX텭2-s]UDxn;B3kKngݬuBd1jktS~rȠkQOEɎh51a'6K4DhL>NjgڸqGV6M2ҡ:5f<~]+m1+`dwͭq e׎x[9tsJs1IR1;}*X͋7c]*LKAuiu^⊭3u^J=uB{nDlFb6zK!q$1SVXas&-P?p=<6;PQDI7a|TIyoE[pߪ(JOl^ [/ {{3>/k{@ZS5fVFͻ*wRϭ]V: J2lfϴjGM$5lt*XruW;oWO Q*(e뼜jԜl:S2P۱Do)Ndt wev= F>Ҙ,楝t6]Œ&#on5RxUɄa[ `UR[ uUjϻLRgΦ'T"]et^ Z#!e ݓm%}* %txK=K:s.}X}0Ấ(2<^Ca:oߦP #Q $;qٱք&|QޒpMƯ0 b8Ҏw†L@bk=Wh) )V+>)"٩K<$y\! mDiT nYUqpy&e@)ؘm~l'+kw@xZqINsN9WfІ/:V{3{Jа\9Nr6o\L9>҅EVз %XBjAT\Օ7 =+řf{sіVQ.{3պYΠ5uibS;MZkƯD{R\ύL6uӽfoZ8E( ^H3)G5yHp\9{S4ﵺYj`Cf3ZwF΢l^eaqPrvV.ےWKp۽/vp863h?+Co|m*xg֫ޢlrC7rfU88å2^g(YeL% hWU:uvy)(yNpd9SiDckOOtl3}v"B,Dm; ;bˠ-&1Mf\ KA/rH/@U^Ӷf:vz үF٫kmbZvuAH]5bµ@l;>-0䰚"SXxe[ 7`.Gbo>< vf y3ơ""N;h.`io:";b|ar2Qk=X*+mVN&ֻ֗+ucg?:lڑT{ƺUݯBvGO͠9ej7,Jsu},EQbIv~嶫L$M\M2uH%z1 EYȳZ6JLٛe+{30+r9Qϵ6Fl% y e8xڶ)3Ćоҵ/{/+:\s&z $:\ER+ *}r@'Ra:)ϮR#8gX7I:)y3@H^UzTD/!C)>|˧2`ߦKˣ({FMn7zb#F6nE&k"t5;UiY3>XvYp/+` JgO_1Bib t}R# MqȘU,~c=7 "+⍔-f,3S"6 >v iv4|LJDg_2ܿm0ߐⶥs@xC5tʈQc10bC0*^+':NYȹ춳MQvk"w?OԱy*0qaJ  owۉJdesyXfx{ߋwɜK׷f9rFK.Ga~1!oʆnZ@ lj ꙤckQrR`u4uכo ]ߔ4t$eft3 0yH7©T,׸8nY|ۻ56ʻQRHeǖ:nF+~5rU"N+(=𽢒9§/Sa,*%6H! R|^Ny9=R,[ZK ,)_5Ҟ4tRTpP4i5['T/' ۙJB{Th82'(SPڏ)0 *4n=\s-T:.rpfb=~8@֗6j4`4?>aYح+AN]òRms5}Q*d@^@[+k.Z<ciuCmYKT(y?p'?'(gUh*% vMwTi fx"]C~|p֕CȈ{6@-wlde@Uk˓wYʹ-\?:P\H܊B1Õ]UB⸜8tȫ-Q8S_:*\To.qC> CęB2L}dPTr/;-PI<ݔ$I!/CqWjI|#ߎY}Qzmk@LAio@nC SN!vpF 0v~)|~!JI"MVJ _~VM ߼VVޜH[@I!Iա[u TX{I?x)*Vt]|]g' /KlGw4OT\b.a},#U: JGw)DW6G7rsRz!5٩vS$kVP0n4_z܃fkq_vW~6\b<=MSPna뷇V㪙rBRٛk#8f p̚Vߎ݌wekYI?(f@ Q.]`Tޑ[eZ=VN**7/4c^+g1,BNJSZw̜@^SCy8HM d 7xq-o37Ok_P^i̜yf|Ze 18s#v$eVq~(i3YvX77nu<>푬4rfg?V8TLdtZ_6 '&w[0dֺh-ܲ[/D+d:{͙9\LB4mrYG1[KEXxyeP4As jYYvօzʬȵ ZPTHt ƋoKz/+se?>zvG@OfP>lj1'A賟+>F48l8.I9~k'G7+!`%W;F_c:[e7z؉@DeqK7XBbƁ;WjHq1bI[ ]ivV=)9Qr*nWWtj;>$e&NqЅXugr;RN,U dubv#>;>j~F$nakOK>oWnr&ƼWD4n|ˡ4̾ E) Җ9)r1=)7q*%L Ҥ2dE|mfH-?@kf7}H%Fs=gᬲ 6dڿ cN9.C8оQnޕk@<Mrdࢉ8&Dܲj(bQxo!g1nEp8mcE9Q& Hih?|++{WiQ hBr;Pӄ[ۅދ 7|Os{eU@6NuB_#P y̙xכA\~n)VW0 *vK.ewd%c.Du݉r؋1(OnIuJOC(F/H8XFdB8۸ Tu*К œuc/ = LM 2B-#[Z ?taF~մ2 л}-iI@.X J7)rY(5T <;'> (|_=~/xγ}%~}A6bT0 ąrͿ˴)',=Г#ޕ2u豽R}2ܗVX\zQ&e $-:(-U!*Lkl,e ͊PEe9tBlV2 Q^ IY(L:JUIxr*Į».P2`, q[g_5^O'"Vj_a5jz?V3a2tNGy VkwU$Xʆ##t7B$[=: 9~&4XzTeɘ!0۔8fb$mQ&1@.֡ZJ~;.49)+ǘxw bP):DJ.%j?!`V/YU9p2@F^O@v1LN&s%Ťwvey?%u%{25)eF&I/?R6.GXEjCu w丳Cl$k{[ EoYUE%Jkw*\y`Fraa2kŬ DB@eyu!zoi񨢉d̽rmđe&}V&HZIYҽAt~˝ze&MHPDHY ɑ6\xTAMdy1-sw[ͻl!?/+bgK}0Nd/B~FzAL9;_펥c3ΡO%- I57k*j[޸ B'x.$2nSѢ@ʹe3y%AA g_ \R-jgU{\NҎ7+pkqf0 |]I3rY%r? x+ْF΅p.tvXmU&xVh`qP~D2lMU Hi'|g _Q( Dh0.[GI@jw3bMm\ijW)i3 0CK@MPn)'<յ/"r .dsRooT=w㦏$ވ^u 2.Ms#v Ⱀr⺙HL@$6~"|ptv(3/ϼXdhd|s =iy(Y\Ԫ;R l ǴsfVxђ}Y^#goIU."ɤ-bJ3<B x"GIQ ռaۜQ~ , T|DY;J\nzeE*;#m/Q(xV\Ty DE Yhx\Hq {=F{@\&{Ny49_qb1l;.춰+HfTPfYmI@^PTi윗ct1 Y`o R\==烯)r3Pl֖lg8pIxj& y9JXw˾YdMa pHnk lߕi]l 8Yd wN҃$)pys-YO.汃mONp;) PID{꼓B9EC @CiMN.;)Jo )hv# ql@خCMtDvZ\Ѯ;g~\6w,7I֝oNͲGr ePNYyVkczB"Ձ)YY/P&%H)cOMa rqe\tc?#!"͒ )'M({49X*lt ?btImTɤGFg'AF|n{' {s! g|~h \^<Ț ^!&,:W g`"TE&B6r\칀;{en)b<+ze-O)^7Yק1kegB$7~4竂(Dd<.OV=-{+H Us~ UsxgYdE?m$os &*h@ړbqTqѰ r|6 㿨 FNOFcŵ¶݄zv\Y9:/wwD.Nw ΍m 17" gD k*ާ҅X N6+5'I{e%iӌbˁg3B\NTxWHz3kZF*6!'R\QU\qB඄ 73Ib⦿׀=xT渻x;~Qc뷭b14P $%Ը;6] A ';eii ҂k`>8TJͲ;Ep2`OZ;"l7'j7 vRs_c%9 8XLiD"߬!MmT%swǜKsO>ˣn_.*WW< !OgX*V3KisW=Y+}*m*l?k)D; ~ O>^}tZŔAuCP\Msr*IptT=-ӏAu&ZQj\sK͒s܍ڨ e|W>»HD% pr/RD1_o}{@ $V(OP/mK.l4P95I'|~3?/d7y^HGO1ea |l.Ñ\/ V:$艼Uw<|dS ȫcJGKHɡ}4I6I ZoW.}$%i2{PڴPTo)%&rE93pV,yTUEyY_y" ?ٳXd/u;TiLneK37((tӋ|MPD!L PsUބՍ[ s?VIQR=fzP1We$OFخ MtKUG0PBVIa(%E CVTV'Ż#-? O׻bUo#5 ( ~8F>;BY%YKRobF ;qDE?)7p MBi;Y` w̷ʻC*0P8i!Nʅ821+ 9VD|XpB8Ueџ{ݲAP!YWU$h 麘CzR]a0{/IPH3qŜ*rIR O?NM\,ǕJGʉJʉWT5.qIz*+䚮2)ɻmV<(rEtAr ֊r;^/1W,e=e73 1wNˍzȼ( IPڬ:11l`*x]b ʹR#@\ N }d._vţ9)&. TC 4HT2gi æyCeVfJVȪA"$+/c9Bn#1d(지/]hO܂(g!e',""#3 ˂Ί}9_.ۋR5R3B#kLw F@%*` VH8lI1osz#Qu=F 4ۙXYQD8dP}%FhUy l|{S<39If5p"|$tIm̡;{@q$ēޱ8Iv9g7@\9sf.B_ Y'˅2'Sm+XsH+P=n`"| P@W1Z_4ёB:t3hE=(0^7b$ѶëڋVm-5O'$P]t cƅ3KL5Δ:N#dŵީ DZI\# dTZQ~8WB~ZpX߭ ,&?ֻLl=8%-8]ʾe[]u3,P"I@V<-, Ai>1*>s:o:ĕrSS I9N$I(?BX50zH#`f"kR2GPt'lI'T 1{e.4RѢn0qc"D%B#(kK|0 Kyպ dAUu)Oف+TZ[V{9 U y&yy v: B1ɥJۭWp󒲂=5DaRBSVӾhUM3 yUʐ`{ӫB)ulD9v&qׅ:K8[޲^l"nO*SGu9Ic^)"(nA?u?jəEO=WCm9nW^KXq 9uxx#!U'޽cre|dށre5I)<p EmA.w;vrRc[Ȍ[eߦbt 3XőiSi+4~QbIҮRШVi~』:s1H!uwZc&LP& kop6N +YXS28-kM|;iicՅ_9%ZebuȋU~k ~浭^A.ʹXh VU&ô{;pK--`r^vٴOŸ1'7bu*:YPcWm*~X#xBE6@#Q].Cd}ƌMlS D52$Q.UYKBxnz}o]a*ʁ4q`%𯺟.G&9f=ay[`jHR,{%{*NHFFJ88[_/w+qd?O eHY7?[5X-(nܴo6F ]/vK:8HS:䵋,Tqo;Gf1pmi9Iʓu\~ m׻)0E+rolIk(:E%yw['b=Њ:Xu;մ\|-1jYeWcPY!#Sz:+Zd.1*n/GΘ+yːU5URu^33}]4V-QR`Ƅ-JB0e/$NTItMջԥn_dUz,[޼U4t^%|+C,Zj,t;(ӔjQ ]EO)|;'`ſ8I^:y+>˷;pϕn[ QsYYX˜6vct@Tԙ.1JTYP9rJg.w쩛Ƀ?{j&ĹǞX.\ ƹ:.39;+raY|8+?0*2vK3#J)ٌFW@nɉ'G]\Aq(eRH:r;&#g]0D<%yw]VĹ.3,Ϫ3VQ=ž` 9Mh2I$IFgF?$Y:-dTvVt]ẤTF8^BF1Rʅgii}{T$0<@ Y!6rWk T1C3^2ycW DO+jfE jBEwԋfН`ۭÁZt8eU&2u5)R  ͖:= :: د+ѥnօXzR(3T_j3:E$U{SBBZLa}-fx)Ph}DHa(|1vHWY:Ri4.4F҄LyTBB_wVvZ2N{YHx(&Pi?1*.ҩ62Qȏ}w}Kv#T@Mt5jrN )@\{*, UVGc'72a窱ۧw+ JYƈq!IDF7o͞HA8+U6{$3zOcǺi![+AL&lhQPJ[y$Рl)7clb Xe]5u WLȐ;2ez!Z2̊xTݧ>1;Jj SqYQ%Yyr$ibe,3۶~2NXk&9[T':A͵4=,5׽`wUzgW˘Չk}+2tɤm|2WFji.^+rX jn=,뤃,LE卂*#ԫR4L슼}|Δ'Y$xRc?‡湥$.M:m4:u1["eDccc)(ŽVSNnW(9+r0FΔX"erum,hO~+|AP ϺU$GV(bRξ\ hr"UDv)0iC$,E'k|áͷ;f2T O,EFLwf?K+Qlْl`F>:H]h+yV0Ui ;cnY4Vq՘[sfqG.ād^=]4Ɗ6Hso}u qlS}:~3 -q?P{AS"z甔2߼V6 eYu9pT2'R; B?/[l1>Fֺ AZTQ#S1 RM #cD7EY%v,̲K;#~'ХpGMc݅2u/qUGݶ P3_o-²`c`@UK'@ |<[_'.d,T_<K2n9Ve 7+!d$TsVO;BR*>{{5M00q*Kk*J$ )]'>طE\ VI ;0Uc-wQGdR VfRRGr*~];EقRZ*bl\d29([2w{HJDI3i,v(9|zܗ\saGcKŧ *7 R\ @Dw`fIB=xإ(k?Ț阄Qَ N SMBSk!sJ';>o^#PPjIbW8qLVLYϱ|c{ERghT KXF .zd^#M`lWHz3:ս3qUeXP-ov׉,(] OrF@+ݼ^7xy PܩySV+m,yL+@&#!3Ž2OprЂPS]Nt|,Me!M 8(Dḽ;hvb"A}x^mW^4yP$${%ْHZEF<<9]43Akc$!"0cث/#Gќ$'Fy:`SFvY419Z }o+fKBy8*o<4iv[UU%Lr -bRh8KW`wF?Fe[aZu"65p0{pQ w Uk;ԙ}FYx2 O$O* ѯ}"2=QCʲZ"|{q9,]%?|u$UGeA`vP +`k; +985 Csg\ݾxqnPnzsǤoSUDLOFI9_aF>0cGF-opI7rd`!ҿz>]=S4?Q.EM}*ϺL;CQ/kLhGQAR[7x:}O7W|f|/EڙE6Q?ZV;޲5B x Rl$[^"ҁf' *Bz0>vZ9["{]wGrlh @ROχ5~9fNFAŨ#3W;TS2m)Nux٦Ai!~Egh%W M 6 ޠb\)Ϗ$ݝya{C$ jc}Zmv, )s7Ʈg3t?rp>sPv J|#b}#`Z3K@'~t[πs K-IS;7c%ܕAoENw\6uSu]^9U ƦPEC& (E,6/L79idbhY;BˡK뱜xÛ|ߎ1^#`#}T c,,V>$8uF8KdcN >Uؗn@Ӹr_I/2~ߧn q"m~8d^ Rl΂'p"+4r7~?$7,9PL We|!1Mݓׅt::)XK oYgVgk-cWa8ޔqK ʮ:t( #NZ6s7 ?j3B`,"H1<tQ4-G2&.!SNyؙU\=AcoT *C@A i+^0`#z҉q t ?*ojG@ma1wbwCy_ qgn_eQ88І(5ym"De7}BuC^#/=C'&-tvZ9Vlt2 ]nkrܑE#Q*8?Q㶍D`$# 1f#71Z. 4᡽itD}Uq7aO3sHN)n-!Qk ?)Cġ\;Q|]{WYV6fkws '*Z;vNZX kaM ~glXr zL 2uwuIR\fhRyTrvX¦b_=@S(b {͈FߪlQjq$iPq(Q':Z=ܠ:ӏ"6sndaNКL ۢg \yZz[;vש694g-y|SQB8$Xk,Exfjfȸ-;6`$;' ͸i+2DM^b'RSoĠKS/r^K Sa[ +]&G3$¨a5%@ jfĂ7"Vׇ00᨜4p^U-L4hYE\LIcptryvtbH遠H}ѝӥ=]'IAwӎgfÎ 5D+j!GTo`q93a*0mo8gY쉌$DzEsjOp TIknTF mm9/FVbw:>T۽\c݇+Iu%! l/[?s/XAz)M[rFYMf9%-4V] 6kQKjrL(n^ t @q(4y*]Z] *i{:E{; ͖@ %'y5~45<W~\?lVYߝ?U՝o&MA[jWS%7FO^߾JtHWb[⡄=^')VUSdu)&|q'!?႐OYy}e6ȷ;֫cX6.b@RJbꛬ[0I7Ձɥֲ~)RU-]i[{Μ:]*+%-߈?qHҏ4k:W uqaf$IU l 2 ]+[Hl.D&^,iI>xDY7W0TcBY?z4lfK <iO6<]k'Z؅*'[W#im)w9^uQ W|UN2 FWT;6o {14P|>ALi-O.>h+]a2Vg`s6өtU= TNvk"ҺqGزm:Ͻ$0l:RRoѳ{v!f򺡔0خݹ#>oeR|*7ds7(r5#J<1r6.$>\w W,LO:̻g&xSꛪ_Ď> y4(_-G7M)/(JcchL~Q rҡ5?VגiO'f12")is͓U,DC{f"zGĮlU諣̓ݑݞ!o =JWH*`Y;#gՖ`KuHgpX5Zo #AǃBC &kjж=Plӟ[̇0Ή, z͂2bmN(Ta:B.HGP`ty=(XmǴ52Xճnwľ{n1EA$J3KE潰VcX}.` eZY;<SzP׉{opp= Ǣ#6Jv6HbDba'ġnsK8NRA*8R;epʖBJ*Z|';>ē$M(rSRs_z[mcw9s6~Sneb R'qX/Zf2RHp^n3 zĺT/,SgP9.V2CˊIcQ'mPrW[NЍ˴u J04Cg;Q zDwf&k!1û$;>* J6^)2~2R莔QY{DzIIu+FFd VҮ\))csUudS* 袌fM!it'8kZE6oIo D e^C~ku'À|=~*󝜖dMQy[@ |%+SzWjz3/nehƣBǺG2ݗ< nuQQqℨ`\@cX(qvK+{0g; V|+;+*? …lWPͫjqύ%/4hn8WsrSzPŁ ˞#Ӿe&RSNÒ  `Ceueٹ98 c1[VseKBHb_/)٭RWGW3ɪbf%(fRe-}S{e]3ILm,2RvS̞<B̌b;-oIvfX)KӖz,aȽOdipۧ2rV:Z)7@`KN^aւ5g睈z}`Y 諸sTjIb7[PH*\"g s~ m.mƘ@&Uz]Bp1ۦ5rasxEpf4oP;o_Ah5B%*(_>I卮T~IcC2Mr5j+ A)LJLY;xDn#ދ2 vR!mn9@Ӯ+q;ey  /Bx'(T\vML](܉!6n$ݯvwNVg?F5%E"$i"7L g77Ņ cWHm}Q1xVŁae.օ\ BR$,̾e\JL+P@0SJW2Us\D+ԫ_.=EG;qs lSݑ6Y/sP;yUu.Gvbc+K)k^ƶMRvQb\Q0 +=UXAdi-7ɭr5ˇe2.]f!sbqX9pU*rrXW^`wAXumLmݪ6bv2@+y]̈́t ʹ8CByhL9kիF) T/!0UBmzZ 1Ӡ̵{U{JBC&3hӋQvUlc5io~-}9Rx u% wA. E ⩮87TA~WunU9A9QGA>v+.-y}=IL!߉LpI+ F}?D*Q݀șƁ4y,o#ݜ>aT6ߒIn#I]Å8-wn|-U%{e;2i6ܸFs+y{Of:c$A!9}.Fֵ9L|R4SrZ30Tz`*OL-"VBcz"Sš&G;,W+JrSѳ,{Q aQyB}TN%ª\h#Vܹ6e^-[]Ws Z fi?1,xM@J+j[5nfxOpk+'S]u⠃'Et_s2Tbh55ku`[7a`acžvt!;%\4)~l'Uj 5-3I%nf>sp&@Yr*}_WyxKfr(Ů0J% /?!>fMV@QMp܎Mbs8#Kqވg $zGI{h<4!qAݨ )lxt|.յ/;9PtY4)$a;>j=blʁ3ȵug*ve ;j̓2ڴaʭw1z(٢KW+kv7{'tS^r%!q TKg 3(ۂ_U͇ՎocҶ]"8sua(jNaLSR IBNbhPf 57eZio}[UJM8]n"V(2s{l˶JqfV/ގܙ.*H\Y"1^SgBXD6PW!\]߼rlٮ:>U]bm]%6m_*r@ ca qk 2M@BZ U6isBvU;x]݆X ť 'qu97z(6uT有0()?CUD3\US 5j܅k4 e3nhIl D<)_9v;V+̝ԽN %.}-,oٖ%˞AyA9KeXo<e*y=XѸJ [խx'v]T@xO6v=7?B{ʍR~#W彝nt7_Hwv[MtqsPWaݓ 02sTGg ; jD 2g]Oȶ+ݸ5|/Kvj|nNykg6E.Hq1?k26qe^] D6}<ė޳עɚxհnBGlJD̴j8C6ϟ4v[uZvh M 1)HN,Bچ8ftW9sqxS0`xPK]Ju:G;ճʛnV$1%JFNY7UӁ5Bbc̀"^^3i[!پGo,#De\R_ͺr;diQ&Lv p冲&3]35(JwY`Yy;A#?ϫaj^'8AxFEuHɲ8 .K*Aỏ y cI!һz$}7y&6!ۆU$6"Rr9P\K:"[XUX$K]\ -nнYFCK3Yr;P}OԜ=neCwf > :/Of͍$€"qH7IZMzl?Oo&ǫůuaRc7xWNpg·IdZ]~|kKe)edʅvW/̩,~ˋ$xKXJiɑ&؎i UUWz|dٌn1g42doxG^ŏ(hAmP>[e3JSFQT5Թ1DžPΑ2viJA(rN+U{NmET:r= P4֌tߨ^nM,ʁdIg[K4Y(> Fs'ݯj̓j.}v[o"J=(tn['H8?k#K- GBd=V3D6آ)N@8f\x#-3 ue beR][#]9>? vV<>)3K˳YgTtx7X\D!kF^EAJ<0fYVl8=NңUX19'jCT'uQW9(DiM7q!IbۈўaņDNac{m9BQ^' R8(o*@.Rtp hR+/8s /;U +qj]:skPB:5r+;i +g4N ?C ?YyYTx-X\\TuK@q=>C;arq1> Pޕ=Nw*grDA׾UvFbi:N"ss1ʔ1pVBպP)˚PAQmD Q.KKqB[e[v$YOۙI>֖JJ2v'`jg_6]ѥ9J] RG|,)UO+r&5VF$ƑZ- _7c` 5b0X(M/JDMD#5j"EU!BU)BBȊZDPj#w5{]>n -eSsQ@l0أ`VF2`P}wxRN'( !k@Z!#l?) %Xk#~$CiB#t]s=ܓ*~ib@J mGy"Gi2$Ts˓(BTzu^N`1Z@ޜ¿yGgEٞ-\j+Z'dDQWs|헷pjiUmq!ߕUYuof?wM{%%y/Mz2"N솘 ԧUEJ8Ya LbI)L|f6ai֗eԉgB~O״8P,@Uco>D$@ŀ[Cec*-n8IpozOƁcmHY~VIYb.>iMyJ hxnK7{cA_لa!%>uQ a1kbwQI=o&K/VvCն% ?G !ƚtT'{edO=/t9V R|ӡ$a1$`* (q!^7 Ő Uz#Q i11Ǖ'ByyybɄ^+5FZցw +g3WhG`74QG͇eFx pW:qBb͙IiWF Kb>Zouu||W60[dV1 YW&cQ7> +cQ\72w 着HukUj2EYNJݰQ3},bmHY' -nȶi& UTxL5{kam ooū|YYZe{efB [5UֱBP 셤`DZ>Y 8bB=a0e>oh*f+\&D h:7>頻ؾVӱ+ 7=5R؞w<}! ~rqܠ\ DI3U.cָ^k d:.59Cݓ=p 7Oz$#ԁ]Ly4ppA+JtB>pR]zv'X)XsD.r'œEy \ɰLzMUص|_d\>xy#Q=߶We'/[fIV9bB2QM?/a zΚX6Yyg`22`'&焧< (@zLDe(7ΐuP*[aDsJVZᝢQ0'9)<,,u&R~!p?Ayl$pn]!EB8@\82엑+ҿ1hXCUa% c}u Oij\]%yTB6 >RtX,MkU^j;YuK|SSQZg*|q%] 'l'IOҠ]pyٽ.ɑ 2*lL:L#R~6pd#z=a#M]<Z2rn'@w=R$M_F_ks.w(>u¨r" 'B~1f(e \\]ϙNUUD].6[kwUAz#v[Raɋ_"ݻXHX'e7(*9LSu+{[Zv2(ALhhcvqFdKԓ)I8APR:dFdO&WRCqdR˓AWV8WtT6zoR TBjkvrkN7Ҏ7San+eYvIˈw d R3Ӳp' }/\8S6fT&fH-,=Vw꙲UZiW $D{(q!>{Q nT^TsHmm?)v@¤))§xIr4ƿPG0WH6j2\Dr2OR0;FZ!2@Z+s 8VyxANz=_{P$CJokeUD0sy;}X͉SmA}RaʻdT ޤ97X7X]SdK:.t.(QlD(u\;IMl 9*| ֬`pB,!GgX/ms^nN+Un 'i˫[P+t7GvF\LQ~L|5bY~:d;EF?*K.E<_"-&A Ou"^ۋMfm`WkzL˫TdtsPjj&܆ Ţ13Fu5U|L:7\ҥ~(FQ$).V}$ef"$\cEV B >R~RHQD`E-x jJބK#1cp^gЉp;Adhm+"`L@ rs%[h*F{B͚Sܶd.ų7f|{7wSiߍo-6M|rZ^ T'2^CN$H(ꪱsY gٻYUX~oZ`L@oB_5㵀T e7}>pF W"gH9j(^ur/F+|!Ÿ5ƹ'ף@.AAkSQ#!l^+f•e;H+p`A_+PVfס냩 ` 2$dy^BĭIr*bFX\+thDfXtwoU\4ES)yyAQ09D^nFֹΠQ!w/-}Z`bݜFwgQh/=첹ޱP'yH5dOKGc#LX IW8RZPt~-26z,Ѳ<:zW-( 7;[9ߠ%[AueNňy($/ Fjt̵ #x^2S%YbBsrn8y6\[6]괂\ bѓjhIƷ'f6Co^:P4NT)EAkdihq}UO`p7}::fTvY7ſo5: +IեU29vJN`V/ۭ.&!meA!;{|\i5XL$Nل^nï& $~}@@cvgW7c]e){FHG=@7N375t%JfuXUa{R3H)Yb1몐dsYk;޵=(UEXSuʝb$TvuPZN $u$ࠄ!U)ި_][JCH k..PD֧jA 이?J"3/{4y$JN3?QZ E^ *g6&Fu4 NR%v+U0q%mER3?Zr)C/,KX^-I\i&f[3U'Ql. TY15ڢ C[+/߯t??kLLl%תG㕜k@@Q: ^hgرbb\v,kh]{:-gRnMԐ 9eT'J7K͹)#/層x\2ٰ*5boʤgm`Y*a_c[3ROI3BIR̼ιR @mGq/UImT1LYOk;QpչRJГʅj%P*\BϠԙ|곑*=R.$ U$wy2򉜉K>4Lʆ8DOP+E"_8\he)]l/0UpvD IL>u#"WR]&W|ҋteIY #jFJqjE' =F*c$ ,wUiOD{Ӹrrߣ O̾}fkn[ 6|{; vei[)$l`2v*0#Ϭ}nE9Ps22!(ל FXE= MěJ,UHXz!  S%Kڍ"H,|)Tl_kZ}4#W8w jxL$ZbKk{ [ժ.vՕwEW ZhCjzkڞ'7QY3 ։,3qbU +ԨpN[Gd`X#+4`T6?{jpȪ]!Fa^w3gkt/Uw XXvz|BmIŇP=~( [+pyĴ$ 57-~6No䓫Đɧ#PUJcsѵQޘql=@ܑE-Ț1c_YƩZWRbUCZ2fh6%.ߟ5#Nu T?zi}^mpL Ci'W0uy0[r5wn˂T$}31]|?< ]rDE߬jDb.4fD冮t!3تݗ_n~iy}pA&8e [&͎lEлR'mv3E!=a d*:-uPi'm˧Bn}N9֤[#iM^/xCvvc+0=J7-"&-T)K8ֲ "dy$ME#Yڨ .K$jw^gY$yel~w@leEgXeWΐ":4L\,ϡl=o JŠNY9V=B1oHssVWF0ZCwP}u]_al%{&2+PWOwԂ}Zb8J7.~oʨPIHb,-2_~F=é8$ &qctI4~QOem3ܯsd>[jFJ`Qo +f .Nݤ !JP ؔβ:2򲭍+j ֚/qHhQg/ع2 [%1.,NmEtfN+ ʎ\yڔ5?lL%2m?.uMt^WY宴cX/ ^3S -oз /x SxX1ޤGj: rn˘32V$Ama6Mr.&PҧOf#c)iߧ܅3QD2g3^-e_9,H.4.AJ+UpBףzU5'\-Yq |v躲\ݫ3gCԓPqW `ĜPlhIHιkfKX2dU kŒ]&Z)yqnRn.~Yl$܈ݡ[v@S)γ4,ΚգBgqT|q)$<38jzج7(Pg)>/1^PK< @)%2=1>ḊŒ+PEb!$lMrOx#>sYyV6T~H~eQkډW(͇ kȮqXU#F/]AQW0(-'Z41x€$@fWOE^Rc0gnIo$^V3-#ڸЌεi>He&s($ePi3\7(N2Fnǽφ {#P'ư~eǪaG&ȈE~$~ +헉'v l'3`1=-Gx!ʞt2 2(aycDXkgr'OPWe& ߄бi/cs٧ªЉN)giYs7&|^dY*>oI4=T+b#jTΠ Y` ͸ kRk|UMdDGWqJ5`Kk~U`NJX[LytM^'^O *2 ڣang5N\1ZIN)W쪜Oc+Е6xqSˑ.e32Ok11͕Vdۮi#i/ƍ ެ=MY+ks;y@jڦemKd :X>T&"')~iY14ӡ7%Z^4j fRl K1_ws򲅈:@\ 0KUHlÊnU?7 E5_WJ臤El6bƌˋ eTȸyٞ^lӷ%t`mb)NBk5M5;^^&?_/U?MckBl^hcq2Vۚk^nupb]k}üvjp`v2ι(N(TU%TfhRf1 j&E>_Q(P.#2kkBʻlHL4d2h!֧.OuZ1_;3"o.*K+ o9Fq@FyH|NZ^=guj7HY49/+ߋ׶ KuKђiWQ= Qƕ_LZLt)҆NPۡ;T[묯Lnw] b_:iw="N\"HzM!N&\Ǝ܅|U}Qc['`sX64h˄u4FnN,K$ 'kŔ#ϕMYVZfaO|vߘZ< )zTr>ef,*>eRÃB-q>9&|"g~g~~K^kK fqzz=b.i4'q}*rYg"|'mQ2LVȘoU֡QGaF ڗb]#|1_O~ e3)Sh 嚬aBVuRi#ېCQ4q|Tώ74…L#,#hy⹽S$LC4+$qjQ&\4_Zq`tu8=BU'j>e5Zc[H~N׼}Ip*€ ҡ]8qaLzG1!G_(L5V2xgzUp[)IEN6#ǯg>>SmDT5 OIɸ2O;!I 6[)2nP4&*$JE_QSN#θ[b !=r,E~fbJ \?X~98a ]}A4;.fxo!J!l;GW?rX h(c.(NY_۲SdL>TlPxWǙ/Y PЇߩø1Z}.fa_,_ g&Ff #V_i7e.tn4=[}VFBl f@}ftLD:B%8"caj~Z5۝v>Y9W%GwkyUR31PnAJ<0Ise[KI!AK菪bʤlBej,|B[bo'r >lfWLAVN&\Ҙ]#P+6>bTy S@=H1}9ـG k~"B*ȮGӽs<9˝<,$ϬI&a!߱X+|V9E|mPɍłp},lKڻ^qV*({z0,2-$vWv'F%]fYʛlQW9I D"j2^.j9{(;ecLIĵ{b7#8)*e_XÓE '}g0*A[E_~Zr2lj +(p(%X#+؅YG+eۚNQ'e閻=PqtHa>O??ͱad5 feߑâI40"1GI2ǜt54~|jd)x\>5IhS>N a^yRvԹ]HGW(Ush@lע=gjREJ✖ j E ůoDVf-?ýw=VȑzoJ>.uAnԼVq7*!/R{&i^m\.~]3.IM,~fY fx/^>*2#P'wCm^QmārQ8`ǯBٿ Hlt )Ϝ :,Oc!Mi{:BX $.DEOdC.]{'ٵ VԕjnKӄdZmibe; D Vqɱ\Dx5D”'bcd|4H:3{̓t"/(4S cઈ3wd[Rδ>Ci9SJIhr?yˠok.$J]06i=$WRٶ,AˬRIX i@LC)[1Fz]r{VihU|(B\,tB{e}67Ve 1,+Hy5+|n5_;FןGϿ{?}Ft"3$:'' 2֒UMeL.xǬ yQpAqw2'@B>s*FM? RٹT`{{JyJdIeW- iU@lf~2^/' DZ1p5ww%ospV+o\h/\lVب>7o?‘^׍[3$yCؗ8qb`.XbQI#QsGE!XcWtI&qmk;\r ׹YLlƩ⽷uUq^ B3Yw7v+vSTӈk=WEŝM9n {iT(B]8'Wio1r>T ǭ(4sK̭d5;5Ilj+l*HG+{ڲ ;R0/$JJ&kiݖ;c(@VuJa*1˓SSۻ}O?`- |iΚ\p`(v%`DYV.tNݦŝh;ӨIp#1dnni [b!*g"/K|Ԛ,6~  tp`eTff+g^9&h*7~r F(z[f͌?qN^v?H66W/QQ*~`Gc8&or~>XMY#VDSi^5 e*,"wFNc`:5OkpFﺮ=SLݮࣲn`byUm  Hc+R$q"@z$1>於BT\[hZ̯QF6$ȉnV{vi**P.I5AgrNG~7KӞ$Q P ^X{]jPakQ:ǩtsnO}5=3 ɇR9b*!㺠.Ѥ\̚QLI+X+-'5s[ CXGmPP2QDžYiG.|ɎH2{I"ysuQM2{j{9g78+&[,t] +0s >m>Ybʸ3BL|H>ĮFow +,X xDs돕X$Guz C?!V%4\t^،t<R48r(Ph-ƛEgڸ&SawMPf7ե"ΐ&Zuhzule\bzu[/`h]'l Dܕ}6-$+)Uo6Im)p!֎A'׹Pdzm> t)7&VsNΥTpIԵR p'rl 4Tll\Aa'Rn늹^ӎD[ݩ?rڝƟ`DF+2a;/5̆Gt!;y7 !p9(#f|Xx+yr}k+#gsNDX/37{śι,Y뚳Vh,Su"0+DM9--"Ydw7cEl"ӫJҴnߟX`R imV*1 *4ۗH`8 Y{PEWV}lx 1Tka&>DuD>o7 J>OS!(َlU84M4S bU1vVԮD`c/A6>$ 6zh3oKBL VZ}5Tƅy7ɯ=Ը`Zz-]>Xfmřs+IY;OQmdž3aKÅ;FKiNYw NtegW? x;BCмD/U /?2Z,ǣRd.R.Io_ ;zZQ@429nO m_-A#8cyRc*ЗLҙO R̫TWb==kStYxFǽF[N7ieA\}}.`e<=7_ғ>K3s i<Gs[6$lKd }HX6P? hr1ݎIƬ2Z@cŶ,pdWڕ)9;MXLݕìlxfiTiV.Қ]SBriIi#97}!]BR1tln@\w}ʼq* o |ijr}+I.՝މΐbl7}< wY[Rtc{US,ۥn'kaYWd؁+3t`V: Oޠ8mţqXJY()DV QS:t*_>K,$XR=I/ Mz 1;%UYa#V`]ٷIAEK[Zd*5=vm~2~$àq^j!w"F4\/g2k~n]|t"׮504NFIW:j+#$n)蜤?%ԏ7e}# sN@'m+oKDsgsZ#B\=/F:,s7 -cbXzw.+J^F܃Jfv]L`%"/}!vLcvܙ6u I $ƕ 6.rظ9pPة&@{3u,e—r_tv& }*dג΃MY̢_0J5U dwW9] c^ϕBsGAM@}DW"f&,%p}q. ǩk*M3P-rB^cT/=5ݢeߤCq/>A0CO?( J #a RN/{5N*Gwх(4Ii= qץ#ֽw2ku8{XMS]*x-X(&Y<_WGTgRHS817] cK eO!ЗFvJD^aCzͅ{I EF^0jfIOA8Ī+Z桃b¬O crrR :(7ܵ^9صʈu{){.-}n˚&wv%w:9 .Hܩ\Q5  IQk7~%6JS& A1Htu^d"h $ھv_BT~)<;2H$|7Zj}Gi!p i?;=HP^\;p uQSpz7Τ9UI߸xS(t% W`¤ὩŦB6K#U™N˯Eb)bjredKp:K ̡S$qMH~d$C(G#&( WCwT.$XdAiE-:vc;a߯$s߶xqFp^j}*4dWh^]bMd(Y|)i9(ס)d0\IO:5۷͢1 /d{W[ajC3V?qCnR0^ 0lT1}̓2+7f<6 '8.qc[3&;1V]{T`ܸ٩Ίۦڴ]4m2U\a!~3ɳ/8J/ y $oĉczR2},(V{B٪с5[$2/qO֯s]_񵙤=Kx9I Jnd&c{QHOʬ{B\h\"Q׉gcf󣀠#0xz;nJH)BfNVbqf(GճY)Z~eMjLdrT@KWs[ Ie션?Fٗo 've&ZmXLjTB%n9GKlDSqx&y'b潽԰JH..TkW<50.G ]|>V%J> zte{ ƏF^}:Z=r[|ջӔ( thwVL?rVM*H-})ujh/w\8^YUƲV̙73 «gmCJ5c+rc=o!J*EFȯ*>9~Ct%&zvCwtSc&EٹoQU5UgsT).|X!b>nUD_ =5Å)C%pm] ..t_WYśhmbgN9T3~Icw\ QH7r2`ipQR!n/`.i&Ö1=Dl &ǑF d#5krRDY5Z?3/in_nRGGʫ;볬;+vK)(#I2PZ D,P[R-aȾ0FX;υAC㖦ҍWSJe] 6͞X&mS1)wh~:_o!; *5V+QMͼ>VQ<$=#MT UדՔ+ckP0EU겊o/߼2Dc(OU](NPL>[ ζ[e%͚Y>qruI)vPNt>ZcZ]:}V_*Um sަeT@[aL1#jZՔGeq~emTbi eOzE%kEʵOLW>e%"r#[!-=4+l=\lw`qTⱮ!WE*%\ognE78a: q|P;N<3N%,6>#L=Uvb\l =m;PA甑˄rN]_XgqJkr_NI!˫4߮XȘ 1dB9sЅ5_uM^W9 CcL;ab+n(*\U3 uAQY<uI!z3A4"lίyi=k!c~Urÿ#BG7H=E%넴t>|R_[`se)=Cjs=DqCc6zT;?(OytMܝF߸1HO"~xdm=a8-=mYBB/܉ B]1awA5QYnQHF v?_VBus̽͌c_5l+ht7LxTBTd{o/k]sV v-ٴTQʪe*h$ AlY:ʯv/sAǬĜ V'^gX-إγjU?٦?Se"g;B}'{.6BSϬ2jNLŨSe5UOYEY\I#Zgݿoa.5ݹ-ƻo糁SRAVg9Uy{J5LI+t(=]LhޝqO[9U:\tio_(j}o9#ߠl2w,Hɹ)E?_YL_ōOC-wzu9 6TD~6)%RW'3Cb(T)I*cyB&;2PjqkvVe.Aѯ,2/Ke2&,ci΄i:Y;Ӈ3bʨsV_{KVxF?isΤRT(wCM6ǥޢ U@!(QFh 8O˞S;L3P| Gev^[c62W3S;[8UMP*yD,OmaB<50Z1>bʇs"hӓ=rbKִ (K;2mwuj=551^ưޏ~ naDK:>tX??`y\1tC]m".2{-76JDbDP0ṊU-r F]@ʞ2H\6. PBzP2Fv4&B<7]ƣ 6+9+F# z+WԤ =>f%p:#HrЍjxr6ё>3&IqčQ̜0sՕ.tUO?oI!RbvrRqD?S2>~|TDuH6gC+!ӕo AW_F( 7j恽rTzl K 0 h9hgU0ҪE6K 'i*Ṏ؍%0@:hypľlYUL[jceX)C(OJ`}L˻mΚ'67̑㐬_ tʿ׽,*Y\] "=-$]kE;q=MFtZce1S%T噱|oXXﳱ]4SeKj0:x,8!wbÎ8j{dԚKc}ˌvr^{(7[V2BWL6Xb*tK/+)S4]UIӧΓaF=$!pSF>z@v|f_AU=nXBـ Ze,uh M{iz7"Eb]+̏?<yMK1|Íj:jTzPQxRN :,|1^±k"ݸ5<|VZ쮬K&8ź Lu,./& ڡ8SUZt{"wѧK2b:n9­]7z8m'^J󩿸0`Y(qiZae_/_UGٞ>ʆ\XFuYzeJ{_ Mtbvk^eyW~ D>ȹzWd .zb[\t;<[v vE1'TŔ3IgX@eWՆ{P>MR4Aadڧ+);^ ۑTwY]㮍Mp7KkJ;ʬV{>VIgel-VKA'Yv|nͫ nZIy~R(>",F60] 9Y ,"9l SɁ0\D@ 5s˦e3鎒م2Z:}Zt\*il~f`k; !+ UlUm%WJIaERx v[B'R3(gI"fڼ'.]aQ*.̝3N3_)+n_C˱eK3*&u1tYNlʽ-,!لz,TbR4_F*$G >0Ҍ5jOGURěUqFh%γj $r RH_/<|"qĘE)ܼZ.o£GGtz8g cɁO?iHr;:9'qp2qӲORj[DL*ƼTIa[Nv JAV] Ve'`ZA(<Ɨ(.bAL#da Tg|OEN8:3od.ЩR[jKЈ1ld\dX, l'^&^e wC)rP m Shu&qyLh1?QN DЧqi/C]l9|>(ăCn*bCHO_Vx JWhp&=>.ܷQ1́Tt[^֩ 6Υ]K? `+ W7&2kN UKָ[P(,͍B3?53}[;e+%ñk.wֺ.ldC] ei:-ZLvܕ2OT'5͇%z[4v-mL@\W6lȸ}0ѱf')i[(~NMdrD›ݢr%ot{?[fYs c ڸ$\^'Ɩ#1r(7Q]&wo"{,q&F^ߟP LTv5eEE>\Ҿs-0e@hmY^|ԁ$F"2NYg@30,TܦiS^ p(+$u;HO)e{[eUï BMe*`|,SYoϻ@?cO? Z95c!Q R94YOTVե4h $=M1TMpߍhx:eplpFfSaK*,'t3T=mT-= 9L+\x96=9;Ȫi |Bu\ G7ߤ9ݙv_&G.m6 Q{elpUR]]ۈt.G]yR#gq/z!.gYQ@É|q^mC ^8w&T2{" G^5KrJNAE8]ٹe~$(׽a)PxU{>U3ӾN^GfF 7@Q z:3( d ,-mi\,>}mCģ.%.yxbO|R|C4)ِYؠ{+9ۉXVyY̯IךK+[~9bbh8>hC'%y+A mC>qY\Y}:gqW߲UJ bq ?3}ϔy EXr~VRzF%\-\>]|Llsۗ'clYY"GiP(z+V;)Jig\ZtZr.z\5IPTl971R n dfo\}k87\+m9f8|1LG'ZJgweFm]S^!( w)56!cZO;*=m&hw:vZ`4XVJfj;h?eMˍa1ffʜ E*(l6º .*c3A`̆Qv8im!zΌq,2X+op%J*4C>1yzfuVW7EBT*xᛲP_TuXx6r~rRIzFW!OΦƃ~bXSAjwQ}pюGs>j@*+E2(;=YdR#-7cvۗH{9apP\WO$b1!k&paU`Bu@;ۓYӻEkH«Y^I zަ9l^?%P\XrmZZ`JOJtƞZɿDR} EYQ63\GGecL'Kv@)HF%7LuYg܉VcKŠ(&?hu*јMd1p.i;:gY^M(&:f:n5(9MWiO˻ cs+̒M!>^CzI>qZ(Qv\=!Sg΄svWem|eAXgu0]fU]K֡Y_}{|-BwUQyY?"S-;34IDmn:nkFCX(k*e~_j{]׹|J03ׯrx?ݯZPUBMD*0wYJڬq i39[Kl0zz=ȕ텛4A?sA*ζ*UղND(A@b7]69˫WE7B hcqO*Vu:yE|Ua7ig{zInP/}y{'{kՀIwQ׿mY+lr f5ҿ'M㤨cl6fh\DQvŽ7"#^qW *zrnr*|x^Ji+yXfBbn[t̥Dz F_m}$yۜDZt^q!Hc+=x:s64UӾ^SՌVSN1WHM ZnPApq)]Y2_`|wڹw)Zr8[BV5['>n]%e n4:giHf}JLIv%˶m&=3IϥљMM XǃXCpT(~"(娐q), +k= kVVyt[E ;&?TDjN >asfhl`wk-Gt,iH ZƧal=+#'RβTbJNRꕣVV,O~`n] eOf)4/ӳ)TU'];B(/ځ3!Fs>Qe:ErUsr.S`?VsdK`fD=y"_0tR<b-'ͥQp\ J{];+Aы{AcG|S M|# i =sJa{:-WlKke8 ýBcV!g||ցvIpq@C@띠[)6"h8EO dpxXܕx[Ĝ)! cU}w\FUx'-(h[1&%cPRq.Xgnɣ(fݱO8d,t<Z Z[;(&2<SNm\fنRCrب]#ә%ωXv&7 vkb*(֗]>^N0m-k7+eq'AM8wO.e+D;{aZz"VRň[iG Ws NJp0޵(#( 87FScr+J A14LsmT9&(; 6)o`M;j65xή:s&!> RΉP95*#lSjyZItDgrL ]{5)eJA<=OuH##pQdrM$^+KCtj o?TxFk)V}YQrBx+wMn{ Qc*؂SSp4˫*h\;h]oOTE{Md[[k{Yi{fuLQ\SU187hoD.?J;*쩾W:c/[s->3\&U˥L9M[Ӫiuߦ{(O6gju36/cB |Ȯ+װ}˩zIJ~Vߩ:1ބQ Ѡƽ ;isijJ"[&PwJQ}I(>qj"yG:K 0HG_Kj2NQoMk)5֎DۣMwaБ3IxOMO,P%|>jX MlJapf& L ],:.s8=Y7\ +tf}F<>Ԟd nV~(+Th]oG+ =ZlV4^ P{}eﵳNF7-0-|V_yA/¤|>5AF?hg\+9ȹEy !M54x؟%#BD (eVǾ_rV`-p,Xlڈ-&͔mQ`t#tm4!ZTtRxI}9E> #kȕ 3x3Y *&O';j mS̮E[-l -[UZ>.;q/ #8p1 5aB°$aI1-6!zxuX!zbu_>hP%r>6GXG-H⊠ mz3&@5bw[xԦB7]f9Z>y|epa^[Ac@=tQחX&g&xfŴWfEW4kn>N> ` Q DDE"jw%`[7h+./ڕcm ]Oѿ!@ hiȮ~hO?+Z=|>Xl3딍u4;|'L@Z2Ұ ]l` 7ԔN }O>?JzRaUERWlREY{ͭoO_z޲d_Bj*^l R!*aN/ino)4r\U'=<2sS;]"Cn$7c]QƷXx_i] $P !F; ^a+STTȯrs;Zc #_W8ݷTm矏2$ȭXR9R\x"Q"Br[qMO.Ao9)VW_% ܮ:]9ۡ=hL"lGNvVA^B6hRDzHNJ+be][%*>dm`ٜVﳯ}ah%ҌrׯrL}m2f%$64imמ9,/=#x B9cGMQ-I 7ƈ Z^fA aGiS"g=uyAl}Cv]\sS BlZI{?f+VGc)E1a +o DЛ`?WuNgCVE{W4lx)Y3gU $$V瀫*У! 6Xy EG^dz'ĩUCfԷQ?ۈoY޶/:`gn& 9*_KQ ͞E[Z ONOCJ{tj˪o:ggGoҿA ·bzmdCuᆤ0k (ߛ]亟ʆ^^}_UKbw*\E-2{ qVa|֪uW5=SέU^#U1Uo' oP(vOL\=sGfZeY+-Noɦmnv}D-Fa&}_(Xuvh!4wo*:ˤb$~n,+kzNz)מ;4ت_7A.ղ5n@XZC2=4-ȋ 8V[?l?NFtD{WkØ*UTk ;y^-Lkٱ_!#6޹ܚA1'4aqUW,Yo f'[LTcn[1+. ]Z? ɉyIOFP䴓M{vRa4mU]}z{X& j,ymQlJ*`S$72VS<`)but=E@{2YR9xXج{pԩrȶH-kŝl{7}@6=(4yv#m ;|Qojn_` V_UI'ws M-^yK29Z1}rO bR+f}g%9XwuN\0Q1N6Nٛ ;;h̪:EofVS`#dN؟Wx~ E8 =X5vNa:mooO=‡ «;V[Bmj gE TQ_' vmw~VDZ[/O g2Eζq;$lVQwG=1LRϽgsm+7UbHƾԽl+o42Wh'03$bpIVu'`K%I=ʨ'"9pv,vZ `5JCxyP]˲B {*=Jajs-W L =gnMKϬ2,ÂR@MQ*#r O+ҳ"FYG1s(x#6Ŕt~<~R @XiD&Ӊ_bYOo B*:tj$Ao>\[t(d6p.QShșF~}Օ$Ƅ>;PπkԤ[,IK83 7b@i?vO1-ꈭ 9y@D0Mk\*'F'3Ou67ǝ³V Th۽7SKCf~w>J{41ǿ"O7ۓNF}|pޖJsQs~{LG,;oEU?>?NF%"·5^u3pϳ<^3\Jר"!@y\tuyICZIK] tZe~7,+}~Ҷ`շut}8 vʪ_Nv@X+ V=| Y̩0v8d8"ƹ|&C bģQWn5@"}j!2f7Uk07{þ : jWk m鬬+1@XK$b'PZz.e=x!"-`D|"0[_jס/1C9HKig}+MX">qeZη_ 4PLlsES*.DlnS9w7Ѷ-O_w՜:/dMޞzK7& >]'o`cZzv34nfEJ?ɷ&b-.N,xZ/Y+va?C kY\|쨒W mnAֵD A}㎛`lAB a;O|SΞ9)݅Q*l^f3ɜSm!kJaXȶ?cXي.S(eӧ.x{}ΨI{Kѕ`; 1b(tfT/DƑ{_cES@%2X O~};SLWM'q.qEԅK OZ֚52vrG}DdRpc&Bo65(ҳiY$=zi|ڛdbCpbƎ~b4o}tرϻDg]gCf'ڭ%Ϯdx ]ЧH/f=̶j~2 '܈S3NЕ !PzD?Yy<\E?'6(LXo^/'wUo ^jȺd cs!S\KYKcm=`.Kn}.XH%(3ڐ?黱~6*'تC߾$q\aY6p˾av \ce$Unk?巇Y 1 ܸūD#_{oS CD*sRrrN\EzcP@ yjm2i}N)K4!MbT |C>[D _tD*2s'Ov| z{QM*9x@Ϡ!]ᑑX@m{xIfi3bk`I'ʵvɘ>D`mޥ'jD__OR]SPإgWjP"a>ZXHa? kjȣrؚ+?F.]q wͱ2gO4Vx4I_6L3d/ڞe,݊W{3,/y*~uNWCv(}@ s kn6V8fo4>P\f3XI綿%C,Ekq>B*c!%D$L`*7 s1]`F%0 qv zG\шWwjJgzNVͨtb } YD"V;L` 'lDl( (k8T%dxƈLW&al pU@-MpC%>gWx8s2S:07Q`&)D!”`LP'Tǥx{akM E> HsʠU| 9yFJYRO0b,"DfZNcb28qՔXOƯGX7CJRy Rhm }>̶0u^he5QEEF^.!f' c]_o(1xq.gO7eF9G9[IDF-϶Eɛ39*-ڹU'U!y[mgu#CR`0eKT8zCY]L[)zÓ ݨpY-vl˲=GjJ/q5W`4o@r 9N Zෘ`5JUGx6~pDvV@d4=iގ\ }$@pMlW;9ZPf!0VLv^akRj]jCj VV_w0xl9fq)xsgD9-Cu*vLKh ->DnAc4#Ct2ktnY]F1Vz?fPvN)>[SxuG[dᎿШ V* P3LN)?_7 5*FoJFhkXO8J hfoP̥)2gqM;?n{۾ơ yuFܔf`/aDG]j}dk/MzbU?q;Zت 1xV=Ar%|K _UfgĴɤWV >BQ`䍗܂C9} q]DgqoZбjLoR^TZ:d*hY'!kf$Cfs_~5u  +hr[[䝶5`zȡFA1 v8,5,`kM>*ZJPƙ-kbU}4F^dDŒӏ!ti_N7B UpgVv}[{H!W?v |*5fej{EAoUnw\'|`hwt^ݑO9sCQS҉&64əw 2%NsȈRN+׸!e|t㉬x%jb7v;ب]o(;)FMϞ'Q'N$ͬBD&Jqj|+h܎%5ЈDD?ÉCYBvP.K$݌Oث?\< llI8#-Y'j $@/i >␲YMhF~9vO{682=;Ư&_z"_O廠J_n4Q; O[P[/…/%ub 0VHiW-WE_6yiaĎ;+ZQg(nXXG}OD`䁪13Z ~J$:[CB :-8(nB@|WeTKHѓ#S[QZz>}N] y'9gPǀ.,7-{zIˣBɘN$lUc^wC5^ȴc2cA^!x'D\.&@X_kpwfQ'? C N{mΝ3߈= _0xj)F|P֞)P-;ncryH-E%@6IeU,Y]PKzz>LAWXapJMiNbLpR2.!j]OM$Ԅ9VJ|-deq#쒨()5K;B3ZUc\̊bCYF0>shyKMlR zEv^5%k0h@m (/+1̺ fY7zpnHTXX4Wj蹄wf]EDSD?>9伎B[W; WĤf|ƉkEGPԷϝ5E'n!R08 DTAݶ '@=Z ^ <4G}_?oۊl͞|_Qg"VƝ'renFD֓$?G}7tUW.̭Q=ʃisDprsB̭Nq݇?' PBXkv4KQu mYWhXOn٦B޲'8t'_;5jn*_ݐK zmFf8}UGoLm?J 6{}W%TmM0@.;bd"`+:&>NIęUÄ Y ; R%j#{tA+@_UsOܞ; 1]JP <#3JڶmŸWTNqp_,<}ߘ:4\gJPGBQYDl4l4ڜ)/A4z$NRqph}OZA+B93{ëP;c,PLXڒ]2m8) m'{g*VqC$]6!S`93ԋHp\л&T~.kq工jf;N q_l~F[96On"YJ?Ӯ+m_Rm_ST /=v ;υ+hk$SOƹAyV4ЫMơ½1K7Ρ~ӶG'FcImR>>G ҬM,O"ӬЊjt9}㖤ͣ– f- EQO3Bq5 5@C*;0ٓ!(}3 b\cz0 h/fkW}p Q#h sQ+fÜV>Oy_]xrPqsL*H~b ͐4ᤃ>)>gKP0]pwSӓ')|a1D dSh כ MWN{L'hC bWꓝ= 2yH$xc>φD:Ep8 au&N޾':1$C{ok푪}PG\j%^TX,Xۗi76\S,SB0BTrRTA%d,&(y#Llk<w"v2DUPoT6EY%bua|f+г>ij#ړְjpOn@uFey?Y.vK۶2,B|1XNvAFՁ5?'(1*=CO+v;mPCL5(jF :&bQSgc7Y mmΝN = Ofp ")eSD ˏ clߟ;u1~Vǖ8| +/e7hmHc9 SHTC.c~֦)wX{W2g}hyi63F]X=4*I.k4JKxj0>;WʮČTۇazeFC[d:~+M,d++`ZʄmYna(dTTw$CK}P@jv4P,5;Yt8DKW7D+IC⎵-op,c TC"f ޫ-6!32#à:*Х0qUcVc2-C EL-FނcQNH]*1'm~ 9󴭶J{4ZW7+ gvUpk|*>M6%;aTQC?ﺆ7ze,ԡ(bA+6]N{W'PQJ| LGbZH9u tZM;)c:Q+o.<ʝqZanCOtEeEdkfUq-p!W3) :jk9M\JO1D+ w@=(qSࣾ *xcna[fYDtVN3l%lL3Iq(hqG{VCO ^ q><UT1$J^wmQOp!U`iχ׹jAΕJșWQsE+knIQi ^;Ey #?ReHU>FE4(<'MPI *, }dbu {M\2,fgCĥNe^:OE$ ̫F16+] i>4D "|:B+jRTQ[lu.iiƮZa_Hk 0N|0XlT59o4Y*y:Ce|twCk*L?Ik~sl0g K&`fqE^9Olr *OR!OX[Ɖ guN^rkٓG{oL״ﱊm2fVњjhh17^o_U5a=qKͭlܗ寰K!%Jk nies>sC͵ #|hw,#ly%91e{+ `IwzAU=豌:yrn*(OpMmK_f,sSw"j05Ԋᴙz[7,Y)+64mxQPO8t)1P6g?Әͩ9Twh䤤1FC~IƜTiZR|H„I jrY*"%}WU(&?I&/5)bΘ7h[^ayĿk ]'uJlyI[]`p ]a aO mðNѾ*sh?I=VcZO|Ѣt #Eg:!g]=CqﱢBGSO¥QozVMmvUo~ {>ۡQ}&1C{KbLAOLc1K$}v25fM%wh -U^m %Kr=s0E;_}m̔3ՅhoHɫ]uyJ;\Ph"*щ_܅{zfo!19$N,pܪA+˖@5ka_0|wba(y,Aү*Bsΐs|X@Ϝ>z(B8f>Se5{{Ug^9i6JIO*`sV?'ЕAދk7@VpJ΄ r"ż{E[łw?lw+cnܞHGSSn@U̕{B[4XҦòhA.bDI8Cy+8F$l&h%ƩڜTzi# dF\1R~fXeڸqCJR@ɜ%KJ.5}p>uaM(!V$ZDwRaN;:` /nmW]?1`P%28P!fXfB{1W@3 ϼѓq?8,5Y|C>Y%2ηТN&)JUtFǮ"!rin1IGV~{TQFi9;j3(lq EscXVM{`d!,zv[Z9wRXU}1Atqߖi6"Rr87"!^fG֠(upq (xHaLwV}swGv}6VpU.8*WVЫ4D\o$$$hn,f71>%v6Z0%(S7U-qt[ t:+Bt *VZ(uRk'%f^ e9y"R_5xs1LJr-QLBC [+8!=akvl?~~H͉boZJp 3 am39`d{wK-K4wGy0X#s>r H]n%w$sH cTnN|c0{P\v' L}fݥ{*vjl()Z]QG ]F)ɍ8OTBy9I67|poGb3Ϙ.)3rMBju쏲{I >s( <0`95BWMPkmuÓSdAs #N^-$&QX&"6 L}GWj~_54T,V2xg[׽h ̡tBn A ۢlRL뀭o_VlMP~ efdk΁j6 ׀^ShząHR(Dps1=mOG+rJp=/C;=ԹpÅHɒ 8(۱* *evS}l= ˄btgkh Qnaƙs2u}$nPUm70%X (j[('k}Oy4SӉTZIMd ?m^M(U>S)[kF,9=FaF)BH,d3toAj̹j]%}|9ۉ=o)[V9mgbtگ}WW'弆n }Cv"'TT5j[=垠]#!y7%>7[2 E]0 I5BlBFkvx%]͋~:U)uyJODG+FԵlV|?tkBia?y|oǏ~}H VRȅ8=86"͈1z+cj#_bNڕ~k}]®w8K1n&Xmc r~k\p f ~+'okK;مLr:K_m-oEA@3rɐě1a=bcBSgWF:4XOS֤m$Kiس_UԲ}|sJ1$`,w7wcthOC`Ć(exN~*i6eۃSSݢgIIy8oW}ʵўL{5dZ.X.%2+-jb1>n8ϝ Gm̋ޛ4tPkG})!FzNJΣ=P Ceh0'5 Drcw$SZIیjV/7ArsvYz5o7:6j߿Ed`:;x^<(H{k7DlQAIQcC0EK_6m8-_ 6^ J}&tH&!.#ʓmJnNv0SgD2}<.qsl =a )qB6E'ɖϨGi]T^K7GoRdm+N!qr7טTUX'WP M[!JTC YcZAc϶qiEEO C~A'%.9 بя#0>yN4 4%Ue'=bT*we\d5m/%e~= K+y8Q7'_y)qMUtp4lG_!}[hs0T"Ć08u%"Šܢk䤆k4Hl#L1A4^U?)w ׵CuM̊>MNC(. x ʙ3jEY{gtCIk!lYynY{OlVW>Za-:b7RqHc:捑--Nxek]a7fz60w>-m>K8ELյ_$"mM{/̸OZ~=fY{6JAX"k`,cEAOJ+NYjSa"Enq$ 9RdU_[ust{,XQu0 l20Ut%[[6;,\15PFfXm% 9ًVj0fdtLoWm?ģ/j:} Nn=V1XD̬Af3B'x^[\WEkeI=&kI?x Gd'_igGb|Бgoud}NƷPYLba*s KK.:cin,;.L6eRUa&cuc!vخ 4>[f'eE𦟝"$R{F/ ڙ1͓GXpt8J^I#̡tLhϭxޮfXϵm"6˭J))o!V6jf-:aK7+I&Yk[/.pfm[KNfsDxk ]LH͒C x-q^M}` cgԔr{ezګ!k-~xؽ#f!mmjSxIR~MOЏY%?'dχ`i[.j_8R<[)shq^'dڜ]dМ[Tա(z7P-'BaU6j)(d p PP#k~@ݰϖj tuxwn9v? ]r:"l|o{1Mpd'?#y[W^>9):sP}D)t+W7phY e r0Bs͌ԯ=R=Cs 9,kygż)y FMQe|ULhfX )J_aC$_>t^ΉʚJJ'atl CnrܵҞ} deM#&ӑz~D-#-Z!6P|ghV 5:w7޻`9d9ssjx N0[zJ١6QlH%Ќiyh7i01r(=4Zjaa~zi͵ eM_7ھ]8=O UeIYz_S t-;NϨ%̅<_6==_[9߹;f3H䝕mQGcoz9O"sL:yuJR#ׇ@rVKjAJ0pYVKL&$ 4I*^~N2WHZsDaAPN0&(YѫhJl"0&zP-\zHnuKq旨0CI +H+ >#*/̝+r cqAB!vj}p QHeұ [a^Z8K7l4["X@gzd˳/8|^`tq%dD,y" CWCMh}0c1/F% =L`.[+j2O[o\Nj Ru0vwhx&,Ffɬ@QFWL1gAqFRz2("H@  TKfyʳ>۾3XM.#{((寷XcAoOGHL#|RkEQ =Zy8>Kqf '}zY*1XO<}Je >kmts.th:Z_N ǟk %g96/>mRw𕷟O{^?n*NU;qҏ2r骊ihZnHЎmQ\Yd&ʇjU6d ̟ᕳ݊H/Hͪx 3ugX)Hqk|gbIMC1Oc14nP-j\ h8PQDUFړ_*up-%{(*l"<5`x75_vm{#4ŧT+=7ҘKxs!'}_bT\24ECr3|*7|[q`%ݦd))瘃5&،3l;#CC fUsFh,W,uNZ8lXn52UQ]B טTXV `H^lGl/{-"Vqvr .겓9οBmw,;^QK4Rrp8a[Z+ba@YdYr;fR/q^toX/S@85jXeS,=OIĨޠI?AO(׬t߈f,) zS݆NʬP\N8i Oᖨơv05oWvwP]P( <~Faؕ -2}}":ݲ|Igݕ+h+mê/x8 {5ч8&FPr,A`#]߾\ArmBeErj?}}5Ubݸ&Tx0{a3|G(.[Ih(N%1sh-QzA6pL3N>v$._=ns㧝V>_ň^4 ݠ b@xVl- o9M٧ ԯ!̤-~ț%>"?oX <} =O ob_mC-{.5]?Ue'ƪHnI Mh%;pkB1M ~-MRviqȭ}>lߧ6ЧltJqDgiWq`J5j [&a?w^=0m8Cj;b*=EaSyoǻgL!t^ؙ8c^4}FwKE|5/WQ&DYd$`d!͎Ьs,}R'a R&RvFHj$ F2>vuWHͦ}MI.wC*JAf=Eo+5nt_퇞/۠i2JyԆHbJ/Q% 2A9] TMl.VHnW1{Q'6;_j7.w(f~'%-,"Rr |b BC*'F<\MyܺO9FHƚl<`ru׻as!c [^-LW<۔6h; P}\/i($cUrT ml7 iU G%}D 0-:{F);O?2s8hq! ɀq`cVDvPi;9vcUsܗ(7+CC0 v~ϱ9"UNܦ C?Ԕ7>"q&@.<^?JΙ$ġRoZ\SURI7Pt#~I#cGd 6cK^ =jxj %F.c1q'Df|a賕ryյ!P)=œ~:GVtÀ >c%pZQ4vmgA"׾1ʓ hk2W1n4u_Mz \sXxT-_ipp| Z-cn*n4 uZYKm?нm?P>k}N㑑4 sp%U=^&X4R>@)b7jsO:$(3b?4;AKtY2(g8c #3;<֙SEJhG͕OSl_^_dcS@7#ħ72QDZ׼O13";/1}RErU.=O|?nGV+;U/ǐ]W.}qJ(`zLUB]8>,:)OL^GVaQ`*ted6&no7&>þ1Lj(ņ6xp` I + /tGbՐAA3'P\[@*̲C2aIX!z@Tʴyi14l!kJ4-()5gFz^לE՟1/ h^d{Z0C\Z7BT~{Ok~GC]=&͉y9̐5oY{9ƴm1\2gc?Ӹwqk1PỈĤ <"8vJe O2鹃!(,r~E?RxL8u?nr0Y6}sWo@QԈyTGھdg(Vж/~K?KUĕ4z64dk)>{V`K쓼+9UktwW#RS1amWZi/7Jdlҽ}#kW[?!Png>߷xm(y3[W~JFw)}9sDOY>hًō>vmW{B> )- z)p>z׊K,PPbP6`3z(ږ[a27Nnc1 4mի?y0v'vkQ3mUybϘpfƆMq+mc)i:gց,9Eʛ:o]*bctbM<$k"2In1%pV~?gZLs߿=Yԫ1_rRY[b򘜳vYيl9I{7FTh_Sy4d5_v"x6}'Ur߃eg} x#uM0>T]ۧ~K?O =ih J5TWI(.n2J$aɾeo|-!aym+Ta(/-$[yTJêo`:kV1:6!BVkR<[t\5X3oi$@Ymo?C}~:BoXnCmoSvӅeD d6{Ĵ5 [t8Phۓۻ=6 5H?Z PIGxNu_܀/u'v2ٖ?J}>dұbMW[8yWk_ =sy)A}/#j!!Ngg[ZT\Y6:E@;0gw l|99|PFG;P#P{bw¢]n䍧S!bݢH;UTj>\V N5bp]͖7hP08iNk,f[5U -2L[lk̨Dm!͓.Y sGNvs74[f; 'v>#M$>U#hlnr4sCz`1aoMY벃wЉ(6-Dj_=)v3 4olJ)e:nxN$պv N<|&7cj@ [7aթp0PP\;d/9{e. GOs(&$rN_"ʻ'KF&L?K! 7A̜r \pE0|p#,-2ZXYgFV1ywe3U#OPR űWmf~2qr5uGP^#"gdk^2:K4C}ZD_ܢ9# _?5gM*9ǀۖrx|wi1 8SN!^hͲ?{`!y{0J]%!ڨ(~Ffɂ "֊m9? `(ٟ] ^{nOe_-ԅ)|7D):6|:+N8_"d);܂-\u h APda^ X_#3 |9ƍ>EpN*1FAh< w4 i+FdfJCk&vwFiMeIadoxgX44؈)WNE+T7[[$,?6-3'M7򔻖?![ü}>-:N֖4oP Z>wϹDN\yLSLN~SW@~K*iIk = \C`ٹdhN!}CZ d73P)0B/ CSiCjIz4?78A<=μLguւb}  0:+XʏcO2hsêErn22I44yM6!j%2{Otk,}H޵Egڃ~ >CmNqUHrȂ[C)/ٙ*WtF Hͭ'G Y-yg+ ¿Pc|."dwj5$j|o4c!I Ԃb iyCQ$?O|} J'2BBm3"  >uS: V1ZB!b X(6+2G*e$STeYy%`CeU63ym>:PJKK _KՖ^m s!lw*tt7J{t,y!DcBG$. ?7sm.mHmLR?,>#/;~>dCe[#3jA??ۿS(H?LZw5q ?j75Zipz\n' }fwwh-B:q {Tق2Rjœ~nj}*O+)۱b;*m&_61vծqco 0Ib>:CNI:EX\em(VcOX!{m5}Z+:Է=, sCP4OvN Z^6?Dw,zr\jt˾cb"sV-pD}(獷;5o'Q4=m(lyu فZku:+Оw;'+;eɮI,G/̀!SgA'--* B<oY]j~)czN:KPT ot,vM3?/-QNX ;mv"mvc\<fs;.OXH`గ|ܝktc_]]5Rx=-8Ȇћ4P2P=M'r a?/+-$> Wwo؀>F7 `xۡl]ϳ?Pjp8/@q[ \_8C~pͶ~oOVA O&=c7ĆĶi,klλșC( %ixʴɩ߿_)1)[!0Jy3o:Y-9Xka-3!\`rl %i0؝A]kD,G'aO4bZ6w6%uK^mJ:S"hOZ?ւѴs,ɱ~!Ӿ~ͪxΦL6b%ͮ:9}ΐ/)1EY$M%3HQMRM !0'FF!KvXpP. a8 `^>^jz|}Y{]kv|Z؞chSGpG0\se1e2w' ˏލj{ 9mJP2LS# -cvۖrYRlQ1:;Š`@-768ʻoUȜ̪1ڽs6JWee> RR'aPpqT" ^z [sh"t*p GNq;1C&8<XQU%ƅЉ\pZǾhn>z U^sMBWj~1իƃr:VZcu.7_Ҙ4 ;'h|>)NoPl" WeIIn}qقJP;}nSwk"TϾ ]NHLLJQG0pVJ/Je-Eml+W%2r.{W"uWJv5dѵB!rAkc)dD]Y]\H#WgMڳ5Uȥmí7A]v-ϩ^um@ﰼrf !`-~--r rv>Оk񦳊$ff.8Fښw94J7 xv$CUլ\I Omӽ ngs>y%԰g]G:`S|z롘X$ I57j~q7Fvvw&j:;l >PcbI@z?n# \ݏ^/gc#[^c+eٖ#^zCp~⭸jv Dy~-eJnP޽_ kO> B Ҝ\iӘo ;gx%y -u mv #`;1цYU#q9涯b6 $̉=%ƫ2X^r%W }2pa-9W6W'XIYZ:BkAa AJ|*D́dM/U,Rw%Ubz ©L_-]Al 1s<)^blװ-]Tn4ɵ v*`,&ĭR^]&w?aYu[A+ +Eji6l=~fuH [5Y] PpPPzhb +ݸ ff :ǯ倛7n2@/ΣJ=;eA?[` ـ)|ދg^ 4&u5e_۩s9Ѯ^ "9[t?Q[|ZN8 ʞ/䔩r[ xYLֹ]97ѡB9De5é*:i^+hÁ^p<2Pb]ie༧~\Ԡ)GحB.G+Q2NƠq7;8׵|Hݡ5b\ˍV5*ŧvU3qYgZܪ&V..c|ŗJ.JkS!0&rٽo2h՗faۦk̾[Vbs d۹<ulN6'͎U=+۫H{V[7mF(ܡt(U@ۛ!x ?KEUQiSthHlIX4=)bniriA^Uڥ֒6yEV/)*O1ؘkwꍾ;FxjYNzp1M]I]8.fam:;0W݂FI|dkW#|#H}:]Z6Œ.A-W1SݲAAcG>3ڔO2' c~>p*vmchSThHH<uO\IsTØ6g1^͉@wZ@4<ݜS^yxnY4<Ŋ6{b5}ٽ'x(}Z*b•7| 0,2[&o_`omq$=(bLlrTy)rLhj=pQGZ=VW^WLub2 B+Li,uV~'@tҕ'7ʧ8TVrX*-9"\GU\v( 4.c]6\YA)vKǦї)_ڇ*F#)]-cVkA]ܷSASQS vb(C3-`Yd>8.o$ ; j3' 8L%6d-3?t\Hm& eV+ycR{9=?rd m͖ YmeߩVmjO0)$o| n=ʲMz =\|y%;>% -nQ嚥&u 7sw8[3ƕlhţ"Wbm䓻Tխ=W+џsnS 'lw=S4ΆevY'h3^TU(αVKζr,0odo=s0nT`{:w6Ϊ[>su@fUUr/00#7g5:记=v9?.b]YvH 9֪tε϶7.eOj77s,:q4b K@=ȵAV{ Ҭj=IKWmgNŽkVMOX*;bP@K3ޱ7C/>"x ' ~͙zݝ.Z&]"}zhwcx%Jl^;H!9[aᵷMѠȮ'|5kV&\Y 1m[ZOIŀȫ6$v1L8njEJ*"2z V `T09.T*&R0^VA̶G>5-N EG5 gݻe"O-j]N7zY6J]_^P4Hs1d6pUPo\V3 B)zhb|`d[ijYMc+7yF3by]|{ NҸF:2ZE˞=gҡR$h><]ٟ]wPvۑ['QtM/:RP&YbM+/DZ4xԴglX+ݯG8o{МGhICWf]Fcx k2e> Zy579[Fw߈8*Ϝ(/#G%.VvS]K93M2GgQW Tv e@2Uo%{Pz^ؽh$]bs;e*̍f:e˜ֻmۜiҘg|FXJMr5N1,` uaۊ=5=P 4(ݤוѧ_~L.@tKwf`}q J:L! *[[v{щkY$%R[ O3 Ǡ+J[5}wΖvkRM FA(^4J3sgEmhP{<6KT,]@W{hViܽCjL#̵->#1G66ĚbXN;m`·Ep*3c ^'rJ0Oآr9Pp"l;Ȉ3eםA\)}rd >f b_W|_4EtwN˓̖cV|?|JDh`<ԍ4ZKYt{URM2]aG);UCɉic5we-29A\=ebQLb›m"EQ9ƅr@д|c}7F# ak*2sqt-xUYjPof|GݕSgPq57Iצ{g[\eUn2xo=G_g?ŮM2,}>)!}UI_Ϣ۪HDZA*U;ۖdƁ=LL:Co68[㛃&9t&PġL; E+Jmk9  úRI.Oևct.*x{P e"1阶}@kPZXe[d9/r|*pr/sM'(ݪfkЈZ>ӪS>kxO#.4U `9E? ZiUqaRMi6VS'o.I-wr^ԸЃl.un&9$>>$ɭԲg%'T 1݃BSZݯJ]Jwv;sT;,ggze \b,51۝X/P-/=v;l»ߋuvΎi!MMgZF8BUK@3WDgiT֎e1CRRtjl F,7q*bvФbw.TaZ)Qf^P0ͭVa jEh_}!r^|+N͉[{,LWa_?\-W0l4iU;Ne74ZQyv4|OHtA}1Wv@-m=y 8T>D'.jqq61爓BTVz-vFJu ٶo(yh;}S% R5;'#`-!ۈβmBQќQwMFgtʢ[o/#EKu&nhaϊ^RJɥәS3)zĝ)i -t<cv;ir5e~duٜ.%H*FUwk }ۋ[;zvȽ"I*Bime,~6> ./BBpcVZs'MٕǐUrP,(RuER@[uٟhuxn.k7=# Tf>oP8Fʜfa8l\I97ړWڮH !{rS[Wyܐ{6]qQțc3fY!UL뜜C7:B{^6`LJэ`-0cO>s u] ZwJ7bF0lj!eg^<9.WV)ն*(tNYy&-k#NŠi.ݶ+t,z"ļ ֯cO;-t8cKtʫ̝po}9N^XDϖ h,EaZ g$u挌-\@!z>)rE͇ZK卨 '=93Ͷ ߕ} /% ~Vn킡nu7$ȟ@9ϠE8 dV:°@k:yFU@\sxusc}.ߓ]6B9^(+~ ֡`ګTţw|Jw"LXTeBOGL[gUj; dD ,7Z0O C%`l}]ul=lĮk@Cf$'"ۇ1 i|~Eʃ'"ց\9{M!6ՙr_`S6O}"?rKEw0" 崜"ZU~*Au]UA8ڡTmw<(8Pq&¸ {Z ^KR@ܭ8Y*/Zo% /6)\FY mcAJ + V]0E6,ĵXUUB/V/< PʿI`&nR@Z H: eN廴gs,U}rQ)pLD.;,Gv>}9M@V3UgqttrHd@/9^gRAexNgۥw{z@7nSM;j[ee&iZd]}gV2h!| "$9ͲM[ o9'b[0Y7}j$Z7]Łi9Bs]"uy}n |:pSyaw5kC26)3׺$(U69Z^WfJtZrLX:'D)l#ȫc&%'WgkC} < RVdV|hKrkYvatqWVj8ܕ\JN$RV8yc92 2ܼ7|MnFe qR,ue?{: 474MG[E.pօDԪ?{(yluSF4~ad\tu{Je`G\gn4Ģc‡pv'e-;H%^g(4{1xAه{VĽB\v ٲT@rӕl'Nҿ;$ ,!ɵ/a$b[;3mS^,f#>T|s?Έ.R幕sq..88s.e(*_ р>Zu=%pRF,(R˾П&4#/vv0WOFgqy–kG2|w+WvFܘn>`DJJ͏:߼`G}(m!.ſ'C1:_mYd"n+V¼ku<4pj-sZUWDN"ev:`mrq8g|RzZїdƳlc)bRA/]B;+ƇZ#bD˵{q~jJ7PC|9M0 l0*|3;ÿndrFRuPKaTIRFu]64(",Z L9M}m[DίkbI!O 1yBt7sэxY[^"qJ^=,v刨ª0p`Ǡ0+q$.V)#gJt  }0 ,PD,x:v6g$v9b%OҎ~[V|oI)r5j#%kT+~gގyϖ]31BϞzwOx O>*g:sy8@A 81n.-GKEWr܉~bp'+=,;!e-`NBீI~O6 )U9&@#)/vM婊?<_7f9`b8RN_tB[7YAphvͤI[kd|Zⷔ(K%v#Ӈor N-%J)){bp=nջ5-&=L˹dt}]'hIֳB@lxlTVJbܪqHˢ5~"TWm ~sY :S V|Uޜ@Neyub狶5F0 laK!? apLUlkX~'/)GΪˬ 5Jg6F㙹ʄ*u) 8VPxK|q;'ûQeЉ׻!X9 \9gӃ\XHVΑŃq+(.@IN,00b:ȱL*gyFꉙrѯvg`7ɾ+@岏c)t.Vhm!ؔ{e}>AH1-w7Zpe3,O033VmWu.؇O#o4 W5Q \Q2M5fDe:v"ӨR Pү”Lp+Q(3F[3do^\Hlc xù>!lXަ$aa/- 젶Ǚv]!?2P }2E1Fpˆq*שnkU` yO Pg㹪j/F,{뎚@qС̙u\1#^,ʻ5_䒅42WrK~yc/}ɔ^Ljmx*N9# HwHWXtQˡb(N'`vx[ DO";#hʎYkڭxJ^ؙŠ#xM|Mg>)3O{)1_j:޾Y+ܸ߁M<ȯnBWAuw)TFՙLmhm*)aDi4(%ڪSw|+[ =Q>p]1.dy`'yxl ^ZHp)0gΗbm#٢+T9v"B$lVr]-ELoIy&FdjpaL x|ƷrMvʉdNM3*eC͜4r*3q{d&OCw1*+(3Qb % M]|L.sbZ}*JIvs7JV"NVs֔~x-ҝfzѲrEr 4}ePZɔFCz{z@N'ߵCecuW/Z oWZp?Ǚ4em8nO-W\zO[89|.n}-eU.8L<$-rtA ڏh sLvTFRUF/k$,,;KY͕oʫʜ¼.2ر═}?fl/X!nIZ6 c=WԽ̒ tF˷ W7މQ qq ȬyCDU[_lÅSIǘ 2Hث4zh$7 Hh s%N[BɮuUof$2`! 21nC LPJgJ߮PSp6Ja/~VlcΎΈ9ӵ?2\9xˣEñ vUB&sJy~qs>&N˼t!5 d949.55z+|azSQBA+B4N.ՌUZm~,ۊm>Kgэ.~Xћ˲Xnef=SȦ1yNj8/j-C?K5ta͕}ܕ#WEsiZ^U/9ea u g9}S*&}9yٓddD$m&&Bo ɶXV{mo 5b ^ydW臶4˓oTCES [𧽢d*^ƧpMs)ɚ9e9[.gRI+ rϖ%a+?CHd<@" 'bA0eY^KkTdj;cF c@L'mYNI\ElK(s]S,0U0OD][0YSuAk寯'W 3ׂG6q=eQo=WBTuԖ3ݪ%\"s[tW0y,˂-;f@s>a# }ݶ7;#"k ))kgR=Yp<8.$W%sma7ߍ«Sʄ\!1(n}.^0 ~.neAKͣ > ՞rdRxERF{ζ9EOeG7IXG2: Pqv 0kYc.EّQ":7cqU泐Y9 |CbG)TG]%,4 P2s0dN_\VpT*q8( I ^yHQ<P^ 1=45 i] o鳉|7[sq{:yH6X(,_l8r@ƊLFʑ0zLo?AxRZ+Ms%YfUޗAɣyмu"1۱VIa`nyUAlr&S4}?ֵPBXʨޕ‹Nݑz-٦7m_Ҷ6T[êOyXzf.jIySf q^ qJ;20rثMqتSc,K}$Xr uu ^Tmb˺JmϤ U =+t:m :Ǭ:;cV+>Vwͬ5Cd[&Mf(ǽA5!V=/@'QPbI'sTy\N@ I#ۤNj/cCLE٠}g7sTEi&%}n]qd]kJ˻* {ٙ0+Nɮ J?,'j]|b&!Nbn__FqWBnDFkp ذ1;˾$#IW!ʬ|0Eb"얹1BމXR*\T{ bt@ 7,}h7^3:ӮoڮoV|C {=-ߌ%ƾtR{3e׺2ΟnLV3Jy؝q,!}!KjNs@7IV@,8e#+;ZNR Aϰ .#Dwȷ{>A]i+UV It;V찿8[;+Ș@LSxE+v5rırb'0q ׍J"Ν( ZbIl0\ j7uʾ}TdJ6w5ws'7ax{rXv|Z`L0Stc#f*igѺ͉Q;[A#*bU2WVug!R8nP˞e7e/\ ÚrVnc`׏7ٕ&Y (4U/H++ǢFٱ^*N>&^(s0];cTdzuSrTs!ϨqLLU"SC`~a0Av St'Ý ݯyi|w8Sy@*)}-㴇m„U/UmcC;RZ)To*GZ>6~̔io#X |33y gF0hM*IC}c$iڢKmʁ.q\Uהv*RcrVLʭ2? $QG 8 -J9-NUd OޗˎuJDzauDhpVYgb\&vnf擕R(Eߍ!+ΩۈtwbZUwپvw(]'%O#^{w=ܵEy4Bvy_J<Ў8po\Y*F5.*]㚼vY(7-,4Õ;+ 줐7 7IzoWoފ}on=SIu]ޒ7BhwtcM]kM!VeCYUUR66%ȸ2vq^p!2MZ쮔T2_DhO87lGF ǯEP`arT$t@Hgq wCOՇB#߈G{HNvZ{ԉj c_>)'`.MId^J]QѨ#z{.DI|/q~ bB]l߫az<.sfxOQ??s=,(.\/:x_yTjE17FP 𕟍9lRHe$V:y 朝=Gt88ndWHBҬSߋNuQ^a:& 1.?,L6,9*a&o/KXF,8BD_ 7)HݲeXE|2W*GH󩝲jБ Ilbo(3xcގp2~#[{^Cb;f)Iq?35pXφշe1lϼ@$JY[eLݲbFFvq:/?l^=+p Dfe/ZX4r +7rX4ӣoH!a][[N wۺsc˩u1[:jYBbY[Jriד7cO=`OV4 B&մE ҄8{J qX*MAm}"Ag HW-g+Nh2'A\n˯~6Ŷ6U|䘪hМ.~R.̮gYSߜc/5[b] gGX.ΞiT'2L =ڟRhYqNMD K" !T' ϕ$m s+2Ht-7ҋFeñ`-=t 2+#ؿ#]T x}ޑX3|N;bb>Y Y0YqKٚ!MD{Yճ}////[BeU`8FB"G'\d,q9 ^rCM`ResIM\z*5"H)mƯNuzÝ k2-~n#z\DM؇31e<@,axK?޿CV@،0ٞ@KYXz(SjcMǞ|~FQ R؋| v"ߘ-:bC[J1n{ei+[ۏ}-4x=(J{]` E0 N< ]/f /xxO&YpgҷEtp9˸PDօҘhV8c7cXv2 7TFS2L%`$Yz LˑrN(DK1CjYI7|ɈxT~Y6z# }/^/_YG >;+{/ŗ_eH}!\! 8⻠V0/UϔTe223'!(V)WبplȩquPN <z1B k'5E_N0z8*\ֱ]KYRGn QdqGxDbႳkiW=-|& L' P.c0aBu)s1#4{ٿ\~PaB@}9x=Ekzԡ!N9v ̲:\u8Q; xkq/8>c;b],&|x1z$e!mu}@_ZDPo@?*[( M/ƿB"%(N\;z#x\LN<c"ν~\ܐp [y*g# NH]6kpKO>ߎ~PkW?F6t=!GyvCjȜ)KEYnB5NE^*&hދ=^A\JOD,p1͜U$Pkx^46fy&<'^o;l_ChY¤1׊ pY8. X (;Df"TW~  7WڊC"<0z-˓X%8؁[ w7?ZhYf]9`?W{ 2/ cV"$RޯǏ*7r%2"`0NJ&"`XqxezѤb#L r78dhO 1M r`H AF 8 1Uy_zwގK9PvW=6H Ldڿsto6*ԏL؊^-$+/D'f06;"Kj:+l?OݤH^و{XKcӱ>'A1JZ˲qXқ||x q?몎ه[J՚uٚL|wRש`/@uE$CAѼrn:/䨵)ha`T]lAo mkHjoLNJdx'/3JLallWjE^L|,[@AH`U{Y%dV晈a9D +>rK2t=*4+W"l-V(}1w(̍hY\z5x;&xu9] N &ayM!8yG HXQ| ]"0, "#j20桂1pS" 'FM?׬}Lt 0ɤ tB<|=Wi sX hqݲNH|>#dԔ5qRh,Hue;Glg*N0~;^nʨ y"DBPgi0f5)ow<#_u:#U[XoC S(3ƮӁ[gORqHc(ҹ #]9 ,/񣩜4eŸoo9m\N@R&c1m30R31D`#]8zqV쮔 e.Ec|\YU3(awTvi؋AQd 3c^)&\հipް<{ځc*Hkkg=tkFoL'0OHNp_g4Ss8Y[ =Iw~>N"`lpɠ#HUS e R`PXmҶ1c=˩[ZabZ-Q$׉VLʹWJ,@TC$tw Ks4a׿sJ&k̳<{ߢ +qednjc"WDJm67*N%>,y; +rw5^¶m[/شomә6wGv]?oe;90 ˓ b ;V^w({0rh&JLfy 9lJO%0qP?'e}H;.#;c?,ڲGo\)3;>9 J\"L^+ wϣ^8<RbS*̭&R\QhPO'rBújX$-G, :'7aYg ^Vhh֌@ɹ@ -r @wJwُi8ܞx.ǭʥdnG Se-|\;´!yt GΕEu.rYP;qYמz 0Kt0±1)pfyR$oy[GZTGOUIB';*t/_-ƅ:ǺMdg\.Ö%L 'vKX[1U!ߥF͞NG$§+ߺڭuJYCDRF&C_~zH,o* Řg@NvFHNG]<a.}Չ]f^ 0|shPƴ}ZvYZmbkm[~U.T2k9+]|W[JЉZtיw]4YQB3UW@wX<Vʞ[W}ѡ{8} "Sr;mMfUFtE3xRMِuIg2gQr:lڸd9:W%$A!\e>+a-N&E_ݰM4$stNr^$Iz,c2n.b ښx{vEڵ*maӍ]~>YBQ!Vt,VmTzo~=4hl6a֓ Nr}9™߸c:*IeJEJٖoC37gZlfe֛{*z(g)+$>n@ේBb3%-t"+Q]͈"]=5q0 8:@F" Ban}<N>,SRw%k+E%K" i?Tb[)»e)oʣd.*[o5TzHdU t2X@0`` fuyi]cnY-g8͠`f^PȱvuBdcU,TXjA_jE3ظPL${Ou#h }Pᨊ˞hI*Wda=l 0p㭲"?3A~y' ( ʿk\#AUr&q6Ь])l澕F5 m^ʟh)ܶu*~Nߝ/+?Z_]b.oCi4lQ/ @ѶVh P$s4&aUS3֒9;\bg)WVD6_^5$]"f{#d_Y1ٙclɩo, T{P3rJ:BWMե h[JT m@6 [\e耍۴3|Ɠ_]\.;wgq@Q D!`'',G^hmz'v)ۭ@,"mKNd#SXhHm4Y$4HJ^1&.^yr s]!vΉu7>F7vo# I$W,ݢyr|R0Vg} +В%H6ԺsO 7?e D!p)MӥTGW@x΂; IׁAThXz?yDW aC3;9*EŵU9vڟ`IJ_aNLȺ=1fO*E!6 ncko.H^ۥUL\+:BcƅVqj\[Ǔ0j_v_G!P YF| U0@%3=|yH$`H^г}|e|.N.odˮgL8"̹:f0P|i\32Dp Q3dg f*Qc~j9w .1g6dtktɅJTki˙eT!\bD<9M(˜뙃bf)0Yӡs΂w Ec%L[c.vnh1*\ˡS]'wi.2Z'Y".lońEy+3|sZma*e#T@ıj"TJ2r߁8ëf7Ɯ`NFrM%& Th SP;Ӫ[Iwb;1ԧg\|#uLi-%։eV΢ѩ+|هVmsۙmONr~2tfH[[>Rv+do+{L07nC_(7O>_ HP̌ `uRW[wR]'p]YὮ2}rJsTb2]]wcw\~igکMc:vp Gu\yJ۔gʮmnIe&|CT9;cu9q'Mi|]ƫ2Y*;($o}H@޸:2 EuEޒH7upCǗנ/OZjn/'Fx2.cQ!ǖʀNfxWHnpl]EfasS#U?YJLbə}⒝a7o=|ӯ:kݿo|{] J+}^Rcj@Y,{35|fh_쪣kciVIce>s<v<9I%REaBʉ3۬nFY6l*5܌Se WP!KYO?nD5ag]Ձ~dlƱQ2eu }bϢ. -G %ɐ_'g: -4Ayܩ0ԷMmhVCpo@"kYTcqDBYٕ-ٖ4ŵ9/wV#o`B;Zs -o')&0]ut#'ǒ3X('1~R1Зoƪ1[!ѳ0uJ萦Lx~(gE~(@dC9w#z@aړ{JUߜ{%%(f܎M _>,iΖ饠W݉ú\Z֐sa\JcvEIVr:Q#NNJf' EփDD輀s08@0-Q\+ BP@  s*Y\Ua]:-9wtQ!E2<Ƙ2Rg!2hY.̎vtҵTͭNQV`qT4֜rXn })fKGV\s\q2)c1Y쿢6odb=pQfChVRb1շ ݌l+_G646|<  \X#ƪ= ˞wqFW5ȿaXLeul ,l!r:3eeV^EXBz`}0s{ϔ=Y:4#H_g([XFC|%ҒO #]M3݄QN_w,ss:Nٻ_9*ڙ\ŠfX[Jþ weo/߿a!(A&S>ညwW\gvٕϔI @9[gO1$㛟k ;Թ{(ryFYqH-QsJ#^5Fc#y<ifY!꾬1IT [@F5V8.ڪo$jTȇ- u9؏ A2#(aٷ hTd-]ʕOՓN1F !,c ۇ*OY@`#}W'= 1Q7Ѣ,n P(*;-A@NNx :OW|{ 'kwXn5Hx=g%!DV"ArٻZpd_K̝k Y8e&t_ c/+6} $tP25JN9`*Q{Q^0UC,<w]}Xvlm^kDsE{txgvMIoY/?,*Ii/FNyy$ٞ=ʜ@I ZB^OLkf{qĹ,_ѪAs36$`8^աe5D{| 0ov̒N'ca\gbqTݒ3^Hus߱!幬-#^ۤ.yg\迢Vi2DlўL=%(Ht5vR͖S2Q)8aѐB#p( (dW6݃3o71ฅnps%gy•Bc!`Ick_W.N^}}pSwb,ML}ur}'Ư^l8Y0;Wy-wJTVpJ[$C9:E3|egQ$B:5OBa6 ޕ7zX~:Ӣ۽He5Юyxd2^+`fi|o@ 7ꮢ->,h̙WBC{ d#QN?~`DJAFZuނ N;묌v7,uݽ/20mHv%W(YϘׂaka|dJ8µڜ8Y9܈$ OiJdZgH1,3-xtZ^uխu.yS]/ʾ['Iq,P` ޵SnؾֵJ9 ]ejeVPw֥%B\QʹZEgIqnXǎ.'=uϖJzPq( '8 o+(468*⯼"ז}%X[H)*mPE%R݁<NJcXع/.÷5lhͿ'7chܐA\{#@Xѷd> dr)M:ubP..h&tGl8zbXR{J$ A%,V[ n/>U i-"\kZ_V^1[lY):x=ݪְ`So`C+2H(NhO.e H٪6#⻉BZe_{߳B@͗@rHT7qKvW܉q%Rh u5.~7 $zy\2Ә \0rEwѐW3se+egr:(iXdY~Wf.0&c e:`D@ykC6gmgJUL`,2UݎCQLϴ{m=$Cjf..o%'6Nve$+oiV4y:^2BkUu>iu ̓gĶ9Xù֓`6s7>.NO.Ǣ*t]v%%#k U9'rmĆWWm.ߚyRˆn.l;=f$6p?3A6zɥ6.vemU|A;w$PzDbOwAe7]Y4On .~ WǠ՘U2ï/O!K,zpw,}Ҁm!;.Mkbenv20Ƃׯ%w3V?`$C3t0,J^ Zue_4swTtxFM= Q9ZI\<|RW:Q"dlË? VB\0/cVmΐi2Dv䫘 rJA9_FԷ)҅(߿pho= ׊ЧoǙDI#Ml!ئQ.^;e4q{Iw7O"2A9[0挆'?X=tU3^ Rr BohU,uMii(P4n>Lsk0CZvU+ *6-.]j~r rgNWy޴l Mi59ݏ|k^A3$c4֡o] `z; skr1ĩf^HyCA k/r --5WVF:ݒMԪeV3B ^ jw?1 dkQM!S tم^V9dlK0ʹ45Aj1g >T+ͳ :.Ԙ i?g{rKVTbLO$ϑ-s!ޘ;1!_0v;@WJ2kW]aO htk cJDQ;X>M9mJEfmӺBXKRNЧ*Q=kߋWuϦ%^;ޢNiUmۛ6%ʊs%5zI&mI(:RHfnJ3Q%Ϸ`-BDWpa9e:vl,.0.1,z-:ﵚ4*^‰.04`t/ >ӋRݖ3Nˮ%'Qz$L''TyTl99r}@}C3ٯtf@R&~iUtry*xUQ˯L'<Ɠbޣ溏W9x_1gbJgeSs(9\jzq+9~+m|_@)]N-waH|Xk?#J2 a:g.5]F7UPvYυlAvdRkNV.Oĺ޲{Sï22Y3@I]k{j\!qX>,;@MTx;Hܙ#rv\w?[rl)7+7*Y>g? $29׫s;0J@?g]r}g]k-Ť䑳ׄPDMaѤB!J<_F,Ũf @a6PfBOҚœ4N֯355Dx 1ű)5>T6$@*UW$rArh*aF ͟jC9w(ThuiY#6._7.5/ūN$@9"La{K {)RT P&N=A'E^(LN-T Q:G++ïL!Q :<ߒ㶻tSvxK Uғ a}glK|,sna(6(>DTL ʊL'4gѕND|mbu^Hbt@rR)3$|MPQ^FKsΥ3)10pD' "IA!/,Ptkr'u*bcVf\y~,2K \5ƫqX35]vlP>ݟ3c2l,ceƝ"IcX,)+ȓ[k].dldGq1sqVRu%ץQ' q[ ɾ,( ev`FAⰤn9VAqgҾNWe3 ]zF,;pE*Q%>Ih݂; iC(slx2DM-߈]A8??/'FL*$sMS3X\:<ҢZMzm+z!u˓hRF{Uz |&G3GlJ}jF9Rx^u$ar?k ubڣCcFBVYeϥ"`J@dr3\YlԼj!yq[vb%"*"%fXhNulfAދmL%;ʻi'r *O% ;t\LG9Ub\5y|[yoJo9:) C7zvYI#`.a#GhVq5P5Lћ['vVWJe62'Qpc7{uC )A6*Z#$ guSN1v8a+b1qPs e[ZL`OU xmT5b9@$<+^&NFRK2ttLXЁoxB+&e)c=L[?T(n^$G?!>dM3%o霷]{,9GtC] ]nt^wnC/h](w&B+-gw&H¦=&i#j.' (N$JįdWIj˦ :VEk"H~ EOQ:yݾ˸jY{ErRSnSIEP;@9rT >qx12QQ4XV$:\cw14 6[BS`ߘCNKVf" MO )hHfzQ!;[` {ݍu]qXi1Ut.uTcuU DǾ,\M> 71~x&ƌdIܾ<$?8f^FL 4x&Dg }fb.#$qșT+@V #` w{H_U٭xнx= B(l7 A~~ϵBgrBas=*AY +e9.r%8re`)k`,E#@[}/8XƝ=6H;Ċt}PP84G؞BMW$i,[Nza+,~L!ˮ U[րzW5@W ,,e&_yݓ"NUxT.[n_%[A.s'r9g#w 5rn[W,gAܝԇ]_*٤v$E]DBҝ`.FDqߌ-l꓉hqLF{/lV0!#t"q}znk۲a*VCDx a-mW6&{6OZrKV >P@kHʉc5ԡrVaj.kUm/ z /1p4oůhj7m'~ sůMo!̮=<;St q$nq*Q`9n,v}*?E2T uK =JhH.es8;![" -B$^P<8#'%# _(NkbT7D[b ȥXުߪ" T$ uq[BU hl3:Y1-u!;TYL,ԤЭ7-T0Gả١-OUрV#j8^s3NAIWE!B#yj٬`в9ヒڊG4`?+[ˋ_lVj\TK3]o@{SxU \Z'G~&2xXsFN;Ⱶ)'6)g߅[4XiTmzdhY>|;I?wY+$* SEvU#Cv{C»'Lo48ιhYt8/8|A[q=e[wN״+3dsRwf͒Y`;B]dTkio 5?-&QǕVN vΛx6MГ`B,tڙ6M\iv`N咭"VДPYQc4;:*to"vb(Gձ(އKiD!h*Y㛈ڇXDf bOޗݱ!'؛lOR,dq?%BGQD3Dl ;,ͷ~*TRe,eT.&O'y0'`YH#g۪4B:paQNӍK!Z\/g[%,-H50BYՓxS4kZdsר.T\H<5Q:sR[GZ=w1oLA(PkqEznew`sр*sԩV\l-\.n<|#Y}E޾0%rʰ-_E=e`N/3*x"XZ KTCUJ[S8؄QMUBԱHg|8Z;I|rDЮ\]F ~mOxI\+I{Ϊ0ov \nlDwe, O{ 9: 7z5r5:ZW(CrV'U̪`>{=N,d&mcۄ~t^#aYJH%GnN/jй{isI.(3LNr%vwES7ԗoӜo@$2WwW\pO]9ϕ;N/Љ_WRcn履+UP}C g:.yآHvCېI\^~)}NόFcxU*y*O`M9p&5ɬaPݲ6Hq">˗ezf5H=< j%FlH5QBgYel kv#e2}꺕hAg09G0f[^' VfQًiv ]euExPQMEωp#2o2Bd3\Y›4ev2S!OAԝɹ*DgMM\Q;ٯծLWzf 6z-"T^)o*t|Ͽ8Č99Ш>K>ȱTUlغSʺ)7>vЅ-ɍfڢZ!w>qxyCd^a}Y ۦ+1{; JbYݱ{oC VWPv<S:;1hͻ*k2j5*)S4R@7sjwZ Z?ET"Y:1+5o_"%3xաa^瞝ƹ]3pgAW`Tq_BDKu34t!W}\&.l׏ esNB)(y.sVDL=MlώѴ%y4Lz5HRz'u.\~:갸%)x>s##swt%IӸ +5e)C#y-4iln(c=[qj$~",id*hGQS/ L=EmUXYD<&vr=%kEՁQGq{Ԭ4.ոg}^6"b7֤V._BJilASl|R͐jxn &K JpD``T󶷒*: VbpF7kfN.wl9)Ϸ涬Z(jϪD('Q4=LeZ6fv5j/NӤB-!3ɨ&d+yp';H311x j'˨|WdS̞+3\RW:,oC( \ΠY 4k4/ 9w6邈g뗩fo\ xØ}1("CQݵ~SUT mM;( Fj zN'&&e9(fi vNx harxfn!$h}&A:TFRojaZre`xP9$tn o*mFǦzl`YXD.T+2Jp*oeį$֮ZYªӮ^Qj{Ky +#zq.Qz&<'FW߈Y0Ɯ ~Igm- `Ϲ.kA}d'vkX K8q1L"i}+b:zMw4߃BYƻ^89\o5ғ!?`_:.JƧU%XҊJl:{vԘƝx΋B!w U$ƐioPM֔12tN._;=MA)-590M~G^wBf'e [4e#?R.ԐajO/_'ٲҷT[}O\-)S1xeYUw:2`d(m>UlZ7E/&%c!Qf JHOSiRǴ$sAr8β8_: Z\IvzLTOm~7,XF,<`VղnuWUT~"CRTO{(W&*[ښ٢`\rpJ_9=-;ኬ{>F9%meL 1.@cAq}5,٢Ģ'塐?k90akUqR͒CQo z$eE4vr}<;p򒿝OI2 Ùh)ͨHmt"? )sZkZZ[2tϕ*FKh`Oz9r xPÇ!tPEQnoSЪeTmlFOeiD(3Y`Z[b* k<Е#-vYU"p1+GUa7 KŠwmjsteޘh:egċP=Hβ`5{4ѕD(l(reQ[a47N);%LU:e8g5N`ʚp'c } ق,=zX9 Wxi|>VmAJ cqCߜQYթ:a)^Dg%)>1v#Qq14hrd 4ǀc OzE y;[M<'di}K$q;Ԏ ,vy?Ҟ|lHA[H2>)c ӫ-Nl0Mg4يE佐IbbR'qG{-D$2D|1]ݡLe5Q^I-c8^,p\ҹ&Fuт0,{^8$x4h`~-KO=mK{Ǟ )qv[[R7\Q;F~YytQQm^Heĸpܠq4F1>[" # K5 ^Q@(JdbVXdjX҉ژ[a9o]c6f8wnC,S߽+I\թ m|ʰ`G*2ʭ ɠ̈j8 @=;1VVP[ݷױٓWʩg.f5(  B%GCpW;> PނH뫪<fq2_[qF L["Jeҡ*gMMD-yx<'"(4GɈB4 {>1M g}vtt/,~Zm,tLndTx C[\H 5=o #0!]96Xas&[8I$IOrwf"W_+hU vK;i=}jUC!n֞-;4.vj*6]۳匵iȦƉ׺?KN?i1;s׌V-wb< (nA8ƷL~2ց O?_ O^,cc2WPe^x\޲ygXfaӡ<^meos"/)hFXo}L@S~3w|CwI ž>u9Tr c[2K8PvT%˴RS6E]/\9ulv\ ׅ,eK[J۳PFTI"iׂJߗ"C+gzBhؘwo#|\ZPd2ߴ'e䖷7:<3]ԍ4I 3Z~X4ۇ~GA vSNFCHR~ZR{P4l+|K_ۛXC $F}"DvOy3(#q4j+ްrj8|y#;+pyLjJ\>_vjibۤT_I>1-͏ׯY;ˈ:-u/&p Z:bdp.jPEétֳs~wj$ƹUX)6o(:]o1{JƹIx{Os=H%ָP =ԪWQk3#"NNʏ< 3^$U/Ejs \Bㄯ{i_`s2Hkg2ZѶokYd]߈ű7~ۯ[x)GK_C\mN ~Yb^k[w"ׂ>w}Gxvd NYUu _/V/QV˔8EHKU∩x~#-T>`96:l,c9X$ A_/~s!|Gs[E̥=&0B`qsY`ֆ@ʼ&-? jE):Ԯi H[Xt)Ld3tj.κLCbTyKCR>.;$z~\U<'oƉ8L0-jxM ;)zl*|U`dAvE'k%f#FʝQc5]9SȅDN|̕ ^?bCWgǕwbѓ8S ̪aljFH-d| Zgnup;q0BGZOĢ b%2L^~" ΎD|2xG(v6~Oǘ3JB .ZbUݠckq ՕE*I:Îz7u#2M/Φm2veco\Y^V2ĿPF\¦Ry[;7&7?#٩AƝvbUCt ~%L#zk q-^& wmeg'*%s(̅ JM6EU/bGv%į;WQMTV&4%;jrx-&G&D&[i氡6t,s:c7,`'uUYV{ܘ1#a3MHwPR;I%Ph9M(U?1L 8u_!^w*0F=e|G]sceqՙ5N3ܞP]}ܐ6%9`7QYn6s GyS6; 2BVeKcY[/J[,On FD*;Y \C68_(sOaxdd!-QJD/]ϱ^ǻtqG-'TJi?K7"8rk^n[H>lUI/|>Vs- xmRvܻפ5 {v+Tp ZIJNY]ɕdV3XmmWK]O*J+" Ǹ:$$LvN7PVf.~B.q)fs<_ŀ8zO.c'r6U-yM c@KnŎajZ\|9\u#eDa6$a W UY^:|bbpwO ע̙j41{r3-!10l%/VY&dN6Pj>܋93qV:H=Mݒ{~YV,mU 8gKq?.K߉ӕU`-1AyY6>M?ɋycW:tٷ6c^LpcJdJ@}6Y-4N,NfKvۄ]U0/3Hk2oȆ E T J:˲wTgQ W"垪PƤ=s\IzLiֲJ7:hR@WWo.(Ik"53 lvg8dlϾXh(Z4TƮVȦKR '"~穀ame;D_N8O1m?(VVNQɲB"]l؁ Q"5a*):Ek+?3A>\.K$b5uokGQA71ȔzX;)S:ojG :mvYu(A6Ռ2N8ʬ@WѯUo ^ʪͻ;5w%i3a&2EJ!ӍNv\i3jb+w"ԲdK2O'YUcáU53hgNJhpUN@,&POL; OYQc::pAuh>{Y/t=&L1Hq"9tzr ƼYyZyd(={b׹Nmu,޴ #pؿ\ ~5Y̝{2}&¦a J64 U Ys\=9b]G(B"u߸Op̫‚r"0~A#t@ď9Z|wŽ:>82]ǞkxSbSi_؋~Lvi!-RSQ#]~ǼŗQbSO藼n5Jˢj _t>G_Ujq_Jj*w]m:YT-GI!曱mE-JӎdTDb>,A;?V2gl=mqcx\ɮ, `ӽw+Jd '~7AkZ@ZO& 6KIu/ϕkuy)Pt,UhŒ\DZ!78] H=3sd8˻yrp<K  ۱ /}#Pd'{/u =.\>ۉo CCRBLS޾ۖ(ؔw-E.aU? !_ZFiѲOMh!эқA % 쏅D3c_Vu9W;1e( ' r ̗7~zNtH'U5yfr83YAF(>P*X| @ݎ!˒^?"ʚ+./Xj„m. & s C \\!]!?H}i3ᴦ@ӠJgAiHv8rF+ e5І-T\3}+"u}@9&` åDL!WwfB"U8y#rO5¸{2a۹](BUڨd;)2/>)̗cc q-S>g]Ɖ/"7JE8XˢL=u2;[x}%_ (Ư~K|D˅d%.3J2NpҪ梌fW2<:Cb'dOY{F9ZURQImU.4ζ+UNUW2)AGv{-;#TMp\aPbuc0'3ԙ]xzj.ߺP[0#DNN˟]3fg2rE1SE[t1ۏuY;lFgիeLE{'Jl*/ om4NLbQddWu~>z9Tr|v׍Djmd<>9tc-CJgu# S: f$GNҦ]ySvۄy5ǿt/KRqXs`xPe+>ÑϠ%opf{R kJˑ` 6:k{;}tgfbd˜g Op`2+Os;D,c& {'oLa\C(`Os |geT$#!K4g it8.{d#v{Qmpd5YeW=VkcFlWؿ?s$xJ0 l?NFfGe"` %k6?%MvN)NB%0벅S&C'+qZAp,#0z9u Jx.YFD)7RKKOJJo>w>&Lo<,J2"u@yFɱpTQoy/<þxbɞWouIug0jZ )q YY;US8XgW˕=_xo(aKyXh`i&#~+4tLeDXqqBGE|m_ڝu )N;6~[D^;/#LИ| >\DŸM8Wu vrMSȦ M>j<-AH*GeTEf2νa$i,&WUm\ &r\7 2(Ka-z!d5 ](4SB,% T$TETzyn ,K Q_Rq'WQ&?q媣l 9V#:ZKebM.-h:MV䛹ÂSWCѹlɅV涔gF#a`H[Q-ԥ}Cnmf3D:1*s5&%0-)qFvE'+[gTډ`q1z[q@gv.񏃗U8:Csбk_dˤP8]ll.Æ*UGҧT\^%&:䉌zGeɁh?e:U}2PQk qHoV[l5I\n֥,V6`)rcEɑ#@L5`"7ZQvy1\)YDi[-sl* ODB;KHnY<(otJTd\!PJewZZ[H\fMUȓòDbǵA* eJ)IWS77ErR-k+zp\x5?L4_̯\6t_)jYLvI#͒w R KFs+-g ePeMi}+;dy4^+?@괃 I}sO>OjFBFQT$\_Ɛy,P^\y/Bo<~8^2^Ի &~YaG1+2~ǻz|8~2~LY/2S 4WqB|i~>Hzӟj .+%*˞5kkE {v**T|_V!th91W:\Dtciw_XREg0 Pخ{5tΗrmQTvC1wҀqj|D ڬߣp _fIʱ<]*]yv~L'^Lzz<_ʲ\FV9zScԳ4_IT4y|*c,DnЏ}v u鳊Sߎ}|o=}se3?V>@i=巎vpi Vc~́Ƒ8P̲$;?{+^42)MkI k$Dܖ28xΩg83eF 5 5魲Yl dRsv)H s):Z( 0&bPB@weW#A(*Rdr8cptY .Xɕ5 M&_reUl JZHvk{dQeS1!"܉6&eM\$}^8Z!U!kU5a#z_t e%a~<VR/<9S:('G7*V63)G\h,~7)5+rOp"UE%s-oSB.VRW8+#PݬP?[ fkei\֤0 $V)A.80?T֎^ȨBr8VZZ=<ھk^ "8c > j<< kp! :;bd|¦d=t\S$cn_aU+ם2199/j%F,e"Dt!GL U&V|8USU Jk p' oWx+h 4~L^~"yGJ-L+ucҗ%p7+ge)Pv%qÉZ0t6vnT!hJp3@$_$|k #*ծޙz"$˲KN+S%xk`V .:{b 9{.;*74L*U!?E\,)Љ_Ȍdu'YsaDԁW~O&r^bKׅ~' Ɲ\bJ$y/8Y`WI[u6oAYN -)3SݿP?ݭo8jFt mP9b3{NY9LoSvޏsxCzx/v4BտL< ;C+x}le nz8űa'2\_!DYn;c'6ZJ o݃ے>Ě^L<⊒64BĝG"fn<}/M#md][nVt%a9kF4\0v& NbptoBFYȜC:0L[yEnny*Bں[*>' 9˘!f<-A̤8Od^q%6} rzJ$>Of}9"s |MuҦ'$xP2{1P!Q{gKAAj{c8/4Y]q K!L g#Oj}r N1Q R5SSy?3an%,ʱ4q|Ճ^m%Z,$`3(Qyl՝U+;^k2'G{vaRhEOܹZe6bW,HdCUEcn˰fUG_5eS-P2bY.WI'E)WGyNR=2EWV1\sgs{=GĝJ;v3*nm T%]5ѐq@A*o*mb&G*<$p|6,?*{/TU1t2P.mLyQ"]q@UEJt$s0]3t˜4l/;~0Rȸ~ &q. dA"h # a &ύuFt2] ǚ]EisYf:B: i|+d:6NfaBػybۋh|te3%c. >ٱXTlMBN4USK;ȔyP(GX'zoN3N 'd[bBʌ`dU~PR(6`۱> SNƱ2浬iTdmb[R)Tر(}hΤVc8?O?"; ]48<);Uх@qquRɬ.[;|hЩTΘ>Bze3s=Uco!I$(S`EcL<M :TFx,Z5ΔxNYBͥ;CR^Eye52W+=T;?gew&vqcx#A6u0 4d<_دgd^SFX!y'64 7JRӥ!{&C;kwԸymz'$d3?a?.|߿e/?'x񾽸D mutLvjUU\BڶO)rJzWKDϩcHtO,<=t4Ի/ho,>k;Eje`H$~#J k$3:ч C\QOy2+upi$?ŻE}~bi ZnhBbݧ᭕#bW'h1۳9*+[H{v,NI#a۶$giT ȨHݹ( DeA8}Gޅ'|[dy$<G/Q.Xv 6ЕL W/EKHC6(ђ哬Z}$G\:vYzj,$r~"ƶ/nˆ,%'!gxUKx]j,:|IB2/ݏLؾb@WqOcbn9ȣ5ǒ|+lџBE'vՉPR7:BCzDPE[tO fڊJcݬi(a2:2?{~ax^cE􄃽r/"61-?_CϤI 2ObqQvf VEA8M&Fdd8,dXo 0,Iٕ#8AZY;'vn<.{" rڇߍVe/]Hbsdo=vF s "Hv.vf1*OC/)ˠK@tկ?BS7B-ẹp+~Ɂ{S/]Ջ~\y `=n2;s_|͡ΓjsHdmTJaz1?5oʺ+tlA\_"0+ 7@tsX>N_O+{9$ɠ^9 !Oĸ]}GYO~]D{GξX|-zy/TxE{A%m9D:Fy=Gk&D6|~%nB|C[tpb iV).zP9;XCWܜuÍl_`ͧ3F\05G< N.w-SoKd7vG&Qܺ}#*|K=YJ|sr^6j+8ޤ*OAX[ndwxͤf6J>ۛ_%e<*J v* gISw~kqKd5L+3z^OEש"W,ff Л.㌽4 uYþf͎+NHeUCFHjLV&9)mOS+wUf#i9ifK w=sj[SGatwagW~) L]d.DYeKny*థAn܉Zϰ)om@%Ndhx aUjv*%19PSjgT. q 1zGxkڵ-bgьFG1_>x8,e{-1ZkRvt2NLn*!"vGX*a·|g;0)Ȳ=R/m[mX>x|JyAڴBgei#LĜ]+,ra!iZϬ/'56dK:'+# P';FG;>W|fQ+,|vCkFAj1f]B3&CK|U+JCIk\lwj^,4k7:MW^=J!(b)k M"ì-ލx=&[5 RF[I(6K)Ҏ1K8WiF4 sM'W/*羭owD4BRɇ>T_[_dZdG3*؞$'Q̵YG~)|UέҰSaՉ<ގb89AY4Uo\&A1%V@鞔YR ܶd3')[V *n(u8'"1J3[v FCMi߅\{n=]|C_b)bQOw?P6>1cYYh^FI[5…aSFN]74ƝUW&H"R0dJxe;5k{.煰3jJN1hjN(>>9]%c;AT*}&2]W:2Z@P*Zs{a} {1hzefy:i čէ YJ"厮 ;,=RHb^,tO( J &ǧbl>u6;+LC6^v̻un'Da}¸L Ҵ9:ɽJMF5l b&2U}nn6?1V[idbG@_d+VJ@"2P'l9d9\UYm\!;h]_!"E^<{K3O#0JrCF#BIڕ%֦_'&`F[庱6 вv]pH>/ ]:[M~]ƒ`/[ϥ ʈY>58RZ[OgXJ#@B.+NP.:=کt +OZV^;j!slĴ~H0q/ "Iu}U4r ~uU~;*Ɩy xU>{l87֢v\d)!p"t-Wv%j{\^Vӡ&bNvhŽZ4]J$d40 e1{h`6&&xHV ><)\Zwzu21tIh$(RG2lph젳q?/{PRS'/u_cJfZՙLi_-V{>PTvɪ2Ņ|ig׎r]D0CyyQ T9+[ *(ʎn/wҠ6 F 0 =U(fQ1K]_6+^:j#[/`Z7峬,ZڀTz'r@F8O5G+mZ3!ZaWQ{йZAEpc=)X0Hlr7:vGe#S2:)aƘs2òj,,{EZ 匂dlo]Ӳ7'?7.ߧxMq269ǘYw[gP2ԃ&&oX]U=ÇএUA+Cs䩪h Ԓyh+#=qs65jgj7Ft-kSdZo)sb-E2b2YLkj8垱eXFIPcW՞iC:vn,쀗IJoYEOX֊%sAb3dw Emyr2ƍm+HȳK`1+wo:Į$._d 2LoGۺ˓{3#D8ek+ᓸxd:͝=yxmR's:\ywyb*UOuԬ;bua%GW,!;k1ۜ}|7\qBnf^QKTeKN Mw_kߨ"VuC14K1r1v|4\9N!ujb>𕲖K^L'H`UgمWUDc-Ύ*EҶ miyU5u`r(!|9]s 8nD_)2jĿ(2Ovo766E;Ky #=ҞK{yW(қPF5ivj'k[wtP8]1)[XU.]_IjƯ>saV%dxy)'fy.?he.g[o)^X8X{o\r*4x'^ƏřXRlNҶŝ:jۏ9gk춄qrwtq7ZJWռsV?[@Y0Nn ŝWmJ !Vo[xg LGϙ%}W1jw]#TY<1ZzM:Oz^/'?Wu|ier23L{ѳ C*tZ*m.;Hy1޶CVPKN;šBl򐓲&V䰮ZiVd@x. XfFy[5'Cd%UOJ;۟gϘs:N%## 4Z=Y`zRͷK EwuF^V%tVJĭ'Kq`G1~㆗:-!:kӻYxO ̌icJxA<MOyy{z2!j9Ӊs;i>Z1%;okf"?_ J1A9j3Q{ty$[̝cWwJYAyGI~#OPqbɉS#1c hjzcao&>B%M`U\ٟ$Hk`Tg]trihl{!˱;ǩu m෹.;N]Nб6s<{U9B$ H1.:ڹrӳ ~/6hQvOY|AQ_|a.DWzq9#8۽;7D9B#l^o(]׿L"Fǘ$0"b8/QYʋSF_)xslJH!:~?QnR7NL wtޑL9dj< `kop77ݯCcZ X Ad/\h8xC`SFq>⽧Jﳛv-nv˾WoC.Qq%}֙[TыyPEc0Fx흲9˾4j\lWgeMb[گ% L:@Ŭ ?7li, DNܴ)CH∻$$0,TCG!<LF&Hz>/ۆ[i)E:;"-hS:szҫo}y}ܹsgܹsx|gc38qc8ĈڐEQI*J[))AEEJ+R!JiKQ,DE,wsyϳ]ߵb.ߓ &$Y̗<]pJǤK/1o:BzDfc3ͼi۲S5ٜG nlɇu[$'Y7SϏU¡;:ZN.$~xS}wHH߳bt^5:g4LΔ;5aB?a&9NtW`,M(?-O1^SkL9MRcT0/{%K0N}*XwhSyzl-A}swWVd);P[$p/9Ԗk%-/(t wN]7\zδO7G=.5Q(K.4P]2y!TQUƘE#?떽ay}ZSI%}$jjM-5xz$񔸜bhO-J@KgfET4'I >\nz 9 v_{d;9^4#ͰᜅKMᕺW Ke;Xަ[_vw) >?+&"$\وoj.&kx{2YOǨ}< 9esɍ,eyLnW'8u@W1c:?w#4l vn`3!)kU#=+yGezB/;@H/\FAN;7u@;:;{f7w7@In}22Ï3X\tNwX gIJ\OFz\/Ay;b#!M?9>@ݰDk$ru|2fSy,"܅e嘧e3h%:gY$R.R*].pTO׃0P[.ʇƌ+#3 9bɾl}g9GM2B61`LXg?nP[saa%E96S%|4ou_ BkBq`BM/0 7D0P,7 ͂MWG;ƻOl^D%S^Uj*mRb ^hcɝ2%fbι^r*C$W X-a4R5bk5e&7Cвq^Goecluɺ 7UzCxmL'Gw5YDXY<' [M7G )wnL5qPY/r ~5s9$%Gm 8em$u7/+yYʰrR= L:wTRzbD잩y%X=PGtVE)sQ娋1a5mN=)a'uѡїeoSaV B:uWH$@6d]%;:d|!Ku+p9'M%  KB쫜@iXMF*ɍ'_#)r[ЙCu2@`C 7n6 ;w@9y +MmVLRĂ{E\ߎř}gY%P$\+*)טcj㛍|}xY+8i"暠P y. zE>6 ~ͶOĚ *'εl=qw\9=r}؈#&y J>@YZ2v$ B9|Ʊ4EWxpc']`T;9f9hT6+bCcIlbG<&iԕ 2B@В#!>\ Q *6e$lpדke*y!dkp~L. e2k9Hh*]K)F &XS!4 eqP 2ecT͂\D!Y.bʮvNN>.c#Ʌ\fĎ*SglS2\焱e"2. ʋ\ qi`=8^;L,R@t)V`$ %#-OWP#L%FU!c@?Yh<"RRB=!׾wWRq-%/\sSycI N|o4н!.S8=9W* ~/3ZW&[;ma<|C/*rYAKUͧ> cFG&Qqc?+( ؈Ch۴.|RFَ" +?(I"9!YǪxB $lT\Š᰼zRƜ0:1{3sI 15{Ƌ_?+QĻG_uR_%6񦵧!Щ eL FZk5?O:.׻DNUPټ7.rE"[7N}̴sapG6ssc 1szl‡Xϖ9T]&FRcfbXĻ87ƅM|;o{erIYqT顢5, JRvfiBh`v6D_FJO sMξҡ(O]ԭǢ͎m#aů]e>86jG]OdA@Z-<^/ RG6Lq"?(( !)1D֚oWDFlf(7+4s#%-2CJXo@LYFKe3qhAqD)o:Bd0~cnBiw7A^5B[ 7MqQ*• ]A7S1g(h Q+OţoF0a, 4?_6 Ā [}ãcÝY#]4HHpqR TC,S#5򟉻.j9/ȶ  A6ṀGPe?OḲQ(tA|q8蜁V!<*P5PX.SH%N&ߟK$8<F(H8TVat\LNO\o(`* H_U/W֍QTG+s.^)I q@gv#޲~Vҫ`AȌx0 xTH*B#Ha>m PS쬙d9?cG_*}vV[A:ߟQwrŅr&eMzm;@ZLdk ^71_U[`bzȰ$g Ĺ+`vF@-hv8g{H^P_O|F&ca}oT5Xj 7wcGs^ڽVx[ZlU8z'Ģ7Tm.jHFUrt*os5f"ȁrq7֊h[V2CEP{GHߡ`y7e>;& [c;UFis4FO` J#N@HFAxu̕HšWvU 5@bP(eg`V)ff[V[tx%k?|*67 q٤WVտ7z }fQ^+NͷVTNWCN ;,2ʥ\hE:^i kp^hr; 7qGt.Et+aMPwYð00 *ErjʄbM[ҪN|ZI<qϱo%3W5eq/D54moΨXڅݩJqf2֙?S5=BEB5I۵6c<ʳcun B2P:cBh'P q;Jݠ/U_BS(lb9L2>`KU!g$Db)O8 zpЦ@f#B=JYl6gN#?bB])/Co&fG,#ʭ%?q.FF/8}E=m+P[&JUMR͋QsEP10"袆ID'2ofbPk[2Ɠr.eV&9oQFvEȹ`z,\q؝bx k(G$yf%kWT6kĦ@bg]jTlFKZ!!ٻTmR"篖 $v.&tۯĮj}"?=R2t䲲bЏE-+H}ƣϛ:0c݌ $Ӄ"jaDq~2䢼1rlCx+,NC 89bmֲ_W%@Dob*(jŠ $ҳmԇ٧x,`Ic -e;ˠUzލl`LD&AKK<2 Vk\ H!H' \>#.qF1 ܫ*%4؃x le2)"r-J ;$vr t+Y-OIYgu+P1?*2 kbX߅T""!CD%O-mһ[ƫ))Q܃P SBe#אhәh*6 x!9OHu3ώg\@sI+w|vm'* Sqi6F5Mnd5ա'}+l&0˼_ E/ \yPY'v p7࿯ˌAPƟ_Qtjo<|pvѲ%삮tf`8S+L*uײf^PC'(s2{ ;*U9- exD-o$u=\\L3 !pi>j+dM=WT!9viښ[ĄNR=Wt(@)ceP$||HE͌=8QFbWZ)`d؆bw)V\3틪Xuynv_Otl: Kt¥ @LT"?'[%Wd٥])_D1X;Pqc=8,3)cp܉B%JGѱf cH49[_gv#iiYl.lC(Rs(9Ad~+jI+*n@)r@2A ^^-wY.;|@\[#)SY.1eI{2ދ/Nϊc!I-C.ųvQiF+j2_`qMS.xg1ANUf:wte6Co.wgǰOuƦo/{G"ƶUg,#9vO{gqƧJ-LD1,tZR'0A#lw1YSk$Hpvd!kP+DSDn!hETV,T3{f'"Foj\if; Q-Ԗ]xI)鞏<1m zJ g&r&Zbjg k2U-.q뻿+z^G?X=Tr{*)+*}caV6kcw5;ADi%HRf.[%E這FE5?ܣiU6ɂR_b_jlN6^ ie-0,xaP ~:h.GS=_RhɸGU 4HB2F< &glUޔӡĈFZ]]p jH&)fa0یIǒcrŰuu˰nxY*[hkAUY~~=\'CH,{rtDY ïn ȡ'_u_ft](k" %YK1mTe !#D.׎oAW=s ,r몑"ZkJYHmgZa=G a"˰x!#4v,U,b_Tu A%¿D-6 'lhX2δz+FQ)R+7O[ʀw2( q% 4*_+q!:yYA=xIVR+D`.)Fl]*Ga-Y_&imyYX;aP$ZS~tPД0L8d188{NA(:j=ΩnBƆR [aW]lR@UYJHL3K\9qh(*P[Y._ QaE1hmu!Ȱ+1cd4-vd8tԺZ-'&go_\^"p$Z)xw]?P\|.N3Rg%F$2&HQǑ6a*|{WʒxNh)T}*Jv .Rd*xl[R\4C"87Epertr?~jD\Ζ/cŒ;2IBnYyOA d~3+9{FoS׆j%HN[gnԫsrEʆ"_6x( }]u'JwRſi/ItxZ"2 Ӳ lӹ΅NgBׁ<7rg'uBpn}cm3hmTQ҇TgRnVW}ߣ}I%̳/53VYwWNJ ]3]gR= HשC6CRpN4ܧx_NP3O%7 7GRjy!(:d\2YnA暥ғprA$rac+8pyЩPP2I#̄.ORzWr M*Ϝ1MPjZm!c>(Cڃke6zqVSXpfYi;q%&6ņͺیe}XEkr.mJi,6Ee {n .ĩxscܣ_lV,AF̟LD@YH.W2L&V&=kCCeZjt~50LIMMA5z9{̿I_A1rM7Nke ZFS]zg"DN!Mؘp"ZcmP}, 84l]2Phޕ Z/SM!QPG\(6@ 5s~dg|yqٌzHA8ٓ\Z3[H,FJ* je` i"We#E}G\e~:F*RčdqN8Ωs_rH~P3M^%]ABcvRk=?3wx0EhL wǯ`D?vt\XMi}?)|z+HbdVҞ@eis3 @Y\/wx(=Wf1Y Nt퉱b}f*a ë=  "#d-#U$ɔ1AfB9ey&%:.)5o*4KrvR:lrR3pbt:R-cdS8zCxr?5e`Mw] IR|~\3*iԍz=+y (u R*Yׅa224ddR9r:OWбj;$+V˿ MasW{0KoS=yieRu01o?]s09 D;FLeHW˸2OPZ.ؓ"M]'ZVeA\]_}+2 < =pBNxiGߖΣ, 4(R, _?^ϕ;e0iAs{J=@dJZ$Z~jb{[ iLgM\ adKo̞;*o~=gϒFݰȆd/B\oyj;7zpRDѫRٙL :-t Ԛ3뇛co|E֌;C.Oums"=}il˘5wÜl0+&֤wiۖ*:h݄5ٴmM|_ٵ[vÕ,m'J:ZΰW҉W%jvsT3b6׿cMj6$i gIЈo~C26[GQֹ+We$nCT/wgk$F/u2>ˁBU8W(L;Mw˼ 5Lΐ@ZE!"27Qd{1h$U뗐e1C!3븯gKR6]c*2 p.WOecGw [zaG(3 Uu- ?+5_:Zp<%7D&PR_҈)7jc8x]2ˁZivĕ/""ݪ)3Ug_ŦXNe8#- /1!5YؤI"ߏ"9,VfI&j4%6U?5l, PPy\w4H9l;ayrL2{6L,fB5iTd9e\s*T ó#xİX̀:HW|ёgo:te`fLGoX)(sm{s1s1;͋5e[DW9kptV^{q%8]2kC k|gL.Tg"RS\xwB:TH uU޽J\Qm;)+NO`,׾lud,]^K5XSava-{>@9ږS{NVx; 呸,Zf}$هݪ|yoJ7{ۍt(s5Vc"S+z#mt0皲l5q 3lWg[.YYN9t^z@z̸<1><.BiKL{xPqrzhZߺᠹ3`a+ē_oSgQv]dƅ*)Kw\XQg ThӐY@3ǥ?K}8|H^Z/.{˪\-Vs$%gӦ4r2pTǦo(AJKt W/ NVSD}4I.+^"| %yweL3oTQ't29]猆niGx)Ӧ59z$5|,s z6eTFCZu[e0Bمq`\"$RU>0ǎR<߳|BFSfO4lӅH<*2pΉ t: ϵrge#_0{xd߅A𩵲oBr %}9jӟx-KAeUV3Y׶ʂݪLᜲvc?(eo JA͵L}J.U >Db9LGfI'StZyXd ~ mx8]V'ˈ²|;ƷhZP47wA?? "Iҩv2"w0Ppr=DQ!6TۏHyJD=Eh'lM4W V#q.bX|p|&9jDm#nwe2nG6~: 4 mt$km\pt䐧(㴴+QҖ $3|CDt3( #LB` ~@VAgDUIJѲL`{e"lhmE]qxY"5Bl06Y`gq?B@Xc(BBKL,a &ڸ]16a-ţ2p3.84I̕4g`&rk8P˿ʍ/Oᝬ37bw*?>S]M??Ļr< Ta&c+]sW40z<*L  '晴5`Ih:Nj&RZaا6<<압^3el;3^fBuy랎dSb=b[((&Z;\3VM؋U*Ȕ~ln 32 YF`Ojuƽhefkq=.5|eɕؕ 9::]-Ep_7/0+ɱ0Zd4!'ۈۺ5L<RckM¤Ip3|gltӇ#wod9vWjUq; ubV:j),20{YBuTe|Bv9 (m.y=3hG;[ʄ 3[ye[B%,s[j8uG օe` rȩL+s!d(KCkzՈm+@ؤXZ~G9qT ,YǶ,UXg BVq6kXe1bMbvD3Rgh;Xd^` } Zr;-v?.3`Uj梥^sg\%+[hm+B {-F90(43d@Ma)v2ħ)HP3 O$x={^ƏQ2W5x=0U0LZAѹmsJYk;SUr/gtk.Ldx!Gׅq}Zo# W6EfFvC-y[zn.ٰΛ#-HͲ[z` :uwbTH 3C ۘ':Qe.ӯHQw3.pG+2ALz=Z: Ӱpu7b٪"#Cd(TlcMCQc^d$֨" ܿM _j):3?p9t:X"(jf^[>J~[awP{'3Cѝ<Vmd+ lT_FW_y*KҕBKꖂ4rN$6fze.>W%LaM0.#)[?:/^W-lx$cp.3)3,Mi-cfu$s1/}`YuV`!o<0Y% ׽5'@ 1W`;ݎA39wNܭ&[rU%[zJxG7wN%]{t0Kr)Q w[DwvZdX̵y(Bs[8dƓhIJns$CWHAp~ iv+tbfv6 H5eVd|MMŧr1q$1#iSֻ$ iOخ75lϜ g f3qQH U2V^F,=CӤq2rd{vmvpr ^Zvr"EoO!mTnԙXmJP+~<ƗfB;8{45{1JE\(2ҋZʻk5J`gIȈo|=J[2Q|1N jbˌ8U9ŷ0*ɆS N*k V<,veN3i(=Ar54[( Wibw~C[wpWC ƒ)9S=^Z?z>cfZr,j]8ܺ(v#؀*Hq%֦;6}ދ%UTrpS`$x_W5' 2菑<3 *p%vg:sUTE]goL)3]ѐAsKc\wzyֿiޔZh{ Ͱ$3EaVeHB<Ғ-5Ɏj{)J;%ֈ@Qy]7(EGϖ|ڋdVݢjpaTc^(+f**A MشD఼yJLXNghc170LW6aP PFA|sBϫ? }z|?-S.Q&7CGq28NLQ|*]d[YHe] eS1M4T9d(I:2?c=qB6]ГtxZM|?U*35)3":H'sjp cx%E-2gYݹO8>' $[Pۆq]o^mfۑ7A`q#n#WFF~vlpF~$@`b2k#gEiU=RcTPlpc}n,zYCwK3F׺)`rSeҾhm52c|z9woa|UN+gʩwՖgyw *Fz؁C F.ﵥYB46UKl˻OTe>զcy#\)Cz YБN[TB~y?8m~߶e[m,4aȧ0pYV,U-șA_ lsN3`3U"(slXUϓȃpeu[Blь-ѷebx5?aZ1.2D<떐Jc~Ȯ;әdY2ڙ/+qI85YY !~.%'|4@i d:Hïm~<݀+jC sу)F4eēNK3/7bH/t]vW1=&tNĜEcBPxחclltw! :g*Rc櫯gPmY˩xtJ!jb<<M}МҴ\c=5JN*hbZE\+g&#091+zǙ+FtL: c♻:8 xmI$-/g$_!zGku=.GP:`NkQY,0V/CH1ܑބ̍med#$c:}p x/9ZGΚ&+7NFLt^r7Rv\.+t,$3R@v'% !XncoйLf. q5̕Y Ś*$녉1<?dR%6u%4^.?־`~)~YnNf!zeM]3IhTϮMk+?{kP7٢tQ~0I?G$|72+uW刢R!҄gS\ԑˀtts. 9y`՚v_DHo",g[NtK#cNw$ i׹Z3 ]}+]XӦ̞+u$$ׯvd2TP7!"2(T5"Wn}B2v˱']u?%;4QO'-k qϋ2gʛʝ2z'M boAj6-:u )"UɣbNKNx $ x/;gc 1X!aP+;%q (5yJzm1 wD V2P0iƀ{U jx3!(ڛAi_3;%ڒ'j%N>?=RgKD u!sD';T2K~򞐥5 ':MZm@Ҁ_sH*5n#RikS>`ؒ괣dj)9ggK{RIQAAw%k$'neOpTRRe=$TU34w1݃+M 7#δP^E3TYk2my1mj!KI(*ybR3AKȨnЎOB' qP1R3O(0gݒ"~O)m,EOA$"xT.ʘ<$=Qg"VᖸCM9F|aF-vޝYĻgeN~~,gp=(۱em_\qOz^Pcoٖ~jw i}Nh6ä`D}o<#W3-Ki@N=LEէ:H{É}:@ۊX$p4J߱{T)^^ڵ~[y$ȍase}.ܗ)\&E>_{wyJQ\z.0Mce7އT<'tM` s$#/l>xR[$2,=2+:˜SIsFJ Q]A@#>ox{TILptM_.cTt.<0=;$:_ϸP|}Y@aD:G[C%;=/rc|~"Ew}T$-ܭS?+(>srzUFSiJڦW?]f.w(Xc=XKt;]+u뎱$3Ri[~ʼnUEj0$6^9 'HK-w3S~,e%爈8$:t12W HYiK1 `!qMLx#$n]V<V['@xD/ٮioέƷ>eeK+4 Ub"WgXsYU62dAɠv""|8L|2g*\*۵Ƙ$ȴ7A[/Ujd0մ^lb[IKnŞsk V<%gHK|<]jf@)i4&aG%]ܙ=Q di'끩G66͠k w7g\\J3$`rpp˝l}t]`B L06>?|l#ٓ8]^)2C880,Rq ɵqA\ ''rULG$P؆_HѢ\ bsxc꩸ƉGU3uMN+fW(҉V(cdjWW~ǧʻFq BN%ؕͬWGmQ+"EVp,G.or#ېkfTJmrE?*tQL2nq=gT. XX+rj9OuނGw> k_U-6+ӟ;9W:%Fàkl|yYyǼIFxa;eEkU'Nj~P}`!ib2' 靗˯:ȼ迆6ka,{4X/kF0M@] rex<쟹Z$=>Q|yur!#.X|VZc'T"=ʿ,*nM.pvzvLpnjN0Q>M@eϷEhF탁uU,*c摖I{y.'Bܺ|u03v:V~ Ź@4la`E%Ntƨ # *Sڻ e`|Fy1^ _EZunDTJŭZbfˉ92>hmn<b fq6:a%Tno'u˜%*TeWQ k.M]fW݌we~46cBtf㛬mj}vR0 '0"c8:1hwTrFyJi'%IBn|"<2%)k˟OW dzsthKpS2؅أJU9ҵf{p~r󶦾U ;LYqZWN$3o⫔rI|fx{:{:Rǁ}+1l24 E*O(ﯨ+'j` Pç1 2x"ca\0Ӳ^m@ pHfT3IQE6yF.MwQ>?o۰tZ*Qaؗȟ$6#}. +sosAmé}j)j2Jؖ1p3] tSLU%zdr3eιĨE<&S֐^R17?WV2^P+J-vQJjN+ BFA1Bg`*Mzz ںk05YctK[DU9H|yUm+;e#"@W w3N)5h((ǻs0|Az*wLvĞִъiOg==J:XOY͊&Ud7uQ9aĵ!NoT4_CGeQ3rJA<)5tB~ShxRE`-RYVexL3zoQ몟I:@@-wHR&%dxXy>kԘ1o&ۧgcsrQIĨIap)XۡhsnКNaFF0{W<ΡWC)QJtش!on;zk;yH9,~,C 2F~;˺iŔhM*Ec4^Wޓٙ.Ns$NVLy3WSh/-kmsy$Ƈakcj;GŌR w6ωy2<^^-}wO+BV½ZgE6 8a.Le4fsYV NI߾QZ묣Sfxvֶ*l;jx&¤ڃT:p"ӂZP&싅?`ۺ)2U_!ds%G炓{a5Nv8;ލ_WpW$ B@09+P;}\7{6k'xJ)sc'xLHJBiisLJͩgy x.dds-d PIEg7l}{*RDe##WoV3>ks>n @ۤNeԪcyx& < x̒ ]ot~V`VGf+*-KF2O[^g؟'>x)4J̹_]Υ;޹s/02-DVӁ֕'8;+0`5cZj+S||S4e]8V2>зTyAz _ϡ<7'kuhrN*/aiEr#^C8 'g Ò+RC%4ye')oIѥR"/AYV̥&Bd.;r!LM=Hpq*7SϾ&2{8k-~I=!+1';TVdWڶfibuEM-N(%TKu/ Y^׮?8*|Sm|Y(=)"-G`/JIUSl1Sɓr6਎YtZ o2]g"P녃r_ ~݃t}eepSF⦃#9Yz*ȩ'%5MEyX(Ny!fWs"B]bvrL;ԔZ6e}3/Ǜ Y-f&ufG_kTJv֤lc J(w]8MQ, 쒪.Ȃsj_9=bqa13вa +FP([]//5TŮ)`KxCKOKI | ],]8:rG{E*;Ӥ{A'&(BWzDdbl=4\;7} B+#$ey| ,Zs{d+M|Ŗ)3X@BD@sA@$a t @0̖e/UΜto*㛰t;:++%d[mɐecAWyjY[ !g {j $=DEꪒ1=)jV+3=9fg)ZG_5~nt+^L.EM)q_ɰ/흵b]u"ifN8l%ײ"Tvp0^c$&ٷdmKTH~OȕU4#uOa0^;-] %G,*"㞈TeZLk龰EanoLZdŞʒQa~r}^B\pXɦfAzDEtf2W幍ˋ1cKΞa-FHbc0EYs$'V|j8 w8w9$N˜lr&+Wtq Vvi}vCL]};s򈵎TS~sr]Z! 3IH8%6ȳpk_[aV` jTN Mx\5s2V\6Pt3Νs5SOڗ,Uo9 ,TA{4W\{QYPp,Aw>m::3W56"p(KֻO_f8c,9oGlm&qwjBA.kq|Lg|_N҉S1<$!kOkMmd.MqXbIUq<Ć7({B\b\y宔rl5'p8AX!}gfiVOɥHTb/JN`dmTkdؐ5D[jy{)b_.rHʒhd}WK"7k=Aq[ug6:MD}KS C˓!kMlkj%,%΁h(Ǒ3p(3ׄDmgNSb뺶³UR:v-CT,9d4I4'AzQ=V;KP]'%Vʈ`v;7nY_-udrm1 '5j>YMhQB[m9puf߸~_3QZOΪ!/L%ixbLB%7wgV1B0dƆxIcUBYnx)ʤbԭ䲡$K.-fB3P0D7'j}XBJHê =S% 9>;!q!_ٍ#HNJ;uNZ RY%9!No M?ĺ¾N%,8,665vXiOV\Q)hP k޶dt0(,(4-Ө+IH2 jNpDԃ*OQ8ZL;{k gZHv;fa \5oOfiDvbB*ߘ83~3+mQL gc㭈-T(YT1RW!XYUFwJL.bS-?68|^ KۆBC1l2OfֳF8If"; =|I|d,4hk'fppj)̄]\B/))[o(xǻP8~X\uq%L !j&I2OrnFupvEVU1pF&|ϋ%n%P#U.Dkz'Kݙ]FejחVboJ^37>)X Z1dR4iFz[%1qDoOq妧ĨQ&ۀ2 ú5q1GsazƘs@JM| < ]:^yyD+tC)a|-#`,'HDqWHF󑲹cl͡P P81T "DhP:6qzqN.*@ӷDwqu t>՞FlVxCPdgCfҕ.PacO"AEݘE8*Fx.k.e&_a96mȎ;/EːX"b|6q'[w"4e:W 4__w-k3ؖgS;A;=6;dg1YERwl]m5ڻ U&`?CĬ mj85Xf*UP&E9X5M& zh)kTE~"Ɂz;/dJ5Z+M(?l]OEpl $(6"Q}Z '0tªkXO4k '% Na9%jLU]t+r!+qlU|ץpx#t<¾2>?g+@..G8thV-g&`8nzPs:[Ƀx[NS%qըc g(r͓zưЇE+a~gHZh;#㲠{2&S]D&XE8|λwEfՕH*H5}T#:{*H?Jee =*ҙEULorL5-I g@go-ȼ ?v͒{\a(|27T_  We)lobұ\87Kb5I5cV.io\DH@bL[b)([A`¡f03>Qb@\O=ň{6T΃!.{u}ޝBI FY.ۻumJtjƆ\YW4AޛV6NKu6>Lzd1=tMq{H"odHino/nl0YsE+Nk CR)?Љ:$M\UXC9)vWTXh5f#ZeuƙO̠eG=mJXO-E =BќGs[s\1lfF,G8@8D^c $axǿFѠ¿yINyac5^ɚ<7 UVr\$,BC 15 *,bㆯyO +5HDx-b v eGvoI*F#|#aӅ2?* Z~ÍHnR:L`Rǘs0uk\yc<ʻhPgjP&06q윹8+SVL){S >w\LAEi= DKSzvrvu+J(Ȃ)+:f (fi}XOf^jf10qKG7 Z H!&;{EWzxh<,8vMCj(LP2>t}ľdl; S T`~:Cp`]k廉c$J`@T2hC~zFE_9dn9}$ܷ@\N7syǭ3֦ uoH?9wK_'1 koq0|1"@#g5aw;4*Deh:'IfkuG3.HРjc`5~x',#A3<3-Qjp b>J$M)yH:\)߳O03]kM)8`z)~ǃq,Fv30NjWaqēW%]T$F E[1ԣXTժZ erKJz 0VVɈŢ);8a:EfxWT{U]=PK _?V#߫qJ|(ɠآh;)YqSϷv8-PqKhkFd$IVXqZS?Lz?8{ʕ'&U&ByP1g"2f$* `fWeOrֱBoPomB~&AqdE-trQR- _%MS*5<ʼnƒ _Vc))hW9 Ǔ/%fdbP3Ӝg D#}$NZOѲbB*қ&dTʚ(q剌Jp3T&e!{hvk ̒ӱt΄Jgw;#1Ry".;j'n֧q*`a"mÚ{t5¤%9F0Z)"6u_o!>.mx31KݮT8Y^;|KWe峤ڼU)nG3Vr+DYfgtw .$!k(l֬v|ݠ{!8ޣ=鼻Z~UYpQnj R8$SU=P2q zr H{W^kZb2@ pI_!1Ÿr &Xat cp8޳d8$R|['{9s2 _6/_rQ`p?MIl cWZP}R\7]on}vabE)99;$}w{Gewwg]…|\w[LnRL^;[Yb+(̄cq=slzN9[o_jC7>t_5'fMd"e*ٹ DM4E. g_rOTt-m1C2A3q_H2=Q "˜Q:Q%8 M|f`<ݝP Oݬ 7{zé_=uk#6QPu6;7irZKО4ɧ>)K{$fͭsD5冀q|`~Wdg;v^ncd}y8wuJ}ꔖ0^IzmVt`1o [e>s2ok$n5A!4"- ,GCǫSM%S!kBNjmq_/1K GKGW/c{ nMƛxlk@O!R␁s8b]2q_.YjoQ˦8s6@'O]H(d(1zFJ)| qAW&kL0zF9:w s7͍w\hd>kf]_+iw`Օ69G:y#-6jLTHAAPݡ;ޗyA5skyCЫy )v2c}HyчR5ͼtVsҥVzIuzAX6˄㲔hĕmskRF繓; | L[08dkәDc*9Kc=WP`9{k7:GhW=ڏ(5]tƦM&;:A4ܸ͍_eٺʰC |r4 b\뛆r$ؤ[%/pp:v}M PPtO{#3BP C,b&1% P˴avWػr߆b[Q&$9X[TӴf$RY{Ko:,AGӖKkq'-l d3k}Mnf;jw9 ِO.[yR z6ruܭͺsxmf$p oU*s,9aHCG&Ń5&]\Wc_U8|v+Lo;xbF\EP/H EȠiOtz-Zs׀/l7aRﺮegM07ʘGÚFyP傖k6qBg"$ik5%5ATڐ)( 'N-5:IFo|^ -0;~L̥fMG3<̟\/`GZܮ YOZNnAyFdHydm{H18cw1-F:- |;^t0H w =[*sÖ } a e!8ўkȭ{fʪ7q 6IDmpdR2 ou.lmj dd#5ڛjw锷i9CX{wB53;pSkk츩NġΛtYjs%!$д]A]nx&A9vle?Cf֍t$+v0ga)L ~ Qg?A53Fz$9։Ù)τ`yw$~Y8B[LyM #>%OGV7_u6[v䷽FO7` qvs7F奚dEG|SkNh5nXtWD00X=rbІqSSxPU&z3@Y"~B r|WƋEDk|+0gxjЧHQ?"&X -h+iú2hYLrK ]1ڱռꞜ߄bmg&L4H2c븚MlsY (:(=:@gHEC sh/^, 1|vZ oK"P[_"K#yvXPnξnjږ:7Z:B{JgGWn\D{nϋ㒗K,BK Cn n9sTh-eB%3;:sI$V]#kB 7r7Z bŎ}"|oYֻ㚛};"?Yjm\"g$z ~~(^IPB=`T< N`GE^: o\= ;l=nh4!l4]tb uLbۆ&[bVϥz"B}p:#m2CT:`%YXz튤; *O\_LN6AwPk:,p[ܨ;É'X&xtEcdC |io,=!9Q_Z&s<g+E;wHOLi=MXSKݔsB] ba,=8G2/a$k~ ]R۠.53.@cwA妘rQuLZO#  pnd\J;elR {Q[P"+I)'}jcՐH|^vS 8G^9W8]rTx8joD6 Xh3LCpVl,#OCJcN4aoʔ{md? PdJAw4}kCʀSϪ8u`a$8vRQ&EPXO6VSYP2maT*vsqQG2u0-+rs\R;wͨ(~J=D5#Y=9Ӷ2uC|vպ+)h6euZ)=xZ:¶ 7?{`+?bzsS1GhVFozW?ScdvƎ0N鳡(p@_p0ve}$֩(0^igtHOTtv0'泶znvHl^-ᔥ(ƯvyMcʮ %S]b}F%@۪6sa[=~6T,ٯnW!Q4uOWOiǾP)\u7k9{sى%fQ+ƫ>[b'+֜ 66ǹ=M:86g#l{R`z @͂.%@zOzg7U*j! \JxXV&bQM|G=+r~sSL퐚 myx bfBcLiJƀ9k]f\6x}.֘G2Gɤ.Jwi4( iU)˫vB~k\wÒtQ/BvG'ˤk~x *7㬶H*5k;%iNś+X%?>GrrLA]Mm/L Ż|yE=l 6qV zg9up|HUNSO;JN!@%.jEg(Ѕ+t9-HM?pBI8+g(8eR^owAAAn¦ H&LqS¦,|L4Eg_cj^6cWp擺>e#0o.c rWwՋTmh=wJ=v*trR}';w%Kf!jRC5}T2#3PV? ȗ*Hf:u7͇kޱ jaB융"?(ÏfA̲ኼ:8 Tn#Ζt$LJX:U =MRc'S߬b<:PT1A%Ie1(͔!qpJum1d.mϰu4C@:/<40,}W}JbOܮ2%IZ"L-wehÚ /z:ak^=1@cc-d!Q4e dgլ<bo:B`rz@i$3!?.ˑ8ueziZߙ3و[,YG\tEûl(lV؊)PSA$f/å=7}v-<|ÛkrXcK<~aP }Y6P@GV7/]Opyo?D%7q5cF77yThW*g/"o"c19=IJ^G=xE)py"/;S@,w]Z%3,ϕq?F1giȾqUϮz!~*6ǻneGk!|t:nzY&Oud #DݛӇXH1fY2l%~TҦ /࠻`eJ}XtZkIڑ  :mE .A0%1q,ClP]ȶдl4ur#tJ(v diq9i9l:VAm6+rD֚ӓ7=\bp P a? t֫ʂ!u`ųy'Sn*AAwkOS 2<$1ɤsKd.P:ApAgx/\^*yFӺo*Im84>R1߲:q89Oo{jLSule\kn?qV9߳~*ZBM7k{M, 6 Ԟ?ϫLldyV2OF;#r1c\߶oV8Un^443ejܖ4tCxfn)qՐӒNDƊ؍ ys5LV%`y_& 75Ԭ S7~t{>/vD h9]d>!jUQ'/]^YB_ +m5>e¸WO5Y!].R}@=4ƶ} Գ4^b56~%<)IQegT$6urav‚1:W"y u"% }dw~r,me=%<=1VBv qp?:!?gqvY!~{f[4{[\N a b5©lȌk'ܶPo ES\e6+z|p_Dv VTSIa.LaլU`Y|؛[f)oLfkmWqĹqjtxagp8 CEIC\`,M^&C'!c + ŶG:'X U 3RHcK5K}  zhh$),J0cwK1u*kk-%8c`J9+:+F5 'Ǡ:) 'ɒL0)m{@&~K\a~)5C) 9{D_wũZN M" Ç=%S?'499iiL83@@@bq)1$/ot۟k~>[iVVgE_bHHSb(g6i8P3%"J@줢8ht%fiS0!.RٛkgLqtTDW-67O7c =Ͷf쓐LLʴC(Ęl6\WXB\1Iܓ]`H|yl p7wuiscT_fM.4*d]g%  sg\B+ǖv@o?W gc-l۫iBEueĸB& ߱O0xUN\y`)H_{ N^ψ9W$ctn!zvT3c=b3AI]e]AxGAG!=r:21aMၰ7b\%Ԁ)i 4%8׾JM*R#,fK 1ΰ©Y׊N f>6M\y!U!5[}NJwb;fb[x;F:Up  )ؐig}]h7'Gd[̊L7Zzc2 o2mo>㩬xƯISA&~! +bK b<-A6j)%#Iw#~>Tj-|ZHV oV;ʷn$q[Aо?3E4hm7԰KE3\[z:/vRs%M=J dlBL`I90VկRȆ'J&nŒ9Q,FH#?v CW1H12.IB?ϼou1K0:؇jA>oC|H:j' 58MVp ',ễ47ΞN!{g=}]`SK ]aWZړ ݓ$k@u.(iC!MMOPTÆ'  g{/jmrax[2|Ayp5ϙۮ̈J5]$Zd$)o,ZT C_"a";i|E'k1f:凲CR;Œ> epF\ydۉ$lU6NeEO|dX#UuP3kr.)bN`A/`k30f-eݐ(/䗺@$ĩN8y3ՉJ(7LЕ<&=:U@١s%F΍ 4\I^|=#!y$\m!uLAƄkrc`(mXc@hD &wzM>x(8 d܌z_vg\=\Ic2j}c.g \^2P9&5Cj.giRUVc*usZb%3 PsC ssy)l{g-&p \&֨C8:pY =((ku&0P6%ʉm_A~nb,/;tFY8 u&X|v.s*; Sդ0S;tSՒRU+9Gi L)_D ؤMq.Za3BR+VE^qKs`2PL7(J:;zGQH{]/3U;u.!o fusLOSyn),)@/5\ S|~Mxm eQh"ElLMUFLK4;B$cpٞn*~J d&GITL@f/"݂"U7\qv$BKz*'ї#$M3ں?tZ!97_+yAkzJ-j݁t553^֔)^tV'2M"/D΋|k':H`OEcSLLPRCqiqt>07)f=CчŽb=zJN  aZ|쩰D\W[덻F ܸ_Gf8fQlP_|%x;2c\fX˙yG# :#yD0'W9LKGhDQIu%`iD!?k0bQb>;ЁDqV$آs:T-/,=(ooE*7,{Pn34njQnTU\9 Lˤ]<(ƂLsǝáX%-<|TGB#l1$"1tn$wn=ƹxTA6B9qz!\as0Z.BPe}sesg24\<)qJV*L\ԋ$֙ d(.+z y?6bIcBfƙ;< eq&Pn=v6LE&8Gz%EK3Gw;GE{@&EكX}O3z3zdZh76Ȝz=ۓA=̉%3{TBMKz+ˏ3ӦOᨆ7/F [5cXt@b֗aSh1od W?koxѹR6U=tGWh|\#sG[cNy_v%FFxq.´a}e(!-fVPA?w~L*o֞$;2e(M#P~\X֝rYLo$eFDn]5c9O>ѲaC/jElc{88@u;TKRcd'ix/U;w3F]OVNh-Cqn`ɯ%?.I8ImigVKt͊M]cG *3TqQS)+y ߏ摮{'}>,VIH\~#~x1?2X" {p]blo>(ۺb3[jH &"Дt6Z 5ȏnҕ=2 xKdeŁu2V^\"409(O3Uqk". Z[*cc]q=\ ؙ+1N#vqz_{P^zEkh($h$zLY[CBнase7 c)i '~L 琾A9i2A0&a掬֥R!Zd? 6u55,cq#wǿR|b~UKdbi"3Q;%0ZPWJ2K9[w_PMlz &Nd{ʩoYy]/D.:҂M7hV;h/0`|LE$`nK,`ɸ+3CˇT휖/chl /wۀgcj۝9>fķX)CDbf5O/x: y|Byɱƾ9*a~w]AD+TA嚵@̒!~<äv Q|-(õ]@ev\0$+%J $K}.Ei9:l lj!{=QΑya*w9%t` 664A?mijA 5_o8#Dp43YhP"5=W(I~Uq!69RL1qr"q!>V _feZVZļZϞfD1#{B>KqA{<\,6x?Mf 6k\IY` cCI,?;[ ]q<;,S] w+r`;L3_31'@MXLoi@9:T >4¨ eF5 9jցS[%4 ĻS&9!Ic9F">iH,o59ICMKuJn ƊI }`Fv/6 =#;w#ܗŸ=}R!0*I0:fD`uQ(hkr) {^>D+|6ldzFgjSVx+z ;d 12E#bˇ?0x&5nv5[aoCdrVf_2*ξ&̐a&`m蛺vdcYX]!V,&{|Dl6%3pUOI&4iN-uC$sWOo;j7{R=Q2"N+`8S2ִ!y )SADK3UlYM+WzviCx/1 @6]?R\S]^{=Jlw"'sr/o/^<'}5Ʊ丼Ŧsӿzs8iFu.qG# fZcmá6Z[P2ѝSO}vXPg/s57{Z;{q[L7`!&ќn|Hf-m}O-'a!5q34ej^ 2 9I$/z've%f_~˦!~bTrԶK39I,LGļW;'YTV9鵫;s?دz5rSn` @*=V߮ ϭ5 TxUz(1&1t!p}2YeMS2` ߆)uf!Ktk(4$$ta% uYO{ @2nܓT3.џ%`{J |^g+1P[yn \o|/w\ʀtiSi$E3"r(zgX4K}cXBpڔ+A#L,YE/$Ρ~y>)1זnO{h}2>J"XS[P+sBw. o xy.PLR6d×CYN=M)Vħ o3SkRHellS:4{ήodʬlo~x fߓzuuV8VdH}-WTLڕx¸ ujҼV*-:74fMO5`!~J_1fG2Hf >LXp'f23֎=_ذ >{J6 80(KbF E [ Ou&Tqu ܕxIn.B j҉?ߐ:u{5L'|ii aEmSxG/"BÚb~3N,I߾7K6@d+UDP@Ǖm\X5A!S dEϊBU׷t2AvVBFKܓrzY\ %X?T`l ƿ?%GƭmhsVն\Mv Fγke;Q5&GH $ Hޭ.FǩT{%)/?3iWDpXFOʗ$ gyvoFoE|QOꗃ+:2Z+_Mݿ'0lkz2zWW9̉=Q=ѥ.GUN/u;}wu=wk|Gx͝WvA,jZ'0̃Lhzs5Y{%.휅Nwd"rمN,gĘabDٜ5ͦ^&:\|O)u+ӟd2 憑kzYP\quZPӶ5䋢;sW0c3Z Va(U0W& BRQ4Oj{dI|" CW`!Oʇtb9 u1F=Zi}ʄ%L↯=,i犍1j)bhȠu8b4SˁN$+Jr ^[bwǗH1,%X HLwf= ڶXEMu^`e Y^׍V-DսuܨM5-沠:LgZ72Cم)Pm.V]RkH5Pk;#l{rK1Wէ_B",q].<?sf̓*/p%Os~^0: :_O9(׍pG=K]]+!f3\=={{ωC{ݪ1HՌ4T^P<'%R7ԛ?wx!4Lk5'm -ѯBKeQe&YX/BhYGM1\qNSskwXV8]3;HtBz_+_7v3n["C\Z](y5=%$ӤjuLX)=jݬja8sӛv!GزС n:!-C`8z:: ܵZ5ټtR?0's_辘r0q(snX5${w’0qz}> !jEZvȚ*8Zty](찓H_Xc }u4< 2hP_n5pO[/L0DHyq"B$IkN G$gIyDrrk_*R}$`g{=M\lw-3/Hp7*Ry5J4 !՟an+ YɎCv[R;(0$QLiLCuTQ&W͸N搳HG #}dc^+У/098/Gf]NdSe߂(pD*S^6sYc{ω\{*,sjpޭ4g,$U@VO)ňs`T3"7WiPDo:q5{Y]R%=6MvnN&wn۽2mFڸ$y"o Es=\lĆ2}QsbOqcg,%"V"h F`+"@F`sS#u&|Sϝ JЀhuJlBس)"?5)LjR̶ ]J~ZϕhaH֗l^wH[XfGKeֳ.-:o:=Ҋ|d|y fPHA?Q!{#>[kI]]E\1O9R ްZȥjRTE~wL pZAeT09d5~Li!QN44%rmI 8S̋) 7g%c92F0X;OvWt KMNݦ\OOR:1 G?VڂM%{zI: 9mqs%r}ep=wKC@;e_g5g3[̌[ dޣ&dkTxV߈73ɋT§5T:U΍zXWf;p?GwV84[cT4 ;v V Zϖ,.٨Y\- u[Z7wF~## 6򽼓_685r93sy`\$gPrFJ34UGrHiסfSxGzJ_T&H#F4:(灂S6g{uLd:ɿIrjK͢uaͪNj˶VFTBv3O\\4Pa.Wܼq:|X)" }xf58zx"FkJXk͊JNtjP\'Ӑk˹\Y߫;1gUܜhdmeH[ِ7 U_PnHڡXIŻyBj(1מeia?^GOHBKW y+HbQvI,έܑsSѸW#[Yz\}oMEj옽YWIuCtTgK)ESe/tMM+ `GVuMVw >Pog@ϪynyuCY-ݵ C8ِ#`意<,fyVs{u7fI51:UON Tq<Ș4\DZܮ30'qUk, ;ژ[334کsLʵ)HsCZb]& ۩ u%$C7:+2X`]ԩ^B_ ;1f.|Jojb.I=;uӵ:.LuYKڐK8R޾.?-ݞ #duƼw";)8ڃ:Кxw53z= s !Q"vhY:qu.J\ !΄фq-;#Ǎ̲)Ȓ*=>9hGPvc¿{Ru MnAlvG5SeNohA䠾9J֓l I>PPT}l)L24ޒe, "lljEG%yJS)=IDϠ I/g'j}ҜQ-KM* 92FMTJ>O\ط;_fÉY }zC0MBqGŪRὡQl@׆J۠iSJ&7DEӶ~pu֎{wrrra:#VZJ82)In'K]+¸׳d;G Y'TF~_dz79OzgT88{,i_)"=U9u;>yC5X}䞆Lm_0{H#nbgRulmן uڱǺ<*)HkU82S1ѧn:KkW*j!^ϑYR`(h`/j.Մop yXkrcQh#®Y&ӌb+9up7A&kgh: 1._/0E^&V/K06jv'gĈFN ?ξ&ǚ4@2Q}#$}߇ʃBl (mQ1& oC_j|49gyc`f:})&NE:,4+;D,c"DXG+#@̶PQn!V5ȑ3o됴loHflLםZM4orbױܢނu/ F9+f!75(즥ӭJKGwgvSW7HM|鱝qMj]YdYq~##BL< Th%M(=}8Rjqs)* 5u פwM2ì=^&:@rقgҞD 6 q HO,&/͟i`x%vp ߈+YMV^0U){):g]AXF@Vߗ]!gHE!T4x_4CdoH0C^0@zׁ ^Xc}[X'6 ;2P[ iCf> )QhaŒs>?& 2ڍd-_u,@&{2g?-lʀ-.i Z,6n6a 2 -fJ6hxGO3Y%۟W4:}{1j9bۓ@K(f,Z( {8qm5Ȼ`W{NRX gC9,D:ܚ"g ; ST{8>g)DԑjЅXu7A~gÚ SS&N&%ٓDr\[@!1vzw4c6h2Lα Pc$hnYs @Jevљil?o[ŴؽL(^q7&7#hΞz`[Ӫ>w~ߜs9\^{׾w M6r !C*QG@4(5Q#,'eErL,C!^g.;qc5)z"hXT{hz I+K0{9ܨR99xkZm>L˃vBKٿ ?~^\+c[1b@֝(#Fx9eq/BnzZ-HzL p WM\i)}SX *G†&fw A흫πsVKjE>-#Qn9Gk_Bq9I2&v$U"'w.f&}\Me% Je߭}3l1[Ʒ|P)RCa'5e:RSψfʊQ0txYͿa sE$ݹMatX,`iG=tT. }01$JON]RJ臫t蚼 "rx9%H=$TB/eZa드x݉uBXRf*2[7G}!=_Qx|ZUTse`x&i23O?,Q bp[)9g9/3ʙT!A=N0~]uj {*x(eIxR v|91#Wr-1M'cg܊+;~C]s=n HN-xe4Ԓڎ3z9#oT[E*դ9zojX[J8 7_M)-=s*ԙ`],LӻS ˴a=A*2㼐2gF;IP MV(SKD,髯|p6 (!h[dC9W9J cxTvDLcBs'D-JO  h-vFF>wjv8TvM{ȡ/C*|[}O]rwel:9yxMT1;slA u~OӬ zq[]R/dW䤕'F4Cʙҵ&TK9i*A|Q5ګ+;Oj WbH9E7.JŋB>yvR_0KsvB˵C=k[i^+-qI(VņقX0U S 󉡑f(I"}RkSQ"lqɦfWa3ii49?n[ڗZݽD69khѱ>x_@N1qa_j"0T7˘ޑ}x {YOm3~u}sA:u`ɌsaSַBmD=0:"Unt;JTCqꐖ6&O~Ndv|;h}D 7DvAHfF}k;\x\[Zpϑ:CFXo5Gh!`)30  مi^Bg1 8Zq$eFԅC4=/>5qJ/ dfjP'%k)':VsJU!;j36o\$KbR$!$-i\Bl\Oz\\f?Asd8S~r5Z*LjK%-AFV;39{$8<[18PAfJ|rTKiXqƊw7 a,jD1>V5<1':oH8G#LlL%8ZKR8s%?\T=Oɨɼ*xY癨*kS5loǽ@GpSkbdO$[ N{NJn$bFRyf!t' r ,q-.;戢XG`m_K:ϼhu0b\4+Lmt?yG^^L3̞qIJ =u:>P ^S+rg,ϣ)뒓?i P^ӓ!eh~u|BeXoxO.{ ݩN >h/e<=#1R`; zGG;ɰ񷔃 iN9UDbpC8#A{zQD$EfKԊ|)⩖L\d,LeU\ۛ˕cgű-{}}ٔabIl!sC)8Z@ĺzc!*G:鶰qj}I`*/pq-~j8Ene'0ceXNw?+|#iO,.Q[4!(~ނ"//x!4AoխjA.FRGAR''$~㖏Sܪ]r>w~pvTqF$޶5e{ $ fNټuYOuHdl#eU<=J[!$UpRx&h8v4=EzuOC=ϕ[vJxQ9T6滚_FkXK[~ ڱi; &r' o&cX͝p`a`p?l{bèI ́DUB.vLwT߼'hؘ50bD=;?!(=#nTyg!&Ob,$){V^!@N{LyxEm7꩘Ԧ܏j^8–\LWZ 14ϊ)R#Am/Ԛ\pz4>YiܣXC$͋؁o: `1 fOtnSo8Ub(X2Z#3uIM͏TN9@z뾸XJ>~M?o1ؖY&<4D (AMqe,T[!S2ì';~GӬ5Qix}"eO>z ۫8@.Gʞ)-1dFV4DmUXufP|UI[+)s@'CLG:6#+@V=`,JIm4(Ԙÿ-t4w,3;ϕ$JLxjHqgˁik28TsNLVω4b@n6sQED(yX։*Ǝ4w&z8@ߣs%ru6ۛn`j 'ߑϖQuG:nӉ;H\}&7رܮV\V,r.ܐ']o zpCÛ2*eM >܆!j}[WBbKN"*S^Q" pYEfmE/GlS2M-V:ޙZ0*>yA!QeJ,1D^ChH4'Q(L{d8gcwvl9twwLYݿ3 &rj(2rS,d_X,z%ټ lzX^SF8|2ؤ\ClWxaދ=4sXs0z]Lyvį<;VX8[bOQX*Y\?M/b(LI1_BAȽq.@-\Y}QTu`Fd͸')DmDF1hbH[6?߄ 2 k+^ÀjzqC~kOnMހkbCbk$7˸ף0`=W?˲Z}"aM%R% 4 bؙ7~0^|f(.&'_b-s145%Gc^^-s{bGmxQE$ c_]@uwϱDox9`)&j :&Qϰ0Xx`,SY( rz~Wv)(oZwv%Ξ]-*'$rI7ODjhipd6&ú/nE‹|CuRYЫeXUN6IXϏdQd 0NڗkW݄ːis9E-?|}Ek6i''6c+c8aICOGT8Ip>X3Z_19&g9wehhUv]]1֩@ ğ±)-gےF ϩ_*|N;>MEyFny葅R7I31]`0ܫlB@J'xS3^+k;/I^2)x[Fnբpޗ]!YڕχP˵QPL?Wz1VM%˚ӆZaXtHEQ6<fm fܻPNq$Hs pvw|= `Z "3w7oomrlj@"-)M{jj wKS0LJ3_#/qG{3AqoYl=& !K%6W- bivNWej (ӂ}VW-yN䧳n/hz{ު$澺 ɜAN$MҠmp!&k;ۨV ޡ܂j0mD|%Fw&꣇Bu?m  f&;CM+;(YY Ѝ[,J-uMTb]쾁lh' `|B0q|c۹ \5 @N5ԍ%1n3XD(5NWL̤(:пf7oJ$Ů- QkqPwX={L/_3ZJ-LW'=˩Ztj9䎶Ct}TkݣȒ {YRn#I$5Y5-O B0K(?J޳8X沺jIYdk;/&u% hʓ': Es-NZf2yUݧ15n vHM|\maQR%;+vW\&<=YSѸǠU~tQL6M!ү䏣Z1@g[ ݉Ak2۶Qb1iPxDdp6nBxc*uww$RF6E C=ھ;'wϦ] q6QGBnc*J`&b* ۞u3lAIQ{"=vIʗOű1V`'Sc\{A9OoXINWRG  DSq/5rȊ]KN=|߲7ɓρ\F:U{, ksϤ7Pи5OFnWߌdAgQCotwŧ_ 1W!KlF/U-elz;>&z9/'EÊ&D^p^bc$daXPs@ZY7] N;~!.ǿ/z)q5!!m,XFq<]H:lDýzrxk1wxP'ٸ4q/}r."`^'Y8,i{ԈJ|N ֍7z b _W bw~x{Egrj%]_zQsR#a5ݸmz UEP =5ScTcyz9 &u}]UTdZ|jϾXC qjV,o`aw>,xK4;{R"vĈX Mo:ԑYh ŗѐ"QYff:ԧw\؈ѕp&7>q'\K{Ř ; E(Zc(~r~Dń1EA4^VN e/CZwZ0k(* řǫCE^m% n =#$!t `2%XcMc "(3_M .+SLk^'utm`@ ùy2cz7 |(J?lEי)2g_ G{_90뀼o/}?\ǹ'*t޿5[,IFeXRӌc,Yh0}#*_&P  cBn^,,#M{j Z|?|z^pWOwaYJ j7ߔtvp7P4 ;d V *n"XcOKP=Ҹmm tݷkEMce{-rM|⒘F;lLǚwtrjq(%K/|5>)Y H}/(^֋?' E`gI^#geꔀ\Г ?՘[xurtFˇSHec<<0g$~Oʽ F)'fIz-=g%Z ҀKbNWoΆEa[Y7#.N!{4 =ftM/5De2^xmc3% LT6P92VWN@]^j&{ϕk(㙅@ T=<4OАupZ6Jr;?smfm8PN 3⯟54Za9kDw , bYJB}EVvq(Յws9 4+)":o*/.DA8""FK8O&0<C{&Q`@8jChCΡEl !LǒgWD4R泴v P&EwK;GNW#f@ҙ왳Q}n\ 2H$27tx2+3L ZgZf` uigd fLs'iSǛbnmGx'iyh4rF;D%P=#z~1eYvh˃Ä'Yc>үvW<VXqj,xЖur 47c>& vl(?(QI<%N ז8mrL߼7^H+ƉA{Ϗoigԉ" p;%]7{VŒ~[qr3LҐwKs ڭem_ϊg pXHފZ Z%u~)^Raު3]'غ{Pk1L ymjO ׼!|&*k^PzYQ  4ZN(Qe^؁_{n5P`u4.J+^3X` 8878ci>rd纫G<8ש^(Y7B, J@ /h6BFRp~a':S1<y{SfG$Fi?ܟpڒH`^޺|)&skZER3k"f%+t C dGvJíh](j҃c(ch'"h2Y׸dFtg>"NՁNW/M|t+G(dvُVW(4*:fP3J{N %Kr i O@9#wMWf(NGΙ*h;<9>.2Ԭ=!i.Croځ'" JбKnKQOWIʡ<Ƈ!p^k%RYE(| dAcމ{]R\a:kFDڶ5i4hw(*N^utmqesO %3 BHI6f[K9Y,wkIF&*WJ_uU#9оV 7dԠ!;QI' 'O_d]:d.=b !3M]!֔;4lA=/ȸcϮrƻX&4=-rRwL6zwWƴA il-춴^1g(.p!{eQί0wM@׹@x7x&Ş׿dCˠշ+YzgW c! |9fVؘ֫&gJd H<'!94EBθ{@w W257t~}Q67=e h&|fXo_;ݒUV5|0|-$@ "/yK h1;t7h0F=S @O>03VDSHMqkĕsƨbS`,-"Vܰ%%+WPM4~W)hMMM]ͽ2QBh-P٤@= r&iv⨖F6gPESʀG;TKgp P)T0{F}Tyg<ʹT?ƱM|WSxi{ۖ+ۋWZ.%thr&~0>: - Ktdpsf9@j*:Oҏ9d  3ʩ9j2[ l+d{&'s̈́d̒n%~T/Q1bZG(*Wʃb 70p7@&=Cͯ4[+E񛾇:DX*:e`IE`/dp(;R [S"Ƒ ^$PӜKac4;rJfl*J 4tshOnc{1N3PƤo,pCr. ɣ5 :~Ü֘j" ezNj{{DV.$@15i 2?D+zr4qIf A̹Cv#A,g$PTZUwTqw}JƻKJ-y+Jg5G[}`WL|ë#R;/GWͽ8[LqFgRgye+_4!AD<=!#,kN꾺KB2s# ĿJ|pwsm^ Sԓ$ZhX~1κ˭袋+b 9N%tR"e ݕbQŴCx"sb ޒ:me,_ Lfz{b)j20J&p#o)0+!L wOvM^^ݢJ6e:nS]"vSQg>ϩ\7zWp2uXBj=0}rx|<ձW'V%PkE ?lH~#a|睟h`ĭ>]fyǣcqe UugŮ.Mޡs*Nqn8S.u¥X+2BwT+`PdaƑG[Fo+K齷'va)cMD9\\pĥpZ/کobn8zE~4cŀt/d剚tLli^"e\UJo+ ]d.2))oT'tJ'B/+5@i\ jwT. uiq3`XQ;]Y]OӴ,X _9ב0r^{.M &7ҰAB{>w~Dպ*ŐCx42{qׇ?d7n]/+Њi .cfGks]<]W&; ~ӅL}qf )'%J4 "BI/, u7$ݪ n( g69zAL7N|,Fp񌖕"h.c}+LJxeiIW;L¡EV{v8rV 7@upJBJ>Ib|gRn+'p)TxC&FSCuB @_jG$ \;\Е7Zj"^ > &4½?++ta5}n^y݁.huJGr"p[f9f}|Р V26{p$ P ;3=aqϖ TBy|"$1cJcVN ]O-1̓MUgbfE\Dza϶G9Mߍ@WIDžr SUңaQtz“l-o6vQ6+!L"tݱ8GBE &3lo|%nB^!4nZP bJG|}k:%K{e!iicvccY#_fF/25Pc~0PowQ?|U<.Vd.ǭ_H ]zm)0 :q"#H}(Jd ݥ ro[8žYv=<% L4'ԤD_mֶ,J[:mU0'GPŁI53j!IP5F?6IIؐ6ɂȑV@?ۼ>\()~|i)O7y1ɝڞvDb9QZ-~L ,,v CGEh+^ތ2;q~hyH8(Y,¹⼓N{^ʩV b ,>(]jč&!x@S$ ey˝oXׄb#0J{b1ÌDd_PBKҲ (tOtjTYe#RH6-}wK((B%Nz8c<$Qt_FX#u=P`2G$)JQf>eeql,?o' ?Qe;HOJ9{eIBse\dY  z$9kWFdP0ϸW I+5. f647FQd>08ea`ARnߨY ˇ`g9)&韡"̿=Y ٬иLH~~T/J^9|ˈ}{\Y3~?FuOv^ :CO ~*:p 50j#kb"TSm2 \d730}>)qÉ{`? SOk /iWⴾψ1w8pϸ#q.iFwUPish`,:wzd=*.G-y 767|4?7CJEv9 '*7wDTRxhTbTW؜-iYlP(^N?E$$_Nח]M$;)N8٣xЄ[ tw_0x&9z AxHZG&jiщ"A4aY'6CM2 LI+Q,?3*dզz;@= ::n >STvne'5Wk ::*Vls}S`fR7(17D;bHr!oLtV`}`zjAZ,;3"ml|?n+੥gnVCe* f/KddRN8Mgoɂ9 mS/Gn*95owI+R \-W{|X @xВ/kM|s%DT DwF9C<pX|BY5cOlSR ];" 5$7ڂU_c?ךm㾜5yĂ@go{Z/ȸ0!NLj=rШirb :o-ɪhDІ^Vc"Jf'2[wsSITYPlyt"p;rXO USLe 6ECI)$BXPO1ԚR=7Zȴ#x(L R:4[k%klgo 3eoM쿣6_;?^(q` Cn~ X8T%vrDP科n7AsDp fYE'*r/5QIquDZ5_m hyA T^N|#O~aBsC:S&&dZCwk )iLYlG%,V,)ބ8Bd#"Y+AYPf9S `SnImJ-36y8.ZTff-!EJ'GwdEj[\BqOx)g?O*A7q4ăBԛqw]j&s}ιtAP$(5I;>IǗiX&g kfR#c,WJ]@z$R0]O AfڙTķGj2-D[n '!󤧢N*{Œts-(xad9+0~;kF5un.@c>;37-ׂ0p+{c)e8 6H%_A@NaїD+DOZB3H ~M%x/j]-?z3:o.j?RON’ 3Ygx.% ]jߴVrJ2e@o'G2LLm# 3,$3U 3'C{w 7*wԌ]kP6fBQ{4WNWw|,]kɶdFJ'xku}>zlq5O?g)M+uB]܄޵Y7Q񨿎tߎWS$YWbtZ shb37@#~ BW4M`a3= CG2&G}.MSFoWHpM#'ތTcIz:_̿|okmbW {%D`Hr%ֹkC@9zP7|/|j{DbH-5MvOԺX9SrM}: ^"R"A;>bI|iO?M|zwfmvݴQ-r=hQuq%Sb`׫'bPJ?2'n2pu.'&H73# {4վڧ%!*o]ųf8 yЯ!xI\--NL0O5Z )=7Ւ1G8xOn:Y 1٘NRIBR3C q[ sI<ueEրԋWqEpzϨBi%}RKSP#t?k/8"xPœ$Sl t" =UӇ+ax6@qdpy8+J$?Eelz5H{V{ƛؖɬgSraEfGHɗA?ěDy(@ў 9=؝L Z$v5=\1CuE{qk>(:YCct+*h f P!:%~]y"H%#\E]ٛ~MMuy&d QS"1tqrW}i[.fTg]G3{o{-H e#%cmxVflG+37.kp&A6$I_Ѷ>ߌ'_%;wVgD6N)4֙>ÝPw*f+ X K:1%ًPI:k@ɞtW{7PRo ҺQ\ak]{c}Z_x7'V(݁JA~i|9ڳ2.KR_,>Ő3@ qLLNYFVQ6C\>QUO=S%etraT e}!y!/oA}A95U{I~q&v\*hLg#@.}f DeeW$Vw/s^FK /ϼ̓7=,dU^OhX8HҢ{4HaMUnہdc^X38u8/X]Os׿ڲ{Y+ rwx+:ٗ xD̗K ,M 7k0{OC[IGpJx8׌,' Kwe1/jр-%"ۀ¶5?ՀrxAhm’-7M&W6FQsaD1sD,̝p/~ T 5b;/3">B Op܁97ԉEnɚ/!k\#e]BD874%I }Eiz݉U7PHFCM A*\Y~3ՠx¾?Z$'12雜ZLLꅱZ缢ڊ +!smSX$`R>Ye]?ZK, XoqMaXFk/IO`bIiRh׊5r蹞:a v]ym_J\GDk-@A\ڬUy;e:S ?=z'gz+]=eRC/J}>[N0$KrQ=ԇb9TXM#V|8T>Ŏ`eZ<LH٭ NkebٞJ)ܼ$Ȫ;pG{߈D1v".yO#8"Ȥa׳-zVl*ixr sM8E?y=l;9co$?<֝A=DE}W@+ûf_ioxLK_ F %RXTڮ6*@, -G3z xy8wwHO}hB?ǥ&Beu(=@X!7?r$vBl pIAEA-^7BI-ܚ4POښiĺԓ/NFԭ"2}(17.CejBɺCgWJ0\}][6]͞Iz(6yY;S]'N>1 cv=PH@sR!l/&1>vlŒ^~m} feM@CCtu!Or7R %^ɴײ|b}(&H97zz`b?O*؂hj>?{bwt}6i$pvOkd6TLn< - F'lHaNS78kP=Z+}/L8Ҍf()uMLI^3"|)r{4TK%b6)m g 4 >gCk` `p BݓRVlä >W;d#{yꙿƙK|̎J9Kn>4 0 jT3qT_"d@M]8aΉd4o cZIs1KIT"YINJ{`PZ#lޅz9zr4Ņ E60F<|oZ,جWZ 6J-ٸ";7y~dIvjp$1;kL</ 묜b`HOU~adj¡8m?KA؇QQ(lXd{v&@H-;PWQ5'K{?%|Rt&w/-5z7jo<KX*Ю qGB<Uj6Kj=<c%> CS6KrDzNuyݸlǨ P-N?#^J|o]6⧤r!4-aNiG'Cİ/|c"xJ](!'B9ɩ40ntX%@זl&ߜ듳MḼ#?|:)yǑc$jPp\Ѥ*ePiCcy ̙gk-j{Vpwhb":@W*ƃ]8蚿|8q-x0q| 3%7Dz̎N/h,w*"cd_%)>>!;w?4?>>r`mapnik-vector-tile-1.6.1/bench/readme.md000066400000000000000000000045401324304754200200760ustar00rootroot00000000000000### decode benchmark With reserve ``` $ ./build/Release/vtile-decode bench/multi_line_13_1310_3166.vector.mvt 13 1310 3166 z:13 x:1310 y:3166 iterations:100 message: zlib compressed 4026.30ms (cpu 4020.96ms) | decode as datasource_pbf: bench/multi_line_13_1310_3166.vector.mvt ``` without reserve code ``` $ ./build/Release/vtile-decode bench/multi_line_13_1310_3166.vector.mvt 13 1310 3166 z:13 x:1310 y:3166 iterations:100 message: zlib compressed 4296.88ms (cpu 4289.05ms) | decode as datasource_pbf: bench/multi_line_13_1310_3166.vector.mvt ``` --------- baseline (using mapnik::geometry::envelope + filter.pass) ``` $ .//build/Release/vtile-decode bench/enf.t5yd5cdi_14_13089_8506.vector.mvt 14 13089 8506 200 z:14 x:13089 y:8506 iterations:200 2822.66ms (cpu 2821.10ms) | decode as datasource_pbf: bench/enf.t5yd5cdi_14_13089_8506.vector.mvt 2070.90ms (cpu 2070.44ms) | decode as datasource: bench/enf.t5yd5cdi_14_13089_8506.vector.mvt processed 6800 features ``` ``` $ ./build/Release/vtile-decode bench/multi_line_13_1310_3166.vector.mvt 13 1310 3166 100 z:13 x:1310 y:3166 iterations:100 message: zlib compressed 4289.26ms (cpu 4275.29ms) | decode as datasource_pbf: bench/multi_line_13_1310_3166.vector.mvt ``` commenting filter.pass/geometry::envelope in datasource_pbf ``` $ .//build/Release/vtile-decode bench/enf.t5yd5cdi_14_13089_8506.vector.pbf 14 13089 8506 200 z:14 x:13089 y:8506 iterations:200 2305.45ms (cpu 2301.07ms) | decode as datasource_pbf: bench/enf.t5yd5cdi_14_13089_8506.vector.mvt 2142.56ms (cpu 2140.40ms) | decode as datasource: bench/enf.t5yd5cdi_14_13089_8506.vector.mvt processed 6800 features ``` with bbox filter: ``` $ .//build/Release/vtile-decode bench/enf.t5yd5cdi_14_13089_8506.vector.mvt 14 13089 8506 200 z:14 x:13089 y:8506 iterations:200 2497.01ms (cpu 2493.40ms) | decode as datasource_pbf: bench/enf.t5yd5cdi_14_13089_8506.vector.mvt 1753.55ms (cpu 1751.10ms) | decode as datasource: bench/enf.t5yd5cdi_14_13089_8506.vector.mvt processed 6600 features ``` ``` $ ./build/Release/vtile-decode bench/multi_line_13_1310_3166.vector.mvt 13 1310 3166 100 z:13 x:1310 y:3166 iterations:100 message: zlib compressed 4090.67ms (cpu 4083.65ms) | decode as datasource_pbf: bench/multi_line_13_1310_3166.vector.mvt ``` ### encode benchmark: ``` $ ./build/Release/vtile-encode ./test/data/linestrings_and_point.geojson 0 0 0 ``` mapnik-vector-tile-1.6.1/bench/run-bench.sh000077500000000000000000000013441324304754200205360ustar00rootroot00000000000000#!/usr/bin/env bash # encode geojson if [ "$1" == "encode" ] ; then FILE_PATH=./test/geometry-test-data/input/* COMMAND=./build/Release/vtile-encode for f in $FILE_PATH do echo "${f##*/}" for n in 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000 do DYLD_LIBRARY_PATH=$MVT_LIBRARY_PATH $COMMAND $f 0 0 0 -i $n done echo " " echo " " done #decode pbf elif [ "$1" == "decode" ] ; then FILE_PATH=./test/data/**.pbf COMMAND=./build/Release/vtile-decode for f in $FILE_PATH do echo "${f##*/}" for n in 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 do DYLD_LIBRARY_PATH=$MVT_LIBRARY_PATH $COMMAND $f 0 0 0 $n done echo " " echo " " done else echo "Please specify 'encode' or 'decode'" fi mapnik-vector-tile-1.6.1/bench/vtile-decode.cpp000066400000000000000000000057631324304754200213770ustar00rootroot00000000000000#include #include #include "vector_tile_datasource_pbf.hpp" #include "vector_tile_compression.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wsign-conversion" #include "vector_tile.pb.h" #pragma GCC diagnostic pop #include #include int main(int argc, char** argv) { try { if (argc < 4) { std::clog << "usage: vtile-decode /path/to/tile.vector.mvt z x y [iterations]\n"; return -1; } std::string vtile(argv[1]); mapnik::util::file input(vtile); if (!input.is_open()) { std::clog << std::string("failed to open ") + vtile << "\n"; return -1; } int z = std::stoi(argv[2]); int x = std::stoi(argv[3]); int y = std::stoi(argv[4]); std::size_t iterations = 100; if (argc > 5) { iterations = std::stoi(argv[5]); } std::clog << "z:" << z << " x:" << x << " y:" << y << " iterations:" << iterations << "\n"; std::string message(input.data().get(), input.size()); bool is_zlib = mapnik::vector_tile_impl::is_zlib_compressed(message); bool is_gzip = mapnik::vector_tile_impl::is_gzip_compressed(message); if (is_zlib || is_gzip) { if (is_zlib) { std::cout << "message: zlib compressed\n"; } else if (is_gzip) { std::cout << "message: gzip compressed\n"; } std::string uncompressed; mapnik::vector_tile_impl::zlib_decompress(message,uncompressed); message = uncompressed; } std::size_t feature_count = 0; std::size_t layer_count = 0; { mapnik::progress_timer __stats__(std::clog, std::string("decode as datasource_pbf: ") + vtile); for (std::size_t i=0;i(layer,x,y,z); mapnik::query q(ds->get_tile_extent()); auto fs = ds->features(q); if (!fs) continue; while (fs->next()) { ++feature_count; } } } } if (feature_count == 0) { std::clog << "error: no features processed\n"; return -1; } else { std::clog << "processed " << feature_count << " features\n"; } } catch (std::exception const& ex) { std::clog << "error: " << ex.what() << "\n"; return -1; } return 0; } mapnik-vector-tile-1.6.1/bench/vtile-encode.cpp000066400000000000000000000142061324304754200214010ustar00rootroot00000000000000#include #include #include "vector_tile_processor.hpp" #include "vector_tile_projection.hpp" #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wsign-conversion" #include "vector_tile.pb.h" #pragma GCC diagnostic pop #include #include // mapnik #include #include #include #include #include #include #include #include #include #include #include int main(int argc, char** argv) { try { if (argc < 4) { std::clog << "usage: vtile-encode /path/to/geometry.geojson z x y [-i iterations] [-l layer_count] [-o output_file] [-p epsg_code]\n"; return -1; } std::string geojson_file(argv[1]); int z = std::stoi(argv[2]); int x = std::stoi(argv[3]); int y = std::stoi(argv[4]); std::size_t iterations = 1000; std::size_t layer_count = 1; std::size_t layer_extent = 4096; std::string output_path = ""; std::string layer_projection = "4326"; if (argc > 5) { for (int i = 5; i < argc; i++) { std::string flag = argv[i]; if (flag == "-i") { iterations = std::stoi(argv[i + 1]); } if (flag == "-l") { layer_count = std::stoi(argv[i + 1]); } if (flag == "-o") { output_path = argv[i + 1]; } if (flag == "-p") { layer_projection = argv[i + 1]; } if (flag == "-e") { layer_extent = std::stoi(argv[i + 1]); } } } std::clog << "z:" << z << " x:" << x << " y:" << y << " iterations:" << iterations << std::endl; mapnik::datasource_cache::instance().register_datasources(MAPNIK_PLUGINDIR); mapnik::parameters params_1; params_1["type"] = "geojson"; params_1["file"] = geojson_file; params_1["cache_features"] = "false"; auto ds_1 = mapnik::datasource_cache::instance().create(params_1); // Query mapnik::box2d query_ext(std::numeric_limits::lowest(), std::numeric_limits::lowest(), std::numeric_limits::max(), std::numeric_limits::max()); mapnik::query q(query_ext); auto json_fs = ds_1->features(q); // Create memory datasource from geojson mapnik::parameters params; params["type"] = "memory"; auto ds = std::make_shared(params); if (!json_fs) { // No features in geojson so lets try to process it differently as // it might be a partial geojson and we can use from_geojson mapnik::util::file input(geojson_file); if (!input.is_open()) { std::clog << "failed to open " << geojson_file << std::endl; return -1; } mapnik::geometry::geometry geom; std::string json_string(input.data().get(), input.size()); if (!mapnik::json::from_geojson(json_string, geom)) { std::clog << "failed to parse geojson" << std::endl; return -1; } mapnik::context_ptr ctx = std::make_shared(); mapnik::feature_ptr feature(mapnik::feature_factory::create(ctx,1)); feature->set_geometry(std::move(geom)); ds->push(feature); } else { mapnik::feature_ptr feature = json_fs->next(); while (feature) { ds->push(feature); feature = json_fs->next(); } } // Create tile unsigned tile_size = layer_extent; int buffer_size = 0; mapnik::box2d bbox = mapnik::vector_tile_impl::tile_mercator_bbox(x, y, z); // Create a fresh map to render into a tile mapnik::Map map(tile_size,tile_size,"+init=epsg:3857"); while (layer_count > 0) { std::string layer_name = "layer" + std::to_string(layer_count); std::string layer_proj = "+init=epsg:" + layer_projection; mapnik::layer lyr(layer_name, layer_proj); lyr.set_datasource(ds); map.add_layer(lyr); --layer_count; } map.zoom_to_box(bbox); // Output buffer std::string output_buffer; std::size_t expected_size; { mapnik::vector_tile_impl::tile a_tile(bbox, tile_size, buffer_size); mapnik::vector_tile_impl::processor ren(map); ren.set_simplify_distance(5.0); ren.update_tile(a_tile); a_tile.serialize_to_string(output_buffer); expected_size = a_tile.size(); } { mapnik::progress_timer __stats__(std::clog, std::string("encode tile: ") + geojson_file); for (std::size_t i = 0; i < iterations; ++i) { mapnik::vector_tile_impl::tile a_tile(bbox, tile_size, buffer_size); mapnik::vector_tile_impl::processor ren(map); ren.set_simplify_distance(5.0); ren.update_tile(a_tile); assert(a_tile.size() == expected_size); } } if (output_path != "") { std::ofstream out(output_path); out << output_buffer; } } catch (std::exception const& ex) { std::clog << "error: " << ex.what() << std::endl; return -1; } return 0; } mapnik-vector-tile-1.6.1/bench/vtile-transform.cpp000066400000000000000000000135111324304754200221550ustar00rootroot00000000000000#include #if MAPNIK_VERSION >= 300100 #include #include #else #include #include #endif #include #include #include #include #include "vector_tile_strategy.hpp" #include "vector_tile_projection.hpp" /* # 10000 times no reserve + transform_visitor - 2.77 with reserve - 1.69 boost::geometry::transform - 2.3 */ int main() { mapnik::projection merc("+init=epsg:3857",true); mapnik::projection merc2("+init=epsg:4326",true); mapnik::proj_transform prj_trans(merc,merc); // no-op mapnik::proj_transform prj_trans2(merc2,merc); // op unsigned tile_size = 256; mapnik::box2d z15_extent = mapnik::vector_tile_impl::tile_mercator_bbox(9664,20435,15); unsigned path_multiplier = 16; mapnik::view_transform tr(tile_size * path_multiplier, tile_size * path_multiplier, z15_extent,0,0); std::string geojson_file("./test/data/poly.geojson"); mapnik::util::file input(geojson_file); if (!input.is_open()) { throw std::runtime_error("failed to open geojson"); } mapnik::geometry::geometry geom; std::string json_string(input.data().get(), input.size()); if (!mapnik::json::from_geojson(json_string, geom)) { throw std::runtime_error("failed to parse geojson"); } mapnik::geometry::correct(geom); unsigned count = 0; unsigned count2 = 0; unsigned count3 = 0; unsigned count4 = 0; { mapnik::vector_tile_impl::vector_tile_strategy vs(tr); mapnik::progress_timer __stats__(std::clog, "boost::geometry::transform"); for (unsigned i=0;i<10000;++i) { mapnik::geometry::geometry new_geom = mapnik::geometry::transform(geom, vs); auto const& poly = mapbox::util::get>(new_geom); count += poly.size(); } } { mapnik::vector_tile_impl::vector_tile_strategy_proj vs(prj_trans,tr); mapnik::progress_timer __stats__(std::clog, "transform_visitor with reserve with proj no-op"); mapnik::box2d clip_extent(std::numeric_limits::min(), std::numeric_limits::min(), std::numeric_limits::max(), std::numeric_limits::max()); mapnik::vector_tile_impl::geom_out_visitor out_geom; mapnik::vector_tile_impl::transform_visitor< mapnik::vector_tile_impl::vector_tile_strategy_proj, mapnik::vector_tile_impl::geom_out_visitor > transit(vs, clip_extent, out_geom); for (unsigned i=0;i<10000;++i) { mapbox::util::apply_visitor(transit,geom); auto const& poly = mapbox::util::get>(*out_geom.geom); count2 += poly.size(); } if (count != count2) { std::clog << "tests did not run as expected!\n"; return -1; } } { mapnik::vector_tile_impl::vector_tile_strategy_proj vs(prj_trans2,tr); mapnik::progress_timer __stats__(std::clog, "transform_visitor with reserve with proj op"); mapnik::box2d clip_extent(std::numeric_limits::min(), std::numeric_limits::min(), std::numeric_limits::max(), std::numeric_limits::max()); mapnik::vector_tile_impl::geom_out_visitor out_geom; mapnik::vector_tile_impl::transform_visitor< mapnik::vector_tile_impl::vector_tile_strategy_proj, mapnik::vector_tile_impl::geom_out_visitor > transit(vs, clip_extent, out_geom); for (unsigned i=0;i<10000;++i) { mapbox::util::apply_visitor(transit,geom); auto const& poly = mapbox::util::get>(*out_geom.geom); count4 += poly.size(); } if (count != count4) { std::clog << "tests did not run as expected!\n"; return -1; } } { mapnik::vector_tile_impl::vector_tile_strategy vs(tr); mapnik::progress_timer __stats__(std::clog, "transform_visitor with reserve with no proj function call overhead"); mapnik::box2d clip_extent(std::numeric_limits::min(), std::numeric_limits::min(), std::numeric_limits::max(), std::numeric_limits::max()); mapnik::vector_tile_impl::geom_out_visitor out_geom; mapnik::vector_tile_impl::transform_visitor< mapnik::vector_tile_impl::vector_tile_strategy, mapnik::vector_tile_impl::geom_out_visitor > transit(vs, clip_extent, out_geom); for (unsigned i=0;i<10000;++i) { mapnik::util::apply_visitor(transit,geom); auto const& poly = mapbox::util::get>(*out_geom.geom); count3 += poly.size(); } if (count != count3) { std::clog << "tests did not run as expected!\n"; return -1; } } return 0; } mapnik-vector-tile-1.6.1/bin/000077500000000000000000000000001324304754200160055ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/bin/vtile-edit.cpp000066400000000000000000000075551324304754200205730ustar00rootroot00000000000000#include #include "vector_tile.pb.h" #include "vector_tile_compression.hpp" #include #include #include int main(int argc, char** argv) { try { if (argc < 2) { std::clog << "usage: vtile-edit /path/to/tile.vector.mvt [--set-version version]" << std::endl; return -1; } std::string vtile(argv[1]); mapnik::util::file input(vtile); if (!input.is_open()) { std::clog << std::string("failed to open ") + vtile << "\n"; return -1; } unsigned version = 0; bool clean_empty = false; if (argc > 2) { for (int i = 2; i < argc; i++) { std::string flag = argv[i]; if (flag == "--set-version") { version = std::stoi(argv[i + 1]); } if (flag == "--clean-empty") { clean_empty = true; } } } std::string message(input.data().get(), input.size()); bool is_zlib = mapnik::vector_tile_impl::is_zlib_compressed(message); bool is_gzip = mapnik::vector_tile_impl::is_gzip_compressed(message); if (is_zlib || is_gzip) { if (is_zlib) { std::cout << "message: zlib compressed\n"; } else if (is_gzip) { std::cout << "message: gzip compressed\n"; } std::string uncompressed; mapnik::vector_tile_impl::zlib_decompress(message,uncompressed); message = uncompressed; } vector_tile::Tile tile; tile.ParseFromString(message); for (int j=0;jname() << std::endl; if (version != 0) { std::clog << "old version: " << layer->version() << std::endl; if (version != layer->version()) { layer->set_version(version); } std::clog << "new version: " << layer->version() << std::endl; } if (clean_empty) { std::clog << "Cleaning empty features" << std::endl; for (int i = 0; i < layer->features_size(); ++i) { auto feature = layer->mutable_features(i); if (feature->geometry_size() == 0 && !feature->has_raster()) { layer->mutable_features()->DeleteSubrange(i,1); --i; } } if (layer->features_size() == 0) { tile.mutable_layers()->DeleteSubrange(j,1); --j; } } } // Serialize std::string output; tile.SerializeToString(&output); // Recompress bool gzip = true; if (is_zlib || is_gzip) { if (is_zlib) { gzip = false; std::cout << "message: zlib compressing\n"; } else if (is_gzip) { gzip = true; std::cout << "message: gzip compressing\n"; } std::string compressed; mapnik::vector_tile_impl::zlib_compress(output,compressed,gzip); output = compressed; } std::ofstream file(vtile); file << output; std::clog << "wrote to: " << vtile << std::endl; } catch (std::exception const& ex) { std::clog << "error: " << ex.what() << "\n"; return -1; } return 0; } mapnik-vector-tile-1.6.1/bootstrap.sh000077500000000000000000000025221324304754200176120ustar00rootroot00000000000000#!/usr/bin/env bash # if built against mason package fix dynamic data locations function setup_runtime_settings() { if [[ -f $(pwd)/mason_packages/.link/bin/mapnik-config ]]; then # TODO: use --proj-lib, --gdal-data, etc after https://github.com/mapnik/mapnik/pull/3759 is fixed #export PROJ_LIB=$(mapnik-config --proj-lib) #export GDAL_DATA=$(mapnik-config --gdal-data) #export ICU_DATA=$(mapnik-config --icu-data) local MASON_LINKED_ABS=$(pwd)/mason_packages/.link export PROJ_LIB=${MASON_LINKED_ABS}/share/proj ICU_VERSION=$(ls ${MASON_LINKED_ABS}/share/icu/) export ICU_DATA=${MASON_LINKED_ABS}/share/icu/${ICU_VERSION} export GDAL_DATA=${MASON_LINKED_ABS}/share/gdal if [[ $(uname -s) == 'Darwin' ]]; then export DYLD_LIBRARY_PATH=$(pwd)/mason_packages/.link/lib:${DYLD_LIBRARY_PATH:-} # OS X > 10.11 blocks DYLD_LIBRARY_PATH so we pass along using a # differently named variable export MVT_LIBRARY_PATH=${DYLD_LIBRARY_PATH} else export LD_LIBRARY_PATH=$(pwd)/mason_packages/.link/lib:${LD_LIBRARY_PATH:-} fi export PATH=$(pwd)/mason_packages/.link/bin:${PATH} fi } function main() { setup_runtime_settings echo "Ready, now run:" echo "" echo " make test" } main mapnik-vector-tile-1.6.1/codecov.yml000066400000000000000000000000671324304754200174050ustar00rootroot00000000000000ignore: - "bin" - "bench" - "examples" - "test"mapnik-vector-tile-1.6.1/examples/000077500000000000000000000000001324304754200170535ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/examples/c++/000077500000000000000000000000001324304754200174235ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/examples/c++/Makefile000077500000000000000000000012531324304754200210670ustar00rootroot00000000000000PROTOBUF_CXXFLAGS=$(shell pkg-config protobuf --cflags) PROTOBUF_LDFLAGS=$(shell pkg-config protobuf --libs-only-L) -lprotobuf-lite CXXFLAGS := $(CXXFLAGS) # inherit from env LDFLAGS := $(LDFLAGS) # inherit from env all: tileinfo tileinfo: tileinfo.cpp ../../src/vector_tile.pb.cc $(CXX) $(CXXFLAGS) $(PROTOBUF_CXXFLAGS) $(LDFLAGS) $(PROTOBUF_LDFLAGS) tileinfo.cpp ../../src/vector_tile.pb.cc -o tileinfo -lprotobuf-lite -lz install: tileinfo mkdir -p /usr/local/bin cp ./tileinfo /usr/local/bin/tileinfo chmod +x /usr/local/bin/tileinfo test: ./tileinfo ../data/14_8716_8015.vector.mvt ./tileinfo ../data/14_2620_6331.vector.mvt.z clean: @rm -f ./tileinfo .PHONY: test mapnik-vector-tile-1.6.1/examples/c++/README.md000066400000000000000000000010101324304754200206720ustar00rootroot00000000000000 # tileinfo A commandline tool to dump details about what layers, features, and geometries exist in a vector tile. Vector tiles can be either zlib deflated (compressed) or not. ## Depends - C++ compiler - libprotobuf Install these dependencies on Ubuntu: apt-get install pkg-config libprotobuf7 libprotobuf-dev protobuf-compiler build-essential g++ Install these dependencies on OS X: brew install pkg-config protobuf ## Installation make ## Usage tileinfo ../data/14_8716_8015.vector.mvt mapnik-vector-tile-1.6.1/examples/c++/tileinfo.cpp000066400000000000000000000250351324304754200217450ustar00rootroot00000000000000#pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wsign-conversion" #include "vector_tile.pb.h" #pragma GCC diagnostic pop #include "vector_tile_compression.hpp" #include #include #include #include #include enum CommandType { SEG_END = 0, SEG_MOVETO = 1, SEG_LINETO = 2, SEG_CLOSE = (0x40 | 0x0f) }; enum eGeomType { Unknown = 0, Point = 1, LineString = 2, Polygon = 3 }; int main(int argc, char** argv) { GOOGLE_PROTOBUF_VERIFY_VERSION; std::vector args; bool verbose = false; for (int i=1;i(stream.rdbuf()),(std::istreambuf_iterator())); stream.close(); // now attempt to open protobuf vector_tile::Tile tile; bool is_zlib = mapnik::vector_tile_impl::is_zlib_compressed(message); bool is_gzip = mapnik::vector_tile_impl::is_gzip_compressed(message); if (is_zlib || is_gzip) { if (is_zlib) { std::cout << "message: zlib compressed\n"; } else if (is_gzip) { std::cout << "message: gzip compressed\n"; } std::string uncompressed; mapnik::vector_tile_impl::zlib_decompress(message,uncompressed); if (!tile.ParseFromString(uncompressed)) { std::clog << "failed to parse compressed protobuf\n"; } } else { std::cout << "message: appears not to be compressed\n"; if (!tile.ParseFromString(message)) { std::clog << "failed to parse protobuf\n"; } } if (!verbose) { std::cout << "layers: " << static_cast(tile.layers_size()) << "\n"; for (std::size_t i=0;i(tile.layers_size());++i) { vector_tile::Tile_Layer const& layer = tile.layers(i); std::cout << layer.name() << ":\n"; std::cout << " version: " << layer.version() << "\n"; std::cout << " extent: " << layer.extent() << "\n"; std::cout << " features: " << static_cast(layer.features_size()) << "\n"; std::cout << " keys: " << static_cast(layer.keys_size()) << "\n"; std::cout << " values: " << static_cast(layer.values_size()) << "\n"; unsigned total_repeated = 0; unsigned num_commands = 0; unsigned num_move_to = 0; unsigned num_line_to = 0; unsigned num_close = 0; unsigned num_empty = 0; unsigned degenerate = 0; for (std::size_t j=0;j(layer.features_size());++j) { vector_tile::Tile_Feature const & f = layer.features(j); total_repeated += f.geometry_size(); int cmd = -1; const int cmd_bits = 3; unsigned length = 0; unsigned g_length = 0; for (int k = 0; k < f.geometry_size();) { if (!length) { unsigned cmd_length = f.geometry(k++); cmd = cmd_length & ((1 << cmd_bits) - 1); length = cmd_length >> cmd_bits; if (length <= 0) num_empty++; num_commands++; } if (length > 0) { length--; if (cmd == SEG_MOVETO || cmd == SEG_LINETO) { f.geometry(k++); f.geometry(k++); g_length++; if (cmd == SEG_MOVETO) { num_move_to++; } else if (cmd == SEG_LINETO) { num_line_to++; } } else if (cmd == (SEG_CLOSE & ((1 << cmd_bits) - 1))) { if (g_length <= 2) degenerate++; g_length = 0; num_close++; } else { std::stringstream s; s << "Unknown command type: " << cmd; throw std::runtime_error(s.str()); } } } } std::cout << " geometry summary:\n"; std::cout << " total: " << total_repeated << "\n"; std::cout << " commands: " << num_commands << "\n"; std::cout << " move_to: " << num_move_to << "\n"; std::cout << " line_to: " << num_line_to << "\n"; std::cout << " close: " << num_close << "\n"; std::cout << " degenerate polygons: " << degenerate << "\n"; std::cout << " empty geoms: " << num_empty << "\n"; } } else { for (std::size_t j=0;j(tile.layers_size());++j) { vector_tile::Tile_Layer const& layer = tile.layers(j); std::cout << "layer: " << layer.name() << "\n"; std::cout << " version: " << layer.version() << "\n"; std::cout << " extent: " << layer.extent() << "\n"; std::cout << " keys: "; for (std::size_t k=0;k(layer.keys_size());++k) { std::string const& key = layer.keys(k); std::cout << key; if (k(layer.keys_size())-1) { std::cout << ","; } } std::cout << "\n"; std::cout << " values: "; for (std::size_t l=0;l(layer.values_size());++l) { vector_tile::Tile_Value const & value = layer.values(l); if (value.has_string_value()) { std::cout << value.string_value(); } else if (value.has_int_value()) { std::cout << value.int_value(); } else if (value.has_double_value()) { std::cout << value.double_value(); } else if (value.has_float_value()) { std::cout << value.float_value(); } else if (value.has_bool_value()) { std::cout << value.bool_value(); } else if (value.has_sint_value()) { std::cout << value.sint_value(); } else if (value.has_uint_value()) { std::cout << value.uint_value(); } else { std::cout << "null"; } if (l(layer.values_size())-1) { std::cout << ","; } } std::cout << "\n"; for (std::size_t l=0;l(layer.features_size());++l) { vector_tile::Tile_Feature const & feat = layer.features(l); if (feat.has_id()) { std::cout << " feature: " << feat.id() << "\n"; } else { std::cout << " feature: (no id set)\n"; } std::cout << " type: "; unsigned feat_type = feat.type(); if (feat_type == 0) { std::cout << "Unknown"; } else if (feat_type == 1) { std::cout << "Point"; } else if (feat_type == 2) { std::cout << "LineString"; } else if (feat_type == 3) { std::cout << "Polygon"; } std::cout << "\n"; std::cout << " tags: "; for (std::size_t m=0;m(feat.tags_size());++m) { uint32_t tag = feat.tags(j); std::cout << tag; if (m(feat.tags_size())-1) { std::cout << ","; } } std::cout << "\n"; std::cout << " geometries: "; for (std::size_t m=0;m(feat.geometry_size());++m) { uint32_t geom = feat.geometry(m); std::cout << geom; if (m(feat.geometry_size())-1) { std::cout << ","; } } std::cout << "\n"; } std::cout << "\n"; } } } catch (std::exception const& ex) { std::clog << "error: " << ex.what() << "\n"; return -1; } google::protobuf::ShutdownProtobufLibrary(); } mapnik-vector-tile-1.6.1/examples/data/000077500000000000000000000000001324304754200177645ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/examples/data/14_2620_6331-area_label.geojson000066400000000000000000000432561324304754200250020ustar00rootroot00000000000000{ "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4290120601654, 37.806321294872326 ] }, "properties": { "area": 420936.875, "class": "park", "name": "Fort Mason", "name_de": "Fort Mason", "name_en": "Fort Mason", "name_es": "Fort Mason", "name_fr": "Fort Mason" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43312656879425, 37.80212943883419 ] }, "properties": { "area": 78644.2890625, "class": "park", "name": "Moscone Recreation Center", "name_de": "Moscone Recreation Center", "name_en": "Moscone Recreation Center", "name_es": "Moscone Recreation Center", "name_fr": "Moscone Recreation Center" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42762804031372, 37.791566093394444 ] }, "properties": { "area": 74781.1484375, "class": "park", "name": "Lafayette Park", "name_de": "Lafayette Park", "name_en": "Lafayette Park", "name_es": "Lafayette Park", "name_fr": "Lafayette Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42220997810364, 37.80701214416185 ] }, "properties": { "area": 54851.48046875, "class": "park", "name": "Aquatic Park", "name_de": "Aquatic Park", "name_en": "Aquatic Park", "name_es": "Aquatic Park", "name_fr": "Aquatic Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43235409259796, 37.790641940767166 ] }, "properties": { "area": 46714.70703125, "class": "hospital", "name": "CPMC Pacific Campus", "name_de": "CPMC Pacific Campus", "name_en": "CPMC Pacific Campus", "name_es": "CPMC Pacific Campus", "name_fr": "CPMC Pacific Campus" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43551909923553, 37.80181578179817 ] }, "properties": { "area": 37927.9453125, "class": "school", "name": "Marina Middle School", "name_de": "Marina Middle School", "name_en": "Marina Middle School", "name_es": "Marina Middle School", "name_fr": "Marina Middle School" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40603625774384, 37.80274827178258 ] }, "properties": { "area": 37910.67578125, "class": "park", "name": "Pioneer Park", "name_de": "Pioneer Park", "name_en": "Pioneer Park", "name_es": "Pioneer Park", "name_fr": "Pioneer Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42033243179321, 37.801391918822475 ] }, "properties": { "area": 18318.51953125, "class": "park", "name": "George Sterling Park", "name_de": "George Sterling Park", "name_en": "George Sterling Park", "name_es": "George Sterling Park", "name_fr": "George Sterling Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41092324256897, 37.80479970830737 ] }, "properties": { "area": 17887.583984375, "class": "school", "name": "Francisco Middle School", "name_de": "Francisco Middle School", "name_en": "Francisco Middle School", "name_es": "Francisco Middle School", "name_fr": "Francisco Middle School" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41206049919128, 37.802493957499856 ] }, "properties": { "area": 15649.849609375, "class": "park", "name": "North Beach Playground", "name_de": "North Beach Playground", "name_en": "North Beach Playground", "name_es": "North Beach Playground", "name_fr": "North Beach Playground" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.407506108284, 37.7879372441879 ] }, "properties": { "area": 14722.525390625, "class": "park", "name": "Union Square", "name_de": "Union Square", "name_en": "Union Square", "name_es": "Union Square", "name_fr": "Union Square" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41007566452026, 37.80084513199106 ] }, "properties": { "area": 14162.384765625, "class": "park", "name": "Washington Square Park", "name_de": "Washington Square Park", "name_en": "Washington Square Park", "name_es": "Washington Square Park", "name_fr": "Washington Square Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4165290594101, 37.789603315074956 ] }, "properties": { "area": 13636.7626953125, "class": "hospital", "name": "Saint Francis Memorial Hospital", "name_de": "Saint Francis Memorial Hospital", "name_en": "Saint Francis Memorial Hospital", "name_es": "Saint Francis Memorial Hospital", "name_fr": "Saint Francis Memorial Hospital" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40883648395538, 37.794647931681375 ] }, "properties": { "area": 12502.6455078125, "class": "school", "name": "Gordon J. Lau Elementary School", "name_de": "Gordon J. Lau Elementary School", "name_en": "Gordon J. Lau Elementary School", "name_es": "Gordon J. Lau Elementary School", "name_fr": "Gordon J. Lau Elementary School" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42612063884735, 37.79780594071465 ] }, "properties": { "area": 10926.486328125, "class": "school", "name": "Sherman Elementary School", "name_de": "Sherman Elementary School", "name_en": "Sherman Elementary School", "name_es": "Sherman Elementary School", "name_fr": "Sherman Elementary School" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42436647415161, 37.80485480808938 ] }, "properties": { "area": 10491.86328125, "class": "pitch", "name": "George White Field", "name_de": "George White Field", "name_en": "George White Field", "name_es": "George White Field", "name_fr": "George White Field" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4209600687027, 37.80437586245604 ] }, "properties": { "area": 9823.4970703125, "class": "park", "name": "Russian Hill Park", "name_de": "Russian Hill Park", "name_en": "Russian Hill Park", "name_es": "Russian Hill Park", "name_fr": "Russian Hill Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40533351898193, 37.79483444871761 ] }, "properties": { "area": 8338.2763671875, "class": "park", "name": "Portsmouth Square", "name_de": "Portsmouth Square", "name_en": "Portsmouth Square", "name_es": "Portsmouth Square", "name_fr": "Portsmouth Square" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40746855735779, 37.7879414836017 ] }, "properties": { "area": 7855.46435546875, "class": "parking", "name": "Union Square Garage", "name_de": "Union Square Garage", "name_en": "Union Square Garage", "name_es": "Union Square Garage", "name_fr": "Union Square Garage" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41215705871582, 37.792168058155134 ] }, "properties": { "area": 6761.63525390625, "class": "park", "name": "Huntington Park", "name_de": "Huntington Park", "name_en": "Huntington Park", "name_es": "Huntington Park", "name_fr": "Huntington Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40516722202301, 37.792045122088425 ] }, "properties": { "area": 6754.05224609375, "class": "park", "name": "Saint Mary's Square", "name_de": "Saint Mary's Square", "name_en": "Saint Mary's Square", "name_es": "Saint Mary's Square", "name_fr": "Saint Mary's Square" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41188883781433, 37.784486280685954 ] }, "properties": { "area": 5962.169921875, "class": "park", "name": "Boeddeker Park", "name_de": "Boeddeker Park", "name_en": "Boeddeker Park", "name_es": "Boeddeker Park", "name_fr": "Boeddeker Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42767095565796, 37.79746259325332 ] }, "properties": { "area": 5467.72900390625, "class": "park", "name": "Allyne Park", "name_de": "Allyne Park", "name_en": "Allyne Park", "name_es": "Allyne Park", "name_fr": "Allyne Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41339087486267, 37.79822982426816 ] }, "properties": { "area": 5286.7763671875, "class": "park", "name": "Ina Coolbrith Park", "name_de": "Ina Coolbrith Park", "name_en": "Ina Coolbrith Park", "name_es": "Ina Coolbrith Park", "name_fr": "Ina Coolbrith Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42066502571106, 37.795767026835556 ] }, "properties": { "area": 5055.89599609375, "class": "park", "name": "Helen Wills Playground", "name_de": "Helen Wills Playground", "name_en": "Helen Wills Playground", "name_es": "Helen Wills Playground", "name_fr": "Helen Wills Playground" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41659343242645, 37.80190055410142 ] }, "properties": { "area": 4614.470703125, "class": "school", "name": "Yick Wo Elementary School", "name_de": "Yick Wo Elementary School", "name_en": "Yick Wo Elementary School", "name_es": "Yick Wo Elementary School", "name_fr": "Yick Wo Elementary School" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40673899650574, 37.80204466679365 ] }, "properties": { "area": 4535.21484375, "class": "school", "name": "Garfield Elementary School", "name_de": "Garfield Elementary School", "name_en": "Garfield Elementary School", "name_es": "Garfield Elementary School", "name_fr": "Garfield Elementary School" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41504311561584, 37.80095109874748 ] }, "properties": { "area": 4380.76220703125, "class": "school", "name": "Sarah B. Cooper Child Development Center", "name_de": "Sarah B. Cooper Child Development Center", "name_en": "Sarah B. Cooper Child Development Center", "name_es": "Sarah B. Cooper Child Development Center", "name_fr": "Sarah B. Cooper Child Development Center" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41178691387177, 37.794211310414276 ] }, "properties": { "area": 4241.5634765625, "class": "park", "name": "Chinese Recreation Center", "name_de": "Chinese Recreation Center", "name_en": "Chinese Recreation Center", "name_es": "Chinese Recreation Center", "name_fr": "Chinese Recreation Center" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41104662418365, 37.79760247574503 ] }, "properties": { "area": 3482.419677734375, "class": "school", "name": "Jean Parker School", "name_de": "Jean Parker School", "name_en": "Jean Parker School", "name_es": "Jean Parker School", "name_fr": "Jean Parker School" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40708231925964, 37.79358816685511 ] }, "properties": { "area": 3241.57275390625, "class": "park", "name": "Willie \"Woo Woo\" Wong Park", "name_de": "Willie \"Woo Woo\" Wong Park", "name_en": "Willie \"Woo Woo\" Wong Park", "name_es": "Willie \"Woo Woo\" Wong Park", "name_fr": "Willie \"Woo Woo\" Wong Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42011785507202, 37.80156570293673 ] }, "properties": { "area": 3144.7783203125, "class": "pitch", "name": "Alice Marble Tennis Courts", "name_de": "Alice Marble Tennis Courts", "name_en": "Alice Marble Tennis Courts", "name_es": "Alice Marble Tennis Courts", "name_fr": "Alice Marble Tennis Courts" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41690993309021, 37.801116406583915 ] }, "properties": { "area": 2637.12255859375, "class": "park", "name": "Michelangelo Playground", "name_de": "Michelangelo Playground", "name_en": "Michelangelo Playground", "name_es": "Michelangelo Playground", "name_fr": "Michelangelo Playground" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40846633911133, 37.78405807864497 ] }, "properties": { "area": 2256.60009765625, "class": "park", "name": "Hallidie Plaza", "name_de": "Hallidie Plaza", "name_en": "Hallidie Plaza", "name_es": "Hallidie Plaza", "name_fr": "Hallidie Plaza" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41035461425781, 37.795826372317386 ] }, "properties": { "area": 2005.4078369140625, "class": "park", "name": "Woh Hei Yuen Recreation Center", "name_de": "Woh Hei Yuen Recreation Center", "name_en": "Woh Hei Yuen Recreation Center", "name_es": "Woh Hei Yuen Recreation Center", "name_fr": "Woh Hei Yuen Recreation Center" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40888476371765, 37.79552116647442 ] }, "properties": { "area": 1817.8153076171875, "class": "hospital", "name": "Chinese Hospital", "name_de": "Chinese Hospital", "name_en": "Chinese Hospital", "name_es": "Chinese Hospital", "name_fr": "Chinese Hospital" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40505993366241, 37.80187936103475 ] }, "properties": { "area": 1763.20166015625, "class": "park", "name": "Filbert Steeps Gargen", "name_de": "Filbert Steeps Gargen", "name_en": "Filbert Steeps Gargen", "name_es": "Filbert Steeps Gargen", "name_fr": "Filbert Steeps Gargen" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4178808927536, 37.80290509848712 ] }, "properties": { "area": 1628.5638427734375, "class": "park", "name": "Fay Park", "name_de": "Fay Park", "name_en": "Fay Park", "name_es": "Fay Park", "name_fr": "Fay Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41820275783539, 37.785406270739166 ] }, "properties": { "area": 1243.2176513671875, "class": "park", "name": "O'Farrell-Larkin Mini-Park", "name_de": "O'Farrell-Larkin Mini-Park", "name_en": "O'Farrell-Larkin Mini-Park", "name_es": "O'Farrell-Larkin Mini-Park", "name_fr": "O'Farrell-Larkin Mini-Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41145431995392, 37.78912427055049 ] }, "properties": { "area": 1096.6558837890625, "class": "parking", "name": "California Parking", "name_de": "California Parking", "name_en": "California Parking", "name_es": "California Parking", "name_fr": "California Parking" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41743564605713, 37.796441019146776 ] }, "properties": { "area": 944.394775390625, "class": "park", "name": "Broadway Tunnel West Mini Park", "name_de": "Broadway Tunnel West Mini Park", "name_en": "Broadway Tunnel West Mini Park", "name_es": "Broadway Tunnel West Mini Park", "name_fr": "Broadway Tunnel West Mini Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43233263492584, 37.78646615291675 ] }, "properties": { "area": 668.4193725585938, "class": "park", "name": "Cottage Row Mini Park", "name_de": "Cottage Row Mini Park", "name_en": "Cottage Row Mini Park", "name_es": "Cottage Row Mini Park", "name_fr": "Cottage Row Mini Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41070866584778, 37.80046365040925 ] }, "properties": { "area": 511.5633850097656, "class": "park", "name": "Marini Plaza", "name_de": "Marini Plaza", "name_en": "Marini Plaza", "name_es": "Marini Plaza", "name_fr": "Marini Plaza" } } ], "name": "area_label" }mapnik-vector-tile-1.6.1/examples/data/14_2620_6331-barrier_line.geojson000066400000000000000000000103761324304754200253650ustar00rootroot00000000000000{ "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4106764793396, 37.797488026453316 ], [ -122.41059064865112, 37.797500743050065 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42149651050568, 37.80330352159015 ], [ -122.42159307003023, 37.80351120937674 ], [ -122.42170572280884, 37.80357478715385 ], [ -122.4218773841858, 37.80360445676443 ], [ -122.42223143577577, 37.8035875027027 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41996765136719, 37.79620363890844 ], [ -122.41783797740936, 37.79647493054711 ], [ -122.41766095161438, 37.79650036408717 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41993546485901, 37.79603408112835 ], [ -122.4178057909012, 37.79630113445578 ], [ -122.41762340068819, 37.796326568055655 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42317020893097, 37.7972040218895 ], [ -122.42319703102112, 37.797318471621196 ], [ -122.42319166660309, 37.797318471621196 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42300391197205, 37.797314232745414 ], [ -122.42307364940643, 37.79730575499309 ], [ -122.42307901382446, 37.79733118824711 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42313802242279, 37.79686491053231 ], [ -122.42310583591461, 37.79686914943388 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41827249526978, 37.80348153972869 ], [ -122.41839051246643, 37.80405373798221 ], [ -122.41847634315491, 37.80414274620096 ], [ -122.4185460805893, 37.80413426923238 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42148578166962, 37.8028923828208 ], [ -122.42155015468599, 37.80322722797084 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41452276706696, 37.796983599684395 ], [ -122.41449058055878, 37.796835238214484 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41538643836975, 37.798017882795456 ], [ -122.41534352302551, 37.79781441840957 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41532742977142, 37.79772540256451 ], [ -122.41528451442719, 37.79752617623693 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41532742977142, 37.79781865725665 ], [ -122.41531133651733, 37.79772964141673 ] ] }, "properties": { "class": "fence" } } ], "name": "barrier_line" }mapnik-vector-tile-1.6.1/examples/data/14_2620_6331-bridge.geojson000066400000000000000000000031721324304754200241600ustar00rootroot00000000000000{ "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41849780082703, 37.79639862987445 ], [ -122.41846024990083, 37.79621635572625 ] ] }, "properties": { "class": "street", "layer": 1, "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41861045360565, 37.79641982451364 ], [ -122.41856217384338, 37.79616972738355 ] ] }, "properties": { "class": "path", "layer": 1, "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41839587688446, 37.79644525807265 ], [ -122.41833150386809, 37.79618244420722 ] ] }, "properties": { "class": "path", "layer": 1, "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41844415664673, 37.79622059466506 ], [ -122.41848707199097, 37.79640286880277 ] ] }, "properties": { "class": "minor_rail", "layer": 1, "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41851925849915, 37.79639862987445 ], [ -122.41848170757295, 37.79621635572625 ] ] }, "properties": { "class": "minor_rail", "layer": 1, "oneway": 0 } } ], "name": "bridge" }mapnik-vector-tile-1.6.1/examples/data/14_2620_6331-building.geojson000066400000000000000000015366631324304754200245420ustar00rootroot00000000000000{ "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41495728492737, 37.80557533991654 ], [ -122.41495192050935, 37.80556262470994 ], [ -122.41506993770601, 37.805545671097704 ], [ -122.41507530212402, 37.80557533991654 ], [ -122.41495728492737, 37.80557533991654 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42595970630646, 37.80552871748163 ], [ -122.42588996887207, 37.80557533991654 ], [ -122.42585778236389, 37.80557533991654 ], [ -122.42580950260164, 37.805532955885994 ], [ -122.42578804492952, 37.80554990950113 ], [ -122.42575585842134, 37.80552447907698 ], [ -122.42585241794588, 37.80546090297828 ], [ -122.42587924003601, 37.805482095017254 ], [ -122.42590069770813, 37.8054693797946 ], [ -122.42595970630646, 37.80552871748163 ], [ -122.42595970630646, 37.80552871748163 ], [ -122.42595970630646, 37.80552871748163 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41540789604187, 37.80557533991654 ], [ -122.4153918027878, 37.805507525456015 ], [ -122.41583168506624, 37.80544818775196 ], [ -122.41583704948427, 37.80546514138657 ], [ -122.4158638715744, 37.80546090297828 ], [ -122.41589069366455, 37.80557533991654 ], [ -122.41540789604187, 37.80557533991654 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42577195167542, 37.805477856609954 ], [ -122.42573440074922, 37.80550328705019 ], [ -122.42569684982301, 37.80546937979462 ], [ -122.42573440074922, 37.80544394934274 ], [ -122.42577195167542, 37.805477856609954 ], [ -122.42577195167542, 37.805477856609954 ], [ -122.42577195167542, 37.805477856609954 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42244064807892, 37.80557533991654 ], [ -122.42244064807892, 37.80557533991654 ], [ -122.42359399795532, 37.80543971093325 ], [ -122.4236261844635, 37.80557533991654 ], [ -122.42244064807892, 37.80557533991654 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42045044898987, 37.80557533991654 ], [ -122.42041826248169, 37.80541851888209 ], [ -122.42073476314545, 37.80537613476155 ], [ -122.42077767848969, 37.80557533991654 ], [ -122.42045044898987, 37.80557533991654 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42442011833191, 37.805558386307254 ], [ -122.42426455020905, 37.80556686311238 ], [ -122.42410361766815, 37.805558386307254 ], [ -122.42394268512726, 37.80552447907698 ], [ -122.42381930351257, 37.80548633342432 ], [ -122.42388367652893, 37.80537613476155 ], [ -122.42399096488953, 37.80541004205992 ], [ -122.4241304397583, 37.805435472523484 ], [ -122.42426455020905, 37.80544394934274 ], [ -122.42440402507783, 37.805435472523484 ], [ -122.42442011833191, 37.805558386307254 ], [ -122.42442011833191, 37.805558386307254 ], [ -122.42442011833191, 37.805558386307254 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42793917655945, 37.80557533991654 ], [ -122.42793917655945, 37.80557533991654 ], [ -122.42793381214143, 37.80554990950113 ], [ -122.42819130420686, 37.805499048644066 ], [ -122.42815375328065, 37.805397326824874 ], [ -122.42837369441988, 37.805354942692176 ], [ -122.42838442325593, 37.80538461158759 ], [ -122.42850780487062, 37.80535918110652 ], [ -122.428577542305, 37.80557533991654 ], [ -122.42793917655945, 37.80557533991654 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41589069366455, 37.80557533991654 ], [ -122.4158638715744, 37.80546090297828 ], [ -122.4158638715744, 37.80544394934274 ], [ -122.41682410240173, 37.805325273784796 ], [ -122.41687774658205, 37.80557533991654 ], [ -122.41589069366455, 37.80557533991654 ], [ -122.41673827171326, 37.80557533991654 ], [ -122.41673290729524, 37.80554143269405 ], [ -122.41671144962312, 37.80554143269405 ], [ -122.41670608520509, 37.80549481023774 ], [ -122.41668462753297, 37.80549481023774 ], [ -122.41667926311494, 37.8054693797946 ], [ -122.41666853427888, 37.8054693797946 ], [ -122.41667926311494, 37.80553719429016 ], [ -122.41635739803316, 37.80557533991654 ], [ -122.41589069366455, 37.80557533991654 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41711378097534, 37.80557533991654 ], [ -122.41706550121309, 37.80532951220087 ], [ -122.41717278957368, 37.80531679695196 ], [ -122.41756439208986, 37.80557533991654 ], [ -122.41711378097534, 37.80557533991654 ], [ -122.417408823967, 37.80557533991654 ], [ -122.41734981536867, 37.80553719429016 ], [ -122.41732299327852, 37.80556262470994 ], [ -122.41732299327852, 37.80557533991654 ], [ -122.41711378097534, 37.80557533991654 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41147577762604, 37.80557533991654 ], [ -122.41142749786377, 37.805354942692176 ], [ -122.41174936294556, 37.80531255853515 ], [ -122.41180837154388, 37.80557533991654 ], [ -122.41147577762604, 37.80557533991654 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41512358188629, 37.80536341952066 ], [ -122.41372346878053, 37.80553295588602 ], [ -122.41370201110841, 37.80543971093325 ], [ -122.41510212421417, 37.80526593593434 ], [ -122.41512358188629, 37.80536341952066 ], [ -122.41512358188629, 37.80536341952066 ], [ -122.41512358188629, 37.80536341952066 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.43181228637695, 37.80532951220087 ], [ -122.43179082870483, 37.80533375061669 ], [ -122.43177473545076, 37.805278651192026 ], [ -122.43181228637695, 37.805274412773024 ], [ -122.43181228637695, 37.80532951220087 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42512285709381, 37.805325273784796 ], [ -122.42501556873322, 37.80541004205992 ], [ -122.42489218711853, 37.80546514138659 ], [ -122.4247634410858, 37.80551176386163 ], [ -122.42459177970885, 37.80554567109773 ], [ -122.42454886436461, 37.80541428047113 ], [ -122.42469906806944, 37.80537613476155 ], [ -122.42480635643005, 37.80533375061669 ], [ -122.42491900920866, 37.805278651192026 ], [ -122.42500483989716, 37.80522355172624 ], [ -122.42512285709381, 37.805325273784796 ], [ -122.42512285709381, 37.805325273784796 ], [ -122.42512285709381, 37.805325273784796 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42657124996185, 37.80528712802926 ], [ -122.42628693580627, 37.80528712802926 ], [ -122.42628693580627, 37.80521083645907 ], [ -122.42638885974884, 37.80521083645907 ], [ -122.42638885974884, 37.805248982254014 ], [ -122.42645859718321, 37.805248982254014 ], [ -122.42645859718321, 37.80521083645907 ], [ -122.42657124996184, 37.80521083645907 ], [ -122.42657124996184, 37.80528712802926 ], [ -122.42657124996184, 37.80528712802926 ], [ -122.42657124996185, 37.80528712802926 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41802036762238, 37.80540156523678 ], [ -122.41782188415527, 37.805422757292796 ], [ -122.41773068904878, 37.80535918110652 ], [ -122.41772532463075, 37.80534222744762 ], [ -122.41781115531923, 37.80532951220087 ], [ -122.41781651973726, 37.80534222744762 ], [ -122.4178969860077, 37.80533375061669 ], [ -122.41786479949951, 37.8051938827661 ], [ -122.41797745227814, 37.80518116749381 ], [ -122.41802036762238, 37.80540156523678 ], [ -122.41802036762238, 37.80540156523678 ], [ -122.41802036762238, 37.80540156523678 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41101443767548, 37.80546514138659 ], [ -122.41084277629852, 37.805482095017275 ], [ -122.4108374118805, 37.80544818775199 ], [ -122.41063356399538, 37.80546937979462 ], [ -122.41057455539705, 37.805164213794036 ], [ -122.4109447002411, 37.80512182952755 ], [ -122.41101443767548, 37.80546514138659 ], [ -122.41101443767548, 37.80546514138659 ], [ -122.41101443767548, 37.80546514138659 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.416512966156, 37.80518116749381 ], [ -122.4153596162796, 37.80532951220087 ], [ -122.41533815860748, 37.805227790148145 ], [ -122.41649150848389, 37.805079445236736 ], [ -122.416512966156, 37.80518116749381 ], [ -122.416512966156, 37.80518116749381 ], [ -122.416512966156, 37.80518116749381 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41412580013275, 37.804935338466066 ], [ -122.41412043571474, 37.80495653065587 ], [ -122.41410434246065, 37.80495653065587 ], [ -122.41409897804262, 37.80506249151361 ], [ -122.4141150712967, 37.80506672994478 ], [ -122.4141150712967, 37.805092160526534 ], [ -122.41409361362459, 37.805092160526534 ], [ -122.41408824920656, 37.80520235961308 ], [ -122.41410434246065, 37.80520235961308 ], [ -122.41410434246065, 37.805261697514624 ], [ -122.41392731666566, 37.805253220674466 ], [ -122.41392731666566, 37.8051938827661 ], [ -122.41394877433778, 37.8051938827661 ], [ -122.41395413875581, 37.80508368366691 ], [ -122.41393804550172, 37.80508368366691 ], [ -122.41393804550172, 37.80505825308222 ], [ -122.41395413875581, 37.80505825308222 ], [ -122.41396486759187, 37.80494805378067 ], [ -122.41394877433778, 37.80494805378067 ], [ -122.41395413875581, 37.804931100027396 ], [ -122.41412580013277, 37.804935338466066 ], [ -122.41412580013277, 37.804935338466066 ], [ -122.41412580013275, 37.804935338466066 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42615282535553, 37.80513878323706 ], [ -122.42606163024902, 37.805164213794036 ], [ -122.42595970630646, 37.8049522922184 ], [ -122.42605090141296, 37.80492686158845 ], [ -122.42608845233917, 37.80500315345199 ], [ -122.42604553699493, 37.80501586875492 ], [ -122.42606699466705, 37.80506672994478 ], [ -122.42610991001129, 37.80505401465057 ], [ -122.42615282535553, 37.80513878323706 ], [ -122.42615282535553, 37.80513878323706 ], [ -122.42615282535553, 37.80513878323706 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41445302963257, 37.80515573694268 ], [ -122.4142813682556, 37.80518116749381 ], [ -122.4142813682556, 37.805164213794036 ], [ -122.41429746150969, 37.805164213794036 ], [ -122.41427600383757, 37.80505401465057 ], [ -122.41425991058348, 37.80505825308222 ], [ -122.41424918174742, 37.805028584055684 ], [ -122.41426527500151, 37.805028584055684 ], [ -122.41424381732939, 37.804918384709865 ], [ -122.4142277240753, 37.804922623149274 ], [ -122.4142277240753, 37.804905669390145 ], [ -122.41439402103423, 37.80488023874414 ], [ -122.41439938545226, 37.80489719250912 ], [ -122.41438329219817, 37.80490143094975 ], [ -122.41441011428832, 37.80500739188654 ], [ -122.41442620754238, 37.80500739188654 ], [ -122.4144315719604, 37.80503282248878 ], [ -122.41441011428829, 37.80503706092163 ], [ -122.41443693637844, 37.805143021663824 ], [ -122.4144476652145, 37.805143021663824 ], [ -122.41445302963251, 37.80515573694268 ], [ -122.41445302963251, 37.80515573694268 ], [ -122.41445302963257, 37.80515573694268 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42669999599457, 37.80506672994478 ], [ -122.42660880088808, 37.805079445236736 ], [ -122.42659270763399, 37.804998915017194 ], [ -122.42664098739625, 37.80499043814688 ], [ -122.4266302585602, 37.804935338466066 ], [ -122.42658197879793, 37.80494381534272 ], [ -122.42656588554384, 37.80485480808938 ], [ -122.42666244506837, 37.804846331202526 ], [ -122.42669999599458, 37.80506672994478 ], [ -122.42669999599458, 37.80506672994478 ], [ -122.42669999599457, 37.80506672994478 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41483390331268, 37.805134544810045 ], [ -122.41467297077179, 37.8051938827661 ], [ -122.41464078426361, 37.80513878323706 ], [ -122.41465687751769, 37.8051303063828 ], [ -122.41459786891937, 37.80503282248878 ], [ -122.41458177566528, 37.80503706092163 ], [ -122.41456568241121, 37.805011630320855 ], [ -122.41458177566528, 37.80500739188654 ], [ -122.41452276706696, 37.804905669390145 ], [ -122.4145120382309, 37.804909907830286 ], [ -122.41450130939484, 37.80489719250912 ], [ -122.41466224193574, 37.80483785431468 ], [ -122.41466760635376, 37.80485480808938 ], [ -122.41465151309968, 37.80485904653245 ], [ -122.414710521698, 37.80496076909309 ], [ -122.41472661495209, 37.80495653065585 ], [ -122.41474270820618, 37.804977722839574 ], [ -122.41472661495209, 37.804986199711365 ], [ -122.41478025913239, 37.80508368366691 ], [ -122.41479635238647, 37.805079445236736 ], [ -122.41483390331267, 37.805134544810045 ], [ -122.41483390331267, 37.805134544810045 ], [ -122.41483390331268, 37.805134544810045 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42763340473175, 37.80491414627021 ], [ -122.42753148078918, 37.804977722839574 ], [ -122.42744565010071, 37.80489295406824 ], [ -122.42747247219086, 37.804876000302286 ], [ -122.42745101451874, 37.80485480808938 ], [ -122.42749929428099, 37.804825138981116 ], [ -122.42752075195311, 37.804846331202526 ], [ -122.42754757404326, 37.804833615870386 ], [ -122.42763340473174, 37.80491414627021 ], [ -122.42763340473174, 37.80491414627021 ], [ -122.42763340473175, 37.80491414627021 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41603553295135, 37.80507096837568 ], [ -122.41586923599243, 37.805092160526534 ], [ -122.4158638715744, 37.805079445236736 ], [ -122.41587996482849, 37.805075206806336 ], [ -122.41585850715637, 37.80496924596682 ], [ -122.41584241390228, 37.80496924596682 ], [ -122.41583704948427, 37.80494381534272 ], [ -122.41585314273834, 37.80494381534272 ], [ -122.41582632064821, 37.804833615870386 ], [ -122.41581559181215, 37.804833615870386 ], [ -122.41581022739412, 37.80481666209083 ], [ -122.41598188877107, 37.80479546986092 ], [ -122.4159872531891, 37.80481242364534 ], [ -122.41597115993501, 37.80481666209083 ], [ -122.41599261760713, 37.804922623149274 ], [ -122.41600871086122, 37.804918384709865 ], [ -122.41601407527925, 37.80494805378067 ], [ -122.41599798202516, 37.80494805378067 ], [ -122.41601943969728, 37.80505825308222 ], [ -122.41603553295137, 37.80505401465057 ], [ -122.41603553295137, 37.80507096837568 ], [ -122.41603553295137, 37.80507096837568 ], [ -122.41603553295135, 37.80507096837568 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41382002830505, 37.80537189634818 ], [ -122.41369664669037, 37.80538461158762 ], [ -122.41357326507568, 37.80478699296722 ], [ -122.41370201110841, 37.80477003917697 ], [ -122.41382002830507, 37.80537189634818 ], [ -122.41382002830507, 37.80537189634818 ], [ -122.41382002830505, 37.80537189634818 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42814838886261, 37.80481666209083 ], [ -122.42808401584625, 37.80491414627021 ], [ -122.42797136306763, 37.804867523417855 ], [ -122.428035736084, 37.80477003917697 ], [ -122.42806255817413, 37.804782754520026 ], [ -122.42808401584625, 37.80475732383171 ], [ -122.42813766002655, 37.80477851607258 ], [ -122.42812156677248, 37.8048081851996 ], [ -122.42814838886261, 37.80481666209083 ], [ -122.42814838886261, 37.80481666209083 ], [ -122.42814838886261, 37.80481666209083 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41572976112366, 37.80472341623366 ], [ -122.41572976112366, 37.804740370034615 ], [ -122.41571366786958, 37.804740370034615 ], [ -122.41570830345155, 37.80485056964608 ], [ -122.41572439670564, 37.80485056964608 ], [ -122.41571903228761, 37.80488023874414 ], [ -122.41570293903355, 37.804876000302286 ], [ -122.41569757461552, 37.804986199711365 ], [ -122.41571366786961, 37.804986199711365 ], [ -122.41570830345158, 37.80504977621872 ], [ -122.4155312776566, 37.80504129935424 ], [ -122.41553664207463, 37.804981961275594 ], [ -122.41555273532869, 37.804981961275594 ], [ -122.41556346416475, 37.804871761860184 ], [ -122.41554737091069, 37.804871761860184 ], [ -122.41554737091069, 37.804846331202526 ], [ -122.41556346416475, 37.804846331202526 ], [ -122.41556882858278, 37.804736131584754 ], [ -122.41555809974672, 37.804736131584754 ], [ -122.41555809974672, 37.8047191777828 ], [ -122.41572976112367, 37.80472341623366 ], [ -122.41572976112367, 37.80472341623366 ], [ -122.41572976112366, 37.80472341623366 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4148178100586, 37.804748846933656 ], [ -122.41377711296082, 37.80488023874414 ], [ -122.4137556552887, 37.80476580072879 ], [ -122.41479635238647, 37.80463864717042 ], [ -122.4148178100586, 37.804748846933656 ], [ -122.4148178100586, 37.804748846933656 ], [ -122.4148178100586, 37.804748846933656 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42747247219086, 37.80474460848425 ], [ -122.42735445499419, 37.80477851607258 ], [ -122.42730617523193, 37.804676793260924 ], [ -122.42733836174011, 37.80466831635362 ], [ -122.42732226848602, 37.80463864717042 ], [ -122.42738127708435, 37.80462169334611 ], [ -122.42739737033843, 37.80465136253612 ], [ -122.42742419242857, 37.80464288562588 ], [ -122.42747247219084, 37.80474460848425 ], [ -122.42747247219084, 37.80474460848425 ], [ -122.42747247219086, 37.80474460848425 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41508066654205, 37.80521507488171 ], [ -122.41495728492737, 37.805227790148145 ], [ -122.41483390331268, 37.80462593180253 ], [ -122.41496264934541, 37.804613216432486 ], [ -122.41508066654207, 37.80521507488171 ], [ -122.41508066654207, 37.80521507488171 ], [ -122.41508066654205, 37.80521507488171 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42959678173065, 37.8046937470726 ], [ -122.42938220500946, 37.8047191777828 ], [ -122.42936074733734, 37.804613216432486 ], [ -122.42957532405853, 37.80458778568577 ], [ -122.42959678173065, 37.8046937470726 ], [ -122.42959678173065, 37.8046937470726 ], [ -122.42959678173065, 37.8046937470726 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41545617580414, 37.805164213794036 ], [ -122.41533279418945, 37.80518116749381 ], [ -122.4152147769928, 37.804579308768254 ], [ -122.41533815860748, 37.8045623549303 ], [ -122.41545617580414, 37.805164213794036 ], [ -122.41545617580414, 37.805164213794036 ], [ -122.41545617580414, 37.805164213794036 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42601335048676, 37.80477851607258 ], [ -122.42591679096222, 37.80479970830737 ], [ -122.42584705352783, 37.804579308768254 ], [ -122.42593824863434, 37.8045623549303 ], [ -122.42596507072449, 37.80464288562588 ], [ -122.42592215538025, 37.80465136253612 ], [ -122.42593824863432, 37.80470222397696 ], [ -122.42598652839659, 37.8046937470726 ], [ -122.42601335048674, 37.80477851607258 ], [ -122.42601335048674, 37.80477851607258 ], [ -122.42601335048676, 37.80477851607258 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41653442382812, 37.804909907830286 ], [ -122.4164754152298, 37.80491414627021 ], [ -122.41649150848389, 37.804998915017194 ], [ -122.41643249988556, 37.80500739188654 ], [ -122.41599261760712, 37.80470222397696 ], [ -122.41599261760712, 37.80465136253609 ], [ -122.41609454154968, 37.804545401088475 ], [ -122.41652905941008, 37.804846331202526 ], [ -122.41653442382811, 37.804909907830286 ], [ -122.41653442382811, 37.804909907830286 ], [ -122.41653442382812, 37.804909907830286 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42819130420685, 37.804558116470204 ], [ -122.42818593978882, 37.8046640778996 ], [ -122.42806255817413, 37.804659839445335 ], [ -122.42806792259216, 37.804553878009884 ], [ -122.42810010910034, 37.804553878009884 ], [ -122.42810010910034, 37.804524208780705 ], [ -122.4281644821167, 37.80452844724274 ], [ -122.42815911769867, 37.804558116470204 ], [ -122.42819130420686, 37.804558116470204 ], [ -122.42819130420686, 37.804558116470204 ], [ -122.42819130420685, 37.804558116470204 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42912471294403, 37.80474460848425 ], [ -122.4290120601654, 37.804753085382806 ], [ -122.42900669574739, 37.804736131584754 ], [ -122.42884039878847, 37.804753085382806 ], [ -122.42884039878847, 37.80477427762491 ], [ -122.42871165275575, 37.80478699296722 ], [ -122.42869019508362, 37.804659839445335 ], [ -122.42867410182954, 37.804659839445335 ], [ -122.42866337299348, 37.80458778568577 ], [ -122.42867946624756, 37.80458778568577 ], [ -122.42867410182954, 37.804553878009884 ], [ -122.42879748344423, 37.804541162627416 ], [ -122.42880821228029, 37.804634408714705 ], [ -122.42898523807527, 37.804617454889396 ], [ -122.42897450923921, 37.804519970318424 ], [ -122.42908716201784, 37.80450725493011 ], [ -122.42912471294403, 37.80474460848425 ], [ -122.42912471294403, 37.80474460848425 ], [ -122.42912471294403, 37.80474460848425 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4160248041153, 37.804583547227125 ], [ -122.4154132604599, 37.804659839445335 ], [ -122.41539180278778, 37.8045623549303 ], [ -122.41600334644318, 37.8044860626114 ], [ -122.4160248041153, 37.804583547227125 ], [ -122.4160248041153, 37.804583547227125 ], [ -122.4160248041153, 37.804583547227125 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42662489414215, 37.80470646242878 ], [ -122.42653369903564, 37.8047191777828 ], [ -122.42651760578157, 37.80463864717042 ], [ -122.42656588554382, 37.80463017025873 ], [ -122.42655515670776, 37.80457507030913 ], [ -122.42650687694551, 37.804583547227125 ], [ -122.42649078369142, 37.804494539539625 ], [ -122.42658734321596, 37.8044860626114 ], [ -122.42662489414217, 37.80470646242878 ], [ -122.42662489414217, 37.80470646242878 ], [ -122.42662489414215, 37.80470646242878 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42736518383026, 37.80453268570453 ], [ -122.4272471666336, 37.80456659339016 ], [ -122.42719888687134, 37.804469108752045 ], [ -122.42722570896149, 37.804460631820916 ], [ -122.42721498012543, 37.804430962554264 ], [ -122.42727398872375, 37.80441400868229 ], [ -122.42728471755981, 37.80444367795571 ], [ -122.427316904068, 37.80443520102166 ], [ -122.42736518383025, 37.80453268570453 ], [ -122.42736518383025, 37.80453268570453 ], [ -122.42736518383026, 37.80453268570453 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42609918117523, 37.804414008682265 ], [ -122.42599725723267, 37.80442672408664 ], [ -122.42599189281464, 37.80438857786698 ], [ -122.42592215538026, 37.80439705480637 ], [ -122.42592751979828, 37.804430962554264 ], [ -122.42581486701965, 37.80444367795571 ], [ -122.4258041381836, 37.8043673855142 ], [ -122.42608845233919, 37.804341954682855 ], [ -122.42609918117525, 37.804414008682265 ], [ -122.42609918117525, 37.804414008682265 ], [ -122.42609918117523, 37.804414008682265 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42822349071503, 37.804341954682855 ], [ -122.42820739746094, 37.80444791642237 ], [ -122.42808401584625, 37.80443520102166 ], [ -122.42809474468231, 37.8043292392639 ], [ -122.42812693119049, 37.804333477737124 ], [ -122.42813229560852, 37.8043038084194 ], [ -122.42819130420685, 37.8043080468941 ], [ -122.42819130420685, 37.804337716210114 ], [ -122.42822349071503, 37.804341954682855 ], [ -122.42822349071503, 37.804341954682855 ], [ -122.42822349071503, 37.804341954682855 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42655515670776, 37.804358908571395 ], [ -122.42644786834717, 37.8043673855142 ], [ -122.42644250392915, 37.804333477737124 ], [ -122.42637276649477, 37.804337716210114 ], [ -122.42637813091278, 37.80437586245604 ], [ -122.42627084255219, 37.80438433939691 ], [ -122.42626011371613, 37.804312285368546 ], [ -122.4265444278717, 37.80428261604232 ], [ -122.42655515670776, 37.804358908571395 ], [ -122.42655515670776, 37.804358908571395 ], [ -122.42655515670776, 37.804358908571395 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42496192455292, 37.80451149339313 ], [ -122.42472589015962, 37.804541162627416 ], [ -122.42472052574159, 37.804519970318424 ], [ -122.4245971441269, 37.80453268570453 ], [ -122.42460250854494, 37.804553878009884 ], [ -122.42366373538972, 37.8046725548074 ], [ -122.42362082004547, 37.804469108752045 ], [ -122.4246883392334, 37.804333477737124 ], [ -122.42468297481537, 37.804312285368546 ], [ -122.42491900920868, 37.80428261604232 ], [ -122.42496192455292, 37.8045114933931 ], [ -122.42496192455292, 37.8045114933931 ], [ -122.42496192455292, 37.80451149339313 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42991328239441, 37.8043038084194 ], [ -122.42983281612396, 37.804333477737124 ], [ -122.42980062961578, 37.80427837756615 ], [ -122.42988646030426, 37.80424870822632 ], [ -122.42991328239441, 37.8043038084194 ], [ -122.42991328239441, 37.8043038084194 ], [ -122.42991328239441, 37.8043038084194 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42721498012543, 37.80427413908977 ], [ -122.42713451385498, 37.8043504316276 ], [ -122.42702722549438, 37.80427837756615 ], [ -122.4270486831665, 37.80426142365914 ], [ -122.42702186107635, 37.80424023126987 ], [ -122.42705941200256, 37.80420208495388 ], [ -122.42709159851074, 37.80422327735408 ], [ -122.42711305618286, 37.8042063234344 ], [ -122.42721498012543, 37.80427413908977 ], [ -122.42721498012543, 37.80427413908977 ], [ -122.42721498012543, 37.80427413908977 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4137932062149, 37.80434619315537 ], [ -122.41347670555115, 37.80438857786698 ], [ -122.41344451904297, 37.80421903887453 ], [ -122.41376101970673, 37.804176654065614 ], [ -122.41377711296082, 37.804235992791284 ], [ -122.41372346878052, 37.80424446974821 ], [ -122.41373419761658, 37.80428685451822 ], [ -122.41378247737883, 37.80428261604232 ], [ -122.41379320621489, 37.80434619315537 ], [ -122.41379320621489, 37.80434619315537 ], [ -122.4137932062149, 37.80434619315537 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4112343788147, 37.80451149339313 ], [ -122.41116464138031, 37.804519970318424 ], [ -122.41116464138031, 37.80450301646686 ], [ -122.41090714931488, 37.80453268570453 ], [ -122.4108749628067, 37.80437162398523 ], [ -122.4107676744461, 37.80438433939691 ], [ -122.41074085235596, 37.80422327735411 ], [ -122.41095542907715, 37.80419784647312 ], [ -122.41095006465912, 37.804151223168596 ], [ -122.41105198860168, 37.80413850771679 ], [ -122.41105735301971, 37.80417241558338 ], [ -122.4110895395279, 37.8041681771009 ], [ -122.41109490394591, 37.80418089254761 ], [ -122.41113245487212, 37.804176654065614 ], [ -122.41114318370818, 37.80425294670417 ], [ -122.41118073463439, 37.80424870822632 ], [ -122.41123437881468, 37.8045114933931 ], [ -122.41123437881468, 37.8045114933931 ], [ -122.4112343788147, 37.80451149339313 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41164207458496, 37.80482937742587 ], [ -122.41132557392119, 37.804867523417855 ], [ -122.41129338741301, 37.80471070088035 ], [ -122.41135776042938, 37.80470222397696 ], [ -122.41126120090483, 37.80422751583339 ], [ -122.41124510765076, 37.80422751583339 ], [ -122.4112343788147, 37.80415546165205 ], [ -122.41129338741301, 37.80414698468492 ], [ -122.411288022995, 37.80412155377767 ], [ -122.41138994693756, 37.80410883832076 ], [ -122.41139531135558, 37.80413426923238 ], [ -122.4115079641342, 37.80412155377767 ], [ -122.41164207458495, 37.80482937742587 ], [ -122.41164207458495, 37.80482937742587 ], [ -122.41164207458496, 37.80482937742587 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42841124534607, 37.80413850771679 ], [ -122.42837905883789, 37.804159700135244 ], [ -122.42840051651001, 37.804176654065614 ], [ -122.42829322814941, 37.8042402312699 ], [ -122.42821812629698, 37.804159700135244 ], [ -122.42832541465759, 37.80409612286167 ], [ -122.42834687232971, 37.80411731529226 ], [ -122.42837905883789, 37.80410036134828 ], [ -122.42841124534607, 37.80413850771679 ], [ -122.42841124534607, 37.80413850771679 ], [ -122.42841124534607, 37.80413850771679 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4288672208786, 37.8040706919369 ], [ -122.42876529693604, 37.804087645887726 ], [ -122.42875456809998, 37.80405373798221 ], [ -122.42868483066559, 37.80406645344859 ], [ -122.42869555950165, 37.80410459983463 ], [ -122.42858827114105, 37.80412579226283 ], [ -122.42856681346893, 37.804049499492926 ], [ -122.42884576320648, 37.80399863760254 ], [ -122.4288672208786, 37.8040706919369 ], [ -122.4288672208786, 37.8040706919369 ], [ -122.4288672208786, 37.8040706919369 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41524696350098, 37.80394353718175 ], [ -122.41509139537811, 37.80396472965615 ], [ -122.41505920886993, 37.803824859212796 ], [ -122.41506457328796, 37.80382062071037 ], [ -122.41524696350096, 37.80394353718175 ], [ -122.41524696350096, 37.80394353718175 ], [ -122.41524696350098, 37.80394353718175 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42488145828247, 37.804087645887726 ], [ -122.42469370365143, 37.80410883832076 ], [ -122.4246883392334, 37.80407916891281 ], [ -122.42464005947113, 37.804087645887726 ], [ -122.42463469505311, 37.80405797647123 ], [ -122.42442011833192, 37.804087645887726 ], [ -122.42443084716798, 37.80411731529226 ], [ -122.4243611097336, 37.80412579226283 ], [ -122.42436647415163, 37.80416817710093 ], [ -122.42421627044679, 37.804185131029364 ], [ -122.42420554161073, 37.80412579226283 ], [ -122.42411971092224, 37.80413850771679 ], [ -122.42412507534027, 37.80416393861821 ], [ -122.42408215999603, 37.80416817710093 ], [ -122.42408752441405, 37.80419784647312 ], [ -122.42359936237335, 37.80426142365914 ], [ -122.4234491586685, 37.80351968641686 ], [ -122.42394268512726, 37.80345610859232 ], [ -122.42395877838133, 37.803532401975204 ], [ -122.42409288883208, 37.80351544789693 ], [ -122.42407679557799, 37.80344763154491 ], [ -122.42421627044678, 37.80343067744717 ], [ -122.42423236370085, 37.80350273233566 ], [ -122.42451667785645, 37.803464585638736 ], [ -122.42451131343842, 37.80343915449654 ], [ -122.42455422878265, 37.80343491597197 ], [ -122.4245434999466, 37.80338829218581 ], [ -122.42473125457764, 37.80336286101732 ], [ -122.42488145828248, 37.8040876458877 ], [ -122.42488145828248, 37.8040876458877 ], [ -122.42488145828247, 37.804087645887726 ], [ -122.42418944835663, 37.804049499492905 ], [ -122.42415189743042, 37.8038630057236 ], [ -122.42403924465181, 37.80387572122283 ], [ -122.42401242256166, 37.80375704314487 ], [ -122.42413043975831, 37.80374432762521 ], [ -122.4241089820862, 37.80362564933611 ], [ -122.42407143116002, 37.803629887849716 ], [ -122.42406606674199, 37.80358326418665 ], [ -122.42371737957005, 37.80362564933611 ], [ -122.42380857467653, 37.80409612286165 ], [ -122.42418944835664, 37.804049499492905 ], [ -122.42418944835664, 37.804049499492905 ], [ -122.42488145828247, 37.804087645887726 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41450667381287, 37.80306616340459 ], [ -122.41439938545227, 37.80307887904102 ], [ -122.41402924060822, 37.802824565896664 ], [ -122.41402924060822, 37.80279913453407 ], [ -122.41444766521454, 37.802752510346544 ], [ -122.41450667381287, 37.80306616340459 ], [ -122.41450667381287, 37.80306616340459 ], [ -122.41450667381287, 37.80306616340459 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4122428894043, 37.80284999725051 ], [ -122.41211414337158, 37.80286271292414 ], [ -122.41206049919128, 37.80259144474508 ], [ -122.412189245224, 37.80257449045081 ], [ -122.4122428894043, 37.80284999725051 ], [ -122.4122428894043, 37.80284999725051 ], [ -122.4122428894043, 37.80284999725051 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41266131401062, 37.80279913453407 ], [ -122.41226434707642, 37.80284999725051 ], [ -122.41221606731415, 37.80261687617921 ], [ -122.41261303424835, 37.80256601330221 ], [ -122.41266131401062, 37.80279913453407 ], [ -122.41266131401062, 37.80279913453407 ], [ -122.41266131401062, 37.80279913453407 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40950167179108, 37.80257872902474 ], [ -122.40950167179108, 37.80257872902474 ], [ -122.40950167179108, 37.80256601330221 ], [ -122.40950167179108, 37.80257872902474 ], [ -122.40950167179108, 37.80257872902474 ], [ -122.40950167179108, 37.80257872902474 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41288125514984, 37.802510911812625 ], [ -122.41270959377287, 37.80253210469809 ], [ -122.41265594959258, 37.802248119527505 ], [ -122.41276323795319, 37.80223540374806 ], [ -122.4127686023712, 37.802256596712596 ], [ -122.41282761096953, 37.802248119527505 ], [ -122.41288125514983, 37.802510911812625 ], [ -122.41288125514983, 37.802510911812625 ], [ -122.41288125514984, 37.802510911812625 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42451667785645, 37.802239642341455 ], [ -122.42414653301239, 37.802282028262006 ], [ -122.42409288883209, 37.80200651934365 ], [ -122.42445766925812, 37.80196413326501 ], [ -122.4244737625122, 37.80204466679365 ], [ -122.42420017719267, 37.80207857562153 ], [ -122.4242216348648, 37.80218454060837 ], [ -122.42450058460234, 37.802150631829136 ], [ -122.42451667785643, 37.802239642341426 ], [ -122.42451667785643, 37.802239642341426 ], [ -122.42451667785645, 37.802239642341455 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41694748401642, 37.80202771237386 ], [ -122.41686701774599, 37.802036189584236 ], [ -122.41683483123781, 37.80187936103475 ], [ -122.41692066192628, 37.80187088380636 ], [ -122.41694748401642, 37.80202771237386 ], [ -122.41694748401642, 37.80202771237386 ], [ -122.41694748401642, 37.80202771237386 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4168348312378, 37.80200651934365 ], [ -122.4164056777954, 37.802053144002095 ], [ -122.41636276245116, 37.80180306594429 ], [ -122.41679191589355, 37.80175644112801 ], [ -122.4168348312378, 37.80200651934365 ], [ -122.4168348312378, 37.80200651934365 ], [ -122.4168348312378, 37.80200651934365 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40966260433197, 37.80162080513147 ], [ -122.40954995155334, 37.801633521016726 ], [ -122.40951240062714, 37.80143006658992 ], [ -122.40962505340576, 37.80141735066961 ], [ -122.40966260433197, 37.80162080513147 ], [ -122.40966260433197, 37.80162080513147 ], [ -122.40966260433197, 37.80162080513147 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41055309772491, 37.801786111469056 ], [ -122.41009712219238, 37.80183697488311 ], [ -122.4100112915039, 37.80140463474716 ], [ -122.41036534309387, 37.80135800967936 ], [ -122.41043508052826, 37.80170133903446 ], [ -122.4105316400528, 37.801688623160885 ], [ -122.41055309772491, 37.801786111469056 ], [ -122.41055309772491, 37.801786111469056 ], [ -122.41055309772491, 37.801786111469056 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42583096027374, 37.801603850614384 ], [ -122.4257504940033, 37.80161656650256 ], [ -122.42576122283936, 37.80168014591061 ], [ -122.42563247680664, 37.801692861785654 ], [ -122.42564857006072, 37.80179882732586 ], [ -122.42538571357726, 37.80182849764988 ], [ -122.42529988288878, 37.80140039610585 ], [ -122.42538571357726, 37.801391918822475 ], [ -122.42545545101164, 37.80173948664206 ], [ -122.42556810379027, 37.801726770775055 ], [ -122.42548763751982, 37.80131986187471 ], [ -122.42558956146239, 37.80130714593547 ], [ -122.42559492588039, 37.80134953239114 ], [ -122.4257773160934, 37.80132833916636 ], [ -122.4258309602737, 37.801603850614384 ], [ -122.4258309602737, 37.801603850614384 ], [ -122.42583096027374, 37.801603850614384 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41143822669983, 37.80144278250799 ], [ -122.41119682788849, 37.80147245297504 ], [ -122.41115391254425, 37.80123932755579 ], [ -122.41132020950317, 37.801218134299376 ], [ -122.41141140460968, 37.8012859526985 ], [ -122.41143822669981, 37.80144278250799 ], [ -122.41143822669981, 37.80144278250799 ], [ -122.41143822669983, 37.80144278250799 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41479098796844, 37.80110792926797 ], [ -122.41452276706696, 37.801141838525915 ], [ -122.41450130939484, 37.801035872043144 ], [ -122.41476953029633, 37.80100196273655 ], [ -122.41479098796844, 37.80110792926797 ], [ -122.41479098796844, 37.80110792926797 ], [ -122.41479098796844, 37.80110792926797 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42432355880737, 37.801294429994016 ], [ -122.424076795578, 37.80132833916636 ], [ -122.42400705814363, 37.80098076941203 ], [ -122.42425382137299, 37.80095109874748 ], [ -122.42432355880737, 37.801294429994016 ], [ -122.42432355880737, 37.801294429994016 ], [ -122.42432355880737, 37.801294429994016 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41539180278778, 37.80103163338067 ], [ -122.4149090051651, 37.80109521329224 ], [ -122.41486608982086, 37.800879041369654 ], [ -122.41534888744354, 37.80081546127204 ], [ -122.41539180278778, 37.80103163338067 ], [ -122.41539180278778, 37.80103163338067 ], [ -122.41539180278778, 37.80103163338067 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42514431476593, 37.80097653074639 ], [ -122.42471516132355, 37.80103163338067 ], [ -122.42467761039734, 37.80087056402646 ], [ -122.42510676383972, 37.80081122259691 ], [ -122.42514431476593, 37.80097653074639 ], [ -122.42514431476593, 37.80097653074639 ], [ -122.42514431476593, 37.80097653074639 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4251389503479, 37.80080698392156 ], [ -122.42467224597931, 37.800862086682315 ], [ -122.42465078830719, 37.8007434037619 ], [ -122.42511212825777, 37.8006883009126 ], [ -122.4251389503479, 37.80080698392156 ], [ -122.4251389503479, 37.80080698392156 ], [ -122.4251389503479, 37.80080698392156 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4114865064621, 37.80076459715455 ], [ -122.41117000579833, 37.80080274524595 ], [ -122.41105198860167, 37.8007434037619 ], [ -122.41102516651154, 37.80061200459185 ], [ -122.41144895553587, 37.80056114033423 ], [ -122.41148650646208, 37.80076459715455 ], [ -122.41148650646208, 37.80076459715455 ], [ -122.4114865064621, 37.80076459715455 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41134703159332, 37.80056537902371 ], [ -122.41102516651154, 37.800603527218016 ], [ -122.41100907325746, 37.80051451473398 ], [ -122.41133093833925, 37.800476366493726 ], [ -122.41134703159332, 37.80056537902371 ], [ -122.41134703159332, 37.80056537902371 ], [ -122.41134703159332, 37.80056537902371 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42507457733154, 37.80067982354754 ], [ -122.42490291595459, 37.8007010169584 ], [ -122.4248868227005, 37.80061624327842 ], [ -122.42479026317596, 37.80062895933662 ], [ -122.42480635643005, 37.800717971682715 ], [ -122.42464542388915, 37.80073492640316 ], [ -122.42459714412688, 37.80048908257599 ], [ -122.42502629756927, 37.800433979536976 ], [ -122.42507457733153, 37.80067982354754 ], [ -122.42507457733153, 37.80067982354754 ], [ -122.42507457733154, 37.80067982354754 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41126120090485, 37.80048060518806 ], [ -122.41100907325745, 37.80051027604161 ], [ -122.41097152233124, 37.800319534632266 ], [ -122.41122901439667, 37.800289863702076 ], [ -122.41126120090485, 37.80048060518806 ], [ -122.41126120090485, 37.80048060518806 ], [ -122.41126120090485, 37.80048060518806 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40994691848755, 37.80026867017326 ], [ -122.40976452827454, 37.800289863702105 ], [ -122.4097377061844, 37.80014574758602 ], [ -122.40994691848756, 37.80026867017326 ], [ -122.40994691848756, 37.80026867017326 ], [ -122.40994691848755, 37.80026867017326 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40976452827454, 37.800289863702076 ], [ -122.40950167179108, 37.800323773335606 ], [ -122.40950167179108, 37.80013727015868 ], [ -122.40970015525818, 37.800111837870794 ], [ -122.40973770618439, 37.80014574758602 ], [ -122.40976452827452, 37.800289863702076 ], [ -122.40976452827452, 37.800289863702076 ], [ -122.40976452827454, 37.800289863702076 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41071403026581, 37.80017541857407 ], [ -122.41029024124146, 37.80023052180601 ], [ -122.41024196147919, 37.800192373419065 ], [ -122.41021513938905, 37.80006945070486 ], [ -122.41068184375763, 37.800010108631696 ], [ -122.41071403026581, 37.80017541857407 ], [ -122.41071403026581, 37.80017541857407 ], [ -122.41071403026581, 37.80017541857407 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40970015525818, 37.800111837870794 ], [ -122.40950167179108, 37.80013727015868 ], [ -122.40950167179108, 37.800010108631696 ], [ -122.40954458713531, 37.800005869910365 ], [ -122.40970015525818, 37.800111837870794 ], [ -122.40970015525818, 37.800111837870794 ], [ -122.40970015525818, 37.800111837870794 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40954458713531, 37.800005869910365 ], [ -122.40950167179108, 37.800010108631696 ], [ -122.40950167179108, 37.79997196013091 ], [ -122.40954458713531, 37.800005869910365 ], [ -122.40954458713531, 37.800005869910365 ], [ -122.40954458713531, 37.800005869910365 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41009712219238, 37.80009064429088 ], [ -122.40989327430727, 37.79994652778611 ], [ -122.4098825454712, 37.799887185614196 ], [ -122.40995764732362, 37.799874469428296 ], [ -122.40996301174164, 37.79989566307024 ], [ -122.41005420684814, 37.79988294688579 ], [ -122.41009712219238, 37.800090644290854 ], [ -122.41009712219238, 37.800090644290854 ], [ -122.41009712219238, 37.80009064429088 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41024196147919, 37.800192373419065 ], [ -122.41009712219238, 37.80009064429088 ], [ -122.41005420684814, 37.79988294688579 ], [ -122.4101722240448, 37.7998659919698 ], [ -122.41021513938905, 37.80006945070486 ], [ -122.41024196147919, 37.800192373419065 ], [ -122.41024196147919, 37.800192373419065 ], [ -122.41024196147919, 37.800192373419065 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40989327430725, 37.79994652778611 ], [ -122.40950167179108, 37.799654055191525 ], [ -122.40950167179108, 37.79956080281643 ], [ -122.4098128080368, 37.79951417658475 ], [ -122.40989327430725, 37.79994652778611 ], [ -122.40989327430725, 37.79994652778611 ], [ -122.40989327430725, 37.79994652778611 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41004347801208, 37.79967101015616 ], [ -122.41003274917603, 37.7996837263771 ], [ -122.41003811359406, 37.79971763628886 ], [ -122.40995228290556, 37.79972611376437 ], [ -122.40994691848755, 37.7996922038565 ], [ -122.40993618965149, 37.7996922038565 ], [ -122.4099200963974, 37.79962014525055 ], [ -122.40993618965149, 37.79961590650686 ], [ -122.40993082523346, 37.79959471278463 ], [ -122.40991473197938, 37.79959471278463 ], [ -122.40990400314332, 37.79951417658475 ], [ -122.40991473197938, 37.79950569908492 ], [ -122.40999519824982, 37.79949722158412 ], [ -122.41000592708588, 37.79950146033463 ], [ -122.41004347801208, 37.79967101015618 ], [ -122.41004347801208, 37.79967101015618 ], [ -122.41004347801208, 37.79967101015616 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41012394428253, 37.79967101015616 ], [ -122.41004347801208, 37.799679487637015 ], [ -122.4100112915039, 37.79950146033463 ], [ -122.41002202033997, 37.79949298283334 ], [ -122.41004347801208, 37.79948874408232 ], [ -122.41005420684814, 37.79949722158412 ], [ -122.41005957126617, 37.79948874408232 ], [ -122.4100810289383, 37.79948874408232 ], [ -122.41009175777435, 37.79949298283334 ], [ -122.41012394428253, 37.79967101015616 ], [ -122.41012394428253, 37.79967101015616 ], [ -122.41012394428253, 37.79967101015616 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41038680076599, 37.79981512719847 ], [ -122.41024196147919, 37.799836320857466 ], [ -122.41016685962677, 37.799480266579586 ], [ -122.41032242774963, 37.79945907281843 ], [ -122.41038680076599, 37.79981512719847 ], [ -122.41038680076599, 37.79981512719847 ], [ -122.41038680076599, 37.79981512719847 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41057991981506, 37.79951417658475 ], [ -122.41034388542175, 37.799543847826506 ], [ -122.41032242774963, 37.79945907281843 ], [ -122.41056382656097, 37.79942940154263 ], [ -122.41057991981506, 37.79951417658475 ], [ -122.41057991981506, 37.79951417658475 ], [ -122.41057991981506, 37.79951417658475 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41052627563477, 37.79923865734216 ], [ -122.41033315658571, 37.799259851166546 ], [ -122.41032242774965, 37.79922170227827 ], [ -122.41052091121675, 37.799200508442944 ], [ -122.41052627563477, 37.79923865734216 ], [ -122.41052627563477, 37.79923865734216 ], [ -122.41052627563477, 37.79923865734216 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42392659187317, 37.79942940154263 ], [ -122.42335259914398, 37.79950569908492 ], [ -122.42327213287354, 37.79911997181326 ], [ -122.42385685443878, 37.799056390201464 ], [ -122.42392659187317, 37.79942940154263 ], [ -122.42392659187317, 37.79942940154263 ], [ -122.42392659187317, 37.79942940154263 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42119610309601, 37.79886564503779 ], [ -122.42080450057983, 37.798912271678844 ], [ -122.42078304290771, 37.798785108043006 ], [ -122.42117464542389, 37.7987384813217 ], [ -122.42119610309601, 37.79886564503779 ], [ -122.42119610309601, 37.79886564503779 ], [ -122.42119610309601, 37.79886564503779 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42172181606293, 37.7988020632071 ], [ -122.42163062095642, 37.79881054078769 ], [ -122.42159843444824, 37.798657944188264 ], [ -122.42168962955475, 37.79864522779074 ], [ -122.42172181606293, 37.7988020632071 ], [ -122.42172181606293, 37.7988020632071 ], [ -122.42172181606293, 37.7988020632071 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42197394371033, 37.79876815287502 ], [ -122.42188274860382, 37.798780869251374 ], [ -122.42185056209564, 37.798619794989136 ], [ -122.42194175720215, 37.79860707858504 ], [ -122.42197394371033, 37.79876815287502 ], [ -122.42197394371033, 37.79876815287502 ], [ -122.42197394371033, 37.79876815287502 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42117464542389, 37.7987384813217 ], [ -122.42078304290771, 37.798785108043006 ], [ -122.42075622081757, 37.79865370538933 ], [ -122.42114782333374, 37.79860707858507 ], [ -122.42117464542389, 37.7987384813217 ], [ -122.42117464542389, 37.7987384813217 ], [ -122.42117464542389, 37.7987384813217 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40952849388123, 37.79875967528956 ], [ -122.40950167179108, 37.798763914082414 ], [ -122.40950167179108, 37.79860283978321 ], [ -122.40950167179108, 37.79860283978321 ], [ -122.40952849388123, 37.79875967528956 ], [ -122.40952849388123, 37.79875967528956 ], [ -122.40952849388123, 37.79875967528956 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42188274860382, 37.798780869251374 ], [ -122.42180228233337, 37.79878934683441 ], [ -122.42176473140717, 37.79861131738665 ], [ -122.42185056209564, 37.798598600981116 ], [ -122.42188274860382, 37.798780869251374 ], [ -122.42188274860382, 37.798780869251374 ], [ -122.42188274860382, 37.798780869251374 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42180228233337, 37.79878934683441 ], [ -122.42172181606293, 37.7988020632071 ], [ -122.42168962955475, 37.79864522779074 ], [ -122.42167890071869, 37.798598600981116 ], [ -122.42176473140717, 37.79859012337622 ], [ -122.42180228233337, 37.79878934683441 ], [ -122.42180228233337, 37.79878934683441 ], [ -122.42180228233337, 37.79878934683441 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40967869758606, 37.79877663045951 ], [ -122.40957140922546, 37.79878934683441 ], [ -122.40952849388123, 37.798763914082414 ], [ -122.40950167179108, 37.79860283978321 ], [ -122.40963578224182, 37.79858588457339 ], [ -122.40967869758606, 37.79877663045951 ], [ -122.40967869758606, 37.79877663045951 ], [ -122.40967869758606, 37.79877663045951 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42223143577576, 37.7987384813217 ], [ -122.42200076580048, 37.798763914082414 ], [ -122.4219685792923, 37.79861131738668 ], [ -122.4220222234726, 37.798602839783236 ], [ -122.42219924926758, 37.798581645770334 ], [ -122.42223143577576, 37.7987384813217 ], [ -122.42223143577576, 37.7987384813217 ], [ -122.42223143577576, 37.7987384813217 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42145895957947, 37.7988317347349 ], [ -122.4212872982025, 37.79885292867605 ], [ -122.4212336540222, 37.798598600981116 ], [ -122.42141067981719, 37.79857740696702 ], [ -122.42145895957945, 37.7988317347349 ], [ -122.42145895957945, 37.7988317347349 ], [ -122.42145895957947, 37.7988317347349 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42163062095642, 37.79881054078769 ], [ -122.42145895957947, 37.7988317347349 ], [ -122.4214106798172, 37.79857740696702 ], [ -122.42157697677612, 37.79855621294684 ], [ -122.42159843444824, 37.798657944188264 ], [ -122.42163062095642, 37.79881054078769 ], [ -122.42163062095642, 37.79881054078769 ], [ -122.42163062095642, 37.79881054078769 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41014540195465, 37.79892074924677 ], [ -122.40979135036469, 37.79896737585307 ], [ -122.40972697734833, 37.79864522779074 ], [ -122.40978062152863, 37.79863675019119 ], [ -122.40976452827454, 37.79857316816348 ], [ -122.4100649356842, 37.79853501892056 ], [ -122.41014540195465, 37.79892074924677 ], [ -122.41014540195465, 37.79892074924677 ], [ -122.41014540195465, 37.79892074924677 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42219924926758, 37.798581645770334 ], [ -122.4220222234726, 37.798602839783236 ], [ -122.4220061302185, 37.798522302501894 ], [ -122.42218315601349, 37.79850110846591 ], [ -122.42219924926758, 37.798581645770334 ], [ -122.42219924926758, 37.798581645770334 ], [ -122.42219924926758, 37.798581645770334 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41041362285614, 37.79868761577395 ], [ -122.41025805473328, 37.79870457096041 ], [ -122.41021513938904, 37.798513824888246 ], [ -122.41037607192993, 37.79849686965797 ], [ -122.41041362285614, 37.79868761577395 ], [ -122.41041362285614, 37.79868761577395 ], [ -122.41041362285614, 37.79868761577395 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42114782333374, 37.79860707858507 ], [ -122.42075622081757, 37.79865370538933 ], [ -122.42072939872743, 37.79853501892058 ], [ -122.42106735706331, 37.798496869657995 ], [ -122.4211210012436, 37.79848839204139 ], [ -122.42114782333375, 37.79860707858507 ], [ -122.42114782333375, 37.79860707858507 ], [ -122.42114782333374, 37.79860707858507 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42218315601349, 37.79850110846591 ], [ -122.4220061302185, 37.798522302501894 ], [ -122.42194175720215, 37.798530780114596 ], [ -122.42193102836609, 37.79847567561469 ], [ -122.42217242717743, 37.798446003943866 ], [ -122.42218315601349, 37.79850110846591 ], [ -122.42218315601349, 37.79850110846591 ], [ -122.42218315601349, 37.79850110846591 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42302536964417, 37.7985943621788 ], [ -122.42292881011963, 37.79860707858507 ], [ -122.42289662361145, 37.798437526321464 ], [ -122.42299318313599, 37.79842904869807 ], [ -122.42302536964417, 37.7985943621788 ], [ -122.42302536964417, 37.7985943621788 ], [ -122.42302536964417, 37.7985943621788 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42292881011963, 37.79860707858507 ], [ -122.42278933525085, 37.79862403379003 ], [ -122.42275178432465, 37.798437526321464 ], [ -122.42289125919342, 37.798420571073684 ], [ -122.42289662361145, 37.798437526321464 ], [ -122.42292881011963, 37.79860707858507 ], [ -122.42292881011963, 37.79860707858507 ], [ -122.42292881011963, 37.79860707858507 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42278933525085, 37.798624033790006 ], [ -122.4224406480789, 37.79866642178537 ], [ -122.42240309715271, 37.798458720375685 ], [ -122.42274641990662, 37.798416332261134 ], [ -122.42275178432463, 37.798437526321464 ], [ -122.42278933525084, 37.79862403379003 ], [ -122.42278933525084, 37.79862403379003 ], [ -122.42278933525085, 37.798624033790006 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4210673570633, 37.79849686965797 ], [ -122.42072939872742, 37.79853501892058 ], [ -122.42071330547333, 37.798458720375685 ], [ -122.42105662822723, 37.798416332261134 ], [ -122.4210673570633, 37.79849686965797 ], [ -122.4210673570633, 37.79849686965797 ], [ -122.4210673570633, 37.79849686965797 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4231219291687, 37.798581645770334 ], [ -122.42302536964415, 37.7985943621788 ], [ -122.42299318313597, 37.79842904869807 ], [ -122.42308974266052, 37.798416332261134 ], [ -122.4231219291687, 37.798581645770334 ], [ -122.4231219291687, 37.798581645770334 ], [ -122.4231219291687, 37.798581645770334 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42376565933228, 37.798505347273604 ], [ -122.42350280284882, 37.79853501892058 ], [ -122.4234813451767, 37.798424809886 ], [ -122.42374420166016, 37.79839513819475 ], [ -122.42376565933228, 37.798505347273604 ], [ -122.42376565933228, 37.798505347273604 ], [ -122.42376565933228, 37.798505347273604 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42374420166016, 37.79839513819475 ], [ -122.4234813451767, 37.798424809886 ], [ -122.42346525192262, 37.79835275004371 ], [ -122.42372810840608, 37.79832307832353 ], [ -122.42374420166016, 37.79839513819475 ], [ -122.42374420166016, 37.79839513819475 ], [ -122.42374420166016, 37.79839513819475 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42274641990662, 37.798416332261134 ], [ -122.42240309715271, 37.798458720375685 ], [ -122.42238163948059, 37.79835275004371 ], [ -122.4227249622345, 37.798310361868346 ], [ -122.42274641990662, 37.798416332261134 ], [ -122.42274641990662, 37.798416332261134 ], [ -122.42274641990662, 37.798416332261134 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42333114147186, 37.79855621294684 ], [ -122.4231219291687, 37.798581645770334 ], [ -122.42308974266052, 37.798416332261134 ], [ -122.42307364940643, 37.79833155595906 ], [ -122.4232828617096, 37.798306123049485 ], [ -122.42333114147186, 37.79855621294684 ], [ -122.42333114147186, 37.79855621294684 ], [ -122.42333114147186, 37.79855621294684 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42372810840607, 37.79832307832353 ], [ -122.42346525192261, 37.79835275004371 ], [ -122.42334723472594, 37.79836970530704 ], [ -122.42333114147186, 37.79826797366868 ], [ -122.42370665073395, 37.79822134662093 ], [ -122.42372810840607, 37.79832307832353 ], [ -122.42372810840607, 37.79832307832353 ], [ -122.42372810840607, 37.79832307832353 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42091715335846, 37.79843328750988 ], [ -122.42071330547333, 37.798458720375685 ], [ -122.42067039012909, 37.79823830191443 ], [ -122.42087423801422, 37.79821286897272 ], [ -122.42091715335846, 37.79843328750988 ], [ -122.42091715335846, 37.79843328750988 ], [ -122.42091715335846, 37.79843328750988 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42217242717743, 37.79844600394389 ], [ -122.42193102836609, 37.79847567561469 ], [ -122.42188274860382, 37.79847991442385 ], [ -122.4217540025711, 37.798437526321464 ], [ -122.42172718048097, 37.798310361868346 ], [ -122.42183446884157, 37.79825525720401 ], [ -122.42182910442354, 37.79821710779695 ], [ -122.42190420627595, 37.79820863014827 ], [ -122.42211878299715, 37.798178958370166 ], [ -122.42217242717744, 37.798446003943866 ], [ -122.42217242717744, 37.798446003943866 ], [ -122.42217242717743, 37.79844600394389 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4227249622345, 37.798310361868346 ], [ -122.42238163948059, 37.79835275004371 ], [ -122.42235481739046, 37.79821710779695 ], [ -122.42259085178375, 37.79818743602226 ], [ -122.42269814014436, 37.79817471954375 ], [ -122.4227249622345, 37.798310361868346 ], [ -122.4227249622345, 37.798310361868346 ], [ -122.4227249622345, 37.798310361868346 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4108213186264, 37.79824254073718 ], [ -122.4107301235199, 37.798251018382 ], [ -122.410569190979, 37.79827221248973 ], [ -122.41054773330688, 37.79817471954375 ], [ -122.41079986095428, 37.798145047752044 ], [ -122.4108213186264, 37.79824254073718 ], [ -122.4108213186264, 37.79824254073718 ], [ -122.4108213186264, 37.79824254073718 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42117464542389, 37.79833155595906 ], [ -122.42105662822722, 37.798344272410596 ], [ -122.42105662822722, 37.798344272410596 ], [ -122.42101907730103, 37.79814080892369 ], [ -122.42113709449768, 37.79812385360782 ], [ -122.42117464542389, 37.79833155595906 ], [ -122.42117464542389, 37.79833155595906 ], [ -122.42117464542389, 37.79833155595906 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42127656936646, 37.7983569888599 ], [ -122.42118537425995, 37.79836970530704 ], [ -122.4211370944977, 37.79812385360782 ], [ -122.4212282896042, 37.79811537594843 ], [ -122.42127656936646, 37.7983569888599 ], [ -122.42127656936646, 37.7983569888599 ], [ -122.42127656936646, 37.7983569888599 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42259085178375, 37.79818743602226 ], [ -122.42235481739044, 37.79821710779695 ], [ -122.42233872413635, 37.79814080892369 ], [ -122.42257475852966, 37.79811113711837 ], [ -122.42258012294769, 37.798145047752044 ], [ -122.42259085178375, 37.79818743602226 ], [ -122.42259085178375, 37.79818743602226 ], [ -122.42259085178375, 37.79818743602226 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42211878299713, 37.798178958370166 ], [ -122.42190420627595, 37.79820863014827 ], [ -122.42189884185792, 37.798170480717104 ], [ -122.42188811302186, 37.79813657009509 ], [ -122.42210805416109, 37.79811113711837 ], [ -122.42211878299715, 37.798178958370166 ], [ -122.42211878299715, 37.798178958370166 ], [ -122.42211878299713, 37.798178958370166 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42089569568634, 37.79821286897272 ], [ -122.42087423801422, 37.79821286897272 ], [ -122.42067039012909, 37.79823830191443 ], [ -122.42064893245697, 37.79812809243717 ], [ -122.42087423801422, 37.7981026594575 ], [ -122.42089569568634, 37.79821286897272 ], [ -122.42089569568634, 37.79821286897272 ], [ -122.42089569568634, 37.79821286897272 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42138385772705, 37.798344272410596 ], [ -122.42129802703856, 37.79835275004371 ], [ -122.42124438285826, 37.79811113711837 ], [ -122.42133557796477, 37.7980984206267 ], [ -122.42138385772704, 37.798344272410596 ], [ -122.42138385772704, 37.798344272410596 ], [ -122.42138385772705, 37.798344272410596 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42370665073395, 37.79822134662093 ], [ -122.42333114147186, 37.79826797366868 ], [ -122.42328822612762, 37.79827221248973 ], [ -122.4232667684555, 37.798145047752044 ], [ -122.42336332798004, 37.79813233126623 ], [ -122.42368519306183, 37.79809418179568 ], [ -122.42370665073395, 37.79822134662093 ], [ -122.42370665073395, 37.79822134662093 ], [ -122.42370665073395, 37.79822134662093 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42146968841553, 37.79834003359367 ], [ -122.42138922214508, 37.79834851122727 ], [ -122.42133557796478, 37.79809842062673 ], [ -122.42142140865326, 37.7980899429644 ], [ -122.42145895957947, 37.79828916777156 ], [ -122.42146968841553, 37.79834003359367 ], [ -122.42146968841553, 37.79834003359367 ], [ -122.42146968841553, 37.79834003359367 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42105662822723, 37.798344272410596 ], [ -122.42094397544861, 37.7983569888599 ], [ -122.42089569568635, 37.7980984206267 ], [ -122.42100834846497, 37.79808570413287 ], [ -122.42101907730103, 37.79814080892369 ], [ -122.42105662822723, 37.798344272410596 ], [ -122.42105662822723, 37.798344272410596 ], [ -122.42105662822723, 37.798344272410596 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42155015468597, 37.79827645131055 ], [ -122.42145895957947, 37.79828916777156 ], [ -122.42142140865326, 37.7980899429644 ], [ -122.42141604423524, 37.7980772264691 ], [ -122.42150723934174, 37.79806874880436 ], [ -122.42155015468599, 37.79827645131055 ], [ -122.42155015468599, 37.79827645131055 ], [ -122.42155015468597, 37.79827645131055 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41094470024109, 37.79822558544467 ], [ -122.4108374118805, 37.79823830191443 ], [ -122.4108052253723, 37.79806450997163 ], [ -122.41091251373291, 37.79805179347195 ], [ -122.41094470024109, 37.79822558544467 ], [ -122.41094470024109, 37.79822558544467 ], [ -122.41094470024109, 37.79822558544467 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42166817188263, 37.79831883950538 ], [ -122.42156088352203, 37.79833579477649 ], [ -122.42155015468597, 37.79827645131055 ], [ -122.42150723934174, 37.79806874880436 ], [ -122.42150723934174, 37.79805603230542 ], [ -122.42161452770233, 37.798043315804286 ], [ -122.42166817188263, 37.798310361868346 ], [ -122.42166817188263, 37.79831883950538 ], [ -122.42166817188263, 37.79831883950538 ], [ -122.42166817188263, 37.79831883950538 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41130411624908, 37.79818319719633 ], [ -122.41122364997864, 37.79819167484794 ], [ -122.4111968278885, 37.79805179347195 ], [ -122.41127192974092, 37.798039076970106 ], [ -122.4113041162491, 37.79818319719633 ], [ -122.4113041162491, 37.79818319719633 ], [ -122.41130411624908, 37.79818319719633 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41104125976562, 37.79821286897272 ], [ -122.41094470024109, 37.79822558544467 ], [ -122.41091251373291, 37.79805179347195 ], [ -122.4110037088394, 37.798039076970085 ], [ -122.41104125976561, 37.79821286897272 ], [ -122.41104125976561, 37.79821286897272 ], [ -122.41104125976562, 37.79821286897272 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42210805416107, 37.79811113711837 ], [ -122.42188811302185, 37.79813657009509 ], [ -122.42187738418579, 37.79806027113865 ], [ -122.42209196090698, 37.79803483813565 ], [ -122.42210805416106, 37.79811113711837 ], [ -122.42210805416106, 37.79811113711837 ], [ -122.42210805416107, 37.79811113711837 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41139531135559, 37.798170480717104 ], [ -122.41130411624908, 37.79818319719633 ], [ -122.4112719297409, 37.798043315804286 ], [ -122.41136848926544, 37.798030599300965 ], [ -122.41139531135559, 37.798170480717104 ], [ -122.41139531135559, 37.798170480717104 ], [ -122.41139531135559, 37.798170480717104 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4111270904541, 37.79820439132355 ], [ -122.41104125976562, 37.79821286897272 ], [ -122.41100370883942, 37.798039076970106 ], [ -122.41108953952791, 37.798030599300965 ], [ -122.4111270904541, 37.79820439132355 ], [ -122.4111270904541, 37.79820439132355 ], [ -122.4111270904541, 37.79820439132355 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41079986095428, 37.798145047752044 ], [ -122.41054773330688, 37.79817471954375 ], [ -122.41052627563477, 37.79806027113865 ], [ -122.41077840328217, 37.798026360466025 ], [ -122.41079986095428, 37.798145047752044 ], [ -122.41079986095428, 37.798145047752044 ], [ -122.41079986095428, 37.798145047752044 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42174863815308, 37.79830188423037 ], [ -122.42166817188263, 37.798310361868346 ], [ -122.42161452770233, 37.798043315804286 ], [ -122.4216091632843, 37.798039076970106 ], [ -122.42169499397278, 37.798026360466025 ], [ -122.42173790931703, 37.79825525720401 ], [ -122.42174863815309, 37.79830188423037 ], [ -122.42174863815309, 37.79830188423037 ], [ -122.42174863815308, 37.79830188423037 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42368519306183, 37.79809418179568 ], [ -122.42336332798004, 37.79813233126623 ], [ -122.42334723472595, 37.79806450997163 ], [ -122.42366909980774, 37.79802212163085 ], [ -122.42368519306183, 37.798094181795655 ], [ -122.42368519306183, 37.798094181795655 ], [ -122.42368519306183, 37.79809418179568 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41122364997864, 37.79819167484794 ], [ -122.4111270904541, 37.79820439132355 ], [ -122.41108953952791, 37.798030599300965 ], [ -122.41119146347046, 37.798017882795456 ], [ -122.41119682788849, 37.79805179347195 ], [ -122.41122364997864, 37.79819167484794 ], [ -122.41122364997864, 37.79819167484794 ], [ -122.41122364997864, 37.79819167484794 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4218237400055, 37.79824254073718 ], [ -122.42173790931702, 37.79825525720401 ], [ -122.42169499397278, 37.798026360466025 ], [ -122.42168962955475, 37.79802212163088 ], [ -122.42178082466125, 37.798013643959806 ], [ -122.42181301116943, 37.79818319719633 ], [ -122.4218237400055, 37.798242540737206 ], [ -122.4218237400055, 37.798242540737206 ], [ -122.4218237400055, 37.79824254073718 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41199612617493, 37.79809418179568 ], [ -122.41175472736359, 37.79812385360782 ], [ -122.4117386341095, 37.798026360466025 ], [ -122.41183519363403, 37.798013643959806 ], [ -122.41198003292084, 37.797996688614745 ], [ -122.41199612617493, 37.79809418179568 ], [ -122.41199612617493, 37.79809418179568 ], [ -122.41199612617493, 37.79809418179568 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40985572338104, 37.79836970530704 ], [ -122.40963041782379, 37.79839513819475 ], [ -122.40950167179108, 37.798412093448356 ], [ -122.40950167179108, 37.798030599300965 ], [ -122.40954458713531, 37.798026360466025 ], [ -122.40955531597137, 37.79802212163088 ], [ -122.40978062152863, 37.797996688614745 ], [ -122.40985572338104, 37.79836970530704 ], [ -122.40985572338104, 37.79836970530704 ], [ -122.40985572338104, 37.79836970530704 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42189884185791, 37.798170480717104 ], [ -122.42181301116943, 37.79818319719633 ], [ -122.42178082466125, 37.798013643959806 ], [ -122.42177546024323, 37.79798397210339 ], [ -122.42185592651367, 37.79797125558984 ], [ -122.42187738418579, 37.79806027113865 ], [ -122.42188811302185, 37.79813657009509 ], [ -122.42189884185791, 37.79817048071708 ], [ -122.42189884185791, 37.79817048071708 ], [ -122.42189884185791, 37.798170480717104 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42366909980774, 37.79802212163088 ], [ -122.42334723472595, 37.79806450997163 ], [ -122.42327213287354, 37.79807298763686 ], [ -122.42326140403748, 37.79800516628776 ], [ -122.42365837097168, 37.79795853907413 ], [ -122.42366909980774, 37.79802212163088 ], [ -122.42366909980774, 37.79802212163088 ], [ -122.42366909980774, 37.79802212163088 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42209196090698, 37.79803483813565 ], [ -122.42187738418579, 37.79806027113865 ], [ -122.42185592651367, 37.797971255589864 ], [ -122.4220758676529, 37.7979458225562 ], [ -122.42209196090698, 37.79803483813565 ], [ -122.42209196090698, 37.79803483813565 ], [ -122.42209196090698, 37.79803483813565 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41198003292084, 37.797996688614745 ], [ -122.41183519363403, 37.798013643959806 ], [ -122.41181910037996, 37.797950061395746 ], [ -122.41196393966676, 37.79793310603611 ], [ -122.41198003292084, 37.797996688614745 ], [ -122.41198003292084, 37.797996688614745 ], [ -122.41198003292084, 37.797996688614745 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41097688674927, 37.798017882795456 ], [ -122.41079986095428, 37.798039076970106 ], [ -122.41079449653625, 37.798026360466025 ], [ -122.41077840328218, 37.798026360466025 ], [ -122.41052627563477, 37.79806027113865 ], [ -122.41051018238069, 37.797979733265805 ], [ -122.4109447002411, 37.79792462835481 ], [ -122.41096079349518, 37.79792462835481 ], [ -122.41097688674927, 37.798017882795456 ], [ -122.41097688674927, 37.798017882795456 ], [ -122.41097688674927, 37.798017882795456 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42254257202148, 37.79808146530112 ], [ -122.42233335971832, 37.79810689828806 ], [ -122.42229044437408, 37.797911911831086 ], [ -122.42249965667725, 37.79788647877699 ], [ -122.42254257202148, 37.79808146530112 ], [ -122.42254257202148, 37.79808146530112 ], [ -122.42254257202148, 37.79808146530112 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42365837097168, 37.79795853907413 ], [ -122.42326140403748, 37.79800516628776 ], [ -122.42324531078339, 37.79792886719558 ], [ -122.4236422777176, 37.79787800109037 ], [ -122.42365837097168, 37.79795853907413 ], [ -122.42365837097168, 37.79795853907413 ], [ -122.42365837097168, 37.79795853907413 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40954458713531, 37.79798397210339 ], [ -122.40950167179108, 37.797988210940744 ], [ -122.40950167179108, 37.797873762246674 ], [ -122.40951776504517, 37.797873762246674 ], [ -122.4095445871353, 37.79798397210339 ], [ -122.4095445871353, 37.79798397210339 ], [ -122.40954458713531, 37.79798397210339 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42269814014435, 37.79813233126623 ], [ -122.42258012294769, 37.798145047752044 ], [ -122.42257475852966, 37.79811113711837 ], [ -122.42253184318542, 37.797882239933806 ], [ -122.42264986038208, 37.79786952340275 ], [ -122.42269814014435, 37.79813233126623 ], [ -122.42269814014435, 37.79813233126623 ], [ -122.42269814014435, 37.79813233126623 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41151869297028, 37.79815352540803 ], [ -122.41139531135559, 37.798170480717104 ], [ -122.41136848926544, 37.798030599300965 ], [ -122.41133630275726, 37.79787800109037 ], [ -122.41145968437195, 37.797865284558576 ], [ -122.41151869297028, 37.79815352540803 ], [ -122.41151869297028, 37.79815352540803 ], [ -122.41151869297028, 37.79815352540803 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41196393966675, 37.79793310603611 ], [ -122.41181910037994, 37.797950061395746 ], [ -122.41176545619965, 37.79795853907413 ], [ -122.41174399852753, 37.79785256802462 ], [ -122.41194784641264, 37.79782713495009 ], [ -122.41196393966673, 37.79793310603611 ], [ -122.41196393966673, 37.79793310603611 ], [ -122.41196393966675, 37.79793310603611 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42323458194733, 37.79809418179568 ], [ -122.42314875125885, 37.79810689828806 ], [ -122.42314875125885, 37.79811537594843 ], [ -122.42302536964417, 37.79813233126623 ], [ -122.42305755615234, 37.798284928951475 ], [ -122.42277324199677, 37.79831883950538 ], [ -122.42268204689026, 37.797865284558576 ], [ -122.42295026779175, 37.797831373796456 ], [ -122.42296636104584, 37.79792038951381 ], [ -122.42299318313597, 37.79791615067256 ], [ -122.4229770898819, 37.79782713495009 ], [ -122.423175573349, 37.79780170186684 ], [ -122.42320239543913, 37.79793310603611 ], [ -122.42323458194733, 37.79809418179568 ], [ -122.42323458194733, 37.79809418179568 ], [ -122.42323458194733, 37.79809418179568 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41194784641266, 37.79782713495009 ], [ -122.41174399852753, 37.79785256802462 ], [ -122.41173326969147, 37.79779322417047 ], [ -122.41193175315857, 37.79777202992529 ], [ -122.41194784641266, 37.79782713495009 ], [ -122.41194784641266, 37.79782713495009 ], [ -122.41194784641266, 37.79782713495009 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4116313457489, 37.79814080892369 ], [ -122.41152405738829, 37.79815352540803 ], [ -122.41146504878998, 37.797865284558576 ], [ -122.41144895553589, 37.79777202992531 ], [ -122.41155624389648, 37.7977593133753 ], [ -122.41163134574892, 37.79814080892369 ], [ -122.41163134574892, 37.79814080892369 ], [ -122.4116313457489, 37.79814080892369 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41175472736359, 37.79812385360782 ], [ -122.41164207458496, 37.79814080892369 ], [ -122.41156697273254, 37.797767791075536 ], [ -122.41167962551116, 37.79775083567405 ], [ -122.41173863410948, 37.798026360466025 ], [ -122.41175472736357, 37.79812385360782 ], [ -122.41175472736357, 37.79812385360782 ], [ -122.41175472736359, 37.79812385360782 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42364227771759, 37.79787800109037 ], [ -122.42324531078339, 37.79792886719558 ], [ -122.42320239543913, 37.79793310603611 ], [ -122.423175573349, 37.79780170186684 ], [ -122.42361545562744, 37.79774659682308 ], [ -122.42364227771759, 37.79787800109037 ], [ -122.42364227771759, 37.79787800109037 ], [ -122.42364227771759, 37.79787800109037 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41094470024109, 37.79792462835481 ], [ -122.41051018238068, 37.797979733265805 ], [ -122.41046726703644, 37.79777626877483 ], [ -122.41064965724944, 37.79775083567405 ], [ -122.41068184375763, 37.79774659682308 ], [ -122.4106979370117, 37.7978228961035 ], [ -122.41092324256896, 37.797797463018796 ], [ -122.41094470024107, 37.79792462835481 ], [ -122.41094470024107, 37.79792462835481 ], [ -122.41094470024109, 37.79792462835481 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41193175315857, 37.79777202992531 ], [ -122.41173326969147, 37.79779322417047 ], [ -122.41172254085541, 37.797742357971856 ], [ -122.41192102432251, 37.797716924859415 ], [ -122.41193175315857, 37.79777202992531 ], [ -122.41193175315857, 37.79777202992531 ], [ -122.41193175315857, 37.79777202992531 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42134094238281, 37.79786952340275 ], [ -122.4212282896042, 37.797882239933806 ], [ -122.42119073867799, 37.797708447153305 ], [ -122.42130875587465, 37.797695730592324 ], [ -122.42134094238283, 37.79786952340275 ], [ -122.42134094238283, 37.79786952340275 ], [ -122.42134094238281, 37.79786952340275 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42091715335846, 37.79792462835481 ], [ -122.42062211036682, 37.79795853907413 ], [ -122.42058455944061, 37.7977593133753 ], [ -122.42057383060455, 37.79772540256451 ], [ -122.42083668708801, 37.7976914917382 ], [ -122.42084205150604, 37.79772964141673 ], [ -122.42086350917816, 37.797831373796456 ], [ -122.42090106010436, 37.79782713495009 ], [ -122.42091715335845, 37.79792462835481 ], [ -122.42091715335845, 37.79792462835481 ], [ -122.42091715335846, 37.79792462835481 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41064965724945, 37.79775083567405 ], [ -122.41046726703645, 37.79777626877483 ], [ -122.41045653820039, 37.797712686006484 ], [ -122.41063892841339, 37.7976914917382 ], [ -122.41064965724945, 37.79775083567405 ], [ -122.41064965724945, 37.79775083567405 ], [ -122.41064965724945, 37.79775083567405 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42103517055511, 37.797907672989325 ], [ -122.42091715335846, 37.79792462835481 ], [ -122.42090106010437, 37.79782713495009 ], [ -122.42087423801424, 37.79770420829989 ], [ -122.42099225521089, 37.79768725288382 ], [ -122.42103517055513, 37.797907672989325 ], [ -122.42103517055513, 37.797907672989325 ], [ -122.42103517055511, 37.797907672989325 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42143213748932, 37.79785680686951 ], [ -122.42134094238281, 37.79786952340275 ], [ -122.42130875587463, 37.797695730592324 ], [ -122.42130339145662, 37.79768301402918 ], [ -122.42139458656312, 37.79767453631921 ], [ -122.42143213748932, 37.79785680686951 ], [ -122.42143213748932, 37.79785680686951 ], [ -122.42143213748932, 37.79785680686951 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41192102432251, 37.797716924859415 ], [ -122.41172254085541, 37.797742357971856 ], [ -122.41171181201935, 37.79768301402918 ], [ -122.41191029548645, 37.79765758089631 ], [ -122.41192102432251, 37.797716924859415 ], [ -122.41192102432251, 37.797716924859415 ], [ -122.41192102432251, 37.797716924859415 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40951240062714, 37.79781865725665 ], [ -122.40950167179108, 37.79781865725665 ], [ -122.40950167179108, 37.79775931337528 ], [ -122.40951240062714, 37.79781865725665 ], [ -122.40951240062714, 37.79781865725665 ], [ -122.40951240062714, 37.79781865725665 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42122828960419, 37.797882239933806 ], [ -122.42111563682556, 37.79789919530514 ], [ -122.42108881473541, 37.79776355222553 ], [ -122.4210673570633, 37.7976618197524 ], [ -122.42118000984192, 37.79764910318341 ], [ -122.42119073867798, 37.797708447153305 ], [ -122.42122828960419, 37.797882239933806 ], [ -122.42122828960419, 37.797882239933806 ], [ -122.42122828960419, 37.797882239933806 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42255330085754, 37.797716924859415 ], [ -122.42225289344788, 37.797755074524794 ], [ -122.42223680019379, 37.79767453631921 ], [ -122.42248356342316, 37.79764062546953 ], [ -122.42253720760345, 37.797636386612204 ], [ -122.42255330085754, 37.797716924859415 ], [ -122.42255330085754, 37.797716924859415 ], [ -122.42255330085754, 37.797716924859415 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41066575050354, 37.79768725288382 ], [ -122.41063892841339, 37.7976914917382 ], [ -122.41045653820039, 37.797712686006484 ], [ -122.41044580936433, 37.79765758089631 ], [ -122.41061747074129, 37.797636386612204 ], [ -122.4106550216675, 37.79763214775467 ], [ -122.41066575050355, 37.79768725288382 ], [ -122.41066575050355, 37.79768725288382 ], [ -122.41066575050354, 37.79768725288382 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4095767736435, 37.797788985321915 ], [ -122.40953385829926, 37.797797463018796 ], [ -122.40953385829926, 37.79778474647316 ], [ -122.40950703620912, 37.797788985321915 ], [ -122.40950167179109, 37.797755074524794 ], [ -122.40950167179109, 37.797636386612204 ], [ -122.40954458713533, 37.79763214775467 ], [ -122.40957677364351, 37.797788985321915 ], [ -122.40957677364351, 37.797788985321915 ], [ -122.4095767736435, 37.797788985321915 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40976989269257, 37.79789919530514 ], [ -122.40955531597137, 37.79792886719558 ], [ -122.40954995155336, 37.797886478777016 ], [ -122.4095928668976, 37.797882239933806 ], [ -122.4095392227173, 37.79762367003883 ], [ -122.40971088409425, 37.79760247574503 ], [ -122.40976989269258, 37.79789919530514 ], [ -122.40976989269258, 37.79789919530514 ], [ -122.40976989269257, 37.79789919530514 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42160379886627, 37.79783561264257 ], [ -122.4214321374893, 37.79785680686951 ], [ -122.42139458656311, 37.79767453631921 ], [ -122.42138385772705, 37.797619431180564 ], [ -122.421555519104, 37.797598236885534 ], [ -122.42160379886627, 37.79783561264257 ], [ -122.42160379886627, 37.79783561264257 ], [ -122.42160379886627, 37.79783561264257 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42248356342316, 37.79764062546953 ], [ -122.42223680019379, 37.79767453631921 ], [ -122.42222607135773, 37.797615192322034 ], [ -122.4224728345871, 37.7975855203056 ], [ -122.42248356342316, 37.79764062546953 ], [ -122.42248356342316, 37.79764062546953 ], [ -122.42248356342316, 37.79764062546953 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42083668708801, 37.7976914917382 ], [ -122.42057383060455, 37.79772540256451 ], [ -122.42055237293243, 37.79760671460429 ], [ -122.42080986499786, 37.797572803723476 ], [ -122.420836687088, 37.7976914917382 ], [ -122.420836687088, 37.7976914917382 ], [ -122.42083668708801, 37.7976914917382 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42111563682556, 37.79789919530514 ], [ -122.4210512638092, 37.79790343414736 ], [ -122.42098152637482, 37.797564326000824 ], [ -122.42104589939117, 37.797555848277206 ], [ -122.42108881473541, 37.79776355222553 ], [ -122.42111563682556, 37.79789919530512 ], [ -122.42111563682556, 37.79789919530512 ], [ -122.42111563682556, 37.79789919530514 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42174327373505, 37.79781865725665 ], [ -122.42160379886627, 37.79783561264257 ], [ -122.421555519104, 37.797598236885534 ], [ -122.42155015468599, 37.797572803723476 ], [ -122.42168962955476, 37.79755160941504 ], [ -122.42174327373506, 37.79781865725665 ], [ -122.42174327373506, 37.79781865725665 ], [ -122.42174327373505, 37.79781865725665 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41191029548645, 37.79765758089631 ], [ -122.41171181201935, 37.79768301402918 ], [ -122.41169571876527, 37.79768725288382 ], [ -122.41167426109315, 37.79757704258442 ], [ -122.41188883781433, 37.79755160941504 ], [ -122.41191029548645, 37.79765758089631 ], [ -122.41191029548645, 37.79765758089631 ], [ -122.41191029548645, 37.79765758089631 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42280542850494, 37.79768301402918 ], [ -122.4227249622345, 37.797695730592324 ], [ -122.42269814014436, 37.797560087139146 ], [ -122.42277860641481, 37.79755160941504 ], [ -122.42280542850494, 37.79768301402918 ], [ -122.42280542850494, 37.79768301402918 ], [ -122.42280542850494, 37.79768301402918 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42252111434937, 37.79758128144514 ], [ -122.4224728345871, 37.7975855203056 ], [ -122.42222607135773, 37.797615192322034 ], [ -122.42221534252167, 37.797555848277206 ], [ -122.42251038551332, 37.79751769850893 ], [ -122.42252111434938, 37.79758128144514 ], [ -122.42252111434938, 37.79758128144514 ], [ -122.42252111434937, 37.79758128144514 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4227249622345, 37.797695730592324 ], [ -122.422633767128, 37.797708447153305 ], [ -122.42260158061983, 37.79752617623693 ], [ -122.4226874113083, 37.79751345964458 ], [ -122.42269814014436, 37.797560087139146 ], [ -122.4227249622345, 37.797695730592324 ], [ -122.4227249622345, 37.797695730592324 ], [ -122.4227249622345, 37.797695730592324 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42289125919342, 37.79767453631921 ], [ -122.42280542850494, 37.79768301402918 ], [ -122.42277860641481, 37.79755160941504 ], [ -122.42277324199678, 37.79752193737306 ], [ -122.42285907268526, 37.79750922077997 ], [ -122.42289125919343, 37.79767453631921 ], [ -122.42289125919343, 37.79767453631921 ], [ -122.42289125919342, 37.79767453631921 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4230682849884, 37.79765334203998 ], [ -122.42298245429993, 37.7976618197524 ], [ -122.42295563220979, 37.79751769850896 ], [ -122.42303609848022, 37.79750498191513 ], [ -122.4230682849884, 37.79765334203998 ], [ -122.4230682849884, 37.79765334203998 ], [ -122.4230682849884, 37.79765334203998 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41061747074127, 37.797636386612204 ], [ -122.41044580936432, 37.79765758089631 ], [ -122.41041898727417, 37.79752193737306 ], [ -122.41059064865114, 37.797500743050065 ], [ -122.41061747074127, 37.797636386612204 ], [ -122.41061747074127, 37.797636386612204 ], [ -122.41061747074127, 37.797636386612204 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42298245429993, 37.79766181975238 ], [ -122.42289125919342, 37.79767453631921 ], [ -122.42285907268524, 37.79750922077997 ], [ -122.42295026779175, 37.79749650418472 ], [ -122.42295563220978, 37.79751769850893 ], [ -122.42298245429991, 37.79766181975238 ], [ -122.42298245429991, 37.79766181975238 ], [ -122.42298245429993, 37.79766181975238 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4207991361618, 37.797572803723476 ], [ -122.42055237293245, 37.79760671460429 ], [ -122.42053627967836, 37.79752617623693 ], [ -122.42078304290773, 37.79749650418472 ], [ -122.4207991361618, 37.797572803723476 ], [ -122.4207991361618, 37.797572803723476 ], [ -122.4207991361618, 37.797572803723476 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42314875125885, 37.79764062546953 ], [ -122.4230682849884, 37.79765334203998 ], [ -122.42303609848022, 37.79750498191513 ], [ -122.42303609848022, 37.79749650418472 ], [ -122.42311656475067, 37.797488026453316 ], [ -122.42314875125885, 37.79764062546953 ], [ -122.42314875125885, 37.79764062546953 ], [ -122.42314875125885, 37.79764062546953 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4225103855133, 37.79751769850893 ], [ -122.42221534252167, 37.797555848277206 ], [ -122.42219924926758, 37.797488026453316 ], [ -122.42249965667725, 37.79745411551802 ], [ -122.4225103855133, 37.79751769850893 ], [ -122.4225103855133, 37.79751769850893 ], [ -122.4225103855133, 37.79751769850893 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42357790470123, 37.79758975916583 ], [ -122.42328822612762, 37.79762367003883 ], [ -122.42325603961945, 37.79746259325332 ], [ -122.42354571819305, 37.797428682306354 ], [ -122.42357790470123, 37.79758975916583 ], [ -122.42357790470123, 37.79758975916583 ], [ -122.42357790470123, 37.79758975916583 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42082059383392, 37.79749226531914 ], [ -122.42078304290773, 37.79749650418472 ], [ -122.42053627967836, 37.79752617623693 ], [ -122.42052018642427, 37.79745411551802 ], [ -122.42080450057988, 37.79742020456719 ], [ -122.42082059383394, 37.79749226531914 ], [ -122.42082059383394, 37.79749226531914 ], [ -122.42082059383392, 37.79749226531914 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41142749786377, 37.79774659682308 ], [ -122.41097688674927, 37.79780170186684 ], [ -122.41096079349518, 37.79772540256451 ], [ -122.41090178489686, 37.797733880268694 ], [ -122.41090714931488, 37.79774659682308 ], [ -122.4107301235199, 37.797767791075536 ], [ -122.4106764793396, 37.797488026453344 ], [ -122.41085350513458, 37.797466832120605 ], [ -122.41085886955261, 37.79749226531914 ], [ -122.41092324256897, 37.79748378758728 ], [ -122.41095542907715, 37.79763214775467 ], [ -122.41130948066711, 37.79758975916583 ], [ -122.41129338741302, 37.797513459644605 ], [ -122.41124510765076, 37.79751769850896 ], [ -122.41122364997864, 37.79742020456719 ], [ -122.41135776042938, 37.7974032490859 ], [ -122.41142749786377, 37.79774659682308 ], [ -122.41142749786377, 37.79774659682308 ], [ -122.41142749786377, 37.79774659682308 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4115240573883, 37.79756856486228 ], [ -122.41140067577362, 37.7975855203056 ], [ -122.41136312484743, 37.7974032490859 ], [ -122.41148650646211, 37.797390532472384 ], [ -122.4115240573883, 37.79756856486228 ], [ -122.4115240573883, 37.79756856486228 ], [ -122.4115240573883, 37.79756856486228 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42249965667725, 37.79745411551802 ], [ -122.42219924926758, 37.797488026453316 ], [ -122.42218315601349, 37.79741596569723 ], [ -122.42248356342316, 37.7973778158567 ], [ -122.42249965667725, 37.79745411551802 ], [ -122.42249965667725, 37.79745411551802 ], [ -122.42249965667725, 37.79745411551802 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41164207458496, 37.797555848277206 ], [ -122.41152405738829, 37.79756856486228 ], [ -122.4114865064621, 37.797390532472384 ], [ -122.41160452365875, 37.797373576984334 ], [ -122.41164207458496, 37.79753889282706 ], [ -122.41164207458496, 37.797555848277206 ], [ -122.41164207458496, 37.797555848277206 ], [ -122.41164207458496, 37.797555848277206 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42259085178375, 37.79749226531914 ], [ -122.42250502109526, 37.797500743050065 ], [ -122.42248356342314, 37.7973778158567 ], [ -122.42256939411163, 37.79736933811171 ], [ -122.42259085178375, 37.79749226531914 ], [ -122.42259085178375, 37.79749226531914 ], [ -122.42259085178375, 37.79749226531914 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41174936294556, 37.79752193737306 ], [ -122.41164207458496, 37.79753889282706 ], [ -122.41160452365875, 37.797373576984334 ], [ -122.41171717643738, 37.7973608603657 ], [ -122.41174936294556, 37.79752193737306 ], [ -122.41174936294556, 37.79752193737306 ], [ -122.41174936294556, 37.79752193737306 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42267668247223, 37.79747954872097 ], [ -122.42259085178375, 37.79749226531914 ], [ -122.42256939411163, 37.79736933811171 ], [ -122.42265522480011, 37.79735662149236 ], [ -122.42267668247223, 37.79747954872097 ], [ -122.42267668247223, 37.79747954872097 ], [ -122.42267668247223, 37.79747954872097 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42086350917816, 37.79741172682703 ], [ -122.42080450057983, 37.79742020456719 ], [ -122.42052018642426, 37.79745411551802 ], [ -122.4205094575882, 37.79739477134381 ], [ -122.4208527803421, 37.79735238261875 ], [ -122.42086350917816, 37.79741172682703 ], [ -122.42086350917816, 37.79741172682703 ], [ -122.42086350917816, 37.79741172682703 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4227625131607, 37.79747530985443 ], [ -122.42268204689026, 37.797488026453316 ], [ -122.42267668247224, 37.79747954872097 ], [ -122.42265522480012, 37.79735662149236 ], [ -122.42273569107056, 37.7973481437449 ], [ -122.42275714874268, 37.797449876650035 ], [ -122.4227625131607, 37.79747530985443 ], [ -122.4227625131607, 37.79747530985443 ], [ -122.4227625131607, 37.79747530985443 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4118834733963, 37.79750922078 ], [ -122.41174936294556, 37.79752193737306 ], [ -122.41171717643738, 37.79736086036572 ], [ -122.41185128688812, 37.7973439048708 ], [ -122.4118834733963, 37.79750922078 ], [ -122.4118834733963, 37.79750922078 ], [ -122.4118834733963, 37.79750922078 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42354571819305, 37.79741172682703 ], [ -122.42325603961945, 37.797449876650035 ], [ -122.42324531078339, 37.79740748795659 ], [ -122.42323994636537, 37.7973778158567 ], [ -122.42352962493898, 37.797339665996475 ], [ -122.42354571819305, 37.79741172682703 ], [ -122.42354571819305, 37.79741172682703 ], [ -122.42354571819305, 37.79741172682703 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42284297943115, 37.79743716004455 ], [ -122.42275714874268, 37.797449876650035 ], [ -122.42273569107056, 37.7973481437449 ], [ -122.42282152175903, 37.797335427121915 ], [ -122.42284297943115, 37.79743716004455 ], [ -122.42284297943115, 37.79743716004455 ], [ -122.42284297943115, 37.79743716004455 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42293953895569, 37.79746259325332 ], [ -122.42284834384918, 37.79747530985443 ], [ -122.42284297943117, 37.79743716004455 ], [ -122.42282152175905, 37.797335427121915 ], [ -122.42291271686554, 37.797326949372035 ], [ -122.42293417453766, 37.79742020456719 ], [ -122.42293953895569, 37.79746259325332 ], [ -122.42293953895569, 37.79746259325332 ], [ -122.42293953895569, 37.79746259325332 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42328822612762, 37.79762367003883 ], [ -122.42314875125884, 37.79764062546953 ], [ -122.42311656475066, 37.797488026453316 ], [ -122.4231058359146, 37.79742444343689 ], [ -122.42313802242278, 37.79742020456719 ], [ -122.42312729358672, 37.79738205472884 ], [ -122.42308974266052, 37.79738629360075 ], [ -122.42307901382446, 37.79733118824708 ], [ -122.42319166660307, 37.79731847162117 ], [ -122.42320239543913, 37.797373576984334 ], [ -122.42320775985716, 37.79741172682703 ], [ -122.42324531078337, 37.79740748795659 ], [ -122.42325603961943, 37.797449876650035 ], [ -122.42325603961943, 37.79746259325332 ], [ -122.42328822612761, 37.79762367003883 ], [ -122.42328822612761, 37.79762367003883 ], [ -122.42328822612762, 37.79762367003883 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42302000522614, 37.79741172682703 ], [ -122.42293417453766, 37.79742020456719 ], [ -122.42291271686554, 37.797326949372035 ], [ -122.42300391197203, 37.797314232745414 ], [ -122.42302000522612, 37.79741172682703 ], [ -122.42302000522612, 37.79741172682703 ], [ -122.42302000522614, 37.79741172682703 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42204904556274, 37.7977805076241 ], [ -122.42180764675139, 37.79781017956224 ], [ -122.42170572280884, 37.79732271049674 ], [ -122.4219524860382, 37.7972930383628 ], [ -122.42204904556274, 37.7977805076241 ], [ -122.42204904556274, 37.7977805076241 ], [ -122.42204904556274, 37.7977805076241 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4208527803421, 37.7973481437449 ], [ -122.4205094575882, 37.79739053247241 ], [ -122.4204933643341, 37.797318471621196 ], [ -122.42083668708801, 37.797276082852335 ], [ -122.4208527803421, 37.7973481437449 ], [ -122.4208527803421, 37.7973481437449 ], [ -122.4208527803421, 37.7973481437449 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42352962493896, 37.797339665996496 ], [ -122.42323994636536, 37.7973778158567 ], [ -122.42321848869324, 37.797276082852335 ], [ -122.42326140403748, 37.797271843974144 ], [ -122.42350816726685, 37.79724217181975 ], [ -122.42352962493896, 37.797339665996496 ], [ -122.42352962493896, 37.797339665996496 ], [ -122.42352962493896, 37.797339665996496 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42195248603821, 37.7972930383628 ], [ -122.42170572280884, 37.79732271049674 ], [ -122.42163062095642, 37.797335427121915 ], [ -122.42161452770235, 37.797259127338 ], [ -122.42168962955476, 37.79725064957937 ], [ -122.42193639278413, 37.79722097741648 ], [ -122.42195248603821, 37.7972930383628 ], [ -122.42195248603821, 37.7972930383628 ], [ -122.42195248603821, 37.7972930383628 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42083668708801, 37.797276082852335 ], [ -122.4204933643341, 37.797318471621196 ], [ -122.42048263549805, 37.797254888458816 ], [ -122.42082059383392, 37.79721249965347 ], [ -122.42083668708801, 37.797276082852335 ], [ -122.42083668708801, 37.797276082852335 ], [ -122.42083668708801, 37.797276082852335 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42246747016907, 37.7972930383628 ], [ -122.42217242717741, 37.797326949372035 ], [ -122.4221509695053, 37.79724217181975 ], [ -122.42242991924284, 37.79720826077158 ], [ -122.42245137691496, 37.79720826077158 ], [ -122.42246747016905, 37.7972930383628 ], [ -122.42246747016905, 37.7972930383628 ], [ -122.42246747016907, 37.7972930383628 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42263376712799, 37.797271843974116 ], [ -122.42254793643951, 37.797280321730305 ], [ -122.4225264787674, 37.79718282747526 ], [ -122.42261767387389, 37.79717434970787 ], [ -122.42263376712798, 37.797271843974116 ], [ -122.42263376712798, 37.797271843974116 ], [ -122.42263376712799, 37.797271843974116 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4227249622345, 37.797259127338 ], [ -122.422633767128, 37.797271843974116 ], [ -122.42261767387392, 37.79717434970787 ], [ -122.42261230945589, 37.797157394170185 ], [ -122.42270350456239, 37.797144677514346 ], [ -122.42272496223451, 37.797259127338 ], [ -122.42272496223451, 37.797259127338 ], [ -122.4227249622345, 37.797259127338 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42082059383392, 37.79721249965347 ], [ -122.42048263549805, 37.797254888458816 ], [ -122.42046654224396, 37.7971785885917 ], [ -122.42080986499786, 37.797140438628595 ], [ -122.42082059383392, 37.79721249965347 ], [ -122.42082059383392, 37.79721249965347 ], [ -122.42082059383392, 37.79721249965347 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42254793643951, 37.797280321730305 ], [ -122.42246747016908, 37.7972930383628 ], [ -122.42245137691499, 37.79720826077158 ], [ -122.4224352836609, 37.797144677514346 ], [ -122.42251574993135, 37.797131960856326 ], [ -122.42252111434938, 37.797153155285145 ], [ -122.4225264787674, 37.79718282747526 ], [ -122.42254793643951, 37.797280321730305 ], [ -122.42254793643951, 37.797280321730305 ], [ -122.42254793643951, 37.797280321730305 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42280542850494, 37.79725064957937 ], [ -122.4227249622345, 37.797259127338 ], [ -122.42270350456238, 37.797144677514346 ], [ -122.42270350456238, 37.79713619974259 ], [ -122.42278397083282, 37.79712772196984 ], [ -122.42280542850494, 37.79725064957937 ], [ -122.42280542850494, 37.79725064957937 ], [ -122.42280542850494, 37.79725064957937 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42093324661255, 37.797339665996496 ], [ -122.42085278034212, 37.7973481437449 ], [ -122.42083668708803, 37.797276082852335 ], [ -122.42082059383394, 37.79721249965347 ], [ -122.42080986499788, 37.797140438628595 ], [ -122.42089569568635, 37.79712772196984 ], [ -122.42093324661256, 37.797339665996496 ], [ -122.42093324661256, 37.797339665996496 ], [ -122.42093324661255, 37.797339665996496 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42242991924286, 37.79720826077158 ], [ -122.42215096950531, 37.79724217181975 ], [ -122.42213487625123, 37.79716163305497 ], [ -122.42241382598877, 37.79712772196984 ], [ -122.42242991924286, 37.79720826077158 ], [ -122.42242991924286, 37.79720826077158 ], [ -122.42242991924286, 37.79720826077158 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42103517055511, 37.79739901021499 ], [ -122.42094933986664, 37.79740748795659 ], [ -122.42093324661255, 37.797339665996475 ], [ -122.42089569568635, 37.79712772196984 ], [ -122.42098152637483, 37.79711924419614 ], [ -122.42103517055513, 37.79739901021499 ], [ -122.42103517055513, 37.79739901021499 ], [ -122.42103517055511, 37.79739901021499 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42289125919342, 37.79725064957937 ], [ -122.42281079292299, 37.79726336621694 ], [ -122.42278397083284, 37.79712772196984 ], [ -122.42277860641481, 37.79711924419614 ], [ -122.42286443710331, 37.79710652753374 ], [ -122.42287516593937, 37.79717011082383 ], [ -122.42289125919343, 37.79725064957937 ], [ -122.42289125919343, 37.79725064957937 ], [ -122.42289125919342, 37.79725064957937 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42114782333374, 37.79743292117557 ], [ -122.42104589939117, 37.797445637781784 ], [ -122.42103517055511, 37.79739901021499 ], [ -122.42098152637482, 37.79711924419614 ], [ -122.42107808589935, 37.79710652753374 ], [ -122.42113173007965, 37.797369338111686 ], [ -122.42114782333374, 37.79743292117557 ], [ -122.42114782333374, 37.79743292117557 ], [ -122.42114782333374, 37.79743292117557 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42350816726685, 37.79724217181975 ], [ -122.42326140403748, 37.797271843974116 ], [ -122.42323458194733, 37.79712348308311 ], [ -122.4234813451767, 37.79709381086916 ], [ -122.42350816726685, 37.79724217181975 ], [ -122.42350816726685, 37.79724217181975 ], [ -122.42350816726685, 37.79724217181975 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42123365402222, 37.79735662149236 ], [ -122.42113173007965, 37.79736933811171 ], [ -122.42107808589935, 37.79710652753374 ], [ -122.42118000984192, 37.79709381086916 ], [ -122.42123365402222, 37.79735662149236 ], [ -122.42123365402222, 37.79735662149236 ], [ -122.42123365402222, 37.79735662149236 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42193639278412, 37.79722097741648 ], [ -122.42168962955475, 37.79725064957937 ], [ -122.4216628074646, 37.79711500530891 ], [ -122.42190957069397, 37.797085333091545 ], [ -122.42193639278412, 37.79722097741648 ], [ -122.42193639278412, 37.79722097741648 ], [ -122.42193639278412, 37.79722097741648 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42139458656311, 37.79736933811171 ], [ -122.42127120494843, 37.79738629360075 ], [ -122.42128193378448, 37.79743716004455 ], [ -122.42134630680084, 37.797428682306354 ], [ -122.42136240005493, 37.79750922078 ], [ -122.42129802703856, 37.79751769850896 ], [ -122.42130339145659, 37.797530415100546 ], [ -122.42127120494841, 37.797530415100546 ], [ -122.42126584053038, 37.79752193737306 ], [ -122.42122292518614, 37.79752617623693 ], [ -122.42120683193207, 37.797445637781784 ], [ -122.4212497472763, 37.797441398913286 ], [ -122.42123365402222, 37.79735662149236 ], [ -122.42118000984192, 37.79709381086916 ], [ -122.42133557796478, 37.79707261642332 ], [ -122.42139458656311, 37.79735238261875 ], [ -122.42139458656311, 37.79736933811171 ], [ -122.42139458656311, 37.79736933811171 ], [ -122.42139458656311, 37.79736933811171 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41181373596191, 37.797259127338 ], [ -122.41130411624908, 37.79732271049674 ], [ -122.41128802299501, 37.797254888458816 ], [ -122.41127192974092, 37.7971785885917 ], [ -122.41126120090486, 37.79712772196984 ], [ -122.41177618503572, 37.797064138643265 ], [ -122.41178691387178, 37.797110766421454 ], [ -122.41179764270784, 37.79717434970787 ], [ -122.41180300712587, 37.797187066358596 ], [ -122.41181373596193, 37.797259127338 ], [ -122.41181373596193, 37.797259127338 ], [ -122.41181373596191, 37.797259127338 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42151260375977, 37.797339665996496 ], [ -122.42139458656311, 37.79735238261875 ], [ -122.42133557796478, 37.79707261642332 ], [ -122.42145359516144, 37.7970598997529 ], [ -122.42151260375977, 37.797339665996496 ], [ -122.42151260375977, 37.797339665996496 ], [ -122.42151260375977, 37.797339665996496 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42241382598877, 37.79712772196984 ], [ -122.42213487625122, 37.79716163305497 ], [ -122.42211878299713, 37.79708109420238 ], [ -122.42239773273468, 37.797047183080274 ], [ -122.42241382598877, 37.79712772196984 ], [ -122.42241382598877, 37.79712772196984 ], [ -122.42241382598877, 37.79712772196984 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42317020893097, 37.7972040218895 ], [ -122.4230682849884, 37.7972167385351 ], [ -122.42305219173433, 37.797140438628595 ], [ -122.42303609848024, 37.7970598997529 ], [ -122.4231380224228, 37.7970471830803 ], [ -122.42317020893098, 37.7972040218895 ], [ -122.42317020893098, 37.7972040218895 ], [ -122.42317020893097, 37.7972040218895 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42165207862854, 37.79743716004455 ], [ -122.42153406143188, 37.79745411551802 ], [ -122.42151260375977, 37.797339665996496 ], [ -122.42145359516144, 37.7970598997529 ], [ -122.42158234119417, 37.797042944188924 ], [ -122.42159307003023, 37.79710652753374 ], [ -122.42158234119417, 37.797110766421454 ], [ -122.42161452770235, 37.797259127338 ], [ -122.42163062095642, 37.797335427121915 ], [ -122.42165207862854, 37.79743716004455 ], [ -122.42165207862854, 37.79743716004455 ], [ -122.42165207862854, 37.79743716004455 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42305219173431, 37.797140438628595 ], [ -122.42296099662781, 37.797153155285145 ], [ -122.42293953895569, 37.797051421971396 ], [ -122.4230307340622, 37.79703870529732 ], [ -122.42303609848021, 37.7970598997529 ], [ -122.4230521917343, 37.797140438628595 ], [ -122.4230521917343, 37.797140438628595 ], [ -122.42305219173431, 37.797140438628595 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42190957069397, 37.797085333091545 ], [ -122.4216628074646, 37.79711500530891 ], [ -122.42159843444824, 37.79712348308311 ], [ -122.42158234119417, 37.797042944188924 ], [ -122.4218934774399, 37.797004794155775 ], [ -122.42190957069397, 37.797085333091545 ], [ -122.42190957069397, 37.797085333091545 ], [ -122.42190957069397, 37.797085333091545 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42239773273468, 37.797047183080274 ], [ -122.42211878299713, 37.79708109420238 ], [ -122.42210268974306, 37.79699207747368 ], [ -122.42238163948059, 37.796958166310716 ], [ -122.42239773273468, 37.797047183080274 ], [ -122.42239773273468, 37.797047183080274 ], [ -122.42239773273468, 37.797047183080274 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42251574993134, 37.797131960856326 ], [ -122.4224352836609, 37.797144677514346 ], [ -122.4223977327347, 37.79695392741425 ], [ -122.42247819900514, 37.79694544962059 ], [ -122.42251574993134, 37.797131960856326 ], [ -122.42251574993134, 37.797131960856326 ], [ -122.42251574993134, 37.797131960856326 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42260694503784, 37.797140438628595 ], [ -122.42252111434937, 37.797153155285145 ], [ -122.42251574993134, 37.797131960856326 ], [ -122.42247819900514, 37.79694544962059 ], [ -122.42256402969362, 37.79693273292826 ], [ -122.42260694503786, 37.797140438628595 ], [ -122.42260694503786, 37.797140438628595 ], [ -122.42260694503784, 37.797140438628595 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42270350456238, 37.79713619974259 ], [ -122.42260694503784, 37.79714891639987 ], [ -122.42260694503784, 37.797140438628595 ], [ -122.4225640296936, 37.79693273292829 ], [ -122.42266058921814, 37.796924255132176 ], [ -122.42270350456238, 37.79713619974259 ], [ -122.42270350456238, 37.79713619974259 ], [ -122.42270350456238, 37.79713619974259 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42278397083282, 37.79712772196984 ], [ -122.42270350456238, 37.79713619974259 ], [ -122.42266058921814, 37.796924255132176 ], [ -122.42274105548859, 37.79691153843622 ], [ -122.42276787757874, 37.797047183080274 ], [ -122.4227786064148, 37.79711924419614 ], [ -122.42278397083281, 37.79712772196984 ], [ -122.42278397083281, 37.79712772196984 ], [ -122.42278397083282, 37.79712772196984 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42284834384918, 37.79703870529732 ], [ -122.42276787757875, 37.797047183080274 ], [ -122.4227410554886, 37.79691153843622 ], [ -122.42282152175905, 37.79690306063769 ], [ -122.42284834384918, 37.79703870529732 ], [ -122.42284834384918, 37.79703870529732 ], [ -122.42284834384918, 37.79703870529732 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42296099662781, 37.79716163305497 ], [ -122.42287516593933, 37.79717011082383 ], [ -122.42286443710327, 37.79710652753374 ], [ -122.42284834384918, 37.79703870529732 ], [ -122.42282152175905, 37.79690306063769 ], [ -122.42291271686554, 37.79689034393807 ], [ -122.42293953895569, 37.797051421971375 ], [ -122.42296099662781, 37.797153155285145 ], [ -122.42296099662781, 37.79716163305497 ], [ -122.42296099662781, 37.79716163305497 ], [ -122.42296099662781, 37.79716163305497 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4230307340622, 37.79703870529732 ], [ -122.42293953895569, 37.797051421971396 ], [ -122.42291271686554, 37.796890343938095 ], [ -122.42299854755403, 37.79688186613715 ], [ -122.42303073406221, 37.79703870529732 ], [ -122.42303073406221, 37.79703870529732 ], [ -122.4230307340622, 37.79703870529732 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42313802242279, 37.797047183080274 ], [ -122.42303609848022, 37.7970598997529 ], [ -122.42303073406221, 37.79703870529732 ], [ -122.42299854755403, 37.79688186613715 ], [ -122.42310583591463, 37.79686914943388 ], [ -122.4231380224228, 37.797047183080274 ], [ -122.4231380224228, 37.797047183080274 ], [ -122.42313802242279, 37.797047183080274 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4234813451767, 37.79709381086916 ], [ -122.42323458194733, 37.79712348308311 ], [ -122.42318630218507, 37.79712772196984 ], [ -122.4231380224228, 37.79686491053231 ], [ -122.42342770099641, 37.79682676040723 ], [ -122.42348134517671, 37.79709381086916 ], [ -122.42348134517671, 37.79709381086916 ], [ -122.4234813451767, 37.79709381086916 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42184519767761, 37.796843716020796 ], [ -122.42153942584991, 37.79688186613715 ], [ -122.42151260375977, 37.79675893791397 ], [ -122.42161452770233, 37.79674622118954 ], [ -122.42161989212035, 37.79677165463619 ], [ -122.42172718048096, 37.79675469900605 ], [ -122.42172181606293, 37.796733504462914 ], [ -122.42181837558746, 37.79672078773413 ], [ -122.42184519767761, 37.796843716020796 ], [ -122.42184519767761, 37.796843716020796 ], [ -122.42184519767761, 37.796843716020796 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42239773273468, 37.79676317682161 ], [ -122.42206513881683, 37.796805565884775 ], [ -122.42204904556274, 37.79672502664398 ], [ -122.42219388484955, 37.79670807100316 ], [ -122.42238163948059, 37.7966826375346 ], [ -122.42239773273468, 37.79676317682161 ], [ -122.42239773273468, 37.79676317682161 ], [ -122.42239773273468, 37.79676317682161 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42181837558746, 37.79672078773413 ], [ -122.42172181606293, 37.796733504462914 ], [ -122.42161452770233, 37.79674622118954 ], [ -122.42151260375977, 37.79675893791397 ], [ -122.42147505283356, 37.79676317682161 ], [ -122.4214643239975, 37.79669535426995 ], [ -122.4218076467514, 37.79665296514357 ], [ -122.42181837558746, 37.79672078773413 ], [ -122.42181837558746, 37.79672078773413 ], [ -122.42181837558746, 37.79672078773413 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42219388484955, 37.79670807100314 ], [ -122.42204904556274, 37.79672502664398 ], [ -122.42203295230867, 37.79664024840093 ], [ -122.42217779159547, 37.79661905382496 ], [ -122.42219388484955, 37.79670807100314 ], [ -122.42219388484955, 37.79670807100314 ], [ -122.42219388484955, 37.79670807100314 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4218076467514, 37.79665296514357 ], [ -122.4214643239975, 37.79669535426995 ], [ -122.42144823074342, 37.796627531656064 ], [ -122.42179155349733, 37.796585142490756 ], [ -122.4218076467514, 37.79665296514357 ], [ -122.4218076467514, 37.79665296514357 ], [ -122.4218076467514, 37.79665296514357 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42339551448822, 37.796636009486214 ], [ -122.42302536964417, 37.79668687644664 ], [ -122.42302000522615, 37.79662329274064 ], [ -122.42305755615234, 37.79661905382496 ], [ -122.42338478565217, 37.796580903572895 ], [ -122.42339551448823, 37.796636009486214 ], [ -122.42339551448823, 37.796636009486214 ], [ -122.42339551448822, 37.796636009486214 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42338478565216, 37.796580903572895 ], [ -122.42305755615234, 37.79661905382496 ], [ -122.42303609848021, 37.79652579761845 ], [ -122.42336869239806, 37.79648764731826 ], [ -122.42338478565215, 37.796580903572895 ], [ -122.42338478565215, 37.796580903572895 ], [ -122.42338478565216, 37.796580903572895 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42179155349731, 37.796585142490756 ], [ -122.42144823074341, 37.796627531656064 ], [ -122.42142140865326, 37.796496125164445 ], [ -122.42176473140717, 37.79644949699833 ], [ -122.42179155349731, 37.796585142490756 ], [ -122.42179155349731, 37.796585142490756 ], [ -122.42179155349731, 37.796585142490756 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42237627506256, 37.79657242573643 ], [ -122.42203831672668, 37.796614814909034 ], [ -122.42200076580048, 37.79643678022064 ], [ -122.42233872413635, 37.79639015201705 ], [ -122.42237627506256, 37.79657242573643 ], [ -122.42237627506256, 37.79657242573643 ], [ -122.42237627506256, 37.79657242573643 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41783797740936, 37.79647493054711 ], [ -122.41766095161438, 37.79650036408717 ], [ -122.41762340068817, 37.796326568055655 ], [ -122.41780579090118, 37.79630113445578 ], [ -122.41783797740936, 37.79647493054711 ], [ -122.41783797740936, 37.79647493054711 ], [ -122.41783797740936, 37.79647493054711 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42176473140717, 37.79644949699833 ], [ -122.42142140865326, 37.796496125164445 ], [ -122.42134094238281, 37.796504603009666 ], [ -122.42129802703857, 37.79629689552161 ], [ -122.42172718048097, 37.79624178935534 ], [ -122.42176473140717, 37.79644949699833 ], [ -122.42176473140717, 37.79644949699833 ], [ -122.42176473140717, 37.79644949699833 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42233872413635, 37.79639015201707 ], [ -122.42200076580048, 37.79643678022064 ], [ -122.42195785045624, 37.79624602829267 ], [ -122.42230117321014, 37.79620363890844 ], [ -122.42233872413634, 37.79639015201707 ], [ -122.42233872413634, 37.79639015201707 ], [ -122.42233872413635, 37.79639015201707 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42230117321014, 37.79620363890844 ], [ -122.42195785045624, 37.79624602829267 ], [ -122.42192029953003, 37.79605527587214 ], [ -122.42226362228394, 37.79601288637848 ], [ -122.42230117321014, 37.79620363890844 ], [ -122.42230117321014, 37.79620363890844 ], [ -122.42230117321014, 37.79620363890844 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42202758789062, 37.795813655432426 ], [ -122.42187201976776, 37.795830611278554 ], [ -122.42184519767763, 37.795703442337825 ], [ -122.42200076580049, 37.79568224749312 ], [ -122.42202758789062, 37.795813655432426 ], [ -122.42202758789062, 37.795813655432426 ], [ -122.42202758789062, 37.795813655432426 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41046726703644, 37.7958009385453 ], [ -122.41036534309387, 37.795813655432426 ], [ -122.41035461425781, 37.79575430994039 ], [ -122.41032779216766, 37.7956483357289 ], [ -122.41043508052827, 37.79563561881328 ], [ -122.41046726703645, 37.7958009385453 ], [ -122.41046726703645, 37.7958009385453 ], [ -122.41046726703644, 37.7958009385453 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42079377174377, 37.79568224749312 ], [ -122.42061674594879, 37.795703442337825 ], [ -122.42062211036682, 37.795737354076756 ], [ -122.42050409317015, 37.79575430994039 ], [ -122.42048263549803, 37.79564409675727 ], [ -122.42077767848967, 37.79561018497552 ], [ -122.42079377174376, 37.79568224749312 ], [ -122.42079377174376, 37.79568224749312 ], [ -122.42079377174377, 37.79568224749312 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42215633392334, 37.79566529161295 ], [ -122.42200076580048, 37.79568224749312 ], [ -122.42184519767761, 37.795703442337825 ], [ -122.42183446884155, 37.7956483357289 ], [ -122.42214560508728, 37.795605946001736 ], [ -122.42215633392334, 37.79566529161295 ], [ -122.42215633392334, 37.79566529161295 ], [ -122.42215633392334, 37.79566529161295 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42214560508728, 37.795605946001736 ], [ -122.42183446884155, 37.7956483357289 ], [ -122.42181837558746, 37.795555078297006 ], [ -122.422091960907, 37.79551692749549 ], [ -122.42212414741518, 37.79551268851633 ], [ -122.4221456050873, 37.795605946001736 ], [ -122.4221456050873, 37.795605946001736 ], [ -122.42214560508728, 37.795605946001736 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42209196090698, 37.79551692749549 ], [ -122.42181837558745, 37.795555078297006 ], [ -122.42179691791533, 37.79545758176509 ], [ -122.42206513881682, 37.79542366989775 ], [ -122.42207586765288, 37.79541943091325 ], [ -122.42209196090697, 37.79551692749549 ], [ -122.42209196090697, 37.79551692749549 ], [ -122.42209196090698, 37.79551692749549 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42206513881683, 37.79542366989775 ], [ -122.42179691791534, 37.79545758176509 ], [ -122.42178082466127, 37.795381280041674 ], [ -122.42194712162019, 37.795360085104505 ], [ -122.42204904556274, 37.795347368139296 ], [ -122.42206513881683, 37.79542366989775 ], [ -122.42206513881683, 37.79542366989775 ], [ -122.42206513881683, 37.79542366989775 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42194712162018, 37.795360085104505 ], [ -122.42178082466125, 37.795381280041674 ], [ -122.4217540025711, 37.795262588315275 ], [ -122.42192029953003, 37.79524139334406 ], [ -122.42194712162018, 37.795360085104505 ], [ -122.42194712162018, 37.795360085104505 ], [ -122.42194712162018, 37.795360085104505 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41045653820038, 37.79530073924811 ], [ -122.40998446941376, 37.795360085104505 ], [ -122.40994691848755, 37.79517780839393 ], [ -122.41041898727417, 37.79511422338909 ], [ -122.41045653820038, 37.79530073924811 ], [ -122.41045653820038, 37.79530073924811 ], [ -122.41045653820038, 37.79530073924811 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42193102836609, 37.79524139334406 ], [ -122.42192029953003, 37.79524139334406 ], [ -122.4217540025711, 37.795262588315275 ], [ -122.42172181606293, 37.795109984386826 ], [ -122.42189884185791, 37.795088789371825 ], [ -122.42193102836609, 37.79524139334406 ], [ -122.42193102836609, 37.79524139334406 ], [ -122.42193102836609, 37.79524139334406 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4214643239975, 37.79497433618579 ], [ -122.42100834846497, 37.79503368230439 ], [ -122.42093324661255, 37.79468608293166 ], [ -122.42139458656312, 37.794626736533836 ], [ -122.4214643239975, 37.79497433618579 ], [ -122.4214643239975, 37.79497433618579 ], [ -122.4214643239975, 37.79497433618579 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41237163543701, 37.795262588315275 ], [ -122.41227507591248, 37.795275305295064 ], [ -122.41227507591248, 37.79529226126473 ], [ -122.41221606731415, 37.79530073924811 ], [ -122.41221070289612, 37.79529650025653 ], [ -122.41217315196992, 37.79530073924811 ], [ -122.41213023662569, 37.795304978239436 ], [ -122.41208195686342, 37.7950506383295 ], [ -122.41163671016695, 37.7951184623911 ], [ -122.4116098880768, 37.79499553123362 ], [ -122.41158306598668, 37.79499977024245 ], [ -122.41151332855229, 37.7946182584731 ], [ -122.41198003292088, 37.7945504339523 ], [ -122.41213560104374, 37.79452499974094 ], [ -122.41221606731419, 37.79491922903299 ], [ -122.41227507591249, 37.794910751005816 ], [ -122.41237163543705, 37.795262588315275 ], [ -122.41237163543705, 37.795262588315275 ], [ -122.41237163543701, 37.795262588315275 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40958750247955, 37.79468608293166 ], [ -122.40950167179108, 37.79469456098458 ], [ -122.40950167179108, 37.794516521668534 ], [ -122.40955531597137, 37.79450804359518 ], [ -122.40958750247955, 37.79468608293166 ], [ -122.40958750247955, 37.79468608293166 ], [ -122.40958750247955, 37.79468608293166 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42296099662781, 37.794232505681 ], [ -122.42254257202148, 37.794283374296356 ], [ -122.4225103855133, 37.794122290227605 ], [ -122.42292881011963, 37.794071421501364 ], [ -122.42296099662781, 37.794232505681 ], [ -122.42296099662781, 37.794232505681 ], [ -122.42296099662781, 37.794232505681 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41999983787537, 37.79424522283814 ], [ -122.41987645626068, 37.79426641809515 ], [ -122.41984963417053, 37.794257939993045 ], [ -122.41983890533447, 37.79424522283814 ], [ -122.41981208324434, 37.79408413868621 ], [ -122.41996228694917, 37.79406718243925 ], [ -122.41999983787538, 37.79424522283814 ], [ -122.41999983787538, 37.79424522283814 ], [ -122.41999983787537, 37.79424522283814 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41181373596191, 37.79424098378598 ], [ -122.41148114204407, 37.794283374296356 ], [ -122.41147041320801, 37.79424522283814 ], [ -122.41143822669983, 37.79424946189002 ], [ -122.41140067577362, 37.794071421501364 ], [ -122.41176545619965, 37.794024791804866 ], [ -122.41181373596191, 37.79424098378598 ], [ -122.41181373596191, 37.79424098378598 ], [ -122.41181373596191, 37.79424098378598 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41907715797424, 37.794313047639136 ], [ -122.41881966590881, 37.79434272097 ], [ -122.41874992847443, 37.79399511834632 ], [ -122.41900205612184, 37.79396120580767 ], [ -122.41907715797426, 37.794313047639136 ], [ -122.41907715797426, 37.794313047639136 ], [ -122.41907715797424, 37.794313047639136 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4189966917038, 37.79395696673922 ], [ -122.41876602172852, 37.793982401146124 ], [ -122.41871237754822, 37.793770447487695 ], [ -122.41894841194153, 37.793740773926984 ], [ -122.41899669170378, 37.79395696673922 ], [ -122.41899669170378, 37.79395696673922 ], [ -122.4189966917038, 37.79395696673922 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41986572742462, 37.7938001210365 ], [ -122.41976916790009, 37.793808599191095 ], [ -122.41971552371977, 37.793554254129674 ], [ -122.41981208324432, 37.793545775945866 ], [ -122.41986572742462, 37.7938001210365 ], [ -122.41986572742462, 37.7938001210365 ], [ -122.41986572742462, 37.7938001210365 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41993546485901, 37.79375773024885 ], [ -122.41985499858858, 37.793766208408336 ], [ -122.41981208324434, 37.793545775945866 ], [ -122.41988718509675, 37.79353729776109 ], [ -122.41993546485901, 37.79375773024885 ], [ -122.41993546485901, 37.79375773024885 ], [ -122.41993546485901, 37.79375773024885 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42002129554749, 37.7937492520884 ], [ -122.41993546485901, 37.79375773024885 ], [ -122.41988718509674, 37.79353729776109 ], [ -122.41997301578522, 37.79352458048213 ], [ -122.42002129554749, 37.7937492520884 ], [ -122.42002129554749, 37.7937492520884 ], [ -122.42002129554749, 37.7937492520884 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42013394832611, 37.793723817601254 ], [ -122.42012321949005, 37.79373653484592 ], [ -122.4200963973999, 37.793740773926984 ], [ -122.42008566856384, 37.793732295764606 ], [ -122.42007493972778, 37.793740773926984 ], [ -122.42002129554749, 37.7937492520884 ], [ -122.41997301578522, 37.79352458048213 ], [ -122.41999983787537, 37.79351186320097 ], [ -122.4200266599655, 37.79351610229493 ], [ -122.42004811763762, 37.79350762410675 ], [ -122.42008566856383, 37.79351610229493 ], [ -122.4201339483261, 37.793723817601254 ], [ -122.4201339483261, 37.793723817601254 ], [ -122.42013394832611, 37.793723817601254 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4202412366867, 37.79374501300782 ], [ -122.4202036857605, 37.7937492520884 ], [ -122.4202036857605, 37.79372805668306 ], [ -122.4201500415802, 37.793732295764606 ], [ -122.42013394832611, 37.793723817601254 ], [ -122.42008566856386, 37.79352034138864 ], [ -122.42010176181793, 37.79351610229493 ], [ -122.42011249065399, 37.7935033850123 ], [ -122.4201500415802, 37.79350762410675 ], [ -122.42016613483429, 37.793494906822666 ], [ -122.42019295692442, 37.7935033850123 ], [ -122.42021441459654, 37.79359664503403 ], [ -122.42018222808836, 37.79360088412314 ], [ -122.42018222808836, 37.79361360138898 ], [ -122.42020905017851, 37.79361360138898 ], [ -122.42024123668669, 37.79374501300782 ], [ -122.42024123668669, 37.79374501300782 ], [ -122.4202412366867, 37.79374501300782 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4204021692276, 37.793732295764606 ], [ -122.42024660110474, 37.79375349116876 ], [ -122.42022514343262, 37.793668709515686 ], [ -122.42025196552277, 37.79366023134501 ], [ -122.42023587226868, 37.79357968867522 ], [ -122.42020905017854, 37.79358392776529 ], [ -122.42019295692445, 37.79349914591762 ], [ -122.42034852504732, 37.7934779504405 ], [ -122.4203646183014, 37.7935584932212 ], [ -122.42033779621126, 37.79356273231249 ], [ -122.42035925388338, 37.79365599225931 ], [ -122.42038607597352, 37.793651753173364 ], [ -122.42039680480958, 37.793689904938056 ], [ -122.4204021692276, 37.793732295764606 ], [ -122.4204021692276, 37.793732295764606 ], [ -122.4204021692276, 37.793732295764606 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4205631017685, 37.793723817601254 ], [ -122.42040753364563, 37.79374501300782 ], [ -122.42039680480957, 37.793689904938056 ], [ -122.42041289806365, 37.79368566585406 ], [ -122.42038071155547, 37.79352881957535 ], [ -122.42035925388335, 37.79353305866835 ], [ -122.42034852504729, 37.79347371134435 ], [ -122.42049872875214, 37.79345251585992 ], [ -122.4205631017685, 37.793723817601226 ], [ -122.4205631017685, 37.793723817601226 ], [ -122.4205631017685, 37.793723817601254 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42123901844025, 37.79360936230061 ], [ -122.42101907730103, 37.79363903591409 ], [ -122.42097079753876, 37.793393168471205 ], [ -122.42119073867798, 37.793367733861466 ], [ -122.42123901844025, 37.79360936230061 ], [ -122.42123901844025, 37.79360936230061 ], [ -122.42123901844025, 37.79360936230061 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41855144500732, 37.7935500150379 ], [ -122.41840124130249, 37.79356697140353 ], [ -122.4183851480484, 37.7934991459176 ], [ -122.41835832595827, 37.7935033850123 ], [ -122.41837441921234, 37.79357121049434 ], [ -122.41826176643373, 37.79358392776529 ], [ -122.41823494434358, 37.793469472247935 ], [ -122.41821348667146, 37.79347371134435 ], [ -122.41823494434358, 37.79358816685511 ], [ -122.41807401180269, 37.79360936230061 ], [ -122.4180418252945, 37.793469472247935 ], [ -122.41812229156494, 37.793460994054406 ], [ -122.41812229156494, 37.79344827676231 ], [ -122.4180418252945, 37.79345675495729 ], [ -122.41802036762238, 37.793359255656256 ], [ -122.41810619831087, 37.79335077745011 ], [ -122.41810619831087, 37.79333806013901 ], [ -122.41801500320436, 37.79335077745011 ], [ -122.41799354553224, 37.7932236042408 ], [ -122.4180954694748, 37.79321088690781 ], [ -122.41810083389282, 37.7932278433513 ], [ -122.41817057132721, 37.79321936513004 ], [ -122.41817057132721, 37.79320664779634 ], [ -122.41826713085175, 37.793193930460454 ], [ -122.4182939529419, 37.79331262551028 ], [ -122.41820275783539, 37.79332534282574 ], [ -122.41820275783539, 37.79335077745011 ], [ -122.41829931735992, 37.79333806013901 ], [ -122.41831541061401, 37.79343132036943 ], [ -122.41836905479431, 37.79342708127058 ], [ -122.41832077503204, 37.79318545223532 ], [ -122.41847634315491, 37.7931642566682 ], [ -122.41855144500732, 37.7935500150379 ], [ -122.41855144500732, 37.7935500150379 ], [ -122.41855144500732, 37.7935500150379 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41042971611023, 37.79328295176571 ], [ -122.41004884243013, 37.793333821034835 ], [ -122.4099737405777, 37.79296501804014 ], [ -122.41035461425781, 37.79291414851708 ], [ -122.41042971611023, 37.79328295176571 ], [ -122.41042971611023, 37.79328295176571 ], [ -122.41042971611023, 37.79328295176571 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41097688674927, 37.79319816957266 ], [ -122.41043508052826, 37.79326599533489 ], [ -122.41036534309387, 37.79290990938859 ], [ -122.41055309772491, 37.792888713742435 ], [ -122.41060137748718, 37.79310914816524 ], [ -122.41095006465912, 37.79306251786141 ], [ -122.41097688674927, 37.79319816957266 ], [ -122.41097688674927, 37.79319816957266 ], [ -122.41097688674927, 37.79319816957266 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41998374462128, 37.79282088763388 ], [ -122.41963505744934, 37.79286327895901 ], [ -122.41959750652313, 37.79266403951932 ], [ -122.41994619369507, 37.792621648079844 ], [ -122.41998374462128, 37.79282088763388 ], [ -122.41998374462128, 37.79282088763388 ], [ -122.41998374462128, 37.79282088763388 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42254793643951, 37.79240969051771 ], [ -122.42218315601349, 37.792460560388086 ], [ -122.42215633392335, 37.79235882061232 ], [ -122.42252111434938, 37.792303711508595 ], [ -122.42254793643951, 37.79240969051771 ], [ -122.42254793643951, 37.79240969051771 ], [ -122.42254793643951, 37.79240969051771 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4135571718216, 37.792337624808056 ], [ -122.41298854351044, 37.7924139296749 ], [ -122.41296172142029, 37.792303711508595 ], [ -122.41353571414949, 37.792227406527935 ], [ -122.41355717182161, 37.792337624808056 ], [ -122.41355717182161, 37.792337624808056 ], [ -122.4135571718216, 37.792337624808056 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41290271282196, 37.792426647145035 ], [ -122.41276860237122, 37.79244360376852 ], [ -122.41273105144501, 37.7922782765238 ], [ -122.41275250911713, 37.7922782765238 ], [ -122.41274178028107, 37.79223588486298 ], [ -122.41282761096956, 37.79222316736003 ], [ -122.41283833980562, 37.792265559028095 ], [ -122.41286516189575, 37.792265559028095 ], [ -122.41290271282196, 37.792426647145035 ], [ -122.41290271282196, 37.792426647145035 ], [ -122.41290271282196, 37.792426647145035 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41371810436249, 37.79225284153023 ], [ -122.41366446018219, 37.792261319862405 ], [ -122.41368591785431, 37.79235034229134 ], [ -122.41357862949371, 37.79236305977244 ], [ -122.41351962089539, 37.79212566643111 ], [ -122.41362154483795, 37.79211294890917 ], [ -122.41364300251007, 37.792210449854856 ], [ -122.41370737552643, 37.792197732347496 ], [ -122.41371810436249, 37.79225284153023 ], [ -122.41371810436249, 37.79225284153023 ], [ -122.41371810436249, 37.79225284153023 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42094397544861, 37.79230795067187 ], [ -122.42060601711273, 37.79235034229134 ], [ -122.4205631017685, 37.79211718808339 ], [ -122.42089569568634, 37.79207479633018 ], [ -122.4209439754486, 37.79230795067187 ], [ -122.4209439754486, 37.79230795067187 ], [ -122.42094397544861, 37.79230795067187 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4140989780426, 37.792168058155134 ], [ -122.41401851177216, 37.7921807756676 ], [ -122.41403996944427, 37.792265559028095 ], [ -122.41385221481323, 37.79229099401729 ], [ -122.41386294364929, 37.79232914648466 ], [ -122.41371273994446, 37.79235034229134 ], [ -122.4137020111084, 37.79229523318131 ], [ -122.41373956203459, 37.79229099401729 ], [ -122.4137020111084, 37.79212142725738 ], [ -122.41407752037048, 37.792070557153494 ], [ -122.4140989780426, 37.792168058155134 ], [ -122.4140989780426, 37.792168058155134 ], [ -122.4140989780426, 37.792168058155134 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41232335567474, 37.79207903550658 ], [ -122.41231262683868, 37.79209175303438 ], [ -122.41225898265839, 37.79209599220981 ], [ -122.4122428894043, 37.79208751385868 ], [ -122.4122428894043, 37.79207055715352 ], [ -122.41225898265839, 37.79205783962207 ], [ -122.41230189800262, 37.792049361266564 ], [ -122.41232335567474, 37.79205783962207 ], [ -122.41232335567474, 37.79207903550658 ], [ -122.41232335567474, 37.79207903550658 ], [ -122.41232335567474, 37.79207903550658 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4107301235199, 37.792460560388086 ], [ -122.41064965724945, 37.79246903869639 ], [ -122.41070866584778, 37.79274034404906 ], [ -122.40950167179108, 37.79289295287215 ], [ -122.40950167179108, 37.79268099608831 ], [ -122.40969479084015, 37.79265556123338 ], [ -122.40961968898773, 37.79228675485305 ], [ -122.40950167179106, 37.792299472345086 ], [ -122.40950167179106, 37.79212142725738 ], [ -122.41054236888884, 37.791990012750766 ], [ -122.41060137748717, 37.792282515688555 ], [ -122.41068720817564, 37.79226979819359 ], [ -122.41073012351988, 37.792460560388086 ], [ -122.41073012351988, 37.792460560388086 ], [ -122.4107301235199, 37.792460560388086 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4117386341095, 37.792146862296164 ], [ -122.4117386341095, 37.7921807756676 ], [ -122.41172254085541, 37.7922146890235 ], [ -122.41159915924074, 37.792227406527935 ], [ -122.41163671016693, 37.79237577725132 ], [ -122.41150259971619, 37.792392733886466 ], [ -122.41151332855225, 37.79246479954235 ], [ -122.41135239601135, 37.79248599531013 ], [ -122.41133630275726, 37.7924139296749 ], [ -122.41125583648683, 37.792422407988575 ], [ -122.41122364997864, 37.792282515688555 ], [ -122.4111270904541, 37.79229523318131 ], [ -122.41110026836397, 37.792282515688555 ], [ -122.41107881069185, 37.792261319862405 ], [ -122.41106808185577, 37.79223164569559 ], [ -122.41106808185577, 37.79220621068598 ], [ -122.41108417510986, 37.792185014837955 ], [ -122.41110563278198, 37.792168058155134 ], [ -122.41120755672455, 37.79215534064047 ], [ -122.41118609905243, 37.79207479633018 ], [ -122.41128265857697, 37.792066317976605 ], [ -122.41126656532289, 37.79200696947442 ], [ -122.41145431995393, 37.791985773569245 ], [ -122.41146504878999, 37.792045122088425 ], [ -122.41157233715059, 37.79203240455262 ], [ -122.41158843040466, 37.79210447055998 ], [ -122.41167962551117, 37.79209175303435 ], [ -122.41171181201935, 37.79211294890915 ], [ -122.4117386341095, 37.792146862296164 ], [ -122.4117386341095, 37.792146862296164 ], [ -122.4117386341095, 37.792146862296164 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4281644821167, 37.79176533579482 ], [ -122.42810010910034, 37.79176957498901 ], [ -122.42808938026428, 37.79165935586148 ], [ -122.42815911769867, 37.79165935586148 ], [ -122.42816448211669, 37.79176533579482 ], [ -122.42816448211669, 37.79176533579482 ], [ -122.4281644821167, 37.79176533579482 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42084205150604, 37.79183316287237 ], [ -122.42054700851439, 37.791871315576145 ], [ -122.4205094575882, 37.791672073461534 ], [ -122.42080450057983, 37.79163392065487 ], [ -122.42084205150604, 37.79183316287237 ], [ -122.42084205150604, 37.79183316287237 ], [ -122.42084205150604, 37.79183316287237 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41403996944427, 37.791782292570055 ], [ -122.41403996944427, 37.791807727725605 ], [ -122.41401851177216, 37.791837402062676 ], [ -122.41399705410004, 37.79185435882137 ], [ -122.41397023200989, 37.79186707638783 ], [ -122.41393804550171, 37.79187555476425 ], [ -122.41374492645265, 37.79190098988767 ], [ -122.41377174854279, 37.79201968701463 ], [ -122.41360008716583, 37.79203664373147 ], [ -122.41358399391174, 37.79195609929177 ], [ -122.4130153656006, 37.792028165373544 ], [ -122.41295635700227, 37.79178653176325 ], [ -122.41354107856752, 37.79171446544581 ], [ -122.41353034973146, 37.791642399058084 ], [ -122.41369128227235, 37.7916212030483 ], [ -122.41371273994447, 37.79173142223272 ], [ -122.41389513015748, 37.79171022624848 ], [ -122.41393804550172, 37.79171022624848 ], [ -122.41398096084596, 37.791718704642896 ], [ -122.41400778293611, 37.79173142223272 ], [ -122.41402924060823, 37.79175261821087 ], [ -122.41403996944429, 37.791782292570076 ], [ -122.41403996944429, 37.791782292570076 ], [ -122.41403996944427, 37.791782292570055 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41118609905243, 37.79168903025815 ], [ -122.41090714931488, 37.79172294383976 ], [ -122.4108749628067, 37.791553375776175 ], [ -122.41115391254425, 37.79151946211675 ], [ -122.41118609905243, 37.79168903025815 ], [ -122.41118609905243, 37.79168903025815 ], [ -122.41118609905243, 37.79168903025815 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41126120090485, 37.791680551860324 ], [ -122.41118609905243, 37.79168903025815 ], [ -122.41115391254425, 37.79151946211675 ], [ -122.41122901439667, 37.79150674449044 ], [ -122.41126120090485, 37.791680551860324 ], [ -122.41126120090485, 37.791680551860324 ], [ -122.41126120090485, 37.791680551860324 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42244064807892, 37.791748379015715 ], [ -122.42193102836609, 37.79181196691732 ], [ -122.42186665534973, 37.791485548441756 ], [ -122.42237627506256, 37.791421960259214 ], [ -122.42244064807892, 37.791748379015715 ], [ -122.42244064807892, 37.791748379015715 ], [ -122.42244064807892, 37.791748379015715 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42651224136353, 37.791591528624394 ], [ -122.42607772350311, 37.791646638259294 ], [ -122.42603480815887, 37.79139652497087 ], [ -122.4263995885849, 37.79135413280419 ], [ -122.42643713951111, 37.791553375776175 ], [ -122.42650151252747, 37.791544897362755 ], [ -122.42651224136353, 37.791591528624394 ], [ -122.42651224136353, 37.791591528624394 ], [ -122.42651224136353, 37.791591528624394 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42077231407166, 37.7914261994731 ], [ -122.42050409317017, 37.79146435238699 ], [ -122.42048263549805, 37.79137956810714 ], [ -122.42049872875214, 37.79137956810714 ], [ -122.42048263549805, 37.79129902295115 ], [ -122.42073476314545, 37.791269348397854 ], [ -122.42077231407166, 37.7914261994731 ], [ -122.42077231407166, 37.7914261994731 ], [ -122.42077231407166, 37.7914261994731 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41186738014221, 37.7916042462361 ], [ -122.41162598133087, 37.79163392065487 ], [ -122.4116098880768, 37.791553375776175 ], [ -122.41165816783905, 37.79154913656959 ], [ -122.41163671016693, 37.79144315632614 ], [ -122.41158843040466, 37.79145163475121 ], [ -122.41155624389648, 37.79129054450855 ], [ -122.41179764270784, 37.79126086995186 ], [ -122.41182982921602, 37.791421960259214 ], [ -122.41177618503572, 37.7914261994731 ], [ -122.41179764270784, 37.79153217974085 ], [ -122.41185128688814, 37.79152370132501 ], [ -122.41186738014221, 37.7916042462361 ], [ -122.41186738014221, 37.7916042462361 ], [ -122.41186738014221, 37.7916042462361 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41162598133087, 37.79163392065487 ], [ -122.41126120090485, 37.791680551860324 ], [ -122.41122901439667, 37.79150674449044 ], [ -122.4111807346344, 37.7912863052869 ], [ -122.41154551506042, 37.79123967383262 ], [ -122.41155624389648, 37.79129054450855 ], [ -122.41158843040466, 37.79145163475121 ], [ -122.4116098880768, 37.791553375776175 ], [ -122.41162598133087, 37.79163392065487 ], [ -122.41162598133087, 37.79163392065487 ], [ -122.41162598133087, 37.79163392065487 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41235017776489, 37.79154065815572 ], [ -122.4118673801422, 37.7916042462361 ], [ -122.41185128688812, 37.79152370132501 ], [ -122.411829829216, 37.791421960259214 ], [ -122.41179764270782, 37.79126086995186 ], [ -122.4117922782898, 37.7912269561582 ], [ -122.41227507591248, 37.79116760698179 ], [ -122.4123501777649, 37.79154065815572 ], [ -122.4123501777649, 37.79154065815572 ], [ -122.41235017776489, 37.79154065815572 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41739273071289, 37.79150250528121 ], [ -122.41730153560638, 37.79151522290824 ], [ -122.41729617118837, 37.79146859159843 ], [ -122.41728007793428, 37.791472830809646 ], [ -122.41728544235231, 37.791489787651976 ], [ -122.41703331470491, 37.79152370132501 ], [ -122.41702795028688, 37.791485548441756 ], [ -122.41700649261476, 37.791489787651976 ], [ -122.41701722145082, 37.79152370132501 ], [ -122.41692066192628, 37.7915364189484 ], [ -122.41690993309022, 37.791472830809646 ], [ -122.41694748401642, 37.79146859159843 ], [ -122.41690456867218, 37.791265109174965 ], [ -122.41686701774599, 37.791269348397826 ], [ -122.4168509244919, 37.79118880312169 ], [ -122.41705477237703, 37.79116336775309 ], [ -122.4170708656311, 37.79124391305694 ], [ -122.41700649261475, 37.791252391504884 ], [ -122.41700649261475, 37.791265109174965 ], [ -122.41703867912292, 37.79126086995184 ], [ -122.41707623004913, 37.791455873963365 ], [ -122.41711378097533, 37.79145163475121 ], [ -122.41710841655731, 37.79140500340129 ], [ -122.4172693490982, 37.79138380732341 ], [ -122.4172693490982, 37.791362611239464 ], [ -122.41736590862276, 37.79134989358616 ], [ -122.41739273071289, 37.79150250528119 ], [ -122.41739273071289, 37.79150250528119 ], [ -122.41739273071289, 37.79150250528121 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41064429283142, 37.791553375776175 ], [ -122.41057991981506, 37.79156185418857 ], [ -122.41041898727416, 37.79173566142882 ], [ -122.41042435169219, 37.791778053376625 ], [ -122.41009175777434, 37.79182468449112 ], [ -122.4100488424301, 37.79162968145292 ], [ -122.40995228290556, 37.791642399058055 ], [ -122.40986108779906, 37.791231195383254 ], [ -122.41056382656093, 37.79114217160591 ], [ -122.41064429283138, 37.791553375776175 ], [ -122.41064429283138, 37.791553375776175 ], [ -122.41064429283142, 37.791553375776175 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41736590862274, 37.79134989358618 ], [ -122.41726934909819, 37.791362611239464 ], [ -122.41725862026213, 37.791362611239464 ], [ -122.41725325584412, 37.79134989358618 ], [ -122.4171781539917, 37.791362611239464 ], [ -122.4171781539917, 37.791371089673774 ], [ -122.41709768772125, 37.79138380732341 ], [ -122.41709232330322, 37.791337175930686 ], [ -122.41710305213928, 37.791337175930686 ], [ -122.4170869588852, 37.79124391305697 ], [ -122.41707086563112, 37.79124391305697 ], [ -122.41705477237703, 37.79116336775309 ], [ -122.41731762886052, 37.79112945391467 ], [ -122.41736590862276, 37.79134989358618 ], [ -122.41736590862276, 37.79134989358618 ], [ -122.41736590862274, 37.79134989358618 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42073476314545, 37.79126510917499 ], [ -122.42048263549805, 37.79129902295112 ], [ -122.42045044898987, 37.79113793237575 ], [ -122.4207079410553, 37.79110825775774 ], [ -122.42073476314543, 37.79126510917499 ], [ -122.42073476314543, 37.79126510917499 ], [ -122.42073476314545, 37.79126510917499 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42130875587463, 37.79135413280419 ], [ -122.42100834846497, 37.79139228575531 ], [ -122.42096006870271, 37.79114217160591 ], [ -122.42126047611238, 37.791104018525644 ], [ -122.42130875587463, 37.79135413280419 ], [ -122.42130875587463, 37.79135413280419 ], [ -122.42130875587463, 37.79135413280419 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42231726646423, 37.791231195383254 ], [ -122.4218612909317, 37.79129478372996 ], [ -122.42182910442352, 37.79113369314532 ], [ -122.42228507995605, 37.791070104659966 ], [ -122.42231726646423, 37.791231195383254 ], [ -122.42231726646423, 37.791231195383254 ], [ -122.42231726646423, 37.791231195383254 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41788625717163, 37.79123967383262 ], [ -122.41783797740936, 37.79124815228106 ], [ -122.41783261299133, 37.791231195383254 ], [ -122.41775751113892, 37.79123967383262 ], [ -122.41776287555695, 37.79129054450855 ], [ -122.41759657859802, 37.79131174061318 ], [ -122.41755902767181, 37.791095540060674 ], [ -122.41785407066345, 37.79106162619113 ], [ -122.41787016391754, 37.79114641083583 ], [ -122.41784870624542, 37.79115065006551 ], [ -122.41785407066345, 37.79118032466647 ], [ -122.41787552833557, 37.79117608543849 ], [ -122.41788625717163, 37.79123967383262 ], [ -122.41788625717163, 37.79123967383262 ], [ -122.41788625717163, 37.79123967383262 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42152333259583, 37.79132869749249 ], [ -122.4213033914566, 37.79135413280419 ], [ -122.42126047611237, 37.79110825775774 ], [ -122.4212121963501, 37.79111249698962 ], [ -122.42119610309602, 37.791019233832294 ], [ -122.42145895957948, 37.79098955916663 ], [ -122.42152333259584, 37.79132869749249 ], [ -122.42152333259584, 37.79132869749249 ], [ -122.42152333259583, 37.79132869749249 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42070257663727, 37.79110825775774 ], [ -122.42037534713745, 37.79115065006551 ], [ -122.42033779621124, 37.79096412372947 ], [ -122.42066502571106, 37.790921731314675 ], [ -122.42070257663727, 37.79110825775774 ], [ -122.42070257663727, 37.79110825775774 ], [ -122.42070257663727, 37.79110825775774 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42228507995605, 37.791070104659966 ], [ -122.42182910442352, 37.79112945391467 ], [ -122.42179155349733, 37.79096412372947 ], [ -122.42224752902986, 37.79090053509816 ], [ -122.42228507995605, 37.791070104659966 ], [ -122.42228507995605, 37.791070104659966 ], [ -122.42228507995605, 37.791070104659966 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41350889205933, 37.79138380732341 ], [ -122.41255939006805, 37.79150674449044 ], [ -122.41244673728943, 37.79096412372947 ], [ -122.41302073001862, 37.79088781736534 ], [ -122.41305828094482, 37.79106162619113 ], [ -122.41342842578887, 37.79101499459507 ], [ -122.41345524787901, 37.79112521468376 ], [ -122.41350889205931, 37.79138380732341 ], [ -122.41350889205931, 37.79138380732341 ], [ -122.41350889205933, 37.79138380732341 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42310047149658, 37.79115065006551 ], [ -122.42277324199675, 37.79119304234894 ], [ -122.42271959781645, 37.790921731314675 ], [ -122.42304146289824, 37.79087933887559 ], [ -122.42310047149657, 37.79115065006551 ], [ -122.42310047149657, 37.79115065006551 ], [ -122.42310047149658, 37.79115065006551 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41398632526398, 37.79132021905332 ], [ -122.41376101970673, 37.79134989358618 ], [ -122.41370737552643, 37.79109130082786 ], [ -122.41345524787903, 37.79112521468376 ], [ -122.41342842578888, 37.79101499459507 ], [ -122.41340160369874, 37.79087086038484 ], [ -122.41387367248537, 37.79080727167329 ], [ -122.41398632526399, 37.79132021905332 ], [ -122.41398632526399, 37.79132021905332 ], [ -122.41398632526398, 37.79132021905332 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4172693490982, 37.79090477434197 ], [ -122.41713523864746, 37.79092597055724 ], [ -122.41711378097534, 37.79080303242391 ], [ -122.41724789142609, 37.790786075423945 ], [ -122.4172693490982, 37.79090477434197 ], [ -122.4172693490982, 37.79090477434197 ], [ -122.4172693490982, 37.79090477434197 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42065966129303, 37.790917492071834 ], [ -122.42043972015381, 37.79094716676645 ], [ -122.4204021692276, 37.79074792215982 ], [ -122.42057383060457, 37.79072248663944 ], [ -122.42062211036682, 37.7907182473852 ], [ -122.420654296875, 37.79087933887556 ], [ -122.42065966129303, 37.790917492071834 ], [ -122.42065966129303, 37.790917492071834 ], [ -122.42065966129303, 37.790917492071834 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42116928100586, 37.79094292752511 ], [ -122.42092788219452, 37.7909726022095 ], [ -122.42086350917816, 37.79066737631527 ], [ -122.42103517055511, 37.79064618002581 ], [ -122.42108345031738, 37.79088357812059 ], [ -122.42115318775177, 37.790875099630334 ], [ -122.42116928100585, 37.79094292752511 ], [ -122.42116928100585, 37.79094292752511 ], [ -122.42116928100586, 37.79094292752511 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42123365402222, 37.7908666211391 ], [ -122.42108881473541, 37.79088357812059 ], [ -122.42103517055511, 37.79064618002581 ], [ -122.42119073867798, 37.79062922298984 ], [ -122.42123365402222, 37.7908666211391 ], [ -122.42123365402222, 37.7908666211391 ], [ -122.42123365402222, 37.7908666211391 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42172718048096, 37.790917492071834 ], [ -122.4215179681778, 37.79094292752511 ], [ -122.42145359516142, 37.79059530890626 ], [ -122.42166817188262, 37.790569873333375 ], [ -122.42172718048094, 37.790917492071834 ], [ -122.42172718048094, 37.790917492071834 ], [ -122.42172718048096, 37.790917492071834 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4222582578659, 37.79089629585415 ], [ -122.42192566394806, 37.79094292752511 ], [ -122.42183983325958, 37.7905529162799 ], [ -122.42217242717741, 37.79050628436279 ], [ -122.4222582578659, 37.79089629585415 ], [ -122.4222582578659, 37.79089629585415 ], [ -122.4222582578659, 37.79089629585415 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41121292114258, 37.7907012903658 ], [ -122.41073548793794, 37.790769118420094 ], [ -122.41071403026581, 37.79076063991673 ], [ -122.41066575050355, 37.790510523629194 ], [ -122.4109071493149, 37.79048084875924 ], [ -122.41114854812623, 37.790446934607566 ], [ -122.41121292114259, 37.7907012903658 ], [ -122.41121292114259, 37.7907012903658 ], [ -122.41121292114258, 37.7907012903658 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41825103759766, 37.79079031467432 ], [ -122.41780042648314, 37.790845424906784 ], [ -122.41772532463072, 37.79046813095418 ], [ -122.41817593574524, 37.7904130204403 ], [ -122.41825103759766, 37.79079031467432 ], [ -122.41825103759766, 37.79079031467432 ], [ -122.41825103759766, 37.79079031467432 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41133093833923, 37.79068857259868 ], [ -122.41121292114258, 37.7907012903658 ], [ -122.4111485481262, 37.790446934607566 ], [ -122.41114318370819, 37.790404541896045 ], [ -122.41126656532288, 37.79038758480464 ], [ -122.41133093833923, 37.79068857259868 ], [ -122.41133093833923, 37.79068857259868 ], [ -122.41133093833923, 37.79068857259868 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41196930408478, 37.79059954816758 ], [ -122.41187274456024, 37.79061226595001 ], [ -122.41182446479797, 37.79040030262357 ], [ -122.41192638874054, 37.79038758480466 ], [ -122.41196930408478, 37.79059954816758 ], [ -122.41196930408478, 37.79059954816758 ], [ -122.41196930408478, 37.79059954816758 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41144895553589, 37.790671615572435 ], [ -122.41133093833923, 37.79068857259868 ], [ -122.41126656532288, 37.79038758480464 ], [ -122.4113792181015, 37.790370627709365 ], [ -122.41144895553587, 37.790671615572435 ], [ -122.41144895553587, 37.790671615572435 ], [ -122.41144895553589, 37.790671615572435 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41215705871582, 37.790569873333375 ], [ -122.41196930408478, 37.79059954816758 ], [ -122.41192638874054, 37.79038758480466 ], [ -122.41210877895355, 37.79035790988532 ], [ -122.4121570587158, 37.790569873333375 ], [ -122.4121570587158, 37.790569873333375 ], [ -122.41215705871582, 37.790569873333375 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41090714931488, 37.79048084875924 ], [ -122.41066575050354, 37.790510523629194 ], [ -122.41063892841339, 37.79038334553119 ], [ -122.41088032722473, 37.79035367061017 ], [ -122.41090714931488, 37.79048084875924 ], [ -122.41090714931488, 37.79048084875924 ], [ -122.41090714931488, 37.79048084875924 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41156160831451, 37.79065465854232 ], [ -122.41144895553589, 37.790671615572435 ], [ -122.4113792181015, 37.790370627709365 ], [ -122.41137385368349, 37.790353670610145 ], [ -122.41149187088014, 37.790340952783204 ], [ -122.41156160831453, 37.79065465854232 ], [ -122.41156160831453, 37.79065465854232 ], [ -122.41156160831451, 37.79065465854232 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41114854812622, 37.790446934607566 ], [ -122.41090714931488, 37.79048084875924 ], [ -122.41088032722473, 37.79035367061017 ], [ -122.41091787815094, 37.79034943133476 ], [ -122.41112172603607, 37.79032399567722 ], [ -122.41114318370819, 37.790404541896045 ], [ -122.4111485481262, 37.790446934607566 ], [ -122.4111485481262, 37.790446934607566 ], [ -122.41114854812622, 37.790446934607566 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41187274456024, 37.79061226595001 ], [ -122.4117761850357, 37.79062498373026 ], [ -122.41170644760132, 37.79032399567722 ], [ -122.41180837154388, 37.79031127784516 ], [ -122.41182446479796, 37.79040030262357 ], [ -122.41187274456023, 37.79061226595001 ], [ -122.41187274456023, 37.79061226595001 ], [ -122.41187274456024, 37.79061226595001 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4209600687027, 37.79043421679666 ], [ -122.42079377174377, 37.79045117387736 ], [ -122.42076694965363, 37.79031127784516 ], [ -122.42083668708801, 37.79030279928923 ], [ -122.42094397544861, 37.790370627709365 ], [ -122.4209600687027, 37.79043421679666 ], [ -122.4209600687027, 37.79043421679666 ], [ -122.4209600687027, 37.79043421679666 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4117761850357, 37.79062498373026 ], [ -122.41167962551116, 37.790637701508324 ], [ -122.41160988807678, 37.790315517122735 ], [ -122.41170108318327, 37.79030279928923 ], [ -122.4117064476013, 37.79032399567719 ], [ -122.41177618503569, 37.79062498373026 ], [ -122.41177618503569, 37.79062498373026 ], [ -122.4117761850357, 37.79062498373026 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41167962551117, 37.790637701508324 ], [ -122.41156160831451, 37.79065465854232 ], [ -122.41149187088013, 37.790340952783204 ], [ -122.41151869297028, 37.79033671350706 ], [ -122.41151332855225, 37.79030279928923 ], [ -122.41159915924074, 37.79029008145351 ], [ -122.4116098880768, 37.790315517122735 ], [ -122.41167962551117, 37.790637701508324 ], [ -122.41167962551117, 37.790637701508324 ], [ -122.41167962551117, 37.790637701508324 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41091787815094, 37.79034943133474 ], [ -122.41088032722473, 37.790353670610145 ], [ -122.41063892841339, 37.79038334553119 ], [ -122.41062283515932, 37.790298560010896 ], [ -122.41090178489686, 37.790264645775565 ], [ -122.41091787815094, 37.79034943133474 ], [ -122.41091787815094, 37.79034943133474 ], [ -122.41091787815094, 37.79034943133474 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41211414337158, 37.79033247423071 ], [ -122.41186738014221, 37.79036638843492 ], [ -122.41185665130615, 37.790298560010896 ], [ -122.41181910037996, 37.79030279928923 ], [ -122.41180300712587, 37.79022649224218 ], [ -122.41208195686342, 37.7901883386891 ], [ -122.4121141433716, 37.79033247423071 ], [ -122.4121141433716, 37.79033247423071 ], [ -122.41211414337158, 37.79033247423071 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42111563682556, 37.7904087811683 ], [ -122.42077231407166, 37.79018409940419 ], [ -122.42105662822723, 37.79014594582926 ], [ -122.42111563682556, 37.7904087811683 ], [ -122.42111563682556, 37.7904087811683 ], [ -122.42111563682556, 37.7904087811683 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42128729820251, 37.79040030262357 ], [ -122.42111563682556, 37.79042573825485 ], [ -122.4210512638092, 37.79012898867849 ], [ -122.42122292518616, 37.79010779223458 ], [ -122.42128729820251, 37.79040030262357 ], [ -122.42128729820251, 37.79040030262357 ], [ -122.42128729820251, 37.79040030262357 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42154479026794, 37.79037910625748 ], [ -122.42128729820251, 37.7904130204403 ], [ -122.42122292518616, 37.79010779223458 ], [ -122.42148578166962, 37.790078117202874 ], [ -122.42154479026794, 37.79037910625748 ], [ -122.42154479026794, 37.79037910625748 ], [ -122.42154479026794, 37.79037910625748 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42104053497314, 37.79014594582926 ], [ -122.42077231407166, 37.79018409940419 ], [ -122.42075085639954, 37.790082356493855 ], [ -122.42101907730103, 37.79005268145195 ], [ -122.42104053497314, 37.79014594582926 ], [ -122.42104053497314, 37.79014594582926 ], [ -122.42104053497314, 37.79014594582926 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42214024066925, 37.79029432073236 ], [ -122.42154479026794, 37.790374866983555 ], [ -122.42147505283356, 37.79003572427978 ], [ -122.42157161235811, 37.79002300639811 ], [ -122.42159843444824, 37.79016290297611 ], [ -122.42210805416107, 37.79009931365531 ], [ -122.42214024066925, 37.79029432073233 ], [ -122.42214024066925, 37.79029432073233 ], [ -122.42214024066925, 37.79029432073236 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41086959838867, 37.79022225295947 ], [ -122.41062283515932, 37.790251927933284 ], [ -122.41057991981508, 37.79001452780913 ], [ -122.41081595420837, 37.78998485273997 ], [ -122.41086959838867, 37.79022225295947 ], [ -122.41086959838867, 37.79022225295947 ], [ -122.41086959838867, 37.79022225295947 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41094470024109, 37.79021377439333 ], [ -122.41086959838867, 37.79022225295947 ], [ -122.41081595420836, 37.78998485273997 ], [ -122.41089105606079, 37.78997213484955 ], [ -122.41091787815093, 37.790078117202874 ], [ -122.41093933582304, 37.7901883386891 ], [ -122.41094470024107, 37.79021377439333 ], [ -122.41094470024107, 37.79021377439333 ], [ -122.41094470024109, 37.79021377439333 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41111099720001, 37.79028160289519 ], [ -122.41096615791321, 37.790298560010896 ], [ -122.41094470024109, 37.79021377439336 ], [ -122.41093933582306, 37.7901883386891 ], [ -122.41098761558533, 37.79017986011907 ], [ -122.41096615791321, 37.79007387791167 ], [ -122.41091787815094, 37.790078117202874 ], [ -122.41089105606079, 37.78997213484955 ], [ -122.41104662418365, 37.78995093836062 ], [ -122.41110563278198, 37.790264645775565 ], [ -122.41111099720001, 37.79028160289519 ], [ -122.41111099720001, 37.79028160289519 ], [ -122.41111099720001, 37.79028160289519 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41121828556061, 37.790251927933284 ], [ -122.41110563278198, 37.790264645775565 ], [ -122.41104662418365, 37.78995093836062 ], [ -122.41115391254426, 37.78993822046437 ], [ -122.41121828556062, 37.790251927933284 ], [ -122.41121828556062, 37.790251927933284 ], [ -122.41121828556061, 37.790251927933284 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41135239601135, 37.790234970806864 ], [ -122.41121828556061, 37.790251927933284 ], [ -122.41115391254425, 37.78993822046437 ], [ -122.411288022995, 37.78992550256591 ], [ -122.41131484508513, 37.79004420286635 ], [ -122.41129338741301, 37.79004420286635 ], [ -122.4113094806671, 37.790120510101644 ], [ -122.41133093833922, 37.790120510101644 ], [ -122.41135239601134, 37.790234970806836 ], [ -122.41135239601134, 37.790234970806836 ], [ -122.41135239601135, 37.790234970806864 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41142213344574, 37.790027245692244 ], [ -122.41131484508513, 37.79004420286635 ], [ -122.411288022995, 37.78992550256591 ], [ -122.41139531135559, 37.789908545364554 ], [ -122.41142213344574, 37.790027245692244 ], [ -122.41142213344574, 37.790027245692244 ], [ -122.41142213344574, 37.790027245692244 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41158306598663, 37.79023073152464 ], [ -122.41147041320801, 37.79024344937056 ], [ -122.41142213344574, 37.790027245692244 ], [ -122.4113953113556, 37.789908545364554 ], [ -122.41150796413423, 37.789895827461 ], [ -122.41151332855225, 37.78991278466528 ], [ -122.41152942180634, 37.7899975706282 ], [ -122.41158306598663, 37.79023073152464 ], [ -122.41158306598663, 37.79023073152464 ], [ -122.41158306598663, 37.79023073152464 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41170108318329, 37.78997637414658 ], [ -122.41152942180634, 37.7899975706282 ], [ -122.41151332855225, 37.78991278466528 ], [ -122.41168498992921, 37.789891588159335 ], [ -122.41170108318329, 37.78997637414658 ], [ -122.41170108318329, 37.78997637414658 ], [ -122.41170108318329, 37.78997637414658 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41189420223236, 37.790090835075056 ], [ -122.41173326969147, 37.790112031523854 ], [ -122.41171181201935, 37.790018767103746 ], [ -122.41173326969147, 37.79001452780913 ], [ -122.41172254085541, 37.78997213484955 ], [ -122.41170108318327, 37.78997637414658 ], [ -122.4116849899292, 37.789891588159335 ], [ -122.41167962551117, 37.78986615234419 ], [ -122.41184055805208, 37.789844955824854 ], [ -122.41189420223238, 37.790090835075056 ], [ -122.41189420223238, 37.790090835075056 ], [ -122.41189420223236, 37.790090835075056 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41206586360931, 37.790090835075056 ], [ -122.41190493106842, 37.790116270812874 ], [ -122.41189420223236, 37.790090835075056 ], [ -122.41184055805206, 37.789844955824854 ], [ -122.41200149059296, 37.78981951999368 ], [ -122.41206586360931, 37.790090835075056 ], [ -122.41206586360931, 37.790090835075056 ], [ -122.41206586360931, 37.790090835075056 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42102980613708, 37.79004844215926 ], [ -122.42074012756348, 37.79008659578458 ], [ -122.42069184780121, 37.789823759299495 ], [ -122.42098152637482, 37.789785605538455 ], [ -122.42102980613708, 37.79004844215926 ], [ -122.42102980613708, 37.79004844215926 ], [ -122.42102980613708, 37.79004844215926 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42098152637482, 37.789785605538455 ], [ -122.42069184780121, 37.789823759299495 ], [ -122.42066502571106, 37.78971777658132 ], [ -122.42096006870271, 37.789679622765576 ], [ -122.42098152637483, 37.789785605538455 ], [ -122.42098152637483, 37.789785605538455 ], [ -122.42098152637482, 37.789785605538455 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41371810436249, 37.78999333133236 ], [ -122.41341233253479, 37.79003148498613 ], [ -122.41338551044464, 37.789878870252856 ], [ -122.41353571414949, 37.789861913040816 ], [ -122.41352498531343, 37.78981104138134 ], [ -122.41338014602663, 37.789827998605055 ], [ -122.41335332393648, 37.789696580019445 ], [ -122.41364836692811, 37.78965842619276 ], [ -122.4137181043625, 37.78999333133236 ], [ -122.4137181043625, 37.78999333133236 ], [ -122.41371810436249, 37.78999333133236 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42137312889099, 37.79000604921915 ], [ -122.4210351705551, 37.79004844215926 ], [ -122.42096006870268, 37.789679622765576 ], [ -122.42129802703856, 37.78963722961387 ], [ -122.42137312889099, 37.79000604921915 ], [ -122.42137312889099, 37.79000604921915 ], [ -122.42137312889099, 37.79000604921915 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42156624794006, 37.78998061344342 ], [ -122.421373128891, 37.79000604921915 ], [ -122.42129802703857, 37.78963722961387 ], [ -122.42149114608765, 37.78961179371117 ], [ -122.42156624794006, 37.78998061344342 ], [ -122.42156624794006, 37.78998061344342 ], [ -122.42156624794006, 37.78998061344342 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41076231002808, 37.789802562768 ], [ -122.41054773330688, 37.78983223791036 ], [ -122.41049945354463, 37.789616033028864 ], [ -122.41071939468385, 37.789586357799685 ], [ -122.41076231002809, 37.789802562768 ], [ -122.41076231002809, 37.789802562768 ], [ -122.41076231002808, 37.789802562768 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41084814071655, 37.789794084153726 ], [ -122.41076231002808, 37.78980256276803 ], [ -122.41071939468384, 37.789586357799685 ], [ -122.41079986095428, 37.78957363984067 ], [ -122.41082668304442, 37.789696580019445 ], [ -122.41084814071655, 37.789794084153726 ], [ -122.41084814071655, 37.789794084153726 ], [ -122.41084814071655, 37.789794084153726 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42210268974304, 37.79010355294507 ], [ -122.42159843444823, 37.79016290297611 ], [ -122.42149114608763, 37.78961179371117 ], [ -122.42200076580046, 37.78955244323747 ], [ -122.42210268974303, 37.79010355294507 ], [ -122.42210268974303, 37.79010355294507 ], [ -122.42210268974304, 37.79010355294507 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41118609905243, 37.789751691067664 ], [ -122.4110198020935, 37.789772887613736 ], [ -122.41096615791321, 37.789522767982724 ], [ -122.41113781929016, 37.78950157136492 ], [ -122.41118609905243, 37.789751691067664 ], [ -122.41118609905243, 37.789751691067664 ], [ -122.41118609905243, 37.789751691067664 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41142213344574, 37.78972625520438 ], [ -122.4113416671753, 37.789734733826435 ], [ -122.41129338741302, 37.78951005001279 ], [ -122.41137385368347, 37.78950157136492 ], [ -122.41142213344574, 37.78972625520438 ], [ -122.41142213344574, 37.78972625520438 ], [ -122.41142213344574, 37.78972625520438 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41076231002808, 37.789556682558576 ], [ -122.41048872470856, 37.78959059711889 ], [ -122.4104779958725, 37.78952700730556 ], [ -122.41075158119202, 37.78949309271609 ], [ -122.41076231002808, 37.789556682558576 ], [ -122.41076231002808, 37.789556682558576 ], [ -122.41076231002808, 37.789556682558576 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42271959781647, 37.78971777658132 ], [ -122.42255866527557, 37.78973897313711 ], [ -122.4225103855133, 37.78951428933633 ], [ -122.4226713180542, 37.78948885339132 ], [ -122.42271959781647, 37.78971777658132 ], [ -122.42271959781647, 37.78971777658132 ], [ -122.42271959781647, 37.78971777658132 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4113416671753, 37.789734733826435 ], [ -122.41118609905243, 37.789751691067664 ], [ -122.41113781929016, 37.78950157136492 ], [ -122.4111270904541, 37.789467656763776 ], [ -122.41128265857697, 37.789446460130144 ], [ -122.41129338741302, 37.78951005001279 ], [ -122.4113416671753, 37.789734733826435 ], [ -122.4113416671753, 37.789734733826435 ], [ -122.4113416671753, 37.789734733826435 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41165816783905, 37.78966266550779 ], [ -122.41164207458498, 37.78966690482261 ], [ -122.41165280342103, 37.78970081933231 ], [ -122.41150796413423, 37.78971777658132 ], [ -122.41145431995393, 37.789463417437524 ], [ -122.41161525249483, 37.789442220802705 ], [ -122.41162061691286, 37.789484614066296 ], [ -122.41165816783905, 37.78966266550779 ], [ -122.41165816783905, 37.78966266550779 ], [ -122.41165816783905, 37.78966266550779 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41198003292084, 37.789654186877456 ], [ -122.41165280342102, 37.78970081933231 ], [ -122.41164207458496, 37.78966690482261 ], [ -122.41165816783904, 37.78966266550779 ], [ -122.41162061691284, 37.789484614066296 ], [ -122.4119371175766, 37.789442220802705 ], [ -122.41198003292084, 37.789654186877456 ], [ -122.41198003292084, 37.789654186877456 ], [ -122.41198003292084, 37.789654186877456 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4110198020935, 37.789772887613736 ], [ -122.41084814071655, 37.789794084153726 ], [ -122.41082668304442, 37.789696580019445 ], [ -122.41084814071655, 37.78969234070635 ], [ -122.41081058979034, 37.78951005001279 ], [ -122.4107837677002, 37.78951428933633 ], [ -122.41077840328218, 37.78948885339132 ], [ -122.41077303886415, 37.789446460130144 ], [ -122.4109447002411, 37.789425263490436 ], [ -122.41096615791322, 37.789522767982724 ], [ -122.41101980209355, 37.789772887613736 ], [ -122.41101980209355, 37.789772887613736 ], [ -122.4110198020935, 37.789772887613736 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41240382194519, 37.78961179371117 ], [ -122.41215705871582, 37.789641468930114 ], [ -122.41211950778961, 37.78945069945736 ], [ -122.41236090660097, 37.78941678483285 ], [ -122.4124038219452, 37.78961179371117 ], [ -122.4124038219452, 37.78961179371117 ], [ -122.41240382194519, 37.78961179371117 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41077840328217, 37.78948885339132 ], [ -122.41075158119202, 37.78949309271609 ], [ -122.4104779958725, 37.78952700730556 ], [ -122.41046726703644, 37.78945069945736 ], [ -122.41048336029051, 37.789446460130144 ], [ -122.41054773330688, 37.789437981475004 ], [ -122.41064429283142, 37.789425263490465 ], [ -122.41076231002808, 37.78940830617431 ], [ -122.41077303886414, 37.789446460130144 ], [ -122.41077840328217, 37.78948885339132 ], [ -122.41077840328217, 37.78948885339132 ], [ -122.41077840328217, 37.78948885339132 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4126398563385, 37.7895778791606 ], [ -122.41255939006805, 37.78959059711889 ], [ -122.41252183914185, 37.78941678483285 ], [ -122.41260230541229, 37.78940406684465 ], [ -122.4126398563385, 37.7895778791606 ], [ -122.4126398563385, 37.7895778791606 ], [ -122.4126398563385, 37.7895778791606 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41247355937958, 37.78959907575652 ], [ -122.41240382194519, 37.78961179371117 ], [ -122.41236090660095, 37.789404066844675 ], [ -122.41243064403534, 37.78939558818465 ], [ -122.41247355937958, 37.78959907575652 ], [ -122.41247355937958, 37.78959907575652 ], [ -122.41247355937958, 37.78959907575652 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41255939006805, 37.78959059711889 ], [ -122.41247355937958, 37.78959907575652 ], [ -122.41243064403534, 37.78939558818465 ], [ -122.41251647472382, 37.78938710952366 ], [ -122.41255939006805, 37.78959059711889 ], [ -122.41255939006805, 37.78959059711889 ], [ -122.41255939006805, 37.78959059711889 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41150796413422, 37.78971777658132 ], [ -122.41142213344574, 37.78972625520438 ], [ -122.41137385368347, 37.78950157136492 ], [ -122.41134703159332, 37.7893786308617 ], [ -122.41143286228181, 37.78936591286693 ], [ -122.41145431995393, 37.789463417437524 ], [ -122.41150796413423, 37.78971777658132 ], [ -122.41150796413423, 37.78971777658132 ], [ -122.41150796413422, 37.78971777658132 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4129992723465, 37.789531246628144 ], [ -122.41281151771545, 37.789556682558576 ], [ -122.41277933120728, 37.78938710952366 ], [ -122.41296172142029, 37.78936591286693 ], [ -122.41299927234648, 37.789531246628144 ], [ -122.41299927234648, 37.789531246628144 ], [ -122.4129992723465, 37.789531246628144 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41061210632324, 37.78941254550371 ], [ -122.41054236888885, 37.789421024161776 ], [ -122.41054773330688, 37.789437981475004 ], [ -122.41048336029051, 37.789446460130144 ], [ -122.41046726703644, 37.78945069945736 ], [ -122.41044580936432, 37.78936167353485 ], [ -122.41059601306915, 37.78934047687082 ], [ -122.41061210632324, 37.78941254550371 ], [ -122.41061210632324, 37.78941254550371 ], [ -122.41061210632324, 37.78941254550371 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4195921421051, 37.78963299029734 ], [ -122.41893768310548, 37.78971353726942 ], [ -122.41887867450716, 37.789399827514764 ], [ -122.41901814937593, 37.7893828701928 ], [ -122.41905570030214, 37.78957363984067 ], [ -122.41941511631012, 37.789531246628144 ], [ -122.41937756538393, 37.78932775886948 ], [ -122.41952776908876, 37.78931080153099 ], [ -122.41959214210512, 37.78963299029734 ], [ -122.41959214210512, 37.78963299029734 ], [ -122.4195921421051, 37.78963299029734 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.412548661232, 37.7893786308617 ], [ -122.41211414337158, 37.789433742147054 ], [ -122.41209805011749, 37.78935319486999 ], [ -122.4125325679779, 37.789298083524535 ], [ -122.412548661232, 37.7893786308617 ], [ -122.412548661232, 37.7893786308617 ], [ -122.412548661232, 37.7893786308617 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4119371175766, 37.789425263490436 ], [ -122.41174936294556, 37.789446460130144 ], [ -122.41171717643738, 37.789298083524535 ], [ -122.41188883781433, 37.78927688684228 ], [ -122.41190493106842, 37.78935319486999 ], [ -122.41192102432251, 37.78934895553716 ], [ -122.41193711757658, 37.789425263490436 ], [ -122.41193711757658, 37.789425263490436 ], [ -122.4119371175766, 37.789425263490436 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41318702697754, 37.78950581068898 ], [ -122.4129992723465, 37.789531246628165 ], [ -122.4129456281662, 37.78928536551592 ], [ -122.41313338279724, 37.789259929492104 ], [ -122.41318702697754, 37.78950581068898 ], [ -122.41318702697754, 37.78950581068898 ], [ -122.41318702697754, 37.78950581068898 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42153406143188, 37.78941254550371 ], [ -122.42136240005493, 37.789433742147054 ], [ -122.42133021354675, 37.78927264750509 ], [ -122.4215018749237, 37.78925145081554 ], [ -122.42153406143188, 37.78941254550371 ], [ -122.42153406143188, 37.78941254550371 ], [ -122.42153406143188, 37.78941254550371 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.43181228637695, 37.789535485950495 ], [ -122.43175864219666, 37.78929384418857 ], [ -122.43181228637695, 37.78928960485237 ], [ -122.43181228637695, 37.789535485950495 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41410434246063, 37.78940406684465 ], [ -122.41383612155914, 37.789437981475004 ], [ -122.41379857063295, 37.78924297213801 ], [ -122.413991689682, 37.78921753609959 ], [ -122.413991689682, 37.78922601478002 ], [ -122.41406679153444, 37.789213296758994 ], [ -122.4140775203705, 37.78928112617922 ], [ -122.41406142711641, 37.78928536551592 ], [ -122.41406679153444, 37.789315040865986 ], [ -122.41408824920656, 37.78931080153099 ], [ -122.41410434246063, 37.78940406684465 ], [ -122.41410434246063, 37.78940406684465 ], [ -122.41410434246063, 37.78940406684465 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41188883781433, 37.78927688684228 ], [ -122.41171717643738, 37.789298083524535 ], [ -122.41164743900299, 37.789306562195755 ], [ -122.41163134574892, 37.78924297213801 ], [ -122.41187810897827, 37.78920905741816 ], [ -122.41188883781433, 37.78927688684228 ], [ -122.41188883781433, 37.78927688684228 ], [ -122.41188883781433, 37.78927688684228 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4125325679779, 37.789298083524535 ], [ -122.41209805011749, 37.78935319486999 ], [ -122.41207659244537, 37.78925145081554 ], [ -122.41251111030579, 37.78919210005242 ], [ -122.4125325679779, 37.789298083524535 ], [ -122.4125325679779, 37.789298083524535 ], [ -122.4125325679779, 37.789298083524535 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41281151771545, 37.789556682558576 ], [ -122.4126398563385, 37.7895778791606 ], [ -122.41256475448607, 37.78920057873577 ], [ -122.41273641586304, 37.78917938202556 ], [ -122.41281151771545, 37.789556682558576 ], [ -122.41281151771545, 37.789556682558576 ], [ -122.41281151771545, 37.789556682558576 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4135947227478, 37.78945069945736 ], [ -122.41343379020691, 37.789471896089765 ], [ -122.41336941719055, 37.78919210005242 ], [ -122.41353571414948, 37.78917090333976 ], [ -122.41359472274779, 37.78945069945736 ], [ -122.41359472274779, 37.78945069945736 ], [ -122.4135947227478, 37.78945069945736 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4142062664032, 37.78939134885428 ], [ -122.41410434246063, 37.78940406684465 ], [ -122.4140614271164, 37.78918362136809 ], [ -122.41416871547699, 37.78917090333976 ], [ -122.4142062664032, 37.78939134885428 ], [ -122.4142062664032, 37.78939134885428 ], [ -122.4142062664032, 37.78939134885428 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41089642047882, 37.78926840816768 ], [ -122.41076231002808, 37.78928536551592 ], [ -122.41074085235596, 37.78917090333976 ], [ -122.4108749628067, 37.78915394596523 ], [ -122.41089642047882, 37.78926840816768 ], [ -122.41089642047882, 37.78926840816768 ], [ -122.41089642047882, 37.78926840816768 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41187810897827, 37.78920905741816 ], [ -122.41163134574892, 37.78924297213801 ], [ -122.41161525249483, 37.78917938202556 ], [ -122.4118620157242, 37.789149706621 ], [ -122.41187810897827, 37.78920905741816 ], [ -122.41187810897827, 37.78920905741816 ], [ -122.41187810897827, 37.78920905741816 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41092324256897, 37.78939134885428 ], [ -122.41076231002806, 37.78940830617431 ], [ -122.4106442928314, 37.789425263490436 ], [ -122.41059601306914, 37.78915818530923 ], [ -122.41073548793793, 37.78914122793181 ], [ -122.41074085235594, 37.78917090333976 ], [ -122.41076231002806, 37.78928536551592 ], [ -122.4108964204788, 37.78926840816768 ], [ -122.41092324256896, 37.78939134885428 ], [ -122.41092324256896, 37.78939134885428 ], [ -122.41092324256897, 37.78939134885428 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41450667381287, 37.78935319486999 ], [ -122.41439938545227, 37.78936591286693 ], [ -122.41435110569, 37.78913274924163 ], [ -122.41446375846863, 37.78911579185838 ], [ -122.41450667381287, 37.78935319486999 ], [ -122.41450667381287, 37.78935319486999 ], [ -122.41450667381287, 37.78935319486999 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41342842578888, 37.789476135415526 ], [ -122.41318702697754, 37.78950581068898 ], [ -122.41317093372346, 37.789421024161776 ], [ -122.41319239139558, 37.78941678483285 ], [ -122.41314947605133, 37.789213296758994 ], [ -122.41312801837921, 37.78921753609959 ], [ -122.41311192512514, 37.78914122793181 ], [ -122.41331577301025, 37.78911579185838 ], [ -122.41333186626434, 37.78919633939423 ], [ -122.41336941719055, 37.78919210005242 ], [ -122.41342842578887, 37.789476135415526 ], [ -122.41342842578887, 37.789476135415526 ], [ -122.41342842578888, 37.789476135415526 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4140453338623, 37.78919210005242 ], [ -122.41379857063293, 37.78922601478005 ], [ -122.41378247737885, 37.789145467276526 ], [ -122.41402387619019, 37.78911579185838 ], [ -122.41404533386232, 37.78919210005242 ], [ -122.41404533386232, 37.78919210005242 ], [ -122.4140453338623, 37.78919210005242 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42136240005493, 37.789433742147054 ], [ -122.42119610309601, 37.78945069945736 ], [ -122.42113173007965, 37.78912850989617 ], [ -122.42129266262054, 37.789107313165275 ], [ -122.42136240005493, 37.789433742147054 ], [ -122.42136240005493, 37.789433742147054 ], [ -122.42136240005493, 37.789433742147054 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41439938545227, 37.78936591286693 ], [ -122.4142062664032, 37.78939134885428 ], [ -122.41416335105896, 37.78912427055049 ], [ -122.41434037685394, 37.789094595123814 ], [ -122.41439938545227, 37.78936591286693 ], [ -122.41439938545227, 37.78936591286693 ], [ -122.41439938545227, 37.78936591286693 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41491973400116, 37.789298083524535 ], [ -122.41481244564055, 37.78931080153099 ], [ -122.41476953029631, 37.78910307381837 ], [ -122.41482853889464, 37.789094595123814 ], [ -122.41488218307494, 37.789213296758994 ], [ -122.41490364074706, 37.789213296758994 ], [ -122.41491973400115, 37.789298083524535 ], [ -122.41491973400115, 37.789298083524535 ], [ -122.41491973400116, 37.789298083524535 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41464078426361, 37.78933623753729 ], [ -122.41450667381287, 37.78935319486999 ], [ -122.41449058055878, 37.789259929492104 ], [ -122.4144583940506, 37.78910307381837 ], [ -122.41459250450134, 37.78909035577617 ], [ -122.41462469100952, 37.78926416883001 ], [ -122.41464078426361, 37.78933623753729 ], [ -122.41464078426361, 37.78933623753729 ], [ -122.41464078426361, 37.78933623753729 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4135410785675, 37.78917090333976 ], [ -122.41335332393646, 37.78919633939423 ], [ -122.41333186626434, 37.789098834471204 ], [ -122.41351962089539, 37.78907339838317 ], [ -122.4135410785675, 37.78917090333976 ], [ -122.4135410785675, 37.78917090333976 ], [ -122.4135410785675, 37.78917090333976 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42161452770233, 37.78940406684465 ], [ -122.42153406143188, 37.78941254550371 ], [ -122.4214643239975, 37.78908187708016 ], [ -122.42154479026794, 37.78907339838317 ], [ -122.42161452770233, 37.78940406684465 ], [ -122.42161452770233, 37.78940406684465 ], [ -122.42161452770233, 37.78940406684465 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41481244564056, 37.789315040865986 ], [ -122.41464078426361, 37.78933623753729 ], [ -122.41459250450134, 37.78909035577617 ], [ -122.41475880146027, 37.78906915903432 ], [ -122.41481244564056, 37.789315040865986 ], [ -122.41481244564056, 37.789315040865986 ], [ -122.41481244564056, 37.789315040865986 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41059601306915, 37.78934047687082 ], [ -122.41044580936432, 37.78936167353485 ], [ -122.41039216518402, 37.78908187708016 ], [ -122.41054773330688, 37.789064919685224 ], [ -122.41056382656096, 37.78916242465299 ], [ -122.41059601306914, 37.78934047687082 ], [ -122.41059601306914, 37.78934047687082 ], [ -122.41059601306915, 37.78934047687082 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42194175720215, 37.78936167353485 ], [ -122.42161452770233, 37.789404066844675 ], [ -122.42154479026794, 37.78907339838317 ], [ -122.42187201976776, 37.789031004883654 ], [ -122.42194175720215, 37.78936167353485 ], [ -122.42194175720215, 37.78936167353485 ], [ -122.42194175720215, 37.78936167353485 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4108749628067, 37.78915394596523 ], [ -122.41074085235596, 37.78917090333976 ], [ -122.41073548793794, 37.78914122793181 ], [ -122.41059601306915, 37.78915818530923 ], [ -122.41056382656097, 37.78916242465299 ], [ -122.41054773330688, 37.789064919685224 ], [ -122.4108535051346, 37.78902676553237 ], [ -122.41087496280672, 37.78915394596523 ], [ -122.41087496280672, 37.78915394596523 ], [ -122.4108749628067, 37.78915394596523 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41407215595245, 37.789107313165275 ], [ -122.41378247737885, 37.789145467276526 ], [ -122.41376101970673, 37.789064919685224 ], [ -122.41405069828033, 37.78902252618086 ], [ -122.41407215595245, 37.789107313165275 ], [ -122.41407215595245, 37.789107313165275 ], [ -122.41407215595245, 37.789107313165275 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41572976112366, 37.78919210005242 ], [ -122.41549372673036, 37.78921753609959 ], [ -122.41546154022218, 37.78903524423471 ], [ -122.41569221019746, 37.78900980812477 ], [ -122.41572976112366, 37.78919210005242 ], [ -122.41572976112366, 37.78919210005242 ], [ -122.41572976112366, 37.78919210005242 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4158638715744, 37.78917514268277 ], [ -122.41576194763184, 37.78918362136809 ], [ -122.4157351255417, 37.788980132652135 ], [ -122.41582632064821, 37.788971653943484 ], [ -122.4158638715744, 37.78917514268277 ], [ -122.4158638715744, 37.78917514268277 ], [ -122.4158638715744, 37.78917514268277 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41351962089539, 37.78907339838317 ], [ -122.41332113742828, 37.78910307381837 ], [ -122.41329431533813, 37.78898437200612 ], [ -122.41349279880524, 37.78895893587867 ], [ -122.41351962089539, 37.78907339838317 ], [ -122.41351962089539, 37.78907339838317 ], [ -122.41351962089539, 37.78907339838317 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41138458251953, 37.78930232286027 ], [ -122.41119682788849, 37.78932775886951 ], [ -122.41115927696228, 37.78912003120455 ], [ -122.41108953952791, 37.7891285098962 ], [ -122.41113781929016, 37.78937015219877 ], [ -122.41096615791321, 37.78939134885428 ], [ -122.41088569164276, 37.78900980812479 ], [ -122.41131484508514, 37.788954696523255 ], [ -122.41138458251953, 37.78930232286027 ], [ -122.41138458251953, 37.78930232286027 ], [ -122.41138458251953, 37.78930232286027 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4140077829361, 37.78902676553237 ], [ -122.41376101970673, 37.78906068033588 ], [ -122.4137395620346, 37.78896741458879 ], [ -122.41398632526398, 37.788933499742484 ], [ -122.4140077829361, 37.78902676553237 ], [ -122.4140077829361, 37.78902676553237 ], [ -122.4140077829361, 37.78902676553237 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4152684211731, 37.78925569015392 ], [ -122.41494655609131, 37.789298083524535 ], [ -122.41491436958313, 37.789149706621 ], [ -122.41505920886993, 37.78912850989617 ], [ -122.41504848003387, 37.78907339838317 ], [ -122.41491436958313, 37.78909035577617 ], [ -122.41488218307495, 37.78895045716757 ], [ -122.41519331932068, 37.78891230295563 ], [ -122.4152684211731, 37.78925569015392 ], [ -122.4152684211731, 37.78925569015392 ], [ -122.4152684211731, 37.78925569015392 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41627156734467, 37.78898861135982 ], [ -122.41624474525453, 37.78898861135982 ], [ -122.41626620292665, 37.78913274924163 ], [ -122.41615355014802, 37.789145467276526 ], [ -122.41611599922182, 37.78892502102847 ], [ -122.41626083850862, 37.78891230295563 ], [ -122.41627156734468, 37.78898861135982 ], [ -122.41627156734468, 37.78898861135982 ], [ -122.41627156734467, 37.78898861135982 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41170644760132, 37.78913274924163 ], [ -122.41155624389648, 37.789149706621 ], [ -122.4115401506424, 37.78907339838317 ], [ -122.4115777015686, 37.78906915903432 ], [ -122.41156697273254, 37.78900132941952 ], [ -122.41154551506042, 37.78900556877228 ], [ -122.41152942180634, 37.78892502102847 ], [ -122.41166889667511, 37.78890806359755 ], [ -122.4116849899292, 37.78902252618086 ], [ -122.41170644760132, 37.78913274924163 ], [ -122.41170644760132, 37.78913274924163 ], [ -122.41170644760132, 37.78913274924163 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4160623550415, 37.78915394596523 ], [ -122.41597115993501, 37.78916242465299 ], [ -122.41592824459076, 37.78891654231348 ], [ -122.41601943969727, 37.7889038242392 ], [ -122.4160623550415, 37.78915394596523 ], [ -122.4160623550415, 37.78915394596523 ], [ -122.4160623550415, 37.78915394596523 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41175472736359, 37.78901404747704 ], [ -122.4116849899292, 37.78902252618086 ], [ -122.41166889667511, 37.78890806359755 ], [ -122.41173326969147, 37.7889038242392 ], [ -122.41175472736359, 37.78901404747704 ], [ -122.41175472736359, 37.78901404747704 ], [ -122.41175472736359, 37.78901404747704 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41186201572418, 37.78912003120455 ], [ -122.4117761850357, 37.78912850989617 ], [ -122.41176009178162, 37.78906068033585 ], [ -122.41175472736359, 37.78901404747704 ], [ -122.41173326969147, 37.7889038242392 ], [ -122.4117922782898, 37.788895345521766 ], [ -122.41181373596191, 37.78889958488058 ], [ -122.41182446479797, 37.78891230295563 ], [ -122.41186201572418, 37.78912003120455 ], [ -122.41186201572418, 37.78912003120455 ], [ -122.41186201572418, 37.78912003120455 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41976380348206, 37.78919633939423 ], [ -122.41940975189209, 37.78923449345951 ], [ -122.41934537887573, 37.7889207816711 ], [ -122.4196994304657, 37.78888262744385 ], [ -122.41976380348206, 37.78919633939423 ], [ -122.41976380348206, 37.78919633939423 ], [ -122.41976380348206, 37.78919633939423 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41615355014801, 37.789145467276526 ], [ -122.4160623550415, 37.78915394596523 ], [ -122.41601943969727, 37.7889038242392 ], [ -122.41601407527925, 37.78886567000316 ], [ -122.41610527038574, 37.78885719128138 ], [ -122.4161159992218, 37.78892502102847 ], [ -122.41615355014801, 37.789145467276526 ], [ -122.41615355014801, 37.789145467276526 ], [ -122.41615355014801, 37.789145467276526 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4123340845108, 37.78908611642829 ], [ -122.41205513477325, 37.78912427055049 ], [ -122.41200149059296, 37.7888911061627 ], [ -122.41228580474854, 37.78885295192013 ], [ -122.4123340845108, 37.78908611642829 ], [ -122.4123340845108, 37.78908611642829 ], [ -122.4123340845108, 37.78908611642829 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41349279880524, 37.788954696523255 ], [ -122.41328895092012, 37.78898437200612 ], [ -122.413267493248, 37.788878388084036 ], [ -122.41347134113312, 37.78885295192013 ], [ -122.41349279880524, 37.788954696523255 ], [ -122.41349279880524, 37.788954696523255 ], [ -122.41349279880524, 37.788954696523255 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.415971159935, 37.78916242465299 ], [ -122.41586387157439, 37.78917514268277 ], [ -122.4158263206482, 37.788971653943484 ], [ -122.41580486297607, 37.7888529519201 ], [ -122.41591215133667, 37.788840233834875 ], [ -122.41592824459076, 37.78891654231348 ], [ -122.415971159935, 37.78916242465299 ], [ -122.415971159935, 37.78916242465299 ], [ -122.415971159935, 37.78916242465299 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41736054420471, 37.788963175233846 ], [ -122.41720497608185, 37.78898437200612 ], [ -122.41719424724579, 37.78893773909911 ], [ -122.41721034049988, 37.78893773909911 ], [ -122.41719961166382, 37.7888868668034 ], [ -122.41718888282776, 37.7888911061627 ], [ -122.4171781539917, 37.78885719128138 ], [ -122.41733372211456, 37.78883599447265 ], [ -122.41734445095062, 37.788878388084036 ], [ -122.41732835769653, 37.788878388084036 ], [ -122.41733372211456, 37.7889207816711 ], [ -122.41734981536864, 37.7889207816711 ], [ -122.4173605442047, 37.788963175233846 ], [ -122.4173605442047, 37.788963175233846 ], [ -122.41736054420471, 37.788963175233846 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41720497608185, 37.78898437200612 ], [ -122.41711914539337, 37.78899285071331 ], [ -122.41708695888519, 37.78884871255861 ], [ -122.4171781539917, 37.78883599447265 ], [ -122.4171781539917, 37.78885719128138 ], [ -122.41718888282776, 37.7888911061627 ], [ -122.41719424724577, 37.78893773909911 ], [ -122.41720497608183, 37.78898437200612 ], [ -122.41720497608183, 37.78898437200612 ], [ -122.41720497608185, 37.78898437200612 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41254329681396, 37.789145467276526 ], [ -122.41235554218292, 37.78917090333976 ], [ -122.41228580474854, 37.7888529519201 ], [ -122.41247892379761, 37.78882751574746 ], [ -122.41254329681396, 37.789145467276526 ], [ -122.41254329681396, 37.789145467276526 ], [ -122.41254329681396, 37.789145467276526 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41569757461548, 37.78899285071331 ], [ -122.41545617580414, 37.78901828682906 ], [ -122.41542398929596, 37.78884871255861 ], [ -122.4156653881073, 37.78882327638447 ], [ -122.41569757461548, 37.78899285071331 ], [ -122.41569757461548, 37.78899285071331 ], [ -122.41569757461548, 37.78899285071331 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41263449192047, 37.78903524423471 ], [ -122.41252720355988, 37.789047962286396 ], [ -122.41247892379761, 37.78882751574746 ], [ -122.4125862121582, 37.78881055829413 ], [ -122.41263449192047, 37.78903524423471 ], [ -122.41263449192047, 37.78903524423471 ], [ -122.41263449192047, 37.78903524423471 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41691529750824, 37.78903524423471 ], [ -122.41660416126251, 37.78906915903432 ], [ -122.4165987968445, 37.789031004883654 ], [ -122.41652369499208, 37.78903948358551 ], [ -122.4164915084839, 37.7888529519201 ], [ -122.416689991951, 37.78883175511017 ], [ -122.416872382164, 37.7888063189302 ], [ -122.41691529750824, 37.78903524423471 ], [ -122.41691529750824, 37.78903524423471 ], [ -122.41691529750824, 37.78903524423471 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41758048534393, 37.78893773909911 ], [ -122.41736054420471, 37.788963175233846 ], [ -122.41734445095062, 37.788878388084036 ], [ -122.41733372211456, 37.78883599447265 ], [ -122.41733372211456, 37.78883175511017 ], [ -122.41755902767181, 37.7888063189302 ], [ -122.41756975650787, 37.78885719128138 ], [ -122.41758048534393, 37.78893773909911 ], [ -122.41758048534393, 37.78893773909911 ], [ -122.41758048534393, 37.78893773909911 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4165290594101, 37.78909035577617 ], [ -122.41630911827087, 37.78911579185838 ], [ -122.41628766059875, 37.78900132941952 ], [ -122.41631984710693, 37.78900132941952 ], [ -122.41630375385284, 37.7889038242392 ], [ -122.4162608385086, 37.78891230295563 ], [ -122.41624474525453, 37.78881055829413 ], [ -122.41638958454134, 37.7887978402016 ], [ -122.4164003133774, 37.78886143064241 ], [ -122.4164915084839, 37.78885295192013 ], [ -122.41652369499208, 37.78903948358551 ], [ -122.4165290594101, 37.78909035577619 ], [ -122.4165290594101, 37.78909035577619 ], [ -122.4165290594101, 37.78909035577617 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41288125514984, 37.78913274924163 ], [ -122.41266131401062, 37.78915818530923 ], [ -122.4125862121582, 37.78881055829413 ], [ -122.41280615329742, 37.78878512210689 ], [ -122.41288125514984, 37.78913274924163 ], [ -122.41288125514984, 37.78913274924163 ], [ -122.41288125514984, 37.78913274924163 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4101185798645, 37.7889207816711 ], [ -122.40987181663515, 37.788954696523255 ], [ -122.40983963012695, 37.78880207956601 ], [ -122.41008639335632, 37.788768164643834 ], [ -122.4101185798645, 37.7889207816711 ], [ -122.4101185798645, 37.7889207816711 ], [ -122.4101185798645, 37.7889207816711 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41301536560059, 37.78913274924163 ], [ -122.41288661956786, 37.78915394596523 ], [ -122.41280615329742, 37.78878512210689 ], [ -122.41294026374817, 37.788763925277465 ], [ -122.41301536560059, 37.78913274924163 ], [ -122.41301536560059, 37.78913274924163 ], [ -122.41301536560059, 37.78913274924163 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4156653881073, 37.7888232763845 ], [ -122.41542398929596, 37.78884871255861 ], [ -122.4154132604599, 37.78878512210689 ], [ -122.41551518440247, 37.788772404009954 ], [ -122.41552054882048, 37.78878512210689 ], [ -122.41554737091063, 37.78878088274148 ], [ -122.41554737091063, 37.788768164643834 ], [ -122.41565465927123, 37.788751207176915 ], [ -122.41566538810729, 37.78882327638447 ], [ -122.41566538810729, 37.78882327638447 ], [ -122.4156653881073, 37.7888232763845 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41324067115784, 37.78908187708016 ], [ -122.4130153656006, 37.78911579185838 ], [ -122.41298854351045, 37.78899709006656 ], [ -122.41303145885469, 37.78899285071331 ], [ -122.41301000118257, 37.788878388084036 ], [ -122.41296708583833, 37.7888868668034 ], [ -122.41294026374818, 37.788763925277465 ], [ -122.41316556930543, 37.78873424970608 ], [ -122.41319239139558, 37.78885295192013 ], [ -122.41314411163331, 37.78886143064241 ], [ -122.41316556930543, 37.78897589329795 ], [ -122.4132138490677, 37.78896741458879 ], [ -122.41324067115784, 37.78908187708016 ], [ -122.41324067115784, 37.78908187708016 ], [ -122.41324067115784, 37.78908187708016 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40950167179108, 37.78900980812477 ], [ -122.40950167179108, 37.78900980812477 ], [ -122.40950167179108, 37.78899709006654 ], [ -122.40950167179108, 37.78900980812477 ], [ -122.40950167179108, 37.78900980812477 ], [ -122.40950167179108, 37.78900980812477 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41347134113312, 37.7888529519201 ], [ -122.4131977558136, 37.7888868668034 ], [ -122.41316556930542, 37.78873424970608 ], [ -122.41343915462494, 37.78870033475276 ], [ -122.41347134113312, 37.7888529519201 ], [ -122.41347134113312, 37.7888529519201 ], [ -122.41347134113312, 37.7888529519201 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41781651973724, 37.78891230295563 ], [ -122.41769313812256, 37.78892502102847 ], [ -122.4176824092865, 37.78885295192013 ], [ -122.41769313812256, 37.78885295192013 ], [ -122.41766631603241, 37.78870457412277 ], [ -122.41775751113892, 37.788691856012 ], [ -122.4177896976471, 37.78884447319687 ], [ -122.41780579090118, 37.788840233834875 ], [ -122.41781651973724, 37.78891230295563 ], [ -122.41781651973724, 37.78891230295563 ], [ -122.41781651973724, 37.78891230295563 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42262840270996, 37.78884447319687 ], [ -122.42228507995605, 37.7888911061627 ], [ -122.42225289344788, 37.78873424970608 ], [ -122.42259085178375, 37.78868761664125 ], [ -122.42262840270996, 37.78884447319687 ], [ -122.42262840270996, 37.78884447319687 ], [ -122.42262840270996, 37.78884447319687 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40964651107788, 37.78899285071331 ], [ -122.40950167179108, 37.78900980812477 ], [ -122.40950167179108, 37.78899709006654 ], [ -122.40950167179108, 37.78869609538249 ], [ -122.40958213806152, 37.788683377270274 ], [ -122.40964651107788, 37.78899285071331 ], [ -122.40964651107788, 37.78899285071331 ], [ -122.40964651107788, 37.78899285071331 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41735517978668, 37.78880207956601 ], [ -122.41726934909819, 37.78881055829413 ], [ -122.41726398468018, 37.78879360083693 ], [ -122.41718351840973, 37.78880207956601 ], [ -122.41718351840973, 37.78881479765783 ], [ -122.41708695888519, 37.78882751574746 ], [ -122.41706013679504, 37.788708813492555 ], [ -122.4171245098114, 37.78870033475276 ], [ -122.41715133190155, 37.78869609538249 ], [ -122.41716742515564, 37.78869609538249 ], [ -122.41716742515564, 37.78871305286208 ], [ -122.41724252700806, 37.78870457412277 ], [ -122.41724252700806, 37.788691856012 ], [ -122.41733372211456, 37.78867913789904 ], [ -122.41735517978668, 37.78880207956601 ], [ -122.41735517978668, 37.78880207956601 ], [ -122.41735517978668, 37.78880207956601 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41518259048462, 37.788878388084036 ], [ -122.41471588611603, 37.78892926038561 ], [ -122.41467833518982, 37.78873001033775 ], [ -122.41514503955841, 37.78867489852755 ], [ -122.41518259048462, 37.788878388084036 ], [ -122.41518259048462, 37.788878388084036 ], [ -122.41518259048462, 37.788878388084036 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41009712219238, 37.788768164643834 ], [ -122.40983963012695, 37.78880207956601 ], [ -122.40981817245483, 37.78870033475276 ], [ -122.41007566452026, 37.788666419783866 ], [ -122.41009712219238, 37.788768164643834 ], [ -122.41009712219238, 37.788768164643834 ], [ -122.41009712219238, 37.788768164643834 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41568148136139, 37.788751207176915 ], [ -122.41565465927124, 37.788751207176915 ], [ -122.41554737091064, 37.788768164643834 ], [ -122.41551518440247, 37.788772404009954 ], [ -122.4154132604599, 37.78878512210689 ], [ -122.41539180278778, 37.78868761664125 ], [ -122.41547763347626, 37.78867489852755 ], [ -122.41548299789429, 37.788691856012 ], [ -122.4155741930008, 37.78867913789904 ], [ -122.4155741930008, 37.788666419783866 ], [ -122.41566002368927, 37.788653701666526 ], [ -122.41568148136139, 37.788751207176915 ], [ -122.41568148136139, 37.788751207176915 ], [ -122.41568148136139, 37.788751207176915 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41834223270416, 37.78884447319687 ], [ -122.41825103759767, 37.78885719128138 ], [ -122.41823494434358, 37.78878512210689 ], [ -122.41825103759767, 37.78878512210689 ], [ -122.41824030876161, 37.78872577096919 ], [ -122.41822421550752, 37.78872577096919 ], [ -122.41821348667146, 37.78865794103921 ], [ -122.41830468177797, 37.78864946229359 ], [ -122.41832077503204, 37.788717292231354 ], [ -122.41829931735992, 37.7887215316004 ], [ -122.41831004619598, 37.78878088274148 ], [ -122.4183315038681, 37.78877664337584 ], [ -122.41834223270416, 37.78884447319687 ], [ -122.41834223270416, 37.78884447319687 ], [ -122.41834223270416, 37.78884447319687 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41402387619019, 37.78889958488061 ], [ -122.41372883319853, 37.78893773909911 ], [ -122.41366982460022, 37.788670659155834 ], [ -122.41397023200987, 37.788636744173324 ], [ -122.41398632526396, 37.78874272844198 ], [ -122.41390585899352, 37.788755446544 ], [ -122.41391658782958, 37.78881055829413 ], [ -122.41400241851807, 37.78880207956601 ], [ -122.41402387619019, 37.78889958488061 ], [ -122.41402387619019, 37.78889958488061 ], [ -122.41402387619019, 37.78889958488061 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41081595420837, 37.78885719128138 ], [ -122.4105852842331, 37.7888868668034 ], [ -122.41053700447083, 37.788653701666526 ], [ -122.41076767444612, 37.788624026050876 ], [ -122.41078913211824, 37.78874272844198 ], [ -122.41081595420837, 37.78885719128138 ], [ -122.41081595420837, 37.78885719128138 ], [ -122.41081595420837, 37.78885719128138 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41417407989502, 37.78886990936371 ], [ -122.41401851177216, 37.7888868668034 ], [ -122.4140077829361, 37.78881479765783 ], [ -122.41403460502625, 37.78881055829413 ], [ -122.41401314735413, 37.78873001033775 ], [ -122.41398632526398, 37.78873001033775 ], [ -122.41397023200989, 37.788636744173324 ], [ -122.4141311645508, 37.788619786676236 ], [ -122.41414725780487, 37.788725770969215 ], [ -122.41411507129669, 37.788725770969215 ], [ -122.41413116455078, 37.78877664337584 ], [ -122.41415798664093, 37.78877664337584 ], [ -122.414174079895, 37.78886990936371 ], [ -122.414174079895, 37.78886990936371 ], [ -122.41417407989502, 37.78886990936371 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40987181663513, 37.788963175233846 ], [ -122.40964651107788, 37.78899285071331 ], [ -122.40958213806152, 37.788683377270274 ], [ -122.4095767736435, 37.78864522292042 ], [ -122.40980207920074, 37.78861554730136 ], [ -122.40981817245483, 37.78870033475276 ], [ -122.40983963012695, 37.78880207956601 ], [ -122.40987181663513, 37.788963175233846 ], [ -122.40987181663513, 37.788963175233846 ], [ -122.40987181663513, 37.788963175233846 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41796135902405, 37.788895345521794 ], [ -122.41781651973724, 37.78891230295563 ], [ -122.41780579090118, 37.788840233834875 ], [ -122.41776823997498, 37.78863250479942 ], [ -122.41791307926178, 37.78861554730136 ], [ -122.41795063018799, 37.78881479765786 ], [ -122.41796135902405, 37.788895345521794 ], [ -122.41796135902405, 37.788895345521794 ], [ -122.41796135902405, 37.788895345521794 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42182910442352, 37.788751207176915 ], [ -122.4215018749237, 37.78879360083693 ], [ -122.42147505283356, 37.788653701666526 ], [ -122.42180228233339, 37.78861130792624 ], [ -122.42182910442352, 37.788751207176915 ], [ -122.42182910442352, 37.788751207176915 ], [ -122.42182910442352, 37.788751207176915 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41769313812256, 37.78892502102847 ], [ -122.41758048534393, 37.78893773909911 ], [ -122.41756975650787, 37.78885719128138 ], [ -122.41760194301605, 37.78885295192013 ], [ -122.41758048534393, 37.78871305286208 ], [ -122.41754829883575, 37.788717292231354 ], [ -122.41753220558168, 37.788624026050876 ], [ -122.41763412952423, 37.78861130792624 ], [ -122.4176824092865, 37.78885295192013 ], [ -122.41769313812256, 37.78892502102847 ], [ -122.41769313812256, 37.78892502102847 ], [ -122.41769313812256, 37.78892502102847 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41805791854858, 37.78880207956601 ], [ -122.41795063018799, 37.78881479765783 ], [ -122.41791307926178, 37.78861554730136 ], [ -122.41802036762238, 37.78860282917525 ], [ -122.41805791854858, 37.78880207956601 ], [ -122.41805791854858, 37.78880207956601 ], [ -122.41805791854858, 37.78880207956601 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.416872382164, 37.7888063189302 ], [ -122.416689991951, 37.78883175511017 ], [ -122.41666316986085, 37.788691856012 ], [ -122.41652369499208, 37.78871305286208 ], [ -122.41650760173799, 37.788640983547005 ], [ -122.41652369499208, 37.788640983547005 ], [ -122.41682946681978, 37.788598589799406 ], [ -122.41687238216402, 37.7888063189302 ], [ -122.41687238216402, 37.7888063189302 ], [ -122.416872382164, 37.7888063189302 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4145495891571, 37.788963175233846 ], [ -122.41432428359985, 37.78898861135982 ], [ -122.41424381732942, 37.78861554730136 ], [ -122.4144744873047, 37.78858587167039 ], [ -122.41454958915712, 37.788963175233846 ], [ -122.41454958915712, 37.788963175233846 ], [ -122.4145495891571, 37.788963175233846 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41853535175323, 37.7888232763845 ], [ -122.41834223270416, 37.78884447319687 ], [ -122.4183315038681, 37.78877664337584 ], [ -122.41832077503204, 37.788717292231354 ], [ -122.41830468177797, 37.78864946229359 ], [ -122.41829931735994, 37.78860706855085 ], [ -122.41835832595827, 37.788598589799406 ], [ -122.4184173345566, 37.788590111046965 ], [ -122.41848707199097, 37.788581632293536 ], [ -122.41853535175323, 37.78882327638447 ], [ -122.41853535175323, 37.78882327638447 ], [ -122.41853535175323, 37.7888232763845 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.414710521698, 37.78891230295563 ], [ -122.41454422473907, 37.788933499742484 ], [ -122.414528131485, 37.78885295192013 ], [ -122.41455495357513, 37.78884871255861 ], [ -122.41452276706696, 37.78867913789904 ], [ -122.41449594497682, 37.788683377270274 ], [ -122.4144744873047, 37.78858587167039 ], [ -122.4146354198456, 37.78856467478382 ], [ -122.41465687751771, 37.78866218041166 ], [ -122.4146354198456, 37.788666419783866 ], [ -122.4146729707718, 37.78883599447265 ], [ -122.41469442844392, 37.78883175511017 ], [ -122.414710521698, 37.78891230295563 ], [ -122.414710521698, 37.78891230295563 ], [ -122.414710521698, 37.78891230295563 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41161525249481, 37.788755446544 ], [ -122.41145431995392, 37.78877664337584 ], [ -122.41141140460968, 37.78857739291647 ], [ -122.41157233715057, 37.788556196027486 ], [ -122.41161525249481, 37.788755446544 ], [ -122.41161525249481, 37.788755446544 ], [ -122.41161525249481, 37.788755446544 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4100810289383, 37.788666419783866 ], [ -122.40981817245483, 37.78870033475276 ], [ -122.40979671478271, 37.788590111046965 ], [ -122.40987181663513, 37.7885773929165 ], [ -122.41005420684813, 37.788556196027486 ], [ -122.41008102893828, 37.788666419783866 ], [ -122.41008102893828, 37.788666419783866 ], [ -122.4100810289383, 37.788666419783866 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41478025913239, 37.78870457412277 ], [ -122.41466760635376, 37.7887215316004 ], [ -122.41463541984558, 37.78856467478382 ], [ -122.4147480726242, 37.78855195664895 ], [ -122.41478025913239, 37.78870457412277 ], [ -122.41478025913239, 37.78870457412277 ], [ -122.41478025913239, 37.78870457412277 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41750538349152, 37.78864522292042 ], [ -122.41745173931122, 37.788653701666526 ], [ -122.41744637489319, 37.78863250479942 ], [ -122.41739809513093, 37.788636744173324 ], [ -122.4173927307129, 37.78861554730136 ], [ -122.41722106933595, 37.788636744173324 ], [ -122.41723179817201, 37.78868761664125 ], [ -122.41716742515564, 37.78869609538249 ], [ -122.41715133190156, 37.78869609538249 ], [ -122.41715133190156, 37.788683377270274 ], [ -122.41711914539339, 37.78868761664125 ], [ -122.4171245098114, 37.78870033475276 ], [ -122.41706013679504, 37.788708813492555 ], [ -122.41704404354097, 37.78860282917525 ], [ -122.41742491722107, 37.788556196027486 ], [ -122.41748929023743, 37.78854771727019 ], [ -122.41750538349152, 37.78864522292042 ], [ -122.41750538349152, 37.78864522292042 ], [ -122.41750538349152, 37.78864522292042 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41497337818146, 37.788670659155834 ], [ -122.41477489471436, 37.78869609538249 ], [ -122.4147480726242, 37.78855195664898 ], [ -122.41494655609131, 37.78852652037268 ], [ -122.41497337818146, 37.788670659155834 ], [ -122.41497337818146, 37.788670659155834 ], [ -122.41497337818146, 37.788670659155834 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41682946681976, 37.788598589799406 ], [ -122.41652369499207, 37.788640983547005 ], [ -122.416512966156, 37.788568914161615 ], [ -122.41660416126251, 37.78856043540577 ], [ -122.41660952568053, 37.7885773929165 ], [ -122.41668462753294, 37.78856467478382 ], [ -122.41667926311493, 37.78853923851192 ], [ -122.4168187379837, 37.78852228099244 ], [ -122.41682946681976, 37.788598589799406 ], [ -122.41682946681976, 37.788598589799406 ], [ -122.41682946681976, 37.788598589799406 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41177082061768, 37.78873424970608 ], [ -122.41161525249481, 37.788755446544 ], [ -122.41157233715057, 37.788556196027486 ], [ -122.41156697273254, 37.78853499913242 ], [ -122.41172254085541, 37.78851380223124 ], [ -122.41177082061768, 37.78873424970608 ], [ -122.41177082061768, 37.78873424970608 ], [ -122.41177082061768, 37.78873424970608 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41514503955841, 37.78867489852755 ], [ -122.41497874259949, 37.78869609538249 ], [ -122.41494655609131, 37.78852652037268 ], [ -122.41511285305023, 37.78850532346909 ], [ -122.41514503955841, 37.78867489852755 ], [ -122.41514503955841, 37.78867489852755 ], [ -122.41514503955841, 37.78867489852755 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41069793701172, 37.78861130792624 ], [ -122.4105316400528, 37.78863250479942 ], [ -122.41053700447083, 37.788653701666526 ], [ -122.41058528423308, 37.7888868668034 ], [ -122.41034388542174, 37.7889207816711 ], [ -122.41026878356932, 37.788556196027486 ], [ -122.41067647933959, 37.78850108408765 ], [ -122.4106979370117, 37.78861130792624 ], [ -122.4106979370117, 37.78861130792624 ], [ -122.41069793701172, 37.78861130792624 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41825103759766, 37.78885719128138 ], [ -122.41807401180267, 37.788878388084036 ], [ -122.41805791854858, 37.78880207956601 ], [ -122.41802036762238, 37.78860282917525 ], [ -122.4180042743683, 37.78852228099244 ], [ -122.41818130016328, 37.78850108408765 ], [ -122.41821348667146, 37.78865794103921 ], [ -122.41822421550752, 37.788725770969215 ], [ -122.41823494434358, 37.78878512210689 ], [ -122.41825103759767, 37.78885719128138 ], [ -122.41825103759767, 37.78885719128138 ], [ -122.41825103759766, 37.78885719128138 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41099298000336, 37.78883599447265 ], [ -122.41081595420837, 37.78885719128138 ], [ -122.41078913211824, 37.78874272844198 ], [ -122.41081595420837, 37.788738489074134 ], [ -122.41076767444612, 37.78850108408765 ], [ -122.41089642047884, 37.78848412655941 ], [ -122.4109447002411, 37.78873001033775 ], [ -122.41097152233124, 37.78872577096919 ], [ -122.41099298000336, 37.78883599447265 ], [ -122.41099298000336, 37.78883599447265 ], [ -122.41099298000336, 37.78883599447265 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41120219230652, 37.78881055829413 ], [ -122.41099298000336, 37.78883599447265 ], [ -122.41097152233124, 37.788725770969215 ], [ -122.41097152233124, 37.788708813492555 ], [ -122.41099298000336, 37.788708813492555 ], [ -122.41095006465912, 37.788492605324016 ], [ -122.41110563278198, 37.78847140841073 ], [ -122.41114854812622, 37.788683377270274 ], [ -122.41117537021637, 37.78867913789904 ], [ -122.41120219230652, 37.78881055829413 ], [ -122.41120219230652, 37.78881055829413 ], [ -122.41120219230652, 37.78881055829413 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42069721221924, 37.78854771727019 ], [ -122.4204236268997, 37.78858587167039 ], [ -122.42041289806365, 37.78854771727019 ], [ -122.42040216922759, 37.78850532346909 ], [ -122.42061138153076, 37.788479887176756 ], [ -122.42068111896513, 37.78846716902731 ], [ -122.42068111896513, 37.78846716902731 ], [ -122.42069721221922, 37.78854771727019 ], [ -122.42069721221922, 37.78854771727019 ], [ -122.42069721221924, 37.78854771727019 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41848707199097, 37.788581632293536 ], [ -122.4184173345566, 37.788590111046965 ], [ -122.41841197013856, 37.78856043540577 ], [ -122.41835296154024, 37.788568914161615 ], [ -122.41835832595827, 37.788598589799406 ], [ -122.41829931735994, 37.78860706855088 ], [ -122.41823494434358, 37.78861130792624 ], [ -122.41821348667146, 37.788492605324016 ], [ -122.41829931735994, 37.78848412655941 ], [ -122.41829931735994, 37.78850108408765 ], [ -122.41833150386812, 37.78850108408765 ], [ -122.41833150386812, 37.788509562850294 ], [ -122.41839051246644, 37.78850108408765 ], [ -122.41840660572053, 37.78850108408765 ], [ -122.41840660572053, 37.78848836594184 ], [ -122.4184012413025, 37.78847140841073 ], [ -122.41846561431886, 37.78846292964368 ], [ -122.41848707199098, 37.788581632293536 ], [ -122.41848707199098, 37.788581632293536 ], [ -122.41848707199097, 37.788581632293536 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41567611694336, 37.788624026050876 ], [ -122.41539180278778, 37.78865794103921 ], [ -122.41535425186157, 37.78846716902731 ], [ -122.41551518440248, 37.78845021149131 ], [ -122.41563856601717, 37.78843325395142 ], [ -122.41567611694336, 37.788624026050876 ], [ -122.41567611694336, 37.788624026050876 ], [ -122.41567611694336, 37.788624026050876 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41208732128143, 37.78868761664125 ], [ -122.41198539733888, 37.78870033475276 ], [ -122.41193175315857, 37.78843325395142 ], [ -122.412006855011, 37.78842477518002 ], [ -122.41201221942902, 37.78845021149131 ], [ -122.41203904151917, 37.78844597210669 ], [ -122.41208732128143, 37.78868761664125 ], [ -122.41208732128143, 37.78868761664125 ], [ -122.41208732128143, 37.78868761664125 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41145431995392, 37.78877664337584 ], [ -122.41120219230652, 37.78881055829413 ], [ -122.41117537021637, 37.78867913789904 ], [ -122.4111270904541, 37.78845021149131 ], [ -122.4113792181015, 37.78842053579395 ], [ -122.41140067577362, 37.788518041611965 ], [ -122.41141140460968, 37.7885773929165 ], [ -122.41145431995393, 37.78877664337584 ], [ -122.41145431995393, 37.78877664337584 ], [ -122.41145431995392, 37.78877664337584 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41742491722107, 37.788556196027486 ], [ -122.41704404354097, 37.78860282917525 ], [ -122.41701722145082, 37.7884586902598 ], [ -122.41710841655733, 37.78844597210669 ], [ -122.41733372211456, 37.788420535793925 ], [ -122.41739809513093, 37.788412057021056 ], [ -122.41742491722107, 37.788556196027486 ], [ -122.41742491722107, 37.788556196027486 ], [ -122.41742491722107, 37.788556196027486 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41589069366455, 37.78874696780958 ], [ -122.41572976112366, 37.788763925277465 ], [ -122.41570830345152, 37.788653701666526 ], [ -122.41573512554167, 37.78864946229359 ], [ -122.4156868457794, 37.78842477518002 ], [ -122.41575658321379, 37.78841629640763 ], [ -122.41582095623015, 37.78840781763428 ], [ -122.41584241390227, 37.78852652037268 ], [ -122.41580486297607, 37.78853075975266 ], [ -122.4158263206482, 37.788636744173324 ], [ -122.41586387157439, 37.78863250479942 ], [ -122.41589069366454, 37.78874696780958 ], [ -122.41589069366454, 37.78874696780958 ], [ -122.41589069366455, 37.78874696780958 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41932928562164, 37.788738489074134 ], [ -122.41877675056458, 37.7888063189302 ], [ -122.41871237754822, 37.78847564779387 ], [ -122.41925954818726, 37.78840781763428 ], [ -122.41932928562163, 37.788738489074134 ], [ -122.41932928562163, 37.788738489074134 ], [ -122.41932928562164, 37.788738489074134 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42061138153076, 37.788479887176756 ], [ -122.4204021692276, 37.78850532346909 ], [ -122.42038607597352, 37.788429014565835 ], [ -122.42058992385864, 37.78839933885995 ], [ -122.42061138153076, 37.788479887176756 ], [ -122.42061138153076, 37.788479887176756 ], [ -122.42061138153076, 37.788479887176756 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4207991361618, 37.78853499913242 ], [ -122.42069721221925, 37.78854771727019 ], [ -122.42068111896516, 37.78846716902731 ], [ -122.42068111896516, 37.78846292964368 ], [ -122.42069184780122, 37.78845445087567 ], [ -122.4206864833832, 37.78840781763428 ], [ -122.42076694965364, 37.78839933885995 ], [ -122.42079913616182, 37.78853499913242 ], [ -122.42079913616182, 37.78853499913242 ], [ -122.4207991361618, 37.78853499913242 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41941511631012, 37.78872577096919 ], [ -122.41932928562164, 37.788738489074134 ], [ -122.41925954818726, 37.78840781763428 ], [ -122.41935074329376, 37.78839509947241 ], [ -122.41941511631012, 37.78872577096919 ], [ -122.41941511631012, 37.78872577096919 ], [ -122.41941511631012, 37.78872577096919 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41609454154968, 37.788738489074134 ], [ -122.41589069366456, 37.788768164643834 ], [ -122.41589069366456, 37.78874696780958 ], [ -122.41586387157442, 37.78863250479942 ], [ -122.4158424139023, 37.78852652037268 ], [ -122.41582095623018, 37.78840781763428 ], [ -122.41587460041048, 37.78840357824722 ], [ -122.41603016853334, 37.78838662069664 ], [ -122.41604626178743, 37.78846716902731 ], [ -122.4160623550415, 37.78853499913242 ], [ -122.41594970226288, 37.78854771727019 ], [ -122.41596579551697, 37.788619786676236 ], [ -122.41606771945953, 37.78860282917525 ], [ -122.4160784482956, 37.78864522292042 ], [ -122.41609454154968, 37.78872577096919 ], [ -122.41609454154968, 37.788738489074134 ], [ -122.41609454154968, 37.788738489074134 ], [ -122.41609454154968, 37.788738489074134 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41266131401062, 37.788624026050876 ], [ -122.41218924522398, 37.78867913789904 ], [ -122.41214632987975, 37.78843325395142 ], [ -122.41225361824036, 37.78842477518002 ], [ -122.41225898265837, 37.78844173272184 ], [ -122.41246819496153, 37.78841629640763 ], [ -122.41246283054352, 37.78839933885995 ], [ -122.41260766983032, 37.78838662069664 ], [ -122.41261839866638, 37.78846716902731 ], [ -122.4126237630844, 37.788479887176756 ], [ -122.41262912750243, 37.78852228099244 ], [ -122.41263985633849, 37.78852228099244 ], [ -122.4126613140106, 37.788624026050876 ], [ -122.4126613140106, 37.788624026050876 ], [ -122.41266131401062, 37.788624026050876 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4195009469986, 37.788717292231354 ], [ -122.41941511631012, 37.78872577096919 ], [ -122.41935074329375, 37.78839509947241 ], [ -122.4194312095642, 37.78838238130836 ], [ -122.41950094699858, 37.788717292231354 ], [ -122.41950094699858, 37.788717292231354 ], [ -122.4195009469986, 37.788717292231354 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41967260837555, 37.78869609538249 ], [ -122.4195009469986, 37.788717292231354 ], [ -122.41943120956421, 37.78838238130836 ], [ -122.41960823535919, 37.78836118436342 ], [ -122.41967260837555, 37.78869609538249 ], [ -122.41967260837555, 37.78869609538249 ], [ -122.41967260837555, 37.78869609538249 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4163681268692, 37.788691856012 ], [ -122.41625547409058, 37.788708813492555 ], [ -122.41623938083649, 37.78864946229359 ], [ -122.41620182991029, 37.788653701666526 ], [ -122.41621255874635, 37.78871305286208 ], [ -122.41609454154968, 37.788725770969215 ], [ -122.41607844829561, 37.78864522292042 ], [ -122.41612136363985, 37.788640983547005 ], [ -122.41608381271364, 37.78846292964368 ], [ -122.41604626178746, 37.78846716902731 ], [ -122.41603016853337, 37.78838662069664 ], [ -122.41630911827092, 37.788352705583755 ], [ -122.41632521152498, 37.788429014565835 ], [ -122.41628229618074, 37.78843325395142 ], [ -122.41630911827089, 37.78861554730136 ], [ -122.41635739803316, 37.78861130792624 ], [ -122.41636812686922, 37.788691856012 ], [ -122.41636812686922, 37.788691856012 ], [ -122.4163681268692, 37.788691856012 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42153406143188, 37.788437493336744 ], [ -122.42144286632538, 37.78845021149131 ], [ -122.42142140865326, 37.788361184363445 ], [ -122.42151260375977, 37.78834846619357 ], [ -122.42153406143188, 37.788437493336744 ], [ -122.42153406143188, 37.788437493336744 ], [ -122.42153406143188, 37.788437493336744 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41644859313965, 37.78869609538249 ], [ -122.41641104221345, 37.78870033475276 ], [ -122.41641640663147, 37.78872577096919 ], [ -122.41637349128723, 37.78873001033775 ], [ -122.41636812686922, 37.788691856012 ], [ -122.41635739803316, 37.78861130792624 ], [ -122.41630911827089, 37.78861554730136 ], [ -122.41628229618074, 37.78843325395142 ], [ -122.41632521152498, 37.788429014565835 ], [ -122.41630911827092, 37.788352705583755 ], [ -122.41638958454136, 37.78834422680312 ], [ -122.41642713546754, 37.78855195664895 ], [ -122.41644859313966, 37.78869609538249 ], [ -122.41644859313966, 37.78869609538249 ], [ -122.41644859313965, 37.78869609538249 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41650760173798, 37.78854347789117 ], [ -122.41642713546753, 37.78855195664898 ], [ -122.41638958454134, 37.78834422680312 ], [ -122.41647005081177, 37.788335748021495 ], [ -122.41650760173798, 37.78854347789117 ], [ -122.41650760173798, 37.78854347789117 ], [ -122.41650760173798, 37.78854347789117 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41989254951477, 37.788666419783866 ], [ -122.41967260837555, 37.78869609538249 ], [ -122.41960823535919, 37.788361184363445 ], [ -122.41982281208038, 37.788335748021495 ], [ -122.41989254951476, 37.788666419783866 ], [ -122.41989254951476, 37.788666419783866 ], [ -122.41989254951477, 37.788666419783866 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41306900978088, 37.788568914161615 ], [ -122.41288661956787, 37.788598589799406 ], [ -122.41286516189575, 37.78850532346909 ], [ -122.41287589073181, 37.78850532346909 ], [ -122.41285979747774, 37.78843325395142 ], [ -122.41284906864168, 37.788437493336744 ], [ -122.41283297538759, 37.78835694497374 ], [ -122.41301000118257, 37.788331508630314 ], [ -122.41303145885469, 37.78841629640763 ], [ -122.41299927234651, 37.78842053579395 ], [ -122.4130153656006, 37.78849684470596 ], [ -122.4130529165268, 37.78848836594184 ], [ -122.41306900978088, 37.788568914161615 ], [ -122.41306900978088, 37.788568914161615 ], [ -122.41306900978088, 37.788568914161615 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42173254489899, 37.788412057021084 ], [ -122.42153406143188, 37.788437493336744 ], [ -122.42151260375977, 37.78834846619357 ], [ -122.42159843444824, 37.78833998741243 ], [ -122.42159843444824, 37.788361184363445 ], [ -122.42164134979248, 37.788352705583755 ], [ -122.42163598537446, 37.788331508630314 ], [ -122.42171108722688, 37.78832302984724 ], [ -122.421732544899, 37.788412057021084 ], [ -122.421732544899, 37.788412057021084 ], [ -122.42173254489899, 37.788412057021084 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41287589073181, 37.78860282917525 ], [ -122.41273105144501, 37.788624026050876 ], [ -122.41270422935487, 37.78852228099244 ], [ -122.41272568702699, 37.788518041611965 ], [ -122.41270422935487, 37.78844173272184 ], [ -122.41268277168275, 37.78844597210669 ], [ -122.4126559495926, 37.78834422680312 ], [ -122.4128168821335, 37.78831879045532 ], [ -122.41284370422365, 37.78842477518002 ], [ -122.41281151771547, 37.788429014565835 ], [ -122.41282761096956, 37.78849684470596 ], [ -122.41285443305969, 37.788492605324016 ], [ -122.41287589073181, 37.78860282917525 ], [ -122.41287589073181, 37.78860282917525 ], [ -122.41287589073181, 37.78860282917525 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41668462753296, 37.78856467478382 ], [ -122.41660952568054, 37.78857739291647 ], [ -122.41660416126251, 37.78856043540577 ], [ -122.41651296615602, 37.788568914161615 ], [ -122.41650760173799, 37.78854347789117 ], [ -122.41647005081178, 37.788335748021495 ], [ -122.41655051708223, 37.788327269238906 ], [ -122.4166363477707, 37.7883145510632 ], [ -122.41667926311494, 37.78853923851192 ], [ -122.41668462753297, 37.78856467478382 ], [ -122.41668462753297, 37.78856467478382 ], [ -122.41668462753296, 37.78856467478382 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41846561431885, 37.78844597210669 ], [ -122.41835296154022, 37.7884586902598 ], [ -122.4183475971222, 37.78844173272184 ], [ -122.41822421550752, 37.78845445087567 ], [ -122.41822957992555, 37.78847140841073 ], [ -122.41811692714693, 37.78848412655941 ], [ -122.4180954694748, 37.78835694497374 ], [ -122.41820812225342, 37.78833998741243 ], [ -122.41821348667145, 37.78835694497374 ], [ -122.41832613945007, 37.78834422680312 ], [ -122.41832077503204, 37.788327269238906 ], [ -122.41843879222871, 37.7883145510632 ], [ -122.41846561431885, 37.78844597210669 ], [ -122.41846561431885, 37.78844597210669 ], [ -122.41846561431885, 37.78844597210669 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42073476314545, 37.78838238130839 ], [ -122.42058992385864, 37.78839933885995 ], [ -122.42038607597352, 37.788429014565835 ], [ -122.42036998271944, 37.78834846619357 ], [ -122.42046117782594, 37.788335748021495 ], [ -122.42046654224396, 37.788352705583755 ], [ -122.42062747478487, 37.788331508630314 ], [ -122.42062211036684, 37.7883145510632 ], [ -122.42071866989137, 37.78830183288528 ], [ -122.42073476314546, 37.78838238130839 ], [ -122.42073476314546, 37.78838238130839 ], [ -122.42073476314545, 37.78838238130839 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4168187379837, 37.78852228099244 ], [ -122.41667926311493, 37.78853923851192 ], [ -122.41663634777069, 37.7883145510632 ], [ -122.41677045822144, 37.78830183288528 ], [ -122.41681873798369, 37.78852228099244 ], [ -122.41681873798369, 37.78852228099244 ], [ -122.4168187379837, 37.78852228099244 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42134630680084, 37.78846292964368 ], [ -122.42118000984192, 37.78848412655941 ], [ -122.42114245891571, 37.78832302984724 ], [ -122.42131412029268, 37.78829759349217 ], [ -122.42134630680086, 37.78846292964368 ], [ -122.42134630680086, 37.78846292964368 ], [ -122.42134630680084, 37.78846292964368 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42018759250641, 37.78862826542526 ], [ -122.41989254951476, 37.788666419783866 ], [ -122.41982281208038, 37.788335748021495 ], [ -122.42011785507202, 37.78829759349217 ], [ -122.42018759250641, 37.78862826542526 ], [ -122.42018759250641, 37.78862826542526 ], [ -122.42018759250641, 37.78862826542526 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41235554218292, 37.78837814191988 ], [ -122.41220533847809, 37.78839509947241 ], [ -122.41219997406006, 37.788373902531134 ], [ -122.4121356010437, 37.78838238130839 ], [ -122.41214096546173, 37.78840357824722 ], [ -122.41207122802734, 37.788412057021084 ], [ -122.41206586360931, 37.78839086008464 ], [ -122.41201758384706, 37.78839933885995 ], [ -122.41201758384706, 37.78842053579395 ], [ -122.41193175315857, 37.788429014565835 ], [ -122.41191029548645, 37.788331508630314 ], [ -122.41200149059296, 37.78831879045532 ], [ -122.41200685501099, 37.78833998741243 ], [ -122.41205513477325, 37.788335748021495 ], [ -122.41205513477325, 37.7883145510632 ], [ -122.41211950778961, 37.78830607227817 ], [ -122.41211950778961, 37.788327269238906 ], [ -122.41219460964203, 37.78831879045532 ], [ -122.412189245224, 37.7882933540988 ], [ -122.4123340845108, 37.7882763965229 ], [ -122.41235554218292, 37.78837814191988 ], [ -122.41235554218292, 37.78837814191988 ], [ -122.41235554218292, 37.78837814191988 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41343379020691, 37.78852652037268 ], [ -122.41317093372345, 37.78856467478382 ], [ -122.4131441116333, 37.7884586902598 ], [ -122.41318166255951, 37.78845021149131 ], [ -122.41314947605133, 37.78830607227817 ], [ -122.41337478160857, 37.78827215712833 ], [ -122.4134337902069, 37.78852652037268 ], [ -122.4134337902069, 37.78852652037268 ], [ -122.41343379020691, 37.78852652037268 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4207454919815, 37.78830183288528 ], [ -122.42071866989137, 37.78830183288528 ], [ -122.42062211036682, 37.7883145510632 ], [ -122.42046117782593, 37.788335748021495 ], [ -122.42036998271942, 37.78834846619357 ], [ -122.42035388946535, 37.78826367833844 ], [ -122.42072939872743, 37.78821704497665 ], [ -122.4207454919815, 37.78830183288528 ], [ -122.4207454919815, 37.78830183288528 ], [ -122.4207454919815, 37.78830183288528 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41216778755188, 37.78829759349217 ], [ -122.41191029548645, 37.788327269238906 ], [ -122.41189420223238, 37.788242481359454 ], [ -122.4121516942978, 37.78821704497665 ], [ -122.41216778755188, 37.78829759349217 ], [ -122.41216778755188, 37.78829759349217 ], [ -122.41216778755188, 37.78829759349217 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41742491722107, 37.78840781763428 ], [ -122.41739809513093, 37.788412057021084 ], [ -122.41733372211456, 37.78842053579395 ], [ -122.41732835769655, 37.78839933885995 ], [ -122.41710841655733, 37.78842477518002 ], [ -122.41710841655733, 37.78844597210669 ], [ -122.41701722145082, 37.7884586902598 ], [ -122.41697430610658, 37.788250960151764 ], [ -122.41738200187685, 37.788200087383245 ], [ -122.41739809513093, 37.78828063591724 ], [ -122.41737663745882, 37.78828487531134 ], [ -122.41739273071289, 37.78838238130839 ], [ -122.41741955280304, 37.78838238130839 ], [ -122.41741955280304, 37.78839086008464 ], [ -122.41742491722106, 37.78840781763428 ], [ -122.41742491722106, 37.78840781763428 ], [ -122.41742491722107, 37.78840781763428 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41748929023743, 37.78838238130839 ], [ -122.41741955280305, 37.78839086008464 ], [ -122.41741955280305, 37.78838238130839 ], [ -122.41739809513093, 37.78828063591724 ], [ -122.41738200187685, 37.788200087383245 ], [ -122.41745173931123, 37.78819584798428 ], [ -122.41748929023743, 37.78838238130839 ], [ -122.41748929023743, 37.78838238130839 ], [ -122.41748929023743, 37.78838238130839 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42098152637482, 37.788509562850294 ], [ -122.4207991361618, 37.78853499913242 ], [ -122.42076694965363, 37.78839933885995 ], [ -122.4207454919815, 37.78830183288528 ], [ -122.42072939872743, 37.78821704497665 ], [ -122.42091178894043, 37.78819160858508 ], [ -122.42098152637482, 37.788509562850294 ], [ -122.42098152637482, 37.788509562850294 ], [ -122.42098152637482, 37.788509562850294 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41761267185211, 37.788492605324016 ], [ -122.41751074790955, 37.78850532346909 ], [ -122.41748929023743, 37.78838238130839 ], [ -122.41745173931123, 37.78819584798428 ], [ -122.4175536632538, 37.78818312978595 ], [ -122.41756439208986, 37.78825519954756 ], [ -122.41753756999971, 37.78825519954756 ], [ -122.41753756999971, 37.78828063591724 ], [ -122.41756975650789, 37.7882763965229 ], [ -122.41759121418, 37.78839509947241 ], [ -122.41756439208986, 37.78839509947241 ], [ -122.41756975650789, 37.78842477518002 ], [ -122.41759657859804, 37.78842477518002 ], [ -122.4176073074341, 37.78847564779387 ], [ -122.41761267185211, 37.788492605324016 ], [ -122.41761267185211, 37.788492605324016 ], [ -122.41761267185211, 37.788492605324016 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41005420684814, 37.788556196027486 ], [ -122.40987181663515, 37.78857739291647 ], [ -122.4098289012909, 37.78837814191988 ], [ -122.40975379943848, 37.78838662069664 ], [ -122.40974843502046, 37.78834846619357 ], [ -122.40952849388124, 37.78837814191988 ], [ -122.40950167179109, 37.78824672075573 ], [ -122.40950167179109, 37.788242481359454 ], [ -122.40997910499574, 37.78818312978595 ], [ -122.41005420684816, 37.788556196027486 ], [ -122.41005420684816, 37.788556196027486 ], [ -122.41005420684814, 37.788556196027486 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4210673570633, 37.78850108408765 ], [ -122.42098152637482, 37.788509562850294 ], [ -122.42091178894043, 37.78819160858508 ], [ -122.42100298404694, 37.788178890386014 ], [ -122.4210673570633, 37.78850108408765 ], [ -122.4210673570633, 37.78850108408765 ], [ -122.4210673570633, 37.78850108408765 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41482317447662, 37.78833998741243 ], [ -122.41474270820619, 37.78834846619357 ], [ -122.41470515727998, 37.78818736918563 ], [ -122.41479098796846, 37.78817465098585 ], [ -122.41482317447664, 37.78833998741243 ], [ -122.41482317447664, 37.78833998741243 ], [ -122.41482317447662, 37.78833998741243 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42118000984192, 37.78848412655941 ], [ -122.4210673570633, 37.78850108408765 ], [ -122.42100298404694, 37.788178890386014 ], [ -122.42111027240753, 37.788166172184766 ], [ -122.42114245891571, 37.78832302984724 ], [ -122.42118000984192, 37.78848412655941 ], [ -122.42118000984192, 37.78848412655941 ], [ -122.42118000984192, 37.78848412655941 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41780042648315, 37.78845445087567 ], [ -122.4176073074341, 37.78847564779387 ], [ -122.41759657859804, 37.78842477518002 ], [ -122.41759121418, 37.78839509947241 ], [ -122.41756975650789, 37.7882763965229 ], [ -122.41756439208986, 37.78825519954756 ], [ -122.4175536632538, 37.78818312978595 ], [ -122.41774678230287, 37.78815769338271 ], [ -122.41776823997499, 37.78827215712833 ], [ -122.41771459579469, 37.78828063591724 ], [ -122.41771459579469, 37.78826367833842 ], [ -122.41768240928651, 37.78826791773349 ], [ -122.41769850254059, 37.78836966314214 ], [ -122.41773068904878, 37.78836542375292 ], [ -122.41773068904878, 37.788356944973714 ], [ -122.41777896881104, 37.78834846619357 ], [ -122.41780042648315, 37.78845445087567 ], [ -122.41780042648315, 37.78845445087567 ], [ -122.41780042648315, 37.78845445087567 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41464614868164, 37.788361184363445 ], [ -122.41458177566528, 37.78836966314214 ], [ -122.41453886032104, 37.788166172184766 ], [ -122.4146032333374, 37.78815769338271 ], [ -122.41464614868164, 37.788361184363445 ], [ -122.41464614868164, 37.788361184363445 ], [ -122.41464614868164, 37.788361184363445 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41243600845337, 37.78824672075573 ], [ -122.41237163543701, 37.788250960151764 ], [ -122.41235554218292, 37.78815769338271 ], [ -122.41241991519928, 37.78815345398132 ], [ -122.41243600845337, 37.78824672075573 ], [ -122.41243600845337, 37.78824672075573 ], [ -122.41243600845337, 37.78824672075573 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41795599460602, 37.788479887176756 ], [ -122.4178272485733, 37.78849684470596 ], [ -122.41782188415527, 37.7884586902598 ], [ -122.41780042648315, 37.78846292964368 ], [ -122.41780042648315, 37.78845445087567 ], [ -122.41777896881104, 37.78834846619357 ], [ -122.41776823997498, 37.78827215712833 ], [ -122.41774678230286, 37.78815769338271 ], [ -122.4178272485733, 37.78814921457968 ], [ -122.41783797740936, 37.78822128437439 ], [ -122.41784870624542, 37.78828063591724 ], [ -122.4178272485733, 37.78828487531134 ], [ -122.41783797740936, 37.788327269238906 ], [ -122.41784870624542, 37.788327269238906 ], [ -122.41785407066345, 37.788361184363445 ], [ -122.41780579090118, 37.78836542375292 ], [ -122.4178111553192, 37.78838662069664 ], [ -122.41785943508147, 37.78838238130839 ], [ -122.41787016391753, 37.78842053579395 ], [ -122.41793990135191, 37.78840781763428 ], [ -122.417955994606, 37.788479887176756 ], [ -122.417955994606, 37.788479887176756 ], [ -122.41795599460602, 37.788479887176756 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42131412029266, 37.78829759349217 ], [ -122.42114245891571, 37.78832302984724 ], [ -122.42111027240752, 37.788166172184766 ], [ -122.42127656936644, 37.78814497517779 ], [ -122.42131412029265, 37.78829759349217 ], [ -122.42131412029265, 37.78829759349217 ], [ -122.42131412029266, 37.78829759349217 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41796135902405, 37.78834422680312 ], [ -122.41786479949951, 37.78835694497374 ], [ -122.41784870624542, 37.78828063591724 ], [ -122.41787552833557, 37.78828063591724 ], [ -122.41786479949951, 37.78821704497665 ], [ -122.41783797740936, 37.78822128437439 ], [ -122.4178272485733, 37.78814921457968 ], [ -122.41792380809784, 37.78813649637332 ], [ -122.41793990135193, 37.78821280557867 ], [ -122.41791307926178, 37.78821704497665 ], [ -122.41792380809784, 37.7882763965229 ], [ -122.41795063018799, 37.78827215712833 ], [ -122.41796135902405, 37.78834422680312 ], [ -122.41796135902405, 37.78834422680312 ], [ -122.41796135902405, 37.78834422680312 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42144286632538, 37.78845021149131 ], [ -122.42134630680084, 37.78846292964368 ], [ -122.42131412029266, 37.78829759349217 ], [ -122.42127656936646, 37.78814497517779 ], [ -122.421373128891, 37.78813225697071 ], [ -122.42142140865326, 37.78836118436342 ], [ -122.42144286632538, 37.78845021149128 ], [ -122.42144286632538, 37.78845021149128 ], [ -122.42144286632538, 37.78845021149131 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41218388080597, 37.78821280557867 ], [ -122.41189420223236, 37.788242481359454 ], [ -122.41187810897827, 37.788161932783865 ], [ -122.41216778755188, 37.78812801756788 ], [ -122.41218388080597, 37.78821280557867 ], [ -122.41218388080597, 37.78821280557867 ], [ -122.41218388080597, 37.78821280557867 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41074621677399, 37.78846292964368 ], [ -122.41026341915129, 37.78852652037268 ], [ -122.41018831729887, 37.788161932783865 ], [ -122.41067111492157, 37.78809834174111 ], [ -122.41074621677399, 37.78846292964368 ], [ -122.41074621677399, 37.78846292964368 ], [ -122.41074621677399, 37.78846292964368 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42171108722687, 37.78832302984724 ], [ -122.42163598537445, 37.788331508630314 ], [ -122.42159843444824, 37.78833998741243 ], [ -122.42151260375977, 37.78834846619357 ], [ -122.42142140865326, 37.788361184363445 ], [ -122.421373128891, 37.788132256970734 ], [ -122.4216628074646, 37.788089862931294 ], [ -122.42171108722687, 37.78832302984724 ], [ -122.42171108722687, 37.78832302984724 ], [ -122.42171108722687, 37.78832302984724 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41843342781067, 37.7882933540988 ], [ -122.41822957992555, 37.78831879045532 ], [ -122.41819202899934, 37.788106820549984 ], [ -122.41839587688446, 37.78808138412048 ], [ -122.41843342781067, 37.7882933540988 ], [ -122.41843342781067, 37.7882933540988 ], [ -122.41843342781067, 37.7882933540988 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41887867450714, 37.78834846619357 ], [ -122.41868555545807, 37.78836966314214 ], [ -122.41862118244171, 37.788047468867504 ], [ -122.41881966590881, 37.78802627182651 ], [ -122.41883039474487, 37.788085623525994 ], [ -122.4188357591629, 37.78812377816479 ], [ -122.41876602172852, 37.788132256970734 ], [ -122.41877138614655, 37.788161932783865 ], [ -122.41884112358092, 37.78815345398132 ], [ -122.41885185241698, 37.788225523771885 ], [ -122.41885721683501, 37.78823824196291 ], [ -122.41878747940062, 37.78824672075573 ], [ -122.41879284381865, 37.78826791773351 ], [ -122.41885721683501, 37.788259438943136 ], [ -122.41886258125304, 37.78828487531134 ], [ -122.4188786745071, 37.78834846619357 ], [ -122.4188786745071, 37.78834846619357 ], [ -122.41887867450714, 37.78834846619357 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41131484508514, 37.78839086008464 ], [ -122.410746216774, 37.78846292964368 ], [ -122.41067111492157, 37.78809834174111 ], [ -122.41123974323273, 37.78802627182651 ], [ -122.41131484508514, 37.78839086008464 ], [ -122.41131484508514, 37.78839086008464 ], [ -122.41131484508514, 37.78839086008464 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41655051708221, 37.78812377816479 ], [ -122.4164754152298, 37.788132256970734 ], [ -122.41645932197571, 37.788022032417594 ], [ -122.4165290594101, 37.788013553599 ], [ -122.41655051708221, 37.78812377816479 ], [ -122.41655051708221, 37.78812377816479 ], [ -122.41655051708221, 37.78812377816479 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41900205612183, 37.788331508630314 ], [ -122.41887867450714, 37.78834846619357 ], [ -122.41886258125305, 37.78828487531132 ], [ -122.4188894033432, 37.78828063591724 ], [ -122.41887867450714, 37.788221284374366 ], [ -122.41885185241699, 37.788225523771885 ], [ -122.41884112358093, 37.78815345398132 ], [ -122.41884112358093, 37.78814921457968 ], [ -122.41886258125305, 37.78814497517779 ], [ -122.41885185241699, 37.788085623525994 ], [ -122.41883039474487, 37.788085623525994 ], [ -122.41881966590881, 37.78802627182648 ], [ -122.41893768310548, 37.78800931418932 ], [ -122.41895377635956, 37.78808138412046 ], [ -122.41893231868744, 37.788085623525994 ], [ -122.41894841194153, 37.78816193278384 ], [ -122.4189645051956, 37.78815769338271 ], [ -122.41898059844969, 37.788221284374366 ], [ -122.41895914077757, 37.788225523771885 ], [ -122.41896986961363, 37.7882763965229 ], [ -122.41899132728575, 37.78827215712831 ], [ -122.41900205612181, 37.788331508630314 ], [ -122.41900205612181, 37.788331508630314 ], [ -122.41900205612183, 37.788331508630314 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4207991361618, 37.788106820549984 ], [ -122.42070257663727, 37.78812377816479 ], [ -122.42067575454713, 37.788005074779434 ], [ -122.42077767848969, 37.78799235654826 ], [ -122.4207991361618, 37.788106820549984 ], [ -122.4207991361618, 37.788106820549984 ], [ -122.4207991361618, 37.788106820549984 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41336941719055, 37.78825519954756 ], [ -122.41305828094482, 37.7882933540988 ], [ -122.41304218769073, 37.78819584798428 ], [ -122.41305828094482, 37.78819160858508 ], [ -122.41302609443665, 37.7880305112352 ], [ -122.41331577301025, 37.78799235654826 ], [ -122.41336941719055, 37.78825519954756 ], [ -122.41336941719055, 37.78825519954756 ], [ -122.41336941719055, 37.78825519954756 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41915762424469, 37.7883145510632 ], [ -122.41900205612183, 37.788331508630314 ], [ -122.41899132728577, 37.78827215712833 ], [ -122.4189805984497, 37.788221284374366 ], [ -122.41896450519562, 37.78815769338271 ], [ -122.41895377635956, 37.78808138412046 ], [ -122.41893768310548, 37.78800931418932 ], [ -122.41909325122833, 37.78799235654826 ], [ -122.41910934448242, 37.78808138412046 ], [ -122.4191415309906, 37.788221284374366 ], [ -122.41915762424469, 37.78831455106317 ], [ -122.41915762424469, 37.78831455106317 ], [ -122.41915762424469, 37.7883145510632 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42061138153076, 37.788132256970734 ], [ -122.42033779621124, 37.78817041158543 ], [ -122.42030560970306, 37.788022032417594 ], [ -122.42039680480957, 37.788009314189345 ], [ -122.42044508457184, 37.788000835369274 ], [ -122.4205094575882, 37.78799235654826 ], [ -122.42058455944061, 37.787983877726255 ], [ -122.42061138153076, 37.788132256970734 ], [ -122.42061138153076, 37.788132256970734 ], [ -122.42061138153076, 37.788132256970734 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41171717643738, 37.788479887176756 ], [ -122.41140067577362, 37.788518041611965 ], [ -122.4113792181015, 37.78842053579395 ], [ -122.41137385368347, 37.78839933885995 ], [ -122.41132020950317, 37.78840357824722 ], [ -122.41131484508514, 37.78839086008464 ], [ -122.41123974323273, 37.78802627182651 ], [ -122.41160988807678, 37.787975398903306 ], [ -122.41171717643738, 37.788479887176756 ], [ -122.41171717643738, 37.788479887176756 ], [ -122.41171717643738, 37.788479887176756 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41629302501678, 37.78815769338271 ], [ -122.41621792316435, 37.788166172184766 ], [ -122.41618573665617, 37.787975398903285 ], [ -122.4162608385086, 37.78796692007934 ], [ -122.41629302501678, 37.78815769338271 ], [ -122.41629302501678, 37.78815769338271 ], [ -122.41629302501678, 37.78815769338271 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.419393658638, 37.78828487531132 ], [ -122.4191576242447, 37.7883145510632 ], [ -122.41914153099061, 37.78822128437439 ], [ -122.41916298866273, 37.78822128437439 ], [ -122.41913616657259, 37.7880771447147 ], [ -122.41910934448246, 37.78808138412048 ], [ -122.41909325122838, 37.78799235654826 ], [ -122.41932392120366, 37.78796268066702 ], [ -122.41934001445775, 37.78805170827497 ], [ -122.41931855678563, 37.7880559476822 ], [ -122.41934537887578, 37.788200087383245 ], [ -122.41937756538395, 37.78819584798428 ], [ -122.41937756538395, 37.78822128437439 ], [ -122.41939365863801, 37.78828487531134 ], [ -122.41939365863801, 37.78828487531134 ], [ -122.419393658638, 37.78828487531132 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42295563220978, 37.78827215712833 ], [ -122.42219388484955, 37.788373902531134 ], [ -122.42212951183318, 37.78805170827497 ], [ -122.42288589477538, 37.78794996242857 ], [ -122.42295563220976, 37.78827215712833 ], [ -122.42295563220976, 37.78827215712833 ], [ -122.42295563220978, 37.78827215712833 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4195545911789, 37.78826367833844 ], [ -122.419393658638, 37.78828487531134 ], [ -122.41937756538391, 37.78822128437439 ], [ -122.41940438747406, 37.78821704497665 ], [ -122.41937756538391, 37.78807290530868 ], [ -122.41934537887573, 37.7880771447147 ], [ -122.4193400144577, 37.78805170827497 ], [ -122.41932392120363, 37.78796268066702 ], [ -122.4194473028183, 37.78794996242857 ], [ -122.41949021816255, 37.78794996242857 ], [ -122.41951167583467, 37.78804322945978 ], [ -122.41948485374452, 37.78804322945978 ], [ -122.4195170402527, 37.78821280557867 ], [ -122.41954386234285, 37.788208566180444 ], [ -122.41955459117891, 37.78826367833844 ], [ -122.41955459117891, 37.78826367833844 ], [ -122.4195545911789, 37.78826367833844 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4205094575882, 37.78799235654826 ], [ -122.42044508457184, 37.788000835369274 ], [ -122.42044508457184, 37.78798811713739 ], [ -122.42039680480957, 37.78799235654826 ], [ -122.42039680480957, 37.788009314189345 ], [ -122.42030560970306, 37.788022032417594 ], [ -122.420294880867, 37.78796268066702 ], [ -122.42042362689972, 37.78794996242857 ], [ -122.42049872875215, 37.78794996242857 ], [ -122.42050409317017, 37.787979638314894 ], [ -122.4205094575882, 37.78799235654826 ], [ -122.4205094575882, 37.78799235654826 ], [ -122.4205094575882, 37.78799235654826 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42315411567688, 37.788242481359454 ], [ -122.42295563220978, 37.78826791773351 ], [ -122.42288589477539, 37.78794996242857 ], [ -122.42291271686554, 37.78794996242857 ], [ -122.42309510707854, 37.78794996242857 ], [ -122.42315411567687, 37.788242481359454 ], [ -122.42315411567687, 37.788242481359454 ], [ -122.42315411567688, 37.788242481359454 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41207659244537, 37.788085623525994 ], [ -122.41186738014221, 37.78811105995404 ], [ -122.41183519363403, 37.78794996242857 ], [ -122.41184055805206, 37.78794996242857 ], [ -122.41205513477325, 37.78794996242857 ], [ -122.41207659244537, 37.788085623525994 ], [ -122.41207659244537, 37.788085623525994 ], [ -122.41207659244537, 37.788085623525994 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41972625255585, 37.788242481359454 ], [ -122.4195545911789, 37.78826367833844 ], [ -122.41954386234283, 37.788208566180444 ], [ -122.41951167583466, 37.78804322945978 ], [ -122.41949021816254, 37.78794996242857 ], [ -122.41966724395752, 37.78794996242857 ], [ -122.41967797279358, 37.788005074779434 ], [ -122.41970479488371, 37.78814921457968 ], [ -122.41972625255583, 37.788242481359454 ], [ -122.41972625255583, 37.788242481359454 ], [ -122.41972625255585, 37.788242481359454 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4164754152298, 37.788132256970734 ], [ -122.41638422012329, 37.788144975177815 ], [ -122.4163466691971, 37.78794996242857 ], [ -122.41644322872163, 37.78794996242857 ], [ -122.41647541522981, 37.788132256970734 ], [ -122.41647541522981, 37.788132256970734 ], [ -122.4164754152298, 37.788132256970734 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41668999195099, 37.788106820549984 ], [ -122.4165505170822, 37.78812377816479 ], [ -122.41651833057402, 37.78794996242857 ], [ -122.41666316986083, 37.78794996242857 ], [ -122.41668999195097, 37.788106820549984 ], [ -122.41668999195097, 37.788106820549984 ], [ -122.41668999195099, 37.788106820549984 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41220533847809, 37.78807290530868 ], [ -122.4120819568634, 37.788085623525994 ], [ -122.41205513477325, 37.78794996242857 ], [ -122.41217851638794, 37.78794996242857 ], [ -122.41220533847809, 37.78807290530868 ], [ -122.41220533847809, 37.78807290530868 ], [ -122.41220533847809, 37.78807290530868 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41638422012329, 37.78814497517779 ], [ -122.41629302501678, 37.78815345398132 ], [ -122.41625547409059, 37.78794996242854 ], [ -122.4163466691971, 37.78794996242854 ], [ -122.41638422012329, 37.78814497517779 ], [ -122.41638422012329, 37.78814497517779 ], [ -122.41638422012329, 37.78814497517779 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41236627101898, 37.78805170827497 ], [ -122.41220533847809, 37.78807290530868 ], [ -122.41218388080597, 37.78794996242857 ], [ -122.41234481334686, 37.78794996242857 ], [ -122.41236627101898, 37.78805170827497 ], [ -122.41236627101898, 37.78805170827497 ], [ -122.41236627101898, 37.78805170827497 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42349207401276, 37.78819584798428 ], [ -122.42315411567688, 37.788242481359454 ], [ -122.42309510707855, 37.78794996242857 ], [ -122.42343842983246, 37.78794996242857 ], [ -122.42349207401276, 37.78819584798428 ], [ -122.42349207401276, 37.78819584798428 ], [ -122.42349207401276, 37.78819584798428 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42010176181793, 37.78819584798428 ], [ -122.41972625255585, 37.788242481359454 ], [ -122.41970479488373, 37.78814921457968 ], [ -122.41974234580994, 37.788144975177815 ], [ -122.41971552371979, 37.788000835369274 ], [ -122.4196779727936, 37.788005074779434 ], [ -122.41966724395753, 37.78794996242857 ], [ -122.42005348205568, 37.78794996242857 ], [ -122.42010176181793, 37.78819584798428 ], [ -122.42010176181793, 37.78819584798428 ], [ -122.42010176181793, 37.78819584798428 ], [ -122.41993546485901, 37.78811529935787 ], [ -122.41990327835083, 37.787979638314894 ], [ -122.41985499858858, 37.78798811713739 ], [ -122.41988718509675, 37.78812377816479 ], [ -122.41993546485901, 37.78811529935787 ], [ -122.41993546485901, 37.78811529935787 ], [ -122.42010176181793, 37.78819584798428 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41254329681396, 37.7880305112352 ], [ -122.41239845752716, 37.788047468867504 ], [ -122.41238236427309, 37.78794996242857 ], [ -122.41252720355989, 37.78794996242857 ], [ -122.41254329681396, 37.7880305112352 ], [ -122.41254329681396, 37.7880305112352 ], [ -122.41254329681396, 37.7880305112352 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41268277168274, 37.78801355359897 ], [ -122.41254329681395, 37.7880305112352 ], [ -122.41252720355988, 37.78794996242857 ], [ -122.41266667842865, 37.78794996242857 ], [ -122.41268277168274, 37.788013553599 ], [ -122.41268277168274, 37.788013553599 ], [ -122.41268277168274, 37.78801355359897 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41276323795319, 37.788005074779434 ], [ -122.41268277168275, 37.78801355359897 ], [ -122.4126720428467, 37.78794996242854 ], [ -122.41275250911713, 37.78794996242854 ], [ -122.41276323795319, 37.788005074779434 ], [ -122.41276323795319, 37.788005074779434 ], [ -122.41276323795319, 37.788005074779434 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42042362689972, 37.78794996242857 ], [ -122.420294880867, 37.78796268066702 ], [ -122.42028951644897, 37.78794996242857 ], [ -122.42042362689972, 37.78794996242857 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42057919502258, 37.78797115949147 ], [ -122.42050409317017, 37.787979638314894 ], [ -122.42049872875215, 37.78794996242857 ], [ -122.42057383060457, 37.78794996242857 ], [ -122.42057919502258, 37.78797115949147 ], [ -122.42057919502258, 37.78797115949147 ], [ -122.42057919502258, 37.78797115949147 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41301000118256, 37.78797115949147 ], [ -122.41279542446136, 37.78799659595888 ], [ -122.4127846956253, 37.78794996242857 ], [ -122.41300463676454, 37.78794996242857 ], [ -122.41301000118256, 37.78797115949147 ], [ -122.41301000118256, 37.78797115949147 ], [ -122.41301000118256, 37.78797115949147 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42070257663727, 37.78812377816479 ], [ -122.42061138153076, 37.788132256970734 ], [ -122.42058455944063, 37.787983877726255 ], [ -122.4205791950226, 37.78797115949147 ], [ -122.4205738306046, 37.78794996242857 ], [ -122.42066502571107, 37.78794996242857 ], [ -122.42067575454713, 37.788005074779434 ], [ -122.42070257663728, 37.78812377816479 ], [ -122.42070257663728, 37.78812377816479 ], [ -122.42070257663727, 37.78812377816479 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41314947605133, 37.78795420184161 ], [ -122.41301000118254, 37.78797115949147 ], [ -122.41300463676453, 37.78794996242857 ], [ -122.41314947605133, 37.78794996242857 ], [ -122.41314947605133, 37.78795420184161 ], [ -122.41314947605133, 37.78795420184161 ], [ -122.41314947605133, 37.78795420184161 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42077767848969, 37.78799235654826 ], [ -122.42067575454713, 37.788005074779434 ], [ -122.42066502571106, 37.78794996242857 ], [ -122.42076694965363, 37.78794996242857 ], [ -122.42077767848969, 37.78799235654826 ], [ -122.42077767848969, 37.78799235654826 ], [ -122.42077767848969, 37.78799235654826 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41320312023163, 37.78794996242857 ], [ -122.41314947605133, 37.78795420184161 ], [ -122.41314947605133, 37.78794996242857 ], [ -122.41320312023163, 37.78794996242857 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42093861103058, 37.788089862931294 ], [ -122.4207991361618, 37.788106820549984 ], [ -122.42077767848967, 37.78799235654826 ], [ -122.42076694965361, 37.78794996242857 ], [ -122.42091178894042, 37.78794996242857 ], [ -122.42093861103056, 37.788089862931294 ], [ -122.42093861103056, 37.788089862931294 ], [ -122.42093861103058, 37.788089862931294 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4104779958725, 37.78794996242857 ], [ -122.41015613079071, 37.78798811713739 ], [ -122.41014540195465, 37.78794996242857 ], [ -122.4104779958725, 37.78794996242857 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42123365402222, 37.78805170827497 ], [ -122.42093861103058, 37.788089862931294 ], [ -122.42091178894043, 37.78794996242857 ], [ -122.4212121963501, 37.78794996242857 ], [ -122.42123365402222, 37.78805170827497 ], [ -122.42123365402222, 37.78805170827497 ], [ -122.42123365402222, 37.78805170827497 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42164671421051, 37.788000835369274 ], [ -122.42123365402222, 37.78805170827499 ], [ -122.4212121963501, 37.78794996242857 ], [ -122.42163598537445, 37.78794996242857 ], [ -122.42164671421051, 37.788000835369296 ], [ -122.42164671421051, 37.788000835369296 ], [ -122.42164671421051, 37.788000835369274 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40990936756134, 37.78799659595888 ], [ -122.4095606803894, 37.78803899005183 ], [ -122.40954458713531, 37.78794996242857 ], [ -122.40950167179108, 37.78794996242857 ], [ -122.40989863872528, 37.78794996242857 ], [ -122.40990936756134, 37.78799659595888 ], [ -122.40990936756134, 37.78799659595888 ], [ -122.40990936756134, 37.78799659595888 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41431891918182, 37.78802627182651 ], [ -122.41402387619019, 37.78806442649594 ], [ -122.41400241851807, 37.78794996242857 ], [ -122.41430282592772, 37.78794996242857 ], [ -122.41431891918181, 37.78802627182651 ], [ -122.41431891918181, 37.78802627182651 ], [ -122.41431891918182, 37.78802627182651 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41458177566528, 37.78795844125444 ], [ -122.41441011428833, 37.787983877726255 ], [ -122.41439938545227, 37.78794996242857 ], [ -122.41457641124725, 37.78794996242857 ], [ -122.41458177566527, 37.78795844125444 ], [ -122.41458177566527, 37.78795844125444 ], [ -122.41458177566528, 37.78795844125444 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41813838481903, 37.787983877726255 ], [ -122.41792917251587, 37.788009314189345 ], [ -122.41791844367981, 37.78794996242857 ], [ -122.41813302040099, 37.78794996242857 ], [ -122.41813838481902, 37.787983877726255 ], [ -122.41813838481902, 37.787983877726255 ], [ -122.41813838481903, 37.787983877726255 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40951776504517, 37.78804322945978 ], [ -122.40950167179108, 37.788047468867504 ], [ -122.40950167179108, 37.78794996242857 ], [ -122.40950167179108, 37.78795844125444 ], [ -122.40951776504517, 37.78804322945978 ], [ -122.40951776504517, 37.78804322945978 ], [ -122.40951776504517, 37.78804322945978 ] ] ] }, "properties": {} } ], "name": "building" }mapnik-vector-tile-1.6.1/examples/data/14_2620_6331-building_label.geojson000066400000000000000000001255051324304754200256650ustar00rootroot00000000000000{ "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4292802810669, 37.78527484428987 ] }, "properties": { "area": 5516.33349609375, "name": "Miyako Mall", "name_de": "Miyako Mall", "name_en": "Miyako Mall", "name_es": "Miyako Mall", "name_fr": "Miyako Mall" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42416799068451, 37.80113759986951 ] }, "properties": { "area": 1380.7078857421875, "name": "Chase", "name_de": "Chase", "name_en": "Chase", "name_es": "Chase", "name_fr": "Chase" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41160988807678, 37.78994245976337 ] }, "properties": { "area": 230.83670043945312, "name": "Fire Chief's Residence", "name_de": "Fire Chief's Residence", "name_en": "Fire Chief's Residence", "name_es": "Fire Chief's Residence", "name_fr": "Fire Chief's Residence" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43130803108215, 37.78509254269906 ] }, "properties": { "area": 908.6409912109375, "name": "Webster Street Bridge", "name_de": "Webster Street Bridge", "name_en": "Webster Street Bridge", "name_es": "Webster Street Bridge", "name_fr": "Webster Street Bridge" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43186056613922, 37.78496535527636 ] }, "properties": { "area": 5365.01318359375, "name": "Kinokuniya Mall", "name_de": "Kinokuniya Mall", "name_en": "Kinokuniya Mall", "name_es": "Kinokuniya Mall", "name_fr": "Kinokuniya Mall" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4284702539444, 37.785393552060754 ] }, "properties": { "area": 3088.516357421875, "name": "Hotel Kabuki", "name_de": "Hotel Kabuki", "name_en": "Hotel Kabuki", "name_es": "Hotel Kabuki", "name_fr": "Hotel Kabuki" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41934537887573, 37.78665269060695 ] }, "properties": { "area": 520.3375244140625, "name": "San Francisco Fire Station 3", "name_de": "San Francisco Fire Station 3", "name_en": "San Francisco Fire Station 3", "name_es": "San Francisco Fire Station 3", "name_fr": "San Francisco Fire Station 3" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41794526576996, 37.80530408170084 ] }, "properties": { "area": 572.687744140625, "name": "Bayside Inn at the Wharf", "name_de": "Bayside Inn at the Wharf", "name_en": "Bayside Inn at the Wharf", "name_es": "Bayside Inn at the Wharf", "name_fr": "Bayside Inn at the Wharf" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41453349590302, 37.80774960805068 ] }, "properties": { "area": 1862.534912109375, "name": "The Wharf Inn", "name_de": "The Wharf Inn", "name_en": "The Wharf Inn", "name_es": "The Wharf Inn", "name_fr": "The Wharf Inn" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41641640663147, 37.80607123126648 ] }, "properties": { "area": 343.0441589355469, "name": "Knuckles Historic Sports Bar & Grill", "name_de": "Knuckles Historic Sports Bar & Grill", "name_en": "Knuckles Historic Sports Bar & Grill", "name_es": "Knuckles Historic Sports Bar & Grill", "name_fr": "Knuckles Historic Sports Bar & Grill" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4135947227478, 37.80428261604232 ] }, "properties": { "area": 830.158447265625, "name": "San Remo Hotel", "name_de": "San Remo Hotel", "name_en": "San Remo Hotel", "name_es": "San Remo Hotel", "name_fr": "San Remo Hotel" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4206006526947, 37.80551176386163 ] }, "properties": { "area": 1236.4427490234375, "name": "Suites at Fisherman's Wharf", "name_de": "Suites at Fisherman's Wharf", "name_en": "Suites at Fisherman's Wharf", "name_es": "Suites at Fisherman's Wharf", "name_fr": "Suites at Fisherman's Wharf" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41020441055298, 37.795237154349074 ] }, "properties": { "area": 1414.74072265625, "name": "Chinatown Branch Library", "name_de": "Chinatown Branch Library", "name_en": "Chinatown Branch Library", "name_es": "Chinatown Branch Library", "name_fr": "Chinatown Branch Library" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43674218654633, 37.79862827259065 ] }, "properties": { "area": 660.9341430664062, "name": "San Francisco Fire Station 16", "name_de": "San Francisco Fire Station 16", "name_en": "San Francisco Fire Station 16", "name_es": "San Francisco Fire Station 16", "name_fr": "San Francisco Fire Station 16" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40935146808624, 37.802549059002104 ] }, "properties": { "area": 422.4821472167969, "name": "San Francisco Fire Station 28", "name_de": "San Francisco Fire Station 28", "name_en": "San Francisco Fire Station 28", "name_es": "San Francisco Fire Station 28", "name_fr": "San Francisco Fire Station 28" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40993082523346, 37.79875119770314 ] }, "properties": { "area": 2133.2392578125, "name": "Central Police Station", "name_de": "Central Police Station", "name_en": "Central Police Station", "name_es": "Central Police Station", "name_fr": "Central Police Station" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40958750247955, 37.79821286897272 ] }, "properties": { "area": 2808.270751953125, "name": "North Beach Garage", "name_de": "North Beach Garage", "name_en": "North Beach Garage", "name_es": "North Beach Garage", "name_fr": "North Beach Garage" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4277138710022, 37.78465586496683 ] }, "properties": { "area": 1985.4339599609375, "name": "Consulate General of People's Republic of China, San Francisco", "name_de": "Consulate General of People's Republic of China, San Francisco", "name_en": "Consulate General of People's Republic of China, San Francisco", "name_es": "Consulate General of People's Republic of China, San Francisco", "name_fr": "Consulate General of People's Republic of China, San Francisco" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41189420223236, 37.79491499001951 ] }, "properties": { "area": 6071.3720703125, "name": "Cable Car Barn and Museum", "name_de": "Cable Car Barn and Museum", "name_en": "Cable Car Barn and Museum", "name_es": "Cable Car Barn and Museum", "name_fr": "Cable Car Barn and Museum" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40681946277618, 37.79345675495729 ] }, "properties": { "area": 391.3664855957031, "name": "First Chinese Baptist Church", "name_de": "First Chinese Baptist Church", "name_en": "First Chinese Baptist Church", "name_es": "First Chinese Baptist Church", "name_fr": "First Chinese Baptist Church" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42138385772705, 37.791171846210275 ] }, "properties": { "area": 1251.1688232421875, "name": "Old First Garage", "name_de": "Old First Garage", "name_en": "Old First Garage", "name_es": "Old First Garage", "name_fr": "Old First Garage" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43056237697601, 37.78513917803252 ] }, "properties": { "area": 8348.4609375, "name": "Kintetsu Mall", "name_de": "Kintetsu Mall", "name_en": "Kintetsu Mall", "name_es": "Kintetsu Mall", "name_fr": "Kintetsu Mall" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40898668766022, 37.784867844770744 ] }, "properties": { "area": 7335.865234375, "name": "Parc 55 Hotel", "name_de": "Parc 55 Hotel", "name_en": "Parc 55 Hotel", "name_es": "Parc 55 Hotel", "name_fr": "Parc 55 Hotel" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42539644241333, 37.78572423698848 ] }, "properties": { "area": 7462.6748046875, "name": "Cathedral Hill Plaza", "name_de": "Cathedral Hill Plaza", "name_en": "Cathedral Hill Plaza", "name_es": "Cathedral Hill Plaza", "name_fr": "Cathedral Hill Plaza" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42535352706909, 37.78424886203896 ] }, "properties": { "area": 8470.4453125, "name": "Cathedral of Saint Mary of the Assumption", "name_de": "Cathedral of Saint Mary of the Assumption", "name_en": "Cathedral of Saint Mary of the Assumption", "name_es": "Cathedral of Saint Mary of the Assumption", "name_fr": "Cathedral of Saint Mary of the Assumption" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41531133651733, 37.78618634549861 ] }, "properties": { "area": 505.65185546875, "name": "Luz Hotel", "name_de": "Luz Hotel", "name_en": "Luz Hotel", "name_es": "Luz Hotel", "name_fr": "Luz Hotel" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41287589073181, 37.80805476336766 ] }, "properties": { "area": 14876.345703125, "name": "Radisson", "name_de": "Radisson", "name_en": "Radisson", "name_es": "Radisson", "name_fr": "Radisson" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41165280342102, 37.80810562246455 ] }, "properties": { "area": 9020.443359375, "name": "Pier 39 Garage", "name_de": "Pier 39 Garage", "name_en": "Pier 39 Garage", "name_es": "Pier 39 Garage", "name_fr": "Pier 39 Garage" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43238627910614, 37.807872517982794 ] }, "properties": { "area": 3615.182861328125, "name": "Pier 1", "name_de": "Pier 1", "name_en": "Pier 1", "name_es": "Pier 1", "name_fr": "Pier 1" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40513503551483, 37.80599070212845 ] }, "properties": { "area": 1131.0096435546875, "name": "Houston's", "name_de": "Houston's", "name_en": "Houston's", "name_es": "Houston's", "name_fr": "Houston's" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43417799472809, 37.80141735066961 ] }, "properties": { "area": 1237.8514404296875, "name": "Marina Branch San Francisco Public Library", "name_de": "Marina Branch San Francisco Public Library", "name_en": "Marina Branch San Francisco Public Library", "name_es": "Marina Branch San Francisco Public Library", "name_fr": "Marina Branch San Francisco Public Library" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41409361362457, 37.80616447542192 ] }, "properties": { "area": 3546.529296875, "name": "Best Western Tuscan Inn", "name_de": "Best Western Tuscan Inn", "name_en": "Best Western Tuscan Inn", "name_es": "Best Western Tuscan Inn", "name_fr": "Best Western Tuscan Inn" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42490828037262, 37.80092142807103 ] }, "properties": { "area": 1123.26171875, "name": "Comfort Inn", "name_de": "Comfort Inn", "name_en": "Comfort Inn", "name_es": "Comfort Inn", "name_fr": "Comfort Inn" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41276860237122, 37.80238375437207 ] }, "properties": { "area": 755.2568969726562, "name": "North Beach Branch Library", "name_de": "North Beach Branch Library", "name_en": "North Beach Branch Library", "name_es": "North Beach Branch Library", "name_fr": "North Beach Branch Library" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40642786026001, 37.79746259325332 ] }, "properties": { "area": 382.2843933105469, "name": "Vesuvio", "name_de": "Vesuvio", "name_en": "Vesuvio", "name_es": "Vesuvio", "name_fr": "Vesuvio" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41563320159912, 37.808766787536605 ] }, "properties": { "area": 393.5412902832031, "name": "Boudin", "name_de": "Boudin", "name_en": "Boudin", "name_es": "Boudin", "name_fr": "Boudin" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41489827632904, 37.808533685141974 ] }, "properties": { "area": 2283.5849609375, "name": "Boudin", "name_de": "Boudin", "name_en": "Boudin", "name_es": "Boudin", "name_fr": "Boudin" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41548836231232, 37.80798271292044 ] }, "properties": { "area": 2022.918701171875, "name": "Ripley's Believe it or Not", "name_de": "Ripley's Believe it or Not", "name_en": "Ripley's Believe it or Not", "name_es": "Ripley's Believe it or Not", "name_fr": "Ripley's Believe it or Not" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40637421607971, 37.80851673221186 ] }, "properties": { "area": 24874.34375, "name": "Pier 35", "name_de": "Pier 35", "name_en": "Pier 35", "name_es": "Pier 35", "name_fr": "Pier 35" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40471661090851, 37.80765636589674 ] }, "properties": { "area": 15779.9248046875, "name": "Pier 33", "name_de": "Pier 33", "name_en": "Pier 33", "name_es": "Pier 33", "name_fr": "Pier 33" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41289734840393, 37.8071435319456 ] }, "properties": { "area": 12872.4033203125, "name": "Sheraton Fisherman's Wharf", "name_de": "Sheraton Fisherman's Wharf", "name_en": "Sheraton Fisherman's Wharf", "name_es": "Sheraton Fisherman's Wharf", "name_fr": "Sheraton Fisherman's Wharf" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42696285247803, 37.80784708835846 ] }, "properties": { "area": 983.818603515625, "name": "Salt Water Pumping Station #2", "name_de": "Salt Water Pumping Station #2", "name_en": "Salt Water Pumping Station #2", "name_es": "Salt Water Pumping Station #2", "name_fr": "Salt Water Pumping Station #2" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4093246459961, 37.80878797862691 ] }, "properties": { "area": 2921.8076171875, "name": "Aquarium of the Bay", "name_de": "Aquarium of the Bay", "name_en": "Aquarium of the Bay", "name_es": "Aquarium of the Bay", "name_fr": "Aquarium of the Bay" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41211414337158, 37.80909312965286 ] }, "properties": { "area": 1839.5250244140625, "name": "San Francisco Pier 41", "name_de": "San Francisco Pier 41", "name_en": "San Francisco Pier 41", "name_es": "San Francisco Pier 41", "name_fr": "San Francisco Pier 41" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41834759712219, 37.807393591920395 ] }, "properties": { "area": 3765.9267578125, "name": "Courtyard by Marriott", "name_de": "Courtyard by Marriott", "name_en": "Courtyard by Marriott", "name_es": "Courtyard by Marriott", "name_fr": "Courtyard by Marriott" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42360472679138, 37.79928104498482 ] }, "properties": { "area": 3528.04296875, "name": "Heritage Marina Hotel", "name_de": "Heritage Marina Hotel", "name_en": "Heritage Marina Hotel", "name_es": "Heritage Marina Hotel", "name_fr": "Heritage Marina Hotel" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41784334182739, 37.78583870450334 ] }, "properties": { "area": 1468.395751953125, "name": "Motel 6", "name_de": "Motel 6", "name_en": "Motel 6", "name_es": "Motel 6", "name_fr": "Motel 6" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42006957530975, 37.785592811104635 ] }, "properties": { "area": 888.1964111328125, "name": "Monarch Hotel", "name_de": "Monarch Hotel", "name_en": "Monarch Hotel", "name_es": "Monarch Hotel", "name_fr": "Monarch Hotel" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41901814937592, 37.78530452125047 ] }, "properties": { "area": 4581.5654296875, "name": "Trinity Towers", "name_de": "Trinity Towers", "name_en": "Trinity Towers", "name_es": "Trinity Towers", "name_fr": "Trinity Towers" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41949021816254, 37.78951005001279 ] }, "properties": { "area": 2203.13330078125, "name": "Redding Elementary School", "name_de": "Redding Elementary School", "name_en": "Redding Elementary School", "name_es": "Redding Elementary School", "name_fr": "Redding Elementary School" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41796672344208, 37.78779734339625 ] }, "properties": { "area": 1228.1376953125, "name": "Carlton Hotel", "name_de": "Carlton Hotel", "name_en": "Carlton Hotel", "name_es": "Carlton Hotel", "name_fr": "Carlton Hotel" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4329924583435, 37.790234970806864 ] }, "properties": { "area": 4045.7548828125, "name": "Dental School of the University of the Pacific", "name_de": "Dental School of the University of the Pacific", "name_en": "Dental School of the University of the Pacific", "name_es": "Dental School of the University of the Pacific", "name_fr": "Dental School of the University of the Pacific" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4302351474762, 37.80835991742361 ] }, "properties": { "area": 9903.87109375, "name": "Pier 3 — Festival Pavillion", "name_de": "Pier 3 — Festival Pavillion", "name_en": "Pier 3 — Festival Pavillion", "name_es": "Pier 3 — Festival Pavillion", "name_fr": "Pier 3 — Festival Pavillion" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43137240409851, 37.80821157880392 ] }, "properties": { "area": 7855.970703125, "name": "Pier 2 — Herbst Pavillion", "name_de": "Pier 2 — Herbst Pavillion", "name_en": "Pier 2 — Herbst Pavillion", "name_es": "Pier 2 — Herbst Pavillion", "name_fr": "Pier 2 — Herbst Pavillion" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42568075656891, 37.801569941568545 ] }, "properties": { "area": 2369.4833984375, "name": "Travelodge", "name_de": "Travelodge", "name_en": "Travelodge", "name_es": "Travelodge", "name_fr": "Travelodge" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41723716259003, 37.80567706149055 ] }, "properties": { "area": 4797.96875, "name": "Marriott", "name_de": "Marriott", "name_en": "Marriott", "name_es": "Marriott", "name_fr": "Marriott" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41663634777069, 37.8057194454384 ] }, "properties": { "area": 6233.70751953125, "name": "Hilton San Francisco Fisherman's Wharf", "name_de": "Hilton San Francisco Fisherman's Wharf", "name_en": "Hilton San Francisco Fisherman's Wharf", "name_es": "Hilton San Francisco Fisherman's Wharf", "name_fr": "Hilton San Francisco Fisherman's Wharf" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41614282131195, 37.805855073907956 ] }, "properties": { "area": 6987.13134765625, "name": "Hyatt at Fisherman's Wharf", "name_de": "Hyatt at Fisherman's Wharf", "name_en": "Hyatt at Fisherman's Wharf", "name_es": "Hyatt at Fisherman's Wharf", "name_fr": "Hyatt at Fisherman's Wharf" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4202573299408, 37.807198629978885 ] }, "properties": { "area": 7605.28759765625, "name": "Argonaut Hotel", "name_de": "Argonaut Hotel", "name_en": "Argonaut Hotel", "name_es": "Argonaut Hotel", "name_fr": "Argonaut Hotel" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42389440536499, 37.806423015418865 ] }, "properties": { "area": 1902.082275390625, "name": "National Maritime Museum", "name_de": "National Maritime Museum", "name_en": "National Maritime Museum", "name_es": "National Maritime Museum", "name_fr": "National Maritime Museum" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41769313812256, 37.80653745086623 ] }, "properties": { "area": 7447.5517578125, "name": "Holiday Inn", "name_de": "Holiday Inn", "name_en": "Holiday Inn", "name_es": "Holiday Inn", "name_fr": "Holiday Inn" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40583777427673, 37.80237527720156 ] }, "properties": { "area": 638.9163208007812, "name": "Coit Tower", "name_de": "Coit Tower", "name_en": "Coit Tower", "name_es": "Coit Tower", "name_fr": "Coit Tower" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40650832653046, 37.790001809923794 ] }, "properties": { "area": 10718.5927734375, "name": "Sutter-Stockton Garage", "name_de": "Sutter-Stockton Garage", "name_en": "Sutter-Stockton Garage", "name_es": "Sutter-Stockton Garage", "name_fr": "Sutter-Stockton Garage" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4104243516922, 37.7992301798107 ] }, "properties": { "area": 114.67269897460938, "name": "Northstar Cafe", "name_de": "Northstar Cafe", "name_en": "Northstar Cafe", "name_es": "Northstar Cafe", "name_fr": "Northstar Cafe" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41023123264313, 37.8015996119845 ] }, "properties": { "area": 2652.321533203125, "name": "Saint Peter and Paul Church", "name_de": "Saint Peter and Paul Church", "name_en": "Saint Peter and Paul Church", "name_es": "Saint Peter and Paul Church", "name_fr": "Saint Peter and Paul Church" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40573585033417, 37.800060973268764 ] }, "properties": { "area": 265.8677978515625, "name": "Fog Hill Market", "name_de": "Fog Hill Market", "name_en": "Fog Hill Market", "name_es": "Fog Hill Market", "name_fr": "Fog Hill Market" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40774214267731, 37.7990097636514 ] }, "properties": { "area": 1287.492431640625, "name": "The National Shrine of Saint Francis of Assisi", "name_de": "The National Shrine of Saint Francis of Assisi", "name_en": "The National Shrine of Saint Francis of Assisi", "name_es": "The National Shrine of Saint Francis of Assisi", "name_fr": "The National Shrine of Saint Francis of Assisi" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40420162677765, 37.79519052538833 ] }, "properties": { "area": 4514.34716796875, "name": "Hilton San Francisco Financial District", "name_de": "Hilton San Francisco Financial District", "name_en": "Hilton San Francisco Financial District", "name_es": "Hilton San Francisco Financial District", "name_fr": "Hilton San Francisco Financial District" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40862190723419, 37.78778038570655 ] }, "properties": { "area": 5864.0146484375, "name": "The Westin Saint Francis", "name_de": "The Westin Saint Francis", "name_en": "The Westin Saint Francis", "name_es": "The Westin Saint Francis", "name_fr": "The Westin Saint Francis" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40838050842285, 37.788980132652135 ] }, "properties": { "area": 1684.3642578125, "name": "Sir Francis Drake", "name_de": "Sir Francis Drake", "name_en": "Sir Francis Drake", "name_es": "Sir Francis Drake", "name_fr": "Sir Francis Drake" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40719497203827, 37.78702576457477 ] }, "properties": { "area": 13504.876953125, "name": "Macy's", "name_de": "Macy's", "name_en": "Macy's", "name_es": "Macy's", "name_fr": "Macy's" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40811228752136, 37.78861554730136 ] }, "properties": { "area": 3552.616455078125, "name": "Saks Fifth Avenue", "name_de": "Saks Fifth Avenue", "name_en": "Saks Fifth Avenue", "name_es": "Saks Fifth Avenue", "name_fr": "Saks Fifth Avenue" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40732371807098, 37.788751207176915 ] }, "properties": { "area": 1753.3902587890625, "name": "Levi's Strauss", "name_de": "Levi's Strauss", "name_en": "Levi's Strauss", "name_es": "Levi's Strauss", "name_fr": "Levi's Strauss" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4102795124054, 37.79964557770774 ] }, "properties": { "area": 866.610595703125, "name": "Fugazi Hall", "name_de": "Fugazi Hall", "name_en": "Fugazi Hall", "name_es": "Fugazi Hall", "name_fr": "Fugazi Hall" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40660488605499, 37.797636386612204 ] }, "properties": { "area": 256.4836120605469, "name": "City Lights Bookstore", "name_de": "City Lights Bookstore", "name_en": "City Lights Bookstore", "name_es": "City Lights Bookstore", "name_fr": "City Lights Bookstore" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41349816322327, 37.79182892368188 ] }, "properties": { "area": 4078.9423828125, "name": "Grace Cathedral", "name_de": "Grace Cathedral", "name_en": "Grace Cathedral", "name_es": "Grace Cathedral", "name_fr": "Grace Cathedral" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41298317909241, 37.79119728157595 ] }, "properties": { "area": 7263.853515625, "name": "Masonic Memorial Temple", "name_de": "Masonic Memorial Temple", "name_en": "Masonic Memorial Temple", "name_es": "Masonic Memorial Temple", "name_fr": "Masonic Memorial Temple" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41133630275726, 37.792235884863004 ] }, "properties": { "area": 3000.710205078125, "name": "Pacific Union Club", "name_de": "Pacific Union Club", "name_en": "Pacific Union Club", "name_es": "Pacific Union Club", "name_fr": "Pacific Union Club" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40650832653046, 37.790709768875985 ] }, "properties": { "area": 687.8807373046875, "name": "Notre Dame Des Victoires Church", "name_de": "Notre Dame Des Victoires Church", "name_en": "Notre Dame Des Victoires Church", "name_es": "Notre Dame Des Victoires Church", "name_fr": "Notre Dame Des Victoires Church" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41018831729889, 37.79244360376852 ] }, "properties": { "area": 13559.2392578125, "name": "The Fairmont San Francisco Hotel", "name_de": "The Fairmont San Francisco Hotel", "name_en": "The Fairmont San Francisco Hotel", "name_es": "The Fairmont San Francisco Hotel", "name_fr": "The Fairmont San Francisco Hotel" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41032779216766, 37.7864322369225 ] }, "properties": { "area": 5438.31689453125, "name": "Mason O'Farrell Garage", "name_de": "Mason O'Farrell Garage", "name_en": "Mason O'Farrell Garage", "name_es": "Mason O'Farrell Garage", "name_fr": "Mason O'Farrell Garage" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40706622600555, 37.78607187852223 ] }, "properties": { "area": 4905.40234375, "name": "Ellis O'Farrell Garage", "name_de": "Ellis O'Farrell Garage", "name_en": "Ellis O'Farrell Garage", "name_es": "Ellis O'Farrell Garage", "name_fr": "Ellis O'Farrell Garage" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41019904613495, 37.793126104632066 ] }, "properties": { "area": 2254.120849609375, "name": "Brocklebank Garage", "name_de": "Brocklebank Garage", "name_en": "Brocklebank Garage", "name_es": "Brocklebank Garage", "name_fr": "Brocklebank Garage" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41366982460022, 37.78643647642264 ] }, "properties": { "area": 1744.7864990234375, "name": "Geary Courtyard", "name_de": "Geary Courtyard", "name_en": "Geary Courtyard", "name_es": "Geary Courtyard", "name_fr": "Geary Courtyard" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40530133247375, 37.798251018382 ] }, "properties": { "area": 931.8032836914062, "name": "Green Tortoise Hostel", "name_de": "Green Tortoise Hostel", "name_en": "Green Tortoise Hostel", "name_es": "Green Tortoise Hostel", "name_fr": "Green Tortoise Hostel" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41027414798737, 37.791485548441756 ] }, "properties": { "area": 5916.74169921875, "name": "InterContinental Hotel Mark Hopkins", "name_de": "InterContinental Hotel Mark Hopkins", "name_en": "InterContinental Hotel Mark Hopkins", "name_es": "InterContinental Hotel Mark Hopkins", "name_fr": "InterContinental Hotel Mark Hopkins" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40504920482635, 37.796551231141 ] }, "properties": { "area": 203.70689392089844, "name": "Sentinel Building", "name_de": "Sentinel Building", "name_en": "Sentinel Building", "name_es": "Sentinel Building", "name_fr": "Sentinel Building" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4319839477539, 37.78945493878432 ] }, "properties": { "area": 2216.253662109375, "name": "Temple Sherith Israel", "name_de": "Temple Sherith Israel", "name_en": "Temple Sherith Israel", "name_es": "Temple Sherith Israel", "name_fr": "Temple Sherith Israel" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4357658624649, 37.787008806708016 ] }, "properties": { "area": 2847.9228515625, "name": "Saint Dominics Roman Catholic Church", "name_de": "Saint Dominics Roman Catholic Church", "name_en": "Saint Dominics Roman Catholic Church", "name_es": "Saint Dominics Roman Catholic Church", "name_fr": "Saint Dominics Roman Catholic Church" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43255257606506, 37.784914480246 ] }, "properties": { "area": 4337.994140625, "name": "Sundance Kabuki Theater", "name_de": "Sundance Kabuki Theater", "name_en": "Sundance Kabuki Theater", "name_es": "Sundance Kabuki Theater", "name_fr": "Sundance Kabuki Theater" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40720570087433, 37.78508830312183 ] }, "properties": { "area": 4147.34716796875, "name": "Flood Building", "name_de": "Flood Building", "name_en": "Flood Building", "name_es": "Flood Building", "name_fr": "Flood Building" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40446984767914, 37.790056920744384 ] }, "properties": { "area": 2156.785888671875, "name": "W&J Sloane Building", "name_de": "W&J Sloane Building", "name_en": "W&J Sloane Building", "name_es": "W&J Sloane Building", "name_fr": "W&J Sloane Building" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41510212421417, 37.786707803925296 ] }, "properties": { "area": 652.7189331054688, "name": "601 Leavenworth Street", "name_de": "601 Leavenworth Street", "name_en": "601 Leavenworth Street", "name_es": "601 Leavenworth Street", "name_fr": "601 Leavenworth Street" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40691065788269, 37.78492719900686 ] }, "properties": { "area": 15417.0107421875, "name": "Powell Station", "name_de": "Powell Station", "name_en": "Powell Station", "name_es": "Powell Station", "name_fr": "Powell Station" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40546226501465, 37.786398320912674 ] }, "properties": { "area": 3803.703125, "name": "Phelan Building", "name_de": "Phelan Building", "name_en": "Phelan Building", "name_es": "Phelan Building", "name_fr": "Phelan Building" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41386830806732, 37.78686466468337 ] }, "properties": { "area": 368.9371032714844, "name": "Hotel Adante", "name_de": "Hotel Adante", "name_en": "Hotel Adante", "name_es": "Hotel Adante", "name_fr": "Hotel Adante" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40652441978455, 37.78585990217182 ] }, "properties": { "area": 866.3295288085938, "name": "Apple Store", "name_de": "Apple Store", "name_en": "Apple Store", "name_es": "Apple Store", "name_fr": "Apple Store" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40636885166168, 37.784104714631205 ] }, "properties": { "area": 40016.9453125, "name": "Westfield San Francisco Centre", "name_de": "Westfield San Francisco Centre", "name_en": "Westfield San Francisco Centre", "name_es": "Westfield San Francisco Centre", "name_fr": "Westfield San Francisco Centre" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41469442844391, 37.809084653252505 ] }, "properties": { "area": 1289.7733154296875, "name": "Franciscan", "name_de": "Franciscan", "name_en": "Franciscan", "name_es": "Franciscan", "name_fr": "Franciscan" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42195248603821, 37.78492719900686 ] }, "properties": { "area": 4642.2548828125, "name": "KRON TV", "name_de": "KRON TV", "name_en": "KRON TV", "name_es": "KRON TV", "name_fr": "KRON TV" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43609845638275, 37.79726760509566 ] }, "properties": { "area": 1231.0413818359375, "name": "Metro Theatre", "name_de": "Metro Theatre", "name_en": "Metro Theatre", "name_es": "Metro Theatre", "name_fr": "Metro Theatre" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42194175720215, 37.79833155595906 ] }, "properties": { "area": 1569.696533203125, "name": "Alhambra Theatre", "name_de": "Alhambra Theatre", "name_en": "Alhambra Theatre", "name_es": "Alhambra Theatre", "name_fr": "Alhambra Theatre" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43282616138458, 37.8044521548888 ] }, "properties": { "area": 6547.6796875, "name": "Safeway 1711", "name_de": "Safeway 1711", "name_en": "Safeway 1711", "name_es": "Safeway 1711", "name_fr": "Safeway 1711" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43460714817047, 37.79132869749249 ] }, "properties": { "area": 1204.5052490234375, "name": "Pets Unlimited", "name_de": "Pets Unlimited", "name_en": "Pets Unlimited", "name_es": "Pets Unlimited", "name_fr": "Pets Unlimited" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42153406143188, 37.796373196299385 ] }, "properties": { "area": 1438.6531982421875, "name": "Walgreens", "name_de": "Walgreens", "name_en": "Walgreens", "name_es": "Walgreens", "name_fr": "Walgreens" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42484390735626, 37.805388850000256 ] }, "properties": { "area": 1308.3048095703125, "name": "Fontana West", "name_de": "Fontana West", "name_en": "Fontana West", "name_es": "Fontana West", "name_fr": "Fontana West" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42411971092224, 37.80546937979462 ] }, "properties": { "area": 1163.4339599609375, "name": "Fontana East", "name_de": "Fontana East", "name_en": "Fontana East", "name_es": "Fontana East", "name_fr": "Fontana East" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42282688617706, 37.80618990562568 ] }, "properties": { "area": 1523.4742431640625, "name": "Wurster Building", "name_de": "Wurster Building", "name_en": "Wurster Building", "name_es": "Wurster Building", "name_fr": "Wurster Building" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42120146751404, 37.79483020969929 ] }, "properties": { "area": 2583.54833984375, "name": "Pacific Terrace Apts", "name_de": "Pacific Terrace Apts", "name_en": "Pacific Terrace Apts", "name_es": "Pacific Terrace Apts", "name_fr": "Pacific Terrace Apts" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4330997467041, 37.79711924419614 ] }, "properties": { "area": 1806.2464599609375, "name": "Equinox Gym — Underconstruction", "name_de": "Equinox Gym — Underconstruction", "name_en": "Equinox Gym — Underconstruction", "name_es": "Equinox Gym — Underconstruction", "name_fr": "Equinox Gym — Underconstruction" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42416262626648, 37.802125200234485 ] }, "properties": { "area": 1164.0887451171875, "name": "America's Best Inn", "name_de": "America's Best Inn", "name_en": "America's Best Inn", "name_es": "America's Best Inn", "name_fr": "America's Best Inn" } } ], "name": "building_label" }mapnik-vector-tile-1.6.1/examples/data/14_2620_6331-landuse.geojson000066400000000000000000001624071324304754200243660ustar00rootroot00000000000000{ "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4319839477539, 37.80571096865078 ], [ -122.42571830749512, 37.80571096865078 ], [ -122.42565393447876, 37.80551600226697 ], [ -122.42560029029846, 37.80535070427755 ], [ -122.42535352706909, 37.80424023126987 ], [ -122.4299830198288, 37.80362564933611 ], [ -122.43017077445984, 37.80360021824936 ], [ -122.43147432804108, 37.803417961871325 ], [ -122.43156015872955, 37.80343915449654 ], [ -122.43161916732788, 37.8035154478969 ], [ -122.4317479133606, 37.80416393861819 ], [ -122.43196249008179, 37.8051938827661 ], [ -122.4319839477539, 37.805282889610744 ], [ -122.4319839477539, 37.80571096865078 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4319839477539, 37.803095833219515 ], [ -122.43175864219666, 37.803121264479955 ], [ -122.4314421415329, 37.80152331660511 ], [ -122.4319839477539, 37.80145125978552 ], [ -122.4319839477539, 37.803095833219515 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42932319641113, 37.79213414477786 ], [ -122.42628157138824, 37.79252838682742 ], [ -122.42613136768341, 37.79187555476425 ], [ -122.42593824863434, 37.79100651611991 ], [ -122.42747783660889, 37.79081151092244 ], [ -122.4277514219284, 37.79077759692252 ], [ -122.42899596691132, 37.79059954816758 ], [ -122.42932319641113, 37.79213414477786 ], [ -122.42932319641113, 37.79213414477786 ], [ -122.42932319641113, 37.79213414477786 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4319839477539, 37.79090053509816 ], [ -122.43151724338531, 37.79095988448907 ], [ -122.43156015872955, 37.79118032466647 ], [ -122.4319839477539, 37.79112945391467 ], [ -122.4319839477539, 37.79146011317529 ], [ -122.4314421415329, 37.79152794053307 ], [ -122.43145823478699, 37.79161696384559 ], [ -122.43116855621338, 37.79165511666101 ], [ -122.4310827255249, 37.79122271693289 ], [ -122.43091106414794, 37.79033247423068 ], [ -122.43149042129515, 37.790260406495044 ], [ -122.43138849735259, 37.789734733826435 ], [ -122.43198394775389, 37.78966266550779 ], [ -122.4319839477539, 37.79090053509816 ] ] ] }, "properties": { "class": "hospital" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42114245891571, 37.801731009397635 ], [ -122.41970479488373, 37.80191326993853 ], [ -122.41954922676086, 37.80115455449363 ], [ -122.42052555084229, 37.80103163338067 ], [ -122.42050409317017, 37.80094686008017 ], [ -122.42064356803894, 37.800925666739815 ], [ -122.42063820362092, 37.80090871206316 ], [ -122.42096543312074, 37.80086632535451 ], [ -122.42114245891572, 37.801731009397635 ], [ -122.42114245891572, 37.801731009397635 ], [ -122.42114245891571, 37.801731009397635 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41164743900299, 37.804833615870386 ], [ -122.41093397140504, 37.804918384709836 ], [ -122.41104662418365, 37.80546514138657 ], [ -122.4107998609543, 37.80549481023774 ], [ -122.41079449653627, 37.80545666456976 ], [ -122.41031706333162, 37.80551600226697 ], [ -122.41027951240544, 37.805325273784796 ], [ -122.41057455539708, 37.8052913664475 ], [ -122.41051554679875, 37.80496924596682 ], [ -122.41024196147923, 37.80500315345199 ], [ -122.41019368171696, 37.804740370034615 ], [ -122.41017222404484, 37.80464288562588 ], [ -122.41052091121679, 37.80460050106019 ], [ -122.41076231002813, 37.804570831849745 ], [ -122.41068184375769, 37.804176654065614 ], [ -122.41150259971624, 37.804079168912786 ], [ -122.41164743900305, 37.804833615870386 ], [ -122.41164743900305, 37.804833615870386 ], [ -122.41164743900299, 37.804833615870386 ] ] ] }, "properties": { "class": "school" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41290807723999, 37.80272707895914 ], [ -122.41288125514986, 37.802773703162714 ], [ -122.41208195686342, 37.802871190038694 ], [ -122.41151332855226, 37.802939006920006 ], [ -122.4113577604294, 37.802197256396575 ], [ -122.41207122802736, 37.80211248443386 ], [ -122.4125111103058, 37.80204890539802 ], [ -122.41276860237123, 37.80222692656055 ], [ -122.41264522075654, 37.8022438809346 ], [ -122.4127095937729, 37.80253634327446 ], [ -122.4128705263138, 37.80251938896754 ], [ -122.41290807724, 37.80272707895914 ], [ -122.41290807724, 37.80272707895914 ], [ -122.41290807723999, 37.80272707895914 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41090714931488, 37.80109521329224 ], [ -122.4105316400528, 37.80113759986951 ], [ -122.4101185798645, 37.80119270238364 ], [ -122.4094694852829, 37.80126899810456 ], [ -122.40939438343048, 37.80082393862155 ], [ -122.40934610366821, 37.80052723080971 ], [ -122.40978598594666, 37.80047212779914 ], [ -122.41015613079071, 37.80042550214271 ], [ -122.41033852100372, 37.80055266295457 ], [ -122.41070866584776, 37.80081546127204 ], [ -122.41087496280669, 37.800929905408374 ], [ -122.41090714931487, 37.801095213292214 ], [ -122.41090714931487, 37.801095213292214 ], [ -122.41090714931488, 37.80109521329224 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41770923137665, 37.78950157136492 ], [ -122.41699039936066, 37.78959059711889 ], [ -122.41706550121307, 37.78995941695691 ], [ -122.41631984710693, 37.79005268145195 ], [ -122.41624474525452, 37.78968386207941 ], [ -122.41608917713165, 37.78970081933231 ], [ -122.41601943969727, 37.78934895553718 ], [ -122.41763412952423, 37.789149706621 ], [ -122.41770923137666, 37.78950157136492 ], [ -122.41770923137666, 37.78950157136492 ], [ -122.41770923137665, 37.78950157136492 ] ] ] }, "properties": { "class": "hospital" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42665708065033, 37.79811537594843 ], [ -122.42573440074922, 37.79823406309142 ], [ -122.42558419704437, 37.79749650418472 ], [ -122.4265068769455, 37.7973778158567 ], [ -122.42665708065033, 37.79811537594843 ], [ -122.42665708065033, 37.79811537594843 ], [ -122.42665708065033, 37.79811537594843 ] ] ] }, "properties": { "class": "school" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42506384849548, 37.805024345622336 ], [ -122.4237710237503, 37.805185405918145 ], [ -122.42366909980774, 37.8046810317142 ], [ -122.42496728897095, 37.804519970318424 ], [ -122.42506384849548, 37.805024345622336 ], [ -122.42506384849548, 37.805024345622336 ], [ -122.42506384849548, 37.805024345622336 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42171108722687, 37.804494539539625 ], [ -122.42030024528503, 37.80468950862004 ], [ -122.42020905017854, 37.80425718518177 ], [ -122.42161989212036, 37.80406645344859 ], [ -122.42171108722687, 37.804494539539625 ], [ -122.42171108722687, 37.804494539539625 ], [ -122.42171108722687, 37.804494539539625 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42536962032318, 37.80571096865078 ], [ -122.42524087429045, 37.80518116749381 ], [ -122.42541253566742, 37.80515573694268 ], [ -122.42548763751984, 37.80514726009035 ], [ -122.42561638355255, 37.80571096865078 ], [ -122.42536962032318, 37.80571096865078 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41251111030579, 37.79251143022342 ], [ -122.41223216056824, 37.79254110427786 ], [ -122.41194784641266, 37.792579256616065 ], [ -122.41187810897827, 37.79220621068598 ], [ -122.41180300712585, 37.79182892368188 ], [ -122.4120819568634, 37.79179501014891 ], [ -122.41236627101898, 37.791761096600425 ], [ -122.41243600845337, 37.79213414477786 ], [ -122.41251111030579, 37.79251143022342 ], [ -122.41251111030579, 37.79251143022342 ], [ -122.41251111030579, 37.79251143022342 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.43000447750092, 37.80411307680662 ], [ -122.42921054363251, 37.8042105619147 ], [ -122.42927491664886, 37.804541162627416 ], [ -122.42918372154236, 37.80454963954931 ], [ -122.42912471294403, 37.80422327735411 ], [ -122.42895841598511, 37.80423175431249 ], [ -122.42886185646057, 37.80418089254761 ], [ -122.42895305156708, 37.8041681771009 ], [ -122.42897987365723, 37.80411307680662 ], [ -122.42893159389496, 37.80387995972208 ], [ -122.4299293756485, 37.80375704314487 ], [ -122.42999911308287, 37.804087645887726 ], [ -122.4300044775009, 37.80411307680662 ], [ -122.4300044775009, 37.80411307680662 ], [ -122.43000447750092, 37.80411307680662 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42810547351837, 37.79762790889688 ], [ -122.42732763290407, 37.79772964141673 ], [ -122.42723643779756, 37.79729727723981 ], [ -122.42801427841188, 37.797191305241675 ], [ -122.42810547351837, 37.79762790889688 ], [ -122.42810547351837, 37.79762790889688 ], [ -122.42810547351837, 37.79762790889688 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41376101970673, 37.7984671979957 ], [ -122.4132889509201, 37.798530780114596 ], [ -122.41323530673981, 37.798280690131136 ], [ -122.41308510303496, 37.798297645411004 ], [ -122.41305291652678, 37.79814928658016 ], [ -122.41287052631378, 37.79817471954375 ], [ -122.4128383398056, 37.798030599300965 ], [ -122.4136483669281, 37.797924628354835 ], [ -122.41376101970671, 37.7984671979957 ], [ -122.41376101970671, 37.7984671979957 ], [ -122.41376101970673, 37.7984671979957 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42516577243805, 37.805621962322036 ], [ -122.4248331785202, 37.80566858469807 ], [ -122.42484390735626, 37.80571096865078 ], [ -122.42386221885681, 37.80571096865078 ], [ -122.42383003234863, 37.80553295588602 ], [ -122.42401778697968, 37.80557957831826 ], [ -122.42423236370085, 37.80560077032319 ], [ -122.4244576692581, 37.805609247123456 ], [ -122.42462933063507, 37.80558805512094 ], [ -122.42474734783173, 37.80554143269405 ], [ -122.42495656013489, 37.80546514138659 ], [ -122.42511749267578, 37.805359181106546 ], [ -122.42516577243805, 37.805621962322036 ], [ -122.42516577243805, 37.805621962322036 ], [ -122.42516577243805, 37.805621962322036 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42116391658783, 37.79590691253789 ], [ -122.42097079753877, 37.79593234627349 ], [ -122.42092788219453, 37.79594082418341 ], [ -122.42023050785066, 37.79598321371845 ], [ -122.42017149925233, 37.7956737695535 ], [ -122.42109417915346, 37.795550839320036 ], [ -122.42116391658783, 37.79590691253789 ], [ -122.42116391658783, 37.79590691253789 ], [ -122.42116391658783, 37.79590691253789 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41690456867218, 37.802248119527505 ], [ -122.4164217710495, 37.802303221213165 ], [ -122.4163144826889, 37.801743725263904 ], [ -122.41671681404112, 37.80169710041017 ], [ -122.41668462753294, 37.80151060070086 ], [ -122.41676509380339, 37.80149788479444 ], [ -122.41683483123778, 37.80187936103473 ], [ -122.41686701774596, 37.802036189584236 ], [ -122.41690456867217, 37.802248119527505 ], [ -122.41690456867217, 37.802248119527505 ], [ -122.41690456867218, 37.802248119527505 ] ] ] }, "properties": { "class": "school" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41542935371399, 37.801044349367366 ], [ -122.41481244564055, 37.80112488389887 ], [ -122.41481781005858, 37.801141838525915 ], [ -122.41451203823088, 37.80118422507645 ], [ -122.41447448730467, 37.80100196273655 ], [ -122.4146783351898, 37.80097653074639 ], [ -122.41464614868163, 37.80081122259691 ], [ -122.41535961627956, 37.800722210363176 ], [ -122.41539180278774, 37.800883280040885 ], [ -122.41542935371395, 37.801044349367366 ], [ -122.41542935371395, 37.801044349367366 ], [ -122.41542935371399, 37.801044349367366 ] ] ] }, "properties": { "class": "school" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41217851638794, 37.794355438108134 ], [ -122.41147041320801, 37.79444445801387 ], [ -122.41139531135559, 37.794071421501364 ], [ -122.41210341453552, 37.793982401146124 ], [ -122.41217851638794, 37.794355438108134 ], [ -122.41217851638794, 37.794355438108134 ], [ -122.41217851638794, 37.794355438108134 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41142749786377, 37.79774659682308 ], [ -122.41097688674927, 37.79780170186684 ], [ -122.41096079349518, 37.79772540256451 ], [ -122.41090178489686, 37.797733880268694 ], [ -122.41090714931488, 37.79774659682308 ], [ -122.4107301235199, 37.797767791075536 ], [ -122.4106764793396, 37.797488026453344 ], [ -122.41135776042938, 37.7974032490859 ], [ -122.41142749786377, 37.79774659682308 ], [ -122.41142749786377, 37.79774659682308 ], [ -122.41142749786377, 37.79774659682308 ] ] ] }, "properties": { "class": "school" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42046654224396, 37.80168014591058 ], [ -122.4198228120804, 37.80175644112801 ], [ -122.41976380348207, 37.801451259785495 ], [ -122.42040753364564, 37.801374964252865 ], [ -122.42046654224396, 37.80168014591058 ], [ -122.42046654224396, 37.80168014591058 ], [ -122.42046654224396, 37.80168014591058 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41716206073761, 37.80127747540201 ], [ -122.41673290729523, 37.801336816456995 ], [ -122.41665244102478, 37.800955337414585 ], [ -122.41708695888519, 37.80090023472337 ], [ -122.41716206073761, 37.80127747540201 ], [ -122.41716206073761, 37.80127747540201 ], [ -122.41716206073761, 37.80127747540201 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42874920368195, 37.79171446544581 ], [ -122.42868483066559, 37.79178653176325 ], [ -122.42857754230499, 37.79179501014891 ], [ -122.42848098278046, 37.791778053376625 ], [ -122.42838978767395, 37.79172294383974 ], [ -122.42833077907562, 37.79166783426175 ], [ -122.42823421955109, 37.79163815985659 ], [ -122.42821276187897, 37.791438917113226 ], [ -122.42865264415741, 37.791371089673774 ], [ -122.42874920368195, 37.79171446544578 ], [ -122.42874920368195, 37.79171446544578 ], [ -122.42874920368195, 37.79171446544581 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41181910037994, 37.79257077832038 ], [ -122.41115391254425, 37.79265132209003 ], [ -122.41112172603607, 37.79265556123335 ], [ -122.41106271743774, 37.792350342291314 ], [ -122.4112343788147, 37.79232914648466 ], [ -122.41125047206879, 37.792426647145035 ], [ -122.41133630275726, 37.792418168831844 ], [ -122.41134703159332, 37.792490234462925 ], [ -122.41151869297029, 37.79246903869637 ], [ -122.4115025997162, 37.792392733886466 ], [ -122.41177618503572, 37.79236305977241 ], [ -122.41181910037996, 37.79257077832038 ], [ -122.41181910037996, 37.79257077832038 ], [ -122.41181910037994, 37.79257077832038 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41066038608551, 37.795945063138014 ], [ -122.41011321544649, 37.79601712532894 ], [ -122.41006493568422, 37.79579246061932 ], [ -122.41035461425783, 37.79575430994039 ], [ -122.41032779216768, 37.7956483357289 ], [ -122.41043508052827, 37.79563561881328 ], [ -122.41046726703648, 37.7958009385453 ], [ -122.41062819957737, 37.79577974372853 ], [ -122.41066038608555, 37.795945063138014 ], [ -122.41066038608555, 37.795945063138014 ], [ -122.41066038608551, 37.795945063138014 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42185592651367, 37.7912863052869 ], [ -122.42152333259583, 37.79132869749249 ], [ -122.42145895957947, 37.79098108068856 ], [ -122.42178082466125, 37.79094716676645 ], [ -122.42185592651367, 37.7912863052869 ], [ -122.42185592651367, 37.7912863052869 ], [ -122.42185592651367, 37.7912863052869 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4319839477539, 37.80201499655647 ], [ -122.43191957473755, 37.80173948664206 ], [ -122.4319839477539, 37.801735248019966 ], [ -122.4319839477539, 37.80201499655647 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41780042648315, 37.790845424906784 ], [ -122.41750538349152, 37.79087933887559 ], [ -122.41743564605713, 37.79050628436279 ], [ -122.41772532463074, 37.79046813095418 ], [ -122.41780042648315, 37.790845424906784 ], [ -122.41780042648315, 37.790845424906784 ], [ -122.41780042648315, 37.790845424906784 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.43191957473755, 37.8019810876994 ], [ -122.43156552314758, 37.80202771237386 ], [ -122.43150651454926, 37.801735248019966 ], [ -122.43186056613922, 37.801688623160864 ], [ -122.43191957473755, 37.8019810876994 ], [ -122.43191957473755, 37.8019810876994 ], [ -122.43191957473755, 37.8019810876994 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41805255413055, 37.80307464049579 ], [ -122.41778433322906, 37.80310854885083 ], [ -122.41770923137665, 37.80273555608927 ], [ -122.41797745227812, 37.80270164756298 ], [ -122.41805255413055, 37.80307464049579 ], [ -122.41805255413055, 37.80307464049579 ], [ -122.41805255413055, 37.80307464049579 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41275250911713, 37.80222268796642 ], [ -122.41218388080598, 37.8022905054432 ], [ -122.41214096546175, 37.80210400723224 ], [ -122.41251111030579, 37.80205738260592 ], [ -122.41275250911713, 37.80222268796642 ], [ -122.41275250911713, 37.80222268796642 ], [ -122.41275250911713, 37.80222268796642 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40967869758606, 37.79264284380264 ], [ -122.40942656993866, 37.79267675694643 ], [ -122.40935683250427, 37.79232914648466 ], [ -122.40960896015167, 37.79229523318131 ], [ -122.40967869758606, 37.79264284380264 ], [ -122.40967869758606, 37.79264284380264 ], [ -122.40967869758606, 37.79264284380264 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41040825843811, 37.792562300023725 ], [ -122.41016149520874, 37.79259197405775 ], [ -122.41009175777437, 37.7922486023638 ], [ -122.41033852100372, 37.792218928191865 ], [ -122.41040825843811, 37.792562300023725 ], [ -122.41040825843811, 37.792562300023725 ], [ -122.41040825843811, 37.792562300023725 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4209600687027, 37.79590691253789 ], [ -122.42054164409637, 37.79595778000036 ], [ -122.42050409317017, 37.79576278787075 ], [ -122.42092251777649, 37.79571615924177 ], [ -122.4209600687027, 37.79590691253789 ], [ -122.4209600687027, 37.79590691253789 ], [ -122.4209600687027, 37.79590691253789 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42153406143188, 37.795313456221336 ], [ -122.4210673570633, 37.79537280206753 ], [ -122.4210298061371, 37.79520748137745 ], [ -122.42150187492372, 37.79514813539847 ], [ -122.4215340614319, 37.795313456221336 ], [ -122.4215340614319, 37.795313456221336 ], [ -122.42153406143188, 37.795313456221336 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42172718048096, 37.79624178935534 ], [ -122.42129802703856, 37.79629689552161 ], [ -122.42126584053038, 37.796135815843115 ], [ -122.42169499397278, 37.79608070955667 ], [ -122.42172718048096, 37.79624178935534 ], [ -122.42172718048096, 37.79624178935534 ], [ -122.42172718048096, 37.79624178935534 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42262303829193, 37.79298197454004 ], [ -122.42223680019379, 37.79302436577279 ], [ -122.42219924926758, 37.792846322431856 ], [ -122.42258548736572, 37.79279969196215 ], [ -122.42262303829193, 37.79298197454004 ], [ -122.42262303829193, 37.79298197454004 ], [ -122.42262303829193, 37.79298197454004 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41158306598663, 37.789298083524535 ], [ -122.41139531135559, 37.78931928020073 ], [ -122.4113255739212, 37.788954696523255 ], [ -122.41151332855225, 37.78892926038561 ], [ -122.41158306598663, 37.789298083524535 ], [ -122.41158306598663, 37.789298083524535 ], [ -122.41158306598663, 37.789298083524535 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41376101970673, 37.79134989358618 ], [ -122.41350889205933, 37.79138380732341 ], [ -122.41345524787903, 37.79112521468376 ], [ -122.41370737552643, 37.79109130082786 ], [ -122.41376101970673, 37.79134989358618 ], [ -122.41376101970673, 37.79134989358618 ], [ -122.41376101970673, 37.79134989358618 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41763949394226, 37.7965088419319 ], [ -122.41729080677032, 37.796551231141 ], [ -122.41728007793425, 37.79654699222118 ], [ -122.41726934909819, 37.79653851438082 ], [ -122.41723716259001, 37.79639015201707 ], [ -122.417414188385, 37.79636895736935 ], [ -122.4174517393112, 37.796377435229154 ], [ -122.41751074790953, 37.796373196299385 ], [ -122.41754293441771, 37.796373196299385 ], [ -122.41756439208983, 37.79636471843907 ], [ -122.4175590276718, 37.79635624057777 ], [ -122.41754829883574, 37.796347762715534 ], [ -122.41754829883574, 37.79633928485233 ], [ -122.41759657859801, 37.796335045920344 ], [ -122.41763949394225, 37.7965088419319 ], [ -122.41763949394225, 37.7965088419319 ], [ -122.41763949394226, 37.7965088419319 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41129338741302, 37.79200273029387 ], [ -122.41126656532289, 37.79200696947442 ], [ -122.41127729415895, 37.79206207879947 ], [ -122.41118609905244, 37.79207479633018 ], [ -122.41120219230652, 37.79215534064047 ], [ -122.41101980209352, 37.792176536497024 ], [ -122.41097688674928, 37.791943381740616 ], [ -122.41127729415895, 37.7919094682602 ], [ -122.41129338741302, 37.79200273029387 ], [ -122.41129338741302, 37.79200273029387 ], [ -122.41129338741302, 37.79200273029387 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4095606803894, 37.79934462640321 ], [ -122.40938901901244, 37.79937005895526 ], [ -122.40933001041412, 37.7990140024299 ], [ -122.40948557853699, 37.79899280853499 ], [ -122.4095606803894, 37.79934462640321 ], [ -122.4095606803894, 37.79934462640321 ], [ -122.4095606803894, 37.79934462640321 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4204021692276, 37.80135377103535 ], [ -122.42003202438356, 37.80139615746429 ], [ -122.41999983787538, 37.80124356620636 ], [ -122.42037534713747, 37.801196941036885 ], [ -122.4204021692276, 37.80135377103535 ], [ -122.4204021692276, 37.80135377103535 ], [ -122.4204021692276, 37.80135377103535 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41294026374817, 37.79792038951381 ], [ -122.41275787353517, 37.79794158371643 ], [ -122.41269886493684, 37.79762790889688 ], [ -122.41287589073183, 37.79760671460429 ], [ -122.41294026374818, 37.79792038951381 ], [ -122.41294026374818, 37.79792038951381 ], [ -122.41294026374817, 37.79792038951381 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41159915924072, 37.80099772407214 ], [ -122.41147577762604, 37.801010440064665 ], [ -122.41144895553589, 37.801010440064665 ], [ -122.41142749786377, 37.80099772407214 ], [ -122.41119146347046, 37.800828177295934 ], [ -122.41154551506042, 37.80078155186425 ], [ -122.41159915924074, 37.80099772407214 ], [ -122.41159915924074, 37.80099772407214 ], [ -122.41159915924072, 37.80099772407214 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42728471755981, 37.791472830809646 ], [ -122.42710769176483, 37.79150250528121 ], [ -122.42704331874846, 37.791235434608055 ], [ -122.42722570896147, 37.791209999255514 ], [ -122.4272847175598, 37.791472830809646 ], [ -122.4272847175598, 37.791472830809646 ], [ -122.42728471755981, 37.791472830809646 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4319839477539, 37.80223116515443 ], [ -122.43179082870483, 37.802256596712596 ], [ -122.43173718452454, 37.8020107579502 ], [ -122.43193030357361, 37.80198532630738 ], [ -122.4319839477539, 37.80222268796642 ], [ -122.4319839477539, 37.80223116515443 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41171717643738, 37.79201544783479 ], [ -122.41146504878998, 37.792045122088425 ], [ -122.41145431995392, 37.791985773569245 ], [ -122.41140067577362, 37.79199425193203 ], [ -122.4113792181015, 37.791896750701035 ], [ -122.4116849899292, 37.79186283719924 ], [ -122.41171717643738, 37.79201544783479 ], [ -122.41171717643738, 37.79201544783479 ], [ -122.41171717643738, 37.79201544783479 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41252183914185, 37.79150674449044 ], [ -122.41246283054352, 37.79151522290824 ], [ -122.41231799125673, 37.790769118420094 ], [ -122.41237163543703, 37.79076063991673 ], [ -122.41237699985504, 37.790769118420094 ], [ -122.41252183914185, 37.79150674449044 ], [ -122.41252183914185, 37.79150674449044 ], [ -122.41252183914185, 37.79150674449044 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4193400144577, 37.79765334203998 ], [ -122.41887867450714, 37.797708447153305 ], [ -122.41886794567108, 37.79764062546953 ], [ -122.41913080215454, 37.79761095346328 ], [ -122.41912543773653, 37.79756856486228 ], [ -122.41931855678558, 37.79754737055262 ], [ -122.4193400144577, 37.79765334203998 ], [ -122.4193400144577, 37.79765334203998 ], [ -122.4193400144577, 37.79765334203998 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41430819034576, 37.788954696523255 ], [ -122.41419553756714, 37.78896741458879 ], [ -122.41413116455078, 37.788619786676236 ], [ -122.41423845291138, 37.78860706855088 ], [ -122.41430819034576, 37.788954696523255 ], [ -122.41430819034576, 37.788954696523255 ], [ -122.41430819034576, 37.788954696523255 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42697358131409, 37.79151946211675 ], [ -122.42681801319122, 37.7915364189484 ], [ -122.42677509784698, 37.79130750139274 ], [ -122.42693603038788, 37.79129054450855 ], [ -122.42697358131409, 37.79151946211675 ], [ -122.42697358131409, 37.79151946211675 ], [ -122.42697358131409, 37.79151946211675 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41545081138611, 37.80435043162762 ], [ -122.41518259048462, 37.804380100926586 ], [ -122.41515576839447, 37.80424446974821 ], [ -122.41542935371399, 37.80421480039474 ], [ -122.41545081138612, 37.80435043162762 ], [ -122.41545081138612, 37.80435043162762 ], [ -122.41545081138611, 37.80435043162762 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42048799991608, 37.7959196294068 ], [ -122.42023587226866, 37.79594930209237 ], [ -122.42020905017853, 37.79580941647031 ], [ -122.42046117782593, 37.79577974372853 ], [ -122.42048799991608, 37.7959196294068 ], [ -122.42048799991608, 37.7959196294068 ], [ -122.42048799991608, 37.7959196294068 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41200685501099, 37.80282032733683 ], [ -122.41185665130614, 37.802837281574696 ], [ -122.41180837154388, 37.80260839903546 ], [ -122.41196393966675, 37.80258720617189 ], [ -122.41200685501099, 37.80282032733683 ], [ -122.41200685501099, 37.80282032733683 ], [ -122.41200685501099, 37.80282032733683 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42590069770813, 37.80571096865078 ], [ -122.42591142654419, 37.80569401507261 ], [ -122.4259865283966, 37.80571096865078 ], [ -122.42590069770813, 37.80571096865078 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41053700447083, 37.8046979855249 ], [ -122.41019368171692, 37.804740370034615 ], [ -122.4101722240448, 37.80464288562588 ], [ -122.41052091121674, 37.80460050106022 ], [ -122.41053700447083, 37.8046979855249 ], [ -122.41053700447083, 37.8046979855249 ], [ -122.41053700447083, 37.8046979855249 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41080522537231, 37.80058657246742 ], [ -122.41049945354462, 37.800374637756676 ], [ -122.41076231002808, 37.80034072814651 ], [ -122.41080522537231, 37.80058657246742 ], [ -122.41080522537231, 37.80058657246742 ], [ -122.41080522537231, 37.80058657246742 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40996837615967, 37.799874469428296 ], [ -122.40988254547119, 37.799887185614196 ], [ -122.4098128080368, 37.79951417658475 ], [ -122.40989863872528, 37.79950569908492 ], [ -122.40996837615967, 37.799874469428296 ], [ -122.40996837615967, 37.799874469428296 ], [ -122.40996837615967, 37.799874469428296 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4247795343399, 37.800222044388384 ], [ -122.42465615272522, 37.80023899922264 ], [ -122.42461323738098, 37.80002282479424 ], [ -122.4247419834137, 37.800010108631696 ], [ -122.4247795343399, 37.800222044388384 ], [ -122.4247795343399, 37.800222044388384 ], [ -122.4247795343399, 37.800222044388384 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41234481334686, 37.80255753615264 ], [ -122.41221606731415, 37.80257449045081 ], [ -122.41217851638794, 37.80236256144402 ], [ -122.41230189800262, 37.80234560709723 ], [ -122.41234481334686, 37.80255753615264 ], [ -122.41234481334686, 37.80255753615264 ], [ -122.41234481334686, 37.80255753615264 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42111027240753, 37.795843328160586 ], [ -122.42098689079285, 37.79585604504041 ], [ -122.42094397544861, 37.7956483357289 ], [ -122.4210673570633, 37.79563137984094 ], [ -122.42111027240753, 37.795843328160586 ], [ -122.42111027240753, 37.795843328160586 ], [ -122.42111027240753, 37.795843328160586 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41250574588776, 37.80253634327446 ], [ -122.41238772869109, 37.80255329757749 ], [ -122.41234481334685, 37.802341368509886 ], [ -122.41246819496153, 37.80232865274652 ], [ -122.41250574588774, 37.80253634327446 ], [ -122.41250574588774, 37.80253634327446 ], [ -122.41250574588776, 37.80253634327446 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41267204284668, 37.8025151503902 ], [ -122.412548661232, 37.80253210469809 ], [ -122.41251111030579, 37.802324414158235 ], [ -122.41262912750244, 37.80230745980266 ], [ -122.4126720428467, 37.8025151503902 ], [ -122.4126720428467, 37.8025151503902 ], [ -122.41267204284668, 37.8025151503902 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41079986095428, 37.80098500807743 ], [ -122.41079449653625, 37.801010440064665 ], [ -122.4107837677002, 37.80103163338067 ], [ -122.41076767444612, 37.801044349367366 ], [ -122.41074085235597, 37.80105706535187 ], [ -122.41070866584779, 37.801061304012876 ], [ -122.41067647933961, 37.80105706535187 ], [ -122.41064429283144, 37.801044349367366 ], [ -122.41062283515932, 37.801023156054995 ], [ -122.41061747074129, 37.80099772407214 ], [ -122.41061747074129, 37.80097229208053 ], [ -122.41062819957735, 37.80095957608142 ], [ -122.41064429283144, 37.800938382744725 ], [ -122.41068720817567, 37.80088751871187 ], [ -122.41076231002809, 37.80093414407668 ], [ -122.41078913211824, 37.80095957608142 ], [ -122.4107998609543, 37.80098500807743 ], [ -122.4107998609543, 37.80098500807743 ], [ -122.41079986095428, 37.80098500807743 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41297245025635, 37.797076855312966 ], [ -122.4128383398056, 37.79709381086916 ], [ -122.41280615329742, 37.796958166310716 ], [ -122.41294026374817, 37.79694121072341 ], [ -122.41297245025635, 37.797076855312966 ], [ -122.41297245025635, 37.797076855312966 ], [ -122.41297245025635, 37.797076855312966 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42043435573578, 37.79577126580011 ], [ -122.42023050785066, 37.795796699582425 ], [ -122.42021441459657, 37.79571615924177 ], [ -122.4204182624817, 37.79569072543175 ], [ -122.42043435573578, 37.79577126580011 ], [ -122.42043435573578, 37.79577126580011 ], [ -122.42043435573578, 37.79577126580011 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41240918636322, 37.792426647145035 ], [ -122.41225898265839, 37.79244360376852 ], [ -122.41224825382233, 37.792380016410455 ], [ -122.41239845752716, 37.79235882061229 ], [ -122.41240918636322, 37.792426647145035 ], [ -122.41240918636322, 37.792426647145035 ], [ -122.41240918636322, 37.792426647145035 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.412189245224, 37.79245208207878 ], [ -122.4120444059372, 37.7924732778502 ], [ -122.41202831268312, 37.79240969051768 ], [ -122.41217851638795, 37.792392733886466 ], [ -122.41218924522401, 37.79245208207878 ], [ -122.41218924522401, 37.79245208207878 ], [ -122.412189245224, 37.79245208207878 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41280615329742, 37.80271860182807 ], [ -122.41275787353516, 37.80272284039373 ], [ -122.41272568702698, 37.80254058185058 ], [ -122.41276860237122, 37.80253634327446 ], [ -122.41280615329742, 37.80271860182807 ], [ -122.41280615329742, 37.80271860182807 ], [ -122.41280615329742, 37.80271860182807 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41285979747772, 37.802710124696034 ], [ -122.41281151771545, 37.80271860182807 ], [ -122.41277933120728, 37.80253634327446 ], [ -122.41282224655151, 37.80253210469809 ], [ -122.41285979747772, 37.802710124696034 ], [ -122.41285979747772, 37.802710124696034 ], [ -122.41285979747772, 37.802710124696034 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41219460964203, 37.791985773569245 ], [ -122.41214632987976, 37.79199425193205 ], [ -122.41214096546175, 37.79197305602321 ], [ -122.412189245224, 37.79196881684073 ], [ -122.41219460964203, 37.791985773569245 ], [ -122.41219460964203, 37.791985773569245 ], [ -122.41219460964203, 37.791985773569245 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41209805011749, 37.79199849111309 ], [ -122.41204977035524, 37.79200273029387 ], [ -122.41204440593721, 37.791981534387475 ], [ -122.41209268569948, 37.79197729520547 ], [ -122.41209805011749, 37.79199849111309 ], [ -122.41209805011749, 37.79199849111309 ], [ -122.41209805011749, 37.79199849111309 ] ] ] }, "properties": { "class": "park" } } ], "name": "landuse" }mapnik-vector-tile-1.6.1/examples/data/14_2620_6331-rail_station_label.geojson000066400000000000000000000030651324304754200265540ustar00rootroot00000000000000{ "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40694284439087, 37.78496111569185 ] }, "properties": { "class": "light", "group": "name", "name": "Powell Muni", "name_de": "Powell Muni", "name_en": "Powell Muni", "name_es": "Powell Muni", "name_fr": "Powell Muni", "network": "light" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40691065788269, 37.78493143859335 ] }, "properties": { "class": "light", "group": "name", "name": "Powell", "name_de": "Powell", "name_en": "Powell", "name_es": "Powell", "name_fr": "Powell", "network": "light" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40694284439087, 37.78496111569185 ] }, "properties": { "class": "light", "group": "network", "name": "Powell Muni", "name_de": "Powell Muni", "name_en": "Powell Muni", "name_es": "Powell Muni", "name_fr": "Powell Muni", "network": "light" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40691065788269, 37.78493143859335 ] }, "properties": { "class": "light", "group": "network", "name": "Powell", "name_de": "Powell", "name_en": "Powell", "name_es": "Powell", "name_fr": "Powell", "network": "light" } } ], "name": "rail_station_label" }mapnik-vector-tile-1.6.1/examples/data/14_2620_6331-road.geojson000066400000000000000000011676261324304754200236710ustar00rootroot00000000000000{ "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41441011428833, 37.79789071761994 ] }, "properties": { "class": "turning_circle" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42340624332428, 37.801023156054995 ] }, "properties": { "class": "turning_circle" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4150002002716, 37.80457507030913 ], [ -122.41506457328796, 37.80485056964608 ], [ -122.41512894630434, 37.805248982254014 ] ] }, "properties": { "class": "street_limited", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40991473197937, 37.79367718768535 ], [ -122.40993618965149, 37.793804360113924 ] ] }, "properties": { "class": "street_limited", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41068184375763, 37.79168903025815 ], [ -122.41062283515932, 37.79175685740575 ], [ -122.41042435169221, 37.791778053376625 ], [ -122.41041898727418, 37.79173566142882 ], [ -122.41057991981508, 37.79156185418857 ], [ -122.41064429283146, 37.791553375776175 ], [ -122.41065502166752, 37.791553375776175 ], [ -122.41068184375764, 37.79168903025815 ], [ -122.41068184375764, 37.79168903025815 ], [ -122.41068184375763, 37.79168903025815 ] ] ] }, "properties": { "class": "street_limited", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41658806800842, 37.79902671876394 ], [ -122.41568148136139, 37.79914540444266 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41773068904877, 37.799874469428296 ], [ -122.41826176643372, 37.799781217331464 ], [ -122.41855680942535, 37.799743068712466 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41544544696808, 37.79176533579482 ], [ -122.41552591323853, 37.7921807756676 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42077767848969, 37.79047660949114 ], [ -122.42078840732574, 37.790531719957585 ], [ -122.42080450057983, 37.79061226595001 ], [ -122.4208152294159, 37.790671615572435 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41262376308441, 37.80209976863108 ], [ -122.41266667842865, 37.80205738260592 ], [ -122.41273105144501, 37.80200228073689 ], [ -122.4127846956253, 37.80195565604636 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43091642856598, 37.79113369314532 ], [ -122.4315655231476, 37.79104466925053 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41214096546173, 37.80220573358751 ], [ -122.4121570587158, 37.80230322121314 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4129992723465, 37.80210400723224 ], [ -122.41295099258423, 37.8020743370189 ], [ -122.41288125514986, 37.8020234737683 ], [ -122.41286516189577, 37.80201499655647 ], [ -122.41278469562532, 37.80195565604636 ], [ -122.41270422935487, 37.801904792714005 ], [ -122.41265594959263, 37.801866645191794 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41209268569946, 37.8019810876994 ], [ -122.41214096546173, 37.80220573358751 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41576731204987, 37.78929384418857 ], [ -122.41574585437775, 37.78917938202556 ], [ -122.41569757461548, 37.7889504571676 ], [ -122.4157726764679, 37.78894197845551 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41216778755188, 37.792227406527935 ], [ -122.412189245224, 37.79222316736003 ], [ -122.41219997406006, 37.7922146890235 ], [ -122.41221070289612, 37.79220621068598 ], [ -122.41222143173218, 37.792197732347496 ], [ -122.41222679615021, 37.792185014837955 ], [ -122.41222679615021, 37.792172297326196 ], [ -122.41222679615021, 37.79215957981227 ], [ -122.41222143173218, 37.79214262312365 ], [ -122.41221070289612, 37.79212990560461 ], [ -122.41219997406006, 37.79212142725738 ], [ -122.412189245224, 37.79211718808339 ], [ -122.41217315196992, 37.79211294890915 ], [ -122.41215705871583, 37.79210870973468 ], [ -122.41214632987977, 37.79210870973468 ], [ -122.41212487220766, 37.79211294890915 ], [ -122.41210877895357, 37.79212142725738 ], [ -122.4120980501175, 37.79212990560461 ], [ -122.4120926856995, 37.79213838395086 ], [ -122.41208195686345, 37.79215534064047 ], [ -122.41208195686345, 37.792163818983845 ], [ -122.41208195686345, 37.7921807756676 ], [ -122.41208732128145, 37.79219349317789 ], [ -122.4120980501175, 37.79220621068598 ], [ -122.41210877895357, 37.7922146890235 ], [ -122.41212487220766, 37.79222316736003 ], [ -122.41213560104372, 37.79222316736003 ], [ -122.4121516942978, 37.792227406527935 ], [ -122.41216778755188, 37.792227406527935 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41856217384338, 37.80407916891281 ], [ -122.41857290267944, 37.80414274620098 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42814838886261, 37.791498266071706 ], [ -122.42822349071504, 37.7918458804425 ], [ -122.42822349071504, 37.791985773569245 ], [ -122.42816984653473, 37.79221044985483 ], [ -122.42812693119049, 37.79226979819359 ], [ -122.4280893802643, 37.792392733886466 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41522550582886, 37.799687965116924 ], [ -122.41532742977142, 37.80016694115013 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41021513938904, 37.80060776590507 ], [ -122.4101722240448, 37.800637436707525 ], [ -122.41009175777435, 37.8006331980222 ], [ -122.41001665592194, 37.80061200459185 ], [ -122.4099415540695, 37.80055690164453 ], [ -122.40989327430725, 37.8005357081923 ], [ -122.40979135036469, 37.80053994688323 ], [ -122.40966796875, 37.80055690164453 ], [ -122.40963578224182, 37.80056961771293 ], [ -122.4095606803894, 37.800620481964714 ], [ -122.40952849388123, 37.80065015276208 ], [ -122.40950167179108, 37.80067982354754 ], [ -122.40945875644684, 37.800760358476495 ], [ -122.40945339202881, 37.80081969994693 ], [ -122.40945875644684, 37.800849370664245 ], [ -122.40948021411896, 37.80095109874748 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43000447750092, 37.80373585061088 ], [ -122.4299830198288, 37.80362564933614 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40948021411896, 37.80095109874748 ], [ -122.40954995155334, 37.80103163338067 ], [ -122.40965187549591, 37.80109097463317 ], [ -122.40977525711058, 37.80112064524154 ], [ -122.4098879098892, 37.80112064524154 ], [ -122.41000592708588, 37.80112064524154 ], [ -122.41010248661041, 37.801116406583915 ], [ -122.41011857986449, 37.80119270238364 ], [ -122.41014003753662, 37.80128171405037 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41630375385284, 37.8038630057236 ], [ -122.41663098335266, 37.80382062071034 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41010248661041, 37.801116406583915 ], [ -122.41012394428253, 37.80107825865449 ], [ -122.41018295288086, 37.801023156054995 ], [ -122.41027414798735, 37.80096805341439 ], [ -122.4103707075119, 37.80097653074639 ], [ -122.41045653820038, 37.80099772407214 ], [ -122.41050481796265, 37.80103163338067 ], [ -122.41052627563477, 37.8010824973143 ], [ -122.41053164005278, 37.80113759986951 ], [ -122.41054773330687, 37.80123085025394 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41392731666565, 37.798958898290465 ], [ -122.41461396217346, 37.798891077754746 ], [ -122.41466760635376, 37.79884021231206 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41780042648315, 37.801256282156544 ], [ -122.41832077503204, 37.80117998642249 ], [ -122.41840660572053, 37.801196941036885 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41903424263, 37.80279489597278 ], [ -122.41907715797424, 37.80301530083702 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41468906402588, 37.799276806221656 ], [ -122.41402924060822, 37.79937005895526 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41283297538757, 37.7980772264691 ], [ -122.41373419761658, 37.797950061395746 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43018686771393, 37.803684988504514 ], [ -122.43017077445985, 37.803600218249386 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42754757404327, 37.79150250528121 ], [ -122.42752611637115, 37.79141348183073 ], [ -122.42750465869904, 37.79135413280419 ], [ -122.42748320102692, 37.79133293671171 ], [ -122.42748856544493, 37.79126086995186 ], [ -122.42749929428099, 37.791171846210275 ], [ -122.42747247219086, 37.791095540060674 ], [ -122.42748320102692, 37.79098955916663 ], [ -122.42747783660889, 37.79081151092244 ], [ -122.42745101451874, 37.79066737631527 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42038607597351, 37.801035872043144 ], [ -122.42086350917816, 37.800993485407474 ], [ -122.42109417915344, 37.800938382744725 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4287760257721, 37.7914261994731 ], [ -122.428759932518, 37.79132869749249 ], [ -122.42874383926393, 37.791235434608055 ], [ -122.42871701717378, 37.79109130082786 ], [ -122.42874920368196, 37.79090477434197 ], [ -122.42887258529665, 37.79072672589345 ], [ -122.42901742458345, 37.79055715554363 ], [ -122.42909252643587, 37.79045965241627 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41243064403534, 37.799764262392124 ], [ -122.41245210170746, 37.79976002365667 ], [ -122.41256475448608, 37.79976002365667 ], [ -122.41301000118256, 37.7996922038565 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42600798606873, 37.79188403313969 ], [ -122.42613136768341, 37.79187555476423 ], [ -122.42628157138824, 37.791837402062676 ], [ -122.42637276649475, 37.791807727725605 ], [ -122.42647469043732, 37.79176957498901 ], [ -122.42660343647003, 37.79170598705089 ], [ -122.4267429113388, 37.791650877460256 ], [ -122.42686092853548, 37.79163815985657 ], [ -122.42695212364197, 37.79163815985657 ], [ -122.42705941200258, 37.79162544225071 ], [ -122.4271720647812, 37.79162120304828 ], [ -122.4272793531418, 37.79158728941997 ], [ -122.4273866415024, 37.791549136569564 ], [ -122.42754757404332, 37.79150250528116 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42009103298187, 37.795987452670616 ], [ -122.4197906255722, 37.79603408112835 ], [ -122.41968333721161, 37.79604679797535 ], [ -122.4194473028183, 37.796084948503236 ], [ -122.41934537887575, 37.796097665341506 ], [ -122.41930246353151, 37.796097665341506 ], [ -122.41927027702332, 37.79609342639566 ], [ -122.4192649126053, 37.796072231662805 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42216169834137, 37.80196413326501 ], [ -122.42217779159546, 37.80193446299548 ], [ -122.42214024066925, 37.80175220250688 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41555273532867, 37.79338469026892 ], [ -122.41562247276306, 37.79369414402182 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42816984653473, 37.792210449854856 ], [ -122.42798745632172, 37.79224012403017 ], [ -122.4276602268219, 37.792282515688555 ], [ -122.426598072052, 37.792422407988575 ], [ -122.42638885974884, 37.792439364613 ], [ -122.42636740207672, 37.79232490732258 ], [ -122.4263834953308, 37.79226979819359 ], [ -122.42645323276518, 37.792227406527935 ], [ -122.42648541927336, 37.792176536497024 ], [ -122.42650151252745, 37.79211294890915 ], [ -122.42651224136351, 37.791990012750766 ], [ -122.42651760578151, 37.7919094682602 ], [ -122.42651760578151, 37.79181620610884 ], [ -122.42647469043727, 37.79176957498901 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41297245025635, 37.79691577733512 ], [ -122.41272032260893, 37.79694121072341 ], [ -122.41269886493681, 37.79691577733512 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43190348148346, 37.801569941568545 ], [ -122.43186056613922, 37.801374964252865 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43188202381134, 37.80324842065075 ], [ -122.43183374404907, 37.803028016482195 ], [ -122.43186056613922, 37.802909337042074 ], [ -122.43186056613922, 37.80279913453407 ], [ -122.43186056613922, 37.802663500452326 ], [ -122.43184983730316, 37.80251938896754 ], [ -122.43177473545074, 37.80245157170093 ], [ -122.43168890476227, 37.80239223154159 ], [ -122.43162453174591, 37.802379515786946 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43184983730316, 37.80251938896754 ], [ -122.43188202381134, 37.802413424461115 ], [ -122.43186593055727, 37.80231169839192 ], [ -122.43175327777864, 37.8022438809346 ], [ -122.43167817592622, 37.80231169839192 ], [ -122.43162453174591, 37.802379515786946 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43186593055725, 37.80231169839192 ], [ -122.43193566799162, 37.80226507389672 ], [ -122.43198394775389, 37.8022438809346 ], [ -122.43198394775389, 37.80212096163453 ], [ -122.43197858333588, 37.80209976863108 ], [ -122.43189275264739, 37.801667430033376 ], [ -122.43190348148345, 37.801569941568545 ], [ -122.43198394775389, 37.801569941568545 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43175327777863, 37.8022438809346 ], [ -122.43165135383606, 37.80216758622069 ], [ -122.43153870105743, 37.80209553002967 ], [ -122.4314421415329, 37.80209553002967 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43175327777863, 37.8022438809346 ], [ -122.43171036243439, 37.80201923516251 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42945194244385, 37.792218928191865 ], [ -122.42922127246857, 37.7921087097347 ], [ -122.42913544178008, 37.792049361266564 ], [ -122.42907106876372, 37.79200696947442 ], [ -122.4289584159851, 37.79188827232706 ], [ -122.42882966995238, 37.79171446544581 ], [ -122.42877602577208, 37.79142619947307 ], [ -122.42927491664885, 37.79134141514943 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42907106876373, 37.79200696947442 ], [ -122.42879211902618, 37.79199849111306 ], [ -122.42856681346895, 37.79202816537352 ], [ -122.42836296558382, 37.79208751385868 ], [ -122.42816984653474, 37.792210449854856 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42887258529663, 37.79072672589345 ], [ -122.42870092391968, 37.790786075423945 ], [ -122.42849171161652, 37.79083694641218 ], [ -122.42823421955109, 37.79085390340045 ], [ -122.42795526981354, 37.79083694641218 ], [ -122.42765486240387, 37.79074792215984 ], [ -122.42754757404327, 37.79065889780023 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41269886493683, 37.79691577733512 ], [ -122.41260766983032, 37.79691577733512 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41510212421417, 37.79343132036943 ], [ -122.41517186164856, 37.793770447487695 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40998446941376, 37.79419435419653 ], [ -122.40990400314332, 37.793808599191095 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41517186164856, 37.793770447487695 ], [ -122.41522014141083, 37.79402903086939 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41222143173218, 37.79248175615706 ], [ -122.41243064403534, 37.79245208207878 ], [ -122.41237163543703, 37.79214262312365 ], [ -122.41230726242067, 37.79184164125269 ], [ -122.41209805011749, 37.79186707638781 ], [ -122.41188883781433, 37.79189251151417 ], [ -122.41194784641266, 37.792197732347496 ], [ -122.41201221942902, 37.7925071910718 ], [ -122.41222143173218, 37.79248175615706 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41255939006805, 37.79211718808339 ], [ -122.41243600845337, 37.79213414477786 ], [ -122.41237163543701, 37.79214262312365 ], [ -122.41222679615021, 37.79215957981227 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4120819568634, 37.7921807756676 ], [ -122.41194784641266, 37.792197732347496 ], [ -122.41187810897827, 37.79220621068598 ], [ -122.41181910037996, 37.792210449854856 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4122428894043, 37.79259197405775 ], [ -122.41223216056824, 37.79254110427786 ], [ -122.41222143173218, 37.79248175615703 ], [ -122.41216778755188, 37.79222740652791 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41214632987976, 37.7921087097347 ], [ -122.41212487220764, 37.79200273029387 ], [ -122.41211950778961, 37.79196457765796 ], [ -122.41209805011749, 37.79186707638783 ], [ -122.41208195686342, 37.79179501014891 ], [ -122.4120604991913, 37.791684791059375 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41223216056824, 37.791990012750766 ], [ -122.41212487220764, 37.79200273029387 ], [ -122.41201758384705, 37.79201544783479 ], [ -122.41200685501099, 37.79201544783479 ], [ -122.41200149059296, 37.79201120865472 ], [ -122.41199612617494, 37.79201120865472 ], [ -122.41199076175691, 37.79200273029387 ], [ -122.41199076175691, 37.79199849111309 ], [ -122.41199076175691, 37.791990012750766 ], [ -122.41199612617494, 37.791985773569245 ], [ -122.41199612617494, 37.791981534387475 ], [ -122.412006855011, 37.79197729520547 ], [ -122.41211950778961, 37.79196457765796 ], [ -122.41222143173218, 37.79195186010829 ], [ -122.41223216056824, 37.79195186010829 ], [ -122.4122428894043, 37.79195186010829 ], [ -122.41225361824036, 37.79196033847499 ], [ -122.41225361824036, 37.79196457765796 ], [ -122.41225898265839, 37.79197305602321 ], [ -122.41225361824036, 37.79197729520547 ], [ -122.41224825382234, 37.791985773569245 ], [ -122.41223752498628, 37.791990012750766 ], [ -122.41223216056825, 37.791990012750766 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41318702697754, 37.797742357971856 ], [ -122.41366982460022, 37.79767029746383 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41283297538757, 37.7980772264691 ], [ -122.41287052631378, 37.79842480988598 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41753220558167, 37.79990837925248 ], [ -122.41773068904877, 37.799874469428296 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42162525653839, 37.804036784023594 ], [ -122.42172718048096, 37.80449030107562 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43004739284515, 37.8056431543148 ], [ -122.42999911308289, 37.80569401507263 ], [ -122.42997229099275, 37.80571096865078 ], [ -122.42945194244386, 37.80571096865078 ], [ -122.42941975593568, 37.80567282309445 ], [ -122.42938220500947, 37.80561348552322 ], [ -122.42934465408327, 37.8055202406721 ], [ -122.42931783199315, 37.805473618202406 ], [ -122.42921590805058, 37.805397326824874 ], [ -122.42914080619816, 37.805325273784824 ], [ -122.4290978908539, 37.805274412773024 ], [ -122.42907106876378, 37.80522355172624 ], [ -122.42905497550969, 37.80516845221935 ], [ -122.42905497550969, 37.805104875814145 ], [ -122.42906033992772, 37.805041299354215 ], [ -122.42908179759984, 37.80496924596682 ], [ -122.42912471294407, 37.804905669390145 ], [ -122.42916762828831, 37.80485056964608 ], [ -122.42921054363255, 37.80481242364534 ], [ -122.42927491664891, 37.80477427762488 ], [ -122.4293285608292, 37.80475732383168 ], [ -122.42970407009129, 37.80471070088035 ], [ -122.42973625659948, 37.80481666209083 ], [ -122.42973625659948, 37.80486328497526 ], [ -122.42971479892736, 37.804909907830286 ], [ -122.42968797683722, 37.804952292218374 ], [ -122.429650425911, 37.80499043814688 ], [ -122.42957532405859, 37.80504553778657 ], [ -122.42956459522253, 37.805075206806336 ], [ -122.42956459522253, 37.805104875814145 ], [ -122.42954313755041, 37.8051260679553 ], [ -122.42952704429632, 37.80514726009035 ], [ -122.42952167987832, 37.805189644342235 ], [ -122.42952167987832, 37.80528288961077 ], [ -122.42951631546029, 37.805325273784796 ], [ -122.42950022220622, 37.805367657934546 ], [ -122.42946803569802, 37.805405803648476 ], [ -122.42941975593577, 37.805435472523484 ], [ -122.4293178319932, 37.805473618202406 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43154406547546, 37.805087922096874 ], [ -122.43141531944273, 37.80505825308222 ], [ -122.43129730224608, 37.80502010718875 ], [ -122.4311739206314, 37.80496924596682 ], [ -122.43113100528716, 37.80493957690451 ], [ -122.43109881877898, 37.804905669390145 ], [ -122.43107736110686, 37.80485056964608 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43102371692657, 37.805189644342235 ], [ -122.43106126785277, 37.80513878323706 ], [ -122.4311739206314, 37.80496924596682 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43117392063141, 37.80496924596682 ], [ -122.43137240409851, 37.80468950862004 ], [ -122.4314421415329, 37.804592024144156 ], [ -122.43147432804108, 37.804524208780705 ], [ -122.4314957857132, 37.804456393354975 ], [ -122.43150115013123, 37.8044012932757 ], [ -122.4314957857132, 37.80432076231669 ], [ -122.43146896362305, 37.80415546165202 ], [ -122.43146359920503, 37.8040876458877 ], [ -122.43147432804109, 37.804036784023594 ], [ -122.43149042129518, 37.80399016061739 ], [ -122.43152260780336, 37.80395201417221 ], [ -122.43157088756561, 37.80390962921005 ], [ -122.43159234523773, 37.803888436719845 ], [ -122.43160843849182, 37.80385876722335 ], [ -122.43161916732788, 37.80381214370476 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42163062095642, 37.80375280463857 ], [ -122.42167890071869, 37.80377823567278 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41783261299133, 37.79839937700852 ], [ -122.41792917251588, 37.79886564503779 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42038607597351, 37.801035872043144 ], [ -122.41945266723633, 37.801146077182054 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41840660572052, 37.804083407400384 ], [ -122.41833150386809, 37.804087645887726 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42214024066925, 37.80175220250688 ], [ -122.42212414741518, 37.801658952780684 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41309583187103, 37.80243885595654 ], [ -122.41294026374817, 37.802332891334544 ], [ -122.41286516189575, 37.80227778967103 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41478562355042, 37.80023052180601 ], [ -122.41487681865692, 37.80067982354754 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41537570953369, 37.80438433939691 ], [ -122.41515576839447, 37.80440553174483 ], [ -122.4151396751404, 37.80428685451822 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41539180278778, 37.80452844724276 ], [ -122.41518259048462, 37.80454963954931 ], [ -122.4152684211731, 37.80499043814688 ], [ -122.4153220653534, 37.80521507488171 ], [ -122.41533815860748, 37.80533798903228 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41480708122253, 37.80460050106022 ], [ -122.41500020027159, 37.80457507030913 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41505920886993, 37.80378671268225 ], [ -122.41509675979614, 37.80374008911817 ], [ -122.41515040397644, 37.803668034461275 ], [ -122.41518259048462, 37.80362141082225 ], [ -122.41506457328796, 37.80352392493655 ], [ -122.41496801376341, 37.803464585638736 ], [ -122.41484463214873, 37.80337981513064 ], [ -122.41472125053406, 37.80330352159015 ], [ -122.41469442844391, 37.8033586224884 ], [ -122.41467297077179, 37.80340100776679 ], [ -122.4146568775177, 37.80343915449654 ], [ -122.41464078426363, 37.80348153972872 ], [ -122.4147266149521, 37.80356631012008 ], [ -122.41478562355043, 37.80362988784974 ], [ -122.41483390331268, 37.80365955743819 ], [ -122.41488218307495, 37.803680749994065 ], [ -122.41491973400116, 37.80370194254389 ], [ -122.41493582725523, 37.80371465807083 ], [ -122.41505920886992, 37.80378671268225 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41532742977142, 37.80016694115013 ], [ -122.41478562355042, 37.80023052180601 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42172718048096, 37.80449030107562 ], [ -122.42174863815308, 37.80457507030913 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4150002002716, 37.80457507030913 ], [ -122.41498410701753, 37.80449030107562 ], [ -122.41497337818147, 37.80442672408664 ], [ -122.41504311561584, 37.80441824715063 ], [ -122.41505920886993, 37.80441824715063 ], [ -122.41508066654205, 37.804414008682265 ], [ -122.41515576839447, 37.804405531744806 ], [ -122.41516649723053, 37.804469108752045 ], [ -122.41518259048462, 37.80454963954928 ], [ -122.4151074886322, 37.8045623549303 ], [ -122.41507530212402, 37.8045623549303 ], [ -122.41500020027159, 37.80457507030913 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43011176586151, 37.80407493042498 ], [ -122.42999911308289, 37.804087645887726 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.428759932518, 37.79132869749249 ], [ -122.42813766002655, 37.7914177210451 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41857290267944, 37.80414274620096 ], [ -122.4184763431549, 37.804151223168596 ], [ -122.41840660572052, 37.804083407400384 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4244737625122, 37.80537613476155 ], [ -122.42456495761871, 37.8053464658627 ], [ -122.4246346950531, 37.805278651192005 ], [ -122.42461860179901, 37.80516845221932 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42451667785645, 37.80558805512094 ], [ -122.4244737625122, 37.80537613476155 ], [ -122.42437183856964, 37.805367657934546 ], [ -122.4242752790451, 37.805321035368515 ], [ -122.42425918579102, 37.80521507488171 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4263083934784, 37.7925071910718 ], [ -122.42615282535553, 37.79263860465855 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42638885974884, 37.792439364613 ], [ -122.42630839347841, 37.7925071910718 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41417407989502, 37.795618662922415 ], [ -122.4142438173294, 37.79597897476603 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41027414798737, 37.80278641884947 ], [ -122.41032242774963, 37.8030322550301 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41961896419525, 37.80192598577343 ], [ -122.41951704025269, 37.801930224384584 ], [ -122.41949021816255, 37.80194294021658 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41512894630432, 37.805248982254014 ], [ -122.41524159908295, 37.80541851888209 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43004739284515, 37.8056431543148 ], [ -122.43003129959106, 37.805702491862185 ], [ -122.43003129959106, 37.80571096865078 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41906106472015, 37.80216758622069 ], [ -122.41952776908875, 37.80210400723224 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41949021816254, 37.80194294021658 ], [ -122.41932928562163, 37.80196837187395 ], [ -122.41912007331847, 37.801989564915125 ], [ -122.41905570030211, 37.80200651934365 ], [ -122.41879284381865, 37.80202771237386 ], [ -122.41868019104002, 37.802053144002095 ], [ -122.41857826709746, 37.80204890539802 ], [ -122.41846561431883, 37.80206585981292 ], [ -122.41836369037628, 37.802091291428006 ], [ -122.41819202899931, 37.802091291428006 ], [ -122.41804718971251, 37.80212943883419 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42557346820831, 37.80453268570453 ], [ -122.42551982402802, 37.80428685451822 ], [ -122.42547690868378, 37.80410459983463 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41000592708588, 37.794313047639136 ], [ -122.40998446941376, 37.79419435419653 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40935146808624, 37.80424446974821 ], [ -122.40944802761078, 37.80471070088038 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4218076467514, 37.8026635004523 ], [ -122.42229580879211, 37.80259144474508 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41891086101532, 37.80217606341504 ], [ -122.41887331008911, 37.802171824817975 ], [ -122.41884648799898, 37.802171824817975 ], [ -122.4188143014908, 37.80218030201184 ], [ -122.41876602172853, 37.80219301780076 ], [ -122.418669462204, 37.80220997218259 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41906106472015, 37.80216758622069 ], [ -122.41894841194154, 37.80218877920469 ], [ -122.41891086101533, 37.80217606341504 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4196457862854, 37.8020743370189 ], [ -122.41957068443298, 37.80208705282608 ], [ -122.41952776908873, 37.80210400723224 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41811692714691, 37.802256596712596 ], [ -122.41799890995026, 37.80227778967103 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42765486240387, 37.79074792215982 ], [ -122.427858710289, 37.79084966415375 ], [ -122.42799818515778, 37.79097684144913 ], [ -122.42810010910034, 37.791231195383254 ], [ -122.42813766002655, 37.7914177210451 ], [ -122.42814838886261, 37.791498266071706 ], [ -122.42796063423157, 37.79151098369947 ], [ -122.42777287960052, 37.79151522290824 ], [ -122.42754757404327, 37.79150250528121 ], [ -122.42765486240387, 37.791672073461534 ], [ -122.42769777774811, 37.79178653176325 ], [ -122.42775678634644, 37.791930664187284 ], [ -122.42778360843658, 37.79203240455262 ], [ -122.42775678634644, 37.79208751385868 ], [ -122.42770314216614, 37.792146862296164 ], [ -122.42767095565796, 37.79219349317789 ], [ -122.4276602268219, 37.792282515688555 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42874383926392, 37.791235434608055 ], [ -122.42826640605927, 37.791078583127835 ], [ -122.42799818515778, 37.79097684144913 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40990400314331, 37.793554254129674 ], [ -122.40993082523345, 37.79366447043045 ], [ -122.40991473197937, 37.79366447043045 ], [ -122.40991473197937, 37.79367718768535 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41866946220398, 37.80220997218259 ], [ -122.41864264011383, 37.80220997218259 ], [ -122.4186158180237, 37.80220997218259 ], [ -122.41857826709749, 37.802214210777436 ], [ -122.41839051246644, 37.802248119527505 ], [ -122.41828858852388, 37.802239642341455 ], [ -122.41811692714693, 37.802256596712596 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41481244564056, 37.80571096865078 ], [ -122.41476953029633, 37.805473618202406 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43019223213196, 37.80427413908977 ], [ -122.4299830198288, 37.80431652384273 ], [ -122.42989182472229, 37.80434619315537 ], [ -122.4298220872879, 37.80438433939691 ], [ -122.42977917194366, 37.80442672408664 ], [ -122.42974162101746, 37.804473347217254 ], [ -122.42972016334534, 37.804524208780705 ], [ -122.42970407009126, 37.80456659339016 ], [ -122.4296933412552, 37.804613216432486 ], [ -122.4296933412552, 37.804659839445364 ], [ -122.42970407009126, 37.8047107008804 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42911398410797, 37.80571096865078 ], [ -122.42910861968996, 37.805689776677475 ], [ -122.42907643318178, 37.80564739271261 ], [ -122.42903351783752, 37.80561772392273 ], [ -122.42897987365723, 37.805609247123456 ], [ -122.42892086505891, 37.805609247123456 ], [ -122.42864191532136, 37.80565163111018 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43102371692657, 37.805189644342235 ], [ -122.43092179298401, 37.805248982254014 ], [ -122.4308305978775, 37.80529136644753 ], [ -122.43074476718903, 37.805325273784824 ], [ -122.43059456348419, 37.80538037317473 ], [ -122.43046045303345, 37.80541851888209 ], [ -122.43028342723846, 37.805460902978304 ], [ -122.43019223213196, 37.805499048644094 ], [ -122.4301278591156, 37.80554143269408 ], [ -122.43007957935333, 37.805592293521954 ], [ -122.43004739284515, 37.8056431543148 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43106126785278, 37.80513878323706 ], [ -122.43108808994293, 37.805075206806336 ], [ -122.43109881877899, 37.80502858405566 ], [ -122.4310827255249, 37.80488447718576 ], [ -122.43107736110689, 37.80485056964608 ], [ -122.43106663227083, 37.80479546986089 ], [ -122.43105053901674, 37.80470222397696 ], [ -122.43102371692659, 37.804617454889396 ], [ -122.43099153041841, 37.804541162627416 ], [ -122.43094861507417, 37.804473347217225 ], [ -122.43090569972993, 37.80442248561876 ], [ -122.43083059787752, 37.8043673855142 ], [ -122.4307554960251, 37.80432500079042 ], [ -122.43066966533662, 37.80429109299386 ], [ -122.43057847023012, 37.804269900613114 ], [ -122.43048727512361, 37.80425718518177 ], [ -122.4303960800171, 37.80425718518177 ], [ -122.43029415607454, 37.80426566213625 ], [ -122.430192232132, 37.80427413908975 ], [ -122.43017077445988, 37.80418089254759 ], [ -122.43014395236973, 37.80412579226278 ], [ -122.43011176586155, 37.80407493042495 ], [ -122.43007421493535, 37.80396472965613 ], [ -122.43005812168127, 37.8039053907125 ], [ -122.4300473928452, 37.803846051721194 ], [ -122.4300473928452, 37.80379518969071 ], [ -122.43006885051733, 37.80376552015676 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43154406547546, 37.805087922096874 ], [ -122.4313884973526, 37.805087922096874 ], [ -122.4312973022461, 37.805096398955996 ], [ -122.43121147155762, 37.80510911424287 ], [ -122.43112564086914, 37.805134544810045 ], [ -122.43102371692657, 37.80518964434226 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4319839477539, 37.805079445236736 ], [ -122.43185520172119, 37.805092160526534 ], [ -122.43172109127045, 37.805096398955996 ], [ -122.43162989616394, 37.805096398955996 ], [ -122.43154406547546, 37.805087922096874 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43155479431152, 37.80349001677221 ], [ -122.4315869808197, 37.80351968641686 ], [ -122.43160843849182, 37.803557833085314 ], [ -122.43161916732788, 37.80360869527926 ], [ -122.43161916732788, 37.80381214370479 ], [ -122.43163526058197, 37.80399016061739 ], [ -122.43164062499999, 37.8040706919369 ], [ -122.43165671825408, 37.80415546165205 ], [ -122.4316835403442, 37.8042402312699 ], [ -122.43175327777858, 37.8044521548888 ], [ -122.43176937103267, 37.804519970318424 ], [ -122.43178546428675, 37.80459626260232 ], [ -122.43180155754084, 37.80479970830737 ], [ -122.4318122863769, 37.804876000302286 ], [ -122.43185520172113, 37.805092160526534 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4318015575409, 37.80339676924003 ], [ -122.43173718452454, 37.80339676924003 ], [ -122.43167281150818, 37.80339676924003 ], [ -122.43163526058197, 37.80343067744717 ], [ -122.43155479431154, 37.80349001677224 ], [ -122.4315118789673, 37.80347730120659 ], [ -122.43145823478699, 37.80348153972872 ], [ -122.43106663227083, 37.80357902567038 ], [ -122.43097007274629, 37.803600218249386 ], [ -122.43087351322174, 37.80361293379386 ], [ -122.4307769536972, 37.80362564933614 ], [ -122.43068039417267, 37.803629887849716 ], [ -122.43046045303345, 37.803634126363086 ], [ -122.4303638935089, 37.80363836487621 ], [ -122.4302726984024, 37.80365531892627 ], [ -122.43018686771391, 37.803684988504514 ], [ -122.43012249469756, 37.803727373595606 ], [ -122.43006885051726, 37.80376552015679 ], [ -122.4300044775009, 37.803735850610906 ], [ -122.42991864681242, 37.80374432762523 ], [ -122.42897450923918, 37.80386300572362 ], [ -122.42893159389494, 37.803807905201644 ], [ -122.4284380674362, 37.803846051721244 ], [ -122.42814302444454, 37.8038799597221 ], [ -122.42796599864955, 37.803909629210104 ], [ -122.4277567863464, 37.80393082169422 ], [ -122.42747247219081, 37.80397744513788 ], [ -122.42731690406795, 37.80399863760256 ], [ -122.42724716663356, 37.80400711458672 ], [ -122.42726325988765, 37.804045261003424 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41528987884521, 37.79770420829989 ], [ -122.41531670093536, 37.79772540256451 ], [ -122.41532742977142, 37.79777202992531 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41532742977142, 37.79777202992531 ], [ -122.41539716720581, 37.7977593133753 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4153220653534, 37.79785680686951 ], [ -122.41533815860748, 37.7978228961035 ], [ -122.41532742977142, 37.79777202992529 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41373419761658, 37.797950061395746 ], [ -122.41385757923126, 37.79793310603611 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41385757923126, 37.79793310603611 ], [ -122.41391122341156, 37.79790343414736 ], [ -122.41397023200987, 37.798026360466025 ], [ -122.4139755964279, 37.798026360466025 ], [ -122.41396486759184, 37.79792462835481 ], [ -122.41401851177214, 37.797950061395746 ], [ -122.41400778293608, 37.79789071761994 ], [ -122.41404533386229, 37.797831373796456 ], [ -122.41413116455077, 37.797844090334074 ], [ -122.41431891918181, 37.79781865725665 ], [ -122.41441011428832, 37.79789071761994 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41467833518982, 37.79712348308311 ], [ -122.41463005542757, 37.796877627236306 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41751611232758, 37.796292656587205 ], [ -122.41753220558167, 37.796335045920344 ], [ -122.41754293441772, 37.79635624057777 ], [ -122.4175375699997, 37.79636471843907 ], [ -122.41744101047516, 37.796373196299385 ], [ -122.41743564605713, 37.796381674158695 ], [ -122.41745173931122, 37.79640286880277 ], [ -122.41745710372923, 37.796407107730865 ], [ -122.4174302816391, 37.79643678022064 ], [ -122.41740882396698, 37.79643678022064 ], [ -122.41738736629486, 37.796441019146776 ], [ -122.41736054420471, 37.79645373592373 ], [ -122.41732835769653, 37.79646645269848 ], [ -122.41731226444244, 37.79646645269848 ], [ -122.41728007793427, 37.7964622137738 ], [ -122.41726398468019, 37.7964622137738 ], [ -122.4171942472458, 37.796470691622936 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41804718971252, 37.80212943883419 ], [ -122.41797745227814, 37.80213791603292 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41064429283142, 37.80085360933718 ], [ -122.41050481796265, 37.80103163338067 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4103707075119, 37.80097653074639 ], [ -122.41038680076598, 37.80095957608142 ], [ -122.41045117378233, 37.80087056402646 ], [ -122.41048872470854, 37.800794267894 ], [ -122.41045653820036, 37.8007434037619 ], [ -122.41038680076598, 37.80067982354751 ], [ -122.41033315658568, 37.80065439144644 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41077303886414, 37.800756119798216 ], [ -122.41070866584778, 37.80081546127204 ], [ -122.41064429283142, 37.80085360933718 ], [ -122.41048872470856, 37.800794267894 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40945339202881, 37.80081969994693 ], [ -122.4093943834305, 37.80082393862155 ], [ -122.40933001041412, 37.800832415970085 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40965187549591, 37.80109097463317 ], [ -122.40958750247955, 37.801150315837965 ], [ -122.40934610366821, 37.80118422507647 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41038680076599, 37.80048484388214 ], [ -122.41021513938904, 37.80060776590507 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40952849388123, 37.80065015276208 ], [ -122.40937292575836, 37.80054842426436 ], [ -122.40933001041412, 37.80055266295457 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41032242774963, 37.8030322550301 ], [ -122.41034924983978, 37.80316364989455 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40966796875, 37.80055690164453 ], [ -122.40964114665985, 37.8003915925559 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40989327430725, 37.8005357081923 ], [ -122.40986108779907, 37.80036192165469 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4101722240448, 37.800637436707525 ], [ -122.41033315658571, 37.80065439144644 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41495192050934, 37.804299569944476 ], [ -122.41497337818146, 37.80442672408664 ], [ -122.41477489471436, 37.8044521548888 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43187129497528, 37.80557533991654 ], [ -122.4318391084671, 37.805664346301484 ], [ -122.43183374404907, 37.80571096865078 ] ] }, "properties": { "class": "driveway", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43166208267212, 37.80569401507261 ], [ -122.43181228637695, 37.80561348552322 ], [ -122.43187129497528, 37.80557533991654 ], [ -122.43192493915558, 37.80554143269405 ], [ -122.4319839477539, 37.80552871748163 ] ] }, "properties": { "class": "driveway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4319839477539, 37.805354942692176 ], [ -122.43160843849182, 37.80541428047113 ], [ -122.43166208267212, 37.80569401507263 ] ] }, "properties": { "class": "driveway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.431640625, 37.80571096865078 ], [ -122.43166208267212, 37.80569401507261 ] ] }, "properties": { "class": "driveway", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42909789085388, 37.80413850771679 ], [ -122.42989182472229, 37.804032545533346 ], [ -122.42985427379608, 37.8038502902222 ], [ -122.42905497550966, 37.80395201417224 ], [ -122.4290978908539, 37.80413850771679 ] ] }, "properties": { "class": "driveway", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4319839477539, 37.80440553174483 ], [ -122.43190348148346, 37.80441824715063 ] ] }, "properties": { "class": "driveway", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42891013622284, 37.80412155377767 ], [ -122.42909789085388, 37.80413850771679 ] ] }, "properties": { "class": "driveway", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41190493106842, 37.79716163305497 ], [ -122.41179764270782, 37.79717434970787 ] ] }, "properties": { "class": "driveway", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42909789085388, 37.80413850771679 ], [ -122.42909252643585, 37.804176654065614 ], [ -122.42914080619812, 37.8044394394888 ], [ -122.42914080619812, 37.804519970318424 ], [ -122.42916762828827, 37.80471070088035 ], [ -122.42916762828827, 37.80472341623366 ], [ -122.42916226387024, 37.804740370034615 ], [ -122.42915153503418, 37.804753085382806 ], [ -122.42913007736206, 37.804761562280376 ], [ -122.42908716201782, 37.80477003917697 ], [ -122.42867410182953, 37.80481666209083 ] ] }, "properties": { "class": "driveway", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41176009178162, 37.78815345398132 ], [ -122.41239309310913, 37.78807290530868 ], [ -122.4127846956253, 37.78802627182651 ], [ -122.41341233253479, 37.78794572301525 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4176824092865, 37.79235034229134 ], [ -122.41856753826141, 37.79224012403017 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41113245487213, 37.79338469026892 ], [ -122.41172790527344, 37.79331262551028 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41234481334686, 37.79532193420228 ], [ -122.41251647472383, 37.796152771615276 ], [ -122.41254329681396, 37.79619516102869 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41099834442139, 37.79083694641218 ], [ -122.41109490394592, 37.79129902295112 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40936756134033, 37.795686486462564 ], [ -122.40933001041412, 37.79549997157738 ] ] }, "properties": { "class": "service", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41076231002808, 37.79153217974085 ], [ -122.41120755672455, 37.791477070020576 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42177546024323, 37.7880177930084 ], [ -122.42021441459656, 37.788225523771885 ], [ -122.41856217384338, 37.78843325395139 ] ] }, "properties": { "class": "service", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41860508918762, 37.79269371351246 ], [ -122.41868555545807, 37.79304980050072 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41052627563477, 37.79644949699833 ], [ -122.41059064865114, 37.79676317682161 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41070866584778, 37.79344403766446 ], [ -122.41113245487213, 37.79338469026892 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41090714931488, 37.79639862987445 ], [ -122.4110358953476, 37.79703870529732 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41694211959839, 37.79707261642332 ], [ -122.41699039936066, 37.797051421971396 ], [ -122.41747856140137, 37.79699207747368 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41233944892883, 37.787814301082065 ], [ -122.41239309310913, 37.78807290530868 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4155580997467, 37.80395201417224 ], [ -122.41566002368927, 37.803913867707394 ], [ -122.41600334644318, 37.80387148272332 ], [ -122.41630375385284, 37.8038630057236 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41245746612549, 37.80182425903287 ], [ -122.41245746612549, 37.80170133903446 ], [ -122.41232335567474, 37.801010440064665 ] ] }, "properties": { "class": "service", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40956604480743, 37.79566105264231 ], [ -122.40965187549591, 37.796089187449574 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41671681404114, 37.7959238683626 ], [ -122.41722106933595, 37.79586028399988 ], [ -122.41834223270416, 37.79571192027404 ], [ -122.41835832595825, 37.79571192027404 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41281688213348, 37.79616124949991 ], [ -122.41297245025635, 37.79691577733512 ], [ -122.41301000118254, 37.79711500530891 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41254329681396, 37.79619516102869 ], [ -122.41257011890411, 37.796233311479945 ], [ -122.41269886493683, 37.79691577733512 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41274178028107, 37.787814301082065 ], [ -122.4127846956253, 37.78802627182651 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41160452365875, 37.80204466679365 ], [ -122.41145968437195, 37.801336816456995 ], [ -122.41146504878998, 37.801294429994016 ], [ -122.41149723529816, 37.80124780485665 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.80472341623366 ], [ -122.40944802761078, 37.80471070088035 ], [ -122.41004884243011, 37.80463864717042 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41596579551697, 37.790205295826226 ], [ -122.41598188877106, 37.79030279928923 ], [ -122.41601407527924, 37.79045965241627 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40965723991394, 37.79847143680532 ], [ -122.40974843502045, 37.798937704379746 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41183519363403, 37.79505911634061 ], [ -122.41189956665039, 37.795381280041674 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42660343647003, 37.79479205852346 ], [ -122.42711842060089, 37.79471999513757 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41010785102844, 37.801862406576994 ], [ -122.41053700447083, 37.80181578179817 ], [ -122.41060674190521, 37.802171824817975 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42193639278412, 37.788000835369274 ], [ -122.42345988750458, 37.787814301082065 ] ] }, "properties": { "class": "service", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42008566856384, 37.804235992791284 ], [ -122.421555519104, 37.804049499492926 ], [ -122.42162525653839, 37.804036784023594 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41185665130615, 37.799806649733185 ], [ -122.41239309310913, 37.799721875026755 ], [ -122.41241991519928, 37.79971763628886 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42914080619812, 37.8044394394888 ], [ -122.42867946624756, 37.804494539539625 ], [ -122.42865800857544, 37.80449877800336 ], [ -122.42864191532135, 37.80450301646686 ], [ -122.42863118648529, 37.80451149339313 ], [ -122.42862582206726, 37.804524208780705 ], [ -122.42862045764925, 37.804541162627416 ], [ -122.42862045764925, 37.804553878009884 ], [ -122.42867410182954, 37.80481666209083 ], [ -122.42869555950166, 37.80493957690451 ], [ -122.42869555950166, 37.80496500753008 ], [ -122.42869019508363, 37.804986199711365 ], [ -122.42867946624757, 37.805011630320884 ], [ -122.42866337299351, 37.80503282248878 ], [ -122.42863655090336, 37.80504977621872 ], [ -122.42860436439518, 37.80506249151361 ], [ -122.428572177887, 37.80507096837568 ], [ -122.42850780487065, 37.805087922096874 ], [ -122.4282342195511, 37.8051557369427 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41337478160858, 37.80440977021365 ], [ -122.4150002002716, 37.80420632343443 ], [ -122.4150162935257, 37.80420632343443 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41643249988556, 37.79112097545263 ], [ -122.41645932197571, 37.791231195383254 ], [ -122.41652369499207, 37.79152794053307 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41141676902771, 37.78853499913242 ], [ -122.41181910037994, 37.78848412655941 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41173326969147, 37.79017986011907 ], [ -122.41215705871582, 37.7901247493902 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4110895395279, 37.7931769740092 ], [ -122.4116849899292, 37.793100669930396 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4105155467987, 37.80505401465057 ], [ -122.41059601306915, 37.80546090297828 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4167650938034, 37.787869413534104 ], [ -122.41664707660675, 37.78788637120338 ], [ -122.41648614406584, 37.787903328868786 ], [ -122.4164968729019, 37.78797115949147 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4219685792923, 37.78896741458879 ], [ -122.42040216922759, 37.78916666399649 ], [ -122.41875529289244, 37.7893786308617 ] ] }, "properties": { "class": "service", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41070866584778, 37.78848412655941 ], [ -122.41016685962677, 37.78855195664898 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40972697734833, 37.79749226531914 ], [ -122.40989863872528, 37.79844176513279 ] ] }, "properties": { "class": "service", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.79899280853499 ], [ -122.40974843502045, 37.79893770437972 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40944802761078, 37.80471070088035 ], [ -122.40954458713531, 37.80517692906923 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42369055747986, 37.78874696780958 ], [ -122.42212414741516, 37.78894197845551 ] ] }, "properties": { "class": "service", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41753220558167, 37.79464369265235 ], [ -122.41761803627014, 37.795093028375305 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40985572338104, 37.80371041956209 ], [ -122.41029024124146, 37.80365955743819 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41145968437195, 37.79920898597781 ], [ -122.41166353225708, 37.80014574758602 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40968406200409, 37.796983599684395 ], [ -122.41016685962677, 37.79692001623378 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41692066192627, 37.795220198366735 ], [ -122.41700112819672, 37.79563561881328 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41054773330688, 37.79464369265235 ], [ -122.41046726703644, 37.79427065714581 ], [ -122.4103707075119, 37.793808599191095 ], [ -122.41036534309387, 37.7937492520884 ], [ -122.4102795124054, 37.79330838640464 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42140531539917, 37.794147724577606 ], [ -122.42158770561217, 37.795029443297494 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42948412895203, 37.80073492640316 ], [ -122.4295002222061, 37.80080698392156 ], [ -122.42967188358307, 37.801654714153955 ], [ -122.42985963821411, 37.80258296759842 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42784261703491, 37.800942621412574 ], [ -122.42782652378084, 37.80084513199108 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4311363697052, 37.80052299211805 ], [ -122.43115246295928, 37.80059928853073 ], [ -122.43122220039366, 37.80098500807743 ], [ -122.43131339550017, 37.801447021146885 ], [ -122.43144214153288, 37.802095530029646 ], [ -122.43150115013121, 37.802379515786946 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42946803569794, 37.800637436707525 ], [ -122.42948412895203, 37.80073492640316 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43112027645111, 37.80042974083997 ], [ -122.4311363697052, 37.80052299211805 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4249941110611, 37.8031975582087 ], [ -122.42656588554382, 37.80299834664004 ], [ -122.42821276187898, 37.80279489597278 ], [ -122.42985963821413, 37.80258296759842 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42387294769287, 37.797615192322034 ], [ -122.42543935775757, 37.79741172682703 ], [ -122.42709159851074, 37.7972040218895 ], [ -122.42872774600983, 37.79699207747368 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42424845695496, 37.79947602782782 ], [ -122.42436647415161, 37.79945907281843 ], [ -122.42570757865906, 37.799289522510435 ], [ -122.42581486701965, 37.799276806221634 ], [ -122.42591679096222, 37.79926408993067 ], [ -122.42663562297821, 37.79917083706328 ], [ -122.42746710777283, 37.79906910652822 ], [ -122.42910325527191, 37.79885716746353 ], [ -122.43075013160706, 37.79864946659016 ], [ -122.4319839477539, 37.79849263084982 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42368519306183, 37.79667839862234 ], [ -122.42525160312653, 37.79648340839478 ], [ -122.42690920829773, 37.796275700847126 ], [ -122.42853999137878, 37.79606375376797 ], [ -122.43018686771393, 37.79585604504044 ], [ -122.43182301521301, 37.79564409675727 ], [ -122.43198394775392, 37.79562714086835 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42406070232391, 37.79854349653181 ], [ -122.42419481277466, 37.79852654130836 ], [ -122.4256271123886, 37.798344272410596 ], [ -122.42727935314177, 37.79813657009509 ], [ -122.42891550064085, 37.79792886719558 ], [ -122.43056237697601, 37.797716924859415 ], [ -122.43144214153288, 37.79760671460429 ], [ -122.43198394775389, 37.79753889282709 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42443084716797, 37.80041278604948 ], [ -122.4245595932007, 37.800395831255116 ], [ -122.4259275197983, 37.800222044388356 ], [ -122.42600262165071, 37.80020932826012 ], [ -122.4261260032654, 37.80019661212968 ], [ -122.42649614810945, 37.80014998629934 ], [ -122.42685556411743, 37.80010336043956 ], [ -122.42757976055145, 37.80001010863167 ], [ -122.4276602268219, 37.80000163118878 ], [ -122.4277675151825, 37.79998467630002 ], [ -122.42929100990295, 37.79978969479964 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42330431938171, 37.794809014604034 ], [ -122.42486000061037, 37.7946097804114 ], [ -122.42652833461763, 37.79440206759597 ], [ -122.42815911769867, 37.79419011514147 ], [ -122.42980599403383, 37.79397816207892 ], [ -122.43145287036897, 37.793770447487695 ], [ -122.43198394775392, 37.793702622188576 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42480635643005, 37.802269312488406 ], [ -122.4249565601349, 37.802252358120164 ], [ -122.42637813091278, 37.80207009841604 ], [ -122.42802500724794, 37.801862406576994 ], [ -122.42967188358308, 37.801654714153955 ], [ -122.43131339550018, 37.801447021146885 ], [ -122.43186056613922, 37.80137496425289 ], [ -122.4319839477539, 37.80136224832311 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41192638874054, 37.797271843974116 ], [ -122.41191565990448, 37.7972167385351 ], [ -122.41190493106842, 37.79716163305497 ], [ -122.41187274456024, 37.79700055526198 ], [ -122.41173326969147, 37.79629689552161 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41173326969147, 37.79629689552161 ], [ -122.41163671016693, 37.79583908920013 ], [ -122.41155624389648, 37.79541519192846 ], [ -122.41147577762605, 37.7950633553458 ], [ -122.41136848926544, 37.79454195588281 ], [ -122.41136848926544, 37.79452923877677 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42929100990295, 37.7997896947997 ], [ -122.42945194244386, 37.80056114033423 ], [ -122.42946803569794, 37.800637436707525 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42872774600983, 37.79699207747368 ], [ -122.42891550064087, 37.79792886719558 ], [ -122.42910325527191, 37.7988571674635 ], [ -122.42917835712433, 37.79923441857653 ], [ -122.42929100990295, 37.79978969479967 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41336941719055, 37.796084948503236 ], [ -122.41346061229706, 37.79652579761845 ], [ -122.41355180740355, 37.79694121072341 ], [ -122.41355180740355, 37.797034466405485 ], [ -122.41356253623961, 37.797131960856326 ], [ -122.41366982460022, 37.79767029746383 ], [ -122.41371273994446, 37.797844090334074 ], [ -122.41373419761658, 37.797950061395746 ], [ -122.41375029087065, 37.798030599300965 ], [ -122.41390585899352, 37.79887836139735 ], [ -122.41392731666564, 37.798958898290465 ], [ -122.4140292406082, 37.79937005895526 ], [ -122.41412580013274, 37.79983208212613 ], [ -122.41422235965729, 37.80030257981648 ], [ -122.41430282592772, 37.800756119798216 ], [ -122.41439938545227, 37.80122661160268 ], [ -122.4144959449768, 37.801692861785654 ], [ -122.41468906402588, 37.80261687617921 ], [ -122.41484463214873, 37.80337981513064 ], [ -122.41488218307494, 37.80354511753136 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42365837097168, 37.80528712802926 ], [ -122.42374420166016, 37.80571096865078 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42223680019379, 37.7903451920591 ], [ -122.42214560508728, 37.79036214916025 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42240846157074, 37.790328234954075 ], [ -122.42223680019379, 37.7903451920591 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42398023605347, 37.79016290297611 ], [ -122.4225264787674, 37.790315517122764 ], [ -122.42240846157074, 37.790328234954075 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42037534713745, 37.80571096865078 ], [ -122.42028415203094, 37.80523626699121 ], [ -122.42019295692444, 37.80478699296722 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4108213186264, 37.791837402062676 ], [ -122.41110563278198, 37.791799249341395 ], [ -122.41171717643738, 37.79172294383976 ], [ -122.41206049919128, 37.79168479105935 ], [ -122.41245210170746, 37.79163815985659 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41136848926544, 37.79452923877677 ], [ -122.41128802299501, 37.79453771684771 ], [ -122.41124510765076, 37.79454619491767 ], [ -122.4111968278885, 37.7945589120208 ], [ -122.4111592769623, 37.79456315105469 ], [ -122.4105477333069, 37.79464369265235 ], [ -122.41008639335634, 37.794707278062184 ], [ -122.4098986387253, 37.7947284731866 ], [ -122.4097377061844, 37.79474966830498 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40973770618439, 37.79474966830498 ], [ -122.40988254547119, 37.79551268851633 ], [ -122.40990400314331, 37.795618662922415 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40954458713531, 37.79385522902405 ], [ -122.40973770618439, 37.79474966830498 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40954458713531, 37.79385522902405 ], [ -122.4095231294632, 37.79385522902405 ], [ -122.40933001041412, 37.79388066346596 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.803295044525235 ], [ -122.40976452827452, 37.803239943579534 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4130368232727, 37.80282880445625 ], [ -122.41294026374817, 37.802332891334544 ], [ -122.41290807723998, 37.802184540608394 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41245210170746, 37.79163815985659 ], [ -122.41410970687866, 37.791421960259214 ], [ -122.41576731204987, 37.791209999255514 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.792782735420424 ], [ -122.4093621969223, 37.792960778914576 ], [ -122.4095445871353, 37.79385522902405 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.79203664373147 ], [ -122.4108213186264, 37.791837402062676 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41145431995392, 37.80112064524151 ], [ -122.41232335567474, 37.801010440064665 ], [ -122.41266131401063, 37.80098076941203 ], [ -122.41267740726471, 37.80098076941203 ], [ -122.41269886493683, 37.80098076941203 ], [ -122.41430282592773, 37.800756119798216 ], [ -122.41487681865692, 37.80067982354754 ], [ -122.41596579551697, 37.80053994688325 ], [ -122.41667926311493, 37.80044669562654 ], [ -122.41749465465546, 37.80034496684863 ], [ -122.41762340068817, 37.80032801203869 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41102516651154, 37.80117574776828 ], [ -122.41130948066713, 37.801141838525915 ], [ -122.41145431995393, 37.80112064524151 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40976452827454, 37.803239943579534 ], [ -122.41034924983978, 37.80316364989455 ], [ -122.41138994693756, 37.80303649357777 ], [ -122.41231262683868, 37.8029220527055 ], [ -122.4130368232727, 37.80282880445625 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.80109945195105 ], [ -122.4093461036682, 37.80118422507645 ], [ -122.40938365459441, 37.801379202895646 ], [ -122.40946948528288, 37.80184969073116 ], [ -122.40957677364348, 37.802303221213165 ], [ -122.40976452827452, 37.803239943579534 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.80042974083997 ], [ -122.40964114665985, 37.8003915925559 ], [ -122.40986108779907, 37.80036192165466 ], [ -122.41015613079071, 37.80032377333558 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41015613079071, 37.800323773335606 ], [ -122.4102795124054, 37.800311057224846 ], [ -122.41084277629852, 37.800251715345794 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41717278957367, 37.79634352378406 ], [ -122.41719424724579, 37.796470691622936 ], [ -122.41721034049988, 37.796559708979885 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42462933063507, 37.80129019134637 ], [ -122.42446303367615, 37.80132833916636 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42484390735626, 37.803218750897145 ], [ -122.4249941110611, 37.8031975582087 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42352962493896, 37.79669959318127 ], [ -122.42368519306183, 37.79667839862234 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42348670959473, 37.7957246371765 ], [ -122.42505848407745, 37.79552964443152 ], [ -122.42671072483061, 37.79532193420228 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42372810840607, 37.797636386612204 ], [ -122.42387294769287, 37.797615192322034 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42409288883209, 37.79949722158412 ], [ -122.42424845695496, 37.79947602782782 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42428600788116, 37.80042974083997 ], [ -122.42443084716797, 37.80041278604948 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42467224597931, 37.8022905054432 ], [ -122.42480635643005, 37.802269312488406 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42225289344788, 37.79042573825485 ], [ -122.42242455482484, 37.790396063350826 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42242455482483, 37.790396063350826 ], [ -122.42254257202148, 37.79037910625748 ], [ -122.42398023605347, 37.79016290297611 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41963505744934, 37.80199804212988 ], [ -122.41961896419525, 37.80192598577343 ], [ -122.41945266723633, 37.80114607718208 ], [ -122.41944193840027, 37.80109521329224 ], [ -122.41943657398224, 37.80106978133419 ], [ -122.41931855678558, 37.80045517301839 ], [ -122.41925418376923, 37.80012455401583 ], [ -122.41913080215454, 37.79951417658475 ], [ -122.41912543773653, 37.79948874408232 ], [ -122.4190664291382, 37.79919626967515 ], [ -122.41900742053987, 37.798916510462924 ], [ -122.41897523403169, 37.79874272011575 ], [ -122.41893768310548, 37.79856892935968 ], [ -122.41887867450718, 37.79826373484735 ], [ -122.41869091987614, 37.797339665996475 ], [ -122.4185031652451, 37.79643254129425 ], [ -122.41849780082707, 37.796398629874425 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42347061634064, 37.804358908571395 ], [ -122.42365837097168, 37.80528712802926 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41850316524506, 37.79643254129425 ], [ -122.41861045360565, 37.79641982451364 ], [ -122.41999447345734, 37.79623755041776 ], [ -122.42006957530975, 37.796241789355314 ], [ -122.42013931274414, 37.79625450616659 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42012321949005, 37.79614429372968 ], [ -122.42013931274414, 37.79625450616659 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42010712623596, 37.79606375376797 ], [ -122.42012321949005, 37.79614429372968 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42013931274414, 37.79625450616659 ], [ -122.42031633853912, 37.797110766421454 ], [ -122.42050409317017, 37.79804755463823 ], [ -122.42063820362091, 37.798696093367674 ], [ -122.42069721221924, 37.79898433097531 ], [ -122.42088496685028, 37.79991261797943 ], [ -122.42107272148132, 37.800832415970085 ], [ -122.42109417915344, 37.800938382744725 ], [ -122.4212658405304, 37.80178187284963 ], [ -122.42145359516144, 37.80271436326215 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41685092449188, 37.804977722839574 ], [ -122.41688847541809, 37.80521507488168 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42019295692444, 37.80478699296722 ], [ -122.42008566856384, 37.804235992791284 ], [ -122.42001593112946, 37.80388843671987 ], [ -122.4198228120804, 37.8029220527055 ], [ -122.41964578628541, 37.8020743370189 ], [ -122.41963505744936, 37.80199804212988 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42243528366089, 37.80354087901289 ], [ -122.42224752902985, 37.80362141082225 ], [ -122.42178618907927, 37.803672272972435 ], [ -122.42174327373503, 37.803684988504514 ], [ -122.4217003583908, 37.80371041956209 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41855680942535, 37.80500739188654 ], [ -122.41870164871216, 37.80571096865078 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42174863815308, 37.80423175431249 ], [ -122.42181837558745, 37.80456659339016 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4130368232727, 37.80282880445625 ], [ -122.41362690925598, 37.8027567489103 ], [ -122.41365909576416, 37.80275251034657 ], [ -122.41372346878052, 37.8027440332184 ], [ -122.41378784179688, 37.80272707895914 ], [ -122.41387367248535, 37.80270588612963 ], [ -122.41457104682922, 37.80262111475069 ], [ -122.41468906402588, 37.80261687617921 ], [ -122.41481781005861, 37.80260839903546 ], [ -122.41623938083649, 37.802430378792366 ], [ -122.41634130477905, 37.80240494729402 ], [ -122.41645395755768, 37.80238375437207 ], [ -122.4178808927536, 37.80220573358751 ], [ -122.4179881811142, 37.80220997218259 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41362690925598, 37.80571096865078 ], [ -122.41360545158386, 37.80561772392276 ], [ -122.41351962089539, 37.80515573694268 ], [ -122.41343379020691, 37.80468527016725 ], [ -122.41337478160858, 37.80440977021365 ], [ -122.41322457790375, 37.80376128165094 ], [ -122.4130368232727, 37.80282880445625 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41576731204987, 37.791209999255514 ], [ -122.4161159992218, 37.79116336775309 ], [ -122.41643249988557, 37.79112097545263 ], [ -122.4171942472458, 37.79102771230599 ], [ -122.41741418838502, 37.79099803764374 ], [ -122.41763412952425, 37.79097260220947 ], [ -122.41907179355623, 37.790798793174275 ], [ -122.42069184780122, 37.79057835185864 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42243528366089, 37.80354087901289 ], [ -122.4232828617096, 37.803426438922145 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42145359516144, 37.802714363262176 ], [ -122.42152333259583, 37.802803373095095 ], [ -122.42160379886627, 37.80321451235996 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42145359516144, 37.802714363262176 ], [ -122.42143750190736, 37.80282032733683 ], [ -122.42152333259584, 37.803295044525235 ], [ -122.42157161235811, 37.80340100776679 ], [ -122.42161452770235, 37.80349001677221 ], [ -122.42177009582521, 37.80354511753136 ], [ -122.42183446884157, 37.80354935604959 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41845488548279, 37.80405373798221 ], [ -122.41842806339265, 37.804019830061115 ], [ -122.41840660572053, 37.8039732066442 ], [ -122.41829931735992, 37.80347306268421 ], [ -122.41821885108948, 37.8033586224884 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42170035839081, 37.80371041956209 ], [ -122.42168426513672, 37.80375280463857 ], [ -122.4216789007187, 37.80377823567278 ], [ -122.42168426513672, 37.803871482723345 ], [ -122.42168426513672, 37.8038969137167 ], [ -122.4216789007187, 37.8039350601903 ], [ -122.42167353630067, 37.80396472965615 ], [ -122.42166280746461, 37.80399016061739 ], [ -122.42164671421055, 37.8040155915699 ], [ -122.42162525653843, 37.804036784023616 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41741418838501, 37.79099803764377 ], [ -122.41720497608185, 37.79004844215926 ], [ -122.4170172214508, 37.789111552511955 ], [ -122.41682946681976, 37.788178890386014 ], [ -122.4167650938034, 37.78786941353413 ], [ -122.41675436496735, 37.787814301082065 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42561638355255, 37.7899551776589 ], [ -122.4254232645035, 37.78899709006654 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.78913698858683 ], [ -122.41025805473328, 37.78901828682906 ], [ -122.41097152233122, 37.78892502102847 ], [ -122.41188883781433, 37.78881055829413 ], [ -122.41355180740355, 37.78860282917525 ], [ -122.41518795490263, 37.78839086008467 ], [ -122.41682946681975, 37.788178890386014 ], [ -122.41788625717162, 37.78804322945981 ], [ -122.41846561431883, 37.78796692007937 ], [ -122.41969943046566, 37.787814301082065 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42069184780121, 37.79057835185864 ], [ -122.42080450057983, 37.79061226595001 ], [ -122.42216169834137, 37.79043845606721 ], [ -122.42225289344788, 37.79042573825485 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42369055747986, 37.78874696780958 ], [ -122.42533206939697, 37.78853923851192 ], [ -122.42696821689606, 37.788331508630314 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41102516651154, 37.80117574776828 ], [ -122.41120755672455, 37.802095530029646 ], [ -122.41138994693756, 37.80303649357777 ], [ -122.41148114204405, 37.80347306268421 ], [ -122.41158306598662, 37.80396472965615 ], [ -122.41177082061766, 37.80489719250909 ], [ -122.41186201572417, 37.80536341952066 ], [ -122.41193175315856, 37.80571096865078 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4262011051178, 37.80115455449363 ], [ -122.42621719837189, 37.80123932755579 ], [ -122.42637813091278, 37.80207009841604 ], [ -122.42656588554382, 37.80299834664004 ], [ -122.42676973342896, 37.80394353718175 ], [ -122.42682337760925, 37.80419784647312 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41840660572052, 37.801196941036885 ], [ -122.418674826622, 37.80115879314906 ], [ -122.41908252239227, 37.80112064524151 ], [ -122.41931319236755, 37.80109097463317 ], [ -122.41943657398224, 37.801069781334164 ], [ -122.42036461830139, 37.80095109874748 ], [ -122.4204236268997, 37.80094262141255 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41187274456024, 37.79700055526198 ], [ -122.41189420223236, 37.79699631636796 ], [ -122.41260766983032, 37.79691577733512 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40990400314331, 37.795618662922415 ], [ -122.41001665592194, 37.795605946001736 ], [ -122.41003274917601, 37.795605946001736 ], [ -122.41108417510985, 37.79547029871132 ], [ -122.41155624389648, 37.79541519192846 ], [ -122.41189956665039, 37.79538128004165 ], [ -122.41234481334685, 37.79532193420228 ], [ -122.41318166255951, 37.795220198366735 ], [ -122.41402387619019, 37.795105745384284 ], [ -122.41483390331267, 37.79499129222454 ], [ -122.41647541522978, 37.79477934146046 ], [ -122.41695821285248, 37.79471999513755 ], [ -122.41753220558167, 37.79464369265235 ], [ -122.41796135902405, 37.79458858525292 ], [ -122.41812765598297, 37.794567390088325 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41290807723999, 37.802184540608394 ], [ -122.41288125514986, 37.80202347376832 ], [ -122.41285979747774, 37.801892076875475 ], [ -122.41275787353517, 37.80143006658992 ], [ -122.41267740726472, 37.80098076941203 ], [ -122.41254866123201, 37.80034072814651 ], [ -122.41248428821565, 37.80003977967424 ], [ -122.41243064403534, 37.799764262392124 ], [ -122.41241991519928, 37.79971763628886 ], [ -122.4122965335846, 37.79909453917511 ], [ -122.41210877895355, 37.79816624189021 ], [ -122.41192638874055, 37.797271843974116 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.79949298283334 ], [ -122.41064965724944, 37.799314955081435 ], [ -122.41145968437193, 37.79920898597781 ], [ -122.41194248199463, 37.799141165671685 ], [ -122.4122804403305, 37.79909877794875 ], [ -122.4122965335846, 37.79909453917511 ], [ -122.41231799125671, 37.79909030040123 ], [ -122.41293489933014, 37.7990097636514 ], [ -122.41390585899353, 37.79887836139735 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41096079349518, 37.800883280040885 ], [ -122.41098761558533, 37.801103690609615 ], [ -122.41102516651154, 37.80117574776828 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41095542907715, 37.80077731318719 ], [ -122.41084277629852, 37.800251715345794 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40990400314331, 37.795618662922415 ], [ -122.41000592708588, 37.79605527587214 ], [ -122.41009712219237, 37.79650036408717 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41454422473907, 37.79877663045951 ], [ -122.41459250450133, 37.79881054078769 ], [ -122.41466760635375, 37.798840212312086 ], [ -122.41475343704224, 37.7988359735236 ], [ -122.41512894630432, 37.79879358562553 ], [ -122.41520941257477, 37.79877239166739 ], [ -122.41540253162383, 37.79872152614298 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41104662418365, 37.797314232745414 ], [ -122.41127729415895, 37.79735662149236 ], [ -122.41191029548645, 37.797271843974144 ], [ -122.41192638874054, 37.797271843974144 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41926491260529, 37.796072231662805 ], [ -122.41918981075287, 37.796089187449574 ], [ -122.41915225982666, 37.796097665341506 ], [ -122.41856217384338, 37.79616972738355 ], [ -122.41854608058931, 37.79617396632503 ], [ -122.41847634315492, 37.79616972738355 ], [ -122.41844952106477, 37.79616972738355 ], [ -122.41833150386812, 37.79618244420722 ], [ -122.41751611232759, 37.796292656587205 ], [ -122.41717278957368, 37.79634352378406 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41721034049988, 37.796559708979885 ], [ -122.41731226444244, 37.79656394789897 ], [ -122.41839587688446, 37.79644525807265 ], [ -122.41850316524506, 37.79643254129425 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41846024990082, 37.79621635572625 ], [ -122.41844952106476, 37.79616972738355 ], [ -122.41835832595825, 37.79571192027404 ], [ -122.41831004619598, 37.79547877667427 ], [ -122.41821885108948, 37.795008248259386 ], [ -122.41812765598299, 37.794567390088325 ], [ -122.41793990135194, 37.79368566585404 ], [ -122.41777360439302, 37.7928124093659 ], [ -122.41774678230287, 37.79267251780427 ], [ -122.41768240928651, 37.792350342291314 ], [ -122.41760194301607, 37.79192642500235 ], [ -122.41741418838502, 37.79099803764374 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42671072483063, 37.79532193420228 ], [ -122.42834150791168, 37.79512270139288 ], [ -122.42999374866486, 37.79489803396326 ], [ -122.43163526058197, 37.79468608293166 ], [ -122.4319839477539, 37.794639453623084 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42580950260162, 37.79087933887559 ], [ -122.42561638355255, 37.7899551776589 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42872774600983, 37.79699207747368 ], [ -122.43037462234497, 37.79678437135622 ], [ -122.43119001388551, 37.7966826375346 ], [ -122.43198394775392, 37.796580903572895 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42158770561218, 37.795029443297494 ], [ -122.4217700958252, 37.795945063138014 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.794809014604034 ], [ -122.40960359573364, 37.79477510243896 ], [ -122.40963041782379, 37.79476662439528 ], [ -122.40973770618439, 37.79474966830498 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42598116397858, 37.791761096600425 ], [ -122.42433965206148, 37.79197305602319 ], [ -122.42278397083282, 37.792168058155134 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41410970687866, 37.791421960259214 ], [ -122.4140989780426, 37.79141348183073 ], [ -122.41406679153442, 37.79131597983338 ], [ -122.41392195224762, 37.79057835185864 ], [ -122.41391122341156, 37.79045965241627 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41245210170746, 37.79163815985659 ], [ -122.41245746612547, 37.79165511666101 ], [ -122.4124789237976, 37.79174413982033 ], [ -122.41255939006804, 37.79211718808339 ], [ -122.41265058517455, 37.79254110427786 ], [ -122.41274178028105, 37.79299469191242 ], [ -122.41283297538753, 37.79343555946803 ], [ -122.41300463676451, 37.79433000382966 ], [ -122.4131816625595, 37.79519900338339 ], [ -122.4131816625595, 37.795220198366735 ], [ -122.41336941719054, 37.796084948503236 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41907179355621, 37.7907987931743 ], [ -122.41923272609712, 37.791701747853054 ], [ -122.41932392120363, 37.792185014837926 ], [ -122.41942584514618, 37.79259621320449 ], [ -122.41952240467073, 37.79312186551574 ], [ -122.4195921421051, 37.7934779504405 ], [ -122.41976916790009, 37.79435967715371 ], [ -122.41994082927705, 37.795241393344035 ], [ -122.42009103298189, 37.795987452670616 ], [ -122.42010712623598, 37.79606375376797 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41226971149445, 37.790675854829374 ], [ -122.41226971149445, 37.790781836173345 ], [ -122.41241991519928, 37.791549136569564 ], [ -122.41244673728943, 37.79162544225071 ], [ -122.41245210170746, 37.79163815985659 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42278397083282, 37.792168058155134 ], [ -122.42262303829193, 37.792185014837955 ], [ -122.42106199264526, 37.792396973044646 ], [ -122.41942584514618, 37.79259621320451 ], [ -122.41860508918762, 37.79269371351246 ], [ -122.417773604393, 37.7928124093659 ], [ -122.41644322872162, 37.792973496290564 ], [ -122.4161159992218, 37.79301588752816 ], [ -122.41553127765654, 37.79309219169453 ], [ -122.41526305675507, 37.793126104632066 ], [ -122.41505920886993, 37.79315153932501 ], [ -122.41447448730469, 37.7932236042408 ], [ -122.41283297538757, 37.793435559468 ], [ -122.41211950778961, 37.79352881957535 ], [ -122.41151869297029, 37.79360512321199 ], [ -122.41118609905244, 37.79364751408718 ], [ -122.4106013774872, 37.79371957851917 ], [ -122.41036534309389, 37.7937492520884 ], [ -122.4099361896515, 37.793804360113896 ], [ -122.40990400314332, 37.793808599191095 ], [ -122.40957140922548, 37.793850989949526 ], [ -122.40954458713533, 37.793855229024025 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4108213186264, 37.791837402062676 ], [ -122.4110037088394, 37.792765778874795 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41100370883942, 37.792765778874795 ], [ -122.41108953952791, 37.7931769740092 ], [ -122.41113245487215, 37.79338469026892 ], [ -122.41118609905244, 37.79364751408718 ], [ -122.41127192974092, 37.794062943376915 ], [ -122.41136848926546, 37.79452923877677 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41793990135193, 37.79368566585406 ], [ -122.41629302501678, 37.793893380683656 ], [ -122.41567611694335, 37.79397392301147 ], [ -122.41522014141083, 37.79402903086939 ], [ -122.41465687751769, 37.7941053339894 ], [ -122.41300463676453, 37.79433000382966 ], [ -122.41184592247008, 37.794465653213706 ], [ -122.41136848926544, 37.79452923877677 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43156552314758, 37.79104466925053 ], [ -122.4319839477539, 37.7909937984053 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41576731204987, 37.791209999255514 ], [ -122.41578876972198, 37.79131597983335 ], [ -122.41583168506622, 37.791544897362755 ], [ -122.41589605808258, 37.79187555476423 ], [ -122.41594970226288, 37.79212990560461 ], [ -122.4161159992218, 37.79301588752816 ], [ -122.41629302501678, 37.793893380683656 ], [ -122.4164754152298, 37.79477934146046 ], [ -122.41666316986084, 37.795678008523424 ], [ -122.41671681404114, 37.7959238683626 ], [ -122.41674900054932, 37.79611886006703 ], [ -122.41685092449188, 37.796602098159795 ], [ -122.41694211959839, 37.79707261642332 ], [ -122.41703867912292, 37.79755160941504 ], [ -122.41722106933594, 37.79847991442385 ], [ -122.41731226444244, 37.79894618194477 ], [ -122.41739273071288, 37.799319193842436 ], [ -122.4173980951309, 37.7994082077669 ], [ -122.41753220558165, 37.79990837925248 ], [ -122.41762340068816, 37.80032801203869 ], [ -122.41773068904875, 37.80084089331766 ], [ -122.41780042648314, 37.801256282156544 ], [ -122.41780579090114, 37.8012859526985 ], [ -122.41789162158962, 37.801718293529156 ], [ -122.41797745227812, 37.80213791603292 ], [ -122.41798818111418, 37.80220997218259 ], [ -122.41799890995024, 37.80227778967103 ], [ -122.41817593574523, 37.80312974156482 ], [ -122.41821885108946, 37.8033586224884 ], [ -122.41821885108946, 37.80349001677221 ], [ -122.41833150386809, 37.804087645887726 ], [ -122.41839051246639, 37.80421480039474 ], [ -122.41855680942531, 37.80500739188654 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43168354034424, 37.80327809039246 ], [ -122.43188202381134, 37.80324842065075 ], [ -122.4319839477539, 37.80323570504354 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42494583129883, 37.801209656995105 ], [ -122.42471516132355, 37.80126899810456 ], [ -122.42462933063507, 37.801290191346396 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43150115013123, 37.802379515786946 ], [ -122.43168354034422, 37.80327809039246 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42985963821411, 37.80258296759844 ], [ -122.43150115013123, 37.802379515786946 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42985963821411, 37.80258296759844 ], [ -122.43006348609924, 37.803532401975204 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42215096950531, 37.797831373796456 ], [ -122.42372810840607, 37.797636386612204 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42929100990295, 37.7997896947997 ], [ -122.4309378862381, 37.799581996548405 ], [ -122.43198394775392, 37.799446356558846 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4217700958252, 37.795945063138014 ], [ -122.42196321487425, 37.79690306063769 ], [ -122.4220597743988, 37.797373576984334 ], [ -122.4221509695053, 37.797831373796456 ], [ -122.42232799530028, 37.798696093367674 ], [ -122.42233872413634, 37.79877239166739 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42233872413635, 37.79877239166739 ], [ -122.42235481739044, 37.79884445110031 ], [ -122.4224728345871, 37.79941244652253 ], [ -122.4225103855133, 37.79962014525055 ], [ -122.4225264787674, 37.79970068133491 ], [ -122.42254793643951, 37.79978969479964 ], [ -122.42270350456238, 37.800556901644505 ], [ -122.42271423339844, 37.80062895933659 ], [ -122.42273032665251, 37.80070949432101 ], [ -122.42288589477538, 37.801480930249134 ], [ -122.42290198802947, 37.801548748406965 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42290198802948, 37.80154874840699 ], [ -122.42291808128357, 37.801633521016726 ], [ -122.42307901382446, 37.80241342446109 ], [ -122.42309510707855, 37.802489718921066 ], [ -122.42311120033264, 37.802587206171864 ], [ -122.4232828617096, 37.803426438922145 ], [ -122.42347061634064, 37.804358908571395 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.798513824888246 ], [ -122.40965723991394, 37.79847143680529 ], [ -122.40989863872528, 37.798441765132765 ], [ -122.41045653820038, 37.79837394412226 ], [ -122.41176009178162, 37.79820863014824 ], [ -122.4120819568634, 37.79817048071708 ], [ -122.41210877895355, 37.79816624189018 ], [ -122.41213560104369, 37.79816200306305 ], [ -122.41283297538756, 37.7980772264691 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.80233712992234 ], [ -122.40957677364348, 37.802303221213165 ], [ -122.4106067419052, 37.802171824817975 ], [ -122.41120755672453, 37.80209553002967 ], [ -122.41160452365874, 37.80204466679365 ], [ -122.41209268569945, 37.8019810876994 ], [ -122.41238236427306, 37.801947178826744 ], [ -122.41243600845335, 37.80190055410142 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4168348312378, 37.804833615870386 ], [ -122.41672754287718, 37.80429533146929 ], [ -122.41663098335265, 37.80382062071034 ], [ -122.41653442382811, 37.80334166837023 ], [ -122.41634130477904, 37.80240494729402 ], [ -122.41615891456604, 37.80148940752228 ], [ -122.41605699062347, 37.801010440064665 ], [ -122.41596579551697, 37.80053994688323 ], [ -122.41594970226288, 37.80046365040925 ], [ -122.41577804088593, 37.79962014525055 ], [ -122.41568148136139, 37.79914540444263 ], [ -122.415611743927, 37.79879782441643 ], [ -122.41559028625488, 37.798696093367674 ], [ -122.41556882858276, 37.798598600981116 ], [ -122.41546154022217, 37.79806450997163 ], [ -122.41539716720581, 37.79775931337528 ], [ -122.41533815860748, 37.79746259325332 ], [ -122.41530060768127, 37.79728879948555 ], [ -122.41520404815674, 37.796805565884746 ], [ -122.4151074886322, 37.796326568055655 ], [ -122.4150162935257, 37.79588995670929 ], [ -122.41483390331268, 37.79499129222454 ], [ -122.4146568775177, 37.7941053339894 ], [ -122.4144744873047, 37.79322360424077 ], [ -122.41438865661621, 37.792786974556215 ], [ -122.41429746150972, 37.79233762480803 ], [ -122.4141150712967, 37.791438917113226 ], [ -122.4141097068787, 37.791421960259214 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42107272148132, 37.800832415970085 ], [ -122.42262303829193, 37.800637436707525 ], [ -122.42271423339844, 37.80062895933659 ], [ -122.42283225059509, 37.80061200459185 ], [ -122.42289662361145, 37.800603527218016 ], [ -122.42416799068451, 37.80044245693025 ], [ -122.42428600788116, 37.800429740839945 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41859436035156, 37.80020932826012 ], [ -122.41925418376923, 37.80012455401583 ], [ -122.41935610771179, 37.800111837870794 ], [ -122.42058455944061, 37.79995076651085 ], [ -122.42080986499786, 37.79992109543255 ], [ -122.42088496685028, 37.79991261797943 ], [ -122.42243528366089, 37.79971339755073 ], [ -122.4225264787674, 37.79970068133491 ], [ -122.42265522480011, 37.7996837263771 ], [ -122.42400169372559, 37.79950993783495 ], [ -122.42409288883209, 37.79949722158409 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41859436035156, 37.80020932826012 ], [ -122.41762340068816, 37.80032801203869 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.80424446974821 ], [ -122.40935146808624, 37.80424446974821 ], [ -122.40995228290556, 37.804176654065614 ], [ -122.41158306598662, 37.80396472965615 ], [ -122.41285443305968, 37.803807905201644 ], [ -122.41322457790373, 37.80376128165094 ], [ -122.41371810436247, 37.803697704034384 ], [ -122.41472661495207, 37.803566310120054 ], [ -122.41480171680449, 37.80355359456757 ], [ -122.41488218307494, 37.80354511753136 ], [ -122.41506457328795, 37.80352392493655 ], [ -122.41641104221343, 37.80336286101732 ], [ -122.41653442382811, 37.80334166837023 ], [ -122.41663634777068, 37.80332047571705 ], [ -122.41817593574523, 37.803129741564796 ], [ -122.4190771579742, 37.80301530083702 ], [ -122.41982281208034, 37.8029220527055 ], [ -122.4214535951614, 37.80271436326215 ], [ -122.42180764675136, 37.8026635004523 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41285979747772, 37.801892076875475 ], [ -122.41283297538757, 37.80190055410142 ], [ -122.41270422935486, 37.80190479271403 ], [ -122.41260766983032, 37.80192174716204 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41285979747772, 37.801892076875475 ], [ -122.41288661956786, 37.801887838262154 ], [ -122.41368055343628, 37.801790350088226 ], [ -122.4144959449768, 37.801692861785654 ], [ -122.41495192050934, 37.80163775964465 ], [ -122.41615891456604, 37.80148940752228 ], [ -122.41780579090118, 37.8012859526985 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41562247276306, 37.79369414402182 ], [ -122.41567611694336, 37.79397392301147 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42520332336426, 37.805096398955996 ], [ -122.42532670497894, 37.80571096865078 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4232828617096, 37.803426438922145 ], [ -122.42484390735626, 37.803218750897145 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41699039936066, 37.80571096865078 ], [ -122.41688847541809, 37.80521507488171 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4153059720993, 37.80571096865078 ], [ -122.41524159908295, 37.80541851888209 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42778897285461, 37.80515573694268 ], [ -122.42733299732208, 37.80521507488171 ], [ -122.4272471666336, 37.80521931330409 ], [ -122.4271559715271, 37.80521931330409 ], [ -122.42704331874847, 37.80521931330409 ], [ -122.4269038438797, 37.8051938827661 ], [ -122.42680728435516, 37.805164213794036 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42682337760925, 37.80419784647312 ], [ -122.42679655551912, 37.80427837756615 ], [ -122.42679655551912, 37.804337716210114 ], [ -122.42680191993713, 37.80440129327573 ], [ -122.42685556411743, 37.80462593180253 ], [ -122.42691993713379, 37.80482937742587 ], [ -122.42704331874847, 37.80521931330409 ], [ -122.42712914943696, 37.80543123411352 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42712914943695, 37.80543123411352 ], [ -122.42715060710907, 37.805321035368515 ], [ -122.42715597152709, 37.80521931330409 ], [ -122.42702186107634, 37.8048081851996 ], [ -122.42696821689604, 37.80460050106022 ], [ -122.42691993713379, 37.80438433939691 ], [ -122.42689311504364, 37.80432500079042 ], [ -122.42685556411743, 37.80426990061314 ], [ -122.42682337760925, 37.80419784647312 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42022514343262, 37.80192174716204 ], [ -122.42062211036682, 37.80187512242067 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42062211036682, 37.80187512242067 ], [ -122.42114245891571, 37.80179882732586 ], [ -122.4212658405304, 37.80178187284963 ], [ -122.42198467254639, 37.80168014591061 ], [ -122.42212414741518, 37.801658952780684 ], [ -122.42280542850496, 37.80156570293673 ], [ -122.4229019880295, 37.80154874840699 ], [ -122.42300927639012, 37.80153603250714 ], [ -122.4243557453156, 37.80134529374666 ], [ -122.42446303367619, 37.80132833916636 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42181837558746, 37.80456659339016 ], [ -122.42201149463654, 37.80549481023774 ], [ -122.42205440998077, 37.80571096865078 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41084277629852, 37.800251715345794 ], [ -122.41166353225708, 37.80014574758602 ], [ -122.41246819496155, 37.80004401839364 ], [ -122.41248428821564, 37.80003977967424 ], [ -122.41251647472382, 37.800035540954596 ], [ -122.41412580013274, 37.79983208212613 ], [ -122.41522550582884, 37.799687965116924 ], [ -122.41577804088591, 37.79962014525055 ], [ -122.41649150848387, 37.79952689283269 ], [ -122.4173980951309, 37.7994082077669 ], [ -122.41822957992552, 37.79930223879704 ], [ -122.41905033588408, 37.79919626967515 ], [ -122.41906642913814, 37.79919626967515 ], [ -122.41908252239223, 37.79919203090711 ], [ -122.4200856685638, 37.799064867752875 ], [ -122.42034852504726, 37.799030957541454 ], [ -122.42069721221922, 37.79898433097531 ], [ -122.42226898670195, 37.798780869251374 ], [ -122.42233872413634, 37.79877239166739 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41540253162384, 37.798721526143 ], [ -122.41559028625488, 37.798696093367674 ], [ -122.41722106933594, 37.79847991442385 ], [ -122.41783261299133, 37.79839937700852 ], [ -122.41887867450714, 37.79826373484738 ], [ -122.41963505744934, 37.79816200306305 ], [ -122.41989254951476, 37.79812809243717 ], [ -122.42039144039153, 37.79806450997163 ], [ -122.42050409317015, 37.79804755463823 ], [ -122.4221509695053, 37.797831373796456 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41963505744934, 37.80199804212988 ], [ -122.41953313350677, 37.8020107579502 ], [ -122.41951167583466, 37.80201499655647 ], [ -122.41947948932648, 37.802036189584236 ], [ -122.41942584514618, 37.80207857562153 ], [ -122.41940438747406, 37.802091291428006 ], [ -122.41938292980194, 37.80209553002967 ], [ -122.41935610771179, 37.80209553002967 ], [ -122.41933465003967, 37.802091291428006 ], [ -122.41931855678558, 37.8020743370189 ], [ -122.41926491260529, 37.80201499655647 ], [ -122.41923809051514, 37.80200228073689 ], [ -122.419211268425, 37.80199804212988 ], [ -122.41918444633485, 37.80200228073689 ], [ -122.4191576242447, 37.80201499655647 ], [ -122.41914153099064, 37.80203195097919 ], [ -122.41910934448246, 37.80210400723224 ], [ -122.41909325122838, 37.802125200234485 ], [ -122.41906642913824, 37.80213791603292 ], [ -122.41903424263005, 37.80214215463189 ], [ -122.41900742053991, 37.80213367743367 ], [ -122.4189859628678, 37.80211672303431 ], [ -122.41892695426947, 37.80206162120955 ], [ -122.41890549659735, 37.80204466679365 ], [ -122.4188786745072, 37.80204042818906 ], [ -122.41884648799902, 37.80204466679365 ], [ -122.4188250303269, 37.80205314400207 ], [ -122.41880893707284, 37.8020743370189 ], [ -122.41877675056463, 37.80214639323063 ], [ -122.41876065731057, 37.80216758622069 ], [ -122.41873919963845, 37.80217606341501 ], [ -122.41870701313027, 37.80218030201182 ], [ -122.41868019104012, 37.802171824817975 ], [ -122.418658733368, 37.802159109025396 ], [ -122.41859972476968, 37.80209976863108 ], [ -122.41857826709756, 37.80208705282608 ], [ -122.41855144500742, 37.80207857562153 ], [ -122.4185299873353, 37.80208281422394 ], [ -122.41850316524516, 37.802095530029646 ], [ -122.41848707199107, 37.80211672303431 ], [ -122.41845488548289, 37.80218877920469 ], [ -122.41843879222881, 37.802205733587485 ], [ -122.41841197013866, 37.802218449372056 ], [ -122.41838514804851, 37.80222268796642 ], [ -122.41835296154034, 37.802218449372056 ], [ -122.41833150386822, 37.802205733587485 ], [ -122.41827785968792, 37.80214639323063 ], [ -122.4182564020158, 37.80212943883419 ], [ -122.41823494434368, 37.80212096163453 ], [ -122.41820812225353, 37.80212096163453 ], [ -122.41818130016341, 37.80212943883419 ], [ -122.41816520690932, 37.80214639323063 ], [ -122.41813838481917, 37.80218030201182 ], [ -122.41812765598311, 37.802197256396575 ], [ -122.418106198311, 37.80220997218259 ], [ -122.41808474063888, 37.802214210777436 ], [ -122.41806328296676, 37.802214210777436 ], [ -122.41798818111434, 37.80220997218259 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42685556411743, 37.787814301082065 ], [ -122.42686629295349, 37.78786517411618 ], [ -122.42696821689606, 37.788331508630314 ], [ -122.4270647764206, 37.788789361472034 ], [ -122.4272632598877, 37.78974321244753 ], [ -122.42745101451874, 37.79066737631527 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41488218307495, 37.80354511753136 ], [ -122.41491973400116, 37.80370194254386 ], [ -122.4150162935257, 37.80420632343443 ], [ -122.41505920886993, 37.80441824715063 ], [ -122.415069937706, 37.80448182414693 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42214560508728, 37.790362149160224 ], [ -122.42078840732574, 37.790531719957585 ], [ -122.4206918478012, 37.79057835185864 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.80520235961308 ], [ -122.4095445871353, 37.80517692906923 ], [ -122.41014003753662, 37.805104875814145 ], [ -122.4105155467987, 37.80505401465057 ], [ -122.41177082061766, 37.80489719250912 ], [ -122.4134337902069, 37.80468527016725 ], [ -122.4149841070175, 37.80449030107562 ], [ -122.41505920886992, 37.80448182414693 ], [ -122.41506993770598, 37.80448182414693 ], [ -122.4150913953781, 37.80447758568221 ], [ -122.41516649723052, 37.804469108752045 ], [ -122.41598725318907, 37.8043673855142 ], [ -122.41614818572998, 37.80434619315537 ], [ -122.41659879684448, 37.8043038084194 ], [ -122.4167275428772, 37.80429533146929 ], [ -122.41684556007387, 37.80428685451822 ], [ -122.41750538349153, 37.8042020849539 ], [ -122.41833150386812, 37.804087645887726 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41192638874054, 37.797271843974116 ], [ -122.41195321083069, 37.79726760509566 ], [ -122.41301000118254, 37.79711500530889 ], [ -122.41346061229706, 37.797047183080274 ], [ -122.41355180740355, 37.797034466405464 ], [ -122.41366446018218, 37.79701751083568 ], [ -122.4144798517227, 37.79690306063769 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41453886032104, 37.796890343938095 ], [ -122.41463005542755, 37.796877627236306 ], [ -122.41520404815674, 37.796805565884775 ], [ -122.41685092449188, 37.796602098159795 ], [ -122.41721034049988, 37.796559708979885 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41533815860748, 37.79746259325332 ], [ -122.41526305675507, 37.79749650418472 ], [ -122.415252327919, 37.79752617623693 ], [ -122.4152898788452, 37.79770420829989 ], [ -122.41528451442719, 37.7977381191204 ], [ -122.4152684211731, 37.79778474647316 ], [ -122.41530060768127, 37.79781865725668 ], [ -122.4153220653534, 37.79785680686953 ], [ -122.41535425186157, 37.798013643959806 ], [ -122.41537570953369, 37.79804331580431 ], [ -122.41546154022218, 37.79806450997163 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40976452827454, 37.803239943579534 ], [ -122.40985572338104, 37.80371041956209 ], [ -122.40995228290558, 37.804176654065614 ], [ -122.41004884243013, 37.80463864717042 ], [ -122.41014003753662, 37.805104875814145 ], [ -122.4102634191513, 37.80571096865078 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41963505744934, 37.80199804212988 ], [ -122.41971552371977, 37.80198532630738 ], [ -122.4202251434326, 37.80192174716204 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42012858390808, 37.787814301082065 ], [ -122.42021441459656, 37.788225523771885 ], [ -122.4203109741211, 37.78870033475276 ], [ -122.4204021692276, 37.78916666399649 ], [ -122.4204933643341, 37.789620272346355 ], [ -122.42069184780121, 37.79057835185864 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42554128170013, 37.80571096865078 ], [ -122.42547154426575, 37.80537613476155 ], [ -122.42541253566743, 37.80515573694268 ], [ -122.42536962032318, 37.805075206806336 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41173326969147, 37.79629689552161 ], [ -122.41176009178162, 37.79628841765255 ], [ -122.41254329681396, 37.79619516102869 ], [ -122.41281688213348, 37.79616124949991 ], [ -122.41336941719057, 37.796084948503236 ], [ -122.41424381732942, 37.79597897476603 ], [ -122.41501629352571, 37.79588995670932 ], [ -122.41666316986085, 37.79567800852345 ], [ -122.41700112819673, 37.79563561881331 ], [ -122.418310046196, 37.79547877667427 ], [ -122.4191200733185, 37.795360085104505 ], [ -122.4198228120804, 37.79527106630204 ], [ -122.41994082927705, 37.79524139334406 ], [ -122.4215877056122, 37.795029443297494 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41173326969147, 37.79629689552161 ], [ -122.41171717643739, 37.79629689552161 ], [ -122.4109071493149, 37.79639862987445 ], [ -122.41052627563478, 37.79644949699833 ], [ -122.4100971221924, 37.79650036408717 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41009712219238, 37.79650036408717 ], [ -122.41016685962677, 37.79692001623378 ], [ -122.41022050380707, 37.79721249965347 ], [ -122.41025805473328, 37.79741596569723 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41025805473328, 37.79741596569721 ], [ -122.41045653820038, 37.79837394412226 ], [ -122.41064965724944, 37.799314955081435 ], [ -122.41084277629851, 37.800251715345794 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42289662361145, 37.800603527218016 ], [ -122.42327749729156, 37.800955337414564 ], [ -122.42340624332428, 37.801023156054995 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41219997406006, 37.787814301082065 ], [ -122.41170108318329, 37.787873652951795 ], [ -122.41007566452026, 37.78808138412048 ], [ -122.40933001041412, 37.788178890386014 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41843342781067, 37.787814301082065 ], [ -122.41846561431885, 37.78796692007934 ], [ -122.41856217384338, 37.78843325395142 ], [ -122.41865873336793, 37.78891230295563 ], [ -122.41875529289247, 37.78937863086172 ], [ -122.41884648799898, 37.78983223791039 ], [ -122.4190664291382, 37.79078183617337 ], [ -122.41907179355621, 37.7907987931743 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41789162158966, 37.801718293529156 ], [ -122.4185299873352, 37.801633521016726 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42246747016907, 37.80409612286167 ], [ -122.42253720760345, 37.804473347217254 ] ] }, "properties": { "class": "street_limited", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42002665996552, 37.79877239166739 ], [ -122.42063820362091, 37.798696093367674 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41568148136139, 37.79914540444266 ], [ -122.41468906402588, 37.799276806221656 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4160248041153, 37.790692811854626 ], [ -122.4161159992218, 37.79115065006551 ], [ -122.4161159992218, 37.79116336775309 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41897523403168, 37.79874272011575 ], [ -122.41998910903932, 37.798598600981116 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41100907325745, 37.795093028375305 ], [ -122.41108417510986, 37.79547029871132 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41387367248535, 37.80270588612963 ], [ -122.41368055343628, 37.801790350088226 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42752611637115, 37.80571096865078 ], [ -122.427499294281, 37.805689776677475 ], [ -122.42723643779755, 37.80551600226697 ], [ -122.42712914943695, 37.80543123411352 ], [ -122.42689311504364, 37.80544818775199 ], [ -122.42672145366669, 37.80546937979462 ], [ -122.42648541927338, 37.80551176386163 ], [ -122.42632985115051, 37.80552871748163 ], [ -122.42621183395386, 37.80551600226699 ], [ -122.42610991001129, 37.80546514138659 ], [ -122.42592215538025, 37.80530408170084 ], [ -122.42583632469176, 37.80520235961308 ], [ -122.42576122283934, 37.805087922096874 ], [ -122.42569684982298, 37.80493957690451 ], [ -122.42565393447875, 37.80481242364534 ], [ -122.4255734682083, 37.80453268570453 ], [ -122.42573976516722, 37.804312285368546 ], [ -122.42616355419158, 37.80425294670417 ], [ -122.42657661437987, 37.80421480039474 ], [ -122.42666244506835, 37.80435043162762 ], [ -122.4268341064453, 37.80506672994478 ], [ -122.42680728435516, 37.805164213794036 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41502702236176, 37.791799249341395 ], [ -122.41505920886993, 37.79193914255643 ], [ -122.41511821746826, 37.792235884863004 ], [ -122.41512358188628, 37.79229523318131 ], [ -122.41521477699278, 37.79274458318729 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41441011428833, 37.79789071761994 ], [ -122.41482853889465, 37.797831373796456 ], [ -122.41508603096008, 37.79780170186684 ], [ -122.41526842117308, 37.797784746473134 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43122220039368, 37.80098500807743 ], [ -122.4319839477539, 37.80088751871189 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41989254951477, 37.79812809243717 ], [ -122.41998910903932, 37.798598600981116 ], [ -122.42002665996552, 37.79877239166739 ], [ -122.42008566856384, 37.799064867752875 ], [ -122.42014467716217, 37.79935310392155 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42183446884155, 37.80354935604959 ], [ -122.42193102836609, 37.803557833085314 ], [ -122.42217242717743, 37.80355359456757 ], [ -122.4224352836609, 37.80354087901289 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42001593112946, 37.80388843671987 ], [ -122.41856217384338, 37.80407916891281 ], [ -122.41849780082703, 37.8040706919369 ], [ -122.41845488548279, 37.80405373798221 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41000592708588, 37.79605527587214 ], [ -122.41162061691284, 37.79583908920016 ], [ -122.41163671016692, 37.79583908920016 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41903424263, 37.80279489597278 ], [ -122.41892158985138, 37.802269312488406 ], [ -122.41892158985138, 37.802239642341455 ], [ -122.41892695426941, 37.802214210777436 ], [ -122.41894841194153, 37.80218877920469 ], [ -122.41896986961365, 37.802171824817975 ], [ -122.41899669170378, 37.802159109025396 ], [ -122.41900205612181, 37.80214639323063 ], [ -122.41900742053984, 37.80213367743367 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41190493106842, 37.79263436551425 ], [ -122.41181910037994, 37.792210449854856 ], [ -122.41171717643738, 37.79172294383976 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41530060768127, 37.79728879948555 ], [ -122.41689383983612, 37.79708957198048 ], [ -122.41694211959839, 37.79707261642332 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41913080215454, 37.79951417658475 ], [ -122.41874992847443, 37.79956080281643 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41508603096008, 37.79780170186684 ], [ -122.4151611328125, 37.79822134662093 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41000592708588, 37.794313047639136 ], [ -122.41008639335631, 37.794707278062184 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42676973342896, 37.7996922038565 ], [ -122.42685556411743, 37.80010336043956 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4203485250473, 37.799030957541454 ], [ -122.42044508457184, 37.79950569908492 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4220597743988, 37.797373576984334 ], [ -122.42317020893096, 37.79724217181975 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4171245098114, 37.79609342639566 ], [ -122.41717278957367, 37.79634352378406 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42229580879211, 37.80259144474508 ], [ -122.4224352836609, 37.80257449045081 ], [ -122.42300927639009, 37.80250243465672 ], [ -122.42309510707857, 37.802489718921066 ], [ -122.42319703102113, 37.80247700318321 ], [ -122.42455422878267, 37.802303221213165 ], [ -122.42467224597932, 37.8022905054432 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42712914943695, 37.80543123411352 ], [ -122.42722570896149, 37.80571096865078 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42828786373138, 37.80571096865078 ], [ -122.42864191532135, 37.80565163111018 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41902351379395, 37.79490227297768 ], [ -122.41912007331848, 37.795360085104505 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41649150848389, 37.79952689283269 ], [ -122.41658806800842, 37.79999739246696 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42028415203094, 37.80523626699121 ], [ -122.42078304290771, 37.805172690644405 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41833686828613, 37.798640988991096 ], [ -122.41893768310547, 37.79856892935968 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.412548661232, 37.80034072814651 ], [ -122.41257011890411, 37.800336489444156 ], [ -122.41312265396118, 37.800251715345794 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.801387680180454 ], [ -122.40938365459442, 37.801379202895646 ], [ -122.41014003753662, 37.80128171405037 ], [ -122.41054773330688, 37.80123085025394 ], [ -122.41102516651154, 37.80117574776828 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41275787353516, 37.80143006658992 ], [ -122.41279006004333, 37.80143006658992 ], [ -122.41439938545227, 37.80122661160265 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4148553609848, 37.80116727045915 ], [ -122.41605699062349, 37.801010440064665 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4297684431076, 37.799149643213354 ], [ -122.43082523345947, 37.7990140024299 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4284166097641, 37.80374008911817 ], [ -122.42821276187898, 37.80279489597278 ], [ -122.42802500724794, 37.801862406576994 ], [ -122.42785871028902, 37.801014678728365 ], [ -122.42784261703493, 37.800942621412574 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43134021759033, 37.79710652753374 ], [ -122.4314421415329, 37.797606714604264 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41912543773651, 37.79948874408232 ], [ -122.42014467716217, 37.79935310392155 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41422235965729, 37.80030257981648 ], [ -122.41433501243591, 37.800289863702076 ], [ -122.41478562355042, 37.80023052180601 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41583168506622, 37.791544897362755 ], [ -122.41630375385284, 37.791489787651976 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43186593055725, 37.80424446974821 ], [ -122.4319839477539, 37.80423175431249 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41470515727997, 37.79036638843492 ], [ -122.41464614868164, 37.79003572427978 ] ] }, "properties": { "class": "street_limited", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41187274456024, 37.79700055526198 ], [ -122.41185665130615, 37.79700055526198 ], [ -122.41121828556061, 37.79709381086916 ], [ -122.41106808185577, 37.797140438628595 ], [ -122.41048336029051, 37.79726336621694 ], [ -122.41038680076598, 37.797271843974116 ], [ -122.41034924983978, 37.797271843974116 ], [ -122.41030097007751, 37.797259127338 ], [ -122.41022050380707, 37.79721249965347 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41190493106842, 37.79263436551425 ], [ -122.41211950778961, 37.79352881957535 ] ] }, "properties": { "class": "street", "oneway": -1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42927491664886, 37.79134141514943 ], [ -122.43091642856598, 37.79113369314532 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40990400314331, 37.795618662922415 ], [ -122.40956604480742, 37.79566105264231 ], [ -122.40936756134032, 37.795686486462564 ], [ -122.40933001041412, 37.795694964400674 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4112719297409, 37.794062943376915 ], [ -122.41135239601135, 37.794058704314324 ], [ -122.41186201572418, 37.79399087927983 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41900742053986, 37.798916510462924 ], [ -122.4188894033432, 37.798929226813755 ], [ -122.41848707199097, 37.798963137071866 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42682337760925, 37.80419784647312 ], [ -122.4269038438797, 37.80426990061314 ], [ -122.42696821689606, 37.804341954682855 ], [ -122.4272632598877, 37.804876000302286 ], [ -122.42730617523195, 37.804952292218374 ], [ -122.4273544549942, 37.80500739188654 ], [ -122.42741882801056, 37.80505401465057 ], [ -122.427499294281, 37.805096398955996 ], [ -122.42759048938751, 37.805134544810045 ], [ -122.42767095565796, 37.80515149851663 ], [ -122.42778897285461, 37.80515573694268 ], [ -122.42791771888733, 37.80513878323706 ], [ -122.42803037166595, 37.805104875814145 ], [ -122.42821276187897, 37.804998915017194 ], [ -122.42823421955109, 37.80515573694268 ], [ -122.42825031280516, 37.805244743833335 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42825031280518, 37.805244743833335 ], [ -122.4272632598877, 37.80537189634818 ], [ -122.42719352245332, 37.805388850000256 ], [ -122.42712914943696, 37.80543123411352 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41357862949371, 37.80038735385647 ], [ -122.41422235965729, 37.80030257981648 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41346061229706, 37.79652579761845 ], [ -122.41510748863222, 37.796326568055655 ], [ -122.41674900054932, 37.79611886006703 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4282556772232, 37.803918106204456 ], [ -122.42833077907562, 37.8038969137167 ], [ -122.42840588092804, 37.803884198221105 ], [ -122.42882966995239, 37.80388843671987 ], [ -122.42887258529663, 37.80390115221473 ], [ -122.42889940738678, 37.803930821694195 ], [ -122.42893695831297, 37.804049499492926 ], [ -122.42893159389496, 37.804087645887726 ], [ -122.42891013622284, 37.80412155377767 ], [ -122.42888331413269, 37.80414274620098 ], [ -122.42884576320648, 37.80415546165205 ], [ -122.42865800857544, 37.80418936951085 ], [ -122.42853999137878, 37.80422327735411 ], [ -122.42843806743622, 37.80427837756618 ], [ -122.42835760116579, 37.804358908571395 ], [ -122.42833614349365, 37.804439439488824 ], [ -122.42829859256746, 37.80481242364534 ], [ -122.42827177047731, 37.80489295406824 ], [ -122.42823958396913, 37.80496076909309 ], [ -122.42821276187898, 37.804998915017194 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4272632598877, 37.804045261003395 ], [ -122.42763876914978, 37.80474460848425 ], [ -122.42768704891205, 37.80479546986092 ], [ -122.4277514219284, 37.8048081851996 ], [ -122.42781579494476, 37.80479970830737 ], [ -122.42786943912508, 37.80476580072879 ], [ -122.42789626121521, 37.80470646242878 ], [ -122.42794990539551, 37.804235992791284 ], [ -122.4279659986496, 37.80415546165205 ], [ -122.4280035495758, 37.804083407400384 ], [ -122.42806792259216, 37.80401559156988 ], [ -122.42814302444458, 37.80396472965615 ], [ -122.4282556772232, 37.803918106204456 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4282556772232, 37.803918106204456 ], [ -122.42797672748566, 37.80397744513788 ], [ -122.4277514219284, 37.8040155915699 ], [ -122.42751002311707, 37.80404102251361 ], [ -122.4272632598877, 37.804045261003395 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4272632598877, 37.804045261003395 ], [ -122.42712378501892, 37.80405797647123 ], [ -122.42707014083862, 37.80406645344859 ], [ -122.42702186107635, 37.804087645887726 ], [ -122.42698431015016, 37.80411307680662 ], [ -122.42695212364197, 37.80415546165205 ], [ -122.42693066596985, 37.80420632343443 ], [ -122.42690384387971, 37.80426990061314 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4272471666336, 37.80521931330409 ], [ -122.42726862430573, 37.8051938827661 ], [ -122.42727935314178, 37.80516845221935 ], [ -122.42729008197784, 37.805113352671334 ], [ -122.42729544639587, 37.80504129935424 ], [ -122.42728471755981, 37.80496076909309 ], [ -122.4272632598877, 37.804876000302286 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.418133020401, 37.798840212312086 ], [ -122.41822957992555, 37.79930223879704 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4148553609848, 37.80116727045915 ], [ -122.41495192050935, 37.80163775964465 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4107837677002, 37.794122290227605 ], [ -122.4112719297409, 37.794062943376915 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41750538349152, 37.8042020849539 ], [ -122.41760730743408, 37.80476580072879 ], [ -122.41787552833557, 37.80473189313464 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41908252239227, 37.80112064524151 ], [ -122.41913616657257, 37.80140887338821 ], [ -122.4191629886627, 37.80154027114065 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41912007331848, 37.795360085104505 ], [ -122.41926491260529, 37.796072231662805 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41467833518982, 37.79712348308311 ], [ -122.41482853889467, 37.797831373796456 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41274178028107, 37.79299469191242 ], [ -122.41438865661621, 37.792786974556215 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42229580879211, 37.80259144474508 ], [ -122.42238700389862, 37.803053447766 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42216169834137, 37.80196413326501 ], [ -122.42223143577576, 37.802387992956945 ], [ -122.42239773273468, 37.80248124176272 ], [ -122.42243528366089, 37.80257449045078 ] ] }, "properties": { "class": "street_limited", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41362690925598, 37.80275674891027 ], [ -122.41371810436249, 37.80322298943413 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41187274456024, 37.798780869251374 ], [ -122.41194248199463, 37.799141165671685 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41620719432831, 37.79165935586148 ], [ -122.41629302501678, 37.79208327468276 ], [ -122.41629302501678, 37.79214262312365 ], [ -122.41637349128723, 37.79252838682742 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42610991001129, 37.8007434037619 ], [ -122.42656588554382, 37.80055266295457 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41276323795319, 37.80334166837025 ], [ -122.41285443305969, 37.803807905201644 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41667926311493, 37.80044669562654 ], [ -122.41675436496735, 37.80085784800986 ] ] }, "properties": { "class": "street_limited", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4195009469986, 37.79722945517852 ], [ -122.41962432861328, 37.79786104571417 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42494583129883, 37.801209656995105 ], [ -122.42472052574158, 37.801218134299376 ], [ -122.42464542388916, 37.801196941036885 ], [ -122.42459177970886, 37.801141838525915 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43024587631226, 37.787814301082065 ], [ -122.43035852909088, 37.78836966314214 ], [ -122.43055164813995, 37.78932775886951 ], [ -122.430739402771, 37.79025616721429 ], [ -122.43091642856598, 37.79113369314532 ], [ -122.43109345436096, 37.79201120865472 ], [ -122.43126511573792, 37.79289295287215 ], [ -122.43138313293457, 37.79344827676231 ], [ -122.43145287036896, 37.793770447487695 ], [ -122.43163526058197, 37.79468608293166 ], [ -122.43182301521301, 37.79564409675727 ], [ -122.4319839477539, 37.79641982451366 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41788625717163, 37.78804322945978 ], [ -122.41784870624542, 37.787814301082065 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41751074790955, 37.79000604921915 ], [ -122.41759121417998, 37.79030703856731 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41841733455658, 37.78988734885741 ], [ -122.41848170757294, 37.79020105654232 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41765022277832, 37.78903524423471 ], [ -122.4177360534668, 37.789518528659656 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.415069937706, 37.787814301082065 ], [ -122.41518795490265, 37.78839086008464 ], [ -122.41538107395172, 37.78934471620411 ], [ -122.4155741930008, 37.79025616721429 ], [ -122.4156868457794, 37.79081151092244 ], [ -122.41575121879578, 37.791116736221234 ], [ -122.41576731204985, 37.791209999255514 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41186201572418, 37.80536341952066 ], [ -122.41351962089539, 37.80515573694268 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40942120552063, 37.80571096865078 ], [ -122.40933001041412, 37.80525745909466 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41539716720581, 37.7977593133753 ], [ -122.41703867912292, 37.79755160941504 ], [ -122.4186909198761, 37.797339665996496 ], [ -122.4195009469986, 37.79722945517852 ], [ -122.42031633853912, 37.797110766421454 ], [ -122.42196321487427, 37.79690306063772 ], [ -122.42352962493898, 37.79669959318127 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42233872413635, 37.79877239166739 ], [ -122.42244601249696, 37.79875967528956 ], [ -122.4237871170044, 37.79857740696702 ], [ -122.42390513420106, 37.79856469055563 ], [ -122.42406070232393, 37.79854349653181 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41658806800842, 37.79902671876394 ], [ -122.41731226444244, 37.79894618194477 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.79296501804014 ], [ -122.4093461036682, 37.792960778914576 ], [ -122.40936219692229, 37.792960778914576 ], [ -122.40937829017638, 37.792956539788726 ], [ -122.4097108840942, 37.792922626773354 ], [ -122.4110037088394, 37.792765778874795 ], [ -122.41112172603606, 37.79273610491059 ], [ -122.4119049310684, 37.79263436551425 ], [ -122.4122428894043, 37.79259197405775 ], [ -122.41265058517456, 37.79254110427786 ], [ -122.4142974615097, 37.792337624808056 ], [ -122.41511821746826, 37.79223588486298 ], [ -122.41552591323853, 37.7921807756676 ], [ -122.41594970226288, 37.79212990560459 ], [ -122.41629302501678, 37.79208327468274 ], [ -122.41760194301604, 37.79192642500235 ], [ -122.41923272609709, 37.791701747853054 ], [ -122.42088496685027, 37.79149402686194 ], [ -122.4224406480789, 37.79130750139274 ], [ -122.42259621620177, 37.79129054450855 ], [ -122.42415189743042, 37.79109130082783 ], [ -122.42580950260162, 37.79087933887556 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.796597859242894 ], [ -122.41009712219237, 37.79650036408717 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42580950260162, 37.79087933887559 ], [ -122.42745101451874, 37.79066737631527 ], [ -122.42754757404327, 37.790658897800206 ], [ -122.42909252643585, 37.79045965241627 ], [ -122.430739402771, 37.79025616721429 ], [ -122.4319839477539, 37.7900950743653 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42782652378082, 37.80084513199106 ], [ -122.42781043052673, 37.80076459715455 ], [ -122.42767095565796, 37.80006521198694 ], [ -122.4276602268219, 37.80000163118878 ], [ -122.42764413356781, 37.79992957288471 ], [ -122.42746710777283, 37.79906910652822 ], [ -122.42727935314178, 37.79813657009509 ], [ -122.42709159851074, 37.7972040218895 ], [ -122.42690920829773, 37.796275700847126 ], [ -122.42671072483063, 37.79532193420228 ], [ -122.42660343647003, 37.79479205852346 ], [ -122.42652833461761, 37.79440206759597 ], [ -122.42636740207672, 37.79362631865265 ], [ -122.42632985115051, 37.79351610229493 ], [ -122.42629766464233, 37.79343132036946 ], [ -122.42616355419159, 37.7927784962844 ], [ -122.42615282535553, 37.79263860465857 ], [ -122.42614209651947, 37.79250719107183 ], [ -122.42600798606873, 37.79188403313971 ], [ -122.42598116397858, 37.79176109660045 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42398023605347, 37.79016290297611 ], [ -122.42561638355255, 37.7899551776589 ], [ -122.4272632598877, 37.78974321244753 ], [ -122.42891013622285, 37.789535485950495 ], [ -122.43055164813995, 37.78932775886951 ], [ -122.4319839477539, 37.789145467276555 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42598116397858, 37.791761096600425 ], [ -122.42580950260162, 37.79087933887556 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4285614490509, 37.787814301082065 ], [ -122.42871701717377, 37.78857739291647 ], [ -122.42891013622284, 37.789535485950495 ], [ -122.42909252643584, 37.79045965241627 ], [ -122.42927491664885, 37.79134141514943 ], [ -122.42945194244383, 37.792218928191865 ], [ -122.42962896823882, 37.793100669930396 ], [ -122.4298059940338, 37.79397816207892 ], [ -122.42999374866484, 37.79489803396326 ], [ -122.43018686771391, 37.79585604504041 ], [ -122.43037462234496, 37.79678437135622 ], [ -122.430562376976, 37.797716924859415 ], [ -122.43075013160704, 37.79864946659016 ], [ -122.43082523345946, 37.7990140024299 ], [ -122.43093788623808, 37.799581996548376 ], [ -122.43110954761504, 37.800366160355566 ], [ -122.4311202764511, 37.80042974083997 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42158770561218, 37.795029443297494 ], [ -122.42314875125885, 37.79483020969929 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42615282535553, 37.79263860465855 ], [ -122.42451667785645, 37.792850561564016 ], [ -122.42295563220978, 37.79304980050074 ], [ -122.42280006408691, 37.79306251786141 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42314338684082, 37.79392729325345 ], [ -122.4246883392334, 37.79372805668306 ], [ -122.42632985115051, 37.79351610229493 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42314875125885, 37.79483020969929 ], [ -122.42330431938171, 37.794809014604034 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42280006408691, 37.79306251786141 ], [ -122.42122828960419, 37.79327023444296 ], [ -122.4195921421051, 37.7934779504405 ], [ -122.41797208786011, 37.79368142676982 ], [ -122.41793990135193, 37.79368566585406 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42632985115051, 37.79351610229493 ], [ -122.42798745632172, 37.79330838640464 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42798745632172, 37.79330838640464 ], [ -122.42815911769867, 37.79419011514147 ], [ -122.42834150791168, 37.79512270139288 ], [ -122.42853999137878, 37.79606375376797 ], [ -122.42872774600983, 37.79699207747368 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42798745632172, 37.79330838640464 ], [ -122.4280196428299, 37.79318121312238 ], [ -122.42793381214142, 37.79274034404906 ], [ -122.42788553237915, 37.7926725178043 ], [ -122.4279123544693, 37.792579256616065 ], [ -122.42789089679718, 37.79248175615706 ], [ -122.42783725261688, 37.792426647145035 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42783725261688, 37.792426647145035 ], [ -122.42781043052673, 37.792490234462946 ], [ -122.42783188819885, 37.79261740893458 ], [ -122.42788553237915, 37.7926725178043 ], [ -122.42785334587097, 37.79274882232528 ], [ -122.42791771888733, 37.79318969134799 ], [ -122.42798745632172, 37.79330838640464 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4108213186264, 37.791837402062676 ], [ -122.41076231002808, 37.79153217974085 ], [ -122.41062819957733, 37.79088357812059 ], [ -122.4105316400528, 37.79039182407786 ], [ -122.41044580936432, 37.78995941695693 ], [ -122.41025805473328, 37.78901828682906 ], [ -122.41016685962677, 37.78855195664898 ], [ -122.41007566452026, 37.78808138412048 ], [ -122.41002202033997, 37.787814301082065 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42615282535553, 37.79263860465855 ], [ -122.42783725261688, 37.79242664714506 ], [ -122.42808938026428, 37.792392733886466 ], [ -122.42945194244385, 37.792218928191865 ], [ -122.43109345436096, 37.79201120865472 ], [ -122.43198394775389, 37.791896750701035 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42798745632172, 37.79330838640464 ], [ -122.42962896823883, 37.793100669930396 ], [ -122.43126511573792, 37.79289295287215 ], [ -122.4319839477539, 37.79279969196218 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41812765598297, 37.794567390088325 ], [ -122.41814911365509, 37.79456315105469 ], [ -122.41892695426941, 37.79446141417424 ], [ -122.41976916790009, 37.79435967715371 ], [ -122.42140531539917, 37.794147724577606 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42069184780121, 37.79057835185864 ], [ -122.42088496685028, 37.79149402686194 ], [ -122.42106199264526, 37.792396973044646 ], [ -122.42122828960419, 37.79327023444296 ], [ -122.42140531539917, 37.794147724577606 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42140531539917, 37.794147724577606 ], [ -122.42296099662781, 37.79394848860165 ], [ -122.42314338684082, 37.79392729325345 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.79976002365667 ], [ -122.41015613079071, 37.800323773335606 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41722643375397, 37.805172690644405 ], [ -122.41800963878632, 37.80571096865078 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41096079349518, 37.800883280040885 ], [ -122.41130948066713, 37.801141838525915 ], [ -122.41149723529817, 37.80124780485665 ], [ -122.41243600845338, 37.80190055410142 ], [ -122.41266667842866, 37.80205738260592 ], [ -122.41290807724, 37.80218454060837 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41015613079071, 37.800323773335606 ], [ -122.41038680076599, 37.80048484388214 ], [ -122.41077303886414, 37.800756119798216 ], [ -122.41096079349518, 37.800883280040885 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42542326450348, 37.78899709006654 ], [ -122.42533206939697, 37.78853923851192 ], [ -122.42524087429047, 37.78807290530868 ], [ -122.42518723011017, 37.787814301082044 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41391122341156, 37.79045965241627 ], [ -122.41374492645264, 37.789548203916084 ], [ -122.41355180740356, 37.78860282917525 ], [ -122.41341233253479, 37.78794572301528 ], [ -122.41338551044464, 37.787814301082065 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41095542907715, 37.80077731318719 ], [ -122.4102795124054, 37.800311057224846 ], [ -122.40933001041412, 37.799649816449765 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42040753364563, 37.80571096865078 ], [ -122.42201149463654, 37.80549481023774 ], [ -122.42365837097168, 37.80528712802926 ], [ -122.42425918579102, 37.80521507488171 ], [ -122.42461860179901, 37.80516845221935 ], [ -122.42520332336426, 37.805096398955996 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41688847541809, 37.80521507488171 ], [ -122.41722643375397, 37.805172690644405 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41169035434723, 37.787814301082065 ], [ -122.41170108318329, 37.787873652951795 ], [ -122.41176009178162, 37.78815345398132 ], [ -122.41181910037994, 37.78848412655941 ], [ -122.41188883781433, 37.78881055829413 ], [ -122.41207659244537, 37.78974321244753 ], [ -122.4121570587158, 37.7901247493902 ], [ -122.41226971149443, 37.790675854829374 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42350280284882, 37.787814301082065 ], [ -122.42359399795532, 37.78828063591724 ], [ -122.42369055747986, 37.78874696780958 ], [ -122.42378175258636, 37.78920481807711 ], [ -122.42398023605347, 37.79016290297611 ], [ -122.42415189743042, 37.79109130082786 ], [ -122.42433965206148, 37.79197305602321 ], [ -122.42451667785646, 37.79285056156404 ], [ -122.42468833923341, 37.79372805668306 ], [ -122.42486000061037, 37.79460978041143 ], [ -122.42505848407747, 37.79552964443154 ], [ -122.42524087429048, 37.79642406344077 ], [ -122.42525160312654, 37.7964834083948 ], [ -122.42543935775758, 37.79741172682703 ], [ -122.42562711238863, 37.798344272410596 ], [ -122.42579877376558, 37.79920050844297 ], [ -122.42581486701967, 37.799276806221684 ], [ -122.42583096027376, 37.799348865162536 ], [ -122.42599189281465, 37.8001542250124 ], [ -122.42600262165071, 37.80020932826014 ], [ -122.42602407932283, 37.80029834111194 ], [ -122.4261099100113, 37.8007434037619 ], [ -122.42618501186375, 37.801052826690615 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41951704025269, 37.796212116787245 ], [ -122.42012321949005, 37.79614429372968 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42446303367615, 37.80132833916636 ], [ -122.4244898557663, 37.80144278250799 ], [ -122.42465615272522, 37.80220997218259 ], [ -122.42467224597931, 37.802290505443175 ], [ -122.42468833923338, 37.802379515786924 ], [ -122.42484390735625, 37.803218750897145 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41145431995392, 37.80112064524151 ], [ -122.41095542907715, 37.80077731318719 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41722643375397, 37.805172690644405 ], [ -122.41855680942535, 37.80500739188654 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41949558258057, 37.79613157689948 ], [ -122.41784870624542, 37.796335045920344 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41282761096954, 37.80571096865078 ], [ -122.41360545158385, 37.80561772392276 ], [ -122.41476953029631, 37.805473618202406 ], [ -122.41524159908295, 37.80541851888209 ], [ -122.41688847541809, 37.80521507488168 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42181837558746, 37.80456659339016 ], [ -122.42253720760345, 37.804473347217254 ], [ -122.42347061634064, 37.804358908571395 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42019295692444, 37.80478699296722 ], [ -122.42174863815309, 37.80457507030913 ], [ -122.42181837558746, 37.80456659339016 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41855680942535, 37.80500739188654 ], [ -122.42019295692444, 37.80478699296722 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.79754313168997 ], [ -122.40972697734833, 37.79749226531914 ], [ -122.41025805473328, 37.79741596569721 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41104662418365, 37.797314232745414 ], [ -122.41128802299501, 37.797254888458816 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42347061634064, 37.804358908571395 ], [ -122.42502093315125, 37.804159700135244 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.79104890848602 ], [ -122.41062819957732, 37.79088357812059 ], [ -122.41099834442137, 37.79083694641215 ], [ -122.41226971149443, 37.79067585482935 ], [ -122.41391122341155, 37.79045965241627 ], [ -122.41470515727995, 37.79036638843492 ], [ -122.4155741930008, 37.79025616721429 ], [ -122.41596579551695, 37.790205295826226 ], [ -122.41720497608183, 37.79004844215926 ], [ -122.41751074790955, 37.79000604921912 ], [ -122.41841733455658, 37.78988734885741 ], [ -122.41884648799896, 37.78983223791036 ], [ -122.4204933643341, 37.78962027234633 ], [ -122.42206513881683, 37.789421024161776 ], [ -122.4222207069397, 37.78940406684465 ], [ -122.42378175258636, 37.78920481807708 ], [ -122.42542326450348, 37.78899709006654 ], [ -122.4270647764206, 37.78878936147201 ], [ -122.42871701717375, 37.78857739291647 ], [ -122.43035852909087, 37.78836966314214 ], [ -122.43198394775389, 37.788161932783865 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43086814880371, 37.80343067744717 ], [ -122.4314957857132, 37.80338405365836 ], [ -122.4315494298935, 37.80338829218583 ], [ -122.43159770965576, 37.803405246293295 ], [ -122.43163526058197, 37.80343067744717 ], [ -122.4316620826721, 37.803464585638764 ], [ -122.43173718452452, 37.80362564933614 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42517650127411, 37.80413850771679 ], [ -122.4249941110611, 37.8031975582087 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42461860179901, 37.80134529374666 ], [ -122.42462933063507, 37.80129019134637 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43086814880371, 37.80343067744717 ], [ -122.43168354034424, 37.80327809039246 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42517650127411, 37.80413850771679 ], [ -122.42547690868378, 37.80410459983463 ], [ -122.42676973342896, 37.80394353718175 ], [ -122.4284166097641, 37.80374008911817 ], [ -122.43006348609924, 37.803532401975176 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42462933063507, 37.80129019134637 ], [ -122.42461860179901, 37.80125204350671 ], [ -122.42459177970888, 37.801141838525915 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43173718452454, 37.80362564933614 ], [ -122.43186593055727, 37.80424446974821 ], [ -122.43190348148346, 37.80441824715063 ], [ -122.4319839477539, 37.80481666209083 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42502093315125, 37.804159700135244 ], [ -122.42517650127411, 37.80413850771679 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42536962032318, 37.805075206806336 ], [ -122.42520332336426, 37.805096398955996 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43006348609924, 37.803532401975204 ], [ -122.43086814880373, 37.80343067744717 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42536962032318, 37.805075206806336 ], [ -122.42517650127411, 37.80413850771679 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42010712623596, 37.79606375376797 ], [ -122.41949558258057, 37.79613157689948 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42618501186371, 37.801052826690615 ], [ -122.4262011051178, 37.80115455449363 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43173718452454, 37.80362564933614 ], [ -122.4317479133606, 37.80354935604959 ], [ -122.4317479133606, 37.80347306268421 ], [ -122.43173718452454, 37.80339676924006 ], [ -122.43171572685242, 37.803337429840084 ], [ -122.43168354034424, 37.80327809039246 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42484390735626, 37.803218750897145 ], [ -122.42502093315125, 37.804159700135244 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42727398872375, 37.787814301082065 ], [ -122.42686629295349, 37.78786517411618 ], [ -122.42524087429047, 37.78807290530868 ], [ -122.42359399795532, 37.78828063591724 ], [ -122.42202758789062, 37.78847140841073 ], [ -122.42187738418578, 37.788492605324016 ], [ -122.42031097412108, 37.78870033475276 ], [ -122.4186587333679, 37.78891230295563 ], [ -122.4176502227783, 37.78903524423471 ], [ -122.41701722145079, 37.789111552511926 ], [ -122.41576731204985, 37.78929384418857 ], [ -122.4153810739517, 37.78934471620411 ], [ -122.41450130939484, 37.78945069945736 ], [ -122.41374492645264, 37.789548203916084 ], [ -122.41207659244537, 37.78974321244753 ], [ -122.41044580936432, 37.78995941695691 ], [ -122.40933001041412, 37.79010779223455 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42012321949005, 37.79614429372968 ], [ -122.42099225521089, 37.79608070955667 ], [ -122.42163598537446, 37.79600016952563 ], [ -122.42177009582521, 37.79594506313799 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41025805473328, 37.79741596569721 ], [ -122.41039216518402, 37.797445637781784 ], [ -122.41104662418365, 37.797314232745414 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4217700958252, 37.795945063138014 ], [ -122.42332577705383, 37.79574159304304 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41785407066345, 37.79641558558629 ], [ -122.41951704025269, 37.79621211678722 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4217700958252, 37.795945063138014 ], [ -122.42162525653839, 37.79593234627349 ], [ -122.42098689079285, 37.79601288637848 ], [ -122.42021441459654, 37.79605951482018 ], [ -122.42010712623595, 37.79606375376797 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4319839477539, 37.788068665902436 ], [ -122.43193030357361, 37.787814301082065 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4112719297409, 37.7971785885917 ], [ -122.41111636161804, 37.7972040218895 ], [ -122.41084277629852, 37.79726336621694 ], [ -122.41038680076599, 37.79736086036572 ], [ -122.41025805473328, 37.79741596569723 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41290807723999, 37.802184540608394 ], [ -122.41273105144501, 37.80200228073689 ], [ -122.41260766983032, 37.80192174716204 ], [ -122.41245746612549, 37.80182425903287 ], [ -122.41145431995392, 37.80112064524154 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42332577705383, 37.79574159304304 ], [ -122.42348670959474, 37.7957246371765 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4249941110611, 37.8031975582087 ], [ -122.42482781410217, 37.80237103861598 ], [ -122.42480635643005, 37.802269312488406 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42480635643005, 37.802269312488406 ], [ -122.42479026317598, 37.802197256396575 ], [ -122.42463469505311, 37.80142158930995 ], [ -122.42461860179903, 37.80134529374666 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41290807723999, 37.802184540608394 ], [ -122.41372346878053, 37.8027440332184 ], [ -122.4146729707718, 37.80340100776679 ], [ -122.41488218307497, 37.80354511753136 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41722643375397, 37.805172690644405 ], [ -122.41683483123781, 37.804833615870386 ], [ -122.41614818573, 37.80434619315537 ], [ -122.41555809974672, 37.80395201417224 ], [ -122.41515040397645, 37.803668034461275 ], [ -122.41488218307497, 37.80354511753136 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42502093315125, 37.804159700135244 ], [ -122.42520332336426, 37.805096398955996 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41488218307495, 37.80354511753136 ], [ -122.41509675979614, 37.80374008911819 ], [ -122.41598725318907, 37.8043673855142 ], [ -122.41685092449187, 37.804977722839574 ], [ -122.41722643375395, 37.805172690644405 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42618501186371, 37.801052826690615 ], [ -122.4260938167572, 37.80106554267365 ], [ -122.42494583129883, 37.801209656995105 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42173790931702, 37.787814301082065 ], [ -122.42177546024321, 37.7880177930084 ], [ -122.42187738418578, 37.788492605324016 ], [ -122.42196857929228, 37.78896741458879 ], [ -122.42206513881682, 37.7894210241618 ], [ -122.42223680019379, 37.79034519205912 ], [ -122.42225289344786, 37.79042573825485 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42314875125885, 37.79483020969929 ], [ -122.42332577705383, 37.79574159304304 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42443084716797, 37.80041278604948 ], [ -122.4244147539139, 37.800336489444156 ], [ -122.42426991462709, 37.79956928030996 ], [ -122.42424845695497, 37.79947602782785 ], [ -122.42423772811891, 37.79942092403308 ], [ -122.424076795578, 37.79862403379003 ], [ -122.42406070232393, 37.79854349653181 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43112027645111, 37.80042974083997 ], [ -122.43102371692657, 37.80044245693027 ], [ -122.42958068847656, 37.80062472065078 ], [ -122.42946803569794, 37.800637436707525 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42332577705383, 37.79574159304304 ], [ -122.42352962493896, 37.79669959318127 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42946803569794, 37.800637436707525 ], [ -122.42936611175537, 37.80065439144644 ], [ -122.42790699005127, 37.80083665464399 ], [ -122.42782652378084, 37.80084513199108 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4319839477539, 37.80031529592869 ], [ -122.43121147155762, 37.800417024747446 ], [ -122.43112027645111, 37.80042974083997 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42280006408691, 37.79306251786141 ], [ -122.42296099662781, 37.79394848860165 ], [ -122.42314875125885, 37.79483020969929 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42387294769287, 37.797615192322034 ], [ -122.42368519306183, 37.79667839862234 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42461860179901, 37.80134529374666 ], [ -122.42471516132356, 37.80133257781179 ], [ -122.4261099100113, 37.80116727045915 ], [ -122.4262011051178, 37.80115455449363 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42406070232391, 37.79854349653181 ], [ -122.42404460906982, 37.79847143680532 ], [ -122.42387294769287, 37.797615192322034 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42352962493896, 37.79669959318127 ], [ -122.42372810840607, 37.797636386612204 ], [ -122.42388904094696, 37.79848839204139 ], [ -122.42390513420105, 37.79856469055563 ], [ -122.42392659187317, 37.798657944188264 ], [ -122.42408215999603, 37.79942940154263 ], [ -122.42409288883209, 37.79949722158409 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42459177970886, 37.801141838525915 ], [ -122.42456495761871, 37.801052826690615 ], [ -122.42444694042206, 37.80048908257599 ], [ -122.42443084716797, 37.80041278604948 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42314338684082, 37.79392729325345 ], [ -122.42295563220978, 37.79304980050074 ], [ -122.42278397083281, 37.792168058155134 ], [ -122.42259621620177, 37.79129054450855 ], [ -122.42242455482481, 37.790396063350826 ], [ -122.42240846157073, 37.79032823495405 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42948412895203, 37.80073492640316 ], [ -122.42960214614868, 37.800722210363176 ], [ -122.43103444576263, 37.80053994688323 ], [ -122.4311363697052, 37.80052299211805 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42240846157074, 37.790328234954075 ], [ -122.4222207069397, 37.789404066844675 ], [ -122.42212414741516, 37.78894197845551 ], [ -122.42202758789062, 37.78847140841073 ], [ -122.42193639278412, 37.788000835369274 ], [ -122.42189347743988, 37.787814301082044 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42368519306183, 37.79667839862234 ], [ -122.42348670959473, 37.7957246371765 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42784261703491, 37.800942621412574 ], [ -122.42792308330536, 37.800929905408374 ], [ -122.42939829826355, 37.80074764244092 ], [ -122.42948412895203, 37.80073492640316 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42782652378082, 37.80084513199106 ], [ -122.42774605751038, 37.80085784800986 ], [ -122.42618501186371, 37.801052826690615 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42330431938171, 37.794809014604034 ], [ -122.42314338684082, 37.79392729325345 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42225289344788, 37.79042573825485 ], [ -122.42244064807892, 37.79130750139274 ], [ -122.42262303829193, 37.792185014837955 ], [ -122.42280006408691, 37.793062517861436 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42409288883209, 37.79949722158412 ], [ -122.42411434650421, 37.79959047403946 ], [ -122.42426991462708, 37.80035768295351 ], [ -122.42428600788116, 37.800429740839945 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4311363697052, 37.80052299211805 ], [ -122.43123292922974, 37.80051451473398 ], [ -122.4319839477539, 37.800417024747446 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42348670959473, 37.7957246371765 ], [ -122.42330431938171, 37.794809014604034 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4262011051178, 37.80115455449363 ], [ -122.42777287960052, 37.80095109874748 ], [ -122.42784261703491, 37.80094262141255 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42428600788116, 37.80042974083997 ], [ -122.42430210113525, 37.800510276041585 ], [ -122.42445766925812, 37.801256282156544 ], [ -122.42445766925812, 37.80129019134637 ], [ -122.42446303367615, 37.80132833916636 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42446303367615, 37.80132833916636 ], [ -122.42461860179901, 37.80134529374666 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41119146347046, 37.79454619491767 ], [ -122.41031169891359, 37.79466064876697 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.792049361266564 ], [ -122.41245746612549, 37.79165511666101 ], [ -122.41312265396118, 37.791566093394444 ], [ -122.41411507129669, 37.79143891711325 ], [ -122.41567075252534, 37.79123967383262 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41686165332794, 37.79108282236141 ], [ -122.41681337356567, 37.79108706159474 ], [ -122.41678655147554, 37.79109130082786 ], [ -122.41675972938539, 37.79109130082786 ], [ -122.416689991951, 37.79108706159474 ], [ -122.41666853427888, 37.79108706159474 ], [ -122.41664707660676, 37.79108706159474 ], [ -122.41660952568058, 37.79109130082786 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40980207920074, 37.79514813539847 ], [ -122.4098128080368, 37.79517780839393 ], [ -122.40981817245483, 37.79520324238054 ], [ -122.4098289012909, 37.79523291535386 ], [ -122.40983963012695, 37.79525411032749 ], [ -122.40984499454497, 37.79528378328038 ], [ -122.40987181663512, 37.79545758176509 ], [ -122.40988254547118, 37.79549149361689 ], [ -122.40989863872527, 37.79552116647442 ], [ -122.40991473197933, 37.795542361365385 ], [ -122.40993618965145, 37.79556355625024 ], [ -122.40995764732357, 37.79557627317825 ], [ -122.40998446941371, 37.79558899010405 ], [ -122.41000592708583, 37.79559746805339 ], [ -122.41003274917598, 37.795601707027686 ], [ -122.41007030010218, 37.795601707027686 ], [ -122.41010248661036, 37.795601707027686 ], [ -122.41108417510982, 37.795474537692954 ], [ -122.41134166717524, 37.79543638684983 ], [ -122.41142213344568, 37.79542790888202 ], [ -122.41151869297022, 37.79541519192849 ], [ -122.41154551506037, 37.7954109529435 ], [ -122.41252720355982, 37.795292261264755 ], [ -122.41318166255945, 37.79519900338339 ], [ -122.41791844367975, 37.794592824285104 ], [ -122.41795599460596, 37.794592824285104 ], [ -122.41798281669611, 37.794592824285104 ], [ -122.41800427436823, 37.794597063317056 ], [ -122.41803109645835, 37.79460554138021 ], [ -122.41805255413047, 37.79461401944239 ], [ -122.41807401180259, 37.794626736533836 ], [ -122.41809546947471, 37.79464369265237 ], [ -122.41811692714683, 37.79466488779506 ], [ -122.41812765598289, 37.79469032195825 ], [ -122.41813838481897, 37.7947199951376 ], [ -122.41814911365503, 37.794745429281804 ], [ -122.4181652069091, 37.79483444871764 ], [ -122.41821348667136, 37.79508031136412 ], [ -122.41828322410575, 37.79541943091325 ], [ -122.41830468177787, 37.79552964443154 ], [ -122.41844415664664, 37.79622059466508 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.792049361266564 ], [ -122.41245746612549, 37.79165511666101 ], [ -122.41312265396118, 37.791566093394444 ], [ -122.41411507129669, 37.79143891711325 ], [ -122.41567075252534, 37.79123967383262 ], [ -122.4158638715744, 37.79121423848154 ], [ -122.41686165332794, 37.79108282236141 ], [ -122.41717278957367, 37.79104466925053 ], [ -122.41767168045044, 37.79098108068854 ], [ -122.41896450519562, 37.79081998941997 ], [ -122.41915762424469, 37.790798793174275 ], [ -122.42060601711273, 37.79061226595001 ], [ -122.42159843444824, 37.790489327294715 ], [ -122.42184519767761, 37.79045541314694 ], [ -122.42207050323486, 37.79042573825485 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41203904151917, 37.79793310603611 ], [ -122.41205513477325, 37.797767791075536 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41516649723053, 37.805028584055684 ], [ -122.41515040397645, 37.80512182952755 ], [ -122.41517186164857, 37.805227790148145 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41226971149445, 37.79517780839393 ], [ -122.41227507591248, 37.79520748137745 ], [ -122.41228580474854, 37.79523291535386 ], [ -122.41230189800261, 37.79525411032749 ], [ -122.41232335567473, 37.79526682730876 ], [ -122.41235017776488, 37.79527954428784 ], [ -122.41237699985503, 37.79528802227267 ], [ -122.4124091863632, 37.79529226126473 ], [ -122.41244137287138, 37.79529650025653 ], [ -122.41247892379756, 37.79529650025653 ], [ -122.41252720355983, 37.79529226126473 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41565465927124, 37.791209999255514 ], [ -122.4140989780426, 37.79141348183073 ], [ -122.41283297538757, 37.79157457180537 ], [ -122.41244673728943, 37.79162544225074 ], [ -122.41206049919128, 37.79166783426177 ], [ -122.41171181201935, 37.79171446544581 ], [ -122.40933001041412, 37.79202392619421 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4097591638565, 37.79493194607189 ], [ -122.40980207920074, 37.79514813539847 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41717278957367, 37.79104466925053 ], [ -122.41722106933594, 37.79104043001474 ], [ -122.41725862026213, 37.79104043001474 ], [ -122.41729080677032, 37.79104466925053 ], [ -122.41731762886046, 37.79104890848602 ], [ -122.41733908653258, 37.79105738695633 ], [ -122.41736590862273, 37.791074343894024 ], [ -122.41738200187679, 37.79108706159474 ], [ -122.41740345954894, 37.79110825775774 ], [ -122.417419552803, 37.79112945391467 ], [ -122.41742491722103, 37.791154889294944 ], [ -122.41743564605709, 37.79118880312169 ], [ -122.41774141788478, 37.79270219179405 ], [ -122.41791307926174, 37.79361784047711 ], [ -122.41791844367977, 37.7936347968272 ], [ -122.4179238080978, 37.79364751408718 ], [ -122.41792917251581, 37.79365599225931 ], [ -122.41796672344202, 37.79369838310532 ], [ -122.41797208786005, 37.79371533943691 ], [ -122.41797745227805, 37.79372805668306 ], [ -122.41798281669608, 37.79374077392701 ], [ -122.41800963878622, 37.79385946809832 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41511821746826, 37.804820900536086 ], [ -122.41518795490263, 37.80494381534272 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41800963878632, 37.79385946809832 ], [ -122.41799890995026, 37.79382131642118 ], [ -122.4179881811142, 37.7938001210365 ], [ -122.41797208786012, 37.793778925645704 ], [ -122.417950630188, 37.7937619693287 ], [ -122.41791844367982, 37.79374501300782 ], [ -122.41788089275362, 37.793732295764606 ], [ -122.41784870624544, 37.793723817601226 ], [ -122.4178057909012, 37.793719578519195 ], [ -122.41777360439302, 37.793719578519195 ], [ -122.41771996021272, 37.793723817601226 ], [ -122.41177618503572, 37.79447413129194 ], [ -122.41138458251955, 37.79452499974094 ], [ -122.41119146347047, 37.79454619491767 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42184519767761, 37.79045541314694 ], [ -122.42178618907928, 37.79045965241627 ], [ -122.42176473140717, 37.79045965241627 ], [ -122.42165207862854, 37.79045965241627 ], [ -122.42161989212036, 37.79045965241627 ], [ -122.42159307003023, 37.79046389168536 ], [ -122.4206006526947, 37.79058683038295 ], [ -122.41916298866272, 37.790769118420094 ], [ -122.41906642913818, 37.79078183617337 ], [ -122.41896450519562, 37.790794553924414 ], [ -122.41767704486847, 37.79095988448907 ], [ -122.41715669631958, 37.791019233832294 ], [ -122.41660952568056, 37.79109130082786 ], [ -122.4161159992218, 37.79115065006551 ], [ -122.41585314273834, 37.79118032466647 ], [ -122.41565465927124, 37.791209999255514 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40980207920074, 37.79514813539847 ], [ -122.40982353687286, 37.79527106630204 ], [ -122.40986108779907, 37.79546605972949 ], [ -122.40986645221709, 37.79549149361689 ], [ -122.40988254547118, 37.7955254054531 ], [ -122.40989863872527, 37.79554660034284 ], [ -122.40991473197933, 37.79555931727375 ], [ -122.40993082523342, 37.79557627317823 ], [ -122.40995228290554, 37.79558475112901 ], [ -122.40997374057766, 37.79559746805339 ], [ -122.4100005626678, 37.795605946001736 ], [ -122.41003274917598, 37.79561018497555 ], [ -122.41007030010218, 37.79561442394911 ], [ -122.41010785102839, 37.79561018497555 ], [ -122.41135776042933, 37.79544486481667 ], [ -122.41139531135553, 37.795440625833365 ], [ -122.41143286228171, 37.79544486481667 ], [ -122.41146504878989, 37.79545758176509 ], [ -122.41149187088004, 37.79546605972952 ], [ -122.41151869297019, 37.79548301565542 ], [ -122.41154015064231, 37.7955042105573 ], [ -122.41155624389638, 37.79553388340973 ], [ -122.41156697273244, 37.79556355625024 ], [ -122.4115777015685, 37.79559746805339 ], [ -122.41162061691276, 37.79583908920016 ], [ -122.41171717643729, 37.796296895521635 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.79285480069591 ], [ -122.4093461036682, 37.79296077891455 ], [ -122.4095070362091, 37.793804360113924 ], [ -122.40952312946318, 37.79385522902405 ], [ -122.40953922271727, 37.79392305418307 ], [ -122.40967869758605, 37.7945589120208 ], [ -122.40972161293028, 37.79475390732791 ], [ -122.40975916385649, 37.79493194607189 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41031169891357, 37.79466064876697 ], [ -122.41019904613495, 37.79467760487772 ], [ -122.40991473197937, 37.79471151708755 ], [ -122.40988790988922, 37.79471151708755 ], [ -122.4098664522171, 37.79471151708755 ], [ -122.40983963012695, 37.79471151708755 ], [ -122.40981817245483, 37.794703039036534 ], [ -122.40979671478271, 37.79469456098458 ], [ -122.40978062152864, 37.79468184390482 ], [ -122.40976452827455, 37.79466912682284 ], [ -122.40974843502049, 37.794647931681375 ], [ -122.4097377061844, 37.79462249750358 ], [ -122.40972697734834, 37.794592824285104 ], [ -122.40971088409428, 37.794550433952274 ], [ -122.40958213806157, 37.7939145760416 ], [ -122.40957140922548, 37.793850989949526 ], [ -122.40956068038942, 37.793791642880905 ], [ -122.40937829017643, 37.792956539788705 ], [ -122.40933001041417, 37.79268947437132 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41567075252533, 37.79123967383262 ], [ -122.41586387157439, 37.79121423848154 ], [ -122.41686165332793, 37.79108282236141 ], [ -122.41717278957366, 37.79104466925053 ], [ -122.41767168045043, 37.79098108068854 ], [ -122.4189645051956, 37.79081998941997 ], [ -122.41915762424468, 37.790798793174275 ], [ -122.42060601711272, 37.79061226595001 ], [ -122.42159843444823, 37.790489327294715 ], [ -122.4218451976776, 37.79045541314694 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41848170757294, 37.79621635572625 ], [ -122.41837441921234, 37.79570768130605 ], [ -122.41833686828613, 37.7955254054531 ], [ -122.41832077503204, 37.79541519192846 ], [ -122.41825640201569, 37.795109984386826 ], [ -122.41820812225342, 37.79487683888746 ], [ -122.41815984249116, 37.7946182584731 ], [ -122.4181491136551, 37.79456315105469 ], [ -122.41800963878632, 37.79385946809832 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41848707199097, 37.79640286880277 ], [ -122.41850852966309, 37.7965215586972 ], [ -122.41852462291718, 37.796602098159795 ], [ -122.41887331008911, 37.79833579477649 ], [ -122.41888403892517, 37.79838242175199 ], [ -122.4190503358841, 37.79919626967515 ], [ -122.41930782794952, 37.800476366493726 ], [ -122.41962969303131, 37.80207009841604 ], [ -122.42015540599823, 37.8046979855249 ], [ -122.42035388946533, 37.80566858469807 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41826713085175, 37.79511422338909 ], [ -122.41822957992555, 37.79493194607189 ], [ -122.41817057132722, 37.79462249750358 ], [ -122.41800963878632, 37.793825555497385 ], [ -122.41799354553224, 37.793740773926984 ], [ -122.41799354553224, 37.793719578519195 ], [ -122.41798281669618, 37.7937068612716 ], [ -122.41795599460603, 37.793643275000754 ], [ -122.41795063018803, 37.79363479682717 ], [ -122.41795063018803, 37.79362207956497 ], [ -122.41776823997502, 37.79268947437132 ], [ -122.41746783256535, 37.791154889294944 ], [ -122.41746783256535, 37.79112521468376 ], [ -122.41747319698338, 37.79109977929326 ], [ -122.41748392581944, 37.791074343894024 ], [ -122.4175000190735, 37.79104890848602 ], [ -122.41752147674562, 37.79103195154249 ], [ -122.41754293441774, 37.791019233832266 ], [ -122.41756975650789, 37.79100651611991 ], [ -122.41760194301607, 37.7909937984053 ], [ -122.41763412952425, 37.79098955916663 ], [ -122.41767168045045, 37.79098108068854 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42206513881683, 37.7904087811683 ], [ -122.42185592651367, 37.79043421679666 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4193024635315, 37.8002856249968 ], [ -122.41930782794951, 37.800311057224846 ], [ -122.41930782794951, 37.800336489444156 ], [ -122.41930782794951, 37.80036616035559 ], [ -122.4193024635315, 37.800417024747446 ], [ -122.4193024635315, 37.80043821823375 ], [ -122.4193024635315, 37.800459411713945 ], [ -122.41930782794951, 37.800476366493726 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42207050323486, 37.79042573825485 ], [ -122.42184519767761, 37.79045541314694 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41816520690918, 37.79483444871761 ], [ -122.41817057132721, 37.794851404788496 ], [ -122.41817593574524, 37.79486412183907 ], [ -122.41818130016325, 37.79487259987156 ], [ -122.41818666458128, 37.794881077903106 ], [ -122.4182081222534, 37.79489803396326 ], [ -122.41821885108946, 37.794910751005816 ], [ -122.41822421550746, 37.79491922903299 ], [ -122.4182295799255, 37.79493194607189 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42038607597351, 37.805664346301484 ], [ -122.42019295692444, 37.8046937470726 ], [ -122.41966187953949, 37.80206585981292 ], [ -122.41930246353151, 37.8002856249968 ], [ -122.41908252239227, 37.79919203090711 ], [ -122.41892158985138, 37.79837818293725 ], [ -122.41855680942535, 37.79659362032577 ], [ -122.41854071617126, 37.796504603009666 ], [ -122.41851925849915, 37.79639862987445 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42039680480957, 37.80571096865078 ], [ -122.42038607597351, 37.805664346301484 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42207050323486, 37.79042573825485 ], [ -122.42184519767761, 37.79045541314694 ], [ -122.42178618907928, 37.79045965241627 ], [ -122.42176473140717, 37.79045965241627 ], [ -122.42165207862854, 37.79045965241627 ], [ -122.42161989212036, 37.79045965241627 ], [ -122.42159307003023, 37.79046389168536 ], [ -122.4206006526947, 37.79058683038295 ], [ -122.41916298866272, 37.790769118420094 ], [ -122.41906642913818, 37.79078183617337 ], [ -122.41896450519562, 37.790794553924414 ], [ -122.41767704486847, 37.79095988448907 ], [ -122.41715669631958, 37.791019233832294 ], [ -122.41660952568056, 37.79109130082786 ], [ -122.4161159992218, 37.79115065006551 ], [ -122.41585314273834, 37.79118032466647 ], [ -122.41565465927124, 37.791209999255514 ], [ -122.4140989780426, 37.79141348183076 ], [ -122.41283297538757, 37.79157457180539 ], [ -122.41244673728943, 37.79162544225074 ], [ -122.41206049919128, 37.79166783426177 ], [ -122.41171181201935, 37.79171446544583 ], [ -122.40933001041412, 37.79202392619421 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42206513881683, 37.7904087811683 ], [ -122.42185592651367, 37.79043421679666 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41524159908295, 37.80522355172624 ], [ -122.41518795490263, 37.80494381534272 ], [ -122.4151074886322, 37.8045623549303 ], [ -122.41509139537811, 37.80447758568221 ], [ -122.41508066654205, 37.80441400868229 ], [ -122.41503238677979, 37.8042020849539 ], [ -122.41493582725525, 37.80371465807083 ], [ -122.41488218307495, 37.80354511753136 ], [ -122.41479635238647, 37.80343915449654 ], [ -122.41469442844391, 37.803358622488425 ], [ -122.41392731666565, 37.802824565896664 ], [ -122.41378784179688, 37.802727078959165 ], [ -122.4137020111084, 37.802667739021146 ], [ -122.41306364536284, 37.80222692656055 ], [ -122.41298317909241, 37.802142154631916 ], [ -122.41295099258423, 37.80207433701892 ], [ -122.41290807723998, 37.80198532630738 ], [ -122.41288661956786, 37.801887838262154 ], [ -122.4128758907318, 37.8018242590329 ], [ -122.41279006004332, 37.80143006658992 ], [ -122.41269886493681, 37.80098076941205 ], [ -122.4125701189041, 37.800336489444156 ], [ -122.41252720355986, 37.800111837870816 ], [ -122.4125164747238, 37.80003554095462 ], [ -122.41250038146971, 37.799950766510875 ], [ -122.41245210170746, 37.799760023656695 ], [ -122.41233408451079, 37.79917931460157 ], [ -122.41231799125671, 37.799090300401254 ], [ -122.41230726242065, 37.799030957541476 ], [ -122.41214632987975, 37.79823830191443 ], [ -122.41213560104369, 37.79816200306308 ], [ -122.41211950778961, 37.798094181795705 ], [ -122.41205513477325, 37.797767791075565 ], [ -122.41195321083069, 37.79726760509566 ], [ -122.41189420223236, 37.79699631636796 ], [ -122.41176009178162, 37.79628841765257 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42039680480957, 37.80571096865078 ], [ -122.42038607597351, 37.805664346301484 ], [ -122.42019295692444, 37.8046937470726 ], [ -122.41966187953949, 37.80206585981292 ], [ -122.41930246353151, 37.8002856249968 ], [ -122.41908252239227, 37.79919203090711 ], [ -122.41892158985138, 37.79837818293725 ], [ -122.41855680942535, 37.79659362032577 ], [ -122.41854071617126, 37.796504603009666 ], [ -122.41851925849915, 37.79639862987445 ], [ -122.41848170757295, 37.79621635572625 ], [ -122.41837441921234, 37.79570768130605 ], [ -122.41833686828615, 37.7955254054531 ], [ -122.41832077503206, 37.79541519192846 ], [ -122.4182564020157, 37.795109984386826 ], [ -122.41820812225343, 37.79487683888746 ], [ -122.41815984249119, 37.7946182584731 ], [ -122.41814911365513, 37.79456315105469 ], [ -122.41800963878633, 37.79385946809832 ], [ -122.41799890995027, 37.79382131642118 ], [ -122.41798818111421, 37.7938001210365 ], [ -122.41797208786015, 37.793778925645704 ], [ -122.41795063018803, 37.7937619693287 ], [ -122.41791844367982, 37.79374501300782 ], [ -122.41788089275364, 37.793732295764606 ], [ -122.41784870624546, 37.793723817601226 ], [ -122.41780579090123, 37.793719578519195 ], [ -122.41777360439302, 37.793719578519195 ], [ -122.41771996021272, 37.793723817601226 ], [ -122.41177618503572, 37.79447413129194 ], [ -122.41138458251957, 37.79452499974094 ], [ -122.4111914634705, 37.79454619491767 ], [ -122.41031169891362, 37.79466064876697 ], [ -122.410199046135, 37.79467760487772 ], [ -122.40991473197941, 37.79471151708755 ], [ -122.40988790988928, 37.79471151708755 ], [ -122.40986645221716, 37.79471151708755 ], [ -122.40983963012701, 37.79471151708755 ], [ -122.40981817245489, 37.794703039036534 ], [ -122.40979671478277, 37.79469456098458 ], [ -122.40978062152868, 37.79468184390482 ], [ -122.40976452827462, 37.79466912682284 ], [ -122.40974843502053, 37.794647931681375 ], [ -122.40973770618447, 37.79462249750358 ], [ -122.40972697734841, 37.794592824285104 ], [ -122.40971088409432, 37.794550433952274 ], [ -122.40958213806161, 37.7939145760416 ], [ -122.40957140922555, 37.793850989949526 ], [ -122.40956068038949, 37.793791642880905 ], [ -122.40937829017648, 37.792956539788705 ], [ -122.40933001041422, 37.79268947437132 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41171717643738, 37.79629689552161 ], [ -122.41185665130615, 37.79700055526198 ], [ -122.41191029548645, 37.797271843974116 ], [ -122.41203904151918, 37.79793310603611 ], [ -122.41208195686342, 37.79817048071708 ], [ -122.41228044033052, 37.79909877794875 ], [ -122.41239309310915, 37.79972187502673 ], [ -122.41245210170746, 37.799963482683594 ], [ -122.41246819496155, 37.80004401839361 ], [ -122.41247892379761, 37.80011607658604 ], [ -122.4125325679779, 37.8003449668486 ], [ -122.41266131401063, 37.800980769412 ], [ -122.41274714469911, 37.801430066589866 ], [ -122.41282224655153, 37.80182849764983 ], [ -122.41283297538759, 37.8019005541014 ], [ -122.41286516189577, 37.802014996556444 ], [ -122.41290807724, 37.80218454060837 ], [ -122.41298854351045, 37.802269312488356 ], [ -122.41312801837923, 37.80239223154157 ], [ -122.4135732650757, 37.80269317042896 ], [ -122.41365909576417, 37.802752510346544 ], [ -122.41380393505098, 37.80285847436647 ], [ -122.41465687751771, 37.80343915449651 ], [ -122.41480171680452, 37.80355359456754 ], [ -122.41488218307497, 37.803680749994044 ], [ -122.41491973400117, 37.80379518969071 ], [ -122.4150002002716, 37.8042063234344 ], [ -122.41504311561584, 37.8044182471506 ], [ -122.41505920886993, 37.804481824146876 ], [ -122.41507530212402, 37.804562354930276 ], [ -122.41511821746826, 37.80482090053606 ], [ -122.41516649723052, 37.805028584055634 ], [ -122.41519331932066, 37.805172690644376 ], [ -122.41524159908293, 37.80522355172619 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.79285480069591 ], [ -122.4093461036682, 37.79296077891455 ], [ -122.4095070362091, 37.793804360113924 ], [ -122.40952312946318, 37.79385522902405 ], [ -122.40953922271727, 37.79392305418307 ], [ -122.40967869758605, 37.7945589120208 ], [ -122.40972161293028, 37.79475390732791 ], [ -122.40975916385649, 37.79493194607189 ], [ -122.40980207920073, 37.79514813539847 ], [ -122.40981280803679, 37.79517780839393 ], [ -122.40981817245482, 37.79520324238054 ], [ -122.40982890129088, 37.79523291535386 ], [ -122.40983963012694, 37.79525411032749 ], [ -122.40984499454494, 37.79528378328038 ], [ -122.40987181663509, 37.79545758176509 ], [ -122.40988254547115, 37.79549149361689 ], [ -122.40989863872524, 37.79552116647442 ], [ -122.40991473197931, 37.795542361365385 ], [ -122.40993618965143, 37.79556355625024 ], [ -122.40995764732355, 37.79557627317825 ], [ -122.4099844694137, 37.79558899010405 ], [ -122.41000592708582, 37.79559746805339 ], [ -122.41003274917597, 37.795601707027686 ], [ -122.41007030010215, 37.795601707027686 ], [ -122.41010248661033, 37.795601707027686 ], [ -122.4110841751098, 37.795474537692954 ], [ -122.41134166717524, 37.79543638684983 ], [ -122.41142213344565, 37.79542790888202 ], [ -122.41151869297022, 37.79541519192849 ], [ -122.41154551506034, 37.7954109529435 ], [ -122.41252720355979, 37.795292261264755 ], [ -122.41318166255942, 37.79519900338339 ], [ -122.41791844367972, 37.794592824285104 ], [ -122.41795599460593, 37.794592824285104 ], [ -122.41798281669608, 37.794592824285104 ], [ -122.4180042743682, 37.794597063317056 ], [ -122.41803109645834, 37.79460554138021 ], [ -122.41805255413045, 37.79461401944239 ], [ -122.41807401180259, 37.794626736533836 ], [ -122.41809546947471, 37.79464369265237 ], [ -122.41811692714683, 37.79466488779506 ], [ -122.41812765598289, 37.79469032195825 ], [ -122.41813838481895, 37.7947199951376 ], [ -122.418149113655, 37.794745429281804 ], [ -122.41816520690908, 37.79483444871764 ], [ -122.41821348667135, 37.79508031136412 ], [ -122.41828322410574, 37.79541943091325 ], [ -122.41830468177785, 37.79552964443154 ], [ -122.41844415664663, 37.79622059466508 ], [ -122.41848707199087, 37.79640286880277 ], [ -122.41850852966299, 37.7965215586972 ], [ -122.41852462291708, 37.796602098159816 ], [ -122.41887331008901, 37.79833579477651 ], [ -122.41888403892507, 37.79838242175201 ], [ -122.419050335884, 37.79919626967518 ], [ -122.41930782794942, 37.800476366493726 ], [ -122.41962969303121, 37.80207009841606 ], [ -122.42015540599813, 37.8046979855249 ], [ -122.42035388946523, 37.8056685846981 ], [ -122.42035925388325, 37.80571096865078 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.79285480069591 ], [ -122.4093461036682, 37.79296077891455 ], [ -122.4095070362091, 37.793804360113924 ], [ -122.40952312946318, 37.79385522902405 ], [ -122.40953922271727, 37.79392305418307 ], [ -122.40967869758605, 37.7945589120208 ], [ -122.40972161293028, 37.79475390732791 ], [ -122.40975916385649, 37.79493194607189 ], [ -122.40980207920073, 37.79514813539847 ], [ -122.40982353687285, 37.79527106630204 ], [ -122.40986108779906, 37.79546605972949 ], [ -122.40986645221706, 37.79549149361689 ], [ -122.40988254547115, 37.7955254054531 ], [ -122.40989863872524, 37.79554660034284 ], [ -122.40991473197931, 37.79555931727375 ], [ -122.4099308252334, 37.79557627317823 ], [ -122.40995228290552, 37.79558475112901 ], [ -122.40997374057764, 37.79559746805339 ], [ -122.41000056266779, 37.795605946001736 ], [ -122.41003274917597, 37.79561018497555 ], [ -122.41007030010215, 37.79561442394911 ], [ -122.41010785102836, 37.79561018497555 ], [ -122.4113577604293, 37.79544486481667 ], [ -122.4113953113555, 37.795440625833365 ], [ -122.4114328622817, 37.79544486481667 ], [ -122.41146504878989, 37.79545758176509 ], [ -122.41149187088003, 37.79546605972952 ], [ -122.41151869297018, 37.79548301565542 ], [ -122.4115401506423, 37.7955042105573 ], [ -122.41155624389638, 37.79553388340973 ], [ -122.41156697273244, 37.79556355625024 ], [ -122.4115777015685, 37.79559746805339 ], [ -122.41162061691274, 37.79583908920016 ], [ -122.41171717643728, 37.796296895521635 ], [ -122.41185665130605, 37.79700055526198 ], [ -122.41191029548635, 37.797271843974144 ], [ -122.41203904151908, 37.79793310603611 ], [ -122.41208195686332, 37.798170480717104 ], [ -122.41228044033042, 37.79909877794875 ], [ -122.41239309310905, 37.799721875026755 ], [ -122.41245210170736, 37.79996348268362 ], [ -122.41246819496145, 37.80004401839364 ], [ -122.41247892379751, 37.800116076586065 ], [ -122.4125325679778, 37.80034496684863 ], [ -122.41266131401053, 37.80098076941203 ], [ -122.41274714469901, 37.80143006658992 ], [ -122.41282224655143, 37.80182849764988 ], [ -122.41283297538749, 37.80190055410142 ], [ -122.41286516189567, 37.80201499655647 ], [ -122.4129080772399, 37.80218454060837 ], [ -122.41298854351035, 37.802269312488384 ], [ -122.41312801837913, 37.80239223154157 ], [ -122.4135732650756, 37.80269317042896 ], [ -122.41365909576407, 37.802752510346544 ], [ -122.41380393505088, 37.802858474366495 ], [ -122.41465687751761, 37.80343915449654 ], [ -122.41480171680442, 37.80355359456757 ], [ -122.41488218307487, 37.803680749994065 ], [ -122.41491973400106, 37.80379518969073 ], [ -122.4150002002715, 37.8042063234344 ], [ -122.41504311561575, 37.80441824715063 ], [ -122.41505920886983, 37.804481824146905 ], [ -122.41507530212392, 37.8045623549303 ], [ -122.41511821746816, 37.804820900536086 ], [ -122.41516649723042, 37.80502858405566 ], [ -122.41519331932057, 37.805172690644405 ], [ -122.41524159908283, 37.80522355172624 ], [ -122.41518795490254, 37.80494381534269 ], [ -122.41510748863209, 37.8045623549303 ], [ -122.415091395378, 37.80447758568221 ], [ -122.41508066654194, 37.804414008682265 ], [ -122.41503238677969, 37.80420208495388 ], [ -122.41493582725514, 37.80371465807083 ], [ -122.41488218307484, 37.80354511753136 ], [ -122.41479635238636, 37.80343915449654 ], [ -122.4146944284438, 37.8033586224884 ], [ -122.41392731666554, 37.802824565896664 ], [ -122.41378784179676, 37.80272707895914 ], [ -122.41370201110828, 37.802667739021146 ], [ -122.41306364536274, 37.80222692656055 ], [ -122.4129831790923, 37.80214215463189 ], [ -122.41295099258411, 37.8020743370189 ], [ -122.41290807723988, 37.80198532630738 ], [ -122.41288661956776, 37.801887838262154 ], [ -122.4128758907317, 37.80182425903287 ], [ -122.41279006004319, 37.80143006658992 ], [ -122.41269886493671, 37.80098076941203 ], [ -122.41257011890397, 37.800336489444156 ], [ -122.41252720355973, 37.800111837870794 ], [ -122.41251647472367, 37.800035540954596 ], [ -122.41250038146958, 37.799950766510875 ], [ -122.41245210170734, 37.79976002365667 ], [ -122.41233408451066, 37.79917931460154 ], [ -122.4123179912566, 37.799090300401254 ], [ -122.41230726242054, 37.799030957541454 ], [ -122.41214632987962, 37.79823830191443 ], [ -122.41213560104356, 37.79816200306305 ], [ -122.4121195077895, 37.798094181795705 ], [ -122.41205513477314, 37.797767791075536 ], [ -122.41195321083057, 37.79726760509566 ], [ -122.41189420223225, 37.79699631636796 ], [ -122.4117600917815, 37.79628841765255 ], [ -122.411668896675, 37.79583908920016 ], [ -122.4115777015685, 37.79538975801483 ], [ -122.4115401506423, 37.79519052538833 ], [ -122.4114328622817, 37.79468608293166 ], [ -122.41142213344564, 37.79465217071015 ], [ -122.41140604019155, 37.794626736533836 ], [ -122.41138994693746, 37.79460130234873 ], [ -122.41136312484733, 37.794584346220475 ], [ -122.41133630275718, 37.794567390088325 ], [ -122.41129875183097, 37.79455467298668 ], [ -122.41126120090479, 37.794550433952274 ], [ -122.41122364997858, 37.79454619491767 ], [ -122.4111914634704, 37.79454619491767 ], [ -122.41031169891352, 37.79466064876697 ], [ -122.4101990461349, 37.79467760487772 ], [ -122.40991473197931, 37.79471151708752 ], [ -122.40988790988918, 37.79471151708752 ], [ -122.40986645221706, 37.79471151708752 ], [ -122.40983963012691, 37.79471151708752 ], [ -122.40981817245479, 37.794703039036534 ], [ -122.40979671478267, 37.79469456098458 ], [ -122.40978062152858, 37.79468184390479 ], [ -122.40976452827452, 37.79466912682284 ], [ -122.40974843502043, 37.794647931681375 ], [ -122.40973770618437, 37.79462249750358 ], [ -122.40972697734831, 37.794592824285075 ], [ -122.40971088409422, 37.794550433952274 ], [ -122.40958213806151, 37.7939145760416 ], [ -122.40957140922545, 37.793850989949526 ], [ -122.40956068038939, 37.79379164288088 ], [ -122.40937829017638, 37.792956539788705 ], [ -122.40933001041412, 37.79268947437132 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41312265396118, 37.791566093394444 ], [ -122.41306900978088, 37.79157033260003 ], [ -122.4130368232727, 37.79157457180537 ], [ -122.41300463676453, 37.79157457180537 ], [ -122.41296172142029, 37.79157033260003 ], [ -122.41292953491211, 37.79157033260003 ], [ -122.41289734840392, 37.79157033260003 ], [ -122.41286516189574, 37.79157457180537 ], [ -122.41283297538756, 37.79157457180537 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41031169891357, 37.79466064876697 ], [ -122.41026878356934, 37.79466912682284 ], [ -122.41024196147919, 37.79467760487772 ], [ -122.41022050380707, 37.79468184390482 ], [ -122.41019904613495, 37.79468608293166 ], [ -122.40991473197937, 37.79471999513757 ], [ -122.40988790988922, 37.794724234162196 ], [ -122.4098664522171, 37.79473271221077 ], [ -122.40984499454498, 37.79474119025835 ], [ -122.40981817245483, 37.79475390732791 ], [ -122.40980207920076, 37.79477086341726 ], [ -122.40978598594667, 37.794783580481706 ], [ -122.40977525711061, 37.794800536564246 ], [ -122.40975916385655, 37.79482597068075 ], [ -122.40975379943852, 37.79485564380559 ], [ -122.40975379943852, 37.794881077903106 ], [ -122.40975916385655, 37.79493194607191 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42035388946533, 37.80566858469807 ], [ -122.42035925388335, 37.80571096865078 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4117761850357, 37.79447413129197 ], [ -122.41181910037994, 37.79446989225296 ], [ -122.4118673801422, 37.79446989225296 ], [ -122.4119049310684, 37.79447837033072 ], [ -122.41193711757658, 37.79448684840749 ], [ -122.41196393966673, 37.79449956552084 ], [ -122.41199076175688, 37.794516521668555 ], [ -122.41200685501094, 37.794533477812365 ], [ -122.41202831268306, 37.79455467298668 ], [ -122.41203904151912, 37.7945843462205 ], [ -122.41204977035518, 37.79461401944236 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41176009178162, 37.79628841765255 ], [ -122.41166889667511, 37.79583908920013 ], [ -122.4115777015686, 37.79538975801483 ], [ -122.41154015064241, 37.79519052538833 ], [ -122.41143286228181, 37.794686082931634 ], [ -122.41142213344574, 37.79465217071015 ], [ -122.41140604019166, 37.79462673653381 ], [ -122.41138994693758, 37.79460130234873 ], [ -122.41136312484745, 37.794584346220475 ], [ -122.4113363027573, 37.794567390088325 ], [ -122.4112987518311, 37.79455467298668 ], [ -122.4112612009049, 37.794550433952274 ], [ -122.4112236499787, 37.79454619491767 ], [ -122.41119146347052, 37.79454619491767 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } } ], "name": "road" }mapnik-vector-tile-1.6.1/examples/data/14_2620_6331-road_label.geojson000066400000000000000000017401371324304754200250220ustar00rootroot00000000000000{ "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42946803569794, 37.800637436707525 ], [ -122.42936611175537, 37.80065439144644 ], [ -122.42790699005127, 37.80083665464399 ], [ -122.42782652378084, 37.80084513199108 ] ] }, "properties": { "class": "motorway", "len": 184.737921023889, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42618501186371, 37.801052826690615 ], [ -122.4260938167572, 37.80106554267365 ], [ -122.42494583129883, 37.801209656995105 ] ] }, "properties": { "class": "motorway", "len": 139.71186669914354, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43604481220245, 37.79980241100018 ], [ -122.435964345932, 37.79981512719847 ], [ -122.43449985980989, 37.80000163118878 ], [ -122.43440330028534, 37.800010108631696 ] ] }, "properties": { "class": "motorway", "len": 184.76161130760062, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42948412895203, 37.80073492640316 ], [ -122.42960214614868, 37.800722210363176 ], [ -122.43103444576263, 37.80053994688323 ], [ -122.4311363697052, 37.80052299211805 ] ] }, "properties": { "class": "motorway", "len": 186.47783273984427, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4311363697052, 37.80052299211805 ], [ -122.43123292922974, 37.80051451473398 ], [ -122.43267595767975, 37.800332250741526 ], [ -122.43278324604034, 37.80031529592869 ] ] }, "properties": { "class": "motorway", "len": 186.11676199570874, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4262011051178, 37.80115455449363 ], [ -122.42777287960052, 37.80095109874748 ], [ -122.42784261703491, 37.80094262141255 ] ] }, "properties": { "class": "motorway", "len": 185.3458172590662, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43112027645111, 37.80042974083997 ], [ -122.43102371692657, 37.80044245693027 ], [ -122.42958068847656, 37.80062472065078 ], [ -122.42946803569794, 37.800637436707525 ] ] }, "properties": { "class": "motorway", "len": 186.61022763211224, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42782652378082, 37.80084513199106 ], [ -122.42774605751038, 37.80085784800986 ], [ -122.42618501186371, 37.801052826690615 ] ] }, "properties": { "class": "motorway", "len": 185.30551717047499, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43278324604034, 37.80031529592869 ], [ -122.43287980556488, 37.80030257981648 ], [ -122.43431210517883, 37.800120315301065 ], [ -122.43443012237549, 37.80010336043956 ] ] }, "properties": { "class": "motorway", "len": 185.4256321395207, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4371337890625, 37.79966253267434 ], [ -122.43614137172699, 37.79979393353342 ], [ -122.43604481220244, 37.79980241100018 ] ] }, "properties": { "class": "motorway", "len": 185.1311305635713, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43440330028534, 37.800010108631696 ], [ -122.4343067407608, 37.80002282479424 ], [ -122.43285834789276, 37.80020508955023 ], [ -122.43276715278625, 37.800213566969795 ] ] }, "properties": { "class": "motorway", "len": 184.66599632077046, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43443012237549, 37.80010336043956 ], [ -122.43452668190002, 37.800094883007326 ], [ -122.43597507476807, 37.79990837925248 ], [ -122.43606090545656, 37.79989566307024 ] ] }, "properties": { "class": "motorway", "len": 184.20456691225687, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42784261703491, 37.800942621412574 ], [ -122.42792308330536, 37.800929905408374 ], [ -122.42939829826355, 37.80074764244092 ], [ -122.42948412895203, 37.80073492640316 ] ] }, "properties": { "class": "motorway", "len": 184.99709257762476, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43276715278625, 37.800213566969795 ], [ -122.43265986442566, 37.80023052180601 ], [ -122.43121147155762, 37.800417024747446 ], [ -122.43112027645111, 37.80042974083997 ] ] }, "properties": { "class": "motorway", "len": 185.92789437313337, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43606090545654, 37.79989566307024 ], [ -122.43616819381714, 37.79988294688579 ], [ -122.4371337890625, 37.79976002365667 ] ] }, "properties": { "class": "motorway", "len": 184.9897278124624, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42428600788116, 37.80042974083997 ], [ -122.42430210113525, 37.800510276041585 ], [ -122.42445766925812, 37.801256282156544 ], [ -122.42445766925812, 37.80129019134637 ], [ -122.42446303367615, 37.80132833916636 ] ] }, "properties": { "class": "motorway", "len": 128.2778210829967, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42368519306183, 37.79667839862234 ], [ -122.42348670959473, 37.7957246371765 ] ] }, "properties": { "class": "motorway", "len": 136.5028882485294, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42332577705383, 37.79574159304304 ], [ -122.42352962493896, 37.79669959318127 ] ] }, "properties": { "class": "motorway", "len": 137.0331321248979, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42387294769287, 37.797615192322034 ], [ -122.42368519306183, 37.79667839862234 ] ] }, "properties": { "class": "motorway", "len": 133.5035793525826, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42409288883209, 37.79949722158412 ], [ -122.42411434650421, 37.79959047403946 ], [ -122.42426991462708, 37.80035768295351 ], [ -122.42428600788116, 37.800429740839945 ] ] }, "properties": { "class": "motorway", "len": 133.1433528732395, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42352962493896, 37.79669959318127 ], [ -122.42372810840607, 37.797636386612204 ], [ -122.42388904094696, 37.79848839204139 ], [ -122.42390513420105, 37.79856469055563 ], [ -122.42392659187317, 37.798657944188264 ], [ -122.42408215999603, 37.79942940154263 ], [ -122.42409288883209, 37.79949722158409 ] ] }, "properties": { "class": "motorway", "len": 398.8752119340263, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42461860179901, 37.80134529374666 ], [ -122.42471516132356, 37.80133257781179 ], [ -122.4261099100113, 37.80116727045915 ], [ -122.4262011051178, 37.80115455449363 ] ] }, "properties": { "class": "motorway", "len": 178.0452893370852, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42406070232391, 37.79854349653181 ], [ -122.42404460906982, 37.79847143680532 ], [ -122.42387294769287, 37.797615192322034 ] ] }, "properties": { "class": "motorway", "len": 132.28270155674133, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42348670959473, 37.7957246371765 ], [ -122.42330431938171, 37.794809014604034 ] ] }, "properties": { "class": "motorway", "len": 130.55038720718602, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42443084716797, 37.80041278604948 ], [ -122.4244147539139, 37.800336489444156 ], [ -122.42426991462709, 37.79956928030996 ], [ -122.42424845695497, 37.79947602782785 ], [ -122.42423772811891, 37.79942092403308 ], [ -122.424076795578, 37.79862403379003 ], [ -122.42406070232393, 37.79854349653181 ] ] }, "properties": { "class": "motorway", "len": 266.44218449370885, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42165744304657, 37.78660605622855 ], [ -122.42162525653839, 37.78644495542216 ], [ -122.42146432399748, 37.78567760202419 ], [ -122.42136240005493, 37.78521549033291 ], [ -122.42126047611237, 37.78474913615547 ], [ -122.42117464542389, 37.78428701865866 ], [ -122.42107808589934, 37.78381641897222 ], [ -122.42106199264526, 37.78374434488178 ] ] }, "properties": { "class": "motorway", "len": 931.5280869634124, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42168962955475, 37.787572653691726 ], [ -122.42177546024323, 37.7880177930084 ], [ -122.42187738418579, 37.788492605324016 ], [ -122.4219685792923, 37.78896741458879 ], [ -122.42206513881683, 37.7894210241618 ], [ -122.42223680019379, 37.79034519205912 ], [ -122.42225289344788, 37.79042573825485 ] ] }, "properties": { "class": "motorway", "len": 406.9126600716541, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42240846157074, 37.790328234954075 ], [ -122.4222207069397, 37.789404066844675 ], [ -122.42212414741516, 37.78894197845551 ], [ -122.42202758789062, 37.78847140841073 ], [ -122.42193639278412, 37.788000835369274 ], [ -122.42183983325958, 37.78755145651453 ], [ -122.42174863815308, 37.787080877614905 ], [ -122.42165744304657, 37.78660605622852 ] ] }, "properties": { "class": "motorway", "len": 530.8518497886237, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42459177970886, 37.801141838525915 ], [ -122.42456495761871, 37.801052826690615 ], [ -122.42444694042206, 37.80048908257599 ], [ -122.42443084716797, 37.80041278604948 ] ] }, "properties": { "class": "motorway", "len": 104.60431610245338, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42446303367615, 37.80132833916636 ], [ -122.42461860179901, 37.80134529374666 ] ] }, "properties": { "class": "motorway", "len": 17.4174625020387, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42330431938171, 37.794809014604034 ], [ -122.42314338684082, 37.79392729325345 ] ] }, "properties": { "class": "motorway", "len": 125.35821034090405, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42225289344788, 37.79042573825485 ], [ -122.42244064807892, 37.79130750139274 ], [ -122.42262303829193, 37.792185014837955 ], [ -122.42280006408691, 37.793062517861436 ] ] }, "properties": { "class": "motorway", "len": 376.31890481789424, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42314875125885, 37.79483020969929 ], [ -122.42332577705383, 37.79574159304304 ] ] }, "properties": { "class": "motorway", "len": 130.0152010345565, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42280006408691, 37.79306251786141 ], [ -122.42296099662781, 37.79394848860165 ], [ -122.42314875125885, 37.79483020969929 ] ] }, "properties": { "class": "motorway", "len": 251.90400155211125, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42314338684082, 37.79392729325345 ], [ -122.42295563220978, 37.79304980050074 ], [ -122.42278397083281, 37.792168058155134 ], [ -122.42259621620177, 37.79129054450855 ], [ -122.42242455482481, 37.790396063350826 ], [ -122.42240846157073, 37.79032823495405 ] ] }, "properties": { "class": "motorway", "len": 513.7380007233647, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42091178894043, 37.78374434488178 ], [ -122.42093324661255, 37.78383337757154 ], [ -122.42101907730103, 37.78430397714999 ], [ -122.42112100124359, 37.78476609454075 ], [ -122.42121756076814, 37.78523668818016 ], [ -122.42130339145662, 37.785694560196426 ], [ -122.42140531539918, 37.78618634549861 ], [ -122.42152333259584, 37.78676715668372 ], [ -122.42149651050569, 37.78663149316584 ], [ -122.42159843444826, 37.787102074927084 ], [ -122.42168962955476, 37.787572653691726 ] ] }, "properties": { "class": "motorway", "len": 705.4033468001305, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40569829940796, 37.79887836139735 ], [ -122.40566074848175, 37.79868337697672 ], [ -122.4055427312851, 37.79811113711837 ] ] }, "properties": { "class": "path", "len": 109.7592293529278, "name": "Peter Macchiarini Steps", "name_de": "Peter Macchiarini Steps", "name_en": "Peter Macchiarini Steps", "name_es": "Peter Macchiarini Steps", "name_fr": "Peter Macchiarini Steps", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40558564662933, 37.798891077754746 ], [ -122.40547835826874, 37.79836970530704 ], [ -122.4054354429245, 37.79811537594843 ] ] }, "properties": { "class": "path", "len": 110.44634750447173, "name": "Peter Macchiarini Steps", "name_de": "Peter Macchiarini Steps", "name_en": "Peter Macchiarini Steps", "name_es": "Peter Macchiarini Steps", "name_fr": "Peter Macchiarini Steps", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40752220153809, 37.79410957304932 ], [ -122.4073988199234, 37.7934821895364 ], [ -122.40733444690704, 37.793490667727504 ], [ -122.40727543830872, 37.79323208246155 ] ] }, "properties": { "class": "path", "len": 133.77684616970024, "name": "Hang Ah Alley", "name_de": "Hang Ah Alley", "name_en": "Hang Ah Alley", "name_es": "Hang Ah Alley", "name_fr": "Hang Ah Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.798178958370166 ], [ -122.40469515323639, 37.79811537594843 ], [ -122.4054890871048, 37.798017882795456 ] ] }, "properties": { "class": "main", "len": 182.97421269792386, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.799776978597 ], [ -122.404265999794, 37.80013727015868 ], [ -122.40430891513824, 37.80034496684863 ] ] }, "properties": { "class": "street", "len": 303.8718420779123, "name": "Montgomery St", "name_de": "Montgomery St", "name_en": "Montgomery St", "name_es": "Montgomery St", "name_fr": "Montgomery St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40596115589142, 37.80662645609157 ], [ -122.4058485031128, 37.80656288094155 ], [ -122.4051457643509, 37.80619414399211 ], [ -122.40488827228548, 37.80606275451926 ], [ -122.40478098392487, 37.8059949405063 ], [ -122.40466833114625, 37.805910172902585 ], [ -122.40446984767915, 37.80577454453419 ], [ -122.40443766117096, 37.805744875795405 ], [ -122.40418016910554, 37.80556262470992 ] ] }, "properties": { "class": "main", "len": 540.2997532702911, "name": "The Embarcadero", "name_de": "The Embarcadero", "name_en": "The Embarcadero", "name_es": "The Embarcadero", "name_fr": "The Embarcadero", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.79169750865503 ], [ -122.40424454212189, 37.79168903025815 ], [ -122.40452885627747, 37.79165511666101 ], [ -122.40544617176056, 37.7915364189484 ], [ -122.40574657917023, 37.791498266071706 ], [ -122.40716814994812, 37.79132869749249 ], [ -122.4073451757431, 37.79130750139274 ], [ -122.4080640077591, 37.791205760029214 ], [ -122.40817129611969, 37.79119304234894 ], [ -122.40838050842285, 37.79116760698179 ], [ -122.40898132324219, 37.791095540060674 ], [ -122.4090027809143, 37.79109130082786 ] ] }, "properties": { "class": "main", "len": 1312.8583089500025, "name": "Pine St", "name_de": "Pine St", "name_en": "Pine St", "name_es": "Pine St", "name_fr": "Pine St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40479707717896, 37.79445293609456 ], [ -122.40418016910553, 37.794533477812365 ] ] }, "properties": { "class": "street", "len": 186.87536648900215, "name": "Clay St", "name_de": "Clay St", "name_en": "Clay St", "name_es": "Clay St", "name_fr": "Clay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40997910499573, 37.809279610214595 ], [ -122.41007566452026, 37.8094448994097 ], [ -122.41026878356934, 37.809779714850585 ] ] }, "properties": { "class": "path", "len": 202.17417323434879, "name": "Pier 39", "name_de": "Pier 39", "name_en": "Pier 39", "name_es": "Pier 39", "name_fr": "Pier 39", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.805973748614505 ], [ -122.40455031394957, 37.80624500437047 ], [ -122.40470051765442, 37.80634248666441 ], [ -122.40479707717896, 37.8063933469406 ], [ -122.40588068962097, 37.80695704598944 ], [ -122.40689456462862, 37.807465642942425 ], [ -122.40756511688234, 37.80764365104846 ] ] }, "properties": { "class": "path", "len": 2847.90071389486, "name": "Herb Caen Way", "name_de": "Herb Caen Way", "name_en": "Herb Caen Way", "name_es": "Herb Caen Way", "name_fr": "Herb Caen Way", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42774605751038, 37.8071138637568 ], [ -122.42828786373138, 37.80700790584237 ], [ -122.42834150791168, 37.80698671424124 ], [ -122.42885112762451, 37.80688499447117 ] ] }, "properties": { "class": "street", "len": 127.02433388408431, "name": "Funston Rd", "name_de": "Funston Rd", "name_en": "Funston Rd", "name_es": "Funston Rd", "name_fr": "Funston Rd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42774605751038, 37.8071138637568 ], [ -122.42772459983826, 37.80706724229317 ], [ -122.42771923542023, 37.80702909743741 ], [ -122.42773532867432, 37.80698671424122 ], [ -122.42773532867432, 37.80694433102072 ], [ -122.42770850658417, 37.80686804116251 ], [ -122.42768168449403, 37.80680446622046 ], [ -122.42764949798584, 37.80676208289537 ], [ -122.42760121822359, 37.80673241455334 ], [ -122.42755293846132, 37.80671122287313 ] ] }, "properties": { "class": "street", "len": 65.31910178357704, "name": "Funston Rd", "name_de": "Funston Rd", "name_en": "Funston Rd", "name_es": "Funston Rd", "name_fr": "Funston Rd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42471516132355, 37.78541898941539 ], [ -122.42498338222504, 37.78541474985691 ], [ -122.42522478103638, 37.785393552060754 ], [ -122.42799818515778, 37.78504590733613 ] ] }, "properties": { "class": "main", "len": 369.50623090765384, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42797136306763, 37.7848848031288 ], [ -122.42643177509309, 37.78507982396663 ], [ -122.42516577243806, 37.78524940688557 ], [ -122.42483854293823, 37.785279083856395 ], [ -122.42468297481537, 37.785279083856395 ] ] }, "properties": { "class": "main", "len": 370.3749078342734, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43443548679352, 37.78410895426485 ], [ -122.43139922618866, 37.784494759909215 ] ] }, "properties": { "class": "main", "len": 343.1258703445386, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43110418319702, 37.78443540532579 ], [ -122.43112564086914, 37.78453291640197 ], [ -122.43115246295929, 37.78465586496683 ], [ -122.43117392063141, 37.78474065696133 ] ] }, "properties": { "class": "main", "len": 43.9374386128022, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43460178375244, 37.78430397714999 ], [ -122.43476808071136, 37.78426158091439 ], [ -122.43546009063722, 37.78410047499729 ] ] }, "properties": { "class": "street", "len": 99.99036235992222, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4369353055954, 37.78374434488178 ], [ -122.43541181087492, 37.783930889442026 ] ] }, "properties": { "class": "main", "len": 273.1622823023084, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42799818515778, 37.78504590733613 ], [ -122.4290657043457, 37.78491024065857 ], [ -122.42950558662415, 37.78485088640879 ], [ -122.42956459522247, 37.784842407226364 ], [ -122.43019223213196, 37.78476609454075 ] ] }, "properties": { "class": "main", "len": 246.90071093811025, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43458032608032, 37.78421494502713 ], [ -122.4354600906372, 37.78410047499729 ] ] }, "properties": { "class": "main", "len": 98.99132941823262, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43453741073608, 37.78401144262929 ], [ -122.43448376655579, 37.78374434488178 ] ] }, "properties": { "class": "street", "len": 796.9525422784027, "name": "Steiner St", "name_de": "Steiner St", "name_en": "Steiner St", "name_es": "Steiner St", "name_fr": "Steiner St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43110418319702, 37.78443540532579 ], [ -122.43081450462343, 37.78447780146168 ], [ -122.43023514747621, 37.784558354052855 ], [ -122.43005812168123, 37.784630427349484 ] ] }, "properties": { "class": "street", "len": 120.59901360400228, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43453741073608, 37.78401144262929 ], [ -122.4344140291214, 37.784015682268304 ], [ -122.43289053440094, 37.78419798651539 ], [ -122.43141531944275, 37.78438876954822 ], [ -122.43138313293457, 37.784393009165576 ], [ -122.43125438690186, 37.78440996763259 ], [ -122.43110418319702, 37.78443540532579 ] ] }, "properties": { "class": "street", "len": 387.46292855770764, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43019223213196, 37.78476609454075 ], [ -122.43115246295929, 37.78465586496683 ], [ -122.43130266666412, 37.784634666952996 ], [ -122.43144214153291, 37.78461770853756 ] ] }, "properties": { "class": "main", "len": 141.18643556389938, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43131875991821, 37.784723698570225 ], [ -122.4329549074173, 37.78452019757324 ], [ -122.43379175662996, 37.78441844686463 ], [ -122.4344837665558, 37.78432517525866 ], [ -122.43460178375246, 37.78430397714999 ] ] }, "properties": { "class": "street", "len": 370.69020596579514, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42948412895203, 37.80073492640316 ], [ -122.4295002222061, 37.80080698392156 ], [ -122.42967188358307, 37.801654714153955 ], [ -122.42985963821411, 37.80258296759842 ] ] }, "properties": { "class": "street", "len": 263.6676040895868, "name": "Octavia St", "name_de": "Octavia St", "name_en": "Octavia St", "name_es": "Octavia St", "name_fr": "Octavia St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4311363697052, 37.80052299211805 ], [ -122.43115246295928, 37.80059928853073 ], [ -122.43122220039366, 37.80098500807743 ], [ -122.43131339550017, 37.801447021146885 ], [ -122.43144214153288, 37.802095530029646 ], [ -122.43150115013121, 37.802379515786946 ] ] }, "properties": { "class": "street", "len": 264.1923343285631, "name": "Laguna St", "name_de": "Laguna St", "name_en": "Laguna St", "name_es": "Laguna St", "name_fr": "Laguna St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43278324604034, 37.80031529592869 ], [ -122.43279933929442, 37.80040006995406 ], [ -122.43286371231079, 37.80077307450988 ], [ -122.43295490741728, 37.80123508890499 ] ] }, "properties": { "class": "street", "len": 131.1222974403771, "name": "Buchanan St", "name_de": "Buchanan St", "name_en": "Buchanan St", "name_es": "Buchanan St", "name_fr": "Buchanan St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43440330028534, 37.800010108631696 ], [ -122.43438720703126, 37.79993805033589 ], [ -122.43432819843294, 37.79963286148024 ], [ -122.43422091007234, 37.79916235952403 ], [ -122.43412971496583, 37.798696093367674 ], [ -122.4340331554413, 37.79822982426816 ], [ -122.43384540081026, 37.797301516116576 ], [ -122.43364691734315, 37.796373196299356 ], [ -122.43344843387605, 37.79544486481667 ], [ -122.43327677249908, 37.79464369265235 ], [ -122.43327677249908, 37.79448684840749 ] ] }, "properties": { "class": "street", "len": 788.7854607301381, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43604481220245, 37.79980241100018 ], [ -122.43602335453033, 37.79971763628886 ], [ -122.43595898151398, 37.79942092403308 ], [ -122.43586242198944, 37.7989546595088 ], [ -122.43577122688293, 37.79848839204139 ], [ -122.4356746673584, 37.79802212163085 ], [ -122.43548691272736, 37.79709381086916 ] ] }, "properties": { "class": "street", "len": 387.1206080608945, "name": "Fillmore St", "name_de": "Fillmore St", "name_en": "Fillmore St", "name_es": "Fillmore St", "name_fr": "Fillmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4249941110611, 37.8031975582087 ], [ -122.42656588554382, 37.80299834664004 ], [ -122.42821276187898, 37.80279489597278 ], [ -122.42985963821413, 37.80258296759842 ] ] }, "properties": { "class": "street", "len": 547.9933606097763, "name": "Francisco St", "name_de": "Francisco St", "name_en": "Francisco St", "name_es": "Francisco St", "name_fr": "Francisco St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42387294769287, 37.797615192322034 ], [ -122.42543935775757, 37.79741172682703 ], [ -122.42709159851074, 37.7972040218895 ], [ -122.42872774600983, 37.79699207747368 ] ] }, "properties": { "class": "street", "len": 547.5952812802853, "name": "Green St", "name_de": "Green St", "name_en": "Green St", "name_es": "Green St", "name_fr": "Green St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42424845695496, 37.79947602782782 ], [ -122.42436647415161, 37.79945907281843 ], [ -122.42570757865906, 37.799289522510435 ], [ -122.42581486701965, 37.799276806221634 ], [ -122.42591679096222, 37.79926408993067 ], [ -122.42663562297821, 37.79917083706328 ], [ -122.42746710777283, 37.79906910652822 ], [ -122.42910325527191, 37.79885716746353 ], [ -122.43075013160706, 37.79864946659016 ], [ -122.43239164352417, 37.79844176513279 ], [ -122.43403315544128, 37.798229824268184 ], [ -122.4356746673584, 37.79802212163088 ], [ -122.4371337890625, 37.797839851488476 ] ] }, "properties": { "class": "street", "len": 2567.1023567117613, "name": "Filbert St", "name_de": "Filbert St", "name_en": "Filbert St", "name_es": "Filbert St", "name_fr": "Filbert St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42368519306183, 37.79667839862234 ], [ -122.42525160312653, 37.79648340839478 ], [ -122.42690920829773, 37.796275700847126 ], [ -122.42853999137878, 37.79606375376797 ], [ -122.43018686771393, 37.79585604504044 ], [ -122.43182301521301, 37.79564409675727 ], [ -122.43344843387605, 37.79544486481667 ], [ -122.43511140346527, 37.79522867635841 ], [ -122.43675827980043, 37.795016726275364 ], [ -122.43713378906251, 37.79497009717551 ] ] }, "properties": { "class": "street", "len": 2582.8728328729226, "name": "Vallejo St", "name_de": "Vallejo St", "name_en": "Vallejo St", "name_es": "Vallejo St", "name_fr": "Vallejo St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42406070232391, 37.79854349653181 ], [ -122.42419481277466, 37.79852654130836 ], [ -122.4256271123886, 37.798344272410596 ], [ -122.42727935314177, 37.79813657009509 ], [ -122.42891550064085, 37.79792886719558 ], [ -122.43056237697601, 37.797716924859415 ], [ -122.43144214153288, 37.79760671460429 ], [ -122.43220388889311, 37.79750922078 ], [ -122.43384540081023, 37.797301516116576 ], [ -122.43548691272734, 37.79709381086918 ] ] }, "properties": { "class": "street", "len": 1288.9843538469645, "name": "Union St", "name_de": "Union St", "name_en": "Union St", "name_es": "Union St", "name_fr": "Union St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42517650127411, 37.80413850771679 ], [ -122.42547690868378, 37.80410459983463 ], [ -122.42676973342896, 37.80394353718175 ], [ -122.4284166097641, 37.80374008911817 ], [ -122.43006348609924, 37.803532401975176 ] ] }, "properties": { "class": "main", "len": 550.5640298929623, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42443084716797, 37.80041278604948 ], [ -122.4245595932007, 37.800395831255116 ], [ -122.4259275197983, 37.800222044388356 ], [ -122.42600262165071, 37.80020932826012 ], [ -122.4261260032654, 37.80019661212968 ], [ -122.42649614810945, 37.80014998629934 ], [ -122.42685556411743, 37.80010336043956 ], [ -122.42757976055145, 37.80001010863167 ], [ -122.4276602268219, 37.80000163118878 ], [ -122.4277675151825, 37.79998467630002 ], [ -122.42929100990295, 37.79978969479964 ] ] }, "properties": { "class": "street", "len": 548.3303036596409, "name": "Greenwich St", "name_de": "Greenwich St", "name_en": "Greenwich St", "name_es": "Greenwich St", "name_fr": "Greenwich St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42330431938171, 37.794809014604034 ], [ -122.42486000061037, 37.7946097804114 ], [ -122.42652833461763, 37.79440206759597 ], [ -122.42815911769867, 37.79419011514147 ], [ -122.42980599403383, 37.79397816207892 ], [ -122.43145287036897, 37.793770447487695 ], [ -122.43308365345003, 37.79355849322122 ] ] }, "properties": { "class": "street", "len": 1103.3859462619025, "name": "Pacific Ave", "name_de": "Pacific Ave", "name_en": "Pacific Ave", "name_es": "Pacific Ave", "name_fr": "Pacific Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42480635643005, 37.802269312488406 ], [ -122.4249565601349, 37.802252358120164 ], [ -122.42637813091278, 37.80207009841604 ], [ -122.42802500724794, 37.801862406576994 ], [ -122.42967188358308, 37.801654714153955 ], [ -122.43131339550018, 37.801447021146885 ], [ -122.43186056613922, 37.80137496425289 ], [ -122.4327403306961, 37.80126475945547 ], [ -122.43295490741728, 37.80123508890502 ], [ -122.43321776390076, 37.801205418342605 ], [ -122.43346452713011, 37.80117150911384 ], [ -122.43378102779388, 37.80113336121289 ], [ -122.43408679962158, 37.80109521329224 ], [ -122.43437647819519, 37.80105706535187 ], [ -122.43460178375244, 37.80102739471796 ], [ -122.4362701177597, 37.80081546127204 ], [ -122.43688702583313, 37.80073916508263 ], [ -122.4371337890625, 37.80070525563983 ] ] }, "properties": { "class": "street", "len": 2222.354808553998, "name": "Chestnut St", "name_de": "Chestnut St", "name_en": "Chestnut St", "name_es": "Chestnut St", "name_fr": "Chestnut St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43129193782806, 37.785372354258485 ], [ -122.43146896362305, 37.786330488846325 ] ] }, "properties": { "class": "main", "len": 136.47160876874025, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43117392063141, 37.78474065696133 ], [ -122.4311900138855, 37.784829688450905 ], [ -122.43129193782806, 37.785372354258485 ] ] }, "properties": { "class": "main", "len": 89.68332842594724, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43086814880371, 37.80343067744717 ], [ -122.43168354034424, 37.80327809039246 ] ] }, "properties": { "class": "main", "len": 93.86547235192626, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4090027809143, 37.79109130082786 ], [ -122.4090188741684, 37.79109130082786 ], [ -122.41062819957732, 37.79088357812059 ], [ -122.41099834442137, 37.79083694641218 ], [ -122.41226971149443, 37.790675854829374 ], [ -122.41391122341155, 37.79045965241627 ], [ -122.41470515727995, 37.79036638843492 ], [ -122.4155741930008, 37.79025616721429 ], [ -122.41596579551695, 37.790205295826226 ], [ -122.41720497608183, 37.79004844215926 ], [ -122.41751074790955, 37.79000604921915 ], [ -122.41841733455658, 37.78988734885741 ], [ -122.41884648799896, 37.78983223791036 ], [ -122.4204933643341, 37.789620272346355 ], [ -122.42206513881683, 37.789421024161776 ], [ -122.4222207069397, 37.78940406684465 ], [ -122.42378175258636, 37.78920481807708 ], [ -122.42542326450348, 37.78899709006654 ], [ -122.4270647764206, 37.788789361472034 ], [ -122.42871701717375, 37.7885773929165 ], [ -122.43035852909087, 37.78836966314217 ], [ -122.43200004100798, 37.788161932783865 ], [ -122.43282079696654, 37.78805594768223 ], [ -122.4336415529251, 37.78794996242857 ], [ -122.43528842926024, 37.78774223089048 ], [ -122.43692994117733, 37.787534498768416 ], [ -122.43713378906246, 37.78750906214192 ] ] }, "properties": { "class": "main", "len": 4240.973449295866, "name": "Pine St", "name_de": "Pine St", "name_en": "Pine St", "name_es": "Pine St", "name_fr": "Pine St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4327939748764, 37.78374434488178 ], [ -122.43289053440094, 37.78419798651539 ], [ -122.432901263237, 37.78426582053903 ] ] }, "properties": { "class": "street", "len": 803.2252406201831, "name": "Fillmore St", "name_de": "Fillmore St", "name_en": "Fillmore St", "name_es": "Fillmore St", "name_fr": "Fillmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43472516536713, 37.7849483969368 ], [ -122.43390440940857, 37.78505014691581 ], [ -122.43307828903198, 37.785151896754726 ], [ -122.43143677711487, 37.78535539601231 ], [ -122.43129193782806, 37.785372354258485 ] ] }, "properties": { "class": "street", "len": 387.43784348452124, "name": "Post St", "name_de": "Post St", "name_en": "Post St", "name_es": "Post St", "name_fr": "Post St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41192638874054, 37.797271843974116 ], [ -122.41191565990448, 37.7972167385351 ], [ -122.41190493106842, 37.79716163305497 ], [ -122.41187274456024, 37.79700055526198 ], [ -122.41173326969147, 37.79629689552161 ] ] }, "properties": { "class": "street", "len": 139.4149594024999, "name": "Mason St", "name_de": "Mason St", "name_en": "Mason St", "name_es": "Mason St", "name_fr": "Mason St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41173326969147, 37.79629689552161 ], [ -122.41163671016693, 37.79583908920013 ], [ -122.41155624389648, 37.79541519192846 ], [ -122.41147577762605, 37.7950633553458 ], [ -122.41136848926544, 37.79454195588281 ], [ -122.41136848926544, 37.79452923877677 ] ] }, "properties": { "class": "street", "len": 252.16487531315929, "name": "Mason St", "name_de": "Mason St", "name_en": "Mason St", "name_es": "Mason St", "name_fr": "Mason St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42929100990295, 37.7997896947997 ], [ -122.42945194244386, 37.80056114033423 ], [ -122.42946803569794, 37.800637436707525 ] ] }, "properties": { "class": "street", "len": 121.07622765164624, "name": "Octavia St", "name_de": "Octavia St", "name_en": "Octavia St", "name_es": "Octavia St", "name_fr": "Octavia St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42872774600983, 37.79699207747368 ], [ -122.42891550064087, 37.79792886719558 ], [ -122.42910325527191, 37.7988571674635 ], [ -122.42917835712433, 37.79923441857653 ], [ -122.42929100990295, 37.79978969479967 ] ] }, "properties": { "class": "street", "len": 399.03191064487265, "name": "Octavia St", "name_de": "Octavia St", "name_en": "Octavia St", "name_es": "Octavia St", "name_fr": "Octavia St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41336941719055, 37.796084948503236 ], [ -122.41346061229706, 37.79652579761845 ], [ -122.41355180740355, 37.79694121072341 ], [ -122.41355180740355, 37.797034466405485 ], [ -122.41356253623961, 37.797131960856326 ], [ -122.41366982460022, 37.79767029746383 ], [ -122.41371273994446, 37.797844090334074 ], [ -122.41373419761658, 37.797950061395746 ], [ -122.41375029087065, 37.798030599300965 ], [ -122.41390585899352, 37.79887836139735 ], [ -122.41392731666564, 37.798958898290465 ], [ -122.4140292406082, 37.79937005895526 ], [ -122.41412580013274, 37.79983208212613 ], [ -122.41422235965729, 37.80030257981648 ], [ -122.41430282592772, 37.800756119798216 ], [ -122.41439938545227, 37.80122661160268 ], [ -122.4144959449768, 37.801692861785654 ], [ -122.41468906402588, 37.80261687617921 ], [ -122.41484463214873, 37.80337981513064 ], [ -122.41488218307494, 37.80354511753136 ] ] }, "properties": { "class": "street", "len": 1064.328164583362, "name": "Taylor St", "name_de": "Taylor St", "name_en": "Taylor St", "name_es": "Taylor St", "name_fr": "Taylor St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42774069309235, 37.78374434488178 ], [ -122.42778360843658, 37.783926649798154 ], [ -122.42782652378084, 37.78418102799973 ], [ -122.42797136306763, 37.7848848031288 ] ] }, "properties": { "class": "street", "len": 802.3070257550971, "name": "Laguna St", "name_de": "Laguna St", "name_en": "Laguna St", "name_es": "Laguna St", "name_fr": "Laguna St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42365837097168, 37.80528712802926 ], [ -122.42384612560272, 37.80621957418566 ] ] }, "properties": { "class": "street", "len": 133.4269466789773, "name": "Polk St", "name_de": "Polk St", "name_en": "Polk St", "name_es": "Polk St", "name_fr": "Polk St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.431640625, 37.78629657278981 ], [ -122.43143677711487, 37.78535539601231 ], [ -122.43131875991821, 37.784723698570225 ] ] }, "properties": { "class": "main", "len": 224.9170140610984, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43146896362305, 37.786330488846325 ], [ -122.43159770965576, 37.78688586205755 ], [ -122.43171036243439, 37.78716566682716 ], [ -122.43181228637695, 37.78723349812689 ] ] }, "properties": { "class": "main", "len": 135.65564961645413, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40908324718475, 37.7957246371765 ], [ -122.40926027297974, 37.79660633707646 ] ] }, "properties": { "class": "service", "len": 125.64812812003456, "name": "Trenton St", "name_de": "Trenton St", "name_en": "Trenton St", "name_es": "Trenton St", "name_fr": "Trenton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42398023605347, 37.79016290297611 ], [ -122.4225264787674, 37.790315517122764 ], [ -122.42240846157074, 37.790328234954075 ] ] }, "properties": { "class": "street", "len": 175.97746423811265, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42037534713745, 37.80571520704471 ], [ -122.42028415203094, 37.80523626699121 ], [ -122.42019295692444, 37.80478699296722 ] ] }, "properties": { "class": "street", "len": 132.96272992699332, "name": "Hyde St", "name_de": "Hyde St", "name_en": "Hyde St", "name_es": "Hyde St", "name_fr": "Hyde St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40426063537598, 37.784490520297716 ], [ -122.40418016910553, 37.78452443718309 ] ] }, "properties": { "class": "main", "len": 353.3863057752421, "name": "Mission St", "name_de": "Mission St", "name_en": "Mission St", "name_es": "Mission St", "name_fr": "Mission St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.784596510512785 ], [ -122.40426063537598, 37.784490520297716 ] ] }, "properties": { "class": "main", "len": 351.5767408950287, "name": "Mission St", "name_de": "Mission St", "name_en": "Mission St", "name_es": "Mission St", "name_fr": "Mission St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.789789844846204 ], [ -122.40421235561371, 37.789785605538455 ], [ -122.40459322929382, 37.78973897313711 ], [ -122.40540862083435, 37.7896245116636 ] ] }, "properties": { "class": "street", "len": 548.6476634002003, "name": "Sutter St", "name_de": "Sutter St", "name_en": "Sutter St", "name_es": "Sutter St", "name_fr": "Sutter St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.78787789236924 ], [ -122.40504920482635, 37.78776766743669 ], [ -122.40659952163696, 37.78757689312644 ], [ -122.40706622600555, 37.787521780456224 ], [ -122.40720570087433, 37.787500583264446 ], [ -122.40733444690706, 37.78748786494643 ], [ -122.40749537944795, 37.78746666774491 ], [ -122.40765094757081, 37.78744547053731 ], [ -122.40779042243959, 37.78742851276686 ], [ -122.408219575882, 37.78737763943212 ], [ -122.40823566913606, 37.78737339998598 ] ] }, "properties": { "class": "street", "len": 591.436299421901, "name": "Geary St", "name_de": "Geary St", "name_en": "Geary St", "name_es": "Geary St", "name_fr": "Geary St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40998446941376, 37.79419435419653 ], [ -122.40990400314332, 37.793808599191095 ] ] }, "properties": { "class": "path", "len": 55.41610235241239, "name": "Codman Pl", "name_de": "Codman Pl", "name_en": "Codman Pl", "name_es": "Codman Pl", "name_fr": "Codman Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40872383117676, 37.79395696673922 ], [ -122.40854680538177, 37.79307099610066 ] ] }, "properties": { "class": "service", "len": 126.6093938059111, "name": "Joice St", "name_de": "Joice St", "name_en": "Joice St", "name_es": "Joice St", "name_fr": "Joice St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40823566913605, 37.78737339998601 ], [ -122.40832149982454, 37.78783125876399 ], [ -122.40840196609497, 37.78821280557867 ], [ -122.40841805934906, 37.7882933540988 ], [ -122.40861654281616, 37.78923025411991 ], [ -122.40874528884888, 37.78985767373719 ], [ -122.40880966186525, 37.790175620833686 ], [ -122.40894377231598, 37.79081998941997 ], [ -122.4090027809143, 37.79109130082783 ] ] }, "properties": { "class": "street", "len": 530.5865911314289, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40823566913605, 37.78737339998601 ], [ -122.40826785564423, 37.78736916053963 ], [ -122.40988790988922, 37.78714870899249 ], [ -122.41151869297028, 37.78694097520201 ], [ -122.41235017776489, 37.78684770677962 ], [ -122.41316020488739, 37.78674595927549 ], [ -122.41480708122253, 37.78652126637423 ], [ -122.41645395755768, 37.78631353082002 ], [ -122.41809010505676, 37.78610155516279 ] ] }, "properties": { "class": "street", "len": 1111.452530339568, "name": "Geary St", "name_de": "Geary St", "name_en": "Geary St", "name_es": "Geary St", "name_fr": "Geary St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40862727165222, 37.79763214775467 ], [ -122.40905106067657, 37.79757704258442 ], [ -122.40972697734833, 37.79749226531914 ], [ -122.41025805473328, 37.79741596569723 ] ] }, "properties": { "class": "main", "len": 184.35408965341415, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40663707256317, 37.79787800109037 ], [ -122.40698039531708, 37.79811537594843 ], [ -122.40707695484161, 37.79813233126623 ] ] }, "properties": { "class": "main", "len": 61.65918459179387, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40673899650574, 37.797865284558576 ], [ -122.40630984306335, 37.79756856486228 ], [ -122.40618646144867, 37.79751769850893 ] ] }, "properties": { "class": "main", "len": 78.84169638759144, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40701258182526, 37.797831373796456 ], [ -122.4077957868576, 37.797733880268694 ], [ -122.40862727165222, 37.79763214775467 ] ] }, "properties": { "class": "main", "len": 181.67981259184776, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40644931793213, 37.79888260018339 ], [ -122.40639567375183, 37.79859012337622 ] ] }, "properties": { "class": "service", "len": 41.50369742562071, "name": "Romolo Pl", "name_de": "Romolo Pl", "name_en": "Romolo Pl", "name_es": "Romolo Pl", "name_fr": "Romolo Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4054890871048, 37.798017882795456 ], [ -122.40626156330109, 37.79792886719558 ], [ -122.40663707256317, 37.79787800109037 ] ] }, "properties": { "class": "main", "len": 129.15903882642104, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40596115589142, 37.80662645609157 ], [ -122.40605771541595, 37.806588311008134 ], [ -122.40607917308807, 37.80657983432025 ], [ -122.40609526634216, 37.80657983432025 ], [ -122.40715742111206, 37.80643573047732 ], [ -122.40861117839813, 37.80624076600694 ], [ -122.4095070362091, 37.80613480683977 ], [ -122.41032779216766, 37.80603308589625 ], [ -122.41195321083069, 37.805821166813914 ], [ -122.41360545158385, 37.80561772392273 ], [ -122.41476953029631, 37.805473618202406 ], [ -122.41524159908295, 37.80541851888209 ], [ -122.41688847541809, 37.80521507488168 ] ] }, "properties": { "class": "main", "len": 1233.29485361915, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40622937679291, 37.78571575790625 ], [ -122.40779042243958, 37.78550802008779 ], [ -122.40785479545593, 37.78549954098075 ], [ -122.40787088871002, 37.78549954098075 ], [ -122.4078869819641, 37.78549530142688 ], [ -122.4079245328903, 37.785491061872726 ], [ -122.40794599056242, 37.78548682231837 ], [ -122.4086809158325, 37.785393552060754 ] ] }, "properties": { "class": "street", "len": 276.3423383783363, "name": "Ellis St", "name_de": "Ellis St", "name_en": "Ellis St", "name_es": "Ellis St", "name_fr": "Ellis St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40594506263733, 37.792460560388086 ], [ -122.40612208843231, 37.79337621206568 ], [ -122.40621328353882, 37.793834033649084 ], [ -122.4062991142273, 37.79426641809515 ], [ -122.4064975976944, 37.79515661339839 ], [ -122.40665316581726, 37.79602984217886 ], [ -122.40683019161224, 37.79691153843622 ], [ -122.40694820880891, 37.79748378758728 ], [ -122.40701258182527, 37.797831373796456 ] ] }, "properties": { "class": "street", "len": 765.8157967799175, "name": "Grant Ave", "name_de": "Grant Ave", "name_en": "Grant Ave", "name_es": "Grant Ave", "name_fr": "Grant Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40594506263733, 37.792460560388086 ], [ -122.40671753883363, 37.79236305977244 ], [ -122.40753829479218, 37.792261319862405 ], [ -122.40809619426727, 37.79219349317789 ], [ -122.40836441516876, 37.79215957981227 ], [ -122.40883111953735, 37.79210023138499 ], [ -122.40919053554533, 37.79205360044444 ] ] }, "properties": { "class": "street", "len": 365.9903944746072, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4108213186264, 37.791837402062676 ], [ -122.41110563278198, 37.791799249341395 ], [ -122.41171717643738, 37.79172294383976 ], [ -122.41206049919128, 37.79168479105935 ], [ -122.41245210170746, 37.79163815985659 ] ] }, "properties": { "class": "street", "len": 183.65375715351743, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40479707717896, 37.79445293609456 ], [ -122.40488290786743, 37.794859882822436 ], [ -122.40497410297394, 37.79532617319241 ], [ -122.40515112876892, 37.79622059466506 ], [ -122.40529596805573, 37.79690306063769 ] ] }, "properties": { "class": "main", "len": 349.58069308376486, "name": "Kearny St", "name_de": "Kearny St", "name_en": "Kearny St", "name_es": "Kearny St", "name_fr": "Kearny St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41136848926544, 37.79452923877677 ], [ -122.41128802299501, 37.79453771684771 ], [ -122.41124510765076, 37.79454619491767 ], [ -122.4111968278885, 37.7945589120208 ], [ -122.4111592769623, 37.79456315105469 ], [ -122.4105477333069, 37.79464369265235 ], [ -122.41008639335634, 37.794707278062184 ], [ -122.4098986387253, 37.7947284731866 ], [ -122.4097377061844, 37.79474966830498 ] ] }, "properties": { "class": "street", "len": 184.2016929531114, "name": "Washington St", "name_de": "Washington St", "name_en": "Washington St", "name_es": "Washington St", "name_fr": "Washington St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40973770618439, 37.79474966830498 ], [ -122.40988254547119, 37.79551268851633 ], [ -122.40990400314331, 37.795618662922415 ] ] }, "properties": { "class": "street", "len": 123.9916499108682, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40954458713531, 37.79385522902405 ], [ -122.40973770618439, 37.79474966830498 ] ] }, "properties": { "class": "street", "len": 128.04957243233278, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40954458713531, 37.79385522902405 ], [ -122.4095231294632, 37.79385522902405 ], [ -122.40919589996338, 37.79389761975574 ], [ -122.40872383117674, 37.793956966739245 ], [ -122.40789771080016, 37.794062943376915 ], [ -122.40752220153807, 37.79410957304935 ], [ -122.40730762481688, 37.79413924646194 ], [ -122.4068248271942, 37.79419859325133 ], [ -122.4062991142273, 37.79426641809515 ], [ -122.40566611289978, 37.794346960016284 ], [ -122.40479707717894, 37.79445293609456 ] ] }, "properties": { "class": "street", "len": 534.9310728894536, "name": "Clay St", "name_de": "Clay St", "name_en": "Clay St", "name_es": "Clay St", "name_fr": "Clay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40816593170166, 37.80344339302085 ], [ -122.4082624912262, 37.80392234470129 ], [ -122.40834832191467, 37.804367385514226 ], [ -122.40842878818512, 37.804837854314705 ], [ -122.40853607654572, 37.80529136644753 ] ] }, "properties": { "class": "street", "len": 263.9852347691697, "name": "Grant Ave", "name_de": "Grant Ave", "name_en": "Grant Ave", "name_es": "Grant Ave", "name_fr": "Grant Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40816593170166, 37.80344339302085 ], [ -122.40976452827452, 37.803239943579534 ] ] }, "properties": { "class": "street", "len": 180.34540997713472, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4130368232727, 37.80282880445625 ], [ -122.41294026374817, 37.802332891334544 ], [ -122.41290807723998, 37.802184540608394 ] ] }, "properties": { "class": "street", "len": 91.80682766410945, "name": "Mason St", "name_de": "Mason St", "name_en": "Mason St", "name_es": "Mason St", "name_fr": "Mason St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40529596805573, 37.79690306063769 ], [ -122.40553736686707, 37.79707261642332 ], [ -122.40618646144867, 37.79751769850896 ] ] }, "properties": { "class": "main", "len": 131.24793561602883, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41532742977142, 37.80016694115013 ], [ -122.41478562355042, 37.80023052180601 ] ] }, "properties": { "class": "path", "len": 60.584705165535524, "name": "Redfield Alley", "name_de": "Redfield Alley", "name_en": "Redfield Alley", "name_es": "Redfield Alley", "name_fr": "Redfield Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41245210170746, 37.79163815985659 ], [ -122.41410970687866, 37.791421960259214 ], [ -122.41576731204987, 37.791209999255514 ] ] }, "properties": { "class": "street", "len": 373.990849845489, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40919053554535, 37.79205360044444 ], [ -122.40936219692232, 37.79296077891455 ], [ -122.40954458713531, 37.79385522902405 ] ] }, "properties": { "class": "street", "len": 256.5839136317273, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4090027809143, 37.79109130082786 ], [ -122.40919053554535, 37.79205360044444 ] ] }, "properties": { "class": "street", "len": 137.04016126681051, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40919053554535, 37.79205360044444 ], [ -122.4108213186264, 37.791837402062676 ] ] }, "properties": { "class": "street", "len": 183.83939784404808, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40426063537598, 37.784490520297716 ], [ -122.40487217903136, 37.78400296335056 ] ] }, "properties": { "class": "main", "len": 97.00967013617185, "name": "Mission St", "name_de": "Mission St", "name_en": "Mission St", "name_es": "Mission St", "name_fr": "Mission St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40659952163696, 37.78757689312644 ], [ -122.40641176700592, 37.78663997214301 ], [ -122.40625083446503, 37.785821746364185 ], [ -122.40622937679291, 37.78571575790625 ] ] }, "properties": { "class": "street_limited", "len": 265.42301278417017, "name": "Stockton St", "name_de": "Stockton St", "name_en": "Stockton St", "name_es": "Stockton St", "name_fr": "Stockton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40661025047302, 37.78852228099244 ], [ -122.40626692771912, 37.78856467478382 ] ] }, "properties": { "class": "street", "len": 38.5378528189579, "name": "Post St", "name_de": "Post St", "name_en": "Post St", "name_es": "Post St", "name_fr": "Post St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40598261356354, 37.788598589799406 ], [ -122.40565001964569, 37.788640983547005 ] ] }, "properties": { "class": "street", "len": 37.498653310353, "name": "Post St", "name_de": "Post St", "name_en": "Post St", "name_es": "Post St", "name_fr": "Post St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40626692771912, 37.78856467478382 ], [ -122.40598261356354, 37.788598589799406 ] ] }, "properties": { "class": "street", "len": 32.31026152792775, "name": "Post St", "name_de": "Post St", "name_en": "Post St", "name_es": "Post St", "name_fr": "Post St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40565001964569, 37.788640983547005 ], [ -122.40522623062134, 37.78869609538249 ] ] }, "properties": { "class": "street", "len": 47.92525221645662, "name": "Post St", "name_de": "Post St", "name_en": "Post St", "name_es": "Post St", "name_fr": "Post St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41234481334686, 37.807698748708574 ], [ -122.41397559642792, 37.807491072698134 ] ] }, "properties": { "class": "street", "len": 183.75914698432766, "name": "Beach St", "name_de": "Beach St", "name_en": "Beach St", "name_es": "Beach St", "name_fr": "Beach St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41214632987976, 37.80675784456153 ], [ -122.41234481334686, 37.807698748708574 ] ] }, "properties": { "class": "street", "len": 134.73853531996173, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42112100124359, 37.78476609454075 ], [ -122.4195545911789, 37.78496535527636 ], [ -122.41790235042572, 37.78517733419256 ], [ -122.41626620292664, 37.785385072940564 ], [ -122.4159175157547, 37.78542746853168 ], [ -122.41567611694335, 37.78545714543098 ], [ -122.41502702236174, 37.7855419365062 ], [ -122.41461932659148, 37.785592811104635 ], [ -122.4129831790924, 37.78580054868474 ], [ -122.41215169429778, 37.785910776551354 ], [ -122.41133630275725, 37.78601252520537 ], [ -122.409850358963, 37.78620330355411 ], [ -122.4097055196762, 37.78622026160572 ], [ -122.40933537483214, 37.78626689622757 ], [ -122.40895450115204, 37.78631353082002 ], [ -122.40807473659515, 37.78642799742214 ], [ -122.40805327892303, 37.7864322369225 ], [ -122.40802645683289, 37.7864322369225 ], [ -122.40641176700592, 37.78663997214301 ], [ -122.40536570549011, 37.78677139616462 ], [ -122.40485608577728, 37.78683922782627 ] ] }, "properties": { "class": "street", "len": 1833.5782452067062, "name": "O'Farrell St", "name_de": "O'Farrell St", "name_en": "O'Farrell St", "name_es": "O'Farrell St", "name_fr": "O'Farrell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.80106554267365 ], [ -122.40444302558899, 37.80103163338067 ] ] }, "properties": { "class": "street", "len": 58.18082588018759, "name": "Union St", "name_de": "Union St", "name_en": "Union St", "name_es": "Union St", "name_fr": "Union St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40670680999756, 37.804159700135244 ], [ -122.40676581859587, 37.8044394394888 ] ] }, "properties": { "class": "street", "len": 40.44708765741083, "name": "Kearny St", "name_de": "Kearny St", "name_en": "Kearny St", "name_es": "Kearny St", "name_fr": "Kearny St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41145431995392, 37.80112064524151 ], [ -122.41095542907715, 37.80077731318719 ] ] }, "properties": { "class": "main", "len": 73.95789342580765, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41095542907715, 37.80077731318719 ], [ -122.4102795124054, 37.800311057224846 ], [ -122.40913689136505, 37.799518415334305 ], [ -122.40908324718475, 37.79948874408232 ], [ -122.4089652299881, 37.79947178907586 ] ] }, "properties": { "class": "main", "len": 289.87044238473743, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41145431995392, 37.80112064524151 ], [ -122.41232335567474, 37.801010440064665 ], [ -122.41266131401063, 37.80098076941203 ], [ -122.41267740726471, 37.80098076941203 ], [ -122.41269886493683, 37.80098076941203 ], [ -122.41430282592773, 37.800756119798216 ], [ -122.41487681865692, 37.80067982354754 ], [ -122.41596579551697, 37.80053994688325 ], [ -122.41667926311493, 37.80044669562654 ], [ -122.41749465465546, 37.80034496684863 ], [ -122.41762340068817, 37.80032801203869 ] ] }, "properties": { "class": "street", "len": 696.0457391702105, "name": "Filbert St", "name_de": "Filbert St", "name_en": "Filbert St", "name_es": "Filbert St", "name_fr": "Filbert St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41102516651154, 37.80117574776828 ], [ -122.41130948066713, 37.801141838525915 ], [ -122.41145431995393, 37.80112064524151 ] ] }, "properties": { "class": "street", "len": 48.65819507844989, "name": "Filbert St", "name_de": "Filbert St", "name_en": "Filbert St", "name_es": "Filbert St", "name_fr": "Filbert St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40976452827454, 37.803239943579534 ], [ -122.41034924983978, 37.80316364989455 ], [ -122.41138994693756, 37.80303649357777 ], [ -122.41231262683868, 37.8029220527055 ], [ -122.4130368232727, 37.80282880445625 ] ] }, "properties": { "class": "street", "len": 368.9346596825863, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40919053554535, 37.80044669562654 ], [ -122.40920662879944, 37.80052299211805 ], [ -122.4092710018158, 37.80083665464399 ], [ -122.40934610366821, 37.80118422507645 ], [ -122.40938365459442, 37.801379202895646 ], [ -122.4094694852829, 37.80184969073116 ], [ -122.4095767736435, 37.802303221213165 ], [ -122.40976452827454, 37.803239943579534 ] ] }, "properties": { "class": "street", "len": 398.8186351854098, "name": "Stockton St", "name_de": "Stockton St", "name_en": "Stockton St", "name_es": "Stockton St", "name_fr": "Stockton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40919053554535, 37.80044669562654 ], [ -122.40964114665985, 37.8003915925559 ], [ -122.40986108779909, 37.80036192165466 ], [ -122.41015613079072, 37.80032377333558 ] ] }, "properties": { "class": "street", "len": 108.83598004008599, "name": "Union St", "name_de": "Union St", "name_en": "Union St", "name_es": "Union St", "name_fr": "Union St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41015613079071, 37.800323773335606 ], [ -122.41038680076599, 37.80048484388214 ], [ -122.41077303886414, 37.800756119798216 ], [ -122.41096079349518, 37.800883280040885 ] ] }, "properties": { "class": "main", "len": 119.07619620906235, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41096079349518, 37.800883280040885 ], [ -122.41130948066713, 37.801141838525915 ], [ -122.41149723529817, 37.80124780485665 ], [ -122.41243600845338, 37.80190055410142 ], [ -122.41266667842866, 37.80205738260592 ], [ -122.41290807724, 37.80218454060837 ] ] }, "properties": { "class": "main", "len": 284.5610334771084, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40444302558899, 37.80103163338067 ], [ -122.40525841712952, 37.80093414407668 ], [ -122.4059182405472, 37.80085360933718 ], [ -122.40602552890779, 37.80083665464399 ], [ -122.4063688516617, 37.800794267894 ], [ -122.40642786026002, 37.80079002921765 ], [ -122.40681409835817, 37.80073916508263 ], [ -122.40704476833345, 37.80071373300199 ], [ -122.40760266780855, 37.800641675392626 ], [ -122.4079191684723, 37.800603527218016 ], [ -122.40801036357881, 37.800590811155416 ], [ -122.40837514400484, 37.80054842426436 ], [ -122.40885257720949, 37.80048908257599 ], [ -122.40919053554536, 37.80044669562654 ] ] }, "properties": { "class": "street", "len": 534.9702814167264, "name": "Union St", "name_de": "Union St", "name_en": "Union St", "name_es": "Union St", "name_fr": "Union St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41015613079071, 37.800323773335606 ], [ -122.4102795124054, 37.800311057224846 ], [ -122.41084277629852, 37.800251715345794 ] ] }, "properties": { "class": "street", "len": 76.63591281024814, "name": "Union St", "name_de": "Union St", "name_en": "Union St", "name_es": "Union St", "name_fr": "Union St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4371337890625, 37.806461160587695 ], [ -122.4367743730545, 37.80650354408551 ], [ -122.43663489818573, 37.8065162591301 ], [ -122.4365222454071, 37.80652473582528 ], [ -122.43640422821045, 37.80652473582528 ], [ -122.43629693984984, 37.80651202078214 ], [ -122.43617892265318, 37.80648235233963 ], [ -122.43608236312865, 37.80644844553362 ] ] }, "properties": { "class": "main", "len": 1295.5299825214686, "name": "Marina Blvd", "name_de": "Marina Blvd", "name_en": "Marina Blvd", "name_es": "Marina Blvd", "name_fr": "Marina Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43680119514465, 37.80276522603697 ], [ -122.43694603443146, 37.80283728157465 ], [ -122.4371337890625, 37.80293900691998 ] ] }, "properties": { "class": "street", "len": 84.14239889006456, "name": "Cervantes Blvd", "name_de": "Cervantes Blvd", "name_en": "Cervantes Blvd", "name_es": "Cervantes Blvd", "name_fr": "Cervantes Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43657052516937, 37.794062943376915 ], [ -122.4371337890625, 37.79399087927983 ] ] }, "properties": { "class": "street", "len": 1112.992845561897, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43548691272736, 37.79709381086916 ], [ -122.43529915809631, 37.79616124949991 ], [ -122.43511140346527, 37.79522867635839 ], [ -122.4349182844162, 37.794274896196235 ] ] }, "properties": { "class": "street", "len": 401.7067503415705, "name": "Fillmore St", "name_de": "Fillmore St", "name_en": "Fillmore St", "name_es": "Fillmore St", "name_fr": "Fillmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43663489818573, 37.80269317042898 ], [ -122.43680655956268, 37.80361717230817 ], [ -122.4369728565216, 37.80436314704291 ], [ -122.43701577186584, 37.804553878009884 ], [ -122.43713378906251, 37.805143021663845 ] ] }, "properties": { "class": "street", "len": 514.0161271942299, "name": "Fillmore St", "name_de": "Fillmore St", "name_en": "Fillmore St", "name_es": "Fillmore St", "name_fr": "Fillmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4371337890625, 37.7968606716305 ], [ -122.43694603443146, 37.79594930209237 ], [ -122.43675827980042, 37.795016726275364 ], [ -122.43657052516937, 37.794062943376915 ] ] }, "properties": { "class": "street", "len": 402.15113100734203, "name": "Steiner St", "name_de": "Steiner St", "name_en": "Steiner St", "name_es": "Steiner St", "name_fr": "Steiner St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43548691272736, 37.79709381086916 ], [ -122.4371337890625, 37.79688186613715 ] ] }, "properties": { "class": "street", "len": 185.81727852882707, "name": "Union St", "name_de": "Union St", "name_en": "Union St", "name_es": "Union St", "name_fr": "Union St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42009103298187, 37.795987452670616 ], [ -122.4197906255722, 37.79603408112835 ], [ -122.41968333721161, 37.79604679797535 ], [ -122.4194473028183, 37.796084948503236 ], [ -122.41934537887575, 37.796097665341506 ], [ -122.41930246353151, 37.796097665341506 ], [ -122.41927027702332, 37.79609342639566 ], [ -122.4192649126053, 37.796072231662805 ] ] }, "properties": { "class": "path", "len": 95.58863909056261, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42471516132355, 37.78541898941539 ], [ -122.42468297481537, 37.785279083856395 ], [ -122.4244898557663, 37.78434637336127 ], [ -122.42436647415161, 37.78374434488178 ] ] }, "properties": { "class": "main", "len": 1784.246105662871, "name": "Gough St", "name_de": "Gough St", "name_en": "Gough St", "name_es": "Gough St", "name_fr": "Gough St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42484390735626, 37.803218750897145 ], [ -122.42502093315125, 37.804159700135244 ] ] }, "properties": { "class": "main", "len": 134.30652850837689, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42502093315125, 37.804159700135244 ], [ -122.42520332336426, 37.805096398955996 ] ] }, "properties": { "class": "main", "len": 133.38853698890858, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42480635643005, 37.802269312488406 ], [ -122.42479026317598, 37.802197256396575 ], [ -122.42463469505311, 37.80142158930995 ], [ -122.42461860179903, 37.80134529374666 ] ] }, "properties": { "class": "main", "len": 132.06325543942452, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4249941110611, 37.8031975582087 ], [ -122.42482781410217, 37.80237103861598 ], [ -122.42480635643005, 37.802269312488406 ] ] }, "properties": { "class": "main", "len": 132.1428868028356, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42348670959473, 37.7957246371765 ], [ -122.42505848407745, 37.79552964443152 ], [ -122.42671072483061, 37.79532193420228 ] ] }, "properties": { "class": "street", "len": 363.4559428062918, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42012321949005, 37.79614429372968 ], [ -122.42099225521089, 37.79608070955667 ], [ -122.42163598537446, 37.79600016952563 ], [ -122.42177009582521, 37.79594506313799 ] ] }, "properties": { "class": "main", "len": 186.73849480145344, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42010712623596, 37.79606375376797 ], [ -122.41949558258057, 37.79613157689948 ] ] }, "properties": { "class": "main", "len": 68.68043826231172, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42517650127411, 37.80413850771679 ], [ -122.4249941110611, 37.8031975582087 ] ] }, "properties": { "class": "main", "len": 134.3164163464744, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42183983325958, 37.78755145651453 ], [ -122.42341697216034, 37.787356442199 ], [ -122.4250477552414, 37.78713175115391 ] ] }, "properties": { "class": "street", "len": 361.9390152582063, "name": "Sutter St", "name_de": "Sutter St", "name_en": "Sutter St", "name_es": "Sutter St", "name_fr": "Sutter St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42242455482483, 37.790396063350826 ], [ -122.42254257202148, 37.79037910625748 ], [ -122.42398023605347, 37.79016290297611 ] ] }, "properties": { "class": "street", "len": 175.89302792667098, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41963505744934, 37.80199804212988 ], [ -122.41961896419525, 37.80192598577343 ], [ -122.41945266723633, 37.80114607718208 ], [ -122.41944193840027, 37.80109521329224 ], [ -122.41943657398224, 37.80106978133419 ], [ -122.41931855678558, 37.80045517301839 ], [ -122.41925418376923, 37.80012455401583 ], [ -122.41913080215454, 37.79951417658475 ], [ -122.41912543773653, 37.79948874408232 ], [ -122.4190664291382, 37.79919626967515 ], [ -122.41900742053987, 37.798916510462924 ], [ -122.41897523403169, 37.79874272011575 ], [ -122.41893768310548, 37.79856892935968 ], [ -122.41887867450718, 37.79826373484735 ], [ -122.41869091987614, 37.797339665996475 ], [ -122.4185031652451, 37.79643254129425 ], [ -122.41849780082707, 37.796398629874425 ] ] }, "properties": { "class": "street", "len": 798.6670949796834, "name": "Hyde St", "name_de": "Hyde St", "name_en": "Hyde St", "name_es": "Hyde St", "name_fr": "Hyde St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42347061634064, 37.804358908571395 ], [ -122.42365837097168, 37.80528712802926 ] ] }, "properties": { "class": "street", "len": 132.99522284668095, "name": "Polk St", "name_de": "Polk St", "name_en": "Polk St", "name_es": "Polk St", "name_fr": "Polk St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41949558258057, 37.79613157689948 ], [ -122.41784870624542, 37.796335045920344 ] ] }, "properties": { "class": "main", "len": 185.68311177870564, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41722643375397, 37.805172690644405 ], [ -122.41855680942535, 37.80500739188654 ] ] }, "properties": { "class": "main", "len": 149.5837056633596, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41951704025269, 37.796212116787245 ], [ -122.42012321949005, 37.79614429372968 ] ] }, "properties": { "class": "main", "len": 68.21345615050646, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41850316524506, 37.79643254129425 ], [ -122.41861045360565, 37.79641982451364 ], [ -122.41999447345734, 37.79623755041776 ], [ -122.42006957530975, 37.796241789355314 ], [ -122.42013931274414, 37.79625450616659 ] ] }, "properties": { "class": "street", "len": 184.32818978811707, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42013931274414, 37.79625450616659 ], [ -122.42031633853912, 37.797110766421454 ], [ -122.42050409317017, 37.79804755463823 ], [ -122.42063820362091, 37.798696093367674 ], [ -122.42069721221924, 37.79898433097531 ], [ -122.42088496685028, 37.79991261797943 ], [ -122.42107272148132, 37.800832415970085 ], [ -122.42109417915344, 37.800938382744725 ], [ -122.4212658405304, 37.80178187284963 ], [ -122.42145359516144, 37.80271436326215 ] ] }, "properties": { "class": "street", "len": 922.2551334323109, "name": "Larkin St", "name_de": "Larkin St", "name_en": "Larkin St", "name_es": "Larkin St", "name_fr": "Larkin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41685092449188, 37.804977722839574 ], [ -122.41688847541809, 37.80521507488168 ] ] }, "properties": { "class": "street", "len": 33.292385014751915, "name": "Jones St", "name_de": "Jones St", "name_en": "Jones St", "name_es": "Jones St", "name_fr": "Jones St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42019295692444, 37.80478699296722 ], [ -122.42008566856384, 37.804235992791284 ], [ -122.42001593112946, 37.80388843671987 ], [ -122.4198228120804, 37.8029220527055 ], [ -122.41964578628541, 37.8020743370189 ], [ -122.41963505744936, 37.80199804212988 ] ] }, "properties": { "class": "street", "len": 398.17634129276195, "name": "Hyde St", "name_de": "Hyde St", "name_en": "Hyde St", "name_es": "Hyde St", "name_fr": "Hyde St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42243528366089, 37.80354087901289 ], [ -122.42224752902985, 37.80362141082225 ], [ -122.42178618907927, 37.803672272972435 ], [ -122.42174327373503, 37.803684988504514 ], [ -122.4217003583908, 37.80371041956209 ] ] }, "properties": { "class": "street", "len": 86.57526000566389, "name": "Francisco St", "name_de": "Francisco St", "name_en": "Francisco St", "name_es": "Francisco St", "name_fr": "Francisco St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41855680942535, 37.80500739188654 ], [ -122.4187445640564, 37.80592288804934 ], [ -122.41883039474487, 37.80627043454651 ], [ -122.41890549659729, 37.80686380283475 ], [ -122.4190878868103, 37.807800467357744 ], [ -122.41921126842499, 37.80838534687133 ] ] }, "properties": { "class": "street", "len": 482.4912253180585, "name": "Leavenworth St", "name_de": "Leavenworth St", "name_en": "Leavenworth St", "name_es": "Leavenworth St", "name_fr": "Leavenworth St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42174863815308, 37.80423175431249 ], [ -122.42181837558745, 37.80456659339016 ] ] }, "properties": { "class": "street", "len": 48.16414641630078, "name": "Larkin St", "name_de": "Larkin St", "name_en": "Larkin St", "name_es": "Larkin St", "name_fr": "Larkin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41809010505676, 37.78610155516276 ], [ -122.41974234580994, 37.78589381842874 ], [ -122.4213033914566, 37.785694560196426 ] ] }, "properties": { "class": "street", "len": 362.02801077693545, "name": "Geary St", "name_de": "Geary St", "name_en": "Geary St", "name_es": "Geary St", "name_fr": "Geary St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4205631017685, 37.80665188613628 ], [ -122.42103517055511, 37.80659254935171 ], [ -122.42168962955475, 37.80650354408551 ], [ -122.42219924926758, 37.80643573047732 ], [ -122.42244601249695, 37.80640606200415 ], [ -122.42328822612762, 37.80629162635318 ], [ -122.42384612560271, 37.80621957418566 ] ] }, "properties": { "class": "street", "len": 370.54383566678337, "name": "Beach St", "name_de": "Beach St", "name_en": "Beach St", "name_es": "Beach St", "name_fr": "Beach St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42384612560272, 37.80621957418566 ], [ -122.42399632930757, 37.806202620724285 ], [ -122.42511749267578, 37.80605427777103 ] ] }, "properties": { "class": "street", "len": 143.20004374578073, "name": "Beach St", "name_de": "Beach St", "name_en": "Beach St", "name_es": "Beach St", "name_fr": "Beach St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41416871547699, 37.80841925278804 ], [ -122.4158102273941, 37.808215817054325 ], [ -122.41745710372925, 37.80800814249806 ] ] }, "properties": { "class": "street", "len": 370.5655929110899, "name": "Jefferson St", "name_de": "Jefferson St", "name_en": "Jefferson St", "name_es": "Jefferson St", "name_fr": "Jefferson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4130368232727, 37.80282880445625 ], [ -122.41362690925598, 37.8027567489103 ], [ -122.41365909576416, 37.80275251034657 ], [ -122.41372346878052, 37.8027440332184 ], [ -122.41378784179688, 37.80272707895914 ], [ -122.41387367248535, 37.80270588612963 ], [ -122.41457104682922, 37.80262111475069 ], [ -122.41468906402588, 37.80261687617921 ], [ -122.41481781005861, 37.80260839903546 ], [ -122.41623938083649, 37.802430378792366 ], [ -122.41634130477905, 37.80240494729402 ], [ -122.41645395755768, 37.80238375437207 ], [ -122.4178808927536, 37.80220573358751 ], [ -122.4179881811142, 37.80220997218259 ] ] }, "properties": { "class": "street", "len": 558.8266262085464, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41397559642792, 37.807491072698134 ], [ -122.41378784179688, 37.80655440425077 ] ] }, "properties": { "class": "street", "len": 134.02815525115065, "name": "Mason St", "name_de": "Mason St", "name_en": "Mason St", "name_es": "Mason St", "name_fr": "Mason St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41378784179688, 37.80655440425077 ], [ -122.41360545158386, 37.80561772392276 ], [ -122.41351962089539, 37.80515573694268 ], [ -122.41343379020691, 37.80468527016725 ], [ -122.41337478160858, 37.80440977021365 ], [ -122.41322457790375, 37.80376128165094 ], [ -122.4130368232727, 37.80282880445625 ] ] }, "properties": { "class": "street", "len": 531.7786686068795, "name": "Mason St", "name_de": "Mason St", "name_en": "Mason St", "name_es": "Mason St", "name_fr": "Mason St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41576731204987, 37.791209999255514 ], [ -122.4161159992218, 37.79116336775309 ], [ -122.41643249988557, 37.79112097545263 ], [ -122.4171942472458, 37.79102771230599 ], [ -122.41741418838502, 37.79099803764374 ], [ -122.41763412952425, 37.79097260220947 ], [ -122.41907179355623, 37.790798793174275 ], [ -122.42069184780122, 37.79057835185864 ] ] }, "properties": { "class": "street", "len": 555.1665282786608, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42243528366089, 37.80354087901289 ], [ -122.4232828617096, 37.803426438922145 ] ] }, "properties": { "class": "street", "len": 95.40662712866893, "name": "Francisco St", "name_de": "Francisco St", "name_en": "Francisco St", "name_es": "Francisco St", "name_fr": "Francisco St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42145359516144, 37.802714363262176 ], [ -122.42152333259583, 37.802803373095095 ], [ -122.42160379886627, 37.80321451235996 ] ] }, "properties": { "class": "street", "len": 72.9994683493678, "name": "Larkin St", "name_de": "Larkin St", "name_en": "Larkin St", "name_es": "Larkin St", "name_fr": "Larkin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42145359516144, 37.802714363262176 ], [ -122.42143750190736, 37.80282032733683 ], [ -122.42152333259584, 37.803295044525235 ], [ -122.42157161235811, 37.80340100776679 ], [ -122.42161452770235, 37.80349001677221 ], [ -122.42177009582521, 37.80354511753136 ], [ -122.42183446884157, 37.80354935604959 ] ] }, "properties": { "class": "street", "len": 137.79170216752743, "name": "Larkin St", "name_de": "Larkin St", "name_en": "Larkin St", "name_es": "Larkin St", "name_fr": "Larkin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41845488548279, 37.80405373798221 ], [ -122.41842806339265, 37.804019830061115 ], [ -122.41840660572053, 37.8039732066442 ], [ -122.41829931735992, 37.80347306268421 ], [ -122.41821885108948, 37.8033586224884 ] ] }, "properties": { "class": "street", "len": 102.36354696374765, "name": "Leavenworth St", "name_de": "Leavenworth St", "name_en": "Leavenworth St", "name_es": "Leavenworth St", "name_fr": "Leavenworth St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42170035839081, 37.80371041956209 ], [ -122.42168426513672, 37.80375280463857 ], [ -122.4216789007187, 37.80377823567278 ], [ -122.42168426513672, 37.803871482723345 ], [ -122.42168426513672, 37.8038969137167 ], [ -122.4216789007187, 37.8039350601903 ], [ -122.42167353630067, 37.80396472965615 ], [ -122.42166280746461, 37.80399016061739 ], [ -122.42164671421055, 37.8040155915699 ], [ -122.42162525653843, 37.804036784023616 ] ] }, "properties": { "class": "street", "len": 47.97486496082605, "name": "Larkin St", "name_de": "Larkin St", "name_en": "Larkin St", "name_es": "Larkin St", "name_fr": "Larkin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41773068904877, 37.799874469428296 ], [ -122.41826176643372, 37.799781217331464 ], [ -122.41855680942535, 37.799743068712466 ] ] }, "properties": { "class": "path", "len": 93.91102111592187, "name": "Havens St", "name_de": "Havens St", "name_en": "Havens St", "name_es": "Havens St", "name_fr": "Havens St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42268204689026, 37.78374434488178 ], [ -122.42274641990662, 37.78408775609415 ], [ -122.42283761501312, 37.78454139561992 ], [ -122.42293417453766, 37.7850162302717 ], [ -122.42302536964417, 37.785474103653826 ], [ -122.42321848869324, 37.78640256041474 ], [ -122.42329895496368, 37.78680107252427 ], [ -122.42330968379974, 37.786868904158695 ], [ -122.42341697216034, 37.787356442199 ], [ -122.42350280284882, 37.787805822239655 ], [ -122.42359399795532, 37.78828063591726 ], [ -122.42369055747986, 37.78874696780958 ], [ -122.42378175258636, 37.78920481807711 ], [ -122.42398023605347, 37.790162902976135 ], [ -122.42415189743042, 37.79109130082786 ], [ -122.42433965206148, 37.79197305602324 ], [ -122.42451667785646, 37.79285056156404 ], [ -122.42468833923341, 37.79372805668306 ], [ -122.42486000061037, 37.79460978041143 ], [ -122.42505848407747, 37.79552964443154 ], [ -122.42524087429048, 37.79642406344079 ], [ -122.42525160312654, 37.7964834083948 ], [ -122.42543935775758, 37.79741172682706 ], [ -122.42562711238863, 37.798344272410624 ], [ -122.42579877376558, 37.79920050844297 ], [ -122.42581486701967, 37.799276806221684 ], [ -122.42583096027376, 37.799348865162536 ], [ -122.42599189281465, 37.80015422501243 ], [ -122.42600262165071, 37.80020932826014 ], [ -122.42602407932283, 37.80029834111194 ], [ -122.4261099100113, 37.80074340376193 ], [ -122.42618501186375, 37.801052826690636 ] ] }, "properties": { "class": "main", "len": 3418.3581059088283, "name": "Franklin St", "name_de": "Franklin St", "name_en": "Franklin St", "name_es": "Franklin St", "name_fr": "Franklin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4108749628067, 37.78374434488178 ], [ -122.41095542907715, 37.784151350588004 ], [ -122.41114318370819, 37.785075584388686 ], [ -122.41133630275725, 37.78601252520537 ], [ -122.41151869297026, 37.78694097520201 ], [ -122.41157233715056, 37.78722077976292 ], [ -122.41164207458495, 37.78756841425678 ], [ -122.41170108318327, 37.787873652951795 ], [ -122.41176009178157, 37.78815345398132 ], [ -122.4118191003799, 37.78848412655941 ], [ -122.41188883781429, 37.78881055829413 ], [ -122.41207659244533, 37.78974321244753 ], [ -122.41215705871578, 37.79012474939018 ], [ -122.4122697114944, 37.79067585482935 ] ] }, "properties": { "class": "main", "len": 1220.1934447537033, "name": "Taylor St", "name_de": "Taylor St", "name_en": "Taylor St", "name_es": "Taylor St", "name_fr": "Taylor St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41741418838501, 37.79099803764377 ], [ -122.41720497608185, 37.79004844215926 ], [ -122.4170172214508, 37.789111552511955 ], [ -122.41682946681976, 37.788178890386014 ], [ -122.4167650938034, 37.78786941353413 ], [ -122.41664171218872, 37.787250455942115 ], [ -122.41645395755768, 37.78631353082002 ], [ -122.41633594036102, 37.78573271606973 ], [ -122.41626620292664, 37.785385072940564 ], [ -122.41607308387756, 37.784452363783075 ], [ -122.41593360900879, 37.78374434488178 ] ] }, "properties": { "class": "street", "len": 1758.1372162447021, "name": "Hyde St", "name_de": "Hyde St", "name_en": "Hyde St", "name_es": "Hyde St", "name_fr": "Hyde St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43491291999817, 37.785876860302224 ], [ -122.43655443191528, 37.78566912293662 ], [ -122.4371337890625, 37.78559705065291 ] ] }, "properties": { "class": "street", "len": 1275.7791452826677, "name": "Sutter St", "name_de": "Sutter St", "name_en": "Sutter St", "name_es": "Sutter St", "name_fr": "Sutter St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43491291999817, 37.785876860302224 ], [ -122.43472516536713, 37.7849483969368 ] ] }, "properties": { "class": "street", "len": 132.62396201277474, "name": "Steiner St", "name_de": "Steiner St", "name_en": "Steiner St", "name_es": "Steiner St", "name_fr": "Steiner St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43472516536713, 37.7849483969368 ], [ -122.43460178375244, 37.78430397714999 ] ] }, "properties": { "class": "street", "len": 92.04912275497647, "name": "Steiner St", "name_de": "Steiner St", "name_en": "Steiner St", "name_es": "Steiner St", "name_fr": "Steiner St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41391122341156, 37.79045965241627 ], [ -122.41374492645264, 37.789548203916084 ], [ -122.41355180740356, 37.78860282917525 ], [ -122.41341233253479, 37.78794572301528 ], [ -122.41335868835449, 37.787665921199185 ], [ -122.41329967975616, 37.787386118323695 ], [ -122.41322994232178, 37.787055440832255 ], [ -122.41316020488739, 37.786745959275464 ], [ -122.41298317909241, 37.78580054868476 ], [ -122.41288661956787, 37.78536811469731 ], [ -122.41287589073181, 37.785329958635764 ], [ -122.4127846956253, 37.784867844770744 ], [ -122.41259694099426, 37.78393936872902 ], [ -122.41255939006807, 37.78374434488178 ] ] }, "properties": { "class": "main", "len": 1360.046048576959, "name": "Jones St", "name_de": "Jones St", "name_en": "Jones St", "name_es": "Jones St", "name_fr": "Jones St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41761267185211, 37.78374434488178 ], [ -122.41762340068817, 37.78377826210958 ], [ -122.41770923137666, 37.784236143161344 ], [ -122.41781115531921, 37.78471097977434 ], [ -122.41790235042572, 37.78517733419256 ], [ -122.41799890995026, 37.785643685668035 ], [ -122.41809010505676, 37.78610155516276 ] ] }, "properties": { "class": "street", "len": 799.7411212773527, "name": "Larkin St", "name_de": "Larkin St", "name_en": "Larkin St", "name_es": "Larkin St", "name_fr": "Larkin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42542326450348, 37.78899709006654 ], [ -122.42533206939697, 37.78853923851192 ], [ -122.42524087429047, 37.78807290530868 ], [ -122.42514431476593, 37.787598090296335 ], [ -122.4250477552414, 37.78713175115391 ], [ -122.42486000061035, 37.786199064040595 ], [ -122.42471516132355, 37.78541898941539 ] ] }, "properties": { "class": "main", "len": 509.91428016842895, "name": "Gough St", "name_de": "Gough St", "name_en": "Gough St", "name_es": "Gough St", "name_fr": "Gough St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42561638355255, 37.7899551776589 ], [ -122.4254232645035, 37.78899709006654 ] ] }, "properties": { "class": "street", "len": 136.51211008514636, "name": "Gough St", "name_de": "Gough St", "name_en": "Gough St", "name_es": "Gough St", "name_fr": "Gough St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40868091583252, 37.785393552060754 ], [ -122.40951776504518, 37.78528332342268 ], [ -122.4111431837082, 37.785075584388686 ], [ -122.41189956665039, 37.784982313612026 ], [ -122.41221606731416, 37.78493991776557 ], [ -122.4127846956253, 37.784867844770744 ], [ -122.41443157196046, 37.78466010456887 ], [ -122.4147802591324, 37.78461346893308 ], [ -122.41607308387758, 37.784452363783075 ], [ -122.41770923137666, 37.784236143161344 ], [ -122.4193668365479, 37.78403264082188 ], [ -122.42093324661259, 37.78383337757154 ], [ -122.4210780858994, 37.78381641897224 ], [ -122.4216735363007, 37.78374434488178 ] ] }, "properties": { "class": "street", "len": 1760.9672786629048, "name": "Ellis St", "name_de": "Ellis St", "name_en": "Ellis St", "name_es": "Ellis St", "name_fr": "Ellis St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40668535232544, 37.78803475064363 ], [ -122.40513503551483, 37.788242481359454 ] ] }, "properties": { "class": "street", "len": 174.9995191421173, "name": "Maiden Ln", "name_de": "Maiden Ln", "name_en": "Maiden Ln", "name_es": "Maiden Ln", "name_fr": "Maiden Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40677118301392, 37.78850108408765 ], [ -122.40668535232544, 37.78803475064363 ], [ -122.40659952163695, 37.78757689312644 ] ] }, "properties": { "class": "street", "len": 131.5248338994387, "name": "Stockton St", "name_de": "Stockton St", "name_en": "Stockton St", "name_es": "Stockton St", "name_fr": "Stockton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40540862083435, 37.7896245116636 ], [ -122.40699112415314, 37.78942950281888 ] ] }, "properties": { "class": "street", "len": 178.11152966634953, "name": "Sutter St", "name_de": "Sutter St", "name_en": "Sutter St", "name_es": "Sutter St", "name_fr": "Sutter St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40699112415314, 37.78942950281888 ], [ -122.40775287151337, 37.78933623753729 ], [ -122.40860044956207, 37.78923025411991 ], [ -122.40861654281616, 37.78923025411991 ], [ -122.40863800048828, 37.78922601478005 ], [ -122.41025805473328, 37.78901828682906 ], [ -122.41097152233122, 37.78892502102849 ], [ -122.41188883781433, 37.78881055829413 ], [ -122.41355180740355, 37.78860282917527 ], [ -122.41518795490263, 37.78839086008467 ], [ -122.41682946681975, 37.788178890386014 ], [ -122.41788625717162, 37.78804322945981 ], [ -122.41846561431883, 37.78796692007937 ], [ -122.42011785507198, 37.787759188588936 ], [ -122.4216896295547, 37.787572653691754 ] ] }, "properties": { "class": "street", "len": 1657.262395234056, "name": "Sutter St", "name_de": "Sutter St", "name_en": "Sutter St", "name_es": "Sutter St", "name_fr": "Sutter St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40540862083435, 37.7896245116636 ], [ -122.40551054477692, 37.790112031523854 ], [ -122.40558028221129, 37.79046813095418 ], [ -122.40557491779327, 37.790565634070354 ] ] }, "properties": { "class": "street", "len": 134.6524870185753, "name": "Grant Ave", "name_de": "Grant Ave", "name_en": "Grant Ave", "name_es": "Grant Ave", "name_fr": "Grant Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40699112415314, 37.78942950281888 ], [ -122.40688383579254, 37.78897589329795 ], [ -122.40677118301392, 37.78850108408762 ] ] }, "properties": { "class": "street", "len": 133.25002412547389, "name": "Stockton St", "name_de": "Stockton St", "name_en": "Stockton St", "name_es": "Stockton St", "name_fr": "Stockton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42069184780121, 37.79057835185864 ], [ -122.42080450057983, 37.79061226595001 ], [ -122.42216169834137, 37.79043845606721 ], [ -122.42225289344788, 37.79042573825485 ] ] }, "properties": { "class": "street", "len": 177.0796643801487, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42486000061035, 37.786199064040595 ], [ -122.42380321025848, 37.786330488846325 ], [ -122.42356181144714, 37.786360165383016 ], [ -122.42321848869324, 37.78640256041474 ], [ -122.42189884185791, 37.78657214029849 ], [ -122.42165744304657, 37.78660605622855 ] ] }, "properties": { "class": "street", "len": 361.0679615924578, "name": "Post St", "name_de": "Post St", "name_en": "Post St", "name_es": "Post St", "name_fr": "Post St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43219316005707, 37.78911579185835 ], [ -122.432000041008, 37.788161932783865 ] ] }, "properties": { "class": "street", "len": 136.3813608966564, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41413116455078, 37.78374434488178 ], [ -122.41329967975616, 37.78385033616694 ], [ -122.41259694099426, 37.78393936872902 ], [ -122.41095542907716, 37.784151350588004 ], [ -122.40933537483217, 37.7843590922199 ], [ -122.40871310234071, 37.78443964494047 ], [ -122.40870237350465, 37.78443964494047 ], [ -122.40853607654573, 37.78446508262344 ] ] }, "properties": { "class": "street", "len": 1015.5915745777658, "name": "Eddy St", "name_de": "Eddy St", "name_en": "Eddy St", "name_es": "Eddy St", "name_fr": "Eddy St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40868091583252, 37.785393552060754 ], [ -122.40869700908661, 37.78548258276376 ], [ -122.40872919559479, 37.7855461760574 ], [ -122.40883111953735, 37.78580478822113 ], [ -122.40884721279143, 37.785851423105164 ], [ -122.40895450115204, 37.78631353082002 ] ] }, "properties": { "class": "street", "len": 133.50390021775553, "name": "Cyril Magnin St", "name_de": "Cyril Magnin St", "name_en": "Cyril Magnin St", "name_es": "Cyril Magnin St", "name_fr": "Cyril Magnin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40853607654572, 37.78446508262347 ], [ -122.40854680538177, 37.78453291640197 ], [ -122.40868091583252, 37.785393552060754 ] ] }, "properties": { "class": "street", "len": 131.98575823906768, "name": "Cyril Magnin St", "name_de": "Cyril Magnin St", "name_en": "Cyril Magnin St", "name_es": "Cyril Magnin St", "name_fr": "Cyril Magnin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40487217903137, 37.78400296335056 ], [ -122.40541934967041, 37.78443964494047 ] ] }, "properties": { "class": "service", "len": 86.69911245112657, "name": "Jessie E", "name_de": "Jessie E", "name_en": "Jessie E", "name_es": "Jessie E", "name_fr": "Jessie E", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42369055747986, 37.78874696780958 ], [ -122.42533206939697, 37.78853923851192 ], [ -122.42696821689606, 37.788331508630314 ] ] }, "properties": { "class": "street", "len": 369.2941182169342, "name": "Austin St", "name_de": "Austin St", "name_en": "Austin St", "name_es": "Austin St", "name_fr": "Austin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40487217903137, 37.78400296335056 ], [ -122.40520477294922, 37.78374434488178 ] ] }, "properties": { "class": "main", "len": 183.31487943400796, "name": "Mission St", "name_de": "Mission St", "name_en": "Mission St", "name_es": "Mission St", "name_fr": "Mission St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40576267242432, 37.80676208289539 ], [ -122.4059933423996, 37.80685532617847 ], [ -122.40612745285034, 37.8069146627519 ], [ -122.40701258182526, 37.80734697063339 ], [ -122.40714132785797, 37.80740206851487 ], [ -122.4073076248169, 37.807457166355256 ] ] }, "properties": { "class": "main", "len": 198.17886927846018, "name": "The Embarcadero", "name_de": "The Embarcadero", "name_en": "The Embarcadero", "name_es": "The Embarcadero", "name_fr": "The Embarcadero", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41015613079071, 37.80838110863068 ], [ -122.41014003753662, 37.8084658733981 ], [ -122.41009712219238, 37.808698976006774 ], [ -122.40997910499573, 37.809279610214595 ] ] }, "properties": { "class": "path", "len": 127.82849278118682, "name": "Pier 39", "name_de": "Pier 39", "name_en": "Pier 39", "name_es": "Pier 39", "name_fr": "Pier 39", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41773068904877, 37.80797423639261 ], [ -122.41791844367981, 37.80895326892251 ], [ -122.41796135902405, 37.808987174578434 ], [ -122.41804718971252, 37.80902955662645 ], [ -122.41977453231812, 37.80907617685116 ] ] }, "properties": { "class": "service", "len": 349.813466182768, "name": "Jones Alley", "name_de": "Jones Alley", "name_en": "Jones Alley", "name_es": "Jones Alley", "name_fr": "Jones Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40853607654572, 37.80529136644753 ], [ -122.40860044956207, 37.80561348552322 ] ] }, "properties": { "class": "street", "len": 46.29339693794459, "name": "Grant Ave", "name_de": "Grant Ave", "name_en": "Grant Ave", "name_es": "Grant Ave", "name_fr": "Grant Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41722643375397, 37.805172690644405 ], [ -122.4183851480484, 37.805973748614505 ] ] }, "properties": { "class": "main", "len": 171.63314044822167, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41488218307495, 37.80354511753136 ], [ -122.41509675979614, 37.80374008911819 ], [ -122.41598725318907, 37.8043673855142 ], [ -122.41685092449187, 37.804977722839574 ], [ -122.41722643375395, 37.805172690644405 ] ] }, "properties": { "class": "main", "len": 348.67300964094204, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41722643375397, 37.805172690644405 ], [ -122.41683483123781, 37.804833615870386 ], [ -122.41614818573, 37.80434619315537 ], [ -122.41555809974672, 37.80395201417224 ], [ -122.41515040397645, 37.803668034461275 ], [ -122.41488218307497, 37.80354511753136 ] ] }, "properties": { "class": "main", "len": 348.88383735093436, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41102516651154, 37.80117574776828 ], [ -122.41120755672455, 37.802095530029646 ], [ -122.41138994693756, 37.80303649357777 ], [ -122.41148114204405, 37.80347306268421 ], [ -122.41158306598662, 37.80396472965615 ], [ -122.41177082061766, 37.80489719250909 ], [ -122.41186201572417, 37.80536341952066 ], [ -122.41195321083067, 37.805821166813914 ], [ -122.41214632987972, 37.80675784456153 ] ] }, "properties": { "class": "street", "len": 796.8073203842616, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40787625312805, 37.80537613476155 ], [ -122.40695893764496, 37.80549057183116 ] ] }, "properties": { "class": "street_limited", "len": 103.14921327965067, "name": "Francisco St", "name_de": "Francisco St", "name_en": "Francisco St", "name_es": "Francisco St", "name_fr": "Francisco St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40911543369293, 37.808135290254896 ], [ -122.4093246459961, 37.80816919628643 ], [ -122.41071939468384, 37.80832601147965 ], [ -122.41083204746246, 37.80833448796713 ], [ -122.41086423397064, 37.80833872621046 ], [ -122.41192102432251, 37.80849554104372 ] ] }, "properties": { "class": "street", "len": 316.6218167752498, "name": "The Embarcadero", "name_de": "The Embarcadero", "name_en": "The Embarcadero", "name_es": "The Embarcadero", "name_fr": "The Embarcadero", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40911543369293, 37.808135290254896 ], [ -122.40984499454498, 37.808050525108015 ], [ -122.4105316400528, 37.80793609200535 ], [ -122.41071403026581, 37.80790642413496 ], [ -122.41081595420836, 37.807893709329726 ], [ -122.41234481334685, 37.807698748708574 ] ] }, "properties": { "class": "street", "len": 364.7876259762513, "name": "Beach St", "name_de": "Beach St", "name_en": "Beach St", "name_es": "Beach St", "name_fr": "Beach St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40944802761078, 37.80471070088035 ], [ -122.40954458713531, 37.80517692906923 ] ] }, "properties": { "class": "service", "len": 66.49836163338345, "name": "Bellair Pl", "name_de": "Bellair Pl", "name_en": "Bellair Pl", "name_es": "Bellair Pl", "name_fr": "Bellair Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4262011051178, 37.80115455449363 ], [ -122.42621719837189, 37.80123932755579 ], [ -122.42637813091278, 37.80207009841604 ], [ -122.42656588554382, 37.80299834664004 ], [ -122.42676973342896, 37.80394353718175 ], [ -122.42682337760925, 37.80419784647312 ] ] }, "properties": { "class": "street", "len": 434.6988194050417, "name": "Franklin St", "name_de": "Franklin St", "name_en": "Franklin St", "name_es": "Franklin St", "name_fr": "Franklin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4053281545639, 37.79709804975758 ], [ -122.40541398525238, 37.797564326000824 ], [ -122.40548372268677, 37.79790343414736 ], [ -122.4054890871048, 37.798017882795456 ] ] }, "properties": { "class": "main", "len": 130.87633459140386, "name": "Kearny St", "name_de": "Kearny St", "name_en": "Kearny St", "name_es": "Kearny St", "name_fr": "Kearny St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41840660572052, 37.801196941036885 ], [ -122.418674826622, 37.80115879314906 ], [ -122.41908252239227, 37.80112064524151 ], [ -122.41931319236755, 37.80109097463317 ], [ -122.41943657398224, 37.801069781334164 ], [ -122.42036461830139, 37.80095109874748 ], [ -122.4204236268997, 37.80094262141255 ] ] }, "properties": { "class": "street", "len": 227.48918920409113, "name": "Greenwich St", "name_de": "Greenwich St", "name_en": "Greenwich St", "name_es": "Greenwich St", "name_fr": "Greenwich St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41780042648315, 37.801256282156544 ], [ -122.41832077503204, 37.80117998642249 ], [ -122.41840660572053, 37.801196941036885 ] ] }, "properties": { "class": "path", "len": 68.85852547182186, "name": "Greenwich St", "name_de": "Greenwich St", "name_en": "Greenwich St", "name_es": "Greenwich St", "name_fr": "Greenwich St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41468906402588, 37.799276806221656 ], [ -122.41402924060822, 37.79937005895526 ] ] }, "properties": { "class": "path", "len": 74.49901811416203, "name": "Macondray Ln", "name_de": "Macondray Ln", "name_en": "Macondray Ln", "name_es": "Macondray Ln", "name_fr": "Macondray Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41283297538757, 37.7980772264691 ], [ -122.41373419761658, 37.797950061395746 ] ] }, "properties": { "class": "path", "len": 101.97202165234128, "name": "Vallejo St", "name_de": "Vallejo St", "name_en": "Vallejo St", "name_es": "Vallejo St", "name_fr": "Vallejo St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41187274456024, 37.79700055526198 ], [ -122.41189420223236, 37.79699631636796 ], [ -122.41260766983032, 37.79691577733512 ] ] }, "properties": { "class": "street", "len": 82.79384328446568, "name": "Broadway", "name_de": "Broadway", "name_en": "Broadway", "name_es": "Broadway", "name_fr": "Broadway", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40990400314331, 37.795618662922415 ], [ -122.41001665592194, 37.795605946001736 ], [ -122.41003274917601, 37.795605946001736 ], [ -122.41108417510985, 37.79547029871132 ], [ -122.41155624389648, 37.79541519192846 ], [ -122.41189956665039, 37.79538128004165 ], [ -122.41234481334685, 37.79532193420228 ], [ -122.41318166255951, 37.795220198366735 ], [ -122.41402387619019, 37.795105745384284 ], [ -122.41483390331267, 37.79499129222454 ], [ -122.41647541522978, 37.79477934146046 ], [ -122.41695821285248, 37.79471999513755 ], [ -122.41753220558167, 37.79464369265235 ], [ -122.41796135902405, 37.79458858525292 ], [ -122.41812765598297, 37.794567390088325 ] ] }, "properties": { "class": "street", "len": 927.1182287578953, "name": "Jackson St", "name_de": "Jackson St", "name_en": "Jackson St", "name_es": "Jackson St", "name_fr": "Jackson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41290807723999, 37.802184540608394 ], [ -122.41288125514986, 37.80202347376832 ], [ -122.41285979747774, 37.801892076875475 ], [ -122.41275787353517, 37.80143006658992 ], [ -122.41267740726472, 37.80098076941203 ], [ -122.41254866123201, 37.80034072814651 ], [ -122.41248428821565, 37.80003977967424 ], [ -122.41243064403534, 37.799764262392124 ], [ -122.41241991519928, 37.79971763628886 ], [ -122.4122965335846, 37.79909453917511 ], [ -122.41210877895355, 37.79816624189021 ], [ -122.41192638874055, 37.797271843974116 ] ] }, "properties": { "class": "street", "len": 700.7930770082895, "name": "Mason St", "name_de": "Mason St", "name_en": "Mason St", "name_es": "Mason St", "name_fr": "Mason St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41290807723999, 37.802184540608394 ], [ -122.41372346878053, 37.8027440332184 ], [ -122.4146729707718, 37.80340100776679 ], [ -122.41488218307497, 37.80354511753136 ] ] }, "properties": { "class": "main", "len": 290.9426140073034, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41290807723999, 37.802184540608394 ], [ -122.41273105144501, 37.80200228073689 ], [ -122.41260766983032, 37.80192174716204 ], [ -122.41245746612549, 37.80182425903287 ], [ -122.41145431995392, 37.80112064524154 ] ] }, "properties": { "class": "main", "len": 221.17499376378402, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40618646144867, 37.79751769850893 ], [ -122.4062132835388, 37.79758128144514 ], [ -122.40663707256316, 37.79787800109037 ] ] }, "properties": { "class": "main", "len": 72.7339903601992, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40913689136505, 37.799518415334305 ], [ -122.40924954414368, 37.79950569908492 ], [ -122.41064965724944, 37.799314955081435 ], [ -122.41145968437193, 37.79920898597781 ], [ -122.41194248199463, 37.799141165671685 ], [ -122.4122804403305, 37.79909877794875 ], [ -122.4122965335846, 37.79909453917511 ], [ -122.41231799125671, 37.79909030040123 ], [ -122.41293489933014, 37.7990097636514 ], [ -122.41390585899353, 37.79887836139735 ] ] }, "properties": { "class": "street", "len": 538.6756063416154, "name": "Green St", "name_de": "Green St", "name_en": "Green St", "name_es": "Green St", "name_fr": "Green St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41096079349518, 37.800883280040885 ], [ -122.41098761558533, 37.801103690609615 ], [ -122.41102516651154, 37.80117574776828 ] ] }, "properties": { "class": "street", "len": 41.7763435467469, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41095542907715, 37.80077731318719 ], [ -122.41084277629852, 37.800251715345794 ] ] }, "properties": { "class": "street", "len": 74.71728715644412, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40990400314331, 37.795618662922415 ], [ -122.41000592708588, 37.79605527587214 ], [ -122.41009712219237, 37.79650036408717 ] ] }, "properties": { "class": "street", "len": 125.73983464232444, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41454422473907, 37.79877663045951 ], [ -122.41459250450133, 37.79881054078769 ], [ -122.41466760635375, 37.798840212312086 ], [ -122.41475343704224, 37.7988359735236 ], [ -122.41512894630432, 37.79879358562553 ], [ -122.41520941257477, 37.79877239166739 ], [ -122.41540253162383, 37.79872152614298 ] ] }, "properties": { "class": "street", "len": 100.51610952832038, "name": "Green St", "name_de": "Green St", "name_en": "Green St", "name_es": "Green St", "name_fr": "Green St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41784870624542, 37.796335045920344 ], [ -122.41178691387177, 37.797110766421454 ], [ -122.41127192974089, 37.7971785885917 ] ] }, "properties": { "class": "main", "len": 741.3485364408103, "name": "Robert C Levy Tunnel", "name_de": "Robert C Levy Tunnel", "name_en": "Robert C Levy Tunnel", "name_es": "Robert C Levy Tunnel", "name_fr": "Robert C Levy Tunnel", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41104662418365, 37.797314232745414 ], [ -122.41127729415895, 37.79735662149236 ], [ -122.41191029548645, 37.797271843974144 ], [ -122.41192638874054, 37.797271843974144 ] ] }, "properties": { "class": "street", "len": 100.0087746540741, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41926491260529, 37.796072231662805 ], [ -122.41918981075287, 37.796089187449574 ], [ -122.41915225982666, 37.796097665341506 ], [ -122.41856217384338, 37.79616972738355 ], [ -122.41854608058931, 37.79617396632503 ], [ -122.41847634315492, 37.79616972738355 ], [ -122.41844952106477, 37.79616972738355 ], [ -122.41833150386812, 37.79618244420722 ], [ -122.41751611232759, 37.796292656587205 ], [ -122.41717278957368, 37.79634352378406 ] ] }, "properties": { "class": "street", "len": 236.16779258848743, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41721034049988, 37.796559708979885 ], [ -122.41731226444244, 37.79656394789897 ], [ -122.41839587688446, 37.79644525807265 ], [ -122.41850316524506, 37.79643254129425 ] ] }, "properties": { "class": "street", "len": 145.44667681611674, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4217700958252, 37.795945063138014 ], [ -122.42162525653839, 37.79593234627349 ], [ -122.42098689079285, 37.79601288637848 ], [ -122.42021441459654, 37.79605951482018 ], [ -122.42010712623595, 37.79606375376797 ] ] }, "properties": { "class": "main", "len": 186.55657763368268, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41785407066345, 37.79641558558629 ], [ -122.41951704025269, 37.79621211678722 ] ] }, "properties": { "class": "main", "len": 186.91554081992845, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41846024990082, 37.79621635572625 ], [ -122.41844952106476, 37.79616972738355 ], [ -122.41835832595825, 37.79571192027404 ], [ -122.41831004619598, 37.79547877667427 ], [ -122.41821885108948, 37.795008248259386 ], [ -122.41812765598299, 37.794567390088325 ], [ -122.41793990135194, 37.79368566585404 ], [ -122.41777360439302, 37.7928124093659 ], [ -122.41774678230287, 37.79267251780427 ], [ -122.41768240928651, 37.792350342291314 ], [ -122.41760194301607, 37.79192642500235 ], [ -122.41741418838502, 37.79099803764374 ] ] }, "properties": { "class": "street", "len": 744.7061876106641, "name": "Hyde St", "name_de": "Hyde St", "name_en": "Hyde St", "name_es": "Hyde St", "name_fr": "Hyde St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42671072483063, 37.79532193420228 ], [ -122.42834150791168, 37.79512270139288 ], [ -122.42999374866486, 37.79489803396326 ], [ -122.43163526058197, 37.79468608293166 ], [ -122.4325257539749, 37.794571629121755 ], [ -122.43327677249907, 37.79448684840749 ] ] }, "properties": { "class": "street", "len": 740.9509396955775, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42580950260162, 37.79087933887559 ], [ -122.42561638355255, 37.7899551776589 ] ] }, "properties": { "class": "street", "len": 132.22028966811465, "name": "Gough St", "name_de": "Gough St", "name_en": "Gough St", "name_es": "Gough St", "name_fr": "Gough St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42872774600983, 37.79699207747368 ], [ -122.43037462234497, 37.79678437135622 ], [ -122.43119001388551, 37.7966826375346 ], [ -122.43201076984406, 37.79657666465477 ], [ -122.43364691734315, 37.796373196299385 ], [ -122.43529915809631, 37.79616124949991 ], [ -122.43694603443147, 37.79594930209237 ], [ -122.43713378906251, 37.79592810731817 ] ] }, "properties": { "class": "street", "len": 2029.4165943164103, "name": "Green St", "name_de": "Green St", "name_en": "Green St", "name_es": "Green St", "name_fr": "Green St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42158770561218, 37.795029443297494 ], [ -122.4217700958252, 37.795945063138014 ] ] }, "properties": { "class": "street", "len": 130.95045780775922, "name": "Polk St", "name_de": "Polk St", "name_en": "Polk St", "name_es": "Polk St", "name_fr": "Polk St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4217700958252, 37.795945063138014 ], [ -122.42332577705383, 37.79574159304304 ] ] }, "properties": { "class": "main", "len": 175.60124145509974, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43327677249908, 37.79448684840749 ], [ -122.4349182844162, 37.794274896196235 ] ] }, "properties": { "class": "street", "len": 184.88645731898455, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43327677249908, 37.79448684840749 ], [ -122.43308365345003, 37.7935584932212 ] ] }, "properties": { "class": "street", "len": 132.2383310540627, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.79542790888202 ], [ -122.40497410297394, 37.79532617319241 ], [ -122.40566611289978, 37.79524563233876 ], [ -122.4058485031128, 37.79522867635839 ], [ -122.40606844425201, 37.79520324238054 ], [ -122.4064975976944, 37.79515661339839 ], [ -122.40701794624329, 37.795088789371825 ], [ -122.40729153156282, 37.79505911634061 ], [ -122.407506108284, 37.795033682304364 ], [ -122.40755438804626, 37.79502520429035 ], [ -122.40808546543121, 37.79496585816495 ], [ -122.40861654281616, 37.79490227297768 ], [ -122.40893304347992, 37.79486412183905 ], [ -122.40919053554535, 37.79482597068072 ], [ -122.40960359573364, 37.79477510243896 ], [ -122.40963041782379, 37.79476662439526 ], [ -122.40973770618439, 37.79474966830496 ] ] }, "properties": { "class": "street", "len": 723.0398905235759, "name": "Washington St", "name_de": "Washington St", "name_en": "Washington St", "name_es": "Washington St", "name_fr": "Washington St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42598116397858, 37.791761096600425 ], [ -122.42433965206148, 37.79197305602319 ], [ -122.42278397083282, 37.792168058155134 ] ] }, "properties": { "class": "street", "len": 360.4966687505905, "name": "Clay St", "name_de": "Clay St", "name_en": "Clay St", "name_es": "Clay St", "name_fr": "Clay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41410970687866, 37.791421960259214 ], [ -122.4140989780426, 37.79141348183073 ], [ -122.41406679153442, 37.79131597983338 ], [ -122.41392195224762, 37.79057835185864 ], [ -122.41391122341156, 37.79045965241627 ] ] }, "properties": { "class": "street", "len": 137.86885931793245, "name": "Jones St", "name_de": "Jones St", "name_en": "Jones St", "name_es": "Jones St", "name_fr": "Jones St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41245210170746, 37.79163815985659 ], [ -122.41245746612547, 37.79165511666101 ], [ -122.4124789237976, 37.79174413982033 ], [ -122.41255939006804, 37.79211718808339 ], [ -122.41265058517455, 37.79254110427786 ], [ -122.41274178028105, 37.79299469191242 ], [ -122.41283297538753, 37.79343555946803 ], [ -122.41300463676451, 37.79433000382966 ], [ -122.4131816625595, 37.79519900338339 ], [ -122.4131816625595, 37.795220198366735 ], [ -122.41336941719054, 37.796084948503236 ] ] }, "properties": { "class": "street", "len": 635.1639726150889, "name": "Taylor St", "name_de": "Taylor St", "name_en": "Taylor St", "name_es": "Taylor St", "name_fr": "Taylor St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41907179355621, 37.7907987931743 ], [ -122.41923272609712, 37.791701747853054 ], [ -122.41932392120363, 37.792185014837926 ], [ -122.41942584514618, 37.79259621320449 ], [ -122.41952240467073, 37.79312186551574 ], [ -122.4195921421051, 37.7934779504405 ], [ -122.41976916790009, 37.79435967715371 ], [ -122.41994082927705, 37.795241393344035 ], [ -122.42009103298189, 37.795987452670616 ], [ -122.42010712623598, 37.79606375376797 ] ] }, "properties": { "class": "street", "len": 750.435322670991, "name": "Larkin St", "name_de": "Larkin St", "name_en": "Larkin St", "name_es": "Larkin St", "name_fr": "Larkin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41226971149445, 37.790675854829374 ], [ -122.41226971149445, 37.790781836173345 ], [ -122.41241991519928, 37.791549136569564 ], [ -122.41244673728943, 37.79162544225071 ], [ -122.41245210170746, 37.79163815985659 ] ] }, "properties": { "class": "street", "len": 137.141967022337, "name": "Taylor St", "name_de": "Taylor St", "name_en": "Taylor St", "name_es": "Taylor St", "name_fr": "Taylor St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42278397083282, 37.792168058155134 ], [ -122.42262303829193, 37.792185014837955 ], [ -122.42106199264526, 37.792396973044646 ], [ -122.41942584514618, 37.79259621320451 ], [ -122.41860508918762, 37.79269371351246 ], [ -122.417773604393, 37.7928124093659 ], [ -122.41644322872162, 37.792973496290564 ], [ -122.4161159992218, 37.79301588752816 ], [ -122.41553127765654, 37.79309219169453 ], [ -122.41526305675507, 37.793126104632066 ], [ -122.41505920886993, 37.79315153932501 ], [ -122.41447448730469, 37.7932236042408 ], [ -122.41283297538757, 37.793435559468 ], [ -122.41211950778961, 37.79352881957535 ], [ -122.41151869297029, 37.79360512321199 ], [ -122.41118609905244, 37.79364751408718 ], [ -122.4106013774872, 37.79371957851917 ], [ -122.41036534309389, 37.7937492520884 ], [ -122.4099361896515, 37.793804360113896 ], [ -122.40990400314332, 37.793808599191095 ], [ -122.40957140922548, 37.793850989949526 ], [ -122.40954458713533, 37.793855229024025 ] ] }, "properties": { "class": "street", "len": 1493.1866562952232, "name": "Clay St", "name_de": "Clay St", "name_en": "Clay St", "name_es": "Clay St", "name_fr": "Clay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43377029895782, 37.79076063991673 ], [ -122.43360936641692, 37.789895827461 ] ] }, "properties": { "class": "path", "len": 123.28674908495023, "name": "Goldberg Alley", "name_de": "Goldberg Alley", "name_en": "Goldberg Alley", "name_es": "Goldberg Alley", "name_fr": "Goldberg Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40712523460388, 37.79038334553119 ], [ -122.40716278553008, 37.790446934607566 ], [ -122.40721642971039, 37.7907012903658 ], [ -122.4073451757431, 37.79130750139274 ], [ -122.40753829479218, 37.792261319862405 ], [ -122.40761339664459, 37.79263860465855 ] ] }, "properties": { "class": "street", "len": 322.60534856994127, "name": "Stockton St", "name_de": "Stockton St", "name_en": "Stockton St", "name_es": "Stockton St", "name_fr": "Stockton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40714132785797, 37.79028584217449 ], [ -122.40763485431673, 37.79274034404906 ] ] }, "properties": { "class": "street", "len": 350.11729263257007, "name": "Stockton Tunnel", "name_de": "Stockton Tunnel", "name_en": "Stockton Tunnel", "name_es": "Stockton Tunnel", "name_fr": "Stockton Tunnel", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40763485431671, 37.79274034404906 ], [ -122.40764558315277, 37.79279545282709 ], [ -122.40771532058716, 37.7931769740092 ], [ -122.40789771080016, 37.794062943376915 ], [ -122.4080854654312, 37.79496585816495 ], [ -122.40825712680817, 37.795826372317386 ], [ -122.40843415260315, 37.79670807100316 ], [ -122.40856289863586, 37.79733118824711 ], [ -122.40862727165222, 37.79763214775467 ] ] }, "properties": { "class": "street", "len": 697.6155503425852, "name": "Stockton St", "name_de": "Stockton St", "name_en": "Stockton St", "name_es": "Stockton St", "name_fr": "Stockton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40557491779327, 37.790565634070354 ], [ -122.40560173988342, 37.790730965147205 ], [ -122.40574657917021, 37.791498266071706 ], [ -122.40580022335052, 37.791778053376625 ], [ -122.40594506263731, 37.792460560388086 ] ] }, "properties": { "class": "street", "len": 269.89783685489533, "name": "Grant Ave", "name_de": "Grant Ave", "name_en": "Grant Ave", "name_es": "Grant Ave", "name_fr": "Grant Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4108213186264, 37.791837402062676 ], [ -122.4110037088394, 37.792765778874795 ] ] }, "properties": { "class": "street", "len": 132.29588240030955, "name": "Mason St", "name_de": "Mason St", "name_en": "Mason St", "name_es": "Mason St", "name_fr": "Mason St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41100370883942, 37.792765778874795 ], [ -122.41108953952791, 37.7931769740092 ], [ -122.41113245487215, 37.79338469026892 ], [ -122.41118609905244, 37.79364751408718 ], [ -122.41127192974092, 37.794062943376915 ], [ -122.41136848926546, 37.79452923877677 ] ] }, "properties": { "class": "street", "len": 251.76727793372726, "name": "Mason St", "name_de": "Mason St", "name_en": "Mason St", "name_es": "Mason St", "name_fr": "Mason St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41793990135193, 37.79368566585406 ], [ -122.41629302501678, 37.793893380683656 ], [ -122.41567611694335, 37.79397392301147 ], [ -122.41522014141083, 37.79402903086939 ], [ -122.41465687751769, 37.7941053339894 ], [ -122.41300463676453, 37.79433000382966 ], [ -122.41184592247008, 37.794465653213706 ], [ -122.41136848926544, 37.79452923877677 ] ] }, "properties": { "class": "street", "len": 741.188908049292, "name": "Washington St", "name_de": "Washington St", "name_en": "Washington St", "name_es": "Washington St", "name_fr": "Washington St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4349182844162, 37.794274896196235 ], [ -122.43657052516937, 37.794062943376915 ] ] }, "properties": { "class": "street", "len": 186.65911094787393, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43156552314758, 37.79104466925053 ], [ -122.4325579404831, 37.790921731314675 ] ] }, "properties": { "class": "street", "len": 112.80448084965425, "name": "Clay St", "name_de": "Clay St", "name_en": "Clay St", "name_es": "Clay St", "name_fr": "Clay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41576731204987, 37.791209999255514 ], [ -122.41578876972198, 37.79131597983335 ], [ -122.41583168506622, 37.791544897362755 ], [ -122.41589605808258, 37.79187555476423 ], [ -122.41594970226288, 37.79212990560461 ], [ -122.4161159992218, 37.79301588752816 ], [ -122.41629302501678, 37.793893380683656 ], [ -122.4164754152298, 37.79477934146046 ], [ -122.41666316986084, 37.795678008523424 ], [ -122.41671681404114, 37.7959238683626 ], [ -122.41674900054932, 37.79611886006703 ], [ -122.41685092449188, 37.796602098159795 ], [ -122.41694211959839, 37.79707261642332 ], [ -122.41703867912292, 37.79755160941504 ], [ -122.41722106933594, 37.79847991442385 ], [ -122.41731226444244, 37.79894618194477 ], [ -122.41739273071288, 37.799319193842436 ], [ -122.4173980951309, 37.7994082077669 ], [ -122.41753220558165, 37.79990837925248 ], [ -122.41762340068816, 37.80032801203869 ], [ -122.41773068904875, 37.80084089331766 ], [ -122.41780042648314, 37.801256282156544 ], [ -122.41780579090114, 37.8012859526985 ], [ -122.41789162158962, 37.801718293529156 ], [ -122.41797745227812, 37.80213791603292 ], [ -122.41798818111418, 37.80220997218259 ], [ -122.41799890995024, 37.80227778967103 ], [ -122.41817593574523, 37.80312974156482 ], [ -122.41821885108946, 37.8033586224884 ], [ -122.41821885108946, 37.80349001677221 ], [ -122.41833150386809, 37.804087645887726 ], [ -122.41839051246639, 37.80421480039474 ], [ -122.41855680942531, 37.80500739188654 ] ] }, "properties": { "class": "street", "len": 1969.0376020959868, "name": "Leavenworth St", "name_de": "Leavenworth St", "name_en": "Leavenworth St", "name_es": "Leavenworth St", "name_fr": "Leavenworth St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40560173988342, 37.79868761577395 ], [ -122.40553200244905, 37.79836546649156 ], [ -122.40548372268678, 37.79811537594843 ], [ -122.4054890871048, 37.798017882795456 ] ] }, "properties": { "class": "street", "len": 95.56138201633803, "name": "Kearny St", "name_de": "Kearny St", "name_en": "Kearny St", "name_es": "Kearny St", "name_fr": "Kearny St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41025805473328, 37.79741596569721 ], [ -122.41039216518402, 37.797445637781784 ], [ -122.41104662418365, 37.797314232745414 ] ] }, "properties": { "class": "main", "len": 90.55466342846469, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43168354034424, 37.80327809039246 ], [ -122.43188202381134, 37.80324842065075 ], [ -122.43333578109741, 37.80306616340459 ], [ -122.43497729301453, 37.80285423580862 ], [ -122.43600726127625, 37.80272284039373 ], [ -122.43647933006287, 37.80267197758973 ], [ -122.43663489818573, 37.80269317042898 ], [ -122.43680119514465, 37.80276522603697 ] ] }, "properties": { "class": "street", "len": 579.2060033285372, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43150115013123, 37.802379515786946 ], [ -122.43168354034422, 37.80327809039246 ] ] }, "properties": { "class": "street", "len": 128.34968056037326, "name": "Laguna St", "name_de": "Laguna St", "name_en": "Laguna St", "name_es": "Laguna St", "name_fr": "Laguna St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42985963821411, 37.80258296759844 ], [ -122.43150115013123, 37.802379515786946 ] ] }, "properties": { "class": "street", "len": 185.20992306068527, "name": "Francisco St", "name_de": "Francisco St", "name_en": "Francisco St", "name_es": "Francisco St", "name_fr": "Francisco St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42985963821411, 37.80258296759844 ], [ -122.43006348609924, 37.803532401975204 ] ] }, "properties": { "class": "street", "len": 135.2257283210577, "name": "Octavia St", "name_de": "Octavia St", "name_en": "Octavia St", "name_es": "Octavia St", "name_fr": "Octavia St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42215096950531, 37.797831373796456 ], [ -122.42372810840607, 37.797636386612204 ] ] }, "properties": { "class": "street", "len": 177.4162678560832, "name": "Green St", "name_de": "Green St", "name_en": "Green St", "name_es": "Green St", "name_fr": "Green St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42929100990295, 37.7997896947997 ], [ -122.4309378862381, 37.799581996548405 ], [ -122.43250429630281, 37.799382775228004 ], [ -122.43257939815523, 37.79937429771311 ], [ -122.43269741535188, 37.79935734268033 ], [ -122.43422091007237, 37.79916235952403 ], [ -122.43586242198946, 37.7989546595088 ], [ -122.43713378906251, 37.79879358562553 ] ] }, "properties": { "class": "street", "len": 2014.6636423760767, "name": "Greenwich St", "name_de": "Greenwich St", "name_en": "Greenwich St", "name_es": "Greenwich St", "name_fr": "Greenwich St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4217700958252, 37.795945063138014 ], [ -122.42196321487425, 37.79690306063769 ], [ -122.4220597743988, 37.797373576984334 ], [ -122.4221509695053, 37.797831373796456 ], [ -122.42232799530028, 37.798696093367674 ], [ -122.42233872413634, 37.79877239166739 ] ] }, "properties": { "class": "street", "len": 403.1965680885383, "name": "Polk St", "name_de": "Polk St", "name_en": "Polk St", "name_es": "Polk St", "name_fr": "Polk St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42233872413635, 37.79877239166739 ], [ -122.42235481739044, 37.79884445110031 ], [ -122.4224728345871, 37.79941244652253 ], [ -122.4225103855133, 37.79962014525055 ], [ -122.4225264787674, 37.79970068133491 ], [ -122.42254793643951, 37.79978969479964 ], [ -122.42270350456238, 37.800556901644505 ], [ -122.42271423339844, 37.80062895933659 ], [ -122.42273032665251, 37.80070949432101 ], [ -122.42288589477538, 37.801480930249134 ], [ -122.42290198802947, 37.801548748406965 ] ] }, "properties": { "class": "street", "len": 396.1482066469359, "name": "Polk St", "name_de": "Polk St", "name_en": "Polk St", "name_es": "Polk St", "name_fr": "Polk St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42290198802948, 37.80154874840699 ], [ -122.42291808128357, 37.801633521016726 ], [ -122.42307901382446, 37.80241342446109 ], [ -122.42309510707855, 37.802489718921066 ], [ -122.42311120033264, 37.802587206171864 ], [ -122.4232828617096, 37.803426438922145 ], [ -122.42347061634064, 37.804358908571395 ] ] }, "properties": { "class": "street", "len": 400.45783312781555, "name": "Polk St", "name_de": "Polk St", "name_en": "Polk St", "name_es": "Polk St", "name_fr": "Polk St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40565538406372, 37.79898433097531 ], [ -122.40644931793213, 37.79888260018339 ], [ -122.40685164928436, 37.7988317347349 ], [ -122.4071305990219, 37.79878934683441 ], [ -122.4072217941284, 37.79877239166739 ] ] }, "properties": { "class": "street", "len": 177.11230961239798, "name": "Vallejo St", "name_de": "Vallejo St", "name_en": "Vallejo St", "name_es": "Vallejo St", "name_fr": "Vallejo St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40722179412842, 37.79877239166739 ], [ -122.40788161754608, 37.79868761577395 ], [ -122.40796744823457, 37.79867913817926 ], [ -122.40881502628328, 37.79857316816348 ], [ -122.40965723991395, 37.79847143680532 ], [ -122.4098986387253, 37.79844176513279 ], [ -122.41045653820039, 37.79837394412226 ], [ -122.41176009178163, 37.79820863014827 ], [ -122.41208195686342, 37.79817048071708 ], [ -122.41210877895355, 37.79816624189018 ], [ -122.4121356010437, 37.79816200306305 ], [ -122.41283297538757, 37.7980772264691 ] ] }, "properties": { "class": "street", "len": 632.0985495709137, "name": "Vallejo St", "name_de": "Vallejo St", "name_en": "Vallejo St", "name_es": "Vallejo St", "name_fr": "Vallejo St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4062991142273, 37.801786111469056 ], [ -122.40625083446504, 37.80177339561006 ], [ -122.40621864795686, 37.80174796388552 ], [ -122.40619182586671, 37.80169710041017 ], [ -122.40603625774385, 37.800938382744725 ], [ -122.40602552890779, 37.80083665464399 ], [ -122.40584850311281, 37.79991261797943 ], [ -122.40580022335054, 37.799721875026755 ], [ -122.40565538406373, 37.79898433097531 ] ] }, "properties": { "class": "street", "len": 405.5124883164733, "name": "Kearny St", "name_de": "Kearny St", "name_en": "Kearny St", "name_es": "Kearny St", "name_fr": "Kearny St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40721642971039, 37.79822982426816 ], [ -122.40715742111206, 37.798310361868346 ], [ -122.407146692276, 37.79835275004371 ], [ -122.40716814994812, 37.79849263084982 ], [ -122.40722179412842, 37.79877239166739 ], [ -122.40741491317749, 37.7996922038565 ], [ -122.40760266780853, 37.8006416753926 ], [ -122.40766167640685, 37.800938382744725 ], [ -122.40774750709534, 37.801387680180454 ], [ -122.40779042243958, 37.80159537335438 ], [ -122.40792453289032, 37.802218449372056 ], [ -122.40797281265257, 37.8025066732348 ], [ -122.40804255008696, 37.80287119003867 ], [ -122.40809082984923, 37.8031000717635 ], [ -122.40816593170165, 37.80344339302085 ] ] }, "properties": { "class": "street", "len": 745.1912087283594, "name": "Grant Ave", "name_de": "Grant Ave", "name_en": "Grant Ave", "name_es": "Grant Ave", "name_fr": "Grant Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40448594093323, 37.80123085025396 ], [ -122.40444302558899, 37.80131562322855 ], [ -122.40448594093323, 37.80152755523935 ], [ -122.40456104278564, 37.80192598577343 ], [ -122.4045717716217, 37.801989564915125 ], [ -122.40470051765443, 37.80255329757749 ], [ -122.40476489067079, 37.802714363262176 ], [ -122.40481853485109, 37.802773703162714 ] ] }, "properties": { "class": "street", "len": 223.33525500181005, "name": "Montgomery St", "name_de": "Montgomery St", "name_en": "Montgomery St", "name_es": "Montgomery St", "name_fr": "Montgomery St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40481853485107, 37.802773703162714 ], [ -122.4048238992691, 37.802710124696006 ], [ -122.40468978881836, 37.802036189584236 ], [ -122.40467369556427, 37.80196413326501 ], [ -122.4045878648758, 37.80152755523935 ], [ -122.40456104278564, 37.801374964252865 ], [ -122.40453422069551, 37.8012859526985 ], [ -122.40448594093324, 37.80123085025394 ] ] }, "properties": { "class": "street", "len": 221.87358067348777, "name": "Montgomery St", "name_de": "Montgomery St", "name_en": "Montgomery St", "name_es": "Montgomery St", "name_fr": "Montgomery St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4045878648758, 37.80152755523935 ], [ -122.40507066249847, 37.801455498423906 ] ] }, "properties": { "class": "street", "len": 54.66121476955421, "name": "Alta St", "name_de": "Alta St", "name_en": "Alta St", "name_es": "Alta St", "name_fr": "Alta St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40434110164642, 37.80046788910432 ], [ -122.40435719490051, 37.800578095090685 ], [ -122.40444302558899, 37.80103163338067 ], [ -122.40448594093323, 37.80123085025396 ] ] }, "properties": { "class": "street", "len": 108.62619166079068, "name": "Montgomery St", "name_de": "Montgomery St", "name_en": "Montgomery St", "name_es": "Montgomery St", "name_fr": "Montgomery St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40691602230072, 37.80264230760455 ], [ -122.40699112415314, 37.80263383046373 ], [ -122.40743637084961, 37.80257872902474 ], [ -122.40797281265257, 37.8025066732348 ], [ -122.40828931331635, 37.80246852602342 ], [ -122.40872383117674, 37.80241342446109 ], [ -122.40957677364348, 37.80230322121314 ], [ -122.4106067419052, 37.802171824817975 ], [ -122.41120755672453, 37.802095530029646 ], [ -122.41160452365874, 37.80204466679365 ], [ -122.41209268569945, 37.80198108769938 ], [ -122.41238236427306, 37.801947178826744 ], [ -122.41243600845335, 37.80190055410142 ] ] }, "properties": { "class": "street", "len": 625.6124878438, "name": "Greenwich St", "name_de": "Greenwich St", "name_en": "Greenwich St", "name_es": "Greenwich St", "name_fr": "Greenwich St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40862727165222, 37.79763214775467 ], [ -122.40881502628326, 37.79857316816348 ], [ -122.4089115858078, 37.79904791264911 ], [ -122.40897059440613, 37.79932343260318 ] ] }, "properties": { "class": "street", "len": 241.32735316025975, "name": "Stockton St", "name_de": "Stockton St", "name_en": "Stockton St", "name_es": "Stockton St", "name_fr": "Stockton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4168348312378, 37.804833615870386 ], [ -122.41672754287718, 37.80429533146929 ], [ -122.41663098335265, 37.80382062071034 ], [ -122.41653442382811, 37.80334166837023 ], [ -122.41634130477904, 37.80240494729402 ], [ -122.41615891456604, 37.80148940752228 ], [ -122.41605699062347, 37.801010440064665 ], [ -122.41596579551697, 37.80053994688323 ], [ -122.41594970226288, 37.80046365040925 ], [ -122.41577804088593, 37.79962014525055 ], [ -122.41568148136139, 37.79914540444263 ], [ -122.415611743927, 37.79879782441643 ], [ -122.41559028625488, 37.798696093367674 ], [ -122.41556882858276, 37.798598600981116 ], [ -122.41546154022217, 37.79806450997163 ], [ -122.41539716720581, 37.79775931337528 ], [ -122.41533815860748, 37.79746259325332 ], [ -122.41530060768127, 37.79728879948555 ], [ -122.41520404815674, 37.796805565884746 ], [ -122.4151074886322, 37.796326568055655 ], [ -122.4150162935257, 37.79588995670929 ], [ -122.41483390331268, 37.79499129222454 ], [ -122.4146568775177, 37.7941053339894 ], [ -122.4144744873047, 37.79322360424077 ], [ -122.41438865661621, 37.792786974556215 ], [ -122.41429746150972, 37.79233762480803 ], [ -122.4141150712967, 37.791438917113226 ], [ -122.4141097068787, 37.791421960259214 ] ] }, "properties": { "class": "street", "len": 1913.6777925493618, "name": "Jones St", "name_de": "Jones St", "name_en": "Jones St", "name_es": "Jones St", "name_fr": "Jones St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42107272148132, 37.800832415970085 ], [ -122.42262303829193, 37.800637436707525 ], [ -122.42271423339844, 37.80062895933659 ], [ -122.42283225059509, 37.80061200459185 ], [ -122.42289662361145, 37.800603527218016 ], [ -122.42416799068451, 37.80044245693025 ], [ -122.42428600788116, 37.800429740839945 ] ] }, "properties": { "class": "street", "len": 362.03014130639843, "name": "Greenwich St", "name_de": "Greenwich St", "name_en": "Greenwich St", "name_es": "Greenwich St", "name_fr": "Greenwich St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41859436035156, 37.80020932826012 ], [ -122.41925418376923, 37.80012455401583 ], [ -122.41935610771179, 37.800111837870794 ], [ -122.42058455944061, 37.79995076651085 ], [ -122.42080986499786, 37.79992109543255 ], [ -122.42088496685028, 37.79991261797943 ], [ -122.42243528366089, 37.79971339755073 ], [ -122.4225264787674, 37.79970068133491 ], [ -122.42265522480011, 37.7996837263771 ], [ -122.42400169372559, 37.79950993783495 ], [ -122.42409288883209, 37.79949722158409 ] ] }, "properties": { "class": "street", "len": 620.2909232707532, "name": "Filbert St", "name_de": "Filbert St", "name_en": "Filbert St", "name_es": "Filbert St", "name_fr": "Filbert St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41859436035156, 37.80020932826012 ], [ -122.41762340068816, 37.80032801203869 ] ] }, "properties": { "class": "street", "len": 109.42872063447884, "name": "Filbert St", "name_de": "Filbert St", "name_en": "Filbert St", "name_es": "Filbert St", "name_fr": "Filbert St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40676581859589, 37.8044394394888 ], [ -122.40753293037415, 37.804469108752045 ], [ -122.40834832191467, 37.8043673855142 ], [ -122.40935146808626, 37.80424446974821 ], [ -122.40995228290558, 37.804176654065614 ], [ -122.41158306598663, 37.80396472965615 ], [ -122.41285443305969, 37.803807905201644 ], [ -122.41322457790375, 37.80376128165094 ], [ -122.41371810436249, 37.803697704034384 ], [ -122.41472661495209, 37.803566310120054 ], [ -122.4148017168045, 37.80355359456757 ], [ -122.41488218307495, 37.80354511753136 ], [ -122.41506457328796, 37.80352392493655 ], [ -122.41641104221344, 37.80336286101732 ], [ -122.41653442382812, 37.80334166837023 ], [ -122.41663634777069, 37.80332047571705 ], [ -122.41817593574524, 37.803129741564796 ], [ -122.41907715797423, 37.80301530083702 ], [ -122.41982281208037, 37.8029220527055 ], [ -122.42145359516142, 37.80271436326215 ], [ -122.42180764675139, 37.8026635004523 ] ] }, "properties": { "class": "street", "len": 1694.9214307785533, "name": "Chestnut St", "name_de": "Chestnut St", "name_en": "Chestnut St", "name_es": "Chestnut St", "name_fr": "Chestnut St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41285979747772, 37.801892076875475 ], [ -122.41288661956786, 37.801887838262154 ], [ -122.41368055343628, 37.801790350088226 ], [ -122.4144959449768, 37.801692861785654 ], [ -122.41495192050934, 37.80163775964465 ], [ -122.41615891456604, 37.80148940752228 ], [ -122.41780579090118, 37.8012859526985 ] ] }, "properties": { "class": "street", "len": 557.112868666435, "name": "Greenwich St", "name_de": "Greenwich St", "name_en": "Greenwich St", "name_es": "Greenwich St", "name_fr": "Greenwich St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40707695484161, 37.79813233126623 ], [ -122.40721642971039, 37.79822982426816 ], [ -122.40788161754608, 37.79868761577395 ], [ -122.4089652299881, 37.79947178907586 ] ] }, "properties": { "class": "main", "len": 282.30186678989685, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40913152694702, 37.79962438399404 ], [ -122.40907251834871, 37.799687965116924 ], [ -122.40906178951265, 37.799738829975816 ], [ -122.40905642509462, 37.79976850112732 ], [ -122.40911006927492, 37.8000143473528 ], [ -122.40919053554536, 37.80044669562654 ] ] }, "properties": { "class": "street", "len": 119.16979192136742, "name": "Stockton St", "name_de": "Stockton St", "name_en": "Stockton St", "name_es": "Stockton St", "name_fr": "Stockton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4089652299881, 37.79947178907586 ], [ -122.40902423858641, 37.799548086574354 ], [ -122.40913152694702, 37.79962438399404 ], [ -122.41015613079071, 37.80032377333558 ] ] }, "properties": { "class": "main", "len": 179.78758443124872, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40707695484161, 37.79813233126623 ], [ -122.40704476833344, 37.79807298763686 ], [ -122.40673899650574, 37.797865284558576 ] ] }, "properties": { "class": "main", "len": 54.17443315216535, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41517186164856, 37.793770447487695 ], [ -122.41522014141083, 37.79402903086939 ] ] }, "properties": { "class": "path", "len": 36.925126946110616, "name": "Priest St", "name_de": "Priest St", "name_en": "Priest St", "name_es": "Priest St", "name_fr": "Priest St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41562247276306, 37.79369414402182 ], [ -122.41567611694336, 37.79397392301147 ] ] }, "properties": { "class": "street", "len": 39.886972809965414, "name": "Reed St", "name_de": "Reed St", "name_en": "Reed St", "name_es": "Reed St", "name_fr": "Reed St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4073076248169, 37.807457166355256 ], [ -122.4076133966446, 37.80756312362505 ], [ -122.40894377231598, 37.80810138420781 ], [ -122.40898668766023, 37.80810986072104 ], [ -122.40911543369295, 37.808135290254896 ] ] }, "properties": { "class": "street", "len": 223.42726427046517, "name": "The Embarcadero", "name_de": "The Embarcadero", "name_en": "The Embarcadero", "name_es": "The Embarcadero", "name_fr": "The Embarcadero", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41657197475433, 37.809160940820696 ], [ -122.41658806800842, 37.80924146650164 ], [ -122.41661489009857, 37.80932623028144 ], [ -122.41665780544281, 37.809398279417756 ], [ -122.41671681404112, 37.809461852126724 ], [ -122.41720497608183, 37.80977971485056 ] ] }, "properties": { "class": "street", "len": 393.80887031184614, "name": "Pier 45", "name_de": "Pier 45", "name_en": "Pier 45", "name_es": "Pier 45", "name_fr": "Pier 45", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41192102432251, 37.80849554104372 ], [ -122.41240918636322, 37.80856335276034 ], [ -122.41250574588777, 37.80857606745026 ] ] }, "properties": { "class": "street", "len": 65.5771641539864, "name": "The Embarcadero", "name_de": "The Embarcadero", "name_en": "The Embarcadero", "name_es": "The Embarcadero", "name_fr": "The Embarcadero", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41250574588776, 37.80857606745026 ], [ -122.41261839866638, 37.80858878213802 ], [ -122.41265058517456, 37.80859302036677 ], [ -122.41287052631378, 37.80858030567975 ], [ -122.41416871547699, 37.80841925278804 ] ] }, "properties": { "class": "street", "len": 187.38311561829235, "name": "Jefferson St", "name_de": "Jefferson St", "name_en": "Jefferson St", "name_es": "Jefferson St", "name_fr": "Jefferson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41745710372925, 37.80800814249806 ], [ -122.41773068904878, 37.80797423639261 ], [ -122.41908788681032, 37.807800467357744 ], [ -122.41992473602296, 37.807698748708574 ], [ -122.42040216922761, 37.807639412765205 ], [ -122.42075085639958, 37.8075970299193 ] ] }, "properties": { "class": "street", "len": 371.2315392261579, "name": "Jefferson St", "name_de": "Jefferson St", "name_en": "Jefferson St", "name_es": "Jefferson St", "name_fr": "Jefferson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4369728565216, 37.80436314704291 ], [ -122.43712842464447, 37.804341954682855 ], [ -122.4371337890625, 37.804341954682855 ] ] }, "properties": { "class": "street", "len": 555.7103815711608, "name": "Beach St", "name_de": "Beach St", "name_en": "Beach St", "name_es": "Beach St", "name_fr": "Beach St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43173718452454, 37.80362564933614 ], [ -122.4317479133606, 37.80354935604959 ], [ -122.4317479133606, 37.80347306268421 ], [ -122.43173718452454, 37.80339676924006 ], [ -122.43171572685242, 37.803337429840084 ], [ -122.43168354034424, 37.80327809039246 ] ] }, "properties": { "class": "main", "len": 50.68690143418162, "name": "Laguna St", "name_de": "Laguna St", "name_en": "Laguna St", "name_es": "Laguna St", "name_fr": "Laguna St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42520332336426, 37.805096398955996 ], [ -122.42535889148712, 37.805872027449155 ], [ -122.42541253566742, 37.8059483183363 ], [ -122.42546081542967, 37.80618142889205 ], [ -122.42549300193787, 37.806261957822144 ], [ -122.42565929889678, 37.80650354408548 ] ] }, "properties": { "class": "street", "len": 207.25363820920808, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42536962032318, 37.805075206806336 ], [ -122.42517650127411, 37.80413850771679 ] ] }, "properties": { "class": "main", "len": 133.38997900877993, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42075085639954, 37.8075970299193 ], [ -122.42185056209564, 37.80746140464897 ] ] }, "properties": { "class": "street", "len": 123.7840139102762, "name": "Jefferson St", "name_de": "Jefferson St", "name_en": "Jefferson St", "name_es": "Jefferson St", "name_fr": "Jefferson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4205631017685, 37.80665188613628 ], [ -122.42037534713745, 37.80571520704471 ] ] }, "properties": { "class": "street", "len": 133.4972108322927, "name": "Hyde St", "name_de": "Hyde St", "name_en": "Hyde St", "name_es": "Hyde St", "name_fr": "Hyde St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4232828617096, 37.803426438922145 ], [ -122.42484390735626, 37.803218750897145 ] ] }, "properties": { "class": "street", "len": 176.17523804499018, "name": "Francisco St", "name_de": "Francisco St", "name_en": "Francisco St", "name_es": "Francisco St", "name_fr": "Francisco St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43006348609924, 37.803532401975204 ], [ -122.43086814880373, 37.80343067744717 ] ] }, "properties": { "class": "main", "len": 90.86705563669574, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4183851480484, 37.805973748614505 ], [ -122.41883039474486, 37.80627043454651 ], [ -122.41957068443298, 37.80677903622835 ] ] }, "properties": { "class": "street", "len": 174.1893737884846, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40595579147339, 37.8046640778996 ], [ -122.40517795085908, 37.80476580072879 ] ] }, "properties": { "class": "street", "len": 87.94345569749994, "name": "Chestnut St", "name_de": "Chestnut St", "name_en": "Chestnut St", "name_es": "Chestnut St", "name_fr": "Chestnut St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4172693490982, 37.807071480609274 ], [ -122.41890549659729, 37.80686380283475 ], [ -122.41957068443298, 37.80677903622835 ], [ -122.41972625255585, 37.80675784456153 ], [ -122.42056310176851, 37.80665188613628 ] ] }, "properties": { "class": "street", "len": 371.2924861507288, "name": "Beach St", "name_de": "Beach St", "name_en": "Beach St", "name_es": "Beach St", "name_fr": "Beach St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4172693490982, 37.807071480609274 ], [ -122.41708159446716, 37.806139045209385 ], [ -122.4168884754181, 37.80521507488171 ] ] }, "properties": { "class": "street", "len": 265.79375441053367, "name": "Jones St", "name_de": "Jones St", "name_en": "Jones St", "name_es": "Jones St", "name_fr": "Jones St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41234481334686, 37.807698748708574 ], [ -122.41248965263367, 37.80850401751168 ], [ -122.41250574588776, 37.80857606745026 ] ] }, "properties": { "class": "street", "len": 124.96779065929178, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41397559642792, 37.807491072698134 ], [ -122.41561710834503, 37.80728339610364 ] ] }, "properties": { "class": "street", "len": 184.88805910606186, "name": "Beach St", "name_de": "Beach St", "name_en": "Beach St", "name_es": "Beach St", "name_fr": "Beach St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41561710834503, 37.80728339610364 ], [ -122.41726934909819, 37.807071480609274 ] ] }, "properties": { "class": "street", "len": 186.76535251337125, "name": "Beach St", "name_de": "Beach St", "name_en": "Beach St", "name_es": "Beach St", "name_fr": "Beach St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41561710834503, 37.80728339610364 ], [ -122.41543471813202, 37.80634248666441 ] ] }, "properties": { "class": "street", "len": 134.18097965055713, "name": "Taylor St", "name_de": "Taylor St", "name_en": "Taylor St", "name_es": "Taylor St", "name_fr": "Taylor St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41543471813202, 37.80634248666441 ], [ -122.41524159908295, 37.80541851888209 ] ] }, "properties": { "class": "street", "len": 132.18093357235747, "name": "Taylor St", "name_de": "Taylor St", "name_en": "Taylor St", "name_es": "Taylor St", "name_fr": "Taylor St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43173718452454, 37.80362564933614 ], [ -122.43186593055727, 37.80424446974821 ], [ -122.43190348148346, 37.80441824715063 ], [ -122.43199467658997, 37.804871761860184 ], [ -122.43203222751617, 37.805075206806336 ] ] }, "properties": { "class": "main", "len": 206.72394509717472, "name": "Laguna St", "name_de": "Laguna St", "name_en": "Laguna St", "name_es": "Laguna St", "name_fr": "Laguna St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43086814880371, 37.80343067744717 ], [ -122.4314957857132, 37.80338405365836 ], [ -122.4315494298935, 37.80338829218583 ], [ -122.43159770965576, 37.803405246293295 ], [ -122.43163526058197, 37.80343067744717 ], [ -122.4316620826721, 37.803464585638764 ], [ -122.43173718452452, 37.80362564933614 ] ] }, "properties": { "class": "main", "len": 118.00890140069362, "name": "Laguna St", "name_de": "Laguna St", "name_en": "Laguna St", "name_es": "Laguna St", "name_fr": "Laguna St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42682337760925, 37.80419784647312 ], [ -122.42679655551912, 37.80427837756615 ], [ -122.42679655551912, 37.804337716210114 ], [ -122.42680191993713, 37.80440129327573 ], [ -122.42685556411743, 37.80462593180253 ], [ -122.42691993713379, 37.80482937742587 ], [ -122.42704331874847, 37.80521931330409 ], [ -122.42712914943696, 37.80543123411352 ] ] }, "properties": { "class": "street", "len": 178.68748063928695, "name": "Franklin St", "name_de": "Franklin St", "name_en": "Franklin St", "name_es": "Franklin St", "name_fr": "Franklin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42712914943695, 37.80543123411352 ], [ -122.42715060710907, 37.805321035368515 ], [ -122.42715597152709, 37.80521931330409 ], [ -122.42702186107634, 37.8048081851996 ], [ -122.42696821689604, 37.80460050106022 ], [ -122.42691993713379, 37.80438433939691 ], [ -122.42689311504364, 37.80432500079042 ], [ -122.42685556411743, 37.80426990061314 ], [ -122.42682337760925, 37.80419784647312 ] ] }, "properties": { "class": "street", "len": 178.99029926575605, "name": "Franklin St", "name_de": "Franklin St", "name_en": "Franklin St", "name_es": "Franklin St", "name_fr": "Franklin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40750074386597, 37.802888144264855 ], [ -122.40752220153809, 37.80291781415126 ], [ -122.40761339664459, 37.803324714248184 ] ] }, "properties": { "class": "service", "len": 63.46973529960526, "name": "Child St", "name_de": "Child St", "name_en": "Child St", "name_es": "Child St", "name_fr": "Child St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42112100124359, 37.80888545756394 ], [ -122.42157161235811, 37.809275372025255 ], [ -122.42210805416107, 37.80967799892781 ], [ -122.42224752902986, 37.80977971485056 ] ] }, "properties": { "class": "path", "len": 267.96803623205005, "name": "Hyde St Pier", "name_de": "Hyde St Pier", "name_en": "Hyde St Pier", "name_es": "Hyde St Pier", "name_fr": "Hyde St Pier", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42022514343262, 37.80192174716204 ], [ -122.42062211036682, 37.80187512242067 ] ] }, "properties": { "class": "street", "len": 44.81482455598683, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42062211036682, 37.80187512242067 ], [ -122.42114245891571, 37.80179882732586 ], [ -122.4212658405304, 37.80178187284963 ], [ -122.42198467254639, 37.80168014591061 ], [ -122.42212414741518, 37.801658952780684 ], [ -122.42280542850496, 37.80156570293673 ], [ -122.4229019880295, 37.80154874840699 ], [ -122.42300927639012, 37.80153603250714 ], [ -122.4243557453156, 37.80134529374666 ], [ -122.42446303367619, 37.80132833916636 ] ] }, "properties": { "class": "street", "len": 434.416197668898, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42347061634064, 37.804358908571395 ], [ -122.42502093315125, 37.804159700135244 ] ] }, "properties": { "class": "main", "len": 175.06532952143382, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41855680942535, 37.80500739188654 ], [ -122.42019295692444, 37.80478699296722 ] ] }, "properties": { "class": "main", "len": 184.97531186607654, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42019295692444, 37.80478699296722 ], [ -122.42174863815309, 37.80457507030913 ], [ -122.42181837558746, 37.80456659339016 ] ] }, "properties": { "class": "main", "len": 183.3526995127709, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42181837558746, 37.80456659339016 ], [ -122.42253720760345, 37.804473347217254 ], [ -122.42347061634064, 37.804358908571395 ] ] }, "properties": { "class": "main", "len": 186.21917777270622, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42181837558746, 37.80456659339016 ], [ -122.42201149463654, 37.80549481023774 ], [ -122.42219924926758, 37.80643573047732 ] ] }, "properties": { "class": "street", "len": 267.4986530187627, "name": "Larkin St", "name_de": "Larkin St", "name_en": "Larkin St", "name_es": "Larkin St", "name_fr": "Larkin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4309754371643, 37.78374434488178 ], [ -122.43107736110687, 37.78427429978763 ], [ -122.43110418319702, 37.78443540532579 ] ] }, "properties": { "class": "main", "len": 1133.1148622789483, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43131875991821, 37.784723698570225 ], [ -122.43130266666412, 37.784634666952996 ], [ -122.43127584457399, 37.784511718352896 ], [ -122.43125438690187, 37.78440996763259 ], [ -122.43118464946748, 37.78406655791737 ], [ -122.4311149120331, 37.78374434488178 ] ] }, "properties": { "class": "main", "len": 1172.3244467932636, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42778360843658, 37.783926649798154 ], [ -122.4288994073868, 37.783812179321814 ], [ -122.42915689945221, 37.78377402245696 ], [ -122.42946267127992, 37.78374434488178 ] ] }, "properties": { "class": "service", "len": 277.4019821826499, "name": "Galilee Ln", "name_de": "Galilee Ln", "name_en": "Galilee Ln", "name_es": "Galilee Ln", "name_fr": "Galilee Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42915689945221, 37.78377402245696 ], [ -122.4291515350342, 37.78374434488178 ] ] }, "properties": { "class": "path", "len": 95.32624059779303, "name": "Inca Ln", "name_de": "Inca Ln", "name_en": "Inca Ln", "name_es": "Inca Ln", "name_fr": "Inca Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41084277629852, 37.800251715345794 ], [ -122.41166353225708, 37.80014574758602 ], [ -122.41246819496155, 37.80004401839364 ], [ -122.41248428821564, 37.80003977967424 ], [ -122.41251647472382, 37.800035540954596 ], [ -122.41412580013274, 37.79983208212613 ], [ -122.41522550582884, 37.799687965116924 ], [ -122.41577804088591, 37.79962014525055 ], [ -122.41649150848387, 37.79952689283269 ], [ -122.4173980951309, 37.7994082077669 ], [ -122.41822957992552, 37.79930223879704 ], [ -122.41905033588408, 37.79919626967515 ], [ -122.41906642913814, 37.79919626967515 ], [ -122.41908252239223, 37.79919203090711 ], [ -122.4200856685638, 37.799064867752875 ], [ -122.42034852504726, 37.799030957541454 ], [ -122.42069721221922, 37.79898433097531 ], [ -122.42226898670195, 37.798780869251374 ], [ -122.42233872413634, 37.79877239166739 ] ] }, "properties": { "class": "street", "len": 1297.141812299604, "name": "Union St", "name_de": "Union St", "name_en": "Union St", "name_es": "Union St", "name_fr": "Union St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41540253162384, 37.798721526143 ], [ -122.41559028625488, 37.798696093367674 ], [ -122.41722106933594, 37.79847991442385 ], [ -122.41783261299133, 37.79839937700852 ], [ -122.41887867450714, 37.79826373484738 ], [ -122.41963505744934, 37.79816200306305 ], [ -122.41989254951476, 37.79812809243717 ], [ -122.42039144039153, 37.79806450997163 ], [ -122.42050409317015, 37.79804755463823 ], [ -122.4221509695053, 37.797831373796456 ] ] }, "properties": { "class": "street", "len": 761.5010491610682, "name": "Green St", "name_de": "Green St", "name_en": "Green St", "name_es": "Green St", "name_fr": "Green St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40566611289978, 37.80268469329402 ], [ -122.40558028221129, 37.80273555608927 ], [ -122.40553200244904, 37.802773703162714 ], [ -122.40548372268677, 37.8028923828208 ], [ -122.40545153617859, 37.80290509848712 ], [ -122.4053281545639, 37.8028076116559 ], [ -122.40504920482635, 37.80286695148153 ], [ -122.40502774715424, 37.80282880445625 ], [ -122.40485608577728, 37.802858474366495 ] ] }, "properties": { "class": "path", "len": 118.02240623006357, "name": "Greenwich St Stairs", "name_de": "Greenwich St Stairs", "name_en": "Greenwich St Stairs", "name_es": "Greenwich St Stairs", "name_fr": "Greenwich St Stairs", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40467369556427, 37.80196413326501 ], [ -122.40508139133453, 37.80191326993851 ], [ -122.4052530527115, 37.8019175085504 ], [ -122.4053978919983, 37.80182849764988 ], [ -122.4054515361786, 37.80182849764988 ], [ -122.4054890871048, 37.80184121349936 ], [ -122.40562319755554, 37.80177763422998 ] ] }, "properties": { "class": "path", "len": 113.49958524683666, "name": "Flibert Steps", "name_de": "Flibert Steps", "name_en": "Flibert Steps", "name_es": "Flibert Steps", "name_fr": "Flibert Steps", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41963505744934, 37.80199804212988 ], [ -122.41953313350677, 37.8020107579502 ], [ -122.41951167583466, 37.80201499655647 ], [ -122.41947948932648, 37.802036189584236 ], [ -122.41942584514618, 37.80207857562153 ], [ -122.41940438747406, 37.802091291428006 ], [ -122.41938292980194, 37.80209553002967 ], [ -122.41935610771179, 37.80209553002967 ], [ -122.41933465003967, 37.802091291428006 ], [ -122.41931855678558, 37.8020743370189 ], [ -122.41926491260529, 37.80201499655647 ], [ -122.41923809051514, 37.80200228073689 ], [ -122.419211268425, 37.80199804212988 ], [ -122.41918444633485, 37.80200228073689 ], [ -122.4191576242447, 37.80201499655647 ], [ -122.41914153099064, 37.80203195097919 ], [ -122.41910934448246, 37.80210400723224 ], [ -122.41909325122838, 37.802125200234485 ], [ -122.41906642913824, 37.80213791603292 ], [ -122.41903424263005, 37.80214215463189 ], [ -122.41900742053991, 37.80213367743367 ], [ -122.4189859628678, 37.80211672303431 ], [ -122.41892695426947, 37.80206162120955 ], [ -122.41890549659735, 37.80204466679365 ], [ -122.4188786745072, 37.80204042818906 ], [ -122.41884648799902, 37.80204466679365 ], [ -122.4188250303269, 37.80205314400207 ], [ -122.41880893707284, 37.8020743370189 ], [ -122.41877675056463, 37.80214639323063 ], [ -122.41876065731057, 37.80216758622069 ], [ -122.41873919963845, 37.80217606341501 ], [ -122.41870701313027, 37.80218030201182 ], [ -122.41868019104012, 37.802171824817975 ], [ -122.418658733368, 37.802159109025396 ], [ -122.41859972476968, 37.80209976863108 ], [ -122.41857826709756, 37.80208705282608 ], [ -122.41855144500742, 37.80207857562153 ], [ -122.4185299873353, 37.80208281422394 ], [ -122.41850316524516, 37.802095530029646 ], [ -122.41848707199107, 37.80211672303431 ], [ -122.41845488548289, 37.80218877920469 ], [ -122.41843879222881, 37.802205733587485 ], [ -122.41841197013866, 37.802218449372056 ], [ -122.41838514804851, 37.80222268796642 ], [ -122.41835296154034, 37.802218449372056 ], [ -122.41833150386822, 37.802205733587485 ], [ -122.41827785968792, 37.80214639323063 ], [ -122.4182564020158, 37.80212943883419 ], [ -122.41823494434368, 37.80212096163453 ], [ -122.41820812225353, 37.80212096163453 ], [ -122.41818130016341, 37.80212943883419 ], [ -122.41816520690932, 37.80214639323063 ], [ -122.41813838481917, 37.80218030201182 ], [ -122.41812765598311, 37.802197256396575 ], [ -122.418106198311, 37.80220997218259 ], [ -122.41808474063888, 37.802214210777436 ], [ -122.41806328296676, 37.802214210777436 ], [ -122.41798818111434, 37.80220997218259 ] ] }, "properties": { "class": "street", "len": 251.13123264977568, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40450203418732, 37.8028923828208 ], [ -122.40418016910553, 37.80292629125948 ] ] }, "properties": { "class": "path", "len": 81.66581926308162, "name": "Greenwich St Stairs", "name_de": "Greenwich St Stairs", "name_en": "Greenwich St Stairs", "name_es": "Greenwich St Stairs", "name_fr": "Greenwich St Stairs", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42667317390442, 37.78692825678771 ], [ -122.42674827575684, 37.78730132936438 ], [ -122.42686629295349, 37.78786517411618 ], [ -122.42696821689606, 37.788331508630314 ], [ -122.4270647764206, 37.788789361472034 ], [ -122.4272632598877, 37.78974321244753 ], [ -122.42745101451874, 37.79066737631527 ] ] }, "properties": { "class": "street", "len": 534.227193931559, "name": "Octavia St", "name_de": "Octavia St", "name_en": "Octavia St", "name_es": "Octavia St", "name_fr": "Octavia St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41488218307495, 37.80354511753136 ], [ -122.41491973400116, 37.80370194254386 ], [ -122.4150162935257, 37.80420632343443 ], [ -122.41505920886993, 37.80441824715063 ], [ -122.415069937706, 37.80448182414693 ] ] }, "properties": { "class": "street", "len": 133.7369592645156, "name": "Taylor St", "name_de": "Taylor St", "name_en": "Taylor St", "name_es": "Taylor St", "name_fr": "Taylor St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42214560508728, 37.790362149160224 ], [ -122.42078840732574, 37.790531719957585 ], [ -122.4206918478012, 37.79057835185864 ] ] }, "properties": { "class": "street", "len": 166.21503958669592, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40823566913605, 37.80531679695196 ], [ -122.4084609746933, 37.80528712802926 ], [ -122.40853607654572, 37.80529136644753 ], [ -122.40863800048828, 37.80529136644753 ], [ -122.40931928157806, 37.80520659803617 ], [ -122.40954458713531, 37.80517692906923 ], [ -122.41014003753662, 37.805104875814145 ], [ -122.4105155467987, 37.80505401465057 ], [ -122.41177082061768, 37.80489719250912 ], [ -122.41343379020691, 37.80468527016725 ], [ -122.41498410701752, 37.80449030107562 ], [ -122.41505920886993, 37.80448182414693 ], [ -122.415069937706, 37.80448182414693 ], [ -122.41509139537811, 37.80447758568221 ], [ -122.41516649723053, 37.804469108752045 ], [ -122.41598725318909, 37.8043673855142 ], [ -122.41614818573, 37.80434619315537 ], [ -122.4165987968445, 37.8043038084194 ], [ -122.41672754287721, 37.80429533146929 ], [ -122.41684556007387, 37.80428685451822 ], [ -122.41750538349156, 37.8042020849539 ], [ -122.41833150386815, 37.804087645887726 ] ] }, "properties": { "class": "street", "len": 1137.9072314716573, "name": "Francisco St", "name_de": "Francisco St", "name_en": "Francisco St", "name_es": "Francisco St", "name_fr": "Francisco St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4150002002716, 37.80457507030913 ], [ -122.41506457328796, 37.80485056964608 ], [ -122.41512894630434, 37.805248982254014 ] ] }, "properties": { "class": "street_limited", "len": 96.41339793780074, "name": "Taylor St", "name_de": "Taylor St", "name_en": "Taylor St", "name_es": "Taylor St", "name_fr": "Taylor St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40738272666931, 37.80734273233311 ], [ -122.40754902362823, 37.80734697063339 ], [ -122.4089115858078, 37.807168961812216 ], [ -122.41051018238068, 37.80696552263401 ], [ -122.41214632987976, 37.80675784456153 ], [ -122.41378784179688, 37.80655440425074 ], [ -122.4149090051651, 37.806410300358195 ], [ -122.415434718132, 37.806342486664384 ], [ -122.41708159446715, 37.80613904520936 ], [ -122.4183851480484, 37.80597374861448 ], [ -122.41874456405638, 37.80592288804931 ], [ -122.42037534713744, 37.805715207044685 ], [ -122.42201149463652, 37.80549481023774 ], [ -122.42365837097167, 37.80528712802926 ], [ -122.424259185791, 37.80521507488168 ], [ -122.424618601799, 37.80516845221932 ], [ -122.42520332336424, 37.805096398955996 ] ] }, "properties": { "class": "main", "len": 2009.4041363469214, "name": "N Pt St", "name_de": "N Pt St", "name_en": "N Pt St", "name_es": "N Pt St", "name_fr": "N Pt St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.80489719250912 ], [ -122.40476489067078, 37.804820900536086 ], [ -122.40517795085907, 37.80476580072879 ] ] }, "properties": { "class": "street", "len": 197.14333108653207, "name": "Chestnut St", "name_de": "Chestnut St", "name_en": "Chestnut St", "name_es": "Chestnut St", "name_fr": "Chestnut St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41688847541809, 37.80521507488171 ], [ -122.41722643375397, 37.805172690644405 ] ] }, "properties": { "class": "main", "len": 38.091271965153105, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.80204890539802 ], [ -122.40426063537598, 37.80204042818909 ], [ -122.4045717716217, 37.801989564915125 ] ] }, "properties": { "class": "path", "len": 153.5020236071965, "name": "Filbert Steps", "name_de": "Filbert Steps", "name_en": "Filbert Steps", "name_es": "Filbert Steps", "name_fr": "Filbert Steps", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40525305271149, 37.788878388084036 ], [ -122.40528523921967, 37.78901828682906 ], [ -122.40531206130981, 37.78916242465299 ], [ -122.405344247818, 37.789315040865986 ], [ -122.40540862083435, 37.7896245116636 ] ] }, "properties": { "class": "street", "len": 106.24563811613788, "name": "Grant Ave", "name_de": "Grant Ave", "name_en": "Grant Ave", "name_es": "Grant Ave", "name_fr": "Grant Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40485608577728, 37.78683922782627 ], [ -122.40497410297394, 37.787420033880174 ], [ -122.40504920482635, 37.78776766743669 ] ] }, "properties": { "class": "street", "len": 132.8615561455913, "name": "Grant Ave", "name_de": "Grant Ave", "name_en": "Grant Ave", "name_es": "Grant Ave", "name_fr": "Grant Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40504920482635, 37.78776766743669 ], [ -122.40513503551483, 37.788242481359454 ], [ -122.40522623062134, 37.78869609538249 ] ] }, "properties": { "class": "street", "len": 132.08571808793954, "name": "Grant Ave", "name_de": "Grant Ave", "name_en": "Grant Ave", "name_es": "Grant Ave", "name_fr": "Grant Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41192638874054, 37.797271843974116 ], [ -122.41195321083069, 37.79726760509566 ], [ -122.41301000118254, 37.79711500530889 ], [ -122.41346061229706, 37.797047183080274 ], [ -122.41355180740355, 37.797034466405464 ], [ -122.41366446018218, 37.79701751083568 ], [ -122.4144798517227, 37.79690306063769 ] ] }, "properties": { "class": "street", "len": 288.5829992169997, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41453886032104, 37.796890343938095 ], [ -122.41463005542755, 37.796877627236306 ], [ -122.41520404815674, 37.796805565884775 ], [ -122.41685092449188, 37.796602098159795 ], [ -122.41721034049988, 37.796559708979885 ] ] }, "properties": { "class": "street", "len": 301.33845822277254, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41533815860748, 37.79746259325332 ], [ -122.41526305675507, 37.79749650418472 ], [ -122.415252327919, 37.79752617623693 ], [ -122.4152898788452, 37.79770420829989 ], [ -122.41528451442719, 37.7977381191204 ], [ -122.4152684211731, 37.79778474647316 ], [ -122.41530060768127, 37.79781865725668 ], [ -122.4153220653534, 37.79785680686953 ], [ -122.41535425186157, 37.798013643959806 ], [ -122.41537570953369, 37.79804331580431 ], [ -122.41546154022218, 37.79806450997163 ] ] }, "properties": { "class": "street", "len": 100.08111124573138, "name": "Jones St", "name_de": "Jones St", "name_en": "Jones St", "name_es": "Jones St", "name_fr": "Jones St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4089115858078, 37.807168961812216 ], [ -122.40908861160278, 37.80800814249806 ], [ -122.40911543369293, 37.808135290254896 ] ] }, "properties": { "class": "street", "len": 138.3658536819864, "name": "Grant Ave", "name_de": "Grant Ave", "name_en": "Grant Ave", "name_es": "Grant Ave", "name_fr": "Grant Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40976452827454, 37.803239943579534 ], [ -122.40985572338104, 37.80371041956209 ], [ -122.40995228290558, 37.804176654065614 ], [ -122.41004884243013, 37.80463864717042 ], [ -122.41014003753662, 37.805104875814145 ], [ -122.41027414798737, 37.80575759097065 ], [ -122.41032779216766, 37.80603308589625 ], [ -122.41051018238068, 37.80696552263401 ], [ -122.41068184375763, 37.80782589699816 ], [ -122.41071403026581, 37.80790642413496 ] ] }, "properties": { "class": "street", "len": 666.4099969114848, "name": "Stockton St", "name_de": "Stockton St", "name_en": "Stockton St", "name_es": "Stockton St", "name_fr": "Stockton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43139922618866, 37.784494759909215 ], [ -122.43127584457397, 37.784511718352896 ], [ -122.43112564086914, 37.78453291640197 ], [ -122.43025124073029, 37.78461346893308 ], [ -122.43005812168121, 37.784630427349505 ], [ -122.42980599403381, 37.78465586496683 ], [ -122.4296450614929, 37.78467282337351 ], [ -122.42900133132935, 37.78475337575214 ], [ -122.42874383926392, 37.784787292516874 ], [ -122.42797136306763, 37.7848848031288 ] ] }, "properties": { "class": "main", "len": 385.5448650964588, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43541181087494, 37.783930889442026 ], [ -122.43455350399017, 37.78408775609415 ] ] }, "properties": { "class": "main", "len": 98.14221619599421, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4371337890625, 37.80434619315537 ], [ -122.43712842464447, 37.804341954682855 ], [ -122.43697822093964, 37.80359174121851 ], [ -122.43680119514465, 37.80276522603697 ], [ -122.4364686012268, 37.801048588029104 ], [ -122.4363774061203, 37.80089599605311 ], [ -122.4362701177597, 37.80081546127204 ] ] }, "properties": { "class": "street", "len": 785.0619269658225, "name": "Fillmore St", "name_de": "Fillmore St", "name_en": "Fillmore St", "name_es": "Fillmore St", "name_fr": "Fillmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4354600906372, 37.78410047499729 ], [ -122.4371337890625, 37.78388849299241 ] ] }, "properties": { "class": "main", "len": 272.08101361789215, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43019223213196, 37.78476609454075 ], [ -122.4305248260498, 37.784787292516874 ], [ -122.43117392063141, 37.78474065696133 ] ] }, "properties": { "class": "street", "len": 109.66823627003009, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43181228637695, 37.78723349812689 ], [ -122.43182301521301, 37.7871275116937 ], [ -122.43164062500001, 37.78629657278981 ] ] }, "properties": { "class": "main", "len": 133.6726327077986, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4362701177597, 37.80081546127204 ], [ -122.43622183799744, 37.800722210363176 ], [ -122.43607699871063, 37.79997196013091 ], [ -122.43606090545656, 37.79989566307024 ] ] }, "properties": { "class": "street", "len": 132.03542316140036, "name": "Fillmore St", "name_de": "Fillmore St", "name_en": "Fillmore St", "name_es": "Fillmore St", "name_fr": "Fillmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4325579404831, 37.790921731314675 ], [ -122.43308365345001, 37.79085390340043 ], [ -122.43377029895782, 37.79076063991673 ], [ -122.43419945240021, 37.790714008130706 ], [ -122.43584632873535, 37.79050204509613 ], [ -122.4371337890625, 37.790340952783204 ] ] }, "properties": { "class": "street", "len": 2761.88945843328, "name": "Clay St", "name_de": "Clay St", "name_en": "Clay St", "name_es": "Clay St", "name_fr": "Clay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4325579404831, 37.790921731314675 ], [ -122.43238091468811, 37.79004420286635 ], [ -122.43219316005707, 37.78911579185835 ] ] }, "properties": { "class": "street", "len": 257.4858164562641, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43308365345001, 37.7935584932212 ], [ -122.43473052978516, 37.79335077745011 ], [ -122.4363774061203, 37.79313882197963 ], [ -122.4371337890625, 37.79304132225904 ] ] }, "properties": { "class": "street", "len": 1834.1338993408526, "name": "Pacific Ave", "name_de": "Pacific Ave", "name_en": "Pacific Ave", "name_es": "Pacific Ave", "name_fr": "Pacific Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42959678173065, 37.80682141954372 ], [ -122.42955923080444, 37.8069146627519 ], [ -122.42952167987823, 37.806990952561925 ], [ -122.42943584918976, 37.80715200856877 ], [ -122.42933392524719, 37.80728339610364 ], [ -122.42923736572266, 37.807389353622796 ], [ -122.42910861968994, 37.807491072698134 ], [ -122.42843270301819, 37.808003904235726 ], [ -122.42837369441986, 37.80804204858794 ], [ -122.42830395698547, 37.80807595466228 ], [ -122.4282342195511, 37.80809714595084 ], [ -122.42815375328065, 37.80810986072104 ], [ -122.42806792259218, 37.80810986072104 ], [ -122.42734909057619, 37.808067478145155 ], [ -122.427134513855, 37.808050525108015 ], [ -122.4270272254944, 37.80804628684809 ], [ -122.42691993713379, 37.808050525108015 ], [ -122.4268126487732, 37.80806323988622 ], [ -122.42660880088808, 37.8081140989773 ] ] }, "properties": { "class": "service", "len": 422.9586987212778, "name": "McDowell Rd SW", "name_de": "McDowell Rd SW", "name_en": "McDowell Rd SW", "name_es": "McDowell Rd SW", "name_fr": "McDowell Rd SW", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41963505744934, 37.80199804212988 ], [ -122.41971552371977, 37.80198532630738 ], [ -122.4202251434326, 37.80192174716204 ] ] }, "properties": { "class": "street", "len": 66.71509629283327, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41993010044098, 37.78683074887198 ], [ -122.42002129554749, 37.78728013210937 ], [ -122.42011785507202, 37.787759188588936 ], [ -122.42021441459656, 37.788225523771885 ], [ -122.4203109741211, 37.78870033475276 ], [ -122.4204021692276, 37.78916666399651 ], [ -122.4204933643341, 37.789620272346355 ], [ -122.42069184780121, 37.79057835185864 ] ] }, "properties": { "class": "street", "len": 534.7932167900761, "name": "Polk St", "name_de": "Polk St", "name_en": "Polk St", "name_es": "Polk St", "name_fr": "Polk St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4065887928009, 37.80364684190173 ], [ -122.40765631198883, 37.80350697085634 ], [ -122.40782260894775, 37.80348577825057 ], [ -122.40816593170166, 37.80344339302085 ] ] }, "properties": { "class": "street", "len": 177.51311341677967, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4065887928009, 37.80364684190173 ], [ -122.40665853023529, 37.80393929868616 ], [ -122.40667998790741, 37.80404102251361 ] ] }, "properties": { "class": "street", "len": 55.86123294875488, "name": "Kearny St", "name_de": "Kearny St", "name_en": "Kearny St", "name_es": "Kearny St", "name_fr": "Kearny St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40499019622803, 37.8038333362169 ], [ -122.40517795085907, 37.80476580072879 ], [ -122.40524232387543, 37.805100637385195 ], [ -122.40534961223602, 37.80561772392276 ], [ -122.40537643432617, 37.80567282309445 ] ] }, "properties": { "class": "street", "len": 263.17872333876244, "name": "Montgomery St", "name_de": "Montgomery St", "name_en": "Montgomery St", "name_es": "Montgomery St", "name_fr": "Montgomery St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4063903093338, 37.804553878009884 ], [ -122.40667462348938, 37.804515731855865 ], [ -122.40671753883363, 37.8044945395396 ], [ -122.40676581859589, 37.8044394394888 ] ] }, "properties": { "class": "service", "len": 47.0867564088635, "name": "Chestnut St", "name_de": "Chestnut St", "name_en": "Chestnut St", "name_es": "Chestnut St", "name_fr": "Chestnut St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42565929889679, 37.80650354408551 ], [ -122.42561638355255, 37.80624924273377 ], [ -122.42554664611816, 37.80593136481263 ], [ -122.4255681037903, 37.80583388197601 ], [ -122.42547154426575, 37.80537613476155 ], [ -122.42541253566743, 37.80515573694268 ], [ -122.42536962032318, 37.805075206806336 ] ] }, "properties": { "class": "street", "len": 205.50846326299737, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40468442440033, 37.79911149426818 ], [ -122.40463614463808, 37.79915812075405 ], [ -122.40459859371187, 37.79917083706328 ], [ -122.40457177162172, 37.79917507583252 ], [ -122.40450203418733, 37.79914540444266 ], [ -122.40442693233491, 37.79917083706328 ], [ -122.40423381328587, 37.79910301672214 ], [ -122.40418016910557, 37.799124210585425 ] ] }, "properties": { "class": "path", "len": 79.03789381238825, "name": "Vallejo St Stairway", "name_de": "Vallejo St Stairway", "name_en": "Vallejo St Stairway", "name_es": "Vallejo St Stairway", "name_fr": "Vallejo St Stairway", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41173326969147, 37.79629689552161 ], [ -122.41176009178162, 37.79628841765255 ], [ -122.41254329681396, 37.79619516102869 ], [ -122.41281688213348, 37.79616124949991 ], [ -122.41336941719057, 37.796084948503236 ], [ -122.41424381732942, 37.79597897476603 ], [ -122.41501629352571, 37.79588995670932 ], [ -122.41666316986085, 37.79567800852345 ], [ -122.41700112819673, 37.79563561881331 ], [ -122.418310046196, 37.79547877667427 ], [ -122.4191200733185, 37.795360085104505 ], [ -122.4198228120804, 37.79527106630204 ], [ -122.41994082927705, 37.79524139334406 ], [ -122.4215877056122, 37.795029443297494 ] ] }, "properties": { "class": "street", "len": 1111.4952360344857, "name": "Pacific Ave", "name_de": "Pacific Ave", "name_en": "Pacific Ave", "name_es": "Pacific Ave", "name_fr": "Pacific Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41173326969147, 37.79629689552161 ], [ -122.41171717643739, 37.79629689552161 ], [ -122.4109071493149, 37.79639862987445 ], [ -122.41052627563478, 37.79644949699833 ], [ -122.4100971221924, 37.79650036408717 ] ] }, "properties": { "class": "street", "len": 184.5252029702847, "name": "Pacific Ave", "name_de": "Pacific Ave", "name_en": "Pacific Ave", "name_es": "Pacific Ave", "name_fr": "Pacific Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41009712219238, 37.79650036408717 ], [ -122.41016685962677, 37.79692001623378 ], [ -122.41022050380707, 37.79721249965347 ], [ -122.41025805473328, 37.79741596569723 ] ] }, "properties": { "class": "street", "len": 130.10096884827317, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41025805473328, 37.79741596569721 ], [ -122.41045653820038, 37.79837394412226 ], [ -122.41064965724944, 37.799314955081435 ], [ -122.41084277629851, 37.800251715345794 ] ] }, "properties": { "class": "street", "len": 405.18576569782863, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40787088871002, 37.78549954098075 ], [ -122.40805327892303, 37.7864322369225 ], [ -122.40823566913605, 37.78737339998601 ] ] }, "properties": { "class": "street", "len": 267.55082448304705, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42283761501312, 37.78454139561992 ], [ -122.42126047611238, 37.78474913615547 ], [ -122.42112100124359, 37.78476609454075 ] ] }, "properties": { "class": "main", "len": 194.0819786769891, "name": "O'Farrell St", "name_de": "O'Farrell St", "name_en": "O'Farrell St", "name_es": "O'Farrell St", "name_fr": "O'Farrell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42289662361145, 37.800603527218016 ], [ -122.42327749729156, 37.800955337414564 ], [ -122.42340624332428, 37.801023156054995 ] ] }, "properties": { "class": "street", "len": 82.49214824736018, "name": "Grenard Ter", "name_de": "Grenard Ter", "name_en": "Grenard Ter", "name_es": "Grenard Ter", "name_fr": "Grenard Ter", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42149651050568, 37.78663149316584 ], [ -122.41993010044098, 37.78683074887198 ], [ -122.41827249526978, 37.787042722437654 ], [ -122.41699039936066, 37.78720382194092 ], [ -122.4166417121887, 37.787250455942115 ], [ -122.41500020027159, 37.78745818886262 ], [ -122.41335868835449, 37.787665921199185 ], [ -122.41272568702698, 37.787746470315426 ], [ -122.41254329681396, 37.78776766743669 ], [ -122.4123340845108, 37.78779310397418 ], [ -122.41170108318329, 37.787873652951795 ], [ -122.41007566452026, 37.78808138412046 ], [ -122.40844488143921, 37.78828911470517 ], [ -122.40841805934907, 37.78829335409877 ], [ -122.40839660167696, 37.78829335409877 ], [ -122.4083322286606, 37.78830183288525 ], [ -122.40776360034944, 37.78837390253111 ], [ -122.40770459175111, 37.78838238130836 ], [ -122.40752220153813, 37.78840781763425 ], [ -122.40743100643162, 37.788416296407604 ], [ -122.40677118301393, 37.78850108408762 ] ] }, "properties": { "class": "street", "len": 1659.7996155951957, "name": "Post St", "name_de": "Post St", "name_en": "Post St", "name_es": "Post St", "name_fr": "Post St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41809010505676, 37.78610155516276 ], [ -122.41818130016327, 37.78656790080614 ], [ -122.41827249526978, 37.787042722437654 ], [ -122.41836905479431, 37.787487864946456 ], [ -122.41846561431885, 37.78796692007934 ], [ -122.41856217384338, 37.78843325395144 ], [ -122.41865873336793, 37.78891230295566 ], [ -122.41875529289247, 37.78937863086172 ], [ -122.41884648799898, 37.78983223791039 ], [ -122.4190664291382, 37.79078183617337 ], [ -122.41907179355621, 37.7907987931743 ] ] }, "properties": { "class": "street", "len": 670.4535563453252, "name": "Larkin St", "name_de": "Larkin St", "name_en": "Larkin St", "name_es": "Larkin St", "name_fr": "Larkin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40580022335052, 37.791778053376625 ], [ -122.40634739398956, 37.79171022624846 ] ] }, "properties": { "class": "street", "len": 61.44369210900245, "name": "Vinton Ct", "name_de": "Vinton Ct", "name_en": "Vinton Ct", "name_es": "Vinton Ct", "name_fr": "Vinton Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41789162158966, 37.801718293529156 ], [ -122.4185299873352, 37.801633521016726 ] ] }, "properties": { "class": "street", "len": 72.06703823484058, "name": "Lurmont Ter", "name_de": "Lurmont Ter", "name_en": "Lurmont Ter", "name_es": "Lurmont Ter", "name_fr": "Lurmont Ter", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42246747016907, 37.80409612286167 ], [ -122.42253720760345, 37.804473347217254 ] ] }, "properties": { "class": "street_limited", "len": 53.971308117745814, "name": "N View Ct", "name_de": "N View Ct", "name_en": "N View Ct", "name_es": "N View Ct", "name_fr": "N View Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42002665996552, 37.79877239166739 ], [ -122.42063820362091, 37.798696093367674 ] ] }, "properties": { "class": "street", "len": 69.02487957363917, "name": "Rockland St", "name_de": "Rockland St", "name_en": "Rockland St", "name_es": "Rockland St", "name_fr": "Rockland St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40671753883362, 37.79236305977244 ], [ -122.40681946277617, 37.79284208329947 ] ] }, "properties": { "class": "street", "len": 68.70235221567258, "name": "Sabin Pl", "name_de": "Sabin Pl", "name_en": "Sabin Pl", "name_es": "Sabin Pl", "name_fr": "Sabin Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41568148136139, 37.79914540444266 ], [ -122.41468906402588, 37.799276806221656 ] ] }, "properties": { "class": "street", "len": 111.81284586290512, "name": "Macondray Ln", "name_de": "Macondray Ln", "name_en": "Macondray Ln", "name_es": "Macondray Ln", "name_fr": "Macondray Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41337478160858, 37.80440977021365 ], [ -122.4150002002716, 37.80420632343443 ], [ -122.4150162935257, 37.80420632343443 ] ] }, "properties": { "class": "service", "len": 185.1203877367229, "name": "Water St", "name_de": "Water St", "name_en": "Water St", "name_es": "Water St", "name_fr": "Water St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43333578109741, 37.80306616340459 ], [ -122.43352890014648, 37.804032545533346 ], [ -122.43356645107268, 37.8042105619147 ], [ -122.43365764617919, 37.8046640778996 ], [ -122.43371129035948, 37.804922623149274 ], [ -122.43373811244963, 37.804986199711365 ], [ -122.43378639221187, 37.80504129935424 ] ] }, "properties": { "class": "street", "len": 284.20874152874563, "name": "Buchanan St", "name_de": "Buchanan St", "name_en": "Buchanan St", "name_es": "Buchanan St", "name_fr": "Buchanan St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40809082984924, 37.803100071763524 ], [ -122.40889012813567, 37.80298986954011 ] ] }, "properties": { "class": "service", "len": 90.41847709297545, "name": "Edgardo Pl", "name_de": "Edgardo Pl", "name_en": "Edgardo Pl", "name_es": "Edgardo Pl", "name_fr": "Edgardo Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43208587169647, 37.805185405918145 ], [ -122.4321448802948, 37.80520235961308 ], [ -122.43220925331116, 37.80520235961308 ], [ -122.43273496627806, 37.80513878323706 ], [ -122.43359863758086, 37.805028584055684 ], [ -122.43369519710541, 37.805028584055684 ], [ -122.4337863922119, 37.80504129935424 ], [ -122.43387222290039, 37.805075206806336 ], [ -122.43394732475281, 37.805113352671334 ], [ -122.43549764156342, 37.80609666150237 ], [ -122.43593215942381, 37.8063721551631 ], [ -122.4360018968582, 37.806410300358195 ], [ -122.43608236312865, 37.80644844553362 ] ] }, "properties": { "class": "main", "len": 515.8117501844065, "name": "Marina Blvd", "name_de": "Marina Blvd", "name_en": "Marina Blvd", "name_es": "Marina Blvd", "name_fr": "Marina Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4082088470459, 37.80207009841604 ], [ -122.40823030471802, 37.80218030201182 ], [ -122.40828931331635, 37.80246852602342 ] ] }, "properties": { "class": "service", "len": 56.65936077227183, "name": "Kramer Pl", "name_de": "Kramer Pl", "name_en": "Kramer Pl", "name_es": "Kramer Pl", "name_fr": "Kramer Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4160248041153, 37.790692811854626 ], [ -122.4161159992218, 37.79115065006551 ], [ -122.4161159992218, 37.79116336775309 ] ] }, "properties": { "class": "street", "len": 66.88687589334053, "name": "Helen Pl", "name_de": "Helen Pl", "name_en": "Helen Pl", "name_es": "Helen Pl", "name_fr": "Helen Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.79268947437134 ], [ -122.40444302558899, 37.79265556123338 ], [ -122.40566074848175, 37.79249871276787 ], [ -122.40594506263733, 37.792460560388086 ] ] }, "properties": { "class": "street", "len": 1081.7516735653962, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41417407989502, 37.795618662922415 ], [ -122.4142438173294, 37.79597897476603 ] ] }, "properties": { "class": "path", "len": 51.62398376794005, "name": "Phoenix Ter", "name_de": "Phoenix Ter", "name_en": "Phoenix Ter", "name_es": "Phoenix Ter", "name_fr": "Phoenix Ter", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41897523403168, 37.79874272011575 ], [ -122.41998910903932, 37.798598600981116 ] ] }, "properties": { "class": "street", "len": 114.79721686527758, "name": "Russell St", "name_de": "Russell St", "name_en": "Russell St", "name_es": "Russell St", "name_fr": "Russell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43378639221191, 37.80504129935424 ], [ -122.43386149406433, 37.80499467658216 ], [ -122.43393659591676, 37.80496076909309 ], [ -122.43402242660524, 37.804931100027375 ], [ -122.43536353111269, 37.80476156228035 ], [ -122.43701577186584, 37.804553878009884 ], [ -122.43713378906251, 37.80453268570453 ] ] }, "properties": { "class": "street", "len": 385.39758175987913, "name": "Beach St", "name_de": "Beach St", "name_en": "Beach St", "name_es": "Beach St", "name_fr": "Beach St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41100907325745, 37.795093028375305 ], [ -122.41108417510986, 37.79547029871132 ] ] }, "properties": { "class": "street", "len": 53.50308869518279, "name": "Doric Alley", "name_de": "Doric Alley", "name_en": "Doric Alley", "name_es": "Doric Alley", "name_fr": "Doric Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40743637084961, 37.80257872902474 ], [ -122.40750074386597, 37.802888144264855 ] ] }, "properties": { "class": "street", "len": 44.440342033854215, "name": "Child St", "name_de": "Child St", "name_en": "Child St", "name_es": "Child St", "name_fr": "Child St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41387367248535, 37.80270588612963 ], [ -122.41368055343628, 37.801790350088226 ] ] }, "properties": { "class": "street", "len": 130.50833613184966, "name": "Jansen St", "name_de": "Jansen St", "name_en": "Jansen St", "name_es": "Jansen St", "name_fr": "Jansen St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42828786373138, 37.80700790584237 ], [ -122.42810010910034, 37.80644844553362 ], [ -122.42806792259216, 37.8063891085856 ], [ -122.42777824401855, 37.80601613239205 ], [ -122.42770850658417, 37.805910172902585 ], [ -122.42761194705963, 37.80579149809386 ], [ -122.42755830287933, 37.80573639901071 ], [ -122.427499294281, 37.805689776677475 ], [ -122.42723643779755, 37.80551600226697 ], [ -122.42712914943695, 37.80543123411352 ], [ -122.42689311504364, 37.80544818775199 ], [ -122.42672145366669, 37.80546937979462 ], [ -122.42648541927338, 37.80551176386163 ], [ -122.42632985115051, 37.80552871748163 ], [ -122.42621183395386, 37.80551600226699 ], [ -122.42610991001129, 37.80546514138659 ], [ -122.42592215538025, 37.80530408170084 ], [ -122.42583632469176, 37.80520235961308 ], [ -122.42576122283934, 37.805087922096874 ], [ -122.42569684982298, 37.80493957690451 ], [ -122.42565393447875, 37.80481242364534 ], [ -122.4255734682083, 37.80453268570453 ], [ -122.42573976516722, 37.804312285368546 ], [ -122.42616355419158, 37.80425294670417 ], [ -122.42657661437987, 37.80421480039474 ], [ -122.42666244506835, 37.80435043162762 ], [ -122.4268341064453, 37.80506672994478 ], [ -122.42680728435516, 37.805164213794036 ] ] }, "properties": { "class": "street", "len": 797.129180519644, "name": "Pope Rd", "name_de": "Pope Rd", "name_en": "Pope Rd", "name_es": "Pope Rd", "name_fr": "Pope Rd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41502702236176, 37.791799249341395 ], [ -122.41505920886993, 37.79193914255643 ], [ -122.41511821746826, 37.792235884863004 ], [ -122.41512358188628, 37.79229523318131 ], [ -122.41521477699278, 37.79274458318729 ] ] }, "properties": { "class": "street", "len": 134.59077525889847, "name": "Leroy Pl", "name_de": "Leroy Pl", "name_en": "Leroy Pl", "name_es": "Leroy Pl", "name_fr": "Leroy Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40468442440033, 37.79911149426818 ], [ -122.40565538406372, 37.79898433097531 ] ] }, "properties": { "class": "street", "len": 109.59860218135036, "name": "Vallejo St", "name_de": "Vallejo St", "name_en": "Vallejo St", "name_es": "Vallejo St", "name_fr": "Vallejo St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41441011428833, 37.79789071761994 ], [ -122.41482853889465, 37.797831373796456 ], [ -122.41508603096008, 37.79780170186684 ], [ -122.41526842117308, 37.797784746473134 ] ] }, "properties": { "class": "street", "len": 96.93284389228506, "name": "Vallejo St", "name_de": "Vallejo St", "name_en": "Vallejo St", "name_es": "Vallejo St", "name_fr": "Vallejo St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40541398525238, 37.79962862273726 ], [ -122.40547835826874, 37.79996348268362 ] ] }, "properties": { "class": "path", "len": 48.002705132066666, "name": "Reno Pl", "name_de": "Reno Pl", "name_en": "Reno Pl", "name_es": "Reno Pl", "name_fr": "Reno Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43122220039368, 37.80098500807743 ], [ -122.43286371231079, 37.80077307450988 ], [ -122.43451058864594, 37.80056114033426 ] ] }, "properties": { "class": "street", "len": 371.7554022852868, "name": "Magnolia St", "name_de": "Magnolia St", "name_en": "Magnolia St", "name_es": "Magnolia St", "name_fr": "Magnolia St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41185665130615, 37.799806649733185 ], [ -122.41239309310913, 37.799721875026755 ], [ -122.41241991519928, 37.79971763628886 ] ] }, "properties": { "class": "service", "len": 64.17554773211342, "name": "Winter Pl", "name_de": "Winter Pl", "name_en": "Winter Pl", "name_es": "Winter Pl", "name_fr": "Winter Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40636885166168, 37.800794267894 ], [ -122.4065512418747, 37.80175220250688 ] ] }, "properties": { "class": "service", "len": 136.59835467473067, "name": "Genoa Pl", "name_de": "Genoa Pl", "name_en": "Genoa Pl", "name_es": "Genoa Pl", "name_fr": "Genoa Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41989254951477, 37.79812809243717 ], [ -122.41998910903932, 37.798598600981116 ], [ -122.42002665996552, 37.79877239166739 ], [ -122.42008566856384, 37.799064867752875 ], [ -122.42014467716217, 37.79935310392155 ] ] }, "properties": { "class": "street", "len": 174.46837028767197, "name": "Eastman Pl", "name_de": "Eastman Pl", "name_en": "Eastman Pl", "name_es": "Eastman Pl", "name_fr": "Eastman Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42183446884155, 37.80354935604959 ], [ -122.42193102836609, 37.803557833085314 ], [ -122.42217242717743, 37.80355359456757 ], [ -122.4224352836609, 37.80354087901289 ] ] }, "properties": { "class": "street", "len": 67.40971332002576, "name": "Francisco St", "name_de": "Francisco St", "name_en": "Francisco St", "name_es": "Francisco St", "name_fr": "Francisco St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42001593112946, 37.80388843671987 ], [ -122.41856217384338, 37.80407916891281 ], [ -122.41849780082703, 37.8040706919369 ], [ -122.41845488548279, 37.80405373798221 ] ] }, "properties": { "class": "street", "len": 176.51621827234703, "name": "Francisco St", "name_de": "Francisco St", "name_en": "Francisco St", "name_es": "Francisco St", "name_fr": "Francisco St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40691065788269, 37.80296867678598 ], [ -122.40750074386597, 37.802888144264855 ] ] }, "properties": { "class": "service", "len": 66.72982616574079, "name": "Telegraph Pl", "name_de": "Telegraph Pl", "name_en": "Telegraph Pl", "name_es": "Telegraph Pl", "name_fr": "Telegraph Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41010785102844, 37.801862406576994 ], [ -122.41053700447083, 37.80181578179817 ], [ -122.41060674190521, 37.802171824817975 ] ] }, "properties": { "class": "service", "len": 99.27942201758228, "name": "Brant Alley", "name_de": "Brant Alley", "name_en": "Brant Alley", "name_es": "Brant Alley", "name_fr": "Brant Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40426063537598, 37.80204042818909 ], [ -122.40430355072021, 37.80228626685273 ], [ -122.40440011024475, 37.80265926188326 ] ] }, "properties": { "class": "path", "len": 88.4763645184286, "name": "Darrell Pl", "name_de": "Darrell Pl", "name_en": "Darrell Pl", "name_es": "Darrell Pl", "name_fr": "Darrell Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41000592708588, 37.79605527587214 ], [ -122.41162061691284, 37.79583908920016 ], [ -122.41163671016692, 37.79583908920016 ] ] }, "properties": { "class": "street", "len": 184.2639063803854, "name": "John St", "name_de": "John St", "name_en": "John St", "name_es": "John St", "name_fr": "John St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40630984306335, 37.79756856486228 ], [ -122.40694820880891, 37.79748378758728 ] ] }, "properties": { "class": "street_limited", "len": 72.03799344842889, "name": "Jack Kerouac Alley", "name_de": "Jack Kerouac Alley", "name_en": "Jack Kerouac Alley", "name_es": "Jack Kerouac Alley", "name_fr": "Jack Kerouac Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41903424263, 37.80279489597278 ], [ -122.41892158985138, 37.802269312488406 ], [ -122.41892158985138, 37.802239642341455 ], [ -122.41892695426941, 37.802214210777436 ], [ -122.41894841194153, 37.80218877920469 ], [ -122.41896986961365, 37.802171824817975 ], [ -122.41899669170378, 37.802159109025396 ], [ -122.41900205612181, 37.80214639323063 ], [ -122.41900742053984, 37.80213367743367 ] ] }, "properties": { "class": "street", "len": 97.88653388819017, "name": "Montclair Ter", "name_de": "Montclair Ter", "name_en": "Montclair Ter", "name_es": "Montclair Ter", "name_fr": "Montclair Ter", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41190493106842, 37.79263436551425 ], [ -122.41181910037994, 37.792210449854856 ], [ -122.41171717643738, 37.79172294383976 ] ] }, "properties": { "class": "street", "len": 130.07598720782354, "name": "Cushman St", "name_de": "Cushman St", "name_en": "Cushman St", "name_es": "Cushman St", "name_fr": "Cushman St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40644931793213, 37.79888260018339 ], [ -122.40654587745667, 37.79932767136367 ] ] }, "properties": { "class": "service", "len": 63.568313647284086, "name": "Pollard Pl", "name_de": "Pollard Pl", "name_en": "Pollard Pl", "name_es": "Pollard Pl", "name_fr": "Pollard Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40459859371185, 37.79766181975238 ], [ -122.40469515323639, 37.79811537594843 ] ] }, "properties": { "class": "service", "len": 65.06627390580476, "name": "Rowland St", "name_de": "Rowland St", "name_en": "Rowland St", "name_es": "Rowland St", "name_fr": "Rowland St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41530060768127, 37.79728879948555 ], [ -122.41689383983612, 37.79708957198048 ], [ -122.41694211959839, 37.79707261642332 ] ] }, "properties": { "class": "street", "len": 185.5156224954559, "name": "Glover St", "name_de": "Glover St", "name_en": "Glover St", "name_es": "Glover St", "name_fr": "Glover St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41183519363403, 37.79505911634061 ], [ -122.41189956665039, 37.795381280041674 ] ] }, "properties": { "class": "service", "len": 45.97486487176649, "name": "Marcy Pl", "name_de": "Marcy Pl", "name_en": "Marcy Pl", "name_es": "Marcy Pl", "name_fr": "Marcy Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.79605103692387 ], [ -122.40435719490051, 37.79602984217886 ], [ -122.4045878648758, 37.79600016952563 ] ] }, "properties": { "class": "street", "len": 57.186299473279746, "name": "Gibb St", "name_de": "Gibb St", "name_en": "Gibb St", "name_es": "Gibb St", "name_fr": "Gibb St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40965723991394, 37.79847143680532 ], [ -122.40974843502045, 37.798937704379746 ] ] }, "properties": { "class": "service", "len": 66.39165308980479, "name": "Emery Ln", "name_de": "Emery Ln", "name_en": "Emery Ln", "name_es": "Emery Ln", "name_fr": "Emery Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41000592708588, 37.794313047639136 ], [ -122.41008639335631, 37.794707278062184 ] ] }, "properties": { "class": "street", "len": 55.974480792999394, "name": "Codman Pl", "name_de": "Codman Pl", "name_en": "Codman Pl", "name_es": "Codman Pl", "name_fr": "Codman Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4080640077591, 37.791205760029214 ], [ -122.40796744823456, 37.790730965147205 ], [ -122.40787088871002, 37.79029432073233 ] ] }, "properties": { "class": "street", "len": 130.6125469251196, "name": "Dashiell Hammett St", "name_de": "Dashiell Hammett St", "name_en": "Dashiell Hammett St", "name_es": "Dashiell Hammett St", "name_fr": "Dashiell Hammett St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42676973342896, 37.7996922038565 ], [ -122.42685556411743, 37.80010336043956 ] ] }, "properties": { "class": "street", "len": 58.524717001247815, "name": "Imperial Ave", "name_de": "Imperial Ave", "name_en": "Imperial Ave", "name_es": "Imperial Ave", "name_fr": "Imperial Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4203485250473, 37.799030957541454 ], [ -122.42044508457184, 37.79950569908492 ] ] }, "properties": { "class": "street", "len": 67.78662109921467, "name": "Moore Pl", "name_de": "Moore Pl", "name_en": "Moore Pl", "name_es": "Moore Pl", "name_fr": "Moore Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4155580997467, 37.80395201417224 ], [ -122.41566002368927, 37.803913867707394 ], [ -122.41600334644318, 37.80387148272332 ], [ -122.41630375385284, 37.8038630057236 ] ] }, "properties": { "class": "service", "len": 85.27210630659062, "name": "Houston St", "name_de": "Houston St", "name_en": "Houston St", "name_es": "Houston St", "name_fr": "Houston St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40755438804626, 37.79502520429035 ], [ -122.40764021873474, 37.79558899010402 ] ] }, "properties": { "class": "path", "len": 79.80171739993848, "name": "Old Chinatown Ln", "name_de": "Old Chinatown Ln", "name_en": "Old Chinatown Ln", "name_es": "Old Chinatown Ln", "name_fr": "Old Chinatown Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40869700908661, 37.79540247497274 ], [ -122.408766746521, 37.79576278787075 ] ] }, "properties": { "class": "service", "len": 51.374156927156754, "name": "James Pl", "name_de": "James Pl", "name_en": "James Pl", "name_es": "James Pl", "name_fr": "James Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41783261299133, 37.79839937700852 ], [ -122.41792917251588, 37.79886564503779 ] ] }, "properties": { "class": "path", "len": 66.21619514976571, "name": "Hamlin St", "name_de": "Hamlin St", "name_en": "Hamlin St", "name_es": "Hamlin St", "name_fr": "Hamlin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4220597743988, 37.797373576984334 ], [ -122.42317020893096, 37.79724217181975 ] ] }, "properties": { "class": "street", "len": 124.81293402591506, "name": "Bonita St", "name_de": "Bonita St", "name_en": "Bonita St", "name_es": "Bonita St", "name_fr": "Bonita St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41510212421417, 37.79343132036943 ], [ -122.41517186164856, 37.793770447487695 ] ] }, "properties": { "class": "path", "len": 48.397787139902604, "name": "Priest St", "name_de": "Priest St", "name_en": "Priest St", "name_es": "Priest St", "name_fr": "Priest St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41234481334686, 37.79532193420228 ], [ -122.41251647472383, 37.796152771615276 ], [ -122.41254329681396, 37.79619516102869 ] ] }, "properties": { "class": "service", "len": 125.00729047926681, "name": "Auburn St", "name_de": "Auburn St", "name_en": "Auburn St", "name_es": "Auburn St", "name_fr": "Auburn St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41054773330688, 37.79464369265235 ], [ -122.41046726703644, 37.79427065714581 ], [ -122.4103707075119, 37.793808599191095 ], [ -122.41036534309387, 37.7937492520884 ], [ -122.4102795124054, 37.79330838640464 ] ] }, "properties": { "class": "service", "len": 190.7065453498937, "name": "Wetmore St", "name_de": "Wetmore St", "name_en": "Wetmore St", "name_es": "Wetmore St", "name_fr": "Wetmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4171245098114, 37.79609342639566 ], [ -122.41717278957367, 37.79634352378406 ] ] }, "properties": { "class": "street", "len": 35.51528403336682, "name": "Cyrus Pl", "name_de": "Cyrus Pl", "name_en": "Cyrus Pl", "name_es": "Cyrus Pl", "name_fr": "Cyrus Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40577340126038, 37.79568224749312 ], [ -122.40586459636688, 37.79613157689948 ] ] }, "properties": { "class": "street", "len": 63.71686511470373, "name": "Cooper Alley", "name_de": "Cooper Alley", "name_en": "Cooper Alley", "name_es": "Cooper Alley", "name_fr": "Cooper Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42229580879211, 37.80259144474508 ], [ -122.4224352836609, 37.80257449045081 ], [ -122.42300927639009, 37.80250243465672 ], [ -122.42309510707857, 37.802489718921066 ], [ -122.42319703102113, 37.80247700318321 ], [ -122.42455422878267, 37.802303221213165 ], [ -122.42467224597932, 37.8022905054432 ] ] }, "properties": { "class": "street", "len": 267.7905322185892, "name": "Chestnut St", "name_de": "Chestnut St", "name_en": "Chestnut St", "name_es": "Chestnut St", "name_fr": "Chestnut St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.801574180200134 ], [ -122.40448594093323, 37.80152755523935 ] ] }, "properties": { "class": "street", "len": 115.31027630198597, "name": "Alta St", "name_de": "Alta St", "name_en": "Alta St", "name_es": "Alta St", "name_fr": "Alta St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40770995616913, 37.799649816449765 ], [ -122.40791916847229, 37.800603527218016 ] ] }, "properties": { "class": "service", "len": 136.54025963021408, "name": "Bannam Pl", "name_de": "Bannam Pl", "name_en": "Bannam Pl", "name_es": "Bannam Pl", "name_fr": "Bannam Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42712914943695, 37.80543123411352 ], [ -122.4273008108139, 37.805935603193895 ], [ -122.4275529384613, 37.80671122287313 ], [ -122.42753148078918, 37.80676208289539 ], [ -122.42752075195312, 37.80681718121327 ], [ -122.42752075195312, 37.80687227949006 ], [ -122.42753684520721, 37.80692737772573 ], [ -122.4275690317154, 37.80697823759909 ], [ -122.42760121822357, 37.80701214416185 ], [ -122.42765486240387, 37.8070333357557 ], [ -122.42770850658417, 37.807071480609274 ], [ -122.42774605751038, 37.80711386375682 ] ] }, "properties": { "class": "street", "len": 253.93221485712456, "name": "Funston Rd", "name_de": "Funston Rd", "name_en": "Funston Rd", "name_es": "Funston Rd", "name_fr": "Funston Rd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4072915315628, 37.79505911634061 ], [ -122.407329082489, 37.79537280206753 ], [ -122.40744173526762, 37.79593234627349 ] ] }, "properties": { "class": "service", "len": 124.00488861903506, "name": "Ross Alley", "name_de": "Ross Alley", "name_en": "Ross Alley", "name_es": "Ross Alley", "name_fr": "Ross Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42770850658417, 37.805910172902585 ], [ -122.4278211593628, 37.80581692842606 ], [ -122.4279123544693, 37.80577878292446 ], [ -122.42864191532135, 37.80565163111018 ] ] }, "properties": { "class": "street", "len": 113.16274315251536, "name": "Schofield Rd", "name_de": "Schofield Rd", "name_en": "Schofield Rd", "name_es": "Schofield Rd", "name_fr": "Schofield Rd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41902351379395, 37.79490227297768 ], [ -122.41912007331848, 37.795360085104505 ] ] }, "properties": { "class": "street", "len": 65.80607038887653, "name": "McCormick St", "name_de": "McCormick St", "name_en": "McCormick St", "name_es": "McCormick St", "name_fr": "McCormick St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40883111953735, 37.79210023138502 ], [ -122.40892231464386, 37.792562300023754 ] ] }, "properties": { "class": "service", "len": 66.23542405709249, "name": "Miles Ct", "name_de": "Miles Ct", "name_en": "Miles Ct", "name_es": "Miles Ct", "name_fr": "Miles Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41649150848389, 37.79952689283269 ], [ -122.41658806800842, 37.79999739246696 ] ] }, "properties": { "class": "street", "len": 67.1215762632869, "name": "Black Pl", "name_de": "Black Pl", "name_en": "Black Pl", "name_es": "Black Pl", "name_fr": "Black Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41243064403534, 37.799764262392124 ], [ -122.41245210170746, 37.79976002365667 ], [ -122.41256475448608, 37.79976002365667 ], [ -122.41301000118256, 37.7996922038565 ] ] }, "properties": { "class": "path", "len": 65.80191823104533, "name": "Webb Pl", "name_de": "Webb Pl", "name_en": "Webb Pl", "name_es": "Webb Pl", "name_fr": "Webb Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43248283863068, 37.798908032894516 ], [ -122.43412971496582, 37.798696093367674 ], [ -122.43577122688293, 37.79848839204139 ], [ -122.4371337890625, 37.79831460068698 ] ] }, "properties": { "class": "street", "len": 556.1986596304383, "name": "Pixley St", "name_de": "Pixley St", "name_en": "Pixley St", "name_es": "Pixley St", "name_fr": "Pixley St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42028415203094, 37.80523626699121 ], [ -122.42078304290771, 37.805172690644405 ] ] }, "properties": { "class": "street", "len": 56.334731738702594, "name": "Bergen Pl", "name_de": "Bergen Pl", "name_en": "Bergen Pl", "name_es": "Bergen Pl", "name_fr": "Bergen Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41833686828613, 37.798640988991096 ], [ -122.41893768310547, 37.79856892935968 ] ] }, "properties": { "class": "street", "len": 67.95594160899057, "name": "Delgado Pl", "name_de": "Delgado Pl", "name_en": "Delgado Pl", "name_es": "Delgado Pl", "name_fr": "Delgado Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.412548661232, 37.80034072814651 ], [ -122.41257011890411, 37.800336489444156 ], [ -122.41312265396118, 37.800251715345794 ] ] }, "properties": { "class": "street", "len": 65.0941469152847, "name": "Kent St", "name_de": "Kent St", "name_en": "Kent St", "name_es": "Kent St", "name_fr": "Kent St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4058324098587, 37.8027440332184 ], [ -122.40584313869476, 37.802777941725196 ], [ -122.40585923194884, 37.80282032733683 ], [ -122.40588605403899, 37.80286695148153 ], [ -122.40591287612914, 37.80290509848712 ], [ -122.40593969821926, 37.8029262912595 ], [ -122.40596115589138, 37.80293476836673 ], [ -122.40599870681758, 37.802939006920006 ], [ -122.40603625774379, 37.80293052981323 ], [ -122.40606307983393, 37.802917814151286 ], [ -122.40607917308802, 37.80290085993192 ], [ -122.4060952663421, 37.802871190038694 ], [ -122.4060952663421, 37.80284999725051 ], [ -122.40608990192408, 37.802816088776765 ], [ -122.40606307983393, 37.802790657411244 ], [ -122.40602016448969, 37.80276946459998 ], [ -122.40597724914545, 37.8027567489103 ], [ -122.40593969821924, 37.80275251034657 ], [ -122.40590751171106, 37.80274827178258 ], [ -122.40586996078487, 37.80274827178258 ] ] }, "properties": { "class": "street", "len": 86.23294703460996, "name": "Telegraph Hill Blvd", "name_de": "Telegraph Hill Blvd", "name_en": "Telegraph Hill Blvd", "name_es": "Telegraph Hill Blvd", "name_fr": "Telegraph Hill Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4062991142273, 37.801786111469056 ], [ -122.40655124187471, 37.80175220250688 ], [ -122.40700185298921, 37.80169710041017 ], [ -122.40748465061189, 37.801633521016726 ], [ -122.40779042243959, 37.80159537335438 ], [ -122.40815520286561, 37.801548748406965 ], [ -122.40857362747197, 37.80149364615848 ], [ -122.40894913673405, 37.801447021146856 ], [ -122.40938365459444, 37.80137920289562 ], [ -122.41014003753664, 37.80128171405037 ], [ -122.4105477333069, 37.80123085025394 ], [ -122.41102516651155, 37.801175747768255 ] ] }, "properties": { "class": "street", "len": 533.1610983328536, "name": "Filbert St", "name_de": "Filbert St", "name_en": "Filbert St", "name_es": "Filbert St", "name_fr": "Filbert St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41275787353516, 37.80143006658992 ], [ -122.41279006004333, 37.80143006658992 ], [ -122.41439938545227, 37.80122661160265 ] ] }, "properties": { "class": "street", "len": 185.27470093271157, "name": "Valparaiso St", "name_de": "Valparaiso St", "name_en": "Valparaiso St", "name_es": "Valparaiso St", "name_fr": "Valparaiso St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4148553609848, 37.80116727045915 ], [ -122.41605699062349, 37.801010440064665 ] ] }, "properties": { "class": "street", "len": 135.58526800389436, "name": "Valparaiso St", "name_de": "Valparaiso St", "name_en": "Valparaiso St", "name_es": "Valparaiso St", "name_fr": "Valparaiso St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40968406200409, 37.796983599684395 ], [ -122.41016685962677, 37.79692001623378 ] ] }, "properties": { "class": "service", "len": 53.878341660583025, "name": "Fisher Alley", "name_de": "Fisher Alley", "name_en": "Fisher Alley", "name_es": "Fisher Alley", "name_fr": "Fisher Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4089115858078, 37.79904791264911 ], [ -122.40974843502046, 37.79893770437972 ] ] }, "properties": { "class": "service", "len": 94.45877936906446, "name": "Card Alley", "name_de": "Card Alley", "name_en": "Card Alley", "name_es": "Card Alley", "name_fr": "Card Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4297684431076, 37.799149643213354 ], [ -122.43082523345947, 37.7990140024299 ] ] }, "properties": { "class": "street", "len": 119.18739866285387, "name": "Harris Pl", "name_de": "Harris Pl", "name_en": "Harris Pl", "name_es": "Harris Pl", "name_fr": "Harris Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40533351898193, 37.791070104659966 ], [ -122.40541398525237, 37.79146435238699 ], [ -122.40544617176056, 37.7915364189484 ], [ -122.4054729938507, 37.7916084854395 ], [ -122.40566074848174, 37.792498712767845 ] ] }, "properties": { "class": "street", "len": 204.3901159191687, "name": "Quincy St", "name_de": "Quincy St", "name_en": "Quincy St", "name_es": "Quincy St", "name_fr": "Quincy St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.79578822165596 ], [ -122.40464687347412, 37.795737354076756 ] ] }, "properties": { "class": "street", "len": 99.14472497850826, "name": "Ils Ln", "name_de": "Ils Ln", "name_en": "Ils Ln", "name_es": "Ils Ln", "name_fr": "Ils Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41416871547699, 37.80841925278804 ], [ -122.41397559642793, 37.807491072698134 ] ] }, "properties": { "class": "street", "len": 132.50103169390346, "name": "Mason St", "name_de": "Mason St", "name_en": "Mason St", "name_es": "Mason St", "name_fr": "Mason St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40893304347992, 37.79486412183907 ], [ -122.40900814533235, 37.79527954428784 ] ] }, "properties": { "class": "service", "len": 59.40607544642352, "name": "Trenton St", "name_de": "Trenton St", "name_en": "Trenton St", "name_es": "Trenton St", "name_fr": "Trenton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43497729301453, 37.80285423580862 ], [ -122.43517041206358, 37.803824859212796 ], [ -122.43536353111266, 37.804761562280376 ], [ -122.43555665016173, 37.805689776677475 ], [ -122.43559956550597, 37.80591441128507 ], [ -122.43556737899779, 37.806024609144636 ], [ -122.4354976415634, 37.80609666150237 ] ] }, "properties": { "class": "street", "len": 465.9465632152965, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43460178375244, 37.80102739471796 ], [ -122.43451058864595, 37.80056114033423 ], [ -122.43444085121156, 37.80018389599704 ], [ -122.4344301223755, 37.80010336043956 ] ] }, "properties": { "class": "street", "len": 131.42676270340561, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4284166097641, 37.80374008911817 ], [ -122.42821276187898, 37.80279489597278 ], [ -122.42802500724794, 37.801862406576994 ], [ -122.42785871028902, 37.801014678728365 ], [ -122.42784261703493, 37.800942621412574 ] ] }, "properties": { "class": "street", "len": 399.27046569905065, "name": "Gough St", "name_de": "Gough St", "name_en": "Gough St", "name_es": "Gough St", "name_fr": "Gough St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40871846675873, 37.79577126580011 ], [ -122.40879893302917, 37.79618244420722 ] ] }, "properties": { "class": "path", "len": 58.5516882757108, "name": "Bedford Pl", "name_de": "Bedford Pl", "name_en": "Bedford Pl", "name_es": "Bedford Pl", "name_fr": "Bedford Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43134021759033, 37.79710652753374 ], [ -122.4314421415329, 37.797606714604264 ] ] }, "properties": { "class": "street", "len": 71.23167834536395, "name": "Charlton Ct", "name_de": "Charlton Ct", "name_en": "Charlton Ct", "name_es": "Charlton Ct", "name_fr": "Charlton Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41912543773651, 37.79948874408232 ], [ -122.42014467716217, 37.79935310392155 ] ] }, "properties": { "class": "street", "len": 115.28500032497456, "name": "Allen St", "name_de": "Allen St", "name_en": "Allen St", "name_es": "Allen St", "name_fr": "Allen St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41422235965729, 37.80030257981648 ], [ -122.41433501243591, 37.800289863702076 ], [ -122.41478562355042, 37.80023052180601 ] ] }, "properties": { "class": "street", "len": 63.63787942642608, "name": "Redfield Alley", "name_de": "Redfield Alley", "name_en": "Redfield Alley", "name_es": "Redfield Alley", "name_fr": "Redfield Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41522550582886, 37.799687965116924 ], [ -122.41532742977142, 37.80016694115013 ] ] }, "properties": { "class": "path", "len": 67.97571625166456, "name": "Marion Pl", "name_de": "Marion Pl", "name_en": "Marion Pl", "name_es": "Marion Pl", "name_fr": "Marion Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40715205669403, 37.80100196273655 ], [ -122.40766167640686, 37.800938382744725 ] ] }, "properties": { "class": "service", "len": 57.776885517755545, "name": "Nobles Alley", "name_de": "Nobles Alley", "name_en": "Nobles Alley", "name_es": "Nobles Alley", "name_fr": "Nobles Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41583168506622, 37.791544897362755 ], [ -122.41630375385284, 37.791489787651976 ] ] }, "properties": { "class": "street", "len": 53.43485753631922, "name": "Acorn Alley", "name_de": "Acorn Alley", "name_en": "Acorn Alley", "name_es": "Acorn Alley", "name_fr": "Acorn Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40836977958679, 37.790892056609856 ], [ -122.40892231464386, 37.79081998941997 ], [ -122.40894377231598, 37.79081998941997 ] ] }, "properties": { "class": "service", "len": 64.51350943910694, "name": "Fella Pl", "name_de": "Fella Pl", "name_en": "Fella Pl", "name_es": "Fella Pl", "name_fr": "Fella Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43186593055725, 37.80424446974821 ], [ -122.43352890014648, 37.804032545533346 ], [ -122.43517041206358, 37.803824859212796 ], [ -122.43680655956267, 37.80361717230819 ], [ -122.43697822093964, 37.80359174121851 ] ] }, "properties": { "class": "street", "len": 576.3959557001698, "name": "N Pt St", "name_de": "N Pt St", "name_en": "N Pt St", "name_es": "N Pt St", "name_fr": "N Pt St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41470515727997, 37.79036638843492 ], [ -122.41464614868164, 37.79003572427978 ] ] }, "properties": { "class": "street_limited", "len": 46.989364753467534, "name": "Touchard St", "name_de": "Touchard St", "name_en": "Touchard St", "name_es": "Touchard St", "name_fr": "Touchard St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40972697734833, 37.79749226531914 ], [ -122.40989863872528, 37.79844176513279 ] ] }, "properties": { "class": "service", "len": 135.41378659574053, "name": "Turk Murphy Ln", "name_de": "Turk Murphy Ln", "name_en": "Turk Murphy Ln", "name_es": "Turk Murphy Ln", "name_fr": "Turk Murphy Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41187274456024, 37.79700055526198 ], [ -122.41185665130615, 37.79700055526198 ], [ -122.41121828556061, 37.79709381086916 ], [ -122.41106808185577, 37.797140438628595 ], [ -122.41048336029051, 37.79726336621694 ], [ -122.41038680076598, 37.797271843974116 ], [ -122.41034924983978, 37.797271843974116 ], [ -122.41030097007751, 37.797259127338 ], [ -122.41022050380707, 37.79721249965347 ] ] }, "properties": { "class": "street", "len": 191.26148044141763, "name": "Broadway", "name_de": "Broadway", "name_en": "Broadway", "name_es": "Broadway", "name_fr": "Broadway", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40747928619385, 37.802269312488406 ], [ -122.40792453289032, 37.802218449372056 ] ] }, "properties": { "class": "service", "len": 49.94173004607788, "name": "Gerke Alley", "name_de": "Gerke Alley", "name_en": "Gerke Alley", "name_es": "Gerke Alley", "name_fr": "Gerke Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40560173988342, 37.79868761577395 ], [ -122.40566074848175, 37.79868337697672 ], [ -122.40639567375183, 37.79859012337622 ], [ -122.40716814994812, 37.79849263084982 ] ] }, "properties": { "class": "service", "len": 176.83964091802235, "name": "Fresno St", "name_de": "Fresno St", "name_en": "Fresno St", "name_es": "Fresno St", "name_fr": "Fresno St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41190493106842, 37.79263436551425 ], [ -122.41211950778961, 37.79352881957535 ] ] }, "properties": { "class": "street", "len": 127.98478815879075, "name": "Sproule Ln", "name_de": "Sproule Ln", "name_en": "Sproule Ln", "name_es": "Sproule Ln", "name_fr": "Sproule Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40919589996338, 37.79389761975574 ], [ -122.40928173065186, 37.79433848192347 ] ] }, "properties": { "class": "street", "len": 62.784717886173986, "name": "Parkhurst Alley", "name_de": "Parkhurst Alley", "name_en": "Parkhurst Alley", "name_es": "Parkhurst Alley", "name_fr": "Parkhurst Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4105155467987, 37.80505401465057 ], [ -122.41059601306915, 37.80546090297828 ] ] }, "properties": { "class": "service", "len": 58.573718508969975, "name": "Worden St", "name_de": "Worden St", "name_en": "Worden St", "name_es": "Worden St", "name_fr": "Worden St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41583168506622, 37.80908889145281 ], [ -122.41591215133667, 37.80912279704645 ], [ -122.41600334644318, 37.80913974983744 ], [ -122.41657197475432, 37.809160940820696 ], [ -122.4173605442047, 37.80919060818706 ] ] }, "properties": { "class": "street", "len": 171.84078522081418, "name": "Fishermans Wharf", "name_de": "Fishermans Wharf", "name_en": "Fishermans Wharf", "name_es": "Fishermans Wharf", "name_fr": "Fishermans Wharf", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40622937679291, 37.796084948503236 ], [ -122.406068444252, 37.79520324238054 ] ] }, "properties": { "class": "street", "len": 125.21460378065915, "name": "Wentworth Pl", "name_de": "Wentworth Pl", "name_en": "Wentworth Pl", "name_es": "Wentworth Pl", "name_fr": "Wentworth Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40757048130035, 37.79591539045074 ], [ -122.40765631198883, 37.796347762715534 ] ] }, "properties": { "class": "path", "len": 61.46761423790475, "name": "Duncombe Alley", "name_de": "Duncombe Alley", "name_en": "Duncombe Alley", "name_es": "Duncombe Alley", "name_fr": "Duncombe Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42927491664886, 37.79134141514943 ], [ -122.43091642856598, 37.79113369314532 ] ] }, "properties": { "class": "street", "len": 185.36281638960787, "name": "Clay St", "name_de": "Clay St", "name_en": "Clay St", "name_es": "Clay St", "name_fr": "Clay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4073076248169, 37.79413924646194 ], [ -122.40736126899719, 37.79442750184963 ], [ -122.40739345550537, 37.79449108744552 ], [ -122.407506108284, 37.79503368230439 ] ] }, "properties": { "class": "service", "len": 127.89649212945443, "name": "Spofford St", "name_de": "Spofford St", "name_en": "Spofford St", "name_es": "Spofford St", "name_fr": "Spofford St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40990400314331, 37.795618662922415 ], [ -122.40956604480742, 37.79566105264231 ], [ -122.40936756134032, 37.795686486462564 ], [ -122.40908324718474, 37.7957246371765 ], [ -122.40876674652098, 37.79576278787075 ], [ -122.40871846675871, 37.795771265800134 ], [ -122.40825712680815, 37.795826372317386 ], [ -122.40780651569365, 37.79588571775155 ], [ -122.40757048130034, 37.79591539045074 ], [ -122.4074417352676, 37.79593234627351 ], [ -122.407329082489, 37.79594506313804 ], [ -122.40709304809569, 37.79597473581341 ], [ -122.40665316581725, 37.79602984217888 ], [ -122.40635275840758, 37.79606799271553 ], [ -122.4062293767929, 37.796084948503264 ], [ -122.40586459636687, 37.79613157689948 ], [ -122.4051511287689, 37.79622059466508 ], [ -122.4044269323349, 37.796313851256826 ], [ -122.40418016910553, 37.79634352378408 ] ] }, "properties": { "class": "street", "len": 1171.500377114965, "name": "Jackson St", "name_de": "Jackson St", "name_en": "Jackson St", "name_es": "Jackson St", "name_fr": "Jackson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4058485031128, 37.79522867635839 ], [ -122.40566611289978, 37.794346960016284 ] ] }, "properties": { "class": "street", "len": 126.09736079766184, "name": "Walter U Lum Pl", "name_de": "Walter U Lum Pl", "name_en": "Walter U Lum Pl", "name_es": "Walter U Lum Pl", "name_fr": "Walter U Lum Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4063366651535, 37.79048084875924 ], [ -122.40642786026001, 37.79093444904167 ] ] }, "properties": { "class": "service", "len": 64.35427103232769, "name": "Chatham Pl", "name_de": "Chatham Pl", "name_en": "Chatham Pl", "name_es": "Chatham Pl", "name_fr": "Chatham Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4110895395279, 37.7931769740092 ], [ -122.4116849899292, 37.793100669930396 ] ] }, "properties": { "class": "service", "len": 67.0897317041935, "name": "Ewer Pl", "name_de": "Ewer Pl", "name_en": "Ewer Pl", "name_es": "Ewer Pl", "name_fr": "Ewer Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41544544696808, 37.79176533579482 ], [ -122.41552591323853, 37.7921807756676 ] ] }, "properties": { "class": "path", "len": 59.174028931375034, "name": "Golden Ct", "name_de": "Golden Ct", "name_en": "Golden Ct", "name_es": "Golden Ct", "name_fr": "Golden Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4080103635788, 37.800590811155416 ], [ -122.40811228752136, 37.80102739471796 ] ] }, "properties": { "class": "service", "len": 62.390207565970236, "name": "Cadell Pl", "name_de": "Cadell Pl", "name_en": "Cadell Pl", "name_es": "Cadell Pl", "name_fr": "Cadell Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43269205093384, 37.799836320857466 ], [ -122.43432819843292, 37.79963286148024 ], [ -122.43595898151398, 37.79942092403308 ], [ -122.43712306022644, 37.799272567458246 ], [ -122.4371337890625, 37.799272567458246 ] ] }, "properties": { "class": "street", "len": 554.2827921622029, "name": "Moulton St", "name_de": "Moulton St", "name_en": "Moulton St", "name_es": "Moulton St", "name_fr": "Moulton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41555273532867, 37.79338469026892 ], [ -122.41562247276306, 37.79369414402182 ] ] }, "properties": { "class": "path", "len": 43.92977350286755, "name": "Reed St", "name_de": "Reed St", "name_en": "Reed St", "name_es": "Reed St", "name_fr": "Reed St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40743637084961, 37.789891588159335 ], [ -122.40752756595612, 37.79033671350708 ] ] }, "properties": { "class": "service", "len": 63.34362872380736, "name": "Burritt St", "name_de": "Burritt St", "name_en": "Burritt St", "name_es": "Burritt St", "name_fr": "Burritt St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42660880088806, 37.8081140989773 ], [ -122.42651760578156, 37.807698748708574 ], [ -122.42646932601929, 37.807541932183284 ], [ -122.42640495300293, 37.807397830217774 ], [ -122.42632448673248, 37.807262204581576 ], [ -122.426238656044, 37.8071435319456 ], [ -122.42612600326538, 37.80701638248111 ], [ -122.4259489774704, 37.806851087850006 ], [ -122.42587387561798, 37.80678751289335 ], [ -122.4257344007492, 37.806617979408074 ], [ -122.42565929889678, 37.80650354408551 ] ] }, "properties": { "class": "street", "len": 255.3557123662623, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42446303367615, 37.80132833916636 ], [ -122.4244898557663, 37.80144278250799 ], [ -122.42465615272522, 37.80220997218259 ], [ -122.42467224597931, 37.802290505443175 ], [ -122.42468833923338, 37.802379515786924 ], [ -122.42484390735625, 37.803218750897145 ] ] }, "properties": { "class": "main", "len": 269.51529451836717, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4112719297409, 37.794062943376915 ], [ -122.41135239601135, 37.794058704314324 ], [ -122.41186201572418, 37.79399087927983 ] ] }, "properties": { "class": "street", "len": 66.67698532956014, "name": "Truett St", "name_de": "Truett St", "name_en": "Truett St", "name_es": "Truett St", "name_fr": "Truett St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40842878818512, 37.80483785431468 ], [ -122.40944802761078, 37.80471070088035 ], [ -122.41004884243011, 37.80463864717042 ] ] }, "properties": { "class": "service", "len": 182.20355575256644, "name": "Pfeiffer St", "name_de": "Pfeiffer St", "name_en": "Pfeiffer St", "name_es": "Pfeiffer St", "name_fr": "Pfeiffer St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41583168506622, 37.80908889145281 ], [ -122.41586923599243, 37.808783740409325 ], [ -122.41587460041045, 37.808652355543906 ], [ -122.41586923599243, 37.80854639983701 ], [ -122.4158102273941, 37.808215817054354 ], [ -122.41561710834505, 37.80728339610364 ] ] }, "properties": { "class": "street", "len": 256.763574292215, "name": "Taylor St", "name_de": "Taylor St", "name_en": "Taylor St", "name_es": "Taylor St", "name_fr": "Taylor St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4081552028656, 37.80154874840699 ], [ -122.40825176239014, 37.80198532630738 ] ] }, "properties": { "class": "service", "len": 62.563965666960364, "name": "Medau Pl", "name_de": "Medau Pl", "name_en": "Medau Pl", "name_es": "Medau Pl", "name_fr": "Medau Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4070018529892, 37.80169710041017 ], [ -122.40696430206299, 37.80149788479444 ], [ -122.40681409835815, 37.80073916508263 ], [ -122.40662634372711, 37.79980241100018 ] ] }, "properties": { "class": "service", "len": 270.15151694698125, "name": "Varennes St", "name_de": "Varennes St", "name_en": "Varennes St", "name_es": "Varennes St", "name_fr": "Varennes St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41160452365875, 37.80204466679365 ], [ -122.41145968437195, 37.801336816456995 ], [ -122.41146504878998, 37.801294429994016 ], [ -122.41149723529816, 37.80124780485665 ] ] }, "properties": { "class": "service", "len": 114.32624227346044, "name": "Via Buffano", "name_de": "Via Buffano", "name_en": "Via Buffano", "name_es": "Via Buffano", "name_fr": "Via Buffano", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40497410297394, 37.798437526321464 ], [ -122.40547835826874, 37.79836970530704 ], [ -122.40553200244905, 37.79836546649156 ] ] }, "properties": { "class": "service", "len": 62.619009463483394, "name": "Dunnes Alley", "name_de": "Dunnes Alley", "name_en": "Dunnes Alley", "name_es": "Dunnes Alley", "name_fr": "Dunnes Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41254329681396, 37.79619516102869 ], [ -122.41257011890411, 37.796233311479945 ], [ -122.41269886493683, 37.79691577733512 ] ] }, "properties": { "class": "service", "len": 103.2925731314861, "name": "Salmon St", "name_de": "Salmon St", "name_en": "Salmon St", "name_es": "Salmon St", "name_fr": "Salmon St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.80014574758602 ], [ -122.404265999794, 37.80013727015868 ], [ -122.4044805765152, 37.80010336043956 ], [ -122.40500092506409, 37.800031302234714 ], [ -122.40506529808044, 37.80002282479424 ], [ -122.40520477294922, 37.80000163118878 ], [ -122.4053817987442, 37.7999761988542 ], [ -122.40547835826874, 37.799963482683594 ], [ -122.4057787656784, 37.79992109543255 ], [ -122.4058485031128, 37.79991261797941 ], [ -122.40591287612915, 37.79990414052532 ], [ -122.40623474121094, 37.79985751451035 ], [ -122.40662634372711, 37.79980241100015 ], [ -122.407329082489, 37.79970068133491 ], [ -122.40741491317749, 37.79969220385647 ], [ -122.4074739217758, 37.7996837263771 ], [ -122.40770995616911, 37.79964981644974 ], [ -122.40791380405425, 37.79962014525055 ], [ -122.40818738937377, 37.799581996548376 ], [ -122.40882039070128, 37.79949298283332 ], [ -122.40886867046355, 37.799484505331066 ], [ -122.40896522998808, 37.79947178907583 ] ] }, "properties": { "class": "street", "len": 586.1387798872114, "name": "Green St", "name_de": "Green St", "name_en": "Green St", "name_es": "Green St", "name_fr": "Green St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41900742053986, 37.798916510462924 ], [ -122.4188894033432, 37.798929226813755 ], [ -122.41848707199097, 37.798963137071866 ] ] }, "properties": { "class": "street", "len": 58.34103522688975, "name": "Warner Pl", "name_de": "Warner Pl", "name_en": "Warner Pl", "name_es": "Warner Pl", "name_fr": "Warner Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40685164928436, 37.7988317347349 ], [ -122.40693747997285, 37.799276806221656 ], [ -122.40697503089905, 37.79947178907586 ] ] }, "properties": { "class": "service", "len": 91.2595127301476, "name": "Margrave Pl", "name_de": "Margrave Pl", "name_en": "Margrave Pl", "name_es": "Margrave Pl", "name_fr": "Margrave Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40818738937378, 37.799581996548405 ], [ -122.40837514400482, 37.80054842426436 ], [ -122.40840196609497, 37.800641675392626 ], [ -122.40857362747192, 37.801493646158505 ] ] }, "properties": { "class": "service", "len": 272.7948162895242, "name": "Jasper Pl", "name_de": "Jasper Pl", "name_en": "Jasper Pl", "name_es": "Jasper Pl", "name_fr": "Jasper Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42682337760925, 37.80419784647312 ], [ -122.4269038438797, 37.80426990061314 ], [ -122.42696821689606, 37.804341954682855 ], [ -122.4272632598877, 37.804876000302286 ], [ -122.42730617523195, 37.804952292218374 ], [ -122.4273544549942, 37.80500739188654 ], [ -122.42741882801056, 37.80505401465057 ], [ -122.427499294281, 37.805096398955996 ], [ -122.42759048938751, 37.805134544810045 ], [ -122.42767095565796, 37.80515149851663 ], [ -122.42778897285461, 37.80515573694268 ], [ -122.42791771888733, 37.80513878323706 ], [ -122.42803037166595, 37.805104875814145 ], [ -122.42821276187897, 37.804998915017194 ], [ -122.42823421955109, 37.80515573694268 ], [ -122.42825031280516, 37.805244743833335 ] ] }, "properties": { "class": "street", "len": 271.8842422810107, "name": "Macarthur Ave", "name_de": "Macarthur Ave", "name_en": "Macarthur Ave", "name_es": "Macarthur Ave", "name_fr": "Macarthur Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42825031280518, 37.805244743833335 ], [ -122.4272632598877, 37.80537189634818 ], [ -122.42719352245332, 37.805388850000256 ], [ -122.42712914943696, 37.80543123411352 ] ] }, "properties": { "class": "street", "len": 128.79204821896596, "name": "Macarthur Ave", "name_de": "Macarthur Ave", "name_en": "Macarthur Ave", "name_es": "Macarthur Ave", "name_fr": "Macarthur Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40894913673401, 37.801447021146885 ], [ -122.40904033184052, 37.801892076875475 ] ] }, "properties": { "class": "service", "len": 63.908950859835066, "name": "Krausgrill Pl", "name_de": "Krausgrill Pl", "name_en": "Krausgrill Pl", "name_es": "Krausgrill Pl", "name_fr": "Krausgrill Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40935146808624, 37.80424446974821 ], [ -122.40944802761078, 37.80471070088038 ] ] }, "properties": { "class": "path", "len": 66.69583495236432, "name": "Bellair Pl", "name_de": "Bellair Pl", "name_en": "Bellair Pl", "name_es": "Bellair Pl", "name_fr": "Bellair Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41357862949371, 37.80038735385647 ], [ -122.41422235965729, 37.80030257981648 ] ] }, "properties": { "class": "street", "len": 72.47540410352268, "name": "Aladdin Ter", "name_de": "Aladdin Ter", "name_en": "Aladdin Ter", "name_es": "Aladdin Ter", "name_fr": "Aladdin Ter", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40665853023529, 37.80393929868616 ], [ -122.40717887878418, 37.80386724422359 ] ] }, "properties": { "class": "service", "len": 58.93459425506088, "name": "La Ferrera Ter", "name_de": "La Ferrera Ter", "name_en": "La Ferrera Ter", "name_es": "La Ferrera Ter", "name_fr": "La Ferrera Ter", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41346061229706, 37.79652579761845 ], [ -122.41510748863222, 37.796326568055655 ], [ -122.41674900054932, 37.79611886006703 ] ] }, "properties": { "class": "street", "len": 369.994656668576, "name": "Bernard St", "name_de": "Bernard St", "name_en": "Bernard St", "name_es": "Bernard St", "name_fr": "Bernard St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4282556772232, 37.803918106204456 ], [ -122.42833077907562, 37.8038969137167 ], [ -122.42840588092804, 37.803884198221105 ], [ -122.42882966995239, 37.80388843671987 ], [ -122.42887258529663, 37.80390115221473 ], [ -122.42889940738678, 37.803930821694195 ], [ -122.42893695831297, 37.804049499492926 ], [ -122.42893159389496, 37.804087645887726 ], [ -122.42891013622284, 37.80412155377767 ], [ -122.42888331413269, 37.80414274620098 ], [ -122.42884576320648, 37.80415546165205 ], [ -122.42865800857544, 37.80418936951085 ], [ -122.42853999137878, 37.80422327735411 ], [ -122.42843806743622, 37.80427837756618 ], [ -122.42835760116579, 37.804358908571395 ], [ -122.42833614349365, 37.804439439488824 ], [ -122.42829859256746, 37.80481242364534 ], [ -122.42827177047731, 37.80489295406824 ], [ -122.42823958396913, 37.80496076909309 ], [ -122.42821276187898, 37.804998915017194 ] ] }, "properties": { "class": "street", "len": 267.7599159825363, "name": "Fort Mason 10", "name_de": "Fort Mason 10", "name_en": "Fort Mason 10", "name_es": "Fort Mason 10", "name_fr": "Fort Mason 10", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4272632598877, 37.804045261003395 ], [ -122.42763876914978, 37.80474460848425 ], [ -122.42768704891205, 37.80479546986092 ], [ -122.4277514219284, 37.8048081851996 ], [ -122.42781579494476, 37.80479970830737 ], [ -122.42786943912508, 37.80476580072879 ], [ -122.42789626121521, 37.80470646242878 ], [ -122.42794990539551, 37.804235992791284 ], [ -122.4279659986496, 37.80415546165205 ], [ -122.4280035495758, 37.804083407400384 ], [ -122.42806792259216, 37.80401559156988 ], [ -122.42814302444458, 37.80396472965615 ], [ -122.4282556772232, 37.803918106204456 ] ] }, "properties": { "class": "street", "len": 273.1256858061551, "name": "Fort Mason 11", "name_de": "Fort Mason 11", "name_en": "Fort Mason 11", "name_es": "Fort Mason 11", "name_fr": "Fort Mason 11", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40804255008698, 37.802871190038694 ], [ -122.40892767906189, 37.80276098747375 ] ] }, "properties": { "class": "service", "len": 99.28843084653585, "name": "Edith St", "name_de": "Edith St", "name_en": "Edith St", "name_es": "Edith St", "name_fr": "Edith St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4282556772232, 37.803918106204456 ], [ -122.42797672748566, 37.80397744513788 ], [ -122.4277514219284, 37.8040155915699 ], [ -122.42751002311707, 37.80404102251361 ], [ -122.4272632598877, 37.804045261003395 ] ] }, "properties": { "class": "street", "len": 112.73141446670768, "name": "Fort Mason 12", "name_de": "Fort Mason 12", "name_en": "Fort Mason 12", "name_es": "Fort Mason 12", "name_fr": "Fort Mason 12", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4048775434494, 37.80051027604161 ], [ -122.40435719490051, 37.800578095090685 ] ] }, "properties": { "class": "service", "len": 58.71020694937184, "name": "Montague Pl", "name_de": "Montague Pl", "name_en": "Montague Pl", "name_es": "Montague Pl", "name_fr": "Montague Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4272632598877, 37.804045261003395 ], [ -122.42712378501892, 37.80405797647123 ], [ -122.42707014083862, 37.80406645344859 ], [ -122.42702186107635, 37.804087645887726 ], [ -122.42698431015016, 37.80411307680662 ], [ -122.42695212364197, 37.80415546165205 ], [ -122.42693066596985, 37.80420632343443 ], [ -122.42690384387971, 37.80426990061314 ] ] }, "properties": { "class": "street", "len": 57.225867374503736, "name": "Fort Mason 13", "name_de": "Fort Mason 13", "name_en": "Fort Mason 13", "name_es": "Fort Mason 13", "name_fr": "Fort Mason 13", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40902423858643, 37.79300317015945 ], [ -122.40911543369293, 37.79345251585992 ] ] }, "properties": { "class": "service", "len": 63.94319744855801, "name": "Miller Pl", "name_de": "Miller Pl", "name_en": "Miller Pl", "name_es": "Miller Pl", "name_fr": "Miller Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41281688213348, 37.79616124949991 ], [ -122.41297245025635, 37.79691577733512 ], [ -122.41301000118254, 37.79711500530891 ] ] }, "properties": { "class": "service", "len": 136.1630268523898, "name": "Himmelmann Pl", "name_de": "Himmelmann Pl", "name_en": "Himmelmann Pl", "name_es": "Himmelmann Pl", "name_fr": "Himmelmann Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41671681404114, 37.7959238683626 ], [ -122.41722106933595, 37.79586028399988 ], [ -122.41834223270416, 37.79571192027404 ], [ -122.41835832595825, 37.79571192027404 ] ] }, "properties": { "class": "service", "len": 185.2098426925577, "name": "Lynch St", "name_de": "Lynch St", "name_en": "Lynch St", "name_es": "Lynch St", "name_fr": "Lynch St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40773141384125, 37.80399439911008 ], [ -122.40793526172638, 37.80396472965615 ], [ -122.4082624912262, 37.80392234470129 ] ] }, "properties": { "class": "service", "len": 59.7132859074724, "name": "Whiting St", "name_de": "Whiting St", "name_en": "Whiting St", "name_es": "Whiting St", "name_fr": "Whiting St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.418133020401, 37.798840212312086 ], [ -122.41822957992555, 37.79930223879704 ] ] }, "properties": { "class": "street", "len": 65.98989165025142, "name": "Sharp Pl", "name_de": "Sharp Pl", "name_en": "Sharp Pl", "name_es": "Sharp Pl", "name_fr": "Sharp Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40956604480743, 37.79566105264231 ], [ -122.40965187549591, 37.796089187449574 ] ] }, "properties": { "class": "service", "len": 61.076484836602674, "name": "Adele Ct", "name_de": "Adele Ct", "name_en": "Adele Ct", "name_es": "Adele Ct", "name_fr": "Adele Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41245746612549, 37.80182425903287 ], [ -122.41245746612549, 37.80170133903446 ], [ -122.41232335567474, 37.801010440064665 ] ] }, "properties": { "class": "service", "len": 115.60519316779043, "name": "Scotland St", "name_de": "Scotland St", "name_en": "Scotland St", "name_es": "Scotland St", "name_fr": "Scotland St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40635275840759, 37.7960679927155 ], [ -122.40652978420258, 37.79694968851756 ] ] }, "properties": { "class": "street", "len": 125.40847180388414, "name": "Beckett St", "name_de": "Beckett St", "name_en": "Beckett St", "name_es": "Beckett St", "name_fr": "Beckett St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4148553609848, 37.80116727045915 ], [ -122.41495192050935, 37.80163775964465 ] ] }, "properties": { "class": "street", "len": 66.9410016357164, "name": "Roach St", "name_de": "Roach St", "name_en": "Roach St", "name_es": "Roach St", "name_fr": "Roach St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4053817987442, 37.7999761988542 ], [ -122.40544617176056, 37.80032801203869 ] ] }, "properties": { "class": "street", "len": 49.61592990094674, "name": "Windsor Pl", "name_de": "Windsor Pl", "name_en": "Windsor Pl", "name_es": "Windsor Pl", "name_fr": "Windsor Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40701794624329, 37.795088789371825 ], [ -122.40682482719423, 37.79419859325133 ], [ -122.40664243698122, 37.79331262551028 ] ] }, "properties": { "class": "street", "len": 254.02764917872267, "name": "Waverly Pl", "name_de": "Waverly Pl", "name_en": "Waverly Pl", "name_es": "Waverly Pl", "name_fr": "Waverly Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4107837677002, 37.794122290227605 ], [ -122.4112719297409, 37.794062943376915 ] ] }, "properties": { "class": "street", "len": 55.13593564924396, "name": "Shephard Pl", "name_de": "Shephard Pl", "name_en": "Shephard Pl", "name_es": "Shephard Pl", "name_fr": "Shephard Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41750538349152, 37.8042020849539 ], [ -122.41760730743408, 37.80476580072879 ], [ -122.41787552833557, 37.80473189313464 ] ] }, "properties": { "class": "street", "len": 110.53686677023703, "name": "Bret Harte Ter", "name_de": "Bret Harte Ter", "name_en": "Bret Harte Ter", "name_es": "Bret Harte Ter", "name_fr": "Bret Harte Ter", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41694211959839, 37.79707261642332 ], [ -122.41699039936066, 37.797051421971396 ], [ -122.41747856140137, 37.79699207747368 ] ] }, "properties": { "class": "service", "len": 60.969960555721045, "name": "Waldo Alley", "name_de": "Waldo Alley", "name_en": "Waldo Alley", "name_es": "Waldo Alley", "name_fr": "Waldo Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41908252239227, 37.80112064524151 ], [ -122.41913616657257, 37.80140887338821 ], [ -122.4191629886627, 37.80154027114065 ] ] }, "properties": { "class": "street", "len": 59.873315952500604, "name": "Southard Pl", "name_de": "Southard Pl", "name_en": "Southard Pl", "name_es": "Southard Pl", "name_fr": "Southard Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40729689598083, 37.79277001801159 ], [ -122.40738809108734, 37.79321936513004 ] ] }, "properties": { "class": "service", "len": 64.1050590824393, "name": "Brooklyn Pl", "name_de": "Brooklyn Pl", "name_en": "Brooklyn Pl", "name_es": "Brooklyn Pl", "name_fr": "Brooklyn Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40623474121094, 37.79985751451035 ], [ -122.40642786026001, 37.80079002921765 ] ] }, "properties": { "class": "service", "len": 132.946347824966, "name": "Sonoma St", "name_de": "Sonoma St", "name_en": "Sonoma St", "name_es": "Sonoma St", "name_fr": "Sonoma St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4320912361145, 37.7932278433513 ], [ -122.43299782276154, 37.79312186551574 ] ] }, "properties": { "class": "street", "len": 102.28569059297114, "name": "Bromley Pl", "name_de": "Bromley Pl", "name_en": "Bromley Pl", "name_es": "Bromley Pl", "name_fr": "Bromley Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41912007331848, 37.795360085104505 ], [ -122.41926491260529, 37.796072231662805 ] ] }, "properties": { "class": "street", "len": 101.54381320398669, "name": "Morrell St", "name_de": "Morrell St", "name_en": "Morrell St", "name_es": "Morrell St", "name_fr": "Morrell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41090714931488, 37.79639862987445 ], [ -122.4110358953476, 37.79703870529732 ] ] }, "properties": { "class": "service", "len": 91.17872833027445, "name": "Wayne Pl", "name_de": "Wayne Pl", "name_en": "Wayne Pl", "name_es": "Wayne Pl", "name_fr": "Wayne Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41070866584778, 37.79344403766446 ], [ -122.41113245487213, 37.79338469026892 ] ] }, "properties": { "class": "service", "len": 47.86974932083227, "name": "Dawson Pl", "name_de": "Dawson Pl", "name_en": "Dawson Pl", "name_es": "Dawson Pl", "name_fr": "Dawson Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41467833518982, 37.79712348308311 ], [ -122.41482853889467, 37.797831373796456 ] ] }, "properties": { "class": "street", "len": 101.16138838568223, "name": "Florence St", "name_de": "Florence St", "name_en": "Florence St", "name_es": "Florence St", "name_fr": "Florence St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40797817707062, 37.7974032490859 ], [ -122.40856289863586, 37.79733118824711 ] ] }, "properties": { "class": "street", "len": 65.92641958955925, "name": "Stark St", "name_de": "Stark St", "name_en": "Stark St", "name_es": "Stark St", "name_fr": "Stark St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41052627563477, 37.79644949699833 ], [ -122.41059064865114, 37.79676317682161 ] ] }, "properties": { "class": "service", "len": 45.04043183644682, "name": "Keyes Alley", "name_de": "Keyes Alley", "name_en": "Keyes Alley", "name_es": "Keyes Alley", "name_fr": "Keyes Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40887403488159, 37.79665296514357 ], [ -122.40905106067657, 37.79757704258442 ] ] }, "properties": { "class": "service", "len": 131.67094478213505, "name": "Cordelia St", "name_de": "Cordelia St", "name_en": "Cordelia St", "name_es": "Cordelia St", "name_fr": "Cordelia St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41250574588776, 37.80857606745026 ], [ -122.41253256797789, 37.80869049956117 ], [ -122.41253793239592, 37.8087074524514 ], [ -122.41256475448607, 37.80877526397345 ], [ -122.41258621215819, 37.808809169711125 ], [ -122.41262912750243, 37.808830360789244 ], [ -122.41270959377287, 37.80884307543321 ], [ -122.4131280183792, 37.808855790074986 ], [ -122.41430282592772, 37.80888969577567 ], [ -122.41446375846861, 37.80889393398715 ], [ -122.41495192050932, 37.80891088683068 ], [ -122.41509675979613, 37.80892360146078 ], [ -122.41523087024687, 37.80895326892251 ], [ -122.41541326045986, 37.808999889195384 ], [ -122.4157458543777, 37.80904650943884 ], [ -122.41583168506621, 37.80908889145283 ] ] }, "properties": { "class": "street", "len": 400.6582806689901, "name": "Embarcadero North St", "name_de": "Embarcadero North St", "name_en": "Embarcadero North St", "name_es": "Embarcadero North St", "name_fr": "Embarcadero North St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41274178028107, 37.79299469191242 ], [ -122.41438865661621, 37.792786974556215 ] ] }, "properties": { "class": "street", "len": 185.48519644484398, "name": "Pleasant St", "name_de": "Pleasant St", "name_en": "Pleasant St", "name_es": "Pleasant St", "name_fr": "Pleasant St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41860508918762, 37.79269371351246 ], [ -122.41868555545807, 37.79304980050072 ] ] }, "properties": { "class": "service", "len": 50.80455294522635, "name": "Torrens Ct", "name_de": "Torrens Ct", "name_en": "Torrens Ct", "name_es": "Torrens Ct", "name_fr": "Torrens Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4046790599823, 37.79021377439333 ], [ -122.40490436553955, 37.7901883386891 ], [ -122.40541934967041, 37.790120510101644 ], [ -122.40551054477692, 37.790112031523826 ], [ -122.40604698657988, 37.79004420286635 ] ] }, "properties": { "class": "service", "len": 154.3215726572478, "name": "Harlan Pl", "name_de": "Harlan Pl", "name_en": "Harlan Pl", "name_es": "Harlan Pl", "name_fr": "Harlan Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42229580879211, 37.80259144474508 ], [ -122.42238700389862, 37.803053447766 ] ] }, "properties": { "class": "street", "len": 65.90774309573109, "name": "Culebra Ter", "name_de": "Culebra Ter", "name_en": "Culebra Ter", "name_es": "Culebra Ter", "name_fr": "Culebra Ter", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42216169834137, 37.80196413326501 ], [ -122.42223143577576, 37.802387992956945 ], [ -122.42239773273468, 37.80248124176272 ], [ -122.42243528366089, 37.80257449045078 ] ] }, "properties": { "class": "street_limited", "len": 95.9749654139774, "name": "Culebra Ter", "name_de": "Culebra Ter", "name_en": "Culebra Ter", "name_es": "Culebra Ter", "name_fr": "Culebra Ter", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41362690925598, 37.80275674891027 ], [ -122.41371810436249, 37.80322298943413 ] ] }, "properties": { "class": "street", "len": 66.45369214742057, "name": "Newell St", "name_de": "Newell St", "name_en": "Newell St", "name_es": "Newell St", "name_fr": "Newell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40499019622803, 37.8038333362169 ], [ -122.40418016910553, 37.8039350601903 ] ] }, "properties": { "class": "street", "len": 308.5263858310345, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4112719297409, 37.7971785885917 ], [ -122.41111636161804, 37.7972040218895 ], [ -122.41084277629852, 37.79726336621694 ], [ -122.41038680076599, 37.79736086036572 ], [ -122.41025805473328, 37.79741596569723 ] ] }, "properties": { "class": "main", "len": 118.01690960727322, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.411288022995, 37.797254888458816 ], [ -122.41180300712585, 37.797187066358596 ], [ -122.41785407066345, 37.79641558558629 ] ] }, "properties": { "class": "main", "len": 740.5066576059138, "name": "Robert C Levy Tunnel", "name_de": "Robert C Levy Tunnel", "name_en": "Robert C Levy Tunnel", "name_es": "Robert C Levy Tunnel", "name_fr": "Robert C Levy Tunnel", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41187274456024, 37.798780869251374 ], [ -122.41194248199463, 37.799141165671685 ] ] }, "properties": { "class": "street", "len": 51.4579022108144, "name": "Eaton Pl", "name_de": "Eaton Pl", "name_en": "Eaton Pl", "name_es": "Eaton Pl", "name_fr": "Eaton Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4362701177597, 37.80081546127204 ], [ -122.43625402450562, 37.800942621412574 ], [ -122.43663489818573, 37.80269317042898 ] ] }, "properties": { "class": "street", "len": 268.32391325299756, "name": "Fillmore St", "name_de": "Fillmore St", "name_en": "Fillmore St", "name_es": "Fillmore St", "name_fr": "Fillmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43555665016174, 37.805689776677475 ], [ -122.4371337890625, 37.80549057183116 ] ] }, "properties": { "class": "street", "len": 202.57158379076972, "name": "Jefferson St", "name_de": "Jefferson St", "name_en": "Jefferson St", "name_es": "Jefferson St", "name_fr": "Jefferson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40782260894775, 37.80348577825057 ], [ -122.40792989730835, 37.803918106204456 ] ] }, "properties": { "class": "service", "len": 62.152613781697326, "name": "Julius St", "name_de": "Julius St", "name_en": "Julius St", "name_es": "Julius St", "name_fr": "Julius St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40486145019531, 37.79763214775467 ], [ -122.40541398525238, 37.797564326000824 ] ] }, "properties": { "class": "service", "len": 62.35144906106222, "name": "Nottingham Pl", "name_de": "Nottingham Pl", "name_en": "Nottingham Pl", "name_es": "Nottingham Pl", "name_fr": "Nottingham Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41745710372925, 37.80800814249806 ], [ -122.4172693490982, 37.807071480609274 ] ] }, "properties": { "class": "street", "len": 133.60301269040772, "name": "Jones St", "name_de": "Jones St", "name_en": "Jones St", "name_es": "Jones St", "name_fr": "Jones St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40821957588196, 37.79141348183073 ], [ -122.40836441516876, 37.79215110146844 ], [ -122.40836441516876, 37.79215957981227 ], [ -122.40836441516876, 37.79217229732622 ], [ -122.40837514400482, 37.792235884863004 ], [ -122.40854680538177, 37.79307099610069 ] ] }, "properties": { "class": "service", "len": 236.40843532348785, "name": "Joice St", "name_de": "Joice St", "name_en": "Joice St", "name_es": "Joice St", "name_fr": "Joice St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40639567375183, 37.79859012337622 ], [ -122.40626156330109, 37.79792886719558 ] ] }, "properties": { "class": "service", "len": 94.8030025896439, "name": "Romolo Pl", "name_de": "Romolo Pl", "name_en": "Romolo Pl", "name_es": "Romolo Pl", "name_fr": "Romolo Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41318702697754, 37.797742357971856 ], [ -122.41366982460022, 37.79767029746383 ] ] }, "properties": { "class": "path", "len": 55.02610289681695, "name": "Fallon Pl", "name_de": "Fallon Pl", "name_en": "Fallon Pl", "name_es": "Fallon Pl", "name_fr": "Fallon Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40675508975983, 37.79076063991673 ], [ -122.40721642971039, 37.790701290365774 ] ] }, "properties": { "class": "service", "len": 51.8639393036333, "name": "Emma St", "name_de": "Emma St", "name_en": "Emma St", "name_es": "Emma St", "name_fr": "Emma St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40525841712952, 37.80093414407668 ], [ -122.4051457643509, 37.800459411713945 ], [ -122.40512967109682, 37.800374637756676 ], [ -122.40506529808046, 37.80002282479424 ] ] }, "properties": { "class": "service", "len": 130.09973736841954, "name": "Castle St", "name_de": "Castle St", "name_en": "Castle St", "name_es": "Castle St", "name_fr": "Castle St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41076231002808, 37.79153217974085 ], [ -122.41120755672455, 37.791477070020576 ] ] }, "properties": { "class": "service", "len": 50.44993756253119, "name": "Nob Hill Pl", "name_de": "Nob Hill Pl", "name_en": "Nob Hill Pl", "name_es": "Nob Hill Pl", "name_fr": "Nob Hill Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4070018529892, 37.79554660034284 ], [ -122.4070930480957, 37.79597473581339 ] ] }, "properties": { "class": "path", "len": 61.51835254609074, "name": "St Louis Alley", "name_de": "St Louis Alley", "name_en": "St Louis Alley", "name_es": "St Louis Alley", "name_fr": "St Louis Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41620719432831, 37.79165935586148 ], [ -122.41629302501678, 37.79208327468276 ], [ -122.41629302501678, 37.79214262312365 ], [ -122.41637349128723, 37.79252838682742 ] ] }, "properties": { "class": "street", "len": 123.97794369943081, "name": "Kimball Pl", "name_de": "Kimball Pl", "name_en": "Kimball Pl", "name_es": "Kimball Pl", "name_fr": "Kimball Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42610991001129, 37.8007434037619 ], [ -122.42656588554382, 37.80055266295457 ] ] }, "properties": { "class": "street", "len": 57.22394079431952, "name": "Blackstone Ct", "name_de": "Blackstone Ct", "name_en": "Blackstone Ct", "name_es": "Blackstone Ct", "name_fr": "Blackstone Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41099834442139, 37.79083694641218 ], [ -122.41109490394592, 37.79129902295112 ] ] }, "properties": { "class": "service", "len": 66.3126873229572, "name": "Vine Ter", "name_de": "Vine Ter", "name_en": "Vine Ter", "name_es": "Vine Ter", "name_fr": "Vine Ter", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41113245487213, 37.79338469026892 ], [ -122.41172790527344, 37.79331262551028 ] ] }, "properties": { "class": "service", "len": 67.01716944092804, "name": "Malvina Pl", "name_de": "Malvina Pl", "name_en": "Malvina Pl", "name_es": "Malvina Pl", "name_fr": "Malvina Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41276323795319, 37.80334166837025 ], [ -122.41285443305969, 37.803807905201644 ] ] }, "properties": { "class": "street", "len": 66.59202354593167, "name": "Venard Alley", "name_de": "Venard Alley", "name_en": "Venard Alley", "name_es": "Venard Alley", "name_fr": "Venard Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40818202495575, 37.792608930643276 ], [ -122.40809619426727, 37.792210449854856 ], [ -122.40809619426727, 37.79219349317789 ] ] }, "properties": { "class": "service", "len": 59.24181348930285, "name": "Pratt Pl", "name_de": "Pratt Pl", "name_en": "Pratt Pl", "name_es": "Pratt Pl", "name_fr": "Pratt Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40714132785797, 37.79028584217449 ], [ -122.40714132785797, 37.79027736361563 ], [ -122.4070394039154, 37.78970081933231 ], [ -122.40699112415315, 37.78942950281888 ] ] }, "properties": { "class": "street", "len": 121.52660704761954, "name": "Stockton St", "name_de": "Stockton St", "name_en": "Stockton St", "name_es": "Stockton St", "name_fr": "Stockton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4176824092865, 37.79235034229134 ], [ -122.41856753826141, 37.79224012403017 ] ] }, "properties": { "class": "service", "len": 99.50439688777577, "name": "Troy Alley", "name_de": "Troy Alley", "name_en": "Troy Alley", "name_es": "Troy Alley", "name_fr": "Troy Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41667926311493, 37.80044669562654 ], [ -122.41675436496735, 37.80085784800986 ] ] }, "properties": { "class": "street_limited", "len": 58.39296190498385, "name": "Attridge Alley", "name_de": "Attridge Alley", "name_en": "Attridge Alley", "name_es": "Attridge Alley", "name_fr": "Attridge Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41753220558167, 37.79464369265235 ], [ -122.41761803627014, 37.795093028375305 ] ] }, "properties": { "class": "service", "len": 64.06486478531147, "name": "Wall Pl", "name_de": "Wall Pl", "name_en": "Wall Pl", "name_es": "Wall Pl", "name_fr": "Wall Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.79494890212038 ], [ -122.40488290786742, 37.794859882822436 ] ] }, "properties": { "class": "street", "len": 186.69397124710753, "name": "Merchant St", "name_de": "Merchant St", "name_en": "Merchant St", "name_es": "Merchant St", "name_fr": "Merchant St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.805850835522065 ], [ -122.40454494953156, 37.8061136149881 ], [ -122.40576267242432, 37.80676208289539 ] ] }, "properties": { "class": "main", "len": 529.7255041394043, "name": "The Embarcadero", "name_de": "The Embarcadero", "name_en": "The Embarcadero", "name_es": "The Embarcadero", "name_fr": "The Embarcadero", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4195009469986, 37.79722945517852 ], [ -122.41962432861328, 37.79786104571417 ] ] }, "properties": { "class": "street", "len": 89.86199697281107, "name": "White St", "name_de": "White St", "name_en": "White St", "name_es": "White St", "name_fr": "White St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42494583129883, 37.801209656995105 ], [ -122.42472052574158, 37.801218134299376 ], [ -122.42464542388916, 37.801196941036885 ], [ -122.42459177970886, 37.801141838525915 ] ] }, "properties": { "class": "street", "len": 43.47530177388478, "name": "US 101", "name_de": "US 101", "name_en": "US 101", "name_es": "US 101", "name_fr": "US 101", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40595579147339, 37.8046640778996 ], [ -122.4062615633011, 37.8046979855249 ], [ -122.40639030933382, 37.8047191777828 ], [ -122.40649759769441, 37.804748846933656 ], [ -122.40653514862062, 37.80475732383171 ], [ -122.40666389465333, 37.8048039467536 ], [ -122.4067658185959, 37.80485904653247 ], [ -122.40680873394014, 37.804905669390145 ], [ -122.4068570137024, 37.80497348440335 ], [ -122.40695893764497, 37.80549057183118 ], [ -122.40715742111207, 37.80643573047735 ], [ -122.40730226039888, 37.80721982151919 ], [ -122.40738272666931, 37.80734273233311 ] ] }, "properties": { "class": "street", "len": 454.891979511398, "name": "Kearny St", "name_de": "Kearny St", "name_en": "Kearny St", "name_es": "Kearny St", "name_fr": "Kearny St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41692066192627, 37.795220198366735 ], [ -122.41700112819672, 37.79563561881328 ] ] }, "properties": { "class": "service", "len": 59.0410069355471, "name": "Burgoyne St", "name_de": "Burgoyne St", "name_en": "Burgoyne St", "name_es": "Burgoyne St", "name_fr": "Burgoyne St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.79613157689948 ], [ -122.4044269323349, 37.796313851256826 ], [ -122.40450739860533, 37.796373196299385 ], [ -122.40529596805571, 37.79690306063769 ] ] }, "properties": { "class": "main", "len": 293.0610772737953, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41145968437195, 37.79920898597781 ], [ -122.41166353225708, 37.80014574758602 ] ] }, "properties": { "class": "service", "len": 134.41269954879778, "name": "August Alley", "name_de": "August Alley", "name_en": "August Alley", "name_es": "August Alley", "name_fr": "August Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40732908248901, 37.795945063138014 ], [ -122.40742027759552, 37.796377435229154 ] ] }, "properties": { "class": "path", "len": 61.86181455485705, "name": "Jason Ct", "name_de": "Jason Ct", "name_en": "Jason Ct", "name_es": "Jason Ct", "name_fr": "Jason Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40985572338104, 37.80371041956209 ], [ -122.41029024124146, 37.80365955743819 ] ] }, "properties": { "class": "service", "len": 48.38889128704392, "name": "Fielding St", "name_de": "Fielding St", "name_en": "Fielding St", "name_es": "Fielding St", "name_fr": "Fielding St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40762412548065, 37.79680980478974 ], [ -122.40768849849701, 37.79713619974259 ] ] }, "properties": { "class": "street", "len": 46.16832788890606, "name": "Pelton Pl", "name_de": "Pelton Pl", "name_en": "Pelton Pl", "name_es": "Pelton Pl", "name_fr": "Pelton Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4299830198288, 37.78650430839168 ], [ -122.43017077445984, 37.78744123109506 ], [ -122.43035852909088, 37.78836966314214 ], [ -122.43055164813995, 37.78932775886948 ], [ -122.430739402771, 37.79025616721429 ], [ -122.43091642856598, 37.79113369314532 ], [ -122.43109345436096, 37.79201120865472 ], [ -122.43126511573792, 37.79289295287215 ], [ -122.43138313293457, 37.79344827676231 ], [ -122.43145287036896, 37.793770447487695 ], [ -122.43163526058197, 37.79468608293166 ], [ -122.43182301521301, 37.79564409675727 ], [ -122.43201076984406, 37.79657666465477 ], [ -122.43220388889311, 37.79750922077997 ], [ -122.43239164352416, 37.798441765132765 ], [ -122.43248283863066, 37.798908032894516 ], [ -122.43255794048308, 37.79928528374775 ], [ -122.4325793981552, 37.79937429771308 ], [ -122.43260085582732, 37.79946331157114 ], [ -122.43269205093382, 37.79983632085744 ], [ -122.43275105953215, 37.80014150887248 ], [ -122.43276715278624, 37.800213566969795 ] ] }, "properties": { "class": "street", "len": 1956.0814192906666, "name": "Buchanan St", "name_de": "Buchanan St", "name_en": "Buchanan St", "name_es": "Buchanan St", "name_fr": "Buchanan St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42468297481537, 37.785279083856395 ], [ -122.42453277111052, 37.78527484428987 ], [ -122.42444157600401, 37.785266365156076 ], [ -122.42435038089752, 37.78524940688557 ], [ -122.42424845695496, 37.78521972990284 ], [ -122.42417871952057, 37.78518157376468 ], [ -122.42401242256165, 37.78508830312183 ], [ -122.42386221885681, 37.78497807402849 ], [ -122.42356717586516, 37.78474065696133 ], [ -122.42343306541443, 37.784647385762014 ], [ -122.423357963562, 37.78461346893308 ], [ -122.42327213287352, 37.78457955208857 ], [ -122.42315411567687, 37.78454563522852 ], [ -122.42304146289824, 37.78452867679263 ], [ -122.42293953895567, 37.78453291640197 ], [ -122.42283761501311, 37.78454139561992 ] ] }, "properties": { "class": "main", "len": 240.6820203376815, "name": "Starr King Way", "name_de": "Starr King Way", "name_en": "Starr King Way", "name_es": "Starr King Way", "name_fr": "Starr King Way", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40979135036469, 37.78667388804195 ], [ -122.40943729877472, 37.78671628289371 ], [ -122.40933537483215, 37.78626689622757 ] ] }, "properties": { "class": "service", "len": 104.69671450344367, "name": "Elwood St", "name_de": "Elwood St", "name_en": "Elwood St", "name_es": "Elwood St", "name_fr": "Elwood St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40793526172638, 37.789870391647334 ], [ -122.4080103635788, 37.79027736361563 ] ] }, "properties": { "class": "street", "len": 58.154449528707914, "name": "Chelsea Pl", "name_de": "Chelsea Pl", "name_en": "Chelsea Pl", "name_es": "Chelsea Pl", "name_fr": "Chelsea Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41567611694336, 37.78545714543098 ], [ -122.41574048995972, 37.785787830074185 ], [ -122.4157726764679, 37.78592349514079 ] ] }, "properties": { "class": "street", "len": 66.28318559099694, "name": "Ada Ct", "name_de": "Ada Ct", "name_en": "Ada Ct", "name_es": "Ada Ct", "name_fr": "Ada Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43379175662994, 37.78441844686463 ], [ -122.43390440940857, 37.78505014691581 ] ] }, "properties": { "class": "street", "len": 89.89039214564565, "name": "Avery St", "name_de": "Avery St", "name_en": "Avery St", "name_es": "Avery St", "name_fr": "Avery St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40541934967041, 37.78443964494047 ], [ -122.4047863483429, 37.78493567817956 ] ] }, "properties": { "class": "street", "len": 99.67455843892422, "name": "Jessie St", "name_de": "Jessie St", "name_en": "Jessie St", "name_es": "Jessie St", "name_fr": "Jessie St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40434646606445, 37.78881055829413 ], [ -122.40444302558899, 37.78927688684228 ] ] }, "properties": { "class": "street", "len": 66.6413595301592, "name": "Robert Kirk Ln", "name_de": "Robert Kirk Ln", "name_en": "Robert Kirk Ln", "name_es": "Robert Kirk Ln", "name_fr": "Robert Kirk Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40994155406952, 37.78742851276689 ], [ -122.41003811359407, 37.78741579443648 ], [ -122.4105155467987, 37.787356442199 ] ] }, "properties": { "class": "street", "len": 64.64616384897994, "name": "Derby St", "name_de": "Derby St", "name_en": "Derby St", "name_es": "Derby St", "name_fr": "Derby St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41157233715057, 37.78722077976294 ], [ -122.41098761558533, 37.787297089913864 ] ] }, "properties": { "class": "street", "len": 66.30789168628041, "name": "Derby St", "name_de": "Derby St", "name_en": "Derby St", "name_es": "Derby St", "name_fr": "Derby St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40531206130981, 37.78916242465299 ], [ -122.40688383579254, 37.78897589329795 ] ] }, "properties": { "class": "service", "len": 176.7976000965923, "name": "Campton Pl", "name_de": "Campton Pl", "name_en": "Campton Pl", "name_es": "Campton Pl", "name_fr": "Campton Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4371337890625, 37.78464314615926 ], [ -122.43636667728424, 37.78473641736392 ], [ -122.43472516536713, 37.7849483969368 ] ] }, "properties": { "class": "street", "len": 1272.9898772454203, "name": "Post St", "name_de": "Post St", "name_en": "Post St", "name_es": "Post St", "name_fr": "Post St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40440011024475, 37.790714008130706 ], [ -122.40421235561371, 37.789785605538455 ] ] }, "properties": { "class": "street", "len": 132.73159721801204, "name": "Claude Ln", "name_de": "Claude Ln", "name_en": "Claude Ln", "name_es": "Claude Ln", "name_fr": "Claude Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42782652378082, 37.78418102799973 ], [ -122.42857754230499, 37.78409199572878 ], [ -122.42884039878845, 37.784062318281286 ], [ -122.42954313755035, 37.78399024443063 ], [ -122.43060529232025, 37.78386729475848 ] ] }, "properties": { "class": "street_limited", "len": 311.94538997496045, "name": "Western Shore Ln", "name_de": "Western Shore Ln", "name_en": "Western Shore Ln", "name_es": "Western Shore Ln", "name_fr": "Western Shore Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40474343299866, 37.78568608111079 ], [ -122.4052369594574, 37.7853002816854 ] ] }, "properties": { "class": "street", "len": 77.62201814019302, "name": "Stevenson St", "name_de": "Stevenson St", "name_en": "Stevenson St", "name_es": "Stevenson St", "name_fr": "Stevenson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4128919839859, 37.78744123109508 ], [ -122.41329967975616, 37.787386118323695 ] ] }, "properties": { "class": "service", "len": 46.04519193203097, "name": "Colin Pl", "name_de": "Colin Pl", "name_en": "Colin Pl", "name_es": "Colin Pl", "name_fr": "Colin Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42117464542389, 37.78428701865866 ], [ -122.42274641990662, 37.78408775609415 ] ] }, "properties": { "class": "service", "len": 177.44782134531096, "name": "Olive St", "name_de": "Olive St", "name_en": "Olive St", "name_es": "Olive St", "name_fr": "Olive St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42101907730103, 37.78430397714999 ], [ -122.41946339607237, 37.78450323913154 ], [ -122.4178111553192, 37.78471097977434 ] ] }, "properties": { "class": "service", "len": 362.12530462541554, "name": "Olive St", "name_de": "Olive St", "name_en": "Olive St", "name_es": "Olive St", "name_fr": "Olive St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41287589073181, 37.785329958635764 ], [ -122.41299390792847, 37.7853172399442 ], [ -122.41393804550171, 37.78519853205076 ] ] }, "properties": { "class": "service", "len": 119.63500167919395, "name": "Antonio St", "name_de": "Antonio St", "name_en": "Antonio St", "name_es": "Antonio St", "name_fr": "Antonio St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.405344247818, 37.789315040865986 ], [ -122.40573048591614, 37.78926840816768 ], [ -122.40571439266205, 37.78920481807708 ] ] }, "properties": { "class": "street_limited", "len": 52.307382220634594, "name": "Tillman Pl", "name_de": "Tillman Pl", "name_en": "Tillman Pl", "name_es": "Tillman Pl", "name_fr": "Tillman Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4082088470459, 37.78992550256591 ], [ -122.40874528884888, 37.78985767373719 ] ] }, "properties": { "class": "service", "len": 60.89923809061345, "name": "Anson Pl", "name_de": "Anson Pl", "name_en": "Anson Pl", "name_es": "Anson Pl", "name_fr": "Anson Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41230189800262, 37.785440187204266 ], [ -122.41277396678925, 37.785380833380124 ], [ -122.41288661956787, 37.78536811469731 ] ] }, "properties": { "class": "service", "len": 65.40454476316583, "name": "Steveloe Pl", "name_de": "Steveloe Pl", "name_en": "Steveloe Pl", "name_es": "Steveloe Pl", "name_fr": "Steveloe Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42193639278412, 37.788000835369274 ], [ -122.42350280284882, 37.787805822239655 ], [ -122.42514431476593, 37.78759809029636 ] ] }, "properties": { "class": "service", "len": 361.6678602508423, "name": "Fern St", "name_de": "Fern St", "name_en": "Fern St", "name_es": "Fern St", "name_fr": "Fern St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42177546024323, 37.7880177930084 ], [ -122.42021441459656, 37.788225523771885 ], [ -122.41856217384338, 37.78843325395139 ] ] }, "properties": { "class": "service", "len": 362.80110273447985, "name": "Fern St", "name_de": "Fern St", "name_en": "Fern St", "name_es": "Fern St", "name_fr": "Fern St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42874383926392, 37.784787292516874 ], [ -122.42857754230499, 37.78409199572878 ] ] }, "properties": { "class": "street_limited", "len": 99.77217096920332, "name": "Lottie Bennett Ln", "name_de": "Lottie Bennett Ln", "name_en": "Lottie Bennett Ln", "name_es": "Lottie Bennett Ln", "name_fr": "Lottie Bennett Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4213033914566, 37.785694560196426 ], [ -122.4214643239975, 37.78567760202419 ], [ -122.42171108722687, 37.78564792521341 ], [ -122.42302536964417, 37.785474103653804 ], [ -122.42356717586517, 37.785393552060754 ], [ -122.4238407611847, 37.78536811469731 ], [ -122.4240928888321, 37.785372354258485 ], [ -122.42433428764345, 37.785397791620454 ], [ -122.42452204227449, 37.785406270739166 ], [ -122.42471516132356, 37.78541898941539 ] ] }, "properties": { "class": "main", "len": 384.3998551210367, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43541181087494, 37.783930889442026 ], [ -122.4347198009491, 37.78399448407086 ], [ -122.43453741073608, 37.78401144262929 ] ] }, "properties": { "class": "street", "len": 97.80844382981046, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4314421415329, 37.78461770853756 ], [ -122.43446230888367, 37.784231903535 ] ] }, "properties": { "class": "main", "len": 341.1990518745154, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43190884590149, 37.787699836627255 ], [ -122.4335503578186, 37.787487864946456 ], [ -122.43519723415375, 37.78727589265764 ] ] }, "properties": { "class": "street", "len": 370.9240586785205, "name": "Wilmot St", "name_de": "Wilmot St", "name_en": "Wilmot St", "name_es": "Wilmot St", "name_fr": "Wilmot St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41762340068817, 37.78377826210958 ], [ -122.41791844367982, 37.78374434488178 ] ] }, "properties": { "class": "service", "len": 186.21791320864656, "name": "Willow St", "name_de": "Willow St", "name_en": "Willow St", "name_es": "Willow St", "name_fr": "Willow St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42884039878845, 37.784062318281286 ], [ -122.42900133132935, 37.78475337575214 ] ] }, "properties": { "class": "street_limited", "len": 99.27741183229244, "name": "Bertie Minor Ln", "name_de": "Bertie Minor Ln", "name_en": "Bertie Minor Ln", "name_es": "Bertie Minor Ln", "name_fr": "Bertie Minor Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4046790599823, 37.79021377439333 ], [ -122.4047702550888, 37.79066737631527 ] ] }, "properties": { "class": "service", "len": 64.68496115748317, "name": "Mark Ln", "name_de": "Mark Ln", "name_en": "Mark Ln", "name_es": "Mark Ln", "name_fr": "Mark Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4043357372284, 37.79072248663947 ], [ -122.40452885627745, 37.79165511666101 ] ] }, "properties": { "class": "street", "len": 132.7430770321996, "name": "St George Alley", "name_de": "St George Alley", "name_en": "St George Alley", "name_es": "St George Alley", "name_fr": "St George Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.788361184363445 ], [ -122.40513503551483, 37.788242481359454 ] ] }, "properties": { "class": "street", "len": 174.3184663189849, "name": "Maiden Ln", "name_de": "Maiden Ln", "name_en": "Maiden Ln", "name_es": "Maiden Ln", "name_fr": "Maiden Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42174863815308, 37.787080877614905 ], [ -122.42330968379974, 37.786868904158666 ] ] }, "properties": { "class": "service", "len": 176.37711019437333, "name": "Daniel Burnham Ct", "name_de": "Daniel Burnham Ct", "name_en": "Daniel Burnham Ct", "name_es": "Daniel Burnham Ct", "name_fr": "Daniel Burnham Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43282079696655, 37.7880559476822 ], [ -122.43301391601562, 37.78901404747704 ] ] }, "properties": { "class": "street", "len": 136.36240684315945, "name": "Orben Pl", "name_de": "Orben Pl", "name_en": "Orben Pl", "name_es": "Orben Pl", "name_fr": "Orben Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42471516132355, 37.78541898941539 ], [ -122.42454886436462, 37.785520738746506 ], [ -122.42439866065978, 37.785554655159096 ], [ -122.42424309253691, 37.78562248793755 ], [ -122.4241143465042, 37.78571575790625 ], [ -122.42371737957, 37.78614395034285 ], [ -122.42360472679137, 37.78625841720761 ], [ -122.42356181144713, 37.78636016538299 ] ] }, "properties": { "class": "street", "len": 190.34403875146563, "name": "Peter Yorke Way", "name_de": "Peter Yorke Way", "name_en": "Peter Yorke Way", "name_es": "Peter Yorke Way", "name_fr": "Peter Yorke Way", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41176009178162, 37.78815345398132 ], [ -122.41239309310913, 37.78807290530868 ], [ -122.4127846956253, 37.78802627182651 ], [ -122.41341233253479, 37.78794572301525 ] ] }, "properties": { "class": "service", "len": 186.62898058156162, "name": "Cosmo Pl", "name_de": "Cosmo Pl", "name_en": "Cosmo Pl", "name_es": "Cosmo Pl", "name_fr": "Cosmo Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41215169429779, 37.785910776551354 ], [ -122.41235017776489, 37.78684770677962 ], [ -122.41254329681395, 37.78776766743669 ] ] }, "properties": { "class": "service", "len": 265.24167747082606, "name": "Shannon St", "name_de": "Shannon St", "name_en": "Shannon St", "name_es": "Shannon St", "name_fr": "Shannon St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43636667728424, 37.78473641736392 ], [ -122.43655443191528, 37.785669122936596 ], [ -122.43674218654633, 37.786601816738134 ], [ -122.43692994117737, 37.78753449876839 ], [ -122.43712842464447, 37.78848836594184 ], [ -122.4371337890625, 37.78851380223124 ] ] }, "properties": { "class": "street", "len": 793.0822708243238, "name": "Pierce St", "name_de": "Pierce St", "name_en": "Pierce St", "name_es": "Pierce St", "name_fr": "Pierce St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41424918174744, 37.78374434488178 ], [ -122.41443157196045, 37.78466010456885 ], [ -122.41452276706696, 37.78510526142928 ], [ -122.41461932659149, 37.785592811104614 ], [ -122.41480708122253, 37.7865212663742 ], [ -122.41500020027159, 37.78745818886262 ], [ -122.41518795490263, 37.78839086008464 ], [ -122.4153810739517, 37.78934471620411 ], [ -122.41557419300078, 37.79025616721426 ], [ -122.4156868457794, 37.79081151092244 ], [ -122.41575121879576, 37.791116736221234 ], [ -122.41576731204982, 37.791209999255486 ] ] }, "properties": { "class": "street", "len": 1465.902447961873, "name": "Leavenworth St", "name_de": "Leavenworth St", "name_en": "Leavenworth St", "name_es": "Leavenworth St", "name_fr": "Leavenworth St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43557810783386, 37.78917514268277 ], [ -122.43713378906251, 37.78897589329795 ] ] }, "properties": { "class": "street", "len": 185.37523135522827, "name": "Perine Pl", "name_de": "Perine Pl", "name_en": "Perine Pl", "name_es": "Perine Pl", "name_fr": "Perine Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42369055747986, 37.78874696780958 ], [ -122.42212414741516, 37.78894197845551 ] ] }, "properties": { "class": "service", "len": 176.504996529051, "name": "Austin St", "name_de": "Austin St", "name_en": "Austin St", "name_es": "Austin St", "name_fr": "Austin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4219685792923, 37.78896741458879 ], [ -122.42040216922759, 37.78916666399649 ], [ -122.41875529289244, 37.7893786308617 ] ] }, "properties": { "class": "service", "len": 362.7780641879029, "name": "Austin St", "name_de": "Austin St", "name_en": "Austin St", "name_es": "Austin St", "name_fr": "Austin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43222534656525, 37.786224501118014 ], [ -122.43240773677826, 37.78714870899247 ] ] }, "properties": { "class": "path", "len": 131.81254720279276, "name": "Cottage Row", "name_de": "Cottage Row", "name_en": "Cottage Row", "name_es": "Cottage Row", "name_fr": "Cottage Row", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42159843444824, 37.787102074927084 ], [ -122.4200212955475, 37.78728013210937 ], [ -122.41836905479433, 37.787487864946456 ] ] }, "properties": { "class": "service", "len": 363.4626556619211, "name": "Hemlock St", "name_de": "Hemlock St", "name_en": "Hemlock St", "name_es": "Hemlock St", "name_fr": "Hemlock St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42778360843658, 37.783926649798154 ], [ -122.42633521556854, 37.78410895426485 ], [ -122.42627084255219, 37.784138631693594 ], [ -122.4262547492981, 37.784193746886835 ], [ -122.42643177509309, 37.785079823966655 ] ] }, "properties": { "class": "street", "len": 305.94004941331576, "name": "Cleary Ct", "name_de": "Cleary Ct", "name_en": "Cleary Ct", "name_es": "Cleary Ct", "name_fr": "Cleary Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42136240005493, 37.78521549033291 ], [ -122.42293417453766, 37.7850162302717 ] ] }, "properties": { "class": "street", "len": 177.46998985809063, "name": "Myrtle St", "name_de": "Myrtle St", "name_en": "Myrtle St", "name_es": "Myrtle St", "name_fr": "Myrtle St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42121756076813, 37.78523668818016 ], [ -122.41965115070342, 37.78543594764699 ], [ -122.41799890995026, 37.785643685668035 ] ] }, "properties": { "class": "service", "len": 363.0500218133764, "name": "Myrtle St", "name_de": "Myrtle St", "name_en": "Myrtle St", "name_es": "Myrtle St", "name_fr": "Myrtle St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41689920425415, 37.78675867772114 ], [ -122.41697430610657, 37.787110553850255 ], [ -122.41699039936066, 37.78720382194092 ] ] }, "properties": { "class": "street_limited", "len": 63.67390853814074, "name": "Meacham Pl", "name_de": "Meacham Pl", "name_en": "Meacham Pl", "name_es": "Meacham Pl", "name_fr": "Meacham Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41468906402588, 37.78418102799973 ], [ -122.41478025913239, 37.78461346893308 ] ] }, "properties": { "class": "street", "len": 61.940650626457945, "name": "Cohen Pl", "name_de": "Cohen Pl", "name_en": "Cohen Pl", "name_es": "Cohen Pl", "name_fr": "Cohen Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42825031280518, 37.78626265671772 ], [ -122.42896914482117, 37.78618210598413 ] ] }, "properties": { "class": "street", "len": 80.42590689447029, "name": "Hemlock St", "name_de": "Hemlock St", "name_en": "Hemlock St", "name_es": "Hemlock St", "name_fr": "Hemlock St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41186201572418, 37.80536341952066 ], [ -122.41351962089539, 37.80515573694268 ] ] }, "properties": { "class": "street", "len": 186.9047548890102, "name": "Vandewater St", "name_de": "Vandewater St", "name_en": "Vandewater St", "name_es": "Vandewater St", "name_fr": "Vandewater St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40576267242432, 37.80676208289539 ], [ -122.40596115589142, 37.80662645609157 ] ] }, "properties": { "class": "main", "len": 29.420489458901464, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40537643432617, 37.80567282309445 ], [ -122.40544617176056, 37.805689776677475 ], [ -122.40610599517822, 37.80560077032319 ], [ -122.40695893764496, 37.80549057183116 ] ] }, "properties": { "class": "street", "len": 178.97101766940898, "name": "Francisco St", "name_de": "Francisco St", "name_en": "Francisco St", "name_es": "Francisco St", "name_fr": "Francisco St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4095070362091, 37.80613480683977 ], [ -122.40931928157806, 37.80520659803617 ] ] }, "properties": { "class": "street", "len": 133.10344435826693, "name": "Midway St", "name_de": "Midway St", "name_en": "Midway St", "name_es": "Midway St", "name_fr": "Midway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40911543369293, 37.808135290254896 ], [ -122.40899205207825, 37.80805476336766 ], [ -122.40886867046356, 37.808016619022 ], [ -122.40766167640686, 37.807495310989914 ], [ -122.40755438804626, 37.807444451472676 ], [ -122.40738272666931, 37.80734273233311 ] ] }, "properties": { "class": "street", "len": 223.6784018579254, "name": "The Embarcadero", "name_de": "The Embarcadero", "name_en": "The Embarcadero", "name_es": "The Embarcadero", "name_fr": "The Embarcadero", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40738272666931, 37.80734273233311 ], [ -122.40713059902191, 37.807202868287426 ], [ -122.40708231925966, 37.80717743843246 ], [ -122.40614891052248, 37.80671546120967 ], [ -122.40614354610445, 37.80671122287313 ], [ -122.40596115589146, 37.80662645609157 ] ] }, "properties": { "class": "main", "len": 187.63943289268616, "name": "The Embarcadero", "name_de": "The Embarcadero", "name_en": "The Embarcadero", "name_es": "The Embarcadero", "name_fr": "The Embarcadero", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43159770965576, 37.78688586205755 ], [ -122.431640625, 37.78717838520059 ], [ -122.43154406547546, 37.78726741375342 ] ] }, "properties": { "class": "main", "len": 57.58368741715442, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41539716720581, 37.7977593133753 ], [ -122.41703867912292, 37.79755160941504 ], [ -122.4186909198761, 37.797339665996496 ], [ -122.4195009469986, 37.79722945517852 ], [ -122.42031633853912, 37.797110766421454 ], [ -122.42196321487427, 37.79690306063772 ], [ -122.42352962493898, 37.79669959318127 ] ] }, "properties": { "class": "street", "len": 917.3084934182016, "name": "Vallejo St", "name_de": "Vallejo St", "name_en": "Vallejo St", "name_es": "Vallejo St", "name_fr": "Vallejo St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4264532327652, 37.78599980663131 ], [ -122.42649078369139, 37.786194824526845 ], [ -122.42651224136351, 37.78631353082002 ], [ -122.42646932601927, 37.78631777032694 ], [ -122.42657124996184, 37.78684346730307 ], [ -122.42665708065032, 37.78683498834927 ], [ -122.4266731739044, 37.78692825678771 ] ] }, "properties": { "class": "path", "len": 147.8650025763167, "name": "Octavia", "name_de": "Octavia", "name_en": "Octavia", "name_es": "Octavia", "name_fr": "Octavia", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.432000041008, 37.788161932783865 ], [ -122.43190884590149, 37.787699836627255 ], [ -122.43181228637695, 37.78723349812689 ] ] }, "properties": { "class": "main", "len": 132.42041674862776, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42233872413635, 37.79877239166739 ], [ -122.42244601249696, 37.79875967528956 ], [ -122.4237871170044, 37.79857740696702 ], [ -122.42390513420106, 37.79856469055563 ], [ -122.42406070232393, 37.79854349653181 ] ] }, "properties": { "class": "street", "len": 194.08371844381782, "name": "Union St", "name_de": "Union St", "name_en": "Union St", "name_es": "Union St", "name_fr": "Union St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41658806800842, 37.79902671876394 ], [ -122.41731226444244, 37.79894618194477 ] ] }, "properties": { "class": "street", "len": 81.71896352755662, "name": "Macondray Ln", "name_de": "Macondray Ln", "name_en": "Macondray Ln", "name_es": "Macondray Ln", "name_fr": "Macondray Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.793622079565 ], [ -122.40461468696594, 37.79356273231249 ], [ -122.40612208843231, 37.79337621206568 ], [ -122.40664243698119, 37.79331262551028 ], [ -122.407146692276, 37.79324903890016 ], [ -122.40727543830872, 37.79323208246155 ], [ -122.40738809108734, 37.79321936513004 ], [ -122.40771532058716, 37.79317697400918 ], [ -122.40854680538177, 37.79307099610066 ], [ -122.40902423858643, 37.79300317015943 ], [ -122.40934610366821, 37.79296077891453 ], [ -122.4093621969223, 37.79296077891453 ], [ -122.40937829017638, 37.792956539788705 ], [ -122.40971088409422, 37.792922626773326 ], [ -122.4110037088394, 37.792765778874795 ], [ -122.41112172603607, 37.79273610491057 ], [ -122.41190493106842, 37.792634365514225 ], [ -122.4122428894043, 37.79259197405773 ], [ -122.41265058517457, 37.79254110427786 ], [ -122.41429746150972, 37.79233762480803 ], [ -122.41511821746828, 37.79223588486298 ], [ -122.41552591323854, 37.79218077566758 ], [ -122.41594970226288, 37.79212990560456 ], [ -122.41629302501678, 37.79208327468274 ], [ -122.41760194301605, 37.79192642500233 ], [ -122.4192327260971, 37.791701747853054 ], [ -122.42088496685028, 37.79149402686194 ], [ -122.42244064807892, 37.79130750139271 ], [ -122.42259621620178, 37.79129054450852 ], [ -122.42415189743042, 37.79109130082781 ], [ -122.42580950260164, 37.790879338875534 ] ] }, "properties": { "class": "street", "len": 3287.365366319779, "name": "Sacramento St", "name_de": "Sacramento St", "name_en": "Sacramento St", "name_es": "Sacramento St", "name_fr": "Sacramento St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40522623062134, 37.78869609538249 ], [ -122.40434646606447, 37.78881055829413 ], [ -122.40418016910554, 37.78883175511017 ] ] }, "properties": { "class": "street", "len": 173.9752821090882, "name": "Post St", "name_de": "Post St", "name_en": "Post St", "name_es": "Post St", "name_fr": "Post St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.791362611239464 ], [ -122.40424454212189, 37.79168903025815 ], [ -122.40435183048248, 37.792218928191865 ], [ -122.40444302558899, 37.79265556123338 ], [ -122.40461468696594, 37.79356273231249 ], [ -122.40471124649049, 37.794024791804866 ], [ -122.40479707717897, 37.79445293609456 ] ] }, "properties": { "class": "main", "len": 527.1476029032497, "name": "Kearny St", "name_de": "Kearny St", "name_en": "Kearny St", "name_es": "Kearny St", "name_fr": "Kearny St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.79724641069967 ], [ -122.4041962623596, 37.79724217181975 ], [ -122.40477561950682, 37.79717011082383 ], [ -122.40532815456389, 37.79709804975758 ], [ -122.40553736686705, 37.79707261642332 ], [ -122.40652978420258, 37.79694968851756 ], [ -122.40683019161224, 37.79691153843622 ], [ -122.40762412548065, 37.79680980478974 ], [ -122.40843415260315, 37.79670807100316 ], [ -122.40874528884888, 37.796669920797065 ], [ -122.40887403488159, 37.79665296514357 ], [ -122.40926027297974, 37.79660633707646 ], [ -122.41009712219238, 37.79650036408717 ] ] }, "properties": { "class": "street", "len": 907.8464553349108, "name": "Pacific Ave", "name_de": "Pacific Ave", "name_en": "Pacific Ave", "name_es": "Pacific Ave", "name_fr": "Pacific Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.79408413868621 ], [ -122.40471124649048, 37.794024791804866 ], [ -122.40621328353882, 37.793834033649055 ] ] }, "properties": { "class": "service", "len": 541.7946597217881, "name": "Commercial St", "name_de": "Commercial St", "name_en": "Commercial St", "name_es": "Commercial St", "name_fr": "Commercial St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.78709359600294 ], [ -122.40460932254791, 37.78675019875761 ], [ -122.40508139133453, 37.786377123398616 ], [ -122.4059182405472, 37.78571575790625 ], [ -122.40736126899719, 37.78457955208857 ], [ -122.4079352617264, 37.78412591279702 ], [ -122.40809082984924, 37.78400296335056 ], [ -122.40840196609497, 37.78375706384402 ], [ -122.40842342376709, 37.78374434488178 ] ] }, "properties": { "class": "main", "len": 891.4288760387328, "name": "Market St", "name_de": "Market St", "name_en": "Market St", "name_es": "Market St", "name_fr": "Market St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40622937679291, 37.78571575790625 ], [ -122.40616500377655, 37.785703039281096 ], [ -122.40612208843231, 37.785698799738874 ], [ -122.40606307983398, 37.785698799738874 ], [ -122.40591824054718, 37.78571575790625 ], [ -122.40586996078491, 37.78571575790625 ], [ -122.40582704544067, 37.78571151836477 ], [ -122.40577340126038, 37.785703039281096 ], [ -122.40573585033417, 37.78568608111079 ], [ -122.40569293498993, 37.78566064384806 ], [ -122.4052369594574, 37.7853002816854 ], [ -122.4047863483429, 37.784935678179586 ], [ -122.40426063537598, 37.784490520297716 ], [ -122.40418016910554, 37.784426926095676 ] ] }, "properties": { "class": "main", "len": 1023.8620893001719, "name": "4th St", "name_de": "4th St", "name_en": "4th St", "name_es": "4th St", "name_fr": "4th St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40508139133453, 37.786377123398616 ], [ -122.40418016910554, 37.78565216475853 ] ] }, "properties": { "class": "street_limited", "len": 247.80509464777072, "name": "Yerba Buena Ln", "name_de": "Yerba Buena Ln", "name_en": "Yerba Buena Ln", "name_es": "Yerba Buena Ln", "name_fr": "Yerba Buena Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42580950260162, 37.79087933887559 ], [ -122.42745101451874, 37.79066737631527 ], [ -122.42754757404327, 37.790658897800206 ], [ -122.42909252643585, 37.79045965241627 ], [ -122.430739402771, 37.79025616721429 ], [ -122.43238091468811, 37.79004420286635 ], [ -122.43348062038422, 37.78991278466528 ], [ -122.43360936641693, 37.789895827461 ], [ -122.43402242660522, 37.78984071652026 ], [ -122.43566930294037, 37.78963299029734 ] ] }, "properties": { "class": "street", "len": 1112.6142921479545, "name": "Sacramento St", "name_de": "Sacramento St", "name_en": "Sacramento St", "name_es": "Sacramento St", "name_fr": "Sacramento St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42782652378082, 37.80084513199106 ], [ -122.42781043052673, 37.80076459715455 ], [ -122.42767095565796, 37.80006521198694 ], [ -122.4276602268219, 37.80000163118878 ], [ -122.42764413356781, 37.79992957288471 ], [ -122.42746710777283, 37.79906910652822 ], [ -122.42727935314178, 37.79813657009509 ], [ -122.42709159851074, 37.7972040218895 ], [ -122.42690920829773, 37.796275700847126 ], [ -122.42671072483063, 37.79532193420228 ], [ -122.42660343647003, 37.79479205852346 ], [ -122.42652833461761, 37.79440206759597 ], [ -122.42636740207672, 37.79362631865265 ], [ -122.42632985115051, 37.79351610229493 ], [ -122.42629766464233, 37.79343132036946 ], [ -122.42616355419159, 37.7927784962844 ], [ -122.42615282535553, 37.79263860465857 ], [ -122.42614209651947, 37.79250719107183 ], [ -122.42600798606873, 37.79188403313971 ], [ -122.42598116397858, 37.79176109660045 ] ] }, "properties": { "class": "street", "len": 1296.954226786087, "name": "Gough St", "name_de": "Gough St", "name_en": "Gough St", "name_es": "Gough St", "name_fr": "Gough St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42398023605347, 37.79016290297611 ], [ -122.42561638355255, 37.7899551776589 ], [ -122.4272632598877, 37.78974321244753 ], [ -122.42891013622285, 37.789535485950495 ], [ -122.43055164813995, 37.78932775886951 ], [ -122.43219316005707, 37.78911579185838 ], [ -122.43301391601562, 37.78901404747707 ], [ -122.43383467197418, 37.78890806359755 ], [ -122.43548154830933, 37.78870033475278 ] ] }, "properties": { "class": "street", "len": 1297.8672409845715, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42598116397858, 37.791761096600425 ], [ -122.42580950260162, 37.79087933887556 ] ] }, "properties": { "class": "street", "len": 125.24834929052936, "name": "Gough St", "name_de": "Gough St", "name_en": "Gough St", "name_es": "Gough St", "name_fr": "Gough St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43566930294037, 37.78963299029734 ], [ -122.43557810783386, 37.78917514268277 ], [ -122.43548154830933, 37.78870033475276 ] ] }, "properties": { "class": "street", "len": 132.9305839748242, "name": "Steiner St", "name_de": "Steiner St", "name_en": "Steiner St", "name_es": "Steiner St", "name_fr": "Steiner St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43548154830933, 37.78870033475276 ], [ -122.43528842926025, 37.78774223089045 ], [ -122.43519723415376, 37.78727589265761 ], [ -122.43510067462921, 37.78681379096045 ], [ -122.43491291999817, 37.785876860302224 ] ] }, "properties": { "class": "street", "len": 402.3593321339213, "name": "Steiner St", "name_de": "Steiner St", "name_en": "Steiner St", "name_es": "Steiner St", "name_fr": "Steiner St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4250477552414, 37.78713175115391 ], [ -122.42667317390442, 37.78692825678771 ], [ -122.42673218250275, 37.78691977784362 ], [ -122.42786943912506, 37.78677563564531 ], [ -122.42833614349365, 37.78671628289368 ] ] }, "properties": { "class": "street", "len": 370.8120509786245, "name": "Sutter St", "name_de": "Sutter St", "name_en": "Sutter St", "name_es": "Sutter St", "name_fr": "Sutter St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42799818515778, 37.78504590733613 ], [ -122.42814838886261, 37.785787830074185 ] ] }, "properties": { "class": "street", "len": 105.35203082941551, "name": "Laguna St", "name_de": "Laguna St", "name_en": "Laguna St", "name_es": "Laguna St", "name_fr": "Laguna St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43129193782806, 37.785372354258485 ], [ -122.4297845363617, 37.7855673738098 ], [ -122.42902278900146, 37.78566912293662 ], [ -122.42887794971466, 37.78568608111079 ], [ -122.42814838886261, 37.785787830074185 ] ] }, "properties": { "class": "street", "len": 354.766990348488, "name": "Post St", "name_de": "Post St", "name_en": "Post St", "name_es": "Post St", "name_fr": "Post St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43548154830933, 37.78870033475276 ], [ -122.43712842464447, 37.78848836594184 ], [ -122.4371337890625, 37.78848836594184 ] ] }, "properties": { "class": "street", "len": 1274.824330638367, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42833614349365, 37.78671628289371 ], [ -122.42852926254271, 37.78765320290964 ], [ -122.42871701717375, 37.78857739291647 ], [ -122.42891013622283, 37.789535485950495 ], [ -122.42909252643584, 37.79045965241627 ], [ -122.42927491664882, 37.79134141514943 ], [ -122.4294519424438, 37.792218928191865 ], [ -122.42962896823879, 37.793100669930396 ], [ -122.42980599403377, 37.79397816207892 ], [ -122.42999374866481, 37.79489803396326 ], [ -122.43018686771389, 37.79585604504041 ], [ -122.43037462234493, 37.79678437135622 ], [ -122.43056237697597, 37.797716924859415 ], [ -122.43075013160701, 37.79864946659016 ], [ -122.43082523345943, 37.7990140024299 ], [ -122.43093788623806, 37.799581996548376 ], [ -122.43110954761501, 37.800366160355566 ], [ -122.43112027645107, 37.80042974083997 ] ] }, "properties": { "class": "street", "len": 1956.5208624328263, "name": "Laguna St", "name_de": "Laguna St", "name_en": "Laguna St", "name_es": "Laguna St", "name_fr": "Laguna St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42814838886261, 37.785787830074185 ], [ -122.42825031280518, 37.78626265671772 ], [ -122.42833614349365, 37.78671628289371 ] ] }, "properties": { "class": "street", "len": 132.52717323649773, "name": "Laguna St", "name_de": "Laguna St", "name_en": "Laguna St", "name_es": "Laguna St", "name_fr": "Laguna St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42814838886261, 37.785787830074185 ], [ -122.42750465869905, 37.785868381237506 ], [ -122.42645323276521, 37.78599980663131 ], [ -122.42486000061037, 37.786199064040595 ] ] }, "properties": { "class": "street", "len": 370.8104371989897, "name": "Post St", "name_de": "Post St", "name_en": "Post St", "name_es": "Post St", "name_fr": "Post St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42833614349365, 37.78671628289371 ], [ -122.4299830198288, 37.78650430839168 ], [ -122.43146896362305, 37.786330488846325 ], [ -122.431640625, 37.78629657278981 ] ] }, "properties": { "class": "street", "len": 372.80325169938106, "name": "Sutter St", "name_de": "Sutter St", "name_en": "Sutter St", "name_es": "Sutter St", "name_fr": "Sutter St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4371337890625, 37.78655518232762 ], [ -122.43674218654633, 37.786601816738134 ], [ -122.43510067462921, 37.78681379096047 ], [ -122.43345916271211, 37.78702152510845 ], [ -122.43240773677827, 37.78714870899247 ], [ -122.43181228637695, 37.78723349812689 ], [ -122.43154406547548, 37.78726741375342 ], [ -122.43017077445985, 37.78744123109506 ], [ -122.42852926254274, 37.78765320290964 ], [ -122.4268662929535, 37.78786517411618 ], [ -122.42524087429048, 37.78807290530866 ], [ -122.42359399795534, 37.78828063591721 ], [ -122.42202758789062, 37.7884714084107 ], [ -122.42187738418579, 37.788492605324016 ], [ -122.4203109741211, 37.78870033475276 ], [ -122.41865873336792, 37.78891230295561 ], [ -122.41765022277832, 37.78903524423468 ], [ -122.4170172214508, 37.7891115525119 ], [ -122.41576731204987, 37.78929384418854 ], [ -122.41538107395172, 37.78934471620411 ], [ -122.41450130939484, 37.78945069945733 ], [ -122.41374492645265, 37.789548203916056 ], [ -122.41207659244537, 37.78974321244753 ], [ -122.41044580936433, 37.78995941695688 ], [ -122.40882575511934, 37.79017138154805 ], [ -122.40880966186525, 37.790175620833686 ], [ -122.40879356861119, 37.790175620833686 ], [ -122.40801036357884, 37.79027736361561 ], [ -122.40787088871004, 37.79029432073231 ], [ -122.40752756595613, 37.79033671350706 ], [ -122.40723252296449, 37.790370627709315 ], [ -122.4071252346039, 37.79038334553116 ], [ -122.40700185298921, 37.790396063350826 ], [ -122.40676045417787, 37.790429977525854 ], [ -122.40652441978456, 37.79045965241624 ], [ -122.40633666515352, 37.790480848759216 ], [ -122.40557491779329, 37.790565634070326 ], [ -122.40526914596558, 37.79060802668941 ], [ -122.4047702550888, 37.79066737631525 ], [ -122.40440011024477, 37.790714008130706 ], [ -122.40433573722841, 37.79072248663944 ], [ -122.40418016910554, 37.79074368290703 ] ] }, "properties": { "class": "main", "len": 4777.280544232611, "name": "Bush St", "name_de": "Bush St", "name_en": "Bush St", "name_es": "Bush St", "name_fr": "Bush St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.431640625, 37.78629657278981 ], [ -122.43222534656525, 37.786224501118014 ], [ -122.43327140808107, 37.78608883660399 ] ] }, "properties": { "class": "street", "len": 183.80983219213513, "name": "Sutter St", "name_de": "Sutter St", "name_en": "Sutter St", "name_es": "Sutter St", "name_fr": "Sutter St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4349182844162, 37.794274896196235 ], [ -122.43473052978516, 37.79335077745011 ], [ -122.43455350399017, 37.79247751700376 ] ] }, "properties": { "class": "street", "len": 256.79662568399306, "name": "Fillmore St", "name_de": "Fillmore St", "name_en": "Fillmore St", "name_es": "Fillmore St", "name_fr": "Fillmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43327140808105, 37.78608883660399 ], [ -122.43307828903198, 37.785151896754726 ], [ -122.4329549074173, 37.78452019757326 ], [ -122.43294417858124, 37.784473561849175 ] ] }, "properties": { "class": "street", "len": 229.87838887474672, "name": "Fillmore St", "name_de": "Fillmore St", "name_en": "Fillmore St", "name_es": "Fillmore St", "name_fr": "Fillmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43327140808105, 37.78608883660399 ], [ -122.43491291999817, 37.785876860302224 ] ] }, "properties": { "class": "street", "len": 185.58002721248843, "name": "Sutter St", "name_de": "Sutter St", "name_en": "Sutter St", "name_es": "Sutter St", "name_fr": "Sutter St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42158770561218, 37.795029443297494 ], [ -122.42314875125885, 37.79483020969929 ] ] }, "properties": { "class": "street", "len": 176.52994335243739, "name": "Pacific Ave", "name_de": "Pacific Ave", "name_en": "Pacific Ave", "name_es": "Pacific Ave", "name_fr": "Pacific Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42615282535553, 37.79263860465855 ], [ -122.42451667785645, 37.792850561564016 ], [ -122.42295563220978, 37.79304980050074 ], [ -122.42280006408691, 37.79306251786141 ] ] }, "properties": { "class": "street", "len": 377.93480740004276, "name": "Washington St", "name_de": "Washington St", "name_en": "Washington St", "name_es": "Washington St", "name_fr": "Washington St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43657052516937, 37.794062943376915 ], [ -122.4363774061203, 37.79313882197963 ], [ -122.43621110916138, 37.792265559028124 ] ] }, "properties": { "class": "street", "len": 256.40505882311743, "name": "Steiner St", "name_de": "Steiner St", "name_en": "Steiner St", "name_es": "Steiner St", "name_fr": "Steiner St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43455350399017, 37.79247751700376 ], [ -122.43621110916138, 37.792265559028124 ] ] }, "properties": { "class": "street", "len": 186.72620812329262, "name": "Jackson St", "name_de": "Jackson St", "name_en": "Jackson St", "name_es": "Jackson St", "name_fr": "Jackson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42314338684082, 37.79392729325345 ], [ -122.4246883392334, 37.79372805668306 ], [ -122.42632985115051, 37.79351610229493 ] ] }, "properties": { "class": "street", "len": 359.5469532934653, "name": "Jackson St", "name_de": "Jackson St", "name_en": "Jackson St", "name_es": "Jackson St", "name_fr": "Jackson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43621110916138, 37.792265559028124 ], [ -122.43602335453033, 37.79138380732341 ] ] }, "properties": { "class": "street", "len": 125.51699526332001, "name": "Steiner St", "name_de": "Steiner St", "name_en": "Steiner St", "name_es": "Steiner St", "name_fr": "Steiner St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42280006408691, 37.79306251786141 ], [ -122.42122828960419, 37.79327023444296 ], [ -122.4195921421051, 37.7934779504405 ], [ -122.41797208786011, 37.79368142676982 ], [ -122.41793990135193, 37.79368566585406 ] ] }, "properties": { "class": "street", "len": 548.5713946050722, "name": "Washington St", "name_de": "Washington St", "name_en": "Washington St", "name_es": "Washington St", "name_fr": "Washington St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42632985115051, 37.79351610229493 ], [ -122.42798745632172, 37.79330838640464 ] ] }, "properties": { "class": "street", "len": 186.64642964750635, "name": "Jackson St", "name_de": "Jackson St", "name_en": "Jackson St", "name_es": "Jackson St", "name_fr": "Jackson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42798745632172, 37.79330838640464 ], [ -122.42815911769867, 37.79419011514147 ], [ -122.42834150791168, 37.79512270139288 ], [ -122.42853999137878, 37.79606375376797 ], [ -122.42872774600983, 37.79699207747368 ] ] }, "properties": { "class": "street", "len": 525.6550689667262, "name": "Octavia St", "name_de": "Octavia St", "name_en": "Octavia St", "name_es": "Octavia St", "name_fr": "Octavia St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42798745632172, 37.79330838640464 ], [ -122.4280196428299, 37.79318121312238 ], [ -122.42793381214142, 37.79274034404906 ], [ -122.42788553237915, 37.7926725178043 ], [ -122.4279123544693, 37.792579256616065 ], [ -122.42789089679718, 37.79248175615706 ], [ -122.42783725261688, 37.792426647145035 ] ] }, "properties": { "class": "street", "len": 129.48535326004438, "name": "Octavia St", "name_de": "Octavia St", "name_en": "Octavia St", "name_es": "Octavia St", "name_fr": "Octavia St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42783725261688, 37.792426647145035 ], [ -122.42781043052673, 37.792490234462946 ], [ -122.42783188819885, 37.79261740893458 ], [ -122.42788553237915, 37.7926725178043 ], [ -122.42785334587097, 37.79274882232528 ], [ -122.42791771888733, 37.79318969134799 ], [ -122.42798745632172, 37.79330838640464 ] ] }, "properties": { "class": "street", "len": 129.13268389338356, "name": "Octavia St", "name_de": "Octavia St", "name_en": "Octavia St", "name_es": "Octavia St", "name_fr": "Octavia St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42140531539917, 37.78618634549861 ], [ -122.41983890533446, 37.78638560240497 ], [ -122.41818130016325, 37.78656790080614 ] ] }, "properties": { "class": "service", "len": 362.69087619878184, "name": "Cedar St", "name_de": "Cedar St", "name_en": "Cedar St", "name_es": "Cedar St", "name_fr": "Cedar St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41930782794952, 37.78374434488178 ], [ -122.41936683654785, 37.78403264082188 ], [ -122.41946339607239, 37.78450323913154 ], [ -122.4195545911789, 37.78496535527636 ], [ -122.41965115070343, 37.78543594764699 ], [ -122.41974234580994, 37.78589381842874 ], [ -122.41983890533447, 37.78638560240497 ], [ -122.41993010044098, 37.78683074887198 ] ] }, "properties": { "class": "street", "len": 935.2773512284809, "name": "Polk St", "name_de": "Polk St", "name_en": "Polk St", "name_es": "Polk St", "name_fr": "Polk St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40809082984924, 37.78400296335056 ], [ -122.4082088470459, 37.78409199572878 ], [ -122.40847706794739, 37.78431669601591 ], [ -122.4084985256195, 37.78433789412096 ], [ -122.40851998329163, 37.78438876954822 ], [ -122.4085360765457, 37.78446508262347 ] ] }, "properties": { "class": "street", "len": 83.84549664431606, "name": "Cyril Magnin St", "name_de": "Cyril Magnin St", "name_en": "Cyril Magnin St", "name_es": "Cyril Magnin St", "name_fr": "Cyril Magnin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40809082984924, 37.78400296335056 ], [ -122.40776896476746, 37.78374434488178 ] ] }, "properties": { "class": "street", "len": 252.0510642319494, "name": "5th St", "name_de": "5th St", "name_en": "5th St", "name_es": "5th St", "name_fr": "5th St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4108213186264, 37.791837402062676 ], [ -122.41076231002808, 37.79153217974085 ], [ -122.41062819957733, 37.79088357812059 ], [ -122.4105316400528, 37.79039182407786 ], [ -122.41044580936432, 37.78995941695693 ], [ -122.41025805473328, 37.78901828682906 ], [ -122.41016685962677, 37.78855195664898 ], [ -122.41007566452026, 37.78808138412048 ], [ -122.40994155406952, 37.78742851276689 ], [ -122.40988790988922, 37.78714870899249 ], [ -122.40979135036469, 37.78667388804195 ], [ -122.4097591638565, 37.78651278738342 ], [ -122.40970551967621, 37.78622026160572 ], [ -122.40951776504517, 37.78528332342268 ], [ -122.40933537483215, 37.7843590922199 ], [ -122.40921199321747, 37.78374434488178 ] ] }, "properties": { "class": "street", "len": 1231.0964508373736, "name": "Mason St", "name_de": "Mason St", "name_en": "Mason St", "name_es": "Mason St", "name_fr": "Mason St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43308365345001, 37.7935584932212 ], [ -122.43299782276154, 37.79312186551574 ], [ -122.43291735649109, 37.79268099608831 ] ] }, "properties": { "class": "street", "len": 125.12204412045358, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42615282535553, 37.79263860465855 ], [ -122.42783725261688, 37.79242664714506 ], [ -122.42808938026428, 37.792392733886466 ], [ -122.42945194244385, 37.792218928191865 ], [ -122.43109345436096, 37.79201120865472 ], [ -122.43273496627806, 37.791803488533624 ] ] }, "properties": { "class": "street", "len": 742.7365208672886, "name": "Washington St", "name_de": "Washington St", "name_en": "Washington St", "name_es": "Washington St", "name_fr": "Washington St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43455350399017, 37.79247751700376 ], [ -122.43437647819519, 37.79159576782853 ] ] }, "properties": { "class": "street", "len": 125.77653835198964, "name": "Fillmore St", "name_de": "Fillmore St", "name_en": "Fillmore St", "name_es": "Fillmore St", "name_fr": "Fillmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43621110916138, 37.792265559028124 ], [ -122.4371337890625, 37.79215110146844 ] ] }, "properties": { "class": "street", "len": 557.4031872764373, "name": "Jackson St", "name_de": "Jackson St", "name_en": "Jackson St", "name_es": "Jackson St", "name_fr": "Jackson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42798745632172, 37.79330838640464 ], [ -122.42962896823883, 37.793100669930396 ], [ -122.43126511573792, 37.79289295287215 ], [ -122.43291735649109, 37.79268099608831 ] ] }, "properties": { "class": "street", "len": 556.4159854018069, "name": "Jackson St", "name_de": "Jackson St", "name_en": "Jackson St", "name_es": "Jackson St", "name_fr": "Jackson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43437647819519, 37.79159576782853 ], [ -122.43419945240021, 37.790714008130706 ], [ -122.43402242660522, 37.78984071652026 ], [ -122.43383467197418, 37.78890806359753 ], [ -122.43364155292511, 37.78794996242854 ], [ -122.4335503578186, 37.78748786494643 ], [ -122.43345916271211, 37.78702152510845 ], [ -122.43327140808107, 37.78608883660396 ] ] }, "properties": { "class": "street", "len": 785.4742911044511, "name": "Fillmore St", "name_de": "Fillmore St", "name_en": "Fillmore St", "name_es": "Fillmore St", "name_fr": "Fillmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43291735649109, 37.79268099608831 ], [ -122.43455350399017, 37.79247751700376 ] ] }, "properties": { "class": "street", "len": 184.64474782644712, "name": "Jackson St", "name_de": "Jackson St", "name_en": "Jackson St", "name_es": "Jackson St", "name_fr": "Jackson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43437647819519, 37.79159576782853 ], [ -122.43602335453033, 37.79138380732341 ] ] }, "properties": { "class": "street", "len": 185.58002721248843, "name": "Washington St", "name_de": "Washington St", "name_en": "Washington St", "name_es": "Washington St", "name_fr": "Washington St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43273496627808, 37.791803488533624 ], [ -122.43437647819519, 37.79159576782853 ] ] }, "properties": { "class": "street", "len": 184.89630499331108, "name": "Washington St", "name_de": "Washington St", "name_en": "Washington St", "name_es": "Washington St", "name_fr": "Washington St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43291735649109, 37.79268099608831 ], [ -122.43273496627808, 37.791803488533624 ] ] }, "properties": { "class": "street", "len": 125.53293472237247, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43273496627808, 37.791803488533624 ], [ -122.4325579404831, 37.790921731314675 ] ] }, "properties": { "class": "street", "len": 125.54438776854212, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41812765598297, 37.794567390088325 ], [ -122.41814911365509, 37.79456315105469 ], [ -122.41892695426941, 37.79446141417424 ], [ -122.41976916790009, 37.79435967715371 ], [ -122.42140531539917, 37.794147724577606 ] ] }, "properties": { "class": "street", "len": 369.9980531145037, "name": "Jackson St", "name_de": "Jackson St", "name_en": "Jackson St", "name_es": "Jackson St", "name_fr": "Jackson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42069184780121, 37.79057835185864 ], [ -122.42088496685028, 37.79149402686194 ], [ -122.42106199264526, 37.792396973044646 ], [ -122.42122828960419, 37.79327023444296 ], [ -122.42140531539917, 37.794147724577606 ] ] }, "properties": { "class": "street", "len": 508.6550928972288, "name": "Polk St", "name_de": "Polk St", "name_en": "Polk St", "name_es": "Polk St", "name_fr": "Polk St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42140531539917, 37.794147724577606 ], [ -122.42296099662781, 37.79394848860165 ], [ -122.42314338684082, 37.79392729325345 ] ] }, "properties": { "class": "street", "len": 195.6111994448167, "name": "Jackson St", "name_de": "Jackson St", "name_en": "Jackson St", "name_es": "Jackson St", "name_fr": "Jackson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42140531539917, 37.794147724577606 ], [ -122.42158770561217, 37.795029443297494 ] ] }, "properties": { "class": "street", "len": 125.97491218458389, "name": "Polk St", "name_de": "Polk St", "name_en": "Polk St", "name_es": "Polk St", "name_fr": "Polk St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43566930294037, 37.78963299029734 ], [ -122.4371337890625, 37.789446460130144 ] ] }, "properties": { "class": "street", "len": 1274.3404609796792, "name": "Sacramento St", "name_de": "Sacramento St", "name_en": "Sacramento St", "name_es": "Sacramento St", "name_fr": "Sacramento St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43602335453033, 37.79138380732341 ], [ -122.43588924407959, 37.79070552962101 ], [ -122.43584632873535, 37.79050204509613 ], [ -122.43566930294037, 37.78963299029734 ] ] }, "properties": { "class": "street", "len": 250.18440290311415, "name": "Steiner St", "name_de": "Steiner St", "name_en": "Steiner St", "name_es": "Steiner St", "name_fr": "Steiner St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42075085639954, 37.8075970299193 ], [ -122.42069721221924, 37.80731306422433 ], [ -122.42064893245697, 37.807071480609274 ], [ -122.4205631017685, 37.80665188613628 ] ] }, "properties": { "class": "street", "len": 134.37310004686768, "name": "Hyde St", "name_de": "Hyde St", "name_en": "Hyde St", "name_es": "Hyde St", "name_fr": "Hyde St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4058324098587, 37.8027440332184 ], [ -122.40580022335052, 37.802714363262176 ], [ -122.40577340126038, 37.80268469329402 ], [ -122.4057412147522, 37.80265078474437 ], [ -122.40546762943268, 37.80227778967103 ], [ -122.40541934967041, 37.80219301780076 ], [ -122.40539252758026, 37.80212096163453 ], [ -122.40539252758026, 37.80205738260595 ], [ -122.40541398525238, 37.801989564915125 ], [ -122.40544080734253, 37.80194294021658 ], [ -122.40548372268677, 37.801892076875475 ], [ -122.4055427312851, 37.801858167961946 ], [ -122.40562319755554, 37.80182425903287 ], [ -122.4056339263916, 37.80182002041566 ], [ -122.40581095218658, 37.801794588707146 ], [ -122.405886054039, 37.80181578179817 ], [ -122.40591824054718, 37.80182849764986 ], [ -122.4060308933258, 37.801892076875475 ], [ -122.40612208843231, 37.80198108769938 ], [ -122.40620791912079, 37.80207857562153 ], [ -122.40632593631744, 37.802328652746496 ], [ -122.40643858909607, 37.80256601330221 ], [ -122.4064654111862, 37.802595683318025 ], [ -122.40652978420258, 37.80268469329399 ], [ -122.40668535232544, 37.80283728157465 ], [ -122.40672826766968, 37.80293052981321 ], [ -122.4067336320877, 37.80301106228812 ], [ -122.40672290325163, 37.80307887904102 ], [ -122.40670144557951, 37.803142457190276 ], [ -122.40665316581726, 37.80320179674688 ], [ -122.40657806396483, 37.803252659186015 ], [ -122.40639030933379, 37.80335438395923 ], [ -122.40632593631743, 37.80340948481954 ], [ -122.4062991142273, 37.80346034711567 ], [ -122.40628838539122, 37.803528163456 ], [ -122.40632593631743, 37.8035875027027 ], [ -122.4063742160797, 37.803629887849716 ], [ -122.40643858909606, 37.80365531892627 ], [ -122.4065190553665, 37.80365955743819 ], [ -122.40658879280089, 37.80364684190173 ] ] }, "properties": { "class": "street", "len": 518.0529223368776, "name": "Telegraph Hill Blvd", "name_de": "Telegraph Hill Blvd", "name_en": "Telegraph Hill Blvd", "name_es": "Telegraph Hill Blvd", "name_fr": "Telegraph Hill Blvd", "ref": "", "reflen": 0 } } ], "name": "road_label" }mapnik-vector-tile-1.6.1/examples/data/14_2620_6331-tunnel.geojson000066400000000000000000000015021324304754200242240ustar00rootroot00000000000000{ "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41784870624542, 37.796335045920344 ], [ -122.41178691387177, 37.797110766421454 ], [ -122.41127192974089, 37.7971785885917 ] ] }, "properties": { "class": "main", "layer": -1, "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.411288022995, 37.797254888458816 ], [ -122.41180300712585, 37.797187066358596 ], [ -122.41785407066345, 37.79641558558629 ] ] }, "properties": { "class": "main", "layer": -1, "oneway": 1 } } ], "name": "tunnel" }mapnik-vector-tile-1.6.1/examples/data/14_2620_6331-water.geojson000066400000000000000000000131521324304754200240450ustar00rootroot00000000000000{ "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.80551176386163 ], [ -122.40958750247955, 37.80551176386163 ], [ -122.40958750247955, 37.80551176386163 ], [ -122.40958750247955, 37.80551176386163 ], [ -122.40958750247955, 37.78801355359897 ], [ -122.40958750247955, 37.80551176386163 ], [ -122.43172645568848, 37.80551176386163 ], [ -122.43172645568848, 37.80551176386163 ], [ -122.43172645568848, 37.80551176386163 ], [ -122.43172645568848, 37.80551176386163 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.80551176386163 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.80551176386163 ], [ -122.43172645568848, 37.78801355359897 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41073548793793, 37.800417024747446 ], [ -122.41071939468384, 37.80046365040925 ], [ -122.41066038608551, 37.80045093432258 ], [ -122.41063356399538, 37.800417024747446 ], [ -122.41068184375763, 37.800395831255116 ], [ -122.41073548793794, 37.800417024747446 ], [ -122.41073548793794, 37.800417024747446 ], [ -122.41073548793793, 37.800417024747446 ] ] ] }, "properties": {} } ], "name": "water" }mapnik-vector-tile-1.6.1/examples/data/14_2620_6331.geojson000066400000000000000000052744241324304754200227450ustar00rootroot00000000000000{ "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4319839477539, 37.80571096865078 ], [ -122.42571830749512, 37.80571096865078 ], [ -122.42565393447876, 37.80551600226697 ], [ -122.42560029029846, 37.80535070427755 ], [ -122.42535352706909, 37.80424023126987 ], [ -122.4299830198288, 37.80362564933611 ], [ -122.43017077445984, 37.80360021824936 ], [ -122.43147432804108, 37.803417961871325 ], [ -122.43156015872955, 37.80343915449654 ], [ -122.43161916732788, 37.8035154478969 ], [ -122.4317479133606, 37.80416393861819 ], [ -122.43196249008179, 37.8051938827661 ], [ -122.4319839477539, 37.805282889610744 ], [ -122.4319839477539, 37.80571096865078 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4319839477539, 37.803095833219515 ], [ -122.43175864219666, 37.803121264479955 ], [ -122.4314421415329, 37.80152331660511 ], [ -122.4319839477539, 37.80145125978552 ], [ -122.4319839477539, 37.803095833219515 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42932319641113, 37.79213414477786 ], [ -122.42628157138824, 37.79252838682742 ], [ -122.42613136768341, 37.79187555476425 ], [ -122.42593824863434, 37.79100651611991 ], [ -122.42747783660889, 37.79081151092244 ], [ -122.4277514219284, 37.79077759692252 ], [ -122.42899596691132, 37.79059954816758 ], [ -122.42932319641113, 37.79213414477786 ], [ -122.42932319641113, 37.79213414477786 ], [ -122.42932319641113, 37.79213414477786 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4319839477539, 37.79090053509816 ], [ -122.43151724338531, 37.79095988448907 ], [ -122.43156015872955, 37.79118032466647 ], [ -122.4319839477539, 37.79112945391467 ], [ -122.4319839477539, 37.79146011317529 ], [ -122.4314421415329, 37.79152794053307 ], [ -122.43145823478699, 37.79161696384559 ], [ -122.43116855621338, 37.79165511666101 ], [ -122.4310827255249, 37.79122271693289 ], [ -122.43091106414794, 37.79033247423068 ], [ -122.43149042129515, 37.790260406495044 ], [ -122.43138849735259, 37.789734733826435 ], [ -122.43198394775389, 37.78966266550779 ], [ -122.4319839477539, 37.79090053509816 ] ] ] }, "properties": { "class": "hospital" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42114245891571, 37.801731009397635 ], [ -122.41970479488373, 37.80191326993853 ], [ -122.41954922676086, 37.80115455449363 ], [ -122.42052555084229, 37.80103163338067 ], [ -122.42050409317017, 37.80094686008017 ], [ -122.42064356803894, 37.800925666739815 ], [ -122.42063820362092, 37.80090871206316 ], [ -122.42096543312074, 37.80086632535451 ], [ -122.42114245891572, 37.801731009397635 ], [ -122.42114245891572, 37.801731009397635 ], [ -122.42114245891571, 37.801731009397635 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41164743900299, 37.804833615870386 ], [ -122.41093397140504, 37.804918384709836 ], [ -122.41104662418365, 37.80546514138657 ], [ -122.4107998609543, 37.80549481023774 ], [ -122.41079449653627, 37.80545666456976 ], [ -122.41031706333162, 37.80551600226697 ], [ -122.41027951240544, 37.805325273784796 ], [ -122.41057455539708, 37.8052913664475 ], [ -122.41051554679875, 37.80496924596682 ], [ -122.41024196147923, 37.80500315345199 ], [ -122.41019368171696, 37.804740370034615 ], [ -122.41017222404484, 37.80464288562588 ], [ -122.41052091121679, 37.80460050106019 ], [ -122.41076231002813, 37.804570831849745 ], [ -122.41068184375769, 37.804176654065614 ], [ -122.41150259971624, 37.804079168912786 ], [ -122.41164743900305, 37.804833615870386 ], [ -122.41164743900305, 37.804833615870386 ], [ -122.41164743900299, 37.804833615870386 ] ] ] }, "properties": { "class": "school" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41290807723999, 37.80272707895914 ], [ -122.41288125514986, 37.802773703162714 ], [ -122.41208195686342, 37.802871190038694 ], [ -122.41151332855226, 37.802939006920006 ], [ -122.4113577604294, 37.802197256396575 ], [ -122.41207122802736, 37.80211248443386 ], [ -122.4125111103058, 37.80204890539802 ], [ -122.41276860237123, 37.80222692656055 ], [ -122.41264522075654, 37.8022438809346 ], [ -122.4127095937729, 37.80253634327446 ], [ -122.4128705263138, 37.80251938896754 ], [ -122.41290807724, 37.80272707895914 ], [ -122.41290807724, 37.80272707895914 ], [ -122.41290807723999, 37.80272707895914 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41090714931488, 37.80109521329224 ], [ -122.4105316400528, 37.80113759986951 ], [ -122.4101185798645, 37.80119270238364 ], [ -122.4094694852829, 37.80126899810456 ], [ -122.40939438343048, 37.80082393862155 ], [ -122.40934610366821, 37.80052723080971 ], [ -122.40978598594666, 37.80047212779914 ], [ -122.41015613079071, 37.80042550214271 ], [ -122.41033852100372, 37.80055266295457 ], [ -122.41070866584776, 37.80081546127204 ], [ -122.41087496280669, 37.800929905408374 ], [ -122.41090714931487, 37.801095213292214 ], [ -122.41090714931487, 37.801095213292214 ], [ -122.41090714931488, 37.80109521329224 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41770923137665, 37.78950157136492 ], [ -122.41699039936066, 37.78959059711889 ], [ -122.41706550121307, 37.78995941695691 ], [ -122.41631984710693, 37.79005268145195 ], [ -122.41624474525452, 37.78968386207941 ], [ -122.41608917713165, 37.78970081933231 ], [ -122.41601943969727, 37.78934895553718 ], [ -122.41763412952423, 37.789149706621 ], [ -122.41770923137666, 37.78950157136492 ], [ -122.41770923137666, 37.78950157136492 ], [ -122.41770923137665, 37.78950157136492 ] ] ] }, "properties": { "class": "hospital" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42665708065033, 37.79811537594843 ], [ -122.42573440074922, 37.79823406309142 ], [ -122.42558419704437, 37.79749650418472 ], [ -122.4265068769455, 37.7973778158567 ], [ -122.42665708065033, 37.79811537594843 ], [ -122.42665708065033, 37.79811537594843 ], [ -122.42665708065033, 37.79811537594843 ] ] ] }, "properties": { "class": "school" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42506384849548, 37.805024345622336 ], [ -122.4237710237503, 37.805185405918145 ], [ -122.42366909980774, 37.8046810317142 ], [ -122.42496728897095, 37.804519970318424 ], [ -122.42506384849548, 37.805024345622336 ], [ -122.42506384849548, 37.805024345622336 ], [ -122.42506384849548, 37.805024345622336 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42171108722687, 37.804494539539625 ], [ -122.42030024528503, 37.80468950862004 ], [ -122.42020905017854, 37.80425718518177 ], [ -122.42161989212036, 37.80406645344859 ], [ -122.42171108722687, 37.804494539539625 ], [ -122.42171108722687, 37.804494539539625 ], [ -122.42171108722687, 37.804494539539625 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42536962032318, 37.80571096865078 ], [ -122.42524087429045, 37.80518116749381 ], [ -122.42541253566742, 37.80515573694268 ], [ -122.42548763751984, 37.80514726009035 ], [ -122.42561638355255, 37.80571096865078 ], [ -122.42536962032318, 37.80571096865078 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41251111030579, 37.79251143022342 ], [ -122.41223216056824, 37.79254110427786 ], [ -122.41194784641266, 37.792579256616065 ], [ -122.41187810897827, 37.79220621068598 ], [ -122.41180300712585, 37.79182892368188 ], [ -122.4120819568634, 37.79179501014891 ], [ -122.41236627101898, 37.791761096600425 ], [ -122.41243600845337, 37.79213414477786 ], [ -122.41251111030579, 37.79251143022342 ], [ -122.41251111030579, 37.79251143022342 ], [ -122.41251111030579, 37.79251143022342 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.43000447750092, 37.80411307680662 ], [ -122.42921054363251, 37.8042105619147 ], [ -122.42927491664886, 37.804541162627416 ], [ -122.42918372154236, 37.80454963954931 ], [ -122.42912471294403, 37.80422327735411 ], [ -122.42895841598511, 37.80423175431249 ], [ -122.42886185646057, 37.80418089254761 ], [ -122.42895305156708, 37.8041681771009 ], [ -122.42897987365723, 37.80411307680662 ], [ -122.42893159389496, 37.80387995972208 ], [ -122.4299293756485, 37.80375704314487 ], [ -122.42999911308287, 37.804087645887726 ], [ -122.4300044775009, 37.80411307680662 ], [ -122.4300044775009, 37.80411307680662 ], [ -122.43000447750092, 37.80411307680662 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42810547351837, 37.79762790889688 ], [ -122.42732763290407, 37.79772964141673 ], [ -122.42723643779756, 37.79729727723981 ], [ -122.42801427841188, 37.797191305241675 ], [ -122.42810547351837, 37.79762790889688 ], [ -122.42810547351837, 37.79762790889688 ], [ -122.42810547351837, 37.79762790889688 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41376101970673, 37.7984671979957 ], [ -122.4132889509201, 37.798530780114596 ], [ -122.41323530673981, 37.798280690131136 ], [ -122.41308510303496, 37.798297645411004 ], [ -122.41305291652678, 37.79814928658016 ], [ -122.41287052631378, 37.79817471954375 ], [ -122.4128383398056, 37.798030599300965 ], [ -122.4136483669281, 37.797924628354835 ], [ -122.41376101970671, 37.7984671979957 ], [ -122.41376101970671, 37.7984671979957 ], [ -122.41376101970673, 37.7984671979957 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42516577243805, 37.805621962322036 ], [ -122.4248331785202, 37.80566858469807 ], [ -122.42484390735626, 37.80571096865078 ], [ -122.42386221885681, 37.80571096865078 ], [ -122.42383003234863, 37.80553295588602 ], [ -122.42401778697968, 37.80557957831826 ], [ -122.42423236370085, 37.80560077032319 ], [ -122.4244576692581, 37.805609247123456 ], [ -122.42462933063507, 37.80558805512094 ], [ -122.42474734783173, 37.80554143269405 ], [ -122.42495656013489, 37.80546514138659 ], [ -122.42511749267578, 37.805359181106546 ], [ -122.42516577243805, 37.805621962322036 ], [ -122.42516577243805, 37.805621962322036 ], [ -122.42516577243805, 37.805621962322036 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42116391658783, 37.79590691253789 ], [ -122.42097079753877, 37.79593234627349 ], [ -122.42092788219453, 37.79594082418341 ], [ -122.42023050785066, 37.79598321371845 ], [ -122.42017149925233, 37.7956737695535 ], [ -122.42109417915346, 37.795550839320036 ], [ -122.42116391658783, 37.79590691253789 ], [ -122.42116391658783, 37.79590691253789 ], [ -122.42116391658783, 37.79590691253789 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41690456867218, 37.802248119527505 ], [ -122.4164217710495, 37.802303221213165 ], [ -122.4163144826889, 37.801743725263904 ], [ -122.41671681404112, 37.80169710041017 ], [ -122.41668462753294, 37.80151060070086 ], [ -122.41676509380339, 37.80149788479444 ], [ -122.41683483123778, 37.80187936103473 ], [ -122.41686701774596, 37.802036189584236 ], [ -122.41690456867217, 37.802248119527505 ], [ -122.41690456867217, 37.802248119527505 ], [ -122.41690456867218, 37.802248119527505 ] ] ] }, "properties": { "class": "school" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41542935371399, 37.801044349367366 ], [ -122.41481244564055, 37.80112488389887 ], [ -122.41481781005858, 37.801141838525915 ], [ -122.41451203823088, 37.80118422507645 ], [ -122.41447448730467, 37.80100196273655 ], [ -122.4146783351898, 37.80097653074639 ], [ -122.41464614868163, 37.80081122259691 ], [ -122.41535961627956, 37.800722210363176 ], [ -122.41539180278774, 37.800883280040885 ], [ -122.41542935371395, 37.801044349367366 ], [ -122.41542935371395, 37.801044349367366 ], [ -122.41542935371399, 37.801044349367366 ] ] ] }, "properties": { "class": "school" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41217851638794, 37.794355438108134 ], [ -122.41147041320801, 37.79444445801387 ], [ -122.41139531135559, 37.794071421501364 ], [ -122.41210341453552, 37.793982401146124 ], [ -122.41217851638794, 37.794355438108134 ], [ -122.41217851638794, 37.794355438108134 ], [ -122.41217851638794, 37.794355438108134 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41142749786377, 37.79774659682308 ], [ -122.41097688674927, 37.79780170186684 ], [ -122.41096079349518, 37.79772540256451 ], [ -122.41090178489686, 37.797733880268694 ], [ -122.41090714931488, 37.79774659682308 ], [ -122.4107301235199, 37.797767791075536 ], [ -122.4106764793396, 37.797488026453344 ], [ -122.41135776042938, 37.7974032490859 ], [ -122.41142749786377, 37.79774659682308 ], [ -122.41142749786377, 37.79774659682308 ], [ -122.41142749786377, 37.79774659682308 ] ] ] }, "properties": { "class": "school" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42046654224396, 37.80168014591058 ], [ -122.4198228120804, 37.80175644112801 ], [ -122.41976380348207, 37.801451259785495 ], [ -122.42040753364564, 37.801374964252865 ], [ -122.42046654224396, 37.80168014591058 ], [ -122.42046654224396, 37.80168014591058 ], [ -122.42046654224396, 37.80168014591058 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41716206073761, 37.80127747540201 ], [ -122.41673290729523, 37.801336816456995 ], [ -122.41665244102478, 37.800955337414585 ], [ -122.41708695888519, 37.80090023472337 ], [ -122.41716206073761, 37.80127747540201 ], [ -122.41716206073761, 37.80127747540201 ], [ -122.41716206073761, 37.80127747540201 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42874920368195, 37.79171446544581 ], [ -122.42868483066559, 37.79178653176325 ], [ -122.42857754230499, 37.79179501014891 ], [ -122.42848098278046, 37.791778053376625 ], [ -122.42838978767395, 37.79172294383974 ], [ -122.42833077907562, 37.79166783426175 ], [ -122.42823421955109, 37.79163815985659 ], [ -122.42821276187897, 37.791438917113226 ], [ -122.42865264415741, 37.791371089673774 ], [ -122.42874920368195, 37.79171446544578 ], [ -122.42874920368195, 37.79171446544578 ], [ -122.42874920368195, 37.79171446544581 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41181910037994, 37.79257077832038 ], [ -122.41115391254425, 37.79265132209003 ], [ -122.41112172603607, 37.79265556123335 ], [ -122.41106271743774, 37.792350342291314 ], [ -122.4112343788147, 37.79232914648466 ], [ -122.41125047206879, 37.792426647145035 ], [ -122.41133630275726, 37.792418168831844 ], [ -122.41134703159332, 37.792490234462925 ], [ -122.41151869297029, 37.79246903869637 ], [ -122.4115025997162, 37.792392733886466 ], [ -122.41177618503572, 37.79236305977241 ], [ -122.41181910037996, 37.79257077832038 ], [ -122.41181910037996, 37.79257077832038 ], [ -122.41181910037994, 37.79257077832038 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41066038608551, 37.795945063138014 ], [ -122.41011321544649, 37.79601712532894 ], [ -122.41006493568422, 37.79579246061932 ], [ -122.41035461425783, 37.79575430994039 ], [ -122.41032779216768, 37.7956483357289 ], [ -122.41043508052827, 37.79563561881328 ], [ -122.41046726703648, 37.7958009385453 ], [ -122.41062819957737, 37.79577974372853 ], [ -122.41066038608555, 37.795945063138014 ], [ -122.41066038608555, 37.795945063138014 ], [ -122.41066038608551, 37.795945063138014 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42185592651367, 37.7912863052869 ], [ -122.42152333259583, 37.79132869749249 ], [ -122.42145895957947, 37.79098108068856 ], [ -122.42178082466125, 37.79094716676645 ], [ -122.42185592651367, 37.7912863052869 ], [ -122.42185592651367, 37.7912863052869 ], [ -122.42185592651367, 37.7912863052869 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4319839477539, 37.80201499655647 ], [ -122.43191957473755, 37.80173948664206 ], [ -122.4319839477539, 37.801735248019966 ], [ -122.4319839477539, 37.80201499655647 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41780042648315, 37.790845424906784 ], [ -122.41750538349152, 37.79087933887559 ], [ -122.41743564605713, 37.79050628436279 ], [ -122.41772532463074, 37.79046813095418 ], [ -122.41780042648315, 37.790845424906784 ], [ -122.41780042648315, 37.790845424906784 ], [ -122.41780042648315, 37.790845424906784 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.43191957473755, 37.8019810876994 ], [ -122.43156552314758, 37.80202771237386 ], [ -122.43150651454926, 37.801735248019966 ], [ -122.43186056613922, 37.801688623160864 ], [ -122.43191957473755, 37.8019810876994 ], [ -122.43191957473755, 37.8019810876994 ], [ -122.43191957473755, 37.8019810876994 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41805255413055, 37.80307464049579 ], [ -122.41778433322906, 37.80310854885083 ], [ -122.41770923137665, 37.80273555608927 ], [ -122.41797745227812, 37.80270164756298 ], [ -122.41805255413055, 37.80307464049579 ], [ -122.41805255413055, 37.80307464049579 ], [ -122.41805255413055, 37.80307464049579 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41275250911713, 37.80222268796642 ], [ -122.41218388080598, 37.8022905054432 ], [ -122.41214096546175, 37.80210400723224 ], [ -122.41251111030579, 37.80205738260592 ], [ -122.41275250911713, 37.80222268796642 ], [ -122.41275250911713, 37.80222268796642 ], [ -122.41275250911713, 37.80222268796642 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40967869758606, 37.79264284380264 ], [ -122.40942656993866, 37.79267675694643 ], [ -122.40935683250427, 37.79232914648466 ], [ -122.40960896015167, 37.79229523318131 ], [ -122.40967869758606, 37.79264284380264 ], [ -122.40967869758606, 37.79264284380264 ], [ -122.40967869758606, 37.79264284380264 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41040825843811, 37.792562300023725 ], [ -122.41016149520874, 37.79259197405775 ], [ -122.41009175777437, 37.7922486023638 ], [ -122.41033852100372, 37.792218928191865 ], [ -122.41040825843811, 37.792562300023725 ], [ -122.41040825843811, 37.792562300023725 ], [ -122.41040825843811, 37.792562300023725 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4209600687027, 37.79590691253789 ], [ -122.42054164409637, 37.79595778000036 ], [ -122.42050409317017, 37.79576278787075 ], [ -122.42092251777649, 37.79571615924177 ], [ -122.4209600687027, 37.79590691253789 ], [ -122.4209600687027, 37.79590691253789 ], [ -122.4209600687027, 37.79590691253789 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42153406143188, 37.795313456221336 ], [ -122.4210673570633, 37.79537280206753 ], [ -122.4210298061371, 37.79520748137745 ], [ -122.42150187492372, 37.79514813539847 ], [ -122.4215340614319, 37.795313456221336 ], [ -122.4215340614319, 37.795313456221336 ], [ -122.42153406143188, 37.795313456221336 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42172718048096, 37.79624178935534 ], [ -122.42129802703856, 37.79629689552161 ], [ -122.42126584053038, 37.796135815843115 ], [ -122.42169499397278, 37.79608070955667 ], [ -122.42172718048096, 37.79624178935534 ], [ -122.42172718048096, 37.79624178935534 ], [ -122.42172718048096, 37.79624178935534 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42262303829193, 37.79298197454004 ], [ -122.42223680019379, 37.79302436577279 ], [ -122.42219924926758, 37.792846322431856 ], [ -122.42258548736572, 37.79279969196215 ], [ -122.42262303829193, 37.79298197454004 ], [ -122.42262303829193, 37.79298197454004 ], [ -122.42262303829193, 37.79298197454004 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41158306598663, 37.789298083524535 ], [ -122.41139531135559, 37.78931928020073 ], [ -122.4113255739212, 37.788954696523255 ], [ -122.41151332855225, 37.78892926038561 ], [ -122.41158306598663, 37.789298083524535 ], [ -122.41158306598663, 37.789298083524535 ], [ -122.41158306598663, 37.789298083524535 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41376101970673, 37.79134989358618 ], [ -122.41350889205933, 37.79138380732341 ], [ -122.41345524787903, 37.79112521468376 ], [ -122.41370737552643, 37.79109130082786 ], [ -122.41376101970673, 37.79134989358618 ], [ -122.41376101970673, 37.79134989358618 ], [ -122.41376101970673, 37.79134989358618 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41763949394226, 37.7965088419319 ], [ -122.41729080677032, 37.796551231141 ], [ -122.41728007793425, 37.79654699222118 ], [ -122.41726934909819, 37.79653851438082 ], [ -122.41723716259001, 37.79639015201707 ], [ -122.417414188385, 37.79636895736935 ], [ -122.4174517393112, 37.796377435229154 ], [ -122.41751074790953, 37.796373196299385 ], [ -122.41754293441771, 37.796373196299385 ], [ -122.41756439208983, 37.79636471843907 ], [ -122.4175590276718, 37.79635624057777 ], [ -122.41754829883574, 37.796347762715534 ], [ -122.41754829883574, 37.79633928485233 ], [ -122.41759657859801, 37.796335045920344 ], [ -122.41763949394225, 37.7965088419319 ], [ -122.41763949394225, 37.7965088419319 ], [ -122.41763949394226, 37.7965088419319 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41129338741302, 37.79200273029387 ], [ -122.41126656532289, 37.79200696947442 ], [ -122.41127729415895, 37.79206207879947 ], [ -122.41118609905244, 37.79207479633018 ], [ -122.41120219230652, 37.79215534064047 ], [ -122.41101980209352, 37.792176536497024 ], [ -122.41097688674928, 37.791943381740616 ], [ -122.41127729415895, 37.7919094682602 ], [ -122.41129338741302, 37.79200273029387 ], [ -122.41129338741302, 37.79200273029387 ], [ -122.41129338741302, 37.79200273029387 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4095606803894, 37.79934462640321 ], [ -122.40938901901244, 37.79937005895526 ], [ -122.40933001041412, 37.7990140024299 ], [ -122.40948557853699, 37.79899280853499 ], [ -122.4095606803894, 37.79934462640321 ], [ -122.4095606803894, 37.79934462640321 ], [ -122.4095606803894, 37.79934462640321 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4204021692276, 37.80135377103535 ], [ -122.42003202438356, 37.80139615746429 ], [ -122.41999983787538, 37.80124356620636 ], [ -122.42037534713747, 37.801196941036885 ], [ -122.4204021692276, 37.80135377103535 ], [ -122.4204021692276, 37.80135377103535 ], [ -122.4204021692276, 37.80135377103535 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41294026374817, 37.79792038951381 ], [ -122.41275787353517, 37.79794158371643 ], [ -122.41269886493684, 37.79762790889688 ], [ -122.41287589073183, 37.79760671460429 ], [ -122.41294026374818, 37.79792038951381 ], [ -122.41294026374818, 37.79792038951381 ], [ -122.41294026374817, 37.79792038951381 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41159915924072, 37.80099772407214 ], [ -122.41147577762604, 37.801010440064665 ], [ -122.41144895553589, 37.801010440064665 ], [ -122.41142749786377, 37.80099772407214 ], [ -122.41119146347046, 37.800828177295934 ], [ -122.41154551506042, 37.80078155186425 ], [ -122.41159915924074, 37.80099772407214 ], [ -122.41159915924074, 37.80099772407214 ], [ -122.41159915924072, 37.80099772407214 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42728471755981, 37.791472830809646 ], [ -122.42710769176483, 37.79150250528121 ], [ -122.42704331874846, 37.791235434608055 ], [ -122.42722570896147, 37.791209999255514 ], [ -122.4272847175598, 37.791472830809646 ], [ -122.4272847175598, 37.791472830809646 ], [ -122.42728471755981, 37.791472830809646 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4319839477539, 37.80223116515443 ], [ -122.43179082870483, 37.802256596712596 ], [ -122.43173718452454, 37.8020107579502 ], [ -122.43193030357361, 37.80198532630738 ], [ -122.4319839477539, 37.80222268796642 ], [ -122.4319839477539, 37.80223116515443 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41171717643738, 37.79201544783479 ], [ -122.41146504878998, 37.792045122088425 ], [ -122.41145431995392, 37.791985773569245 ], [ -122.41140067577362, 37.79199425193203 ], [ -122.4113792181015, 37.791896750701035 ], [ -122.4116849899292, 37.79186283719924 ], [ -122.41171717643738, 37.79201544783479 ], [ -122.41171717643738, 37.79201544783479 ], [ -122.41171717643738, 37.79201544783479 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41252183914185, 37.79150674449044 ], [ -122.41246283054352, 37.79151522290824 ], [ -122.41231799125673, 37.790769118420094 ], [ -122.41237163543703, 37.79076063991673 ], [ -122.41237699985504, 37.790769118420094 ], [ -122.41252183914185, 37.79150674449044 ], [ -122.41252183914185, 37.79150674449044 ], [ -122.41252183914185, 37.79150674449044 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4193400144577, 37.79765334203998 ], [ -122.41887867450714, 37.797708447153305 ], [ -122.41886794567108, 37.79764062546953 ], [ -122.41913080215454, 37.79761095346328 ], [ -122.41912543773653, 37.79756856486228 ], [ -122.41931855678558, 37.79754737055262 ], [ -122.4193400144577, 37.79765334203998 ], [ -122.4193400144577, 37.79765334203998 ], [ -122.4193400144577, 37.79765334203998 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41430819034576, 37.788954696523255 ], [ -122.41419553756714, 37.78896741458879 ], [ -122.41413116455078, 37.788619786676236 ], [ -122.41423845291138, 37.78860706855088 ], [ -122.41430819034576, 37.788954696523255 ], [ -122.41430819034576, 37.788954696523255 ], [ -122.41430819034576, 37.788954696523255 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42697358131409, 37.79151946211675 ], [ -122.42681801319122, 37.7915364189484 ], [ -122.42677509784698, 37.79130750139274 ], [ -122.42693603038788, 37.79129054450855 ], [ -122.42697358131409, 37.79151946211675 ], [ -122.42697358131409, 37.79151946211675 ], [ -122.42697358131409, 37.79151946211675 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41545081138611, 37.80435043162762 ], [ -122.41518259048462, 37.804380100926586 ], [ -122.41515576839447, 37.80424446974821 ], [ -122.41542935371399, 37.80421480039474 ], [ -122.41545081138612, 37.80435043162762 ], [ -122.41545081138612, 37.80435043162762 ], [ -122.41545081138611, 37.80435043162762 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42048799991608, 37.7959196294068 ], [ -122.42023587226866, 37.79594930209237 ], [ -122.42020905017853, 37.79580941647031 ], [ -122.42046117782593, 37.79577974372853 ], [ -122.42048799991608, 37.7959196294068 ], [ -122.42048799991608, 37.7959196294068 ], [ -122.42048799991608, 37.7959196294068 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41200685501099, 37.80282032733683 ], [ -122.41185665130614, 37.802837281574696 ], [ -122.41180837154388, 37.80260839903546 ], [ -122.41196393966675, 37.80258720617189 ], [ -122.41200685501099, 37.80282032733683 ], [ -122.41200685501099, 37.80282032733683 ], [ -122.41200685501099, 37.80282032733683 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42590069770813, 37.80571096865078 ], [ -122.42591142654419, 37.80569401507261 ], [ -122.4259865283966, 37.80571096865078 ], [ -122.42590069770813, 37.80571096865078 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41053700447083, 37.8046979855249 ], [ -122.41019368171692, 37.804740370034615 ], [ -122.4101722240448, 37.80464288562588 ], [ -122.41052091121674, 37.80460050106022 ], [ -122.41053700447083, 37.8046979855249 ], [ -122.41053700447083, 37.8046979855249 ], [ -122.41053700447083, 37.8046979855249 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41080522537231, 37.80058657246742 ], [ -122.41049945354462, 37.800374637756676 ], [ -122.41076231002808, 37.80034072814651 ], [ -122.41080522537231, 37.80058657246742 ], [ -122.41080522537231, 37.80058657246742 ], [ -122.41080522537231, 37.80058657246742 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40996837615967, 37.799874469428296 ], [ -122.40988254547119, 37.799887185614196 ], [ -122.4098128080368, 37.79951417658475 ], [ -122.40989863872528, 37.79950569908492 ], [ -122.40996837615967, 37.799874469428296 ], [ -122.40996837615967, 37.799874469428296 ], [ -122.40996837615967, 37.799874469428296 ] ] ] }, "properties": { "class": "parking" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4247795343399, 37.800222044388384 ], [ -122.42465615272522, 37.80023899922264 ], [ -122.42461323738098, 37.80002282479424 ], [ -122.4247419834137, 37.800010108631696 ], [ -122.4247795343399, 37.800222044388384 ], [ -122.4247795343399, 37.800222044388384 ], [ -122.4247795343399, 37.800222044388384 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41234481334686, 37.80255753615264 ], [ -122.41221606731415, 37.80257449045081 ], [ -122.41217851638794, 37.80236256144402 ], [ -122.41230189800262, 37.80234560709723 ], [ -122.41234481334686, 37.80255753615264 ], [ -122.41234481334686, 37.80255753615264 ], [ -122.41234481334686, 37.80255753615264 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42111027240753, 37.795843328160586 ], [ -122.42098689079285, 37.79585604504041 ], [ -122.42094397544861, 37.7956483357289 ], [ -122.4210673570633, 37.79563137984094 ], [ -122.42111027240753, 37.795843328160586 ], [ -122.42111027240753, 37.795843328160586 ], [ -122.42111027240753, 37.795843328160586 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41250574588776, 37.80253634327446 ], [ -122.41238772869109, 37.80255329757749 ], [ -122.41234481334685, 37.802341368509886 ], [ -122.41246819496153, 37.80232865274652 ], [ -122.41250574588774, 37.80253634327446 ], [ -122.41250574588774, 37.80253634327446 ], [ -122.41250574588776, 37.80253634327446 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41267204284668, 37.8025151503902 ], [ -122.412548661232, 37.80253210469809 ], [ -122.41251111030579, 37.802324414158235 ], [ -122.41262912750244, 37.80230745980266 ], [ -122.4126720428467, 37.8025151503902 ], [ -122.4126720428467, 37.8025151503902 ], [ -122.41267204284668, 37.8025151503902 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41079986095428, 37.80098500807743 ], [ -122.41079449653625, 37.801010440064665 ], [ -122.4107837677002, 37.80103163338067 ], [ -122.41076767444612, 37.801044349367366 ], [ -122.41074085235597, 37.80105706535187 ], [ -122.41070866584779, 37.801061304012876 ], [ -122.41067647933961, 37.80105706535187 ], [ -122.41064429283144, 37.801044349367366 ], [ -122.41062283515932, 37.801023156054995 ], [ -122.41061747074129, 37.80099772407214 ], [ -122.41061747074129, 37.80097229208053 ], [ -122.41062819957735, 37.80095957608142 ], [ -122.41064429283144, 37.800938382744725 ], [ -122.41068720817567, 37.80088751871187 ], [ -122.41076231002809, 37.80093414407668 ], [ -122.41078913211824, 37.80095957608142 ], [ -122.4107998609543, 37.80098500807743 ], [ -122.4107998609543, 37.80098500807743 ], [ -122.41079986095428, 37.80098500807743 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41297245025635, 37.797076855312966 ], [ -122.4128383398056, 37.79709381086916 ], [ -122.41280615329742, 37.796958166310716 ], [ -122.41294026374817, 37.79694121072341 ], [ -122.41297245025635, 37.797076855312966 ], [ -122.41297245025635, 37.797076855312966 ], [ -122.41297245025635, 37.797076855312966 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42043435573578, 37.79577126580011 ], [ -122.42023050785066, 37.795796699582425 ], [ -122.42021441459657, 37.79571615924177 ], [ -122.4204182624817, 37.79569072543175 ], [ -122.42043435573578, 37.79577126580011 ], [ -122.42043435573578, 37.79577126580011 ], [ -122.42043435573578, 37.79577126580011 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41240918636322, 37.792426647145035 ], [ -122.41225898265839, 37.79244360376852 ], [ -122.41224825382233, 37.792380016410455 ], [ -122.41239845752716, 37.79235882061229 ], [ -122.41240918636322, 37.792426647145035 ], [ -122.41240918636322, 37.792426647145035 ], [ -122.41240918636322, 37.792426647145035 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.412189245224, 37.79245208207878 ], [ -122.4120444059372, 37.7924732778502 ], [ -122.41202831268312, 37.79240969051768 ], [ -122.41217851638795, 37.792392733886466 ], [ -122.41218924522401, 37.79245208207878 ], [ -122.41218924522401, 37.79245208207878 ], [ -122.412189245224, 37.79245208207878 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41280615329742, 37.80271860182807 ], [ -122.41275787353516, 37.80272284039373 ], [ -122.41272568702698, 37.80254058185058 ], [ -122.41276860237122, 37.80253634327446 ], [ -122.41280615329742, 37.80271860182807 ], [ -122.41280615329742, 37.80271860182807 ], [ -122.41280615329742, 37.80271860182807 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41285979747772, 37.802710124696034 ], [ -122.41281151771545, 37.80271860182807 ], [ -122.41277933120728, 37.80253634327446 ], [ -122.41282224655151, 37.80253210469809 ], [ -122.41285979747772, 37.802710124696034 ], [ -122.41285979747772, 37.802710124696034 ], [ -122.41285979747772, 37.802710124696034 ] ] ] }, "properties": { "class": "pitch" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41219460964203, 37.791985773569245 ], [ -122.41214632987976, 37.79199425193205 ], [ -122.41214096546175, 37.79197305602321 ], [ -122.412189245224, 37.79196881684073 ], [ -122.41219460964203, 37.791985773569245 ], [ -122.41219460964203, 37.791985773569245 ], [ -122.41219460964203, 37.791985773569245 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41209805011749, 37.79199849111309 ], [ -122.41204977035524, 37.79200273029387 ], [ -122.41204440593721, 37.791981534387475 ], [ -122.41209268569948, 37.79197729520547 ], [ -122.41209805011749, 37.79199849111309 ], [ -122.41209805011749, 37.79199849111309 ], [ -122.41209805011749, 37.79199849111309 ] ] ] }, "properties": { "class": "park" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.80551176386163 ], [ -122.40958750247955, 37.80551176386163 ], [ -122.40958750247955, 37.80551176386163 ], [ -122.40958750247955, 37.80551176386163 ], [ -122.40958750247955, 37.78801355359897 ], [ -122.40958750247955, 37.80551176386163 ], [ -122.43172645568848, 37.80551176386163 ], [ -122.43172645568848, 37.80551176386163 ], [ -122.43172645568848, 37.80551176386163 ], [ -122.43172645568848, 37.80551176386163 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.80551176386163 ], [ -122.43172645568848, 37.78801355359897 ], [ -122.43172645568848, 37.80551176386163 ], [ -122.43172645568848, 37.78801355359897 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41073548793793, 37.800417024747446 ], [ -122.41071939468384, 37.80046365040925 ], [ -122.41066038608551, 37.80045093432258 ], [ -122.41063356399538, 37.800417024747446 ], [ -122.41068184375763, 37.800395831255116 ], [ -122.41073548793794, 37.800417024747446 ], [ -122.41073548793794, 37.800417024747446 ], [ -122.41073548793793, 37.800417024747446 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4106764793396, 37.797488026453316 ], [ -122.41059064865112, 37.797500743050065 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42149651050568, 37.80330352159015 ], [ -122.42159307003023, 37.80351120937674 ], [ -122.42170572280884, 37.80357478715385 ], [ -122.4218773841858, 37.80360445676443 ], [ -122.42223143577577, 37.8035875027027 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41996765136719, 37.79620363890844 ], [ -122.41783797740936, 37.79647493054711 ], [ -122.41766095161438, 37.79650036408717 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41993546485901, 37.79603408112835 ], [ -122.4178057909012, 37.79630113445578 ], [ -122.41762340068819, 37.796326568055655 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42317020893097, 37.7972040218895 ], [ -122.42319703102112, 37.797318471621196 ], [ -122.42319166660309, 37.797318471621196 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42300391197205, 37.797314232745414 ], [ -122.42307364940643, 37.79730575499309 ], [ -122.42307901382446, 37.79733118824711 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42313802242279, 37.79686491053231 ], [ -122.42310583591461, 37.79686914943388 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41827249526978, 37.80348153972869 ], [ -122.41839051246643, 37.80405373798221 ], [ -122.41847634315491, 37.80414274620096 ], [ -122.4185460805893, 37.80413426923238 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42148578166962, 37.8028923828208 ], [ -122.42155015468599, 37.80322722797084 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41452276706696, 37.796983599684395 ], [ -122.41449058055878, 37.796835238214484 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41538643836975, 37.798017882795456 ], [ -122.41534352302551, 37.79781441840957 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41532742977142, 37.79772540256451 ], [ -122.41528451442719, 37.79752617623693 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41532742977142, 37.79781865725665 ], [ -122.41531133651733, 37.79772964141673 ] ] }, "properties": { "class": "fence" } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41495728492737, 37.80557533991654 ], [ -122.41495192050935, 37.80556262470994 ], [ -122.41506993770601, 37.805545671097704 ], [ -122.41507530212402, 37.80557533991654 ], [ -122.41495728492737, 37.80557533991654 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42595970630646, 37.80552871748163 ], [ -122.42588996887207, 37.80557533991654 ], [ -122.42585778236389, 37.80557533991654 ], [ -122.42580950260164, 37.805532955885994 ], [ -122.42578804492952, 37.80554990950113 ], [ -122.42575585842134, 37.80552447907698 ], [ -122.42585241794588, 37.80546090297828 ], [ -122.42587924003601, 37.805482095017254 ], [ -122.42590069770813, 37.8054693797946 ], [ -122.42595970630646, 37.80552871748163 ], [ -122.42595970630646, 37.80552871748163 ], [ -122.42595970630646, 37.80552871748163 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41540789604187, 37.80557533991654 ], [ -122.4153918027878, 37.805507525456015 ], [ -122.41583168506624, 37.80544818775196 ], [ -122.41583704948427, 37.80546514138657 ], [ -122.4158638715744, 37.80546090297828 ], [ -122.41589069366455, 37.80557533991654 ], [ -122.41540789604187, 37.80557533991654 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42577195167542, 37.805477856609954 ], [ -122.42573440074922, 37.80550328705019 ], [ -122.42569684982301, 37.80546937979462 ], [ -122.42573440074922, 37.80544394934274 ], [ -122.42577195167542, 37.805477856609954 ], [ -122.42577195167542, 37.805477856609954 ], [ -122.42577195167542, 37.805477856609954 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42244064807892, 37.80557533991654 ], [ -122.42244064807892, 37.80557533991654 ], [ -122.42359399795532, 37.80543971093325 ], [ -122.4236261844635, 37.80557533991654 ], [ -122.42244064807892, 37.80557533991654 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42045044898987, 37.80557533991654 ], [ -122.42041826248169, 37.80541851888209 ], [ -122.42073476314545, 37.80537613476155 ], [ -122.42077767848969, 37.80557533991654 ], [ -122.42045044898987, 37.80557533991654 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42442011833191, 37.805558386307254 ], [ -122.42426455020905, 37.80556686311238 ], [ -122.42410361766815, 37.805558386307254 ], [ -122.42394268512726, 37.80552447907698 ], [ -122.42381930351257, 37.80548633342432 ], [ -122.42388367652893, 37.80537613476155 ], [ -122.42399096488953, 37.80541004205992 ], [ -122.4241304397583, 37.805435472523484 ], [ -122.42426455020905, 37.80544394934274 ], [ -122.42440402507783, 37.805435472523484 ], [ -122.42442011833191, 37.805558386307254 ], [ -122.42442011833191, 37.805558386307254 ], [ -122.42442011833191, 37.805558386307254 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42793917655945, 37.80557533991654 ], [ -122.42793917655945, 37.80557533991654 ], [ -122.42793381214143, 37.80554990950113 ], [ -122.42819130420686, 37.805499048644066 ], [ -122.42815375328065, 37.805397326824874 ], [ -122.42837369441988, 37.805354942692176 ], [ -122.42838442325593, 37.80538461158759 ], [ -122.42850780487062, 37.80535918110652 ], [ -122.428577542305, 37.80557533991654 ], [ -122.42793917655945, 37.80557533991654 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41589069366455, 37.80557533991654 ], [ -122.4158638715744, 37.80546090297828 ], [ -122.4158638715744, 37.80544394934274 ], [ -122.41682410240173, 37.805325273784796 ], [ -122.41687774658205, 37.80557533991654 ], [ -122.41589069366455, 37.80557533991654 ], [ -122.41673827171326, 37.80557533991654 ], [ -122.41673290729524, 37.80554143269405 ], [ -122.41671144962312, 37.80554143269405 ], [ -122.41670608520509, 37.80549481023774 ], [ -122.41668462753297, 37.80549481023774 ], [ -122.41667926311494, 37.8054693797946 ], [ -122.41666853427888, 37.8054693797946 ], [ -122.41667926311494, 37.80553719429016 ], [ -122.41635739803316, 37.80557533991654 ], [ -122.41589069366455, 37.80557533991654 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41711378097534, 37.80557533991654 ], [ -122.41706550121309, 37.80532951220087 ], [ -122.41717278957368, 37.80531679695196 ], [ -122.41756439208986, 37.80557533991654 ], [ -122.41711378097534, 37.80557533991654 ], [ -122.417408823967, 37.80557533991654 ], [ -122.41734981536867, 37.80553719429016 ], [ -122.41732299327852, 37.80556262470994 ], [ -122.41732299327852, 37.80557533991654 ], [ -122.41711378097534, 37.80557533991654 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41147577762604, 37.80557533991654 ], [ -122.41142749786377, 37.805354942692176 ], [ -122.41174936294556, 37.80531255853515 ], [ -122.41180837154388, 37.80557533991654 ], [ -122.41147577762604, 37.80557533991654 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41512358188629, 37.80536341952066 ], [ -122.41372346878053, 37.80553295588602 ], [ -122.41370201110841, 37.80543971093325 ], [ -122.41510212421417, 37.80526593593434 ], [ -122.41512358188629, 37.80536341952066 ], [ -122.41512358188629, 37.80536341952066 ], [ -122.41512358188629, 37.80536341952066 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.43181228637695, 37.80532951220087 ], [ -122.43179082870483, 37.80533375061669 ], [ -122.43177473545076, 37.805278651192026 ], [ -122.43181228637695, 37.805274412773024 ], [ -122.43181228637695, 37.80532951220087 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42512285709381, 37.805325273784796 ], [ -122.42501556873322, 37.80541004205992 ], [ -122.42489218711853, 37.80546514138659 ], [ -122.4247634410858, 37.80551176386163 ], [ -122.42459177970885, 37.80554567109773 ], [ -122.42454886436461, 37.80541428047113 ], [ -122.42469906806944, 37.80537613476155 ], [ -122.42480635643005, 37.80533375061669 ], [ -122.42491900920866, 37.805278651192026 ], [ -122.42500483989716, 37.80522355172624 ], [ -122.42512285709381, 37.805325273784796 ], [ -122.42512285709381, 37.805325273784796 ], [ -122.42512285709381, 37.805325273784796 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42657124996185, 37.80528712802926 ], [ -122.42628693580627, 37.80528712802926 ], [ -122.42628693580627, 37.80521083645907 ], [ -122.42638885974884, 37.80521083645907 ], [ -122.42638885974884, 37.805248982254014 ], [ -122.42645859718321, 37.805248982254014 ], [ -122.42645859718321, 37.80521083645907 ], [ -122.42657124996184, 37.80521083645907 ], [ -122.42657124996184, 37.80528712802926 ], [ -122.42657124996184, 37.80528712802926 ], [ -122.42657124996185, 37.80528712802926 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41802036762238, 37.80540156523678 ], [ -122.41782188415527, 37.805422757292796 ], [ -122.41773068904878, 37.80535918110652 ], [ -122.41772532463075, 37.80534222744762 ], [ -122.41781115531923, 37.80532951220087 ], [ -122.41781651973726, 37.80534222744762 ], [ -122.4178969860077, 37.80533375061669 ], [ -122.41786479949951, 37.8051938827661 ], [ -122.41797745227814, 37.80518116749381 ], [ -122.41802036762238, 37.80540156523678 ], [ -122.41802036762238, 37.80540156523678 ], [ -122.41802036762238, 37.80540156523678 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41101443767548, 37.80546514138659 ], [ -122.41084277629852, 37.805482095017275 ], [ -122.4108374118805, 37.80544818775199 ], [ -122.41063356399538, 37.80546937979462 ], [ -122.41057455539705, 37.805164213794036 ], [ -122.4109447002411, 37.80512182952755 ], [ -122.41101443767548, 37.80546514138659 ], [ -122.41101443767548, 37.80546514138659 ], [ -122.41101443767548, 37.80546514138659 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.416512966156, 37.80518116749381 ], [ -122.4153596162796, 37.80532951220087 ], [ -122.41533815860748, 37.805227790148145 ], [ -122.41649150848389, 37.805079445236736 ], [ -122.416512966156, 37.80518116749381 ], [ -122.416512966156, 37.80518116749381 ], [ -122.416512966156, 37.80518116749381 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41412580013275, 37.804935338466066 ], [ -122.41412043571474, 37.80495653065587 ], [ -122.41410434246065, 37.80495653065587 ], [ -122.41409897804262, 37.80506249151361 ], [ -122.4141150712967, 37.80506672994478 ], [ -122.4141150712967, 37.805092160526534 ], [ -122.41409361362459, 37.805092160526534 ], [ -122.41408824920656, 37.80520235961308 ], [ -122.41410434246065, 37.80520235961308 ], [ -122.41410434246065, 37.805261697514624 ], [ -122.41392731666566, 37.805253220674466 ], [ -122.41392731666566, 37.8051938827661 ], [ -122.41394877433778, 37.8051938827661 ], [ -122.41395413875581, 37.80508368366691 ], [ -122.41393804550172, 37.80508368366691 ], [ -122.41393804550172, 37.80505825308222 ], [ -122.41395413875581, 37.80505825308222 ], [ -122.41396486759187, 37.80494805378067 ], [ -122.41394877433778, 37.80494805378067 ], [ -122.41395413875581, 37.804931100027396 ], [ -122.41412580013277, 37.804935338466066 ], [ -122.41412580013277, 37.804935338466066 ], [ -122.41412580013275, 37.804935338466066 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42615282535553, 37.80513878323706 ], [ -122.42606163024902, 37.805164213794036 ], [ -122.42595970630646, 37.8049522922184 ], [ -122.42605090141296, 37.80492686158845 ], [ -122.42608845233917, 37.80500315345199 ], [ -122.42604553699493, 37.80501586875492 ], [ -122.42606699466705, 37.80506672994478 ], [ -122.42610991001129, 37.80505401465057 ], [ -122.42615282535553, 37.80513878323706 ], [ -122.42615282535553, 37.80513878323706 ], [ -122.42615282535553, 37.80513878323706 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41445302963257, 37.80515573694268 ], [ -122.4142813682556, 37.80518116749381 ], [ -122.4142813682556, 37.805164213794036 ], [ -122.41429746150969, 37.805164213794036 ], [ -122.41427600383757, 37.80505401465057 ], [ -122.41425991058348, 37.80505825308222 ], [ -122.41424918174742, 37.805028584055684 ], [ -122.41426527500151, 37.805028584055684 ], [ -122.41424381732939, 37.804918384709865 ], [ -122.4142277240753, 37.804922623149274 ], [ -122.4142277240753, 37.804905669390145 ], [ -122.41439402103423, 37.80488023874414 ], [ -122.41439938545226, 37.80489719250912 ], [ -122.41438329219817, 37.80490143094975 ], [ -122.41441011428832, 37.80500739188654 ], [ -122.41442620754238, 37.80500739188654 ], [ -122.4144315719604, 37.80503282248878 ], [ -122.41441011428829, 37.80503706092163 ], [ -122.41443693637844, 37.805143021663824 ], [ -122.4144476652145, 37.805143021663824 ], [ -122.41445302963251, 37.80515573694268 ], [ -122.41445302963251, 37.80515573694268 ], [ -122.41445302963257, 37.80515573694268 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42669999599457, 37.80506672994478 ], [ -122.42660880088808, 37.805079445236736 ], [ -122.42659270763399, 37.804998915017194 ], [ -122.42664098739625, 37.80499043814688 ], [ -122.4266302585602, 37.804935338466066 ], [ -122.42658197879793, 37.80494381534272 ], [ -122.42656588554384, 37.80485480808938 ], [ -122.42666244506837, 37.804846331202526 ], [ -122.42669999599458, 37.80506672994478 ], [ -122.42669999599458, 37.80506672994478 ], [ -122.42669999599457, 37.80506672994478 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41483390331268, 37.805134544810045 ], [ -122.41467297077179, 37.8051938827661 ], [ -122.41464078426361, 37.80513878323706 ], [ -122.41465687751769, 37.8051303063828 ], [ -122.41459786891937, 37.80503282248878 ], [ -122.41458177566528, 37.80503706092163 ], [ -122.41456568241121, 37.805011630320855 ], [ -122.41458177566528, 37.80500739188654 ], [ -122.41452276706696, 37.804905669390145 ], [ -122.4145120382309, 37.804909907830286 ], [ -122.41450130939484, 37.80489719250912 ], [ -122.41466224193574, 37.80483785431468 ], [ -122.41466760635376, 37.80485480808938 ], [ -122.41465151309968, 37.80485904653245 ], [ -122.414710521698, 37.80496076909309 ], [ -122.41472661495209, 37.80495653065585 ], [ -122.41474270820618, 37.804977722839574 ], [ -122.41472661495209, 37.804986199711365 ], [ -122.41478025913239, 37.80508368366691 ], [ -122.41479635238647, 37.805079445236736 ], [ -122.41483390331267, 37.805134544810045 ], [ -122.41483390331267, 37.805134544810045 ], [ -122.41483390331268, 37.805134544810045 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42763340473175, 37.80491414627021 ], [ -122.42753148078918, 37.804977722839574 ], [ -122.42744565010071, 37.80489295406824 ], [ -122.42747247219086, 37.804876000302286 ], [ -122.42745101451874, 37.80485480808938 ], [ -122.42749929428099, 37.804825138981116 ], [ -122.42752075195311, 37.804846331202526 ], [ -122.42754757404326, 37.804833615870386 ], [ -122.42763340473174, 37.80491414627021 ], [ -122.42763340473174, 37.80491414627021 ], [ -122.42763340473175, 37.80491414627021 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41603553295135, 37.80507096837568 ], [ -122.41586923599243, 37.805092160526534 ], [ -122.4158638715744, 37.805079445236736 ], [ -122.41587996482849, 37.805075206806336 ], [ -122.41585850715637, 37.80496924596682 ], [ -122.41584241390228, 37.80496924596682 ], [ -122.41583704948427, 37.80494381534272 ], [ -122.41585314273834, 37.80494381534272 ], [ -122.41582632064821, 37.804833615870386 ], [ -122.41581559181215, 37.804833615870386 ], [ -122.41581022739412, 37.80481666209083 ], [ -122.41598188877107, 37.80479546986092 ], [ -122.4159872531891, 37.80481242364534 ], [ -122.41597115993501, 37.80481666209083 ], [ -122.41599261760713, 37.804922623149274 ], [ -122.41600871086122, 37.804918384709865 ], [ -122.41601407527925, 37.80494805378067 ], [ -122.41599798202516, 37.80494805378067 ], [ -122.41601943969728, 37.80505825308222 ], [ -122.41603553295137, 37.80505401465057 ], [ -122.41603553295137, 37.80507096837568 ], [ -122.41603553295137, 37.80507096837568 ], [ -122.41603553295135, 37.80507096837568 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41382002830505, 37.80537189634818 ], [ -122.41369664669037, 37.80538461158762 ], [ -122.41357326507568, 37.80478699296722 ], [ -122.41370201110841, 37.80477003917697 ], [ -122.41382002830507, 37.80537189634818 ], [ -122.41382002830507, 37.80537189634818 ], [ -122.41382002830505, 37.80537189634818 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42814838886261, 37.80481666209083 ], [ -122.42808401584625, 37.80491414627021 ], [ -122.42797136306763, 37.804867523417855 ], [ -122.428035736084, 37.80477003917697 ], [ -122.42806255817413, 37.804782754520026 ], [ -122.42808401584625, 37.80475732383171 ], [ -122.42813766002655, 37.80477851607258 ], [ -122.42812156677248, 37.8048081851996 ], [ -122.42814838886261, 37.80481666209083 ], [ -122.42814838886261, 37.80481666209083 ], [ -122.42814838886261, 37.80481666209083 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41572976112366, 37.80472341623366 ], [ -122.41572976112366, 37.804740370034615 ], [ -122.41571366786958, 37.804740370034615 ], [ -122.41570830345155, 37.80485056964608 ], [ -122.41572439670564, 37.80485056964608 ], [ -122.41571903228761, 37.80488023874414 ], [ -122.41570293903355, 37.804876000302286 ], [ -122.41569757461552, 37.804986199711365 ], [ -122.41571366786961, 37.804986199711365 ], [ -122.41570830345158, 37.80504977621872 ], [ -122.4155312776566, 37.80504129935424 ], [ -122.41553664207463, 37.804981961275594 ], [ -122.41555273532869, 37.804981961275594 ], [ -122.41556346416475, 37.804871761860184 ], [ -122.41554737091069, 37.804871761860184 ], [ -122.41554737091069, 37.804846331202526 ], [ -122.41556346416475, 37.804846331202526 ], [ -122.41556882858278, 37.804736131584754 ], [ -122.41555809974672, 37.804736131584754 ], [ -122.41555809974672, 37.8047191777828 ], [ -122.41572976112367, 37.80472341623366 ], [ -122.41572976112367, 37.80472341623366 ], [ -122.41572976112366, 37.80472341623366 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4148178100586, 37.804748846933656 ], [ -122.41377711296082, 37.80488023874414 ], [ -122.4137556552887, 37.80476580072879 ], [ -122.41479635238647, 37.80463864717042 ], [ -122.4148178100586, 37.804748846933656 ], [ -122.4148178100586, 37.804748846933656 ], [ -122.4148178100586, 37.804748846933656 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42747247219086, 37.80474460848425 ], [ -122.42735445499419, 37.80477851607258 ], [ -122.42730617523193, 37.804676793260924 ], [ -122.42733836174011, 37.80466831635362 ], [ -122.42732226848602, 37.80463864717042 ], [ -122.42738127708435, 37.80462169334611 ], [ -122.42739737033843, 37.80465136253612 ], [ -122.42742419242857, 37.80464288562588 ], [ -122.42747247219084, 37.80474460848425 ], [ -122.42747247219084, 37.80474460848425 ], [ -122.42747247219086, 37.80474460848425 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41508066654205, 37.80521507488171 ], [ -122.41495728492737, 37.805227790148145 ], [ -122.41483390331268, 37.80462593180253 ], [ -122.41496264934541, 37.804613216432486 ], [ -122.41508066654207, 37.80521507488171 ], [ -122.41508066654207, 37.80521507488171 ], [ -122.41508066654205, 37.80521507488171 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42959678173065, 37.8046937470726 ], [ -122.42938220500946, 37.8047191777828 ], [ -122.42936074733734, 37.804613216432486 ], [ -122.42957532405853, 37.80458778568577 ], [ -122.42959678173065, 37.8046937470726 ], [ -122.42959678173065, 37.8046937470726 ], [ -122.42959678173065, 37.8046937470726 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41545617580414, 37.805164213794036 ], [ -122.41533279418945, 37.80518116749381 ], [ -122.4152147769928, 37.804579308768254 ], [ -122.41533815860748, 37.8045623549303 ], [ -122.41545617580414, 37.805164213794036 ], [ -122.41545617580414, 37.805164213794036 ], [ -122.41545617580414, 37.805164213794036 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42601335048676, 37.80477851607258 ], [ -122.42591679096222, 37.80479970830737 ], [ -122.42584705352783, 37.804579308768254 ], [ -122.42593824863434, 37.8045623549303 ], [ -122.42596507072449, 37.80464288562588 ], [ -122.42592215538025, 37.80465136253612 ], [ -122.42593824863432, 37.80470222397696 ], [ -122.42598652839659, 37.8046937470726 ], [ -122.42601335048674, 37.80477851607258 ], [ -122.42601335048674, 37.80477851607258 ], [ -122.42601335048676, 37.80477851607258 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41653442382812, 37.804909907830286 ], [ -122.4164754152298, 37.80491414627021 ], [ -122.41649150848389, 37.804998915017194 ], [ -122.41643249988556, 37.80500739188654 ], [ -122.41599261760712, 37.80470222397696 ], [ -122.41599261760712, 37.80465136253609 ], [ -122.41609454154968, 37.804545401088475 ], [ -122.41652905941008, 37.804846331202526 ], [ -122.41653442382811, 37.804909907830286 ], [ -122.41653442382811, 37.804909907830286 ], [ -122.41653442382812, 37.804909907830286 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42819130420685, 37.804558116470204 ], [ -122.42818593978882, 37.8046640778996 ], [ -122.42806255817413, 37.804659839445335 ], [ -122.42806792259216, 37.804553878009884 ], [ -122.42810010910034, 37.804553878009884 ], [ -122.42810010910034, 37.804524208780705 ], [ -122.4281644821167, 37.80452844724274 ], [ -122.42815911769867, 37.804558116470204 ], [ -122.42819130420686, 37.804558116470204 ], [ -122.42819130420686, 37.804558116470204 ], [ -122.42819130420685, 37.804558116470204 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42912471294403, 37.80474460848425 ], [ -122.4290120601654, 37.804753085382806 ], [ -122.42900669574739, 37.804736131584754 ], [ -122.42884039878847, 37.804753085382806 ], [ -122.42884039878847, 37.80477427762491 ], [ -122.42871165275575, 37.80478699296722 ], [ -122.42869019508362, 37.804659839445335 ], [ -122.42867410182954, 37.804659839445335 ], [ -122.42866337299348, 37.80458778568577 ], [ -122.42867946624756, 37.80458778568577 ], [ -122.42867410182954, 37.804553878009884 ], [ -122.42879748344423, 37.804541162627416 ], [ -122.42880821228029, 37.804634408714705 ], [ -122.42898523807527, 37.804617454889396 ], [ -122.42897450923921, 37.804519970318424 ], [ -122.42908716201784, 37.80450725493011 ], [ -122.42912471294403, 37.80474460848425 ], [ -122.42912471294403, 37.80474460848425 ], [ -122.42912471294403, 37.80474460848425 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4160248041153, 37.804583547227125 ], [ -122.4154132604599, 37.804659839445335 ], [ -122.41539180278778, 37.8045623549303 ], [ -122.41600334644318, 37.8044860626114 ], [ -122.4160248041153, 37.804583547227125 ], [ -122.4160248041153, 37.804583547227125 ], [ -122.4160248041153, 37.804583547227125 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42662489414215, 37.80470646242878 ], [ -122.42653369903564, 37.8047191777828 ], [ -122.42651760578157, 37.80463864717042 ], [ -122.42656588554382, 37.80463017025873 ], [ -122.42655515670776, 37.80457507030913 ], [ -122.42650687694551, 37.804583547227125 ], [ -122.42649078369142, 37.804494539539625 ], [ -122.42658734321596, 37.8044860626114 ], [ -122.42662489414217, 37.80470646242878 ], [ -122.42662489414217, 37.80470646242878 ], [ -122.42662489414215, 37.80470646242878 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42736518383026, 37.80453268570453 ], [ -122.4272471666336, 37.80456659339016 ], [ -122.42719888687134, 37.804469108752045 ], [ -122.42722570896149, 37.804460631820916 ], [ -122.42721498012543, 37.804430962554264 ], [ -122.42727398872375, 37.80441400868229 ], [ -122.42728471755981, 37.80444367795571 ], [ -122.427316904068, 37.80443520102166 ], [ -122.42736518383025, 37.80453268570453 ], [ -122.42736518383025, 37.80453268570453 ], [ -122.42736518383026, 37.80453268570453 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42609918117523, 37.804414008682265 ], [ -122.42599725723267, 37.80442672408664 ], [ -122.42599189281464, 37.80438857786698 ], [ -122.42592215538026, 37.80439705480637 ], [ -122.42592751979828, 37.804430962554264 ], [ -122.42581486701965, 37.80444367795571 ], [ -122.4258041381836, 37.8043673855142 ], [ -122.42608845233919, 37.804341954682855 ], [ -122.42609918117525, 37.804414008682265 ], [ -122.42609918117525, 37.804414008682265 ], [ -122.42609918117523, 37.804414008682265 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42822349071503, 37.804341954682855 ], [ -122.42820739746094, 37.80444791642237 ], [ -122.42808401584625, 37.80443520102166 ], [ -122.42809474468231, 37.8043292392639 ], [ -122.42812693119049, 37.804333477737124 ], [ -122.42813229560852, 37.8043038084194 ], [ -122.42819130420685, 37.8043080468941 ], [ -122.42819130420685, 37.804337716210114 ], [ -122.42822349071503, 37.804341954682855 ], [ -122.42822349071503, 37.804341954682855 ], [ -122.42822349071503, 37.804341954682855 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42655515670776, 37.804358908571395 ], [ -122.42644786834717, 37.8043673855142 ], [ -122.42644250392915, 37.804333477737124 ], [ -122.42637276649477, 37.804337716210114 ], [ -122.42637813091278, 37.80437586245604 ], [ -122.42627084255219, 37.80438433939691 ], [ -122.42626011371613, 37.804312285368546 ], [ -122.4265444278717, 37.80428261604232 ], [ -122.42655515670776, 37.804358908571395 ], [ -122.42655515670776, 37.804358908571395 ], [ -122.42655515670776, 37.804358908571395 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42496192455292, 37.80451149339313 ], [ -122.42472589015962, 37.804541162627416 ], [ -122.42472052574159, 37.804519970318424 ], [ -122.4245971441269, 37.80453268570453 ], [ -122.42460250854494, 37.804553878009884 ], [ -122.42366373538972, 37.8046725548074 ], [ -122.42362082004547, 37.804469108752045 ], [ -122.4246883392334, 37.804333477737124 ], [ -122.42468297481537, 37.804312285368546 ], [ -122.42491900920868, 37.80428261604232 ], [ -122.42496192455292, 37.8045114933931 ], [ -122.42496192455292, 37.8045114933931 ], [ -122.42496192455292, 37.80451149339313 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42991328239441, 37.8043038084194 ], [ -122.42983281612396, 37.804333477737124 ], [ -122.42980062961578, 37.80427837756615 ], [ -122.42988646030426, 37.80424870822632 ], [ -122.42991328239441, 37.8043038084194 ], [ -122.42991328239441, 37.8043038084194 ], [ -122.42991328239441, 37.8043038084194 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42721498012543, 37.80427413908977 ], [ -122.42713451385498, 37.8043504316276 ], [ -122.42702722549438, 37.80427837756615 ], [ -122.4270486831665, 37.80426142365914 ], [ -122.42702186107635, 37.80424023126987 ], [ -122.42705941200256, 37.80420208495388 ], [ -122.42709159851074, 37.80422327735408 ], [ -122.42711305618286, 37.8042063234344 ], [ -122.42721498012543, 37.80427413908977 ], [ -122.42721498012543, 37.80427413908977 ], [ -122.42721498012543, 37.80427413908977 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4137932062149, 37.80434619315537 ], [ -122.41347670555115, 37.80438857786698 ], [ -122.41344451904297, 37.80421903887453 ], [ -122.41376101970673, 37.804176654065614 ], [ -122.41377711296082, 37.804235992791284 ], [ -122.41372346878052, 37.80424446974821 ], [ -122.41373419761658, 37.80428685451822 ], [ -122.41378247737883, 37.80428261604232 ], [ -122.41379320621489, 37.80434619315537 ], [ -122.41379320621489, 37.80434619315537 ], [ -122.4137932062149, 37.80434619315537 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4112343788147, 37.80451149339313 ], [ -122.41116464138031, 37.804519970318424 ], [ -122.41116464138031, 37.80450301646686 ], [ -122.41090714931488, 37.80453268570453 ], [ -122.4108749628067, 37.80437162398523 ], [ -122.4107676744461, 37.80438433939691 ], [ -122.41074085235596, 37.80422327735411 ], [ -122.41095542907715, 37.80419784647312 ], [ -122.41095006465912, 37.804151223168596 ], [ -122.41105198860168, 37.80413850771679 ], [ -122.41105735301971, 37.80417241558338 ], [ -122.4110895395279, 37.8041681771009 ], [ -122.41109490394591, 37.80418089254761 ], [ -122.41113245487212, 37.804176654065614 ], [ -122.41114318370818, 37.80425294670417 ], [ -122.41118073463439, 37.80424870822632 ], [ -122.41123437881468, 37.8045114933931 ], [ -122.41123437881468, 37.8045114933931 ], [ -122.4112343788147, 37.80451149339313 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41164207458496, 37.80482937742587 ], [ -122.41132557392119, 37.804867523417855 ], [ -122.41129338741301, 37.80471070088035 ], [ -122.41135776042938, 37.80470222397696 ], [ -122.41126120090483, 37.80422751583339 ], [ -122.41124510765076, 37.80422751583339 ], [ -122.4112343788147, 37.80415546165205 ], [ -122.41129338741301, 37.80414698468492 ], [ -122.411288022995, 37.80412155377767 ], [ -122.41138994693756, 37.80410883832076 ], [ -122.41139531135558, 37.80413426923238 ], [ -122.4115079641342, 37.80412155377767 ], [ -122.41164207458495, 37.80482937742587 ], [ -122.41164207458495, 37.80482937742587 ], [ -122.41164207458496, 37.80482937742587 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42841124534607, 37.80413850771679 ], [ -122.42837905883789, 37.804159700135244 ], [ -122.42840051651001, 37.804176654065614 ], [ -122.42829322814941, 37.8042402312699 ], [ -122.42821812629698, 37.804159700135244 ], [ -122.42832541465759, 37.80409612286167 ], [ -122.42834687232971, 37.80411731529226 ], [ -122.42837905883789, 37.80410036134828 ], [ -122.42841124534607, 37.80413850771679 ], [ -122.42841124534607, 37.80413850771679 ], [ -122.42841124534607, 37.80413850771679 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4288672208786, 37.8040706919369 ], [ -122.42876529693604, 37.804087645887726 ], [ -122.42875456809998, 37.80405373798221 ], [ -122.42868483066559, 37.80406645344859 ], [ -122.42869555950165, 37.80410459983463 ], [ -122.42858827114105, 37.80412579226283 ], [ -122.42856681346893, 37.804049499492926 ], [ -122.42884576320648, 37.80399863760254 ], [ -122.4288672208786, 37.8040706919369 ], [ -122.4288672208786, 37.8040706919369 ], [ -122.4288672208786, 37.8040706919369 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41524696350098, 37.80394353718175 ], [ -122.41509139537811, 37.80396472965615 ], [ -122.41505920886993, 37.803824859212796 ], [ -122.41506457328796, 37.80382062071037 ], [ -122.41524696350096, 37.80394353718175 ], [ -122.41524696350096, 37.80394353718175 ], [ -122.41524696350098, 37.80394353718175 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42488145828247, 37.804087645887726 ], [ -122.42469370365143, 37.80410883832076 ], [ -122.4246883392334, 37.80407916891281 ], [ -122.42464005947113, 37.804087645887726 ], [ -122.42463469505311, 37.80405797647123 ], [ -122.42442011833192, 37.804087645887726 ], [ -122.42443084716798, 37.80411731529226 ], [ -122.4243611097336, 37.80412579226283 ], [ -122.42436647415163, 37.80416817710093 ], [ -122.42421627044679, 37.804185131029364 ], [ -122.42420554161073, 37.80412579226283 ], [ -122.42411971092224, 37.80413850771679 ], [ -122.42412507534027, 37.80416393861821 ], [ -122.42408215999603, 37.80416817710093 ], [ -122.42408752441405, 37.80419784647312 ], [ -122.42359936237335, 37.80426142365914 ], [ -122.4234491586685, 37.80351968641686 ], [ -122.42394268512726, 37.80345610859232 ], [ -122.42395877838133, 37.803532401975204 ], [ -122.42409288883208, 37.80351544789693 ], [ -122.42407679557799, 37.80344763154491 ], [ -122.42421627044678, 37.80343067744717 ], [ -122.42423236370085, 37.80350273233566 ], [ -122.42451667785645, 37.803464585638736 ], [ -122.42451131343842, 37.80343915449654 ], [ -122.42455422878265, 37.80343491597197 ], [ -122.4245434999466, 37.80338829218581 ], [ -122.42473125457764, 37.80336286101732 ], [ -122.42488145828248, 37.8040876458877 ], [ -122.42488145828248, 37.8040876458877 ], [ -122.42488145828247, 37.804087645887726 ], [ -122.42418944835663, 37.804049499492905 ], [ -122.42415189743042, 37.8038630057236 ], [ -122.42403924465181, 37.80387572122283 ], [ -122.42401242256166, 37.80375704314487 ], [ -122.42413043975831, 37.80374432762521 ], [ -122.4241089820862, 37.80362564933611 ], [ -122.42407143116002, 37.803629887849716 ], [ -122.42406606674199, 37.80358326418665 ], [ -122.42371737957005, 37.80362564933611 ], [ -122.42380857467653, 37.80409612286165 ], [ -122.42418944835664, 37.804049499492905 ], [ -122.42418944835664, 37.804049499492905 ], [ -122.42488145828247, 37.804087645887726 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41450667381287, 37.80306616340459 ], [ -122.41439938545227, 37.80307887904102 ], [ -122.41402924060822, 37.802824565896664 ], [ -122.41402924060822, 37.80279913453407 ], [ -122.41444766521454, 37.802752510346544 ], [ -122.41450667381287, 37.80306616340459 ], [ -122.41450667381287, 37.80306616340459 ], [ -122.41450667381287, 37.80306616340459 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4122428894043, 37.80284999725051 ], [ -122.41211414337158, 37.80286271292414 ], [ -122.41206049919128, 37.80259144474508 ], [ -122.412189245224, 37.80257449045081 ], [ -122.4122428894043, 37.80284999725051 ], [ -122.4122428894043, 37.80284999725051 ], [ -122.4122428894043, 37.80284999725051 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41266131401062, 37.80279913453407 ], [ -122.41226434707642, 37.80284999725051 ], [ -122.41221606731415, 37.80261687617921 ], [ -122.41261303424835, 37.80256601330221 ], [ -122.41266131401062, 37.80279913453407 ], [ -122.41266131401062, 37.80279913453407 ], [ -122.41266131401062, 37.80279913453407 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40950167179108, 37.80257872902474 ], [ -122.40950167179108, 37.80257872902474 ], [ -122.40950167179108, 37.80256601330221 ], [ -122.40950167179108, 37.80257872902474 ], [ -122.40950167179108, 37.80257872902474 ], [ -122.40950167179108, 37.80257872902474 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41288125514984, 37.802510911812625 ], [ -122.41270959377287, 37.80253210469809 ], [ -122.41265594959258, 37.802248119527505 ], [ -122.41276323795319, 37.80223540374806 ], [ -122.4127686023712, 37.802256596712596 ], [ -122.41282761096953, 37.802248119527505 ], [ -122.41288125514983, 37.802510911812625 ], [ -122.41288125514983, 37.802510911812625 ], [ -122.41288125514984, 37.802510911812625 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42451667785645, 37.802239642341455 ], [ -122.42414653301239, 37.802282028262006 ], [ -122.42409288883209, 37.80200651934365 ], [ -122.42445766925812, 37.80196413326501 ], [ -122.4244737625122, 37.80204466679365 ], [ -122.42420017719267, 37.80207857562153 ], [ -122.4242216348648, 37.80218454060837 ], [ -122.42450058460234, 37.802150631829136 ], [ -122.42451667785643, 37.802239642341426 ], [ -122.42451667785643, 37.802239642341426 ], [ -122.42451667785645, 37.802239642341455 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41694748401642, 37.80202771237386 ], [ -122.41686701774599, 37.802036189584236 ], [ -122.41683483123781, 37.80187936103475 ], [ -122.41692066192628, 37.80187088380636 ], [ -122.41694748401642, 37.80202771237386 ], [ -122.41694748401642, 37.80202771237386 ], [ -122.41694748401642, 37.80202771237386 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4168348312378, 37.80200651934365 ], [ -122.4164056777954, 37.802053144002095 ], [ -122.41636276245116, 37.80180306594429 ], [ -122.41679191589355, 37.80175644112801 ], [ -122.4168348312378, 37.80200651934365 ], [ -122.4168348312378, 37.80200651934365 ], [ -122.4168348312378, 37.80200651934365 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40966260433197, 37.80162080513147 ], [ -122.40954995155334, 37.801633521016726 ], [ -122.40951240062714, 37.80143006658992 ], [ -122.40962505340576, 37.80141735066961 ], [ -122.40966260433197, 37.80162080513147 ], [ -122.40966260433197, 37.80162080513147 ], [ -122.40966260433197, 37.80162080513147 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41055309772491, 37.801786111469056 ], [ -122.41009712219238, 37.80183697488311 ], [ -122.4100112915039, 37.80140463474716 ], [ -122.41036534309387, 37.80135800967936 ], [ -122.41043508052826, 37.80170133903446 ], [ -122.4105316400528, 37.801688623160885 ], [ -122.41055309772491, 37.801786111469056 ], [ -122.41055309772491, 37.801786111469056 ], [ -122.41055309772491, 37.801786111469056 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42583096027374, 37.801603850614384 ], [ -122.4257504940033, 37.80161656650256 ], [ -122.42576122283936, 37.80168014591061 ], [ -122.42563247680664, 37.801692861785654 ], [ -122.42564857006072, 37.80179882732586 ], [ -122.42538571357726, 37.80182849764988 ], [ -122.42529988288878, 37.80140039610585 ], [ -122.42538571357726, 37.801391918822475 ], [ -122.42545545101164, 37.80173948664206 ], [ -122.42556810379027, 37.801726770775055 ], [ -122.42548763751982, 37.80131986187471 ], [ -122.42558956146239, 37.80130714593547 ], [ -122.42559492588039, 37.80134953239114 ], [ -122.4257773160934, 37.80132833916636 ], [ -122.4258309602737, 37.801603850614384 ], [ -122.4258309602737, 37.801603850614384 ], [ -122.42583096027374, 37.801603850614384 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41143822669983, 37.80144278250799 ], [ -122.41119682788849, 37.80147245297504 ], [ -122.41115391254425, 37.80123932755579 ], [ -122.41132020950317, 37.801218134299376 ], [ -122.41141140460968, 37.8012859526985 ], [ -122.41143822669981, 37.80144278250799 ], [ -122.41143822669981, 37.80144278250799 ], [ -122.41143822669983, 37.80144278250799 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41479098796844, 37.80110792926797 ], [ -122.41452276706696, 37.801141838525915 ], [ -122.41450130939484, 37.801035872043144 ], [ -122.41476953029633, 37.80100196273655 ], [ -122.41479098796844, 37.80110792926797 ], [ -122.41479098796844, 37.80110792926797 ], [ -122.41479098796844, 37.80110792926797 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42432355880737, 37.801294429994016 ], [ -122.424076795578, 37.80132833916636 ], [ -122.42400705814363, 37.80098076941203 ], [ -122.42425382137299, 37.80095109874748 ], [ -122.42432355880737, 37.801294429994016 ], [ -122.42432355880737, 37.801294429994016 ], [ -122.42432355880737, 37.801294429994016 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41539180278778, 37.80103163338067 ], [ -122.4149090051651, 37.80109521329224 ], [ -122.41486608982086, 37.800879041369654 ], [ -122.41534888744354, 37.80081546127204 ], [ -122.41539180278778, 37.80103163338067 ], [ -122.41539180278778, 37.80103163338067 ], [ -122.41539180278778, 37.80103163338067 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42514431476593, 37.80097653074639 ], [ -122.42471516132355, 37.80103163338067 ], [ -122.42467761039734, 37.80087056402646 ], [ -122.42510676383972, 37.80081122259691 ], [ -122.42514431476593, 37.80097653074639 ], [ -122.42514431476593, 37.80097653074639 ], [ -122.42514431476593, 37.80097653074639 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4251389503479, 37.80080698392156 ], [ -122.42467224597931, 37.800862086682315 ], [ -122.42465078830719, 37.8007434037619 ], [ -122.42511212825777, 37.8006883009126 ], [ -122.4251389503479, 37.80080698392156 ], [ -122.4251389503479, 37.80080698392156 ], [ -122.4251389503479, 37.80080698392156 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4114865064621, 37.80076459715455 ], [ -122.41117000579833, 37.80080274524595 ], [ -122.41105198860167, 37.8007434037619 ], [ -122.41102516651154, 37.80061200459185 ], [ -122.41144895553587, 37.80056114033423 ], [ -122.41148650646208, 37.80076459715455 ], [ -122.41148650646208, 37.80076459715455 ], [ -122.4114865064621, 37.80076459715455 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41134703159332, 37.80056537902371 ], [ -122.41102516651154, 37.800603527218016 ], [ -122.41100907325746, 37.80051451473398 ], [ -122.41133093833925, 37.800476366493726 ], [ -122.41134703159332, 37.80056537902371 ], [ -122.41134703159332, 37.80056537902371 ], [ -122.41134703159332, 37.80056537902371 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42507457733154, 37.80067982354754 ], [ -122.42490291595459, 37.8007010169584 ], [ -122.4248868227005, 37.80061624327842 ], [ -122.42479026317596, 37.80062895933662 ], [ -122.42480635643005, 37.800717971682715 ], [ -122.42464542388915, 37.80073492640316 ], [ -122.42459714412688, 37.80048908257599 ], [ -122.42502629756927, 37.800433979536976 ], [ -122.42507457733153, 37.80067982354754 ], [ -122.42507457733153, 37.80067982354754 ], [ -122.42507457733154, 37.80067982354754 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41126120090485, 37.80048060518806 ], [ -122.41100907325745, 37.80051027604161 ], [ -122.41097152233124, 37.800319534632266 ], [ -122.41122901439667, 37.800289863702076 ], [ -122.41126120090485, 37.80048060518806 ], [ -122.41126120090485, 37.80048060518806 ], [ -122.41126120090485, 37.80048060518806 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40994691848755, 37.80026867017326 ], [ -122.40976452827454, 37.800289863702105 ], [ -122.4097377061844, 37.80014574758602 ], [ -122.40994691848756, 37.80026867017326 ], [ -122.40994691848756, 37.80026867017326 ], [ -122.40994691848755, 37.80026867017326 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40976452827454, 37.800289863702076 ], [ -122.40950167179108, 37.800323773335606 ], [ -122.40950167179108, 37.80013727015868 ], [ -122.40970015525818, 37.800111837870794 ], [ -122.40973770618439, 37.80014574758602 ], [ -122.40976452827452, 37.800289863702076 ], [ -122.40976452827452, 37.800289863702076 ], [ -122.40976452827454, 37.800289863702076 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41071403026581, 37.80017541857407 ], [ -122.41029024124146, 37.80023052180601 ], [ -122.41024196147919, 37.800192373419065 ], [ -122.41021513938905, 37.80006945070486 ], [ -122.41068184375763, 37.800010108631696 ], [ -122.41071403026581, 37.80017541857407 ], [ -122.41071403026581, 37.80017541857407 ], [ -122.41071403026581, 37.80017541857407 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40970015525818, 37.800111837870794 ], [ -122.40950167179108, 37.80013727015868 ], [ -122.40950167179108, 37.800010108631696 ], [ -122.40954458713531, 37.800005869910365 ], [ -122.40970015525818, 37.800111837870794 ], [ -122.40970015525818, 37.800111837870794 ], [ -122.40970015525818, 37.800111837870794 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40954458713531, 37.800005869910365 ], [ -122.40950167179108, 37.800010108631696 ], [ -122.40950167179108, 37.79997196013091 ], [ -122.40954458713531, 37.800005869910365 ], [ -122.40954458713531, 37.800005869910365 ], [ -122.40954458713531, 37.800005869910365 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41009712219238, 37.80009064429088 ], [ -122.40989327430727, 37.79994652778611 ], [ -122.4098825454712, 37.799887185614196 ], [ -122.40995764732362, 37.799874469428296 ], [ -122.40996301174164, 37.79989566307024 ], [ -122.41005420684814, 37.79988294688579 ], [ -122.41009712219238, 37.800090644290854 ], [ -122.41009712219238, 37.800090644290854 ], [ -122.41009712219238, 37.80009064429088 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41024196147919, 37.800192373419065 ], [ -122.41009712219238, 37.80009064429088 ], [ -122.41005420684814, 37.79988294688579 ], [ -122.4101722240448, 37.7998659919698 ], [ -122.41021513938905, 37.80006945070486 ], [ -122.41024196147919, 37.800192373419065 ], [ -122.41024196147919, 37.800192373419065 ], [ -122.41024196147919, 37.800192373419065 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40989327430725, 37.79994652778611 ], [ -122.40950167179108, 37.799654055191525 ], [ -122.40950167179108, 37.79956080281643 ], [ -122.4098128080368, 37.79951417658475 ], [ -122.40989327430725, 37.79994652778611 ], [ -122.40989327430725, 37.79994652778611 ], [ -122.40989327430725, 37.79994652778611 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41004347801208, 37.79967101015616 ], [ -122.41003274917603, 37.7996837263771 ], [ -122.41003811359406, 37.79971763628886 ], [ -122.40995228290556, 37.79972611376437 ], [ -122.40994691848755, 37.7996922038565 ], [ -122.40993618965149, 37.7996922038565 ], [ -122.4099200963974, 37.79962014525055 ], [ -122.40993618965149, 37.79961590650686 ], [ -122.40993082523346, 37.79959471278463 ], [ -122.40991473197938, 37.79959471278463 ], [ -122.40990400314332, 37.79951417658475 ], [ -122.40991473197938, 37.79950569908492 ], [ -122.40999519824982, 37.79949722158412 ], [ -122.41000592708588, 37.79950146033463 ], [ -122.41004347801208, 37.79967101015618 ], [ -122.41004347801208, 37.79967101015618 ], [ -122.41004347801208, 37.79967101015616 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41012394428253, 37.79967101015616 ], [ -122.41004347801208, 37.799679487637015 ], [ -122.4100112915039, 37.79950146033463 ], [ -122.41002202033997, 37.79949298283334 ], [ -122.41004347801208, 37.79948874408232 ], [ -122.41005420684814, 37.79949722158412 ], [ -122.41005957126617, 37.79948874408232 ], [ -122.4100810289383, 37.79948874408232 ], [ -122.41009175777435, 37.79949298283334 ], [ -122.41012394428253, 37.79967101015616 ], [ -122.41012394428253, 37.79967101015616 ], [ -122.41012394428253, 37.79967101015616 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41038680076599, 37.79981512719847 ], [ -122.41024196147919, 37.799836320857466 ], [ -122.41016685962677, 37.799480266579586 ], [ -122.41032242774963, 37.79945907281843 ], [ -122.41038680076599, 37.79981512719847 ], [ -122.41038680076599, 37.79981512719847 ], [ -122.41038680076599, 37.79981512719847 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41057991981506, 37.79951417658475 ], [ -122.41034388542175, 37.799543847826506 ], [ -122.41032242774963, 37.79945907281843 ], [ -122.41056382656097, 37.79942940154263 ], [ -122.41057991981506, 37.79951417658475 ], [ -122.41057991981506, 37.79951417658475 ], [ -122.41057991981506, 37.79951417658475 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41052627563477, 37.79923865734216 ], [ -122.41033315658571, 37.799259851166546 ], [ -122.41032242774965, 37.79922170227827 ], [ -122.41052091121675, 37.799200508442944 ], [ -122.41052627563477, 37.79923865734216 ], [ -122.41052627563477, 37.79923865734216 ], [ -122.41052627563477, 37.79923865734216 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42392659187317, 37.79942940154263 ], [ -122.42335259914398, 37.79950569908492 ], [ -122.42327213287354, 37.79911997181326 ], [ -122.42385685443878, 37.799056390201464 ], [ -122.42392659187317, 37.79942940154263 ], [ -122.42392659187317, 37.79942940154263 ], [ -122.42392659187317, 37.79942940154263 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42119610309601, 37.79886564503779 ], [ -122.42080450057983, 37.798912271678844 ], [ -122.42078304290771, 37.798785108043006 ], [ -122.42117464542389, 37.7987384813217 ], [ -122.42119610309601, 37.79886564503779 ], [ -122.42119610309601, 37.79886564503779 ], [ -122.42119610309601, 37.79886564503779 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42172181606293, 37.7988020632071 ], [ -122.42163062095642, 37.79881054078769 ], [ -122.42159843444824, 37.798657944188264 ], [ -122.42168962955475, 37.79864522779074 ], [ -122.42172181606293, 37.7988020632071 ], [ -122.42172181606293, 37.7988020632071 ], [ -122.42172181606293, 37.7988020632071 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42197394371033, 37.79876815287502 ], [ -122.42188274860382, 37.798780869251374 ], [ -122.42185056209564, 37.798619794989136 ], [ -122.42194175720215, 37.79860707858504 ], [ -122.42197394371033, 37.79876815287502 ], [ -122.42197394371033, 37.79876815287502 ], [ -122.42197394371033, 37.79876815287502 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42117464542389, 37.7987384813217 ], [ -122.42078304290771, 37.798785108043006 ], [ -122.42075622081757, 37.79865370538933 ], [ -122.42114782333374, 37.79860707858507 ], [ -122.42117464542389, 37.7987384813217 ], [ -122.42117464542389, 37.7987384813217 ], [ -122.42117464542389, 37.7987384813217 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40952849388123, 37.79875967528956 ], [ -122.40950167179108, 37.798763914082414 ], [ -122.40950167179108, 37.79860283978321 ], [ -122.40950167179108, 37.79860283978321 ], [ -122.40952849388123, 37.79875967528956 ], [ -122.40952849388123, 37.79875967528956 ], [ -122.40952849388123, 37.79875967528956 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42188274860382, 37.798780869251374 ], [ -122.42180228233337, 37.79878934683441 ], [ -122.42176473140717, 37.79861131738665 ], [ -122.42185056209564, 37.798598600981116 ], [ -122.42188274860382, 37.798780869251374 ], [ -122.42188274860382, 37.798780869251374 ], [ -122.42188274860382, 37.798780869251374 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42180228233337, 37.79878934683441 ], [ -122.42172181606293, 37.7988020632071 ], [ -122.42168962955475, 37.79864522779074 ], [ -122.42167890071869, 37.798598600981116 ], [ -122.42176473140717, 37.79859012337622 ], [ -122.42180228233337, 37.79878934683441 ], [ -122.42180228233337, 37.79878934683441 ], [ -122.42180228233337, 37.79878934683441 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40967869758606, 37.79877663045951 ], [ -122.40957140922546, 37.79878934683441 ], [ -122.40952849388123, 37.798763914082414 ], [ -122.40950167179108, 37.79860283978321 ], [ -122.40963578224182, 37.79858588457339 ], [ -122.40967869758606, 37.79877663045951 ], [ -122.40967869758606, 37.79877663045951 ], [ -122.40967869758606, 37.79877663045951 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42223143577576, 37.7987384813217 ], [ -122.42200076580048, 37.798763914082414 ], [ -122.4219685792923, 37.79861131738668 ], [ -122.4220222234726, 37.798602839783236 ], [ -122.42219924926758, 37.798581645770334 ], [ -122.42223143577576, 37.7987384813217 ], [ -122.42223143577576, 37.7987384813217 ], [ -122.42223143577576, 37.7987384813217 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42145895957947, 37.7988317347349 ], [ -122.4212872982025, 37.79885292867605 ], [ -122.4212336540222, 37.798598600981116 ], [ -122.42141067981719, 37.79857740696702 ], [ -122.42145895957945, 37.7988317347349 ], [ -122.42145895957945, 37.7988317347349 ], [ -122.42145895957947, 37.7988317347349 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42163062095642, 37.79881054078769 ], [ -122.42145895957947, 37.7988317347349 ], [ -122.4214106798172, 37.79857740696702 ], [ -122.42157697677612, 37.79855621294684 ], [ -122.42159843444824, 37.798657944188264 ], [ -122.42163062095642, 37.79881054078769 ], [ -122.42163062095642, 37.79881054078769 ], [ -122.42163062095642, 37.79881054078769 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41014540195465, 37.79892074924677 ], [ -122.40979135036469, 37.79896737585307 ], [ -122.40972697734833, 37.79864522779074 ], [ -122.40978062152863, 37.79863675019119 ], [ -122.40976452827454, 37.79857316816348 ], [ -122.4100649356842, 37.79853501892056 ], [ -122.41014540195465, 37.79892074924677 ], [ -122.41014540195465, 37.79892074924677 ], [ -122.41014540195465, 37.79892074924677 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42219924926758, 37.798581645770334 ], [ -122.4220222234726, 37.798602839783236 ], [ -122.4220061302185, 37.798522302501894 ], [ -122.42218315601349, 37.79850110846591 ], [ -122.42219924926758, 37.798581645770334 ], [ -122.42219924926758, 37.798581645770334 ], [ -122.42219924926758, 37.798581645770334 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41041362285614, 37.79868761577395 ], [ -122.41025805473328, 37.79870457096041 ], [ -122.41021513938904, 37.798513824888246 ], [ -122.41037607192993, 37.79849686965797 ], [ -122.41041362285614, 37.79868761577395 ], [ -122.41041362285614, 37.79868761577395 ], [ -122.41041362285614, 37.79868761577395 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42114782333374, 37.79860707858507 ], [ -122.42075622081757, 37.79865370538933 ], [ -122.42072939872743, 37.79853501892058 ], [ -122.42106735706331, 37.798496869657995 ], [ -122.4211210012436, 37.79848839204139 ], [ -122.42114782333375, 37.79860707858507 ], [ -122.42114782333375, 37.79860707858507 ], [ -122.42114782333374, 37.79860707858507 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42218315601349, 37.79850110846591 ], [ -122.4220061302185, 37.798522302501894 ], [ -122.42194175720215, 37.798530780114596 ], [ -122.42193102836609, 37.79847567561469 ], [ -122.42217242717743, 37.798446003943866 ], [ -122.42218315601349, 37.79850110846591 ], [ -122.42218315601349, 37.79850110846591 ], [ -122.42218315601349, 37.79850110846591 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42302536964417, 37.7985943621788 ], [ -122.42292881011963, 37.79860707858507 ], [ -122.42289662361145, 37.798437526321464 ], [ -122.42299318313599, 37.79842904869807 ], [ -122.42302536964417, 37.7985943621788 ], [ -122.42302536964417, 37.7985943621788 ], [ -122.42302536964417, 37.7985943621788 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42292881011963, 37.79860707858507 ], [ -122.42278933525085, 37.79862403379003 ], [ -122.42275178432465, 37.798437526321464 ], [ -122.42289125919342, 37.798420571073684 ], [ -122.42289662361145, 37.798437526321464 ], [ -122.42292881011963, 37.79860707858507 ], [ -122.42292881011963, 37.79860707858507 ], [ -122.42292881011963, 37.79860707858507 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42278933525085, 37.798624033790006 ], [ -122.4224406480789, 37.79866642178537 ], [ -122.42240309715271, 37.798458720375685 ], [ -122.42274641990662, 37.798416332261134 ], [ -122.42275178432463, 37.798437526321464 ], [ -122.42278933525084, 37.79862403379003 ], [ -122.42278933525084, 37.79862403379003 ], [ -122.42278933525085, 37.798624033790006 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4210673570633, 37.79849686965797 ], [ -122.42072939872742, 37.79853501892058 ], [ -122.42071330547333, 37.798458720375685 ], [ -122.42105662822723, 37.798416332261134 ], [ -122.4210673570633, 37.79849686965797 ], [ -122.4210673570633, 37.79849686965797 ], [ -122.4210673570633, 37.79849686965797 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4231219291687, 37.798581645770334 ], [ -122.42302536964415, 37.7985943621788 ], [ -122.42299318313597, 37.79842904869807 ], [ -122.42308974266052, 37.798416332261134 ], [ -122.4231219291687, 37.798581645770334 ], [ -122.4231219291687, 37.798581645770334 ], [ -122.4231219291687, 37.798581645770334 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42376565933228, 37.798505347273604 ], [ -122.42350280284882, 37.79853501892058 ], [ -122.4234813451767, 37.798424809886 ], [ -122.42374420166016, 37.79839513819475 ], [ -122.42376565933228, 37.798505347273604 ], [ -122.42376565933228, 37.798505347273604 ], [ -122.42376565933228, 37.798505347273604 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42374420166016, 37.79839513819475 ], [ -122.4234813451767, 37.798424809886 ], [ -122.42346525192262, 37.79835275004371 ], [ -122.42372810840608, 37.79832307832353 ], [ -122.42374420166016, 37.79839513819475 ], [ -122.42374420166016, 37.79839513819475 ], [ -122.42374420166016, 37.79839513819475 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42274641990662, 37.798416332261134 ], [ -122.42240309715271, 37.798458720375685 ], [ -122.42238163948059, 37.79835275004371 ], [ -122.4227249622345, 37.798310361868346 ], [ -122.42274641990662, 37.798416332261134 ], [ -122.42274641990662, 37.798416332261134 ], [ -122.42274641990662, 37.798416332261134 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42333114147186, 37.79855621294684 ], [ -122.4231219291687, 37.798581645770334 ], [ -122.42308974266052, 37.798416332261134 ], [ -122.42307364940643, 37.79833155595906 ], [ -122.4232828617096, 37.798306123049485 ], [ -122.42333114147186, 37.79855621294684 ], [ -122.42333114147186, 37.79855621294684 ], [ -122.42333114147186, 37.79855621294684 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42372810840607, 37.79832307832353 ], [ -122.42346525192261, 37.79835275004371 ], [ -122.42334723472594, 37.79836970530704 ], [ -122.42333114147186, 37.79826797366868 ], [ -122.42370665073395, 37.79822134662093 ], [ -122.42372810840607, 37.79832307832353 ], [ -122.42372810840607, 37.79832307832353 ], [ -122.42372810840607, 37.79832307832353 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42091715335846, 37.79843328750988 ], [ -122.42071330547333, 37.798458720375685 ], [ -122.42067039012909, 37.79823830191443 ], [ -122.42087423801422, 37.79821286897272 ], [ -122.42091715335846, 37.79843328750988 ], [ -122.42091715335846, 37.79843328750988 ], [ -122.42091715335846, 37.79843328750988 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42217242717743, 37.79844600394389 ], [ -122.42193102836609, 37.79847567561469 ], [ -122.42188274860382, 37.79847991442385 ], [ -122.4217540025711, 37.798437526321464 ], [ -122.42172718048097, 37.798310361868346 ], [ -122.42183446884157, 37.79825525720401 ], [ -122.42182910442354, 37.79821710779695 ], [ -122.42190420627595, 37.79820863014827 ], [ -122.42211878299715, 37.798178958370166 ], [ -122.42217242717744, 37.798446003943866 ], [ -122.42217242717744, 37.798446003943866 ], [ -122.42217242717743, 37.79844600394389 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4227249622345, 37.798310361868346 ], [ -122.42238163948059, 37.79835275004371 ], [ -122.42235481739046, 37.79821710779695 ], [ -122.42259085178375, 37.79818743602226 ], [ -122.42269814014436, 37.79817471954375 ], [ -122.4227249622345, 37.798310361868346 ], [ -122.4227249622345, 37.798310361868346 ], [ -122.4227249622345, 37.798310361868346 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4108213186264, 37.79824254073718 ], [ -122.4107301235199, 37.798251018382 ], [ -122.410569190979, 37.79827221248973 ], [ -122.41054773330688, 37.79817471954375 ], [ -122.41079986095428, 37.798145047752044 ], [ -122.4108213186264, 37.79824254073718 ], [ -122.4108213186264, 37.79824254073718 ], [ -122.4108213186264, 37.79824254073718 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42117464542389, 37.79833155595906 ], [ -122.42105662822722, 37.798344272410596 ], [ -122.42105662822722, 37.798344272410596 ], [ -122.42101907730103, 37.79814080892369 ], [ -122.42113709449768, 37.79812385360782 ], [ -122.42117464542389, 37.79833155595906 ], [ -122.42117464542389, 37.79833155595906 ], [ -122.42117464542389, 37.79833155595906 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42127656936646, 37.7983569888599 ], [ -122.42118537425995, 37.79836970530704 ], [ -122.4211370944977, 37.79812385360782 ], [ -122.4212282896042, 37.79811537594843 ], [ -122.42127656936646, 37.7983569888599 ], [ -122.42127656936646, 37.7983569888599 ], [ -122.42127656936646, 37.7983569888599 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42259085178375, 37.79818743602226 ], [ -122.42235481739044, 37.79821710779695 ], [ -122.42233872413635, 37.79814080892369 ], [ -122.42257475852966, 37.79811113711837 ], [ -122.42258012294769, 37.798145047752044 ], [ -122.42259085178375, 37.79818743602226 ], [ -122.42259085178375, 37.79818743602226 ], [ -122.42259085178375, 37.79818743602226 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42211878299713, 37.798178958370166 ], [ -122.42190420627595, 37.79820863014827 ], [ -122.42189884185792, 37.798170480717104 ], [ -122.42188811302186, 37.79813657009509 ], [ -122.42210805416109, 37.79811113711837 ], [ -122.42211878299715, 37.798178958370166 ], [ -122.42211878299715, 37.798178958370166 ], [ -122.42211878299713, 37.798178958370166 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42089569568634, 37.79821286897272 ], [ -122.42087423801422, 37.79821286897272 ], [ -122.42067039012909, 37.79823830191443 ], [ -122.42064893245697, 37.79812809243717 ], [ -122.42087423801422, 37.7981026594575 ], [ -122.42089569568634, 37.79821286897272 ], [ -122.42089569568634, 37.79821286897272 ], [ -122.42089569568634, 37.79821286897272 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42138385772705, 37.798344272410596 ], [ -122.42129802703856, 37.79835275004371 ], [ -122.42124438285826, 37.79811113711837 ], [ -122.42133557796477, 37.7980984206267 ], [ -122.42138385772704, 37.798344272410596 ], [ -122.42138385772704, 37.798344272410596 ], [ -122.42138385772705, 37.798344272410596 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42370665073395, 37.79822134662093 ], [ -122.42333114147186, 37.79826797366868 ], [ -122.42328822612762, 37.79827221248973 ], [ -122.4232667684555, 37.798145047752044 ], [ -122.42336332798004, 37.79813233126623 ], [ -122.42368519306183, 37.79809418179568 ], [ -122.42370665073395, 37.79822134662093 ], [ -122.42370665073395, 37.79822134662093 ], [ -122.42370665073395, 37.79822134662093 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42146968841553, 37.79834003359367 ], [ -122.42138922214508, 37.79834851122727 ], [ -122.42133557796478, 37.79809842062673 ], [ -122.42142140865326, 37.7980899429644 ], [ -122.42145895957947, 37.79828916777156 ], [ -122.42146968841553, 37.79834003359367 ], [ -122.42146968841553, 37.79834003359367 ], [ -122.42146968841553, 37.79834003359367 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42105662822723, 37.798344272410596 ], [ -122.42094397544861, 37.7983569888599 ], [ -122.42089569568635, 37.7980984206267 ], [ -122.42100834846497, 37.79808570413287 ], [ -122.42101907730103, 37.79814080892369 ], [ -122.42105662822723, 37.798344272410596 ], [ -122.42105662822723, 37.798344272410596 ], [ -122.42105662822723, 37.798344272410596 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42155015468597, 37.79827645131055 ], [ -122.42145895957947, 37.79828916777156 ], [ -122.42142140865326, 37.7980899429644 ], [ -122.42141604423524, 37.7980772264691 ], [ -122.42150723934174, 37.79806874880436 ], [ -122.42155015468599, 37.79827645131055 ], [ -122.42155015468599, 37.79827645131055 ], [ -122.42155015468597, 37.79827645131055 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41094470024109, 37.79822558544467 ], [ -122.4108374118805, 37.79823830191443 ], [ -122.4108052253723, 37.79806450997163 ], [ -122.41091251373291, 37.79805179347195 ], [ -122.41094470024109, 37.79822558544467 ], [ -122.41094470024109, 37.79822558544467 ], [ -122.41094470024109, 37.79822558544467 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42166817188263, 37.79831883950538 ], [ -122.42156088352203, 37.79833579477649 ], [ -122.42155015468597, 37.79827645131055 ], [ -122.42150723934174, 37.79806874880436 ], [ -122.42150723934174, 37.79805603230542 ], [ -122.42161452770233, 37.798043315804286 ], [ -122.42166817188263, 37.798310361868346 ], [ -122.42166817188263, 37.79831883950538 ], [ -122.42166817188263, 37.79831883950538 ], [ -122.42166817188263, 37.79831883950538 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41130411624908, 37.79818319719633 ], [ -122.41122364997864, 37.79819167484794 ], [ -122.4111968278885, 37.79805179347195 ], [ -122.41127192974092, 37.798039076970106 ], [ -122.4113041162491, 37.79818319719633 ], [ -122.4113041162491, 37.79818319719633 ], [ -122.41130411624908, 37.79818319719633 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41104125976562, 37.79821286897272 ], [ -122.41094470024109, 37.79822558544467 ], [ -122.41091251373291, 37.79805179347195 ], [ -122.4110037088394, 37.798039076970085 ], [ -122.41104125976561, 37.79821286897272 ], [ -122.41104125976561, 37.79821286897272 ], [ -122.41104125976562, 37.79821286897272 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42210805416107, 37.79811113711837 ], [ -122.42188811302185, 37.79813657009509 ], [ -122.42187738418579, 37.79806027113865 ], [ -122.42209196090698, 37.79803483813565 ], [ -122.42210805416106, 37.79811113711837 ], [ -122.42210805416106, 37.79811113711837 ], [ -122.42210805416107, 37.79811113711837 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41139531135559, 37.798170480717104 ], [ -122.41130411624908, 37.79818319719633 ], [ -122.4112719297409, 37.798043315804286 ], [ -122.41136848926544, 37.798030599300965 ], [ -122.41139531135559, 37.798170480717104 ], [ -122.41139531135559, 37.798170480717104 ], [ -122.41139531135559, 37.798170480717104 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4111270904541, 37.79820439132355 ], [ -122.41104125976562, 37.79821286897272 ], [ -122.41100370883942, 37.798039076970106 ], [ -122.41108953952791, 37.798030599300965 ], [ -122.4111270904541, 37.79820439132355 ], [ -122.4111270904541, 37.79820439132355 ], [ -122.4111270904541, 37.79820439132355 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41079986095428, 37.798145047752044 ], [ -122.41054773330688, 37.79817471954375 ], [ -122.41052627563477, 37.79806027113865 ], [ -122.41077840328217, 37.798026360466025 ], [ -122.41079986095428, 37.798145047752044 ], [ -122.41079986095428, 37.798145047752044 ], [ -122.41079986095428, 37.798145047752044 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42174863815308, 37.79830188423037 ], [ -122.42166817188263, 37.798310361868346 ], [ -122.42161452770233, 37.798043315804286 ], [ -122.4216091632843, 37.798039076970106 ], [ -122.42169499397278, 37.798026360466025 ], [ -122.42173790931703, 37.79825525720401 ], [ -122.42174863815309, 37.79830188423037 ], [ -122.42174863815309, 37.79830188423037 ], [ -122.42174863815308, 37.79830188423037 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42368519306183, 37.79809418179568 ], [ -122.42336332798004, 37.79813233126623 ], [ -122.42334723472595, 37.79806450997163 ], [ -122.42366909980774, 37.79802212163085 ], [ -122.42368519306183, 37.798094181795655 ], [ -122.42368519306183, 37.798094181795655 ], [ -122.42368519306183, 37.79809418179568 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41122364997864, 37.79819167484794 ], [ -122.4111270904541, 37.79820439132355 ], [ -122.41108953952791, 37.798030599300965 ], [ -122.41119146347046, 37.798017882795456 ], [ -122.41119682788849, 37.79805179347195 ], [ -122.41122364997864, 37.79819167484794 ], [ -122.41122364997864, 37.79819167484794 ], [ -122.41122364997864, 37.79819167484794 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4218237400055, 37.79824254073718 ], [ -122.42173790931702, 37.79825525720401 ], [ -122.42169499397278, 37.798026360466025 ], [ -122.42168962955475, 37.79802212163088 ], [ -122.42178082466125, 37.798013643959806 ], [ -122.42181301116943, 37.79818319719633 ], [ -122.4218237400055, 37.798242540737206 ], [ -122.4218237400055, 37.798242540737206 ], [ -122.4218237400055, 37.79824254073718 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41199612617493, 37.79809418179568 ], [ -122.41175472736359, 37.79812385360782 ], [ -122.4117386341095, 37.798026360466025 ], [ -122.41183519363403, 37.798013643959806 ], [ -122.41198003292084, 37.797996688614745 ], [ -122.41199612617493, 37.79809418179568 ], [ -122.41199612617493, 37.79809418179568 ], [ -122.41199612617493, 37.79809418179568 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40985572338104, 37.79836970530704 ], [ -122.40963041782379, 37.79839513819475 ], [ -122.40950167179108, 37.798412093448356 ], [ -122.40950167179108, 37.798030599300965 ], [ -122.40954458713531, 37.798026360466025 ], [ -122.40955531597137, 37.79802212163088 ], [ -122.40978062152863, 37.797996688614745 ], [ -122.40985572338104, 37.79836970530704 ], [ -122.40985572338104, 37.79836970530704 ], [ -122.40985572338104, 37.79836970530704 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42189884185791, 37.798170480717104 ], [ -122.42181301116943, 37.79818319719633 ], [ -122.42178082466125, 37.798013643959806 ], [ -122.42177546024323, 37.79798397210339 ], [ -122.42185592651367, 37.79797125558984 ], [ -122.42187738418579, 37.79806027113865 ], [ -122.42188811302185, 37.79813657009509 ], [ -122.42189884185791, 37.79817048071708 ], [ -122.42189884185791, 37.79817048071708 ], [ -122.42189884185791, 37.798170480717104 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42366909980774, 37.79802212163088 ], [ -122.42334723472595, 37.79806450997163 ], [ -122.42327213287354, 37.79807298763686 ], [ -122.42326140403748, 37.79800516628776 ], [ -122.42365837097168, 37.79795853907413 ], [ -122.42366909980774, 37.79802212163088 ], [ -122.42366909980774, 37.79802212163088 ], [ -122.42366909980774, 37.79802212163088 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42209196090698, 37.79803483813565 ], [ -122.42187738418579, 37.79806027113865 ], [ -122.42185592651367, 37.797971255589864 ], [ -122.4220758676529, 37.7979458225562 ], [ -122.42209196090698, 37.79803483813565 ], [ -122.42209196090698, 37.79803483813565 ], [ -122.42209196090698, 37.79803483813565 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41198003292084, 37.797996688614745 ], [ -122.41183519363403, 37.798013643959806 ], [ -122.41181910037996, 37.797950061395746 ], [ -122.41196393966676, 37.79793310603611 ], [ -122.41198003292084, 37.797996688614745 ], [ -122.41198003292084, 37.797996688614745 ], [ -122.41198003292084, 37.797996688614745 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41097688674927, 37.798017882795456 ], [ -122.41079986095428, 37.798039076970106 ], [ -122.41079449653625, 37.798026360466025 ], [ -122.41077840328218, 37.798026360466025 ], [ -122.41052627563477, 37.79806027113865 ], [ -122.41051018238069, 37.797979733265805 ], [ -122.4109447002411, 37.79792462835481 ], [ -122.41096079349518, 37.79792462835481 ], [ -122.41097688674927, 37.798017882795456 ], [ -122.41097688674927, 37.798017882795456 ], [ -122.41097688674927, 37.798017882795456 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42254257202148, 37.79808146530112 ], [ -122.42233335971832, 37.79810689828806 ], [ -122.42229044437408, 37.797911911831086 ], [ -122.42249965667725, 37.79788647877699 ], [ -122.42254257202148, 37.79808146530112 ], [ -122.42254257202148, 37.79808146530112 ], [ -122.42254257202148, 37.79808146530112 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42365837097168, 37.79795853907413 ], [ -122.42326140403748, 37.79800516628776 ], [ -122.42324531078339, 37.79792886719558 ], [ -122.4236422777176, 37.79787800109037 ], [ -122.42365837097168, 37.79795853907413 ], [ -122.42365837097168, 37.79795853907413 ], [ -122.42365837097168, 37.79795853907413 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40954458713531, 37.79798397210339 ], [ -122.40950167179108, 37.797988210940744 ], [ -122.40950167179108, 37.797873762246674 ], [ -122.40951776504517, 37.797873762246674 ], [ -122.4095445871353, 37.79798397210339 ], [ -122.4095445871353, 37.79798397210339 ], [ -122.40954458713531, 37.79798397210339 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42269814014435, 37.79813233126623 ], [ -122.42258012294769, 37.798145047752044 ], [ -122.42257475852966, 37.79811113711837 ], [ -122.42253184318542, 37.797882239933806 ], [ -122.42264986038208, 37.79786952340275 ], [ -122.42269814014435, 37.79813233126623 ], [ -122.42269814014435, 37.79813233126623 ], [ -122.42269814014435, 37.79813233126623 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41151869297028, 37.79815352540803 ], [ -122.41139531135559, 37.798170480717104 ], [ -122.41136848926544, 37.798030599300965 ], [ -122.41133630275726, 37.79787800109037 ], [ -122.41145968437195, 37.797865284558576 ], [ -122.41151869297028, 37.79815352540803 ], [ -122.41151869297028, 37.79815352540803 ], [ -122.41151869297028, 37.79815352540803 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41196393966675, 37.79793310603611 ], [ -122.41181910037994, 37.797950061395746 ], [ -122.41176545619965, 37.79795853907413 ], [ -122.41174399852753, 37.79785256802462 ], [ -122.41194784641264, 37.79782713495009 ], [ -122.41196393966673, 37.79793310603611 ], [ -122.41196393966673, 37.79793310603611 ], [ -122.41196393966675, 37.79793310603611 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42323458194733, 37.79809418179568 ], [ -122.42314875125885, 37.79810689828806 ], [ -122.42314875125885, 37.79811537594843 ], [ -122.42302536964417, 37.79813233126623 ], [ -122.42305755615234, 37.798284928951475 ], [ -122.42277324199677, 37.79831883950538 ], [ -122.42268204689026, 37.797865284558576 ], [ -122.42295026779175, 37.797831373796456 ], [ -122.42296636104584, 37.79792038951381 ], [ -122.42299318313597, 37.79791615067256 ], [ -122.4229770898819, 37.79782713495009 ], [ -122.423175573349, 37.79780170186684 ], [ -122.42320239543913, 37.79793310603611 ], [ -122.42323458194733, 37.79809418179568 ], [ -122.42323458194733, 37.79809418179568 ], [ -122.42323458194733, 37.79809418179568 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41194784641266, 37.79782713495009 ], [ -122.41174399852753, 37.79785256802462 ], [ -122.41173326969147, 37.79779322417047 ], [ -122.41193175315857, 37.79777202992529 ], [ -122.41194784641266, 37.79782713495009 ], [ -122.41194784641266, 37.79782713495009 ], [ -122.41194784641266, 37.79782713495009 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4116313457489, 37.79814080892369 ], [ -122.41152405738829, 37.79815352540803 ], [ -122.41146504878998, 37.797865284558576 ], [ -122.41144895553589, 37.79777202992531 ], [ -122.41155624389648, 37.7977593133753 ], [ -122.41163134574892, 37.79814080892369 ], [ -122.41163134574892, 37.79814080892369 ], [ -122.4116313457489, 37.79814080892369 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41175472736359, 37.79812385360782 ], [ -122.41164207458496, 37.79814080892369 ], [ -122.41156697273254, 37.797767791075536 ], [ -122.41167962551116, 37.79775083567405 ], [ -122.41173863410948, 37.798026360466025 ], [ -122.41175472736357, 37.79812385360782 ], [ -122.41175472736357, 37.79812385360782 ], [ -122.41175472736359, 37.79812385360782 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42364227771759, 37.79787800109037 ], [ -122.42324531078339, 37.79792886719558 ], [ -122.42320239543913, 37.79793310603611 ], [ -122.423175573349, 37.79780170186684 ], [ -122.42361545562744, 37.79774659682308 ], [ -122.42364227771759, 37.79787800109037 ], [ -122.42364227771759, 37.79787800109037 ], [ -122.42364227771759, 37.79787800109037 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41094470024109, 37.79792462835481 ], [ -122.41051018238068, 37.797979733265805 ], [ -122.41046726703644, 37.79777626877483 ], [ -122.41064965724944, 37.79775083567405 ], [ -122.41068184375763, 37.79774659682308 ], [ -122.4106979370117, 37.7978228961035 ], [ -122.41092324256896, 37.797797463018796 ], [ -122.41094470024107, 37.79792462835481 ], [ -122.41094470024107, 37.79792462835481 ], [ -122.41094470024109, 37.79792462835481 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41193175315857, 37.79777202992531 ], [ -122.41173326969147, 37.79779322417047 ], [ -122.41172254085541, 37.797742357971856 ], [ -122.41192102432251, 37.797716924859415 ], [ -122.41193175315857, 37.79777202992531 ], [ -122.41193175315857, 37.79777202992531 ], [ -122.41193175315857, 37.79777202992531 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42134094238281, 37.79786952340275 ], [ -122.4212282896042, 37.797882239933806 ], [ -122.42119073867799, 37.797708447153305 ], [ -122.42130875587465, 37.797695730592324 ], [ -122.42134094238283, 37.79786952340275 ], [ -122.42134094238283, 37.79786952340275 ], [ -122.42134094238281, 37.79786952340275 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42091715335846, 37.79792462835481 ], [ -122.42062211036682, 37.79795853907413 ], [ -122.42058455944061, 37.7977593133753 ], [ -122.42057383060455, 37.79772540256451 ], [ -122.42083668708801, 37.7976914917382 ], [ -122.42084205150604, 37.79772964141673 ], [ -122.42086350917816, 37.797831373796456 ], [ -122.42090106010436, 37.79782713495009 ], [ -122.42091715335845, 37.79792462835481 ], [ -122.42091715335845, 37.79792462835481 ], [ -122.42091715335846, 37.79792462835481 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41064965724945, 37.79775083567405 ], [ -122.41046726703645, 37.79777626877483 ], [ -122.41045653820039, 37.797712686006484 ], [ -122.41063892841339, 37.7976914917382 ], [ -122.41064965724945, 37.79775083567405 ], [ -122.41064965724945, 37.79775083567405 ], [ -122.41064965724945, 37.79775083567405 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42103517055511, 37.797907672989325 ], [ -122.42091715335846, 37.79792462835481 ], [ -122.42090106010437, 37.79782713495009 ], [ -122.42087423801424, 37.79770420829989 ], [ -122.42099225521089, 37.79768725288382 ], [ -122.42103517055513, 37.797907672989325 ], [ -122.42103517055513, 37.797907672989325 ], [ -122.42103517055511, 37.797907672989325 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42143213748932, 37.79785680686951 ], [ -122.42134094238281, 37.79786952340275 ], [ -122.42130875587463, 37.797695730592324 ], [ -122.42130339145662, 37.79768301402918 ], [ -122.42139458656312, 37.79767453631921 ], [ -122.42143213748932, 37.79785680686951 ], [ -122.42143213748932, 37.79785680686951 ], [ -122.42143213748932, 37.79785680686951 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41192102432251, 37.797716924859415 ], [ -122.41172254085541, 37.797742357971856 ], [ -122.41171181201935, 37.79768301402918 ], [ -122.41191029548645, 37.79765758089631 ], [ -122.41192102432251, 37.797716924859415 ], [ -122.41192102432251, 37.797716924859415 ], [ -122.41192102432251, 37.797716924859415 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40951240062714, 37.79781865725665 ], [ -122.40950167179108, 37.79781865725665 ], [ -122.40950167179108, 37.79775931337528 ], [ -122.40951240062714, 37.79781865725665 ], [ -122.40951240062714, 37.79781865725665 ], [ -122.40951240062714, 37.79781865725665 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42122828960419, 37.797882239933806 ], [ -122.42111563682556, 37.79789919530514 ], [ -122.42108881473541, 37.79776355222553 ], [ -122.4210673570633, 37.7976618197524 ], [ -122.42118000984192, 37.79764910318341 ], [ -122.42119073867798, 37.797708447153305 ], [ -122.42122828960419, 37.797882239933806 ], [ -122.42122828960419, 37.797882239933806 ], [ -122.42122828960419, 37.797882239933806 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42255330085754, 37.797716924859415 ], [ -122.42225289344788, 37.797755074524794 ], [ -122.42223680019379, 37.79767453631921 ], [ -122.42248356342316, 37.79764062546953 ], [ -122.42253720760345, 37.797636386612204 ], [ -122.42255330085754, 37.797716924859415 ], [ -122.42255330085754, 37.797716924859415 ], [ -122.42255330085754, 37.797716924859415 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41066575050354, 37.79768725288382 ], [ -122.41063892841339, 37.7976914917382 ], [ -122.41045653820039, 37.797712686006484 ], [ -122.41044580936433, 37.79765758089631 ], [ -122.41061747074129, 37.797636386612204 ], [ -122.4106550216675, 37.79763214775467 ], [ -122.41066575050355, 37.79768725288382 ], [ -122.41066575050355, 37.79768725288382 ], [ -122.41066575050354, 37.79768725288382 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4095767736435, 37.797788985321915 ], [ -122.40953385829926, 37.797797463018796 ], [ -122.40953385829926, 37.79778474647316 ], [ -122.40950703620912, 37.797788985321915 ], [ -122.40950167179109, 37.797755074524794 ], [ -122.40950167179109, 37.797636386612204 ], [ -122.40954458713533, 37.79763214775467 ], [ -122.40957677364351, 37.797788985321915 ], [ -122.40957677364351, 37.797788985321915 ], [ -122.4095767736435, 37.797788985321915 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40976989269257, 37.79789919530514 ], [ -122.40955531597137, 37.79792886719558 ], [ -122.40954995155336, 37.797886478777016 ], [ -122.4095928668976, 37.797882239933806 ], [ -122.4095392227173, 37.79762367003883 ], [ -122.40971088409425, 37.79760247574503 ], [ -122.40976989269258, 37.79789919530514 ], [ -122.40976989269258, 37.79789919530514 ], [ -122.40976989269257, 37.79789919530514 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42160379886627, 37.79783561264257 ], [ -122.4214321374893, 37.79785680686951 ], [ -122.42139458656311, 37.79767453631921 ], [ -122.42138385772705, 37.797619431180564 ], [ -122.421555519104, 37.797598236885534 ], [ -122.42160379886627, 37.79783561264257 ], [ -122.42160379886627, 37.79783561264257 ], [ -122.42160379886627, 37.79783561264257 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42248356342316, 37.79764062546953 ], [ -122.42223680019379, 37.79767453631921 ], [ -122.42222607135773, 37.797615192322034 ], [ -122.4224728345871, 37.7975855203056 ], [ -122.42248356342316, 37.79764062546953 ], [ -122.42248356342316, 37.79764062546953 ], [ -122.42248356342316, 37.79764062546953 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42083668708801, 37.7976914917382 ], [ -122.42057383060455, 37.79772540256451 ], [ -122.42055237293243, 37.79760671460429 ], [ -122.42080986499786, 37.797572803723476 ], [ -122.420836687088, 37.7976914917382 ], [ -122.420836687088, 37.7976914917382 ], [ -122.42083668708801, 37.7976914917382 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42111563682556, 37.79789919530514 ], [ -122.4210512638092, 37.79790343414736 ], [ -122.42098152637482, 37.797564326000824 ], [ -122.42104589939117, 37.797555848277206 ], [ -122.42108881473541, 37.79776355222553 ], [ -122.42111563682556, 37.79789919530512 ], [ -122.42111563682556, 37.79789919530512 ], [ -122.42111563682556, 37.79789919530514 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42174327373505, 37.79781865725665 ], [ -122.42160379886627, 37.79783561264257 ], [ -122.421555519104, 37.797598236885534 ], [ -122.42155015468599, 37.797572803723476 ], [ -122.42168962955476, 37.79755160941504 ], [ -122.42174327373506, 37.79781865725665 ], [ -122.42174327373506, 37.79781865725665 ], [ -122.42174327373505, 37.79781865725665 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41191029548645, 37.79765758089631 ], [ -122.41171181201935, 37.79768301402918 ], [ -122.41169571876527, 37.79768725288382 ], [ -122.41167426109315, 37.79757704258442 ], [ -122.41188883781433, 37.79755160941504 ], [ -122.41191029548645, 37.79765758089631 ], [ -122.41191029548645, 37.79765758089631 ], [ -122.41191029548645, 37.79765758089631 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42280542850494, 37.79768301402918 ], [ -122.4227249622345, 37.797695730592324 ], [ -122.42269814014436, 37.797560087139146 ], [ -122.42277860641481, 37.79755160941504 ], [ -122.42280542850494, 37.79768301402918 ], [ -122.42280542850494, 37.79768301402918 ], [ -122.42280542850494, 37.79768301402918 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42252111434937, 37.79758128144514 ], [ -122.4224728345871, 37.7975855203056 ], [ -122.42222607135773, 37.797615192322034 ], [ -122.42221534252167, 37.797555848277206 ], [ -122.42251038551332, 37.79751769850893 ], [ -122.42252111434938, 37.79758128144514 ], [ -122.42252111434938, 37.79758128144514 ], [ -122.42252111434937, 37.79758128144514 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4227249622345, 37.797695730592324 ], [ -122.422633767128, 37.797708447153305 ], [ -122.42260158061983, 37.79752617623693 ], [ -122.4226874113083, 37.79751345964458 ], [ -122.42269814014436, 37.797560087139146 ], [ -122.4227249622345, 37.797695730592324 ], [ -122.4227249622345, 37.797695730592324 ], [ -122.4227249622345, 37.797695730592324 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42289125919342, 37.79767453631921 ], [ -122.42280542850494, 37.79768301402918 ], [ -122.42277860641481, 37.79755160941504 ], [ -122.42277324199678, 37.79752193737306 ], [ -122.42285907268526, 37.79750922077997 ], [ -122.42289125919343, 37.79767453631921 ], [ -122.42289125919343, 37.79767453631921 ], [ -122.42289125919342, 37.79767453631921 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4230682849884, 37.79765334203998 ], [ -122.42298245429993, 37.7976618197524 ], [ -122.42295563220979, 37.79751769850896 ], [ -122.42303609848022, 37.79750498191513 ], [ -122.4230682849884, 37.79765334203998 ], [ -122.4230682849884, 37.79765334203998 ], [ -122.4230682849884, 37.79765334203998 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41061747074127, 37.797636386612204 ], [ -122.41044580936432, 37.79765758089631 ], [ -122.41041898727417, 37.79752193737306 ], [ -122.41059064865114, 37.797500743050065 ], [ -122.41061747074127, 37.797636386612204 ], [ -122.41061747074127, 37.797636386612204 ], [ -122.41061747074127, 37.797636386612204 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42298245429993, 37.79766181975238 ], [ -122.42289125919342, 37.79767453631921 ], [ -122.42285907268524, 37.79750922077997 ], [ -122.42295026779175, 37.79749650418472 ], [ -122.42295563220978, 37.79751769850893 ], [ -122.42298245429991, 37.79766181975238 ], [ -122.42298245429991, 37.79766181975238 ], [ -122.42298245429993, 37.79766181975238 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4207991361618, 37.797572803723476 ], [ -122.42055237293245, 37.79760671460429 ], [ -122.42053627967836, 37.79752617623693 ], [ -122.42078304290773, 37.79749650418472 ], [ -122.4207991361618, 37.797572803723476 ], [ -122.4207991361618, 37.797572803723476 ], [ -122.4207991361618, 37.797572803723476 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42314875125885, 37.79764062546953 ], [ -122.4230682849884, 37.79765334203998 ], [ -122.42303609848022, 37.79750498191513 ], [ -122.42303609848022, 37.79749650418472 ], [ -122.42311656475067, 37.797488026453316 ], [ -122.42314875125885, 37.79764062546953 ], [ -122.42314875125885, 37.79764062546953 ], [ -122.42314875125885, 37.79764062546953 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4225103855133, 37.79751769850893 ], [ -122.42221534252167, 37.797555848277206 ], [ -122.42219924926758, 37.797488026453316 ], [ -122.42249965667725, 37.79745411551802 ], [ -122.4225103855133, 37.79751769850893 ], [ -122.4225103855133, 37.79751769850893 ], [ -122.4225103855133, 37.79751769850893 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42357790470123, 37.79758975916583 ], [ -122.42328822612762, 37.79762367003883 ], [ -122.42325603961945, 37.79746259325332 ], [ -122.42354571819305, 37.797428682306354 ], [ -122.42357790470123, 37.79758975916583 ], [ -122.42357790470123, 37.79758975916583 ], [ -122.42357790470123, 37.79758975916583 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42082059383392, 37.79749226531914 ], [ -122.42078304290773, 37.79749650418472 ], [ -122.42053627967836, 37.79752617623693 ], [ -122.42052018642427, 37.79745411551802 ], [ -122.42080450057988, 37.79742020456719 ], [ -122.42082059383394, 37.79749226531914 ], [ -122.42082059383394, 37.79749226531914 ], [ -122.42082059383392, 37.79749226531914 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41142749786377, 37.79774659682308 ], [ -122.41097688674927, 37.79780170186684 ], [ -122.41096079349518, 37.79772540256451 ], [ -122.41090178489686, 37.797733880268694 ], [ -122.41090714931488, 37.79774659682308 ], [ -122.4107301235199, 37.797767791075536 ], [ -122.4106764793396, 37.797488026453344 ], [ -122.41085350513458, 37.797466832120605 ], [ -122.41085886955261, 37.79749226531914 ], [ -122.41092324256897, 37.79748378758728 ], [ -122.41095542907715, 37.79763214775467 ], [ -122.41130948066711, 37.79758975916583 ], [ -122.41129338741302, 37.797513459644605 ], [ -122.41124510765076, 37.79751769850896 ], [ -122.41122364997864, 37.79742020456719 ], [ -122.41135776042938, 37.7974032490859 ], [ -122.41142749786377, 37.79774659682308 ], [ -122.41142749786377, 37.79774659682308 ], [ -122.41142749786377, 37.79774659682308 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4115240573883, 37.79756856486228 ], [ -122.41140067577362, 37.7975855203056 ], [ -122.41136312484743, 37.7974032490859 ], [ -122.41148650646211, 37.797390532472384 ], [ -122.4115240573883, 37.79756856486228 ], [ -122.4115240573883, 37.79756856486228 ], [ -122.4115240573883, 37.79756856486228 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42249965667725, 37.79745411551802 ], [ -122.42219924926758, 37.797488026453316 ], [ -122.42218315601349, 37.79741596569723 ], [ -122.42248356342316, 37.7973778158567 ], [ -122.42249965667725, 37.79745411551802 ], [ -122.42249965667725, 37.79745411551802 ], [ -122.42249965667725, 37.79745411551802 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41164207458496, 37.797555848277206 ], [ -122.41152405738829, 37.79756856486228 ], [ -122.4114865064621, 37.797390532472384 ], [ -122.41160452365875, 37.797373576984334 ], [ -122.41164207458496, 37.79753889282706 ], [ -122.41164207458496, 37.797555848277206 ], [ -122.41164207458496, 37.797555848277206 ], [ -122.41164207458496, 37.797555848277206 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42259085178375, 37.79749226531914 ], [ -122.42250502109526, 37.797500743050065 ], [ -122.42248356342314, 37.7973778158567 ], [ -122.42256939411163, 37.79736933811171 ], [ -122.42259085178375, 37.79749226531914 ], [ -122.42259085178375, 37.79749226531914 ], [ -122.42259085178375, 37.79749226531914 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41174936294556, 37.79752193737306 ], [ -122.41164207458496, 37.79753889282706 ], [ -122.41160452365875, 37.797373576984334 ], [ -122.41171717643738, 37.7973608603657 ], [ -122.41174936294556, 37.79752193737306 ], [ -122.41174936294556, 37.79752193737306 ], [ -122.41174936294556, 37.79752193737306 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42267668247223, 37.79747954872097 ], [ -122.42259085178375, 37.79749226531914 ], [ -122.42256939411163, 37.79736933811171 ], [ -122.42265522480011, 37.79735662149236 ], [ -122.42267668247223, 37.79747954872097 ], [ -122.42267668247223, 37.79747954872097 ], [ -122.42267668247223, 37.79747954872097 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42086350917816, 37.79741172682703 ], [ -122.42080450057983, 37.79742020456719 ], [ -122.42052018642426, 37.79745411551802 ], [ -122.4205094575882, 37.79739477134381 ], [ -122.4208527803421, 37.79735238261875 ], [ -122.42086350917816, 37.79741172682703 ], [ -122.42086350917816, 37.79741172682703 ], [ -122.42086350917816, 37.79741172682703 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4227625131607, 37.79747530985443 ], [ -122.42268204689026, 37.797488026453316 ], [ -122.42267668247224, 37.79747954872097 ], [ -122.42265522480012, 37.79735662149236 ], [ -122.42273569107056, 37.7973481437449 ], [ -122.42275714874268, 37.797449876650035 ], [ -122.4227625131607, 37.79747530985443 ], [ -122.4227625131607, 37.79747530985443 ], [ -122.4227625131607, 37.79747530985443 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4118834733963, 37.79750922078 ], [ -122.41174936294556, 37.79752193737306 ], [ -122.41171717643738, 37.79736086036572 ], [ -122.41185128688812, 37.7973439048708 ], [ -122.4118834733963, 37.79750922078 ], [ -122.4118834733963, 37.79750922078 ], [ -122.4118834733963, 37.79750922078 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42354571819305, 37.79741172682703 ], [ -122.42325603961945, 37.797449876650035 ], [ -122.42324531078339, 37.79740748795659 ], [ -122.42323994636537, 37.7973778158567 ], [ -122.42352962493898, 37.797339665996475 ], [ -122.42354571819305, 37.79741172682703 ], [ -122.42354571819305, 37.79741172682703 ], [ -122.42354571819305, 37.79741172682703 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42284297943115, 37.79743716004455 ], [ -122.42275714874268, 37.797449876650035 ], [ -122.42273569107056, 37.7973481437449 ], [ -122.42282152175903, 37.797335427121915 ], [ -122.42284297943115, 37.79743716004455 ], [ -122.42284297943115, 37.79743716004455 ], [ -122.42284297943115, 37.79743716004455 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42293953895569, 37.79746259325332 ], [ -122.42284834384918, 37.79747530985443 ], [ -122.42284297943117, 37.79743716004455 ], [ -122.42282152175905, 37.797335427121915 ], [ -122.42291271686554, 37.797326949372035 ], [ -122.42293417453766, 37.79742020456719 ], [ -122.42293953895569, 37.79746259325332 ], [ -122.42293953895569, 37.79746259325332 ], [ -122.42293953895569, 37.79746259325332 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42328822612762, 37.79762367003883 ], [ -122.42314875125884, 37.79764062546953 ], [ -122.42311656475066, 37.797488026453316 ], [ -122.4231058359146, 37.79742444343689 ], [ -122.42313802242278, 37.79742020456719 ], [ -122.42312729358672, 37.79738205472884 ], [ -122.42308974266052, 37.79738629360075 ], [ -122.42307901382446, 37.79733118824708 ], [ -122.42319166660307, 37.79731847162117 ], [ -122.42320239543913, 37.797373576984334 ], [ -122.42320775985716, 37.79741172682703 ], [ -122.42324531078337, 37.79740748795659 ], [ -122.42325603961943, 37.797449876650035 ], [ -122.42325603961943, 37.79746259325332 ], [ -122.42328822612761, 37.79762367003883 ], [ -122.42328822612761, 37.79762367003883 ], [ -122.42328822612762, 37.79762367003883 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42302000522614, 37.79741172682703 ], [ -122.42293417453766, 37.79742020456719 ], [ -122.42291271686554, 37.797326949372035 ], [ -122.42300391197203, 37.797314232745414 ], [ -122.42302000522612, 37.79741172682703 ], [ -122.42302000522612, 37.79741172682703 ], [ -122.42302000522614, 37.79741172682703 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42204904556274, 37.7977805076241 ], [ -122.42180764675139, 37.79781017956224 ], [ -122.42170572280884, 37.79732271049674 ], [ -122.4219524860382, 37.7972930383628 ], [ -122.42204904556274, 37.7977805076241 ], [ -122.42204904556274, 37.7977805076241 ], [ -122.42204904556274, 37.7977805076241 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4208527803421, 37.7973481437449 ], [ -122.4205094575882, 37.79739053247241 ], [ -122.4204933643341, 37.797318471621196 ], [ -122.42083668708801, 37.797276082852335 ], [ -122.4208527803421, 37.7973481437449 ], [ -122.4208527803421, 37.7973481437449 ], [ -122.4208527803421, 37.7973481437449 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42352962493896, 37.797339665996496 ], [ -122.42323994636536, 37.7973778158567 ], [ -122.42321848869324, 37.797276082852335 ], [ -122.42326140403748, 37.797271843974144 ], [ -122.42350816726685, 37.79724217181975 ], [ -122.42352962493896, 37.797339665996496 ], [ -122.42352962493896, 37.797339665996496 ], [ -122.42352962493896, 37.797339665996496 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42195248603821, 37.7972930383628 ], [ -122.42170572280884, 37.79732271049674 ], [ -122.42163062095642, 37.797335427121915 ], [ -122.42161452770235, 37.797259127338 ], [ -122.42168962955476, 37.79725064957937 ], [ -122.42193639278413, 37.79722097741648 ], [ -122.42195248603821, 37.7972930383628 ], [ -122.42195248603821, 37.7972930383628 ], [ -122.42195248603821, 37.7972930383628 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42083668708801, 37.797276082852335 ], [ -122.4204933643341, 37.797318471621196 ], [ -122.42048263549805, 37.797254888458816 ], [ -122.42082059383392, 37.79721249965347 ], [ -122.42083668708801, 37.797276082852335 ], [ -122.42083668708801, 37.797276082852335 ], [ -122.42083668708801, 37.797276082852335 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42246747016907, 37.7972930383628 ], [ -122.42217242717741, 37.797326949372035 ], [ -122.4221509695053, 37.79724217181975 ], [ -122.42242991924284, 37.79720826077158 ], [ -122.42245137691496, 37.79720826077158 ], [ -122.42246747016905, 37.7972930383628 ], [ -122.42246747016905, 37.7972930383628 ], [ -122.42246747016907, 37.7972930383628 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42263376712799, 37.797271843974116 ], [ -122.42254793643951, 37.797280321730305 ], [ -122.4225264787674, 37.79718282747526 ], [ -122.42261767387389, 37.79717434970787 ], [ -122.42263376712798, 37.797271843974116 ], [ -122.42263376712798, 37.797271843974116 ], [ -122.42263376712799, 37.797271843974116 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4227249622345, 37.797259127338 ], [ -122.422633767128, 37.797271843974116 ], [ -122.42261767387392, 37.79717434970787 ], [ -122.42261230945589, 37.797157394170185 ], [ -122.42270350456239, 37.797144677514346 ], [ -122.42272496223451, 37.797259127338 ], [ -122.42272496223451, 37.797259127338 ], [ -122.4227249622345, 37.797259127338 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42082059383392, 37.79721249965347 ], [ -122.42048263549805, 37.797254888458816 ], [ -122.42046654224396, 37.7971785885917 ], [ -122.42080986499786, 37.797140438628595 ], [ -122.42082059383392, 37.79721249965347 ], [ -122.42082059383392, 37.79721249965347 ], [ -122.42082059383392, 37.79721249965347 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42254793643951, 37.797280321730305 ], [ -122.42246747016908, 37.7972930383628 ], [ -122.42245137691499, 37.79720826077158 ], [ -122.4224352836609, 37.797144677514346 ], [ -122.42251574993135, 37.797131960856326 ], [ -122.42252111434938, 37.797153155285145 ], [ -122.4225264787674, 37.79718282747526 ], [ -122.42254793643951, 37.797280321730305 ], [ -122.42254793643951, 37.797280321730305 ], [ -122.42254793643951, 37.797280321730305 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42280542850494, 37.79725064957937 ], [ -122.4227249622345, 37.797259127338 ], [ -122.42270350456238, 37.797144677514346 ], [ -122.42270350456238, 37.79713619974259 ], [ -122.42278397083282, 37.79712772196984 ], [ -122.42280542850494, 37.79725064957937 ], [ -122.42280542850494, 37.79725064957937 ], [ -122.42280542850494, 37.79725064957937 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42093324661255, 37.797339665996496 ], [ -122.42085278034212, 37.7973481437449 ], [ -122.42083668708803, 37.797276082852335 ], [ -122.42082059383394, 37.79721249965347 ], [ -122.42080986499788, 37.797140438628595 ], [ -122.42089569568635, 37.79712772196984 ], [ -122.42093324661256, 37.797339665996496 ], [ -122.42093324661256, 37.797339665996496 ], [ -122.42093324661255, 37.797339665996496 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42242991924286, 37.79720826077158 ], [ -122.42215096950531, 37.79724217181975 ], [ -122.42213487625123, 37.79716163305497 ], [ -122.42241382598877, 37.79712772196984 ], [ -122.42242991924286, 37.79720826077158 ], [ -122.42242991924286, 37.79720826077158 ], [ -122.42242991924286, 37.79720826077158 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42103517055511, 37.79739901021499 ], [ -122.42094933986664, 37.79740748795659 ], [ -122.42093324661255, 37.797339665996475 ], [ -122.42089569568635, 37.79712772196984 ], [ -122.42098152637483, 37.79711924419614 ], [ -122.42103517055513, 37.79739901021499 ], [ -122.42103517055513, 37.79739901021499 ], [ -122.42103517055511, 37.79739901021499 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42289125919342, 37.79725064957937 ], [ -122.42281079292299, 37.79726336621694 ], [ -122.42278397083284, 37.79712772196984 ], [ -122.42277860641481, 37.79711924419614 ], [ -122.42286443710331, 37.79710652753374 ], [ -122.42287516593937, 37.79717011082383 ], [ -122.42289125919343, 37.79725064957937 ], [ -122.42289125919343, 37.79725064957937 ], [ -122.42289125919342, 37.79725064957937 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42114782333374, 37.79743292117557 ], [ -122.42104589939117, 37.797445637781784 ], [ -122.42103517055511, 37.79739901021499 ], [ -122.42098152637482, 37.79711924419614 ], [ -122.42107808589935, 37.79710652753374 ], [ -122.42113173007965, 37.797369338111686 ], [ -122.42114782333374, 37.79743292117557 ], [ -122.42114782333374, 37.79743292117557 ], [ -122.42114782333374, 37.79743292117557 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42350816726685, 37.79724217181975 ], [ -122.42326140403748, 37.797271843974116 ], [ -122.42323458194733, 37.79712348308311 ], [ -122.4234813451767, 37.79709381086916 ], [ -122.42350816726685, 37.79724217181975 ], [ -122.42350816726685, 37.79724217181975 ], [ -122.42350816726685, 37.79724217181975 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42123365402222, 37.79735662149236 ], [ -122.42113173007965, 37.79736933811171 ], [ -122.42107808589935, 37.79710652753374 ], [ -122.42118000984192, 37.79709381086916 ], [ -122.42123365402222, 37.79735662149236 ], [ -122.42123365402222, 37.79735662149236 ], [ -122.42123365402222, 37.79735662149236 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42193639278412, 37.79722097741648 ], [ -122.42168962955475, 37.79725064957937 ], [ -122.4216628074646, 37.79711500530891 ], [ -122.42190957069397, 37.797085333091545 ], [ -122.42193639278412, 37.79722097741648 ], [ -122.42193639278412, 37.79722097741648 ], [ -122.42193639278412, 37.79722097741648 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42139458656311, 37.79736933811171 ], [ -122.42127120494843, 37.79738629360075 ], [ -122.42128193378448, 37.79743716004455 ], [ -122.42134630680084, 37.797428682306354 ], [ -122.42136240005493, 37.79750922078 ], [ -122.42129802703856, 37.79751769850896 ], [ -122.42130339145659, 37.797530415100546 ], [ -122.42127120494841, 37.797530415100546 ], [ -122.42126584053038, 37.79752193737306 ], [ -122.42122292518614, 37.79752617623693 ], [ -122.42120683193207, 37.797445637781784 ], [ -122.4212497472763, 37.797441398913286 ], [ -122.42123365402222, 37.79735662149236 ], [ -122.42118000984192, 37.79709381086916 ], [ -122.42133557796478, 37.79707261642332 ], [ -122.42139458656311, 37.79735238261875 ], [ -122.42139458656311, 37.79736933811171 ], [ -122.42139458656311, 37.79736933811171 ], [ -122.42139458656311, 37.79736933811171 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41181373596191, 37.797259127338 ], [ -122.41130411624908, 37.79732271049674 ], [ -122.41128802299501, 37.797254888458816 ], [ -122.41127192974092, 37.7971785885917 ], [ -122.41126120090486, 37.79712772196984 ], [ -122.41177618503572, 37.797064138643265 ], [ -122.41178691387178, 37.797110766421454 ], [ -122.41179764270784, 37.79717434970787 ], [ -122.41180300712587, 37.797187066358596 ], [ -122.41181373596193, 37.797259127338 ], [ -122.41181373596193, 37.797259127338 ], [ -122.41181373596191, 37.797259127338 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42151260375977, 37.797339665996496 ], [ -122.42139458656311, 37.79735238261875 ], [ -122.42133557796478, 37.79707261642332 ], [ -122.42145359516144, 37.7970598997529 ], [ -122.42151260375977, 37.797339665996496 ], [ -122.42151260375977, 37.797339665996496 ], [ -122.42151260375977, 37.797339665996496 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42241382598877, 37.79712772196984 ], [ -122.42213487625122, 37.79716163305497 ], [ -122.42211878299713, 37.79708109420238 ], [ -122.42239773273468, 37.797047183080274 ], [ -122.42241382598877, 37.79712772196984 ], [ -122.42241382598877, 37.79712772196984 ], [ -122.42241382598877, 37.79712772196984 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42317020893097, 37.7972040218895 ], [ -122.4230682849884, 37.7972167385351 ], [ -122.42305219173433, 37.797140438628595 ], [ -122.42303609848024, 37.7970598997529 ], [ -122.4231380224228, 37.7970471830803 ], [ -122.42317020893098, 37.7972040218895 ], [ -122.42317020893098, 37.7972040218895 ], [ -122.42317020893097, 37.7972040218895 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42165207862854, 37.79743716004455 ], [ -122.42153406143188, 37.79745411551802 ], [ -122.42151260375977, 37.797339665996496 ], [ -122.42145359516144, 37.7970598997529 ], [ -122.42158234119417, 37.797042944188924 ], [ -122.42159307003023, 37.79710652753374 ], [ -122.42158234119417, 37.797110766421454 ], [ -122.42161452770235, 37.797259127338 ], [ -122.42163062095642, 37.797335427121915 ], [ -122.42165207862854, 37.79743716004455 ], [ -122.42165207862854, 37.79743716004455 ], [ -122.42165207862854, 37.79743716004455 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42305219173431, 37.797140438628595 ], [ -122.42296099662781, 37.797153155285145 ], [ -122.42293953895569, 37.797051421971396 ], [ -122.4230307340622, 37.79703870529732 ], [ -122.42303609848021, 37.7970598997529 ], [ -122.4230521917343, 37.797140438628595 ], [ -122.4230521917343, 37.797140438628595 ], [ -122.42305219173431, 37.797140438628595 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42190957069397, 37.797085333091545 ], [ -122.4216628074646, 37.79711500530891 ], [ -122.42159843444824, 37.79712348308311 ], [ -122.42158234119417, 37.797042944188924 ], [ -122.4218934774399, 37.797004794155775 ], [ -122.42190957069397, 37.797085333091545 ], [ -122.42190957069397, 37.797085333091545 ], [ -122.42190957069397, 37.797085333091545 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42239773273468, 37.797047183080274 ], [ -122.42211878299713, 37.79708109420238 ], [ -122.42210268974306, 37.79699207747368 ], [ -122.42238163948059, 37.796958166310716 ], [ -122.42239773273468, 37.797047183080274 ], [ -122.42239773273468, 37.797047183080274 ], [ -122.42239773273468, 37.797047183080274 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42251574993134, 37.797131960856326 ], [ -122.4224352836609, 37.797144677514346 ], [ -122.4223977327347, 37.79695392741425 ], [ -122.42247819900514, 37.79694544962059 ], [ -122.42251574993134, 37.797131960856326 ], [ -122.42251574993134, 37.797131960856326 ], [ -122.42251574993134, 37.797131960856326 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42260694503784, 37.797140438628595 ], [ -122.42252111434937, 37.797153155285145 ], [ -122.42251574993134, 37.797131960856326 ], [ -122.42247819900514, 37.79694544962059 ], [ -122.42256402969362, 37.79693273292826 ], [ -122.42260694503786, 37.797140438628595 ], [ -122.42260694503786, 37.797140438628595 ], [ -122.42260694503784, 37.797140438628595 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42270350456238, 37.79713619974259 ], [ -122.42260694503784, 37.79714891639987 ], [ -122.42260694503784, 37.797140438628595 ], [ -122.4225640296936, 37.79693273292829 ], [ -122.42266058921814, 37.796924255132176 ], [ -122.42270350456238, 37.79713619974259 ], [ -122.42270350456238, 37.79713619974259 ], [ -122.42270350456238, 37.79713619974259 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42278397083282, 37.79712772196984 ], [ -122.42270350456238, 37.79713619974259 ], [ -122.42266058921814, 37.796924255132176 ], [ -122.42274105548859, 37.79691153843622 ], [ -122.42276787757874, 37.797047183080274 ], [ -122.4227786064148, 37.79711924419614 ], [ -122.42278397083281, 37.79712772196984 ], [ -122.42278397083281, 37.79712772196984 ], [ -122.42278397083282, 37.79712772196984 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42284834384918, 37.79703870529732 ], [ -122.42276787757875, 37.797047183080274 ], [ -122.4227410554886, 37.79691153843622 ], [ -122.42282152175905, 37.79690306063769 ], [ -122.42284834384918, 37.79703870529732 ], [ -122.42284834384918, 37.79703870529732 ], [ -122.42284834384918, 37.79703870529732 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42296099662781, 37.79716163305497 ], [ -122.42287516593933, 37.79717011082383 ], [ -122.42286443710327, 37.79710652753374 ], [ -122.42284834384918, 37.79703870529732 ], [ -122.42282152175905, 37.79690306063769 ], [ -122.42291271686554, 37.79689034393807 ], [ -122.42293953895569, 37.797051421971375 ], [ -122.42296099662781, 37.797153155285145 ], [ -122.42296099662781, 37.79716163305497 ], [ -122.42296099662781, 37.79716163305497 ], [ -122.42296099662781, 37.79716163305497 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4230307340622, 37.79703870529732 ], [ -122.42293953895569, 37.797051421971396 ], [ -122.42291271686554, 37.796890343938095 ], [ -122.42299854755403, 37.79688186613715 ], [ -122.42303073406221, 37.79703870529732 ], [ -122.42303073406221, 37.79703870529732 ], [ -122.4230307340622, 37.79703870529732 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42313802242279, 37.797047183080274 ], [ -122.42303609848022, 37.7970598997529 ], [ -122.42303073406221, 37.79703870529732 ], [ -122.42299854755403, 37.79688186613715 ], [ -122.42310583591463, 37.79686914943388 ], [ -122.4231380224228, 37.797047183080274 ], [ -122.4231380224228, 37.797047183080274 ], [ -122.42313802242279, 37.797047183080274 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4234813451767, 37.79709381086916 ], [ -122.42323458194733, 37.79712348308311 ], [ -122.42318630218507, 37.79712772196984 ], [ -122.4231380224228, 37.79686491053231 ], [ -122.42342770099641, 37.79682676040723 ], [ -122.42348134517671, 37.79709381086916 ], [ -122.42348134517671, 37.79709381086916 ], [ -122.4234813451767, 37.79709381086916 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42184519767761, 37.796843716020796 ], [ -122.42153942584991, 37.79688186613715 ], [ -122.42151260375977, 37.79675893791397 ], [ -122.42161452770233, 37.79674622118954 ], [ -122.42161989212035, 37.79677165463619 ], [ -122.42172718048096, 37.79675469900605 ], [ -122.42172181606293, 37.796733504462914 ], [ -122.42181837558746, 37.79672078773413 ], [ -122.42184519767761, 37.796843716020796 ], [ -122.42184519767761, 37.796843716020796 ], [ -122.42184519767761, 37.796843716020796 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42239773273468, 37.79676317682161 ], [ -122.42206513881683, 37.796805565884775 ], [ -122.42204904556274, 37.79672502664398 ], [ -122.42219388484955, 37.79670807100316 ], [ -122.42238163948059, 37.7966826375346 ], [ -122.42239773273468, 37.79676317682161 ], [ -122.42239773273468, 37.79676317682161 ], [ -122.42239773273468, 37.79676317682161 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42181837558746, 37.79672078773413 ], [ -122.42172181606293, 37.796733504462914 ], [ -122.42161452770233, 37.79674622118954 ], [ -122.42151260375977, 37.79675893791397 ], [ -122.42147505283356, 37.79676317682161 ], [ -122.4214643239975, 37.79669535426995 ], [ -122.4218076467514, 37.79665296514357 ], [ -122.42181837558746, 37.79672078773413 ], [ -122.42181837558746, 37.79672078773413 ], [ -122.42181837558746, 37.79672078773413 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42219388484955, 37.79670807100314 ], [ -122.42204904556274, 37.79672502664398 ], [ -122.42203295230867, 37.79664024840093 ], [ -122.42217779159547, 37.79661905382496 ], [ -122.42219388484955, 37.79670807100314 ], [ -122.42219388484955, 37.79670807100314 ], [ -122.42219388484955, 37.79670807100314 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4218076467514, 37.79665296514357 ], [ -122.4214643239975, 37.79669535426995 ], [ -122.42144823074342, 37.796627531656064 ], [ -122.42179155349733, 37.796585142490756 ], [ -122.4218076467514, 37.79665296514357 ], [ -122.4218076467514, 37.79665296514357 ], [ -122.4218076467514, 37.79665296514357 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42339551448822, 37.796636009486214 ], [ -122.42302536964417, 37.79668687644664 ], [ -122.42302000522615, 37.79662329274064 ], [ -122.42305755615234, 37.79661905382496 ], [ -122.42338478565217, 37.796580903572895 ], [ -122.42339551448823, 37.796636009486214 ], [ -122.42339551448823, 37.796636009486214 ], [ -122.42339551448822, 37.796636009486214 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42338478565216, 37.796580903572895 ], [ -122.42305755615234, 37.79661905382496 ], [ -122.42303609848021, 37.79652579761845 ], [ -122.42336869239806, 37.79648764731826 ], [ -122.42338478565215, 37.796580903572895 ], [ -122.42338478565215, 37.796580903572895 ], [ -122.42338478565216, 37.796580903572895 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42179155349731, 37.796585142490756 ], [ -122.42144823074341, 37.796627531656064 ], [ -122.42142140865326, 37.796496125164445 ], [ -122.42176473140717, 37.79644949699833 ], [ -122.42179155349731, 37.796585142490756 ], [ -122.42179155349731, 37.796585142490756 ], [ -122.42179155349731, 37.796585142490756 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42237627506256, 37.79657242573643 ], [ -122.42203831672668, 37.796614814909034 ], [ -122.42200076580048, 37.79643678022064 ], [ -122.42233872413635, 37.79639015201705 ], [ -122.42237627506256, 37.79657242573643 ], [ -122.42237627506256, 37.79657242573643 ], [ -122.42237627506256, 37.79657242573643 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41783797740936, 37.79647493054711 ], [ -122.41766095161438, 37.79650036408717 ], [ -122.41762340068817, 37.796326568055655 ], [ -122.41780579090118, 37.79630113445578 ], [ -122.41783797740936, 37.79647493054711 ], [ -122.41783797740936, 37.79647493054711 ], [ -122.41783797740936, 37.79647493054711 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42176473140717, 37.79644949699833 ], [ -122.42142140865326, 37.796496125164445 ], [ -122.42134094238281, 37.796504603009666 ], [ -122.42129802703857, 37.79629689552161 ], [ -122.42172718048097, 37.79624178935534 ], [ -122.42176473140717, 37.79644949699833 ], [ -122.42176473140717, 37.79644949699833 ], [ -122.42176473140717, 37.79644949699833 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42233872413635, 37.79639015201707 ], [ -122.42200076580048, 37.79643678022064 ], [ -122.42195785045624, 37.79624602829267 ], [ -122.42230117321014, 37.79620363890844 ], [ -122.42233872413634, 37.79639015201707 ], [ -122.42233872413634, 37.79639015201707 ], [ -122.42233872413635, 37.79639015201707 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42230117321014, 37.79620363890844 ], [ -122.42195785045624, 37.79624602829267 ], [ -122.42192029953003, 37.79605527587214 ], [ -122.42226362228394, 37.79601288637848 ], [ -122.42230117321014, 37.79620363890844 ], [ -122.42230117321014, 37.79620363890844 ], [ -122.42230117321014, 37.79620363890844 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42202758789062, 37.795813655432426 ], [ -122.42187201976776, 37.795830611278554 ], [ -122.42184519767763, 37.795703442337825 ], [ -122.42200076580049, 37.79568224749312 ], [ -122.42202758789062, 37.795813655432426 ], [ -122.42202758789062, 37.795813655432426 ], [ -122.42202758789062, 37.795813655432426 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41046726703644, 37.7958009385453 ], [ -122.41036534309387, 37.795813655432426 ], [ -122.41035461425781, 37.79575430994039 ], [ -122.41032779216766, 37.7956483357289 ], [ -122.41043508052827, 37.79563561881328 ], [ -122.41046726703645, 37.7958009385453 ], [ -122.41046726703645, 37.7958009385453 ], [ -122.41046726703644, 37.7958009385453 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42079377174377, 37.79568224749312 ], [ -122.42061674594879, 37.795703442337825 ], [ -122.42062211036682, 37.795737354076756 ], [ -122.42050409317015, 37.79575430994039 ], [ -122.42048263549803, 37.79564409675727 ], [ -122.42077767848967, 37.79561018497552 ], [ -122.42079377174376, 37.79568224749312 ], [ -122.42079377174376, 37.79568224749312 ], [ -122.42079377174377, 37.79568224749312 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42215633392334, 37.79566529161295 ], [ -122.42200076580048, 37.79568224749312 ], [ -122.42184519767761, 37.795703442337825 ], [ -122.42183446884155, 37.7956483357289 ], [ -122.42214560508728, 37.795605946001736 ], [ -122.42215633392334, 37.79566529161295 ], [ -122.42215633392334, 37.79566529161295 ], [ -122.42215633392334, 37.79566529161295 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42214560508728, 37.795605946001736 ], [ -122.42183446884155, 37.7956483357289 ], [ -122.42181837558746, 37.795555078297006 ], [ -122.422091960907, 37.79551692749549 ], [ -122.42212414741518, 37.79551268851633 ], [ -122.4221456050873, 37.795605946001736 ], [ -122.4221456050873, 37.795605946001736 ], [ -122.42214560508728, 37.795605946001736 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42209196090698, 37.79551692749549 ], [ -122.42181837558745, 37.795555078297006 ], [ -122.42179691791533, 37.79545758176509 ], [ -122.42206513881682, 37.79542366989775 ], [ -122.42207586765288, 37.79541943091325 ], [ -122.42209196090697, 37.79551692749549 ], [ -122.42209196090697, 37.79551692749549 ], [ -122.42209196090698, 37.79551692749549 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42206513881683, 37.79542366989775 ], [ -122.42179691791534, 37.79545758176509 ], [ -122.42178082466127, 37.795381280041674 ], [ -122.42194712162019, 37.795360085104505 ], [ -122.42204904556274, 37.795347368139296 ], [ -122.42206513881683, 37.79542366989775 ], [ -122.42206513881683, 37.79542366989775 ], [ -122.42206513881683, 37.79542366989775 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42194712162018, 37.795360085104505 ], [ -122.42178082466125, 37.795381280041674 ], [ -122.4217540025711, 37.795262588315275 ], [ -122.42192029953003, 37.79524139334406 ], [ -122.42194712162018, 37.795360085104505 ], [ -122.42194712162018, 37.795360085104505 ], [ -122.42194712162018, 37.795360085104505 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41045653820038, 37.79530073924811 ], [ -122.40998446941376, 37.795360085104505 ], [ -122.40994691848755, 37.79517780839393 ], [ -122.41041898727417, 37.79511422338909 ], [ -122.41045653820038, 37.79530073924811 ], [ -122.41045653820038, 37.79530073924811 ], [ -122.41045653820038, 37.79530073924811 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42193102836609, 37.79524139334406 ], [ -122.42192029953003, 37.79524139334406 ], [ -122.4217540025711, 37.795262588315275 ], [ -122.42172181606293, 37.795109984386826 ], [ -122.42189884185791, 37.795088789371825 ], [ -122.42193102836609, 37.79524139334406 ], [ -122.42193102836609, 37.79524139334406 ], [ -122.42193102836609, 37.79524139334406 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4214643239975, 37.79497433618579 ], [ -122.42100834846497, 37.79503368230439 ], [ -122.42093324661255, 37.79468608293166 ], [ -122.42139458656312, 37.794626736533836 ], [ -122.4214643239975, 37.79497433618579 ], [ -122.4214643239975, 37.79497433618579 ], [ -122.4214643239975, 37.79497433618579 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41237163543701, 37.795262588315275 ], [ -122.41227507591248, 37.795275305295064 ], [ -122.41227507591248, 37.79529226126473 ], [ -122.41221606731415, 37.79530073924811 ], [ -122.41221070289612, 37.79529650025653 ], [ -122.41217315196992, 37.79530073924811 ], [ -122.41213023662569, 37.795304978239436 ], [ -122.41208195686342, 37.7950506383295 ], [ -122.41163671016695, 37.7951184623911 ], [ -122.4116098880768, 37.79499553123362 ], [ -122.41158306598668, 37.79499977024245 ], [ -122.41151332855229, 37.7946182584731 ], [ -122.41198003292088, 37.7945504339523 ], [ -122.41213560104374, 37.79452499974094 ], [ -122.41221606731419, 37.79491922903299 ], [ -122.41227507591249, 37.794910751005816 ], [ -122.41237163543705, 37.795262588315275 ], [ -122.41237163543705, 37.795262588315275 ], [ -122.41237163543701, 37.795262588315275 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40958750247955, 37.79468608293166 ], [ -122.40950167179108, 37.79469456098458 ], [ -122.40950167179108, 37.794516521668534 ], [ -122.40955531597137, 37.79450804359518 ], [ -122.40958750247955, 37.79468608293166 ], [ -122.40958750247955, 37.79468608293166 ], [ -122.40958750247955, 37.79468608293166 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42296099662781, 37.794232505681 ], [ -122.42254257202148, 37.794283374296356 ], [ -122.4225103855133, 37.794122290227605 ], [ -122.42292881011963, 37.794071421501364 ], [ -122.42296099662781, 37.794232505681 ], [ -122.42296099662781, 37.794232505681 ], [ -122.42296099662781, 37.794232505681 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41999983787537, 37.79424522283814 ], [ -122.41987645626068, 37.79426641809515 ], [ -122.41984963417053, 37.794257939993045 ], [ -122.41983890533447, 37.79424522283814 ], [ -122.41981208324434, 37.79408413868621 ], [ -122.41996228694917, 37.79406718243925 ], [ -122.41999983787538, 37.79424522283814 ], [ -122.41999983787538, 37.79424522283814 ], [ -122.41999983787537, 37.79424522283814 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41181373596191, 37.79424098378598 ], [ -122.41148114204407, 37.794283374296356 ], [ -122.41147041320801, 37.79424522283814 ], [ -122.41143822669983, 37.79424946189002 ], [ -122.41140067577362, 37.794071421501364 ], [ -122.41176545619965, 37.794024791804866 ], [ -122.41181373596191, 37.79424098378598 ], [ -122.41181373596191, 37.79424098378598 ], [ -122.41181373596191, 37.79424098378598 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41907715797424, 37.794313047639136 ], [ -122.41881966590881, 37.79434272097 ], [ -122.41874992847443, 37.79399511834632 ], [ -122.41900205612184, 37.79396120580767 ], [ -122.41907715797426, 37.794313047639136 ], [ -122.41907715797426, 37.794313047639136 ], [ -122.41907715797424, 37.794313047639136 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4189966917038, 37.79395696673922 ], [ -122.41876602172852, 37.793982401146124 ], [ -122.41871237754822, 37.793770447487695 ], [ -122.41894841194153, 37.793740773926984 ], [ -122.41899669170378, 37.79395696673922 ], [ -122.41899669170378, 37.79395696673922 ], [ -122.4189966917038, 37.79395696673922 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41986572742462, 37.7938001210365 ], [ -122.41976916790009, 37.793808599191095 ], [ -122.41971552371977, 37.793554254129674 ], [ -122.41981208324432, 37.793545775945866 ], [ -122.41986572742462, 37.7938001210365 ], [ -122.41986572742462, 37.7938001210365 ], [ -122.41986572742462, 37.7938001210365 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41993546485901, 37.79375773024885 ], [ -122.41985499858858, 37.793766208408336 ], [ -122.41981208324434, 37.793545775945866 ], [ -122.41988718509675, 37.79353729776109 ], [ -122.41993546485901, 37.79375773024885 ], [ -122.41993546485901, 37.79375773024885 ], [ -122.41993546485901, 37.79375773024885 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42002129554749, 37.7937492520884 ], [ -122.41993546485901, 37.79375773024885 ], [ -122.41988718509674, 37.79353729776109 ], [ -122.41997301578522, 37.79352458048213 ], [ -122.42002129554749, 37.7937492520884 ], [ -122.42002129554749, 37.7937492520884 ], [ -122.42002129554749, 37.7937492520884 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42013394832611, 37.793723817601254 ], [ -122.42012321949005, 37.79373653484592 ], [ -122.4200963973999, 37.793740773926984 ], [ -122.42008566856384, 37.793732295764606 ], [ -122.42007493972778, 37.793740773926984 ], [ -122.42002129554749, 37.7937492520884 ], [ -122.41997301578522, 37.79352458048213 ], [ -122.41999983787537, 37.79351186320097 ], [ -122.4200266599655, 37.79351610229493 ], [ -122.42004811763762, 37.79350762410675 ], [ -122.42008566856383, 37.79351610229493 ], [ -122.4201339483261, 37.793723817601254 ], [ -122.4201339483261, 37.793723817601254 ], [ -122.42013394832611, 37.793723817601254 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4202412366867, 37.79374501300782 ], [ -122.4202036857605, 37.7937492520884 ], [ -122.4202036857605, 37.79372805668306 ], [ -122.4201500415802, 37.793732295764606 ], [ -122.42013394832611, 37.793723817601254 ], [ -122.42008566856386, 37.79352034138864 ], [ -122.42010176181793, 37.79351610229493 ], [ -122.42011249065399, 37.7935033850123 ], [ -122.4201500415802, 37.79350762410675 ], [ -122.42016613483429, 37.793494906822666 ], [ -122.42019295692442, 37.7935033850123 ], [ -122.42021441459654, 37.79359664503403 ], [ -122.42018222808836, 37.79360088412314 ], [ -122.42018222808836, 37.79361360138898 ], [ -122.42020905017851, 37.79361360138898 ], [ -122.42024123668669, 37.79374501300782 ], [ -122.42024123668669, 37.79374501300782 ], [ -122.4202412366867, 37.79374501300782 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4204021692276, 37.793732295764606 ], [ -122.42024660110474, 37.79375349116876 ], [ -122.42022514343262, 37.793668709515686 ], [ -122.42025196552277, 37.79366023134501 ], [ -122.42023587226868, 37.79357968867522 ], [ -122.42020905017854, 37.79358392776529 ], [ -122.42019295692445, 37.79349914591762 ], [ -122.42034852504732, 37.7934779504405 ], [ -122.4203646183014, 37.7935584932212 ], [ -122.42033779621126, 37.79356273231249 ], [ -122.42035925388338, 37.79365599225931 ], [ -122.42038607597352, 37.793651753173364 ], [ -122.42039680480958, 37.793689904938056 ], [ -122.4204021692276, 37.793732295764606 ], [ -122.4204021692276, 37.793732295764606 ], [ -122.4204021692276, 37.793732295764606 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4205631017685, 37.793723817601254 ], [ -122.42040753364563, 37.79374501300782 ], [ -122.42039680480957, 37.793689904938056 ], [ -122.42041289806365, 37.79368566585406 ], [ -122.42038071155547, 37.79352881957535 ], [ -122.42035925388335, 37.79353305866835 ], [ -122.42034852504729, 37.79347371134435 ], [ -122.42049872875214, 37.79345251585992 ], [ -122.4205631017685, 37.793723817601226 ], [ -122.4205631017685, 37.793723817601226 ], [ -122.4205631017685, 37.793723817601254 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42123901844025, 37.79360936230061 ], [ -122.42101907730103, 37.79363903591409 ], [ -122.42097079753876, 37.793393168471205 ], [ -122.42119073867798, 37.793367733861466 ], [ -122.42123901844025, 37.79360936230061 ], [ -122.42123901844025, 37.79360936230061 ], [ -122.42123901844025, 37.79360936230061 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41855144500732, 37.7935500150379 ], [ -122.41840124130249, 37.79356697140353 ], [ -122.4183851480484, 37.7934991459176 ], [ -122.41835832595827, 37.7935033850123 ], [ -122.41837441921234, 37.79357121049434 ], [ -122.41826176643373, 37.79358392776529 ], [ -122.41823494434358, 37.793469472247935 ], [ -122.41821348667146, 37.79347371134435 ], [ -122.41823494434358, 37.79358816685511 ], [ -122.41807401180269, 37.79360936230061 ], [ -122.4180418252945, 37.793469472247935 ], [ -122.41812229156494, 37.793460994054406 ], [ -122.41812229156494, 37.79344827676231 ], [ -122.4180418252945, 37.79345675495729 ], [ -122.41802036762238, 37.793359255656256 ], [ -122.41810619831087, 37.79335077745011 ], [ -122.41810619831087, 37.79333806013901 ], [ -122.41801500320436, 37.79335077745011 ], [ -122.41799354553224, 37.7932236042408 ], [ -122.4180954694748, 37.79321088690781 ], [ -122.41810083389282, 37.7932278433513 ], [ -122.41817057132721, 37.79321936513004 ], [ -122.41817057132721, 37.79320664779634 ], [ -122.41826713085175, 37.793193930460454 ], [ -122.4182939529419, 37.79331262551028 ], [ -122.41820275783539, 37.79332534282574 ], [ -122.41820275783539, 37.79335077745011 ], [ -122.41829931735992, 37.79333806013901 ], [ -122.41831541061401, 37.79343132036943 ], [ -122.41836905479431, 37.79342708127058 ], [ -122.41832077503204, 37.79318545223532 ], [ -122.41847634315491, 37.7931642566682 ], [ -122.41855144500732, 37.7935500150379 ], [ -122.41855144500732, 37.7935500150379 ], [ -122.41855144500732, 37.7935500150379 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41042971611023, 37.79328295176571 ], [ -122.41004884243013, 37.793333821034835 ], [ -122.4099737405777, 37.79296501804014 ], [ -122.41035461425781, 37.79291414851708 ], [ -122.41042971611023, 37.79328295176571 ], [ -122.41042971611023, 37.79328295176571 ], [ -122.41042971611023, 37.79328295176571 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41097688674927, 37.79319816957266 ], [ -122.41043508052826, 37.79326599533489 ], [ -122.41036534309387, 37.79290990938859 ], [ -122.41055309772491, 37.792888713742435 ], [ -122.41060137748718, 37.79310914816524 ], [ -122.41095006465912, 37.79306251786141 ], [ -122.41097688674927, 37.79319816957266 ], [ -122.41097688674927, 37.79319816957266 ], [ -122.41097688674927, 37.79319816957266 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41998374462128, 37.79282088763388 ], [ -122.41963505744934, 37.79286327895901 ], [ -122.41959750652313, 37.79266403951932 ], [ -122.41994619369507, 37.792621648079844 ], [ -122.41998374462128, 37.79282088763388 ], [ -122.41998374462128, 37.79282088763388 ], [ -122.41998374462128, 37.79282088763388 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42254793643951, 37.79240969051771 ], [ -122.42218315601349, 37.792460560388086 ], [ -122.42215633392335, 37.79235882061232 ], [ -122.42252111434938, 37.792303711508595 ], [ -122.42254793643951, 37.79240969051771 ], [ -122.42254793643951, 37.79240969051771 ], [ -122.42254793643951, 37.79240969051771 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4135571718216, 37.792337624808056 ], [ -122.41298854351044, 37.7924139296749 ], [ -122.41296172142029, 37.792303711508595 ], [ -122.41353571414949, 37.792227406527935 ], [ -122.41355717182161, 37.792337624808056 ], [ -122.41355717182161, 37.792337624808056 ], [ -122.4135571718216, 37.792337624808056 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41290271282196, 37.792426647145035 ], [ -122.41276860237122, 37.79244360376852 ], [ -122.41273105144501, 37.7922782765238 ], [ -122.41275250911713, 37.7922782765238 ], [ -122.41274178028107, 37.79223588486298 ], [ -122.41282761096956, 37.79222316736003 ], [ -122.41283833980562, 37.792265559028095 ], [ -122.41286516189575, 37.792265559028095 ], [ -122.41290271282196, 37.792426647145035 ], [ -122.41290271282196, 37.792426647145035 ], [ -122.41290271282196, 37.792426647145035 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41371810436249, 37.79225284153023 ], [ -122.41366446018219, 37.792261319862405 ], [ -122.41368591785431, 37.79235034229134 ], [ -122.41357862949371, 37.79236305977244 ], [ -122.41351962089539, 37.79212566643111 ], [ -122.41362154483795, 37.79211294890917 ], [ -122.41364300251007, 37.792210449854856 ], [ -122.41370737552643, 37.792197732347496 ], [ -122.41371810436249, 37.79225284153023 ], [ -122.41371810436249, 37.79225284153023 ], [ -122.41371810436249, 37.79225284153023 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42094397544861, 37.79230795067187 ], [ -122.42060601711273, 37.79235034229134 ], [ -122.4205631017685, 37.79211718808339 ], [ -122.42089569568634, 37.79207479633018 ], [ -122.4209439754486, 37.79230795067187 ], [ -122.4209439754486, 37.79230795067187 ], [ -122.42094397544861, 37.79230795067187 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4140989780426, 37.792168058155134 ], [ -122.41401851177216, 37.7921807756676 ], [ -122.41403996944427, 37.792265559028095 ], [ -122.41385221481323, 37.79229099401729 ], [ -122.41386294364929, 37.79232914648466 ], [ -122.41371273994446, 37.79235034229134 ], [ -122.4137020111084, 37.79229523318131 ], [ -122.41373956203459, 37.79229099401729 ], [ -122.4137020111084, 37.79212142725738 ], [ -122.41407752037048, 37.792070557153494 ], [ -122.4140989780426, 37.792168058155134 ], [ -122.4140989780426, 37.792168058155134 ], [ -122.4140989780426, 37.792168058155134 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41232335567474, 37.79207903550658 ], [ -122.41231262683868, 37.79209175303438 ], [ -122.41225898265839, 37.79209599220981 ], [ -122.4122428894043, 37.79208751385868 ], [ -122.4122428894043, 37.79207055715352 ], [ -122.41225898265839, 37.79205783962207 ], [ -122.41230189800262, 37.792049361266564 ], [ -122.41232335567474, 37.79205783962207 ], [ -122.41232335567474, 37.79207903550658 ], [ -122.41232335567474, 37.79207903550658 ], [ -122.41232335567474, 37.79207903550658 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4107301235199, 37.792460560388086 ], [ -122.41064965724945, 37.79246903869639 ], [ -122.41070866584778, 37.79274034404906 ], [ -122.40950167179108, 37.79289295287215 ], [ -122.40950167179108, 37.79268099608831 ], [ -122.40969479084015, 37.79265556123338 ], [ -122.40961968898773, 37.79228675485305 ], [ -122.40950167179106, 37.792299472345086 ], [ -122.40950167179106, 37.79212142725738 ], [ -122.41054236888884, 37.791990012750766 ], [ -122.41060137748717, 37.792282515688555 ], [ -122.41068720817564, 37.79226979819359 ], [ -122.41073012351988, 37.792460560388086 ], [ -122.41073012351988, 37.792460560388086 ], [ -122.4107301235199, 37.792460560388086 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4117386341095, 37.792146862296164 ], [ -122.4117386341095, 37.7921807756676 ], [ -122.41172254085541, 37.7922146890235 ], [ -122.41159915924074, 37.792227406527935 ], [ -122.41163671016693, 37.79237577725132 ], [ -122.41150259971619, 37.792392733886466 ], [ -122.41151332855225, 37.79246479954235 ], [ -122.41135239601135, 37.79248599531013 ], [ -122.41133630275726, 37.7924139296749 ], [ -122.41125583648683, 37.792422407988575 ], [ -122.41122364997864, 37.792282515688555 ], [ -122.4111270904541, 37.79229523318131 ], [ -122.41110026836397, 37.792282515688555 ], [ -122.41107881069185, 37.792261319862405 ], [ -122.41106808185577, 37.79223164569559 ], [ -122.41106808185577, 37.79220621068598 ], [ -122.41108417510986, 37.792185014837955 ], [ -122.41110563278198, 37.792168058155134 ], [ -122.41120755672455, 37.79215534064047 ], [ -122.41118609905243, 37.79207479633018 ], [ -122.41128265857697, 37.792066317976605 ], [ -122.41126656532289, 37.79200696947442 ], [ -122.41145431995393, 37.791985773569245 ], [ -122.41146504878999, 37.792045122088425 ], [ -122.41157233715059, 37.79203240455262 ], [ -122.41158843040466, 37.79210447055998 ], [ -122.41167962551117, 37.79209175303435 ], [ -122.41171181201935, 37.79211294890915 ], [ -122.4117386341095, 37.792146862296164 ], [ -122.4117386341095, 37.792146862296164 ], [ -122.4117386341095, 37.792146862296164 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4281644821167, 37.79176533579482 ], [ -122.42810010910034, 37.79176957498901 ], [ -122.42808938026428, 37.79165935586148 ], [ -122.42815911769867, 37.79165935586148 ], [ -122.42816448211669, 37.79176533579482 ], [ -122.42816448211669, 37.79176533579482 ], [ -122.4281644821167, 37.79176533579482 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42084205150604, 37.79183316287237 ], [ -122.42054700851439, 37.791871315576145 ], [ -122.4205094575882, 37.791672073461534 ], [ -122.42080450057983, 37.79163392065487 ], [ -122.42084205150604, 37.79183316287237 ], [ -122.42084205150604, 37.79183316287237 ], [ -122.42084205150604, 37.79183316287237 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41403996944427, 37.791782292570055 ], [ -122.41403996944427, 37.791807727725605 ], [ -122.41401851177216, 37.791837402062676 ], [ -122.41399705410004, 37.79185435882137 ], [ -122.41397023200989, 37.79186707638783 ], [ -122.41393804550171, 37.79187555476425 ], [ -122.41374492645265, 37.79190098988767 ], [ -122.41377174854279, 37.79201968701463 ], [ -122.41360008716583, 37.79203664373147 ], [ -122.41358399391174, 37.79195609929177 ], [ -122.4130153656006, 37.792028165373544 ], [ -122.41295635700227, 37.79178653176325 ], [ -122.41354107856752, 37.79171446544581 ], [ -122.41353034973146, 37.791642399058084 ], [ -122.41369128227235, 37.7916212030483 ], [ -122.41371273994447, 37.79173142223272 ], [ -122.41389513015748, 37.79171022624848 ], [ -122.41393804550172, 37.79171022624848 ], [ -122.41398096084596, 37.791718704642896 ], [ -122.41400778293611, 37.79173142223272 ], [ -122.41402924060823, 37.79175261821087 ], [ -122.41403996944429, 37.791782292570076 ], [ -122.41403996944429, 37.791782292570076 ], [ -122.41403996944427, 37.791782292570055 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41118609905243, 37.79168903025815 ], [ -122.41090714931488, 37.79172294383976 ], [ -122.4108749628067, 37.791553375776175 ], [ -122.41115391254425, 37.79151946211675 ], [ -122.41118609905243, 37.79168903025815 ], [ -122.41118609905243, 37.79168903025815 ], [ -122.41118609905243, 37.79168903025815 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41126120090485, 37.791680551860324 ], [ -122.41118609905243, 37.79168903025815 ], [ -122.41115391254425, 37.79151946211675 ], [ -122.41122901439667, 37.79150674449044 ], [ -122.41126120090485, 37.791680551860324 ], [ -122.41126120090485, 37.791680551860324 ], [ -122.41126120090485, 37.791680551860324 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42244064807892, 37.791748379015715 ], [ -122.42193102836609, 37.79181196691732 ], [ -122.42186665534973, 37.791485548441756 ], [ -122.42237627506256, 37.791421960259214 ], [ -122.42244064807892, 37.791748379015715 ], [ -122.42244064807892, 37.791748379015715 ], [ -122.42244064807892, 37.791748379015715 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42651224136353, 37.791591528624394 ], [ -122.42607772350311, 37.791646638259294 ], [ -122.42603480815887, 37.79139652497087 ], [ -122.4263995885849, 37.79135413280419 ], [ -122.42643713951111, 37.791553375776175 ], [ -122.42650151252747, 37.791544897362755 ], [ -122.42651224136353, 37.791591528624394 ], [ -122.42651224136353, 37.791591528624394 ], [ -122.42651224136353, 37.791591528624394 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42077231407166, 37.7914261994731 ], [ -122.42050409317017, 37.79146435238699 ], [ -122.42048263549805, 37.79137956810714 ], [ -122.42049872875214, 37.79137956810714 ], [ -122.42048263549805, 37.79129902295115 ], [ -122.42073476314545, 37.791269348397854 ], [ -122.42077231407166, 37.7914261994731 ], [ -122.42077231407166, 37.7914261994731 ], [ -122.42077231407166, 37.7914261994731 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41186738014221, 37.7916042462361 ], [ -122.41162598133087, 37.79163392065487 ], [ -122.4116098880768, 37.791553375776175 ], [ -122.41165816783905, 37.79154913656959 ], [ -122.41163671016693, 37.79144315632614 ], [ -122.41158843040466, 37.79145163475121 ], [ -122.41155624389648, 37.79129054450855 ], [ -122.41179764270784, 37.79126086995186 ], [ -122.41182982921602, 37.791421960259214 ], [ -122.41177618503572, 37.7914261994731 ], [ -122.41179764270784, 37.79153217974085 ], [ -122.41185128688814, 37.79152370132501 ], [ -122.41186738014221, 37.7916042462361 ], [ -122.41186738014221, 37.7916042462361 ], [ -122.41186738014221, 37.7916042462361 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41162598133087, 37.79163392065487 ], [ -122.41126120090485, 37.791680551860324 ], [ -122.41122901439667, 37.79150674449044 ], [ -122.4111807346344, 37.7912863052869 ], [ -122.41154551506042, 37.79123967383262 ], [ -122.41155624389648, 37.79129054450855 ], [ -122.41158843040466, 37.79145163475121 ], [ -122.4116098880768, 37.791553375776175 ], [ -122.41162598133087, 37.79163392065487 ], [ -122.41162598133087, 37.79163392065487 ], [ -122.41162598133087, 37.79163392065487 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41235017776489, 37.79154065815572 ], [ -122.4118673801422, 37.7916042462361 ], [ -122.41185128688812, 37.79152370132501 ], [ -122.411829829216, 37.791421960259214 ], [ -122.41179764270782, 37.79126086995186 ], [ -122.4117922782898, 37.7912269561582 ], [ -122.41227507591248, 37.79116760698179 ], [ -122.4123501777649, 37.79154065815572 ], [ -122.4123501777649, 37.79154065815572 ], [ -122.41235017776489, 37.79154065815572 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41739273071289, 37.79150250528121 ], [ -122.41730153560638, 37.79151522290824 ], [ -122.41729617118837, 37.79146859159843 ], [ -122.41728007793428, 37.791472830809646 ], [ -122.41728544235231, 37.791489787651976 ], [ -122.41703331470491, 37.79152370132501 ], [ -122.41702795028688, 37.791485548441756 ], [ -122.41700649261476, 37.791489787651976 ], [ -122.41701722145082, 37.79152370132501 ], [ -122.41692066192628, 37.7915364189484 ], [ -122.41690993309022, 37.791472830809646 ], [ -122.41694748401642, 37.79146859159843 ], [ -122.41690456867218, 37.791265109174965 ], [ -122.41686701774599, 37.791269348397826 ], [ -122.4168509244919, 37.79118880312169 ], [ -122.41705477237703, 37.79116336775309 ], [ -122.4170708656311, 37.79124391305694 ], [ -122.41700649261475, 37.791252391504884 ], [ -122.41700649261475, 37.791265109174965 ], [ -122.41703867912292, 37.79126086995184 ], [ -122.41707623004913, 37.791455873963365 ], [ -122.41711378097533, 37.79145163475121 ], [ -122.41710841655731, 37.79140500340129 ], [ -122.4172693490982, 37.79138380732341 ], [ -122.4172693490982, 37.791362611239464 ], [ -122.41736590862276, 37.79134989358616 ], [ -122.41739273071289, 37.79150250528119 ], [ -122.41739273071289, 37.79150250528119 ], [ -122.41739273071289, 37.79150250528121 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41064429283142, 37.791553375776175 ], [ -122.41057991981506, 37.79156185418857 ], [ -122.41041898727416, 37.79173566142882 ], [ -122.41042435169219, 37.791778053376625 ], [ -122.41009175777434, 37.79182468449112 ], [ -122.4100488424301, 37.79162968145292 ], [ -122.40995228290556, 37.791642399058055 ], [ -122.40986108779906, 37.791231195383254 ], [ -122.41056382656093, 37.79114217160591 ], [ -122.41064429283138, 37.791553375776175 ], [ -122.41064429283138, 37.791553375776175 ], [ -122.41064429283142, 37.791553375776175 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41736590862274, 37.79134989358618 ], [ -122.41726934909819, 37.791362611239464 ], [ -122.41725862026213, 37.791362611239464 ], [ -122.41725325584412, 37.79134989358618 ], [ -122.4171781539917, 37.791362611239464 ], [ -122.4171781539917, 37.791371089673774 ], [ -122.41709768772125, 37.79138380732341 ], [ -122.41709232330322, 37.791337175930686 ], [ -122.41710305213928, 37.791337175930686 ], [ -122.4170869588852, 37.79124391305697 ], [ -122.41707086563112, 37.79124391305697 ], [ -122.41705477237703, 37.79116336775309 ], [ -122.41731762886052, 37.79112945391467 ], [ -122.41736590862276, 37.79134989358618 ], [ -122.41736590862276, 37.79134989358618 ], [ -122.41736590862274, 37.79134989358618 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42073476314545, 37.79126510917499 ], [ -122.42048263549805, 37.79129902295112 ], [ -122.42045044898987, 37.79113793237575 ], [ -122.4207079410553, 37.79110825775774 ], [ -122.42073476314543, 37.79126510917499 ], [ -122.42073476314543, 37.79126510917499 ], [ -122.42073476314545, 37.79126510917499 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42130875587463, 37.79135413280419 ], [ -122.42100834846497, 37.79139228575531 ], [ -122.42096006870271, 37.79114217160591 ], [ -122.42126047611238, 37.791104018525644 ], [ -122.42130875587463, 37.79135413280419 ], [ -122.42130875587463, 37.79135413280419 ], [ -122.42130875587463, 37.79135413280419 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42231726646423, 37.791231195383254 ], [ -122.4218612909317, 37.79129478372996 ], [ -122.42182910442352, 37.79113369314532 ], [ -122.42228507995605, 37.791070104659966 ], [ -122.42231726646423, 37.791231195383254 ], [ -122.42231726646423, 37.791231195383254 ], [ -122.42231726646423, 37.791231195383254 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41788625717163, 37.79123967383262 ], [ -122.41783797740936, 37.79124815228106 ], [ -122.41783261299133, 37.791231195383254 ], [ -122.41775751113892, 37.79123967383262 ], [ -122.41776287555695, 37.79129054450855 ], [ -122.41759657859802, 37.79131174061318 ], [ -122.41755902767181, 37.791095540060674 ], [ -122.41785407066345, 37.79106162619113 ], [ -122.41787016391754, 37.79114641083583 ], [ -122.41784870624542, 37.79115065006551 ], [ -122.41785407066345, 37.79118032466647 ], [ -122.41787552833557, 37.79117608543849 ], [ -122.41788625717163, 37.79123967383262 ], [ -122.41788625717163, 37.79123967383262 ], [ -122.41788625717163, 37.79123967383262 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42152333259583, 37.79132869749249 ], [ -122.4213033914566, 37.79135413280419 ], [ -122.42126047611237, 37.79110825775774 ], [ -122.4212121963501, 37.79111249698962 ], [ -122.42119610309602, 37.791019233832294 ], [ -122.42145895957948, 37.79098955916663 ], [ -122.42152333259584, 37.79132869749249 ], [ -122.42152333259584, 37.79132869749249 ], [ -122.42152333259583, 37.79132869749249 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42070257663727, 37.79110825775774 ], [ -122.42037534713745, 37.79115065006551 ], [ -122.42033779621124, 37.79096412372947 ], [ -122.42066502571106, 37.790921731314675 ], [ -122.42070257663727, 37.79110825775774 ], [ -122.42070257663727, 37.79110825775774 ], [ -122.42070257663727, 37.79110825775774 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42228507995605, 37.791070104659966 ], [ -122.42182910442352, 37.79112945391467 ], [ -122.42179155349733, 37.79096412372947 ], [ -122.42224752902986, 37.79090053509816 ], [ -122.42228507995605, 37.791070104659966 ], [ -122.42228507995605, 37.791070104659966 ], [ -122.42228507995605, 37.791070104659966 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41350889205933, 37.79138380732341 ], [ -122.41255939006805, 37.79150674449044 ], [ -122.41244673728943, 37.79096412372947 ], [ -122.41302073001862, 37.79088781736534 ], [ -122.41305828094482, 37.79106162619113 ], [ -122.41342842578887, 37.79101499459507 ], [ -122.41345524787901, 37.79112521468376 ], [ -122.41350889205931, 37.79138380732341 ], [ -122.41350889205931, 37.79138380732341 ], [ -122.41350889205933, 37.79138380732341 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42310047149658, 37.79115065006551 ], [ -122.42277324199675, 37.79119304234894 ], [ -122.42271959781645, 37.790921731314675 ], [ -122.42304146289824, 37.79087933887559 ], [ -122.42310047149657, 37.79115065006551 ], [ -122.42310047149657, 37.79115065006551 ], [ -122.42310047149658, 37.79115065006551 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41398632526398, 37.79132021905332 ], [ -122.41376101970673, 37.79134989358618 ], [ -122.41370737552643, 37.79109130082786 ], [ -122.41345524787903, 37.79112521468376 ], [ -122.41342842578888, 37.79101499459507 ], [ -122.41340160369874, 37.79087086038484 ], [ -122.41387367248537, 37.79080727167329 ], [ -122.41398632526399, 37.79132021905332 ], [ -122.41398632526399, 37.79132021905332 ], [ -122.41398632526398, 37.79132021905332 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4172693490982, 37.79090477434197 ], [ -122.41713523864746, 37.79092597055724 ], [ -122.41711378097534, 37.79080303242391 ], [ -122.41724789142609, 37.790786075423945 ], [ -122.4172693490982, 37.79090477434197 ], [ -122.4172693490982, 37.79090477434197 ], [ -122.4172693490982, 37.79090477434197 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42065966129303, 37.790917492071834 ], [ -122.42043972015381, 37.79094716676645 ], [ -122.4204021692276, 37.79074792215982 ], [ -122.42057383060457, 37.79072248663944 ], [ -122.42062211036682, 37.7907182473852 ], [ -122.420654296875, 37.79087933887556 ], [ -122.42065966129303, 37.790917492071834 ], [ -122.42065966129303, 37.790917492071834 ], [ -122.42065966129303, 37.790917492071834 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42116928100586, 37.79094292752511 ], [ -122.42092788219452, 37.7909726022095 ], [ -122.42086350917816, 37.79066737631527 ], [ -122.42103517055511, 37.79064618002581 ], [ -122.42108345031738, 37.79088357812059 ], [ -122.42115318775177, 37.790875099630334 ], [ -122.42116928100585, 37.79094292752511 ], [ -122.42116928100585, 37.79094292752511 ], [ -122.42116928100586, 37.79094292752511 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42123365402222, 37.7908666211391 ], [ -122.42108881473541, 37.79088357812059 ], [ -122.42103517055511, 37.79064618002581 ], [ -122.42119073867798, 37.79062922298984 ], [ -122.42123365402222, 37.7908666211391 ], [ -122.42123365402222, 37.7908666211391 ], [ -122.42123365402222, 37.7908666211391 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42172718048096, 37.790917492071834 ], [ -122.4215179681778, 37.79094292752511 ], [ -122.42145359516142, 37.79059530890626 ], [ -122.42166817188262, 37.790569873333375 ], [ -122.42172718048094, 37.790917492071834 ], [ -122.42172718048094, 37.790917492071834 ], [ -122.42172718048096, 37.790917492071834 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4222582578659, 37.79089629585415 ], [ -122.42192566394806, 37.79094292752511 ], [ -122.42183983325958, 37.7905529162799 ], [ -122.42217242717741, 37.79050628436279 ], [ -122.4222582578659, 37.79089629585415 ], [ -122.4222582578659, 37.79089629585415 ], [ -122.4222582578659, 37.79089629585415 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41121292114258, 37.7907012903658 ], [ -122.41073548793794, 37.790769118420094 ], [ -122.41071403026581, 37.79076063991673 ], [ -122.41066575050355, 37.790510523629194 ], [ -122.4109071493149, 37.79048084875924 ], [ -122.41114854812623, 37.790446934607566 ], [ -122.41121292114259, 37.7907012903658 ], [ -122.41121292114259, 37.7907012903658 ], [ -122.41121292114258, 37.7907012903658 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41825103759766, 37.79079031467432 ], [ -122.41780042648314, 37.790845424906784 ], [ -122.41772532463072, 37.79046813095418 ], [ -122.41817593574524, 37.7904130204403 ], [ -122.41825103759766, 37.79079031467432 ], [ -122.41825103759766, 37.79079031467432 ], [ -122.41825103759766, 37.79079031467432 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41133093833923, 37.79068857259868 ], [ -122.41121292114258, 37.7907012903658 ], [ -122.4111485481262, 37.790446934607566 ], [ -122.41114318370819, 37.790404541896045 ], [ -122.41126656532288, 37.79038758480464 ], [ -122.41133093833923, 37.79068857259868 ], [ -122.41133093833923, 37.79068857259868 ], [ -122.41133093833923, 37.79068857259868 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41196930408478, 37.79059954816758 ], [ -122.41187274456024, 37.79061226595001 ], [ -122.41182446479797, 37.79040030262357 ], [ -122.41192638874054, 37.79038758480466 ], [ -122.41196930408478, 37.79059954816758 ], [ -122.41196930408478, 37.79059954816758 ], [ -122.41196930408478, 37.79059954816758 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41144895553589, 37.790671615572435 ], [ -122.41133093833923, 37.79068857259868 ], [ -122.41126656532288, 37.79038758480464 ], [ -122.4113792181015, 37.790370627709365 ], [ -122.41144895553587, 37.790671615572435 ], [ -122.41144895553587, 37.790671615572435 ], [ -122.41144895553589, 37.790671615572435 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41215705871582, 37.790569873333375 ], [ -122.41196930408478, 37.79059954816758 ], [ -122.41192638874054, 37.79038758480466 ], [ -122.41210877895355, 37.79035790988532 ], [ -122.4121570587158, 37.790569873333375 ], [ -122.4121570587158, 37.790569873333375 ], [ -122.41215705871582, 37.790569873333375 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41090714931488, 37.79048084875924 ], [ -122.41066575050354, 37.790510523629194 ], [ -122.41063892841339, 37.79038334553119 ], [ -122.41088032722473, 37.79035367061017 ], [ -122.41090714931488, 37.79048084875924 ], [ -122.41090714931488, 37.79048084875924 ], [ -122.41090714931488, 37.79048084875924 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41156160831451, 37.79065465854232 ], [ -122.41144895553589, 37.790671615572435 ], [ -122.4113792181015, 37.790370627709365 ], [ -122.41137385368349, 37.790353670610145 ], [ -122.41149187088014, 37.790340952783204 ], [ -122.41156160831453, 37.79065465854232 ], [ -122.41156160831453, 37.79065465854232 ], [ -122.41156160831451, 37.79065465854232 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41114854812622, 37.790446934607566 ], [ -122.41090714931488, 37.79048084875924 ], [ -122.41088032722473, 37.79035367061017 ], [ -122.41091787815094, 37.79034943133476 ], [ -122.41112172603607, 37.79032399567722 ], [ -122.41114318370819, 37.790404541896045 ], [ -122.4111485481262, 37.790446934607566 ], [ -122.4111485481262, 37.790446934607566 ], [ -122.41114854812622, 37.790446934607566 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41187274456024, 37.79061226595001 ], [ -122.4117761850357, 37.79062498373026 ], [ -122.41170644760132, 37.79032399567722 ], [ -122.41180837154388, 37.79031127784516 ], [ -122.41182446479796, 37.79040030262357 ], [ -122.41187274456023, 37.79061226595001 ], [ -122.41187274456023, 37.79061226595001 ], [ -122.41187274456024, 37.79061226595001 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4209600687027, 37.79043421679666 ], [ -122.42079377174377, 37.79045117387736 ], [ -122.42076694965363, 37.79031127784516 ], [ -122.42083668708801, 37.79030279928923 ], [ -122.42094397544861, 37.790370627709365 ], [ -122.4209600687027, 37.79043421679666 ], [ -122.4209600687027, 37.79043421679666 ], [ -122.4209600687027, 37.79043421679666 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4117761850357, 37.79062498373026 ], [ -122.41167962551116, 37.790637701508324 ], [ -122.41160988807678, 37.790315517122735 ], [ -122.41170108318327, 37.79030279928923 ], [ -122.4117064476013, 37.79032399567719 ], [ -122.41177618503569, 37.79062498373026 ], [ -122.41177618503569, 37.79062498373026 ], [ -122.4117761850357, 37.79062498373026 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41167962551117, 37.790637701508324 ], [ -122.41156160831451, 37.79065465854232 ], [ -122.41149187088013, 37.790340952783204 ], [ -122.41151869297028, 37.79033671350706 ], [ -122.41151332855225, 37.79030279928923 ], [ -122.41159915924074, 37.79029008145351 ], [ -122.4116098880768, 37.790315517122735 ], [ -122.41167962551117, 37.790637701508324 ], [ -122.41167962551117, 37.790637701508324 ], [ -122.41167962551117, 37.790637701508324 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41091787815094, 37.79034943133474 ], [ -122.41088032722473, 37.790353670610145 ], [ -122.41063892841339, 37.79038334553119 ], [ -122.41062283515932, 37.790298560010896 ], [ -122.41090178489686, 37.790264645775565 ], [ -122.41091787815094, 37.79034943133474 ], [ -122.41091787815094, 37.79034943133474 ], [ -122.41091787815094, 37.79034943133474 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41211414337158, 37.79033247423071 ], [ -122.41186738014221, 37.79036638843492 ], [ -122.41185665130615, 37.790298560010896 ], [ -122.41181910037996, 37.79030279928923 ], [ -122.41180300712587, 37.79022649224218 ], [ -122.41208195686342, 37.7901883386891 ], [ -122.4121141433716, 37.79033247423071 ], [ -122.4121141433716, 37.79033247423071 ], [ -122.41211414337158, 37.79033247423071 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42111563682556, 37.7904087811683 ], [ -122.42077231407166, 37.79018409940419 ], [ -122.42105662822723, 37.79014594582926 ], [ -122.42111563682556, 37.7904087811683 ], [ -122.42111563682556, 37.7904087811683 ], [ -122.42111563682556, 37.7904087811683 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42128729820251, 37.79040030262357 ], [ -122.42111563682556, 37.79042573825485 ], [ -122.4210512638092, 37.79012898867849 ], [ -122.42122292518616, 37.79010779223458 ], [ -122.42128729820251, 37.79040030262357 ], [ -122.42128729820251, 37.79040030262357 ], [ -122.42128729820251, 37.79040030262357 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42154479026794, 37.79037910625748 ], [ -122.42128729820251, 37.7904130204403 ], [ -122.42122292518616, 37.79010779223458 ], [ -122.42148578166962, 37.790078117202874 ], [ -122.42154479026794, 37.79037910625748 ], [ -122.42154479026794, 37.79037910625748 ], [ -122.42154479026794, 37.79037910625748 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42104053497314, 37.79014594582926 ], [ -122.42077231407166, 37.79018409940419 ], [ -122.42075085639954, 37.790082356493855 ], [ -122.42101907730103, 37.79005268145195 ], [ -122.42104053497314, 37.79014594582926 ], [ -122.42104053497314, 37.79014594582926 ], [ -122.42104053497314, 37.79014594582926 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42214024066925, 37.79029432073236 ], [ -122.42154479026794, 37.790374866983555 ], [ -122.42147505283356, 37.79003572427978 ], [ -122.42157161235811, 37.79002300639811 ], [ -122.42159843444824, 37.79016290297611 ], [ -122.42210805416107, 37.79009931365531 ], [ -122.42214024066925, 37.79029432073233 ], [ -122.42214024066925, 37.79029432073233 ], [ -122.42214024066925, 37.79029432073236 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41086959838867, 37.79022225295947 ], [ -122.41062283515932, 37.790251927933284 ], [ -122.41057991981508, 37.79001452780913 ], [ -122.41081595420837, 37.78998485273997 ], [ -122.41086959838867, 37.79022225295947 ], [ -122.41086959838867, 37.79022225295947 ], [ -122.41086959838867, 37.79022225295947 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41094470024109, 37.79021377439333 ], [ -122.41086959838867, 37.79022225295947 ], [ -122.41081595420836, 37.78998485273997 ], [ -122.41089105606079, 37.78997213484955 ], [ -122.41091787815093, 37.790078117202874 ], [ -122.41093933582304, 37.7901883386891 ], [ -122.41094470024107, 37.79021377439333 ], [ -122.41094470024107, 37.79021377439333 ], [ -122.41094470024109, 37.79021377439333 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41111099720001, 37.79028160289519 ], [ -122.41096615791321, 37.790298560010896 ], [ -122.41094470024109, 37.79021377439336 ], [ -122.41093933582306, 37.7901883386891 ], [ -122.41098761558533, 37.79017986011907 ], [ -122.41096615791321, 37.79007387791167 ], [ -122.41091787815094, 37.790078117202874 ], [ -122.41089105606079, 37.78997213484955 ], [ -122.41104662418365, 37.78995093836062 ], [ -122.41110563278198, 37.790264645775565 ], [ -122.41111099720001, 37.79028160289519 ], [ -122.41111099720001, 37.79028160289519 ], [ -122.41111099720001, 37.79028160289519 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41121828556061, 37.790251927933284 ], [ -122.41110563278198, 37.790264645775565 ], [ -122.41104662418365, 37.78995093836062 ], [ -122.41115391254426, 37.78993822046437 ], [ -122.41121828556062, 37.790251927933284 ], [ -122.41121828556062, 37.790251927933284 ], [ -122.41121828556061, 37.790251927933284 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41135239601135, 37.790234970806864 ], [ -122.41121828556061, 37.790251927933284 ], [ -122.41115391254425, 37.78993822046437 ], [ -122.411288022995, 37.78992550256591 ], [ -122.41131484508513, 37.79004420286635 ], [ -122.41129338741301, 37.79004420286635 ], [ -122.4113094806671, 37.790120510101644 ], [ -122.41133093833922, 37.790120510101644 ], [ -122.41135239601134, 37.790234970806836 ], [ -122.41135239601134, 37.790234970806836 ], [ -122.41135239601135, 37.790234970806864 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41142213344574, 37.790027245692244 ], [ -122.41131484508513, 37.79004420286635 ], [ -122.411288022995, 37.78992550256591 ], [ -122.41139531135559, 37.789908545364554 ], [ -122.41142213344574, 37.790027245692244 ], [ -122.41142213344574, 37.790027245692244 ], [ -122.41142213344574, 37.790027245692244 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41158306598663, 37.79023073152464 ], [ -122.41147041320801, 37.79024344937056 ], [ -122.41142213344574, 37.790027245692244 ], [ -122.4113953113556, 37.789908545364554 ], [ -122.41150796413423, 37.789895827461 ], [ -122.41151332855225, 37.78991278466528 ], [ -122.41152942180634, 37.7899975706282 ], [ -122.41158306598663, 37.79023073152464 ], [ -122.41158306598663, 37.79023073152464 ], [ -122.41158306598663, 37.79023073152464 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41170108318329, 37.78997637414658 ], [ -122.41152942180634, 37.7899975706282 ], [ -122.41151332855225, 37.78991278466528 ], [ -122.41168498992921, 37.789891588159335 ], [ -122.41170108318329, 37.78997637414658 ], [ -122.41170108318329, 37.78997637414658 ], [ -122.41170108318329, 37.78997637414658 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41189420223236, 37.790090835075056 ], [ -122.41173326969147, 37.790112031523854 ], [ -122.41171181201935, 37.790018767103746 ], [ -122.41173326969147, 37.79001452780913 ], [ -122.41172254085541, 37.78997213484955 ], [ -122.41170108318327, 37.78997637414658 ], [ -122.4116849899292, 37.789891588159335 ], [ -122.41167962551117, 37.78986615234419 ], [ -122.41184055805208, 37.789844955824854 ], [ -122.41189420223238, 37.790090835075056 ], [ -122.41189420223238, 37.790090835075056 ], [ -122.41189420223236, 37.790090835075056 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41206586360931, 37.790090835075056 ], [ -122.41190493106842, 37.790116270812874 ], [ -122.41189420223236, 37.790090835075056 ], [ -122.41184055805206, 37.789844955824854 ], [ -122.41200149059296, 37.78981951999368 ], [ -122.41206586360931, 37.790090835075056 ], [ -122.41206586360931, 37.790090835075056 ], [ -122.41206586360931, 37.790090835075056 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42102980613708, 37.79004844215926 ], [ -122.42074012756348, 37.79008659578458 ], [ -122.42069184780121, 37.789823759299495 ], [ -122.42098152637482, 37.789785605538455 ], [ -122.42102980613708, 37.79004844215926 ], [ -122.42102980613708, 37.79004844215926 ], [ -122.42102980613708, 37.79004844215926 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42098152637482, 37.789785605538455 ], [ -122.42069184780121, 37.789823759299495 ], [ -122.42066502571106, 37.78971777658132 ], [ -122.42096006870271, 37.789679622765576 ], [ -122.42098152637483, 37.789785605538455 ], [ -122.42098152637483, 37.789785605538455 ], [ -122.42098152637482, 37.789785605538455 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41371810436249, 37.78999333133236 ], [ -122.41341233253479, 37.79003148498613 ], [ -122.41338551044464, 37.789878870252856 ], [ -122.41353571414949, 37.789861913040816 ], [ -122.41352498531343, 37.78981104138134 ], [ -122.41338014602663, 37.789827998605055 ], [ -122.41335332393648, 37.789696580019445 ], [ -122.41364836692811, 37.78965842619276 ], [ -122.4137181043625, 37.78999333133236 ], [ -122.4137181043625, 37.78999333133236 ], [ -122.41371810436249, 37.78999333133236 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42137312889099, 37.79000604921915 ], [ -122.4210351705551, 37.79004844215926 ], [ -122.42096006870268, 37.789679622765576 ], [ -122.42129802703856, 37.78963722961387 ], [ -122.42137312889099, 37.79000604921915 ], [ -122.42137312889099, 37.79000604921915 ], [ -122.42137312889099, 37.79000604921915 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42156624794006, 37.78998061344342 ], [ -122.421373128891, 37.79000604921915 ], [ -122.42129802703857, 37.78963722961387 ], [ -122.42149114608765, 37.78961179371117 ], [ -122.42156624794006, 37.78998061344342 ], [ -122.42156624794006, 37.78998061344342 ], [ -122.42156624794006, 37.78998061344342 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41076231002808, 37.789802562768 ], [ -122.41054773330688, 37.78983223791036 ], [ -122.41049945354463, 37.789616033028864 ], [ -122.41071939468385, 37.789586357799685 ], [ -122.41076231002809, 37.789802562768 ], [ -122.41076231002809, 37.789802562768 ], [ -122.41076231002808, 37.789802562768 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41084814071655, 37.789794084153726 ], [ -122.41076231002808, 37.78980256276803 ], [ -122.41071939468384, 37.789586357799685 ], [ -122.41079986095428, 37.78957363984067 ], [ -122.41082668304442, 37.789696580019445 ], [ -122.41084814071655, 37.789794084153726 ], [ -122.41084814071655, 37.789794084153726 ], [ -122.41084814071655, 37.789794084153726 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42210268974304, 37.79010355294507 ], [ -122.42159843444823, 37.79016290297611 ], [ -122.42149114608763, 37.78961179371117 ], [ -122.42200076580046, 37.78955244323747 ], [ -122.42210268974303, 37.79010355294507 ], [ -122.42210268974303, 37.79010355294507 ], [ -122.42210268974304, 37.79010355294507 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41118609905243, 37.789751691067664 ], [ -122.4110198020935, 37.789772887613736 ], [ -122.41096615791321, 37.789522767982724 ], [ -122.41113781929016, 37.78950157136492 ], [ -122.41118609905243, 37.789751691067664 ], [ -122.41118609905243, 37.789751691067664 ], [ -122.41118609905243, 37.789751691067664 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41142213344574, 37.78972625520438 ], [ -122.4113416671753, 37.789734733826435 ], [ -122.41129338741302, 37.78951005001279 ], [ -122.41137385368347, 37.78950157136492 ], [ -122.41142213344574, 37.78972625520438 ], [ -122.41142213344574, 37.78972625520438 ], [ -122.41142213344574, 37.78972625520438 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41076231002808, 37.789556682558576 ], [ -122.41048872470856, 37.78959059711889 ], [ -122.4104779958725, 37.78952700730556 ], [ -122.41075158119202, 37.78949309271609 ], [ -122.41076231002808, 37.789556682558576 ], [ -122.41076231002808, 37.789556682558576 ], [ -122.41076231002808, 37.789556682558576 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42271959781647, 37.78971777658132 ], [ -122.42255866527557, 37.78973897313711 ], [ -122.4225103855133, 37.78951428933633 ], [ -122.4226713180542, 37.78948885339132 ], [ -122.42271959781647, 37.78971777658132 ], [ -122.42271959781647, 37.78971777658132 ], [ -122.42271959781647, 37.78971777658132 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4113416671753, 37.789734733826435 ], [ -122.41118609905243, 37.789751691067664 ], [ -122.41113781929016, 37.78950157136492 ], [ -122.4111270904541, 37.789467656763776 ], [ -122.41128265857697, 37.789446460130144 ], [ -122.41129338741302, 37.78951005001279 ], [ -122.4113416671753, 37.789734733826435 ], [ -122.4113416671753, 37.789734733826435 ], [ -122.4113416671753, 37.789734733826435 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41165816783905, 37.78966266550779 ], [ -122.41164207458498, 37.78966690482261 ], [ -122.41165280342103, 37.78970081933231 ], [ -122.41150796413423, 37.78971777658132 ], [ -122.41145431995393, 37.789463417437524 ], [ -122.41161525249483, 37.789442220802705 ], [ -122.41162061691286, 37.789484614066296 ], [ -122.41165816783905, 37.78966266550779 ], [ -122.41165816783905, 37.78966266550779 ], [ -122.41165816783905, 37.78966266550779 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41198003292084, 37.789654186877456 ], [ -122.41165280342102, 37.78970081933231 ], [ -122.41164207458496, 37.78966690482261 ], [ -122.41165816783904, 37.78966266550779 ], [ -122.41162061691284, 37.789484614066296 ], [ -122.4119371175766, 37.789442220802705 ], [ -122.41198003292084, 37.789654186877456 ], [ -122.41198003292084, 37.789654186877456 ], [ -122.41198003292084, 37.789654186877456 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4110198020935, 37.789772887613736 ], [ -122.41084814071655, 37.789794084153726 ], [ -122.41082668304442, 37.789696580019445 ], [ -122.41084814071655, 37.78969234070635 ], [ -122.41081058979034, 37.78951005001279 ], [ -122.4107837677002, 37.78951428933633 ], [ -122.41077840328218, 37.78948885339132 ], [ -122.41077303886415, 37.789446460130144 ], [ -122.4109447002411, 37.789425263490436 ], [ -122.41096615791322, 37.789522767982724 ], [ -122.41101980209355, 37.789772887613736 ], [ -122.41101980209355, 37.789772887613736 ], [ -122.4110198020935, 37.789772887613736 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41240382194519, 37.78961179371117 ], [ -122.41215705871582, 37.789641468930114 ], [ -122.41211950778961, 37.78945069945736 ], [ -122.41236090660097, 37.78941678483285 ], [ -122.4124038219452, 37.78961179371117 ], [ -122.4124038219452, 37.78961179371117 ], [ -122.41240382194519, 37.78961179371117 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41077840328217, 37.78948885339132 ], [ -122.41075158119202, 37.78949309271609 ], [ -122.4104779958725, 37.78952700730556 ], [ -122.41046726703644, 37.78945069945736 ], [ -122.41048336029051, 37.789446460130144 ], [ -122.41054773330688, 37.789437981475004 ], [ -122.41064429283142, 37.789425263490465 ], [ -122.41076231002808, 37.78940830617431 ], [ -122.41077303886414, 37.789446460130144 ], [ -122.41077840328217, 37.78948885339132 ], [ -122.41077840328217, 37.78948885339132 ], [ -122.41077840328217, 37.78948885339132 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4126398563385, 37.7895778791606 ], [ -122.41255939006805, 37.78959059711889 ], [ -122.41252183914185, 37.78941678483285 ], [ -122.41260230541229, 37.78940406684465 ], [ -122.4126398563385, 37.7895778791606 ], [ -122.4126398563385, 37.7895778791606 ], [ -122.4126398563385, 37.7895778791606 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41247355937958, 37.78959907575652 ], [ -122.41240382194519, 37.78961179371117 ], [ -122.41236090660095, 37.789404066844675 ], [ -122.41243064403534, 37.78939558818465 ], [ -122.41247355937958, 37.78959907575652 ], [ -122.41247355937958, 37.78959907575652 ], [ -122.41247355937958, 37.78959907575652 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41255939006805, 37.78959059711889 ], [ -122.41247355937958, 37.78959907575652 ], [ -122.41243064403534, 37.78939558818465 ], [ -122.41251647472382, 37.78938710952366 ], [ -122.41255939006805, 37.78959059711889 ], [ -122.41255939006805, 37.78959059711889 ], [ -122.41255939006805, 37.78959059711889 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41150796413422, 37.78971777658132 ], [ -122.41142213344574, 37.78972625520438 ], [ -122.41137385368347, 37.78950157136492 ], [ -122.41134703159332, 37.7893786308617 ], [ -122.41143286228181, 37.78936591286693 ], [ -122.41145431995393, 37.789463417437524 ], [ -122.41150796413423, 37.78971777658132 ], [ -122.41150796413423, 37.78971777658132 ], [ -122.41150796413422, 37.78971777658132 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4129992723465, 37.789531246628144 ], [ -122.41281151771545, 37.789556682558576 ], [ -122.41277933120728, 37.78938710952366 ], [ -122.41296172142029, 37.78936591286693 ], [ -122.41299927234648, 37.789531246628144 ], [ -122.41299927234648, 37.789531246628144 ], [ -122.4129992723465, 37.789531246628144 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41061210632324, 37.78941254550371 ], [ -122.41054236888885, 37.789421024161776 ], [ -122.41054773330688, 37.789437981475004 ], [ -122.41048336029051, 37.789446460130144 ], [ -122.41046726703644, 37.78945069945736 ], [ -122.41044580936432, 37.78936167353485 ], [ -122.41059601306915, 37.78934047687082 ], [ -122.41061210632324, 37.78941254550371 ], [ -122.41061210632324, 37.78941254550371 ], [ -122.41061210632324, 37.78941254550371 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4195921421051, 37.78963299029734 ], [ -122.41893768310548, 37.78971353726942 ], [ -122.41887867450716, 37.789399827514764 ], [ -122.41901814937593, 37.7893828701928 ], [ -122.41905570030214, 37.78957363984067 ], [ -122.41941511631012, 37.789531246628144 ], [ -122.41937756538393, 37.78932775886948 ], [ -122.41952776908876, 37.78931080153099 ], [ -122.41959214210512, 37.78963299029734 ], [ -122.41959214210512, 37.78963299029734 ], [ -122.4195921421051, 37.78963299029734 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.412548661232, 37.7893786308617 ], [ -122.41211414337158, 37.789433742147054 ], [ -122.41209805011749, 37.78935319486999 ], [ -122.4125325679779, 37.789298083524535 ], [ -122.412548661232, 37.7893786308617 ], [ -122.412548661232, 37.7893786308617 ], [ -122.412548661232, 37.7893786308617 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4119371175766, 37.789425263490436 ], [ -122.41174936294556, 37.789446460130144 ], [ -122.41171717643738, 37.789298083524535 ], [ -122.41188883781433, 37.78927688684228 ], [ -122.41190493106842, 37.78935319486999 ], [ -122.41192102432251, 37.78934895553716 ], [ -122.41193711757658, 37.789425263490436 ], [ -122.41193711757658, 37.789425263490436 ], [ -122.4119371175766, 37.789425263490436 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41318702697754, 37.78950581068898 ], [ -122.4129992723465, 37.789531246628165 ], [ -122.4129456281662, 37.78928536551592 ], [ -122.41313338279724, 37.789259929492104 ], [ -122.41318702697754, 37.78950581068898 ], [ -122.41318702697754, 37.78950581068898 ], [ -122.41318702697754, 37.78950581068898 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42153406143188, 37.78941254550371 ], [ -122.42136240005493, 37.789433742147054 ], [ -122.42133021354675, 37.78927264750509 ], [ -122.4215018749237, 37.78925145081554 ], [ -122.42153406143188, 37.78941254550371 ], [ -122.42153406143188, 37.78941254550371 ], [ -122.42153406143188, 37.78941254550371 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.43181228637695, 37.789535485950495 ], [ -122.43175864219666, 37.78929384418857 ], [ -122.43181228637695, 37.78928960485237 ], [ -122.43181228637695, 37.789535485950495 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41410434246063, 37.78940406684465 ], [ -122.41383612155914, 37.789437981475004 ], [ -122.41379857063295, 37.78924297213801 ], [ -122.413991689682, 37.78921753609959 ], [ -122.413991689682, 37.78922601478002 ], [ -122.41406679153444, 37.789213296758994 ], [ -122.4140775203705, 37.78928112617922 ], [ -122.41406142711641, 37.78928536551592 ], [ -122.41406679153444, 37.789315040865986 ], [ -122.41408824920656, 37.78931080153099 ], [ -122.41410434246063, 37.78940406684465 ], [ -122.41410434246063, 37.78940406684465 ], [ -122.41410434246063, 37.78940406684465 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41188883781433, 37.78927688684228 ], [ -122.41171717643738, 37.789298083524535 ], [ -122.41164743900299, 37.789306562195755 ], [ -122.41163134574892, 37.78924297213801 ], [ -122.41187810897827, 37.78920905741816 ], [ -122.41188883781433, 37.78927688684228 ], [ -122.41188883781433, 37.78927688684228 ], [ -122.41188883781433, 37.78927688684228 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4125325679779, 37.789298083524535 ], [ -122.41209805011749, 37.78935319486999 ], [ -122.41207659244537, 37.78925145081554 ], [ -122.41251111030579, 37.78919210005242 ], [ -122.4125325679779, 37.789298083524535 ], [ -122.4125325679779, 37.789298083524535 ], [ -122.4125325679779, 37.789298083524535 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41281151771545, 37.789556682558576 ], [ -122.4126398563385, 37.7895778791606 ], [ -122.41256475448607, 37.78920057873577 ], [ -122.41273641586304, 37.78917938202556 ], [ -122.41281151771545, 37.789556682558576 ], [ -122.41281151771545, 37.789556682558576 ], [ -122.41281151771545, 37.789556682558576 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4135947227478, 37.78945069945736 ], [ -122.41343379020691, 37.789471896089765 ], [ -122.41336941719055, 37.78919210005242 ], [ -122.41353571414948, 37.78917090333976 ], [ -122.41359472274779, 37.78945069945736 ], [ -122.41359472274779, 37.78945069945736 ], [ -122.4135947227478, 37.78945069945736 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4142062664032, 37.78939134885428 ], [ -122.41410434246063, 37.78940406684465 ], [ -122.4140614271164, 37.78918362136809 ], [ -122.41416871547699, 37.78917090333976 ], [ -122.4142062664032, 37.78939134885428 ], [ -122.4142062664032, 37.78939134885428 ], [ -122.4142062664032, 37.78939134885428 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41089642047882, 37.78926840816768 ], [ -122.41076231002808, 37.78928536551592 ], [ -122.41074085235596, 37.78917090333976 ], [ -122.4108749628067, 37.78915394596523 ], [ -122.41089642047882, 37.78926840816768 ], [ -122.41089642047882, 37.78926840816768 ], [ -122.41089642047882, 37.78926840816768 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41187810897827, 37.78920905741816 ], [ -122.41163134574892, 37.78924297213801 ], [ -122.41161525249483, 37.78917938202556 ], [ -122.4118620157242, 37.789149706621 ], [ -122.41187810897827, 37.78920905741816 ], [ -122.41187810897827, 37.78920905741816 ], [ -122.41187810897827, 37.78920905741816 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41092324256897, 37.78939134885428 ], [ -122.41076231002806, 37.78940830617431 ], [ -122.4106442928314, 37.789425263490436 ], [ -122.41059601306914, 37.78915818530923 ], [ -122.41073548793793, 37.78914122793181 ], [ -122.41074085235594, 37.78917090333976 ], [ -122.41076231002806, 37.78928536551592 ], [ -122.4108964204788, 37.78926840816768 ], [ -122.41092324256896, 37.78939134885428 ], [ -122.41092324256896, 37.78939134885428 ], [ -122.41092324256897, 37.78939134885428 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41450667381287, 37.78935319486999 ], [ -122.41439938545227, 37.78936591286693 ], [ -122.41435110569, 37.78913274924163 ], [ -122.41446375846863, 37.78911579185838 ], [ -122.41450667381287, 37.78935319486999 ], [ -122.41450667381287, 37.78935319486999 ], [ -122.41450667381287, 37.78935319486999 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41342842578888, 37.789476135415526 ], [ -122.41318702697754, 37.78950581068898 ], [ -122.41317093372346, 37.789421024161776 ], [ -122.41319239139558, 37.78941678483285 ], [ -122.41314947605133, 37.789213296758994 ], [ -122.41312801837921, 37.78921753609959 ], [ -122.41311192512514, 37.78914122793181 ], [ -122.41331577301025, 37.78911579185838 ], [ -122.41333186626434, 37.78919633939423 ], [ -122.41336941719055, 37.78919210005242 ], [ -122.41342842578887, 37.789476135415526 ], [ -122.41342842578887, 37.789476135415526 ], [ -122.41342842578888, 37.789476135415526 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4140453338623, 37.78919210005242 ], [ -122.41379857063293, 37.78922601478005 ], [ -122.41378247737885, 37.789145467276526 ], [ -122.41402387619019, 37.78911579185838 ], [ -122.41404533386232, 37.78919210005242 ], [ -122.41404533386232, 37.78919210005242 ], [ -122.4140453338623, 37.78919210005242 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42136240005493, 37.789433742147054 ], [ -122.42119610309601, 37.78945069945736 ], [ -122.42113173007965, 37.78912850989617 ], [ -122.42129266262054, 37.789107313165275 ], [ -122.42136240005493, 37.789433742147054 ], [ -122.42136240005493, 37.789433742147054 ], [ -122.42136240005493, 37.789433742147054 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41439938545227, 37.78936591286693 ], [ -122.4142062664032, 37.78939134885428 ], [ -122.41416335105896, 37.78912427055049 ], [ -122.41434037685394, 37.789094595123814 ], [ -122.41439938545227, 37.78936591286693 ], [ -122.41439938545227, 37.78936591286693 ], [ -122.41439938545227, 37.78936591286693 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41491973400116, 37.789298083524535 ], [ -122.41481244564055, 37.78931080153099 ], [ -122.41476953029631, 37.78910307381837 ], [ -122.41482853889464, 37.789094595123814 ], [ -122.41488218307494, 37.789213296758994 ], [ -122.41490364074706, 37.789213296758994 ], [ -122.41491973400115, 37.789298083524535 ], [ -122.41491973400115, 37.789298083524535 ], [ -122.41491973400116, 37.789298083524535 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41464078426361, 37.78933623753729 ], [ -122.41450667381287, 37.78935319486999 ], [ -122.41449058055878, 37.789259929492104 ], [ -122.4144583940506, 37.78910307381837 ], [ -122.41459250450134, 37.78909035577617 ], [ -122.41462469100952, 37.78926416883001 ], [ -122.41464078426361, 37.78933623753729 ], [ -122.41464078426361, 37.78933623753729 ], [ -122.41464078426361, 37.78933623753729 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4135410785675, 37.78917090333976 ], [ -122.41335332393646, 37.78919633939423 ], [ -122.41333186626434, 37.789098834471204 ], [ -122.41351962089539, 37.78907339838317 ], [ -122.4135410785675, 37.78917090333976 ], [ -122.4135410785675, 37.78917090333976 ], [ -122.4135410785675, 37.78917090333976 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42161452770233, 37.78940406684465 ], [ -122.42153406143188, 37.78941254550371 ], [ -122.4214643239975, 37.78908187708016 ], [ -122.42154479026794, 37.78907339838317 ], [ -122.42161452770233, 37.78940406684465 ], [ -122.42161452770233, 37.78940406684465 ], [ -122.42161452770233, 37.78940406684465 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41481244564056, 37.789315040865986 ], [ -122.41464078426361, 37.78933623753729 ], [ -122.41459250450134, 37.78909035577617 ], [ -122.41475880146027, 37.78906915903432 ], [ -122.41481244564056, 37.789315040865986 ], [ -122.41481244564056, 37.789315040865986 ], [ -122.41481244564056, 37.789315040865986 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41059601306915, 37.78934047687082 ], [ -122.41044580936432, 37.78936167353485 ], [ -122.41039216518402, 37.78908187708016 ], [ -122.41054773330688, 37.789064919685224 ], [ -122.41056382656096, 37.78916242465299 ], [ -122.41059601306914, 37.78934047687082 ], [ -122.41059601306914, 37.78934047687082 ], [ -122.41059601306915, 37.78934047687082 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42194175720215, 37.78936167353485 ], [ -122.42161452770233, 37.789404066844675 ], [ -122.42154479026794, 37.78907339838317 ], [ -122.42187201976776, 37.789031004883654 ], [ -122.42194175720215, 37.78936167353485 ], [ -122.42194175720215, 37.78936167353485 ], [ -122.42194175720215, 37.78936167353485 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4108749628067, 37.78915394596523 ], [ -122.41074085235596, 37.78917090333976 ], [ -122.41073548793794, 37.78914122793181 ], [ -122.41059601306915, 37.78915818530923 ], [ -122.41056382656097, 37.78916242465299 ], [ -122.41054773330688, 37.789064919685224 ], [ -122.4108535051346, 37.78902676553237 ], [ -122.41087496280672, 37.78915394596523 ], [ -122.41087496280672, 37.78915394596523 ], [ -122.4108749628067, 37.78915394596523 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41407215595245, 37.789107313165275 ], [ -122.41378247737885, 37.789145467276526 ], [ -122.41376101970673, 37.789064919685224 ], [ -122.41405069828033, 37.78902252618086 ], [ -122.41407215595245, 37.789107313165275 ], [ -122.41407215595245, 37.789107313165275 ], [ -122.41407215595245, 37.789107313165275 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41572976112366, 37.78919210005242 ], [ -122.41549372673036, 37.78921753609959 ], [ -122.41546154022218, 37.78903524423471 ], [ -122.41569221019746, 37.78900980812477 ], [ -122.41572976112366, 37.78919210005242 ], [ -122.41572976112366, 37.78919210005242 ], [ -122.41572976112366, 37.78919210005242 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4158638715744, 37.78917514268277 ], [ -122.41576194763184, 37.78918362136809 ], [ -122.4157351255417, 37.788980132652135 ], [ -122.41582632064821, 37.788971653943484 ], [ -122.4158638715744, 37.78917514268277 ], [ -122.4158638715744, 37.78917514268277 ], [ -122.4158638715744, 37.78917514268277 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41351962089539, 37.78907339838317 ], [ -122.41332113742828, 37.78910307381837 ], [ -122.41329431533813, 37.78898437200612 ], [ -122.41349279880524, 37.78895893587867 ], [ -122.41351962089539, 37.78907339838317 ], [ -122.41351962089539, 37.78907339838317 ], [ -122.41351962089539, 37.78907339838317 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41138458251953, 37.78930232286027 ], [ -122.41119682788849, 37.78932775886951 ], [ -122.41115927696228, 37.78912003120455 ], [ -122.41108953952791, 37.7891285098962 ], [ -122.41113781929016, 37.78937015219877 ], [ -122.41096615791321, 37.78939134885428 ], [ -122.41088569164276, 37.78900980812479 ], [ -122.41131484508514, 37.788954696523255 ], [ -122.41138458251953, 37.78930232286027 ], [ -122.41138458251953, 37.78930232286027 ], [ -122.41138458251953, 37.78930232286027 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4140077829361, 37.78902676553237 ], [ -122.41376101970673, 37.78906068033588 ], [ -122.4137395620346, 37.78896741458879 ], [ -122.41398632526398, 37.788933499742484 ], [ -122.4140077829361, 37.78902676553237 ], [ -122.4140077829361, 37.78902676553237 ], [ -122.4140077829361, 37.78902676553237 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4152684211731, 37.78925569015392 ], [ -122.41494655609131, 37.789298083524535 ], [ -122.41491436958313, 37.789149706621 ], [ -122.41505920886993, 37.78912850989617 ], [ -122.41504848003387, 37.78907339838317 ], [ -122.41491436958313, 37.78909035577617 ], [ -122.41488218307495, 37.78895045716757 ], [ -122.41519331932068, 37.78891230295563 ], [ -122.4152684211731, 37.78925569015392 ], [ -122.4152684211731, 37.78925569015392 ], [ -122.4152684211731, 37.78925569015392 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41627156734467, 37.78898861135982 ], [ -122.41624474525453, 37.78898861135982 ], [ -122.41626620292665, 37.78913274924163 ], [ -122.41615355014802, 37.789145467276526 ], [ -122.41611599922182, 37.78892502102847 ], [ -122.41626083850862, 37.78891230295563 ], [ -122.41627156734468, 37.78898861135982 ], [ -122.41627156734468, 37.78898861135982 ], [ -122.41627156734467, 37.78898861135982 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41170644760132, 37.78913274924163 ], [ -122.41155624389648, 37.789149706621 ], [ -122.4115401506424, 37.78907339838317 ], [ -122.4115777015686, 37.78906915903432 ], [ -122.41156697273254, 37.78900132941952 ], [ -122.41154551506042, 37.78900556877228 ], [ -122.41152942180634, 37.78892502102847 ], [ -122.41166889667511, 37.78890806359755 ], [ -122.4116849899292, 37.78902252618086 ], [ -122.41170644760132, 37.78913274924163 ], [ -122.41170644760132, 37.78913274924163 ], [ -122.41170644760132, 37.78913274924163 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4160623550415, 37.78915394596523 ], [ -122.41597115993501, 37.78916242465299 ], [ -122.41592824459076, 37.78891654231348 ], [ -122.41601943969727, 37.7889038242392 ], [ -122.4160623550415, 37.78915394596523 ], [ -122.4160623550415, 37.78915394596523 ], [ -122.4160623550415, 37.78915394596523 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41175472736359, 37.78901404747704 ], [ -122.4116849899292, 37.78902252618086 ], [ -122.41166889667511, 37.78890806359755 ], [ -122.41173326969147, 37.7889038242392 ], [ -122.41175472736359, 37.78901404747704 ], [ -122.41175472736359, 37.78901404747704 ], [ -122.41175472736359, 37.78901404747704 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41186201572418, 37.78912003120455 ], [ -122.4117761850357, 37.78912850989617 ], [ -122.41176009178162, 37.78906068033585 ], [ -122.41175472736359, 37.78901404747704 ], [ -122.41173326969147, 37.7889038242392 ], [ -122.4117922782898, 37.788895345521766 ], [ -122.41181373596191, 37.78889958488058 ], [ -122.41182446479797, 37.78891230295563 ], [ -122.41186201572418, 37.78912003120455 ], [ -122.41186201572418, 37.78912003120455 ], [ -122.41186201572418, 37.78912003120455 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41976380348206, 37.78919633939423 ], [ -122.41940975189209, 37.78923449345951 ], [ -122.41934537887573, 37.7889207816711 ], [ -122.4196994304657, 37.78888262744385 ], [ -122.41976380348206, 37.78919633939423 ], [ -122.41976380348206, 37.78919633939423 ], [ -122.41976380348206, 37.78919633939423 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41615355014801, 37.789145467276526 ], [ -122.4160623550415, 37.78915394596523 ], [ -122.41601943969727, 37.7889038242392 ], [ -122.41601407527925, 37.78886567000316 ], [ -122.41610527038574, 37.78885719128138 ], [ -122.4161159992218, 37.78892502102847 ], [ -122.41615355014801, 37.789145467276526 ], [ -122.41615355014801, 37.789145467276526 ], [ -122.41615355014801, 37.789145467276526 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4123340845108, 37.78908611642829 ], [ -122.41205513477325, 37.78912427055049 ], [ -122.41200149059296, 37.7888911061627 ], [ -122.41228580474854, 37.78885295192013 ], [ -122.4123340845108, 37.78908611642829 ], [ -122.4123340845108, 37.78908611642829 ], [ -122.4123340845108, 37.78908611642829 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41349279880524, 37.788954696523255 ], [ -122.41328895092012, 37.78898437200612 ], [ -122.413267493248, 37.788878388084036 ], [ -122.41347134113312, 37.78885295192013 ], [ -122.41349279880524, 37.788954696523255 ], [ -122.41349279880524, 37.788954696523255 ], [ -122.41349279880524, 37.788954696523255 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.415971159935, 37.78916242465299 ], [ -122.41586387157439, 37.78917514268277 ], [ -122.4158263206482, 37.788971653943484 ], [ -122.41580486297607, 37.7888529519201 ], [ -122.41591215133667, 37.788840233834875 ], [ -122.41592824459076, 37.78891654231348 ], [ -122.415971159935, 37.78916242465299 ], [ -122.415971159935, 37.78916242465299 ], [ -122.415971159935, 37.78916242465299 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41736054420471, 37.788963175233846 ], [ -122.41720497608185, 37.78898437200612 ], [ -122.41719424724579, 37.78893773909911 ], [ -122.41721034049988, 37.78893773909911 ], [ -122.41719961166382, 37.7888868668034 ], [ -122.41718888282776, 37.7888911061627 ], [ -122.4171781539917, 37.78885719128138 ], [ -122.41733372211456, 37.78883599447265 ], [ -122.41734445095062, 37.788878388084036 ], [ -122.41732835769653, 37.788878388084036 ], [ -122.41733372211456, 37.7889207816711 ], [ -122.41734981536864, 37.7889207816711 ], [ -122.4173605442047, 37.788963175233846 ], [ -122.4173605442047, 37.788963175233846 ], [ -122.41736054420471, 37.788963175233846 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41720497608185, 37.78898437200612 ], [ -122.41711914539337, 37.78899285071331 ], [ -122.41708695888519, 37.78884871255861 ], [ -122.4171781539917, 37.78883599447265 ], [ -122.4171781539917, 37.78885719128138 ], [ -122.41718888282776, 37.7888911061627 ], [ -122.41719424724577, 37.78893773909911 ], [ -122.41720497608183, 37.78898437200612 ], [ -122.41720497608183, 37.78898437200612 ], [ -122.41720497608185, 37.78898437200612 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41254329681396, 37.789145467276526 ], [ -122.41235554218292, 37.78917090333976 ], [ -122.41228580474854, 37.7888529519201 ], [ -122.41247892379761, 37.78882751574746 ], [ -122.41254329681396, 37.789145467276526 ], [ -122.41254329681396, 37.789145467276526 ], [ -122.41254329681396, 37.789145467276526 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41569757461548, 37.78899285071331 ], [ -122.41545617580414, 37.78901828682906 ], [ -122.41542398929596, 37.78884871255861 ], [ -122.4156653881073, 37.78882327638447 ], [ -122.41569757461548, 37.78899285071331 ], [ -122.41569757461548, 37.78899285071331 ], [ -122.41569757461548, 37.78899285071331 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41263449192047, 37.78903524423471 ], [ -122.41252720355988, 37.789047962286396 ], [ -122.41247892379761, 37.78882751574746 ], [ -122.4125862121582, 37.78881055829413 ], [ -122.41263449192047, 37.78903524423471 ], [ -122.41263449192047, 37.78903524423471 ], [ -122.41263449192047, 37.78903524423471 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41691529750824, 37.78903524423471 ], [ -122.41660416126251, 37.78906915903432 ], [ -122.4165987968445, 37.789031004883654 ], [ -122.41652369499208, 37.78903948358551 ], [ -122.4164915084839, 37.7888529519201 ], [ -122.416689991951, 37.78883175511017 ], [ -122.416872382164, 37.7888063189302 ], [ -122.41691529750824, 37.78903524423471 ], [ -122.41691529750824, 37.78903524423471 ], [ -122.41691529750824, 37.78903524423471 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41758048534393, 37.78893773909911 ], [ -122.41736054420471, 37.788963175233846 ], [ -122.41734445095062, 37.788878388084036 ], [ -122.41733372211456, 37.78883599447265 ], [ -122.41733372211456, 37.78883175511017 ], [ -122.41755902767181, 37.7888063189302 ], [ -122.41756975650787, 37.78885719128138 ], [ -122.41758048534393, 37.78893773909911 ], [ -122.41758048534393, 37.78893773909911 ], [ -122.41758048534393, 37.78893773909911 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4165290594101, 37.78909035577617 ], [ -122.41630911827087, 37.78911579185838 ], [ -122.41628766059875, 37.78900132941952 ], [ -122.41631984710693, 37.78900132941952 ], [ -122.41630375385284, 37.7889038242392 ], [ -122.4162608385086, 37.78891230295563 ], [ -122.41624474525453, 37.78881055829413 ], [ -122.41638958454134, 37.7887978402016 ], [ -122.4164003133774, 37.78886143064241 ], [ -122.4164915084839, 37.78885295192013 ], [ -122.41652369499208, 37.78903948358551 ], [ -122.4165290594101, 37.78909035577619 ], [ -122.4165290594101, 37.78909035577619 ], [ -122.4165290594101, 37.78909035577617 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41288125514984, 37.78913274924163 ], [ -122.41266131401062, 37.78915818530923 ], [ -122.4125862121582, 37.78881055829413 ], [ -122.41280615329742, 37.78878512210689 ], [ -122.41288125514984, 37.78913274924163 ], [ -122.41288125514984, 37.78913274924163 ], [ -122.41288125514984, 37.78913274924163 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4101185798645, 37.7889207816711 ], [ -122.40987181663515, 37.788954696523255 ], [ -122.40983963012695, 37.78880207956601 ], [ -122.41008639335632, 37.788768164643834 ], [ -122.4101185798645, 37.7889207816711 ], [ -122.4101185798645, 37.7889207816711 ], [ -122.4101185798645, 37.7889207816711 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41301536560059, 37.78913274924163 ], [ -122.41288661956786, 37.78915394596523 ], [ -122.41280615329742, 37.78878512210689 ], [ -122.41294026374817, 37.788763925277465 ], [ -122.41301536560059, 37.78913274924163 ], [ -122.41301536560059, 37.78913274924163 ], [ -122.41301536560059, 37.78913274924163 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4156653881073, 37.7888232763845 ], [ -122.41542398929596, 37.78884871255861 ], [ -122.4154132604599, 37.78878512210689 ], [ -122.41551518440247, 37.788772404009954 ], [ -122.41552054882048, 37.78878512210689 ], [ -122.41554737091063, 37.78878088274148 ], [ -122.41554737091063, 37.788768164643834 ], [ -122.41565465927123, 37.788751207176915 ], [ -122.41566538810729, 37.78882327638447 ], [ -122.41566538810729, 37.78882327638447 ], [ -122.4156653881073, 37.7888232763845 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41324067115784, 37.78908187708016 ], [ -122.4130153656006, 37.78911579185838 ], [ -122.41298854351045, 37.78899709006656 ], [ -122.41303145885469, 37.78899285071331 ], [ -122.41301000118257, 37.788878388084036 ], [ -122.41296708583833, 37.7888868668034 ], [ -122.41294026374818, 37.788763925277465 ], [ -122.41316556930543, 37.78873424970608 ], [ -122.41319239139558, 37.78885295192013 ], [ -122.41314411163331, 37.78886143064241 ], [ -122.41316556930543, 37.78897589329795 ], [ -122.4132138490677, 37.78896741458879 ], [ -122.41324067115784, 37.78908187708016 ], [ -122.41324067115784, 37.78908187708016 ], [ -122.41324067115784, 37.78908187708016 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40950167179108, 37.78900980812477 ], [ -122.40950167179108, 37.78900980812477 ], [ -122.40950167179108, 37.78899709006654 ], [ -122.40950167179108, 37.78900980812477 ], [ -122.40950167179108, 37.78900980812477 ], [ -122.40950167179108, 37.78900980812477 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41347134113312, 37.7888529519201 ], [ -122.4131977558136, 37.7888868668034 ], [ -122.41316556930542, 37.78873424970608 ], [ -122.41343915462494, 37.78870033475276 ], [ -122.41347134113312, 37.7888529519201 ], [ -122.41347134113312, 37.7888529519201 ], [ -122.41347134113312, 37.7888529519201 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41781651973724, 37.78891230295563 ], [ -122.41769313812256, 37.78892502102847 ], [ -122.4176824092865, 37.78885295192013 ], [ -122.41769313812256, 37.78885295192013 ], [ -122.41766631603241, 37.78870457412277 ], [ -122.41775751113892, 37.788691856012 ], [ -122.4177896976471, 37.78884447319687 ], [ -122.41780579090118, 37.788840233834875 ], [ -122.41781651973724, 37.78891230295563 ], [ -122.41781651973724, 37.78891230295563 ], [ -122.41781651973724, 37.78891230295563 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42262840270996, 37.78884447319687 ], [ -122.42228507995605, 37.7888911061627 ], [ -122.42225289344788, 37.78873424970608 ], [ -122.42259085178375, 37.78868761664125 ], [ -122.42262840270996, 37.78884447319687 ], [ -122.42262840270996, 37.78884447319687 ], [ -122.42262840270996, 37.78884447319687 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40964651107788, 37.78899285071331 ], [ -122.40950167179108, 37.78900980812477 ], [ -122.40950167179108, 37.78899709006654 ], [ -122.40950167179108, 37.78869609538249 ], [ -122.40958213806152, 37.788683377270274 ], [ -122.40964651107788, 37.78899285071331 ], [ -122.40964651107788, 37.78899285071331 ], [ -122.40964651107788, 37.78899285071331 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41735517978668, 37.78880207956601 ], [ -122.41726934909819, 37.78881055829413 ], [ -122.41726398468018, 37.78879360083693 ], [ -122.41718351840973, 37.78880207956601 ], [ -122.41718351840973, 37.78881479765783 ], [ -122.41708695888519, 37.78882751574746 ], [ -122.41706013679504, 37.788708813492555 ], [ -122.4171245098114, 37.78870033475276 ], [ -122.41715133190155, 37.78869609538249 ], [ -122.41716742515564, 37.78869609538249 ], [ -122.41716742515564, 37.78871305286208 ], [ -122.41724252700806, 37.78870457412277 ], [ -122.41724252700806, 37.788691856012 ], [ -122.41733372211456, 37.78867913789904 ], [ -122.41735517978668, 37.78880207956601 ], [ -122.41735517978668, 37.78880207956601 ], [ -122.41735517978668, 37.78880207956601 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41518259048462, 37.788878388084036 ], [ -122.41471588611603, 37.78892926038561 ], [ -122.41467833518982, 37.78873001033775 ], [ -122.41514503955841, 37.78867489852755 ], [ -122.41518259048462, 37.788878388084036 ], [ -122.41518259048462, 37.788878388084036 ], [ -122.41518259048462, 37.788878388084036 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41009712219238, 37.788768164643834 ], [ -122.40983963012695, 37.78880207956601 ], [ -122.40981817245483, 37.78870033475276 ], [ -122.41007566452026, 37.788666419783866 ], [ -122.41009712219238, 37.788768164643834 ], [ -122.41009712219238, 37.788768164643834 ], [ -122.41009712219238, 37.788768164643834 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41568148136139, 37.788751207176915 ], [ -122.41565465927124, 37.788751207176915 ], [ -122.41554737091064, 37.788768164643834 ], [ -122.41551518440247, 37.788772404009954 ], [ -122.4154132604599, 37.78878512210689 ], [ -122.41539180278778, 37.78868761664125 ], [ -122.41547763347626, 37.78867489852755 ], [ -122.41548299789429, 37.788691856012 ], [ -122.4155741930008, 37.78867913789904 ], [ -122.4155741930008, 37.788666419783866 ], [ -122.41566002368927, 37.788653701666526 ], [ -122.41568148136139, 37.788751207176915 ], [ -122.41568148136139, 37.788751207176915 ], [ -122.41568148136139, 37.788751207176915 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41834223270416, 37.78884447319687 ], [ -122.41825103759767, 37.78885719128138 ], [ -122.41823494434358, 37.78878512210689 ], [ -122.41825103759767, 37.78878512210689 ], [ -122.41824030876161, 37.78872577096919 ], [ -122.41822421550752, 37.78872577096919 ], [ -122.41821348667146, 37.78865794103921 ], [ -122.41830468177797, 37.78864946229359 ], [ -122.41832077503204, 37.788717292231354 ], [ -122.41829931735992, 37.7887215316004 ], [ -122.41831004619598, 37.78878088274148 ], [ -122.4183315038681, 37.78877664337584 ], [ -122.41834223270416, 37.78884447319687 ], [ -122.41834223270416, 37.78884447319687 ], [ -122.41834223270416, 37.78884447319687 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41402387619019, 37.78889958488061 ], [ -122.41372883319853, 37.78893773909911 ], [ -122.41366982460022, 37.788670659155834 ], [ -122.41397023200987, 37.788636744173324 ], [ -122.41398632526396, 37.78874272844198 ], [ -122.41390585899352, 37.788755446544 ], [ -122.41391658782958, 37.78881055829413 ], [ -122.41400241851807, 37.78880207956601 ], [ -122.41402387619019, 37.78889958488061 ], [ -122.41402387619019, 37.78889958488061 ], [ -122.41402387619019, 37.78889958488061 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41081595420837, 37.78885719128138 ], [ -122.4105852842331, 37.7888868668034 ], [ -122.41053700447083, 37.788653701666526 ], [ -122.41076767444612, 37.788624026050876 ], [ -122.41078913211824, 37.78874272844198 ], [ -122.41081595420837, 37.78885719128138 ], [ -122.41081595420837, 37.78885719128138 ], [ -122.41081595420837, 37.78885719128138 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41417407989502, 37.78886990936371 ], [ -122.41401851177216, 37.7888868668034 ], [ -122.4140077829361, 37.78881479765783 ], [ -122.41403460502625, 37.78881055829413 ], [ -122.41401314735413, 37.78873001033775 ], [ -122.41398632526398, 37.78873001033775 ], [ -122.41397023200989, 37.788636744173324 ], [ -122.4141311645508, 37.788619786676236 ], [ -122.41414725780487, 37.788725770969215 ], [ -122.41411507129669, 37.788725770969215 ], [ -122.41413116455078, 37.78877664337584 ], [ -122.41415798664093, 37.78877664337584 ], [ -122.414174079895, 37.78886990936371 ], [ -122.414174079895, 37.78886990936371 ], [ -122.41417407989502, 37.78886990936371 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40987181663513, 37.788963175233846 ], [ -122.40964651107788, 37.78899285071331 ], [ -122.40958213806152, 37.788683377270274 ], [ -122.4095767736435, 37.78864522292042 ], [ -122.40980207920074, 37.78861554730136 ], [ -122.40981817245483, 37.78870033475276 ], [ -122.40983963012695, 37.78880207956601 ], [ -122.40987181663513, 37.788963175233846 ], [ -122.40987181663513, 37.788963175233846 ], [ -122.40987181663513, 37.788963175233846 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41796135902405, 37.788895345521794 ], [ -122.41781651973724, 37.78891230295563 ], [ -122.41780579090118, 37.788840233834875 ], [ -122.41776823997498, 37.78863250479942 ], [ -122.41791307926178, 37.78861554730136 ], [ -122.41795063018799, 37.78881479765786 ], [ -122.41796135902405, 37.788895345521794 ], [ -122.41796135902405, 37.788895345521794 ], [ -122.41796135902405, 37.788895345521794 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42182910442352, 37.788751207176915 ], [ -122.4215018749237, 37.78879360083693 ], [ -122.42147505283356, 37.788653701666526 ], [ -122.42180228233339, 37.78861130792624 ], [ -122.42182910442352, 37.788751207176915 ], [ -122.42182910442352, 37.788751207176915 ], [ -122.42182910442352, 37.788751207176915 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41769313812256, 37.78892502102847 ], [ -122.41758048534393, 37.78893773909911 ], [ -122.41756975650787, 37.78885719128138 ], [ -122.41760194301605, 37.78885295192013 ], [ -122.41758048534393, 37.78871305286208 ], [ -122.41754829883575, 37.788717292231354 ], [ -122.41753220558168, 37.788624026050876 ], [ -122.41763412952423, 37.78861130792624 ], [ -122.4176824092865, 37.78885295192013 ], [ -122.41769313812256, 37.78892502102847 ], [ -122.41769313812256, 37.78892502102847 ], [ -122.41769313812256, 37.78892502102847 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41805791854858, 37.78880207956601 ], [ -122.41795063018799, 37.78881479765783 ], [ -122.41791307926178, 37.78861554730136 ], [ -122.41802036762238, 37.78860282917525 ], [ -122.41805791854858, 37.78880207956601 ], [ -122.41805791854858, 37.78880207956601 ], [ -122.41805791854858, 37.78880207956601 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.416872382164, 37.7888063189302 ], [ -122.416689991951, 37.78883175511017 ], [ -122.41666316986085, 37.788691856012 ], [ -122.41652369499208, 37.78871305286208 ], [ -122.41650760173799, 37.788640983547005 ], [ -122.41652369499208, 37.788640983547005 ], [ -122.41682946681978, 37.788598589799406 ], [ -122.41687238216402, 37.7888063189302 ], [ -122.41687238216402, 37.7888063189302 ], [ -122.416872382164, 37.7888063189302 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4145495891571, 37.788963175233846 ], [ -122.41432428359985, 37.78898861135982 ], [ -122.41424381732942, 37.78861554730136 ], [ -122.4144744873047, 37.78858587167039 ], [ -122.41454958915712, 37.788963175233846 ], [ -122.41454958915712, 37.788963175233846 ], [ -122.4145495891571, 37.788963175233846 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41853535175323, 37.7888232763845 ], [ -122.41834223270416, 37.78884447319687 ], [ -122.4183315038681, 37.78877664337584 ], [ -122.41832077503204, 37.788717292231354 ], [ -122.41830468177797, 37.78864946229359 ], [ -122.41829931735994, 37.78860706855085 ], [ -122.41835832595827, 37.788598589799406 ], [ -122.4184173345566, 37.788590111046965 ], [ -122.41848707199097, 37.788581632293536 ], [ -122.41853535175323, 37.78882327638447 ], [ -122.41853535175323, 37.78882327638447 ], [ -122.41853535175323, 37.7888232763845 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.414710521698, 37.78891230295563 ], [ -122.41454422473907, 37.788933499742484 ], [ -122.414528131485, 37.78885295192013 ], [ -122.41455495357513, 37.78884871255861 ], [ -122.41452276706696, 37.78867913789904 ], [ -122.41449594497682, 37.788683377270274 ], [ -122.4144744873047, 37.78858587167039 ], [ -122.4146354198456, 37.78856467478382 ], [ -122.41465687751771, 37.78866218041166 ], [ -122.4146354198456, 37.788666419783866 ], [ -122.4146729707718, 37.78883599447265 ], [ -122.41469442844392, 37.78883175511017 ], [ -122.414710521698, 37.78891230295563 ], [ -122.414710521698, 37.78891230295563 ], [ -122.414710521698, 37.78891230295563 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41161525249481, 37.788755446544 ], [ -122.41145431995392, 37.78877664337584 ], [ -122.41141140460968, 37.78857739291647 ], [ -122.41157233715057, 37.788556196027486 ], [ -122.41161525249481, 37.788755446544 ], [ -122.41161525249481, 37.788755446544 ], [ -122.41161525249481, 37.788755446544 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4100810289383, 37.788666419783866 ], [ -122.40981817245483, 37.78870033475276 ], [ -122.40979671478271, 37.788590111046965 ], [ -122.40987181663513, 37.7885773929165 ], [ -122.41005420684813, 37.788556196027486 ], [ -122.41008102893828, 37.788666419783866 ], [ -122.41008102893828, 37.788666419783866 ], [ -122.4100810289383, 37.788666419783866 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41478025913239, 37.78870457412277 ], [ -122.41466760635376, 37.7887215316004 ], [ -122.41463541984558, 37.78856467478382 ], [ -122.4147480726242, 37.78855195664895 ], [ -122.41478025913239, 37.78870457412277 ], [ -122.41478025913239, 37.78870457412277 ], [ -122.41478025913239, 37.78870457412277 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41750538349152, 37.78864522292042 ], [ -122.41745173931122, 37.788653701666526 ], [ -122.41744637489319, 37.78863250479942 ], [ -122.41739809513093, 37.788636744173324 ], [ -122.4173927307129, 37.78861554730136 ], [ -122.41722106933595, 37.788636744173324 ], [ -122.41723179817201, 37.78868761664125 ], [ -122.41716742515564, 37.78869609538249 ], [ -122.41715133190156, 37.78869609538249 ], [ -122.41715133190156, 37.788683377270274 ], [ -122.41711914539339, 37.78868761664125 ], [ -122.4171245098114, 37.78870033475276 ], [ -122.41706013679504, 37.788708813492555 ], [ -122.41704404354097, 37.78860282917525 ], [ -122.41742491722107, 37.788556196027486 ], [ -122.41748929023743, 37.78854771727019 ], [ -122.41750538349152, 37.78864522292042 ], [ -122.41750538349152, 37.78864522292042 ], [ -122.41750538349152, 37.78864522292042 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41497337818146, 37.788670659155834 ], [ -122.41477489471436, 37.78869609538249 ], [ -122.4147480726242, 37.78855195664898 ], [ -122.41494655609131, 37.78852652037268 ], [ -122.41497337818146, 37.788670659155834 ], [ -122.41497337818146, 37.788670659155834 ], [ -122.41497337818146, 37.788670659155834 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41682946681976, 37.788598589799406 ], [ -122.41652369499207, 37.788640983547005 ], [ -122.416512966156, 37.788568914161615 ], [ -122.41660416126251, 37.78856043540577 ], [ -122.41660952568053, 37.7885773929165 ], [ -122.41668462753294, 37.78856467478382 ], [ -122.41667926311493, 37.78853923851192 ], [ -122.4168187379837, 37.78852228099244 ], [ -122.41682946681976, 37.788598589799406 ], [ -122.41682946681976, 37.788598589799406 ], [ -122.41682946681976, 37.788598589799406 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41177082061768, 37.78873424970608 ], [ -122.41161525249481, 37.788755446544 ], [ -122.41157233715057, 37.788556196027486 ], [ -122.41156697273254, 37.78853499913242 ], [ -122.41172254085541, 37.78851380223124 ], [ -122.41177082061768, 37.78873424970608 ], [ -122.41177082061768, 37.78873424970608 ], [ -122.41177082061768, 37.78873424970608 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41514503955841, 37.78867489852755 ], [ -122.41497874259949, 37.78869609538249 ], [ -122.41494655609131, 37.78852652037268 ], [ -122.41511285305023, 37.78850532346909 ], [ -122.41514503955841, 37.78867489852755 ], [ -122.41514503955841, 37.78867489852755 ], [ -122.41514503955841, 37.78867489852755 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41069793701172, 37.78861130792624 ], [ -122.4105316400528, 37.78863250479942 ], [ -122.41053700447083, 37.788653701666526 ], [ -122.41058528423308, 37.7888868668034 ], [ -122.41034388542174, 37.7889207816711 ], [ -122.41026878356932, 37.788556196027486 ], [ -122.41067647933959, 37.78850108408765 ], [ -122.4106979370117, 37.78861130792624 ], [ -122.4106979370117, 37.78861130792624 ], [ -122.41069793701172, 37.78861130792624 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41825103759766, 37.78885719128138 ], [ -122.41807401180267, 37.788878388084036 ], [ -122.41805791854858, 37.78880207956601 ], [ -122.41802036762238, 37.78860282917525 ], [ -122.4180042743683, 37.78852228099244 ], [ -122.41818130016328, 37.78850108408765 ], [ -122.41821348667146, 37.78865794103921 ], [ -122.41822421550752, 37.788725770969215 ], [ -122.41823494434358, 37.78878512210689 ], [ -122.41825103759767, 37.78885719128138 ], [ -122.41825103759767, 37.78885719128138 ], [ -122.41825103759766, 37.78885719128138 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41099298000336, 37.78883599447265 ], [ -122.41081595420837, 37.78885719128138 ], [ -122.41078913211824, 37.78874272844198 ], [ -122.41081595420837, 37.788738489074134 ], [ -122.41076767444612, 37.78850108408765 ], [ -122.41089642047884, 37.78848412655941 ], [ -122.4109447002411, 37.78873001033775 ], [ -122.41097152233124, 37.78872577096919 ], [ -122.41099298000336, 37.78883599447265 ], [ -122.41099298000336, 37.78883599447265 ], [ -122.41099298000336, 37.78883599447265 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41120219230652, 37.78881055829413 ], [ -122.41099298000336, 37.78883599447265 ], [ -122.41097152233124, 37.788725770969215 ], [ -122.41097152233124, 37.788708813492555 ], [ -122.41099298000336, 37.788708813492555 ], [ -122.41095006465912, 37.788492605324016 ], [ -122.41110563278198, 37.78847140841073 ], [ -122.41114854812622, 37.788683377270274 ], [ -122.41117537021637, 37.78867913789904 ], [ -122.41120219230652, 37.78881055829413 ], [ -122.41120219230652, 37.78881055829413 ], [ -122.41120219230652, 37.78881055829413 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42069721221924, 37.78854771727019 ], [ -122.4204236268997, 37.78858587167039 ], [ -122.42041289806365, 37.78854771727019 ], [ -122.42040216922759, 37.78850532346909 ], [ -122.42061138153076, 37.788479887176756 ], [ -122.42068111896513, 37.78846716902731 ], [ -122.42068111896513, 37.78846716902731 ], [ -122.42069721221922, 37.78854771727019 ], [ -122.42069721221922, 37.78854771727019 ], [ -122.42069721221924, 37.78854771727019 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41848707199097, 37.788581632293536 ], [ -122.4184173345566, 37.788590111046965 ], [ -122.41841197013856, 37.78856043540577 ], [ -122.41835296154024, 37.788568914161615 ], [ -122.41835832595827, 37.788598589799406 ], [ -122.41829931735994, 37.78860706855088 ], [ -122.41823494434358, 37.78861130792624 ], [ -122.41821348667146, 37.788492605324016 ], [ -122.41829931735994, 37.78848412655941 ], [ -122.41829931735994, 37.78850108408765 ], [ -122.41833150386812, 37.78850108408765 ], [ -122.41833150386812, 37.788509562850294 ], [ -122.41839051246644, 37.78850108408765 ], [ -122.41840660572053, 37.78850108408765 ], [ -122.41840660572053, 37.78848836594184 ], [ -122.4184012413025, 37.78847140841073 ], [ -122.41846561431886, 37.78846292964368 ], [ -122.41848707199098, 37.788581632293536 ], [ -122.41848707199098, 37.788581632293536 ], [ -122.41848707199097, 37.788581632293536 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41567611694336, 37.788624026050876 ], [ -122.41539180278778, 37.78865794103921 ], [ -122.41535425186157, 37.78846716902731 ], [ -122.41551518440248, 37.78845021149131 ], [ -122.41563856601717, 37.78843325395142 ], [ -122.41567611694336, 37.788624026050876 ], [ -122.41567611694336, 37.788624026050876 ], [ -122.41567611694336, 37.788624026050876 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41208732128143, 37.78868761664125 ], [ -122.41198539733888, 37.78870033475276 ], [ -122.41193175315857, 37.78843325395142 ], [ -122.412006855011, 37.78842477518002 ], [ -122.41201221942902, 37.78845021149131 ], [ -122.41203904151917, 37.78844597210669 ], [ -122.41208732128143, 37.78868761664125 ], [ -122.41208732128143, 37.78868761664125 ], [ -122.41208732128143, 37.78868761664125 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41145431995392, 37.78877664337584 ], [ -122.41120219230652, 37.78881055829413 ], [ -122.41117537021637, 37.78867913789904 ], [ -122.4111270904541, 37.78845021149131 ], [ -122.4113792181015, 37.78842053579395 ], [ -122.41140067577362, 37.788518041611965 ], [ -122.41141140460968, 37.7885773929165 ], [ -122.41145431995393, 37.78877664337584 ], [ -122.41145431995393, 37.78877664337584 ], [ -122.41145431995392, 37.78877664337584 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41742491722107, 37.788556196027486 ], [ -122.41704404354097, 37.78860282917525 ], [ -122.41701722145082, 37.7884586902598 ], [ -122.41710841655733, 37.78844597210669 ], [ -122.41733372211456, 37.788420535793925 ], [ -122.41739809513093, 37.788412057021056 ], [ -122.41742491722107, 37.788556196027486 ], [ -122.41742491722107, 37.788556196027486 ], [ -122.41742491722107, 37.788556196027486 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41589069366455, 37.78874696780958 ], [ -122.41572976112366, 37.788763925277465 ], [ -122.41570830345152, 37.788653701666526 ], [ -122.41573512554167, 37.78864946229359 ], [ -122.4156868457794, 37.78842477518002 ], [ -122.41575658321379, 37.78841629640763 ], [ -122.41582095623015, 37.78840781763428 ], [ -122.41584241390227, 37.78852652037268 ], [ -122.41580486297607, 37.78853075975266 ], [ -122.4158263206482, 37.788636744173324 ], [ -122.41586387157439, 37.78863250479942 ], [ -122.41589069366454, 37.78874696780958 ], [ -122.41589069366454, 37.78874696780958 ], [ -122.41589069366455, 37.78874696780958 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41932928562164, 37.788738489074134 ], [ -122.41877675056458, 37.7888063189302 ], [ -122.41871237754822, 37.78847564779387 ], [ -122.41925954818726, 37.78840781763428 ], [ -122.41932928562163, 37.788738489074134 ], [ -122.41932928562163, 37.788738489074134 ], [ -122.41932928562164, 37.788738489074134 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42061138153076, 37.788479887176756 ], [ -122.4204021692276, 37.78850532346909 ], [ -122.42038607597352, 37.788429014565835 ], [ -122.42058992385864, 37.78839933885995 ], [ -122.42061138153076, 37.788479887176756 ], [ -122.42061138153076, 37.788479887176756 ], [ -122.42061138153076, 37.788479887176756 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4207991361618, 37.78853499913242 ], [ -122.42069721221925, 37.78854771727019 ], [ -122.42068111896516, 37.78846716902731 ], [ -122.42068111896516, 37.78846292964368 ], [ -122.42069184780122, 37.78845445087567 ], [ -122.4206864833832, 37.78840781763428 ], [ -122.42076694965364, 37.78839933885995 ], [ -122.42079913616182, 37.78853499913242 ], [ -122.42079913616182, 37.78853499913242 ], [ -122.4207991361618, 37.78853499913242 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41941511631012, 37.78872577096919 ], [ -122.41932928562164, 37.788738489074134 ], [ -122.41925954818726, 37.78840781763428 ], [ -122.41935074329376, 37.78839509947241 ], [ -122.41941511631012, 37.78872577096919 ], [ -122.41941511631012, 37.78872577096919 ], [ -122.41941511631012, 37.78872577096919 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41609454154968, 37.788738489074134 ], [ -122.41589069366456, 37.788768164643834 ], [ -122.41589069366456, 37.78874696780958 ], [ -122.41586387157442, 37.78863250479942 ], [ -122.4158424139023, 37.78852652037268 ], [ -122.41582095623018, 37.78840781763428 ], [ -122.41587460041048, 37.78840357824722 ], [ -122.41603016853334, 37.78838662069664 ], [ -122.41604626178743, 37.78846716902731 ], [ -122.4160623550415, 37.78853499913242 ], [ -122.41594970226288, 37.78854771727019 ], [ -122.41596579551697, 37.788619786676236 ], [ -122.41606771945953, 37.78860282917525 ], [ -122.4160784482956, 37.78864522292042 ], [ -122.41609454154968, 37.78872577096919 ], [ -122.41609454154968, 37.788738489074134 ], [ -122.41609454154968, 37.788738489074134 ], [ -122.41609454154968, 37.788738489074134 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41266131401062, 37.788624026050876 ], [ -122.41218924522398, 37.78867913789904 ], [ -122.41214632987975, 37.78843325395142 ], [ -122.41225361824036, 37.78842477518002 ], [ -122.41225898265837, 37.78844173272184 ], [ -122.41246819496153, 37.78841629640763 ], [ -122.41246283054352, 37.78839933885995 ], [ -122.41260766983032, 37.78838662069664 ], [ -122.41261839866638, 37.78846716902731 ], [ -122.4126237630844, 37.788479887176756 ], [ -122.41262912750243, 37.78852228099244 ], [ -122.41263985633849, 37.78852228099244 ], [ -122.4126613140106, 37.788624026050876 ], [ -122.4126613140106, 37.788624026050876 ], [ -122.41266131401062, 37.788624026050876 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4195009469986, 37.788717292231354 ], [ -122.41941511631012, 37.78872577096919 ], [ -122.41935074329375, 37.78839509947241 ], [ -122.4194312095642, 37.78838238130836 ], [ -122.41950094699858, 37.788717292231354 ], [ -122.41950094699858, 37.788717292231354 ], [ -122.4195009469986, 37.788717292231354 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41967260837555, 37.78869609538249 ], [ -122.4195009469986, 37.788717292231354 ], [ -122.41943120956421, 37.78838238130836 ], [ -122.41960823535919, 37.78836118436342 ], [ -122.41967260837555, 37.78869609538249 ], [ -122.41967260837555, 37.78869609538249 ], [ -122.41967260837555, 37.78869609538249 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4163681268692, 37.788691856012 ], [ -122.41625547409058, 37.788708813492555 ], [ -122.41623938083649, 37.78864946229359 ], [ -122.41620182991029, 37.788653701666526 ], [ -122.41621255874635, 37.78871305286208 ], [ -122.41609454154968, 37.788725770969215 ], [ -122.41607844829561, 37.78864522292042 ], [ -122.41612136363985, 37.788640983547005 ], [ -122.41608381271364, 37.78846292964368 ], [ -122.41604626178746, 37.78846716902731 ], [ -122.41603016853337, 37.78838662069664 ], [ -122.41630911827092, 37.788352705583755 ], [ -122.41632521152498, 37.788429014565835 ], [ -122.41628229618074, 37.78843325395142 ], [ -122.41630911827089, 37.78861554730136 ], [ -122.41635739803316, 37.78861130792624 ], [ -122.41636812686922, 37.788691856012 ], [ -122.41636812686922, 37.788691856012 ], [ -122.4163681268692, 37.788691856012 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42153406143188, 37.788437493336744 ], [ -122.42144286632538, 37.78845021149131 ], [ -122.42142140865326, 37.788361184363445 ], [ -122.42151260375977, 37.78834846619357 ], [ -122.42153406143188, 37.788437493336744 ], [ -122.42153406143188, 37.788437493336744 ], [ -122.42153406143188, 37.788437493336744 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41644859313965, 37.78869609538249 ], [ -122.41641104221345, 37.78870033475276 ], [ -122.41641640663147, 37.78872577096919 ], [ -122.41637349128723, 37.78873001033775 ], [ -122.41636812686922, 37.788691856012 ], [ -122.41635739803316, 37.78861130792624 ], [ -122.41630911827089, 37.78861554730136 ], [ -122.41628229618074, 37.78843325395142 ], [ -122.41632521152498, 37.788429014565835 ], [ -122.41630911827092, 37.788352705583755 ], [ -122.41638958454136, 37.78834422680312 ], [ -122.41642713546754, 37.78855195664895 ], [ -122.41644859313966, 37.78869609538249 ], [ -122.41644859313966, 37.78869609538249 ], [ -122.41644859313965, 37.78869609538249 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41650760173798, 37.78854347789117 ], [ -122.41642713546753, 37.78855195664898 ], [ -122.41638958454134, 37.78834422680312 ], [ -122.41647005081177, 37.788335748021495 ], [ -122.41650760173798, 37.78854347789117 ], [ -122.41650760173798, 37.78854347789117 ], [ -122.41650760173798, 37.78854347789117 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41989254951477, 37.788666419783866 ], [ -122.41967260837555, 37.78869609538249 ], [ -122.41960823535919, 37.788361184363445 ], [ -122.41982281208038, 37.788335748021495 ], [ -122.41989254951476, 37.788666419783866 ], [ -122.41989254951476, 37.788666419783866 ], [ -122.41989254951477, 37.788666419783866 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41306900978088, 37.788568914161615 ], [ -122.41288661956787, 37.788598589799406 ], [ -122.41286516189575, 37.78850532346909 ], [ -122.41287589073181, 37.78850532346909 ], [ -122.41285979747774, 37.78843325395142 ], [ -122.41284906864168, 37.788437493336744 ], [ -122.41283297538759, 37.78835694497374 ], [ -122.41301000118257, 37.788331508630314 ], [ -122.41303145885469, 37.78841629640763 ], [ -122.41299927234651, 37.78842053579395 ], [ -122.4130153656006, 37.78849684470596 ], [ -122.4130529165268, 37.78848836594184 ], [ -122.41306900978088, 37.788568914161615 ], [ -122.41306900978088, 37.788568914161615 ], [ -122.41306900978088, 37.788568914161615 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42173254489899, 37.788412057021084 ], [ -122.42153406143188, 37.788437493336744 ], [ -122.42151260375977, 37.78834846619357 ], [ -122.42159843444824, 37.78833998741243 ], [ -122.42159843444824, 37.788361184363445 ], [ -122.42164134979248, 37.788352705583755 ], [ -122.42163598537446, 37.788331508630314 ], [ -122.42171108722688, 37.78832302984724 ], [ -122.421732544899, 37.788412057021084 ], [ -122.421732544899, 37.788412057021084 ], [ -122.42173254489899, 37.788412057021084 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41287589073181, 37.78860282917525 ], [ -122.41273105144501, 37.788624026050876 ], [ -122.41270422935487, 37.78852228099244 ], [ -122.41272568702699, 37.788518041611965 ], [ -122.41270422935487, 37.78844173272184 ], [ -122.41268277168275, 37.78844597210669 ], [ -122.4126559495926, 37.78834422680312 ], [ -122.4128168821335, 37.78831879045532 ], [ -122.41284370422365, 37.78842477518002 ], [ -122.41281151771547, 37.788429014565835 ], [ -122.41282761096956, 37.78849684470596 ], [ -122.41285443305969, 37.788492605324016 ], [ -122.41287589073181, 37.78860282917525 ], [ -122.41287589073181, 37.78860282917525 ], [ -122.41287589073181, 37.78860282917525 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41668462753296, 37.78856467478382 ], [ -122.41660952568054, 37.78857739291647 ], [ -122.41660416126251, 37.78856043540577 ], [ -122.41651296615602, 37.788568914161615 ], [ -122.41650760173799, 37.78854347789117 ], [ -122.41647005081178, 37.788335748021495 ], [ -122.41655051708223, 37.788327269238906 ], [ -122.4166363477707, 37.7883145510632 ], [ -122.41667926311494, 37.78853923851192 ], [ -122.41668462753297, 37.78856467478382 ], [ -122.41668462753297, 37.78856467478382 ], [ -122.41668462753296, 37.78856467478382 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41846561431885, 37.78844597210669 ], [ -122.41835296154022, 37.7884586902598 ], [ -122.4183475971222, 37.78844173272184 ], [ -122.41822421550752, 37.78845445087567 ], [ -122.41822957992555, 37.78847140841073 ], [ -122.41811692714693, 37.78848412655941 ], [ -122.4180954694748, 37.78835694497374 ], [ -122.41820812225342, 37.78833998741243 ], [ -122.41821348667145, 37.78835694497374 ], [ -122.41832613945007, 37.78834422680312 ], [ -122.41832077503204, 37.788327269238906 ], [ -122.41843879222871, 37.7883145510632 ], [ -122.41846561431885, 37.78844597210669 ], [ -122.41846561431885, 37.78844597210669 ], [ -122.41846561431885, 37.78844597210669 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42073476314545, 37.78838238130839 ], [ -122.42058992385864, 37.78839933885995 ], [ -122.42038607597352, 37.788429014565835 ], [ -122.42036998271944, 37.78834846619357 ], [ -122.42046117782594, 37.788335748021495 ], [ -122.42046654224396, 37.788352705583755 ], [ -122.42062747478487, 37.788331508630314 ], [ -122.42062211036684, 37.7883145510632 ], [ -122.42071866989137, 37.78830183288528 ], [ -122.42073476314546, 37.78838238130839 ], [ -122.42073476314546, 37.78838238130839 ], [ -122.42073476314545, 37.78838238130839 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4168187379837, 37.78852228099244 ], [ -122.41667926311493, 37.78853923851192 ], [ -122.41663634777069, 37.7883145510632 ], [ -122.41677045822144, 37.78830183288528 ], [ -122.41681873798369, 37.78852228099244 ], [ -122.41681873798369, 37.78852228099244 ], [ -122.4168187379837, 37.78852228099244 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42134630680084, 37.78846292964368 ], [ -122.42118000984192, 37.78848412655941 ], [ -122.42114245891571, 37.78832302984724 ], [ -122.42131412029268, 37.78829759349217 ], [ -122.42134630680086, 37.78846292964368 ], [ -122.42134630680086, 37.78846292964368 ], [ -122.42134630680084, 37.78846292964368 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42018759250641, 37.78862826542526 ], [ -122.41989254951476, 37.788666419783866 ], [ -122.41982281208038, 37.788335748021495 ], [ -122.42011785507202, 37.78829759349217 ], [ -122.42018759250641, 37.78862826542526 ], [ -122.42018759250641, 37.78862826542526 ], [ -122.42018759250641, 37.78862826542526 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41235554218292, 37.78837814191988 ], [ -122.41220533847809, 37.78839509947241 ], [ -122.41219997406006, 37.788373902531134 ], [ -122.4121356010437, 37.78838238130839 ], [ -122.41214096546173, 37.78840357824722 ], [ -122.41207122802734, 37.788412057021084 ], [ -122.41206586360931, 37.78839086008464 ], [ -122.41201758384706, 37.78839933885995 ], [ -122.41201758384706, 37.78842053579395 ], [ -122.41193175315857, 37.788429014565835 ], [ -122.41191029548645, 37.788331508630314 ], [ -122.41200149059296, 37.78831879045532 ], [ -122.41200685501099, 37.78833998741243 ], [ -122.41205513477325, 37.788335748021495 ], [ -122.41205513477325, 37.7883145510632 ], [ -122.41211950778961, 37.78830607227817 ], [ -122.41211950778961, 37.788327269238906 ], [ -122.41219460964203, 37.78831879045532 ], [ -122.412189245224, 37.7882933540988 ], [ -122.4123340845108, 37.7882763965229 ], [ -122.41235554218292, 37.78837814191988 ], [ -122.41235554218292, 37.78837814191988 ], [ -122.41235554218292, 37.78837814191988 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41343379020691, 37.78852652037268 ], [ -122.41317093372345, 37.78856467478382 ], [ -122.4131441116333, 37.7884586902598 ], [ -122.41318166255951, 37.78845021149131 ], [ -122.41314947605133, 37.78830607227817 ], [ -122.41337478160857, 37.78827215712833 ], [ -122.4134337902069, 37.78852652037268 ], [ -122.4134337902069, 37.78852652037268 ], [ -122.41343379020691, 37.78852652037268 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4207454919815, 37.78830183288528 ], [ -122.42071866989137, 37.78830183288528 ], [ -122.42062211036682, 37.7883145510632 ], [ -122.42046117782593, 37.788335748021495 ], [ -122.42036998271942, 37.78834846619357 ], [ -122.42035388946535, 37.78826367833844 ], [ -122.42072939872743, 37.78821704497665 ], [ -122.4207454919815, 37.78830183288528 ], [ -122.4207454919815, 37.78830183288528 ], [ -122.4207454919815, 37.78830183288528 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41216778755188, 37.78829759349217 ], [ -122.41191029548645, 37.788327269238906 ], [ -122.41189420223238, 37.788242481359454 ], [ -122.4121516942978, 37.78821704497665 ], [ -122.41216778755188, 37.78829759349217 ], [ -122.41216778755188, 37.78829759349217 ], [ -122.41216778755188, 37.78829759349217 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41742491722107, 37.78840781763428 ], [ -122.41739809513093, 37.788412057021084 ], [ -122.41733372211456, 37.78842053579395 ], [ -122.41732835769655, 37.78839933885995 ], [ -122.41710841655733, 37.78842477518002 ], [ -122.41710841655733, 37.78844597210669 ], [ -122.41701722145082, 37.7884586902598 ], [ -122.41697430610658, 37.788250960151764 ], [ -122.41738200187685, 37.788200087383245 ], [ -122.41739809513093, 37.78828063591724 ], [ -122.41737663745882, 37.78828487531134 ], [ -122.41739273071289, 37.78838238130839 ], [ -122.41741955280304, 37.78838238130839 ], [ -122.41741955280304, 37.78839086008464 ], [ -122.41742491722106, 37.78840781763428 ], [ -122.41742491722106, 37.78840781763428 ], [ -122.41742491722107, 37.78840781763428 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41748929023743, 37.78838238130839 ], [ -122.41741955280305, 37.78839086008464 ], [ -122.41741955280305, 37.78838238130839 ], [ -122.41739809513093, 37.78828063591724 ], [ -122.41738200187685, 37.788200087383245 ], [ -122.41745173931123, 37.78819584798428 ], [ -122.41748929023743, 37.78838238130839 ], [ -122.41748929023743, 37.78838238130839 ], [ -122.41748929023743, 37.78838238130839 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42098152637482, 37.788509562850294 ], [ -122.4207991361618, 37.78853499913242 ], [ -122.42076694965363, 37.78839933885995 ], [ -122.4207454919815, 37.78830183288528 ], [ -122.42072939872743, 37.78821704497665 ], [ -122.42091178894043, 37.78819160858508 ], [ -122.42098152637482, 37.788509562850294 ], [ -122.42098152637482, 37.788509562850294 ], [ -122.42098152637482, 37.788509562850294 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41761267185211, 37.788492605324016 ], [ -122.41751074790955, 37.78850532346909 ], [ -122.41748929023743, 37.78838238130839 ], [ -122.41745173931123, 37.78819584798428 ], [ -122.4175536632538, 37.78818312978595 ], [ -122.41756439208986, 37.78825519954756 ], [ -122.41753756999971, 37.78825519954756 ], [ -122.41753756999971, 37.78828063591724 ], [ -122.41756975650789, 37.7882763965229 ], [ -122.41759121418, 37.78839509947241 ], [ -122.41756439208986, 37.78839509947241 ], [ -122.41756975650789, 37.78842477518002 ], [ -122.41759657859804, 37.78842477518002 ], [ -122.4176073074341, 37.78847564779387 ], [ -122.41761267185211, 37.788492605324016 ], [ -122.41761267185211, 37.788492605324016 ], [ -122.41761267185211, 37.788492605324016 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41005420684814, 37.788556196027486 ], [ -122.40987181663515, 37.78857739291647 ], [ -122.4098289012909, 37.78837814191988 ], [ -122.40975379943848, 37.78838662069664 ], [ -122.40974843502046, 37.78834846619357 ], [ -122.40952849388124, 37.78837814191988 ], [ -122.40950167179109, 37.78824672075573 ], [ -122.40950167179109, 37.788242481359454 ], [ -122.40997910499574, 37.78818312978595 ], [ -122.41005420684816, 37.788556196027486 ], [ -122.41005420684816, 37.788556196027486 ], [ -122.41005420684814, 37.788556196027486 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4210673570633, 37.78850108408765 ], [ -122.42098152637482, 37.788509562850294 ], [ -122.42091178894043, 37.78819160858508 ], [ -122.42100298404694, 37.788178890386014 ], [ -122.4210673570633, 37.78850108408765 ], [ -122.4210673570633, 37.78850108408765 ], [ -122.4210673570633, 37.78850108408765 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41482317447662, 37.78833998741243 ], [ -122.41474270820619, 37.78834846619357 ], [ -122.41470515727998, 37.78818736918563 ], [ -122.41479098796846, 37.78817465098585 ], [ -122.41482317447664, 37.78833998741243 ], [ -122.41482317447664, 37.78833998741243 ], [ -122.41482317447662, 37.78833998741243 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42118000984192, 37.78848412655941 ], [ -122.4210673570633, 37.78850108408765 ], [ -122.42100298404694, 37.788178890386014 ], [ -122.42111027240753, 37.788166172184766 ], [ -122.42114245891571, 37.78832302984724 ], [ -122.42118000984192, 37.78848412655941 ], [ -122.42118000984192, 37.78848412655941 ], [ -122.42118000984192, 37.78848412655941 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41780042648315, 37.78845445087567 ], [ -122.4176073074341, 37.78847564779387 ], [ -122.41759657859804, 37.78842477518002 ], [ -122.41759121418, 37.78839509947241 ], [ -122.41756975650789, 37.7882763965229 ], [ -122.41756439208986, 37.78825519954756 ], [ -122.4175536632538, 37.78818312978595 ], [ -122.41774678230287, 37.78815769338271 ], [ -122.41776823997499, 37.78827215712833 ], [ -122.41771459579469, 37.78828063591724 ], [ -122.41771459579469, 37.78826367833842 ], [ -122.41768240928651, 37.78826791773349 ], [ -122.41769850254059, 37.78836966314214 ], [ -122.41773068904878, 37.78836542375292 ], [ -122.41773068904878, 37.788356944973714 ], [ -122.41777896881104, 37.78834846619357 ], [ -122.41780042648315, 37.78845445087567 ], [ -122.41780042648315, 37.78845445087567 ], [ -122.41780042648315, 37.78845445087567 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41464614868164, 37.788361184363445 ], [ -122.41458177566528, 37.78836966314214 ], [ -122.41453886032104, 37.788166172184766 ], [ -122.4146032333374, 37.78815769338271 ], [ -122.41464614868164, 37.788361184363445 ], [ -122.41464614868164, 37.788361184363445 ], [ -122.41464614868164, 37.788361184363445 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41243600845337, 37.78824672075573 ], [ -122.41237163543701, 37.788250960151764 ], [ -122.41235554218292, 37.78815769338271 ], [ -122.41241991519928, 37.78815345398132 ], [ -122.41243600845337, 37.78824672075573 ], [ -122.41243600845337, 37.78824672075573 ], [ -122.41243600845337, 37.78824672075573 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41795599460602, 37.788479887176756 ], [ -122.4178272485733, 37.78849684470596 ], [ -122.41782188415527, 37.7884586902598 ], [ -122.41780042648315, 37.78846292964368 ], [ -122.41780042648315, 37.78845445087567 ], [ -122.41777896881104, 37.78834846619357 ], [ -122.41776823997498, 37.78827215712833 ], [ -122.41774678230286, 37.78815769338271 ], [ -122.4178272485733, 37.78814921457968 ], [ -122.41783797740936, 37.78822128437439 ], [ -122.41784870624542, 37.78828063591724 ], [ -122.4178272485733, 37.78828487531134 ], [ -122.41783797740936, 37.788327269238906 ], [ -122.41784870624542, 37.788327269238906 ], [ -122.41785407066345, 37.788361184363445 ], [ -122.41780579090118, 37.78836542375292 ], [ -122.4178111553192, 37.78838662069664 ], [ -122.41785943508147, 37.78838238130839 ], [ -122.41787016391753, 37.78842053579395 ], [ -122.41793990135191, 37.78840781763428 ], [ -122.417955994606, 37.788479887176756 ], [ -122.417955994606, 37.788479887176756 ], [ -122.41795599460602, 37.788479887176756 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42131412029266, 37.78829759349217 ], [ -122.42114245891571, 37.78832302984724 ], [ -122.42111027240752, 37.788166172184766 ], [ -122.42127656936644, 37.78814497517779 ], [ -122.42131412029265, 37.78829759349217 ], [ -122.42131412029265, 37.78829759349217 ], [ -122.42131412029266, 37.78829759349217 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41796135902405, 37.78834422680312 ], [ -122.41786479949951, 37.78835694497374 ], [ -122.41784870624542, 37.78828063591724 ], [ -122.41787552833557, 37.78828063591724 ], [ -122.41786479949951, 37.78821704497665 ], [ -122.41783797740936, 37.78822128437439 ], [ -122.4178272485733, 37.78814921457968 ], [ -122.41792380809784, 37.78813649637332 ], [ -122.41793990135193, 37.78821280557867 ], [ -122.41791307926178, 37.78821704497665 ], [ -122.41792380809784, 37.7882763965229 ], [ -122.41795063018799, 37.78827215712833 ], [ -122.41796135902405, 37.78834422680312 ], [ -122.41796135902405, 37.78834422680312 ], [ -122.41796135902405, 37.78834422680312 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42144286632538, 37.78845021149131 ], [ -122.42134630680084, 37.78846292964368 ], [ -122.42131412029266, 37.78829759349217 ], [ -122.42127656936646, 37.78814497517779 ], [ -122.421373128891, 37.78813225697071 ], [ -122.42142140865326, 37.78836118436342 ], [ -122.42144286632538, 37.78845021149128 ], [ -122.42144286632538, 37.78845021149128 ], [ -122.42144286632538, 37.78845021149131 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41218388080597, 37.78821280557867 ], [ -122.41189420223236, 37.788242481359454 ], [ -122.41187810897827, 37.788161932783865 ], [ -122.41216778755188, 37.78812801756788 ], [ -122.41218388080597, 37.78821280557867 ], [ -122.41218388080597, 37.78821280557867 ], [ -122.41218388080597, 37.78821280557867 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41074621677399, 37.78846292964368 ], [ -122.41026341915129, 37.78852652037268 ], [ -122.41018831729887, 37.788161932783865 ], [ -122.41067111492157, 37.78809834174111 ], [ -122.41074621677399, 37.78846292964368 ], [ -122.41074621677399, 37.78846292964368 ], [ -122.41074621677399, 37.78846292964368 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42171108722687, 37.78832302984724 ], [ -122.42163598537445, 37.788331508630314 ], [ -122.42159843444824, 37.78833998741243 ], [ -122.42151260375977, 37.78834846619357 ], [ -122.42142140865326, 37.788361184363445 ], [ -122.421373128891, 37.788132256970734 ], [ -122.4216628074646, 37.788089862931294 ], [ -122.42171108722687, 37.78832302984724 ], [ -122.42171108722687, 37.78832302984724 ], [ -122.42171108722687, 37.78832302984724 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41843342781067, 37.7882933540988 ], [ -122.41822957992555, 37.78831879045532 ], [ -122.41819202899934, 37.788106820549984 ], [ -122.41839587688446, 37.78808138412048 ], [ -122.41843342781067, 37.7882933540988 ], [ -122.41843342781067, 37.7882933540988 ], [ -122.41843342781067, 37.7882933540988 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41887867450714, 37.78834846619357 ], [ -122.41868555545807, 37.78836966314214 ], [ -122.41862118244171, 37.788047468867504 ], [ -122.41881966590881, 37.78802627182651 ], [ -122.41883039474487, 37.788085623525994 ], [ -122.4188357591629, 37.78812377816479 ], [ -122.41876602172852, 37.788132256970734 ], [ -122.41877138614655, 37.788161932783865 ], [ -122.41884112358092, 37.78815345398132 ], [ -122.41885185241698, 37.788225523771885 ], [ -122.41885721683501, 37.78823824196291 ], [ -122.41878747940062, 37.78824672075573 ], [ -122.41879284381865, 37.78826791773351 ], [ -122.41885721683501, 37.788259438943136 ], [ -122.41886258125304, 37.78828487531134 ], [ -122.4188786745071, 37.78834846619357 ], [ -122.4188786745071, 37.78834846619357 ], [ -122.41887867450714, 37.78834846619357 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41131484508514, 37.78839086008464 ], [ -122.410746216774, 37.78846292964368 ], [ -122.41067111492157, 37.78809834174111 ], [ -122.41123974323273, 37.78802627182651 ], [ -122.41131484508514, 37.78839086008464 ], [ -122.41131484508514, 37.78839086008464 ], [ -122.41131484508514, 37.78839086008464 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41655051708221, 37.78812377816479 ], [ -122.4164754152298, 37.788132256970734 ], [ -122.41645932197571, 37.788022032417594 ], [ -122.4165290594101, 37.788013553599 ], [ -122.41655051708221, 37.78812377816479 ], [ -122.41655051708221, 37.78812377816479 ], [ -122.41655051708221, 37.78812377816479 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41900205612183, 37.788331508630314 ], [ -122.41887867450714, 37.78834846619357 ], [ -122.41886258125305, 37.78828487531132 ], [ -122.4188894033432, 37.78828063591724 ], [ -122.41887867450714, 37.788221284374366 ], [ -122.41885185241699, 37.788225523771885 ], [ -122.41884112358093, 37.78815345398132 ], [ -122.41884112358093, 37.78814921457968 ], [ -122.41886258125305, 37.78814497517779 ], [ -122.41885185241699, 37.788085623525994 ], [ -122.41883039474487, 37.788085623525994 ], [ -122.41881966590881, 37.78802627182648 ], [ -122.41893768310548, 37.78800931418932 ], [ -122.41895377635956, 37.78808138412046 ], [ -122.41893231868744, 37.788085623525994 ], [ -122.41894841194153, 37.78816193278384 ], [ -122.4189645051956, 37.78815769338271 ], [ -122.41898059844969, 37.788221284374366 ], [ -122.41895914077757, 37.788225523771885 ], [ -122.41896986961363, 37.7882763965229 ], [ -122.41899132728575, 37.78827215712831 ], [ -122.41900205612181, 37.788331508630314 ], [ -122.41900205612181, 37.788331508630314 ], [ -122.41900205612183, 37.788331508630314 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4207991361618, 37.788106820549984 ], [ -122.42070257663727, 37.78812377816479 ], [ -122.42067575454713, 37.788005074779434 ], [ -122.42077767848969, 37.78799235654826 ], [ -122.4207991361618, 37.788106820549984 ], [ -122.4207991361618, 37.788106820549984 ], [ -122.4207991361618, 37.788106820549984 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41336941719055, 37.78825519954756 ], [ -122.41305828094482, 37.7882933540988 ], [ -122.41304218769073, 37.78819584798428 ], [ -122.41305828094482, 37.78819160858508 ], [ -122.41302609443665, 37.7880305112352 ], [ -122.41331577301025, 37.78799235654826 ], [ -122.41336941719055, 37.78825519954756 ], [ -122.41336941719055, 37.78825519954756 ], [ -122.41336941719055, 37.78825519954756 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41915762424469, 37.7883145510632 ], [ -122.41900205612183, 37.788331508630314 ], [ -122.41899132728577, 37.78827215712833 ], [ -122.4189805984497, 37.788221284374366 ], [ -122.41896450519562, 37.78815769338271 ], [ -122.41895377635956, 37.78808138412046 ], [ -122.41893768310548, 37.78800931418932 ], [ -122.41909325122833, 37.78799235654826 ], [ -122.41910934448242, 37.78808138412046 ], [ -122.4191415309906, 37.788221284374366 ], [ -122.41915762424469, 37.78831455106317 ], [ -122.41915762424469, 37.78831455106317 ], [ -122.41915762424469, 37.7883145510632 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42061138153076, 37.788132256970734 ], [ -122.42033779621124, 37.78817041158543 ], [ -122.42030560970306, 37.788022032417594 ], [ -122.42039680480957, 37.788009314189345 ], [ -122.42044508457184, 37.788000835369274 ], [ -122.4205094575882, 37.78799235654826 ], [ -122.42058455944061, 37.787983877726255 ], [ -122.42061138153076, 37.788132256970734 ], [ -122.42061138153076, 37.788132256970734 ], [ -122.42061138153076, 37.788132256970734 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41171717643738, 37.788479887176756 ], [ -122.41140067577362, 37.788518041611965 ], [ -122.4113792181015, 37.78842053579395 ], [ -122.41137385368347, 37.78839933885995 ], [ -122.41132020950317, 37.78840357824722 ], [ -122.41131484508514, 37.78839086008464 ], [ -122.41123974323273, 37.78802627182651 ], [ -122.41160988807678, 37.787975398903306 ], [ -122.41171717643738, 37.788479887176756 ], [ -122.41171717643738, 37.788479887176756 ], [ -122.41171717643738, 37.788479887176756 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41629302501678, 37.78815769338271 ], [ -122.41621792316435, 37.788166172184766 ], [ -122.41618573665617, 37.787975398903285 ], [ -122.4162608385086, 37.78796692007934 ], [ -122.41629302501678, 37.78815769338271 ], [ -122.41629302501678, 37.78815769338271 ], [ -122.41629302501678, 37.78815769338271 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.419393658638, 37.78828487531132 ], [ -122.4191576242447, 37.7883145510632 ], [ -122.41914153099061, 37.78822128437439 ], [ -122.41916298866273, 37.78822128437439 ], [ -122.41913616657259, 37.7880771447147 ], [ -122.41910934448246, 37.78808138412048 ], [ -122.41909325122838, 37.78799235654826 ], [ -122.41932392120366, 37.78796268066702 ], [ -122.41934001445775, 37.78805170827497 ], [ -122.41931855678563, 37.7880559476822 ], [ -122.41934537887578, 37.788200087383245 ], [ -122.41937756538395, 37.78819584798428 ], [ -122.41937756538395, 37.78822128437439 ], [ -122.41939365863801, 37.78828487531134 ], [ -122.41939365863801, 37.78828487531134 ], [ -122.419393658638, 37.78828487531132 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42295563220978, 37.78827215712833 ], [ -122.42219388484955, 37.788373902531134 ], [ -122.42212951183318, 37.78805170827497 ], [ -122.42288589477538, 37.78794996242857 ], [ -122.42295563220976, 37.78827215712833 ], [ -122.42295563220976, 37.78827215712833 ], [ -122.42295563220978, 37.78827215712833 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4195545911789, 37.78826367833844 ], [ -122.419393658638, 37.78828487531134 ], [ -122.41937756538391, 37.78822128437439 ], [ -122.41940438747406, 37.78821704497665 ], [ -122.41937756538391, 37.78807290530868 ], [ -122.41934537887573, 37.7880771447147 ], [ -122.4193400144577, 37.78805170827497 ], [ -122.41932392120363, 37.78796268066702 ], [ -122.4194473028183, 37.78794996242857 ], [ -122.41949021816255, 37.78794996242857 ], [ -122.41951167583467, 37.78804322945978 ], [ -122.41948485374452, 37.78804322945978 ], [ -122.4195170402527, 37.78821280557867 ], [ -122.41954386234285, 37.788208566180444 ], [ -122.41955459117891, 37.78826367833844 ], [ -122.41955459117891, 37.78826367833844 ], [ -122.4195545911789, 37.78826367833844 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4205094575882, 37.78799235654826 ], [ -122.42044508457184, 37.788000835369274 ], [ -122.42044508457184, 37.78798811713739 ], [ -122.42039680480957, 37.78799235654826 ], [ -122.42039680480957, 37.788009314189345 ], [ -122.42030560970306, 37.788022032417594 ], [ -122.420294880867, 37.78796268066702 ], [ -122.42042362689972, 37.78794996242857 ], [ -122.42049872875215, 37.78794996242857 ], [ -122.42050409317017, 37.787979638314894 ], [ -122.4205094575882, 37.78799235654826 ], [ -122.4205094575882, 37.78799235654826 ], [ -122.4205094575882, 37.78799235654826 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42315411567688, 37.788242481359454 ], [ -122.42295563220978, 37.78826791773351 ], [ -122.42288589477539, 37.78794996242857 ], [ -122.42291271686554, 37.78794996242857 ], [ -122.42309510707854, 37.78794996242857 ], [ -122.42315411567687, 37.788242481359454 ], [ -122.42315411567687, 37.788242481359454 ], [ -122.42315411567688, 37.788242481359454 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41207659244537, 37.788085623525994 ], [ -122.41186738014221, 37.78811105995404 ], [ -122.41183519363403, 37.78794996242857 ], [ -122.41184055805206, 37.78794996242857 ], [ -122.41205513477325, 37.78794996242857 ], [ -122.41207659244537, 37.788085623525994 ], [ -122.41207659244537, 37.788085623525994 ], [ -122.41207659244537, 37.788085623525994 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41972625255585, 37.788242481359454 ], [ -122.4195545911789, 37.78826367833844 ], [ -122.41954386234283, 37.788208566180444 ], [ -122.41951167583466, 37.78804322945978 ], [ -122.41949021816254, 37.78794996242857 ], [ -122.41966724395752, 37.78794996242857 ], [ -122.41967797279358, 37.788005074779434 ], [ -122.41970479488371, 37.78814921457968 ], [ -122.41972625255583, 37.788242481359454 ], [ -122.41972625255583, 37.788242481359454 ], [ -122.41972625255585, 37.788242481359454 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4164754152298, 37.788132256970734 ], [ -122.41638422012329, 37.788144975177815 ], [ -122.4163466691971, 37.78794996242857 ], [ -122.41644322872163, 37.78794996242857 ], [ -122.41647541522981, 37.788132256970734 ], [ -122.41647541522981, 37.788132256970734 ], [ -122.4164754152298, 37.788132256970734 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41668999195099, 37.788106820549984 ], [ -122.4165505170822, 37.78812377816479 ], [ -122.41651833057402, 37.78794996242857 ], [ -122.41666316986083, 37.78794996242857 ], [ -122.41668999195097, 37.788106820549984 ], [ -122.41668999195097, 37.788106820549984 ], [ -122.41668999195099, 37.788106820549984 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41220533847809, 37.78807290530868 ], [ -122.4120819568634, 37.788085623525994 ], [ -122.41205513477325, 37.78794996242857 ], [ -122.41217851638794, 37.78794996242857 ], [ -122.41220533847809, 37.78807290530868 ], [ -122.41220533847809, 37.78807290530868 ], [ -122.41220533847809, 37.78807290530868 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41638422012329, 37.78814497517779 ], [ -122.41629302501678, 37.78815345398132 ], [ -122.41625547409059, 37.78794996242854 ], [ -122.4163466691971, 37.78794996242854 ], [ -122.41638422012329, 37.78814497517779 ], [ -122.41638422012329, 37.78814497517779 ], [ -122.41638422012329, 37.78814497517779 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41236627101898, 37.78805170827497 ], [ -122.41220533847809, 37.78807290530868 ], [ -122.41218388080597, 37.78794996242857 ], [ -122.41234481334686, 37.78794996242857 ], [ -122.41236627101898, 37.78805170827497 ], [ -122.41236627101898, 37.78805170827497 ], [ -122.41236627101898, 37.78805170827497 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42349207401276, 37.78819584798428 ], [ -122.42315411567688, 37.788242481359454 ], [ -122.42309510707855, 37.78794996242857 ], [ -122.42343842983246, 37.78794996242857 ], [ -122.42349207401276, 37.78819584798428 ], [ -122.42349207401276, 37.78819584798428 ], [ -122.42349207401276, 37.78819584798428 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42010176181793, 37.78819584798428 ], [ -122.41972625255585, 37.788242481359454 ], [ -122.41970479488373, 37.78814921457968 ], [ -122.41974234580994, 37.788144975177815 ], [ -122.41971552371979, 37.788000835369274 ], [ -122.4196779727936, 37.788005074779434 ], [ -122.41966724395753, 37.78794996242857 ], [ -122.42005348205568, 37.78794996242857 ], [ -122.42010176181793, 37.78819584798428 ], [ -122.42010176181793, 37.78819584798428 ], [ -122.42010176181793, 37.78819584798428 ], [ -122.41993546485901, 37.78811529935787 ], [ -122.41990327835083, 37.787979638314894 ], [ -122.41985499858858, 37.78798811713739 ], [ -122.41988718509675, 37.78812377816479 ], [ -122.41993546485901, 37.78811529935787 ], [ -122.41993546485901, 37.78811529935787 ], [ -122.42010176181793, 37.78819584798428 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41254329681396, 37.7880305112352 ], [ -122.41239845752716, 37.788047468867504 ], [ -122.41238236427309, 37.78794996242857 ], [ -122.41252720355989, 37.78794996242857 ], [ -122.41254329681396, 37.7880305112352 ], [ -122.41254329681396, 37.7880305112352 ], [ -122.41254329681396, 37.7880305112352 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41268277168274, 37.78801355359897 ], [ -122.41254329681395, 37.7880305112352 ], [ -122.41252720355988, 37.78794996242857 ], [ -122.41266667842865, 37.78794996242857 ], [ -122.41268277168274, 37.788013553599 ], [ -122.41268277168274, 37.788013553599 ], [ -122.41268277168274, 37.78801355359897 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41276323795319, 37.788005074779434 ], [ -122.41268277168275, 37.78801355359897 ], [ -122.4126720428467, 37.78794996242854 ], [ -122.41275250911713, 37.78794996242854 ], [ -122.41276323795319, 37.788005074779434 ], [ -122.41276323795319, 37.788005074779434 ], [ -122.41276323795319, 37.788005074779434 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42042362689972, 37.78794996242857 ], [ -122.420294880867, 37.78796268066702 ], [ -122.42028951644897, 37.78794996242857 ], [ -122.42042362689972, 37.78794996242857 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42057919502258, 37.78797115949147 ], [ -122.42050409317017, 37.787979638314894 ], [ -122.42049872875215, 37.78794996242857 ], [ -122.42057383060457, 37.78794996242857 ], [ -122.42057919502258, 37.78797115949147 ], [ -122.42057919502258, 37.78797115949147 ], [ -122.42057919502258, 37.78797115949147 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41301000118256, 37.78797115949147 ], [ -122.41279542446136, 37.78799659595888 ], [ -122.4127846956253, 37.78794996242857 ], [ -122.41300463676454, 37.78794996242857 ], [ -122.41301000118256, 37.78797115949147 ], [ -122.41301000118256, 37.78797115949147 ], [ -122.41301000118256, 37.78797115949147 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42070257663727, 37.78812377816479 ], [ -122.42061138153076, 37.788132256970734 ], [ -122.42058455944063, 37.787983877726255 ], [ -122.4205791950226, 37.78797115949147 ], [ -122.4205738306046, 37.78794996242857 ], [ -122.42066502571107, 37.78794996242857 ], [ -122.42067575454713, 37.788005074779434 ], [ -122.42070257663728, 37.78812377816479 ], [ -122.42070257663728, 37.78812377816479 ], [ -122.42070257663727, 37.78812377816479 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41314947605133, 37.78795420184161 ], [ -122.41301000118254, 37.78797115949147 ], [ -122.41300463676453, 37.78794996242857 ], [ -122.41314947605133, 37.78794996242857 ], [ -122.41314947605133, 37.78795420184161 ], [ -122.41314947605133, 37.78795420184161 ], [ -122.41314947605133, 37.78795420184161 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42077767848969, 37.78799235654826 ], [ -122.42067575454713, 37.788005074779434 ], [ -122.42066502571106, 37.78794996242857 ], [ -122.42076694965363, 37.78794996242857 ], [ -122.42077767848969, 37.78799235654826 ], [ -122.42077767848969, 37.78799235654826 ], [ -122.42077767848969, 37.78799235654826 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41320312023163, 37.78794996242857 ], [ -122.41314947605133, 37.78795420184161 ], [ -122.41314947605133, 37.78794996242857 ], [ -122.41320312023163, 37.78794996242857 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42093861103058, 37.788089862931294 ], [ -122.4207991361618, 37.788106820549984 ], [ -122.42077767848967, 37.78799235654826 ], [ -122.42076694965361, 37.78794996242857 ], [ -122.42091178894042, 37.78794996242857 ], [ -122.42093861103056, 37.788089862931294 ], [ -122.42093861103056, 37.788089862931294 ], [ -122.42093861103058, 37.788089862931294 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4104779958725, 37.78794996242857 ], [ -122.41015613079071, 37.78798811713739 ], [ -122.41014540195465, 37.78794996242857 ], [ -122.4104779958725, 37.78794996242857 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42123365402222, 37.78805170827497 ], [ -122.42093861103058, 37.788089862931294 ], [ -122.42091178894043, 37.78794996242857 ], [ -122.4212121963501, 37.78794996242857 ], [ -122.42123365402222, 37.78805170827497 ], [ -122.42123365402222, 37.78805170827497 ], [ -122.42123365402222, 37.78805170827497 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.42164671421051, 37.788000835369274 ], [ -122.42123365402222, 37.78805170827499 ], [ -122.4212121963501, 37.78794996242857 ], [ -122.42163598537445, 37.78794996242857 ], [ -122.42164671421051, 37.788000835369296 ], [ -122.42164671421051, 37.788000835369296 ], [ -122.42164671421051, 37.788000835369274 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40990936756134, 37.78799659595888 ], [ -122.4095606803894, 37.78803899005183 ], [ -122.40954458713531, 37.78794996242857 ], [ -122.40950167179108, 37.78794996242857 ], [ -122.40989863872528, 37.78794996242857 ], [ -122.40990936756134, 37.78799659595888 ], [ -122.40990936756134, 37.78799659595888 ], [ -122.40990936756134, 37.78799659595888 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41431891918182, 37.78802627182651 ], [ -122.41402387619019, 37.78806442649594 ], [ -122.41400241851807, 37.78794996242857 ], [ -122.41430282592772, 37.78794996242857 ], [ -122.41431891918181, 37.78802627182651 ], [ -122.41431891918181, 37.78802627182651 ], [ -122.41431891918182, 37.78802627182651 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41458177566528, 37.78795844125444 ], [ -122.41441011428833, 37.787983877726255 ], [ -122.41439938545227, 37.78794996242857 ], [ -122.41457641124725, 37.78794996242857 ], [ -122.41458177566527, 37.78795844125444 ], [ -122.41458177566527, 37.78795844125444 ], [ -122.41458177566528, 37.78795844125444 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41813838481903, 37.787983877726255 ], [ -122.41792917251587, 37.788009314189345 ], [ -122.41791844367981, 37.78794996242857 ], [ -122.41813302040099, 37.78794996242857 ], [ -122.41813838481902, 37.787983877726255 ], [ -122.41813838481902, 37.787983877726255 ], [ -122.41813838481903, 37.787983877726255 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.40951776504517, 37.78804322945978 ], [ -122.40950167179108, 37.788047468867504 ], [ -122.40950167179108, 37.78794996242857 ], [ -122.40950167179108, 37.78795844125444 ], [ -122.40951776504517, 37.78804322945978 ], [ -122.40951776504517, 37.78804322945978 ], [ -122.40951776504517, 37.78804322945978 ] ] ] }, "properties": {} }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41784870624542, 37.796335045920344 ], [ -122.41178691387177, 37.797110766421454 ], [ -122.41127192974089, 37.7971785885917 ] ] }, "properties": { "class": "main", "layer": -1, "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.411288022995, 37.797254888458816 ], [ -122.41180300712585, 37.797187066358596 ], [ -122.41785407066345, 37.79641558558629 ] ] }, "properties": { "class": "main", "layer": -1, "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41441011428833, 37.79789071761994 ] }, "properties": { "class": "turning_circle" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42340624332428, 37.801023156054995 ] }, "properties": { "class": "turning_circle" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4150002002716, 37.80457507030913 ], [ -122.41506457328796, 37.80485056964608 ], [ -122.41512894630434, 37.805248982254014 ] ] }, "properties": { "class": "street_limited", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40991473197937, 37.79367718768535 ], [ -122.40993618965149, 37.793804360113924 ] ] }, "properties": { "class": "street_limited", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [ -122.41068184375763, 37.79168903025815 ], [ -122.41062283515932, 37.79175685740575 ], [ -122.41042435169221, 37.791778053376625 ], [ -122.41041898727418, 37.79173566142882 ], [ -122.41057991981508, 37.79156185418857 ], [ -122.41064429283146, 37.791553375776175 ], [ -122.41065502166752, 37.791553375776175 ], [ -122.41068184375764, 37.79168903025815 ], [ -122.41068184375764, 37.79168903025815 ], [ -122.41068184375763, 37.79168903025815 ] ] ] }, "properties": { "class": "street_limited", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41658806800842, 37.79902671876394 ], [ -122.41568148136139, 37.79914540444266 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41773068904877, 37.799874469428296 ], [ -122.41826176643372, 37.799781217331464 ], [ -122.41855680942535, 37.799743068712466 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41544544696808, 37.79176533579482 ], [ -122.41552591323853, 37.7921807756676 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42077767848969, 37.79047660949114 ], [ -122.42078840732574, 37.790531719957585 ], [ -122.42080450057983, 37.79061226595001 ], [ -122.4208152294159, 37.790671615572435 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41262376308441, 37.80209976863108 ], [ -122.41266667842865, 37.80205738260592 ], [ -122.41273105144501, 37.80200228073689 ], [ -122.4127846956253, 37.80195565604636 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43091642856598, 37.79113369314532 ], [ -122.4315655231476, 37.79104466925053 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41214096546173, 37.80220573358751 ], [ -122.4121570587158, 37.80230322121314 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4129992723465, 37.80210400723224 ], [ -122.41295099258423, 37.8020743370189 ], [ -122.41288125514986, 37.8020234737683 ], [ -122.41286516189577, 37.80201499655647 ], [ -122.41278469562532, 37.80195565604636 ], [ -122.41270422935487, 37.801904792714005 ], [ -122.41265594959263, 37.801866645191794 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41209268569946, 37.8019810876994 ], [ -122.41214096546173, 37.80220573358751 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41576731204987, 37.78929384418857 ], [ -122.41574585437775, 37.78917938202556 ], [ -122.41569757461548, 37.7889504571676 ], [ -122.4157726764679, 37.78894197845551 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41216778755188, 37.792227406527935 ], [ -122.412189245224, 37.79222316736003 ], [ -122.41219997406006, 37.7922146890235 ], [ -122.41221070289612, 37.79220621068598 ], [ -122.41222143173218, 37.792197732347496 ], [ -122.41222679615021, 37.792185014837955 ], [ -122.41222679615021, 37.792172297326196 ], [ -122.41222679615021, 37.79215957981227 ], [ -122.41222143173218, 37.79214262312365 ], [ -122.41221070289612, 37.79212990560461 ], [ -122.41219997406006, 37.79212142725738 ], [ -122.412189245224, 37.79211718808339 ], [ -122.41217315196992, 37.79211294890915 ], [ -122.41215705871583, 37.79210870973468 ], [ -122.41214632987977, 37.79210870973468 ], [ -122.41212487220766, 37.79211294890915 ], [ -122.41210877895357, 37.79212142725738 ], [ -122.4120980501175, 37.79212990560461 ], [ -122.4120926856995, 37.79213838395086 ], [ -122.41208195686345, 37.79215534064047 ], [ -122.41208195686345, 37.792163818983845 ], [ -122.41208195686345, 37.7921807756676 ], [ -122.41208732128145, 37.79219349317789 ], [ -122.4120980501175, 37.79220621068598 ], [ -122.41210877895357, 37.7922146890235 ], [ -122.41212487220766, 37.79222316736003 ], [ -122.41213560104372, 37.79222316736003 ], [ -122.4121516942978, 37.792227406527935 ], [ -122.41216778755188, 37.792227406527935 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41856217384338, 37.80407916891281 ], [ -122.41857290267944, 37.80414274620098 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42814838886261, 37.791498266071706 ], [ -122.42822349071504, 37.7918458804425 ], [ -122.42822349071504, 37.791985773569245 ], [ -122.42816984653473, 37.79221044985483 ], [ -122.42812693119049, 37.79226979819359 ], [ -122.4280893802643, 37.792392733886466 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41522550582886, 37.799687965116924 ], [ -122.41532742977142, 37.80016694115013 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41021513938904, 37.80060776590507 ], [ -122.4101722240448, 37.800637436707525 ], [ -122.41009175777435, 37.8006331980222 ], [ -122.41001665592194, 37.80061200459185 ], [ -122.4099415540695, 37.80055690164453 ], [ -122.40989327430725, 37.8005357081923 ], [ -122.40979135036469, 37.80053994688323 ], [ -122.40966796875, 37.80055690164453 ], [ -122.40963578224182, 37.80056961771293 ], [ -122.4095606803894, 37.800620481964714 ], [ -122.40952849388123, 37.80065015276208 ], [ -122.40950167179108, 37.80067982354754 ], [ -122.40945875644684, 37.800760358476495 ], [ -122.40945339202881, 37.80081969994693 ], [ -122.40945875644684, 37.800849370664245 ], [ -122.40948021411896, 37.80095109874748 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43000447750092, 37.80373585061088 ], [ -122.4299830198288, 37.80362564933614 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40948021411896, 37.80095109874748 ], [ -122.40954995155334, 37.80103163338067 ], [ -122.40965187549591, 37.80109097463317 ], [ -122.40977525711058, 37.80112064524154 ], [ -122.4098879098892, 37.80112064524154 ], [ -122.41000592708588, 37.80112064524154 ], [ -122.41010248661041, 37.801116406583915 ], [ -122.41011857986449, 37.80119270238364 ], [ -122.41014003753662, 37.80128171405037 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41630375385284, 37.8038630057236 ], [ -122.41663098335266, 37.80382062071034 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41010248661041, 37.801116406583915 ], [ -122.41012394428253, 37.80107825865449 ], [ -122.41018295288086, 37.801023156054995 ], [ -122.41027414798735, 37.80096805341439 ], [ -122.4103707075119, 37.80097653074639 ], [ -122.41045653820038, 37.80099772407214 ], [ -122.41050481796265, 37.80103163338067 ], [ -122.41052627563477, 37.8010824973143 ], [ -122.41053164005278, 37.80113759986951 ], [ -122.41054773330687, 37.80123085025394 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41392731666565, 37.798958898290465 ], [ -122.41461396217346, 37.798891077754746 ], [ -122.41466760635376, 37.79884021231206 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41780042648315, 37.801256282156544 ], [ -122.41832077503204, 37.80117998642249 ], [ -122.41840660572053, 37.801196941036885 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41903424263, 37.80279489597278 ], [ -122.41907715797424, 37.80301530083702 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41468906402588, 37.799276806221656 ], [ -122.41402924060822, 37.79937005895526 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41283297538757, 37.7980772264691 ], [ -122.41373419761658, 37.797950061395746 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43018686771393, 37.803684988504514 ], [ -122.43017077445985, 37.803600218249386 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42754757404327, 37.79150250528121 ], [ -122.42752611637115, 37.79141348183073 ], [ -122.42750465869904, 37.79135413280419 ], [ -122.42748320102692, 37.79133293671171 ], [ -122.42748856544493, 37.79126086995186 ], [ -122.42749929428099, 37.791171846210275 ], [ -122.42747247219086, 37.791095540060674 ], [ -122.42748320102692, 37.79098955916663 ], [ -122.42747783660889, 37.79081151092244 ], [ -122.42745101451874, 37.79066737631527 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42038607597351, 37.801035872043144 ], [ -122.42086350917816, 37.800993485407474 ], [ -122.42109417915344, 37.800938382744725 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4287760257721, 37.7914261994731 ], [ -122.428759932518, 37.79132869749249 ], [ -122.42874383926393, 37.791235434608055 ], [ -122.42871701717378, 37.79109130082786 ], [ -122.42874920368196, 37.79090477434197 ], [ -122.42887258529665, 37.79072672589345 ], [ -122.42901742458345, 37.79055715554363 ], [ -122.42909252643587, 37.79045965241627 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41243064403534, 37.799764262392124 ], [ -122.41245210170746, 37.79976002365667 ], [ -122.41256475448608, 37.79976002365667 ], [ -122.41301000118256, 37.7996922038565 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42600798606873, 37.79188403313969 ], [ -122.42613136768341, 37.79187555476423 ], [ -122.42628157138824, 37.791837402062676 ], [ -122.42637276649475, 37.791807727725605 ], [ -122.42647469043732, 37.79176957498901 ], [ -122.42660343647003, 37.79170598705089 ], [ -122.4267429113388, 37.791650877460256 ], [ -122.42686092853548, 37.79163815985657 ], [ -122.42695212364197, 37.79163815985657 ], [ -122.42705941200258, 37.79162544225071 ], [ -122.4271720647812, 37.79162120304828 ], [ -122.4272793531418, 37.79158728941997 ], [ -122.4273866415024, 37.791549136569564 ], [ -122.42754757404332, 37.79150250528116 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42009103298187, 37.795987452670616 ], [ -122.4197906255722, 37.79603408112835 ], [ -122.41968333721161, 37.79604679797535 ], [ -122.4194473028183, 37.796084948503236 ], [ -122.41934537887575, 37.796097665341506 ], [ -122.41930246353151, 37.796097665341506 ], [ -122.41927027702332, 37.79609342639566 ], [ -122.4192649126053, 37.796072231662805 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42216169834137, 37.80196413326501 ], [ -122.42217779159546, 37.80193446299548 ], [ -122.42214024066925, 37.80175220250688 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41555273532867, 37.79338469026892 ], [ -122.41562247276306, 37.79369414402182 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42816984653473, 37.792210449854856 ], [ -122.42798745632172, 37.79224012403017 ], [ -122.4276602268219, 37.792282515688555 ], [ -122.426598072052, 37.792422407988575 ], [ -122.42638885974884, 37.792439364613 ], [ -122.42636740207672, 37.79232490732258 ], [ -122.4263834953308, 37.79226979819359 ], [ -122.42645323276518, 37.792227406527935 ], [ -122.42648541927336, 37.792176536497024 ], [ -122.42650151252745, 37.79211294890915 ], [ -122.42651224136351, 37.791990012750766 ], [ -122.42651760578151, 37.7919094682602 ], [ -122.42651760578151, 37.79181620610884 ], [ -122.42647469043727, 37.79176957498901 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41297245025635, 37.79691577733512 ], [ -122.41272032260893, 37.79694121072341 ], [ -122.41269886493681, 37.79691577733512 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43190348148346, 37.801569941568545 ], [ -122.43186056613922, 37.801374964252865 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43188202381134, 37.80324842065075 ], [ -122.43183374404907, 37.803028016482195 ], [ -122.43186056613922, 37.802909337042074 ], [ -122.43186056613922, 37.80279913453407 ], [ -122.43186056613922, 37.802663500452326 ], [ -122.43184983730316, 37.80251938896754 ], [ -122.43177473545074, 37.80245157170093 ], [ -122.43168890476227, 37.80239223154159 ], [ -122.43162453174591, 37.802379515786946 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43184983730316, 37.80251938896754 ], [ -122.43188202381134, 37.802413424461115 ], [ -122.43186593055727, 37.80231169839192 ], [ -122.43175327777864, 37.8022438809346 ], [ -122.43167817592622, 37.80231169839192 ], [ -122.43162453174591, 37.802379515786946 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43186593055725, 37.80231169839192 ], [ -122.43193566799162, 37.80226507389672 ], [ -122.43198394775389, 37.8022438809346 ], [ -122.43198394775389, 37.80212096163453 ], [ -122.43197858333588, 37.80209976863108 ], [ -122.43189275264739, 37.801667430033376 ], [ -122.43190348148345, 37.801569941568545 ], [ -122.43198394775389, 37.801569941568545 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43175327777863, 37.8022438809346 ], [ -122.43165135383606, 37.80216758622069 ], [ -122.43153870105743, 37.80209553002967 ], [ -122.4314421415329, 37.80209553002967 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43175327777863, 37.8022438809346 ], [ -122.43171036243439, 37.80201923516251 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42945194244385, 37.792218928191865 ], [ -122.42922127246857, 37.7921087097347 ], [ -122.42913544178008, 37.792049361266564 ], [ -122.42907106876372, 37.79200696947442 ], [ -122.4289584159851, 37.79188827232706 ], [ -122.42882966995238, 37.79171446544581 ], [ -122.42877602577208, 37.79142619947307 ], [ -122.42927491664885, 37.79134141514943 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42907106876373, 37.79200696947442 ], [ -122.42879211902618, 37.79199849111306 ], [ -122.42856681346895, 37.79202816537352 ], [ -122.42836296558382, 37.79208751385868 ], [ -122.42816984653474, 37.792210449854856 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42887258529663, 37.79072672589345 ], [ -122.42870092391968, 37.790786075423945 ], [ -122.42849171161652, 37.79083694641218 ], [ -122.42823421955109, 37.79085390340045 ], [ -122.42795526981354, 37.79083694641218 ], [ -122.42765486240387, 37.79074792215984 ], [ -122.42754757404327, 37.79065889780023 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41269886493683, 37.79691577733512 ], [ -122.41260766983032, 37.79691577733512 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41510212421417, 37.79343132036943 ], [ -122.41517186164856, 37.793770447487695 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40998446941376, 37.79419435419653 ], [ -122.40990400314332, 37.793808599191095 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41517186164856, 37.793770447487695 ], [ -122.41522014141083, 37.79402903086939 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41222143173218, 37.79248175615706 ], [ -122.41243064403534, 37.79245208207878 ], [ -122.41237163543703, 37.79214262312365 ], [ -122.41230726242067, 37.79184164125269 ], [ -122.41209805011749, 37.79186707638781 ], [ -122.41188883781433, 37.79189251151417 ], [ -122.41194784641266, 37.792197732347496 ], [ -122.41201221942902, 37.7925071910718 ], [ -122.41222143173218, 37.79248175615706 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41255939006805, 37.79211718808339 ], [ -122.41243600845337, 37.79213414477786 ], [ -122.41237163543701, 37.79214262312365 ], [ -122.41222679615021, 37.79215957981227 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4120819568634, 37.7921807756676 ], [ -122.41194784641266, 37.792197732347496 ], [ -122.41187810897827, 37.79220621068598 ], [ -122.41181910037996, 37.792210449854856 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4122428894043, 37.79259197405775 ], [ -122.41223216056824, 37.79254110427786 ], [ -122.41222143173218, 37.79248175615703 ], [ -122.41216778755188, 37.79222740652791 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41214632987976, 37.7921087097347 ], [ -122.41212487220764, 37.79200273029387 ], [ -122.41211950778961, 37.79196457765796 ], [ -122.41209805011749, 37.79186707638783 ], [ -122.41208195686342, 37.79179501014891 ], [ -122.4120604991913, 37.791684791059375 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41223216056824, 37.791990012750766 ], [ -122.41212487220764, 37.79200273029387 ], [ -122.41201758384705, 37.79201544783479 ], [ -122.41200685501099, 37.79201544783479 ], [ -122.41200149059296, 37.79201120865472 ], [ -122.41199612617494, 37.79201120865472 ], [ -122.41199076175691, 37.79200273029387 ], [ -122.41199076175691, 37.79199849111309 ], [ -122.41199076175691, 37.791990012750766 ], [ -122.41199612617494, 37.791985773569245 ], [ -122.41199612617494, 37.791981534387475 ], [ -122.412006855011, 37.79197729520547 ], [ -122.41211950778961, 37.79196457765796 ], [ -122.41222143173218, 37.79195186010829 ], [ -122.41223216056824, 37.79195186010829 ], [ -122.4122428894043, 37.79195186010829 ], [ -122.41225361824036, 37.79196033847499 ], [ -122.41225361824036, 37.79196457765796 ], [ -122.41225898265839, 37.79197305602321 ], [ -122.41225361824036, 37.79197729520547 ], [ -122.41224825382234, 37.791985773569245 ], [ -122.41223752498628, 37.791990012750766 ], [ -122.41223216056825, 37.791990012750766 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41318702697754, 37.797742357971856 ], [ -122.41366982460022, 37.79767029746383 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41283297538757, 37.7980772264691 ], [ -122.41287052631378, 37.79842480988598 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41753220558167, 37.79990837925248 ], [ -122.41773068904877, 37.799874469428296 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42162525653839, 37.804036784023594 ], [ -122.42172718048096, 37.80449030107562 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43004739284515, 37.8056431543148 ], [ -122.42999911308289, 37.80569401507263 ], [ -122.42997229099275, 37.80571096865078 ], [ -122.42945194244386, 37.80571096865078 ], [ -122.42941975593568, 37.80567282309445 ], [ -122.42938220500947, 37.80561348552322 ], [ -122.42934465408327, 37.8055202406721 ], [ -122.42931783199315, 37.805473618202406 ], [ -122.42921590805058, 37.805397326824874 ], [ -122.42914080619816, 37.805325273784824 ], [ -122.4290978908539, 37.805274412773024 ], [ -122.42907106876378, 37.80522355172624 ], [ -122.42905497550969, 37.80516845221935 ], [ -122.42905497550969, 37.805104875814145 ], [ -122.42906033992772, 37.805041299354215 ], [ -122.42908179759984, 37.80496924596682 ], [ -122.42912471294407, 37.804905669390145 ], [ -122.42916762828831, 37.80485056964608 ], [ -122.42921054363255, 37.80481242364534 ], [ -122.42927491664891, 37.80477427762488 ], [ -122.4293285608292, 37.80475732383168 ], [ -122.42970407009129, 37.80471070088035 ], [ -122.42973625659948, 37.80481666209083 ], [ -122.42973625659948, 37.80486328497526 ], [ -122.42971479892736, 37.804909907830286 ], [ -122.42968797683722, 37.804952292218374 ], [ -122.429650425911, 37.80499043814688 ], [ -122.42957532405859, 37.80504553778657 ], [ -122.42956459522253, 37.805075206806336 ], [ -122.42956459522253, 37.805104875814145 ], [ -122.42954313755041, 37.8051260679553 ], [ -122.42952704429632, 37.80514726009035 ], [ -122.42952167987832, 37.805189644342235 ], [ -122.42952167987832, 37.80528288961077 ], [ -122.42951631546029, 37.805325273784796 ], [ -122.42950022220622, 37.805367657934546 ], [ -122.42946803569802, 37.805405803648476 ], [ -122.42941975593577, 37.805435472523484 ], [ -122.4293178319932, 37.805473618202406 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43154406547546, 37.805087922096874 ], [ -122.43141531944273, 37.80505825308222 ], [ -122.43129730224608, 37.80502010718875 ], [ -122.4311739206314, 37.80496924596682 ], [ -122.43113100528716, 37.80493957690451 ], [ -122.43109881877898, 37.804905669390145 ], [ -122.43107736110686, 37.80485056964608 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43102371692657, 37.805189644342235 ], [ -122.43106126785277, 37.80513878323706 ], [ -122.4311739206314, 37.80496924596682 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43117392063141, 37.80496924596682 ], [ -122.43137240409851, 37.80468950862004 ], [ -122.4314421415329, 37.804592024144156 ], [ -122.43147432804108, 37.804524208780705 ], [ -122.4314957857132, 37.804456393354975 ], [ -122.43150115013123, 37.8044012932757 ], [ -122.4314957857132, 37.80432076231669 ], [ -122.43146896362305, 37.80415546165202 ], [ -122.43146359920503, 37.8040876458877 ], [ -122.43147432804109, 37.804036784023594 ], [ -122.43149042129518, 37.80399016061739 ], [ -122.43152260780336, 37.80395201417221 ], [ -122.43157088756561, 37.80390962921005 ], [ -122.43159234523773, 37.803888436719845 ], [ -122.43160843849182, 37.80385876722335 ], [ -122.43161916732788, 37.80381214370476 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42163062095642, 37.80375280463857 ], [ -122.42167890071869, 37.80377823567278 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41783261299133, 37.79839937700852 ], [ -122.41792917251588, 37.79886564503779 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42038607597351, 37.801035872043144 ], [ -122.41945266723633, 37.801146077182054 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41840660572052, 37.804083407400384 ], [ -122.41833150386809, 37.804087645887726 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42214024066925, 37.80175220250688 ], [ -122.42212414741518, 37.801658952780684 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41309583187103, 37.80243885595654 ], [ -122.41294026374817, 37.802332891334544 ], [ -122.41286516189575, 37.80227778967103 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41478562355042, 37.80023052180601 ], [ -122.41487681865692, 37.80067982354754 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41537570953369, 37.80438433939691 ], [ -122.41515576839447, 37.80440553174483 ], [ -122.4151396751404, 37.80428685451822 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41539180278778, 37.80452844724276 ], [ -122.41518259048462, 37.80454963954931 ], [ -122.4152684211731, 37.80499043814688 ], [ -122.4153220653534, 37.80521507488171 ], [ -122.41533815860748, 37.80533798903228 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41480708122253, 37.80460050106022 ], [ -122.41500020027159, 37.80457507030913 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41505920886993, 37.80378671268225 ], [ -122.41509675979614, 37.80374008911817 ], [ -122.41515040397644, 37.803668034461275 ], [ -122.41518259048462, 37.80362141082225 ], [ -122.41506457328796, 37.80352392493655 ], [ -122.41496801376341, 37.803464585638736 ], [ -122.41484463214873, 37.80337981513064 ], [ -122.41472125053406, 37.80330352159015 ], [ -122.41469442844391, 37.8033586224884 ], [ -122.41467297077179, 37.80340100776679 ], [ -122.4146568775177, 37.80343915449654 ], [ -122.41464078426363, 37.80348153972872 ], [ -122.4147266149521, 37.80356631012008 ], [ -122.41478562355043, 37.80362988784974 ], [ -122.41483390331268, 37.80365955743819 ], [ -122.41488218307495, 37.803680749994065 ], [ -122.41491973400116, 37.80370194254389 ], [ -122.41493582725523, 37.80371465807083 ], [ -122.41505920886992, 37.80378671268225 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41532742977142, 37.80016694115013 ], [ -122.41478562355042, 37.80023052180601 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42172718048096, 37.80449030107562 ], [ -122.42174863815308, 37.80457507030913 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4150002002716, 37.80457507030913 ], [ -122.41498410701753, 37.80449030107562 ], [ -122.41497337818147, 37.80442672408664 ], [ -122.41504311561584, 37.80441824715063 ], [ -122.41505920886993, 37.80441824715063 ], [ -122.41508066654205, 37.804414008682265 ], [ -122.41515576839447, 37.804405531744806 ], [ -122.41516649723053, 37.804469108752045 ], [ -122.41518259048462, 37.80454963954928 ], [ -122.4151074886322, 37.8045623549303 ], [ -122.41507530212402, 37.8045623549303 ], [ -122.41500020027159, 37.80457507030913 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43011176586151, 37.80407493042498 ], [ -122.42999911308289, 37.804087645887726 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.428759932518, 37.79132869749249 ], [ -122.42813766002655, 37.7914177210451 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41857290267944, 37.80414274620096 ], [ -122.4184763431549, 37.804151223168596 ], [ -122.41840660572052, 37.804083407400384 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4244737625122, 37.80537613476155 ], [ -122.42456495761871, 37.8053464658627 ], [ -122.4246346950531, 37.805278651192005 ], [ -122.42461860179901, 37.80516845221932 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42451667785645, 37.80558805512094 ], [ -122.4244737625122, 37.80537613476155 ], [ -122.42437183856964, 37.805367657934546 ], [ -122.4242752790451, 37.805321035368515 ], [ -122.42425918579102, 37.80521507488171 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4263083934784, 37.7925071910718 ], [ -122.42615282535553, 37.79263860465855 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42638885974884, 37.792439364613 ], [ -122.42630839347841, 37.7925071910718 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41417407989502, 37.795618662922415 ], [ -122.4142438173294, 37.79597897476603 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41027414798737, 37.80278641884947 ], [ -122.41032242774963, 37.8030322550301 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41961896419525, 37.80192598577343 ], [ -122.41951704025269, 37.801930224384584 ], [ -122.41949021816255, 37.80194294021658 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41512894630432, 37.805248982254014 ], [ -122.41524159908295, 37.80541851888209 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43004739284515, 37.8056431543148 ], [ -122.43003129959106, 37.805702491862185 ], [ -122.43003129959106, 37.80571096865078 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41906106472015, 37.80216758622069 ], [ -122.41952776908875, 37.80210400723224 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41949021816254, 37.80194294021658 ], [ -122.41932928562163, 37.80196837187395 ], [ -122.41912007331847, 37.801989564915125 ], [ -122.41905570030211, 37.80200651934365 ], [ -122.41879284381865, 37.80202771237386 ], [ -122.41868019104002, 37.802053144002095 ], [ -122.41857826709746, 37.80204890539802 ], [ -122.41846561431883, 37.80206585981292 ], [ -122.41836369037628, 37.802091291428006 ], [ -122.41819202899931, 37.802091291428006 ], [ -122.41804718971251, 37.80212943883419 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42557346820831, 37.80453268570453 ], [ -122.42551982402802, 37.80428685451822 ], [ -122.42547690868378, 37.80410459983463 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41000592708588, 37.794313047639136 ], [ -122.40998446941376, 37.79419435419653 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40935146808624, 37.80424446974821 ], [ -122.40944802761078, 37.80471070088038 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4218076467514, 37.8026635004523 ], [ -122.42229580879211, 37.80259144474508 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41891086101532, 37.80217606341504 ], [ -122.41887331008911, 37.802171824817975 ], [ -122.41884648799898, 37.802171824817975 ], [ -122.4188143014908, 37.80218030201184 ], [ -122.41876602172853, 37.80219301780076 ], [ -122.418669462204, 37.80220997218259 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41906106472015, 37.80216758622069 ], [ -122.41894841194154, 37.80218877920469 ], [ -122.41891086101533, 37.80217606341504 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4196457862854, 37.8020743370189 ], [ -122.41957068443298, 37.80208705282608 ], [ -122.41952776908873, 37.80210400723224 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41811692714691, 37.802256596712596 ], [ -122.41799890995026, 37.80227778967103 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42765486240387, 37.79074792215982 ], [ -122.427858710289, 37.79084966415375 ], [ -122.42799818515778, 37.79097684144913 ], [ -122.42810010910034, 37.791231195383254 ], [ -122.42813766002655, 37.7914177210451 ], [ -122.42814838886261, 37.791498266071706 ], [ -122.42796063423157, 37.79151098369947 ], [ -122.42777287960052, 37.79151522290824 ], [ -122.42754757404327, 37.79150250528121 ], [ -122.42765486240387, 37.791672073461534 ], [ -122.42769777774811, 37.79178653176325 ], [ -122.42775678634644, 37.791930664187284 ], [ -122.42778360843658, 37.79203240455262 ], [ -122.42775678634644, 37.79208751385868 ], [ -122.42770314216614, 37.792146862296164 ], [ -122.42767095565796, 37.79219349317789 ], [ -122.4276602268219, 37.792282515688555 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42874383926392, 37.791235434608055 ], [ -122.42826640605927, 37.791078583127835 ], [ -122.42799818515778, 37.79097684144913 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40990400314331, 37.793554254129674 ], [ -122.40993082523345, 37.79366447043045 ], [ -122.40991473197937, 37.79366447043045 ], [ -122.40991473197937, 37.79367718768535 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41866946220398, 37.80220997218259 ], [ -122.41864264011383, 37.80220997218259 ], [ -122.4186158180237, 37.80220997218259 ], [ -122.41857826709749, 37.802214210777436 ], [ -122.41839051246644, 37.802248119527505 ], [ -122.41828858852388, 37.802239642341455 ], [ -122.41811692714693, 37.802256596712596 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41481244564056, 37.80571096865078 ], [ -122.41476953029633, 37.805473618202406 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43019223213196, 37.80427413908977 ], [ -122.4299830198288, 37.80431652384273 ], [ -122.42989182472229, 37.80434619315537 ], [ -122.4298220872879, 37.80438433939691 ], [ -122.42977917194366, 37.80442672408664 ], [ -122.42974162101746, 37.804473347217254 ], [ -122.42972016334534, 37.804524208780705 ], [ -122.42970407009126, 37.80456659339016 ], [ -122.4296933412552, 37.804613216432486 ], [ -122.4296933412552, 37.804659839445364 ], [ -122.42970407009126, 37.8047107008804 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42911398410797, 37.80571096865078 ], [ -122.42910861968996, 37.805689776677475 ], [ -122.42907643318178, 37.80564739271261 ], [ -122.42903351783752, 37.80561772392273 ], [ -122.42897987365723, 37.805609247123456 ], [ -122.42892086505891, 37.805609247123456 ], [ -122.42864191532136, 37.80565163111018 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43102371692657, 37.805189644342235 ], [ -122.43092179298401, 37.805248982254014 ], [ -122.4308305978775, 37.80529136644753 ], [ -122.43074476718903, 37.805325273784824 ], [ -122.43059456348419, 37.80538037317473 ], [ -122.43046045303345, 37.80541851888209 ], [ -122.43028342723846, 37.805460902978304 ], [ -122.43019223213196, 37.805499048644094 ], [ -122.4301278591156, 37.80554143269408 ], [ -122.43007957935333, 37.805592293521954 ], [ -122.43004739284515, 37.8056431543148 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43106126785278, 37.80513878323706 ], [ -122.43108808994293, 37.805075206806336 ], [ -122.43109881877899, 37.80502858405566 ], [ -122.4310827255249, 37.80488447718576 ], [ -122.43107736110689, 37.80485056964608 ], [ -122.43106663227083, 37.80479546986089 ], [ -122.43105053901674, 37.80470222397696 ], [ -122.43102371692659, 37.804617454889396 ], [ -122.43099153041841, 37.804541162627416 ], [ -122.43094861507417, 37.804473347217225 ], [ -122.43090569972993, 37.80442248561876 ], [ -122.43083059787752, 37.8043673855142 ], [ -122.4307554960251, 37.80432500079042 ], [ -122.43066966533662, 37.80429109299386 ], [ -122.43057847023012, 37.804269900613114 ], [ -122.43048727512361, 37.80425718518177 ], [ -122.4303960800171, 37.80425718518177 ], [ -122.43029415607454, 37.80426566213625 ], [ -122.430192232132, 37.80427413908975 ], [ -122.43017077445988, 37.80418089254759 ], [ -122.43014395236973, 37.80412579226278 ], [ -122.43011176586155, 37.80407493042495 ], [ -122.43007421493535, 37.80396472965613 ], [ -122.43005812168127, 37.8039053907125 ], [ -122.4300473928452, 37.803846051721194 ], [ -122.4300473928452, 37.80379518969071 ], [ -122.43006885051733, 37.80376552015676 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43154406547546, 37.805087922096874 ], [ -122.4313884973526, 37.805087922096874 ], [ -122.4312973022461, 37.805096398955996 ], [ -122.43121147155762, 37.80510911424287 ], [ -122.43112564086914, 37.805134544810045 ], [ -122.43102371692657, 37.80518964434226 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4319839477539, 37.805079445236736 ], [ -122.43185520172119, 37.805092160526534 ], [ -122.43172109127045, 37.805096398955996 ], [ -122.43162989616394, 37.805096398955996 ], [ -122.43154406547546, 37.805087922096874 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43155479431152, 37.80349001677221 ], [ -122.4315869808197, 37.80351968641686 ], [ -122.43160843849182, 37.803557833085314 ], [ -122.43161916732788, 37.80360869527926 ], [ -122.43161916732788, 37.80381214370479 ], [ -122.43163526058197, 37.80399016061739 ], [ -122.43164062499999, 37.8040706919369 ], [ -122.43165671825408, 37.80415546165205 ], [ -122.4316835403442, 37.8042402312699 ], [ -122.43175327777858, 37.8044521548888 ], [ -122.43176937103267, 37.804519970318424 ], [ -122.43178546428675, 37.80459626260232 ], [ -122.43180155754084, 37.80479970830737 ], [ -122.4318122863769, 37.804876000302286 ], [ -122.43185520172113, 37.805092160526534 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4318015575409, 37.80339676924003 ], [ -122.43173718452454, 37.80339676924003 ], [ -122.43167281150818, 37.80339676924003 ], [ -122.43163526058197, 37.80343067744717 ], [ -122.43155479431154, 37.80349001677224 ], [ -122.4315118789673, 37.80347730120659 ], [ -122.43145823478699, 37.80348153972872 ], [ -122.43106663227083, 37.80357902567038 ], [ -122.43097007274629, 37.803600218249386 ], [ -122.43087351322174, 37.80361293379386 ], [ -122.4307769536972, 37.80362564933614 ], [ -122.43068039417267, 37.803629887849716 ], [ -122.43046045303345, 37.803634126363086 ], [ -122.4303638935089, 37.80363836487621 ], [ -122.4302726984024, 37.80365531892627 ], [ -122.43018686771391, 37.803684988504514 ], [ -122.43012249469756, 37.803727373595606 ], [ -122.43006885051726, 37.80376552015679 ], [ -122.4300044775009, 37.803735850610906 ], [ -122.42991864681242, 37.80374432762523 ], [ -122.42897450923918, 37.80386300572362 ], [ -122.42893159389494, 37.803807905201644 ], [ -122.4284380674362, 37.803846051721244 ], [ -122.42814302444454, 37.8038799597221 ], [ -122.42796599864955, 37.803909629210104 ], [ -122.4277567863464, 37.80393082169422 ], [ -122.42747247219081, 37.80397744513788 ], [ -122.42731690406795, 37.80399863760256 ], [ -122.42724716663356, 37.80400711458672 ], [ -122.42726325988765, 37.804045261003424 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41528987884521, 37.79770420829989 ], [ -122.41531670093536, 37.79772540256451 ], [ -122.41532742977142, 37.79777202992531 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41532742977142, 37.79777202992531 ], [ -122.41539716720581, 37.7977593133753 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4153220653534, 37.79785680686951 ], [ -122.41533815860748, 37.7978228961035 ], [ -122.41532742977142, 37.79777202992529 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41373419761658, 37.797950061395746 ], [ -122.41385757923126, 37.79793310603611 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41385757923126, 37.79793310603611 ], [ -122.41391122341156, 37.79790343414736 ], [ -122.41397023200987, 37.798026360466025 ], [ -122.4139755964279, 37.798026360466025 ], [ -122.41396486759184, 37.79792462835481 ], [ -122.41401851177214, 37.797950061395746 ], [ -122.41400778293608, 37.79789071761994 ], [ -122.41404533386229, 37.797831373796456 ], [ -122.41413116455077, 37.797844090334074 ], [ -122.41431891918181, 37.79781865725665 ], [ -122.41441011428832, 37.79789071761994 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41467833518982, 37.79712348308311 ], [ -122.41463005542757, 37.796877627236306 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41751611232758, 37.796292656587205 ], [ -122.41753220558167, 37.796335045920344 ], [ -122.41754293441772, 37.79635624057777 ], [ -122.4175375699997, 37.79636471843907 ], [ -122.41744101047516, 37.796373196299385 ], [ -122.41743564605713, 37.796381674158695 ], [ -122.41745173931122, 37.79640286880277 ], [ -122.41745710372923, 37.796407107730865 ], [ -122.4174302816391, 37.79643678022064 ], [ -122.41740882396698, 37.79643678022064 ], [ -122.41738736629486, 37.796441019146776 ], [ -122.41736054420471, 37.79645373592373 ], [ -122.41732835769653, 37.79646645269848 ], [ -122.41731226444244, 37.79646645269848 ], [ -122.41728007793427, 37.7964622137738 ], [ -122.41726398468019, 37.7964622137738 ], [ -122.4171942472458, 37.796470691622936 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41804718971252, 37.80212943883419 ], [ -122.41797745227814, 37.80213791603292 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41064429283142, 37.80085360933718 ], [ -122.41050481796265, 37.80103163338067 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4103707075119, 37.80097653074639 ], [ -122.41038680076598, 37.80095957608142 ], [ -122.41045117378233, 37.80087056402646 ], [ -122.41048872470854, 37.800794267894 ], [ -122.41045653820036, 37.8007434037619 ], [ -122.41038680076598, 37.80067982354751 ], [ -122.41033315658568, 37.80065439144644 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41077303886414, 37.800756119798216 ], [ -122.41070866584778, 37.80081546127204 ], [ -122.41064429283142, 37.80085360933718 ], [ -122.41048872470856, 37.800794267894 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40945339202881, 37.80081969994693 ], [ -122.4093943834305, 37.80082393862155 ], [ -122.40933001041412, 37.800832415970085 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40965187549591, 37.80109097463317 ], [ -122.40958750247955, 37.801150315837965 ], [ -122.40934610366821, 37.80118422507647 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41038680076599, 37.80048484388214 ], [ -122.41021513938904, 37.80060776590507 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40952849388123, 37.80065015276208 ], [ -122.40937292575836, 37.80054842426436 ], [ -122.40933001041412, 37.80055266295457 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41032242774963, 37.8030322550301 ], [ -122.41034924983978, 37.80316364989455 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40966796875, 37.80055690164453 ], [ -122.40964114665985, 37.8003915925559 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40989327430725, 37.8005357081923 ], [ -122.40986108779907, 37.80036192165469 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4101722240448, 37.800637436707525 ], [ -122.41033315658571, 37.80065439144644 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41495192050934, 37.804299569944476 ], [ -122.41497337818146, 37.80442672408664 ], [ -122.41477489471436, 37.8044521548888 ] ] }, "properties": { "class": "path", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43187129497528, 37.80557533991654 ], [ -122.4318391084671, 37.805664346301484 ], [ -122.43183374404907, 37.80571096865078 ] ] }, "properties": { "class": "driveway", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43166208267212, 37.80569401507261 ], [ -122.43181228637695, 37.80561348552322 ], [ -122.43187129497528, 37.80557533991654 ], [ -122.43192493915558, 37.80554143269405 ], [ -122.4319839477539, 37.80552871748163 ] ] }, "properties": { "class": "driveway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4319839477539, 37.805354942692176 ], [ -122.43160843849182, 37.80541428047113 ], [ -122.43166208267212, 37.80569401507263 ] ] }, "properties": { "class": "driveway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.431640625, 37.80571096865078 ], [ -122.43166208267212, 37.80569401507261 ] ] }, "properties": { "class": "driveway", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42909789085388, 37.80413850771679 ], [ -122.42989182472229, 37.804032545533346 ], [ -122.42985427379608, 37.8038502902222 ], [ -122.42905497550966, 37.80395201417224 ], [ -122.4290978908539, 37.80413850771679 ] ] }, "properties": { "class": "driveway", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4319839477539, 37.80440553174483 ], [ -122.43190348148346, 37.80441824715063 ] ] }, "properties": { "class": "driveway", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42891013622284, 37.80412155377767 ], [ -122.42909789085388, 37.80413850771679 ] ] }, "properties": { "class": "driveway", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41190493106842, 37.79716163305497 ], [ -122.41179764270782, 37.79717434970787 ] ] }, "properties": { "class": "driveway", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42909789085388, 37.80413850771679 ], [ -122.42909252643585, 37.804176654065614 ], [ -122.42914080619812, 37.8044394394888 ], [ -122.42914080619812, 37.804519970318424 ], [ -122.42916762828827, 37.80471070088035 ], [ -122.42916762828827, 37.80472341623366 ], [ -122.42916226387024, 37.804740370034615 ], [ -122.42915153503418, 37.804753085382806 ], [ -122.42913007736206, 37.804761562280376 ], [ -122.42908716201782, 37.80477003917697 ], [ -122.42867410182953, 37.80481666209083 ] ] }, "properties": { "class": "driveway", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41176009178162, 37.78815345398132 ], [ -122.41239309310913, 37.78807290530868 ], [ -122.4127846956253, 37.78802627182651 ], [ -122.41341233253479, 37.78794572301525 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4176824092865, 37.79235034229134 ], [ -122.41856753826141, 37.79224012403017 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41113245487213, 37.79338469026892 ], [ -122.41172790527344, 37.79331262551028 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41234481334686, 37.79532193420228 ], [ -122.41251647472383, 37.796152771615276 ], [ -122.41254329681396, 37.79619516102869 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41099834442139, 37.79083694641218 ], [ -122.41109490394592, 37.79129902295112 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40936756134033, 37.795686486462564 ], [ -122.40933001041412, 37.79549997157738 ] ] }, "properties": { "class": "service", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41076231002808, 37.79153217974085 ], [ -122.41120755672455, 37.791477070020576 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42177546024323, 37.7880177930084 ], [ -122.42021441459656, 37.788225523771885 ], [ -122.41856217384338, 37.78843325395139 ] ] }, "properties": { "class": "service", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41860508918762, 37.79269371351246 ], [ -122.41868555545807, 37.79304980050072 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41052627563477, 37.79644949699833 ], [ -122.41059064865114, 37.79676317682161 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41070866584778, 37.79344403766446 ], [ -122.41113245487213, 37.79338469026892 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41090714931488, 37.79639862987445 ], [ -122.4110358953476, 37.79703870529732 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41694211959839, 37.79707261642332 ], [ -122.41699039936066, 37.797051421971396 ], [ -122.41747856140137, 37.79699207747368 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41233944892883, 37.787814301082065 ], [ -122.41239309310913, 37.78807290530868 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4155580997467, 37.80395201417224 ], [ -122.41566002368927, 37.803913867707394 ], [ -122.41600334644318, 37.80387148272332 ], [ -122.41630375385284, 37.8038630057236 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41245746612549, 37.80182425903287 ], [ -122.41245746612549, 37.80170133903446 ], [ -122.41232335567474, 37.801010440064665 ] ] }, "properties": { "class": "service", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40956604480743, 37.79566105264231 ], [ -122.40965187549591, 37.796089187449574 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41671681404114, 37.7959238683626 ], [ -122.41722106933595, 37.79586028399988 ], [ -122.41834223270416, 37.79571192027404 ], [ -122.41835832595825, 37.79571192027404 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41281688213348, 37.79616124949991 ], [ -122.41297245025635, 37.79691577733512 ], [ -122.41301000118254, 37.79711500530891 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41254329681396, 37.79619516102869 ], [ -122.41257011890411, 37.796233311479945 ], [ -122.41269886493683, 37.79691577733512 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41274178028107, 37.787814301082065 ], [ -122.4127846956253, 37.78802627182651 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41160452365875, 37.80204466679365 ], [ -122.41145968437195, 37.801336816456995 ], [ -122.41146504878998, 37.801294429994016 ], [ -122.41149723529816, 37.80124780485665 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.80472341623366 ], [ -122.40944802761078, 37.80471070088035 ], [ -122.41004884243011, 37.80463864717042 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41596579551697, 37.790205295826226 ], [ -122.41598188877106, 37.79030279928923 ], [ -122.41601407527924, 37.79045965241627 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40965723991394, 37.79847143680532 ], [ -122.40974843502045, 37.798937704379746 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41183519363403, 37.79505911634061 ], [ -122.41189956665039, 37.795381280041674 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42660343647003, 37.79479205852346 ], [ -122.42711842060089, 37.79471999513757 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41010785102844, 37.801862406576994 ], [ -122.41053700447083, 37.80181578179817 ], [ -122.41060674190521, 37.802171824817975 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42193639278412, 37.788000835369274 ], [ -122.42345988750458, 37.787814301082065 ] ] }, "properties": { "class": "service", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42008566856384, 37.804235992791284 ], [ -122.421555519104, 37.804049499492926 ], [ -122.42162525653839, 37.804036784023594 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41185665130615, 37.799806649733185 ], [ -122.41239309310913, 37.799721875026755 ], [ -122.41241991519928, 37.79971763628886 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42914080619812, 37.8044394394888 ], [ -122.42867946624756, 37.804494539539625 ], [ -122.42865800857544, 37.80449877800336 ], [ -122.42864191532135, 37.80450301646686 ], [ -122.42863118648529, 37.80451149339313 ], [ -122.42862582206726, 37.804524208780705 ], [ -122.42862045764925, 37.804541162627416 ], [ -122.42862045764925, 37.804553878009884 ], [ -122.42867410182954, 37.80481666209083 ], [ -122.42869555950166, 37.80493957690451 ], [ -122.42869555950166, 37.80496500753008 ], [ -122.42869019508363, 37.804986199711365 ], [ -122.42867946624757, 37.805011630320884 ], [ -122.42866337299351, 37.80503282248878 ], [ -122.42863655090336, 37.80504977621872 ], [ -122.42860436439518, 37.80506249151361 ], [ -122.428572177887, 37.80507096837568 ], [ -122.42850780487065, 37.805087922096874 ], [ -122.4282342195511, 37.8051557369427 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41337478160858, 37.80440977021365 ], [ -122.4150002002716, 37.80420632343443 ], [ -122.4150162935257, 37.80420632343443 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41643249988556, 37.79112097545263 ], [ -122.41645932197571, 37.791231195383254 ], [ -122.41652369499207, 37.79152794053307 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41141676902771, 37.78853499913242 ], [ -122.41181910037994, 37.78848412655941 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41173326969147, 37.79017986011907 ], [ -122.41215705871582, 37.7901247493902 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4110895395279, 37.7931769740092 ], [ -122.4116849899292, 37.793100669930396 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4105155467987, 37.80505401465057 ], [ -122.41059601306915, 37.80546090297828 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4167650938034, 37.787869413534104 ], [ -122.41664707660675, 37.78788637120338 ], [ -122.41648614406584, 37.787903328868786 ], [ -122.4164968729019, 37.78797115949147 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4219685792923, 37.78896741458879 ], [ -122.42040216922759, 37.78916666399649 ], [ -122.41875529289244, 37.7893786308617 ] ] }, "properties": { "class": "service", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41070866584778, 37.78848412655941 ], [ -122.41016685962677, 37.78855195664898 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40972697734833, 37.79749226531914 ], [ -122.40989863872528, 37.79844176513279 ] ] }, "properties": { "class": "service", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.79899280853499 ], [ -122.40974843502045, 37.79893770437972 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40944802761078, 37.80471070088035 ], [ -122.40954458713531, 37.80517692906923 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42369055747986, 37.78874696780958 ], [ -122.42212414741516, 37.78894197845551 ] ] }, "properties": { "class": "service", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41753220558167, 37.79464369265235 ], [ -122.41761803627014, 37.795093028375305 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40985572338104, 37.80371041956209 ], [ -122.41029024124146, 37.80365955743819 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41145968437195, 37.79920898597781 ], [ -122.41166353225708, 37.80014574758602 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40968406200409, 37.796983599684395 ], [ -122.41016685962677, 37.79692001623378 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41692066192627, 37.795220198366735 ], [ -122.41700112819672, 37.79563561881328 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41054773330688, 37.79464369265235 ], [ -122.41046726703644, 37.79427065714581 ], [ -122.4103707075119, 37.793808599191095 ], [ -122.41036534309387, 37.7937492520884 ], [ -122.4102795124054, 37.79330838640464 ] ] }, "properties": { "class": "service", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42140531539917, 37.794147724577606 ], [ -122.42158770561217, 37.795029443297494 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42948412895203, 37.80073492640316 ], [ -122.4295002222061, 37.80080698392156 ], [ -122.42967188358307, 37.801654714153955 ], [ -122.42985963821411, 37.80258296759842 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42784261703491, 37.800942621412574 ], [ -122.42782652378084, 37.80084513199108 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4311363697052, 37.80052299211805 ], [ -122.43115246295928, 37.80059928853073 ], [ -122.43122220039366, 37.80098500807743 ], [ -122.43131339550017, 37.801447021146885 ], [ -122.43144214153288, 37.802095530029646 ], [ -122.43150115013121, 37.802379515786946 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42946803569794, 37.800637436707525 ], [ -122.42948412895203, 37.80073492640316 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43112027645111, 37.80042974083997 ], [ -122.4311363697052, 37.80052299211805 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4249941110611, 37.8031975582087 ], [ -122.42656588554382, 37.80299834664004 ], [ -122.42821276187898, 37.80279489597278 ], [ -122.42985963821413, 37.80258296759842 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42387294769287, 37.797615192322034 ], [ -122.42543935775757, 37.79741172682703 ], [ -122.42709159851074, 37.7972040218895 ], [ -122.42872774600983, 37.79699207747368 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42424845695496, 37.79947602782782 ], [ -122.42436647415161, 37.79945907281843 ], [ -122.42570757865906, 37.799289522510435 ], [ -122.42581486701965, 37.799276806221634 ], [ -122.42591679096222, 37.79926408993067 ], [ -122.42663562297821, 37.79917083706328 ], [ -122.42746710777283, 37.79906910652822 ], [ -122.42910325527191, 37.79885716746353 ], [ -122.43075013160706, 37.79864946659016 ], [ -122.4319839477539, 37.79849263084982 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42368519306183, 37.79667839862234 ], [ -122.42525160312653, 37.79648340839478 ], [ -122.42690920829773, 37.796275700847126 ], [ -122.42853999137878, 37.79606375376797 ], [ -122.43018686771393, 37.79585604504044 ], [ -122.43182301521301, 37.79564409675727 ], [ -122.43198394775392, 37.79562714086835 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42406070232391, 37.79854349653181 ], [ -122.42419481277466, 37.79852654130836 ], [ -122.4256271123886, 37.798344272410596 ], [ -122.42727935314177, 37.79813657009509 ], [ -122.42891550064085, 37.79792886719558 ], [ -122.43056237697601, 37.797716924859415 ], [ -122.43144214153288, 37.79760671460429 ], [ -122.43198394775389, 37.79753889282709 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42443084716797, 37.80041278604948 ], [ -122.4245595932007, 37.800395831255116 ], [ -122.4259275197983, 37.800222044388356 ], [ -122.42600262165071, 37.80020932826012 ], [ -122.4261260032654, 37.80019661212968 ], [ -122.42649614810945, 37.80014998629934 ], [ -122.42685556411743, 37.80010336043956 ], [ -122.42757976055145, 37.80001010863167 ], [ -122.4276602268219, 37.80000163118878 ], [ -122.4277675151825, 37.79998467630002 ], [ -122.42929100990295, 37.79978969479964 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42330431938171, 37.794809014604034 ], [ -122.42486000061037, 37.7946097804114 ], [ -122.42652833461763, 37.79440206759597 ], [ -122.42815911769867, 37.79419011514147 ], [ -122.42980599403383, 37.79397816207892 ], [ -122.43145287036897, 37.793770447487695 ], [ -122.43198394775392, 37.793702622188576 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42480635643005, 37.802269312488406 ], [ -122.4249565601349, 37.802252358120164 ], [ -122.42637813091278, 37.80207009841604 ], [ -122.42802500724794, 37.801862406576994 ], [ -122.42967188358308, 37.801654714153955 ], [ -122.43131339550018, 37.801447021146885 ], [ -122.43186056613922, 37.80137496425289 ], [ -122.4319839477539, 37.80136224832311 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41192638874054, 37.797271843974116 ], [ -122.41191565990448, 37.7972167385351 ], [ -122.41190493106842, 37.79716163305497 ], [ -122.41187274456024, 37.79700055526198 ], [ -122.41173326969147, 37.79629689552161 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41173326969147, 37.79629689552161 ], [ -122.41163671016693, 37.79583908920013 ], [ -122.41155624389648, 37.79541519192846 ], [ -122.41147577762605, 37.7950633553458 ], [ -122.41136848926544, 37.79454195588281 ], [ -122.41136848926544, 37.79452923877677 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42929100990295, 37.7997896947997 ], [ -122.42945194244386, 37.80056114033423 ], [ -122.42946803569794, 37.800637436707525 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42872774600983, 37.79699207747368 ], [ -122.42891550064087, 37.79792886719558 ], [ -122.42910325527191, 37.7988571674635 ], [ -122.42917835712433, 37.79923441857653 ], [ -122.42929100990295, 37.79978969479967 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41336941719055, 37.796084948503236 ], [ -122.41346061229706, 37.79652579761845 ], [ -122.41355180740355, 37.79694121072341 ], [ -122.41355180740355, 37.797034466405485 ], [ -122.41356253623961, 37.797131960856326 ], [ -122.41366982460022, 37.79767029746383 ], [ -122.41371273994446, 37.797844090334074 ], [ -122.41373419761658, 37.797950061395746 ], [ -122.41375029087065, 37.798030599300965 ], [ -122.41390585899352, 37.79887836139735 ], [ -122.41392731666564, 37.798958898290465 ], [ -122.4140292406082, 37.79937005895526 ], [ -122.41412580013274, 37.79983208212613 ], [ -122.41422235965729, 37.80030257981648 ], [ -122.41430282592772, 37.800756119798216 ], [ -122.41439938545227, 37.80122661160268 ], [ -122.4144959449768, 37.801692861785654 ], [ -122.41468906402588, 37.80261687617921 ], [ -122.41484463214873, 37.80337981513064 ], [ -122.41488218307494, 37.80354511753136 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42365837097168, 37.80528712802926 ], [ -122.42374420166016, 37.80571096865078 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42223680019379, 37.7903451920591 ], [ -122.42214560508728, 37.79036214916025 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42240846157074, 37.790328234954075 ], [ -122.42223680019379, 37.7903451920591 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42398023605347, 37.79016290297611 ], [ -122.4225264787674, 37.790315517122764 ], [ -122.42240846157074, 37.790328234954075 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42037534713745, 37.80571096865078 ], [ -122.42028415203094, 37.80523626699121 ], [ -122.42019295692444, 37.80478699296722 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4108213186264, 37.791837402062676 ], [ -122.41110563278198, 37.791799249341395 ], [ -122.41171717643738, 37.79172294383976 ], [ -122.41206049919128, 37.79168479105935 ], [ -122.41245210170746, 37.79163815985659 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41136848926544, 37.79452923877677 ], [ -122.41128802299501, 37.79453771684771 ], [ -122.41124510765076, 37.79454619491767 ], [ -122.4111968278885, 37.7945589120208 ], [ -122.4111592769623, 37.79456315105469 ], [ -122.4105477333069, 37.79464369265235 ], [ -122.41008639335634, 37.794707278062184 ], [ -122.4098986387253, 37.7947284731866 ], [ -122.4097377061844, 37.79474966830498 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40973770618439, 37.79474966830498 ], [ -122.40988254547119, 37.79551268851633 ], [ -122.40990400314331, 37.795618662922415 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40954458713531, 37.79385522902405 ], [ -122.40973770618439, 37.79474966830498 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40954458713531, 37.79385522902405 ], [ -122.4095231294632, 37.79385522902405 ], [ -122.40933001041412, 37.79388066346596 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.803295044525235 ], [ -122.40976452827452, 37.803239943579534 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4130368232727, 37.80282880445625 ], [ -122.41294026374817, 37.802332891334544 ], [ -122.41290807723998, 37.802184540608394 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41245210170746, 37.79163815985659 ], [ -122.41410970687866, 37.791421960259214 ], [ -122.41576731204987, 37.791209999255514 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.792782735420424 ], [ -122.4093621969223, 37.792960778914576 ], [ -122.4095445871353, 37.79385522902405 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.79203664373147 ], [ -122.4108213186264, 37.791837402062676 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41145431995392, 37.80112064524151 ], [ -122.41232335567474, 37.801010440064665 ], [ -122.41266131401063, 37.80098076941203 ], [ -122.41267740726471, 37.80098076941203 ], [ -122.41269886493683, 37.80098076941203 ], [ -122.41430282592773, 37.800756119798216 ], [ -122.41487681865692, 37.80067982354754 ], [ -122.41596579551697, 37.80053994688325 ], [ -122.41667926311493, 37.80044669562654 ], [ -122.41749465465546, 37.80034496684863 ], [ -122.41762340068817, 37.80032801203869 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41102516651154, 37.80117574776828 ], [ -122.41130948066713, 37.801141838525915 ], [ -122.41145431995393, 37.80112064524151 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40976452827454, 37.803239943579534 ], [ -122.41034924983978, 37.80316364989455 ], [ -122.41138994693756, 37.80303649357777 ], [ -122.41231262683868, 37.8029220527055 ], [ -122.4130368232727, 37.80282880445625 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.80109945195105 ], [ -122.4093461036682, 37.80118422507645 ], [ -122.40938365459441, 37.801379202895646 ], [ -122.40946948528288, 37.80184969073116 ], [ -122.40957677364348, 37.802303221213165 ], [ -122.40976452827452, 37.803239943579534 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.80042974083997 ], [ -122.40964114665985, 37.8003915925559 ], [ -122.40986108779907, 37.80036192165466 ], [ -122.41015613079071, 37.80032377333558 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41015613079071, 37.800323773335606 ], [ -122.4102795124054, 37.800311057224846 ], [ -122.41084277629852, 37.800251715345794 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41717278957367, 37.79634352378406 ], [ -122.41719424724579, 37.796470691622936 ], [ -122.41721034049988, 37.796559708979885 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42462933063507, 37.80129019134637 ], [ -122.42446303367615, 37.80132833916636 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42484390735626, 37.803218750897145 ], [ -122.4249941110611, 37.8031975582087 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42352962493896, 37.79669959318127 ], [ -122.42368519306183, 37.79667839862234 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42348670959473, 37.7957246371765 ], [ -122.42505848407745, 37.79552964443152 ], [ -122.42671072483061, 37.79532193420228 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42372810840607, 37.797636386612204 ], [ -122.42387294769287, 37.797615192322034 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42409288883209, 37.79949722158412 ], [ -122.42424845695496, 37.79947602782782 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42428600788116, 37.80042974083997 ], [ -122.42443084716797, 37.80041278604948 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42467224597931, 37.8022905054432 ], [ -122.42480635643005, 37.802269312488406 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42225289344788, 37.79042573825485 ], [ -122.42242455482484, 37.790396063350826 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42242455482483, 37.790396063350826 ], [ -122.42254257202148, 37.79037910625748 ], [ -122.42398023605347, 37.79016290297611 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41963505744934, 37.80199804212988 ], [ -122.41961896419525, 37.80192598577343 ], [ -122.41945266723633, 37.80114607718208 ], [ -122.41944193840027, 37.80109521329224 ], [ -122.41943657398224, 37.80106978133419 ], [ -122.41931855678558, 37.80045517301839 ], [ -122.41925418376923, 37.80012455401583 ], [ -122.41913080215454, 37.79951417658475 ], [ -122.41912543773653, 37.79948874408232 ], [ -122.4190664291382, 37.79919626967515 ], [ -122.41900742053987, 37.798916510462924 ], [ -122.41897523403169, 37.79874272011575 ], [ -122.41893768310548, 37.79856892935968 ], [ -122.41887867450718, 37.79826373484735 ], [ -122.41869091987614, 37.797339665996475 ], [ -122.4185031652451, 37.79643254129425 ], [ -122.41849780082707, 37.796398629874425 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42347061634064, 37.804358908571395 ], [ -122.42365837097168, 37.80528712802926 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41850316524506, 37.79643254129425 ], [ -122.41861045360565, 37.79641982451364 ], [ -122.41999447345734, 37.79623755041776 ], [ -122.42006957530975, 37.796241789355314 ], [ -122.42013931274414, 37.79625450616659 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42012321949005, 37.79614429372968 ], [ -122.42013931274414, 37.79625450616659 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42010712623596, 37.79606375376797 ], [ -122.42012321949005, 37.79614429372968 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42013931274414, 37.79625450616659 ], [ -122.42031633853912, 37.797110766421454 ], [ -122.42050409317017, 37.79804755463823 ], [ -122.42063820362091, 37.798696093367674 ], [ -122.42069721221924, 37.79898433097531 ], [ -122.42088496685028, 37.79991261797943 ], [ -122.42107272148132, 37.800832415970085 ], [ -122.42109417915344, 37.800938382744725 ], [ -122.4212658405304, 37.80178187284963 ], [ -122.42145359516144, 37.80271436326215 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41685092449188, 37.804977722839574 ], [ -122.41688847541809, 37.80521507488168 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42019295692444, 37.80478699296722 ], [ -122.42008566856384, 37.804235992791284 ], [ -122.42001593112946, 37.80388843671987 ], [ -122.4198228120804, 37.8029220527055 ], [ -122.41964578628541, 37.8020743370189 ], [ -122.41963505744936, 37.80199804212988 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42243528366089, 37.80354087901289 ], [ -122.42224752902985, 37.80362141082225 ], [ -122.42178618907927, 37.803672272972435 ], [ -122.42174327373503, 37.803684988504514 ], [ -122.4217003583908, 37.80371041956209 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41855680942535, 37.80500739188654 ], [ -122.41870164871216, 37.80571096865078 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42174863815308, 37.80423175431249 ], [ -122.42181837558745, 37.80456659339016 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4130368232727, 37.80282880445625 ], [ -122.41362690925598, 37.8027567489103 ], [ -122.41365909576416, 37.80275251034657 ], [ -122.41372346878052, 37.8027440332184 ], [ -122.41378784179688, 37.80272707895914 ], [ -122.41387367248535, 37.80270588612963 ], [ -122.41457104682922, 37.80262111475069 ], [ -122.41468906402588, 37.80261687617921 ], [ -122.41481781005861, 37.80260839903546 ], [ -122.41623938083649, 37.802430378792366 ], [ -122.41634130477905, 37.80240494729402 ], [ -122.41645395755768, 37.80238375437207 ], [ -122.4178808927536, 37.80220573358751 ], [ -122.4179881811142, 37.80220997218259 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41362690925598, 37.80571096865078 ], [ -122.41360545158386, 37.80561772392276 ], [ -122.41351962089539, 37.80515573694268 ], [ -122.41343379020691, 37.80468527016725 ], [ -122.41337478160858, 37.80440977021365 ], [ -122.41322457790375, 37.80376128165094 ], [ -122.4130368232727, 37.80282880445625 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41576731204987, 37.791209999255514 ], [ -122.4161159992218, 37.79116336775309 ], [ -122.41643249988557, 37.79112097545263 ], [ -122.4171942472458, 37.79102771230599 ], [ -122.41741418838502, 37.79099803764374 ], [ -122.41763412952425, 37.79097260220947 ], [ -122.41907179355623, 37.790798793174275 ], [ -122.42069184780122, 37.79057835185864 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42243528366089, 37.80354087901289 ], [ -122.4232828617096, 37.803426438922145 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42145359516144, 37.802714363262176 ], [ -122.42152333259583, 37.802803373095095 ], [ -122.42160379886627, 37.80321451235996 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42145359516144, 37.802714363262176 ], [ -122.42143750190736, 37.80282032733683 ], [ -122.42152333259584, 37.803295044525235 ], [ -122.42157161235811, 37.80340100776679 ], [ -122.42161452770235, 37.80349001677221 ], [ -122.42177009582521, 37.80354511753136 ], [ -122.42183446884157, 37.80354935604959 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41845488548279, 37.80405373798221 ], [ -122.41842806339265, 37.804019830061115 ], [ -122.41840660572053, 37.8039732066442 ], [ -122.41829931735992, 37.80347306268421 ], [ -122.41821885108948, 37.8033586224884 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42170035839081, 37.80371041956209 ], [ -122.42168426513672, 37.80375280463857 ], [ -122.4216789007187, 37.80377823567278 ], [ -122.42168426513672, 37.803871482723345 ], [ -122.42168426513672, 37.8038969137167 ], [ -122.4216789007187, 37.8039350601903 ], [ -122.42167353630067, 37.80396472965615 ], [ -122.42166280746461, 37.80399016061739 ], [ -122.42164671421055, 37.8040155915699 ], [ -122.42162525653843, 37.804036784023616 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41741418838501, 37.79099803764377 ], [ -122.41720497608185, 37.79004844215926 ], [ -122.4170172214508, 37.789111552511955 ], [ -122.41682946681976, 37.788178890386014 ], [ -122.4167650938034, 37.78786941353413 ], [ -122.41675436496735, 37.787814301082065 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42561638355255, 37.7899551776589 ], [ -122.4254232645035, 37.78899709006654 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.78913698858683 ], [ -122.41025805473328, 37.78901828682906 ], [ -122.41097152233122, 37.78892502102847 ], [ -122.41188883781433, 37.78881055829413 ], [ -122.41355180740355, 37.78860282917525 ], [ -122.41518795490263, 37.78839086008467 ], [ -122.41682946681975, 37.788178890386014 ], [ -122.41788625717162, 37.78804322945981 ], [ -122.41846561431883, 37.78796692007937 ], [ -122.41969943046566, 37.787814301082065 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42069184780121, 37.79057835185864 ], [ -122.42080450057983, 37.79061226595001 ], [ -122.42216169834137, 37.79043845606721 ], [ -122.42225289344788, 37.79042573825485 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42369055747986, 37.78874696780958 ], [ -122.42533206939697, 37.78853923851192 ], [ -122.42696821689606, 37.788331508630314 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41102516651154, 37.80117574776828 ], [ -122.41120755672455, 37.802095530029646 ], [ -122.41138994693756, 37.80303649357777 ], [ -122.41148114204405, 37.80347306268421 ], [ -122.41158306598662, 37.80396472965615 ], [ -122.41177082061766, 37.80489719250909 ], [ -122.41186201572417, 37.80536341952066 ], [ -122.41193175315856, 37.80571096865078 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4262011051178, 37.80115455449363 ], [ -122.42621719837189, 37.80123932755579 ], [ -122.42637813091278, 37.80207009841604 ], [ -122.42656588554382, 37.80299834664004 ], [ -122.42676973342896, 37.80394353718175 ], [ -122.42682337760925, 37.80419784647312 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41840660572052, 37.801196941036885 ], [ -122.418674826622, 37.80115879314906 ], [ -122.41908252239227, 37.80112064524151 ], [ -122.41931319236755, 37.80109097463317 ], [ -122.41943657398224, 37.801069781334164 ], [ -122.42036461830139, 37.80095109874748 ], [ -122.4204236268997, 37.80094262141255 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41187274456024, 37.79700055526198 ], [ -122.41189420223236, 37.79699631636796 ], [ -122.41260766983032, 37.79691577733512 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40990400314331, 37.795618662922415 ], [ -122.41001665592194, 37.795605946001736 ], [ -122.41003274917601, 37.795605946001736 ], [ -122.41108417510985, 37.79547029871132 ], [ -122.41155624389648, 37.79541519192846 ], [ -122.41189956665039, 37.79538128004165 ], [ -122.41234481334685, 37.79532193420228 ], [ -122.41318166255951, 37.795220198366735 ], [ -122.41402387619019, 37.795105745384284 ], [ -122.41483390331267, 37.79499129222454 ], [ -122.41647541522978, 37.79477934146046 ], [ -122.41695821285248, 37.79471999513755 ], [ -122.41753220558167, 37.79464369265235 ], [ -122.41796135902405, 37.79458858525292 ], [ -122.41812765598297, 37.794567390088325 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41290807723999, 37.802184540608394 ], [ -122.41288125514986, 37.80202347376832 ], [ -122.41285979747774, 37.801892076875475 ], [ -122.41275787353517, 37.80143006658992 ], [ -122.41267740726472, 37.80098076941203 ], [ -122.41254866123201, 37.80034072814651 ], [ -122.41248428821565, 37.80003977967424 ], [ -122.41243064403534, 37.799764262392124 ], [ -122.41241991519928, 37.79971763628886 ], [ -122.4122965335846, 37.79909453917511 ], [ -122.41210877895355, 37.79816624189021 ], [ -122.41192638874055, 37.797271843974116 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.79949298283334 ], [ -122.41064965724944, 37.799314955081435 ], [ -122.41145968437193, 37.79920898597781 ], [ -122.41194248199463, 37.799141165671685 ], [ -122.4122804403305, 37.79909877794875 ], [ -122.4122965335846, 37.79909453917511 ], [ -122.41231799125671, 37.79909030040123 ], [ -122.41293489933014, 37.7990097636514 ], [ -122.41390585899353, 37.79887836139735 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41096079349518, 37.800883280040885 ], [ -122.41098761558533, 37.801103690609615 ], [ -122.41102516651154, 37.80117574776828 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41095542907715, 37.80077731318719 ], [ -122.41084277629852, 37.800251715345794 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40990400314331, 37.795618662922415 ], [ -122.41000592708588, 37.79605527587214 ], [ -122.41009712219237, 37.79650036408717 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41454422473907, 37.79877663045951 ], [ -122.41459250450133, 37.79881054078769 ], [ -122.41466760635375, 37.798840212312086 ], [ -122.41475343704224, 37.7988359735236 ], [ -122.41512894630432, 37.79879358562553 ], [ -122.41520941257477, 37.79877239166739 ], [ -122.41540253162383, 37.79872152614298 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41104662418365, 37.797314232745414 ], [ -122.41127729415895, 37.79735662149236 ], [ -122.41191029548645, 37.797271843974144 ], [ -122.41192638874054, 37.797271843974144 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41926491260529, 37.796072231662805 ], [ -122.41918981075287, 37.796089187449574 ], [ -122.41915225982666, 37.796097665341506 ], [ -122.41856217384338, 37.79616972738355 ], [ -122.41854608058931, 37.79617396632503 ], [ -122.41847634315492, 37.79616972738355 ], [ -122.41844952106477, 37.79616972738355 ], [ -122.41833150386812, 37.79618244420722 ], [ -122.41751611232759, 37.796292656587205 ], [ -122.41717278957368, 37.79634352378406 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41721034049988, 37.796559708979885 ], [ -122.41731226444244, 37.79656394789897 ], [ -122.41839587688446, 37.79644525807265 ], [ -122.41850316524506, 37.79643254129425 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41846024990082, 37.79621635572625 ], [ -122.41844952106476, 37.79616972738355 ], [ -122.41835832595825, 37.79571192027404 ], [ -122.41831004619598, 37.79547877667427 ], [ -122.41821885108948, 37.795008248259386 ], [ -122.41812765598299, 37.794567390088325 ], [ -122.41793990135194, 37.79368566585404 ], [ -122.41777360439302, 37.7928124093659 ], [ -122.41774678230287, 37.79267251780427 ], [ -122.41768240928651, 37.792350342291314 ], [ -122.41760194301607, 37.79192642500235 ], [ -122.41741418838502, 37.79099803764374 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42671072483063, 37.79532193420228 ], [ -122.42834150791168, 37.79512270139288 ], [ -122.42999374866486, 37.79489803396326 ], [ -122.43163526058197, 37.79468608293166 ], [ -122.4319839477539, 37.794639453623084 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42580950260162, 37.79087933887559 ], [ -122.42561638355255, 37.7899551776589 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42872774600983, 37.79699207747368 ], [ -122.43037462234497, 37.79678437135622 ], [ -122.43119001388551, 37.7966826375346 ], [ -122.43198394775392, 37.796580903572895 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42158770561218, 37.795029443297494 ], [ -122.4217700958252, 37.795945063138014 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.794809014604034 ], [ -122.40960359573364, 37.79477510243896 ], [ -122.40963041782379, 37.79476662439528 ], [ -122.40973770618439, 37.79474966830498 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42598116397858, 37.791761096600425 ], [ -122.42433965206148, 37.79197305602319 ], [ -122.42278397083282, 37.792168058155134 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41410970687866, 37.791421960259214 ], [ -122.4140989780426, 37.79141348183073 ], [ -122.41406679153442, 37.79131597983338 ], [ -122.41392195224762, 37.79057835185864 ], [ -122.41391122341156, 37.79045965241627 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41245210170746, 37.79163815985659 ], [ -122.41245746612547, 37.79165511666101 ], [ -122.4124789237976, 37.79174413982033 ], [ -122.41255939006804, 37.79211718808339 ], [ -122.41265058517455, 37.79254110427786 ], [ -122.41274178028105, 37.79299469191242 ], [ -122.41283297538753, 37.79343555946803 ], [ -122.41300463676451, 37.79433000382966 ], [ -122.4131816625595, 37.79519900338339 ], [ -122.4131816625595, 37.795220198366735 ], [ -122.41336941719054, 37.796084948503236 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41907179355621, 37.7907987931743 ], [ -122.41923272609712, 37.791701747853054 ], [ -122.41932392120363, 37.792185014837926 ], [ -122.41942584514618, 37.79259621320449 ], [ -122.41952240467073, 37.79312186551574 ], [ -122.4195921421051, 37.7934779504405 ], [ -122.41976916790009, 37.79435967715371 ], [ -122.41994082927705, 37.795241393344035 ], [ -122.42009103298189, 37.795987452670616 ], [ -122.42010712623598, 37.79606375376797 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41226971149445, 37.790675854829374 ], [ -122.41226971149445, 37.790781836173345 ], [ -122.41241991519928, 37.791549136569564 ], [ -122.41244673728943, 37.79162544225071 ], [ -122.41245210170746, 37.79163815985659 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42278397083282, 37.792168058155134 ], [ -122.42262303829193, 37.792185014837955 ], [ -122.42106199264526, 37.792396973044646 ], [ -122.41942584514618, 37.79259621320451 ], [ -122.41860508918762, 37.79269371351246 ], [ -122.417773604393, 37.7928124093659 ], [ -122.41644322872162, 37.792973496290564 ], [ -122.4161159992218, 37.79301588752816 ], [ -122.41553127765654, 37.79309219169453 ], [ -122.41526305675507, 37.793126104632066 ], [ -122.41505920886993, 37.79315153932501 ], [ -122.41447448730469, 37.7932236042408 ], [ -122.41283297538757, 37.793435559468 ], [ -122.41211950778961, 37.79352881957535 ], [ -122.41151869297029, 37.79360512321199 ], [ -122.41118609905244, 37.79364751408718 ], [ -122.4106013774872, 37.79371957851917 ], [ -122.41036534309389, 37.7937492520884 ], [ -122.4099361896515, 37.793804360113896 ], [ -122.40990400314332, 37.793808599191095 ], [ -122.40957140922548, 37.793850989949526 ], [ -122.40954458713533, 37.793855229024025 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4108213186264, 37.791837402062676 ], [ -122.4110037088394, 37.792765778874795 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41100370883942, 37.792765778874795 ], [ -122.41108953952791, 37.7931769740092 ], [ -122.41113245487215, 37.79338469026892 ], [ -122.41118609905244, 37.79364751408718 ], [ -122.41127192974092, 37.794062943376915 ], [ -122.41136848926546, 37.79452923877677 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41793990135193, 37.79368566585406 ], [ -122.41629302501678, 37.793893380683656 ], [ -122.41567611694335, 37.79397392301147 ], [ -122.41522014141083, 37.79402903086939 ], [ -122.41465687751769, 37.7941053339894 ], [ -122.41300463676453, 37.79433000382966 ], [ -122.41184592247008, 37.794465653213706 ], [ -122.41136848926544, 37.79452923877677 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43156552314758, 37.79104466925053 ], [ -122.4319839477539, 37.7909937984053 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41576731204987, 37.791209999255514 ], [ -122.41578876972198, 37.79131597983335 ], [ -122.41583168506622, 37.791544897362755 ], [ -122.41589605808258, 37.79187555476423 ], [ -122.41594970226288, 37.79212990560461 ], [ -122.4161159992218, 37.79301588752816 ], [ -122.41629302501678, 37.793893380683656 ], [ -122.4164754152298, 37.79477934146046 ], [ -122.41666316986084, 37.795678008523424 ], [ -122.41671681404114, 37.7959238683626 ], [ -122.41674900054932, 37.79611886006703 ], [ -122.41685092449188, 37.796602098159795 ], [ -122.41694211959839, 37.79707261642332 ], [ -122.41703867912292, 37.79755160941504 ], [ -122.41722106933594, 37.79847991442385 ], [ -122.41731226444244, 37.79894618194477 ], [ -122.41739273071288, 37.799319193842436 ], [ -122.4173980951309, 37.7994082077669 ], [ -122.41753220558165, 37.79990837925248 ], [ -122.41762340068816, 37.80032801203869 ], [ -122.41773068904875, 37.80084089331766 ], [ -122.41780042648314, 37.801256282156544 ], [ -122.41780579090114, 37.8012859526985 ], [ -122.41789162158962, 37.801718293529156 ], [ -122.41797745227812, 37.80213791603292 ], [ -122.41798818111418, 37.80220997218259 ], [ -122.41799890995024, 37.80227778967103 ], [ -122.41817593574523, 37.80312974156482 ], [ -122.41821885108946, 37.8033586224884 ], [ -122.41821885108946, 37.80349001677221 ], [ -122.41833150386809, 37.804087645887726 ], [ -122.41839051246639, 37.80421480039474 ], [ -122.41855680942531, 37.80500739188654 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43168354034424, 37.80327809039246 ], [ -122.43188202381134, 37.80324842065075 ], [ -122.4319839477539, 37.80323570504354 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42494583129883, 37.801209656995105 ], [ -122.42471516132355, 37.80126899810456 ], [ -122.42462933063507, 37.801290191346396 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43150115013123, 37.802379515786946 ], [ -122.43168354034422, 37.80327809039246 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42985963821411, 37.80258296759844 ], [ -122.43150115013123, 37.802379515786946 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42985963821411, 37.80258296759844 ], [ -122.43006348609924, 37.803532401975204 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42215096950531, 37.797831373796456 ], [ -122.42372810840607, 37.797636386612204 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42929100990295, 37.7997896947997 ], [ -122.4309378862381, 37.799581996548405 ], [ -122.43198394775392, 37.799446356558846 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4217700958252, 37.795945063138014 ], [ -122.42196321487425, 37.79690306063769 ], [ -122.4220597743988, 37.797373576984334 ], [ -122.4221509695053, 37.797831373796456 ], [ -122.42232799530028, 37.798696093367674 ], [ -122.42233872413634, 37.79877239166739 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42233872413635, 37.79877239166739 ], [ -122.42235481739044, 37.79884445110031 ], [ -122.4224728345871, 37.79941244652253 ], [ -122.4225103855133, 37.79962014525055 ], [ -122.4225264787674, 37.79970068133491 ], [ -122.42254793643951, 37.79978969479964 ], [ -122.42270350456238, 37.800556901644505 ], [ -122.42271423339844, 37.80062895933659 ], [ -122.42273032665251, 37.80070949432101 ], [ -122.42288589477538, 37.801480930249134 ], [ -122.42290198802947, 37.801548748406965 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42290198802948, 37.80154874840699 ], [ -122.42291808128357, 37.801633521016726 ], [ -122.42307901382446, 37.80241342446109 ], [ -122.42309510707855, 37.802489718921066 ], [ -122.42311120033264, 37.802587206171864 ], [ -122.4232828617096, 37.803426438922145 ], [ -122.42347061634064, 37.804358908571395 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.798513824888246 ], [ -122.40965723991394, 37.79847143680529 ], [ -122.40989863872528, 37.798441765132765 ], [ -122.41045653820038, 37.79837394412226 ], [ -122.41176009178162, 37.79820863014824 ], [ -122.4120819568634, 37.79817048071708 ], [ -122.41210877895355, 37.79816624189018 ], [ -122.41213560104369, 37.79816200306305 ], [ -122.41283297538756, 37.7980772264691 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.80233712992234 ], [ -122.40957677364348, 37.802303221213165 ], [ -122.4106067419052, 37.802171824817975 ], [ -122.41120755672453, 37.80209553002967 ], [ -122.41160452365874, 37.80204466679365 ], [ -122.41209268569945, 37.8019810876994 ], [ -122.41238236427306, 37.801947178826744 ], [ -122.41243600845335, 37.80190055410142 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4168348312378, 37.804833615870386 ], [ -122.41672754287718, 37.80429533146929 ], [ -122.41663098335265, 37.80382062071034 ], [ -122.41653442382811, 37.80334166837023 ], [ -122.41634130477904, 37.80240494729402 ], [ -122.41615891456604, 37.80148940752228 ], [ -122.41605699062347, 37.801010440064665 ], [ -122.41596579551697, 37.80053994688323 ], [ -122.41594970226288, 37.80046365040925 ], [ -122.41577804088593, 37.79962014525055 ], [ -122.41568148136139, 37.79914540444263 ], [ -122.415611743927, 37.79879782441643 ], [ -122.41559028625488, 37.798696093367674 ], [ -122.41556882858276, 37.798598600981116 ], [ -122.41546154022217, 37.79806450997163 ], [ -122.41539716720581, 37.79775931337528 ], [ -122.41533815860748, 37.79746259325332 ], [ -122.41530060768127, 37.79728879948555 ], [ -122.41520404815674, 37.796805565884746 ], [ -122.4151074886322, 37.796326568055655 ], [ -122.4150162935257, 37.79588995670929 ], [ -122.41483390331268, 37.79499129222454 ], [ -122.4146568775177, 37.7941053339894 ], [ -122.4144744873047, 37.79322360424077 ], [ -122.41438865661621, 37.792786974556215 ], [ -122.41429746150972, 37.79233762480803 ], [ -122.4141150712967, 37.791438917113226 ], [ -122.4141097068787, 37.791421960259214 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42107272148132, 37.800832415970085 ], [ -122.42262303829193, 37.800637436707525 ], [ -122.42271423339844, 37.80062895933659 ], [ -122.42283225059509, 37.80061200459185 ], [ -122.42289662361145, 37.800603527218016 ], [ -122.42416799068451, 37.80044245693025 ], [ -122.42428600788116, 37.800429740839945 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41859436035156, 37.80020932826012 ], [ -122.41925418376923, 37.80012455401583 ], [ -122.41935610771179, 37.800111837870794 ], [ -122.42058455944061, 37.79995076651085 ], [ -122.42080986499786, 37.79992109543255 ], [ -122.42088496685028, 37.79991261797943 ], [ -122.42243528366089, 37.79971339755073 ], [ -122.4225264787674, 37.79970068133491 ], [ -122.42265522480011, 37.7996837263771 ], [ -122.42400169372559, 37.79950993783495 ], [ -122.42409288883209, 37.79949722158409 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41859436035156, 37.80020932826012 ], [ -122.41762340068816, 37.80032801203869 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.80424446974821 ], [ -122.40935146808624, 37.80424446974821 ], [ -122.40995228290556, 37.804176654065614 ], [ -122.41158306598662, 37.80396472965615 ], [ -122.41285443305968, 37.803807905201644 ], [ -122.41322457790373, 37.80376128165094 ], [ -122.41371810436247, 37.803697704034384 ], [ -122.41472661495207, 37.803566310120054 ], [ -122.41480171680449, 37.80355359456757 ], [ -122.41488218307494, 37.80354511753136 ], [ -122.41506457328795, 37.80352392493655 ], [ -122.41641104221343, 37.80336286101732 ], [ -122.41653442382811, 37.80334166837023 ], [ -122.41663634777068, 37.80332047571705 ], [ -122.41817593574523, 37.803129741564796 ], [ -122.4190771579742, 37.80301530083702 ], [ -122.41982281208034, 37.8029220527055 ], [ -122.4214535951614, 37.80271436326215 ], [ -122.42180764675136, 37.8026635004523 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41285979747772, 37.801892076875475 ], [ -122.41283297538757, 37.80190055410142 ], [ -122.41270422935486, 37.80190479271403 ], [ -122.41260766983032, 37.80192174716204 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41285979747772, 37.801892076875475 ], [ -122.41288661956786, 37.801887838262154 ], [ -122.41368055343628, 37.801790350088226 ], [ -122.4144959449768, 37.801692861785654 ], [ -122.41495192050934, 37.80163775964465 ], [ -122.41615891456604, 37.80148940752228 ], [ -122.41780579090118, 37.8012859526985 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41562247276306, 37.79369414402182 ], [ -122.41567611694336, 37.79397392301147 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42520332336426, 37.805096398955996 ], [ -122.42532670497894, 37.80571096865078 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4232828617096, 37.803426438922145 ], [ -122.42484390735626, 37.803218750897145 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41699039936066, 37.80571096865078 ], [ -122.41688847541809, 37.80521507488171 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4153059720993, 37.80571096865078 ], [ -122.41524159908295, 37.80541851888209 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42778897285461, 37.80515573694268 ], [ -122.42733299732208, 37.80521507488171 ], [ -122.4272471666336, 37.80521931330409 ], [ -122.4271559715271, 37.80521931330409 ], [ -122.42704331874847, 37.80521931330409 ], [ -122.4269038438797, 37.8051938827661 ], [ -122.42680728435516, 37.805164213794036 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42682337760925, 37.80419784647312 ], [ -122.42679655551912, 37.80427837756615 ], [ -122.42679655551912, 37.804337716210114 ], [ -122.42680191993713, 37.80440129327573 ], [ -122.42685556411743, 37.80462593180253 ], [ -122.42691993713379, 37.80482937742587 ], [ -122.42704331874847, 37.80521931330409 ], [ -122.42712914943696, 37.80543123411352 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42712914943695, 37.80543123411352 ], [ -122.42715060710907, 37.805321035368515 ], [ -122.42715597152709, 37.80521931330409 ], [ -122.42702186107634, 37.8048081851996 ], [ -122.42696821689604, 37.80460050106022 ], [ -122.42691993713379, 37.80438433939691 ], [ -122.42689311504364, 37.80432500079042 ], [ -122.42685556411743, 37.80426990061314 ], [ -122.42682337760925, 37.80419784647312 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42022514343262, 37.80192174716204 ], [ -122.42062211036682, 37.80187512242067 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42062211036682, 37.80187512242067 ], [ -122.42114245891571, 37.80179882732586 ], [ -122.4212658405304, 37.80178187284963 ], [ -122.42198467254639, 37.80168014591061 ], [ -122.42212414741518, 37.801658952780684 ], [ -122.42280542850496, 37.80156570293673 ], [ -122.4229019880295, 37.80154874840699 ], [ -122.42300927639012, 37.80153603250714 ], [ -122.4243557453156, 37.80134529374666 ], [ -122.42446303367619, 37.80132833916636 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42181837558746, 37.80456659339016 ], [ -122.42201149463654, 37.80549481023774 ], [ -122.42205440998077, 37.80571096865078 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41084277629852, 37.800251715345794 ], [ -122.41166353225708, 37.80014574758602 ], [ -122.41246819496155, 37.80004401839364 ], [ -122.41248428821564, 37.80003977967424 ], [ -122.41251647472382, 37.800035540954596 ], [ -122.41412580013274, 37.79983208212613 ], [ -122.41522550582884, 37.799687965116924 ], [ -122.41577804088591, 37.79962014525055 ], [ -122.41649150848387, 37.79952689283269 ], [ -122.4173980951309, 37.7994082077669 ], [ -122.41822957992552, 37.79930223879704 ], [ -122.41905033588408, 37.79919626967515 ], [ -122.41906642913814, 37.79919626967515 ], [ -122.41908252239223, 37.79919203090711 ], [ -122.4200856685638, 37.799064867752875 ], [ -122.42034852504726, 37.799030957541454 ], [ -122.42069721221922, 37.79898433097531 ], [ -122.42226898670195, 37.798780869251374 ], [ -122.42233872413634, 37.79877239166739 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41540253162384, 37.798721526143 ], [ -122.41559028625488, 37.798696093367674 ], [ -122.41722106933594, 37.79847991442385 ], [ -122.41783261299133, 37.79839937700852 ], [ -122.41887867450714, 37.79826373484738 ], [ -122.41963505744934, 37.79816200306305 ], [ -122.41989254951476, 37.79812809243717 ], [ -122.42039144039153, 37.79806450997163 ], [ -122.42050409317015, 37.79804755463823 ], [ -122.4221509695053, 37.797831373796456 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41963505744934, 37.80199804212988 ], [ -122.41953313350677, 37.8020107579502 ], [ -122.41951167583466, 37.80201499655647 ], [ -122.41947948932648, 37.802036189584236 ], [ -122.41942584514618, 37.80207857562153 ], [ -122.41940438747406, 37.802091291428006 ], [ -122.41938292980194, 37.80209553002967 ], [ -122.41935610771179, 37.80209553002967 ], [ -122.41933465003967, 37.802091291428006 ], [ -122.41931855678558, 37.8020743370189 ], [ -122.41926491260529, 37.80201499655647 ], [ -122.41923809051514, 37.80200228073689 ], [ -122.419211268425, 37.80199804212988 ], [ -122.41918444633485, 37.80200228073689 ], [ -122.4191576242447, 37.80201499655647 ], [ -122.41914153099064, 37.80203195097919 ], [ -122.41910934448246, 37.80210400723224 ], [ -122.41909325122838, 37.802125200234485 ], [ -122.41906642913824, 37.80213791603292 ], [ -122.41903424263005, 37.80214215463189 ], [ -122.41900742053991, 37.80213367743367 ], [ -122.4189859628678, 37.80211672303431 ], [ -122.41892695426947, 37.80206162120955 ], [ -122.41890549659735, 37.80204466679365 ], [ -122.4188786745072, 37.80204042818906 ], [ -122.41884648799902, 37.80204466679365 ], [ -122.4188250303269, 37.80205314400207 ], [ -122.41880893707284, 37.8020743370189 ], [ -122.41877675056463, 37.80214639323063 ], [ -122.41876065731057, 37.80216758622069 ], [ -122.41873919963845, 37.80217606341501 ], [ -122.41870701313027, 37.80218030201182 ], [ -122.41868019104012, 37.802171824817975 ], [ -122.418658733368, 37.802159109025396 ], [ -122.41859972476968, 37.80209976863108 ], [ -122.41857826709756, 37.80208705282608 ], [ -122.41855144500742, 37.80207857562153 ], [ -122.4185299873353, 37.80208281422394 ], [ -122.41850316524516, 37.802095530029646 ], [ -122.41848707199107, 37.80211672303431 ], [ -122.41845488548289, 37.80218877920469 ], [ -122.41843879222881, 37.802205733587485 ], [ -122.41841197013866, 37.802218449372056 ], [ -122.41838514804851, 37.80222268796642 ], [ -122.41835296154034, 37.802218449372056 ], [ -122.41833150386822, 37.802205733587485 ], [ -122.41827785968792, 37.80214639323063 ], [ -122.4182564020158, 37.80212943883419 ], [ -122.41823494434368, 37.80212096163453 ], [ -122.41820812225353, 37.80212096163453 ], [ -122.41818130016341, 37.80212943883419 ], [ -122.41816520690932, 37.80214639323063 ], [ -122.41813838481917, 37.80218030201182 ], [ -122.41812765598311, 37.802197256396575 ], [ -122.418106198311, 37.80220997218259 ], [ -122.41808474063888, 37.802214210777436 ], [ -122.41806328296676, 37.802214210777436 ], [ -122.41798818111434, 37.80220997218259 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42685556411743, 37.787814301082065 ], [ -122.42686629295349, 37.78786517411618 ], [ -122.42696821689606, 37.788331508630314 ], [ -122.4270647764206, 37.788789361472034 ], [ -122.4272632598877, 37.78974321244753 ], [ -122.42745101451874, 37.79066737631527 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41488218307495, 37.80354511753136 ], [ -122.41491973400116, 37.80370194254386 ], [ -122.4150162935257, 37.80420632343443 ], [ -122.41505920886993, 37.80441824715063 ], [ -122.415069937706, 37.80448182414693 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42214560508728, 37.790362149160224 ], [ -122.42078840732574, 37.790531719957585 ], [ -122.4206918478012, 37.79057835185864 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.80520235961308 ], [ -122.4095445871353, 37.80517692906923 ], [ -122.41014003753662, 37.805104875814145 ], [ -122.4105155467987, 37.80505401465057 ], [ -122.41177082061766, 37.80489719250912 ], [ -122.4134337902069, 37.80468527016725 ], [ -122.4149841070175, 37.80449030107562 ], [ -122.41505920886992, 37.80448182414693 ], [ -122.41506993770598, 37.80448182414693 ], [ -122.4150913953781, 37.80447758568221 ], [ -122.41516649723052, 37.804469108752045 ], [ -122.41598725318907, 37.8043673855142 ], [ -122.41614818572998, 37.80434619315537 ], [ -122.41659879684448, 37.8043038084194 ], [ -122.4167275428772, 37.80429533146929 ], [ -122.41684556007387, 37.80428685451822 ], [ -122.41750538349153, 37.8042020849539 ], [ -122.41833150386812, 37.804087645887726 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41192638874054, 37.797271843974116 ], [ -122.41195321083069, 37.79726760509566 ], [ -122.41301000118254, 37.79711500530889 ], [ -122.41346061229706, 37.797047183080274 ], [ -122.41355180740355, 37.797034466405464 ], [ -122.41366446018218, 37.79701751083568 ], [ -122.4144798517227, 37.79690306063769 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41453886032104, 37.796890343938095 ], [ -122.41463005542755, 37.796877627236306 ], [ -122.41520404815674, 37.796805565884775 ], [ -122.41685092449188, 37.796602098159795 ], [ -122.41721034049988, 37.796559708979885 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41533815860748, 37.79746259325332 ], [ -122.41526305675507, 37.79749650418472 ], [ -122.415252327919, 37.79752617623693 ], [ -122.4152898788452, 37.79770420829989 ], [ -122.41528451442719, 37.7977381191204 ], [ -122.4152684211731, 37.79778474647316 ], [ -122.41530060768127, 37.79781865725668 ], [ -122.4153220653534, 37.79785680686953 ], [ -122.41535425186157, 37.798013643959806 ], [ -122.41537570953369, 37.79804331580431 ], [ -122.41546154022218, 37.79806450997163 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40976452827454, 37.803239943579534 ], [ -122.40985572338104, 37.80371041956209 ], [ -122.40995228290558, 37.804176654065614 ], [ -122.41004884243013, 37.80463864717042 ], [ -122.41014003753662, 37.805104875814145 ], [ -122.4102634191513, 37.80571096865078 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41963505744934, 37.80199804212988 ], [ -122.41971552371977, 37.80198532630738 ], [ -122.4202251434326, 37.80192174716204 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42012858390808, 37.787814301082065 ], [ -122.42021441459656, 37.788225523771885 ], [ -122.4203109741211, 37.78870033475276 ], [ -122.4204021692276, 37.78916666399649 ], [ -122.4204933643341, 37.789620272346355 ], [ -122.42069184780121, 37.79057835185864 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42554128170013, 37.80571096865078 ], [ -122.42547154426575, 37.80537613476155 ], [ -122.42541253566743, 37.80515573694268 ], [ -122.42536962032318, 37.805075206806336 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41173326969147, 37.79629689552161 ], [ -122.41176009178162, 37.79628841765255 ], [ -122.41254329681396, 37.79619516102869 ], [ -122.41281688213348, 37.79616124949991 ], [ -122.41336941719057, 37.796084948503236 ], [ -122.41424381732942, 37.79597897476603 ], [ -122.41501629352571, 37.79588995670932 ], [ -122.41666316986085, 37.79567800852345 ], [ -122.41700112819673, 37.79563561881331 ], [ -122.418310046196, 37.79547877667427 ], [ -122.4191200733185, 37.795360085104505 ], [ -122.4198228120804, 37.79527106630204 ], [ -122.41994082927705, 37.79524139334406 ], [ -122.4215877056122, 37.795029443297494 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41173326969147, 37.79629689552161 ], [ -122.41171717643739, 37.79629689552161 ], [ -122.4109071493149, 37.79639862987445 ], [ -122.41052627563478, 37.79644949699833 ], [ -122.4100971221924, 37.79650036408717 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41009712219238, 37.79650036408717 ], [ -122.41016685962677, 37.79692001623378 ], [ -122.41022050380707, 37.79721249965347 ], [ -122.41025805473328, 37.79741596569723 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41025805473328, 37.79741596569721 ], [ -122.41045653820038, 37.79837394412226 ], [ -122.41064965724944, 37.799314955081435 ], [ -122.41084277629851, 37.800251715345794 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42289662361145, 37.800603527218016 ], [ -122.42327749729156, 37.800955337414564 ], [ -122.42340624332428, 37.801023156054995 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41219997406006, 37.787814301082065 ], [ -122.41170108318329, 37.787873652951795 ], [ -122.41007566452026, 37.78808138412048 ], [ -122.40933001041412, 37.788178890386014 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41843342781067, 37.787814301082065 ], [ -122.41846561431885, 37.78796692007934 ], [ -122.41856217384338, 37.78843325395142 ], [ -122.41865873336793, 37.78891230295563 ], [ -122.41875529289247, 37.78937863086172 ], [ -122.41884648799898, 37.78983223791039 ], [ -122.4190664291382, 37.79078183617337 ], [ -122.41907179355621, 37.7907987931743 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41789162158966, 37.801718293529156 ], [ -122.4185299873352, 37.801633521016726 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42246747016907, 37.80409612286167 ], [ -122.42253720760345, 37.804473347217254 ] ] }, "properties": { "class": "street_limited", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42002665996552, 37.79877239166739 ], [ -122.42063820362091, 37.798696093367674 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41568148136139, 37.79914540444266 ], [ -122.41468906402588, 37.799276806221656 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4160248041153, 37.790692811854626 ], [ -122.4161159992218, 37.79115065006551 ], [ -122.4161159992218, 37.79116336775309 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41897523403168, 37.79874272011575 ], [ -122.41998910903932, 37.798598600981116 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41100907325745, 37.795093028375305 ], [ -122.41108417510986, 37.79547029871132 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41387367248535, 37.80270588612963 ], [ -122.41368055343628, 37.801790350088226 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42752611637115, 37.80571096865078 ], [ -122.427499294281, 37.805689776677475 ], [ -122.42723643779755, 37.80551600226697 ], [ -122.42712914943695, 37.80543123411352 ], [ -122.42689311504364, 37.80544818775199 ], [ -122.42672145366669, 37.80546937979462 ], [ -122.42648541927338, 37.80551176386163 ], [ -122.42632985115051, 37.80552871748163 ], [ -122.42621183395386, 37.80551600226699 ], [ -122.42610991001129, 37.80546514138659 ], [ -122.42592215538025, 37.80530408170084 ], [ -122.42583632469176, 37.80520235961308 ], [ -122.42576122283934, 37.805087922096874 ], [ -122.42569684982298, 37.80493957690451 ], [ -122.42565393447875, 37.80481242364534 ], [ -122.4255734682083, 37.80453268570453 ], [ -122.42573976516722, 37.804312285368546 ], [ -122.42616355419158, 37.80425294670417 ], [ -122.42657661437987, 37.80421480039474 ], [ -122.42666244506835, 37.80435043162762 ], [ -122.4268341064453, 37.80506672994478 ], [ -122.42680728435516, 37.805164213794036 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41502702236176, 37.791799249341395 ], [ -122.41505920886993, 37.79193914255643 ], [ -122.41511821746826, 37.792235884863004 ], [ -122.41512358188628, 37.79229523318131 ], [ -122.41521477699278, 37.79274458318729 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41441011428833, 37.79789071761994 ], [ -122.41482853889465, 37.797831373796456 ], [ -122.41508603096008, 37.79780170186684 ], [ -122.41526842117308, 37.797784746473134 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43122220039368, 37.80098500807743 ], [ -122.4319839477539, 37.80088751871189 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41989254951477, 37.79812809243717 ], [ -122.41998910903932, 37.798598600981116 ], [ -122.42002665996552, 37.79877239166739 ], [ -122.42008566856384, 37.799064867752875 ], [ -122.42014467716217, 37.79935310392155 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42183446884155, 37.80354935604959 ], [ -122.42193102836609, 37.803557833085314 ], [ -122.42217242717743, 37.80355359456757 ], [ -122.4224352836609, 37.80354087901289 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42001593112946, 37.80388843671987 ], [ -122.41856217384338, 37.80407916891281 ], [ -122.41849780082703, 37.8040706919369 ], [ -122.41845488548279, 37.80405373798221 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41000592708588, 37.79605527587214 ], [ -122.41162061691284, 37.79583908920016 ], [ -122.41163671016692, 37.79583908920016 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41903424263, 37.80279489597278 ], [ -122.41892158985138, 37.802269312488406 ], [ -122.41892158985138, 37.802239642341455 ], [ -122.41892695426941, 37.802214210777436 ], [ -122.41894841194153, 37.80218877920469 ], [ -122.41896986961365, 37.802171824817975 ], [ -122.41899669170378, 37.802159109025396 ], [ -122.41900205612181, 37.80214639323063 ], [ -122.41900742053984, 37.80213367743367 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41190493106842, 37.79263436551425 ], [ -122.41181910037994, 37.792210449854856 ], [ -122.41171717643738, 37.79172294383976 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41530060768127, 37.79728879948555 ], [ -122.41689383983612, 37.79708957198048 ], [ -122.41694211959839, 37.79707261642332 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41913080215454, 37.79951417658475 ], [ -122.41874992847443, 37.79956080281643 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41508603096008, 37.79780170186684 ], [ -122.4151611328125, 37.79822134662093 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41000592708588, 37.794313047639136 ], [ -122.41008639335631, 37.794707278062184 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42676973342896, 37.7996922038565 ], [ -122.42685556411743, 37.80010336043956 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4203485250473, 37.799030957541454 ], [ -122.42044508457184, 37.79950569908492 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4220597743988, 37.797373576984334 ], [ -122.42317020893096, 37.79724217181975 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4171245098114, 37.79609342639566 ], [ -122.41717278957367, 37.79634352378406 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42229580879211, 37.80259144474508 ], [ -122.4224352836609, 37.80257449045081 ], [ -122.42300927639009, 37.80250243465672 ], [ -122.42309510707857, 37.802489718921066 ], [ -122.42319703102113, 37.80247700318321 ], [ -122.42455422878267, 37.802303221213165 ], [ -122.42467224597932, 37.8022905054432 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42712914943695, 37.80543123411352 ], [ -122.42722570896149, 37.80571096865078 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42828786373138, 37.80571096865078 ], [ -122.42864191532135, 37.80565163111018 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41902351379395, 37.79490227297768 ], [ -122.41912007331848, 37.795360085104505 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41649150848389, 37.79952689283269 ], [ -122.41658806800842, 37.79999739246696 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42028415203094, 37.80523626699121 ], [ -122.42078304290771, 37.805172690644405 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41833686828613, 37.798640988991096 ], [ -122.41893768310547, 37.79856892935968 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.412548661232, 37.80034072814651 ], [ -122.41257011890411, 37.800336489444156 ], [ -122.41312265396118, 37.800251715345794 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.801387680180454 ], [ -122.40938365459442, 37.801379202895646 ], [ -122.41014003753662, 37.80128171405037 ], [ -122.41054773330688, 37.80123085025394 ], [ -122.41102516651154, 37.80117574776828 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41275787353516, 37.80143006658992 ], [ -122.41279006004333, 37.80143006658992 ], [ -122.41439938545227, 37.80122661160265 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4148553609848, 37.80116727045915 ], [ -122.41605699062349, 37.801010440064665 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4297684431076, 37.799149643213354 ], [ -122.43082523345947, 37.7990140024299 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4284166097641, 37.80374008911817 ], [ -122.42821276187898, 37.80279489597278 ], [ -122.42802500724794, 37.801862406576994 ], [ -122.42785871028902, 37.801014678728365 ], [ -122.42784261703493, 37.800942621412574 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43134021759033, 37.79710652753374 ], [ -122.4314421415329, 37.797606714604264 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41912543773651, 37.79948874408232 ], [ -122.42014467716217, 37.79935310392155 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41422235965729, 37.80030257981648 ], [ -122.41433501243591, 37.800289863702076 ], [ -122.41478562355042, 37.80023052180601 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41583168506622, 37.791544897362755 ], [ -122.41630375385284, 37.791489787651976 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43186593055725, 37.80424446974821 ], [ -122.4319839477539, 37.80423175431249 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41470515727997, 37.79036638843492 ], [ -122.41464614868164, 37.79003572427978 ] ] }, "properties": { "class": "street_limited", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41187274456024, 37.79700055526198 ], [ -122.41185665130615, 37.79700055526198 ], [ -122.41121828556061, 37.79709381086916 ], [ -122.41106808185577, 37.797140438628595 ], [ -122.41048336029051, 37.79726336621694 ], [ -122.41038680076598, 37.797271843974116 ], [ -122.41034924983978, 37.797271843974116 ], [ -122.41030097007751, 37.797259127338 ], [ -122.41022050380707, 37.79721249965347 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41190493106842, 37.79263436551425 ], [ -122.41211950778961, 37.79352881957535 ] ] }, "properties": { "class": "street", "oneway": -1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42927491664886, 37.79134141514943 ], [ -122.43091642856598, 37.79113369314532 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40990400314331, 37.795618662922415 ], [ -122.40956604480742, 37.79566105264231 ], [ -122.40936756134032, 37.795686486462564 ], [ -122.40933001041412, 37.795694964400674 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4112719297409, 37.794062943376915 ], [ -122.41135239601135, 37.794058704314324 ], [ -122.41186201572418, 37.79399087927983 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41900742053986, 37.798916510462924 ], [ -122.4188894033432, 37.798929226813755 ], [ -122.41848707199097, 37.798963137071866 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42682337760925, 37.80419784647312 ], [ -122.4269038438797, 37.80426990061314 ], [ -122.42696821689606, 37.804341954682855 ], [ -122.4272632598877, 37.804876000302286 ], [ -122.42730617523195, 37.804952292218374 ], [ -122.4273544549942, 37.80500739188654 ], [ -122.42741882801056, 37.80505401465057 ], [ -122.427499294281, 37.805096398955996 ], [ -122.42759048938751, 37.805134544810045 ], [ -122.42767095565796, 37.80515149851663 ], [ -122.42778897285461, 37.80515573694268 ], [ -122.42791771888733, 37.80513878323706 ], [ -122.42803037166595, 37.805104875814145 ], [ -122.42821276187897, 37.804998915017194 ], [ -122.42823421955109, 37.80515573694268 ], [ -122.42825031280516, 37.805244743833335 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42825031280518, 37.805244743833335 ], [ -122.4272632598877, 37.80537189634818 ], [ -122.42719352245332, 37.805388850000256 ], [ -122.42712914943696, 37.80543123411352 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41357862949371, 37.80038735385647 ], [ -122.41422235965729, 37.80030257981648 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41346061229706, 37.79652579761845 ], [ -122.41510748863222, 37.796326568055655 ], [ -122.41674900054932, 37.79611886006703 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4282556772232, 37.803918106204456 ], [ -122.42833077907562, 37.8038969137167 ], [ -122.42840588092804, 37.803884198221105 ], [ -122.42882966995239, 37.80388843671987 ], [ -122.42887258529663, 37.80390115221473 ], [ -122.42889940738678, 37.803930821694195 ], [ -122.42893695831297, 37.804049499492926 ], [ -122.42893159389496, 37.804087645887726 ], [ -122.42891013622284, 37.80412155377767 ], [ -122.42888331413269, 37.80414274620098 ], [ -122.42884576320648, 37.80415546165205 ], [ -122.42865800857544, 37.80418936951085 ], [ -122.42853999137878, 37.80422327735411 ], [ -122.42843806743622, 37.80427837756618 ], [ -122.42835760116579, 37.804358908571395 ], [ -122.42833614349365, 37.804439439488824 ], [ -122.42829859256746, 37.80481242364534 ], [ -122.42827177047731, 37.80489295406824 ], [ -122.42823958396913, 37.80496076909309 ], [ -122.42821276187898, 37.804998915017194 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4272632598877, 37.804045261003395 ], [ -122.42763876914978, 37.80474460848425 ], [ -122.42768704891205, 37.80479546986092 ], [ -122.4277514219284, 37.8048081851996 ], [ -122.42781579494476, 37.80479970830737 ], [ -122.42786943912508, 37.80476580072879 ], [ -122.42789626121521, 37.80470646242878 ], [ -122.42794990539551, 37.804235992791284 ], [ -122.4279659986496, 37.80415546165205 ], [ -122.4280035495758, 37.804083407400384 ], [ -122.42806792259216, 37.80401559156988 ], [ -122.42814302444458, 37.80396472965615 ], [ -122.4282556772232, 37.803918106204456 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4282556772232, 37.803918106204456 ], [ -122.42797672748566, 37.80397744513788 ], [ -122.4277514219284, 37.8040155915699 ], [ -122.42751002311707, 37.80404102251361 ], [ -122.4272632598877, 37.804045261003395 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4272632598877, 37.804045261003395 ], [ -122.42712378501892, 37.80405797647123 ], [ -122.42707014083862, 37.80406645344859 ], [ -122.42702186107635, 37.804087645887726 ], [ -122.42698431015016, 37.80411307680662 ], [ -122.42695212364197, 37.80415546165205 ], [ -122.42693066596985, 37.80420632343443 ], [ -122.42690384387971, 37.80426990061314 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4272471666336, 37.80521931330409 ], [ -122.42726862430573, 37.8051938827661 ], [ -122.42727935314178, 37.80516845221935 ], [ -122.42729008197784, 37.805113352671334 ], [ -122.42729544639587, 37.80504129935424 ], [ -122.42728471755981, 37.80496076909309 ], [ -122.4272632598877, 37.804876000302286 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.418133020401, 37.798840212312086 ], [ -122.41822957992555, 37.79930223879704 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4148553609848, 37.80116727045915 ], [ -122.41495192050935, 37.80163775964465 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4107837677002, 37.794122290227605 ], [ -122.4112719297409, 37.794062943376915 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41750538349152, 37.8042020849539 ], [ -122.41760730743408, 37.80476580072879 ], [ -122.41787552833557, 37.80473189313464 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41908252239227, 37.80112064524151 ], [ -122.41913616657257, 37.80140887338821 ], [ -122.4191629886627, 37.80154027114065 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41912007331848, 37.795360085104505 ], [ -122.41926491260529, 37.796072231662805 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41467833518982, 37.79712348308311 ], [ -122.41482853889467, 37.797831373796456 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41274178028107, 37.79299469191242 ], [ -122.41438865661621, 37.792786974556215 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42229580879211, 37.80259144474508 ], [ -122.42238700389862, 37.803053447766 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42216169834137, 37.80196413326501 ], [ -122.42223143577576, 37.802387992956945 ], [ -122.42239773273468, 37.80248124176272 ], [ -122.42243528366089, 37.80257449045078 ] ] }, "properties": { "class": "street_limited", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41362690925598, 37.80275674891027 ], [ -122.41371810436249, 37.80322298943413 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41187274456024, 37.798780869251374 ], [ -122.41194248199463, 37.799141165671685 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41620719432831, 37.79165935586148 ], [ -122.41629302501678, 37.79208327468276 ], [ -122.41629302501678, 37.79214262312365 ], [ -122.41637349128723, 37.79252838682742 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42610991001129, 37.8007434037619 ], [ -122.42656588554382, 37.80055266295457 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41276323795319, 37.80334166837025 ], [ -122.41285443305969, 37.803807905201644 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41667926311493, 37.80044669562654 ], [ -122.41675436496735, 37.80085784800986 ] ] }, "properties": { "class": "street_limited", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4195009469986, 37.79722945517852 ], [ -122.41962432861328, 37.79786104571417 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42494583129883, 37.801209656995105 ], [ -122.42472052574158, 37.801218134299376 ], [ -122.42464542388916, 37.801196941036885 ], [ -122.42459177970886, 37.801141838525915 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43024587631226, 37.787814301082065 ], [ -122.43035852909088, 37.78836966314214 ], [ -122.43055164813995, 37.78932775886951 ], [ -122.430739402771, 37.79025616721429 ], [ -122.43091642856598, 37.79113369314532 ], [ -122.43109345436096, 37.79201120865472 ], [ -122.43126511573792, 37.79289295287215 ], [ -122.43138313293457, 37.79344827676231 ], [ -122.43145287036896, 37.793770447487695 ], [ -122.43163526058197, 37.79468608293166 ], [ -122.43182301521301, 37.79564409675727 ], [ -122.4319839477539, 37.79641982451366 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41788625717163, 37.78804322945978 ], [ -122.41784870624542, 37.787814301082065 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41751074790955, 37.79000604921915 ], [ -122.41759121417998, 37.79030703856731 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41841733455658, 37.78988734885741 ], [ -122.41848170757294, 37.79020105654232 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41765022277832, 37.78903524423471 ], [ -122.4177360534668, 37.789518528659656 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.415069937706, 37.787814301082065 ], [ -122.41518795490265, 37.78839086008464 ], [ -122.41538107395172, 37.78934471620411 ], [ -122.4155741930008, 37.79025616721429 ], [ -122.4156868457794, 37.79081151092244 ], [ -122.41575121879578, 37.791116736221234 ], [ -122.41576731204985, 37.791209999255514 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41186201572418, 37.80536341952066 ], [ -122.41351962089539, 37.80515573694268 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40942120552063, 37.80571096865078 ], [ -122.40933001041412, 37.80525745909466 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41539716720581, 37.7977593133753 ], [ -122.41703867912292, 37.79755160941504 ], [ -122.4186909198761, 37.797339665996496 ], [ -122.4195009469986, 37.79722945517852 ], [ -122.42031633853912, 37.797110766421454 ], [ -122.42196321487427, 37.79690306063772 ], [ -122.42352962493898, 37.79669959318127 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42233872413635, 37.79877239166739 ], [ -122.42244601249696, 37.79875967528956 ], [ -122.4237871170044, 37.79857740696702 ], [ -122.42390513420106, 37.79856469055563 ], [ -122.42406070232393, 37.79854349653181 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41658806800842, 37.79902671876394 ], [ -122.41731226444244, 37.79894618194477 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.79296501804014 ], [ -122.4093461036682, 37.792960778914576 ], [ -122.40936219692229, 37.792960778914576 ], [ -122.40937829017638, 37.792956539788726 ], [ -122.4097108840942, 37.792922626773354 ], [ -122.4110037088394, 37.792765778874795 ], [ -122.41112172603606, 37.79273610491059 ], [ -122.4119049310684, 37.79263436551425 ], [ -122.4122428894043, 37.79259197405775 ], [ -122.41265058517456, 37.79254110427786 ], [ -122.4142974615097, 37.792337624808056 ], [ -122.41511821746826, 37.79223588486298 ], [ -122.41552591323853, 37.7921807756676 ], [ -122.41594970226288, 37.79212990560459 ], [ -122.41629302501678, 37.79208327468274 ], [ -122.41760194301604, 37.79192642500235 ], [ -122.41923272609709, 37.791701747853054 ], [ -122.42088496685027, 37.79149402686194 ], [ -122.4224406480789, 37.79130750139274 ], [ -122.42259621620177, 37.79129054450855 ], [ -122.42415189743042, 37.79109130082783 ], [ -122.42580950260162, 37.79087933887556 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.796597859242894 ], [ -122.41009712219237, 37.79650036408717 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42580950260162, 37.79087933887559 ], [ -122.42745101451874, 37.79066737631527 ], [ -122.42754757404327, 37.790658897800206 ], [ -122.42909252643585, 37.79045965241627 ], [ -122.430739402771, 37.79025616721429 ], [ -122.4319839477539, 37.7900950743653 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42782652378082, 37.80084513199106 ], [ -122.42781043052673, 37.80076459715455 ], [ -122.42767095565796, 37.80006521198694 ], [ -122.4276602268219, 37.80000163118878 ], [ -122.42764413356781, 37.79992957288471 ], [ -122.42746710777283, 37.79906910652822 ], [ -122.42727935314178, 37.79813657009509 ], [ -122.42709159851074, 37.7972040218895 ], [ -122.42690920829773, 37.796275700847126 ], [ -122.42671072483063, 37.79532193420228 ], [ -122.42660343647003, 37.79479205852346 ], [ -122.42652833461761, 37.79440206759597 ], [ -122.42636740207672, 37.79362631865265 ], [ -122.42632985115051, 37.79351610229493 ], [ -122.42629766464233, 37.79343132036946 ], [ -122.42616355419159, 37.7927784962844 ], [ -122.42615282535553, 37.79263860465857 ], [ -122.42614209651947, 37.79250719107183 ], [ -122.42600798606873, 37.79188403313971 ], [ -122.42598116397858, 37.79176109660045 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42398023605347, 37.79016290297611 ], [ -122.42561638355255, 37.7899551776589 ], [ -122.4272632598877, 37.78974321244753 ], [ -122.42891013622285, 37.789535485950495 ], [ -122.43055164813995, 37.78932775886951 ], [ -122.4319839477539, 37.789145467276555 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42598116397858, 37.791761096600425 ], [ -122.42580950260162, 37.79087933887556 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4285614490509, 37.787814301082065 ], [ -122.42871701717377, 37.78857739291647 ], [ -122.42891013622284, 37.789535485950495 ], [ -122.42909252643584, 37.79045965241627 ], [ -122.42927491664885, 37.79134141514943 ], [ -122.42945194244383, 37.792218928191865 ], [ -122.42962896823882, 37.793100669930396 ], [ -122.4298059940338, 37.79397816207892 ], [ -122.42999374866484, 37.79489803396326 ], [ -122.43018686771391, 37.79585604504041 ], [ -122.43037462234496, 37.79678437135622 ], [ -122.430562376976, 37.797716924859415 ], [ -122.43075013160704, 37.79864946659016 ], [ -122.43082523345946, 37.7990140024299 ], [ -122.43093788623808, 37.799581996548376 ], [ -122.43110954761504, 37.800366160355566 ], [ -122.4311202764511, 37.80042974083997 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42158770561218, 37.795029443297494 ], [ -122.42314875125885, 37.79483020969929 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42615282535553, 37.79263860465855 ], [ -122.42451667785645, 37.792850561564016 ], [ -122.42295563220978, 37.79304980050074 ], [ -122.42280006408691, 37.79306251786141 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42314338684082, 37.79392729325345 ], [ -122.4246883392334, 37.79372805668306 ], [ -122.42632985115051, 37.79351610229493 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42314875125885, 37.79483020969929 ], [ -122.42330431938171, 37.794809014604034 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42280006408691, 37.79306251786141 ], [ -122.42122828960419, 37.79327023444296 ], [ -122.4195921421051, 37.7934779504405 ], [ -122.41797208786011, 37.79368142676982 ], [ -122.41793990135193, 37.79368566585406 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42632985115051, 37.79351610229493 ], [ -122.42798745632172, 37.79330838640464 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42798745632172, 37.79330838640464 ], [ -122.42815911769867, 37.79419011514147 ], [ -122.42834150791168, 37.79512270139288 ], [ -122.42853999137878, 37.79606375376797 ], [ -122.42872774600983, 37.79699207747368 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42798745632172, 37.79330838640464 ], [ -122.4280196428299, 37.79318121312238 ], [ -122.42793381214142, 37.79274034404906 ], [ -122.42788553237915, 37.7926725178043 ], [ -122.4279123544693, 37.792579256616065 ], [ -122.42789089679718, 37.79248175615706 ], [ -122.42783725261688, 37.792426647145035 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42783725261688, 37.792426647145035 ], [ -122.42781043052673, 37.792490234462946 ], [ -122.42783188819885, 37.79261740893458 ], [ -122.42788553237915, 37.7926725178043 ], [ -122.42785334587097, 37.79274882232528 ], [ -122.42791771888733, 37.79318969134799 ], [ -122.42798745632172, 37.79330838640464 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4108213186264, 37.791837402062676 ], [ -122.41076231002808, 37.79153217974085 ], [ -122.41062819957733, 37.79088357812059 ], [ -122.4105316400528, 37.79039182407786 ], [ -122.41044580936432, 37.78995941695693 ], [ -122.41025805473328, 37.78901828682906 ], [ -122.41016685962677, 37.78855195664898 ], [ -122.41007566452026, 37.78808138412048 ], [ -122.41002202033997, 37.787814301082065 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42615282535553, 37.79263860465855 ], [ -122.42783725261688, 37.79242664714506 ], [ -122.42808938026428, 37.792392733886466 ], [ -122.42945194244385, 37.792218928191865 ], [ -122.43109345436096, 37.79201120865472 ], [ -122.43198394775389, 37.791896750701035 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42798745632172, 37.79330838640464 ], [ -122.42962896823883, 37.793100669930396 ], [ -122.43126511573792, 37.79289295287215 ], [ -122.4319839477539, 37.79279969196218 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41812765598297, 37.794567390088325 ], [ -122.41814911365509, 37.79456315105469 ], [ -122.41892695426941, 37.79446141417424 ], [ -122.41976916790009, 37.79435967715371 ], [ -122.42140531539917, 37.794147724577606 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42069184780121, 37.79057835185864 ], [ -122.42088496685028, 37.79149402686194 ], [ -122.42106199264526, 37.792396973044646 ], [ -122.42122828960419, 37.79327023444296 ], [ -122.42140531539917, 37.794147724577606 ] ] }, "properties": { "class": "street", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42140531539917, 37.794147724577606 ], [ -122.42296099662781, 37.79394848860165 ], [ -122.42314338684082, 37.79392729325345 ] ] }, "properties": { "class": "street", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.79976002365667 ], [ -122.41015613079071, 37.800323773335606 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41722643375397, 37.805172690644405 ], [ -122.41800963878632, 37.80571096865078 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41096079349518, 37.800883280040885 ], [ -122.41130948066713, 37.801141838525915 ], [ -122.41149723529817, 37.80124780485665 ], [ -122.41243600845338, 37.80190055410142 ], [ -122.41266667842866, 37.80205738260592 ], [ -122.41290807724, 37.80218454060837 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41015613079071, 37.800323773335606 ], [ -122.41038680076599, 37.80048484388214 ], [ -122.41077303886414, 37.800756119798216 ], [ -122.41096079349518, 37.800883280040885 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42542326450348, 37.78899709006654 ], [ -122.42533206939697, 37.78853923851192 ], [ -122.42524087429047, 37.78807290530868 ], [ -122.42518723011017, 37.787814301082044 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41391122341156, 37.79045965241627 ], [ -122.41374492645264, 37.789548203916084 ], [ -122.41355180740356, 37.78860282917525 ], [ -122.41341233253479, 37.78794572301528 ], [ -122.41338551044464, 37.787814301082065 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41095542907715, 37.80077731318719 ], [ -122.4102795124054, 37.800311057224846 ], [ -122.40933001041412, 37.799649816449765 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42040753364563, 37.80571096865078 ], [ -122.42201149463654, 37.80549481023774 ], [ -122.42365837097168, 37.80528712802926 ], [ -122.42425918579102, 37.80521507488171 ], [ -122.42461860179901, 37.80516845221935 ], [ -122.42520332336426, 37.805096398955996 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41688847541809, 37.80521507488171 ], [ -122.41722643375397, 37.805172690644405 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41169035434723, 37.787814301082065 ], [ -122.41170108318329, 37.787873652951795 ], [ -122.41176009178162, 37.78815345398132 ], [ -122.41181910037994, 37.78848412655941 ], [ -122.41188883781433, 37.78881055829413 ], [ -122.41207659244537, 37.78974321244753 ], [ -122.4121570587158, 37.7901247493902 ], [ -122.41226971149443, 37.790675854829374 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42350280284882, 37.787814301082065 ], [ -122.42359399795532, 37.78828063591724 ], [ -122.42369055747986, 37.78874696780958 ], [ -122.42378175258636, 37.78920481807711 ], [ -122.42398023605347, 37.79016290297611 ], [ -122.42415189743042, 37.79109130082786 ], [ -122.42433965206148, 37.79197305602321 ], [ -122.42451667785646, 37.79285056156404 ], [ -122.42468833923341, 37.79372805668306 ], [ -122.42486000061037, 37.79460978041143 ], [ -122.42505848407747, 37.79552964443154 ], [ -122.42524087429048, 37.79642406344077 ], [ -122.42525160312654, 37.7964834083948 ], [ -122.42543935775758, 37.79741172682703 ], [ -122.42562711238863, 37.798344272410596 ], [ -122.42579877376558, 37.79920050844297 ], [ -122.42581486701967, 37.799276806221684 ], [ -122.42583096027376, 37.799348865162536 ], [ -122.42599189281465, 37.8001542250124 ], [ -122.42600262165071, 37.80020932826014 ], [ -122.42602407932283, 37.80029834111194 ], [ -122.4261099100113, 37.8007434037619 ], [ -122.42618501186375, 37.801052826690615 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41951704025269, 37.796212116787245 ], [ -122.42012321949005, 37.79614429372968 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42446303367615, 37.80132833916636 ], [ -122.4244898557663, 37.80144278250799 ], [ -122.42465615272522, 37.80220997218259 ], [ -122.42467224597931, 37.802290505443175 ], [ -122.42468833923338, 37.802379515786924 ], [ -122.42484390735625, 37.803218750897145 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41145431995392, 37.80112064524151 ], [ -122.41095542907715, 37.80077731318719 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41722643375397, 37.805172690644405 ], [ -122.41855680942535, 37.80500739188654 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41949558258057, 37.79613157689948 ], [ -122.41784870624542, 37.796335045920344 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41282761096954, 37.80571096865078 ], [ -122.41360545158385, 37.80561772392276 ], [ -122.41476953029631, 37.805473618202406 ], [ -122.41524159908295, 37.80541851888209 ], [ -122.41688847541809, 37.80521507488168 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42181837558746, 37.80456659339016 ], [ -122.42253720760345, 37.804473347217254 ], [ -122.42347061634064, 37.804358908571395 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42019295692444, 37.80478699296722 ], [ -122.42174863815309, 37.80457507030913 ], [ -122.42181837558746, 37.80456659339016 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41855680942535, 37.80500739188654 ], [ -122.42019295692444, 37.80478699296722 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.79754313168997 ], [ -122.40972697734833, 37.79749226531914 ], [ -122.41025805473328, 37.79741596569721 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41104662418365, 37.797314232745414 ], [ -122.41128802299501, 37.797254888458816 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42347061634064, 37.804358908571395 ], [ -122.42502093315125, 37.804159700135244 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.79104890848602 ], [ -122.41062819957732, 37.79088357812059 ], [ -122.41099834442137, 37.79083694641215 ], [ -122.41226971149443, 37.79067585482935 ], [ -122.41391122341155, 37.79045965241627 ], [ -122.41470515727995, 37.79036638843492 ], [ -122.4155741930008, 37.79025616721429 ], [ -122.41596579551695, 37.790205295826226 ], [ -122.41720497608183, 37.79004844215926 ], [ -122.41751074790955, 37.79000604921912 ], [ -122.41841733455658, 37.78988734885741 ], [ -122.41884648799896, 37.78983223791036 ], [ -122.4204933643341, 37.78962027234633 ], [ -122.42206513881683, 37.789421024161776 ], [ -122.4222207069397, 37.78940406684465 ], [ -122.42378175258636, 37.78920481807708 ], [ -122.42542326450348, 37.78899709006654 ], [ -122.4270647764206, 37.78878936147201 ], [ -122.42871701717375, 37.78857739291647 ], [ -122.43035852909087, 37.78836966314214 ], [ -122.43198394775389, 37.788161932783865 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43086814880371, 37.80343067744717 ], [ -122.4314957857132, 37.80338405365836 ], [ -122.4315494298935, 37.80338829218583 ], [ -122.43159770965576, 37.803405246293295 ], [ -122.43163526058197, 37.80343067744717 ], [ -122.4316620826721, 37.803464585638764 ], [ -122.43173718452452, 37.80362564933614 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42517650127411, 37.80413850771679 ], [ -122.4249941110611, 37.8031975582087 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42461860179901, 37.80134529374666 ], [ -122.42462933063507, 37.80129019134637 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43086814880371, 37.80343067744717 ], [ -122.43168354034424, 37.80327809039246 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42517650127411, 37.80413850771679 ], [ -122.42547690868378, 37.80410459983463 ], [ -122.42676973342896, 37.80394353718175 ], [ -122.4284166097641, 37.80374008911817 ], [ -122.43006348609924, 37.803532401975176 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42462933063507, 37.80129019134637 ], [ -122.42461860179901, 37.80125204350671 ], [ -122.42459177970888, 37.801141838525915 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43173718452454, 37.80362564933614 ], [ -122.43186593055727, 37.80424446974821 ], [ -122.43190348148346, 37.80441824715063 ], [ -122.4319839477539, 37.80481666209083 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42502093315125, 37.804159700135244 ], [ -122.42517650127411, 37.80413850771679 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42536962032318, 37.805075206806336 ], [ -122.42520332336426, 37.805096398955996 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43006348609924, 37.803532401975204 ], [ -122.43086814880373, 37.80343067744717 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42536962032318, 37.805075206806336 ], [ -122.42517650127411, 37.80413850771679 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42010712623596, 37.79606375376797 ], [ -122.41949558258057, 37.79613157689948 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42618501186371, 37.801052826690615 ], [ -122.4262011051178, 37.80115455449363 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43173718452454, 37.80362564933614 ], [ -122.4317479133606, 37.80354935604959 ], [ -122.4317479133606, 37.80347306268421 ], [ -122.43173718452454, 37.80339676924006 ], [ -122.43171572685242, 37.803337429840084 ], [ -122.43168354034424, 37.80327809039246 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42484390735626, 37.803218750897145 ], [ -122.42502093315125, 37.804159700135244 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42727398872375, 37.787814301082065 ], [ -122.42686629295349, 37.78786517411618 ], [ -122.42524087429047, 37.78807290530868 ], [ -122.42359399795532, 37.78828063591724 ], [ -122.42202758789062, 37.78847140841073 ], [ -122.42187738418578, 37.788492605324016 ], [ -122.42031097412108, 37.78870033475276 ], [ -122.4186587333679, 37.78891230295563 ], [ -122.4176502227783, 37.78903524423471 ], [ -122.41701722145079, 37.789111552511926 ], [ -122.41576731204985, 37.78929384418857 ], [ -122.4153810739517, 37.78934471620411 ], [ -122.41450130939484, 37.78945069945736 ], [ -122.41374492645264, 37.789548203916084 ], [ -122.41207659244537, 37.78974321244753 ], [ -122.41044580936432, 37.78995941695691 ], [ -122.40933001041412, 37.79010779223455 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42012321949005, 37.79614429372968 ], [ -122.42099225521089, 37.79608070955667 ], [ -122.42163598537446, 37.79600016952563 ], [ -122.42177009582521, 37.79594506313799 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41025805473328, 37.79741596569721 ], [ -122.41039216518402, 37.797445637781784 ], [ -122.41104662418365, 37.797314232745414 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4217700958252, 37.795945063138014 ], [ -122.42332577705383, 37.79574159304304 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41785407066345, 37.79641558558629 ], [ -122.41951704025269, 37.79621211678722 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4217700958252, 37.795945063138014 ], [ -122.42162525653839, 37.79593234627349 ], [ -122.42098689079285, 37.79601288637848 ], [ -122.42021441459654, 37.79605951482018 ], [ -122.42010712623595, 37.79606375376797 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4319839477539, 37.788068665902436 ], [ -122.43193030357361, 37.787814301082065 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4112719297409, 37.7971785885917 ], [ -122.41111636161804, 37.7972040218895 ], [ -122.41084277629852, 37.79726336621694 ], [ -122.41038680076599, 37.79736086036572 ], [ -122.41025805473328, 37.79741596569723 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41290807723999, 37.802184540608394 ], [ -122.41273105144501, 37.80200228073689 ], [ -122.41260766983032, 37.80192174716204 ], [ -122.41245746612549, 37.80182425903287 ], [ -122.41145431995392, 37.80112064524154 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42332577705383, 37.79574159304304 ], [ -122.42348670959474, 37.7957246371765 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4249941110611, 37.8031975582087 ], [ -122.42482781410217, 37.80237103861598 ], [ -122.42480635643005, 37.802269312488406 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42480635643005, 37.802269312488406 ], [ -122.42479026317598, 37.802197256396575 ], [ -122.42463469505311, 37.80142158930995 ], [ -122.42461860179903, 37.80134529374666 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41290807723999, 37.802184540608394 ], [ -122.41372346878053, 37.8027440332184 ], [ -122.4146729707718, 37.80340100776679 ], [ -122.41488218307497, 37.80354511753136 ] ] }, "properties": { "class": "main", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41722643375397, 37.805172690644405 ], [ -122.41683483123781, 37.804833615870386 ], [ -122.41614818573, 37.80434619315537 ], [ -122.41555809974672, 37.80395201417224 ], [ -122.41515040397645, 37.803668034461275 ], [ -122.41488218307497, 37.80354511753136 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42502093315125, 37.804159700135244 ], [ -122.42520332336426, 37.805096398955996 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41488218307495, 37.80354511753136 ], [ -122.41509675979614, 37.80374008911819 ], [ -122.41598725318907, 37.8043673855142 ], [ -122.41685092449187, 37.804977722839574 ], [ -122.41722643375395, 37.805172690644405 ] ] }, "properties": { "class": "main", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42618501186371, 37.801052826690615 ], [ -122.4260938167572, 37.80106554267365 ], [ -122.42494583129883, 37.801209656995105 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42173790931702, 37.787814301082065 ], [ -122.42177546024321, 37.7880177930084 ], [ -122.42187738418578, 37.788492605324016 ], [ -122.42196857929228, 37.78896741458879 ], [ -122.42206513881682, 37.7894210241618 ], [ -122.42223680019379, 37.79034519205912 ], [ -122.42225289344786, 37.79042573825485 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42314875125885, 37.79483020969929 ], [ -122.42332577705383, 37.79574159304304 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42443084716797, 37.80041278604948 ], [ -122.4244147539139, 37.800336489444156 ], [ -122.42426991462709, 37.79956928030996 ], [ -122.42424845695497, 37.79947602782785 ], [ -122.42423772811891, 37.79942092403308 ], [ -122.424076795578, 37.79862403379003 ], [ -122.42406070232393, 37.79854349653181 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43112027645111, 37.80042974083997 ], [ -122.43102371692657, 37.80044245693027 ], [ -122.42958068847656, 37.80062472065078 ], [ -122.42946803569794, 37.800637436707525 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42332577705383, 37.79574159304304 ], [ -122.42352962493896, 37.79669959318127 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42946803569794, 37.800637436707525 ], [ -122.42936611175537, 37.80065439144644 ], [ -122.42790699005127, 37.80083665464399 ], [ -122.42782652378084, 37.80084513199108 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4319839477539, 37.80031529592869 ], [ -122.43121147155762, 37.800417024747446 ], [ -122.43112027645111, 37.80042974083997 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42280006408691, 37.79306251786141 ], [ -122.42296099662781, 37.79394848860165 ], [ -122.42314875125885, 37.79483020969929 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42387294769287, 37.797615192322034 ], [ -122.42368519306183, 37.79667839862234 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42461860179901, 37.80134529374666 ], [ -122.42471516132356, 37.80133257781179 ], [ -122.4261099100113, 37.80116727045915 ], [ -122.4262011051178, 37.80115455449363 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42406070232391, 37.79854349653181 ], [ -122.42404460906982, 37.79847143680532 ], [ -122.42387294769287, 37.797615192322034 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42352962493896, 37.79669959318127 ], [ -122.42372810840607, 37.797636386612204 ], [ -122.42388904094696, 37.79848839204139 ], [ -122.42390513420105, 37.79856469055563 ], [ -122.42392659187317, 37.798657944188264 ], [ -122.42408215999603, 37.79942940154263 ], [ -122.42409288883209, 37.79949722158409 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42459177970886, 37.801141838525915 ], [ -122.42456495761871, 37.801052826690615 ], [ -122.42444694042206, 37.80048908257599 ], [ -122.42443084716797, 37.80041278604948 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42314338684082, 37.79392729325345 ], [ -122.42295563220978, 37.79304980050074 ], [ -122.42278397083281, 37.792168058155134 ], [ -122.42259621620177, 37.79129054450855 ], [ -122.42242455482481, 37.790396063350826 ], [ -122.42240846157073, 37.79032823495405 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42948412895203, 37.80073492640316 ], [ -122.42960214614868, 37.800722210363176 ], [ -122.43103444576263, 37.80053994688323 ], [ -122.4311363697052, 37.80052299211805 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42240846157074, 37.790328234954075 ], [ -122.4222207069397, 37.789404066844675 ], [ -122.42212414741516, 37.78894197845551 ], [ -122.42202758789062, 37.78847140841073 ], [ -122.42193639278412, 37.788000835369274 ], [ -122.42189347743988, 37.787814301082044 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42368519306183, 37.79667839862234 ], [ -122.42348670959473, 37.7957246371765 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42784261703491, 37.800942621412574 ], [ -122.42792308330536, 37.800929905408374 ], [ -122.42939829826355, 37.80074764244092 ], [ -122.42948412895203, 37.80073492640316 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42782652378082, 37.80084513199106 ], [ -122.42774605751038, 37.80085784800986 ], [ -122.42618501186371, 37.801052826690615 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42330431938171, 37.794809014604034 ], [ -122.42314338684082, 37.79392729325345 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42225289344788, 37.79042573825485 ], [ -122.42244064807892, 37.79130750139274 ], [ -122.42262303829193, 37.792185014837955 ], [ -122.42280006408691, 37.793062517861436 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42409288883209, 37.79949722158412 ], [ -122.42411434650421, 37.79959047403946 ], [ -122.42426991462708, 37.80035768295351 ], [ -122.42428600788116, 37.800429740839945 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4311363697052, 37.80052299211805 ], [ -122.43123292922974, 37.80051451473398 ], [ -122.4319839477539, 37.800417024747446 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42348670959473, 37.7957246371765 ], [ -122.42330431938171, 37.794809014604034 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4262011051178, 37.80115455449363 ], [ -122.42777287960052, 37.80095109874748 ], [ -122.42784261703491, 37.80094262141255 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42428600788116, 37.80042974083997 ], [ -122.42430210113525, 37.800510276041585 ], [ -122.42445766925812, 37.801256282156544 ], [ -122.42445766925812, 37.80129019134637 ], [ -122.42446303367615, 37.80132833916636 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42446303367615, 37.80132833916636 ], [ -122.42461860179901, 37.80134529374666 ] ] }, "properties": { "class": "motorway", "oneway": 1 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41119146347046, 37.79454619491767 ], [ -122.41031169891359, 37.79466064876697 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.792049361266564 ], [ -122.41245746612549, 37.79165511666101 ], [ -122.41312265396118, 37.791566093394444 ], [ -122.41411507129669, 37.79143891711325 ], [ -122.41567075252534, 37.79123967383262 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41686165332794, 37.79108282236141 ], [ -122.41681337356567, 37.79108706159474 ], [ -122.41678655147554, 37.79109130082786 ], [ -122.41675972938539, 37.79109130082786 ], [ -122.416689991951, 37.79108706159474 ], [ -122.41666853427888, 37.79108706159474 ], [ -122.41664707660676, 37.79108706159474 ], [ -122.41660952568058, 37.79109130082786 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40980207920074, 37.79514813539847 ], [ -122.4098128080368, 37.79517780839393 ], [ -122.40981817245483, 37.79520324238054 ], [ -122.4098289012909, 37.79523291535386 ], [ -122.40983963012695, 37.79525411032749 ], [ -122.40984499454497, 37.79528378328038 ], [ -122.40987181663512, 37.79545758176509 ], [ -122.40988254547118, 37.79549149361689 ], [ -122.40989863872527, 37.79552116647442 ], [ -122.40991473197933, 37.795542361365385 ], [ -122.40993618965145, 37.79556355625024 ], [ -122.40995764732357, 37.79557627317825 ], [ -122.40998446941371, 37.79558899010405 ], [ -122.41000592708583, 37.79559746805339 ], [ -122.41003274917598, 37.795601707027686 ], [ -122.41007030010218, 37.795601707027686 ], [ -122.41010248661036, 37.795601707027686 ], [ -122.41108417510982, 37.795474537692954 ], [ -122.41134166717524, 37.79543638684983 ], [ -122.41142213344568, 37.79542790888202 ], [ -122.41151869297022, 37.79541519192849 ], [ -122.41154551506037, 37.7954109529435 ], [ -122.41252720355982, 37.795292261264755 ], [ -122.41318166255945, 37.79519900338339 ], [ -122.41791844367975, 37.794592824285104 ], [ -122.41795599460596, 37.794592824285104 ], [ -122.41798281669611, 37.794592824285104 ], [ -122.41800427436823, 37.794597063317056 ], [ -122.41803109645835, 37.79460554138021 ], [ -122.41805255413047, 37.79461401944239 ], [ -122.41807401180259, 37.794626736533836 ], [ -122.41809546947471, 37.79464369265237 ], [ -122.41811692714683, 37.79466488779506 ], [ -122.41812765598289, 37.79469032195825 ], [ -122.41813838481897, 37.7947199951376 ], [ -122.41814911365503, 37.794745429281804 ], [ -122.4181652069091, 37.79483444871764 ], [ -122.41821348667136, 37.79508031136412 ], [ -122.41828322410575, 37.79541943091325 ], [ -122.41830468177787, 37.79552964443154 ], [ -122.41844415664664, 37.79622059466508 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.792049361266564 ], [ -122.41245746612549, 37.79165511666101 ], [ -122.41312265396118, 37.791566093394444 ], [ -122.41411507129669, 37.79143891711325 ], [ -122.41567075252534, 37.79123967383262 ], [ -122.4158638715744, 37.79121423848154 ], [ -122.41686165332794, 37.79108282236141 ], [ -122.41717278957367, 37.79104466925053 ], [ -122.41767168045044, 37.79098108068854 ], [ -122.41896450519562, 37.79081998941997 ], [ -122.41915762424469, 37.790798793174275 ], [ -122.42060601711273, 37.79061226595001 ], [ -122.42159843444824, 37.790489327294715 ], [ -122.42184519767761, 37.79045541314694 ], [ -122.42207050323486, 37.79042573825485 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41203904151917, 37.79793310603611 ], [ -122.41205513477325, 37.797767791075536 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41516649723053, 37.805028584055684 ], [ -122.41515040397645, 37.80512182952755 ], [ -122.41517186164857, 37.805227790148145 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41226971149445, 37.79517780839393 ], [ -122.41227507591248, 37.79520748137745 ], [ -122.41228580474854, 37.79523291535386 ], [ -122.41230189800261, 37.79525411032749 ], [ -122.41232335567473, 37.79526682730876 ], [ -122.41235017776488, 37.79527954428784 ], [ -122.41237699985503, 37.79528802227267 ], [ -122.4124091863632, 37.79529226126473 ], [ -122.41244137287138, 37.79529650025653 ], [ -122.41247892379756, 37.79529650025653 ], [ -122.41252720355983, 37.79529226126473 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41565465927124, 37.791209999255514 ], [ -122.4140989780426, 37.79141348183073 ], [ -122.41283297538757, 37.79157457180537 ], [ -122.41244673728943, 37.79162544225074 ], [ -122.41206049919128, 37.79166783426177 ], [ -122.41171181201935, 37.79171446544581 ], [ -122.40933001041412, 37.79202392619421 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4097591638565, 37.79493194607189 ], [ -122.40980207920074, 37.79514813539847 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41717278957367, 37.79104466925053 ], [ -122.41722106933594, 37.79104043001474 ], [ -122.41725862026213, 37.79104043001474 ], [ -122.41729080677032, 37.79104466925053 ], [ -122.41731762886046, 37.79104890848602 ], [ -122.41733908653258, 37.79105738695633 ], [ -122.41736590862273, 37.791074343894024 ], [ -122.41738200187679, 37.79108706159474 ], [ -122.41740345954894, 37.79110825775774 ], [ -122.417419552803, 37.79112945391467 ], [ -122.41742491722103, 37.791154889294944 ], [ -122.41743564605709, 37.79118880312169 ], [ -122.41774141788478, 37.79270219179405 ], [ -122.41791307926174, 37.79361784047711 ], [ -122.41791844367977, 37.7936347968272 ], [ -122.4179238080978, 37.79364751408718 ], [ -122.41792917251581, 37.79365599225931 ], [ -122.41796672344202, 37.79369838310532 ], [ -122.41797208786005, 37.79371533943691 ], [ -122.41797745227805, 37.79372805668306 ], [ -122.41798281669608, 37.79374077392701 ], [ -122.41800963878622, 37.79385946809832 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41511821746826, 37.804820900536086 ], [ -122.41518795490263, 37.80494381534272 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41800963878632, 37.79385946809832 ], [ -122.41799890995026, 37.79382131642118 ], [ -122.4179881811142, 37.7938001210365 ], [ -122.41797208786012, 37.793778925645704 ], [ -122.417950630188, 37.7937619693287 ], [ -122.41791844367982, 37.79374501300782 ], [ -122.41788089275362, 37.793732295764606 ], [ -122.41784870624544, 37.793723817601226 ], [ -122.4178057909012, 37.793719578519195 ], [ -122.41777360439302, 37.793719578519195 ], [ -122.41771996021272, 37.793723817601226 ], [ -122.41177618503572, 37.79447413129194 ], [ -122.41138458251955, 37.79452499974094 ], [ -122.41119146347047, 37.79454619491767 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42184519767761, 37.79045541314694 ], [ -122.42178618907928, 37.79045965241627 ], [ -122.42176473140717, 37.79045965241627 ], [ -122.42165207862854, 37.79045965241627 ], [ -122.42161989212036, 37.79045965241627 ], [ -122.42159307003023, 37.79046389168536 ], [ -122.4206006526947, 37.79058683038295 ], [ -122.41916298866272, 37.790769118420094 ], [ -122.41906642913818, 37.79078183617337 ], [ -122.41896450519562, 37.790794553924414 ], [ -122.41767704486847, 37.79095988448907 ], [ -122.41715669631958, 37.791019233832294 ], [ -122.41660952568056, 37.79109130082786 ], [ -122.4161159992218, 37.79115065006551 ], [ -122.41585314273834, 37.79118032466647 ], [ -122.41565465927124, 37.791209999255514 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40980207920074, 37.79514813539847 ], [ -122.40982353687286, 37.79527106630204 ], [ -122.40986108779907, 37.79546605972949 ], [ -122.40986645221709, 37.79549149361689 ], [ -122.40988254547118, 37.7955254054531 ], [ -122.40989863872527, 37.79554660034284 ], [ -122.40991473197933, 37.79555931727375 ], [ -122.40993082523342, 37.79557627317823 ], [ -122.40995228290554, 37.79558475112901 ], [ -122.40997374057766, 37.79559746805339 ], [ -122.4100005626678, 37.795605946001736 ], [ -122.41003274917598, 37.79561018497555 ], [ -122.41007030010218, 37.79561442394911 ], [ -122.41010785102839, 37.79561018497555 ], [ -122.41135776042933, 37.79544486481667 ], [ -122.41139531135553, 37.795440625833365 ], [ -122.41143286228171, 37.79544486481667 ], [ -122.41146504878989, 37.79545758176509 ], [ -122.41149187088004, 37.79546605972952 ], [ -122.41151869297019, 37.79548301565542 ], [ -122.41154015064231, 37.7955042105573 ], [ -122.41155624389638, 37.79553388340973 ], [ -122.41156697273244, 37.79556355625024 ], [ -122.4115777015685, 37.79559746805339 ], [ -122.41162061691276, 37.79583908920016 ], [ -122.41171717643729, 37.796296895521635 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.79285480069591 ], [ -122.4093461036682, 37.79296077891455 ], [ -122.4095070362091, 37.793804360113924 ], [ -122.40952312946318, 37.79385522902405 ], [ -122.40953922271727, 37.79392305418307 ], [ -122.40967869758605, 37.7945589120208 ], [ -122.40972161293028, 37.79475390732791 ], [ -122.40975916385649, 37.79493194607189 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41031169891357, 37.79466064876697 ], [ -122.41019904613495, 37.79467760487772 ], [ -122.40991473197937, 37.79471151708755 ], [ -122.40988790988922, 37.79471151708755 ], [ -122.4098664522171, 37.79471151708755 ], [ -122.40983963012695, 37.79471151708755 ], [ -122.40981817245483, 37.794703039036534 ], [ -122.40979671478271, 37.79469456098458 ], [ -122.40978062152864, 37.79468184390482 ], [ -122.40976452827455, 37.79466912682284 ], [ -122.40974843502049, 37.794647931681375 ], [ -122.4097377061844, 37.79462249750358 ], [ -122.40972697734834, 37.794592824285104 ], [ -122.40971088409428, 37.794550433952274 ], [ -122.40958213806157, 37.7939145760416 ], [ -122.40957140922548, 37.793850989949526 ], [ -122.40956068038942, 37.793791642880905 ], [ -122.40937829017643, 37.792956539788705 ], [ -122.40933001041417, 37.79268947437132 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41567075252533, 37.79123967383262 ], [ -122.41586387157439, 37.79121423848154 ], [ -122.41686165332793, 37.79108282236141 ], [ -122.41717278957366, 37.79104466925053 ], [ -122.41767168045043, 37.79098108068854 ], [ -122.4189645051956, 37.79081998941997 ], [ -122.41915762424468, 37.790798793174275 ], [ -122.42060601711272, 37.79061226595001 ], [ -122.42159843444823, 37.790489327294715 ], [ -122.4218451976776, 37.79045541314694 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41848170757294, 37.79621635572625 ], [ -122.41837441921234, 37.79570768130605 ], [ -122.41833686828613, 37.7955254054531 ], [ -122.41832077503204, 37.79541519192846 ], [ -122.41825640201569, 37.795109984386826 ], [ -122.41820812225342, 37.79487683888746 ], [ -122.41815984249116, 37.7946182584731 ], [ -122.4181491136551, 37.79456315105469 ], [ -122.41800963878632, 37.79385946809832 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41848707199097, 37.79640286880277 ], [ -122.41850852966309, 37.7965215586972 ], [ -122.41852462291718, 37.796602098159795 ], [ -122.41887331008911, 37.79833579477649 ], [ -122.41888403892517, 37.79838242175199 ], [ -122.4190503358841, 37.79919626967515 ], [ -122.41930782794952, 37.800476366493726 ], [ -122.41962969303131, 37.80207009841604 ], [ -122.42015540599823, 37.8046979855249 ], [ -122.42035388946533, 37.80566858469807 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41826713085175, 37.79511422338909 ], [ -122.41822957992555, 37.79493194607189 ], [ -122.41817057132722, 37.79462249750358 ], [ -122.41800963878632, 37.793825555497385 ], [ -122.41799354553224, 37.793740773926984 ], [ -122.41799354553224, 37.793719578519195 ], [ -122.41798281669618, 37.7937068612716 ], [ -122.41795599460603, 37.793643275000754 ], [ -122.41795063018803, 37.79363479682717 ], [ -122.41795063018803, 37.79362207956497 ], [ -122.41776823997502, 37.79268947437132 ], [ -122.41746783256535, 37.791154889294944 ], [ -122.41746783256535, 37.79112521468376 ], [ -122.41747319698338, 37.79109977929326 ], [ -122.41748392581944, 37.791074343894024 ], [ -122.4175000190735, 37.79104890848602 ], [ -122.41752147674562, 37.79103195154249 ], [ -122.41754293441774, 37.791019233832266 ], [ -122.41756975650789, 37.79100651611991 ], [ -122.41760194301607, 37.7909937984053 ], [ -122.41763412952425, 37.79098955916663 ], [ -122.41767168045045, 37.79098108068854 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42206513881683, 37.7904087811683 ], [ -122.42185592651367, 37.79043421679666 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4193024635315, 37.8002856249968 ], [ -122.41930782794951, 37.800311057224846 ], [ -122.41930782794951, 37.800336489444156 ], [ -122.41930782794951, 37.80036616035559 ], [ -122.4193024635315, 37.800417024747446 ], [ -122.4193024635315, 37.80043821823375 ], [ -122.4193024635315, 37.800459411713945 ], [ -122.41930782794951, 37.800476366493726 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42207050323486, 37.79042573825485 ], [ -122.42184519767761, 37.79045541314694 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41816520690918, 37.79483444871761 ], [ -122.41817057132721, 37.794851404788496 ], [ -122.41817593574524, 37.79486412183907 ], [ -122.41818130016325, 37.79487259987156 ], [ -122.41818666458128, 37.794881077903106 ], [ -122.4182081222534, 37.79489803396326 ], [ -122.41821885108946, 37.794910751005816 ], [ -122.41822421550746, 37.79491922903299 ], [ -122.4182295799255, 37.79493194607189 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42038607597351, 37.805664346301484 ], [ -122.42019295692444, 37.8046937470726 ], [ -122.41966187953949, 37.80206585981292 ], [ -122.41930246353151, 37.8002856249968 ], [ -122.41908252239227, 37.79919203090711 ], [ -122.41892158985138, 37.79837818293725 ], [ -122.41855680942535, 37.79659362032577 ], [ -122.41854071617126, 37.796504603009666 ], [ -122.41851925849915, 37.79639862987445 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42039680480957, 37.80571096865078 ], [ -122.42038607597351, 37.805664346301484 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42207050323486, 37.79042573825485 ], [ -122.42184519767761, 37.79045541314694 ], [ -122.42178618907928, 37.79045965241627 ], [ -122.42176473140717, 37.79045965241627 ], [ -122.42165207862854, 37.79045965241627 ], [ -122.42161989212036, 37.79045965241627 ], [ -122.42159307003023, 37.79046389168536 ], [ -122.4206006526947, 37.79058683038295 ], [ -122.41916298866272, 37.790769118420094 ], [ -122.41906642913818, 37.79078183617337 ], [ -122.41896450519562, 37.790794553924414 ], [ -122.41767704486847, 37.79095988448907 ], [ -122.41715669631958, 37.791019233832294 ], [ -122.41660952568056, 37.79109130082786 ], [ -122.4161159992218, 37.79115065006551 ], [ -122.41585314273834, 37.79118032466647 ], [ -122.41565465927124, 37.791209999255514 ], [ -122.4140989780426, 37.79141348183076 ], [ -122.41283297538757, 37.79157457180539 ], [ -122.41244673728943, 37.79162544225074 ], [ -122.41206049919128, 37.79166783426177 ], [ -122.41171181201935, 37.79171446544583 ], [ -122.40933001041412, 37.79202392619421 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42206513881683, 37.7904087811683 ], [ -122.42185592651367, 37.79043421679666 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41524159908295, 37.80522355172624 ], [ -122.41518795490263, 37.80494381534272 ], [ -122.4151074886322, 37.8045623549303 ], [ -122.41509139537811, 37.80447758568221 ], [ -122.41508066654205, 37.80441400868229 ], [ -122.41503238677979, 37.8042020849539 ], [ -122.41493582725525, 37.80371465807083 ], [ -122.41488218307495, 37.80354511753136 ], [ -122.41479635238647, 37.80343915449654 ], [ -122.41469442844391, 37.803358622488425 ], [ -122.41392731666565, 37.802824565896664 ], [ -122.41378784179688, 37.802727078959165 ], [ -122.4137020111084, 37.802667739021146 ], [ -122.41306364536284, 37.80222692656055 ], [ -122.41298317909241, 37.802142154631916 ], [ -122.41295099258423, 37.80207433701892 ], [ -122.41290807723998, 37.80198532630738 ], [ -122.41288661956786, 37.801887838262154 ], [ -122.4128758907318, 37.8018242590329 ], [ -122.41279006004332, 37.80143006658992 ], [ -122.41269886493681, 37.80098076941205 ], [ -122.4125701189041, 37.800336489444156 ], [ -122.41252720355986, 37.800111837870816 ], [ -122.4125164747238, 37.80003554095462 ], [ -122.41250038146971, 37.799950766510875 ], [ -122.41245210170746, 37.799760023656695 ], [ -122.41233408451079, 37.79917931460157 ], [ -122.41231799125671, 37.799090300401254 ], [ -122.41230726242065, 37.799030957541476 ], [ -122.41214632987975, 37.79823830191443 ], [ -122.41213560104369, 37.79816200306308 ], [ -122.41211950778961, 37.798094181795705 ], [ -122.41205513477325, 37.797767791075565 ], [ -122.41195321083069, 37.79726760509566 ], [ -122.41189420223236, 37.79699631636796 ], [ -122.41176009178162, 37.79628841765257 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42039680480957, 37.80571096865078 ], [ -122.42038607597351, 37.805664346301484 ], [ -122.42019295692444, 37.8046937470726 ], [ -122.41966187953949, 37.80206585981292 ], [ -122.41930246353151, 37.8002856249968 ], [ -122.41908252239227, 37.79919203090711 ], [ -122.41892158985138, 37.79837818293725 ], [ -122.41855680942535, 37.79659362032577 ], [ -122.41854071617126, 37.796504603009666 ], [ -122.41851925849915, 37.79639862987445 ], [ -122.41848170757295, 37.79621635572625 ], [ -122.41837441921234, 37.79570768130605 ], [ -122.41833686828615, 37.7955254054531 ], [ -122.41832077503206, 37.79541519192846 ], [ -122.4182564020157, 37.795109984386826 ], [ -122.41820812225343, 37.79487683888746 ], [ -122.41815984249119, 37.7946182584731 ], [ -122.41814911365513, 37.79456315105469 ], [ -122.41800963878633, 37.79385946809832 ], [ -122.41799890995027, 37.79382131642118 ], [ -122.41798818111421, 37.7938001210365 ], [ -122.41797208786015, 37.793778925645704 ], [ -122.41795063018803, 37.7937619693287 ], [ -122.41791844367982, 37.79374501300782 ], [ -122.41788089275364, 37.793732295764606 ], [ -122.41784870624546, 37.793723817601226 ], [ -122.41780579090123, 37.793719578519195 ], [ -122.41777360439302, 37.793719578519195 ], [ -122.41771996021272, 37.793723817601226 ], [ -122.41177618503572, 37.79447413129194 ], [ -122.41138458251957, 37.79452499974094 ], [ -122.4111914634705, 37.79454619491767 ], [ -122.41031169891362, 37.79466064876697 ], [ -122.410199046135, 37.79467760487772 ], [ -122.40991473197941, 37.79471151708755 ], [ -122.40988790988928, 37.79471151708755 ], [ -122.40986645221716, 37.79471151708755 ], [ -122.40983963012701, 37.79471151708755 ], [ -122.40981817245489, 37.794703039036534 ], [ -122.40979671478277, 37.79469456098458 ], [ -122.40978062152868, 37.79468184390482 ], [ -122.40976452827462, 37.79466912682284 ], [ -122.40974843502053, 37.794647931681375 ], [ -122.40973770618447, 37.79462249750358 ], [ -122.40972697734841, 37.794592824285104 ], [ -122.40971088409432, 37.794550433952274 ], [ -122.40958213806161, 37.7939145760416 ], [ -122.40957140922555, 37.793850989949526 ], [ -122.40956068038949, 37.793791642880905 ], [ -122.40937829017648, 37.792956539788705 ], [ -122.40933001041422, 37.79268947437132 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41171717643738, 37.79629689552161 ], [ -122.41185665130615, 37.79700055526198 ], [ -122.41191029548645, 37.797271843974116 ], [ -122.41203904151918, 37.79793310603611 ], [ -122.41208195686342, 37.79817048071708 ], [ -122.41228044033052, 37.79909877794875 ], [ -122.41239309310915, 37.79972187502673 ], [ -122.41245210170746, 37.799963482683594 ], [ -122.41246819496155, 37.80004401839361 ], [ -122.41247892379761, 37.80011607658604 ], [ -122.4125325679779, 37.8003449668486 ], [ -122.41266131401063, 37.800980769412 ], [ -122.41274714469911, 37.801430066589866 ], [ -122.41282224655153, 37.80182849764983 ], [ -122.41283297538759, 37.8019005541014 ], [ -122.41286516189577, 37.802014996556444 ], [ -122.41290807724, 37.80218454060837 ], [ -122.41298854351045, 37.802269312488356 ], [ -122.41312801837923, 37.80239223154157 ], [ -122.4135732650757, 37.80269317042896 ], [ -122.41365909576417, 37.802752510346544 ], [ -122.41380393505098, 37.80285847436647 ], [ -122.41465687751771, 37.80343915449651 ], [ -122.41480171680452, 37.80355359456754 ], [ -122.41488218307497, 37.803680749994044 ], [ -122.41491973400117, 37.80379518969071 ], [ -122.4150002002716, 37.8042063234344 ], [ -122.41504311561584, 37.8044182471506 ], [ -122.41505920886993, 37.804481824146876 ], [ -122.41507530212402, 37.804562354930276 ], [ -122.41511821746826, 37.80482090053606 ], [ -122.41516649723052, 37.805028584055634 ], [ -122.41519331932066, 37.805172690644376 ], [ -122.41524159908293, 37.80522355172619 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.79285480069591 ], [ -122.4093461036682, 37.79296077891455 ], [ -122.4095070362091, 37.793804360113924 ], [ -122.40952312946318, 37.79385522902405 ], [ -122.40953922271727, 37.79392305418307 ], [ -122.40967869758605, 37.7945589120208 ], [ -122.40972161293028, 37.79475390732791 ], [ -122.40975916385649, 37.79493194607189 ], [ -122.40980207920073, 37.79514813539847 ], [ -122.40981280803679, 37.79517780839393 ], [ -122.40981817245482, 37.79520324238054 ], [ -122.40982890129088, 37.79523291535386 ], [ -122.40983963012694, 37.79525411032749 ], [ -122.40984499454494, 37.79528378328038 ], [ -122.40987181663509, 37.79545758176509 ], [ -122.40988254547115, 37.79549149361689 ], [ -122.40989863872524, 37.79552116647442 ], [ -122.40991473197931, 37.795542361365385 ], [ -122.40993618965143, 37.79556355625024 ], [ -122.40995764732355, 37.79557627317825 ], [ -122.4099844694137, 37.79558899010405 ], [ -122.41000592708582, 37.79559746805339 ], [ -122.41003274917597, 37.795601707027686 ], [ -122.41007030010215, 37.795601707027686 ], [ -122.41010248661033, 37.795601707027686 ], [ -122.4110841751098, 37.795474537692954 ], [ -122.41134166717524, 37.79543638684983 ], [ -122.41142213344565, 37.79542790888202 ], [ -122.41151869297022, 37.79541519192849 ], [ -122.41154551506034, 37.7954109529435 ], [ -122.41252720355979, 37.795292261264755 ], [ -122.41318166255942, 37.79519900338339 ], [ -122.41791844367972, 37.794592824285104 ], [ -122.41795599460593, 37.794592824285104 ], [ -122.41798281669608, 37.794592824285104 ], [ -122.4180042743682, 37.794597063317056 ], [ -122.41803109645834, 37.79460554138021 ], [ -122.41805255413045, 37.79461401944239 ], [ -122.41807401180259, 37.794626736533836 ], [ -122.41809546947471, 37.79464369265237 ], [ -122.41811692714683, 37.79466488779506 ], [ -122.41812765598289, 37.79469032195825 ], [ -122.41813838481895, 37.7947199951376 ], [ -122.418149113655, 37.794745429281804 ], [ -122.41816520690908, 37.79483444871764 ], [ -122.41821348667135, 37.79508031136412 ], [ -122.41828322410574, 37.79541943091325 ], [ -122.41830468177785, 37.79552964443154 ], [ -122.41844415664663, 37.79622059466508 ], [ -122.41848707199087, 37.79640286880277 ], [ -122.41850852966299, 37.7965215586972 ], [ -122.41852462291708, 37.796602098159816 ], [ -122.41887331008901, 37.79833579477651 ], [ -122.41888403892507, 37.79838242175201 ], [ -122.419050335884, 37.79919626967518 ], [ -122.41930782794942, 37.800476366493726 ], [ -122.41962969303121, 37.80207009841606 ], [ -122.42015540599813, 37.8046979855249 ], [ -122.42035388946523, 37.8056685846981 ], [ -122.42035925388325, 37.80571096865078 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40933001041412, 37.79285480069591 ], [ -122.4093461036682, 37.79296077891455 ], [ -122.4095070362091, 37.793804360113924 ], [ -122.40952312946318, 37.79385522902405 ], [ -122.40953922271727, 37.79392305418307 ], [ -122.40967869758605, 37.7945589120208 ], [ -122.40972161293028, 37.79475390732791 ], [ -122.40975916385649, 37.79493194607189 ], [ -122.40980207920073, 37.79514813539847 ], [ -122.40982353687285, 37.79527106630204 ], [ -122.40986108779906, 37.79546605972949 ], [ -122.40986645221706, 37.79549149361689 ], [ -122.40988254547115, 37.7955254054531 ], [ -122.40989863872524, 37.79554660034284 ], [ -122.40991473197931, 37.79555931727375 ], [ -122.4099308252334, 37.79557627317823 ], [ -122.40995228290552, 37.79558475112901 ], [ -122.40997374057764, 37.79559746805339 ], [ -122.41000056266779, 37.795605946001736 ], [ -122.41003274917597, 37.79561018497555 ], [ -122.41007030010215, 37.79561442394911 ], [ -122.41010785102836, 37.79561018497555 ], [ -122.4113577604293, 37.79544486481667 ], [ -122.4113953113555, 37.795440625833365 ], [ -122.4114328622817, 37.79544486481667 ], [ -122.41146504878989, 37.79545758176509 ], [ -122.41149187088003, 37.79546605972952 ], [ -122.41151869297018, 37.79548301565542 ], [ -122.4115401506423, 37.7955042105573 ], [ -122.41155624389638, 37.79553388340973 ], [ -122.41156697273244, 37.79556355625024 ], [ -122.4115777015685, 37.79559746805339 ], [ -122.41162061691274, 37.79583908920016 ], [ -122.41171717643728, 37.796296895521635 ], [ -122.41185665130605, 37.79700055526198 ], [ -122.41191029548635, 37.797271843974144 ], [ -122.41203904151908, 37.79793310603611 ], [ -122.41208195686332, 37.798170480717104 ], [ -122.41228044033042, 37.79909877794875 ], [ -122.41239309310905, 37.799721875026755 ], [ -122.41245210170736, 37.79996348268362 ], [ -122.41246819496145, 37.80004401839364 ], [ -122.41247892379751, 37.800116076586065 ], [ -122.4125325679778, 37.80034496684863 ], [ -122.41266131401053, 37.80098076941203 ], [ -122.41274714469901, 37.80143006658992 ], [ -122.41282224655143, 37.80182849764988 ], [ -122.41283297538749, 37.80190055410142 ], [ -122.41286516189567, 37.80201499655647 ], [ -122.4129080772399, 37.80218454060837 ], [ -122.41298854351035, 37.802269312488384 ], [ -122.41312801837913, 37.80239223154157 ], [ -122.4135732650756, 37.80269317042896 ], [ -122.41365909576407, 37.802752510346544 ], [ -122.41380393505088, 37.802858474366495 ], [ -122.41465687751761, 37.80343915449654 ], [ -122.41480171680442, 37.80355359456757 ], [ -122.41488218307487, 37.803680749994065 ], [ -122.41491973400106, 37.80379518969073 ], [ -122.4150002002715, 37.8042063234344 ], [ -122.41504311561575, 37.80441824715063 ], [ -122.41505920886983, 37.804481824146905 ], [ -122.41507530212392, 37.8045623549303 ], [ -122.41511821746816, 37.804820900536086 ], [ -122.41516649723042, 37.80502858405566 ], [ -122.41519331932057, 37.805172690644405 ], [ -122.41524159908283, 37.80522355172624 ], [ -122.41518795490254, 37.80494381534269 ], [ -122.41510748863209, 37.8045623549303 ], [ -122.415091395378, 37.80447758568221 ], [ -122.41508066654194, 37.804414008682265 ], [ -122.41503238677969, 37.80420208495388 ], [ -122.41493582725514, 37.80371465807083 ], [ -122.41488218307484, 37.80354511753136 ], [ -122.41479635238636, 37.80343915449654 ], [ -122.4146944284438, 37.8033586224884 ], [ -122.41392731666554, 37.802824565896664 ], [ -122.41378784179676, 37.80272707895914 ], [ -122.41370201110828, 37.802667739021146 ], [ -122.41306364536274, 37.80222692656055 ], [ -122.4129831790923, 37.80214215463189 ], [ -122.41295099258411, 37.8020743370189 ], [ -122.41290807723988, 37.80198532630738 ], [ -122.41288661956776, 37.801887838262154 ], [ -122.4128758907317, 37.80182425903287 ], [ -122.41279006004319, 37.80143006658992 ], [ -122.41269886493671, 37.80098076941203 ], [ -122.41257011890397, 37.800336489444156 ], [ -122.41252720355973, 37.800111837870794 ], [ -122.41251647472367, 37.800035540954596 ], [ -122.41250038146958, 37.799950766510875 ], [ -122.41245210170734, 37.79976002365667 ], [ -122.41233408451066, 37.79917931460154 ], [ -122.4123179912566, 37.799090300401254 ], [ -122.41230726242054, 37.799030957541454 ], [ -122.41214632987962, 37.79823830191443 ], [ -122.41213560104356, 37.79816200306305 ], [ -122.4121195077895, 37.798094181795705 ], [ -122.41205513477314, 37.797767791075536 ], [ -122.41195321083057, 37.79726760509566 ], [ -122.41189420223225, 37.79699631636796 ], [ -122.4117600917815, 37.79628841765255 ], [ -122.411668896675, 37.79583908920016 ], [ -122.4115777015685, 37.79538975801483 ], [ -122.4115401506423, 37.79519052538833 ], [ -122.4114328622817, 37.79468608293166 ], [ -122.41142213344564, 37.79465217071015 ], [ -122.41140604019155, 37.794626736533836 ], [ -122.41138994693746, 37.79460130234873 ], [ -122.41136312484733, 37.794584346220475 ], [ -122.41133630275718, 37.794567390088325 ], [ -122.41129875183097, 37.79455467298668 ], [ -122.41126120090479, 37.794550433952274 ], [ -122.41122364997858, 37.79454619491767 ], [ -122.4111914634704, 37.79454619491767 ], [ -122.41031169891352, 37.79466064876697 ], [ -122.4101990461349, 37.79467760487772 ], [ -122.40991473197931, 37.79471151708752 ], [ -122.40988790988918, 37.79471151708752 ], [ -122.40986645221706, 37.79471151708752 ], [ -122.40983963012691, 37.79471151708752 ], [ -122.40981817245479, 37.794703039036534 ], [ -122.40979671478267, 37.79469456098458 ], [ -122.40978062152858, 37.79468184390479 ], [ -122.40976452827452, 37.79466912682284 ], [ -122.40974843502043, 37.794647931681375 ], [ -122.40973770618437, 37.79462249750358 ], [ -122.40972697734831, 37.794592824285075 ], [ -122.40971088409422, 37.794550433952274 ], [ -122.40958213806151, 37.7939145760416 ], [ -122.40957140922545, 37.793850989949526 ], [ -122.40956068038939, 37.79379164288088 ], [ -122.40937829017638, 37.792956539788705 ], [ -122.40933001041412, 37.79268947437132 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41312265396118, 37.791566093394444 ], [ -122.41306900978088, 37.79157033260003 ], [ -122.4130368232727, 37.79157457180537 ], [ -122.41300463676453, 37.79157457180537 ], [ -122.41296172142029, 37.79157033260003 ], [ -122.41292953491211, 37.79157033260003 ], [ -122.41289734840392, 37.79157033260003 ], [ -122.41286516189574, 37.79157457180537 ], [ -122.41283297538756, 37.79157457180537 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41031169891357, 37.79466064876697 ], [ -122.41026878356934, 37.79466912682284 ], [ -122.41024196147919, 37.79467760487772 ], [ -122.41022050380707, 37.79468184390482 ], [ -122.41019904613495, 37.79468608293166 ], [ -122.40991473197937, 37.79471999513757 ], [ -122.40988790988922, 37.794724234162196 ], [ -122.4098664522171, 37.79473271221077 ], [ -122.40984499454498, 37.79474119025835 ], [ -122.40981817245483, 37.79475390732791 ], [ -122.40980207920076, 37.79477086341726 ], [ -122.40978598594667, 37.794783580481706 ], [ -122.40977525711061, 37.794800536564246 ], [ -122.40975916385655, 37.79482597068075 ], [ -122.40975379943852, 37.79485564380559 ], [ -122.40975379943852, 37.794881077903106 ], [ -122.40975916385655, 37.79493194607191 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42035388946533, 37.80566858469807 ], [ -122.42035925388335, 37.80571096865078 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4117761850357, 37.79447413129197 ], [ -122.41181910037994, 37.79446989225296 ], [ -122.4118673801422, 37.79446989225296 ], [ -122.4119049310684, 37.79447837033072 ], [ -122.41193711757658, 37.79448684840749 ], [ -122.41196393966673, 37.79449956552084 ], [ -122.41199076175688, 37.794516521668555 ], [ -122.41200685501094, 37.794533477812365 ], [ -122.41202831268306, 37.79455467298668 ], [ -122.41203904151912, 37.7945843462205 ], [ -122.41204977035518, 37.79461401944236 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41176009178162, 37.79628841765255 ], [ -122.41166889667511, 37.79583908920013 ], [ -122.4115777015686, 37.79538975801483 ], [ -122.41154015064241, 37.79519052538833 ], [ -122.41143286228181, 37.794686082931634 ], [ -122.41142213344574, 37.79465217071015 ], [ -122.41140604019166, 37.79462673653381 ], [ -122.41138994693758, 37.79460130234873 ], [ -122.41136312484745, 37.794584346220475 ], [ -122.4113363027573, 37.794567390088325 ], [ -122.4112987518311, 37.79455467298668 ], [ -122.4112612009049, 37.794550433952274 ], [ -122.4112236499787, 37.79454619491767 ], [ -122.41119146347052, 37.79454619491767 ] ] }, "properties": { "class": "minor_rail", "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41849780082703, 37.79639862987445 ], [ -122.41846024990083, 37.79621635572625 ] ] }, "properties": { "class": "street", "layer": 1, "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41861045360565, 37.79641982451364 ], [ -122.41856217384338, 37.79616972738355 ] ] }, "properties": { "class": "path", "layer": 1, "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41839587688446, 37.79644525807265 ], [ -122.41833150386809, 37.79618244420722 ] ] }, "properties": { "class": "path", "layer": 1, "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41844415664673, 37.79622059466506 ], [ -122.41848707199097, 37.79640286880277 ] ] }, "properties": { "class": "minor_rail", "layer": 1, "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41851925849915, 37.79639862987445 ], [ -122.41848170757295, 37.79621635572625 ] ] }, "properties": { "class": "minor_rail", "layer": 1, "oneway": 0 } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4290120601654, 37.806321294872326 ] }, "properties": { "area": 420936.875, "class": "park", "name": "Fort Mason", "name_de": "Fort Mason", "name_en": "Fort Mason", "name_es": "Fort Mason", "name_fr": "Fort Mason" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43312656879425, 37.80212943883419 ] }, "properties": { "area": 78644.2890625, "class": "park", "name": "Moscone Recreation Center", "name_de": "Moscone Recreation Center", "name_en": "Moscone Recreation Center", "name_es": "Moscone Recreation Center", "name_fr": "Moscone Recreation Center" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42762804031372, 37.791566093394444 ] }, "properties": { "area": 74781.1484375, "class": "park", "name": "Lafayette Park", "name_de": "Lafayette Park", "name_en": "Lafayette Park", "name_es": "Lafayette Park", "name_fr": "Lafayette Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42220997810364, 37.80701214416185 ] }, "properties": { "area": 54851.48046875, "class": "park", "name": "Aquatic Park", "name_de": "Aquatic Park", "name_en": "Aquatic Park", "name_es": "Aquatic Park", "name_fr": "Aquatic Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43235409259796, 37.790641940767166 ] }, "properties": { "area": 46714.70703125, "class": "hospital", "name": "CPMC Pacific Campus", "name_de": "CPMC Pacific Campus", "name_en": "CPMC Pacific Campus", "name_es": "CPMC Pacific Campus", "name_fr": "CPMC Pacific Campus" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43551909923553, 37.80181578179817 ] }, "properties": { "area": 37927.9453125, "class": "school", "name": "Marina Middle School", "name_de": "Marina Middle School", "name_en": "Marina Middle School", "name_es": "Marina Middle School", "name_fr": "Marina Middle School" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40603625774384, 37.80274827178258 ] }, "properties": { "area": 37910.67578125, "class": "park", "name": "Pioneer Park", "name_de": "Pioneer Park", "name_en": "Pioneer Park", "name_es": "Pioneer Park", "name_fr": "Pioneer Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42033243179321, 37.801391918822475 ] }, "properties": { "area": 18318.51953125, "class": "park", "name": "George Sterling Park", "name_de": "George Sterling Park", "name_en": "George Sterling Park", "name_es": "George Sterling Park", "name_fr": "George Sterling Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41092324256897, 37.80479970830737 ] }, "properties": { "area": 17887.583984375, "class": "school", "name": "Francisco Middle School", "name_de": "Francisco Middle School", "name_en": "Francisco Middle School", "name_es": "Francisco Middle School", "name_fr": "Francisco Middle School" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41206049919128, 37.802493957499856 ] }, "properties": { "area": 15649.849609375, "class": "park", "name": "North Beach Playground", "name_de": "North Beach Playground", "name_en": "North Beach Playground", "name_es": "North Beach Playground", "name_fr": "North Beach Playground" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.407506108284, 37.7879372441879 ] }, "properties": { "area": 14722.525390625, "class": "park", "name": "Union Square", "name_de": "Union Square", "name_en": "Union Square", "name_es": "Union Square", "name_fr": "Union Square" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41007566452026, 37.80084513199106 ] }, "properties": { "area": 14162.384765625, "class": "park", "name": "Washington Square Park", "name_de": "Washington Square Park", "name_en": "Washington Square Park", "name_es": "Washington Square Park", "name_fr": "Washington Square Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4165290594101, 37.789603315074956 ] }, "properties": { "area": 13636.7626953125, "class": "hospital", "name": "Saint Francis Memorial Hospital", "name_de": "Saint Francis Memorial Hospital", "name_en": "Saint Francis Memorial Hospital", "name_es": "Saint Francis Memorial Hospital", "name_fr": "Saint Francis Memorial Hospital" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40883648395538, 37.794647931681375 ] }, "properties": { "area": 12502.6455078125, "class": "school", "name": "Gordon J. Lau Elementary School", "name_de": "Gordon J. Lau Elementary School", "name_en": "Gordon J. Lau Elementary School", "name_es": "Gordon J. Lau Elementary School", "name_fr": "Gordon J. Lau Elementary School" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42612063884735, 37.79780594071465 ] }, "properties": { "area": 10926.486328125, "class": "school", "name": "Sherman Elementary School", "name_de": "Sherman Elementary School", "name_en": "Sherman Elementary School", "name_es": "Sherman Elementary School", "name_fr": "Sherman Elementary School" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42436647415161, 37.80485480808938 ] }, "properties": { "area": 10491.86328125, "class": "pitch", "name": "George White Field", "name_de": "George White Field", "name_en": "George White Field", "name_es": "George White Field", "name_fr": "George White Field" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4209600687027, 37.80437586245604 ] }, "properties": { "area": 9823.4970703125, "class": "park", "name": "Russian Hill Park", "name_de": "Russian Hill Park", "name_en": "Russian Hill Park", "name_es": "Russian Hill Park", "name_fr": "Russian Hill Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40533351898193, 37.79483444871761 ] }, "properties": { "area": 8338.2763671875, "class": "park", "name": "Portsmouth Square", "name_de": "Portsmouth Square", "name_en": "Portsmouth Square", "name_es": "Portsmouth Square", "name_fr": "Portsmouth Square" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40746855735779, 37.7879414836017 ] }, "properties": { "area": 7855.46435546875, "class": "parking", "name": "Union Square Garage", "name_de": "Union Square Garage", "name_en": "Union Square Garage", "name_es": "Union Square Garage", "name_fr": "Union Square Garage" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41215705871582, 37.792168058155134 ] }, "properties": { "area": 6761.63525390625, "class": "park", "name": "Huntington Park", "name_de": "Huntington Park", "name_en": "Huntington Park", "name_es": "Huntington Park", "name_fr": "Huntington Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40516722202301, 37.792045122088425 ] }, "properties": { "area": 6754.05224609375, "class": "park", "name": "Saint Mary's Square", "name_de": "Saint Mary's Square", "name_en": "Saint Mary's Square", "name_es": "Saint Mary's Square", "name_fr": "Saint Mary's Square" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41188883781433, 37.784486280685954 ] }, "properties": { "area": 5962.169921875, "class": "park", "name": "Boeddeker Park", "name_de": "Boeddeker Park", "name_en": "Boeddeker Park", "name_es": "Boeddeker Park", "name_fr": "Boeddeker Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42767095565796, 37.79746259325332 ] }, "properties": { "area": 5467.72900390625, "class": "park", "name": "Allyne Park", "name_de": "Allyne Park", "name_en": "Allyne Park", "name_es": "Allyne Park", "name_fr": "Allyne Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41339087486267, 37.79822982426816 ] }, "properties": { "area": 5286.7763671875, "class": "park", "name": "Ina Coolbrith Park", "name_de": "Ina Coolbrith Park", "name_en": "Ina Coolbrith Park", "name_es": "Ina Coolbrith Park", "name_fr": "Ina Coolbrith Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42066502571106, 37.795767026835556 ] }, "properties": { "area": 5055.89599609375, "class": "park", "name": "Helen Wills Playground", "name_de": "Helen Wills Playground", "name_en": "Helen Wills Playground", "name_es": "Helen Wills Playground", "name_fr": "Helen Wills Playground" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41659343242645, 37.80190055410142 ] }, "properties": { "area": 4614.470703125, "class": "school", "name": "Yick Wo Elementary School", "name_de": "Yick Wo Elementary School", "name_en": "Yick Wo Elementary School", "name_es": "Yick Wo Elementary School", "name_fr": "Yick Wo Elementary School" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40673899650574, 37.80204466679365 ] }, "properties": { "area": 4535.21484375, "class": "school", "name": "Garfield Elementary School", "name_de": "Garfield Elementary School", "name_en": "Garfield Elementary School", "name_es": "Garfield Elementary School", "name_fr": "Garfield Elementary School" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41504311561584, 37.80095109874748 ] }, "properties": { "area": 4380.76220703125, "class": "school", "name": "Sarah B. Cooper Child Development Center", "name_de": "Sarah B. Cooper Child Development Center", "name_en": "Sarah B. Cooper Child Development Center", "name_es": "Sarah B. Cooper Child Development Center", "name_fr": "Sarah B. Cooper Child Development Center" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41178691387177, 37.794211310414276 ] }, "properties": { "area": 4241.5634765625, "class": "park", "name": "Chinese Recreation Center", "name_de": "Chinese Recreation Center", "name_en": "Chinese Recreation Center", "name_es": "Chinese Recreation Center", "name_fr": "Chinese Recreation Center" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41104662418365, 37.79760247574503 ] }, "properties": { "area": 3482.419677734375, "class": "school", "name": "Jean Parker School", "name_de": "Jean Parker School", "name_en": "Jean Parker School", "name_es": "Jean Parker School", "name_fr": "Jean Parker School" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40708231925964, 37.79358816685511 ] }, "properties": { "area": 3241.57275390625, "class": "park", "name": "Willie \"Woo Woo\" Wong Park", "name_de": "Willie \"Woo Woo\" Wong Park", "name_en": "Willie \"Woo Woo\" Wong Park", "name_es": "Willie \"Woo Woo\" Wong Park", "name_fr": "Willie \"Woo Woo\" Wong Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42011785507202, 37.80156570293673 ] }, "properties": { "area": 3144.7783203125, "class": "pitch", "name": "Alice Marble Tennis Courts", "name_de": "Alice Marble Tennis Courts", "name_en": "Alice Marble Tennis Courts", "name_es": "Alice Marble Tennis Courts", "name_fr": "Alice Marble Tennis Courts" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41690993309021, 37.801116406583915 ] }, "properties": { "area": 2637.12255859375, "class": "park", "name": "Michelangelo Playground", "name_de": "Michelangelo Playground", "name_en": "Michelangelo Playground", "name_es": "Michelangelo Playground", "name_fr": "Michelangelo Playground" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40846633911133, 37.78405807864497 ] }, "properties": { "area": 2256.60009765625, "class": "park", "name": "Hallidie Plaza", "name_de": "Hallidie Plaza", "name_en": "Hallidie Plaza", "name_es": "Hallidie Plaza", "name_fr": "Hallidie Plaza" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41035461425781, 37.795826372317386 ] }, "properties": { "area": 2005.4078369140625, "class": "park", "name": "Woh Hei Yuen Recreation Center", "name_de": "Woh Hei Yuen Recreation Center", "name_en": "Woh Hei Yuen Recreation Center", "name_es": "Woh Hei Yuen Recreation Center", "name_fr": "Woh Hei Yuen Recreation Center" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40888476371765, 37.79552116647442 ] }, "properties": { "area": 1817.8153076171875, "class": "hospital", "name": "Chinese Hospital", "name_de": "Chinese Hospital", "name_en": "Chinese Hospital", "name_es": "Chinese Hospital", "name_fr": "Chinese Hospital" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40505993366241, 37.80187936103475 ] }, "properties": { "area": 1763.20166015625, "class": "park", "name": "Filbert Steeps Gargen", "name_de": "Filbert Steeps Gargen", "name_en": "Filbert Steeps Gargen", "name_es": "Filbert Steeps Gargen", "name_fr": "Filbert Steeps Gargen" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4178808927536, 37.80290509848712 ] }, "properties": { "area": 1628.5638427734375, "class": "park", "name": "Fay Park", "name_de": "Fay Park", "name_en": "Fay Park", "name_es": "Fay Park", "name_fr": "Fay Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41820275783539, 37.785406270739166 ] }, "properties": { "area": 1243.2176513671875, "class": "park", "name": "O'Farrell-Larkin Mini-Park", "name_de": "O'Farrell-Larkin Mini-Park", "name_en": "O'Farrell-Larkin Mini-Park", "name_es": "O'Farrell-Larkin Mini-Park", "name_fr": "O'Farrell-Larkin Mini-Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41145431995392, 37.78912427055049 ] }, "properties": { "area": 1096.6558837890625, "class": "parking", "name": "California Parking", "name_de": "California Parking", "name_en": "California Parking", "name_es": "California Parking", "name_fr": "California Parking" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41743564605713, 37.796441019146776 ] }, "properties": { "area": 944.394775390625, "class": "park", "name": "Broadway Tunnel West Mini Park", "name_de": "Broadway Tunnel West Mini Park", "name_en": "Broadway Tunnel West Mini Park", "name_es": "Broadway Tunnel West Mini Park", "name_fr": "Broadway Tunnel West Mini Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43233263492584, 37.78646615291675 ] }, "properties": { "area": 668.4193725585938, "class": "park", "name": "Cottage Row Mini Park", "name_de": "Cottage Row Mini Park", "name_en": "Cottage Row Mini Park", "name_es": "Cottage Row Mini Park", "name_fr": "Cottage Row Mini Park" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41070866584778, 37.80046365040925 ] }, "properties": { "area": 511.5633850097656, "class": "park", "name": "Marini Plaza", "name_de": "Marini Plaza", "name_en": "Marini Plaza", "name_es": "Marini Plaza", "name_fr": "Marini Plaza" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40694284439087, 37.78496111569185 ] }, "properties": { "class": "light", "group": "name", "name": "Powell Muni", "name_de": "Powell Muni", "name_en": "Powell Muni", "name_es": "Powell Muni", "name_fr": "Powell Muni", "network": "light" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40691065788269, 37.78493143859335 ] }, "properties": { "class": "light", "group": "name", "name": "Powell", "name_de": "Powell", "name_en": "Powell", "name_es": "Powell", "name_fr": "Powell", "network": "light" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40694284439087, 37.78496111569185 ] }, "properties": { "class": "light", "group": "network", "name": "Powell Muni", "name_de": "Powell Muni", "name_en": "Powell Muni", "name_es": "Powell Muni", "name_fr": "Powell Muni", "network": "light" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40691065788269, 37.78493143859335 ] }, "properties": { "class": "light", "group": "network", "name": "Powell", "name_de": "Powell", "name_en": "Powell", "name_es": "Powell", "name_fr": "Powell", "network": "light" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42946803569794, 37.800637436707525 ], [ -122.42936611175537, 37.80065439144644 ], [ -122.42790699005127, 37.80083665464399 ], [ -122.42782652378084, 37.80084513199108 ] ] }, "properties": { "class": "motorway", "len": 184.737921023889, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42618501186371, 37.801052826690615 ], [ -122.4260938167572, 37.80106554267365 ], [ -122.42494583129883, 37.801209656995105 ] ] }, "properties": { "class": "motorway", "len": 139.71186669914354, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43604481220245, 37.79980241100018 ], [ -122.435964345932, 37.79981512719847 ], [ -122.43449985980989, 37.80000163118878 ], [ -122.43440330028534, 37.800010108631696 ] ] }, "properties": { "class": "motorway", "len": 184.76161130760062, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42948412895203, 37.80073492640316 ], [ -122.42960214614868, 37.800722210363176 ], [ -122.43103444576263, 37.80053994688323 ], [ -122.4311363697052, 37.80052299211805 ] ] }, "properties": { "class": "motorway", "len": 186.47783273984427, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4311363697052, 37.80052299211805 ], [ -122.43123292922974, 37.80051451473398 ], [ -122.43267595767975, 37.800332250741526 ], [ -122.43278324604034, 37.80031529592869 ] ] }, "properties": { "class": "motorway", "len": 186.11676199570874, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4262011051178, 37.80115455449363 ], [ -122.42777287960052, 37.80095109874748 ], [ -122.42784261703491, 37.80094262141255 ] ] }, "properties": { "class": "motorway", "len": 185.3458172590662, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43112027645111, 37.80042974083997 ], [ -122.43102371692657, 37.80044245693027 ], [ -122.42958068847656, 37.80062472065078 ], [ -122.42946803569794, 37.800637436707525 ] ] }, "properties": { "class": "motorway", "len": 186.61022763211224, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42782652378082, 37.80084513199106 ], [ -122.42774605751038, 37.80085784800986 ], [ -122.42618501186371, 37.801052826690615 ] ] }, "properties": { "class": "motorway", "len": 185.30551717047499, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43278324604034, 37.80031529592869 ], [ -122.43287980556488, 37.80030257981648 ], [ -122.43431210517883, 37.800120315301065 ], [ -122.43443012237549, 37.80010336043956 ] ] }, "properties": { "class": "motorway", "len": 185.4256321395207, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4371337890625, 37.79966253267434 ], [ -122.43614137172699, 37.79979393353342 ], [ -122.43604481220244, 37.79980241100018 ] ] }, "properties": { "class": "motorway", "len": 185.1311305635713, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43440330028534, 37.800010108631696 ], [ -122.4343067407608, 37.80002282479424 ], [ -122.43285834789276, 37.80020508955023 ], [ -122.43276715278625, 37.800213566969795 ] ] }, "properties": { "class": "motorway", "len": 184.66599632077046, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43443012237549, 37.80010336043956 ], [ -122.43452668190002, 37.800094883007326 ], [ -122.43597507476807, 37.79990837925248 ], [ -122.43606090545656, 37.79989566307024 ] ] }, "properties": { "class": "motorway", "len": 184.20456691225687, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42784261703491, 37.800942621412574 ], [ -122.42792308330536, 37.800929905408374 ], [ -122.42939829826355, 37.80074764244092 ], [ -122.42948412895203, 37.80073492640316 ] ] }, "properties": { "class": "motorway", "len": 184.99709257762476, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43276715278625, 37.800213566969795 ], [ -122.43265986442566, 37.80023052180601 ], [ -122.43121147155762, 37.800417024747446 ], [ -122.43112027645111, 37.80042974083997 ] ] }, "properties": { "class": "motorway", "len": 185.92789437313337, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43606090545654, 37.79989566307024 ], [ -122.43616819381714, 37.79988294688579 ], [ -122.4371337890625, 37.79976002365667 ] ] }, "properties": { "class": "motorway", "len": 184.9897278124624, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42428600788116, 37.80042974083997 ], [ -122.42430210113525, 37.800510276041585 ], [ -122.42445766925812, 37.801256282156544 ], [ -122.42445766925812, 37.80129019134637 ], [ -122.42446303367615, 37.80132833916636 ] ] }, "properties": { "class": "motorway", "len": 128.2778210829967, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42368519306183, 37.79667839862234 ], [ -122.42348670959473, 37.7957246371765 ] ] }, "properties": { "class": "motorway", "len": 136.5028882485294, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42332577705383, 37.79574159304304 ], [ -122.42352962493896, 37.79669959318127 ] ] }, "properties": { "class": "motorway", "len": 137.0331321248979, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42387294769287, 37.797615192322034 ], [ -122.42368519306183, 37.79667839862234 ] ] }, "properties": { "class": "motorway", "len": 133.5035793525826, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42409288883209, 37.79949722158412 ], [ -122.42411434650421, 37.79959047403946 ], [ -122.42426991462708, 37.80035768295351 ], [ -122.42428600788116, 37.800429740839945 ] ] }, "properties": { "class": "motorway", "len": 133.1433528732395, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42352962493896, 37.79669959318127 ], [ -122.42372810840607, 37.797636386612204 ], [ -122.42388904094696, 37.79848839204139 ], [ -122.42390513420105, 37.79856469055563 ], [ -122.42392659187317, 37.798657944188264 ], [ -122.42408215999603, 37.79942940154263 ], [ -122.42409288883209, 37.79949722158409 ] ] }, "properties": { "class": "motorway", "len": 398.8752119340263, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42461860179901, 37.80134529374666 ], [ -122.42471516132356, 37.80133257781179 ], [ -122.4261099100113, 37.80116727045915 ], [ -122.4262011051178, 37.80115455449363 ] ] }, "properties": { "class": "motorway", "len": 178.0452893370852, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42406070232391, 37.79854349653181 ], [ -122.42404460906982, 37.79847143680532 ], [ -122.42387294769287, 37.797615192322034 ] ] }, "properties": { "class": "motorway", "len": 132.28270155674133, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42348670959473, 37.7957246371765 ], [ -122.42330431938171, 37.794809014604034 ] ] }, "properties": { "class": "motorway", "len": 130.55038720718602, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42443084716797, 37.80041278604948 ], [ -122.4244147539139, 37.800336489444156 ], [ -122.42426991462709, 37.79956928030996 ], [ -122.42424845695497, 37.79947602782785 ], [ -122.42423772811891, 37.79942092403308 ], [ -122.424076795578, 37.79862403379003 ], [ -122.42406070232393, 37.79854349653181 ] ] }, "properties": { "class": "motorway", "len": 266.44218449370885, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42165744304657, 37.78660605622855 ], [ -122.42162525653839, 37.78644495542216 ], [ -122.42146432399748, 37.78567760202419 ], [ -122.42136240005493, 37.78521549033291 ], [ -122.42126047611237, 37.78474913615547 ], [ -122.42117464542389, 37.78428701865866 ], [ -122.42107808589934, 37.78381641897222 ], [ -122.42106199264526, 37.78374434488178 ] ] }, "properties": { "class": "motorway", "len": 931.5280869634124, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42168962955475, 37.787572653691726 ], [ -122.42177546024323, 37.7880177930084 ], [ -122.42187738418579, 37.788492605324016 ], [ -122.4219685792923, 37.78896741458879 ], [ -122.42206513881683, 37.7894210241618 ], [ -122.42223680019379, 37.79034519205912 ], [ -122.42225289344788, 37.79042573825485 ] ] }, "properties": { "class": "motorway", "len": 406.9126600716541, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42240846157074, 37.790328234954075 ], [ -122.4222207069397, 37.789404066844675 ], [ -122.42212414741516, 37.78894197845551 ], [ -122.42202758789062, 37.78847140841073 ], [ -122.42193639278412, 37.788000835369274 ], [ -122.42183983325958, 37.78755145651453 ], [ -122.42174863815308, 37.787080877614905 ], [ -122.42165744304657, 37.78660605622852 ] ] }, "properties": { "class": "motorway", "len": 530.8518497886237, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42459177970886, 37.801141838525915 ], [ -122.42456495761871, 37.801052826690615 ], [ -122.42444694042206, 37.80048908257599 ], [ -122.42443084716797, 37.80041278604948 ] ] }, "properties": { "class": "motorway", "len": 104.60431610245338, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42446303367615, 37.80132833916636 ], [ -122.42461860179901, 37.80134529374666 ] ] }, "properties": { "class": "motorway", "len": 17.4174625020387, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42330431938171, 37.794809014604034 ], [ -122.42314338684082, 37.79392729325345 ] ] }, "properties": { "class": "motorway", "len": 125.35821034090405, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42225289344788, 37.79042573825485 ], [ -122.42244064807892, 37.79130750139274 ], [ -122.42262303829193, 37.792185014837955 ], [ -122.42280006408691, 37.793062517861436 ] ] }, "properties": { "class": "motorway", "len": 376.31890481789424, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42314875125885, 37.79483020969929 ], [ -122.42332577705383, 37.79574159304304 ] ] }, "properties": { "class": "motorway", "len": 130.0152010345565, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42280006408691, 37.79306251786141 ], [ -122.42296099662781, 37.79394848860165 ], [ -122.42314875125885, 37.79483020969929 ] ] }, "properties": { "class": "motorway", "len": 251.90400155211125, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42314338684082, 37.79392729325345 ], [ -122.42295563220978, 37.79304980050074 ], [ -122.42278397083281, 37.792168058155134 ], [ -122.42259621620177, 37.79129054450855 ], [ -122.42242455482481, 37.790396063350826 ], [ -122.42240846157073, 37.79032823495405 ] ] }, "properties": { "class": "motorway", "len": 513.7380007233647, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42091178894043, 37.78374434488178 ], [ -122.42093324661255, 37.78383337757154 ], [ -122.42101907730103, 37.78430397714999 ], [ -122.42112100124359, 37.78476609454075 ], [ -122.42121756076814, 37.78523668818016 ], [ -122.42130339145662, 37.785694560196426 ], [ -122.42140531539918, 37.78618634549861 ], [ -122.42152333259584, 37.78676715668372 ], [ -122.42149651050569, 37.78663149316584 ], [ -122.42159843444826, 37.787102074927084 ], [ -122.42168962955476, 37.787572653691726 ] ] }, "properties": { "class": "motorway", "len": 705.4033468001305, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "US 101", "reflen": 6 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40569829940796, 37.79887836139735 ], [ -122.40566074848175, 37.79868337697672 ], [ -122.4055427312851, 37.79811113711837 ] ] }, "properties": { "class": "path", "len": 109.7592293529278, "name": "Peter Macchiarini Steps", "name_de": "Peter Macchiarini Steps", "name_en": "Peter Macchiarini Steps", "name_es": "Peter Macchiarini Steps", "name_fr": "Peter Macchiarini Steps", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40558564662933, 37.798891077754746 ], [ -122.40547835826874, 37.79836970530704 ], [ -122.4054354429245, 37.79811537594843 ] ] }, "properties": { "class": "path", "len": 110.44634750447173, "name": "Peter Macchiarini Steps", "name_de": "Peter Macchiarini Steps", "name_en": "Peter Macchiarini Steps", "name_es": "Peter Macchiarini Steps", "name_fr": "Peter Macchiarini Steps", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40752220153809, 37.79410957304932 ], [ -122.4073988199234, 37.7934821895364 ], [ -122.40733444690704, 37.793490667727504 ], [ -122.40727543830872, 37.79323208246155 ] ] }, "properties": { "class": "path", "len": 133.77684616970024, "name": "Hang Ah Alley", "name_de": "Hang Ah Alley", "name_en": "Hang Ah Alley", "name_es": "Hang Ah Alley", "name_fr": "Hang Ah Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.798178958370166 ], [ -122.40469515323639, 37.79811537594843 ], [ -122.4054890871048, 37.798017882795456 ] ] }, "properties": { "class": "main", "len": 182.97421269792386, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.799776978597 ], [ -122.404265999794, 37.80013727015868 ], [ -122.40430891513824, 37.80034496684863 ] ] }, "properties": { "class": "street", "len": 303.8718420779123, "name": "Montgomery St", "name_de": "Montgomery St", "name_en": "Montgomery St", "name_es": "Montgomery St", "name_fr": "Montgomery St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40596115589142, 37.80662645609157 ], [ -122.4058485031128, 37.80656288094155 ], [ -122.4051457643509, 37.80619414399211 ], [ -122.40488827228548, 37.80606275451926 ], [ -122.40478098392487, 37.8059949405063 ], [ -122.40466833114625, 37.805910172902585 ], [ -122.40446984767915, 37.80577454453419 ], [ -122.40443766117096, 37.805744875795405 ], [ -122.40418016910554, 37.80556262470992 ] ] }, "properties": { "class": "main", "len": 540.2997532702911, "name": "The Embarcadero", "name_de": "The Embarcadero", "name_en": "The Embarcadero", "name_es": "The Embarcadero", "name_fr": "The Embarcadero", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.79169750865503 ], [ -122.40424454212189, 37.79168903025815 ], [ -122.40452885627747, 37.79165511666101 ], [ -122.40544617176056, 37.7915364189484 ], [ -122.40574657917023, 37.791498266071706 ], [ -122.40716814994812, 37.79132869749249 ], [ -122.4073451757431, 37.79130750139274 ], [ -122.4080640077591, 37.791205760029214 ], [ -122.40817129611969, 37.79119304234894 ], [ -122.40838050842285, 37.79116760698179 ], [ -122.40898132324219, 37.791095540060674 ], [ -122.4090027809143, 37.79109130082786 ] ] }, "properties": { "class": "main", "len": 1312.8583089500025, "name": "Pine St", "name_de": "Pine St", "name_en": "Pine St", "name_es": "Pine St", "name_fr": "Pine St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40479707717896, 37.79445293609456 ], [ -122.40418016910553, 37.794533477812365 ] ] }, "properties": { "class": "street", "len": 186.87536648900215, "name": "Clay St", "name_de": "Clay St", "name_en": "Clay St", "name_es": "Clay St", "name_fr": "Clay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40997910499573, 37.809279610214595 ], [ -122.41007566452026, 37.8094448994097 ], [ -122.41026878356934, 37.809779714850585 ] ] }, "properties": { "class": "path", "len": 202.17417323434879, "name": "Pier 39", "name_de": "Pier 39", "name_en": "Pier 39", "name_es": "Pier 39", "name_fr": "Pier 39", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.805973748614505 ], [ -122.40455031394957, 37.80624500437047 ], [ -122.40470051765442, 37.80634248666441 ], [ -122.40479707717896, 37.8063933469406 ], [ -122.40588068962097, 37.80695704598944 ], [ -122.40689456462862, 37.807465642942425 ], [ -122.40756511688234, 37.80764365104846 ] ] }, "properties": { "class": "path", "len": 2847.90071389486, "name": "Herb Caen Way", "name_de": "Herb Caen Way", "name_en": "Herb Caen Way", "name_es": "Herb Caen Way", "name_fr": "Herb Caen Way", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42774605751038, 37.8071138637568 ], [ -122.42828786373138, 37.80700790584237 ], [ -122.42834150791168, 37.80698671424124 ], [ -122.42885112762451, 37.80688499447117 ] ] }, "properties": { "class": "street", "len": 127.02433388408431, "name": "Funston Rd", "name_de": "Funston Rd", "name_en": "Funston Rd", "name_es": "Funston Rd", "name_fr": "Funston Rd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42774605751038, 37.8071138637568 ], [ -122.42772459983826, 37.80706724229317 ], [ -122.42771923542023, 37.80702909743741 ], [ -122.42773532867432, 37.80698671424122 ], [ -122.42773532867432, 37.80694433102072 ], [ -122.42770850658417, 37.80686804116251 ], [ -122.42768168449403, 37.80680446622046 ], [ -122.42764949798584, 37.80676208289537 ], [ -122.42760121822359, 37.80673241455334 ], [ -122.42755293846132, 37.80671122287313 ] ] }, "properties": { "class": "street", "len": 65.31910178357704, "name": "Funston Rd", "name_de": "Funston Rd", "name_en": "Funston Rd", "name_es": "Funston Rd", "name_fr": "Funston Rd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42471516132355, 37.78541898941539 ], [ -122.42498338222504, 37.78541474985691 ], [ -122.42522478103638, 37.785393552060754 ], [ -122.42799818515778, 37.78504590733613 ] ] }, "properties": { "class": "main", "len": 369.50623090765384, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42797136306763, 37.7848848031288 ], [ -122.42643177509309, 37.78507982396663 ], [ -122.42516577243806, 37.78524940688557 ], [ -122.42483854293823, 37.785279083856395 ], [ -122.42468297481537, 37.785279083856395 ] ] }, "properties": { "class": "main", "len": 370.3749078342734, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43443548679352, 37.78410895426485 ], [ -122.43139922618866, 37.784494759909215 ] ] }, "properties": { "class": "main", "len": 343.1258703445386, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43110418319702, 37.78443540532579 ], [ -122.43112564086914, 37.78453291640197 ], [ -122.43115246295929, 37.78465586496683 ], [ -122.43117392063141, 37.78474065696133 ] ] }, "properties": { "class": "main", "len": 43.9374386128022, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43460178375244, 37.78430397714999 ], [ -122.43476808071136, 37.78426158091439 ], [ -122.43546009063722, 37.78410047499729 ] ] }, "properties": { "class": "street", "len": 99.99036235992222, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4369353055954, 37.78374434488178 ], [ -122.43541181087492, 37.783930889442026 ] ] }, "properties": { "class": "main", "len": 273.1622823023084, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42799818515778, 37.78504590733613 ], [ -122.4290657043457, 37.78491024065857 ], [ -122.42950558662415, 37.78485088640879 ], [ -122.42956459522247, 37.784842407226364 ], [ -122.43019223213196, 37.78476609454075 ] ] }, "properties": { "class": "main", "len": 246.90071093811025, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43458032608032, 37.78421494502713 ], [ -122.4354600906372, 37.78410047499729 ] ] }, "properties": { "class": "main", "len": 98.99132941823262, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43453741073608, 37.78401144262929 ], [ -122.43448376655579, 37.78374434488178 ] ] }, "properties": { "class": "street", "len": 796.9525422784027, "name": "Steiner St", "name_de": "Steiner St", "name_en": "Steiner St", "name_es": "Steiner St", "name_fr": "Steiner St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43110418319702, 37.78443540532579 ], [ -122.43081450462343, 37.78447780146168 ], [ -122.43023514747621, 37.784558354052855 ], [ -122.43005812168123, 37.784630427349484 ] ] }, "properties": { "class": "street", "len": 120.59901360400228, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43453741073608, 37.78401144262929 ], [ -122.4344140291214, 37.784015682268304 ], [ -122.43289053440094, 37.78419798651539 ], [ -122.43141531944275, 37.78438876954822 ], [ -122.43138313293457, 37.784393009165576 ], [ -122.43125438690186, 37.78440996763259 ], [ -122.43110418319702, 37.78443540532579 ] ] }, "properties": { "class": "street", "len": 387.46292855770764, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43019223213196, 37.78476609454075 ], [ -122.43115246295929, 37.78465586496683 ], [ -122.43130266666412, 37.784634666952996 ], [ -122.43144214153291, 37.78461770853756 ] ] }, "properties": { "class": "main", "len": 141.18643556389938, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43131875991821, 37.784723698570225 ], [ -122.4329549074173, 37.78452019757324 ], [ -122.43379175662996, 37.78441844686463 ], [ -122.4344837665558, 37.78432517525866 ], [ -122.43460178375246, 37.78430397714999 ] ] }, "properties": { "class": "street", "len": 370.69020596579514, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42948412895203, 37.80073492640316 ], [ -122.4295002222061, 37.80080698392156 ], [ -122.42967188358307, 37.801654714153955 ], [ -122.42985963821411, 37.80258296759842 ] ] }, "properties": { "class": "street", "len": 263.6676040895868, "name": "Octavia St", "name_de": "Octavia St", "name_en": "Octavia St", "name_es": "Octavia St", "name_fr": "Octavia St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4311363697052, 37.80052299211805 ], [ -122.43115246295928, 37.80059928853073 ], [ -122.43122220039366, 37.80098500807743 ], [ -122.43131339550017, 37.801447021146885 ], [ -122.43144214153288, 37.802095530029646 ], [ -122.43150115013121, 37.802379515786946 ] ] }, "properties": { "class": "street", "len": 264.1923343285631, "name": "Laguna St", "name_de": "Laguna St", "name_en": "Laguna St", "name_es": "Laguna St", "name_fr": "Laguna St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43278324604034, 37.80031529592869 ], [ -122.43279933929442, 37.80040006995406 ], [ -122.43286371231079, 37.80077307450988 ], [ -122.43295490741728, 37.80123508890499 ] ] }, "properties": { "class": "street", "len": 131.1222974403771, "name": "Buchanan St", "name_de": "Buchanan St", "name_en": "Buchanan St", "name_es": "Buchanan St", "name_fr": "Buchanan St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43440330028534, 37.800010108631696 ], [ -122.43438720703126, 37.79993805033589 ], [ -122.43432819843294, 37.79963286148024 ], [ -122.43422091007234, 37.79916235952403 ], [ -122.43412971496583, 37.798696093367674 ], [ -122.4340331554413, 37.79822982426816 ], [ -122.43384540081026, 37.797301516116576 ], [ -122.43364691734315, 37.796373196299356 ], [ -122.43344843387605, 37.79544486481667 ], [ -122.43327677249908, 37.79464369265235 ], [ -122.43327677249908, 37.79448684840749 ] ] }, "properties": { "class": "street", "len": 788.7854607301381, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43604481220245, 37.79980241100018 ], [ -122.43602335453033, 37.79971763628886 ], [ -122.43595898151398, 37.79942092403308 ], [ -122.43586242198944, 37.7989546595088 ], [ -122.43577122688293, 37.79848839204139 ], [ -122.4356746673584, 37.79802212163085 ], [ -122.43548691272736, 37.79709381086916 ] ] }, "properties": { "class": "street", "len": 387.1206080608945, "name": "Fillmore St", "name_de": "Fillmore St", "name_en": "Fillmore St", "name_es": "Fillmore St", "name_fr": "Fillmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4249941110611, 37.8031975582087 ], [ -122.42656588554382, 37.80299834664004 ], [ -122.42821276187898, 37.80279489597278 ], [ -122.42985963821413, 37.80258296759842 ] ] }, "properties": { "class": "street", "len": 547.9933606097763, "name": "Francisco St", "name_de": "Francisco St", "name_en": "Francisco St", "name_es": "Francisco St", "name_fr": "Francisco St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42387294769287, 37.797615192322034 ], [ -122.42543935775757, 37.79741172682703 ], [ -122.42709159851074, 37.7972040218895 ], [ -122.42872774600983, 37.79699207747368 ] ] }, "properties": { "class": "street", "len": 547.5952812802853, "name": "Green St", "name_de": "Green St", "name_en": "Green St", "name_es": "Green St", "name_fr": "Green St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42424845695496, 37.79947602782782 ], [ -122.42436647415161, 37.79945907281843 ], [ -122.42570757865906, 37.799289522510435 ], [ -122.42581486701965, 37.799276806221634 ], [ -122.42591679096222, 37.79926408993067 ], [ -122.42663562297821, 37.79917083706328 ], [ -122.42746710777283, 37.79906910652822 ], [ -122.42910325527191, 37.79885716746353 ], [ -122.43075013160706, 37.79864946659016 ], [ -122.43239164352417, 37.79844176513279 ], [ -122.43403315544128, 37.798229824268184 ], [ -122.4356746673584, 37.79802212163088 ], [ -122.4371337890625, 37.797839851488476 ] ] }, "properties": { "class": "street", "len": 2567.1023567117613, "name": "Filbert St", "name_de": "Filbert St", "name_en": "Filbert St", "name_es": "Filbert St", "name_fr": "Filbert St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42368519306183, 37.79667839862234 ], [ -122.42525160312653, 37.79648340839478 ], [ -122.42690920829773, 37.796275700847126 ], [ -122.42853999137878, 37.79606375376797 ], [ -122.43018686771393, 37.79585604504044 ], [ -122.43182301521301, 37.79564409675727 ], [ -122.43344843387605, 37.79544486481667 ], [ -122.43511140346527, 37.79522867635841 ], [ -122.43675827980043, 37.795016726275364 ], [ -122.43713378906251, 37.79497009717551 ] ] }, "properties": { "class": "street", "len": 2582.8728328729226, "name": "Vallejo St", "name_de": "Vallejo St", "name_en": "Vallejo St", "name_es": "Vallejo St", "name_fr": "Vallejo St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42406070232391, 37.79854349653181 ], [ -122.42419481277466, 37.79852654130836 ], [ -122.4256271123886, 37.798344272410596 ], [ -122.42727935314177, 37.79813657009509 ], [ -122.42891550064085, 37.79792886719558 ], [ -122.43056237697601, 37.797716924859415 ], [ -122.43144214153288, 37.79760671460429 ], [ -122.43220388889311, 37.79750922078 ], [ -122.43384540081023, 37.797301516116576 ], [ -122.43548691272734, 37.79709381086918 ] ] }, "properties": { "class": "street", "len": 1288.9843538469645, "name": "Union St", "name_de": "Union St", "name_en": "Union St", "name_es": "Union St", "name_fr": "Union St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42517650127411, 37.80413850771679 ], [ -122.42547690868378, 37.80410459983463 ], [ -122.42676973342896, 37.80394353718175 ], [ -122.4284166097641, 37.80374008911817 ], [ -122.43006348609924, 37.803532401975176 ] ] }, "properties": { "class": "main", "len": 550.5640298929623, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42443084716797, 37.80041278604948 ], [ -122.4245595932007, 37.800395831255116 ], [ -122.4259275197983, 37.800222044388356 ], [ -122.42600262165071, 37.80020932826012 ], [ -122.4261260032654, 37.80019661212968 ], [ -122.42649614810945, 37.80014998629934 ], [ -122.42685556411743, 37.80010336043956 ], [ -122.42757976055145, 37.80001010863167 ], [ -122.4276602268219, 37.80000163118878 ], [ -122.4277675151825, 37.79998467630002 ], [ -122.42929100990295, 37.79978969479964 ] ] }, "properties": { "class": "street", "len": 548.3303036596409, "name": "Greenwich St", "name_de": "Greenwich St", "name_en": "Greenwich St", "name_es": "Greenwich St", "name_fr": "Greenwich St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42330431938171, 37.794809014604034 ], [ -122.42486000061037, 37.7946097804114 ], [ -122.42652833461763, 37.79440206759597 ], [ -122.42815911769867, 37.79419011514147 ], [ -122.42980599403383, 37.79397816207892 ], [ -122.43145287036897, 37.793770447487695 ], [ -122.43308365345003, 37.79355849322122 ] ] }, "properties": { "class": "street", "len": 1103.3859462619025, "name": "Pacific Ave", "name_de": "Pacific Ave", "name_en": "Pacific Ave", "name_es": "Pacific Ave", "name_fr": "Pacific Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42480635643005, 37.802269312488406 ], [ -122.4249565601349, 37.802252358120164 ], [ -122.42637813091278, 37.80207009841604 ], [ -122.42802500724794, 37.801862406576994 ], [ -122.42967188358308, 37.801654714153955 ], [ -122.43131339550018, 37.801447021146885 ], [ -122.43186056613922, 37.80137496425289 ], [ -122.4327403306961, 37.80126475945547 ], [ -122.43295490741728, 37.80123508890502 ], [ -122.43321776390076, 37.801205418342605 ], [ -122.43346452713011, 37.80117150911384 ], [ -122.43378102779388, 37.80113336121289 ], [ -122.43408679962158, 37.80109521329224 ], [ -122.43437647819519, 37.80105706535187 ], [ -122.43460178375244, 37.80102739471796 ], [ -122.4362701177597, 37.80081546127204 ], [ -122.43688702583313, 37.80073916508263 ], [ -122.4371337890625, 37.80070525563983 ] ] }, "properties": { "class": "street", "len": 2222.354808553998, "name": "Chestnut St", "name_de": "Chestnut St", "name_en": "Chestnut St", "name_es": "Chestnut St", "name_fr": "Chestnut St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43129193782806, 37.785372354258485 ], [ -122.43146896362305, 37.786330488846325 ] ] }, "properties": { "class": "main", "len": 136.47160876874025, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43117392063141, 37.78474065696133 ], [ -122.4311900138855, 37.784829688450905 ], [ -122.43129193782806, 37.785372354258485 ] ] }, "properties": { "class": "main", "len": 89.68332842594724, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43086814880371, 37.80343067744717 ], [ -122.43168354034424, 37.80327809039246 ] ] }, "properties": { "class": "main", "len": 93.86547235192626, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4090027809143, 37.79109130082786 ], [ -122.4090188741684, 37.79109130082786 ], [ -122.41062819957732, 37.79088357812059 ], [ -122.41099834442137, 37.79083694641218 ], [ -122.41226971149443, 37.790675854829374 ], [ -122.41391122341155, 37.79045965241627 ], [ -122.41470515727995, 37.79036638843492 ], [ -122.4155741930008, 37.79025616721429 ], [ -122.41596579551695, 37.790205295826226 ], [ -122.41720497608183, 37.79004844215926 ], [ -122.41751074790955, 37.79000604921915 ], [ -122.41841733455658, 37.78988734885741 ], [ -122.41884648799896, 37.78983223791036 ], [ -122.4204933643341, 37.789620272346355 ], [ -122.42206513881683, 37.789421024161776 ], [ -122.4222207069397, 37.78940406684465 ], [ -122.42378175258636, 37.78920481807708 ], [ -122.42542326450348, 37.78899709006654 ], [ -122.4270647764206, 37.788789361472034 ], [ -122.42871701717375, 37.7885773929165 ], [ -122.43035852909087, 37.78836966314217 ], [ -122.43200004100798, 37.788161932783865 ], [ -122.43282079696654, 37.78805594768223 ], [ -122.4336415529251, 37.78794996242857 ], [ -122.43528842926024, 37.78774223089048 ], [ -122.43692994117733, 37.787534498768416 ], [ -122.43713378906246, 37.78750906214192 ] ] }, "properties": { "class": "main", "len": 4240.973449295866, "name": "Pine St", "name_de": "Pine St", "name_en": "Pine St", "name_es": "Pine St", "name_fr": "Pine St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4327939748764, 37.78374434488178 ], [ -122.43289053440094, 37.78419798651539 ], [ -122.432901263237, 37.78426582053903 ] ] }, "properties": { "class": "street", "len": 803.2252406201831, "name": "Fillmore St", "name_de": "Fillmore St", "name_en": "Fillmore St", "name_es": "Fillmore St", "name_fr": "Fillmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43472516536713, 37.7849483969368 ], [ -122.43390440940857, 37.78505014691581 ], [ -122.43307828903198, 37.785151896754726 ], [ -122.43143677711487, 37.78535539601231 ], [ -122.43129193782806, 37.785372354258485 ] ] }, "properties": { "class": "street", "len": 387.43784348452124, "name": "Post St", "name_de": "Post St", "name_en": "Post St", "name_es": "Post St", "name_fr": "Post St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41192638874054, 37.797271843974116 ], [ -122.41191565990448, 37.7972167385351 ], [ -122.41190493106842, 37.79716163305497 ], [ -122.41187274456024, 37.79700055526198 ], [ -122.41173326969147, 37.79629689552161 ] ] }, "properties": { "class": "street", "len": 139.4149594024999, "name": "Mason St", "name_de": "Mason St", "name_en": "Mason St", "name_es": "Mason St", "name_fr": "Mason St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41173326969147, 37.79629689552161 ], [ -122.41163671016693, 37.79583908920013 ], [ -122.41155624389648, 37.79541519192846 ], [ -122.41147577762605, 37.7950633553458 ], [ -122.41136848926544, 37.79454195588281 ], [ -122.41136848926544, 37.79452923877677 ] ] }, "properties": { "class": "street", "len": 252.16487531315929, "name": "Mason St", "name_de": "Mason St", "name_en": "Mason St", "name_es": "Mason St", "name_fr": "Mason St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42929100990295, 37.7997896947997 ], [ -122.42945194244386, 37.80056114033423 ], [ -122.42946803569794, 37.800637436707525 ] ] }, "properties": { "class": "street", "len": 121.07622765164624, "name": "Octavia St", "name_de": "Octavia St", "name_en": "Octavia St", "name_es": "Octavia St", "name_fr": "Octavia St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42872774600983, 37.79699207747368 ], [ -122.42891550064087, 37.79792886719558 ], [ -122.42910325527191, 37.7988571674635 ], [ -122.42917835712433, 37.79923441857653 ], [ -122.42929100990295, 37.79978969479967 ] ] }, "properties": { "class": "street", "len": 399.03191064487265, "name": "Octavia St", "name_de": "Octavia St", "name_en": "Octavia St", "name_es": "Octavia St", "name_fr": "Octavia St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41336941719055, 37.796084948503236 ], [ -122.41346061229706, 37.79652579761845 ], [ -122.41355180740355, 37.79694121072341 ], [ -122.41355180740355, 37.797034466405485 ], [ -122.41356253623961, 37.797131960856326 ], [ -122.41366982460022, 37.79767029746383 ], [ -122.41371273994446, 37.797844090334074 ], [ -122.41373419761658, 37.797950061395746 ], [ -122.41375029087065, 37.798030599300965 ], [ -122.41390585899352, 37.79887836139735 ], [ -122.41392731666564, 37.798958898290465 ], [ -122.4140292406082, 37.79937005895526 ], [ -122.41412580013274, 37.79983208212613 ], [ -122.41422235965729, 37.80030257981648 ], [ -122.41430282592772, 37.800756119798216 ], [ -122.41439938545227, 37.80122661160268 ], [ -122.4144959449768, 37.801692861785654 ], [ -122.41468906402588, 37.80261687617921 ], [ -122.41484463214873, 37.80337981513064 ], [ -122.41488218307494, 37.80354511753136 ] ] }, "properties": { "class": "street", "len": 1064.328164583362, "name": "Taylor St", "name_de": "Taylor St", "name_en": "Taylor St", "name_es": "Taylor St", "name_fr": "Taylor St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42774069309235, 37.78374434488178 ], [ -122.42778360843658, 37.783926649798154 ], [ -122.42782652378084, 37.78418102799973 ], [ -122.42797136306763, 37.7848848031288 ] ] }, "properties": { "class": "street", "len": 802.3070257550971, "name": "Laguna St", "name_de": "Laguna St", "name_en": "Laguna St", "name_es": "Laguna St", "name_fr": "Laguna St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42365837097168, 37.80528712802926 ], [ -122.42384612560272, 37.80621957418566 ] ] }, "properties": { "class": "street", "len": 133.4269466789773, "name": "Polk St", "name_de": "Polk St", "name_en": "Polk St", "name_es": "Polk St", "name_fr": "Polk St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.431640625, 37.78629657278981 ], [ -122.43143677711487, 37.78535539601231 ], [ -122.43131875991821, 37.784723698570225 ] ] }, "properties": { "class": "main", "len": 224.9170140610984, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43146896362305, 37.786330488846325 ], [ -122.43159770965576, 37.78688586205755 ], [ -122.43171036243439, 37.78716566682716 ], [ -122.43181228637695, 37.78723349812689 ] ] }, "properties": { "class": "main", "len": 135.65564961645413, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40908324718475, 37.7957246371765 ], [ -122.40926027297974, 37.79660633707646 ] ] }, "properties": { "class": "service", "len": 125.64812812003456, "name": "Trenton St", "name_de": "Trenton St", "name_en": "Trenton St", "name_es": "Trenton St", "name_fr": "Trenton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42398023605347, 37.79016290297611 ], [ -122.4225264787674, 37.790315517122764 ], [ -122.42240846157074, 37.790328234954075 ] ] }, "properties": { "class": "street", "len": 175.97746423811265, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42037534713745, 37.80571520704471 ], [ -122.42028415203094, 37.80523626699121 ], [ -122.42019295692444, 37.80478699296722 ] ] }, "properties": { "class": "street", "len": 132.96272992699332, "name": "Hyde St", "name_de": "Hyde St", "name_en": "Hyde St", "name_es": "Hyde St", "name_fr": "Hyde St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40426063537598, 37.784490520297716 ], [ -122.40418016910553, 37.78452443718309 ] ] }, "properties": { "class": "main", "len": 353.3863057752421, "name": "Mission St", "name_de": "Mission St", "name_en": "Mission St", "name_es": "Mission St", "name_fr": "Mission St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.784596510512785 ], [ -122.40426063537598, 37.784490520297716 ] ] }, "properties": { "class": "main", "len": 351.5767408950287, "name": "Mission St", "name_de": "Mission St", "name_en": "Mission St", "name_es": "Mission St", "name_fr": "Mission St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.789789844846204 ], [ -122.40421235561371, 37.789785605538455 ], [ -122.40459322929382, 37.78973897313711 ], [ -122.40540862083435, 37.7896245116636 ] ] }, "properties": { "class": "street", "len": 548.6476634002003, "name": "Sutter St", "name_de": "Sutter St", "name_en": "Sutter St", "name_es": "Sutter St", "name_fr": "Sutter St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.78787789236924 ], [ -122.40504920482635, 37.78776766743669 ], [ -122.40659952163696, 37.78757689312644 ], [ -122.40706622600555, 37.787521780456224 ], [ -122.40720570087433, 37.787500583264446 ], [ -122.40733444690706, 37.78748786494643 ], [ -122.40749537944795, 37.78746666774491 ], [ -122.40765094757081, 37.78744547053731 ], [ -122.40779042243959, 37.78742851276686 ], [ -122.408219575882, 37.78737763943212 ], [ -122.40823566913606, 37.78737339998598 ] ] }, "properties": { "class": "street", "len": 591.436299421901, "name": "Geary St", "name_de": "Geary St", "name_en": "Geary St", "name_es": "Geary St", "name_fr": "Geary St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40998446941376, 37.79419435419653 ], [ -122.40990400314332, 37.793808599191095 ] ] }, "properties": { "class": "path", "len": 55.41610235241239, "name": "Codman Pl", "name_de": "Codman Pl", "name_en": "Codman Pl", "name_es": "Codman Pl", "name_fr": "Codman Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40872383117676, 37.79395696673922 ], [ -122.40854680538177, 37.79307099610066 ] ] }, "properties": { "class": "service", "len": 126.6093938059111, "name": "Joice St", "name_de": "Joice St", "name_en": "Joice St", "name_es": "Joice St", "name_fr": "Joice St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40823566913605, 37.78737339998601 ], [ -122.40832149982454, 37.78783125876399 ], [ -122.40840196609497, 37.78821280557867 ], [ -122.40841805934906, 37.7882933540988 ], [ -122.40861654281616, 37.78923025411991 ], [ -122.40874528884888, 37.78985767373719 ], [ -122.40880966186525, 37.790175620833686 ], [ -122.40894377231598, 37.79081998941997 ], [ -122.4090027809143, 37.79109130082783 ] ] }, "properties": { "class": "street", "len": 530.5865911314289, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40823566913605, 37.78737339998601 ], [ -122.40826785564423, 37.78736916053963 ], [ -122.40988790988922, 37.78714870899249 ], [ -122.41151869297028, 37.78694097520201 ], [ -122.41235017776489, 37.78684770677962 ], [ -122.41316020488739, 37.78674595927549 ], [ -122.41480708122253, 37.78652126637423 ], [ -122.41645395755768, 37.78631353082002 ], [ -122.41809010505676, 37.78610155516279 ] ] }, "properties": { "class": "street", "len": 1111.452530339568, "name": "Geary St", "name_de": "Geary St", "name_en": "Geary St", "name_es": "Geary St", "name_fr": "Geary St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40862727165222, 37.79763214775467 ], [ -122.40905106067657, 37.79757704258442 ], [ -122.40972697734833, 37.79749226531914 ], [ -122.41025805473328, 37.79741596569723 ] ] }, "properties": { "class": "main", "len": 184.35408965341415, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40663707256317, 37.79787800109037 ], [ -122.40698039531708, 37.79811537594843 ], [ -122.40707695484161, 37.79813233126623 ] ] }, "properties": { "class": "main", "len": 61.65918459179387, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40673899650574, 37.797865284558576 ], [ -122.40630984306335, 37.79756856486228 ], [ -122.40618646144867, 37.79751769850893 ] ] }, "properties": { "class": "main", "len": 78.84169638759144, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40701258182526, 37.797831373796456 ], [ -122.4077957868576, 37.797733880268694 ], [ -122.40862727165222, 37.79763214775467 ] ] }, "properties": { "class": "main", "len": 181.67981259184776, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40644931793213, 37.79888260018339 ], [ -122.40639567375183, 37.79859012337622 ] ] }, "properties": { "class": "service", "len": 41.50369742562071, "name": "Romolo Pl", "name_de": "Romolo Pl", "name_en": "Romolo Pl", "name_es": "Romolo Pl", "name_fr": "Romolo Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4054890871048, 37.798017882795456 ], [ -122.40626156330109, 37.79792886719558 ], [ -122.40663707256317, 37.79787800109037 ] ] }, "properties": { "class": "main", "len": 129.15903882642104, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40596115589142, 37.80662645609157 ], [ -122.40605771541595, 37.806588311008134 ], [ -122.40607917308807, 37.80657983432025 ], [ -122.40609526634216, 37.80657983432025 ], [ -122.40715742111206, 37.80643573047732 ], [ -122.40861117839813, 37.80624076600694 ], [ -122.4095070362091, 37.80613480683977 ], [ -122.41032779216766, 37.80603308589625 ], [ -122.41195321083069, 37.805821166813914 ], [ -122.41360545158385, 37.80561772392273 ], [ -122.41476953029631, 37.805473618202406 ], [ -122.41524159908295, 37.80541851888209 ], [ -122.41688847541809, 37.80521507488168 ] ] }, "properties": { "class": "main", "len": 1233.29485361915, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40622937679291, 37.78571575790625 ], [ -122.40779042243958, 37.78550802008779 ], [ -122.40785479545593, 37.78549954098075 ], [ -122.40787088871002, 37.78549954098075 ], [ -122.4078869819641, 37.78549530142688 ], [ -122.4079245328903, 37.785491061872726 ], [ -122.40794599056242, 37.78548682231837 ], [ -122.4086809158325, 37.785393552060754 ] ] }, "properties": { "class": "street", "len": 276.3423383783363, "name": "Ellis St", "name_de": "Ellis St", "name_en": "Ellis St", "name_es": "Ellis St", "name_fr": "Ellis St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40594506263733, 37.792460560388086 ], [ -122.40612208843231, 37.79337621206568 ], [ -122.40621328353882, 37.793834033649084 ], [ -122.4062991142273, 37.79426641809515 ], [ -122.4064975976944, 37.79515661339839 ], [ -122.40665316581726, 37.79602984217886 ], [ -122.40683019161224, 37.79691153843622 ], [ -122.40694820880891, 37.79748378758728 ], [ -122.40701258182527, 37.797831373796456 ] ] }, "properties": { "class": "street", "len": 765.8157967799175, "name": "Grant Ave", "name_de": "Grant Ave", "name_en": "Grant Ave", "name_es": "Grant Ave", "name_fr": "Grant Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40594506263733, 37.792460560388086 ], [ -122.40671753883363, 37.79236305977244 ], [ -122.40753829479218, 37.792261319862405 ], [ -122.40809619426727, 37.79219349317789 ], [ -122.40836441516876, 37.79215957981227 ], [ -122.40883111953735, 37.79210023138499 ], [ -122.40919053554533, 37.79205360044444 ] ] }, "properties": { "class": "street", "len": 365.9903944746072, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4108213186264, 37.791837402062676 ], [ -122.41110563278198, 37.791799249341395 ], [ -122.41171717643738, 37.79172294383976 ], [ -122.41206049919128, 37.79168479105935 ], [ -122.41245210170746, 37.79163815985659 ] ] }, "properties": { "class": "street", "len": 183.65375715351743, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40479707717896, 37.79445293609456 ], [ -122.40488290786743, 37.794859882822436 ], [ -122.40497410297394, 37.79532617319241 ], [ -122.40515112876892, 37.79622059466506 ], [ -122.40529596805573, 37.79690306063769 ] ] }, "properties": { "class": "main", "len": 349.58069308376486, "name": "Kearny St", "name_de": "Kearny St", "name_en": "Kearny St", "name_es": "Kearny St", "name_fr": "Kearny St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41136848926544, 37.79452923877677 ], [ -122.41128802299501, 37.79453771684771 ], [ -122.41124510765076, 37.79454619491767 ], [ -122.4111968278885, 37.7945589120208 ], [ -122.4111592769623, 37.79456315105469 ], [ -122.4105477333069, 37.79464369265235 ], [ -122.41008639335634, 37.794707278062184 ], [ -122.4098986387253, 37.7947284731866 ], [ -122.4097377061844, 37.79474966830498 ] ] }, "properties": { "class": "street", "len": 184.2016929531114, "name": "Washington St", "name_de": "Washington St", "name_en": "Washington St", "name_es": "Washington St", "name_fr": "Washington St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40973770618439, 37.79474966830498 ], [ -122.40988254547119, 37.79551268851633 ], [ -122.40990400314331, 37.795618662922415 ] ] }, "properties": { "class": "street", "len": 123.9916499108682, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40954458713531, 37.79385522902405 ], [ -122.40973770618439, 37.79474966830498 ] ] }, "properties": { "class": "street", "len": 128.04957243233278, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40954458713531, 37.79385522902405 ], [ -122.4095231294632, 37.79385522902405 ], [ -122.40919589996338, 37.79389761975574 ], [ -122.40872383117674, 37.793956966739245 ], [ -122.40789771080016, 37.794062943376915 ], [ -122.40752220153807, 37.79410957304935 ], [ -122.40730762481688, 37.79413924646194 ], [ -122.4068248271942, 37.79419859325133 ], [ -122.4062991142273, 37.79426641809515 ], [ -122.40566611289978, 37.794346960016284 ], [ -122.40479707717894, 37.79445293609456 ] ] }, "properties": { "class": "street", "len": 534.9310728894536, "name": "Clay St", "name_de": "Clay St", "name_en": "Clay St", "name_es": "Clay St", "name_fr": "Clay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40816593170166, 37.80344339302085 ], [ -122.4082624912262, 37.80392234470129 ], [ -122.40834832191467, 37.804367385514226 ], [ -122.40842878818512, 37.804837854314705 ], [ -122.40853607654572, 37.80529136644753 ] ] }, "properties": { "class": "street", "len": 263.9852347691697, "name": "Grant Ave", "name_de": "Grant Ave", "name_en": "Grant Ave", "name_es": "Grant Ave", "name_fr": "Grant Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40816593170166, 37.80344339302085 ], [ -122.40976452827452, 37.803239943579534 ] ] }, "properties": { "class": "street", "len": 180.34540997713472, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4130368232727, 37.80282880445625 ], [ -122.41294026374817, 37.802332891334544 ], [ -122.41290807723998, 37.802184540608394 ] ] }, "properties": { "class": "street", "len": 91.80682766410945, "name": "Mason St", "name_de": "Mason St", "name_en": "Mason St", "name_es": "Mason St", "name_fr": "Mason St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40529596805573, 37.79690306063769 ], [ -122.40553736686707, 37.79707261642332 ], [ -122.40618646144867, 37.79751769850896 ] ] }, "properties": { "class": "main", "len": 131.24793561602883, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41532742977142, 37.80016694115013 ], [ -122.41478562355042, 37.80023052180601 ] ] }, "properties": { "class": "path", "len": 60.584705165535524, "name": "Redfield Alley", "name_de": "Redfield Alley", "name_en": "Redfield Alley", "name_es": "Redfield Alley", "name_fr": "Redfield Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41245210170746, 37.79163815985659 ], [ -122.41410970687866, 37.791421960259214 ], [ -122.41576731204987, 37.791209999255514 ] ] }, "properties": { "class": "street", "len": 373.990849845489, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40919053554535, 37.79205360044444 ], [ -122.40936219692232, 37.79296077891455 ], [ -122.40954458713531, 37.79385522902405 ] ] }, "properties": { "class": "street", "len": 256.5839136317273, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4090027809143, 37.79109130082786 ], [ -122.40919053554535, 37.79205360044444 ] ] }, "properties": { "class": "street", "len": 137.04016126681051, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40919053554535, 37.79205360044444 ], [ -122.4108213186264, 37.791837402062676 ] ] }, "properties": { "class": "street", "len": 183.83939784404808, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40426063537598, 37.784490520297716 ], [ -122.40487217903136, 37.78400296335056 ] ] }, "properties": { "class": "main", "len": 97.00967013617185, "name": "Mission St", "name_de": "Mission St", "name_en": "Mission St", "name_es": "Mission St", "name_fr": "Mission St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40659952163696, 37.78757689312644 ], [ -122.40641176700592, 37.78663997214301 ], [ -122.40625083446503, 37.785821746364185 ], [ -122.40622937679291, 37.78571575790625 ] ] }, "properties": { "class": "street_limited", "len": 265.42301278417017, "name": "Stockton St", "name_de": "Stockton St", "name_en": "Stockton St", "name_es": "Stockton St", "name_fr": "Stockton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40661025047302, 37.78852228099244 ], [ -122.40626692771912, 37.78856467478382 ] ] }, "properties": { "class": "street", "len": 38.5378528189579, "name": "Post St", "name_de": "Post St", "name_en": "Post St", "name_es": "Post St", "name_fr": "Post St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40598261356354, 37.788598589799406 ], [ -122.40565001964569, 37.788640983547005 ] ] }, "properties": { "class": "street", "len": 37.498653310353, "name": "Post St", "name_de": "Post St", "name_en": "Post St", "name_es": "Post St", "name_fr": "Post St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40626692771912, 37.78856467478382 ], [ -122.40598261356354, 37.788598589799406 ] ] }, "properties": { "class": "street", "len": 32.31026152792775, "name": "Post St", "name_de": "Post St", "name_en": "Post St", "name_es": "Post St", "name_fr": "Post St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40565001964569, 37.788640983547005 ], [ -122.40522623062134, 37.78869609538249 ] ] }, "properties": { "class": "street", "len": 47.92525221645662, "name": "Post St", "name_de": "Post St", "name_en": "Post St", "name_es": "Post St", "name_fr": "Post St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41234481334686, 37.807698748708574 ], [ -122.41397559642792, 37.807491072698134 ] ] }, "properties": { "class": "street", "len": 183.75914698432766, "name": "Beach St", "name_de": "Beach St", "name_en": "Beach St", "name_es": "Beach St", "name_fr": "Beach St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41214632987976, 37.80675784456153 ], [ -122.41234481334686, 37.807698748708574 ] ] }, "properties": { "class": "street", "len": 134.73853531996173, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42112100124359, 37.78476609454075 ], [ -122.4195545911789, 37.78496535527636 ], [ -122.41790235042572, 37.78517733419256 ], [ -122.41626620292664, 37.785385072940564 ], [ -122.4159175157547, 37.78542746853168 ], [ -122.41567611694335, 37.78545714543098 ], [ -122.41502702236174, 37.7855419365062 ], [ -122.41461932659148, 37.785592811104635 ], [ -122.4129831790924, 37.78580054868474 ], [ -122.41215169429778, 37.785910776551354 ], [ -122.41133630275725, 37.78601252520537 ], [ -122.409850358963, 37.78620330355411 ], [ -122.4097055196762, 37.78622026160572 ], [ -122.40933537483214, 37.78626689622757 ], [ -122.40895450115204, 37.78631353082002 ], [ -122.40807473659515, 37.78642799742214 ], [ -122.40805327892303, 37.7864322369225 ], [ -122.40802645683289, 37.7864322369225 ], [ -122.40641176700592, 37.78663997214301 ], [ -122.40536570549011, 37.78677139616462 ], [ -122.40485608577728, 37.78683922782627 ] ] }, "properties": { "class": "street", "len": 1833.5782452067062, "name": "O'Farrell St", "name_de": "O'Farrell St", "name_en": "O'Farrell St", "name_es": "O'Farrell St", "name_fr": "O'Farrell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.80106554267365 ], [ -122.40444302558899, 37.80103163338067 ] ] }, "properties": { "class": "street", "len": 58.18082588018759, "name": "Union St", "name_de": "Union St", "name_en": "Union St", "name_es": "Union St", "name_fr": "Union St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40670680999756, 37.804159700135244 ], [ -122.40676581859587, 37.8044394394888 ] ] }, "properties": { "class": "street", "len": 40.44708765741083, "name": "Kearny St", "name_de": "Kearny St", "name_en": "Kearny St", "name_es": "Kearny St", "name_fr": "Kearny St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41145431995392, 37.80112064524151 ], [ -122.41095542907715, 37.80077731318719 ] ] }, "properties": { "class": "main", "len": 73.95789342580765, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41095542907715, 37.80077731318719 ], [ -122.4102795124054, 37.800311057224846 ], [ -122.40913689136505, 37.799518415334305 ], [ -122.40908324718475, 37.79948874408232 ], [ -122.4089652299881, 37.79947178907586 ] ] }, "properties": { "class": "main", "len": 289.87044238473743, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41145431995392, 37.80112064524151 ], [ -122.41232335567474, 37.801010440064665 ], [ -122.41266131401063, 37.80098076941203 ], [ -122.41267740726471, 37.80098076941203 ], [ -122.41269886493683, 37.80098076941203 ], [ -122.41430282592773, 37.800756119798216 ], [ -122.41487681865692, 37.80067982354754 ], [ -122.41596579551697, 37.80053994688325 ], [ -122.41667926311493, 37.80044669562654 ], [ -122.41749465465546, 37.80034496684863 ], [ -122.41762340068817, 37.80032801203869 ] ] }, "properties": { "class": "street", "len": 696.0457391702105, "name": "Filbert St", "name_de": "Filbert St", "name_en": "Filbert St", "name_es": "Filbert St", "name_fr": "Filbert St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41102516651154, 37.80117574776828 ], [ -122.41130948066713, 37.801141838525915 ], [ -122.41145431995393, 37.80112064524151 ] ] }, "properties": { "class": "street", "len": 48.65819507844989, "name": "Filbert St", "name_de": "Filbert St", "name_en": "Filbert St", "name_es": "Filbert St", "name_fr": "Filbert St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40976452827454, 37.803239943579534 ], [ -122.41034924983978, 37.80316364989455 ], [ -122.41138994693756, 37.80303649357777 ], [ -122.41231262683868, 37.8029220527055 ], [ -122.4130368232727, 37.80282880445625 ] ] }, "properties": { "class": "street", "len": 368.9346596825863, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40919053554535, 37.80044669562654 ], [ -122.40920662879944, 37.80052299211805 ], [ -122.4092710018158, 37.80083665464399 ], [ -122.40934610366821, 37.80118422507645 ], [ -122.40938365459442, 37.801379202895646 ], [ -122.4094694852829, 37.80184969073116 ], [ -122.4095767736435, 37.802303221213165 ], [ -122.40976452827454, 37.803239943579534 ] ] }, "properties": { "class": "street", "len": 398.8186351854098, "name": "Stockton St", "name_de": "Stockton St", "name_en": "Stockton St", "name_es": "Stockton St", "name_fr": "Stockton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40919053554535, 37.80044669562654 ], [ -122.40964114665985, 37.8003915925559 ], [ -122.40986108779909, 37.80036192165466 ], [ -122.41015613079072, 37.80032377333558 ] ] }, "properties": { "class": "street", "len": 108.83598004008599, "name": "Union St", "name_de": "Union St", "name_en": "Union St", "name_es": "Union St", "name_fr": "Union St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41015613079071, 37.800323773335606 ], [ -122.41038680076599, 37.80048484388214 ], [ -122.41077303886414, 37.800756119798216 ], [ -122.41096079349518, 37.800883280040885 ] ] }, "properties": { "class": "main", "len": 119.07619620906235, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41096079349518, 37.800883280040885 ], [ -122.41130948066713, 37.801141838525915 ], [ -122.41149723529817, 37.80124780485665 ], [ -122.41243600845338, 37.80190055410142 ], [ -122.41266667842866, 37.80205738260592 ], [ -122.41290807724, 37.80218454060837 ] ] }, "properties": { "class": "main", "len": 284.5610334771084, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40444302558899, 37.80103163338067 ], [ -122.40525841712952, 37.80093414407668 ], [ -122.4059182405472, 37.80085360933718 ], [ -122.40602552890779, 37.80083665464399 ], [ -122.4063688516617, 37.800794267894 ], [ -122.40642786026002, 37.80079002921765 ], [ -122.40681409835817, 37.80073916508263 ], [ -122.40704476833345, 37.80071373300199 ], [ -122.40760266780855, 37.800641675392626 ], [ -122.4079191684723, 37.800603527218016 ], [ -122.40801036357881, 37.800590811155416 ], [ -122.40837514400484, 37.80054842426436 ], [ -122.40885257720949, 37.80048908257599 ], [ -122.40919053554536, 37.80044669562654 ] ] }, "properties": { "class": "street", "len": 534.9702814167264, "name": "Union St", "name_de": "Union St", "name_en": "Union St", "name_es": "Union St", "name_fr": "Union St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41015613079071, 37.800323773335606 ], [ -122.4102795124054, 37.800311057224846 ], [ -122.41084277629852, 37.800251715345794 ] ] }, "properties": { "class": "street", "len": 76.63591281024814, "name": "Union St", "name_de": "Union St", "name_en": "Union St", "name_es": "Union St", "name_fr": "Union St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4371337890625, 37.806461160587695 ], [ -122.4367743730545, 37.80650354408551 ], [ -122.43663489818573, 37.8065162591301 ], [ -122.4365222454071, 37.80652473582528 ], [ -122.43640422821045, 37.80652473582528 ], [ -122.43629693984984, 37.80651202078214 ], [ -122.43617892265318, 37.80648235233963 ], [ -122.43608236312865, 37.80644844553362 ] ] }, "properties": { "class": "main", "len": 1295.5299825214686, "name": "Marina Blvd", "name_de": "Marina Blvd", "name_en": "Marina Blvd", "name_es": "Marina Blvd", "name_fr": "Marina Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43680119514465, 37.80276522603697 ], [ -122.43694603443146, 37.80283728157465 ], [ -122.4371337890625, 37.80293900691998 ] ] }, "properties": { "class": "street", "len": 84.14239889006456, "name": "Cervantes Blvd", "name_de": "Cervantes Blvd", "name_en": "Cervantes Blvd", "name_es": "Cervantes Blvd", "name_fr": "Cervantes Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43657052516937, 37.794062943376915 ], [ -122.4371337890625, 37.79399087927983 ] ] }, "properties": { "class": "street", "len": 1112.992845561897, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43548691272736, 37.79709381086916 ], [ -122.43529915809631, 37.79616124949991 ], [ -122.43511140346527, 37.79522867635839 ], [ -122.4349182844162, 37.794274896196235 ] ] }, "properties": { "class": "street", "len": 401.7067503415705, "name": "Fillmore St", "name_de": "Fillmore St", "name_en": "Fillmore St", "name_es": "Fillmore St", "name_fr": "Fillmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43663489818573, 37.80269317042898 ], [ -122.43680655956268, 37.80361717230817 ], [ -122.4369728565216, 37.80436314704291 ], [ -122.43701577186584, 37.804553878009884 ], [ -122.43713378906251, 37.805143021663845 ] ] }, "properties": { "class": "street", "len": 514.0161271942299, "name": "Fillmore St", "name_de": "Fillmore St", "name_en": "Fillmore St", "name_es": "Fillmore St", "name_fr": "Fillmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4371337890625, 37.7968606716305 ], [ -122.43694603443146, 37.79594930209237 ], [ -122.43675827980042, 37.795016726275364 ], [ -122.43657052516937, 37.794062943376915 ] ] }, "properties": { "class": "street", "len": 402.15113100734203, "name": "Steiner St", "name_de": "Steiner St", "name_en": "Steiner St", "name_es": "Steiner St", "name_fr": "Steiner St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43548691272736, 37.79709381086916 ], [ -122.4371337890625, 37.79688186613715 ] ] }, "properties": { "class": "street", "len": 185.81727852882707, "name": "Union St", "name_de": "Union St", "name_en": "Union St", "name_es": "Union St", "name_fr": "Union St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42009103298187, 37.795987452670616 ], [ -122.4197906255722, 37.79603408112835 ], [ -122.41968333721161, 37.79604679797535 ], [ -122.4194473028183, 37.796084948503236 ], [ -122.41934537887575, 37.796097665341506 ], [ -122.41930246353151, 37.796097665341506 ], [ -122.41927027702332, 37.79609342639566 ], [ -122.4192649126053, 37.796072231662805 ] ] }, "properties": { "class": "path", "len": 95.58863909056261, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42471516132355, 37.78541898941539 ], [ -122.42468297481537, 37.785279083856395 ], [ -122.4244898557663, 37.78434637336127 ], [ -122.42436647415161, 37.78374434488178 ] ] }, "properties": { "class": "main", "len": 1784.246105662871, "name": "Gough St", "name_de": "Gough St", "name_en": "Gough St", "name_es": "Gough St", "name_fr": "Gough St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42484390735626, 37.803218750897145 ], [ -122.42502093315125, 37.804159700135244 ] ] }, "properties": { "class": "main", "len": 134.30652850837689, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42502093315125, 37.804159700135244 ], [ -122.42520332336426, 37.805096398955996 ] ] }, "properties": { "class": "main", "len": 133.38853698890858, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42480635643005, 37.802269312488406 ], [ -122.42479026317598, 37.802197256396575 ], [ -122.42463469505311, 37.80142158930995 ], [ -122.42461860179903, 37.80134529374666 ] ] }, "properties": { "class": "main", "len": 132.06325543942452, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4249941110611, 37.8031975582087 ], [ -122.42482781410217, 37.80237103861598 ], [ -122.42480635643005, 37.802269312488406 ] ] }, "properties": { "class": "main", "len": 132.1428868028356, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42348670959473, 37.7957246371765 ], [ -122.42505848407745, 37.79552964443152 ], [ -122.42671072483061, 37.79532193420228 ] ] }, "properties": { "class": "street", "len": 363.4559428062918, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42012321949005, 37.79614429372968 ], [ -122.42099225521089, 37.79608070955667 ], [ -122.42163598537446, 37.79600016952563 ], [ -122.42177009582521, 37.79594506313799 ] ] }, "properties": { "class": "main", "len": 186.73849480145344, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42010712623596, 37.79606375376797 ], [ -122.41949558258057, 37.79613157689948 ] ] }, "properties": { "class": "main", "len": 68.68043826231172, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42517650127411, 37.80413850771679 ], [ -122.4249941110611, 37.8031975582087 ] ] }, "properties": { "class": "main", "len": 134.3164163464744, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42183983325958, 37.78755145651453 ], [ -122.42341697216034, 37.787356442199 ], [ -122.4250477552414, 37.78713175115391 ] ] }, "properties": { "class": "street", "len": 361.9390152582063, "name": "Sutter St", "name_de": "Sutter St", "name_en": "Sutter St", "name_es": "Sutter St", "name_fr": "Sutter St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42242455482483, 37.790396063350826 ], [ -122.42254257202148, 37.79037910625748 ], [ -122.42398023605347, 37.79016290297611 ] ] }, "properties": { "class": "street", "len": 175.89302792667098, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41963505744934, 37.80199804212988 ], [ -122.41961896419525, 37.80192598577343 ], [ -122.41945266723633, 37.80114607718208 ], [ -122.41944193840027, 37.80109521329224 ], [ -122.41943657398224, 37.80106978133419 ], [ -122.41931855678558, 37.80045517301839 ], [ -122.41925418376923, 37.80012455401583 ], [ -122.41913080215454, 37.79951417658475 ], [ -122.41912543773653, 37.79948874408232 ], [ -122.4190664291382, 37.79919626967515 ], [ -122.41900742053987, 37.798916510462924 ], [ -122.41897523403169, 37.79874272011575 ], [ -122.41893768310548, 37.79856892935968 ], [ -122.41887867450718, 37.79826373484735 ], [ -122.41869091987614, 37.797339665996475 ], [ -122.4185031652451, 37.79643254129425 ], [ -122.41849780082707, 37.796398629874425 ] ] }, "properties": { "class": "street", "len": 798.6670949796834, "name": "Hyde St", "name_de": "Hyde St", "name_en": "Hyde St", "name_es": "Hyde St", "name_fr": "Hyde St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42347061634064, 37.804358908571395 ], [ -122.42365837097168, 37.80528712802926 ] ] }, "properties": { "class": "street", "len": 132.99522284668095, "name": "Polk St", "name_de": "Polk St", "name_en": "Polk St", "name_es": "Polk St", "name_fr": "Polk St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41949558258057, 37.79613157689948 ], [ -122.41784870624542, 37.796335045920344 ] ] }, "properties": { "class": "main", "len": 185.68311177870564, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41722643375397, 37.805172690644405 ], [ -122.41855680942535, 37.80500739188654 ] ] }, "properties": { "class": "main", "len": 149.5837056633596, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41951704025269, 37.796212116787245 ], [ -122.42012321949005, 37.79614429372968 ] ] }, "properties": { "class": "main", "len": 68.21345615050646, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41850316524506, 37.79643254129425 ], [ -122.41861045360565, 37.79641982451364 ], [ -122.41999447345734, 37.79623755041776 ], [ -122.42006957530975, 37.796241789355314 ], [ -122.42013931274414, 37.79625450616659 ] ] }, "properties": { "class": "street", "len": 184.32818978811707, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42013931274414, 37.79625450616659 ], [ -122.42031633853912, 37.797110766421454 ], [ -122.42050409317017, 37.79804755463823 ], [ -122.42063820362091, 37.798696093367674 ], [ -122.42069721221924, 37.79898433097531 ], [ -122.42088496685028, 37.79991261797943 ], [ -122.42107272148132, 37.800832415970085 ], [ -122.42109417915344, 37.800938382744725 ], [ -122.4212658405304, 37.80178187284963 ], [ -122.42145359516144, 37.80271436326215 ] ] }, "properties": { "class": "street", "len": 922.2551334323109, "name": "Larkin St", "name_de": "Larkin St", "name_en": "Larkin St", "name_es": "Larkin St", "name_fr": "Larkin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41685092449188, 37.804977722839574 ], [ -122.41688847541809, 37.80521507488168 ] ] }, "properties": { "class": "street", "len": 33.292385014751915, "name": "Jones St", "name_de": "Jones St", "name_en": "Jones St", "name_es": "Jones St", "name_fr": "Jones St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42019295692444, 37.80478699296722 ], [ -122.42008566856384, 37.804235992791284 ], [ -122.42001593112946, 37.80388843671987 ], [ -122.4198228120804, 37.8029220527055 ], [ -122.41964578628541, 37.8020743370189 ], [ -122.41963505744936, 37.80199804212988 ] ] }, "properties": { "class": "street", "len": 398.17634129276195, "name": "Hyde St", "name_de": "Hyde St", "name_en": "Hyde St", "name_es": "Hyde St", "name_fr": "Hyde St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42243528366089, 37.80354087901289 ], [ -122.42224752902985, 37.80362141082225 ], [ -122.42178618907927, 37.803672272972435 ], [ -122.42174327373503, 37.803684988504514 ], [ -122.4217003583908, 37.80371041956209 ] ] }, "properties": { "class": "street", "len": 86.57526000566389, "name": "Francisco St", "name_de": "Francisco St", "name_en": "Francisco St", "name_es": "Francisco St", "name_fr": "Francisco St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41855680942535, 37.80500739188654 ], [ -122.4187445640564, 37.80592288804934 ], [ -122.41883039474487, 37.80627043454651 ], [ -122.41890549659729, 37.80686380283475 ], [ -122.4190878868103, 37.807800467357744 ], [ -122.41921126842499, 37.80838534687133 ] ] }, "properties": { "class": "street", "len": 482.4912253180585, "name": "Leavenworth St", "name_de": "Leavenworth St", "name_en": "Leavenworth St", "name_es": "Leavenworth St", "name_fr": "Leavenworth St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42174863815308, 37.80423175431249 ], [ -122.42181837558745, 37.80456659339016 ] ] }, "properties": { "class": "street", "len": 48.16414641630078, "name": "Larkin St", "name_de": "Larkin St", "name_en": "Larkin St", "name_es": "Larkin St", "name_fr": "Larkin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41809010505676, 37.78610155516276 ], [ -122.41974234580994, 37.78589381842874 ], [ -122.4213033914566, 37.785694560196426 ] ] }, "properties": { "class": "street", "len": 362.02801077693545, "name": "Geary St", "name_de": "Geary St", "name_en": "Geary St", "name_es": "Geary St", "name_fr": "Geary St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4205631017685, 37.80665188613628 ], [ -122.42103517055511, 37.80659254935171 ], [ -122.42168962955475, 37.80650354408551 ], [ -122.42219924926758, 37.80643573047732 ], [ -122.42244601249695, 37.80640606200415 ], [ -122.42328822612762, 37.80629162635318 ], [ -122.42384612560271, 37.80621957418566 ] ] }, "properties": { "class": "street", "len": 370.54383566678337, "name": "Beach St", "name_de": "Beach St", "name_en": "Beach St", "name_es": "Beach St", "name_fr": "Beach St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42384612560272, 37.80621957418566 ], [ -122.42399632930757, 37.806202620724285 ], [ -122.42511749267578, 37.80605427777103 ] ] }, "properties": { "class": "street", "len": 143.20004374578073, "name": "Beach St", "name_de": "Beach St", "name_en": "Beach St", "name_es": "Beach St", "name_fr": "Beach St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41416871547699, 37.80841925278804 ], [ -122.4158102273941, 37.808215817054325 ], [ -122.41745710372925, 37.80800814249806 ] ] }, "properties": { "class": "street", "len": 370.5655929110899, "name": "Jefferson St", "name_de": "Jefferson St", "name_en": "Jefferson St", "name_es": "Jefferson St", "name_fr": "Jefferson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4130368232727, 37.80282880445625 ], [ -122.41362690925598, 37.8027567489103 ], [ -122.41365909576416, 37.80275251034657 ], [ -122.41372346878052, 37.8027440332184 ], [ -122.41378784179688, 37.80272707895914 ], [ -122.41387367248535, 37.80270588612963 ], [ -122.41457104682922, 37.80262111475069 ], [ -122.41468906402588, 37.80261687617921 ], [ -122.41481781005861, 37.80260839903546 ], [ -122.41623938083649, 37.802430378792366 ], [ -122.41634130477905, 37.80240494729402 ], [ -122.41645395755768, 37.80238375437207 ], [ -122.4178808927536, 37.80220573358751 ], [ -122.4179881811142, 37.80220997218259 ] ] }, "properties": { "class": "street", "len": 558.8266262085464, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41397559642792, 37.807491072698134 ], [ -122.41378784179688, 37.80655440425077 ] ] }, "properties": { "class": "street", "len": 134.02815525115065, "name": "Mason St", "name_de": "Mason St", "name_en": "Mason St", "name_es": "Mason St", "name_fr": "Mason St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41378784179688, 37.80655440425077 ], [ -122.41360545158386, 37.80561772392276 ], [ -122.41351962089539, 37.80515573694268 ], [ -122.41343379020691, 37.80468527016725 ], [ -122.41337478160858, 37.80440977021365 ], [ -122.41322457790375, 37.80376128165094 ], [ -122.4130368232727, 37.80282880445625 ] ] }, "properties": { "class": "street", "len": 531.7786686068795, "name": "Mason St", "name_de": "Mason St", "name_en": "Mason St", "name_es": "Mason St", "name_fr": "Mason St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41576731204987, 37.791209999255514 ], [ -122.4161159992218, 37.79116336775309 ], [ -122.41643249988557, 37.79112097545263 ], [ -122.4171942472458, 37.79102771230599 ], [ -122.41741418838502, 37.79099803764374 ], [ -122.41763412952425, 37.79097260220947 ], [ -122.41907179355623, 37.790798793174275 ], [ -122.42069184780122, 37.79057835185864 ] ] }, "properties": { "class": "street", "len": 555.1665282786608, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42243528366089, 37.80354087901289 ], [ -122.4232828617096, 37.803426438922145 ] ] }, "properties": { "class": "street", "len": 95.40662712866893, "name": "Francisco St", "name_de": "Francisco St", "name_en": "Francisco St", "name_es": "Francisco St", "name_fr": "Francisco St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42145359516144, 37.802714363262176 ], [ -122.42152333259583, 37.802803373095095 ], [ -122.42160379886627, 37.80321451235996 ] ] }, "properties": { "class": "street", "len": 72.9994683493678, "name": "Larkin St", "name_de": "Larkin St", "name_en": "Larkin St", "name_es": "Larkin St", "name_fr": "Larkin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42145359516144, 37.802714363262176 ], [ -122.42143750190736, 37.80282032733683 ], [ -122.42152333259584, 37.803295044525235 ], [ -122.42157161235811, 37.80340100776679 ], [ -122.42161452770235, 37.80349001677221 ], [ -122.42177009582521, 37.80354511753136 ], [ -122.42183446884157, 37.80354935604959 ] ] }, "properties": { "class": "street", "len": 137.79170216752743, "name": "Larkin St", "name_de": "Larkin St", "name_en": "Larkin St", "name_es": "Larkin St", "name_fr": "Larkin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41845488548279, 37.80405373798221 ], [ -122.41842806339265, 37.804019830061115 ], [ -122.41840660572053, 37.8039732066442 ], [ -122.41829931735992, 37.80347306268421 ], [ -122.41821885108948, 37.8033586224884 ] ] }, "properties": { "class": "street", "len": 102.36354696374765, "name": "Leavenworth St", "name_de": "Leavenworth St", "name_en": "Leavenworth St", "name_es": "Leavenworth St", "name_fr": "Leavenworth St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42170035839081, 37.80371041956209 ], [ -122.42168426513672, 37.80375280463857 ], [ -122.4216789007187, 37.80377823567278 ], [ -122.42168426513672, 37.803871482723345 ], [ -122.42168426513672, 37.8038969137167 ], [ -122.4216789007187, 37.8039350601903 ], [ -122.42167353630067, 37.80396472965615 ], [ -122.42166280746461, 37.80399016061739 ], [ -122.42164671421055, 37.8040155915699 ], [ -122.42162525653843, 37.804036784023616 ] ] }, "properties": { "class": "street", "len": 47.97486496082605, "name": "Larkin St", "name_de": "Larkin St", "name_en": "Larkin St", "name_es": "Larkin St", "name_fr": "Larkin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41773068904877, 37.799874469428296 ], [ -122.41826176643372, 37.799781217331464 ], [ -122.41855680942535, 37.799743068712466 ] ] }, "properties": { "class": "path", "len": 93.91102111592187, "name": "Havens St", "name_de": "Havens St", "name_en": "Havens St", "name_es": "Havens St", "name_fr": "Havens St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42268204689026, 37.78374434488178 ], [ -122.42274641990662, 37.78408775609415 ], [ -122.42283761501312, 37.78454139561992 ], [ -122.42293417453766, 37.7850162302717 ], [ -122.42302536964417, 37.785474103653826 ], [ -122.42321848869324, 37.78640256041474 ], [ -122.42329895496368, 37.78680107252427 ], [ -122.42330968379974, 37.786868904158695 ], [ -122.42341697216034, 37.787356442199 ], [ -122.42350280284882, 37.787805822239655 ], [ -122.42359399795532, 37.78828063591726 ], [ -122.42369055747986, 37.78874696780958 ], [ -122.42378175258636, 37.78920481807711 ], [ -122.42398023605347, 37.790162902976135 ], [ -122.42415189743042, 37.79109130082786 ], [ -122.42433965206148, 37.79197305602324 ], [ -122.42451667785646, 37.79285056156404 ], [ -122.42468833923341, 37.79372805668306 ], [ -122.42486000061037, 37.79460978041143 ], [ -122.42505848407747, 37.79552964443154 ], [ -122.42524087429048, 37.79642406344079 ], [ -122.42525160312654, 37.7964834083948 ], [ -122.42543935775758, 37.79741172682706 ], [ -122.42562711238863, 37.798344272410624 ], [ -122.42579877376558, 37.79920050844297 ], [ -122.42581486701967, 37.799276806221684 ], [ -122.42583096027376, 37.799348865162536 ], [ -122.42599189281465, 37.80015422501243 ], [ -122.42600262165071, 37.80020932826014 ], [ -122.42602407932283, 37.80029834111194 ], [ -122.4261099100113, 37.80074340376193 ], [ -122.42618501186375, 37.801052826690636 ] ] }, "properties": { "class": "main", "len": 3418.3581059088283, "name": "Franklin St", "name_de": "Franklin St", "name_en": "Franklin St", "name_es": "Franklin St", "name_fr": "Franklin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4108749628067, 37.78374434488178 ], [ -122.41095542907715, 37.784151350588004 ], [ -122.41114318370819, 37.785075584388686 ], [ -122.41133630275725, 37.78601252520537 ], [ -122.41151869297026, 37.78694097520201 ], [ -122.41157233715056, 37.78722077976292 ], [ -122.41164207458495, 37.78756841425678 ], [ -122.41170108318327, 37.787873652951795 ], [ -122.41176009178157, 37.78815345398132 ], [ -122.4118191003799, 37.78848412655941 ], [ -122.41188883781429, 37.78881055829413 ], [ -122.41207659244533, 37.78974321244753 ], [ -122.41215705871578, 37.79012474939018 ], [ -122.4122697114944, 37.79067585482935 ] ] }, "properties": { "class": "main", "len": 1220.1934447537033, "name": "Taylor St", "name_de": "Taylor St", "name_en": "Taylor St", "name_es": "Taylor St", "name_fr": "Taylor St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41741418838501, 37.79099803764377 ], [ -122.41720497608185, 37.79004844215926 ], [ -122.4170172214508, 37.789111552511955 ], [ -122.41682946681976, 37.788178890386014 ], [ -122.4167650938034, 37.78786941353413 ], [ -122.41664171218872, 37.787250455942115 ], [ -122.41645395755768, 37.78631353082002 ], [ -122.41633594036102, 37.78573271606973 ], [ -122.41626620292664, 37.785385072940564 ], [ -122.41607308387756, 37.784452363783075 ], [ -122.41593360900879, 37.78374434488178 ] ] }, "properties": { "class": "street", "len": 1758.1372162447021, "name": "Hyde St", "name_de": "Hyde St", "name_en": "Hyde St", "name_es": "Hyde St", "name_fr": "Hyde St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43491291999817, 37.785876860302224 ], [ -122.43655443191528, 37.78566912293662 ], [ -122.4371337890625, 37.78559705065291 ] ] }, "properties": { "class": "street", "len": 1275.7791452826677, "name": "Sutter St", "name_de": "Sutter St", "name_en": "Sutter St", "name_es": "Sutter St", "name_fr": "Sutter St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43491291999817, 37.785876860302224 ], [ -122.43472516536713, 37.7849483969368 ] ] }, "properties": { "class": "street", "len": 132.62396201277474, "name": "Steiner St", "name_de": "Steiner St", "name_en": "Steiner St", "name_es": "Steiner St", "name_fr": "Steiner St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43472516536713, 37.7849483969368 ], [ -122.43460178375244, 37.78430397714999 ] ] }, "properties": { "class": "street", "len": 92.04912275497647, "name": "Steiner St", "name_de": "Steiner St", "name_en": "Steiner St", "name_es": "Steiner St", "name_fr": "Steiner St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41391122341156, 37.79045965241627 ], [ -122.41374492645264, 37.789548203916084 ], [ -122.41355180740356, 37.78860282917525 ], [ -122.41341233253479, 37.78794572301528 ], [ -122.41335868835449, 37.787665921199185 ], [ -122.41329967975616, 37.787386118323695 ], [ -122.41322994232178, 37.787055440832255 ], [ -122.41316020488739, 37.786745959275464 ], [ -122.41298317909241, 37.78580054868476 ], [ -122.41288661956787, 37.78536811469731 ], [ -122.41287589073181, 37.785329958635764 ], [ -122.4127846956253, 37.784867844770744 ], [ -122.41259694099426, 37.78393936872902 ], [ -122.41255939006807, 37.78374434488178 ] ] }, "properties": { "class": "main", "len": 1360.046048576959, "name": "Jones St", "name_de": "Jones St", "name_en": "Jones St", "name_es": "Jones St", "name_fr": "Jones St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41761267185211, 37.78374434488178 ], [ -122.41762340068817, 37.78377826210958 ], [ -122.41770923137666, 37.784236143161344 ], [ -122.41781115531921, 37.78471097977434 ], [ -122.41790235042572, 37.78517733419256 ], [ -122.41799890995026, 37.785643685668035 ], [ -122.41809010505676, 37.78610155516276 ] ] }, "properties": { "class": "street", "len": 799.7411212773527, "name": "Larkin St", "name_de": "Larkin St", "name_en": "Larkin St", "name_es": "Larkin St", "name_fr": "Larkin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42542326450348, 37.78899709006654 ], [ -122.42533206939697, 37.78853923851192 ], [ -122.42524087429047, 37.78807290530868 ], [ -122.42514431476593, 37.787598090296335 ], [ -122.4250477552414, 37.78713175115391 ], [ -122.42486000061035, 37.786199064040595 ], [ -122.42471516132355, 37.78541898941539 ] ] }, "properties": { "class": "main", "len": 509.91428016842895, "name": "Gough St", "name_de": "Gough St", "name_en": "Gough St", "name_es": "Gough St", "name_fr": "Gough St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42561638355255, 37.7899551776589 ], [ -122.4254232645035, 37.78899709006654 ] ] }, "properties": { "class": "street", "len": 136.51211008514636, "name": "Gough St", "name_de": "Gough St", "name_en": "Gough St", "name_es": "Gough St", "name_fr": "Gough St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40868091583252, 37.785393552060754 ], [ -122.40951776504518, 37.78528332342268 ], [ -122.4111431837082, 37.785075584388686 ], [ -122.41189956665039, 37.784982313612026 ], [ -122.41221606731416, 37.78493991776557 ], [ -122.4127846956253, 37.784867844770744 ], [ -122.41443157196046, 37.78466010456887 ], [ -122.4147802591324, 37.78461346893308 ], [ -122.41607308387758, 37.784452363783075 ], [ -122.41770923137666, 37.784236143161344 ], [ -122.4193668365479, 37.78403264082188 ], [ -122.42093324661259, 37.78383337757154 ], [ -122.4210780858994, 37.78381641897224 ], [ -122.4216735363007, 37.78374434488178 ] ] }, "properties": { "class": "street", "len": 1760.9672786629048, "name": "Ellis St", "name_de": "Ellis St", "name_en": "Ellis St", "name_es": "Ellis St", "name_fr": "Ellis St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40668535232544, 37.78803475064363 ], [ -122.40513503551483, 37.788242481359454 ] ] }, "properties": { "class": "street", "len": 174.9995191421173, "name": "Maiden Ln", "name_de": "Maiden Ln", "name_en": "Maiden Ln", "name_es": "Maiden Ln", "name_fr": "Maiden Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40677118301392, 37.78850108408765 ], [ -122.40668535232544, 37.78803475064363 ], [ -122.40659952163695, 37.78757689312644 ] ] }, "properties": { "class": "street", "len": 131.5248338994387, "name": "Stockton St", "name_de": "Stockton St", "name_en": "Stockton St", "name_es": "Stockton St", "name_fr": "Stockton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40540862083435, 37.7896245116636 ], [ -122.40699112415314, 37.78942950281888 ] ] }, "properties": { "class": "street", "len": 178.11152966634953, "name": "Sutter St", "name_de": "Sutter St", "name_en": "Sutter St", "name_es": "Sutter St", "name_fr": "Sutter St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40699112415314, 37.78942950281888 ], [ -122.40775287151337, 37.78933623753729 ], [ -122.40860044956207, 37.78923025411991 ], [ -122.40861654281616, 37.78923025411991 ], [ -122.40863800048828, 37.78922601478005 ], [ -122.41025805473328, 37.78901828682906 ], [ -122.41097152233122, 37.78892502102849 ], [ -122.41188883781433, 37.78881055829413 ], [ -122.41355180740355, 37.78860282917527 ], [ -122.41518795490263, 37.78839086008467 ], [ -122.41682946681975, 37.788178890386014 ], [ -122.41788625717162, 37.78804322945981 ], [ -122.41846561431883, 37.78796692007937 ], [ -122.42011785507198, 37.787759188588936 ], [ -122.4216896295547, 37.787572653691754 ] ] }, "properties": { "class": "street", "len": 1657.262395234056, "name": "Sutter St", "name_de": "Sutter St", "name_en": "Sutter St", "name_es": "Sutter St", "name_fr": "Sutter St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40540862083435, 37.7896245116636 ], [ -122.40551054477692, 37.790112031523854 ], [ -122.40558028221129, 37.79046813095418 ], [ -122.40557491779327, 37.790565634070354 ] ] }, "properties": { "class": "street", "len": 134.6524870185753, "name": "Grant Ave", "name_de": "Grant Ave", "name_en": "Grant Ave", "name_es": "Grant Ave", "name_fr": "Grant Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40699112415314, 37.78942950281888 ], [ -122.40688383579254, 37.78897589329795 ], [ -122.40677118301392, 37.78850108408762 ] ] }, "properties": { "class": "street", "len": 133.25002412547389, "name": "Stockton St", "name_de": "Stockton St", "name_en": "Stockton St", "name_es": "Stockton St", "name_fr": "Stockton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42069184780121, 37.79057835185864 ], [ -122.42080450057983, 37.79061226595001 ], [ -122.42216169834137, 37.79043845606721 ], [ -122.42225289344788, 37.79042573825485 ] ] }, "properties": { "class": "street", "len": 177.0796643801487, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42486000061035, 37.786199064040595 ], [ -122.42380321025848, 37.786330488846325 ], [ -122.42356181144714, 37.786360165383016 ], [ -122.42321848869324, 37.78640256041474 ], [ -122.42189884185791, 37.78657214029849 ], [ -122.42165744304657, 37.78660605622855 ] ] }, "properties": { "class": "street", "len": 361.0679615924578, "name": "Post St", "name_de": "Post St", "name_en": "Post St", "name_es": "Post St", "name_fr": "Post St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43219316005707, 37.78911579185835 ], [ -122.432000041008, 37.788161932783865 ] ] }, "properties": { "class": "street", "len": 136.3813608966564, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41413116455078, 37.78374434488178 ], [ -122.41329967975616, 37.78385033616694 ], [ -122.41259694099426, 37.78393936872902 ], [ -122.41095542907716, 37.784151350588004 ], [ -122.40933537483217, 37.7843590922199 ], [ -122.40871310234071, 37.78443964494047 ], [ -122.40870237350465, 37.78443964494047 ], [ -122.40853607654573, 37.78446508262344 ] ] }, "properties": { "class": "street", "len": 1015.5915745777658, "name": "Eddy St", "name_de": "Eddy St", "name_en": "Eddy St", "name_es": "Eddy St", "name_fr": "Eddy St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40868091583252, 37.785393552060754 ], [ -122.40869700908661, 37.78548258276376 ], [ -122.40872919559479, 37.7855461760574 ], [ -122.40883111953735, 37.78580478822113 ], [ -122.40884721279143, 37.785851423105164 ], [ -122.40895450115204, 37.78631353082002 ] ] }, "properties": { "class": "street", "len": 133.50390021775553, "name": "Cyril Magnin St", "name_de": "Cyril Magnin St", "name_en": "Cyril Magnin St", "name_es": "Cyril Magnin St", "name_fr": "Cyril Magnin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40853607654572, 37.78446508262347 ], [ -122.40854680538177, 37.78453291640197 ], [ -122.40868091583252, 37.785393552060754 ] ] }, "properties": { "class": "street", "len": 131.98575823906768, "name": "Cyril Magnin St", "name_de": "Cyril Magnin St", "name_en": "Cyril Magnin St", "name_es": "Cyril Magnin St", "name_fr": "Cyril Magnin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40487217903137, 37.78400296335056 ], [ -122.40541934967041, 37.78443964494047 ] ] }, "properties": { "class": "service", "len": 86.69911245112657, "name": "Jessie E", "name_de": "Jessie E", "name_en": "Jessie E", "name_es": "Jessie E", "name_fr": "Jessie E", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42369055747986, 37.78874696780958 ], [ -122.42533206939697, 37.78853923851192 ], [ -122.42696821689606, 37.788331508630314 ] ] }, "properties": { "class": "street", "len": 369.2941182169342, "name": "Austin St", "name_de": "Austin St", "name_en": "Austin St", "name_es": "Austin St", "name_fr": "Austin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40487217903137, 37.78400296335056 ], [ -122.40520477294922, 37.78374434488178 ] ] }, "properties": { "class": "main", "len": 183.31487943400796, "name": "Mission St", "name_de": "Mission St", "name_en": "Mission St", "name_es": "Mission St", "name_fr": "Mission St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40576267242432, 37.80676208289539 ], [ -122.4059933423996, 37.80685532617847 ], [ -122.40612745285034, 37.8069146627519 ], [ -122.40701258182526, 37.80734697063339 ], [ -122.40714132785797, 37.80740206851487 ], [ -122.4073076248169, 37.807457166355256 ] ] }, "properties": { "class": "main", "len": 198.17886927846018, "name": "The Embarcadero", "name_de": "The Embarcadero", "name_en": "The Embarcadero", "name_es": "The Embarcadero", "name_fr": "The Embarcadero", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41015613079071, 37.80838110863068 ], [ -122.41014003753662, 37.8084658733981 ], [ -122.41009712219238, 37.808698976006774 ], [ -122.40997910499573, 37.809279610214595 ] ] }, "properties": { "class": "path", "len": 127.82849278118682, "name": "Pier 39", "name_de": "Pier 39", "name_en": "Pier 39", "name_es": "Pier 39", "name_fr": "Pier 39", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41773068904877, 37.80797423639261 ], [ -122.41791844367981, 37.80895326892251 ], [ -122.41796135902405, 37.808987174578434 ], [ -122.41804718971252, 37.80902955662645 ], [ -122.41977453231812, 37.80907617685116 ] ] }, "properties": { "class": "service", "len": 349.813466182768, "name": "Jones Alley", "name_de": "Jones Alley", "name_en": "Jones Alley", "name_es": "Jones Alley", "name_fr": "Jones Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40853607654572, 37.80529136644753 ], [ -122.40860044956207, 37.80561348552322 ] ] }, "properties": { "class": "street", "len": 46.29339693794459, "name": "Grant Ave", "name_de": "Grant Ave", "name_en": "Grant Ave", "name_es": "Grant Ave", "name_fr": "Grant Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41722643375397, 37.805172690644405 ], [ -122.4183851480484, 37.805973748614505 ] ] }, "properties": { "class": "main", "len": 171.63314044822167, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41488218307495, 37.80354511753136 ], [ -122.41509675979614, 37.80374008911819 ], [ -122.41598725318907, 37.8043673855142 ], [ -122.41685092449187, 37.804977722839574 ], [ -122.41722643375395, 37.805172690644405 ] ] }, "properties": { "class": "main", "len": 348.67300964094204, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41722643375397, 37.805172690644405 ], [ -122.41683483123781, 37.804833615870386 ], [ -122.41614818573, 37.80434619315537 ], [ -122.41555809974672, 37.80395201417224 ], [ -122.41515040397645, 37.803668034461275 ], [ -122.41488218307497, 37.80354511753136 ] ] }, "properties": { "class": "main", "len": 348.88383735093436, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41102516651154, 37.80117574776828 ], [ -122.41120755672455, 37.802095530029646 ], [ -122.41138994693756, 37.80303649357777 ], [ -122.41148114204405, 37.80347306268421 ], [ -122.41158306598662, 37.80396472965615 ], [ -122.41177082061766, 37.80489719250909 ], [ -122.41186201572417, 37.80536341952066 ], [ -122.41195321083067, 37.805821166813914 ], [ -122.41214632987972, 37.80675784456153 ] ] }, "properties": { "class": "street", "len": 796.8073203842616, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40787625312805, 37.80537613476155 ], [ -122.40695893764496, 37.80549057183116 ] ] }, "properties": { "class": "street_limited", "len": 103.14921327965067, "name": "Francisco St", "name_de": "Francisco St", "name_en": "Francisco St", "name_es": "Francisco St", "name_fr": "Francisco St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40911543369293, 37.808135290254896 ], [ -122.4093246459961, 37.80816919628643 ], [ -122.41071939468384, 37.80832601147965 ], [ -122.41083204746246, 37.80833448796713 ], [ -122.41086423397064, 37.80833872621046 ], [ -122.41192102432251, 37.80849554104372 ] ] }, "properties": { "class": "street", "len": 316.6218167752498, "name": "The Embarcadero", "name_de": "The Embarcadero", "name_en": "The Embarcadero", "name_es": "The Embarcadero", "name_fr": "The Embarcadero", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40911543369293, 37.808135290254896 ], [ -122.40984499454498, 37.808050525108015 ], [ -122.4105316400528, 37.80793609200535 ], [ -122.41071403026581, 37.80790642413496 ], [ -122.41081595420836, 37.807893709329726 ], [ -122.41234481334685, 37.807698748708574 ] ] }, "properties": { "class": "street", "len": 364.7876259762513, "name": "Beach St", "name_de": "Beach St", "name_en": "Beach St", "name_es": "Beach St", "name_fr": "Beach St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40944802761078, 37.80471070088035 ], [ -122.40954458713531, 37.80517692906923 ] ] }, "properties": { "class": "service", "len": 66.49836163338345, "name": "Bellair Pl", "name_de": "Bellair Pl", "name_en": "Bellair Pl", "name_es": "Bellair Pl", "name_fr": "Bellair Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4262011051178, 37.80115455449363 ], [ -122.42621719837189, 37.80123932755579 ], [ -122.42637813091278, 37.80207009841604 ], [ -122.42656588554382, 37.80299834664004 ], [ -122.42676973342896, 37.80394353718175 ], [ -122.42682337760925, 37.80419784647312 ] ] }, "properties": { "class": "street", "len": 434.6988194050417, "name": "Franklin St", "name_de": "Franklin St", "name_en": "Franklin St", "name_es": "Franklin St", "name_fr": "Franklin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4053281545639, 37.79709804975758 ], [ -122.40541398525238, 37.797564326000824 ], [ -122.40548372268677, 37.79790343414736 ], [ -122.4054890871048, 37.798017882795456 ] ] }, "properties": { "class": "main", "len": 130.87633459140386, "name": "Kearny St", "name_de": "Kearny St", "name_en": "Kearny St", "name_es": "Kearny St", "name_fr": "Kearny St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41840660572052, 37.801196941036885 ], [ -122.418674826622, 37.80115879314906 ], [ -122.41908252239227, 37.80112064524151 ], [ -122.41931319236755, 37.80109097463317 ], [ -122.41943657398224, 37.801069781334164 ], [ -122.42036461830139, 37.80095109874748 ], [ -122.4204236268997, 37.80094262141255 ] ] }, "properties": { "class": "street", "len": 227.48918920409113, "name": "Greenwich St", "name_de": "Greenwich St", "name_en": "Greenwich St", "name_es": "Greenwich St", "name_fr": "Greenwich St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41780042648315, 37.801256282156544 ], [ -122.41832077503204, 37.80117998642249 ], [ -122.41840660572053, 37.801196941036885 ] ] }, "properties": { "class": "path", "len": 68.85852547182186, "name": "Greenwich St", "name_de": "Greenwich St", "name_en": "Greenwich St", "name_es": "Greenwich St", "name_fr": "Greenwich St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41468906402588, 37.799276806221656 ], [ -122.41402924060822, 37.79937005895526 ] ] }, "properties": { "class": "path", "len": 74.49901811416203, "name": "Macondray Ln", "name_de": "Macondray Ln", "name_en": "Macondray Ln", "name_es": "Macondray Ln", "name_fr": "Macondray Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41283297538757, 37.7980772264691 ], [ -122.41373419761658, 37.797950061395746 ] ] }, "properties": { "class": "path", "len": 101.97202165234128, "name": "Vallejo St", "name_de": "Vallejo St", "name_en": "Vallejo St", "name_es": "Vallejo St", "name_fr": "Vallejo St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41187274456024, 37.79700055526198 ], [ -122.41189420223236, 37.79699631636796 ], [ -122.41260766983032, 37.79691577733512 ] ] }, "properties": { "class": "street", "len": 82.79384328446568, "name": "Broadway", "name_de": "Broadway", "name_en": "Broadway", "name_es": "Broadway", "name_fr": "Broadway", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40990400314331, 37.795618662922415 ], [ -122.41001665592194, 37.795605946001736 ], [ -122.41003274917601, 37.795605946001736 ], [ -122.41108417510985, 37.79547029871132 ], [ -122.41155624389648, 37.79541519192846 ], [ -122.41189956665039, 37.79538128004165 ], [ -122.41234481334685, 37.79532193420228 ], [ -122.41318166255951, 37.795220198366735 ], [ -122.41402387619019, 37.795105745384284 ], [ -122.41483390331267, 37.79499129222454 ], [ -122.41647541522978, 37.79477934146046 ], [ -122.41695821285248, 37.79471999513755 ], [ -122.41753220558167, 37.79464369265235 ], [ -122.41796135902405, 37.79458858525292 ], [ -122.41812765598297, 37.794567390088325 ] ] }, "properties": { "class": "street", "len": 927.1182287578953, "name": "Jackson St", "name_de": "Jackson St", "name_en": "Jackson St", "name_es": "Jackson St", "name_fr": "Jackson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41290807723999, 37.802184540608394 ], [ -122.41288125514986, 37.80202347376832 ], [ -122.41285979747774, 37.801892076875475 ], [ -122.41275787353517, 37.80143006658992 ], [ -122.41267740726472, 37.80098076941203 ], [ -122.41254866123201, 37.80034072814651 ], [ -122.41248428821565, 37.80003977967424 ], [ -122.41243064403534, 37.799764262392124 ], [ -122.41241991519928, 37.79971763628886 ], [ -122.4122965335846, 37.79909453917511 ], [ -122.41210877895355, 37.79816624189021 ], [ -122.41192638874055, 37.797271843974116 ] ] }, "properties": { "class": "street", "len": 700.7930770082895, "name": "Mason St", "name_de": "Mason St", "name_en": "Mason St", "name_es": "Mason St", "name_fr": "Mason St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41290807723999, 37.802184540608394 ], [ -122.41372346878053, 37.8027440332184 ], [ -122.4146729707718, 37.80340100776679 ], [ -122.41488218307497, 37.80354511753136 ] ] }, "properties": { "class": "main", "len": 290.9426140073034, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41290807723999, 37.802184540608394 ], [ -122.41273105144501, 37.80200228073689 ], [ -122.41260766983032, 37.80192174716204 ], [ -122.41245746612549, 37.80182425903287 ], [ -122.41145431995392, 37.80112064524154 ] ] }, "properties": { "class": "main", "len": 221.17499376378402, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40618646144867, 37.79751769850893 ], [ -122.4062132835388, 37.79758128144514 ], [ -122.40663707256316, 37.79787800109037 ] ] }, "properties": { "class": "main", "len": 72.7339903601992, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40913689136505, 37.799518415334305 ], [ -122.40924954414368, 37.79950569908492 ], [ -122.41064965724944, 37.799314955081435 ], [ -122.41145968437193, 37.79920898597781 ], [ -122.41194248199463, 37.799141165671685 ], [ -122.4122804403305, 37.79909877794875 ], [ -122.4122965335846, 37.79909453917511 ], [ -122.41231799125671, 37.79909030040123 ], [ -122.41293489933014, 37.7990097636514 ], [ -122.41390585899353, 37.79887836139735 ] ] }, "properties": { "class": "street", "len": 538.6756063416154, "name": "Green St", "name_de": "Green St", "name_en": "Green St", "name_es": "Green St", "name_fr": "Green St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41096079349518, 37.800883280040885 ], [ -122.41098761558533, 37.801103690609615 ], [ -122.41102516651154, 37.80117574776828 ] ] }, "properties": { "class": "street", "len": 41.7763435467469, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41095542907715, 37.80077731318719 ], [ -122.41084277629852, 37.800251715345794 ] ] }, "properties": { "class": "street", "len": 74.71728715644412, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40990400314331, 37.795618662922415 ], [ -122.41000592708588, 37.79605527587214 ], [ -122.41009712219237, 37.79650036408717 ] ] }, "properties": { "class": "street", "len": 125.73983464232444, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41454422473907, 37.79877663045951 ], [ -122.41459250450133, 37.79881054078769 ], [ -122.41466760635375, 37.798840212312086 ], [ -122.41475343704224, 37.7988359735236 ], [ -122.41512894630432, 37.79879358562553 ], [ -122.41520941257477, 37.79877239166739 ], [ -122.41540253162383, 37.79872152614298 ] ] }, "properties": { "class": "street", "len": 100.51610952832038, "name": "Green St", "name_de": "Green St", "name_en": "Green St", "name_es": "Green St", "name_fr": "Green St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41784870624542, 37.796335045920344 ], [ -122.41178691387177, 37.797110766421454 ], [ -122.41127192974089, 37.7971785885917 ] ] }, "properties": { "class": "main", "len": 741.3485364408103, "name": "Robert C Levy Tunnel", "name_de": "Robert C Levy Tunnel", "name_en": "Robert C Levy Tunnel", "name_es": "Robert C Levy Tunnel", "name_fr": "Robert C Levy Tunnel", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41104662418365, 37.797314232745414 ], [ -122.41127729415895, 37.79735662149236 ], [ -122.41191029548645, 37.797271843974144 ], [ -122.41192638874054, 37.797271843974144 ] ] }, "properties": { "class": "street", "len": 100.0087746540741, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41926491260529, 37.796072231662805 ], [ -122.41918981075287, 37.796089187449574 ], [ -122.41915225982666, 37.796097665341506 ], [ -122.41856217384338, 37.79616972738355 ], [ -122.41854608058931, 37.79617396632503 ], [ -122.41847634315492, 37.79616972738355 ], [ -122.41844952106477, 37.79616972738355 ], [ -122.41833150386812, 37.79618244420722 ], [ -122.41751611232759, 37.796292656587205 ], [ -122.41717278957368, 37.79634352378406 ] ] }, "properties": { "class": "street", "len": 236.16779258848743, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41721034049988, 37.796559708979885 ], [ -122.41731226444244, 37.79656394789897 ], [ -122.41839587688446, 37.79644525807265 ], [ -122.41850316524506, 37.79643254129425 ] ] }, "properties": { "class": "street", "len": 145.44667681611674, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4217700958252, 37.795945063138014 ], [ -122.42162525653839, 37.79593234627349 ], [ -122.42098689079285, 37.79601288637848 ], [ -122.42021441459654, 37.79605951482018 ], [ -122.42010712623595, 37.79606375376797 ] ] }, "properties": { "class": "main", "len": 186.55657763368268, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41785407066345, 37.79641558558629 ], [ -122.41951704025269, 37.79621211678722 ] ] }, "properties": { "class": "main", "len": 186.91554081992845, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41846024990082, 37.79621635572625 ], [ -122.41844952106476, 37.79616972738355 ], [ -122.41835832595825, 37.79571192027404 ], [ -122.41831004619598, 37.79547877667427 ], [ -122.41821885108948, 37.795008248259386 ], [ -122.41812765598299, 37.794567390088325 ], [ -122.41793990135194, 37.79368566585404 ], [ -122.41777360439302, 37.7928124093659 ], [ -122.41774678230287, 37.79267251780427 ], [ -122.41768240928651, 37.792350342291314 ], [ -122.41760194301607, 37.79192642500235 ], [ -122.41741418838502, 37.79099803764374 ] ] }, "properties": { "class": "street", "len": 744.7061876106641, "name": "Hyde St", "name_de": "Hyde St", "name_en": "Hyde St", "name_es": "Hyde St", "name_fr": "Hyde St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42671072483063, 37.79532193420228 ], [ -122.42834150791168, 37.79512270139288 ], [ -122.42999374866486, 37.79489803396326 ], [ -122.43163526058197, 37.79468608293166 ], [ -122.4325257539749, 37.794571629121755 ], [ -122.43327677249907, 37.79448684840749 ] ] }, "properties": { "class": "street", "len": 740.9509396955775, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42580950260162, 37.79087933887559 ], [ -122.42561638355255, 37.7899551776589 ] ] }, "properties": { "class": "street", "len": 132.22028966811465, "name": "Gough St", "name_de": "Gough St", "name_en": "Gough St", "name_es": "Gough St", "name_fr": "Gough St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42872774600983, 37.79699207747368 ], [ -122.43037462234497, 37.79678437135622 ], [ -122.43119001388551, 37.7966826375346 ], [ -122.43201076984406, 37.79657666465477 ], [ -122.43364691734315, 37.796373196299385 ], [ -122.43529915809631, 37.79616124949991 ], [ -122.43694603443147, 37.79594930209237 ], [ -122.43713378906251, 37.79592810731817 ] ] }, "properties": { "class": "street", "len": 2029.4165943164103, "name": "Green St", "name_de": "Green St", "name_en": "Green St", "name_es": "Green St", "name_fr": "Green St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42158770561218, 37.795029443297494 ], [ -122.4217700958252, 37.795945063138014 ] ] }, "properties": { "class": "street", "len": 130.95045780775922, "name": "Polk St", "name_de": "Polk St", "name_en": "Polk St", "name_es": "Polk St", "name_fr": "Polk St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4217700958252, 37.795945063138014 ], [ -122.42332577705383, 37.79574159304304 ] ] }, "properties": { "class": "main", "len": 175.60124145509974, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43327677249908, 37.79448684840749 ], [ -122.4349182844162, 37.794274896196235 ] ] }, "properties": { "class": "street", "len": 184.88645731898455, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43327677249908, 37.79448684840749 ], [ -122.43308365345003, 37.7935584932212 ] ] }, "properties": { "class": "street", "len": 132.2383310540627, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.79542790888202 ], [ -122.40497410297394, 37.79532617319241 ], [ -122.40566611289978, 37.79524563233876 ], [ -122.4058485031128, 37.79522867635839 ], [ -122.40606844425201, 37.79520324238054 ], [ -122.4064975976944, 37.79515661339839 ], [ -122.40701794624329, 37.795088789371825 ], [ -122.40729153156282, 37.79505911634061 ], [ -122.407506108284, 37.795033682304364 ], [ -122.40755438804626, 37.79502520429035 ], [ -122.40808546543121, 37.79496585816495 ], [ -122.40861654281616, 37.79490227297768 ], [ -122.40893304347992, 37.79486412183905 ], [ -122.40919053554535, 37.79482597068072 ], [ -122.40960359573364, 37.79477510243896 ], [ -122.40963041782379, 37.79476662439526 ], [ -122.40973770618439, 37.79474966830496 ] ] }, "properties": { "class": "street", "len": 723.0398905235759, "name": "Washington St", "name_de": "Washington St", "name_en": "Washington St", "name_es": "Washington St", "name_fr": "Washington St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42598116397858, 37.791761096600425 ], [ -122.42433965206148, 37.79197305602319 ], [ -122.42278397083282, 37.792168058155134 ] ] }, "properties": { "class": "street", "len": 360.4966687505905, "name": "Clay St", "name_de": "Clay St", "name_en": "Clay St", "name_es": "Clay St", "name_fr": "Clay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41410970687866, 37.791421960259214 ], [ -122.4140989780426, 37.79141348183073 ], [ -122.41406679153442, 37.79131597983338 ], [ -122.41392195224762, 37.79057835185864 ], [ -122.41391122341156, 37.79045965241627 ] ] }, "properties": { "class": "street", "len": 137.86885931793245, "name": "Jones St", "name_de": "Jones St", "name_en": "Jones St", "name_es": "Jones St", "name_fr": "Jones St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41245210170746, 37.79163815985659 ], [ -122.41245746612547, 37.79165511666101 ], [ -122.4124789237976, 37.79174413982033 ], [ -122.41255939006804, 37.79211718808339 ], [ -122.41265058517455, 37.79254110427786 ], [ -122.41274178028105, 37.79299469191242 ], [ -122.41283297538753, 37.79343555946803 ], [ -122.41300463676451, 37.79433000382966 ], [ -122.4131816625595, 37.79519900338339 ], [ -122.4131816625595, 37.795220198366735 ], [ -122.41336941719054, 37.796084948503236 ] ] }, "properties": { "class": "street", "len": 635.1639726150889, "name": "Taylor St", "name_de": "Taylor St", "name_en": "Taylor St", "name_es": "Taylor St", "name_fr": "Taylor St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41907179355621, 37.7907987931743 ], [ -122.41923272609712, 37.791701747853054 ], [ -122.41932392120363, 37.792185014837926 ], [ -122.41942584514618, 37.79259621320449 ], [ -122.41952240467073, 37.79312186551574 ], [ -122.4195921421051, 37.7934779504405 ], [ -122.41976916790009, 37.79435967715371 ], [ -122.41994082927705, 37.795241393344035 ], [ -122.42009103298189, 37.795987452670616 ], [ -122.42010712623598, 37.79606375376797 ] ] }, "properties": { "class": "street", "len": 750.435322670991, "name": "Larkin St", "name_de": "Larkin St", "name_en": "Larkin St", "name_es": "Larkin St", "name_fr": "Larkin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41226971149445, 37.790675854829374 ], [ -122.41226971149445, 37.790781836173345 ], [ -122.41241991519928, 37.791549136569564 ], [ -122.41244673728943, 37.79162544225071 ], [ -122.41245210170746, 37.79163815985659 ] ] }, "properties": { "class": "street", "len": 137.141967022337, "name": "Taylor St", "name_de": "Taylor St", "name_en": "Taylor St", "name_es": "Taylor St", "name_fr": "Taylor St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42278397083282, 37.792168058155134 ], [ -122.42262303829193, 37.792185014837955 ], [ -122.42106199264526, 37.792396973044646 ], [ -122.41942584514618, 37.79259621320451 ], [ -122.41860508918762, 37.79269371351246 ], [ -122.417773604393, 37.7928124093659 ], [ -122.41644322872162, 37.792973496290564 ], [ -122.4161159992218, 37.79301588752816 ], [ -122.41553127765654, 37.79309219169453 ], [ -122.41526305675507, 37.793126104632066 ], [ -122.41505920886993, 37.79315153932501 ], [ -122.41447448730469, 37.7932236042408 ], [ -122.41283297538757, 37.793435559468 ], [ -122.41211950778961, 37.79352881957535 ], [ -122.41151869297029, 37.79360512321199 ], [ -122.41118609905244, 37.79364751408718 ], [ -122.4106013774872, 37.79371957851917 ], [ -122.41036534309389, 37.7937492520884 ], [ -122.4099361896515, 37.793804360113896 ], [ -122.40990400314332, 37.793808599191095 ], [ -122.40957140922548, 37.793850989949526 ], [ -122.40954458713533, 37.793855229024025 ] ] }, "properties": { "class": "street", "len": 1493.1866562952232, "name": "Clay St", "name_de": "Clay St", "name_en": "Clay St", "name_es": "Clay St", "name_fr": "Clay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43377029895782, 37.79076063991673 ], [ -122.43360936641692, 37.789895827461 ] ] }, "properties": { "class": "path", "len": 123.28674908495023, "name": "Goldberg Alley", "name_de": "Goldberg Alley", "name_en": "Goldberg Alley", "name_es": "Goldberg Alley", "name_fr": "Goldberg Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40712523460388, 37.79038334553119 ], [ -122.40716278553008, 37.790446934607566 ], [ -122.40721642971039, 37.7907012903658 ], [ -122.4073451757431, 37.79130750139274 ], [ -122.40753829479218, 37.792261319862405 ], [ -122.40761339664459, 37.79263860465855 ] ] }, "properties": { "class": "street", "len": 322.60534856994127, "name": "Stockton St", "name_de": "Stockton St", "name_en": "Stockton St", "name_es": "Stockton St", "name_fr": "Stockton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40714132785797, 37.79028584217449 ], [ -122.40763485431673, 37.79274034404906 ] ] }, "properties": { "class": "street", "len": 350.11729263257007, "name": "Stockton Tunnel", "name_de": "Stockton Tunnel", "name_en": "Stockton Tunnel", "name_es": "Stockton Tunnel", "name_fr": "Stockton Tunnel", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40763485431671, 37.79274034404906 ], [ -122.40764558315277, 37.79279545282709 ], [ -122.40771532058716, 37.7931769740092 ], [ -122.40789771080016, 37.794062943376915 ], [ -122.4080854654312, 37.79496585816495 ], [ -122.40825712680817, 37.795826372317386 ], [ -122.40843415260315, 37.79670807100316 ], [ -122.40856289863586, 37.79733118824711 ], [ -122.40862727165222, 37.79763214775467 ] ] }, "properties": { "class": "street", "len": 697.6155503425852, "name": "Stockton St", "name_de": "Stockton St", "name_en": "Stockton St", "name_es": "Stockton St", "name_fr": "Stockton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40557491779327, 37.790565634070354 ], [ -122.40560173988342, 37.790730965147205 ], [ -122.40574657917021, 37.791498266071706 ], [ -122.40580022335052, 37.791778053376625 ], [ -122.40594506263731, 37.792460560388086 ] ] }, "properties": { "class": "street", "len": 269.89783685489533, "name": "Grant Ave", "name_de": "Grant Ave", "name_en": "Grant Ave", "name_es": "Grant Ave", "name_fr": "Grant Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4108213186264, 37.791837402062676 ], [ -122.4110037088394, 37.792765778874795 ] ] }, "properties": { "class": "street", "len": 132.29588240030955, "name": "Mason St", "name_de": "Mason St", "name_en": "Mason St", "name_es": "Mason St", "name_fr": "Mason St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41100370883942, 37.792765778874795 ], [ -122.41108953952791, 37.7931769740092 ], [ -122.41113245487215, 37.79338469026892 ], [ -122.41118609905244, 37.79364751408718 ], [ -122.41127192974092, 37.794062943376915 ], [ -122.41136848926546, 37.79452923877677 ] ] }, "properties": { "class": "street", "len": 251.76727793372726, "name": "Mason St", "name_de": "Mason St", "name_en": "Mason St", "name_es": "Mason St", "name_fr": "Mason St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41793990135193, 37.79368566585406 ], [ -122.41629302501678, 37.793893380683656 ], [ -122.41567611694335, 37.79397392301147 ], [ -122.41522014141083, 37.79402903086939 ], [ -122.41465687751769, 37.7941053339894 ], [ -122.41300463676453, 37.79433000382966 ], [ -122.41184592247008, 37.794465653213706 ], [ -122.41136848926544, 37.79452923877677 ] ] }, "properties": { "class": "street", "len": 741.188908049292, "name": "Washington St", "name_de": "Washington St", "name_en": "Washington St", "name_es": "Washington St", "name_fr": "Washington St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4349182844162, 37.794274896196235 ], [ -122.43657052516937, 37.794062943376915 ] ] }, "properties": { "class": "street", "len": 186.65911094787393, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43156552314758, 37.79104466925053 ], [ -122.4325579404831, 37.790921731314675 ] ] }, "properties": { "class": "street", "len": 112.80448084965425, "name": "Clay St", "name_de": "Clay St", "name_en": "Clay St", "name_es": "Clay St", "name_fr": "Clay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41576731204987, 37.791209999255514 ], [ -122.41578876972198, 37.79131597983335 ], [ -122.41583168506622, 37.791544897362755 ], [ -122.41589605808258, 37.79187555476423 ], [ -122.41594970226288, 37.79212990560461 ], [ -122.4161159992218, 37.79301588752816 ], [ -122.41629302501678, 37.793893380683656 ], [ -122.4164754152298, 37.79477934146046 ], [ -122.41666316986084, 37.795678008523424 ], [ -122.41671681404114, 37.7959238683626 ], [ -122.41674900054932, 37.79611886006703 ], [ -122.41685092449188, 37.796602098159795 ], [ -122.41694211959839, 37.79707261642332 ], [ -122.41703867912292, 37.79755160941504 ], [ -122.41722106933594, 37.79847991442385 ], [ -122.41731226444244, 37.79894618194477 ], [ -122.41739273071288, 37.799319193842436 ], [ -122.4173980951309, 37.7994082077669 ], [ -122.41753220558165, 37.79990837925248 ], [ -122.41762340068816, 37.80032801203869 ], [ -122.41773068904875, 37.80084089331766 ], [ -122.41780042648314, 37.801256282156544 ], [ -122.41780579090114, 37.8012859526985 ], [ -122.41789162158962, 37.801718293529156 ], [ -122.41797745227812, 37.80213791603292 ], [ -122.41798818111418, 37.80220997218259 ], [ -122.41799890995024, 37.80227778967103 ], [ -122.41817593574523, 37.80312974156482 ], [ -122.41821885108946, 37.8033586224884 ], [ -122.41821885108946, 37.80349001677221 ], [ -122.41833150386809, 37.804087645887726 ], [ -122.41839051246639, 37.80421480039474 ], [ -122.41855680942531, 37.80500739188654 ] ] }, "properties": { "class": "street", "len": 1969.0376020959868, "name": "Leavenworth St", "name_de": "Leavenworth St", "name_en": "Leavenworth St", "name_es": "Leavenworth St", "name_fr": "Leavenworth St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40560173988342, 37.79868761577395 ], [ -122.40553200244905, 37.79836546649156 ], [ -122.40548372268678, 37.79811537594843 ], [ -122.4054890871048, 37.798017882795456 ] ] }, "properties": { "class": "street", "len": 95.56138201633803, "name": "Kearny St", "name_de": "Kearny St", "name_en": "Kearny St", "name_es": "Kearny St", "name_fr": "Kearny St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41025805473328, 37.79741596569721 ], [ -122.41039216518402, 37.797445637781784 ], [ -122.41104662418365, 37.797314232745414 ] ] }, "properties": { "class": "main", "len": 90.55466342846469, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43168354034424, 37.80327809039246 ], [ -122.43188202381134, 37.80324842065075 ], [ -122.43333578109741, 37.80306616340459 ], [ -122.43497729301453, 37.80285423580862 ], [ -122.43600726127625, 37.80272284039373 ], [ -122.43647933006287, 37.80267197758973 ], [ -122.43663489818573, 37.80269317042898 ], [ -122.43680119514465, 37.80276522603697 ] ] }, "properties": { "class": "street", "len": 579.2060033285372, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43150115013123, 37.802379515786946 ], [ -122.43168354034422, 37.80327809039246 ] ] }, "properties": { "class": "street", "len": 128.34968056037326, "name": "Laguna St", "name_de": "Laguna St", "name_en": "Laguna St", "name_es": "Laguna St", "name_fr": "Laguna St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42985963821411, 37.80258296759844 ], [ -122.43150115013123, 37.802379515786946 ] ] }, "properties": { "class": "street", "len": 185.20992306068527, "name": "Francisco St", "name_de": "Francisco St", "name_en": "Francisco St", "name_es": "Francisco St", "name_fr": "Francisco St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42985963821411, 37.80258296759844 ], [ -122.43006348609924, 37.803532401975204 ] ] }, "properties": { "class": "street", "len": 135.2257283210577, "name": "Octavia St", "name_de": "Octavia St", "name_en": "Octavia St", "name_es": "Octavia St", "name_fr": "Octavia St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42215096950531, 37.797831373796456 ], [ -122.42372810840607, 37.797636386612204 ] ] }, "properties": { "class": "street", "len": 177.4162678560832, "name": "Green St", "name_de": "Green St", "name_en": "Green St", "name_es": "Green St", "name_fr": "Green St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42929100990295, 37.7997896947997 ], [ -122.4309378862381, 37.799581996548405 ], [ -122.43250429630281, 37.799382775228004 ], [ -122.43257939815523, 37.79937429771311 ], [ -122.43269741535188, 37.79935734268033 ], [ -122.43422091007237, 37.79916235952403 ], [ -122.43586242198946, 37.7989546595088 ], [ -122.43713378906251, 37.79879358562553 ] ] }, "properties": { "class": "street", "len": 2014.6636423760767, "name": "Greenwich St", "name_de": "Greenwich St", "name_en": "Greenwich St", "name_es": "Greenwich St", "name_fr": "Greenwich St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4217700958252, 37.795945063138014 ], [ -122.42196321487425, 37.79690306063769 ], [ -122.4220597743988, 37.797373576984334 ], [ -122.4221509695053, 37.797831373796456 ], [ -122.42232799530028, 37.798696093367674 ], [ -122.42233872413634, 37.79877239166739 ] ] }, "properties": { "class": "street", "len": 403.1965680885383, "name": "Polk St", "name_de": "Polk St", "name_en": "Polk St", "name_es": "Polk St", "name_fr": "Polk St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42233872413635, 37.79877239166739 ], [ -122.42235481739044, 37.79884445110031 ], [ -122.4224728345871, 37.79941244652253 ], [ -122.4225103855133, 37.79962014525055 ], [ -122.4225264787674, 37.79970068133491 ], [ -122.42254793643951, 37.79978969479964 ], [ -122.42270350456238, 37.800556901644505 ], [ -122.42271423339844, 37.80062895933659 ], [ -122.42273032665251, 37.80070949432101 ], [ -122.42288589477538, 37.801480930249134 ], [ -122.42290198802947, 37.801548748406965 ] ] }, "properties": { "class": "street", "len": 396.1482066469359, "name": "Polk St", "name_de": "Polk St", "name_en": "Polk St", "name_es": "Polk St", "name_fr": "Polk St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42290198802948, 37.80154874840699 ], [ -122.42291808128357, 37.801633521016726 ], [ -122.42307901382446, 37.80241342446109 ], [ -122.42309510707855, 37.802489718921066 ], [ -122.42311120033264, 37.802587206171864 ], [ -122.4232828617096, 37.803426438922145 ], [ -122.42347061634064, 37.804358908571395 ] ] }, "properties": { "class": "street", "len": 400.45783312781555, "name": "Polk St", "name_de": "Polk St", "name_en": "Polk St", "name_es": "Polk St", "name_fr": "Polk St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40565538406372, 37.79898433097531 ], [ -122.40644931793213, 37.79888260018339 ], [ -122.40685164928436, 37.7988317347349 ], [ -122.4071305990219, 37.79878934683441 ], [ -122.4072217941284, 37.79877239166739 ] ] }, "properties": { "class": "street", "len": 177.11230961239798, "name": "Vallejo St", "name_de": "Vallejo St", "name_en": "Vallejo St", "name_es": "Vallejo St", "name_fr": "Vallejo St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40722179412842, 37.79877239166739 ], [ -122.40788161754608, 37.79868761577395 ], [ -122.40796744823457, 37.79867913817926 ], [ -122.40881502628328, 37.79857316816348 ], [ -122.40965723991395, 37.79847143680532 ], [ -122.4098986387253, 37.79844176513279 ], [ -122.41045653820039, 37.79837394412226 ], [ -122.41176009178163, 37.79820863014827 ], [ -122.41208195686342, 37.79817048071708 ], [ -122.41210877895355, 37.79816624189018 ], [ -122.4121356010437, 37.79816200306305 ], [ -122.41283297538757, 37.7980772264691 ] ] }, "properties": { "class": "street", "len": 632.0985495709137, "name": "Vallejo St", "name_de": "Vallejo St", "name_en": "Vallejo St", "name_es": "Vallejo St", "name_fr": "Vallejo St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4062991142273, 37.801786111469056 ], [ -122.40625083446504, 37.80177339561006 ], [ -122.40621864795686, 37.80174796388552 ], [ -122.40619182586671, 37.80169710041017 ], [ -122.40603625774385, 37.800938382744725 ], [ -122.40602552890779, 37.80083665464399 ], [ -122.40584850311281, 37.79991261797943 ], [ -122.40580022335054, 37.799721875026755 ], [ -122.40565538406373, 37.79898433097531 ] ] }, "properties": { "class": "street", "len": 405.5124883164733, "name": "Kearny St", "name_de": "Kearny St", "name_en": "Kearny St", "name_es": "Kearny St", "name_fr": "Kearny St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40721642971039, 37.79822982426816 ], [ -122.40715742111206, 37.798310361868346 ], [ -122.407146692276, 37.79835275004371 ], [ -122.40716814994812, 37.79849263084982 ], [ -122.40722179412842, 37.79877239166739 ], [ -122.40741491317749, 37.7996922038565 ], [ -122.40760266780853, 37.8006416753926 ], [ -122.40766167640685, 37.800938382744725 ], [ -122.40774750709534, 37.801387680180454 ], [ -122.40779042243958, 37.80159537335438 ], [ -122.40792453289032, 37.802218449372056 ], [ -122.40797281265257, 37.8025066732348 ], [ -122.40804255008696, 37.80287119003867 ], [ -122.40809082984923, 37.8031000717635 ], [ -122.40816593170165, 37.80344339302085 ] ] }, "properties": { "class": "street", "len": 745.1912087283594, "name": "Grant Ave", "name_de": "Grant Ave", "name_en": "Grant Ave", "name_es": "Grant Ave", "name_fr": "Grant Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40448594093323, 37.80123085025396 ], [ -122.40444302558899, 37.80131562322855 ], [ -122.40448594093323, 37.80152755523935 ], [ -122.40456104278564, 37.80192598577343 ], [ -122.4045717716217, 37.801989564915125 ], [ -122.40470051765443, 37.80255329757749 ], [ -122.40476489067079, 37.802714363262176 ], [ -122.40481853485109, 37.802773703162714 ] ] }, "properties": { "class": "street", "len": 223.33525500181005, "name": "Montgomery St", "name_de": "Montgomery St", "name_en": "Montgomery St", "name_es": "Montgomery St", "name_fr": "Montgomery St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40481853485107, 37.802773703162714 ], [ -122.4048238992691, 37.802710124696006 ], [ -122.40468978881836, 37.802036189584236 ], [ -122.40467369556427, 37.80196413326501 ], [ -122.4045878648758, 37.80152755523935 ], [ -122.40456104278564, 37.801374964252865 ], [ -122.40453422069551, 37.8012859526985 ], [ -122.40448594093324, 37.80123085025394 ] ] }, "properties": { "class": "street", "len": 221.87358067348777, "name": "Montgomery St", "name_de": "Montgomery St", "name_en": "Montgomery St", "name_es": "Montgomery St", "name_fr": "Montgomery St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4045878648758, 37.80152755523935 ], [ -122.40507066249847, 37.801455498423906 ] ] }, "properties": { "class": "street", "len": 54.66121476955421, "name": "Alta St", "name_de": "Alta St", "name_en": "Alta St", "name_es": "Alta St", "name_fr": "Alta St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40434110164642, 37.80046788910432 ], [ -122.40435719490051, 37.800578095090685 ], [ -122.40444302558899, 37.80103163338067 ], [ -122.40448594093323, 37.80123085025396 ] ] }, "properties": { "class": "street", "len": 108.62619166079068, "name": "Montgomery St", "name_de": "Montgomery St", "name_en": "Montgomery St", "name_es": "Montgomery St", "name_fr": "Montgomery St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40691602230072, 37.80264230760455 ], [ -122.40699112415314, 37.80263383046373 ], [ -122.40743637084961, 37.80257872902474 ], [ -122.40797281265257, 37.8025066732348 ], [ -122.40828931331635, 37.80246852602342 ], [ -122.40872383117674, 37.80241342446109 ], [ -122.40957677364348, 37.80230322121314 ], [ -122.4106067419052, 37.802171824817975 ], [ -122.41120755672453, 37.802095530029646 ], [ -122.41160452365874, 37.80204466679365 ], [ -122.41209268569945, 37.80198108769938 ], [ -122.41238236427306, 37.801947178826744 ], [ -122.41243600845335, 37.80190055410142 ] ] }, "properties": { "class": "street", "len": 625.6124878438, "name": "Greenwich St", "name_de": "Greenwich St", "name_en": "Greenwich St", "name_es": "Greenwich St", "name_fr": "Greenwich St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40862727165222, 37.79763214775467 ], [ -122.40881502628326, 37.79857316816348 ], [ -122.4089115858078, 37.79904791264911 ], [ -122.40897059440613, 37.79932343260318 ] ] }, "properties": { "class": "street", "len": 241.32735316025975, "name": "Stockton St", "name_de": "Stockton St", "name_en": "Stockton St", "name_es": "Stockton St", "name_fr": "Stockton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4168348312378, 37.804833615870386 ], [ -122.41672754287718, 37.80429533146929 ], [ -122.41663098335265, 37.80382062071034 ], [ -122.41653442382811, 37.80334166837023 ], [ -122.41634130477904, 37.80240494729402 ], [ -122.41615891456604, 37.80148940752228 ], [ -122.41605699062347, 37.801010440064665 ], [ -122.41596579551697, 37.80053994688323 ], [ -122.41594970226288, 37.80046365040925 ], [ -122.41577804088593, 37.79962014525055 ], [ -122.41568148136139, 37.79914540444263 ], [ -122.415611743927, 37.79879782441643 ], [ -122.41559028625488, 37.798696093367674 ], [ -122.41556882858276, 37.798598600981116 ], [ -122.41546154022217, 37.79806450997163 ], [ -122.41539716720581, 37.79775931337528 ], [ -122.41533815860748, 37.79746259325332 ], [ -122.41530060768127, 37.79728879948555 ], [ -122.41520404815674, 37.796805565884746 ], [ -122.4151074886322, 37.796326568055655 ], [ -122.4150162935257, 37.79588995670929 ], [ -122.41483390331268, 37.79499129222454 ], [ -122.4146568775177, 37.7941053339894 ], [ -122.4144744873047, 37.79322360424077 ], [ -122.41438865661621, 37.792786974556215 ], [ -122.41429746150972, 37.79233762480803 ], [ -122.4141150712967, 37.791438917113226 ], [ -122.4141097068787, 37.791421960259214 ] ] }, "properties": { "class": "street", "len": 1913.6777925493618, "name": "Jones St", "name_de": "Jones St", "name_en": "Jones St", "name_es": "Jones St", "name_fr": "Jones St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42107272148132, 37.800832415970085 ], [ -122.42262303829193, 37.800637436707525 ], [ -122.42271423339844, 37.80062895933659 ], [ -122.42283225059509, 37.80061200459185 ], [ -122.42289662361145, 37.800603527218016 ], [ -122.42416799068451, 37.80044245693025 ], [ -122.42428600788116, 37.800429740839945 ] ] }, "properties": { "class": "street", "len": 362.03014130639843, "name": "Greenwich St", "name_de": "Greenwich St", "name_en": "Greenwich St", "name_es": "Greenwich St", "name_fr": "Greenwich St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41859436035156, 37.80020932826012 ], [ -122.41925418376923, 37.80012455401583 ], [ -122.41935610771179, 37.800111837870794 ], [ -122.42058455944061, 37.79995076651085 ], [ -122.42080986499786, 37.79992109543255 ], [ -122.42088496685028, 37.79991261797943 ], [ -122.42243528366089, 37.79971339755073 ], [ -122.4225264787674, 37.79970068133491 ], [ -122.42265522480011, 37.7996837263771 ], [ -122.42400169372559, 37.79950993783495 ], [ -122.42409288883209, 37.79949722158409 ] ] }, "properties": { "class": "street", "len": 620.2909232707532, "name": "Filbert St", "name_de": "Filbert St", "name_en": "Filbert St", "name_es": "Filbert St", "name_fr": "Filbert St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41859436035156, 37.80020932826012 ], [ -122.41762340068816, 37.80032801203869 ] ] }, "properties": { "class": "street", "len": 109.42872063447884, "name": "Filbert St", "name_de": "Filbert St", "name_en": "Filbert St", "name_es": "Filbert St", "name_fr": "Filbert St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40676581859589, 37.8044394394888 ], [ -122.40753293037415, 37.804469108752045 ], [ -122.40834832191467, 37.8043673855142 ], [ -122.40935146808626, 37.80424446974821 ], [ -122.40995228290558, 37.804176654065614 ], [ -122.41158306598663, 37.80396472965615 ], [ -122.41285443305969, 37.803807905201644 ], [ -122.41322457790375, 37.80376128165094 ], [ -122.41371810436249, 37.803697704034384 ], [ -122.41472661495209, 37.803566310120054 ], [ -122.4148017168045, 37.80355359456757 ], [ -122.41488218307495, 37.80354511753136 ], [ -122.41506457328796, 37.80352392493655 ], [ -122.41641104221344, 37.80336286101732 ], [ -122.41653442382812, 37.80334166837023 ], [ -122.41663634777069, 37.80332047571705 ], [ -122.41817593574524, 37.803129741564796 ], [ -122.41907715797423, 37.80301530083702 ], [ -122.41982281208037, 37.8029220527055 ], [ -122.42145359516142, 37.80271436326215 ], [ -122.42180764675139, 37.8026635004523 ] ] }, "properties": { "class": "street", "len": 1694.9214307785533, "name": "Chestnut St", "name_de": "Chestnut St", "name_en": "Chestnut St", "name_es": "Chestnut St", "name_fr": "Chestnut St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41285979747772, 37.801892076875475 ], [ -122.41288661956786, 37.801887838262154 ], [ -122.41368055343628, 37.801790350088226 ], [ -122.4144959449768, 37.801692861785654 ], [ -122.41495192050934, 37.80163775964465 ], [ -122.41615891456604, 37.80148940752228 ], [ -122.41780579090118, 37.8012859526985 ] ] }, "properties": { "class": "street", "len": 557.112868666435, "name": "Greenwich St", "name_de": "Greenwich St", "name_en": "Greenwich St", "name_es": "Greenwich St", "name_fr": "Greenwich St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40707695484161, 37.79813233126623 ], [ -122.40721642971039, 37.79822982426816 ], [ -122.40788161754608, 37.79868761577395 ], [ -122.4089652299881, 37.79947178907586 ] ] }, "properties": { "class": "main", "len": 282.30186678989685, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40913152694702, 37.79962438399404 ], [ -122.40907251834871, 37.799687965116924 ], [ -122.40906178951265, 37.799738829975816 ], [ -122.40905642509462, 37.79976850112732 ], [ -122.40911006927492, 37.8000143473528 ], [ -122.40919053554536, 37.80044669562654 ] ] }, "properties": { "class": "street", "len": 119.16979192136742, "name": "Stockton St", "name_de": "Stockton St", "name_en": "Stockton St", "name_es": "Stockton St", "name_fr": "Stockton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4089652299881, 37.79947178907586 ], [ -122.40902423858641, 37.799548086574354 ], [ -122.40913152694702, 37.79962438399404 ], [ -122.41015613079071, 37.80032377333558 ] ] }, "properties": { "class": "main", "len": 179.78758443124872, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40707695484161, 37.79813233126623 ], [ -122.40704476833344, 37.79807298763686 ], [ -122.40673899650574, 37.797865284558576 ] ] }, "properties": { "class": "main", "len": 54.17443315216535, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41517186164856, 37.793770447487695 ], [ -122.41522014141083, 37.79402903086939 ] ] }, "properties": { "class": "path", "len": 36.925126946110616, "name": "Priest St", "name_de": "Priest St", "name_en": "Priest St", "name_es": "Priest St", "name_fr": "Priest St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41562247276306, 37.79369414402182 ], [ -122.41567611694336, 37.79397392301147 ] ] }, "properties": { "class": "street", "len": 39.886972809965414, "name": "Reed St", "name_de": "Reed St", "name_en": "Reed St", "name_es": "Reed St", "name_fr": "Reed St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4073076248169, 37.807457166355256 ], [ -122.4076133966446, 37.80756312362505 ], [ -122.40894377231598, 37.80810138420781 ], [ -122.40898668766023, 37.80810986072104 ], [ -122.40911543369295, 37.808135290254896 ] ] }, "properties": { "class": "street", "len": 223.42726427046517, "name": "The Embarcadero", "name_de": "The Embarcadero", "name_en": "The Embarcadero", "name_es": "The Embarcadero", "name_fr": "The Embarcadero", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41657197475433, 37.809160940820696 ], [ -122.41658806800842, 37.80924146650164 ], [ -122.41661489009857, 37.80932623028144 ], [ -122.41665780544281, 37.809398279417756 ], [ -122.41671681404112, 37.809461852126724 ], [ -122.41720497608183, 37.80977971485056 ] ] }, "properties": { "class": "street", "len": 393.80887031184614, "name": "Pier 45", "name_de": "Pier 45", "name_en": "Pier 45", "name_es": "Pier 45", "name_fr": "Pier 45", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41192102432251, 37.80849554104372 ], [ -122.41240918636322, 37.80856335276034 ], [ -122.41250574588777, 37.80857606745026 ] ] }, "properties": { "class": "street", "len": 65.5771641539864, "name": "The Embarcadero", "name_de": "The Embarcadero", "name_en": "The Embarcadero", "name_es": "The Embarcadero", "name_fr": "The Embarcadero", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41250574588776, 37.80857606745026 ], [ -122.41261839866638, 37.80858878213802 ], [ -122.41265058517456, 37.80859302036677 ], [ -122.41287052631378, 37.80858030567975 ], [ -122.41416871547699, 37.80841925278804 ] ] }, "properties": { "class": "street", "len": 187.38311561829235, "name": "Jefferson St", "name_de": "Jefferson St", "name_en": "Jefferson St", "name_es": "Jefferson St", "name_fr": "Jefferson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41745710372925, 37.80800814249806 ], [ -122.41773068904878, 37.80797423639261 ], [ -122.41908788681032, 37.807800467357744 ], [ -122.41992473602296, 37.807698748708574 ], [ -122.42040216922761, 37.807639412765205 ], [ -122.42075085639958, 37.8075970299193 ] ] }, "properties": { "class": "street", "len": 371.2315392261579, "name": "Jefferson St", "name_de": "Jefferson St", "name_en": "Jefferson St", "name_es": "Jefferson St", "name_fr": "Jefferson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4369728565216, 37.80436314704291 ], [ -122.43712842464447, 37.804341954682855 ], [ -122.4371337890625, 37.804341954682855 ] ] }, "properties": { "class": "street", "len": 555.7103815711608, "name": "Beach St", "name_de": "Beach St", "name_en": "Beach St", "name_es": "Beach St", "name_fr": "Beach St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43173718452454, 37.80362564933614 ], [ -122.4317479133606, 37.80354935604959 ], [ -122.4317479133606, 37.80347306268421 ], [ -122.43173718452454, 37.80339676924006 ], [ -122.43171572685242, 37.803337429840084 ], [ -122.43168354034424, 37.80327809039246 ] ] }, "properties": { "class": "main", "len": 50.68690143418162, "name": "Laguna St", "name_de": "Laguna St", "name_en": "Laguna St", "name_es": "Laguna St", "name_fr": "Laguna St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42520332336426, 37.805096398955996 ], [ -122.42535889148712, 37.805872027449155 ], [ -122.42541253566742, 37.8059483183363 ], [ -122.42546081542967, 37.80618142889205 ], [ -122.42549300193787, 37.806261957822144 ], [ -122.42565929889678, 37.80650354408548 ] ] }, "properties": { "class": "street", "len": 207.25363820920808, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42536962032318, 37.805075206806336 ], [ -122.42517650127411, 37.80413850771679 ] ] }, "properties": { "class": "main", "len": 133.38997900877993, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42075085639954, 37.8075970299193 ], [ -122.42185056209564, 37.80746140464897 ] ] }, "properties": { "class": "street", "len": 123.7840139102762, "name": "Jefferson St", "name_de": "Jefferson St", "name_en": "Jefferson St", "name_es": "Jefferson St", "name_fr": "Jefferson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4205631017685, 37.80665188613628 ], [ -122.42037534713745, 37.80571520704471 ] ] }, "properties": { "class": "street", "len": 133.4972108322927, "name": "Hyde St", "name_de": "Hyde St", "name_en": "Hyde St", "name_es": "Hyde St", "name_fr": "Hyde St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4232828617096, 37.803426438922145 ], [ -122.42484390735626, 37.803218750897145 ] ] }, "properties": { "class": "street", "len": 176.17523804499018, "name": "Francisco St", "name_de": "Francisco St", "name_en": "Francisco St", "name_es": "Francisco St", "name_fr": "Francisco St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43006348609924, 37.803532401975204 ], [ -122.43086814880373, 37.80343067744717 ] ] }, "properties": { "class": "main", "len": 90.86705563669574, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4183851480484, 37.805973748614505 ], [ -122.41883039474486, 37.80627043454651 ], [ -122.41957068443298, 37.80677903622835 ] ] }, "properties": { "class": "street", "len": 174.1893737884846, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40595579147339, 37.8046640778996 ], [ -122.40517795085908, 37.80476580072879 ] ] }, "properties": { "class": "street", "len": 87.94345569749994, "name": "Chestnut St", "name_de": "Chestnut St", "name_en": "Chestnut St", "name_es": "Chestnut St", "name_fr": "Chestnut St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4172693490982, 37.807071480609274 ], [ -122.41890549659729, 37.80686380283475 ], [ -122.41957068443298, 37.80677903622835 ], [ -122.41972625255585, 37.80675784456153 ], [ -122.42056310176851, 37.80665188613628 ] ] }, "properties": { "class": "street", "len": 371.2924861507288, "name": "Beach St", "name_de": "Beach St", "name_en": "Beach St", "name_es": "Beach St", "name_fr": "Beach St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4172693490982, 37.807071480609274 ], [ -122.41708159446716, 37.806139045209385 ], [ -122.4168884754181, 37.80521507488171 ] ] }, "properties": { "class": "street", "len": 265.79375441053367, "name": "Jones St", "name_de": "Jones St", "name_en": "Jones St", "name_es": "Jones St", "name_fr": "Jones St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41234481334686, 37.807698748708574 ], [ -122.41248965263367, 37.80850401751168 ], [ -122.41250574588776, 37.80857606745026 ] ] }, "properties": { "class": "street", "len": 124.96779065929178, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41397559642792, 37.807491072698134 ], [ -122.41561710834503, 37.80728339610364 ] ] }, "properties": { "class": "street", "len": 184.88805910606186, "name": "Beach St", "name_de": "Beach St", "name_en": "Beach St", "name_es": "Beach St", "name_fr": "Beach St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41561710834503, 37.80728339610364 ], [ -122.41726934909819, 37.807071480609274 ] ] }, "properties": { "class": "street", "len": 186.76535251337125, "name": "Beach St", "name_de": "Beach St", "name_en": "Beach St", "name_es": "Beach St", "name_fr": "Beach St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41561710834503, 37.80728339610364 ], [ -122.41543471813202, 37.80634248666441 ] ] }, "properties": { "class": "street", "len": 134.18097965055713, "name": "Taylor St", "name_de": "Taylor St", "name_en": "Taylor St", "name_es": "Taylor St", "name_fr": "Taylor St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41543471813202, 37.80634248666441 ], [ -122.41524159908295, 37.80541851888209 ] ] }, "properties": { "class": "street", "len": 132.18093357235747, "name": "Taylor St", "name_de": "Taylor St", "name_en": "Taylor St", "name_es": "Taylor St", "name_fr": "Taylor St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43173718452454, 37.80362564933614 ], [ -122.43186593055727, 37.80424446974821 ], [ -122.43190348148346, 37.80441824715063 ], [ -122.43199467658997, 37.804871761860184 ], [ -122.43203222751617, 37.805075206806336 ] ] }, "properties": { "class": "main", "len": 206.72394509717472, "name": "Laguna St", "name_de": "Laguna St", "name_en": "Laguna St", "name_es": "Laguna St", "name_fr": "Laguna St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43086814880371, 37.80343067744717 ], [ -122.4314957857132, 37.80338405365836 ], [ -122.4315494298935, 37.80338829218583 ], [ -122.43159770965576, 37.803405246293295 ], [ -122.43163526058197, 37.80343067744717 ], [ -122.4316620826721, 37.803464585638764 ], [ -122.43173718452452, 37.80362564933614 ] ] }, "properties": { "class": "main", "len": 118.00890140069362, "name": "Laguna St", "name_de": "Laguna St", "name_en": "Laguna St", "name_es": "Laguna St", "name_fr": "Laguna St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42682337760925, 37.80419784647312 ], [ -122.42679655551912, 37.80427837756615 ], [ -122.42679655551912, 37.804337716210114 ], [ -122.42680191993713, 37.80440129327573 ], [ -122.42685556411743, 37.80462593180253 ], [ -122.42691993713379, 37.80482937742587 ], [ -122.42704331874847, 37.80521931330409 ], [ -122.42712914943696, 37.80543123411352 ] ] }, "properties": { "class": "street", "len": 178.68748063928695, "name": "Franklin St", "name_de": "Franklin St", "name_en": "Franklin St", "name_es": "Franklin St", "name_fr": "Franklin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42712914943695, 37.80543123411352 ], [ -122.42715060710907, 37.805321035368515 ], [ -122.42715597152709, 37.80521931330409 ], [ -122.42702186107634, 37.8048081851996 ], [ -122.42696821689604, 37.80460050106022 ], [ -122.42691993713379, 37.80438433939691 ], [ -122.42689311504364, 37.80432500079042 ], [ -122.42685556411743, 37.80426990061314 ], [ -122.42682337760925, 37.80419784647312 ] ] }, "properties": { "class": "street", "len": 178.99029926575605, "name": "Franklin St", "name_de": "Franklin St", "name_en": "Franklin St", "name_es": "Franklin St", "name_fr": "Franklin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40750074386597, 37.802888144264855 ], [ -122.40752220153809, 37.80291781415126 ], [ -122.40761339664459, 37.803324714248184 ] ] }, "properties": { "class": "service", "len": 63.46973529960526, "name": "Child St", "name_de": "Child St", "name_en": "Child St", "name_es": "Child St", "name_fr": "Child St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42112100124359, 37.80888545756394 ], [ -122.42157161235811, 37.809275372025255 ], [ -122.42210805416107, 37.80967799892781 ], [ -122.42224752902986, 37.80977971485056 ] ] }, "properties": { "class": "path", "len": 267.96803623205005, "name": "Hyde St Pier", "name_de": "Hyde St Pier", "name_en": "Hyde St Pier", "name_es": "Hyde St Pier", "name_fr": "Hyde St Pier", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42022514343262, 37.80192174716204 ], [ -122.42062211036682, 37.80187512242067 ] ] }, "properties": { "class": "street", "len": 44.81482455598683, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42062211036682, 37.80187512242067 ], [ -122.42114245891571, 37.80179882732586 ], [ -122.4212658405304, 37.80178187284963 ], [ -122.42198467254639, 37.80168014591061 ], [ -122.42212414741518, 37.801658952780684 ], [ -122.42280542850496, 37.80156570293673 ], [ -122.4229019880295, 37.80154874840699 ], [ -122.42300927639012, 37.80153603250714 ], [ -122.4243557453156, 37.80134529374666 ], [ -122.42446303367619, 37.80132833916636 ] ] }, "properties": { "class": "street", "len": 434.416197668898, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42347061634064, 37.804358908571395 ], [ -122.42502093315125, 37.804159700135244 ] ] }, "properties": { "class": "main", "len": 175.06532952143382, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41855680942535, 37.80500739188654 ], [ -122.42019295692444, 37.80478699296722 ] ] }, "properties": { "class": "main", "len": 184.97531186607654, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42019295692444, 37.80478699296722 ], [ -122.42174863815309, 37.80457507030913 ], [ -122.42181837558746, 37.80456659339016 ] ] }, "properties": { "class": "main", "len": 183.3526995127709, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42181837558746, 37.80456659339016 ], [ -122.42253720760345, 37.804473347217254 ], [ -122.42347061634064, 37.804358908571395 ] ] }, "properties": { "class": "main", "len": 186.21917777270622, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42181837558746, 37.80456659339016 ], [ -122.42201149463654, 37.80549481023774 ], [ -122.42219924926758, 37.80643573047732 ] ] }, "properties": { "class": "street", "len": 267.4986530187627, "name": "Larkin St", "name_de": "Larkin St", "name_en": "Larkin St", "name_es": "Larkin St", "name_fr": "Larkin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4309754371643, 37.78374434488178 ], [ -122.43107736110687, 37.78427429978763 ], [ -122.43110418319702, 37.78443540532579 ] ] }, "properties": { "class": "main", "len": 1133.1148622789483, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43131875991821, 37.784723698570225 ], [ -122.43130266666412, 37.784634666952996 ], [ -122.43127584457399, 37.784511718352896 ], [ -122.43125438690187, 37.78440996763259 ], [ -122.43118464946748, 37.78406655791737 ], [ -122.4311149120331, 37.78374434488178 ] ] }, "properties": { "class": "main", "len": 1172.3244467932636, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42778360843658, 37.783926649798154 ], [ -122.4288994073868, 37.783812179321814 ], [ -122.42915689945221, 37.78377402245696 ], [ -122.42946267127992, 37.78374434488178 ] ] }, "properties": { "class": "service", "len": 277.4019821826499, "name": "Galilee Ln", "name_de": "Galilee Ln", "name_en": "Galilee Ln", "name_es": "Galilee Ln", "name_fr": "Galilee Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42915689945221, 37.78377402245696 ], [ -122.4291515350342, 37.78374434488178 ] ] }, "properties": { "class": "path", "len": 95.32624059779303, "name": "Inca Ln", "name_de": "Inca Ln", "name_en": "Inca Ln", "name_es": "Inca Ln", "name_fr": "Inca Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41084277629852, 37.800251715345794 ], [ -122.41166353225708, 37.80014574758602 ], [ -122.41246819496155, 37.80004401839364 ], [ -122.41248428821564, 37.80003977967424 ], [ -122.41251647472382, 37.800035540954596 ], [ -122.41412580013274, 37.79983208212613 ], [ -122.41522550582884, 37.799687965116924 ], [ -122.41577804088591, 37.79962014525055 ], [ -122.41649150848387, 37.79952689283269 ], [ -122.4173980951309, 37.7994082077669 ], [ -122.41822957992552, 37.79930223879704 ], [ -122.41905033588408, 37.79919626967515 ], [ -122.41906642913814, 37.79919626967515 ], [ -122.41908252239223, 37.79919203090711 ], [ -122.4200856685638, 37.799064867752875 ], [ -122.42034852504726, 37.799030957541454 ], [ -122.42069721221922, 37.79898433097531 ], [ -122.42226898670195, 37.798780869251374 ], [ -122.42233872413634, 37.79877239166739 ] ] }, "properties": { "class": "street", "len": 1297.141812299604, "name": "Union St", "name_de": "Union St", "name_en": "Union St", "name_es": "Union St", "name_fr": "Union St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41540253162384, 37.798721526143 ], [ -122.41559028625488, 37.798696093367674 ], [ -122.41722106933594, 37.79847991442385 ], [ -122.41783261299133, 37.79839937700852 ], [ -122.41887867450714, 37.79826373484738 ], [ -122.41963505744934, 37.79816200306305 ], [ -122.41989254951476, 37.79812809243717 ], [ -122.42039144039153, 37.79806450997163 ], [ -122.42050409317015, 37.79804755463823 ], [ -122.4221509695053, 37.797831373796456 ] ] }, "properties": { "class": "street", "len": 761.5010491610682, "name": "Green St", "name_de": "Green St", "name_en": "Green St", "name_es": "Green St", "name_fr": "Green St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40566611289978, 37.80268469329402 ], [ -122.40558028221129, 37.80273555608927 ], [ -122.40553200244904, 37.802773703162714 ], [ -122.40548372268677, 37.8028923828208 ], [ -122.40545153617859, 37.80290509848712 ], [ -122.4053281545639, 37.8028076116559 ], [ -122.40504920482635, 37.80286695148153 ], [ -122.40502774715424, 37.80282880445625 ], [ -122.40485608577728, 37.802858474366495 ] ] }, "properties": { "class": "path", "len": 118.02240623006357, "name": "Greenwich St Stairs", "name_de": "Greenwich St Stairs", "name_en": "Greenwich St Stairs", "name_es": "Greenwich St Stairs", "name_fr": "Greenwich St Stairs", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40467369556427, 37.80196413326501 ], [ -122.40508139133453, 37.80191326993851 ], [ -122.4052530527115, 37.8019175085504 ], [ -122.4053978919983, 37.80182849764988 ], [ -122.4054515361786, 37.80182849764988 ], [ -122.4054890871048, 37.80184121349936 ], [ -122.40562319755554, 37.80177763422998 ] ] }, "properties": { "class": "path", "len": 113.49958524683666, "name": "Flibert Steps", "name_de": "Flibert Steps", "name_en": "Flibert Steps", "name_es": "Flibert Steps", "name_fr": "Flibert Steps", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41963505744934, 37.80199804212988 ], [ -122.41953313350677, 37.8020107579502 ], [ -122.41951167583466, 37.80201499655647 ], [ -122.41947948932648, 37.802036189584236 ], [ -122.41942584514618, 37.80207857562153 ], [ -122.41940438747406, 37.802091291428006 ], [ -122.41938292980194, 37.80209553002967 ], [ -122.41935610771179, 37.80209553002967 ], [ -122.41933465003967, 37.802091291428006 ], [ -122.41931855678558, 37.8020743370189 ], [ -122.41926491260529, 37.80201499655647 ], [ -122.41923809051514, 37.80200228073689 ], [ -122.419211268425, 37.80199804212988 ], [ -122.41918444633485, 37.80200228073689 ], [ -122.4191576242447, 37.80201499655647 ], [ -122.41914153099064, 37.80203195097919 ], [ -122.41910934448246, 37.80210400723224 ], [ -122.41909325122838, 37.802125200234485 ], [ -122.41906642913824, 37.80213791603292 ], [ -122.41903424263005, 37.80214215463189 ], [ -122.41900742053991, 37.80213367743367 ], [ -122.4189859628678, 37.80211672303431 ], [ -122.41892695426947, 37.80206162120955 ], [ -122.41890549659735, 37.80204466679365 ], [ -122.4188786745072, 37.80204042818906 ], [ -122.41884648799902, 37.80204466679365 ], [ -122.4188250303269, 37.80205314400207 ], [ -122.41880893707284, 37.8020743370189 ], [ -122.41877675056463, 37.80214639323063 ], [ -122.41876065731057, 37.80216758622069 ], [ -122.41873919963845, 37.80217606341501 ], [ -122.41870701313027, 37.80218030201182 ], [ -122.41868019104012, 37.802171824817975 ], [ -122.418658733368, 37.802159109025396 ], [ -122.41859972476968, 37.80209976863108 ], [ -122.41857826709756, 37.80208705282608 ], [ -122.41855144500742, 37.80207857562153 ], [ -122.4185299873353, 37.80208281422394 ], [ -122.41850316524516, 37.802095530029646 ], [ -122.41848707199107, 37.80211672303431 ], [ -122.41845488548289, 37.80218877920469 ], [ -122.41843879222881, 37.802205733587485 ], [ -122.41841197013866, 37.802218449372056 ], [ -122.41838514804851, 37.80222268796642 ], [ -122.41835296154034, 37.802218449372056 ], [ -122.41833150386822, 37.802205733587485 ], [ -122.41827785968792, 37.80214639323063 ], [ -122.4182564020158, 37.80212943883419 ], [ -122.41823494434368, 37.80212096163453 ], [ -122.41820812225353, 37.80212096163453 ], [ -122.41818130016341, 37.80212943883419 ], [ -122.41816520690932, 37.80214639323063 ], [ -122.41813838481917, 37.80218030201182 ], [ -122.41812765598311, 37.802197256396575 ], [ -122.418106198311, 37.80220997218259 ], [ -122.41808474063888, 37.802214210777436 ], [ -122.41806328296676, 37.802214210777436 ], [ -122.41798818111434, 37.80220997218259 ] ] }, "properties": { "class": "street", "len": 251.13123264977568, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40450203418732, 37.8028923828208 ], [ -122.40418016910553, 37.80292629125948 ] ] }, "properties": { "class": "path", "len": 81.66581926308162, "name": "Greenwich St Stairs", "name_de": "Greenwich St Stairs", "name_en": "Greenwich St Stairs", "name_es": "Greenwich St Stairs", "name_fr": "Greenwich St Stairs", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42667317390442, 37.78692825678771 ], [ -122.42674827575684, 37.78730132936438 ], [ -122.42686629295349, 37.78786517411618 ], [ -122.42696821689606, 37.788331508630314 ], [ -122.4270647764206, 37.788789361472034 ], [ -122.4272632598877, 37.78974321244753 ], [ -122.42745101451874, 37.79066737631527 ] ] }, "properties": { "class": "street", "len": 534.227193931559, "name": "Octavia St", "name_de": "Octavia St", "name_en": "Octavia St", "name_es": "Octavia St", "name_fr": "Octavia St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41488218307495, 37.80354511753136 ], [ -122.41491973400116, 37.80370194254386 ], [ -122.4150162935257, 37.80420632343443 ], [ -122.41505920886993, 37.80441824715063 ], [ -122.415069937706, 37.80448182414693 ] ] }, "properties": { "class": "street", "len": 133.7369592645156, "name": "Taylor St", "name_de": "Taylor St", "name_en": "Taylor St", "name_es": "Taylor St", "name_fr": "Taylor St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42214560508728, 37.790362149160224 ], [ -122.42078840732574, 37.790531719957585 ], [ -122.4206918478012, 37.79057835185864 ] ] }, "properties": { "class": "street", "len": 166.21503958669592, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40823566913605, 37.80531679695196 ], [ -122.4084609746933, 37.80528712802926 ], [ -122.40853607654572, 37.80529136644753 ], [ -122.40863800048828, 37.80529136644753 ], [ -122.40931928157806, 37.80520659803617 ], [ -122.40954458713531, 37.80517692906923 ], [ -122.41014003753662, 37.805104875814145 ], [ -122.4105155467987, 37.80505401465057 ], [ -122.41177082061768, 37.80489719250912 ], [ -122.41343379020691, 37.80468527016725 ], [ -122.41498410701752, 37.80449030107562 ], [ -122.41505920886993, 37.80448182414693 ], [ -122.415069937706, 37.80448182414693 ], [ -122.41509139537811, 37.80447758568221 ], [ -122.41516649723053, 37.804469108752045 ], [ -122.41598725318909, 37.8043673855142 ], [ -122.41614818573, 37.80434619315537 ], [ -122.4165987968445, 37.8043038084194 ], [ -122.41672754287721, 37.80429533146929 ], [ -122.41684556007387, 37.80428685451822 ], [ -122.41750538349156, 37.8042020849539 ], [ -122.41833150386815, 37.804087645887726 ] ] }, "properties": { "class": "street", "len": 1137.9072314716573, "name": "Francisco St", "name_de": "Francisco St", "name_en": "Francisco St", "name_es": "Francisco St", "name_fr": "Francisco St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4150002002716, 37.80457507030913 ], [ -122.41506457328796, 37.80485056964608 ], [ -122.41512894630434, 37.805248982254014 ] ] }, "properties": { "class": "street_limited", "len": 96.41339793780074, "name": "Taylor St", "name_de": "Taylor St", "name_en": "Taylor St", "name_es": "Taylor St", "name_fr": "Taylor St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40738272666931, 37.80734273233311 ], [ -122.40754902362823, 37.80734697063339 ], [ -122.4089115858078, 37.807168961812216 ], [ -122.41051018238068, 37.80696552263401 ], [ -122.41214632987976, 37.80675784456153 ], [ -122.41378784179688, 37.80655440425074 ], [ -122.4149090051651, 37.806410300358195 ], [ -122.415434718132, 37.806342486664384 ], [ -122.41708159446715, 37.80613904520936 ], [ -122.4183851480484, 37.80597374861448 ], [ -122.41874456405638, 37.80592288804931 ], [ -122.42037534713744, 37.805715207044685 ], [ -122.42201149463652, 37.80549481023774 ], [ -122.42365837097167, 37.80528712802926 ], [ -122.424259185791, 37.80521507488168 ], [ -122.424618601799, 37.80516845221932 ], [ -122.42520332336424, 37.805096398955996 ] ] }, "properties": { "class": "main", "len": 2009.4041363469214, "name": "N Pt St", "name_de": "N Pt St", "name_en": "N Pt St", "name_es": "N Pt St", "name_fr": "N Pt St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.80489719250912 ], [ -122.40476489067078, 37.804820900536086 ], [ -122.40517795085907, 37.80476580072879 ] ] }, "properties": { "class": "street", "len": 197.14333108653207, "name": "Chestnut St", "name_de": "Chestnut St", "name_en": "Chestnut St", "name_es": "Chestnut St", "name_fr": "Chestnut St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41688847541809, 37.80521507488171 ], [ -122.41722643375397, 37.805172690644405 ] ] }, "properties": { "class": "main", "len": 38.091271965153105, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.80204890539802 ], [ -122.40426063537598, 37.80204042818909 ], [ -122.4045717716217, 37.801989564915125 ] ] }, "properties": { "class": "path", "len": 153.5020236071965, "name": "Filbert Steps", "name_de": "Filbert Steps", "name_en": "Filbert Steps", "name_es": "Filbert Steps", "name_fr": "Filbert Steps", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40525305271149, 37.788878388084036 ], [ -122.40528523921967, 37.78901828682906 ], [ -122.40531206130981, 37.78916242465299 ], [ -122.405344247818, 37.789315040865986 ], [ -122.40540862083435, 37.7896245116636 ] ] }, "properties": { "class": "street", "len": 106.24563811613788, "name": "Grant Ave", "name_de": "Grant Ave", "name_en": "Grant Ave", "name_es": "Grant Ave", "name_fr": "Grant Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40485608577728, 37.78683922782627 ], [ -122.40497410297394, 37.787420033880174 ], [ -122.40504920482635, 37.78776766743669 ] ] }, "properties": { "class": "street", "len": 132.8615561455913, "name": "Grant Ave", "name_de": "Grant Ave", "name_en": "Grant Ave", "name_es": "Grant Ave", "name_fr": "Grant Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40504920482635, 37.78776766743669 ], [ -122.40513503551483, 37.788242481359454 ], [ -122.40522623062134, 37.78869609538249 ] ] }, "properties": { "class": "street", "len": 132.08571808793954, "name": "Grant Ave", "name_de": "Grant Ave", "name_en": "Grant Ave", "name_es": "Grant Ave", "name_fr": "Grant Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41192638874054, 37.797271843974116 ], [ -122.41195321083069, 37.79726760509566 ], [ -122.41301000118254, 37.79711500530889 ], [ -122.41346061229706, 37.797047183080274 ], [ -122.41355180740355, 37.797034466405464 ], [ -122.41366446018218, 37.79701751083568 ], [ -122.4144798517227, 37.79690306063769 ] ] }, "properties": { "class": "street", "len": 288.5829992169997, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41453886032104, 37.796890343938095 ], [ -122.41463005542755, 37.796877627236306 ], [ -122.41520404815674, 37.796805565884775 ], [ -122.41685092449188, 37.796602098159795 ], [ -122.41721034049988, 37.796559708979885 ] ] }, "properties": { "class": "street", "len": 301.33845822277254, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41533815860748, 37.79746259325332 ], [ -122.41526305675507, 37.79749650418472 ], [ -122.415252327919, 37.79752617623693 ], [ -122.4152898788452, 37.79770420829989 ], [ -122.41528451442719, 37.7977381191204 ], [ -122.4152684211731, 37.79778474647316 ], [ -122.41530060768127, 37.79781865725668 ], [ -122.4153220653534, 37.79785680686953 ], [ -122.41535425186157, 37.798013643959806 ], [ -122.41537570953369, 37.79804331580431 ], [ -122.41546154022218, 37.79806450997163 ] ] }, "properties": { "class": "street", "len": 100.08111124573138, "name": "Jones St", "name_de": "Jones St", "name_en": "Jones St", "name_es": "Jones St", "name_fr": "Jones St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4089115858078, 37.807168961812216 ], [ -122.40908861160278, 37.80800814249806 ], [ -122.40911543369293, 37.808135290254896 ] ] }, "properties": { "class": "street", "len": 138.3658536819864, "name": "Grant Ave", "name_de": "Grant Ave", "name_en": "Grant Ave", "name_es": "Grant Ave", "name_fr": "Grant Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40976452827454, 37.803239943579534 ], [ -122.40985572338104, 37.80371041956209 ], [ -122.40995228290558, 37.804176654065614 ], [ -122.41004884243013, 37.80463864717042 ], [ -122.41014003753662, 37.805104875814145 ], [ -122.41027414798737, 37.80575759097065 ], [ -122.41032779216766, 37.80603308589625 ], [ -122.41051018238068, 37.80696552263401 ], [ -122.41068184375763, 37.80782589699816 ], [ -122.41071403026581, 37.80790642413496 ] ] }, "properties": { "class": "street", "len": 666.4099969114848, "name": "Stockton St", "name_de": "Stockton St", "name_en": "Stockton St", "name_es": "Stockton St", "name_fr": "Stockton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43139922618866, 37.784494759909215 ], [ -122.43127584457397, 37.784511718352896 ], [ -122.43112564086914, 37.78453291640197 ], [ -122.43025124073029, 37.78461346893308 ], [ -122.43005812168121, 37.784630427349505 ], [ -122.42980599403381, 37.78465586496683 ], [ -122.4296450614929, 37.78467282337351 ], [ -122.42900133132935, 37.78475337575214 ], [ -122.42874383926392, 37.784787292516874 ], [ -122.42797136306763, 37.7848848031288 ] ] }, "properties": { "class": "main", "len": 385.5448650964588, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43541181087494, 37.783930889442026 ], [ -122.43455350399017, 37.78408775609415 ] ] }, "properties": { "class": "main", "len": 98.14221619599421, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4371337890625, 37.80434619315537 ], [ -122.43712842464447, 37.804341954682855 ], [ -122.43697822093964, 37.80359174121851 ], [ -122.43680119514465, 37.80276522603697 ], [ -122.4364686012268, 37.801048588029104 ], [ -122.4363774061203, 37.80089599605311 ], [ -122.4362701177597, 37.80081546127204 ] ] }, "properties": { "class": "street", "len": 785.0619269658225, "name": "Fillmore St", "name_de": "Fillmore St", "name_en": "Fillmore St", "name_es": "Fillmore St", "name_fr": "Fillmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4354600906372, 37.78410047499729 ], [ -122.4371337890625, 37.78388849299241 ] ] }, "properties": { "class": "main", "len": 272.08101361789215, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43019223213196, 37.78476609454075 ], [ -122.4305248260498, 37.784787292516874 ], [ -122.43117392063141, 37.78474065696133 ] ] }, "properties": { "class": "street", "len": 109.66823627003009, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43181228637695, 37.78723349812689 ], [ -122.43182301521301, 37.7871275116937 ], [ -122.43164062500001, 37.78629657278981 ] ] }, "properties": { "class": "main", "len": 133.6726327077986, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4362701177597, 37.80081546127204 ], [ -122.43622183799744, 37.800722210363176 ], [ -122.43607699871063, 37.79997196013091 ], [ -122.43606090545656, 37.79989566307024 ] ] }, "properties": { "class": "street", "len": 132.03542316140036, "name": "Fillmore St", "name_de": "Fillmore St", "name_en": "Fillmore St", "name_es": "Fillmore St", "name_fr": "Fillmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4325579404831, 37.790921731314675 ], [ -122.43308365345001, 37.79085390340043 ], [ -122.43377029895782, 37.79076063991673 ], [ -122.43419945240021, 37.790714008130706 ], [ -122.43584632873535, 37.79050204509613 ], [ -122.4371337890625, 37.790340952783204 ] ] }, "properties": { "class": "street", "len": 2761.88945843328, "name": "Clay St", "name_de": "Clay St", "name_en": "Clay St", "name_es": "Clay St", "name_fr": "Clay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4325579404831, 37.790921731314675 ], [ -122.43238091468811, 37.79004420286635 ], [ -122.43219316005707, 37.78911579185835 ] ] }, "properties": { "class": "street", "len": 257.4858164562641, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43308365345001, 37.7935584932212 ], [ -122.43473052978516, 37.79335077745011 ], [ -122.4363774061203, 37.79313882197963 ], [ -122.4371337890625, 37.79304132225904 ] ] }, "properties": { "class": "street", "len": 1834.1338993408526, "name": "Pacific Ave", "name_de": "Pacific Ave", "name_en": "Pacific Ave", "name_es": "Pacific Ave", "name_fr": "Pacific Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42959678173065, 37.80682141954372 ], [ -122.42955923080444, 37.8069146627519 ], [ -122.42952167987823, 37.806990952561925 ], [ -122.42943584918976, 37.80715200856877 ], [ -122.42933392524719, 37.80728339610364 ], [ -122.42923736572266, 37.807389353622796 ], [ -122.42910861968994, 37.807491072698134 ], [ -122.42843270301819, 37.808003904235726 ], [ -122.42837369441986, 37.80804204858794 ], [ -122.42830395698547, 37.80807595466228 ], [ -122.4282342195511, 37.80809714595084 ], [ -122.42815375328065, 37.80810986072104 ], [ -122.42806792259218, 37.80810986072104 ], [ -122.42734909057619, 37.808067478145155 ], [ -122.427134513855, 37.808050525108015 ], [ -122.4270272254944, 37.80804628684809 ], [ -122.42691993713379, 37.808050525108015 ], [ -122.4268126487732, 37.80806323988622 ], [ -122.42660880088808, 37.8081140989773 ] ] }, "properties": { "class": "service", "len": 422.9586987212778, "name": "McDowell Rd SW", "name_de": "McDowell Rd SW", "name_en": "McDowell Rd SW", "name_es": "McDowell Rd SW", "name_fr": "McDowell Rd SW", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41963505744934, 37.80199804212988 ], [ -122.41971552371977, 37.80198532630738 ], [ -122.4202251434326, 37.80192174716204 ] ] }, "properties": { "class": "street", "len": 66.71509629283327, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41993010044098, 37.78683074887198 ], [ -122.42002129554749, 37.78728013210937 ], [ -122.42011785507202, 37.787759188588936 ], [ -122.42021441459656, 37.788225523771885 ], [ -122.4203109741211, 37.78870033475276 ], [ -122.4204021692276, 37.78916666399651 ], [ -122.4204933643341, 37.789620272346355 ], [ -122.42069184780121, 37.79057835185864 ] ] }, "properties": { "class": "street", "len": 534.7932167900761, "name": "Polk St", "name_de": "Polk St", "name_en": "Polk St", "name_es": "Polk St", "name_fr": "Polk St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4065887928009, 37.80364684190173 ], [ -122.40765631198883, 37.80350697085634 ], [ -122.40782260894775, 37.80348577825057 ], [ -122.40816593170166, 37.80344339302085 ] ] }, "properties": { "class": "street", "len": 177.51311341677967, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4065887928009, 37.80364684190173 ], [ -122.40665853023529, 37.80393929868616 ], [ -122.40667998790741, 37.80404102251361 ] ] }, "properties": { "class": "street", "len": 55.86123294875488, "name": "Kearny St", "name_de": "Kearny St", "name_en": "Kearny St", "name_es": "Kearny St", "name_fr": "Kearny St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40499019622803, 37.8038333362169 ], [ -122.40517795085907, 37.80476580072879 ], [ -122.40524232387543, 37.805100637385195 ], [ -122.40534961223602, 37.80561772392276 ], [ -122.40537643432617, 37.80567282309445 ] ] }, "properties": { "class": "street", "len": 263.17872333876244, "name": "Montgomery St", "name_de": "Montgomery St", "name_en": "Montgomery St", "name_es": "Montgomery St", "name_fr": "Montgomery St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4063903093338, 37.804553878009884 ], [ -122.40667462348938, 37.804515731855865 ], [ -122.40671753883363, 37.8044945395396 ], [ -122.40676581859589, 37.8044394394888 ] ] }, "properties": { "class": "service", "len": 47.0867564088635, "name": "Chestnut St", "name_de": "Chestnut St", "name_en": "Chestnut St", "name_es": "Chestnut St", "name_fr": "Chestnut St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42565929889679, 37.80650354408551 ], [ -122.42561638355255, 37.80624924273377 ], [ -122.42554664611816, 37.80593136481263 ], [ -122.4255681037903, 37.80583388197601 ], [ -122.42547154426575, 37.80537613476155 ], [ -122.42541253566743, 37.80515573694268 ], [ -122.42536962032318, 37.805075206806336 ] ] }, "properties": { "class": "street", "len": 205.50846326299737, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40468442440033, 37.79911149426818 ], [ -122.40463614463808, 37.79915812075405 ], [ -122.40459859371187, 37.79917083706328 ], [ -122.40457177162172, 37.79917507583252 ], [ -122.40450203418733, 37.79914540444266 ], [ -122.40442693233491, 37.79917083706328 ], [ -122.40423381328587, 37.79910301672214 ], [ -122.40418016910557, 37.799124210585425 ] ] }, "properties": { "class": "path", "len": 79.03789381238825, "name": "Vallejo St Stairway", "name_de": "Vallejo St Stairway", "name_en": "Vallejo St Stairway", "name_es": "Vallejo St Stairway", "name_fr": "Vallejo St Stairway", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41173326969147, 37.79629689552161 ], [ -122.41176009178162, 37.79628841765255 ], [ -122.41254329681396, 37.79619516102869 ], [ -122.41281688213348, 37.79616124949991 ], [ -122.41336941719057, 37.796084948503236 ], [ -122.41424381732942, 37.79597897476603 ], [ -122.41501629352571, 37.79588995670932 ], [ -122.41666316986085, 37.79567800852345 ], [ -122.41700112819673, 37.79563561881331 ], [ -122.418310046196, 37.79547877667427 ], [ -122.4191200733185, 37.795360085104505 ], [ -122.4198228120804, 37.79527106630204 ], [ -122.41994082927705, 37.79524139334406 ], [ -122.4215877056122, 37.795029443297494 ] ] }, "properties": { "class": "street", "len": 1111.4952360344857, "name": "Pacific Ave", "name_de": "Pacific Ave", "name_en": "Pacific Ave", "name_es": "Pacific Ave", "name_fr": "Pacific Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41173326969147, 37.79629689552161 ], [ -122.41171717643739, 37.79629689552161 ], [ -122.4109071493149, 37.79639862987445 ], [ -122.41052627563478, 37.79644949699833 ], [ -122.4100971221924, 37.79650036408717 ] ] }, "properties": { "class": "street", "len": 184.5252029702847, "name": "Pacific Ave", "name_de": "Pacific Ave", "name_en": "Pacific Ave", "name_es": "Pacific Ave", "name_fr": "Pacific Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41009712219238, 37.79650036408717 ], [ -122.41016685962677, 37.79692001623378 ], [ -122.41022050380707, 37.79721249965347 ], [ -122.41025805473328, 37.79741596569723 ] ] }, "properties": { "class": "street", "len": 130.10096884827317, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41025805473328, 37.79741596569721 ], [ -122.41045653820038, 37.79837394412226 ], [ -122.41064965724944, 37.799314955081435 ], [ -122.41084277629851, 37.800251715345794 ] ] }, "properties": { "class": "street", "len": 405.18576569782863, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40787088871002, 37.78549954098075 ], [ -122.40805327892303, 37.7864322369225 ], [ -122.40823566913605, 37.78737339998601 ] ] }, "properties": { "class": "street", "len": 267.55082448304705, "name": "Powell St", "name_de": "Powell St", "name_en": "Powell St", "name_es": "Powell St", "name_fr": "Powell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42283761501312, 37.78454139561992 ], [ -122.42126047611238, 37.78474913615547 ], [ -122.42112100124359, 37.78476609454075 ] ] }, "properties": { "class": "main", "len": 194.0819786769891, "name": "O'Farrell St", "name_de": "O'Farrell St", "name_en": "O'Farrell St", "name_es": "O'Farrell St", "name_fr": "O'Farrell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42289662361145, 37.800603527218016 ], [ -122.42327749729156, 37.800955337414564 ], [ -122.42340624332428, 37.801023156054995 ] ] }, "properties": { "class": "street", "len": 82.49214824736018, "name": "Grenard Ter", "name_de": "Grenard Ter", "name_en": "Grenard Ter", "name_es": "Grenard Ter", "name_fr": "Grenard Ter", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42149651050568, 37.78663149316584 ], [ -122.41993010044098, 37.78683074887198 ], [ -122.41827249526978, 37.787042722437654 ], [ -122.41699039936066, 37.78720382194092 ], [ -122.4166417121887, 37.787250455942115 ], [ -122.41500020027159, 37.78745818886262 ], [ -122.41335868835449, 37.787665921199185 ], [ -122.41272568702698, 37.787746470315426 ], [ -122.41254329681396, 37.78776766743669 ], [ -122.4123340845108, 37.78779310397418 ], [ -122.41170108318329, 37.787873652951795 ], [ -122.41007566452026, 37.78808138412046 ], [ -122.40844488143921, 37.78828911470517 ], [ -122.40841805934907, 37.78829335409877 ], [ -122.40839660167696, 37.78829335409877 ], [ -122.4083322286606, 37.78830183288525 ], [ -122.40776360034944, 37.78837390253111 ], [ -122.40770459175111, 37.78838238130836 ], [ -122.40752220153813, 37.78840781763425 ], [ -122.40743100643162, 37.788416296407604 ], [ -122.40677118301393, 37.78850108408762 ] ] }, "properties": { "class": "street", "len": 1659.7996155951957, "name": "Post St", "name_de": "Post St", "name_en": "Post St", "name_es": "Post St", "name_fr": "Post St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41809010505676, 37.78610155516276 ], [ -122.41818130016327, 37.78656790080614 ], [ -122.41827249526978, 37.787042722437654 ], [ -122.41836905479431, 37.787487864946456 ], [ -122.41846561431885, 37.78796692007934 ], [ -122.41856217384338, 37.78843325395144 ], [ -122.41865873336793, 37.78891230295566 ], [ -122.41875529289247, 37.78937863086172 ], [ -122.41884648799898, 37.78983223791039 ], [ -122.4190664291382, 37.79078183617337 ], [ -122.41907179355621, 37.7907987931743 ] ] }, "properties": { "class": "street", "len": 670.4535563453252, "name": "Larkin St", "name_de": "Larkin St", "name_en": "Larkin St", "name_es": "Larkin St", "name_fr": "Larkin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40580022335052, 37.791778053376625 ], [ -122.40634739398956, 37.79171022624846 ] ] }, "properties": { "class": "street", "len": 61.44369210900245, "name": "Vinton Ct", "name_de": "Vinton Ct", "name_en": "Vinton Ct", "name_es": "Vinton Ct", "name_fr": "Vinton Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41789162158966, 37.801718293529156 ], [ -122.4185299873352, 37.801633521016726 ] ] }, "properties": { "class": "street", "len": 72.06703823484058, "name": "Lurmont Ter", "name_de": "Lurmont Ter", "name_en": "Lurmont Ter", "name_es": "Lurmont Ter", "name_fr": "Lurmont Ter", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42246747016907, 37.80409612286167 ], [ -122.42253720760345, 37.804473347217254 ] ] }, "properties": { "class": "street_limited", "len": 53.971308117745814, "name": "N View Ct", "name_de": "N View Ct", "name_en": "N View Ct", "name_es": "N View Ct", "name_fr": "N View Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42002665996552, 37.79877239166739 ], [ -122.42063820362091, 37.798696093367674 ] ] }, "properties": { "class": "street", "len": 69.02487957363917, "name": "Rockland St", "name_de": "Rockland St", "name_en": "Rockland St", "name_es": "Rockland St", "name_fr": "Rockland St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40671753883362, 37.79236305977244 ], [ -122.40681946277617, 37.79284208329947 ] ] }, "properties": { "class": "street", "len": 68.70235221567258, "name": "Sabin Pl", "name_de": "Sabin Pl", "name_en": "Sabin Pl", "name_es": "Sabin Pl", "name_fr": "Sabin Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41568148136139, 37.79914540444266 ], [ -122.41468906402588, 37.799276806221656 ] ] }, "properties": { "class": "street", "len": 111.81284586290512, "name": "Macondray Ln", "name_de": "Macondray Ln", "name_en": "Macondray Ln", "name_es": "Macondray Ln", "name_fr": "Macondray Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41337478160858, 37.80440977021365 ], [ -122.4150002002716, 37.80420632343443 ], [ -122.4150162935257, 37.80420632343443 ] ] }, "properties": { "class": "service", "len": 185.1203877367229, "name": "Water St", "name_de": "Water St", "name_en": "Water St", "name_es": "Water St", "name_fr": "Water St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43333578109741, 37.80306616340459 ], [ -122.43352890014648, 37.804032545533346 ], [ -122.43356645107268, 37.8042105619147 ], [ -122.43365764617919, 37.8046640778996 ], [ -122.43371129035948, 37.804922623149274 ], [ -122.43373811244963, 37.804986199711365 ], [ -122.43378639221187, 37.80504129935424 ] ] }, "properties": { "class": "street", "len": 284.20874152874563, "name": "Buchanan St", "name_de": "Buchanan St", "name_en": "Buchanan St", "name_es": "Buchanan St", "name_fr": "Buchanan St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40809082984924, 37.803100071763524 ], [ -122.40889012813567, 37.80298986954011 ] ] }, "properties": { "class": "service", "len": 90.41847709297545, "name": "Edgardo Pl", "name_de": "Edgardo Pl", "name_en": "Edgardo Pl", "name_es": "Edgardo Pl", "name_fr": "Edgardo Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43208587169647, 37.805185405918145 ], [ -122.4321448802948, 37.80520235961308 ], [ -122.43220925331116, 37.80520235961308 ], [ -122.43273496627806, 37.80513878323706 ], [ -122.43359863758086, 37.805028584055684 ], [ -122.43369519710541, 37.805028584055684 ], [ -122.4337863922119, 37.80504129935424 ], [ -122.43387222290039, 37.805075206806336 ], [ -122.43394732475281, 37.805113352671334 ], [ -122.43549764156342, 37.80609666150237 ], [ -122.43593215942381, 37.8063721551631 ], [ -122.4360018968582, 37.806410300358195 ], [ -122.43608236312865, 37.80644844553362 ] ] }, "properties": { "class": "main", "len": 515.8117501844065, "name": "Marina Blvd", "name_de": "Marina Blvd", "name_en": "Marina Blvd", "name_es": "Marina Blvd", "name_fr": "Marina Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4082088470459, 37.80207009841604 ], [ -122.40823030471802, 37.80218030201182 ], [ -122.40828931331635, 37.80246852602342 ] ] }, "properties": { "class": "service", "len": 56.65936077227183, "name": "Kramer Pl", "name_de": "Kramer Pl", "name_en": "Kramer Pl", "name_es": "Kramer Pl", "name_fr": "Kramer Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4160248041153, 37.790692811854626 ], [ -122.4161159992218, 37.79115065006551 ], [ -122.4161159992218, 37.79116336775309 ] ] }, "properties": { "class": "street", "len": 66.88687589334053, "name": "Helen Pl", "name_de": "Helen Pl", "name_en": "Helen Pl", "name_es": "Helen Pl", "name_fr": "Helen Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.79268947437134 ], [ -122.40444302558899, 37.79265556123338 ], [ -122.40566074848175, 37.79249871276787 ], [ -122.40594506263733, 37.792460560388086 ] ] }, "properties": { "class": "street", "len": 1081.7516735653962, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41417407989502, 37.795618662922415 ], [ -122.4142438173294, 37.79597897476603 ] ] }, "properties": { "class": "path", "len": 51.62398376794005, "name": "Phoenix Ter", "name_de": "Phoenix Ter", "name_en": "Phoenix Ter", "name_es": "Phoenix Ter", "name_fr": "Phoenix Ter", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41897523403168, 37.79874272011575 ], [ -122.41998910903932, 37.798598600981116 ] ] }, "properties": { "class": "street", "len": 114.79721686527758, "name": "Russell St", "name_de": "Russell St", "name_en": "Russell St", "name_es": "Russell St", "name_fr": "Russell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43378639221191, 37.80504129935424 ], [ -122.43386149406433, 37.80499467658216 ], [ -122.43393659591676, 37.80496076909309 ], [ -122.43402242660524, 37.804931100027375 ], [ -122.43536353111269, 37.80476156228035 ], [ -122.43701577186584, 37.804553878009884 ], [ -122.43713378906251, 37.80453268570453 ] ] }, "properties": { "class": "street", "len": 385.39758175987913, "name": "Beach St", "name_de": "Beach St", "name_en": "Beach St", "name_es": "Beach St", "name_fr": "Beach St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41100907325745, 37.795093028375305 ], [ -122.41108417510986, 37.79547029871132 ] ] }, "properties": { "class": "street", "len": 53.50308869518279, "name": "Doric Alley", "name_de": "Doric Alley", "name_en": "Doric Alley", "name_es": "Doric Alley", "name_fr": "Doric Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40743637084961, 37.80257872902474 ], [ -122.40750074386597, 37.802888144264855 ] ] }, "properties": { "class": "street", "len": 44.440342033854215, "name": "Child St", "name_de": "Child St", "name_en": "Child St", "name_es": "Child St", "name_fr": "Child St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41387367248535, 37.80270588612963 ], [ -122.41368055343628, 37.801790350088226 ] ] }, "properties": { "class": "street", "len": 130.50833613184966, "name": "Jansen St", "name_de": "Jansen St", "name_en": "Jansen St", "name_es": "Jansen St", "name_fr": "Jansen St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42828786373138, 37.80700790584237 ], [ -122.42810010910034, 37.80644844553362 ], [ -122.42806792259216, 37.8063891085856 ], [ -122.42777824401855, 37.80601613239205 ], [ -122.42770850658417, 37.805910172902585 ], [ -122.42761194705963, 37.80579149809386 ], [ -122.42755830287933, 37.80573639901071 ], [ -122.427499294281, 37.805689776677475 ], [ -122.42723643779755, 37.80551600226697 ], [ -122.42712914943695, 37.80543123411352 ], [ -122.42689311504364, 37.80544818775199 ], [ -122.42672145366669, 37.80546937979462 ], [ -122.42648541927338, 37.80551176386163 ], [ -122.42632985115051, 37.80552871748163 ], [ -122.42621183395386, 37.80551600226699 ], [ -122.42610991001129, 37.80546514138659 ], [ -122.42592215538025, 37.80530408170084 ], [ -122.42583632469176, 37.80520235961308 ], [ -122.42576122283934, 37.805087922096874 ], [ -122.42569684982298, 37.80493957690451 ], [ -122.42565393447875, 37.80481242364534 ], [ -122.4255734682083, 37.80453268570453 ], [ -122.42573976516722, 37.804312285368546 ], [ -122.42616355419158, 37.80425294670417 ], [ -122.42657661437987, 37.80421480039474 ], [ -122.42666244506835, 37.80435043162762 ], [ -122.4268341064453, 37.80506672994478 ], [ -122.42680728435516, 37.805164213794036 ] ] }, "properties": { "class": "street", "len": 797.129180519644, "name": "Pope Rd", "name_de": "Pope Rd", "name_en": "Pope Rd", "name_es": "Pope Rd", "name_fr": "Pope Rd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41502702236176, 37.791799249341395 ], [ -122.41505920886993, 37.79193914255643 ], [ -122.41511821746826, 37.792235884863004 ], [ -122.41512358188628, 37.79229523318131 ], [ -122.41521477699278, 37.79274458318729 ] ] }, "properties": { "class": "street", "len": 134.59077525889847, "name": "Leroy Pl", "name_de": "Leroy Pl", "name_en": "Leroy Pl", "name_es": "Leroy Pl", "name_fr": "Leroy Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40468442440033, 37.79911149426818 ], [ -122.40565538406372, 37.79898433097531 ] ] }, "properties": { "class": "street", "len": 109.59860218135036, "name": "Vallejo St", "name_de": "Vallejo St", "name_en": "Vallejo St", "name_es": "Vallejo St", "name_fr": "Vallejo St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41441011428833, 37.79789071761994 ], [ -122.41482853889465, 37.797831373796456 ], [ -122.41508603096008, 37.79780170186684 ], [ -122.41526842117308, 37.797784746473134 ] ] }, "properties": { "class": "street", "len": 96.93284389228506, "name": "Vallejo St", "name_de": "Vallejo St", "name_en": "Vallejo St", "name_es": "Vallejo St", "name_fr": "Vallejo St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40541398525238, 37.79962862273726 ], [ -122.40547835826874, 37.79996348268362 ] ] }, "properties": { "class": "path", "len": 48.002705132066666, "name": "Reno Pl", "name_de": "Reno Pl", "name_en": "Reno Pl", "name_es": "Reno Pl", "name_fr": "Reno Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43122220039368, 37.80098500807743 ], [ -122.43286371231079, 37.80077307450988 ], [ -122.43451058864594, 37.80056114033426 ] ] }, "properties": { "class": "street", "len": 371.7554022852868, "name": "Magnolia St", "name_de": "Magnolia St", "name_en": "Magnolia St", "name_es": "Magnolia St", "name_fr": "Magnolia St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41185665130615, 37.799806649733185 ], [ -122.41239309310913, 37.799721875026755 ], [ -122.41241991519928, 37.79971763628886 ] ] }, "properties": { "class": "service", "len": 64.17554773211342, "name": "Winter Pl", "name_de": "Winter Pl", "name_en": "Winter Pl", "name_es": "Winter Pl", "name_fr": "Winter Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40636885166168, 37.800794267894 ], [ -122.4065512418747, 37.80175220250688 ] ] }, "properties": { "class": "service", "len": 136.59835467473067, "name": "Genoa Pl", "name_de": "Genoa Pl", "name_en": "Genoa Pl", "name_es": "Genoa Pl", "name_fr": "Genoa Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41989254951477, 37.79812809243717 ], [ -122.41998910903932, 37.798598600981116 ], [ -122.42002665996552, 37.79877239166739 ], [ -122.42008566856384, 37.799064867752875 ], [ -122.42014467716217, 37.79935310392155 ] ] }, "properties": { "class": "street", "len": 174.46837028767197, "name": "Eastman Pl", "name_de": "Eastman Pl", "name_en": "Eastman Pl", "name_es": "Eastman Pl", "name_fr": "Eastman Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42183446884155, 37.80354935604959 ], [ -122.42193102836609, 37.803557833085314 ], [ -122.42217242717743, 37.80355359456757 ], [ -122.4224352836609, 37.80354087901289 ] ] }, "properties": { "class": "street", "len": 67.40971332002576, "name": "Francisco St", "name_de": "Francisco St", "name_en": "Francisco St", "name_es": "Francisco St", "name_fr": "Francisco St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42001593112946, 37.80388843671987 ], [ -122.41856217384338, 37.80407916891281 ], [ -122.41849780082703, 37.8040706919369 ], [ -122.41845488548279, 37.80405373798221 ] ] }, "properties": { "class": "street", "len": 176.51621827234703, "name": "Francisco St", "name_de": "Francisco St", "name_en": "Francisco St", "name_es": "Francisco St", "name_fr": "Francisco St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40691065788269, 37.80296867678598 ], [ -122.40750074386597, 37.802888144264855 ] ] }, "properties": { "class": "service", "len": 66.72982616574079, "name": "Telegraph Pl", "name_de": "Telegraph Pl", "name_en": "Telegraph Pl", "name_es": "Telegraph Pl", "name_fr": "Telegraph Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41010785102844, 37.801862406576994 ], [ -122.41053700447083, 37.80181578179817 ], [ -122.41060674190521, 37.802171824817975 ] ] }, "properties": { "class": "service", "len": 99.27942201758228, "name": "Brant Alley", "name_de": "Brant Alley", "name_en": "Brant Alley", "name_es": "Brant Alley", "name_fr": "Brant Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40426063537598, 37.80204042818909 ], [ -122.40430355072021, 37.80228626685273 ], [ -122.40440011024475, 37.80265926188326 ] ] }, "properties": { "class": "path", "len": 88.4763645184286, "name": "Darrell Pl", "name_de": "Darrell Pl", "name_en": "Darrell Pl", "name_es": "Darrell Pl", "name_fr": "Darrell Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41000592708588, 37.79605527587214 ], [ -122.41162061691284, 37.79583908920016 ], [ -122.41163671016692, 37.79583908920016 ] ] }, "properties": { "class": "street", "len": 184.2639063803854, "name": "John St", "name_de": "John St", "name_en": "John St", "name_es": "John St", "name_fr": "John St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40630984306335, 37.79756856486228 ], [ -122.40694820880891, 37.79748378758728 ] ] }, "properties": { "class": "street_limited", "len": 72.03799344842889, "name": "Jack Kerouac Alley", "name_de": "Jack Kerouac Alley", "name_en": "Jack Kerouac Alley", "name_es": "Jack Kerouac Alley", "name_fr": "Jack Kerouac Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41903424263, 37.80279489597278 ], [ -122.41892158985138, 37.802269312488406 ], [ -122.41892158985138, 37.802239642341455 ], [ -122.41892695426941, 37.802214210777436 ], [ -122.41894841194153, 37.80218877920469 ], [ -122.41896986961365, 37.802171824817975 ], [ -122.41899669170378, 37.802159109025396 ], [ -122.41900205612181, 37.80214639323063 ], [ -122.41900742053984, 37.80213367743367 ] ] }, "properties": { "class": "street", "len": 97.88653388819017, "name": "Montclair Ter", "name_de": "Montclair Ter", "name_en": "Montclair Ter", "name_es": "Montclair Ter", "name_fr": "Montclair Ter", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41190493106842, 37.79263436551425 ], [ -122.41181910037994, 37.792210449854856 ], [ -122.41171717643738, 37.79172294383976 ] ] }, "properties": { "class": "street", "len": 130.07598720782354, "name": "Cushman St", "name_de": "Cushman St", "name_en": "Cushman St", "name_es": "Cushman St", "name_fr": "Cushman St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40644931793213, 37.79888260018339 ], [ -122.40654587745667, 37.79932767136367 ] ] }, "properties": { "class": "service", "len": 63.568313647284086, "name": "Pollard Pl", "name_de": "Pollard Pl", "name_en": "Pollard Pl", "name_es": "Pollard Pl", "name_fr": "Pollard Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40459859371185, 37.79766181975238 ], [ -122.40469515323639, 37.79811537594843 ] ] }, "properties": { "class": "service", "len": 65.06627390580476, "name": "Rowland St", "name_de": "Rowland St", "name_en": "Rowland St", "name_es": "Rowland St", "name_fr": "Rowland St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41530060768127, 37.79728879948555 ], [ -122.41689383983612, 37.79708957198048 ], [ -122.41694211959839, 37.79707261642332 ] ] }, "properties": { "class": "street", "len": 185.5156224954559, "name": "Glover St", "name_de": "Glover St", "name_en": "Glover St", "name_es": "Glover St", "name_fr": "Glover St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41183519363403, 37.79505911634061 ], [ -122.41189956665039, 37.795381280041674 ] ] }, "properties": { "class": "service", "len": 45.97486487176649, "name": "Marcy Pl", "name_de": "Marcy Pl", "name_en": "Marcy Pl", "name_es": "Marcy Pl", "name_fr": "Marcy Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.79605103692387 ], [ -122.40435719490051, 37.79602984217886 ], [ -122.4045878648758, 37.79600016952563 ] ] }, "properties": { "class": "street", "len": 57.186299473279746, "name": "Gibb St", "name_de": "Gibb St", "name_en": "Gibb St", "name_es": "Gibb St", "name_fr": "Gibb St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40965723991394, 37.79847143680532 ], [ -122.40974843502045, 37.798937704379746 ] ] }, "properties": { "class": "service", "len": 66.39165308980479, "name": "Emery Ln", "name_de": "Emery Ln", "name_en": "Emery Ln", "name_es": "Emery Ln", "name_fr": "Emery Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41000592708588, 37.794313047639136 ], [ -122.41008639335631, 37.794707278062184 ] ] }, "properties": { "class": "street", "len": 55.974480792999394, "name": "Codman Pl", "name_de": "Codman Pl", "name_en": "Codman Pl", "name_es": "Codman Pl", "name_fr": "Codman Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4080640077591, 37.791205760029214 ], [ -122.40796744823456, 37.790730965147205 ], [ -122.40787088871002, 37.79029432073233 ] ] }, "properties": { "class": "street", "len": 130.6125469251196, "name": "Dashiell Hammett St", "name_de": "Dashiell Hammett St", "name_en": "Dashiell Hammett St", "name_es": "Dashiell Hammett St", "name_fr": "Dashiell Hammett St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42676973342896, 37.7996922038565 ], [ -122.42685556411743, 37.80010336043956 ] ] }, "properties": { "class": "street", "len": 58.524717001247815, "name": "Imperial Ave", "name_de": "Imperial Ave", "name_en": "Imperial Ave", "name_es": "Imperial Ave", "name_fr": "Imperial Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4203485250473, 37.799030957541454 ], [ -122.42044508457184, 37.79950569908492 ] ] }, "properties": { "class": "street", "len": 67.78662109921467, "name": "Moore Pl", "name_de": "Moore Pl", "name_en": "Moore Pl", "name_es": "Moore Pl", "name_fr": "Moore Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4155580997467, 37.80395201417224 ], [ -122.41566002368927, 37.803913867707394 ], [ -122.41600334644318, 37.80387148272332 ], [ -122.41630375385284, 37.8038630057236 ] ] }, "properties": { "class": "service", "len": 85.27210630659062, "name": "Houston St", "name_de": "Houston St", "name_en": "Houston St", "name_es": "Houston St", "name_fr": "Houston St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40755438804626, 37.79502520429035 ], [ -122.40764021873474, 37.79558899010402 ] ] }, "properties": { "class": "path", "len": 79.80171739993848, "name": "Old Chinatown Ln", "name_de": "Old Chinatown Ln", "name_en": "Old Chinatown Ln", "name_es": "Old Chinatown Ln", "name_fr": "Old Chinatown Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40869700908661, 37.79540247497274 ], [ -122.408766746521, 37.79576278787075 ] ] }, "properties": { "class": "service", "len": 51.374156927156754, "name": "James Pl", "name_de": "James Pl", "name_en": "James Pl", "name_es": "James Pl", "name_fr": "James Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41783261299133, 37.79839937700852 ], [ -122.41792917251588, 37.79886564503779 ] ] }, "properties": { "class": "path", "len": 66.21619514976571, "name": "Hamlin St", "name_de": "Hamlin St", "name_en": "Hamlin St", "name_es": "Hamlin St", "name_fr": "Hamlin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4220597743988, 37.797373576984334 ], [ -122.42317020893096, 37.79724217181975 ] ] }, "properties": { "class": "street", "len": 124.81293402591506, "name": "Bonita St", "name_de": "Bonita St", "name_en": "Bonita St", "name_es": "Bonita St", "name_fr": "Bonita St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41510212421417, 37.79343132036943 ], [ -122.41517186164856, 37.793770447487695 ] ] }, "properties": { "class": "path", "len": 48.397787139902604, "name": "Priest St", "name_de": "Priest St", "name_en": "Priest St", "name_es": "Priest St", "name_fr": "Priest St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41234481334686, 37.79532193420228 ], [ -122.41251647472383, 37.796152771615276 ], [ -122.41254329681396, 37.79619516102869 ] ] }, "properties": { "class": "service", "len": 125.00729047926681, "name": "Auburn St", "name_de": "Auburn St", "name_en": "Auburn St", "name_es": "Auburn St", "name_fr": "Auburn St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41054773330688, 37.79464369265235 ], [ -122.41046726703644, 37.79427065714581 ], [ -122.4103707075119, 37.793808599191095 ], [ -122.41036534309387, 37.7937492520884 ], [ -122.4102795124054, 37.79330838640464 ] ] }, "properties": { "class": "service", "len": 190.7065453498937, "name": "Wetmore St", "name_de": "Wetmore St", "name_en": "Wetmore St", "name_es": "Wetmore St", "name_fr": "Wetmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4171245098114, 37.79609342639566 ], [ -122.41717278957367, 37.79634352378406 ] ] }, "properties": { "class": "street", "len": 35.51528403336682, "name": "Cyrus Pl", "name_de": "Cyrus Pl", "name_en": "Cyrus Pl", "name_es": "Cyrus Pl", "name_fr": "Cyrus Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40577340126038, 37.79568224749312 ], [ -122.40586459636688, 37.79613157689948 ] ] }, "properties": { "class": "street", "len": 63.71686511470373, "name": "Cooper Alley", "name_de": "Cooper Alley", "name_en": "Cooper Alley", "name_es": "Cooper Alley", "name_fr": "Cooper Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42229580879211, 37.80259144474508 ], [ -122.4224352836609, 37.80257449045081 ], [ -122.42300927639009, 37.80250243465672 ], [ -122.42309510707857, 37.802489718921066 ], [ -122.42319703102113, 37.80247700318321 ], [ -122.42455422878267, 37.802303221213165 ], [ -122.42467224597932, 37.8022905054432 ] ] }, "properties": { "class": "street", "len": 267.7905322185892, "name": "Chestnut St", "name_de": "Chestnut St", "name_en": "Chestnut St", "name_es": "Chestnut St", "name_fr": "Chestnut St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.801574180200134 ], [ -122.40448594093323, 37.80152755523935 ] ] }, "properties": { "class": "street", "len": 115.31027630198597, "name": "Alta St", "name_de": "Alta St", "name_en": "Alta St", "name_es": "Alta St", "name_fr": "Alta St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40770995616913, 37.799649816449765 ], [ -122.40791916847229, 37.800603527218016 ] ] }, "properties": { "class": "service", "len": 136.54025963021408, "name": "Bannam Pl", "name_de": "Bannam Pl", "name_en": "Bannam Pl", "name_es": "Bannam Pl", "name_fr": "Bannam Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42712914943695, 37.80543123411352 ], [ -122.4273008108139, 37.805935603193895 ], [ -122.4275529384613, 37.80671122287313 ], [ -122.42753148078918, 37.80676208289539 ], [ -122.42752075195312, 37.80681718121327 ], [ -122.42752075195312, 37.80687227949006 ], [ -122.42753684520721, 37.80692737772573 ], [ -122.4275690317154, 37.80697823759909 ], [ -122.42760121822357, 37.80701214416185 ], [ -122.42765486240387, 37.8070333357557 ], [ -122.42770850658417, 37.807071480609274 ], [ -122.42774605751038, 37.80711386375682 ] ] }, "properties": { "class": "street", "len": 253.93221485712456, "name": "Funston Rd", "name_de": "Funston Rd", "name_en": "Funston Rd", "name_es": "Funston Rd", "name_fr": "Funston Rd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4072915315628, 37.79505911634061 ], [ -122.407329082489, 37.79537280206753 ], [ -122.40744173526762, 37.79593234627349 ] ] }, "properties": { "class": "service", "len": 124.00488861903506, "name": "Ross Alley", "name_de": "Ross Alley", "name_en": "Ross Alley", "name_es": "Ross Alley", "name_fr": "Ross Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42770850658417, 37.805910172902585 ], [ -122.4278211593628, 37.80581692842606 ], [ -122.4279123544693, 37.80577878292446 ], [ -122.42864191532135, 37.80565163111018 ] ] }, "properties": { "class": "street", "len": 113.16274315251536, "name": "Schofield Rd", "name_de": "Schofield Rd", "name_en": "Schofield Rd", "name_es": "Schofield Rd", "name_fr": "Schofield Rd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41902351379395, 37.79490227297768 ], [ -122.41912007331848, 37.795360085104505 ] ] }, "properties": { "class": "street", "len": 65.80607038887653, "name": "McCormick St", "name_de": "McCormick St", "name_en": "McCormick St", "name_es": "McCormick St", "name_fr": "McCormick St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40883111953735, 37.79210023138502 ], [ -122.40892231464386, 37.792562300023754 ] ] }, "properties": { "class": "service", "len": 66.23542405709249, "name": "Miles Ct", "name_de": "Miles Ct", "name_en": "Miles Ct", "name_es": "Miles Ct", "name_fr": "Miles Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41649150848389, 37.79952689283269 ], [ -122.41658806800842, 37.79999739246696 ] ] }, "properties": { "class": "street", "len": 67.1215762632869, "name": "Black Pl", "name_de": "Black Pl", "name_en": "Black Pl", "name_es": "Black Pl", "name_fr": "Black Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41243064403534, 37.799764262392124 ], [ -122.41245210170746, 37.79976002365667 ], [ -122.41256475448608, 37.79976002365667 ], [ -122.41301000118256, 37.7996922038565 ] ] }, "properties": { "class": "path", "len": 65.80191823104533, "name": "Webb Pl", "name_de": "Webb Pl", "name_en": "Webb Pl", "name_es": "Webb Pl", "name_fr": "Webb Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43248283863068, 37.798908032894516 ], [ -122.43412971496582, 37.798696093367674 ], [ -122.43577122688293, 37.79848839204139 ], [ -122.4371337890625, 37.79831460068698 ] ] }, "properties": { "class": "street", "len": 556.1986596304383, "name": "Pixley St", "name_de": "Pixley St", "name_en": "Pixley St", "name_es": "Pixley St", "name_fr": "Pixley St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42028415203094, 37.80523626699121 ], [ -122.42078304290771, 37.805172690644405 ] ] }, "properties": { "class": "street", "len": 56.334731738702594, "name": "Bergen Pl", "name_de": "Bergen Pl", "name_en": "Bergen Pl", "name_es": "Bergen Pl", "name_fr": "Bergen Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41833686828613, 37.798640988991096 ], [ -122.41893768310547, 37.79856892935968 ] ] }, "properties": { "class": "street", "len": 67.95594160899057, "name": "Delgado Pl", "name_de": "Delgado Pl", "name_en": "Delgado Pl", "name_es": "Delgado Pl", "name_fr": "Delgado Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.412548661232, 37.80034072814651 ], [ -122.41257011890411, 37.800336489444156 ], [ -122.41312265396118, 37.800251715345794 ] ] }, "properties": { "class": "street", "len": 65.0941469152847, "name": "Kent St", "name_de": "Kent St", "name_en": "Kent St", "name_es": "Kent St", "name_fr": "Kent St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4058324098587, 37.8027440332184 ], [ -122.40584313869476, 37.802777941725196 ], [ -122.40585923194884, 37.80282032733683 ], [ -122.40588605403899, 37.80286695148153 ], [ -122.40591287612914, 37.80290509848712 ], [ -122.40593969821926, 37.8029262912595 ], [ -122.40596115589138, 37.80293476836673 ], [ -122.40599870681758, 37.802939006920006 ], [ -122.40603625774379, 37.80293052981323 ], [ -122.40606307983393, 37.802917814151286 ], [ -122.40607917308802, 37.80290085993192 ], [ -122.4060952663421, 37.802871190038694 ], [ -122.4060952663421, 37.80284999725051 ], [ -122.40608990192408, 37.802816088776765 ], [ -122.40606307983393, 37.802790657411244 ], [ -122.40602016448969, 37.80276946459998 ], [ -122.40597724914545, 37.8027567489103 ], [ -122.40593969821924, 37.80275251034657 ], [ -122.40590751171106, 37.80274827178258 ], [ -122.40586996078487, 37.80274827178258 ] ] }, "properties": { "class": "street", "len": 86.23294703460996, "name": "Telegraph Hill Blvd", "name_de": "Telegraph Hill Blvd", "name_en": "Telegraph Hill Blvd", "name_es": "Telegraph Hill Blvd", "name_fr": "Telegraph Hill Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4062991142273, 37.801786111469056 ], [ -122.40655124187471, 37.80175220250688 ], [ -122.40700185298921, 37.80169710041017 ], [ -122.40748465061189, 37.801633521016726 ], [ -122.40779042243959, 37.80159537335438 ], [ -122.40815520286561, 37.801548748406965 ], [ -122.40857362747197, 37.80149364615848 ], [ -122.40894913673405, 37.801447021146856 ], [ -122.40938365459444, 37.80137920289562 ], [ -122.41014003753664, 37.80128171405037 ], [ -122.4105477333069, 37.80123085025394 ], [ -122.41102516651155, 37.801175747768255 ] ] }, "properties": { "class": "street", "len": 533.1610983328536, "name": "Filbert St", "name_de": "Filbert St", "name_en": "Filbert St", "name_es": "Filbert St", "name_fr": "Filbert St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41275787353516, 37.80143006658992 ], [ -122.41279006004333, 37.80143006658992 ], [ -122.41439938545227, 37.80122661160265 ] ] }, "properties": { "class": "street", "len": 185.27470093271157, "name": "Valparaiso St", "name_de": "Valparaiso St", "name_en": "Valparaiso St", "name_es": "Valparaiso St", "name_fr": "Valparaiso St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4148553609848, 37.80116727045915 ], [ -122.41605699062349, 37.801010440064665 ] ] }, "properties": { "class": "street", "len": 135.58526800389436, "name": "Valparaiso St", "name_de": "Valparaiso St", "name_en": "Valparaiso St", "name_es": "Valparaiso St", "name_fr": "Valparaiso St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40968406200409, 37.796983599684395 ], [ -122.41016685962677, 37.79692001623378 ] ] }, "properties": { "class": "service", "len": 53.878341660583025, "name": "Fisher Alley", "name_de": "Fisher Alley", "name_en": "Fisher Alley", "name_es": "Fisher Alley", "name_fr": "Fisher Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4089115858078, 37.79904791264911 ], [ -122.40974843502046, 37.79893770437972 ] ] }, "properties": { "class": "service", "len": 94.45877936906446, "name": "Card Alley", "name_de": "Card Alley", "name_en": "Card Alley", "name_es": "Card Alley", "name_fr": "Card Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4297684431076, 37.799149643213354 ], [ -122.43082523345947, 37.7990140024299 ] ] }, "properties": { "class": "street", "len": 119.18739866285387, "name": "Harris Pl", "name_de": "Harris Pl", "name_en": "Harris Pl", "name_es": "Harris Pl", "name_fr": "Harris Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40533351898193, 37.791070104659966 ], [ -122.40541398525237, 37.79146435238699 ], [ -122.40544617176056, 37.7915364189484 ], [ -122.4054729938507, 37.7916084854395 ], [ -122.40566074848174, 37.792498712767845 ] ] }, "properties": { "class": "street", "len": 204.3901159191687, "name": "Quincy St", "name_de": "Quincy St", "name_en": "Quincy St", "name_es": "Quincy St", "name_fr": "Quincy St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.79578822165596 ], [ -122.40464687347412, 37.795737354076756 ] ] }, "properties": { "class": "street", "len": 99.14472497850826, "name": "Ils Ln", "name_de": "Ils Ln", "name_en": "Ils Ln", "name_es": "Ils Ln", "name_fr": "Ils Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41416871547699, 37.80841925278804 ], [ -122.41397559642793, 37.807491072698134 ] ] }, "properties": { "class": "street", "len": 132.50103169390346, "name": "Mason St", "name_de": "Mason St", "name_en": "Mason St", "name_es": "Mason St", "name_fr": "Mason St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40893304347992, 37.79486412183907 ], [ -122.40900814533235, 37.79527954428784 ] ] }, "properties": { "class": "service", "len": 59.40607544642352, "name": "Trenton St", "name_de": "Trenton St", "name_en": "Trenton St", "name_es": "Trenton St", "name_fr": "Trenton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43497729301453, 37.80285423580862 ], [ -122.43517041206358, 37.803824859212796 ], [ -122.43536353111266, 37.804761562280376 ], [ -122.43555665016173, 37.805689776677475 ], [ -122.43559956550597, 37.80591441128507 ], [ -122.43556737899779, 37.806024609144636 ], [ -122.4354976415634, 37.80609666150237 ] ] }, "properties": { "class": "street", "len": 465.9465632152965, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43460178375244, 37.80102739471796 ], [ -122.43451058864595, 37.80056114033423 ], [ -122.43444085121156, 37.80018389599704 ], [ -122.4344301223755, 37.80010336043956 ] ] }, "properties": { "class": "street", "len": 131.42676270340561, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4284166097641, 37.80374008911817 ], [ -122.42821276187898, 37.80279489597278 ], [ -122.42802500724794, 37.801862406576994 ], [ -122.42785871028902, 37.801014678728365 ], [ -122.42784261703493, 37.800942621412574 ] ] }, "properties": { "class": "street", "len": 399.27046569905065, "name": "Gough St", "name_de": "Gough St", "name_en": "Gough St", "name_es": "Gough St", "name_fr": "Gough St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40871846675873, 37.79577126580011 ], [ -122.40879893302917, 37.79618244420722 ] ] }, "properties": { "class": "path", "len": 58.5516882757108, "name": "Bedford Pl", "name_de": "Bedford Pl", "name_en": "Bedford Pl", "name_es": "Bedford Pl", "name_fr": "Bedford Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43134021759033, 37.79710652753374 ], [ -122.4314421415329, 37.797606714604264 ] ] }, "properties": { "class": "street", "len": 71.23167834536395, "name": "Charlton Ct", "name_de": "Charlton Ct", "name_en": "Charlton Ct", "name_es": "Charlton Ct", "name_fr": "Charlton Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41912543773651, 37.79948874408232 ], [ -122.42014467716217, 37.79935310392155 ] ] }, "properties": { "class": "street", "len": 115.28500032497456, "name": "Allen St", "name_de": "Allen St", "name_en": "Allen St", "name_es": "Allen St", "name_fr": "Allen St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41422235965729, 37.80030257981648 ], [ -122.41433501243591, 37.800289863702076 ], [ -122.41478562355042, 37.80023052180601 ] ] }, "properties": { "class": "street", "len": 63.63787942642608, "name": "Redfield Alley", "name_de": "Redfield Alley", "name_en": "Redfield Alley", "name_es": "Redfield Alley", "name_fr": "Redfield Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41522550582886, 37.799687965116924 ], [ -122.41532742977142, 37.80016694115013 ] ] }, "properties": { "class": "path", "len": 67.97571625166456, "name": "Marion Pl", "name_de": "Marion Pl", "name_en": "Marion Pl", "name_es": "Marion Pl", "name_fr": "Marion Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40715205669403, 37.80100196273655 ], [ -122.40766167640686, 37.800938382744725 ] ] }, "properties": { "class": "service", "len": 57.776885517755545, "name": "Nobles Alley", "name_de": "Nobles Alley", "name_en": "Nobles Alley", "name_es": "Nobles Alley", "name_fr": "Nobles Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41583168506622, 37.791544897362755 ], [ -122.41630375385284, 37.791489787651976 ] ] }, "properties": { "class": "street", "len": 53.43485753631922, "name": "Acorn Alley", "name_de": "Acorn Alley", "name_en": "Acorn Alley", "name_es": "Acorn Alley", "name_fr": "Acorn Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40836977958679, 37.790892056609856 ], [ -122.40892231464386, 37.79081998941997 ], [ -122.40894377231598, 37.79081998941997 ] ] }, "properties": { "class": "service", "len": 64.51350943910694, "name": "Fella Pl", "name_de": "Fella Pl", "name_en": "Fella Pl", "name_es": "Fella Pl", "name_fr": "Fella Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43186593055725, 37.80424446974821 ], [ -122.43352890014648, 37.804032545533346 ], [ -122.43517041206358, 37.803824859212796 ], [ -122.43680655956267, 37.80361717230819 ], [ -122.43697822093964, 37.80359174121851 ] ] }, "properties": { "class": "street", "len": 576.3959557001698, "name": "N Pt St", "name_de": "N Pt St", "name_en": "N Pt St", "name_es": "N Pt St", "name_fr": "N Pt St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41470515727997, 37.79036638843492 ], [ -122.41464614868164, 37.79003572427978 ] ] }, "properties": { "class": "street_limited", "len": 46.989364753467534, "name": "Touchard St", "name_de": "Touchard St", "name_en": "Touchard St", "name_es": "Touchard St", "name_fr": "Touchard St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40972697734833, 37.79749226531914 ], [ -122.40989863872528, 37.79844176513279 ] ] }, "properties": { "class": "service", "len": 135.41378659574053, "name": "Turk Murphy Ln", "name_de": "Turk Murphy Ln", "name_en": "Turk Murphy Ln", "name_es": "Turk Murphy Ln", "name_fr": "Turk Murphy Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41187274456024, 37.79700055526198 ], [ -122.41185665130615, 37.79700055526198 ], [ -122.41121828556061, 37.79709381086916 ], [ -122.41106808185577, 37.797140438628595 ], [ -122.41048336029051, 37.79726336621694 ], [ -122.41038680076598, 37.797271843974116 ], [ -122.41034924983978, 37.797271843974116 ], [ -122.41030097007751, 37.797259127338 ], [ -122.41022050380707, 37.79721249965347 ] ] }, "properties": { "class": "street", "len": 191.26148044141763, "name": "Broadway", "name_de": "Broadway", "name_en": "Broadway", "name_es": "Broadway", "name_fr": "Broadway", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40747928619385, 37.802269312488406 ], [ -122.40792453289032, 37.802218449372056 ] ] }, "properties": { "class": "service", "len": 49.94173004607788, "name": "Gerke Alley", "name_de": "Gerke Alley", "name_en": "Gerke Alley", "name_es": "Gerke Alley", "name_fr": "Gerke Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40560173988342, 37.79868761577395 ], [ -122.40566074848175, 37.79868337697672 ], [ -122.40639567375183, 37.79859012337622 ], [ -122.40716814994812, 37.79849263084982 ] ] }, "properties": { "class": "service", "len": 176.83964091802235, "name": "Fresno St", "name_de": "Fresno St", "name_en": "Fresno St", "name_es": "Fresno St", "name_fr": "Fresno St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41190493106842, 37.79263436551425 ], [ -122.41211950778961, 37.79352881957535 ] ] }, "properties": { "class": "street", "len": 127.98478815879075, "name": "Sproule Ln", "name_de": "Sproule Ln", "name_en": "Sproule Ln", "name_es": "Sproule Ln", "name_fr": "Sproule Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40919589996338, 37.79389761975574 ], [ -122.40928173065186, 37.79433848192347 ] ] }, "properties": { "class": "street", "len": 62.784717886173986, "name": "Parkhurst Alley", "name_de": "Parkhurst Alley", "name_en": "Parkhurst Alley", "name_es": "Parkhurst Alley", "name_fr": "Parkhurst Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4105155467987, 37.80505401465057 ], [ -122.41059601306915, 37.80546090297828 ] ] }, "properties": { "class": "service", "len": 58.573718508969975, "name": "Worden St", "name_de": "Worden St", "name_en": "Worden St", "name_es": "Worden St", "name_fr": "Worden St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41583168506622, 37.80908889145281 ], [ -122.41591215133667, 37.80912279704645 ], [ -122.41600334644318, 37.80913974983744 ], [ -122.41657197475432, 37.809160940820696 ], [ -122.4173605442047, 37.80919060818706 ] ] }, "properties": { "class": "street", "len": 171.84078522081418, "name": "Fishermans Wharf", "name_de": "Fishermans Wharf", "name_en": "Fishermans Wharf", "name_es": "Fishermans Wharf", "name_fr": "Fishermans Wharf", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40622937679291, 37.796084948503236 ], [ -122.406068444252, 37.79520324238054 ] ] }, "properties": { "class": "street", "len": 125.21460378065915, "name": "Wentworth Pl", "name_de": "Wentworth Pl", "name_en": "Wentworth Pl", "name_es": "Wentworth Pl", "name_fr": "Wentworth Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40757048130035, 37.79591539045074 ], [ -122.40765631198883, 37.796347762715534 ] ] }, "properties": { "class": "path", "len": 61.46761423790475, "name": "Duncombe Alley", "name_de": "Duncombe Alley", "name_en": "Duncombe Alley", "name_es": "Duncombe Alley", "name_fr": "Duncombe Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42927491664886, 37.79134141514943 ], [ -122.43091642856598, 37.79113369314532 ] ] }, "properties": { "class": "street", "len": 185.36281638960787, "name": "Clay St", "name_de": "Clay St", "name_en": "Clay St", "name_es": "Clay St", "name_fr": "Clay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4073076248169, 37.79413924646194 ], [ -122.40736126899719, 37.79442750184963 ], [ -122.40739345550537, 37.79449108744552 ], [ -122.407506108284, 37.79503368230439 ] ] }, "properties": { "class": "service", "len": 127.89649212945443, "name": "Spofford St", "name_de": "Spofford St", "name_en": "Spofford St", "name_es": "Spofford St", "name_fr": "Spofford St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40990400314331, 37.795618662922415 ], [ -122.40956604480742, 37.79566105264231 ], [ -122.40936756134032, 37.795686486462564 ], [ -122.40908324718474, 37.7957246371765 ], [ -122.40876674652098, 37.79576278787075 ], [ -122.40871846675871, 37.795771265800134 ], [ -122.40825712680815, 37.795826372317386 ], [ -122.40780651569365, 37.79588571775155 ], [ -122.40757048130034, 37.79591539045074 ], [ -122.4074417352676, 37.79593234627351 ], [ -122.407329082489, 37.79594506313804 ], [ -122.40709304809569, 37.79597473581341 ], [ -122.40665316581725, 37.79602984217888 ], [ -122.40635275840758, 37.79606799271553 ], [ -122.4062293767929, 37.796084948503264 ], [ -122.40586459636687, 37.79613157689948 ], [ -122.4051511287689, 37.79622059466508 ], [ -122.4044269323349, 37.796313851256826 ], [ -122.40418016910553, 37.79634352378408 ] ] }, "properties": { "class": "street", "len": 1171.500377114965, "name": "Jackson St", "name_de": "Jackson St", "name_en": "Jackson St", "name_es": "Jackson St", "name_fr": "Jackson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4058485031128, 37.79522867635839 ], [ -122.40566611289978, 37.794346960016284 ] ] }, "properties": { "class": "street", "len": 126.09736079766184, "name": "Walter U Lum Pl", "name_de": "Walter U Lum Pl", "name_en": "Walter U Lum Pl", "name_es": "Walter U Lum Pl", "name_fr": "Walter U Lum Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4063366651535, 37.79048084875924 ], [ -122.40642786026001, 37.79093444904167 ] ] }, "properties": { "class": "service", "len": 64.35427103232769, "name": "Chatham Pl", "name_de": "Chatham Pl", "name_en": "Chatham Pl", "name_es": "Chatham Pl", "name_fr": "Chatham Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4110895395279, 37.7931769740092 ], [ -122.4116849899292, 37.793100669930396 ] ] }, "properties": { "class": "service", "len": 67.0897317041935, "name": "Ewer Pl", "name_de": "Ewer Pl", "name_en": "Ewer Pl", "name_es": "Ewer Pl", "name_fr": "Ewer Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41544544696808, 37.79176533579482 ], [ -122.41552591323853, 37.7921807756676 ] ] }, "properties": { "class": "path", "len": 59.174028931375034, "name": "Golden Ct", "name_de": "Golden Ct", "name_en": "Golden Ct", "name_es": "Golden Ct", "name_fr": "Golden Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4080103635788, 37.800590811155416 ], [ -122.40811228752136, 37.80102739471796 ] ] }, "properties": { "class": "service", "len": 62.390207565970236, "name": "Cadell Pl", "name_de": "Cadell Pl", "name_en": "Cadell Pl", "name_es": "Cadell Pl", "name_fr": "Cadell Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43269205093384, 37.799836320857466 ], [ -122.43432819843292, 37.79963286148024 ], [ -122.43595898151398, 37.79942092403308 ], [ -122.43712306022644, 37.799272567458246 ], [ -122.4371337890625, 37.799272567458246 ] ] }, "properties": { "class": "street", "len": 554.2827921622029, "name": "Moulton St", "name_de": "Moulton St", "name_en": "Moulton St", "name_es": "Moulton St", "name_fr": "Moulton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41555273532867, 37.79338469026892 ], [ -122.41562247276306, 37.79369414402182 ] ] }, "properties": { "class": "path", "len": 43.92977350286755, "name": "Reed St", "name_de": "Reed St", "name_en": "Reed St", "name_es": "Reed St", "name_fr": "Reed St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40743637084961, 37.789891588159335 ], [ -122.40752756595612, 37.79033671350708 ] ] }, "properties": { "class": "service", "len": 63.34362872380736, "name": "Burritt St", "name_de": "Burritt St", "name_en": "Burritt St", "name_es": "Burritt St", "name_fr": "Burritt St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42660880088806, 37.8081140989773 ], [ -122.42651760578156, 37.807698748708574 ], [ -122.42646932601929, 37.807541932183284 ], [ -122.42640495300293, 37.807397830217774 ], [ -122.42632448673248, 37.807262204581576 ], [ -122.426238656044, 37.8071435319456 ], [ -122.42612600326538, 37.80701638248111 ], [ -122.4259489774704, 37.806851087850006 ], [ -122.42587387561798, 37.80678751289335 ], [ -122.4257344007492, 37.806617979408074 ], [ -122.42565929889678, 37.80650354408551 ] ] }, "properties": { "class": "street", "len": 255.3557123662623, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42446303367615, 37.80132833916636 ], [ -122.4244898557663, 37.80144278250799 ], [ -122.42465615272522, 37.80220997218259 ], [ -122.42467224597931, 37.802290505443175 ], [ -122.42468833923338, 37.802379515786924 ], [ -122.42484390735625, 37.803218750897145 ] ] }, "properties": { "class": "main", "len": 269.51529451836717, "name": "Van Ness Ave", "name_de": "Van Ness Ave", "name_en": "Van Ness Ave", "name_es": "Van Ness Ave", "name_fr": "Van Ness Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4112719297409, 37.794062943376915 ], [ -122.41135239601135, 37.794058704314324 ], [ -122.41186201572418, 37.79399087927983 ] ] }, "properties": { "class": "street", "len": 66.67698532956014, "name": "Truett St", "name_de": "Truett St", "name_en": "Truett St", "name_es": "Truett St", "name_fr": "Truett St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40842878818512, 37.80483785431468 ], [ -122.40944802761078, 37.80471070088035 ], [ -122.41004884243011, 37.80463864717042 ] ] }, "properties": { "class": "service", "len": 182.20355575256644, "name": "Pfeiffer St", "name_de": "Pfeiffer St", "name_en": "Pfeiffer St", "name_es": "Pfeiffer St", "name_fr": "Pfeiffer St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41583168506622, 37.80908889145281 ], [ -122.41586923599243, 37.808783740409325 ], [ -122.41587460041045, 37.808652355543906 ], [ -122.41586923599243, 37.80854639983701 ], [ -122.4158102273941, 37.808215817054354 ], [ -122.41561710834505, 37.80728339610364 ] ] }, "properties": { "class": "street", "len": 256.763574292215, "name": "Taylor St", "name_de": "Taylor St", "name_en": "Taylor St", "name_es": "Taylor St", "name_fr": "Taylor St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4081552028656, 37.80154874840699 ], [ -122.40825176239014, 37.80198532630738 ] ] }, "properties": { "class": "service", "len": 62.563965666960364, "name": "Medau Pl", "name_de": "Medau Pl", "name_en": "Medau Pl", "name_es": "Medau Pl", "name_fr": "Medau Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4070018529892, 37.80169710041017 ], [ -122.40696430206299, 37.80149788479444 ], [ -122.40681409835815, 37.80073916508263 ], [ -122.40662634372711, 37.79980241100018 ] ] }, "properties": { "class": "service", "len": 270.15151694698125, "name": "Varennes St", "name_de": "Varennes St", "name_en": "Varennes St", "name_es": "Varennes St", "name_fr": "Varennes St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41160452365875, 37.80204466679365 ], [ -122.41145968437195, 37.801336816456995 ], [ -122.41146504878998, 37.801294429994016 ], [ -122.41149723529816, 37.80124780485665 ] ] }, "properties": { "class": "service", "len": 114.32624227346044, "name": "Via Buffano", "name_de": "Via Buffano", "name_en": "Via Buffano", "name_es": "Via Buffano", "name_fr": "Via Buffano", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40497410297394, 37.798437526321464 ], [ -122.40547835826874, 37.79836970530704 ], [ -122.40553200244905, 37.79836546649156 ] ] }, "properties": { "class": "service", "len": 62.619009463483394, "name": "Dunnes Alley", "name_de": "Dunnes Alley", "name_en": "Dunnes Alley", "name_es": "Dunnes Alley", "name_fr": "Dunnes Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41254329681396, 37.79619516102869 ], [ -122.41257011890411, 37.796233311479945 ], [ -122.41269886493683, 37.79691577733512 ] ] }, "properties": { "class": "service", "len": 103.2925731314861, "name": "Salmon St", "name_de": "Salmon St", "name_en": "Salmon St", "name_es": "Salmon St", "name_fr": "Salmon St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.80014574758602 ], [ -122.404265999794, 37.80013727015868 ], [ -122.4044805765152, 37.80010336043956 ], [ -122.40500092506409, 37.800031302234714 ], [ -122.40506529808044, 37.80002282479424 ], [ -122.40520477294922, 37.80000163118878 ], [ -122.4053817987442, 37.7999761988542 ], [ -122.40547835826874, 37.799963482683594 ], [ -122.4057787656784, 37.79992109543255 ], [ -122.4058485031128, 37.79991261797941 ], [ -122.40591287612915, 37.79990414052532 ], [ -122.40623474121094, 37.79985751451035 ], [ -122.40662634372711, 37.79980241100015 ], [ -122.407329082489, 37.79970068133491 ], [ -122.40741491317749, 37.79969220385647 ], [ -122.4074739217758, 37.7996837263771 ], [ -122.40770995616911, 37.79964981644974 ], [ -122.40791380405425, 37.79962014525055 ], [ -122.40818738937377, 37.799581996548376 ], [ -122.40882039070128, 37.79949298283332 ], [ -122.40886867046355, 37.799484505331066 ], [ -122.40896522998808, 37.79947178907583 ] ] }, "properties": { "class": "street", "len": 586.1387798872114, "name": "Green St", "name_de": "Green St", "name_en": "Green St", "name_es": "Green St", "name_fr": "Green St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41900742053986, 37.798916510462924 ], [ -122.4188894033432, 37.798929226813755 ], [ -122.41848707199097, 37.798963137071866 ] ] }, "properties": { "class": "street", "len": 58.34103522688975, "name": "Warner Pl", "name_de": "Warner Pl", "name_en": "Warner Pl", "name_es": "Warner Pl", "name_fr": "Warner Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40685164928436, 37.7988317347349 ], [ -122.40693747997285, 37.799276806221656 ], [ -122.40697503089905, 37.79947178907586 ] ] }, "properties": { "class": "service", "len": 91.2595127301476, "name": "Margrave Pl", "name_de": "Margrave Pl", "name_en": "Margrave Pl", "name_es": "Margrave Pl", "name_fr": "Margrave Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40818738937378, 37.799581996548405 ], [ -122.40837514400482, 37.80054842426436 ], [ -122.40840196609497, 37.800641675392626 ], [ -122.40857362747192, 37.801493646158505 ] ] }, "properties": { "class": "service", "len": 272.7948162895242, "name": "Jasper Pl", "name_de": "Jasper Pl", "name_en": "Jasper Pl", "name_es": "Jasper Pl", "name_fr": "Jasper Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42682337760925, 37.80419784647312 ], [ -122.4269038438797, 37.80426990061314 ], [ -122.42696821689606, 37.804341954682855 ], [ -122.4272632598877, 37.804876000302286 ], [ -122.42730617523195, 37.804952292218374 ], [ -122.4273544549942, 37.80500739188654 ], [ -122.42741882801056, 37.80505401465057 ], [ -122.427499294281, 37.805096398955996 ], [ -122.42759048938751, 37.805134544810045 ], [ -122.42767095565796, 37.80515149851663 ], [ -122.42778897285461, 37.80515573694268 ], [ -122.42791771888733, 37.80513878323706 ], [ -122.42803037166595, 37.805104875814145 ], [ -122.42821276187897, 37.804998915017194 ], [ -122.42823421955109, 37.80515573694268 ], [ -122.42825031280516, 37.805244743833335 ] ] }, "properties": { "class": "street", "len": 271.8842422810107, "name": "Macarthur Ave", "name_de": "Macarthur Ave", "name_en": "Macarthur Ave", "name_es": "Macarthur Ave", "name_fr": "Macarthur Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42825031280518, 37.805244743833335 ], [ -122.4272632598877, 37.80537189634818 ], [ -122.42719352245332, 37.805388850000256 ], [ -122.42712914943696, 37.80543123411352 ] ] }, "properties": { "class": "street", "len": 128.79204821896596, "name": "Macarthur Ave", "name_de": "Macarthur Ave", "name_en": "Macarthur Ave", "name_es": "Macarthur Ave", "name_fr": "Macarthur Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40894913673401, 37.801447021146885 ], [ -122.40904033184052, 37.801892076875475 ] ] }, "properties": { "class": "service", "len": 63.908950859835066, "name": "Krausgrill Pl", "name_de": "Krausgrill Pl", "name_en": "Krausgrill Pl", "name_es": "Krausgrill Pl", "name_fr": "Krausgrill Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40935146808624, 37.80424446974821 ], [ -122.40944802761078, 37.80471070088038 ] ] }, "properties": { "class": "path", "len": 66.69583495236432, "name": "Bellair Pl", "name_de": "Bellair Pl", "name_en": "Bellair Pl", "name_es": "Bellair Pl", "name_fr": "Bellair Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41357862949371, 37.80038735385647 ], [ -122.41422235965729, 37.80030257981648 ] ] }, "properties": { "class": "street", "len": 72.47540410352268, "name": "Aladdin Ter", "name_de": "Aladdin Ter", "name_en": "Aladdin Ter", "name_es": "Aladdin Ter", "name_fr": "Aladdin Ter", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40665853023529, 37.80393929868616 ], [ -122.40717887878418, 37.80386724422359 ] ] }, "properties": { "class": "service", "len": 58.93459425506088, "name": "La Ferrera Ter", "name_de": "La Ferrera Ter", "name_en": "La Ferrera Ter", "name_es": "La Ferrera Ter", "name_fr": "La Ferrera Ter", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41346061229706, 37.79652579761845 ], [ -122.41510748863222, 37.796326568055655 ], [ -122.41674900054932, 37.79611886006703 ] ] }, "properties": { "class": "street", "len": 369.994656668576, "name": "Bernard St", "name_de": "Bernard St", "name_en": "Bernard St", "name_es": "Bernard St", "name_fr": "Bernard St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4282556772232, 37.803918106204456 ], [ -122.42833077907562, 37.8038969137167 ], [ -122.42840588092804, 37.803884198221105 ], [ -122.42882966995239, 37.80388843671987 ], [ -122.42887258529663, 37.80390115221473 ], [ -122.42889940738678, 37.803930821694195 ], [ -122.42893695831297, 37.804049499492926 ], [ -122.42893159389496, 37.804087645887726 ], [ -122.42891013622284, 37.80412155377767 ], [ -122.42888331413269, 37.80414274620098 ], [ -122.42884576320648, 37.80415546165205 ], [ -122.42865800857544, 37.80418936951085 ], [ -122.42853999137878, 37.80422327735411 ], [ -122.42843806743622, 37.80427837756618 ], [ -122.42835760116579, 37.804358908571395 ], [ -122.42833614349365, 37.804439439488824 ], [ -122.42829859256746, 37.80481242364534 ], [ -122.42827177047731, 37.80489295406824 ], [ -122.42823958396913, 37.80496076909309 ], [ -122.42821276187898, 37.804998915017194 ] ] }, "properties": { "class": "street", "len": 267.7599159825363, "name": "Fort Mason 10", "name_de": "Fort Mason 10", "name_en": "Fort Mason 10", "name_es": "Fort Mason 10", "name_fr": "Fort Mason 10", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4272632598877, 37.804045261003395 ], [ -122.42763876914978, 37.80474460848425 ], [ -122.42768704891205, 37.80479546986092 ], [ -122.4277514219284, 37.8048081851996 ], [ -122.42781579494476, 37.80479970830737 ], [ -122.42786943912508, 37.80476580072879 ], [ -122.42789626121521, 37.80470646242878 ], [ -122.42794990539551, 37.804235992791284 ], [ -122.4279659986496, 37.80415546165205 ], [ -122.4280035495758, 37.804083407400384 ], [ -122.42806792259216, 37.80401559156988 ], [ -122.42814302444458, 37.80396472965615 ], [ -122.4282556772232, 37.803918106204456 ] ] }, "properties": { "class": "street", "len": 273.1256858061551, "name": "Fort Mason 11", "name_de": "Fort Mason 11", "name_en": "Fort Mason 11", "name_es": "Fort Mason 11", "name_fr": "Fort Mason 11", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40804255008698, 37.802871190038694 ], [ -122.40892767906189, 37.80276098747375 ] ] }, "properties": { "class": "service", "len": 99.28843084653585, "name": "Edith St", "name_de": "Edith St", "name_en": "Edith St", "name_es": "Edith St", "name_fr": "Edith St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4282556772232, 37.803918106204456 ], [ -122.42797672748566, 37.80397744513788 ], [ -122.4277514219284, 37.8040155915699 ], [ -122.42751002311707, 37.80404102251361 ], [ -122.4272632598877, 37.804045261003395 ] ] }, "properties": { "class": "street", "len": 112.73141446670768, "name": "Fort Mason 12", "name_de": "Fort Mason 12", "name_en": "Fort Mason 12", "name_es": "Fort Mason 12", "name_fr": "Fort Mason 12", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4048775434494, 37.80051027604161 ], [ -122.40435719490051, 37.800578095090685 ] ] }, "properties": { "class": "service", "len": 58.71020694937184, "name": "Montague Pl", "name_de": "Montague Pl", "name_en": "Montague Pl", "name_es": "Montague Pl", "name_fr": "Montague Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4272632598877, 37.804045261003395 ], [ -122.42712378501892, 37.80405797647123 ], [ -122.42707014083862, 37.80406645344859 ], [ -122.42702186107635, 37.804087645887726 ], [ -122.42698431015016, 37.80411307680662 ], [ -122.42695212364197, 37.80415546165205 ], [ -122.42693066596985, 37.80420632343443 ], [ -122.42690384387971, 37.80426990061314 ] ] }, "properties": { "class": "street", "len": 57.225867374503736, "name": "Fort Mason 13", "name_de": "Fort Mason 13", "name_en": "Fort Mason 13", "name_es": "Fort Mason 13", "name_fr": "Fort Mason 13", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40902423858643, 37.79300317015945 ], [ -122.40911543369293, 37.79345251585992 ] ] }, "properties": { "class": "service", "len": 63.94319744855801, "name": "Miller Pl", "name_de": "Miller Pl", "name_en": "Miller Pl", "name_es": "Miller Pl", "name_fr": "Miller Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41281688213348, 37.79616124949991 ], [ -122.41297245025635, 37.79691577733512 ], [ -122.41301000118254, 37.79711500530891 ] ] }, "properties": { "class": "service", "len": 136.1630268523898, "name": "Himmelmann Pl", "name_de": "Himmelmann Pl", "name_en": "Himmelmann Pl", "name_es": "Himmelmann Pl", "name_fr": "Himmelmann Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41671681404114, 37.7959238683626 ], [ -122.41722106933595, 37.79586028399988 ], [ -122.41834223270416, 37.79571192027404 ], [ -122.41835832595825, 37.79571192027404 ] ] }, "properties": { "class": "service", "len": 185.2098426925577, "name": "Lynch St", "name_de": "Lynch St", "name_en": "Lynch St", "name_es": "Lynch St", "name_fr": "Lynch St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40773141384125, 37.80399439911008 ], [ -122.40793526172638, 37.80396472965615 ], [ -122.4082624912262, 37.80392234470129 ] ] }, "properties": { "class": "service", "len": 59.7132859074724, "name": "Whiting St", "name_de": "Whiting St", "name_en": "Whiting St", "name_es": "Whiting St", "name_fr": "Whiting St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.418133020401, 37.798840212312086 ], [ -122.41822957992555, 37.79930223879704 ] ] }, "properties": { "class": "street", "len": 65.98989165025142, "name": "Sharp Pl", "name_de": "Sharp Pl", "name_en": "Sharp Pl", "name_es": "Sharp Pl", "name_fr": "Sharp Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40956604480743, 37.79566105264231 ], [ -122.40965187549591, 37.796089187449574 ] ] }, "properties": { "class": "service", "len": 61.076484836602674, "name": "Adele Ct", "name_de": "Adele Ct", "name_en": "Adele Ct", "name_es": "Adele Ct", "name_fr": "Adele Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41245746612549, 37.80182425903287 ], [ -122.41245746612549, 37.80170133903446 ], [ -122.41232335567474, 37.801010440064665 ] ] }, "properties": { "class": "service", "len": 115.60519316779043, "name": "Scotland St", "name_de": "Scotland St", "name_en": "Scotland St", "name_es": "Scotland St", "name_fr": "Scotland St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40635275840759, 37.7960679927155 ], [ -122.40652978420258, 37.79694968851756 ] ] }, "properties": { "class": "street", "len": 125.40847180388414, "name": "Beckett St", "name_de": "Beckett St", "name_en": "Beckett St", "name_es": "Beckett St", "name_fr": "Beckett St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4148553609848, 37.80116727045915 ], [ -122.41495192050935, 37.80163775964465 ] ] }, "properties": { "class": "street", "len": 66.9410016357164, "name": "Roach St", "name_de": "Roach St", "name_en": "Roach St", "name_es": "Roach St", "name_fr": "Roach St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4053817987442, 37.7999761988542 ], [ -122.40544617176056, 37.80032801203869 ] ] }, "properties": { "class": "street", "len": 49.61592990094674, "name": "Windsor Pl", "name_de": "Windsor Pl", "name_en": "Windsor Pl", "name_es": "Windsor Pl", "name_fr": "Windsor Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40701794624329, 37.795088789371825 ], [ -122.40682482719423, 37.79419859325133 ], [ -122.40664243698122, 37.79331262551028 ] ] }, "properties": { "class": "street", "len": 254.02764917872267, "name": "Waverly Pl", "name_de": "Waverly Pl", "name_en": "Waverly Pl", "name_es": "Waverly Pl", "name_fr": "Waverly Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4107837677002, 37.794122290227605 ], [ -122.4112719297409, 37.794062943376915 ] ] }, "properties": { "class": "street", "len": 55.13593564924396, "name": "Shephard Pl", "name_de": "Shephard Pl", "name_en": "Shephard Pl", "name_es": "Shephard Pl", "name_fr": "Shephard Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41750538349152, 37.8042020849539 ], [ -122.41760730743408, 37.80476580072879 ], [ -122.41787552833557, 37.80473189313464 ] ] }, "properties": { "class": "street", "len": 110.53686677023703, "name": "Bret Harte Ter", "name_de": "Bret Harte Ter", "name_en": "Bret Harte Ter", "name_es": "Bret Harte Ter", "name_fr": "Bret Harte Ter", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41694211959839, 37.79707261642332 ], [ -122.41699039936066, 37.797051421971396 ], [ -122.41747856140137, 37.79699207747368 ] ] }, "properties": { "class": "service", "len": 60.969960555721045, "name": "Waldo Alley", "name_de": "Waldo Alley", "name_en": "Waldo Alley", "name_es": "Waldo Alley", "name_fr": "Waldo Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41908252239227, 37.80112064524151 ], [ -122.41913616657257, 37.80140887338821 ], [ -122.4191629886627, 37.80154027114065 ] ] }, "properties": { "class": "street", "len": 59.873315952500604, "name": "Southard Pl", "name_de": "Southard Pl", "name_en": "Southard Pl", "name_es": "Southard Pl", "name_fr": "Southard Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40729689598083, 37.79277001801159 ], [ -122.40738809108734, 37.79321936513004 ] ] }, "properties": { "class": "service", "len": 64.1050590824393, "name": "Brooklyn Pl", "name_de": "Brooklyn Pl", "name_en": "Brooklyn Pl", "name_es": "Brooklyn Pl", "name_fr": "Brooklyn Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40623474121094, 37.79985751451035 ], [ -122.40642786026001, 37.80079002921765 ] ] }, "properties": { "class": "service", "len": 132.946347824966, "name": "Sonoma St", "name_de": "Sonoma St", "name_en": "Sonoma St", "name_es": "Sonoma St", "name_fr": "Sonoma St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4320912361145, 37.7932278433513 ], [ -122.43299782276154, 37.79312186551574 ] ] }, "properties": { "class": "street", "len": 102.28569059297114, "name": "Bromley Pl", "name_de": "Bromley Pl", "name_en": "Bromley Pl", "name_es": "Bromley Pl", "name_fr": "Bromley Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41912007331848, 37.795360085104505 ], [ -122.41926491260529, 37.796072231662805 ] ] }, "properties": { "class": "street", "len": 101.54381320398669, "name": "Morrell St", "name_de": "Morrell St", "name_en": "Morrell St", "name_es": "Morrell St", "name_fr": "Morrell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41090714931488, 37.79639862987445 ], [ -122.4110358953476, 37.79703870529732 ] ] }, "properties": { "class": "service", "len": 91.17872833027445, "name": "Wayne Pl", "name_de": "Wayne Pl", "name_en": "Wayne Pl", "name_es": "Wayne Pl", "name_fr": "Wayne Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41070866584778, 37.79344403766446 ], [ -122.41113245487213, 37.79338469026892 ] ] }, "properties": { "class": "service", "len": 47.86974932083227, "name": "Dawson Pl", "name_de": "Dawson Pl", "name_en": "Dawson Pl", "name_es": "Dawson Pl", "name_fr": "Dawson Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41467833518982, 37.79712348308311 ], [ -122.41482853889467, 37.797831373796456 ] ] }, "properties": { "class": "street", "len": 101.16138838568223, "name": "Florence St", "name_de": "Florence St", "name_en": "Florence St", "name_es": "Florence St", "name_fr": "Florence St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40797817707062, 37.7974032490859 ], [ -122.40856289863586, 37.79733118824711 ] ] }, "properties": { "class": "street", "len": 65.92641958955925, "name": "Stark St", "name_de": "Stark St", "name_en": "Stark St", "name_es": "Stark St", "name_fr": "Stark St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41052627563477, 37.79644949699833 ], [ -122.41059064865114, 37.79676317682161 ] ] }, "properties": { "class": "service", "len": 45.04043183644682, "name": "Keyes Alley", "name_de": "Keyes Alley", "name_en": "Keyes Alley", "name_es": "Keyes Alley", "name_fr": "Keyes Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40887403488159, 37.79665296514357 ], [ -122.40905106067657, 37.79757704258442 ] ] }, "properties": { "class": "service", "len": 131.67094478213505, "name": "Cordelia St", "name_de": "Cordelia St", "name_en": "Cordelia St", "name_es": "Cordelia St", "name_fr": "Cordelia St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41250574588776, 37.80857606745026 ], [ -122.41253256797789, 37.80869049956117 ], [ -122.41253793239592, 37.8087074524514 ], [ -122.41256475448607, 37.80877526397345 ], [ -122.41258621215819, 37.808809169711125 ], [ -122.41262912750243, 37.808830360789244 ], [ -122.41270959377287, 37.80884307543321 ], [ -122.4131280183792, 37.808855790074986 ], [ -122.41430282592772, 37.80888969577567 ], [ -122.41446375846861, 37.80889393398715 ], [ -122.41495192050932, 37.80891088683068 ], [ -122.41509675979613, 37.80892360146078 ], [ -122.41523087024687, 37.80895326892251 ], [ -122.41541326045986, 37.808999889195384 ], [ -122.4157458543777, 37.80904650943884 ], [ -122.41583168506621, 37.80908889145283 ] ] }, "properties": { "class": "street", "len": 400.6582806689901, "name": "Embarcadero North St", "name_de": "Embarcadero North St", "name_en": "Embarcadero North St", "name_es": "Embarcadero North St", "name_fr": "Embarcadero North St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41274178028107, 37.79299469191242 ], [ -122.41438865661621, 37.792786974556215 ] ] }, "properties": { "class": "street", "len": 185.48519644484398, "name": "Pleasant St", "name_de": "Pleasant St", "name_en": "Pleasant St", "name_es": "Pleasant St", "name_fr": "Pleasant St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41860508918762, 37.79269371351246 ], [ -122.41868555545807, 37.79304980050072 ] ] }, "properties": { "class": "service", "len": 50.80455294522635, "name": "Torrens Ct", "name_de": "Torrens Ct", "name_en": "Torrens Ct", "name_es": "Torrens Ct", "name_fr": "Torrens Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4046790599823, 37.79021377439333 ], [ -122.40490436553955, 37.7901883386891 ], [ -122.40541934967041, 37.790120510101644 ], [ -122.40551054477692, 37.790112031523826 ], [ -122.40604698657988, 37.79004420286635 ] ] }, "properties": { "class": "service", "len": 154.3215726572478, "name": "Harlan Pl", "name_de": "Harlan Pl", "name_en": "Harlan Pl", "name_es": "Harlan Pl", "name_fr": "Harlan Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42229580879211, 37.80259144474508 ], [ -122.42238700389862, 37.803053447766 ] ] }, "properties": { "class": "street", "len": 65.90774309573109, "name": "Culebra Ter", "name_de": "Culebra Ter", "name_en": "Culebra Ter", "name_es": "Culebra Ter", "name_fr": "Culebra Ter", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42216169834137, 37.80196413326501 ], [ -122.42223143577576, 37.802387992956945 ], [ -122.42239773273468, 37.80248124176272 ], [ -122.42243528366089, 37.80257449045078 ] ] }, "properties": { "class": "street_limited", "len": 95.9749654139774, "name": "Culebra Ter", "name_de": "Culebra Ter", "name_en": "Culebra Ter", "name_es": "Culebra Ter", "name_fr": "Culebra Ter", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41362690925598, 37.80275674891027 ], [ -122.41371810436249, 37.80322298943413 ] ] }, "properties": { "class": "street", "len": 66.45369214742057, "name": "Newell St", "name_de": "Newell St", "name_en": "Newell St", "name_es": "Newell St", "name_fr": "Newell St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40499019622803, 37.8038333362169 ], [ -122.40418016910553, 37.8039350601903 ] ] }, "properties": { "class": "street", "len": 308.5263858310345, "name": "Lombard St", "name_de": "Lombard St", "name_en": "Lombard St", "name_es": "Lombard St", "name_fr": "Lombard St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4112719297409, 37.7971785885917 ], [ -122.41111636161804, 37.7972040218895 ], [ -122.41084277629852, 37.79726336621694 ], [ -122.41038680076599, 37.79736086036572 ], [ -122.41025805473328, 37.79741596569723 ] ] }, "properties": { "class": "main", "len": 118.01690960727322, "name": "Broadway St", "name_de": "Broadway St", "name_en": "Broadway St", "name_es": "Broadway St", "name_fr": "Broadway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.411288022995, 37.797254888458816 ], [ -122.41180300712585, 37.797187066358596 ], [ -122.41785407066345, 37.79641558558629 ] ] }, "properties": { "class": "main", "len": 740.5066576059138, "name": "Robert C Levy Tunnel", "name_de": "Robert C Levy Tunnel", "name_en": "Robert C Levy Tunnel", "name_es": "Robert C Levy Tunnel", "name_fr": "Robert C Levy Tunnel", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41187274456024, 37.798780869251374 ], [ -122.41194248199463, 37.799141165671685 ] ] }, "properties": { "class": "street", "len": 51.4579022108144, "name": "Eaton Pl", "name_de": "Eaton Pl", "name_en": "Eaton Pl", "name_es": "Eaton Pl", "name_fr": "Eaton Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4362701177597, 37.80081546127204 ], [ -122.43625402450562, 37.800942621412574 ], [ -122.43663489818573, 37.80269317042898 ] ] }, "properties": { "class": "street", "len": 268.32391325299756, "name": "Fillmore St", "name_de": "Fillmore St", "name_en": "Fillmore St", "name_es": "Fillmore St", "name_fr": "Fillmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43555665016174, 37.805689776677475 ], [ -122.4371337890625, 37.80549057183116 ] ] }, "properties": { "class": "street", "len": 202.57158379076972, "name": "Jefferson St", "name_de": "Jefferson St", "name_en": "Jefferson St", "name_es": "Jefferson St", "name_fr": "Jefferson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40782260894775, 37.80348577825057 ], [ -122.40792989730835, 37.803918106204456 ] ] }, "properties": { "class": "service", "len": 62.152613781697326, "name": "Julius St", "name_de": "Julius St", "name_en": "Julius St", "name_es": "Julius St", "name_fr": "Julius St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40486145019531, 37.79763214775467 ], [ -122.40541398525238, 37.797564326000824 ] ] }, "properties": { "class": "service", "len": 62.35144906106222, "name": "Nottingham Pl", "name_de": "Nottingham Pl", "name_en": "Nottingham Pl", "name_es": "Nottingham Pl", "name_fr": "Nottingham Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41745710372925, 37.80800814249806 ], [ -122.4172693490982, 37.807071480609274 ] ] }, "properties": { "class": "street", "len": 133.60301269040772, "name": "Jones St", "name_de": "Jones St", "name_en": "Jones St", "name_es": "Jones St", "name_fr": "Jones St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40821957588196, 37.79141348183073 ], [ -122.40836441516876, 37.79215110146844 ], [ -122.40836441516876, 37.79215957981227 ], [ -122.40836441516876, 37.79217229732622 ], [ -122.40837514400482, 37.792235884863004 ], [ -122.40854680538177, 37.79307099610069 ] ] }, "properties": { "class": "service", "len": 236.40843532348785, "name": "Joice St", "name_de": "Joice St", "name_en": "Joice St", "name_es": "Joice St", "name_fr": "Joice St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40639567375183, 37.79859012337622 ], [ -122.40626156330109, 37.79792886719558 ] ] }, "properties": { "class": "service", "len": 94.8030025896439, "name": "Romolo Pl", "name_de": "Romolo Pl", "name_en": "Romolo Pl", "name_es": "Romolo Pl", "name_fr": "Romolo Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41318702697754, 37.797742357971856 ], [ -122.41366982460022, 37.79767029746383 ] ] }, "properties": { "class": "path", "len": 55.02610289681695, "name": "Fallon Pl", "name_de": "Fallon Pl", "name_en": "Fallon Pl", "name_es": "Fallon Pl", "name_fr": "Fallon Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40675508975983, 37.79076063991673 ], [ -122.40721642971039, 37.790701290365774 ] ] }, "properties": { "class": "service", "len": 51.8639393036333, "name": "Emma St", "name_de": "Emma St", "name_en": "Emma St", "name_es": "Emma St", "name_fr": "Emma St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40525841712952, 37.80093414407668 ], [ -122.4051457643509, 37.800459411713945 ], [ -122.40512967109682, 37.800374637756676 ], [ -122.40506529808046, 37.80002282479424 ] ] }, "properties": { "class": "service", "len": 130.09973736841954, "name": "Castle St", "name_de": "Castle St", "name_en": "Castle St", "name_es": "Castle St", "name_fr": "Castle St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41076231002808, 37.79153217974085 ], [ -122.41120755672455, 37.791477070020576 ] ] }, "properties": { "class": "service", "len": 50.44993756253119, "name": "Nob Hill Pl", "name_de": "Nob Hill Pl", "name_en": "Nob Hill Pl", "name_es": "Nob Hill Pl", "name_fr": "Nob Hill Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4070018529892, 37.79554660034284 ], [ -122.4070930480957, 37.79597473581339 ] ] }, "properties": { "class": "path", "len": 61.51835254609074, "name": "St Louis Alley", "name_de": "St Louis Alley", "name_en": "St Louis Alley", "name_es": "St Louis Alley", "name_fr": "St Louis Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41620719432831, 37.79165935586148 ], [ -122.41629302501678, 37.79208327468276 ], [ -122.41629302501678, 37.79214262312365 ], [ -122.41637349128723, 37.79252838682742 ] ] }, "properties": { "class": "street", "len": 123.97794369943081, "name": "Kimball Pl", "name_de": "Kimball Pl", "name_en": "Kimball Pl", "name_es": "Kimball Pl", "name_fr": "Kimball Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42610991001129, 37.8007434037619 ], [ -122.42656588554382, 37.80055266295457 ] ] }, "properties": { "class": "street", "len": 57.22394079431952, "name": "Blackstone Ct", "name_de": "Blackstone Ct", "name_en": "Blackstone Ct", "name_es": "Blackstone Ct", "name_fr": "Blackstone Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41099834442139, 37.79083694641218 ], [ -122.41109490394592, 37.79129902295112 ] ] }, "properties": { "class": "service", "len": 66.3126873229572, "name": "Vine Ter", "name_de": "Vine Ter", "name_en": "Vine Ter", "name_es": "Vine Ter", "name_fr": "Vine Ter", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41113245487213, 37.79338469026892 ], [ -122.41172790527344, 37.79331262551028 ] ] }, "properties": { "class": "service", "len": 67.01716944092804, "name": "Malvina Pl", "name_de": "Malvina Pl", "name_en": "Malvina Pl", "name_es": "Malvina Pl", "name_fr": "Malvina Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41276323795319, 37.80334166837025 ], [ -122.41285443305969, 37.803807905201644 ] ] }, "properties": { "class": "street", "len": 66.59202354593167, "name": "Venard Alley", "name_de": "Venard Alley", "name_en": "Venard Alley", "name_es": "Venard Alley", "name_fr": "Venard Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40818202495575, 37.792608930643276 ], [ -122.40809619426727, 37.792210449854856 ], [ -122.40809619426727, 37.79219349317789 ] ] }, "properties": { "class": "service", "len": 59.24181348930285, "name": "Pratt Pl", "name_de": "Pratt Pl", "name_en": "Pratt Pl", "name_es": "Pratt Pl", "name_fr": "Pratt Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40714132785797, 37.79028584217449 ], [ -122.40714132785797, 37.79027736361563 ], [ -122.4070394039154, 37.78970081933231 ], [ -122.40699112415315, 37.78942950281888 ] ] }, "properties": { "class": "street", "len": 121.52660704761954, "name": "Stockton St", "name_de": "Stockton St", "name_en": "Stockton St", "name_es": "Stockton St", "name_fr": "Stockton St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4176824092865, 37.79235034229134 ], [ -122.41856753826141, 37.79224012403017 ] ] }, "properties": { "class": "service", "len": 99.50439688777577, "name": "Troy Alley", "name_de": "Troy Alley", "name_en": "Troy Alley", "name_es": "Troy Alley", "name_fr": "Troy Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41667926311493, 37.80044669562654 ], [ -122.41675436496735, 37.80085784800986 ] ] }, "properties": { "class": "street_limited", "len": 58.39296190498385, "name": "Attridge Alley", "name_de": "Attridge Alley", "name_en": "Attridge Alley", "name_es": "Attridge Alley", "name_fr": "Attridge Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41753220558167, 37.79464369265235 ], [ -122.41761803627014, 37.795093028375305 ] ] }, "properties": { "class": "service", "len": 64.06486478531147, "name": "Wall Pl", "name_de": "Wall Pl", "name_en": "Wall Pl", "name_es": "Wall Pl", "name_fr": "Wall Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.79494890212038 ], [ -122.40488290786742, 37.794859882822436 ] ] }, "properties": { "class": "street", "len": 186.69397124710753, "name": "Merchant St", "name_de": "Merchant St", "name_en": "Merchant St", "name_es": "Merchant St", "name_fr": "Merchant St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.805850835522065 ], [ -122.40454494953156, 37.8061136149881 ], [ -122.40576267242432, 37.80676208289539 ] ] }, "properties": { "class": "main", "len": 529.7255041394043, "name": "The Embarcadero", "name_de": "The Embarcadero", "name_en": "The Embarcadero", "name_es": "The Embarcadero", "name_fr": "The Embarcadero", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4195009469986, 37.79722945517852 ], [ -122.41962432861328, 37.79786104571417 ] ] }, "properties": { "class": "street", "len": 89.86199697281107, "name": "White St", "name_de": "White St", "name_en": "White St", "name_es": "White St", "name_fr": "White St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42494583129883, 37.801209656995105 ], [ -122.42472052574158, 37.801218134299376 ], [ -122.42464542388916, 37.801196941036885 ], [ -122.42459177970886, 37.801141838525915 ] ] }, "properties": { "class": "street", "len": 43.47530177388478, "name": "US 101", "name_de": "US 101", "name_en": "US 101", "name_es": "US 101", "name_fr": "US 101", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40595579147339, 37.8046640778996 ], [ -122.4062615633011, 37.8046979855249 ], [ -122.40639030933382, 37.8047191777828 ], [ -122.40649759769441, 37.804748846933656 ], [ -122.40653514862062, 37.80475732383171 ], [ -122.40666389465333, 37.8048039467536 ], [ -122.4067658185959, 37.80485904653247 ], [ -122.40680873394014, 37.804905669390145 ], [ -122.4068570137024, 37.80497348440335 ], [ -122.40695893764497, 37.80549057183118 ], [ -122.40715742111207, 37.80643573047735 ], [ -122.40730226039888, 37.80721982151919 ], [ -122.40738272666931, 37.80734273233311 ] ] }, "properties": { "class": "street", "len": 454.891979511398, "name": "Kearny St", "name_de": "Kearny St", "name_en": "Kearny St", "name_es": "Kearny St", "name_fr": "Kearny St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41692066192627, 37.795220198366735 ], [ -122.41700112819672, 37.79563561881328 ] ] }, "properties": { "class": "service", "len": 59.0410069355471, "name": "Burgoyne St", "name_de": "Burgoyne St", "name_en": "Burgoyne St", "name_es": "Burgoyne St", "name_fr": "Burgoyne St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.79613157689948 ], [ -122.4044269323349, 37.796313851256826 ], [ -122.40450739860533, 37.796373196299385 ], [ -122.40529596805571, 37.79690306063769 ] ] }, "properties": { "class": "main", "len": 293.0610772737953, "name": "Columbus Ave", "name_de": "Columbus Ave", "name_en": "Columbus Ave", "name_es": "Columbus Ave", "name_fr": "Columbus Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41145968437195, 37.79920898597781 ], [ -122.41166353225708, 37.80014574758602 ] ] }, "properties": { "class": "service", "len": 134.41269954879778, "name": "August Alley", "name_de": "August Alley", "name_en": "August Alley", "name_es": "August Alley", "name_fr": "August Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40732908248901, 37.795945063138014 ], [ -122.40742027759552, 37.796377435229154 ] ] }, "properties": { "class": "path", "len": 61.86181455485705, "name": "Jason Ct", "name_de": "Jason Ct", "name_en": "Jason Ct", "name_es": "Jason Ct", "name_fr": "Jason Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40985572338104, 37.80371041956209 ], [ -122.41029024124146, 37.80365955743819 ] ] }, "properties": { "class": "service", "len": 48.38889128704392, "name": "Fielding St", "name_de": "Fielding St", "name_en": "Fielding St", "name_es": "Fielding St", "name_fr": "Fielding St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40762412548065, 37.79680980478974 ], [ -122.40768849849701, 37.79713619974259 ] ] }, "properties": { "class": "street", "len": 46.16832788890606, "name": "Pelton Pl", "name_de": "Pelton Pl", "name_en": "Pelton Pl", "name_es": "Pelton Pl", "name_fr": "Pelton Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4299830198288, 37.78650430839168 ], [ -122.43017077445984, 37.78744123109506 ], [ -122.43035852909088, 37.78836966314214 ], [ -122.43055164813995, 37.78932775886948 ], [ -122.430739402771, 37.79025616721429 ], [ -122.43091642856598, 37.79113369314532 ], [ -122.43109345436096, 37.79201120865472 ], [ -122.43126511573792, 37.79289295287215 ], [ -122.43138313293457, 37.79344827676231 ], [ -122.43145287036896, 37.793770447487695 ], [ -122.43163526058197, 37.79468608293166 ], [ -122.43182301521301, 37.79564409675727 ], [ -122.43201076984406, 37.79657666465477 ], [ -122.43220388889311, 37.79750922077997 ], [ -122.43239164352416, 37.798441765132765 ], [ -122.43248283863066, 37.798908032894516 ], [ -122.43255794048308, 37.79928528374775 ], [ -122.4325793981552, 37.79937429771308 ], [ -122.43260085582732, 37.79946331157114 ], [ -122.43269205093382, 37.79983632085744 ], [ -122.43275105953215, 37.80014150887248 ], [ -122.43276715278624, 37.800213566969795 ] ] }, "properties": { "class": "street", "len": 1956.0814192906666, "name": "Buchanan St", "name_de": "Buchanan St", "name_en": "Buchanan St", "name_es": "Buchanan St", "name_fr": "Buchanan St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42468297481537, 37.785279083856395 ], [ -122.42453277111052, 37.78527484428987 ], [ -122.42444157600401, 37.785266365156076 ], [ -122.42435038089752, 37.78524940688557 ], [ -122.42424845695496, 37.78521972990284 ], [ -122.42417871952057, 37.78518157376468 ], [ -122.42401242256165, 37.78508830312183 ], [ -122.42386221885681, 37.78497807402849 ], [ -122.42356717586516, 37.78474065696133 ], [ -122.42343306541443, 37.784647385762014 ], [ -122.423357963562, 37.78461346893308 ], [ -122.42327213287352, 37.78457955208857 ], [ -122.42315411567687, 37.78454563522852 ], [ -122.42304146289824, 37.78452867679263 ], [ -122.42293953895567, 37.78453291640197 ], [ -122.42283761501311, 37.78454139561992 ] ] }, "properties": { "class": "main", "len": 240.6820203376815, "name": "Starr King Way", "name_de": "Starr King Way", "name_en": "Starr King Way", "name_es": "Starr King Way", "name_fr": "Starr King Way", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40979135036469, 37.78667388804195 ], [ -122.40943729877472, 37.78671628289371 ], [ -122.40933537483215, 37.78626689622757 ] ] }, "properties": { "class": "service", "len": 104.69671450344367, "name": "Elwood St", "name_de": "Elwood St", "name_en": "Elwood St", "name_es": "Elwood St", "name_fr": "Elwood St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40793526172638, 37.789870391647334 ], [ -122.4080103635788, 37.79027736361563 ] ] }, "properties": { "class": "street", "len": 58.154449528707914, "name": "Chelsea Pl", "name_de": "Chelsea Pl", "name_en": "Chelsea Pl", "name_es": "Chelsea Pl", "name_fr": "Chelsea Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41567611694336, 37.78545714543098 ], [ -122.41574048995972, 37.785787830074185 ], [ -122.4157726764679, 37.78592349514079 ] ] }, "properties": { "class": "street", "len": 66.28318559099694, "name": "Ada Ct", "name_de": "Ada Ct", "name_en": "Ada Ct", "name_es": "Ada Ct", "name_fr": "Ada Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43379175662994, 37.78441844686463 ], [ -122.43390440940857, 37.78505014691581 ] ] }, "properties": { "class": "street", "len": 89.89039214564565, "name": "Avery St", "name_de": "Avery St", "name_en": "Avery St", "name_es": "Avery St", "name_fr": "Avery St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40541934967041, 37.78443964494047 ], [ -122.4047863483429, 37.78493567817956 ] ] }, "properties": { "class": "street", "len": 99.67455843892422, "name": "Jessie St", "name_de": "Jessie St", "name_en": "Jessie St", "name_es": "Jessie St", "name_fr": "Jessie St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40434646606445, 37.78881055829413 ], [ -122.40444302558899, 37.78927688684228 ] ] }, "properties": { "class": "street", "len": 66.6413595301592, "name": "Robert Kirk Ln", "name_de": "Robert Kirk Ln", "name_en": "Robert Kirk Ln", "name_es": "Robert Kirk Ln", "name_fr": "Robert Kirk Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40994155406952, 37.78742851276689 ], [ -122.41003811359407, 37.78741579443648 ], [ -122.4105155467987, 37.787356442199 ] ] }, "properties": { "class": "street", "len": 64.64616384897994, "name": "Derby St", "name_de": "Derby St", "name_en": "Derby St", "name_es": "Derby St", "name_fr": "Derby St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41157233715057, 37.78722077976294 ], [ -122.41098761558533, 37.787297089913864 ] ] }, "properties": { "class": "street", "len": 66.30789168628041, "name": "Derby St", "name_de": "Derby St", "name_en": "Derby St", "name_es": "Derby St", "name_fr": "Derby St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40531206130981, 37.78916242465299 ], [ -122.40688383579254, 37.78897589329795 ] ] }, "properties": { "class": "service", "len": 176.7976000965923, "name": "Campton Pl", "name_de": "Campton Pl", "name_en": "Campton Pl", "name_es": "Campton Pl", "name_fr": "Campton Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4371337890625, 37.78464314615926 ], [ -122.43636667728424, 37.78473641736392 ], [ -122.43472516536713, 37.7849483969368 ] ] }, "properties": { "class": "street", "len": 1272.9898772454203, "name": "Post St", "name_de": "Post St", "name_en": "Post St", "name_es": "Post St", "name_fr": "Post St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40440011024475, 37.790714008130706 ], [ -122.40421235561371, 37.789785605538455 ] ] }, "properties": { "class": "street", "len": 132.73159721801204, "name": "Claude Ln", "name_de": "Claude Ln", "name_en": "Claude Ln", "name_es": "Claude Ln", "name_fr": "Claude Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42782652378082, 37.78418102799973 ], [ -122.42857754230499, 37.78409199572878 ], [ -122.42884039878845, 37.784062318281286 ], [ -122.42954313755035, 37.78399024443063 ], [ -122.43060529232025, 37.78386729475848 ] ] }, "properties": { "class": "street_limited", "len": 311.94538997496045, "name": "Western Shore Ln", "name_de": "Western Shore Ln", "name_en": "Western Shore Ln", "name_es": "Western Shore Ln", "name_fr": "Western Shore Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40474343299866, 37.78568608111079 ], [ -122.4052369594574, 37.7853002816854 ] ] }, "properties": { "class": "street", "len": 77.62201814019302, "name": "Stevenson St", "name_de": "Stevenson St", "name_en": "Stevenson St", "name_es": "Stevenson St", "name_fr": "Stevenson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4128919839859, 37.78744123109508 ], [ -122.41329967975616, 37.787386118323695 ] ] }, "properties": { "class": "service", "len": 46.04519193203097, "name": "Colin Pl", "name_de": "Colin Pl", "name_en": "Colin Pl", "name_es": "Colin Pl", "name_fr": "Colin Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42117464542389, 37.78428701865866 ], [ -122.42274641990662, 37.78408775609415 ] ] }, "properties": { "class": "service", "len": 177.44782134531096, "name": "Olive St", "name_de": "Olive St", "name_en": "Olive St", "name_es": "Olive St", "name_fr": "Olive St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42101907730103, 37.78430397714999 ], [ -122.41946339607237, 37.78450323913154 ], [ -122.4178111553192, 37.78471097977434 ] ] }, "properties": { "class": "service", "len": 362.12530462541554, "name": "Olive St", "name_de": "Olive St", "name_en": "Olive St", "name_es": "Olive St", "name_fr": "Olive St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41287589073181, 37.785329958635764 ], [ -122.41299390792847, 37.7853172399442 ], [ -122.41393804550171, 37.78519853205076 ] ] }, "properties": { "class": "service", "len": 119.63500167919395, "name": "Antonio St", "name_de": "Antonio St", "name_en": "Antonio St", "name_es": "Antonio St", "name_fr": "Antonio St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.405344247818, 37.789315040865986 ], [ -122.40573048591614, 37.78926840816768 ], [ -122.40571439266205, 37.78920481807708 ] ] }, "properties": { "class": "street_limited", "len": 52.307382220634594, "name": "Tillman Pl", "name_de": "Tillman Pl", "name_en": "Tillman Pl", "name_es": "Tillman Pl", "name_fr": "Tillman Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4082088470459, 37.78992550256591 ], [ -122.40874528884888, 37.78985767373719 ] ] }, "properties": { "class": "service", "len": 60.89923809061345, "name": "Anson Pl", "name_de": "Anson Pl", "name_en": "Anson Pl", "name_es": "Anson Pl", "name_fr": "Anson Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41230189800262, 37.785440187204266 ], [ -122.41277396678925, 37.785380833380124 ], [ -122.41288661956787, 37.78536811469731 ] ] }, "properties": { "class": "service", "len": 65.40454476316583, "name": "Steveloe Pl", "name_de": "Steveloe Pl", "name_en": "Steveloe Pl", "name_es": "Steveloe Pl", "name_fr": "Steveloe Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42193639278412, 37.788000835369274 ], [ -122.42350280284882, 37.787805822239655 ], [ -122.42514431476593, 37.78759809029636 ] ] }, "properties": { "class": "service", "len": 361.6678602508423, "name": "Fern St", "name_de": "Fern St", "name_en": "Fern St", "name_es": "Fern St", "name_fr": "Fern St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42177546024323, 37.7880177930084 ], [ -122.42021441459656, 37.788225523771885 ], [ -122.41856217384338, 37.78843325395139 ] ] }, "properties": { "class": "service", "len": 362.80110273447985, "name": "Fern St", "name_de": "Fern St", "name_en": "Fern St", "name_es": "Fern St", "name_fr": "Fern St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42874383926392, 37.784787292516874 ], [ -122.42857754230499, 37.78409199572878 ] ] }, "properties": { "class": "street_limited", "len": 99.77217096920332, "name": "Lottie Bennett Ln", "name_de": "Lottie Bennett Ln", "name_en": "Lottie Bennett Ln", "name_es": "Lottie Bennett Ln", "name_fr": "Lottie Bennett Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4213033914566, 37.785694560196426 ], [ -122.4214643239975, 37.78567760202419 ], [ -122.42171108722687, 37.78564792521341 ], [ -122.42302536964417, 37.785474103653804 ], [ -122.42356717586517, 37.785393552060754 ], [ -122.4238407611847, 37.78536811469731 ], [ -122.4240928888321, 37.785372354258485 ], [ -122.42433428764345, 37.785397791620454 ], [ -122.42452204227449, 37.785406270739166 ], [ -122.42471516132356, 37.78541898941539 ] ] }, "properties": { "class": "main", "len": 384.3998551210367, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43541181087494, 37.783930889442026 ], [ -122.4347198009491, 37.78399448407086 ], [ -122.43453741073608, 37.78401144262929 ] ] }, "properties": { "class": "street", "len": 97.80844382981046, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4314421415329, 37.78461770853756 ], [ -122.43446230888367, 37.784231903535 ] ] }, "properties": { "class": "main", "len": 341.1990518745154, "name": "Geary Blvd", "name_de": "Geary Blvd", "name_en": "Geary Blvd", "name_es": "Geary Blvd", "name_fr": "Geary Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43190884590149, 37.787699836627255 ], [ -122.4335503578186, 37.787487864946456 ], [ -122.43519723415375, 37.78727589265764 ] ] }, "properties": { "class": "street", "len": 370.9240586785205, "name": "Wilmot St", "name_de": "Wilmot St", "name_en": "Wilmot St", "name_es": "Wilmot St", "name_fr": "Wilmot St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41762340068817, 37.78377826210958 ], [ -122.41791844367982, 37.78374434488178 ] ] }, "properties": { "class": "service", "len": 186.21791320864656, "name": "Willow St", "name_de": "Willow St", "name_en": "Willow St", "name_es": "Willow St", "name_fr": "Willow St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42884039878845, 37.784062318281286 ], [ -122.42900133132935, 37.78475337575214 ] ] }, "properties": { "class": "street_limited", "len": 99.27741183229244, "name": "Bertie Minor Ln", "name_de": "Bertie Minor Ln", "name_en": "Bertie Minor Ln", "name_es": "Bertie Minor Ln", "name_fr": "Bertie Minor Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4046790599823, 37.79021377439333 ], [ -122.4047702550888, 37.79066737631527 ] ] }, "properties": { "class": "service", "len": 64.68496115748317, "name": "Mark Ln", "name_de": "Mark Ln", "name_en": "Mark Ln", "name_es": "Mark Ln", "name_fr": "Mark Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4043357372284, 37.79072248663947 ], [ -122.40452885627745, 37.79165511666101 ] ] }, "properties": { "class": "street", "len": 132.7430770321996, "name": "St George Alley", "name_de": "St George Alley", "name_en": "St George Alley", "name_es": "St George Alley", "name_fr": "St George Alley", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.788361184363445 ], [ -122.40513503551483, 37.788242481359454 ] ] }, "properties": { "class": "street", "len": 174.3184663189849, "name": "Maiden Ln", "name_de": "Maiden Ln", "name_en": "Maiden Ln", "name_es": "Maiden Ln", "name_fr": "Maiden Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42174863815308, 37.787080877614905 ], [ -122.42330968379974, 37.786868904158666 ] ] }, "properties": { "class": "service", "len": 176.37711019437333, "name": "Daniel Burnham Ct", "name_de": "Daniel Burnham Ct", "name_en": "Daniel Burnham Ct", "name_es": "Daniel Burnham Ct", "name_fr": "Daniel Burnham Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43282079696655, 37.7880559476822 ], [ -122.43301391601562, 37.78901404747704 ] ] }, "properties": { "class": "street", "len": 136.36240684315945, "name": "Orben Pl", "name_de": "Orben Pl", "name_en": "Orben Pl", "name_es": "Orben Pl", "name_fr": "Orben Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42471516132355, 37.78541898941539 ], [ -122.42454886436462, 37.785520738746506 ], [ -122.42439866065978, 37.785554655159096 ], [ -122.42424309253691, 37.78562248793755 ], [ -122.4241143465042, 37.78571575790625 ], [ -122.42371737957, 37.78614395034285 ], [ -122.42360472679137, 37.78625841720761 ], [ -122.42356181144713, 37.78636016538299 ] ] }, "properties": { "class": "street", "len": 190.34403875146563, "name": "Peter Yorke Way", "name_de": "Peter Yorke Way", "name_en": "Peter Yorke Way", "name_es": "Peter Yorke Way", "name_fr": "Peter Yorke Way", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41176009178162, 37.78815345398132 ], [ -122.41239309310913, 37.78807290530868 ], [ -122.4127846956253, 37.78802627182651 ], [ -122.41341233253479, 37.78794572301525 ] ] }, "properties": { "class": "service", "len": 186.62898058156162, "name": "Cosmo Pl", "name_de": "Cosmo Pl", "name_en": "Cosmo Pl", "name_es": "Cosmo Pl", "name_fr": "Cosmo Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41215169429779, 37.785910776551354 ], [ -122.41235017776489, 37.78684770677962 ], [ -122.41254329681395, 37.78776766743669 ] ] }, "properties": { "class": "service", "len": 265.24167747082606, "name": "Shannon St", "name_de": "Shannon St", "name_en": "Shannon St", "name_es": "Shannon St", "name_fr": "Shannon St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43636667728424, 37.78473641736392 ], [ -122.43655443191528, 37.785669122936596 ], [ -122.43674218654633, 37.786601816738134 ], [ -122.43692994117737, 37.78753449876839 ], [ -122.43712842464447, 37.78848836594184 ], [ -122.4371337890625, 37.78851380223124 ] ] }, "properties": { "class": "street", "len": 793.0822708243238, "name": "Pierce St", "name_de": "Pierce St", "name_en": "Pierce St", "name_es": "Pierce St", "name_fr": "Pierce St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41424918174744, 37.78374434488178 ], [ -122.41443157196045, 37.78466010456885 ], [ -122.41452276706696, 37.78510526142928 ], [ -122.41461932659149, 37.785592811104614 ], [ -122.41480708122253, 37.7865212663742 ], [ -122.41500020027159, 37.78745818886262 ], [ -122.41518795490263, 37.78839086008464 ], [ -122.4153810739517, 37.78934471620411 ], [ -122.41557419300078, 37.79025616721426 ], [ -122.4156868457794, 37.79081151092244 ], [ -122.41575121879576, 37.791116736221234 ], [ -122.41576731204982, 37.791209999255486 ] ] }, "properties": { "class": "street", "len": 1465.902447961873, "name": "Leavenworth St", "name_de": "Leavenworth St", "name_en": "Leavenworth St", "name_es": "Leavenworth St", "name_fr": "Leavenworth St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43557810783386, 37.78917514268277 ], [ -122.43713378906251, 37.78897589329795 ] ] }, "properties": { "class": "street", "len": 185.37523135522827, "name": "Perine Pl", "name_de": "Perine Pl", "name_en": "Perine Pl", "name_es": "Perine Pl", "name_fr": "Perine Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42369055747986, 37.78874696780958 ], [ -122.42212414741516, 37.78894197845551 ] ] }, "properties": { "class": "service", "len": 176.504996529051, "name": "Austin St", "name_de": "Austin St", "name_en": "Austin St", "name_es": "Austin St", "name_fr": "Austin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4219685792923, 37.78896741458879 ], [ -122.42040216922759, 37.78916666399649 ], [ -122.41875529289244, 37.7893786308617 ] ] }, "properties": { "class": "service", "len": 362.7780641879029, "name": "Austin St", "name_de": "Austin St", "name_en": "Austin St", "name_es": "Austin St", "name_fr": "Austin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43222534656525, 37.786224501118014 ], [ -122.43240773677826, 37.78714870899247 ] ] }, "properties": { "class": "path", "len": 131.81254720279276, "name": "Cottage Row", "name_de": "Cottage Row", "name_en": "Cottage Row", "name_es": "Cottage Row", "name_fr": "Cottage Row", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42159843444824, 37.787102074927084 ], [ -122.4200212955475, 37.78728013210937 ], [ -122.41836905479433, 37.787487864946456 ] ] }, "properties": { "class": "service", "len": 363.4626556619211, "name": "Hemlock St", "name_de": "Hemlock St", "name_en": "Hemlock St", "name_es": "Hemlock St", "name_fr": "Hemlock St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42778360843658, 37.783926649798154 ], [ -122.42633521556854, 37.78410895426485 ], [ -122.42627084255219, 37.784138631693594 ], [ -122.4262547492981, 37.784193746886835 ], [ -122.42643177509309, 37.785079823966655 ] ] }, "properties": { "class": "street", "len": 305.94004941331576, "name": "Cleary Ct", "name_de": "Cleary Ct", "name_en": "Cleary Ct", "name_es": "Cleary Ct", "name_fr": "Cleary Ct", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42136240005493, 37.78521549033291 ], [ -122.42293417453766, 37.7850162302717 ] ] }, "properties": { "class": "street", "len": 177.46998985809063, "name": "Myrtle St", "name_de": "Myrtle St", "name_en": "Myrtle St", "name_es": "Myrtle St", "name_fr": "Myrtle St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42121756076813, 37.78523668818016 ], [ -122.41965115070342, 37.78543594764699 ], [ -122.41799890995026, 37.785643685668035 ] ] }, "properties": { "class": "service", "len": 363.0500218133764, "name": "Myrtle St", "name_de": "Myrtle St", "name_en": "Myrtle St", "name_es": "Myrtle St", "name_fr": "Myrtle St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41689920425415, 37.78675867772114 ], [ -122.41697430610657, 37.787110553850255 ], [ -122.41699039936066, 37.78720382194092 ] ] }, "properties": { "class": "street_limited", "len": 63.67390853814074, "name": "Meacham Pl", "name_de": "Meacham Pl", "name_en": "Meacham Pl", "name_es": "Meacham Pl", "name_fr": "Meacham Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41468906402588, 37.78418102799973 ], [ -122.41478025913239, 37.78461346893308 ] ] }, "properties": { "class": "street", "len": 61.940650626457945, "name": "Cohen Pl", "name_de": "Cohen Pl", "name_en": "Cohen Pl", "name_es": "Cohen Pl", "name_fr": "Cohen Pl", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42825031280518, 37.78626265671772 ], [ -122.42896914482117, 37.78618210598413 ] ] }, "properties": { "class": "street", "len": 80.42590689447029, "name": "Hemlock St", "name_de": "Hemlock St", "name_en": "Hemlock St", "name_es": "Hemlock St", "name_fr": "Hemlock St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41186201572418, 37.80536341952066 ], [ -122.41351962089539, 37.80515573694268 ] ] }, "properties": { "class": "street", "len": 186.9047548890102, "name": "Vandewater St", "name_de": "Vandewater St", "name_en": "Vandewater St", "name_es": "Vandewater St", "name_fr": "Vandewater St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40576267242432, 37.80676208289539 ], [ -122.40596115589142, 37.80662645609157 ] ] }, "properties": { "class": "main", "len": 29.420489458901464, "name": "Bay St", "name_de": "Bay St", "name_en": "Bay St", "name_es": "Bay St", "name_fr": "Bay St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40537643432617, 37.80567282309445 ], [ -122.40544617176056, 37.805689776677475 ], [ -122.40610599517822, 37.80560077032319 ], [ -122.40695893764496, 37.80549057183116 ] ] }, "properties": { "class": "street", "len": 178.97101766940898, "name": "Francisco St", "name_de": "Francisco St", "name_en": "Francisco St", "name_es": "Francisco St", "name_fr": "Francisco St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4095070362091, 37.80613480683977 ], [ -122.40931928157806, 37.80520659803617 ] ] }, "properties": { "class": "street", "len": 133.10344435826693, "name": "Midway St", "name_de": "Midway St", "name_en": "Midway St", "name_es": "Midway St", "name_fr": "Midway St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40911543369293, 37.808135290254896 ], [ -122.40899205207825, 37.80805476336766 ], [ -122.40886867046356, 37.808016619022 ], [ -122.40766167640686, 37.807495310989914 ], [ -122.40755438804626, 37.807444451472676 ], [ -122.40738272666931, 37.80734273233311 ] ] }, "properties": { "class": "street", "len": 223.6784018579254, "name": "The Embarcadero", "name_de": "The Embarcadero", "name_en": "The Embarcadero", "name_es": "The Embarcadero", "name_fr": "The Embarcadero", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40738272666931, 37.80734273233311 ], [ -122.40713059902191, 37.807202868287426 ], [ -122.40708231925966, 37.80717743843246 ], [ -122.40614891052248, 37.80671546120967 ], [ -122.40614354610445, 37.80671122287313 ], [ -122.40596115589146, 37.80662645609157 ] ] }, "properties": { "class": "main", "len": 187.63943289268616, "name": "The Embarcadero", "name_de": "The Embarcadero", "name_en": "The Embarcadero", "name_es": "The Embarcadero", "name_fr": "The Embarcadero", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43159770965576, 37.78688586205755 ], [ -122.431640625, 37.78717838520059 ], [ -122.43154406547546, 37.78726741375342 ] ] }, "properties": { "class": "main", "len": 57.58368741715442, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41539716720581, 37.7977593133753 ], [ -122.41703867912292, 37.79755160941504 ], [ -122.4186909198761, 37.797339665996496 ], [ -122.4195009469986, 37.79722945517852 ], [ -122.42031633853912, 37.797110766421454 ], [ -122.42196321487427, 37.79690306063772 ], [ -122.42352962493898, 37.79669959318127 ] ] }, "properties": { "class": "street", "len": 917.3084934182016, "name": "Vallejo St", "name_de": "Vallejo St", "name_en": "Vallejo St", "name_es": "Vallejo St", "name_fr": "Vallejo St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4264532327652, 37.78599980663131 ], [ -122.42649078369139, 37.786194824526845 ], [ -122.42651224136351, 37.78631353082002 ], [ -122.42646932601927, 37.78631777032694 ], [ -122.42657124996184, 37.78684346730307 ], [ -122.42665708065032, 37.78683498834927 ], [ -122.4266731739044, 37.78692825678771 ] ] }, "properties": { "class": "path", "len": 147.8650025763167, "name": "Octavia", "name_de": "Octavia", "name_en": "Octavia", "name_es": "Octavia", "name_fr": "Octavia", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.432000041008, 37.788161932783865 ], [ -122.43190884590149, 37.787699836627255 ], [ -122.43181228637695, 37.78723349812689 ] ] }, "properties": { "class": "main", "len": 132.42041674862776, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42233872413635, 37.79877239166739 ], [ -122.42244601249696, 37.79875967528956 ], [ -122.4237871170044, 37.79857740696702 ], [ -122.42390513420106, 37.79856469055563 ], [ -122.42406070232393, 37.79854349653181 ] ] }, "properties": { "class": "street", "len": 194.08371844381782, "name": "Union St", "name_de": "Union St", "name_en": "Union St", "name_es": "Union St", "name_fr": "Union St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41658806800842, 37.79902671876394 ], [ -122.41731226444244, 37.79894618194477 ] ] }, "properties": { "class": "street", "len": 81.71896352755662, "name": "Macondray Ln", "name_de": "Macondray Ln", "name_en": "Macondray Ln", "name_es": "Macondray Ln", "name_fr": "Macondray Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.793622079565 ], [ -122.40461468696594, 37.79356273231249 ], [ -122.40612208843231, 37.79337621206568 ], [ -122.40664243698119, 37.79331262551028 ], [ -122.407146692276, 37.79324903890016 ], [ -122.40727543830872, 37.79323208246155 ], [ -122.40738809108734, 37.79321936513004 ], [ -122.40771532058716, 37.79317697400918 ], [ -122.40854680538177, 37.79307099610066 ], [ -122.40902423858643, 37.79300317015943 ], [ -122.40934610366821, 37.79296077891453 ], [ -122.4093621969223, 37.79296077891453 ], [ -122.40937829017638, 37.792956539788705 ], [ -122.40971088409422, 37.792922626773326 ], [ -122.4110037088394, 37.792765778874795 ], [ -122.41112172603607, 37.79273610491057 ], [ -122.41190493106842, 37.792634365514225 ], [ -122.4122428894043, 37.79259197405773 ], [ -122.41265058517457, 37.79254110427786 ], [ -122.41429746150972, 37.79233762480803 ], [ -122.41511821746828, 37.79223588486298 ], [ -122.41552591323854, 37.79218077566758 ], [ -122.41594970226288, 37.79212990560456 ], [ -122.41629302501678, 37.79208327468274 ], [ -122.41760194301605, 37.79192642500233 ], [ -122.4192327260971, 37.791701747853054 ], [ -122.42088496685028, 37.79149402686194 ], [ -122.42244064807892, 37.79130750139271 ], [ -122.42259621620178, 37.79129054450852 ], [ -122.42415189743042, 37.79109130082781 ], [ -122.42580950260164, 37.790879338875534 ] ] }, "properties": { "class": "street", "len": 3287.365366319779, "name": "Sacramento St", "name_de": "Sacramento St", "name_en": "Sacramento St", "name_es": "Sacramento St", "name_fr": "Sacramento St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40522623062134, 37.78869609538249 ], [ -122.40434646606447, 37.78881055829413 ], [ -122.40418016910554, 37.78883175511017 ] ] }, "properties": { "class": "street", "len": 173.9752821090882, "name": "Post St", "name_de": "Post St", "name_en": "Post St", "name_es": "Post St", "name_fr": "Post St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.791362611239464 ], [ -122.40424454212189, 37.79168903025815 ], [ -122.40435183048248, 37.792218928191865 ], [ -122.40444302558899, 37.79265556123338 ], [ -122.40461468696594, 37.79356273231249 ], [ -122.40471124649049, 37.794024791804866 ], [ -122.40479707717897, 37.79445293609456 ] ] }, "properties": { "class": "main", "len": 527.1476029032497, "name": "Kearny St", "name_de": "Kearny St", "name_en": "Kearny St", "name_es": "Kearny St", "name_fr": "Kearny St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.79724641069967 ], [ -122.4041962623596, 37.79724217181975 ], [ -122.40477561950682, 37.79717011082383 ], [ -122.40532815456389, 37.79709804975758 ], [ -122.40553736686705, 37.79707261642332 ], [ -122.40652978420258, 37.79694968851756 ], [ -122.40683019161224, 37.79691153843622 ], [ -122.40762412548065, 37.79680980478974 ], [ -122.40843415260315, 37.79670807100316 ], [ -122.40874528884888, 37.796669920797065 ], [ -122.40887403488159, 37.79665296514357 ], [ -122.40926027297974, 37.79660633707646 ], [ -122.41009712219238, 37.79650036408717 ] ] }, "properties": { "class": "street", "len": 907.8464553349108, "name": "Pacific Ave", "name_de": "Pacific Ave", "name_en": "Pacific Ave", "name_es": "Pacific Ave", "name_fr": "Pacific Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.79408413868621 ], [ -122.40471124649048, 37.794024791804866 ], [ -122.40621328353882, 37.793834033649055 ] ] }, "properties": { "class": "service", "len": 541.7946597217881, "name": "Commercial St", "name_de": "Commercial St", "name_en": "Commercial St", "name_es": "Commercial St", "name_fr": "Commercial St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40418016910553, 37.78709359600294 ], [ -122.40460932254791, 37.78675019875761 ], [ -122.40508139133453, 37.786377123398616 ], [ -122.4059182405472, 37.78571575790625 ], [ -122.40736126899719, 37.78457955208857 ], [ -122.4079352617264, 37.78412591279702 ], [ -122.40809082984924, 37.78400296335056 ], [ -122.40840196609497, 37.78375706384402 ], [ -122.40842342376709, 37.78374434488178 ] ] }, "properties": { "class": "main", "len": 891.4288760387328, "name": "Market St", "name_de": "Market St", "name_en": "Market St", "name_es": "Market St", "name_fr": "Market St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40622937679291, 37.78571575790625 ], [ -122.40616500377655, 37.785703039281096 ], [ -122.40612208843231, 37.785698799738874 ], [ -122.40606307983398, 37.785698799738874 ], [ -122.40591824054718, 37.78571575790625 ], [ -122.40586996078491, 37.78571575790625 ], [ -122.40582704544067, 37.78571151836477 ], [ -122.40577340126038, 37.785703039281096 ], [ -122.40573585033417, 37.78568608111079 ], [ -122.40569293498993, 37.78566064384806 ], [ -122.4052369594574, 37.7853002816854 ], [ -122.4047863483429, 37.784935678179586 ], [ -122.40426063537598, 37.784490520297716 ], [ -122.40418016910554, 37.784426926095676 ] ] }, "properties": { "class": "main", "len": 1023.8620893001719, "name": "4th St", "name_de": "4th St", "name_en": "4th St", "name_es": "4th St", "name_fr": "4th St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40508139133453, 37.786377123398616 ], [ -122.40418016910554, 37.78565216475853 ] ] }, "properties": { "class": "street_limited", "len": 247.80509464777072, "name": "Yerba Buena Ln", "name_de": "Yerba Buena Ln", "name_en": "Yerba Buena Ln", "name_es": "Yerba Buena Ln", "name_fr": "Yerba Buena Ln", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42580950260162, 37.79087933887559 ], [ -122.42745101451874, 37.79066737631527 ], [ -122.42754757404327, 37.790658897800206 ], [ -122.42909252643585, 37.79045965241627 ], [ -122.430739402771, 37.79025616721429 ], [ -122.43238091468811, 37.79004420286635 ], [ -122.43348062038422, 37.78991278466528 ], [ -122.43360936641693, 37.789895827461 ], [ -122.43402242660522, 37.78984071652026 ], [ -122.43566930294037, 37.78963299029734 ] ] }, "properties": { "class": "street", "len": 1112.6142921479545, "name": "Sacramento St", "name_de": "Sacramento St", "name_en": "Sacramento St", "name_es": "Sacramento St", "name_fr": "Sacramento St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42782652378082, 37.80084513199106 ], [ -122.42781043052673, 37.80076459715455 ], [ -122.42767095565796, 37.80006521198694 ], [ -122.4276602268219, 37.80000163118878 ], [ -122.42764413356781, 37.79992957288471 ], [ -122.42746710777283, 37.79906910652822 ], [ -122.42727935314178, 37.79813657009509 ], [ -122.42709159851074, 37.7972040218895 ], [ -122.42690920829773, 37.796275700847126 ], [ -122.42671072483063, 37.79532193420228 ], [ -122.42660343647003, 37.79479205852346 ], [ -122.42652833461761, 37.79440206759597 ], [ -122.42636740207672, 37.79362631865265 ], [ -122.42632985115051, 37.79351610229493 ], [ -122.42629766464233, 37.79343132036946 ], [ -122.42616355419159, 37.7927784962844 ], [ -122.42615282535553, 37.79263860465857 ], [ -122.42614209651947, 37.79250719107183 ], [ -122.42600798606873, 37.79188403313971 ], [ -122.42598116397858, 37.79176109660045 ] ] }, "properties": { "class": "street", "len": 1296.954226786087, "name": "Gough St", "name_de": "Gough St", "name_en": "Gough St", "name_es": "Gough St", "name_fr": "Gough St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42398023605347, 37.79016290297611 ], [ -122.42561638355255, 37.7899551776589 ], [ -122.4272632598877, 37.78974321244753 ], [ -122.42891013622285, 37.789535485950495 ], [ -122.43055164813995, 37.78932775886951 ], [ -122.43219316005707, 37.78911579185838 ], [ -122.43301391601562, 37.78901404747707 ], [ -122.43383467197418, 37.78890806359755 ], [ -122.43548154830933, 37.78870033475278 ] ] }, "properties": { "class": "street", "len": 1297.8672409845715, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42598116397858, 37.791761096600425 ], [ -122.42580950260162, 37.79087933887556 ] ] }, "properties": { "class": "street", "len": 125.24834929052936, "name": "Gough St", "name_de": "Gough St", "name_en": "Gough St", "name_es": "Gough St", "name_fr": "Gough St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43566930294037, 37.78963299029734 ], [ -122.43557810783386, 37.78917514268277 ], [ -122.43548154830933, 37.78870033475276 ] ] }, "properties": { "class": "street", "len": 132.9305839748242, "name": "Steiner St", "name_de": "Steiner St", "name_en": "Steiner St", "name_es": "Steiner St", "name_fr": "Steiner St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43548154830933, 37.78870033475276 ], [ -122.43528842926025, 37.78774223089045 ], [ -122.43519723415376, 37.78727589265761 ], [ -122.43510067462921, 37.78681379096045 ], [ -122.43491291999817, 37.785876860302224 ] ] }, "properties": { "class": "street", "len": 402.3593321339213, "name": "Steiner St", "name_de": "Steiner St", "name_en": "Steiner St", "name_es": "Steiner St", "name_fr": "Steiner St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4250477552414, 37.78713175115391 ], [ -122.42667317390442, 37.78692825678771 ], [ -122.42673218250275, 37.78691977784362 ], [ -122.42786943912506, 37.78677563564531 ], [ -122.42833614349365, 37.78671628289368 ] ] }, "properties": { "class": "street", "len": 370.8120509786245, "name": "Sutter St", "name_de": "Sutter St", "name_en": "Sutter St", "name_es": "Sutter St", "name_fr": "Sutter St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42799818515778, 37.78504590733613 ], [ -122.42814838886261, 37.785787830074185 ] ] }, "properties": { "class": "street", "len": 105.35203082941551, "name": "Laguna St", "name_de": "Laguna St", "name_en": "Laguna St", "name_es": "Laguna St", "name_fr": "Laguna St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43129193782806, 37.785372354258485 ], [ -122.4297845363617, 37.7855673738098 ], [ -122.42902278900146, 37.78566912293662 ], [ -122.42887794971466, 37.78568608111079 ], [ -122.42814838886261, 37.785787830074185 ] ] }, "properties": { "class": "street", "len": 354.766990348488, "name": "Post St", "name_de": "Post St", "name_en": "Post St", "name_es": "Post St", "name_fr": "Post St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43548154830933, 37.78870033475276 ], [ -122.43712842464447, 37.78848836594184 ], [ -122.4371337890625, 37.78848836594184 ] ] }, "properties": { "class": "street", "len": 1274.824330638367, "name": "California St", "name_de": "California St", "name_en": "California St", "name_es": "California St", "name_fr": "California St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42833614349365, 37.78671628289371 ], [ -122.42852926254271, 37.78765320290964 ], [ -122.42871701717375, 37.78857739291647 ], [ -122.42891013622283, 37.789535485950495 ], [ -122.42909252643584, 37.79045965241627 ], [ -122.42927491664882, 37.79134141514943 ], [ -122.4294519424438, 37.792218928191865 ], [ -122.42962896823879, 37.793100669930396 ], [ -122.42980599403377, 37.79397816207892 ], [ -122.42999374866481, 37.79489803396326 ], [ -122.43018686771389, 37.79585604504041 ], [ -122.43037462234493, 37.79678437135622 ], [ -122.43056237697597, 37.797716924859415 ], [ -122.43075013160701, 37.79864946659016 ], [ -122.43082523345943, 37.7990140024299 ], [ -122.43093788623806, 37.799581996548376 ], [ -122.43110954761501, 37.800366160355566 ], [ -122.43112027645107, 37.80042974083997 ] ] }, "properties": { "class": "street", "len": 1956.5208624328263, "name": "Laguna St", "name_de": "Laguna St", "name_en": "Laguna St", "name_es": "Laguna St", "name_fr": "Laguna St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42814838886261, 37.785787830074185 ], [ -122.42825031280518, 37.78626265671772 ], [ -122.42833614349365, 37.78671628289371 ] ] }, "properties": { "class": "street", "len": 132.52717323649773, "name": "Laguna St", "name_de": "Laguna St", "name_en": "Laguna St", "name_es": "Laguna St", "name_fr": "Laguna St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42814838886261, 37.785787830074185 ], [ -122.42750465869905, 37.785868381237506 ], [ -122.42645323276521, 37.78599980663131 ], [ -122.42486000061037, 37.786199064040595 ] ] }, "properties": { "class": "street", "len": 370.8104371989897, "name": "Post St", "name_de": "Post St", "name_en": "Post St", "name_es": "Post St", "name_fr": "Post St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42833614349365, 37.78671628289371 ], [ -122.4299830198288, 37.78650430839168 ], [ -122.43146896362305, 37.786330488846325 ], [ -122.431640625, 37.78629657278981 ] ] }, "properties": { "class": "street", "len": 372.80325169938106, "name": "Sutter St", "name_de": "Sutter St", "name_en": "Sutter St", "name_es": "Sutter St", "name_fr": "Sutter St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4371337890625, 37.78655518232762 ], [ -122.43674218654633, 37.786601816738134 ], [ -122.43510067462921, 37.78681379096047 ], [ -122.43345916271211, 37.78702152510845 ], [ -122.43240773677827, 37.78714870899247 ], [ -122.43181228637695, 37.78723349812689 ], [ -122.43154406547548, 37.78726741375342 ], [ -122.43017077445985, 37.78744123109506 ], [ -122.42852926254274, 37.78765320290964 ], [ -122.4268662929535, 37.78786517411618 ], [ -122.42524087429048, 37.78807290530866 ], [ -122.42359399795534, 37.78828063591721 ], [ -122.42202758789062, 37.7884714084107 ], [ -122.42187738418579, 37.788492605324016 ], [ -122.4203109741211, 37.78870033475276 ], [ -122.41865873336792, 37.78891230295561 ], [ -122.41765022277832, 37.78903524423468 ], [ -122.4170172214508, 37.7891115525119 ], [ -122.41576731204987, 37.78929384418854 ], [ -122.41538107395172, 37.78934471620411 ], [ -122.41450130939484, 37.78945069945733 ], [ -122.41374492645265, 37.789548203916056 ], [ -122.41207659244537, 37.78974321244753 ], [ -122.41044580936433, 37.78995941695688 ], [ -122.40882575511934, 37.79017138154805 ], [ -122.40880966186525, 37.790175620833686 ], [ -122.40879356861119, 37.790175620833686 ], [ -122.40801036357884, 37.79027736361561 ], [ -122.40787088871004, 37.79029432073231 ], [ -122.40752756595613, 37.79033671350706 ], [ -122.40723252296449, 37.790370627709315 ], [ -122.4071252346039, 37.79038334553116 ], [ -122.40700185298921, 37.790396063350826 ], [ -122.40676045417787, 37.790429977525854 ], [ -122.40652441978456, 37.79045965241624 ], [ -122.40633666515352, 37.790480848759216 ], [ -122.40557491779329, 37.790565634070326 ], [ -122.40526914596558, 37.79060802668941 ], [ -122.4047702550888, 37.79066737631525 ], [ -122.40440011024477, 37.790714008130706 ], [ -122.40433573722841, 37.79072248663944 ], [ -122.40418016910554, 37.79074368290703 ] ] }, "properties": { "class": "main", "len": 4777.280544232611, "name": "Bush St", "name_de": "Bush St", "name_en": "Bush St", "name_es": "Bush St", "name_fr": "Bush St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.431640625, 37.78629657278981 ], [ -122.43222534656525, 37.786224501118014 ], [ -122.43327140808107, 37.78608883660399 ] ] }, "properties": { "class": "street", "len": 183.80983219213513, "name": "Sutter St", "name_de": "Sutter St", "name_en": "Sutter St", "name_es": "Sutter St", "name_fr": "Sutter St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4349182844162, 37.794274896196235 ], [ -122.43473052978516, 37.79335077745011 ], [ -122.43455350399017, 37.79247751700376 ] ] }, "properties": { "class": "street", "len": 256.79662568399306, "name": "Fillmore St", "name_de": "Fillmore St", "name_en": "Fillmore St", "name_es": "Fillmore St", "name_fr": "Fillmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43327140808105, 37.78608883660399 ], [ -122.43307828903198, 37.785151896754726 ], [ -122.4329549074173, 37.78452019757326 ], [ -122.43294417858124, 37.784473561849175 ] ] }, "properties": { "class": "street", "len": 229.87838887474672, "name": "Fillmore St", "name_de": "Fillmore St", "name_en": "Fillmore St", "name_es": "Fillmore St", "name_fr": "Fillmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43327140808105, 37.78608883660399 ], [ -122.43491291999817, 37.785876860302224 ] ] }, "properties": { "class": "street", "len": 185.58002721248843, "name": "Sutter St", "name_de": "Sutter St", "name_en": "Sutter St", "name_es": "Sutter St", "name_fr": "Sutter St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42158770561218, 37.795029443297494 ], [ -122.42314875125885, 37.79483020969929 ] ] }, "properties": { "class": "street", "len": 176.52994335243739, "name": "Pacific Ave", "name_de": "Pacific Ave", "name_en": "Pacific Ave", "name_es": "Pacific Ave", "name_fr": "Pacific Ave", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42615282535553, 37.79263860465855 ], [ -122.42451667785645, 37.792850561564016 ], [ -122.42295563220978, 37.79304980050074 ], [ -122.42280006408691, 37.79306251786141 ] ] }, "properties": { "class": "street", "len": 377.93480740004276, "name": "Washington St", "name_de": "Washington St", "name_en": "Washington St", "name_es": "Washington St", "name_fr": "Washington St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43657052516937, 37.794062943376915 ], [ -122.4363774061203, 37.79313882197963 ], [ -122.43621110916138, 37.792265559028124 ] ] }, "properties": { "class": "street", "len": 256.40505882311743, "name": "Steiner St", "name_de": "Steiner St", "name_en": "Steiner St", "name_es": "Steiner St", "name_fr": "Steiner St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43455350399017, 37.79247751700376 ], [ -122.43621110916138, 37.792265559028124 ] ] }, "properties": { "class": "street", "len": 186.72620812329262, "name": "Jackson St", "name_de": "Jackson St", "name_en": "Jackson St", "name_es": "Jackson St", "name_fr": "Jackson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42314338684082, 37.79392729325345 ], [ -122.4246883392334, 37.79372805668306 ], [ -122.42632985115051, 37.79351610229493 ] ] }, "properties": { "class": "street", "len": 359.5469532934653, "name": "Jackson St", "name_de": "Jackson St", "name_en": "Jackson St", "name_es": "Jackson St", "name_fr": "Jackson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43621110916138, 37.792265559028124 ], [ -122.43602335453033, 37.79138380732341 ] ] }, "properties": { "class": "street", "len": 125.51699526332001, "name": "Steiner St", "name_de": "Steiner St", "name_en": "Steiner St", "name_es": "Steiner St", "name_fr": "Steiner St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42280006408691, 37.79306251786141 ], [ -122.42122828960419, 37.79327023444296 ], [ -122.4195921421051, 37.7934779504405 ], [ -122.41797208786011, 37.79368142676982 ], [ -122.41793990135193, 37.79368566585406 ] ] }, "properties": { "class": "street", "len": 548.5713946050722, "name": "Washington St", "name_de": "Washington St", "name_en": "Washington St", "name_es": "Washington St", "name_fr": "Washington St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42632985115051, 37.79351610229493 ], [ -122.42798745632172, 37.79330838640464 ] ] }, "properties": { "class": "street", "len": 186.64642964750635, "name": "Jackson St", "name_de": "Jackson St", "name_en": "Jackson St", "name_es": "Jackson St", "name_fr": "Jackson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42798745632172, 37.79330838640464 ], [ -122.42815911769867, 37.79419011514147 ], [ -122.42834150791168, 37.79512270139288 ], [ -122.42853999137878, 37.79606375376797 ], [ -122.42872774600983, 37.79699207747368 ] ] }, "properties": { "class": "street", "len": 525.6550689667262, "name": "Octavia St", "name_de": "Octavia St", "name_en": "Octavia St", "name_es": "Octavia St", "name_fr": "Octavia St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42798745632172, 37.79330838640464 ], [ -122.4280196428299, 37.79318121312238 ], [ -122.42793381214142, 37.79274034404906 ], [ -122.42788553237915, 37.7926725178043 ], [ -122.4279123544693, 37.792579256616065 ], [ -122.42789089679718, 37.79248175615706 ], [ -122.42783725261688, 37.792426647145035 ] ] }, "properties": { "class": "street", "len": 129.48535326004438, "name": "Octavia St", "name_de": "Octavia St", "name_en": "Octavia St", "name_es": "Octavia St", "name_fr": "Octavia St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42783725261688, 37.792426647145035 ], [ -122.42781043052673, 37.792490234462946 ], [ -122.42783188819885, 37.79261740893458 ], [ -122.42788553237915, 37.7926725178043 ], [ -122.42785334587097, 37.79274882232528 ], [ -122.42791771888733, 37.79318969134799 ], [ -122.42798745632172, 37.79330838640464 ] ] }, "properties": { "class": "street", "len": 129.13268389338356, "name": "Octavia St", "name_de": "Octavia St", "name_en": "Octavia St", "name_es": "Octavia St", "name_fr": "Octavia St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42140531539917, 37.78618634549861 ], [ -122.41983890533446, 37.78638560240497 ], [ -122.41818130016325, 37.78656790080614 ] ] }, "properties": { "class": "service", "len": 362.69087619878184, "name": "Cedar St", "name_de": "Cedar St", "name_en": "Cedar St", "name_es": "Cedar St", "name_fr": "Cedar St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41930782794952, 37.78374434488178 ], [ -122.41936683654785, 37.78403264082188 ], [ -122.41946339607239, 37.78450323913154 ], [ -122.4195545911789, 37.78496535527636 ], [ -122.41965115070343, 37.78543594764699 ], [ -122.41974234580994, 37.78589381842874 ], [ -122.41983890533447, 37.78638560240497 ], [ -122.41993010044098, 37.78683074887198 ] ] }, "properties": { "class": "street", "len": 935.2773512284809, "name": "Polk St", "name_de": "Polk St", "name_en": "Polk St", "name_es": "Polk St", "name_fr": "Polk St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40809082984924, 37.78400296335056 ], [ -122.4082088470459, 37.78409199572878 ], [ -122.40847706794739, 37.78431669601591 ], [ -122.4084985256195, 37.78433789412096 ], [ -122.40851998329163, 37.78438876954822 ], [ -122.4085360765457, 37.78446508262347 ] ] }, "properties": { "class": "street", "len": 83.84549664431606, "name": "Cyril Magnin St", "name_de": "Cyril Magnin St", "name_en": "Cyril Magnin St", "name_es": "Cyril Magnin St", "name_fr": "Cyril Magnin St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.40809082984924, 37.78400296335056 ], [ -122.40776896476746, 37.78374434488178 ] ] }, "properties": { "class": "street", "len": 252.0510642319494, "name": "5th St", "name_de": "5th St", "name_en": "5th St", "name_es": "5th St", "name_fr": "5th St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4108213186264, 37.791837402062676 ], [ -122.41076231002808, 37.79153217974085 ], [ -122.41062819957733, 37.79088357812059 ], [ -122.4105316400528, 37.79039182407786 ], [ -122.41044580936432, 37.78995941695693 ], [ -122.41025805473328, 37.78901828682906 ], [ -122.41016685962677, 37.78855195664898 ], [ -122.41007566452026, 37.78808138412048 ], [ -122.40994155406952, 37.78742851276689 ], [ -122.40988790988922, 37.78714870899249 ], [ -122.40979135036469, 37.78667388804195 ], [ -122.4097591638565, 37.78651278738342 ], [ -122.40970551967621, 37.78622026160572 ], [ -122.40951776504517, 37.78528332342268 ], [ -122.40933537483215, 37.7843590922199 ], [ -122.40921199321747, 37.78374434488178 ] ] }, "properties": { "class": "street", "len": 1231.0964508373736, "name": "Mason St", "name_de": "Mason St", "name_en": "Mason St", "name_es": "Mason St", "name_fr": "Mason St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43308365345001, 37.7935584932212 ], [ -122.43299782276154, 37.79312186551574 ], [ -122.43291735649109, 37.79268099608831 ] ] }, "properties": { "class": "street", "len": 125.12204412045358, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42615282535553, 37.79263860465855 ], [ -122.42783725261688, 37.79242664714506 ], [ -122.42808938026428, 37.792392733886466 ], [ -122.42945194244385, 37.792218928191865 ], [ -122.43109345436096, 37.79201120865472 ], [ -122.43273496627806, 37.791803488533624 ] ] }, "properties": { "class": "street", "len": 742.7365208672886, "name": "Washington St", "name_de": "Washington St", "name_en": "Washington St", "name_es": "Washington St", "name_fr": "Washington St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43455350399017, 37.79247751700376 ], [ -122.43437647819519, 37.79159576782853 ] ] }, "properties": { "class": "street", "len": 125.77653835198964, "name": "Fillmore St", "name_de": "Fillmore St", "name_en": "Fillmore St", "name_es": "Fillmore St", "name_fr": "Fillmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43621110916138, 37.792265559028124 ], [ -122.4371337890625, 37.79215110146844 ] ] }, "properties": { "class": "street", "len": 557.4031872764373, "name": "Jackson St", "name_de": "Jackson St", "name_en": "Jackson St", "name_es": "Jackson St", "name_fr": "Jackson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42798745632172, 37.79330838640464 ], [ -122.42962896823883, 37.793100669930396 ], [ -122.43126511573792, 37.79289295287215 ], [ -122.43291735649109, 37.79268099608831 ] ] }, "properties": { "class": "street", "len": 556.4159854018069, "name": "Jackson St", "name_de": "Jackson St", "name_en": "Jackson St", "name_es": "Jackson St", "name_fr": "Jackson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43437647819519, 37.79159576782853 ], [ -122.43419945240021, 37.790714008130706 ], [ -122.43402242660522, 37.78984071652026 ], [ -122.43383467197418, 37.78890806359753 ], [ -122.43364155292511, 37.78794996242854 ], [ -122.4335503578186, 37.78748786494643 ], [ -122.43345916271211, 37.78702152510845 ], [ -122.43327140808107, 37.78608883660396 ] ] }, "properties": { "class": "street", "len": 785.4742911044511, "name": "Fillmore St", "name_de": "Fillmore St", "name_en": "Fillmore St", "name_es": "Fillmore St", "name_fr": "Fillmore St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43291735649109, 37.79268099608831 ], [ -122.43455350399017, 37.79247751700376 ] ] }, "properties": { "class": "street", "len": 184.64474782644712, "name": "Jackson St", "name_de": "Jackson St", "name_en": "Jackson St", "name_es": "Jackson St", "name_fr": "Jackson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43437647819519, 37.79159576782853 ], [ -122.43602335453033, 37.79138380732341 ] ] }, "properties": { "class": "street", "len": 185.58002721248843, "name": "Washington St", "name_de": "Washington St", "name_en": "Washington St", "name_es": "Washington St", "name_fr": "Washington St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43273496627808, 37.791803488533624 ], [ -122.43437647819519, 37.79159576782853 ] ] }, "properties": { "class": "street", "len": 184.89630499331108, "name": "Washington St", "name_de": "Washington St", "name_en": "Washington St", "name_es": "Washington St", "name_fr": "Washington St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43291735649109, 37.79268099608831 ], [ -122.43273496627808, 37.791803488533624 ] ] }, "properties": { "class": "street", "len": 125.53293472237247, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43273496627808, 37.791803488533624 ], [ -122.4325579404831, 37.790921731314675 ] ] }, "properties": { "class": "street", "len": 125.54438776854212, "name": "Webster St", "name_de": "Webster St", "name_en": "Webster St", "name_es": "Webster St", "name_fr": "Webster St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.41812765598297, 37.794567390088325 ], [ -122.41814911365509, 37.79456315105469 ], [ -122.41892695426941, 37.79446141417424 ], [ -122.41976916790009, 37.79435967715371 ], [ -122.42140531539917, 37.794147724577606 ] ] }, "properties": { "class": "street", "len": 369.9980531145037, "name": "Jackson St", "name_de": "Jackson St", "name_en": "Jackson St", "name_es": "Jackson St", "name_fr": "Jackson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42069184780121, 37.79057835185864 ], [ -122.42088496685028, 37.79149402686194 ], [ -122.42106199264526, 37.792396973044646 ], [ -122.42122828960419, 37.79327023444296 ], [ -122.42140531539917, 37.794147724577606 ] ] }, "properties": { "class": "street", "len": 508.6550928972288, "name": "Polk St", "name_de": "Polk St", "name_en": "Polk St", "name_es": "Polk St", "name_fr": "Polk St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42140531539917, 37.794147724577606 ], [ -122.42296099662781, 37.79394848860165 ], [ -122.42314338684082, 37.79392729325345 ] ] }, "properties": { "class": "street", "len": 195.6111994448167, "name": "Jackson St", "name_de": "Jackson St", "name_en": "Jackson St", "name_es": "Jackson St", "name_fr": "Jackson St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42140531539917, 37.794147724577606 ], [ -122.42158770561217, 37.795029443297494 ] ] }, "properties": { "class": "street", "len": 125.97491218458389, "name": "Polk St", "name_de": "Polk St", "name_en": "Polk St", "name_es": "Polk St", "name_fr": "Polk St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43566930294037, 37.78963299029734 ], [ -122.4371337890625, 37.789446460130144 ] ] }, "properties": { "class": "street", "len": 1274.3404609796792, "name": "Sacramento St", "name_de": "Sacramento St", "name_en": "Sacramento St", "name_es": "Sacramento St", "name_fr": "Sacramento St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.43602335453033, 37.79138380732341 ], [ -122.43588924407959, 37.79070552962101 ], [ -122.43584632873535, 37.79050204509613 ], [ -122.43566930294037, 37.78963299029734 ] ] }, "properties": { "class": "street", "len": 250.18440290311415, "name": "Steiner St", "name_de": "Steiner St", "name_en": "Steiner St", "name_es": "Steiner St", "name_fr": "Steiner St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.42075085639954, 37.8075970299193 ], [ -122.42069721221924, 37.80731306422433 ], [ -122.42064893245697, 37.807071480609274 ], [ -122.4205631017685, 37.80665188613628 ] ] }, "properties": { "class": "street", "len": 134.37310004686768, "name": "Hyde St", "name_de": "Hyde St", "name_en": "Hyde St", "name_es": "Hyde St", "name_fr": "Hyde St", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [ -122.4058324098587, 37.8027440332184 ], [ -122.40580022335052, 37.802714363262176 ], [ -122.40577340126038, 37.80268469329402 ], [ -122.4057412147522, 37.80265078474437 ], [ -122.40546762943268, 37.80227778967103 ], [ -122.40541934967041, 37.80219301780076 ], [ -122.40539252758026, 37.80212096163453 ], [ -122.40539252758026, 37.80205738260595 ], [ -122.40541398525238, 37.801989564915125 ], [ -122.40544080734253, 37.80194294021658 ], [ -122.40548372268677, 37.801892076875475 ], [ -122.4055427312851, 37.801858167961946 ], [ -122.40562319755554, 37.80182425903287 ], [ -122.4056339263916, 37.80182002041566 ], [ -122.40581095218658, 37.801794588707146 ], [ -122.405886054039, 37.80181578179817 ], [ -122.40591824054718, 37.80182849764986 ], [ -122.4060308933258, 37.801892076875475 ], [ -122.40612208843231, 37.80198108769938 ], [ -122.40620791912079, 37.80207857562153 ], [ -122.40632593631744, 37.802328652746496 ], [ -122.40643858909607, 37.80256601330221 ], [ -122.4064654111862, 37.802595683318025 ], [ -122.40652978420258, 37.80268469329399 ], [ -122.40668535232544, 37.80283728157465 ], [ -122.40672826766968, 37.80293052981321 ], [ -122.4067336320877, 37.80301106228812 ], [ -122.40672290325163, 37.80307887904102 ], [ -122.40670144557951, 37.803142457190276 ], [ -122.40665316581726, 37.80320179674688 ], [ -122.40657806396483, 37.803252659186015 ], [ -122.40639030933379, 37.80335438395923 ], [ -122.40632593631743, 37.80340948481954 ], [ -122.4062991142273, 37.80346034711567 ], [ -122.40628838539122, 37.803528163456 ], [ -122.40632593631743, 37.8035875027027 ], [ -122.4063742160797, 37.803629887849716 ], [ -122.40643858909606, 37.80365531892627 ], [ -122.4065190553665, 37.80365955743819 ], [ -122.40658879280089, 37.80364684190173 ] ] }, "properties": { "class": "street", "len": 518.0529223368776, "name": "Telegraph Hill Blvd", "name_de": "Telegraph Hill Blvd", "name_en": "Telegraph Hill Blvd", "name_es": "Telegraph Hill Blvd", "name_fr": "Telegraph Hill Blvd", "ref": "", "reflen": 0 } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4292802810669, 37.78527484428987 ] }, "properties": { "area": 5516.33349609375, "name": "Miyako Mall", "name_de": "Miyako Mall", "name_en": "Miyako Mall", "name_es": "Miyako Mall", "name_fr": "Miyako Mall" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42416799068451, 37.80113759986951 ] }, "properties": { "area": 1380.7078857421875, "name": "Chase", "name_de": "Chase", "name_en": "Chase", "name_es": "Chase", "name_fr": "Chase" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41160988807678, 37.78994245976337 ] }, "properties": { "area": 230.83670043945312, "name": "Fire Chief's Residence", "name_de": "Fire Chief's Residence", "name_en": "Fire Chief's Residence", "name_es": "Fire Chief's Residence", "name_fr": "Fire Chief's Residence" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43130803108215, 37.78509254269906 ] }, "properties": { "area": 908.6409912109375, "name": "Webster Street Bridge", "name_de": "Webster Street Bridge", "name_en": "Webster Street Bridge", "name_es": "Webster Street Bridge", "name_fr": "Webster Street Bridge" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43186056613922, 37.78496535527636 ] }, "properties": { "area": 5365.01318359375, "name": "Kinokuniya Mall", "name_de": "Kinokuniya Mall", "name_en": "Kinokuniya Mall", "name_es": "Kinokuniya Mall", "name_fr": "Kinokuniya Mall" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4284702539444, 37.785393552060754 ] }, "properties": { "area": 3088.516357421875, "name": "Hotel Kabuki", "name_de": "Hotel Kabuki", "name_en": "Hotel Kabuki", "name_es": "Hotel Kabuki", "name_fr": "Hotel Kabuki" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41934537887573, 37.78665269060695 ] }, "properties": { "area": 520.3375244140625, "name": "San Francisco Fire Station 3", "name_de": "San Francisco Fire Station 3", "name_en": "San Francisco Fire Station 3", "name_es": "San Francisco Fire Station 3", "name_fr": "San Francisco Fire Station 3" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41794526576996, 37.80530408170084 ] }, "properties": { "area": 572.687744140625, "name": "Bayside Inn at the Wharf", "name_de": "Bayside Inn at the Wharf", "name_en": "Bayside Inn at the Wharf", "name_es": "Bayside Inn at the Wharf", "name_fr": "Bayside Inn at the Wharf" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41453349590302, 37.80774960805068 ] }, "properties": { "area": 1862.534912109375, "name": "The Wharf Inn", "name_de": "The Wharf Inn", "name_en": "The Wharf Inn", "name_es": "The Wharf Inn", "name_fr": "The Wharf Inn" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41641640663147, 37.80607123126648 ] }, "properties": { "area": 343.0441589355469, "name": "Knuckles Historic Sports Bar & Grill", "name_de": "Knuckles Historic Sports Bar & Grill", "name_en": "Knuckles Historic Sports Bar & Grill", "name_es": "Knuckles Historic Sports Bar & Grill", "name_fr": "Knuckles Historic Sports Bar & Grill" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4135947227478, 37.80428261604232 ] }, "properties": { "area": 830.158447265625, "name": "San Remo Hotel", "name_de": "San Remo Hotel", "name_en": "San Remo Hotel", "name_es": "San Remo Hotel", "name_fr": "San Remo Hotel" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4206006526947, 37.80551176386163 ] }, "properties": { "area": 1236.4427490234375, "name": "Suites at Fisherman's Wharf", "name_de": "Suites at Fisherman's Wharf", "name_en": "Suites at Fisherman's Wharf", "name_es": "Suites at Fisherman's Wharf", "name_fr": "Suites at Fisherman's Wharf" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41020441055298, 37.795237154349074 ] }, "properties": { "area": 1414.74072265625, "name": "Chinatown Branch Library", "name_de": "Chinatown Branch Library", "name_en": "Chinatown Branch Library", "name_es": "Chinatown Branch Library", "name_fr": "Chinatown Branch Library" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43674218654633, 37.79862827259065 ] }, "properties": { "area": 660.9341430664062, "name": "San Francisco Fire Station 16", "name_de": "San Francisco Fire Station 16", "name_en": "San Francisco Fire Station 16", "name_es": "San Francisco Fire Station 16", "name_fr": "San Francisco Fire Station 16" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40935146808624, 37.802549059002104 ] }, "properties": { "area": 422.4821472167969, "name": "San Francisco Fire Station 28", "name_de": "San Francisco Fire Station 28", "name_en": "San Francisco Fire Station 28", "name_es": "San Francisco Fire Station 28", "name_fr": "San Francisco Fire Station 28" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40993082523346, 37.79875119770314 ] }, "properties": { "area": 2133.2392578125, "name": "Central Police Station", "name_de": "Central Police Station", "name_en": "Central Police Station", "name_es": "Central Police Station", "name_fr": "Central Police Station" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40958750247955, 37.79821286897272 ] }, "properties": { "area": 2808.270751953125, "name": "North Beach Garage", "name_de": "North Beach Garage", "name_en": "North Beach Garage", "name_es": "North Beach Garage", "name_fr": "North Beach Garage" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4277138710022, 37.78465586496683 ] }, "properties": { "area": 1985.4339599609375, "name": "Consulate General of People's Republic of China, San Francisco", "name_de": "Consulate General of People's Republic of China, San Francisco", "name_en": "Consulate General of People's Republic of China, San Francisco", "name_es": "Consulate General of People's Republic of China, San Francisco", "name_fr": "Consulate General of People's Republic of China, San Francisco" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41189420223236, 37.79491499001951 ] }, "properties": { "area": 6071.3720703125, "name": "Cable Car Barn and Museum", "name_de": "Cable Car Barn and Museum", "name_en": "Cable Car Barn and Museum", "name_es": "Cable Car Barn and Museum", "name_fr": "Cable Car Barn and Museum" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40681946277618, 37.79345675495729 ] }, "properties": { "area": 391.3664855957031, "name": "First Chinese Baptist Church", "name_de": "First Chinese Baptist Church", "name_en": "First Chinese Baptist Church", "name_es": "First Chinese Baptist Church", "name_fr": "First Chinese Baptist Church" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42138385772705, 37.791171846210275 ] }, "properties": { "area": 1251.1688232421875, "name": "Old First Garage", "name_de": "Old First Garage", "name_en": "Old First Garage", "name_es": "Old First Garage", "name_fr": "Old First Garage" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43056237697601, 37.78513917803252 ] }, "properties": { "area": 8348.4609375, "name": "Kintetsu Mall", "name_de": "Kintetsu Mall", "name_en": "Kintetsu Mall", "name_es": "Kintetsu Mall", "name_fr": "Kintetsu Mall" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40898668766022, 37.784867844770744 ] }, "properties": { "area": 7335.865234375, "name": "Parc 55 Hotel", "name_de": "Parc 55 Hotel", "name_en": "Parc 55 Hotel", "name_es": "Parc 55 Hotel", "name_fr": "Parc 55 Hotel" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42539644241333, 37.78572423698848 ] }, "properties": { "area": 7462.6748046875, "name": "Cathedral Hill Plaza", "name_de": "Cathedral Hill Plaza", "name_en": "Cathedral Hill Plaza", "name_es": "Cathedral Hill Plaza", "name_fr": "Cathedral Hill Plaza" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42535352706909, 37.78424886203896 ] }, "properties": { "area": 8470.4453125, "name": "Cathedral of Saint Mary of the Assumption", "name_de": "Cathedral of Saint Mary of the Assumption", "name_en": "Cathedral of Saint Mary of the Assumption", "name_es": "Cathedral of Saint Mary of the Assumption", "name_fr": "Cathedral of Saint Mary of the Assumption" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41531133651733, 37.78618634549861 ] }, "properties": { "area": 505.65185546875, "name": "Luz Hotel", "name_de": "Luz Hotel", "name_en": "Luz Hotel", "name_es": "Luz Hotel", "name_fr": "Luz Hotel" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41287589073181, 37.80805476336766 ] }, "properties": { "area": 14876.345703125, "name": "Radisson", "name_de": "Radisson", "name_en": "Radisson", "name_es": "Radisson", "name_fr": "Radisson" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41165280342102, 37.80810562246455 ] }, "properties": { "area": 9020.443359375, "name": "Pier 39 Garage", "name_de": "Pier 39 Garage", "name_en": "Pier 39 Garage", "name_es": "Pier 39 Garage", "name_fr": "Pier 39 Garage" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43238627910614, 37.807872517982794 ] }, "properties": { "area": 3615.182861328125, "name": "Pier 1", "name_de": "Pier 1", "name_en": "Pier 1", "name_es": "Pier 1", "name_fr": "Pier 1" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40513503551483, 37.80599070212845 ] }, "properties": { "area": 1131.0096435546875, "name": "Houston's", "name_de": "Houston's", "name_en": "Houston's", "name_es": "Houston's", "name_fr": "Houston's" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43417799472809, 37.80141735066961 ] }, "properties": { "area": 1237.8514404296875, "name": "Marina Branch San Francisco Public Library", "name_de": "Marina Branch San Francisco Public Library", "name_en": "Marina Branch San Francisco Public Library", "name_es": "Marina Branch San Francisco Public Library", "name_fr": "Marina Branch San Francisco Public Library" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41409361362457, 37.80616447542192 ] }, "properties": { "area": 3546.529296875, "name": "Best Western Tuscan Inn", "name_de": "Best Western Tuscan Inn", "name_en": "Best Western Tuscan Inn", "name_es": "Best Western Tuscan Inn", "name_fr": "Best Western Tuscan Inn" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42490828037262, 37.80092142807103 ] }, "properties": { "area": 1123.26171875, "name": "Comfort Inn", "name_de": "Comfort Inn", "name_en": "Comfort Inn", "name_es": "Comfort Inn", "name_fr": "Comfort Inn" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41276860237122, 37.80238375437207 ] }, "properties": { "area": 755.2568969726562, "name": "North Beach Branch Library", "name_de": "North Beach Branch Library", "name_en": "North Beach Branch Library", "name_es": "North Beach Branch Library", "name_fr": "North Beach Branch Library" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40642786026001, 37.79746259325332 ] }, "properties": { "area": 382.2843933105469, "name": "Vesuvio", "name_de": "Vesuvio", "name_en": "Vesuvio", "name_es": "Vesuvio", "name_fr": "Vesuvio" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41563320159912, 37.808766787536605 ] }, "properties": { "area": 393.5412902832031, "name": "Boudin", "name_de": "Boudin", "name_en": "Boudin", "name_es": "Boudin", "name_fr": "Boudin" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41489827632904, 37.808533685141974 ] }, "properties": { "area": 2283.5849609375, "name": "Boudin", "name_de": "Boudin", "name_en": "Boudin", "name_es": "Boudin", "name_fr": "Boudin" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41548836231232, 37.80798271292044 ] }, "properties": { "area": 2022.918701171875, "name": "Ripley's Believe it or Not", "name_de": "Ripley's Believe it or Not", "name_en": "Ripley's Believe it or Not", "name_es": "Ripley's Believe it or Not", "name_fr": "Ripley's Believe it or Not" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40637421607971, 37.80851673221186 ] }, "properties": { "area": 24874.34375, "name": "Pier 35", "name_de": "Pier 35", "name_en": "Pier 35", "name_es": "Pier 35", "name_fr": "Pier 35" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40471661090851, 37.80765636589674 ] }, "properties": { "area": 15779.9248046875, "name": "Pier 33", "name_de": "Pier 33", "name_en": "Pier 33", "name_es": "Pier 33", "name_fr": "Pier 33" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41289734840393, 37.8071435319456 ] }, "properties": { "area": 12872.4033203125, "name": "Sheraton Fisherman's Wharf", "name_de": "Sheraton Fisherman's Wharf", "name_en": "Sheraton Fisherman's Wharf", "name_es": "Sheraton Fisherman's Wharf", "name_fr": "Sheraton Fisherman's Wharf" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42696285247803, 37.80784708835846 ] }, "properties": { "area": 983.818603515625, "name": "Salt Water Pumping Station #2", "name_de": "Salt Water Pumping Station #2", "name_en": "Salt Water Pumping Station #2", "name_es": "Salt Water Pumping Station #2", "name_fr": "Salt Water Pumping Station #2" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4093246459961, 37.80878797862691 ] }, "properties": { "area": 2921.8076171875, "name": "Aquarium of the Bay", "name_de": "Aquarium of the Bay", "name_en": "Aquarium of the Bay", "name_es": "Aquarium of the Bay", "name_fr": "Aquarium of the Bay" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41211414337158, 37.80909312965286 ] }, "properties": { "area": 1839.5250244140625, "name": "San Francisco Pier 41", "name_de": "San Francisco Pier 41", "name_en": "San Francisco Pier 41", "name_es": "San Francisco Pier 41", "name_fr": "San Francisco Pier 41" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41834759712219, 37.807393591920395 ] }, "properties": { "area": 3765.9267578125, "name": "Courtyard by Marriott", "name_de": "Courtyard by Marriott", "name_en": "Courtyard by Marriott", "name_es": "Courtyard by Marriott", "name_fr": "Courtyard by Marriott" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42360472679138, 37.79928104498482 ] }, "properties": { "area": 3528.04296875, "name": "Heritage Marina Hotel", "name_de": "Heritage Marina Hotel", "name_en": "Heritage Marina Hotel", "name_es": "Heritage Marina Hotel", "name_fr": "Heritage Marina Hotel" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41784334182739, 37.78583870450334 ] }, "properties": { "area": 1468.395751953125, "name": "Motel 6", "name_de": "Motel 6", "name_en": "Motel 6", "name_es": "Motel 6", "name_fr": "Motel 6" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42006957530975, 37.785592811104635 ] }, "properties": { "area": 888.1964111328125, "name": "Monarch Hotel", "name_de": "Monarch Hotel", "name_en": "Monarch Hotel", "name_es": "Monarch Hotel", "name_fr": "Monarch Hotel" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41901814937592, 37.78530452125047 ] }, "properties": { "area": 4581.5654296875, "name": "Trinity Towers", "name_de": "Trinity Towers", "name_en": "Trinity Towers", "name_es": "Trinity Towers", "name_fr": "Trinity Towers" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41949021816254, 37.78951005001279 ] }, "properties": { "area": 2203.13330078125, "name": "Redding Elementary School", "name_de": "Redding Elementary School", "name_en": "Redding Elementary School", "name_es": "Redding Elementary School", "name_fr": "Redding Elementary School" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41796672344208, 37.78779734339625 ] }, "properties": { "area": 1228.1376953125, "name": "Carlton Hotel", "name_de": "Carlton Hotel", "name_en": "Carlton Hotel", "name_es": "Carlton Hotel", "name_fr": "Carlton Hotel" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4329924583435, 37.790234970806864 ] }, "properties": { "area": 4045.7548828125, "name": "Dental School of the University of the Pacific", "name_de": "Dental School of the University of the Pacific", "name_en": "Dental School of the University of the Pacific", "name_es": "Dental School of the University of the Pacific", "name_fr": "Dental School of the University of the Pacific" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4302351474762, 37.80835991742361 ] }, "properties": { "area": 9903.87109375, "name": "Pier 3 — Festival Pavillion", "name_de": "Pier 3 — Festival Pavillion", "name_en": "Pier 3 — Festival Pavillion", "name_es": "Pier 3 — Festival Pavillion", "name_fr": "Pier 3 — Festival Pavillion" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43137240409851, 37.80821157880392 ] }, "properties": { "area": 7855.970703125, "name": "Pier 2 — Herbst Pavillion", "name_de": "Pier 2 — Herbst Pavillion", "name_en": "Pier 2 — Herbst Pavillion", "name_es": "Pier 2 — Herbst Pavillion", "name_fr": "Pier 2 — Herbst Pavillion" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42568075656891, 37.801569941568545 ] }, "properties": { "area": 2369.4833984375, "name": "Travelodge", "name_de": "Travelodge", "name_en": "Travelodge", "name_es": "Travelodge", "name_fr": "Travelodge" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41723716259003, 37.80567706149055 ] }, "properties": { "area": 4797.96875, "name": "Marriott", "name_de": "Marriott", "name_en": "Marriott", "name_es": "Marriott", "name_fr": "Marriott" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41663634777069, 37.8057194454384 ] }, "properties": { "area": 6233.70751953125, "name": "Hilton San Francisco Fisherman's Wharf", "name_de": "Hilton San Francisco Fisherman's Wharf", "name_en": "Hilton San Francisco Fisherman's Wharf", "name_es": "Hilton San Francisco Fisherman's Wharf", "name_fr": "Hilton San Francisco Fisherman's Wharf" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41614282131195, 37.805855073907956 ] }, "properties": { "area": 6987.13134765625, "name": "Hyatt at Fisherman's Wharf", "name_de": "Hyatt at Fisherman's Wharf", "name_en": "Hyatt at Fisherman's Wharf", "name_es": "Hyatt at Fisherman's Wharf", "name_fr": "Hyatt at Fisherman's Wharf" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4202573299408, 37.807198629978885 ] }, "properties": { "area": 7605.28759765625, "name": "Argonaut Hotel", "name_de": "Argonaut Hotel", "name_en": "Argonaut Hotel", "name_es": "Argonaut Hotel", "name_fr": "Argonaut Hotel" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42389440536499, 37.806423015418865 ] }, "properties": { "area": 1902.082275390625, "name": "National Maritime Museum", "name_de": "National Maritime Museum", "name_en": "National Maritime Museum", "name_es": "National Maritime Museum", "name_fr": "National Maritime Museum" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41769313812256, 37.80653745086623 ] }, "properties": { "area": 7447.5517578125, "name": "Holiday Inn", "name_de": "Holiday Inn", "name_en": "Holiday Inn", "name_es": "Holiday Inn", "name_fr": "Holiday Inn" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40583777427673, 37.80237527720156 ] }, "properties": { "area": 638.9163208007812, "name": "Coit Tower", "name_de": "Coit Tower", "name_en": "Coit Tower", "name_es": "Coit Tower", "name_fr": "Coit Tower" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40650832653046, 37.790001809923794 ] }, "properties": { "area": 10718.5927734375, "name": "Sutter-Stockton Garage", "name_de": "Sutter-Stockton Garage", "name_en": "Sutter-Stockton Garage", "name_es": "Sutter-Stockton Garage", "name_fr": "Sutter-Stockton Garage" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4104243516922, 37.7992301798107 ] }, "properties": { "area": 114.67269897460938, "name": "Northstar Cafe", "name_de": "Northstar Cafe", "name_en": "Northstar Cafe", "name_es": "Northstar Cafe", "name_fr": "Northstar Cafe" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41023123264313, 37.8015996119845 ] }, "properties": { "area": 2652.321533203125, "name": "Saint Peter and Paul Church", "name_de": "Saint Peter and Paul Church", "name_en": "Saint Peter and Paul Church", "name_es": "Saint Peter and Paul Church", "name_fr": "Saint Peter and Paul Church" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40573585033417, 37.800060973268764 ] }, "properties": { "area": 265.8677978515625, "name": "Fog Hill Market", "name_de": "Fog Hill Market", "name_en": "Fog Hill Market", "name_es": "Fog Hill Market", "name_fr": "Fog Hill Market" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40774214267731, 37.7990097636514 ] }, "properties": { "area": 1287.492431640625, "name": "The National Shrine of Saint Francis of Assisi", "name_de": "The National Shrine of Saint Francis of Assisi", "name_en": "The National Shrine of Saint Francis of Assisi", "name_es": "The National Shrine of Saint Francis of Assisi", "name_fr": "The National Shrine of Saint Francis of Assisi" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40420162677765, 37.79519052538833 ] }, "properties": { "area": 4514.34716796875, "name": "Hilton San Francisco Financial District", "name_de": "Hilton San Francisco Financial District", "name_en": "Hilton San Francisco Financial District", "name_es": "Hilton San Francisco Financial District", "name_fr": "Hilton San Francisco Financial District" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40862190723419, 37.78778038570655 ] }, "properties": { "area": 5864.0146484375, "name": "The Westin Saint Francis", "name_de": "The Westin Saint Francis", "name_en": "The Westin Saint Francis", "name_es": "The Westin Saint Francis", "name_fr": "The Westin Saint Francis" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40838050842285, 37.788980132652135 ] }, "properties": { "area": 1684.3642578125, "name": "Sir Francis Drake", "name_de": "Sir Francis Drake", "name_en": "Sir Francis Drake", "name_es": "Sir Francis Drake", "name_fr": "Sir Francis Drake" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40719497203827, 37.78702576457477 ] }, "properties": { "area": 13504.876953125, "name": "Macy's", "name_de": "Macy's", "name_en": "Macy's", "name_es": "Macy's", "name_fr": "Macy's" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40811228752136, 37.78861554730136 ] }, "properties": { "area": 3552.616455078125, "name": "Saks Fifth Avenue", "name_de": "Saks Fifth Avenue", "name_en": "Saks Fifth Avenue", "name_es": "Saks Fifth Avenue", "name_fr": "Saks Fifth Avenue" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40732371807098, 37.788751207176915 ] }, "properties": { "area": 1753.3902587890625, "name": "Levi's Strauss", "name_de": "Levi's Strauss", "name_en": "Levi's Strauss", "name_es": "Levi's Strauss", "name_fr": "Levi's Strauss" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4102795124054, 37.79964557770774 ] }, "properties": { "area": 866.610595703125, "name": "Fugazi Hall", "name_de": "Fugazi Hall", "name_en": "Fugazi Hall", "name_es": "Fugazi Hall", "name_fr": "Fugazi Hall" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40660488605499, 37.797636386612204 ] }, "properties": { "area": 256.4836120605469, "name": "City Lights Bookstore", "name_de": "City Lights Bookstore", "name_en": "City Lights Bookstore", "name_es": "City Lights Bookstore", "name_fr": "City Lights Bookstore" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41349816322327, 37.79182892368188 ] }, "properties": { "area": 4078.9423828125, "name": "Grace Cathedral", "name_de": "Grace Cathedral", "name_en": "Grace Cathedral", "name_es": "Grace Cathedral", "name_fr": "Grace Cathedral" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41298317909241, 37.79119728157595 ] }, "properties": { "area": 7263.853515625, "name": "Masonic Memorial Temple", "name_de": "Masonic Memorial Temple", "name_en": "Masonic Memorial Temple", "name_es": "Masonic Memorial Temple", "name_fr": "Masonic Memorial Temple" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41133630275726, 37.792235884863004 ] }, "properties": { "area": 3000.710205078125, "name": "Pacific Union Club", "name_de": "Pacific Union Club", "name_en": "Pacific Union Club", "name_es": "Pacific Union Club", "name_fr": "Pacific Union Club" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40650832653046, 37.790709768875985 ] }, "properties": { "area": 687.8807373046875, "name": "Notre Dame Des Victoires Church", "name_de": "Notre Dame Des Victoires Church", "name_en": "Notre Dame Des Victoires Church", "name_es": "Notre Dame Des Victoires Church", "name_fr": "Notre Dame Des Victoires Church" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41018831729889, 37.79244360376852 ] }, "properties": { "area": 13559.2392578125, "name": "The Fairmont San Francisco Hotel", "name_de": "The Fairmont San Francisco Hotel", "name_en": "The Fairmont San Francisco Hotel", "name_es": "The Fairmont San Francisco Hotel", "name_fr": "The Fairmont San Francisco Hotel" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41032779216766, 37.7864322369225 ] }, "properties": { "area": 5438.31689453125, "name": "Mason O'Farrell Garage", "name_de": "Mason O'Farrell Garage", "name_en": "Mason O'Farrell Garage", "name_es": "Mason O'Farrell Garage", "name_fr": "Mason O'Farrell Garage" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40706622600555, 37.78607187852223 ] }, "properties": { "area": 4905.40234375, "name": "Ellis O'Farrell Garage", "name_de": "Ellis O'Farrell Garage", "name_en": "Ellis O'Farrell Garage", "name_es": "Ellis O'Farrell Garage", "name_fr": "Ellis O'Farrell Garage" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41019904613495, 37.793126104632066 ] }, "properties": { "area": 2254.120849609375, "name": "Brocklebank Garage", "name_de": "Brocklebank Garage", "name_en": "Brocklebank Garage", "name_es": "Brocklebank Garage", "name_fr": "Brocklebank Garage" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41366982460022, 37.78643647642264 ] }, "properties": { "area": 1744.7864990234375, "name": "Geary Courtyard", "name_de": "Geary Courtyard", "name_en": "Geary Courtyard", "name_es": "Geary Courtyard", "name_fr": "Geary Courtyard" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40530133247375, 37.798251018382 ] }, "properties": { "area": 931.8032836914062, "name": "Green Tortoise Hostel", "name_de": "Green Tortoise Hostel", "name_en": "Green Tortoise Hostel", "name_es": "Green Tortoise Hostel", "name_fr": "Green Tortoise Hostel" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41027414798737, 37.791485548441756 ] }, "properties": { "area": 5916.74169921875, "name": "InterContinental Hotel Mark Hopkins", "name_de": "InterContinental Hotel Mark Hopkins", "name_en": "InterContinental Hotel Mark Hopkins", "name_es": "InterContinental Hotel Mark Hopkins", "name_fr": "InterContinental Hotel Mark Hopkins" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40504920482635, 37.796551231141 ] }, "properties": { "area": 203.70689392089844, "name": "Sentinel Building", "name_de": "Sentinel Building", "name_en": "Sentinel Building", "name_es": "Sentinel Building", "name_fr": "Sentinel Building" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4319839477539, 37.78945493878432 ] }, "properties": { "area": 2216.253662109375, "name": "Temple Sherith Israel", "name_de": "Temple Sherith Israel", "name_en": "Temple Sherith Israel", "name_es": "Temple Sherith Israel", "name_fr": "Temple Sherith Israel" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4357658624649, 37.787008806708016 ] }, "properties": { "area": 2847.9228515625, "name": "Saint Dominics Roman Catholic Church", "name_de": "Saint Dominics Roman Catholic Church", "name_en": "Saint Dominics Roman Catholic Church", "name_es": "Saint Dominics Roman Catholic Church", "name_fr": "Saint Dominics Roman Catholic Church" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43255257606506, 37.784914480246 ] }, "properties": { "area": 4337.994140625, "name": "Sundance Kabuki Theater", "name_de": "Sundance Kabuki Theater", "name_en": "Sundance Kabuki Theater", "name_es": "Sundance Kabuki Theater", "name_fr": "Sundance Kabuki Theater" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40720570087433, 37.78508830312183 ] }, "properties": { "area": 4147.34716796875, "name": "Flood Building", "name_de": "Flood Building", "name_en": "Flood Building", "name_es": "Flood Building", "name_fr": "Flood Building" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40446984767914, 37.790056920744384 ] }, "properties": { "area": 2156.785888671875, "name": "W&J Sloane Building", "name_de": "W&J Sloane Building", "name_en": "W&J Sloane Building", "name_es": "W&J Sloane Building", "name_fr": "W&J Sloane Building" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41510212421417, 37.786707803925296 ] }, "properties": { "area": 652.7189331054688, "name": "601 Leavenworth Street", "name_de": "601 Leavenworth Street", "name_en": "601 Leavenworth Street", "name_es": "601 Leavenworth Street", "name_fr": "601 Leavenworth Street" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40691065788269, 37.78492719900686 ] }, "properties": { "area": 15417.0107421875, "name": "Powell Station", "name_de": "Powell Station", "name_en": "Powell Station", "name_es": "Powell Station", "name_fr": "Powell Station" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40546226501465, 37.786398320912674 ] }, "properties": { "area": 3803.703125, "name": "Phelan Building", "name_de": "Phelan Building", "name_en": "Phelan Building", "name_es": "Phelan Building", "name_fr": "Phelan Building" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41386830806732, 37.78686466468337 ] }, "properties": { "area": 368.9371032714844, "name": "Hotel Adante", "name_de": "Hotel Adante", "name_en": "Hotel Adante", "name_es": "Hotel Adante", "name_fr": "Hotel Adante" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40652441978455, 37.78585990217182 ] }, "properties": { "area": 866.3295288085938, "name": "Apple Store", "name_de": "Apple Store", "name_en": "Apple Store", "name_es": "Apple Store", "name_fr": "Apple Store" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.40636885166168, 37.784104714631205 ] }, "properties": { "area": 40016.9453125, "name": "Westfield San Francisco Centre", "name_de": "Westfield San Francisco Centre", "name_en": "Westfield San Francisco Centre", "name_es": "Westfield San Francisco Centre", "name_fr": "Westfield San Francisco Centre" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.41469442844391, 37.809084653252505 ] }, "properties": { "area": 1289.7733154296875, "name": "Franciscan", "name_de": "Franciscan", "name_en": "Franciscan", "name_es": "Franciscan", "name_fr": "Franciscan" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42195248603821, 37.78492719900686 ] }, "properties": { "area": 4642.2548828125, "name": "KRON TV", "name_de": "KRON TV", "name_en": "KRON TV", "name_es": "KRON TV", "name_fr": "KRON TV" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43609845638275, 37.79726760509566 ] }, "properties": { "area": 1231.0413818359375, "name": "Metro Theatre", "name_de": "Metro Theatre", "name_en": "Metro Theatre", "name_es": "Metro Theatre", "name_fr": "Metro Theatre" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42194175720215, 37.79833155595906 ] }, "properties": { "area": 1569.696533203125, "name": "Alhambra Theatre", "name_de": "Alhambra Theatre", "name_en": "Alhambra Theatre", "name_es": "Alhambra Theatre", "name_fr": "Alhambra Theatre" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43282616138458, 37.8044521548888 ] }, "properties": { "area": 6547.6796875, "name": "Safeway 1711", "name_de": "Safeway 1711", "name_en": "Safeway 1711", "name_es": "Safeway 1711", "name_fr": "Safeway 1711" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.43460714817047, 37.79132869749249 ] }, "properties": { "area": 1204.5052490234375, "name": "Pets Unlimited", "name_de": "Pets Unlimited", "name_en": "Pets Unlimited", "name_es": "Pets Unlimited", "name_fr": "Pets Unlimited" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42153406143188, 37.796373196299385 ] }, "properties": { "area": 1438.6531982421875, "name": "Walgreens", "name_de": "Walgreens", "name_en": "Walgreens", "name_es": "Walgreens", "name_fr": "Walgreens" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42484390735626, 37.805388850000256 ] }, "properties": { "area": 1308.3048095703125, "name": "Fontana West", "name_de": "Fontana West", "name_en": "Fontana West", "name_es": "Fontana West", "name_fr": "Fontana West" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42411971092224, 37.80546937979462 ] }, "properties": { "area": 1163.4339599609375, "name": "Fontana East", "name_de": "Fontana East", "name_en": "Fontana East", "name_es": "Fontana East", "name_fr": "Fontana East" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42282688617706, 37.80618990562568 ] }, "properties": { "area": 1523.4742431640625, "name": "Wurster Building", "name_de": "Wurster Building", "name_en": "Wurster Building", "name_es": "Wurster Building", "name_fr": "Wurster Building" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42120146751404, 37.79483020969929 ] }, "properties": { "area": 2583.54833984375, "name": "Pacific Terrace Apts", "name_de": "Pacific Terrace Apts", "name_en": "Pacific Terrace Apts", "name_es": "Pacific Terrace Apts", "name_fr": "Pacific Terrace Apts" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.4330997467041, 37.79711924419614 ] }, "properties": { "area": 1806.2464599609375, "name": "Equinox Gym — Underconstruction", "name_de": "Equinox Gym — Underconstruction", "name_en": "Equinox Gym — Underconstruction", "name_es": "Equinox Gym — Underconstruction", "name_fr": "Equinox Gym — Underconstruction" } }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -122.42416262626648, 37.802125200234485 ] }, "properties": { "area": 1164.0887451171875, "name": "America's Best Inn", "name_de": "America's Best Inn", "name_en": "America's Best Inn", "name_es": "America's Best Inn", "name_fr": "America's Best Inn" } } ] }mapnik-vector-tile-1.6.1/examples/data/14_2620_6331.vector.mvt.z000066400000000000000000001631521324304754200236460ustar00rootroot00000000000000xl Tŵ8|uoo{Ovg{gaGD(" "܍ "A $HAD$B!B!GBxx<!son:3ycjxa=wI9J9*Y|RwulfG,~ȏ%7_ T0#_;:q ;& 2}(.TOs'oP*A /v޿7{ Ǘ/zoy3hYWdWh~kgM(˿=T_#6[G֘݀%Mm6H|غ(=V}bS/B]>.[*M9g ]BeCH>F[?-|cek y_թl|: ZD6ADžqL]a(q ;س駸+.?r#jQP,}NN_?ڏ$nа0%R_I5^C=Jox5(jxSFلsMq>EL"iOkٺ(n.LN; }*ʵ#6wdv["`PF>!)ÇڔjjN{<XF=w|Cjw2˰"weG\_~}ۤXң3 UcQ19f.oX8ʑ4vEnN/.h*}[وd@HZ~ }w }dmg{ET_ }_JmF!ڪJt >&4Ni~->F,ņ=ѹaUT `C8%{p~&/.ߏ'TmwtjQHz䝑-˞j+чclk58XcV8kmV}l ZP 'Y^S> (Ӥ%GWy드G\8UDnh]>`\VD_YڠsjCt}>AkVvEqy L_ (lkt}1S) )#?Dv*WiW5 ~/EW[Ჶ SBn_ךaaޗry^\c]!xi6,+o!vWݬnYEZյ .k PCE;zͿu+EqDbЩ"2mo"z{ۉ>T/F{nMl@,g2]rE-Uv6}C8c!!Fؼܪxf.\t9ٝMqv>p][ϵX76g\I#Fn(se#('&8XDjkk+jfGtNJ20n/J߾YJiȎN.nwCe8;{!B"riYi. IWT%C\Q> yL*B8o)]vfNr>M]gWOqh=EYnxVzzhH#m:QrLN yKy$L\o"lj^+&Չ4{"re<k0 i-x]>DE RXEĄU36FIfmczFRzڌE~6vE([3gwhc턋S"pǥMc SmE]E}N0/" 3PE:4%nI9ұDʀԄGMxH&|"E~|OMyf´&ӏ<>cƴD=xJ&1lǪf%^`5'Oxf'H`-w&^Zb p'Ht'k֥n5#"qpi3,wD8a)g>X(e1YDiLꆼ.&>F$ɬPX0Kn9\v4&xp|Fk kq yM|ȩ06k91Y.\jlky O|ðAG^^&:1ۢuiclY.̰~?g nؠVk3Ee4Jl`H罾0U^XwڷɌn06 #Qrrnc*C^]VkqVB.SS 1Z0e4 8RS1E$DyZt>Fc #`NJk [k3A1%W?K&5vvEȰMblf}<"2"0pU̢s!O*&%{KNYIIM2t[D; +H$0ȆOA%0Iorl҂XyMD?FIM\X_/"QX#x+b5 N`!6I]CD1q;$Y唴fVHwˬ(8jaq1HKM"#5 ,#Q%M%_nNA&_6f/b2]Bֲ:IȢ](Өt}avb$>kYh"T. v!cfմpy)׸uƋ2n'LW4N3^64p̝ -wB8e[0Aҭ]\d46?-k'\℀+i6YQ ~n5Z`y#BQJܤ2٦ze =;ßf[afu>v%FnpNd(U'r5`ZϠ2Wn Fe(M5Ln_Cjs6eg^y!gnN:Wqȩ |z%s5y/6Ջ\ƆÇZsY,c]B*OMqp:yrc^@ 5%_r8{VoawȖ7 .)kXYUJ„U,8H=y.GYrrQ&S[rH<ޮ;_."E,ʫqf+ةϹ>3lbӿ[vlr,Yʘ$۰mUAcWQ*5V w:}"Q̛s={PW& G1'r -joQ̱e 2n{%S5"3DӲWY6.:|ttޒ{kx>Z&-8P#{lBpMc$oixs~Ll2h35Jfd9ź-T#gDjRܻ4 'C~Z"aVhN(fU綰&1)Jk12p"3)V|4Au:y(ޡ8k]B׺2? 5OL&}:kCΰIM`f:k)5WfxrMZ@H2Ni]%.v g$/3+B#8?<3]hdu3u=$KM4rK>rBtoIvu ?bsD+(J -)UcnHk]t XV+pV率Vk e PQ6w2M"WYn6Jځ5cjP+ӝqk ;K t>dž~jRt8Ѹd&zP܉0 e7M)nrS(E?^̺l[H GQŬ] guFJa^g#y-V<Ԉ";tH2BYSgYջ< t8Yu 2豞,dC|o[洁2^qA=.S#ک|AGa36R>щ;vƟQ=; DMVX,@6WbfRH`[<D[ 'A;:cԠ4]:kv#QX;yR@[(zhoؿ"+H=:$8:V%[<KFE0#PcR x&QI(e+5:hv‚"F8BfAC:k.QzkhCLMq`ފwz{-m+Up4ǖ9Q:^k.9mO9 X1; 5VFA8N)\\ի$ǨjPm`(YMϬ\?`PYͅh6&S{:WF TMnQ@s'B k͡]$ I嶟r[Bc$/ .j]\Il,: r;{zCL&E4K*ʈ>^q/V 2-QSi%F'UF!*Xv="0U(1({+Xu=͍e;qc.ZrmaXA}/H)Qz'E +>ꁪ]s1|X_LX %o-G -A- GctK81%Tܺ Q 1qp\4]BIqOY#"N?萭sbF rn*^"k90 =|磧^^(o+ ˻Xd*˝›^4D哝Kb;PTLi>#|\ e6VwF/FZ?Ո7v_3tqs+ʭֺ E]сZ Eyd&QWYJ`va"HX{+V 9*)^8A XX;iV5qD9 X@L0?fK"/@Fh|CkVYOp|LLޤ(k422SiTX(ОCqpӆ^TJ3k_5,)׻eґ'ԷcMFv)$?DzB kP@ͫmFD>e߲B;+!0=|XU_\N˄E2Ӣ&f>ٹ:W&'SRsvZ "*ιz]%'ŬI]4}4Z)k{!wQ! #-K1{PѮ1N+R9͔aK}GڠPhU-ARA׵g%+Kd/t4'.EFd-#Q YW+i̲.H/֦ސ;Ԟq /С<S;g:|1X K>ҞNQmh-mk{m`<,vx'Tc:t8hǿH|{*V""A:3^S_rxf5aunQG6y rLwqt]j&*Vq\@#o5{+wuU[$>AyQF)XJw){CHG%r aKvOGIG5T1BI3;uA{§hչc 'Z0V"bφ1Wt)4|9vC6Au̍ <$>CZ"h|M"OoZ'rr"P+)n}tV>[ LwwGv8b7w3\BY8UυtQjC)4NPA {bZؐPPS<-BAYQ'\'^"/٫:e/x:F?1*N?E;9W븏 Va=DXLeӱ! ^;S39; V_&BW;ƹ@x?VҾ9kkbw>L1W-ݶoB0Vޙd*1b 5+m]C}G2?ODvB4N51lu2*'l8Pgr}ynHnP6uLe[giE֓dg)ԍx}5: PChƯӏ2zeULk93l^5f1V"jB73;wezecQ 4w}HV'U;+C!VF\˂<)ýIp:K\WvG1[r۠B[|q!{!iV̬>?'JVڄem:r.JPW[B9ϙwn#HPJBJ}е[߂4_6W%b:kv6jgVXO7te:N,%P+#/z-1>gȎ\_"A jZt)eyy"7x+Y'ߠm}*ses:XG'yX6Ӳ>ImlZF^n`"򬮝]mrی>Du^ߤ74]4' -ц#]/x᭄2*>rp.Ki.8o^əAm^vanCvO U4cAennNOqg (Jޜ` Ԯt.gx q=TK]lR[n0ϱjO[CXw{OQVP>n\Rflqe3*om Ofe/0|Gf @塖Z\H/)C"#sN C``L\[9uk#[PN!bmqWB@]wo#C9?kUs}62= *Fg׮M6#ֻ8l m_B Ϩ܇[d5[  p}aeZ jsnjYrlj"V! _cc"d+1ߵ޺67ut8YHܮrR~[c}ǾЫZز8E2b%YoWU] |chU`9ԖY˼CL@{x\X--TϿV7}{Z ^fA.)3bxe݊ piC*yq.jxݶ SB$081n?*[!κT)Uɾڵ˜`~fey#8Q?Kdvͺ|Pk e}[|9]馓9}-G9/X! PqxU_Pm-2ER[6Oe\ݕ582>Lt▰8V>@g-h:uIg/ LJ~y94\>p!y|AJmO㹼o#C!# fLSIIaU1g ;3Y%p+Jwn<4 ]yB#\tgvuHv?9YG)kY}v3n\ |Ē.<'6Uje@7Q6`q=I,.Ww=U{]jƿ5ڊ݋Ʊ?~.pGg$x9.8K]13S1]z 35k jG6ǩ8g[}㜤[f,/o^ٝ]|r= !4TbݞĜ[@'SC!IMvp ql_^?(Q,Nҝ[ݭA鐬 틯 xmY)eQR P J^]/?3 PBsPЫicBJ^>{Fr=S wbWH@)\[An(; |9XNT,6g(BDJFmI=5?8]Q{EĈd`;Fg2utзS!WS3u'SbU  *1Xx>QaB]:Nږ*|ҟ߶{P;1Ń(R2ubq!r߆uTɳ$d@in&FiHc"7M'/D{kwD8V1$) _6VØzIsIբq`G-F_hFŊ$.2/YwnErMm !R#{á˖$on0'UKo \F^q{Xt9F6_ȈX@MaUZqRBdND7ye=.4]D|iOaBN[6t,C[u_ 3/al LwM|xP'ChGeT՗Q0<Ӡ07;;ԦzjU(vtCq% lNd.)7h}{ePU줛a?+^fhVzm}+|̢u"z9]6Xw󅷉oPN;wA5>P- Tn6Ë&@@sӰ2uldww?,"VVxreL_}S&)[3~X+1d(A~C).jw)]ΚК}9 ѺWMW^V祜l Uzdi.~Kb] d 1RJ# bYI~@9n] a|Mnt1;zPML3R{{e^SF[.$+NԞd[ج)fO lh 2;ǕscN^/:pl=8$cn*VQ̢PGlUǼٝ_5~9554H韏|4ޅ~ 1W0rwS>ߢ|/5\շ2bLᷭpض!2tT#jE'uNɔ:Yln ߡ{!~/őȒYyu!Ks,b[g*@e; y)%= ^ص[t<hgt7Q6QJ kze( E5-u`/f6S2 mS8j.m љwnuz#wBt ,]ԫg833xni_VY̳ӧO) , IJO,ڗTDq@\ݵ4%~>Z?9 @uLM1}^4~o SlA)6R !ON:c3'LƄLnA`~ T[/(%K3`5.X;l "oo\ƩQHbꞍ5D (XP+,ˬk CeagN5ۮT]UOQ*%4lɐO& v \0}9RR ؓ-oH(E0t\\^򚶵JFuhAEbAUYYW;N)=;Kݥ6uZWoǮ"ʽ㍧.yyLD@ e]|~pQKPdsn ;:amX# {഼%=FHDSIdaE;0K WF$ wuuj)c2fJf='E(לӒZN)BB XHB7_D OZ bmVcK-\xL"%jtOGK/ЈXXK$b܏u8 ; %Nt!d#Y^%Cm׍n+\o:Hq]~իIl5- _VD%ͮMSv5(WbZd*jUvUաT)_pBp1 G@ }\VKB"K*़nF%|Q-ELԫJolW< 5VMb}rC#D$(B)qw&-#6H-1{ԐMd&bIb? lJ]ɦTii=f@A\SbC ō}- WhCGUciwSq~}dxD'D(2lGK*#dJkI8I1Ҙ׸T!pK xg{5m1qk sjEN{;N7/Bhm5xݡ@j/X6iRkQqQH7og fg EK>ݱI߃fywMJ2,A:7jO|Xq\NnQ ?6]%7{m.SRqo||HUDw!f+ґ+HPLJ9cNͩt51>#;ˢz#zjpC$@עLV dg =X}TCry:^m Ril&෩nD燕-Y eVBy)aVKagƭ%4TH>`'b-xm%^>mЦf3cE%7- 4(4\Y0nskȥF_"8QyNܪxTZ#i\ .Bv'e֧#Ui-z╾ %A;KDհC(p.Hн]FJhXBHl7, `@m\0&A1QĨMem&ʺե [/ƗpĽSϸ'`JlR#Dߩ%wmϹMn6# J,gW v| ê0r0L0l%[yhx1|zZ{$. SIRMGbD}+%VDr6H}Etu> {`M<&)Qf^!}&%oo}`DKk83rRIy2 1n)xG 3. ,X+L#/`-C>#Ec/w*E? 07|jU#9OtA{A&&/X[~錅/peq? F[HMXvs"U`Sj oeR濌ϭ%D(oʭOOXtmg 1 *kXy7zE`E>_S׼3x2h_oWlf ?.徦w^ wki?@covmyJ#k8,l>n1 BT h ݊vE^8,%v0ֈ}u71D>\ClrS9B$;CKG;WWRǪJ#`Juy{]C~zS*|_5~oDm1? _yګ Uɬډ7ʫc"0ϱ9X2Aңq ~YN=?ܝͥ5gZT9!wKW{9|R:45~ky][K[ϣJtV+$.m$r":?~𯎱8*\(SCXYؓ'{t곕$n%?.o$L-*ۿoRqGc] -7-c7nykle*!68hcB,&C>%vWܚ7Fm&l]DW7^y;ZBY([f+Nt%]hJ74`k?}d|S=~Ə??[ݾYwJfk6°/4yI`m"3~0.V7Gik(ۄg2my^7Y=@7ķ[+P9:(.W@氐|s̖m}aGX JՉƧhG=,9 M"_jQ?g >S:FzvϐoaOfK?Z7 Ls'l+_S_bk?e0,7Cm;TZ XιR9޳~op߰m j0ۥ GF`dѻC՞Vv<k_EUUR.$ffx:IK g&+ HN"]*d\s~,s# t|wg.oAk5xH1Je_NzƇ:~^Q}Q5&Fz2,dUlp9_ɲ e1_o憯XǵR89 T_z{SDh?J\vv&/&oyo&~>㤦wa32?KU0Xs:f%m}r Wah^o!ǧAoqgRj8xn% w͖,uADZaTo?>bΔsl69零dS6!  -  xzW7"]zo"]D@AD %+i89EFbfimveɭo}+h:z%IJY/MJ>eOAqsM׼ nf"{(V^}0 oOcHd:X{DߐL12YftU~w[(;?;#ul%s.Lf 2d֦vwn0XǤ\d&JcBs䅯SItue,k4t G<(*N8:Prbnu.H\5_+VLpV`&BBlwm./{HP:'9-i&cWlBձb;K)c\زRxF[V$(T+[MLq/Ev b_URXqaf]*K?'mrKH3avE="$I@ʶYV2A0JyN cIhKu!-\:* w24(`$g+1s>[m IR/3]B.X,h=t`PvGO"-HүIțk?4.-|݇)ϩ±vI f1"@i*8wV_ cբOsdkQVh桶niU?󾢥_C5`+Zh\[>-3Ge$EAޠ!iyY~:4/d+Q(鱭ڻ c[5JJE=iӣT'*ߚEkE!$8f]\u 6WVYk;lf\Љ:1}~o(9|4' 7/K) %!bjyIL(Lҏ±Z۸9F6DAmϟÞ.$n5Q O&h0f!5s,wPv̡9tfnPc#JӚ9-u.%6D,K|{$ 9W4[f5)ݵ-dbhlGigq0fG_#> /I,SYr;7I9šrPˡzp au3C{QmIhkIkܣh2xoIϝI<ߠ.v;-OX*vථgɋ,YS ϝ]G^Tƛ6Fe7jE$`Nd:+6J$A)RBt9 IL1&#r\C:re è,w"2h-kx;KO[c.s~ӌsĔg'𸘨ĈD[6SšHYP4!ciC-קYk}1]$NnMr.M5RfQy ci:Y8$nOJ9$ ]E4OH.L3uz.d} H1<"LM8Ct; ,*Js/[#Dbu R$%FK%cU!OBXs7OWp-kvA2GqF+k FgI~Ǧfg_],L#F1КGh/<cz^f- F$䤥|kRS*3}8۞ i(Oj;Eb]xen\)p&O7wkqaµWU:foԵx1YW.Hj-kc=t},Atuf u$,5rnO9,{{4_Za + SI%ZhO8mN_^Tudc eHKH`d7F_YR=Z`PD/6(E=R]kW4g8=m5ˊU-K(5﹂]E"ẗ́9Ķ;C=-ۭ_NvʻfM`QH=gmCߦDF7o,j4g_{CEE+;KE=h;g&(Y4NVIy7G-s wURx% U (`Z=SAAD{&bsye/:z iOagۍ'l:rŒ U7rOUpXMVF5ğ[~&f8eV8R=z{? C,a$s#/LM.i3W:>5D q4'qB{/M` TLeZ+<.rS-b4r5BAt2RSgJ>J'1T%Cy0f9U5J%U4OY O׵d>xljw#_:u[_4`BGsְ`c\rɌ1v@'G_QgG_Z qz̾fVY2!QLb\5마S+Z׬9]0tT1 擋(i"r1CN$Y#s==?)g/0iVK7 nvPo_Zx|Z3 U [1w?XڋIݡcv,.йELhWSOμm?hƁ_qw~W UZC|M{G.bmmEWk8wDÌ[֖tIyzYZPOSBCo[3$mÕw3P=+[$ / x-ZtcO 1h 9^1 u=4;^}?`_׶H@* m uJOT0w7g./S^i%l0eYI'㗑Zqkx.} 7A/tC'g^H0nirӛ gJ>iŕ/.A4(kQsA CsFIc DA2̵[Ssp5߂hnIbtCǐODhUFr\OUƚ10-{Β$8iI<7Aa.4=EgGsrZ5pg[TNbit~w&X"n֒ShM鶹$'qO>ڙlFEo8W;n-jb9oXyę*SdEbx}P%{7͘(qp",6o(KF~Hk{#o87g4B2*44˼f3ELv!K5ϙ-cxj=K;EΠWgZۋ$5o!Yl&3Q^H;'Ie9ƣh.5b\HP𘀅H!6&rL]kߌX_ uuJQLai .P(H5xA>;~Us3eFt-.^r=UZv''y(o4$e٫MM=zEzeZ"_K7jP'f#ꅼ^iPwzϴ$WAzlzu% WWIxO"5 {əzITFP+v:IN#TEfYvNb<:\BBv\T_*ww*COu>m~m64yR"{&B\)1NB:IW]:֫^/qq%ryx>(B1FORG?">2-S|B~B˼Ax"hZJCA{UJU>MSIBHHj'uc&(CLăIӘB) /f>N ߻zkqʧFT\tQ+`];a]~*:m݇|}zG=T`Ȁ+*>ާVE\+˭iJ&RfPo{TM6|~T~ǔ~C4{=*8SPfXumMӧhp:|s ¥3e6 kViRyOtS>NgϽt*ϖ=AF8Mx}@}+H^#B0@] 0|_ÞSa/5hM+_QnBn`STm s9ER>3"DJ)3 +y2xJiH\Y/J)AJ4̂y+EB !0+P*NȅiHdx&ȃmo@d8DL:t."onk*DF@,GJr\h5H " e4R-"}Ad0DƈWby+NJE@dDA9SrNy W"㡝 ,'H r"C!2*Ēx$'ȍ3 b.\0a) ),Jr[TlJ8DA<=Gqɷ?uL 3 9CD~~$z{%[vFBd6a9hU{['OE_׃ >z1Z!{huۊrC̐u etY**]r?د1D;; *nP*A7@{S)h3oŲr(' ˫zqsJ.-~\e]]_ ҧfu-(jAG(qhQz^3%L @|j|YibFkU,)Uy}j/kYn{r>.MQ!`ٻ0Pf-š չߋe*'16gXcS8 *:,갚xSV VE38̪h&yԼ*_j~_* XOFߋ#/ˋOU/?ۘ4*dpc  V a\t&Ii \m~5_29AT>?@ eTr~. 4?8,`?YNk2AX~ؐl&v?Xߤ`,O~ÔP~7C8^9Jh0?GR!0m ™ithiw![# kZgSG PYf*xF> A >偷D` 0A87dk~_0T3:r!탏SG'nnYҾ5~&.q)aTD1je c $sԴOO92L<~zɮ8e8ԍD|ޭMٖ%wcOV?KԵH.cy/՗WCN{$i1ͅrk@̍r+;݌ԓG^%fŪۮޤt%yI˛ٶ$$b%GilTqA֟tÎf!w9K6 ^KTPVU;SL5JgU/y:.sd^FuVS'*:jt@XA wVdsZdvu-XH85:ȮLU78*;iz@Gڹ_g%o(~AE|Wv@u]XE"w)&eP'-_0V }>ٍ8I<)0!4}"\߿w !qcQdOe)-zROg5/5SZ h}=ɟfG׺}tMkszC)ڋ⽤^r,Ri/O}/Ca+{ӧii>/͠Q*mn=C>GS=T|t)mEAҾ/+V oJ;}=ǟ="?KUijoжN??w r#i0 :GTu0l5ۃPG VW%u)'^$`/rArtzOu) ?kFۅ@zg,+Xe'50\w{$$T(۹Ҽ4#L!CG˓z}O<S㱽{)1~"l჈4ȃHUoe*kg ++;9;^G2z, :!!"!ի>g G?t~;Y9>,p|qvdk+g05xaD NBG6DI䑤Z9O5gؤʣMhGi4G*X V1%l,c4cM׫x>0Sy넎#l4L 4|91 ZbWwQIN&l2ᓉ4ȓIRT3N1&JBADzo'\ ⷋw[Auwp+6.a-fG%5P'a [Lb"-&V=]VweD:HХ-%|)y+m 6o [4mW1"} z J },P.]N VH+TOÏ-dvQ2PU"|Vy4_ V^)W5R&k-6R^ZӥTg%$~==Dc_Oij].@wm$(I/tC(quZ[} ,PbY6XgHֻv% )k Lf"m&fS0d+9+i[(DSs Q6[Y[o~#xU4}AD`*r'AG^#BX+4cUH.#`sB#t'a; IDin4s f{d1TMA$w S3m6aj?Omf6ўvj"OXM@H# !#t?a ODo iz ;`G Rofӟ@ > "}@bǒfOG[uID7MmuVӼekm4GzT)^>5AA $>n ´0kT3\FTC%:H€ҍ].cqFW?7Rp.R= cy߻2:@`lԋԘ$mb}18 "c`ɜS L(OH/_ERd P:WܟIzjdOb_S$r IN57O")V' ;II"$ɻURteID]r2д0дiOa_  q|RZHn洯+BogiGa$>>C|)i|6_i}4wuYggMWk~5҃V^_"k__>@> ^05PVWǮHY^ENrp SY8v_ۭB Ga=ǀY;y<])@0Ȗ=H " EnO=Vz6҇`U͐Q[3 "r5!,d,~%aE[De:wT#-@w;7EϿ]$X!wtwI\Œ&oR|&SMF?Hfx-$4Aleg6Dݞ# h<'3wmH.q=²ھH9Ow5/ kl0僩4ʃiun$LA> U0PխuIv]dZA0_X:^b+EÂN{ A}z2` #.z]sN~bGL5WGًFW('9HnXJ_u_T~V7B*7񔍧|P 7m%g|E?W7:"C V`YKѨӉ5X|=j<0HK$AM4}g3 (3IL8Y#F6hi: ?cԃ8l g7$A0ܽrWS=LޠglDU98',>3a)SRz#SsIY#F=ޤXhLh >|D Ǚ#з$PGBNKj&ZK}y!|;ytx?VOA~7/-JJgP6TA>ɲ%n^|Τݒus&4qčO J/)GN߃CIkl_~`?q#9vN( _wq l@xNyڿ2!I|G"nfS7.H6s~uHCف (]HBRi!8uPNi4q_!$X/@ ! DbSi1M.4+e'z^2F9/$v5 V5_Agɵ`K)]F2ʗQi݅kC;i]pJSTZNbl%B^"o+h?^:g؁+]][?vC8>oBtjN9#ٜx)]CPi ܭu KUwH"EA Le#6r "U7 Wx}GM Sm*K*MA ߀J #.n) #qnݡ3[h=迫`4YvpmX0ڀ 0y LBH$r+(F6*m6s2漫Lb33)4%IĶ&k!əCH=0n-A}d {)%.l{IA.wQiwYk~!O?>?`4ҽ|/Ry9;XH`: ]^l?g0%H3zfxbj##΁#ɡVI>I/"B&+Lr0@uRۙ8AѬŔDuQmQ6lB 0< 7^$B` M-$BؚL8yȊ%I}'PDSzQ*Փ̃)b jeզ'q«SI/d!&_5Xwrn PGCTtbB7 Ejc&JG&2Rj'uE2WBɥEF3\.S5e_S5r7MP5z _&P׷]kOx1o> lHwRzk_5*_3ݕm"T 2!E$[$ZZʚҘT#6dKnC4b#{tT.$h K6Ğqo wWa++}0d+1nX- OE(P˥O_[PlIf2$[h/X1ωo_+mvKu9$D-Ly~)`#ќggluRCakI5{,j ni:k/#H;$y87-7Z2|Q%换1"! #i&tTvLNW0Ɔ1>IØIS<XDw9H}̈́߷`s?_;q`{Fo1:iOc4&O̓xwq Wod)"m-~8bY`:it RR+^{P PQN@gea#{R˙ H-3g#Ӡ?n;8}Ņ`+5}e}d w DiY FZF1uLZuڨ6{{w1qgtc LcI'B&>y+b l 4D!o76X}0U0Lz@|nV!RnnxE/u0~I|UIbzވ T;I #_X5 $5AQwZjw@ÿ1Z!jcs[į"٣h Z|Nd,< }H>)n%0'%uEJqOQOgzk$fDBK QƎ2~IG| O[)&O'{7O{:Ğ^5l2 Sz`NҦĘ8?pyp!;SF3vL:wACD> :'+> :G6v7S?WHx=ƿ_ ɀ4ӓ+.ِK[ I8&o?L S0e;oxbZM Yo6 fH/x=.qݽ߷:i 7=` 1z ݩv١mzl7}Ow`|e (|,>~:rb~}0Mm: Zk /Vծks /HC*͙hz!'əC=ς瓉o-BDt6#l$-E[n:_v/{N=c*+^e*WtW\4JDBCS]ϻC@0NSM\Aci=J&$RkL *FH*ԙmxuHOkDg!]*sݷzc:+m cbQзvڂ^Ely0Zy W?pKrbfwO2=q[whH*v}Huc ΩĖvҠ8SMn2~I7|U'qyL 34!- WٵUܳv2|j#,&%@Z+nbHnSmMabADA? 7c6cͤLͪ3{?(ߙ-Yx3`uuiv s\(}JRY`7z LTq3$Q5܋lbJ*dR%+=Vh`?l烸4˃x5u<)mQ9`. `\MEE[xC9P. P[MOEJ[t8g9Υ\nb<1Yvt޼ۊn$8(.(^]a0cR1u4y%R_P Z]@/q Ut,gc9˥\kycօΝgOBr([LM JGlyą'CW9|Ks&s,|Oq{:5A7pU4g9?ͥ\>m1^,MG05B%g8;.sZJ;i5I;EhrQg!%*9q~K|nE]_z ].p*S5\j+/Tg (lj;Yȿ8k3rg jGCG~RЯ8e/s2/59rea~giC}dL3nM%~K';"Ԉp{(1W9U.]USi ]O&Y#FgFq gp 7wvukę֋,Zr-r[.k1*nkȉբ.788Kq;Ek/?p?p.`b'\`}J2&?r#?rG.hVv[N ZB>[c?q3g?s3~wu ]ggOWyzٯʥ_bSk[HTKz8߸H$}tvV|vnKo\ SlA͙\Ƴɔ~DL,`E%.AABtV&ly 'C9 Ð; aniTE9#;^[ BdA :C xc+s='cAw2' {r' < X[Wk,Af&$ѹfq0@f()CrCTl((LDVdC>!oJ|v_~}횎vmyO%qoBw,roXH|;lFY! G=2l +<$+hO~ wnNgS9@)dB)O!zj[ڪL.lxx}>WI(͋+2~} 襩_ZU){(j JVBJ*p/iueu Ҳ-c+I`uk7{'WV sp$9?l ȱE:N3kڜ]n.u !Ư!o 71ո"TvO$kio! w3ْP ^t=d>@>@?L"eGd=2 r '#NV+Z[Ijq2>C d@ _ b*ʷ)Yh*B+dB+_!j=d?`,޳Qoo~蛩ƅ8N h;s;vGh<^+ ̇nVj`D<1;qDT-z~:7]拜'!f2b'#n2lP|Zf<1S;qSTT]Ϫr-N lrLCtNGt#4rh yCbg f&bg"n&3i’!)YوlfkjDFs3s7Eݩ<8M N377۩] QHvP,DB-Dp!B Mp/3x,NQwtĥ#P ԣIn+2E/FLb3`B&tIOrI; ["%Yإ[R~TތXp!&D0Lx|=BR9#& YB0 ,vTvi(vbl6a fZQBD*ĮB*W!)k3 W#&9A0k&dXHX]Eh U'YsuY[z֛e7뎇D!6 &E0\sz}YEClC(۩`!"*q#o6"FK[^[[Krw.-klsrڌ-݂-nAhԩm4="8*1-@\T^2 B`|LoCvnGv#ᄚKaϝ"gSav f'bw"n';i/F/ Nwl)-i)P{=Z- W)]E8-ǑmaBiؼQN.̇Mq|#,XqkKJSB"XPIޒuȶAc*A10 r L:b%g)C׷<$n 9#E+B"Y|KEEQE(BGpד#| q ܨ 2>~\Pң-ƌ5cd࢘SCse- .c9S;)N[oGzJ.swa( F ;oe\3=3Al%}~.@xEq1{q<9ֶƫTRĜGyĝGDC"D^wMa?򐺛臯M]C,[OVO QЯA'W6dj[״uv} B_3vy}@I*dKzٗwþE8ӱ:泠"WDl%*Daod 3ALbW`BU?Π dG|n b ozcV:r8A;ľC;!΄YV{~:-/}= 8DŽ]WS%+xL{5Vmwo^偒WT}4 PS#/lt;ƅsY9Ȼ4iJҢI=Mp>V)*b>#3>#ϦH@d`v P|A̿q"/Bl/{X8QE_bC^jr`Uow8FE2Bbsx8GySAKL-OI<;&p&Ռ"s;;3Sxv MMEOm#1{46' *zL<7y4>Lx#OGH-߭˳χ\<a&Y<7x45?r}gKg9<;pҹ]0J), -`.y<7x4ϤCd{n;+Vr>,< x$Ni-~%xd'yf1.<\̣&!oX#~[H?9}>{ q8u♥0G&uKvu {WxB@?E9s0L@cdqfgzh.o%ɥr:#^GWfVyj0ε-)r+a9ʍ5ε p9%yT?d!nv^oX.&TOɳQ.['j/\ȧjK˵esylػG%qGjwǁbD {lK@Gm7V:j=apCpqǸ>%<#9H#iE*o/ Tuw-[yKϠ9u|%O7\q,8\.KkNxJ$^gc{S#\&xJ,rWUо!G,s}syGj/|ohd2kl"\2Îz3/y%ϽK4E[".0Wd7~c }042d8y_ʡ!v8@b [sB.~,Pn6( tdZY4n.-32罔kחwȇC藆r_2x٤K*wl?o!mg\ļKqVxg&V[H _?0o+ʹ+w m`6i -C&RYqY! s%_vx3^±*ɧ(Ԝ/f"2^N)<-|n= _7pH@#,kuĊ>B~-dCw39s"vP\˸u-[6ig7ob.C\ 3OΓp$p͓T+ 96SIrvw?4١4{ɷ_ WK $lHOx5/k8bF,&,aIEH哐,%i%?nAަ]k>hi(΂BT`',GXƾA-"-+JVkM*doo6s*oܕE[#g?)0bט6rom]51z`Xx𫭤 uS[vB`#sҝ$O;ݔ$uڵhH&_I?=? ~ܶfOI33r[g}MW4`*UA1ɸPE;o\q|@2JfKUtW *L꺲6vY'IP}c`!̱>kI2ay ʑBRs%cB @wWAVvRd)&}3+3.d IvI6/^$$CTut2BH67/RD_<$̬=`>GPA25IBmM*J+"Ij^U&W\VFWd8gָ¬e!Jm7IѨ~j-Ɣ[քOS&`ȐWR1fޡ6o>:mj.Y'(}DzGXt[ulJ(b2Aa3j'cad|Zy,6c'_5J×E,ew.O@תּ3&r&amBd[3>Z~&NOF!ojJ LOt¨V=?2揍h _B!P'mr\YJD)C;:n]WʐMew*pXmk=#6֋SG&>s dn 4I46JAdOp#Bi0߃Kr}rgwHKPsbiˢV'Mщv18T9)7n,F4!g<; 0Bח ]!VҦeF|w?JzN5ZRm)ͦBF%pCfVjBI.Ct#FjmclϤk m:@bR{j933ZgSFdlQmwmDa:\C ׶h YDŽLh|iG9^l6p|;1 &-9.8j 1_ŮI/td }* u:JxZg''׭lHHVvtD@Fmh"MFn*I}w;@9;R˓nt7-RaZo!IMn\#Ӻe @$~BҦMrlR/Ez{͚S'd 9ZXw2GUqڿ8 z|]lJٕ6}ʿe!1HNV_{!r-cRuê+PZ;ArӎyBraFoDYk639j}iFAJFf]D֎PM&{vh@ڳ}Eb_9dqp]cC+=ц[H>k}|k2* {|ib>!210N=115 w8uI'rq\R[E4]]GGiOSձ5 Iu?=!S<1=m7%aI߁6wH_׏pmԁ􊋖7l ͙zw9ퟺDQbk?MT{46$_Dg$qn{ͿqxuoR\×={ɻT5ZIڈ[zO)ދo__I;Vw,oM]4nqBrfW/sbxTMF0heKhDꜞ]'ב$ǧuyD*pNǮ\]g{Rιc,KZW .JzKGZXrٙG#젆iZzu҆8'C'P;C~5lEDTi/5dP4YL:«H |᪊qDQiެs؊I_行|Ju*…SΤB 6_OK]mp ɽpi \Dev!֏Z@fY,HOf(G Y)^u֨cgIM?8?wkgiTcgO$cq7؄;$$o2zO>߳H3P4z/s]I*ˏlK%֑uK :&ER;(|խ]O+i̯1,Ś?ZEu?j=ߴ|4CdV)O*\S 9&ؔxӆt6zYMlBt=HÕl=0MlXIVo>&)Uw ͎84ojxQ7Jժ=XgFrf܁SdؚM5#N'̣1{Os_$p]AiB$1pF$9ȲF4?zǒ]+^۱nC_-i+ao G'ٴ:ot9ߛi%ìH,;"oLϮf1g|ِW^r9DHvpNĩ4 XwVT*4Gj 3{yιMg Tt#M9g$C?ѝt`5]힤~cuYWBĪnyxq֐0euX.6'E-(F/Y 6MI{ Ioڒ oVZ:J|CzI+[`|h7n-@:.Jj/ڞ91ǩR;@ [sbI#J{]c.C&|ony-b}w?^!$q&|Lvo{nc2O[=I"B*Py- 1Fv =J~/^izտ7=IgʯdniE >R4xqcHUg4* 9CW 3kպd Iޛt5"ͮ-OZ~Fu{O"N ВPEa$qsIjO}8HqZI#? O "蟦jšGZ5 }A 0 &1RÉVii;I(T  x§Q8ޤ-CJ뽘.m+4Y7,ue 5ev?N?nf7' 2u$.!̲\OIpa 8z;X@_h 1"5:o_:6mx 1Ъ AGRRãOď ^Z~馞Ǹ$fbIGyA[Mv-u&OJv'~,r rna0. O'[\FrtWRFKO]ķ9R+yzm҃teZ\0ؐߑflHkRvvpt-E``B"zoX',b_LV،uE4*t|!gq@CWNUk2?)7:`3Ev֪0;@0`e]sr L Sj %67̓f!☣SNEN#pV1.R9Ԙۤy7nsl^j:%RUҐZtt^Cn1>Yd#$ܵ%XD2%I}+d%GTi摿h $3/Ѕ0]+il5dr!Ut:JSaΧ‘}IlNt}i IEIGB!?9Ѻ&ˮw8D4 7yAj>^l |6^_N*m2jd #}>xX벘qkWzBɪTy^G&jF\&sf}P:aq=z: G{{)&x*Su#䣛%n 6Dؙ5:'J'Wπk[ "jc8+&y 23/A/.M/f}<u5Q8H58v_$ҧ"^tV:׃ %._j)Ze2e3gdm_(AbLSʇ߸aIa1I:G"udaH~c<-pas'Nџ4=9__-0[ͅڥf.GGbq(%Aswk4J6x< 컩% 9ܞL7D-N\&ЍtM%0oIcG^6;؏!ּ{㒫FڐCLpmig:0Cog׫VT^3[M~Ƌկ2>d#Tcƪg$ ,AV+Ŏtvu[H-&Ykb^~oA>aW_TC Q5SfeI U0.K)0=w|[:m<'鮋n1!5IqX|uc);Oou[A-&HXy({ݺ/5'L+B4$MSDSDsղ$-n5S %Taի{U8 !U ҫ Zyv}%&{d([,3!́aIizY\A#k%~2ZE<5 ޸*C0ֽzckDG(yiuq&[|ql%nɇLU <膐&e?r+ά; (nq "|oF.{*Dg3ip~-ڽI&HN886L+=(UX5PӾkdtFP=]0uZE^dmU=#[~iG=|A3;b].b>z oڤt:jJ-,\em-H歗 :AP%(ӨG$+4vD/%;WN6ޟRp6dR+d.14 voon/Rji]ľ}\mF. } G~ X)F`c';rBce[Q^<&'Rl>" GiDJqM'0ىξeB iawxՈ TpW ;]^[[u۸q!.[6<#l/ZsnXVևF jjc7Svyv"pФLLUg1vgY?jiuVlܶ\L P0Dzobҝ شƍƈ-1P^uɔ j.aʑi셿0(TO_4s#{L"?Qt7)mmTD4*Ai o.wH(jc'F q9nxTx@z^Q}#K.ʴvm0qĢ9 ɪP|]Yi4L5Ɖ аh~0svii&|mB=Sw]mG sŻǶs ;)5>=Rj4Fm4qe(zEs0eHՈ%14^$|$=JTE.MmjK=Wg|HZ13jDDCزԔz 'hsx3#0ou4EWDn*JހWP;!w@<:>\ނzsT:!b<\uȍ#J9f[V Dʹ9$Ta(*8%Ŀj!'>;P,YwO)%}n@kMD6׭WZg|~>.N `Hewbb>aڳ^ن JBE:nSBd V[=렁,o\9vuq SsPwnݢta 8 JÃ8)yftUOK#FXaL%:EJgp ]B6}QZ ! Pjq?^+^btԜ.Eq3t.DΞ +Ad+bf7$suZ-^D.H5I-OWS[udr>z$}V6ꎩlLvig68 P֍=[*Y3jSlE# l,ĈQbEHtɜt!@2[$}Y%L-z߸MP0-6źaX¡uts̡kX~Džޓݹ~:O%s ]",nS7[HoGlF4@RfOp$HfIzio2*~ݼGM>s5žNڽou,bNc%'LۘIȞKdgu(L[j=$ۂ|ZA0îdBr[8^T^d(%ML8ҋ\H~It)RnK3onKI?!:o]hBrbۜ mRy{.|i "Z^әtNtH"@isk϶ }C:KTg;'v;݋ԢÍ7]亴-7 捧Ѣݮ?mׁ?i~ExL3AGڲ-+q&4\x>T=lMBܑmÈ&6'6gf K\]}~;N̺qɹg^I퓙3QtIߘr")_7s WF}HKϭUZč䉺3DUfi48ԔYN{ 2N?Om'KS0. ` \ aIwdtf5& d!!$ H8LBgxxc'kb7L"RFJ9)JC0;)2`Θ94'첥B1$ `X%$ r1? &Ykƚ次5$`ز-%7?,$&ɁcqvЎJdITdj5&!FX`R-Pjڤt3d)u=csОd+&Yaerua]Bze51pdYG:2L$'8Μ3tz&bg>%\v$9&L6b_$;Lj\W֕stS7LInӈm5i}&TwƝuܡ; VT <'zrГ/IM@S)۔k 7ߗBfb8/EHKC0As9ۜkR|~wLr%Ӓmɵ-ix} ¤ fZְ5!]ns^I0 hk|B:<Hgڳ=!-f> I@G#ۑ;Rf41tf;sagBƿ$&u]lW+JHs[^r$/%R6I~g9OH_۬5Ǥ@6 )Cw;bRCL L0`Bl&bR"&0täPƄa\ #^m4¤n gùpNHgC7 cRtgsawB}(wLQLE(jID3l4 \bX64w |L z1^\/؋[}z>L!r%<&5äӏigZIL?8G06oL2ف@8n|MsL/uR6 &)A Bޠ&Ĥx`hu6bR+LR!KGvz;LjI !ȰiIj0 q6 SiZ+&%-ejI/8S{LсuZa :`ҟ@oMdL*ʥTBJ@hN3p8Z'$1iɌdGr#H'qFhv47 ƀؿ_~IXv,7%ǝՒ;I|fx-FdXɝ%~r&f"`'n")`v ɀ NS N]1 0A*ڿb@`& c,fRǀ \\p.B1`37``(CC>--@zO0pP,0pN0 NNp'dO1`bcFÀǯQ1` `?`v?&\(L!` W`! 4=p0{p6؄T}`A} B|+}ywwfiޖ;sϜ|Sy)]j3z| Xol)JB3]v^ە'<%=_Sݵ2=4MedHZǹ 2;>6Ȑ6rG CK Vc!Ҿ?giM9net9Ǵ]514>1ƕh 1ȥI"S.pNpZ>*^ztwHQyp%?m:ض|HpiyR|TNQђ)-̛%7Z }u2u%D?\A -ɋqxxқ'eV-6-~z}_^ÏbPsVV֍#~Vv/rI<7`$^r<"fNUްH2P&neM+CMxڹ5?U}d@/(YIɅ.D>ó^Y, \ǐ¯=ɾ j,_E=V^jY6yB \㟯I/@o#;)S YE ?ɲB3f&#[ BFJ")}(1قiVT$佴qbuw f:LǶmQZk1eS0EB}삜L"@+}AB#7(uwMGDjQM@6b3o! 5i|$h%k'8Ho/Zynbޣ*bgDhk8+˙ { aR7nI&P] .<`| ܈a92cv!kU>S27-r2=}S+[D\}}]EǨAU6jl,͑֍dOذMҮ䘝6m%JZܲ ͆m6-8@NDE7^a&kS曳\3ljx{~DR8AJ>}GM@ZGߔB0ȹ?{ĥc6\yِ0 _@=yGͺ{OF2s@S,R=&B灠d;Fǔ~{V%<#cs jx3D$C)r߁ Gھr3|J8I:^nWZG(*#9AܮHԒ  Bmapnik-vector-tile-1.6.1/examples/data/14_8716_8015.vector.mvt000066400000000000000000014452141324304754200234160ustar00rootroot00000000000000e landuse"  ,T* p%> ~NzD!"    r;  /"06 .6:J Eu" XX &:*  @0 @>&$H50 ^0 ).&!  *     Y/  !(S /37= O5  !9  ) #   E  G'=1#+ AO5=w @ !       $e, $ 9 31k   W-G'= =Sk'-3m_ 'OW ' 2fFz\r'?!M  E   3cmM"  9:N)         R   >$ ,        (\   7" H* z      . *" 6     4  7( :.:R2 4  T  " >:2(*   ;1- !/-#-E%"5*J+ 5/5S-]%[%ki-  1#3   [!A -GC?GYi|"r #4/ m7S0/54"b (#0-Dh$IH:u;#S,8| '    !)$!S"I 8  \"6P J4cC? 5 I5}aq"g }*4   $F#V$  H$t3n  "   -<9+/ '5/ U ) @"6 v`(b/ F'ASIUm 4"* 4+r{=RbF-6a+Be%i}) " &Je! )ws "i A",",,75 6 ", xa09x52ns3A*)jV'&4]t=cwK " }  G )7  +  E  .8 $! "8  ? F# % 2" +0  0f6Lv,Z@>+S Kk % #/$ "]  J "@  W dE]}F'> J L | XM"1 1 ! c/++ "  F6 7 B1`!>   *0  $ *  .  ,**  "%X DV    ;"1 6(% bCV@B$$: 6n (-!/J3") 1z (`Bn< *P >  +# = Q"  8"HL 2 & &  .   %%       $6 *2 7&  *    e4W&+-I0#5E,.41" -       ;  " :(6" (>0BJ6(J6  1<qa      " :(6" (>0BJ6(J6  1<qa      *" 6bvr&\&"<@Z7NO8MGG"y }+    ( 8       B   / '5/ U ) !" (**dg" @>"ME+"! #+J:)F--,"" 79ZhW.! q)/"} }  0   $!       t ,&6 &  #     5!E   +6", ty'-E5` +?/1# OB #% " -BS_^ C2W?o*!" 'Z2t) 0 ":+cH""> 3ALN \"&($"$ ,BH= #!%#')-)Q[%a!!#" '-*`_'$" %R6q4:4f@~7 !Q1u?*%" Z$>|":(sz$SFC>&"4 01[6f@$3%1$=?" ?4% # ;!'<'"2 & $ &  4|:~ )! 37y<("2 *9% LO:=tB@$3 !& ?D +B%MU1)"' z=9*8a&,d  G")_#Cg, #+#*" :I*&,1+"v >PH$) 0& **<6@: $93  '.G=KC     A,"7 4+W.tY3?n 5`)H.  2( 705K!;-" =& $80,*  KC             K  "." })J*  3/" 9             "0" 92,:'/"1" :+2U&!vSol2"b U;  ( (  !!/7  X ' m G23"( (/r:%"G>><X!I+4"! "-Z    %#.5"$ "/rF" /z (JR<C_]GG6"=   Btr   )E+%  %%E/7"% z9 026 @ , #   /O!8" 6-2 ,AbS/9"%  z "4&0BuF';%7 3:") =rk|)MR bkaj96?F&;"  RP(.(SX!C7<" "*R#Y wH=">  L ?(0 T* Y.9   (>" %2Z6sHB .>Y`=,?"" b,;.; Y~iVB_-@"# .6r,+"# *6.JG:CI!!/PA"F ? &/  "* #&'#!%6B", !/`$&[     C" .*9::9"D" Bl& o] K6E", 9. e&$J  "*  $ o'!F" #:n/8 a'G" (Z2XHE$ %,1k 1$H" #Jf+b[SGI" >*>'*4J"*     &@6b +  #';a3K") 0  4>  "2rI#'Q)L" *"Z( E($/-%M" ."&p6+N"! b=$QO1 SWM5#O" /BHfA'_ '"P" <BE62,E])4Q"* 3z%$B,E=E(R" 3R- Vx 5y?7m+S"! >j8/$DH,B#$1/(/SM!!+T"! 78j\# d-"gX,U"" 3jpT [9AV"7 =B      .. Q% %W" >:'4X"* 0"  N '  N!9 1#Y" ":  XV%dZ"Z ?   ( +   F!--F["<                Cd];\" )*/|+kF]"< Be            ];-^"# +j,3Q$t!# <_"2 3m" F# I "^1 (" 7Bq:A!`" :,A$/)a" , )   1C   !c" +: TUjd"` >          LDH> )%G?De": > D>RH6. ! g_f" #9*N_F>S^?;'g" ?Z63nf;   ')h" 5**=xR)>wQi"x =@R (      .."EB QMKE=;@j"6 8U^<            @k"6      ^>7V      l"z =  D<        m"z =  D<        n" 5* hgjo"` > h` "     WI'# !p" !:0 Adq"Z : 56    K r" 2* )s" b?7 2@e%t"  J  & )u" b.R,>,B Ge1 Cv" 9*y%#w" -!J,?61&,%" -0!<x"2 <VL.,   +)7/#<y"2 <VL.,   +)7/#z" }$"h~]o{" }%$|" }$N^-5`}"V <1(= 5T"L_ 7%~" :RH8    _-!" ): nQ;Y"N   8#        &" 7R:4 + I;&" :RN N  M9  ="2   Z+ 0     " 0* X YI"> =!v#  M '  N " !*+ $, #"" /B.*`  1q" } (V7" *<X9WX"M < : N 7 G .`  & S *<   ? " " 3*6&R5%S " .:QE<>!!*" 2b.O      # $" ;JT   ; )$" ?J{p <4C+-&" J  %,!" ;B XU(" >Z*+$" @J  8&";##*" 9b" *( '$" 8J 2  #"" B   - $" 9J (5 "" B    !0"% =z 4 3 ,"! 7j0 7", :" * 3"( 7   ="2 >   ;"0 =    ."# 7r "" 8B'  $ ;"0 (" ;Z   $" 1J " 02 5"* < $" :J      (" ;Z" *   $" :J     " 2   $" " @2%=   !5A" @ " # " " 3" " " + " "2 ,  " =" 3n " @6*  " @7*  " @9*   " #*#    " @7  * " 4$ " 4 (" 4 "" 5 $" 5 (" 5 t&" 5Z 0*$  "2" 5 h" 1 .7" 4"" 5 & , &" (Z(   *" 0*?F1(  " 5 " 6 (.(" $4b!    #;"1 @8 " > y!" 3 [tm""c 7     &&    .0    *'.1 #47J14  !"E _#"U . C  #5              $" 1"GZ& %" +2 "(&" 6b  &8('" 5 89("/ @8"G)"= (0   1&  % !    ) *"  B;B/>5N)*! A(o+"e 6     * 0"N  " *X *&6 2 *T0  ," 4*-" >*& 4/|'Z." 5"4J/" 6 *4L V *0" (0*"1" $J   (2" "b/   *3" !j,>  (14"' ".&  #5" }R&T-NIBk<+:=6Qx#L7b{?6"5 ,  ; m#k Y A ! 5CwE3 ]' Q$1,9##+]7"   @8"6 4 . &$ , (" &(>  " 89"    6" &@ j& D< (    P2((*"      >      4!RP6@VN\hx!d N$L*r\d8^>R2<*.6@ 0 @ , "<'X lH4%,?T5&WE -)<#l/+2 *.0;" $32# /$'<" /JV{b3*hId=|7poB="8 }) 0,j*B"   $   '*4 $:O>"E @9  '!/ 9 >:" @,J& +'18;\;.M?"C 6 ,nF &6]es iUsSk'A@" @ A" 4& '0B" @* GC"= =  = >K  '! !    CUD"K 3'   %  UD!AJMJYZ 1 !2 -"'([xE" @  U8iF_N/,").O8  "     = / *  &'*   ( &F&   F" @  *G" @j  (8~ (type" stream" ditch" river( x water" J#" Z    ;"5 f+4pB       /" !:, ; " * !" &R!" &R#" ;Z    '  " J " +2     " 4* % &! " R! " )R!" !R3"- 8*$ 6/3 " >*X5"HI$/5'"! =j  4". 8   ( x aeroway( x barrier_line#" '.:u;#S,8|#" $,:--:8 u& " ?"( " ?2 , " >@" >@"  &" 3Z  ,"" " -"(>4.@~?" 2"""@" *"$A" )*8 &B" **! C" *B"D" ==J   1E"' ;;, 5F"+ 4* 5 /3  G" 00 6!H" *9 @AI" +2 :=J" >> &K" 6- eL" 5+ 1M" 5( "N" 3* O" 3; P" 8* =/Q" 7) $R" 6) S" 7) %AT"7 :+lmU" .@  V" /2 W" ,4 X" -5&Y" 3=&Z" 05  [" 0,. \" +2 ]" )4( ^" )4 <_" ;( `" ;:$" a" 6,>k 9b" 6,Lc" 6) W;d" 51. e" 9- )f" ::aRg" 80  h" .2 i" //B#j" 2)45Mk" 30 0L(l" 33%@ m" 0069n" 1/  o" <:1-@p" ;( q" 4;)"r" 3)s" 90 7t" 9<KB2nu" 7:" v" 7*+/w" 61 x" /0"Z=y" 4*" M"mz" 4+"O/){" 9?" |" ,/*}" ;)*!~" ;=* #" ..2*X((#,#I" 9<2>322,. g" 7-2S31!+'0YR" 3 C" h" 7 " % " &" -7"  " ( "  "  ." ?q" + "  Q"  " "  " " .L" # #" "" $*4" %2#N" %!" ]k" <" 2  " 8-8" /Ce" ! " 3" k_"   " ( "  +! " M"  '" : ."  0"  !-"   +" /" ")9 " " ! " ?" E 4" (" &#7 " 4" " 4" " 9"*#61>" 8"" "WW" "C" " -" "I"}O" " %"a" " !" "6" "&nF" "! " "/%}" "711" "Q " " %" !"=9s kz"o  "{   " 4*2 *  " *5cM" %*    " %* " 27" :Q! !" B  " $=q" ! A" #I" $/c" !,r" # " "<" %#" $@" %C %" &+" %3 " &)" !" $$# X"M $ O% ]?+7+35??" .%>/?" 3#CJ3:" 3!Q@9<" 4"]dOV" 0"+4 " 2"1>1> " 2%R6L0" <%"" ;& " >  " 63*" 5 "" 5#5" 3  " 7#" 7+2" !)" &  ))" #  "    " #1" "G " ! " !(d" $," #R" $: Z"  ;!?" )  " >"('" 4!"" 4"G6 " !"A0" "" 0 " #" 6" $"&"  " #C7" % "V)"&" $" 0" %"1 " &#*,$4" <%*&#" ;$*&# " *I= " $* ,  " %*"  *?1ou6"  * " $%*C," &#* " %2  'g" "2$" !2!Y #%" $:E  " #:" ":   " %:)-;O5!" $B7MkG;!" !B  "@ #" %J*J "> %" 'R/-GI" 1' 9&" 2& -$" <' +"" ' a." & 3" ;&DE" :'"/!" >'*! " 'G " &"F" ' " :':A" 9'"< " &"(" %  J" ' '" :&*  " '*/e7q!" :&B!  8"!" &B#!*d0  #" J    #" 8J  $" i1R *&$4<0h)" ;b  )" 6bN)" "'" ?;"n  " 5" Z%" 8*+',&" 9* (F " <* %" 1*+P0 J" 8* " ?* " @ ,( " @ " 92 " 92" ;2" ;2  " 92 b!" @ 4 *- " :: " >:  " <:  !" R   " @,," @" = " >  " @ " ? $" =2@ M S"H V4JV#jT/l#F     U C&W! " N>"NL68" },:2Zd" }- " }@"  " !" 5 2a"   " L3" 7F"  E*"   " +05" 1"  -" ! " " #+" % " $?"  " 'L"   X?"  ?" +" " +"  " 2 "  nG :!"  +9$-" " ]U8H"  $@"" " " "  15"    " L"  "rM(DP/" "7 +" "(1   " "&9  " "" " " "o" "  )" "XL" "7 E" "E" " =" "' " $"|"" " " * A ["  * "  * 8 " *  " $* 6 " 2$  " 2 " 29' 5 O" : #5&%)" :    !" B!" $ #" (J?SOCA/3" )0 ?" )0 )" 0 %l" L/ 6" ) +" ( A" ' >" ' $" %' " * K" , $9" * "1" 0 j" (B " )0 " (/ " ,* &" p/7" (  " (& " ( " ( $" '&" -"" -%0P" 0" ("71mK" '"." ("   " ("$ P" +"/2" 0"   " )-*1n.,0." )*T##" 4**" **E+ -" (* :" '*$N" +* $$&!" (B'_Y /5IG4")   8"-  2"'  " : !" B!" B #" J  " - " $" 3#" 7?/" 7>" /%" " 1E$"" : " :y5!" 9' " I: &" (" "" " "" 2"  !" =" "  " W" ." "0" "   " N^*%^+X/)" 22&" 72 " " : " :  '" Z))'!%J"? " &0'0)" *;%.%.%4")  /6"+ 7 "  4 " &"  "  " '4"  $" "  "  >"   " !H " !  " " "A'O:"  " ! " "" " '" *2,7 " * % >" 2 " : 762 #" J $V %" R &(    %" R[,7)%K '"  )"  -E"  -" \ G"  ?."  R9"  ("  (N"  "  `"  "3 J"? .)" B/ " G" " =4 " (NM" 6" W" /"" 4" ;" }2#" 0!<)" #" ;" 2D" &:-" `:"  !" %7" *" 1" =" .." i C" ?" xOR3" }, "  %" *B)" { " 1$" B,&(" ( D" -" =*" 'Q8" : P" $#" ((" #" 2 "" <*m"" v  " /e" $+h"]   " " )" : "  ?" " C" " 1" #;" "(" "" #" ?" "" &" " J)" ! I" " 0" " &" ")" "!" !"" !"o3" "" ""  B" #"" "*i Y -$$" $J}  w{#" #JM L" }$",Vn" "* " ":  ?%O'" $Z/)E 1 /-+"  -" (l" ! " ! ?" ! ," " .'" %Z 3O!  +" %b 3/?-5c+" #j1"& X$ 6" $ # " " L" # "`" $ -" # 2 " $ B" # @" # <" %Q" %7" $8 R"G $" $'W/" #";3 " #* ," %:+3uAg0 !" "B1 >2 : !" "B ) P"" "BW*D~FJ! 5{" # 8" # \" !$ C" !$ ^" $!M" #<" #<" %+" # " !#," #K !" #( " %*" #" #-/C" $*!" #$+/" $">d%" #R 'N * L," & "" % 5" {$ " # " #  " $ K" }$ " &`" % " $ %" %IR"G #" %  " $*" %(" & " %#1" $-1=" #9?" $ " %O" $E" $"5 " $"E" %";%i" $"<" %"%" $"0" %" QH" %"< " %* " %*-  !" %20" "26&2\ " %2 QG " ":6  & "" %:  -#" %J   %" %R " $ B" # .Z" % '" % 2<"1 $2    "  $/"$ z #+ .@,2" ! *"  " #" "" 0" !*?" !(" " " %!(" <"  " "B ." !"D" "*" *  " 2)+" jB8 $(4:26 >J N">"  0!"  .D"  I" }<  "  ""  "  6E"  ""   " t *"  "4"  )"  @"  !/"  @+"  ,@"  V?"  + " # + " B >"  `"  %"  '" ( Y"  7"  *<" O - "  "  =*"  0F" B `"  #5"  " >X.D" x" "  *&f" L"  \&"   " *" (*" 0 " "  #"  " 7" ? F " " &8" 6R>)"   " '" ,L"  /" BA" 0"  " 1" *" " '4G" 5 _?"  " y.V " (*"  2" nK6%" ? ?" ,"   "   "  " )$)" " B4  " 7QS:"" R !" ' !;" 5. " 13PU "  g"\  ,#:6)@40,_+F#8!#7-[U3  " "" " ." "" "" "ep" "% " "X"8B "  "!"  "*& 8" h"" " "  "6#" "M:& " "I?" " & "  " 9" * *5-"  *  " *  " *V";." *" *!" } " *%!#"  * " *] V4 " *@C=" *6 " *3" " *L1 " * 3 " */ + "  *( $" +*#*'"" *3"  *  D#0R" *),#"  *T+z; " 2 " 2 D &." 2) " 2-  "  2I.%!7 !/" 2' 3-39" 2 " 27S *<  " :\2 !" B$0C, "" J 0 " @  " ? " ?=4 " ?  " @,  " > N" ? <" @ *" @ " @ &" ? c" @ - " ?h 9 " ? P" @ @" ? 1N" ? " ? *" ? n " ? Z" @ '" ? " ?D+" @ >" ? " > ?h" @ )l" @D`" ?< " @  " ? eP" ?BF" @ 9 e" @" @;" @  " @." @, " @. " @  'f" >>." @* " ?  ' " ? +" @ 07 " ?4" ? " @5 " @J'7 1 " @ " ?"" ?" ? " @, " ?"7 9" ?" J  " ?"" @"%> " ?"  B" ?")&=" ?"n"  " ?"$" ? * -/ " ?2  " ? 21   " @ 2 ( # " ?2 8 " >2 *(!" ?B  . +" ?4j  -"" ?8r: " ?4 " @6 %"" ?6 ,1" @3 $'" ?3 " ?1 #%" @2 " >8 "" ?2 *)" ?2)," >2.*/." @0" ?5&" @0)( " @0%!.+" ?00.-2" ?1"!$" ?2"().1 " ?/" " @4" !( !" ?4B0- 21" @. " @, " @+ 6" ?) *" @." ?+ $" @* +" @, %5" @/" @-" .-&" @$ 4/" ?% " @$ +(" ?' 1." @" " ?' DH" @$ "$" ?& 15" ? (," @$ 46" @$41" @"TU" @#=: " ?% " ?$" ?'DF" @$  $#"A>A:" @ *  2"' @ ",* &<" ? .#" ?( " ? :3@/" @ N" > 7" > /" >N%" >$2,.%"!'%" >R " > 0" > r" > ) " ? 0" > >" > t" > N" > f" > ( " > ?" > E" > \" > \" >=T" >' " =b " > U " > ;/" >@ 6" >  -" >"" > Cp" >#`+" >  6D" > " >  " ? E" > ^ " >*&2" > " >+-K " > """ =" 1 V"" > ">" ?" 8/?" =*=&" > ** L" ?2)3# " >2 "!" >3 " >5 " =1 &&" >9 2" >4 8(" >5 !" >5 *" >5 " >2 0." ?6 " >5 %" >9 /" >4-" =0%!" ?3" >6" >9? " >88$" >2C@" >94"" >6 " >7 " >3"'%21" >5*" >) ;M" =)  " >- " >)" =." =+"" >," ?*"% " >)"" " > 04" >' 4/" >%21 $" ?"76" >"(," >!" ? " " >&*04A< " > " >!" 6 " 6 *," 6 *" 6 " 6Pq " 6/"# " 7" 74" 6#"" 6 " " 5 ,$" 6 9B" 6 -4" 6 $" 7 " 7 '" 6 #2" 6! -0" 6! $" 6 '" 7 " 6 " 6.,'"" 6~ " 6" 6"':" 6." 6" 6  H" 7" 62:G@" 6 " 6" 6cA^s" 6!.674" 6"!%  " 7" " 6*" " 6)*   " 6; -" 7<7" 6:0R" 79  " 69 )" 69 >" 79" 61 " 60$% " 61,, " 65" 78%o" 60  " 61 " 6- *K" 7/-3" 6% (3" 6& " 6% " 6&  " 6& 8"" 7&$#4" 6( " 6& " 6'*" 2G" 6 (M" 5 " 5 (" 52   " 6 +8 " 5  " 5 "# " 6  " 5 54 " 5 (* " 5 $# " 5" 5! " 5 "" " 5 " 5 " 5 " 5@( " 5I ) " 5 " 53* " 6! " 5  " 6 " 5 " 5  " 5 " 5 " 5g " 5" " 5"  " 5*  " 5N2    " 42 ' " 5"2 4"3JW " 6:;// " 5; D " 5;#  " 5:O  " 5;"  )*6 " 57 ) " 55 N " 50 V, " 55 * " 61 30 " 66  " 51(( " 58  " 51PS:( " 55" .  " 58"( " 54*"  ( " 59*2 $7 " 662I !_  " 59:    " 5/  " 5,4@&(# " 5/ " " 5( A)! " 6&B3  " 6 /4 " 6 -0 " 6 3@ " 5 # " 6:4+ " j  - "" r - "" r  / "$ z   "  J "  " "  C " :^ "   "   " ":'o-iH% " *3  ; "  &- "  " "  (  "   "   " W "  9  "  "  " Q "    " =1" "   "  "   " "< $ " ",J.! "  " 8 j " " S W _ " 20" , " :$  > "3  " -#   # " +J   Vd!% " .R + " .j&- "" .#rEpB2 "' -!T:D6 6 "+ /!(  ]GS? " . 09 " , 9X " - 'O " , %  " - 2 " , >V " - ": "/ .  "  "       > "3 - -SB "7 ."F.    =#G " - " ," " -  " ,   " -41VP " . *,BB " -(-> " -  " , N* " -  " ,^  " -  " , # " ." " -"  " ," ]"  " ."% " -"   " -*  " - "PS " -*Le ' " -"** -  " -o*  " +2 " ,#2! 3E " /2  " ,: $##! " -B     " ,\B!%   " /6 '' " ,1 (* " .7  " -4  " -8 ! " -4  " /5 $ " ,5 4 " -0 % " -2 " -42L% " .0,3  " -2 ( " ,3  & " -7/'-'# " -2  " -1 " .0   " ,9*L^FI#1M " .4*%( +7  " ,12 5  " -, 2md " ,+ m/ " ,/   " -." !(& " +-"(/45&# " -%J PBJ8 " -& O  " ,(  " -&)> " -'  "  E "  0 "  1 "  Tl "  M< "1      " " ') " ?w " %;  " *  " 2 & " :' ; *H& "  ! " !  "  J "  / "  6 "  $ " " 0 "  H "  3 "  a "   " q "  " D " !< " B  " "+  " !, " 2@ N] ]m " 2E = `:+ " jDB2(:4 ")   "  7  "  #M "  B "  = "  x "  6 "  2 "  ) "  !  "  -A "  8 "  " " & "  ) " 2  " 5 " 'm  " 'q "  /  "  " 8 " ? "  m" " ; " Q "   " #-! " G/4 "  8 "  "   " W" " &  " " A  " "I " *$ !A  " * O " 2D $7  " 2L9 #9 "    "  (  " :C+3BF24 "  H % " Rq  O "  r' "  K c " FVF " +( "    "  &0T " *0# " J  (. >%82 "' ;G  " !IB " !//  "  "  O " "0 . " *0D<B  " :  07 " !: $ " J $">$' " Z.%$  8*:+ " j   I7%& "  + "  ; "  5 "  G "  ' "  6 " ! "  = " ' " m  " S5 " " " " G- " "&fB0(  " 2>F JX/) " b UA !='M!A@B " 7G  " *1+ # " J # " J  '     , / "$ z     ++% "  % "  )3 "  =S "  ) 2 "'    "  6 "  K "  h% "  F " !U "  ; "  0 "   "  k  " %) " ) "  w"  " "   "  :$(HE1q)Y! " B  F! " B   &>V "  \, "  ( "  +` "   "  % "   "  6  "   " !  " <5 "  " ! "    " S; "    " L* " ,  "  !X  " "2E+Ma "  '  "  + "  h " m "    " " [ "  * # " J (@(  + "  j  3=9  / "$  z  "  (  "  1  " , " <^ " S " 39 " 2 " EE "   " R " I " " . " !Y #  " "&  " " " "  " *  +3  " * " 2  "  :=<#A;*g(Y " :    "  6 "  ,~ "  ( "  # " F "  + "  #J "? !.+ "    " !   " ! L " !6 4 " !" '  " !*  "  *( " !2  " !*  = " ! > " !  "  D! " !" + " " H " !  " ! " !! # "    " !  "  @+ " "'C " !!  " "*< "1  $ * 6     ) "   ) "  % " !R0,>  " ! O " ! L  " " / " ! . " ! %B "7 !  " " % " !4 " !5 " "   " !  " !  " ""= >  " "  "  " " " $   " !" ( " !"O " "" ) " !2, " @ ) " @  " @7 " @  < $ " @* " @ ' " @/ " @  " @ )  " @* ")R " @2   " @3 ,. " @1    " @2  " @, &% " @. " @.  " @!  " @#  " @  " @! " @!  " @& " @&*GI4- ' " @Z;" !5!# " (J)9BN' " &Z-($ / "$ &z "B2 "' %>&6 "+ (A   " ( # " ( % " & T  " ' = " & 4 " & o " & 8 "- '   = " ' / " &A  " &+ " &9 " &# " )BK " ( " (AK " & F! " ( 1) " &%%S " &#G   " & - " '   " '*  $  " ("" ( " )* ) uP  " &2    " '2    " ':50   " '2&.! " 'B'% ,# " 'J)  8 " !&")  " !&" # " *JN/m +-<6# " )J     % " )R*"6* *"0* " )b B6: @8;' " ) Y* " * ; " * >  " ) = " ) , " ( e& " ) = " ) V " )  " )"  " **  " )"  " */  " (2 " *) " *8 " )B  " )1' " ) 2 " (9 " (: " )  " !)o" " ) l  " *" " *" " ("B4 " )"  " )"  < " !(" ( " )"  ' " ** G!16 " *29)   " )2 " )2 *  " ):  ! " )B l7 o! " *B 1)A$ " %RN\  (' " &Z+ " &j4v#+ " (j7}- "" 'r3s 2 "' ( / "$ &z2 "' %  0p " ( \ " ' ] " & 'Y " ' !I " ' F " ( +e " ' C " (   " ' 3 " ( 6C " ' / " ' * " '  " ( C@ "5 ' " & " '7 " '9 " (% " '6 " '!C! " ' ] " !(U / " ( " '.4 " & 1 " &Y " &  " 'C " (a* " ' " (KG " (g " 'G/ " ' F " '`  " (  " ?&\ " '!1 " (#K " '  " '7 " ( BF " &" s6.h " '"1X> " '"  " &"  " &"   " '"    " '"  " ( >  " * 5 " ' -$ " ' !  " ) b " ' < " ( ? " ) N " ' 6 " ) ;  " ( M " ( %" " * 7 " ) F " ( $ " '$ (  " *$ - " +# - " +$ , " +" l " (  " + $  " (3 " +   " (. " + $  " *1  " + " ) " '& " 'l " ' !" + " *" ( (8" ( 1 " )$" '  " )<9" )" '" *% " '"<" * " '$(i" '%5 " *$! " *#:`" *$ S" (G" '4" (?" ' $" + " (T" *" ' " + =%:" * +" *" ) " ( $ " ( " )  " ( > 6" '" * "  " )" * &0#" ," ( " (%" * Z" );#" +#d" )" " (F " ) $" '%E " )yM" '$;" + " ( #" +*  " * " 2" + " 9" (" " *"  " + "> " ' "6L/ " *"4:" *"$"" )"X^ " ("5-#" *"0 ," '" 3!" *"*%" +"  " ("2 :*1" +" J3" +*" )* A/[ " )2<H -7" (*2' " '* >5>P" **@A5" '2 <#" *2H@" ( 2" + 2 V=" *2  " )2  " '2>  " + 2" ):A9z J!" +B(  " '< NC" +? U," '< (?" ';0! " *?A " ,;9>" (<$>" +=" )< !" (; 3*" &@ " );  " +>" /5" );*;6%=." '>*"".+" (3b *'A NM@W $*" )0 " ,1 A4" +/ ," *2  " )1 &" (4 <" *2 +" ,0 8" ): " */ 2(" )1 s" '9 "" )0 /" *2 #." *1 (" +0 /D" ': " )2 Q" (5 ," '5 " '40" '8" (07LSn" *0/D" '6" )2 " (6 " '9 &" " (6 )<" (6 " (7" *3 *-" (6 +2" ,0!" ,1  " '5) " )60#$ " +2 " )9 * " (9"% " ':"/Y0% " )9" ;" ,1"  " +3* " *2*B 5* " *2*&"" *62I]!,..V" (32 K" *7:!)1! #>4VV" +/:$" (0: , " ** '" +. @0" *, E" ++ A" )/ /" *) C3" *( X@" +) ):" ** AZ" +) "" )*&" )) 4G" +) " *)" ** " +(!," )* @U" ++CB" (/" **"3H}e>S" )."&KL$5T" *( 9". +& / fN" +& hl" '2)" ))&6#" +J.   +" *j     /"$ ,zP95B " , 36>"3 +E": |, 6  8 ~ R"G -" -  " +" " ," .* W-  " R-* 0 """ .:  #! !" .B3  !" +B    #" /J.y # Y %" -R 5/-3+%"8 >-"" +rs./"$ -z  )1  <4 " + %" + h" + !K" - !" - ?" + 1y" , +:" + %" + =" + O" , " + - " + &" , R#" - (" , %" + $" + * " , N" , ` " , 8" - E" + 6" , '8"- -   ? " ," + "" *" ,6$->" *" +N" -C " -,e\2" ,](?" ,9" -6" -$" *&F" -09" *D" .)I" ,a" -,b" +" + FN(" , 0%," , +2 " - ( ">" . ;5}" +> " -)" * 4x" , " - LD" ,  !" - " . " /4 C" -" """ +" " -"/mR# 0p" +";;" -"'" +"I Q&.(" ,"-g" /" 9" ." ,D" .*" -*|'4P&F" ,*$- 6 " **Vl" +*5# " ,*  " ,*O1+" +*2 " : -!" 9 4" 9 P$" ; -" 7 " : :u" : 1-" 8 m" 9 '" ; $" 8 '2" : " 9 F2" : ," 8 6"" 7 /0" 9 +" 9 A" ; #" 9 *" ; 2" : 2" 7 ," 9 `" ; ," : ." : -" ; S3" 9 *" 8:E" 8  " 8.(" 9" ;c " :(. " 7 " ;#" :f$ " ; " 7  '" 8  " 9+$" 8 " 89" 9 " 9$M" 7~!" 8  " 7*) " 7#D$" < U" 7 " 7 #" 7 " 8 " 8 $" ; $" :* " :(" 9$M" ;" 9('>" ;*T"I ;  E #" 7 " ;" 8 1&" 9" ;  " 9> -P" : " 9  " 84" 7%5" : " 8 "   " 8 " 9/"(" 91'" :/ " :$" ;  " 7  " :_" 8'" :h % " 7-4 " 8d!%" :F*2" 7" 7 " ;  " : 8" 8P " 97# " 8"+H,G" 9 "[" 7"" ;"" ;"# )" ;",83" 7"  " 94"  " :" " :"" ;"" ;" -" 9",+b+" :"% !" ;Y"  " ; "  " :"8 " 8"" 7* $(%(" ;Q*" :* ' " 7 *  " 8*  " : *gA 3" 7~2" 82/%+'" ;:  " ;:  $ " ;:/ " :+:% 5!" :B  #!" 8B7=)8,2!" 9B $N2/.#" 7J"',', !" 7B"&%" 71 $" 86 %" :4 !" :3 !" 8: %+" :4 $" :5 " ;9$"" ;3" " ;5>" 72 " 92  " 74 " 88U(" ;:(-" ;1 9" :5)" 81! " 7/ ," ;4  " :7" 77 P'" 96#" :/-+T" :5  " 98  " ;6$" 95" 82 !" :3"  " 7:* ",e " 81*,$(" :9* " 87:  9 " 88: #  %" :+R    " :/ ]" 9* ?-" ;) " 7, # " ;* 9?" 7/ " ;* # " 8)2" ;)31" ;(* " :+" 9-3" ;* " 8. #" ;* " ;," :+" 8/$/" :)"  " 8-"'.%(" 7,"(2  " :)*   " 8)* O5I3A+" 8)2 !  #" 9&J"!#" 9%J  !!%" 9(R? 1/ 3  " 8% zD" 7$ #<" :#  " 7$ !" 7$ '<" 9'%" 7#8"" :#  " 8%" " 9%"  " 7'*8K7-&;" 8 " 8 !," 8 "" 8 +<" 7 (" 8 SZ" 8 [9" 7  " :;"c" 9" 8 " 89" 8L*5T" 8 " 8 i" 77 " 7$%" .R  Z" / 0" . _*" / 4" . ," / ." . 4" / -" .+X"M .b"W ." 0" +5{" .2;!J " /2%  ! =" .:J76 " / =)" /b " / &" 0 K" / -" / !" / D " /XD" 05"" 0" / /a" / 4" / " / !M" . 8" . H" . -" / " . D " / !" / I" . /" / J" w/ f%" .(" . 8" ." /  " . " /!C" .T" - CX" .  " w/" . ^)." .> " . " .)" . &"" /=" /-" .2("C# %" 1R'" 0Z- " 2(" 1" 1>" 2:1A " 0: !" 0B8" 1 'Y" 1 8" 1 "" 1'U " 170" 1 " 2n1 " +1 F " 1 " 0@" 1  N" 0"B" :1" " 0"&17" 0" ( *^J" 1* 7)" 1b )mU$3  " 1 "J" 1 + " 2 5" 1 5" 0 @" 1 "" 0 M" 1 ;*" 1 A" 1@ " 1-" 1K" 1" 1%" 0, " 14" 0K#" 0 " 0.B" 0> " 1 9m " 0." 1" " /"J" 1" A " 1* i " 0* = U" 0*.  " 12/ #" % %)" #bL  8 2"' #  " # 4" $ A " ! $" % I#" % FD" # 5" " $" $ " $ +" # " $ +" & Q" ! F " " $" " _" & }" " F" !! <" $ F" "! *" " H" $ (" # < " " /" # &" " L" % (" " ">" $ @" $ i" $ \" $ H" # d+" " U" " >" " [" " S" # )" $ C" # O" & O" # *" # (" & !" "% "" $% 5[" $% K," "% ," #$ <" &# ( " &$ *" $' /" "& 4" # 3" # :" " (" " N" $ (" " -" % 2" "/X" #+" " " #4" !!6" " " !' " # '" &a " " " &O" &B" $" # " " &;" #A," %" " 9" " " % " $ 5" #  "" """ $" %6" $1" #A ;" "T" "  88" " $P" #)" " " " " " 0" "D'" #3" # 6" % JO!" %(" "$*" "$R" #"#/" %$1 " $& #" &%B" ##+" "% " $!&" !$;" #"' " $! " &#," $&$" " #&" # #" #M# " "  " &." #P" "" "J " #^," & " #" $" &#/" #  " $ (" &3<" % $%)" %I;" $ " % E" " Q" "- " # u" # .$" " $JX" 'I^UGdY" "2B" # ,D " #@1 " $$, .!" $"L "" $$!# " $%  %" &#,J" &$" #&%7" !," !@j" $ ,!" #  ." $ G>" %"2^" %"*t" #"  " %"/" &"" %""" &"G " &"  " $" -&" #"   " "" " ' "#$" " "  " %$" D'" %%"0" &%"#*" " "  &" &"+ " !* L" $* &=< " #*-  " %*" %* &#" &*c;)E1 A" #*H O " &** R" # * " %*"  " #$**$  " ##*7" "*C! " '2  " "2  " "2(:&" '2'   " &2t"4" $ 2"=O" &$2hB-[" #:6< " ':  L   " " :( 8&,D!" #!B    !#!" %B@ v(  " %0 $ " /" , ." #( &" %."k4" .S<" !- " "/<$ " ,*( " %)* +b1p )\"" #,B*c # " #' c" "( " #( *" "'" $' " $'" !(%%" "'1B" "'" (" %'63b_!" #'"$ #" &$J  .(  &2"' "  " ' #" " #" $ 3j" & = " &# F-"" 1r8 . L.A !" 2 X" 2"" 2"   " 4"P" 5"$ " 2" " 52  " 5:  " 32" ! " 3:&  !" 5B4 $" 4J=5i 2"' 3  " 2 ." 3 08"- 5. & '/ (" 6)" 3 " 4 ;" 3 Q" 4" 3 " 4#OA" 5"   " 3  " 3 " 3" #1'" 3*; #" 22#  /" 5:R) 6"+ 7Q1  $i M G " 4 <" 4 )" 3 1." 5 C" $4 )" 2 D" 3 7" 5 R" 3 !" 2 3 " 3 & " 2 9" 7 E" 4 M" 3 %" 6 #<" $7 8 " 4 9" 3 =" 2 "" 7 I" $6 >&" !7 $e" 3 "" 2 B" 1 <" $4 %" 5 &3" 6 '" 1" 2D" 3" 2H."" 3,J" 2 +" 5 7" 5," 1DX " 2" 5!" 3% " 4%" 3C" 2:" 3 # " 5 " "5  " 31" $6" $" 6 NX" 2Y'" 3&#" 5 (-" 6-#B" 2. " 28&H " 2" 2^' ]" 3*X>" 1!*" "4 !" 6! c'" "5 " 2$" 2: S" &4" " 4") " 2* #( " 2*:$ 6" 22 T , " '22ED9B-C " 42)1" 42 D-/" 4:N- @;" 1:%@ \!" 3B82D29,I!" $3B4   "" 5B( b2a,G.?,? " =," =* ! # " <2 0#" >J4 ,.- 1 &"  M" > O" = 4" < 0" < 0" < 5" = !#" = ?" < ;" = =" = N" ; I" = k" = " " = 8" ; 0" < ." < 2" < + " = ;" < 3" < " < 7" =  " = 1" = E" = &" ; " = $" < Q" =-?#" <%J3" < ;`8" < =l" =FN" <" < " =D  " <#J" = b " <%N2" < " = :" =" =# " >J/ " ="?%" < " =, " < %" <^,(" < " =  )" = " <> ." < " <#" < )" = " <2" =  " < " < " = C! " <?*a" < I)" <& " <*" <" <="  " =  " =  5/" ;4'T" =" <" !" >"  " < "? " =" - " ;\"" <".5 (O" <" '@D" ;"%L&" ;"4"  3!" =* >sA" =**  ." =* ' " <*( &B " =* " =Q*" <* " =* " =* C!" <2  " =2 (" < 2 " = : K 2 0 " >:*?;N" =:*  " * &" <: 9,$ " <1 )P" :2 1" <0 !" =2 " <2 5#" +& " <*" <+" ;) " <." " =."" >.2!" =,B)" <(b 85" =' 04" ;$ 2)" :% " =& *(" :& $" <% " " ;$ #"" ;& " :$ **" =& " ;# ,%" >( "" <% "" ;$ TI" :' R<" = 4/" :( /)" <& " >#  " ;! " >% " <# " " ;(" =''" ;%" =# " > " <&-169" <#/(" >(  " =$(% $" > " = 64" ;'EM" =! #" =&<9" =%#" ;#=?D7" #!" <(, " >& " = J" = *"  " ;%41 " ;*/" ;/A" :$()?A" =&$!/"$ 6z  :+ #      " 8"   " 8 1 " 7" " 7"  )" 9b6 )" 7bE/"$ 6z&'5" 8 D" : " 6 $P8"- 8 @"5 9" 6 $" 8"A<f"[ 7" 7"X%" 62 $ B7" :2D  " 82" 6: $#" 7J #" 8J #" 8J(6 D:(" 6ZC$cFP 1ME'" 6Z*  '" 8Z  ( +" 5j0( 4   " 6 [" 5 '" 9 $" 8 "" 9 9F" 8 V" 8 # " 7 " 7 2v" "9 N*" !8 "[" 8 C" "9 X" 6 2&" $: " $9 K;" #: Ha" #: 2&" 86 $" 7-\ " %7 " $7" 6!\" ": 6W" 79" :/ K" 9 E" 7)" 8 " 8G" 82/" &:" 8  " %: " 8): " 9 " 8 " 9*  " &4  " !:" " 7" #8 ' " 8) " 8",'" 6"0^$ P" #8"( />3P" 7"_ 7 " $8":M" $7"? )" #5" " 9" ?@" :"5" 5" " 8" ." 8" " 6*(9* " 6*--; " 7* " 6*9(+" %9*& " 5*  " 9*&M.i=" 82  " %92 !" 72 V" 82S " 625_!  4" $6: +3" 2 %" 1R?T $I9e0G vV )" /"b !!  %+" / j -"" 0r " . RZ" / $" . " / 3&" 0% S" 0 "$" /NP" /!" /=: " /" 0:/" /   " 0"+" 0#/" /(" 0)2$" / " 1" " / }" /)"/*1*" /b"W 1    +('(1"1BW" 0" " /"(4" 0B*5 *4" 0$*  % " 0z*+" /2A #I  (" -:H%Z1P^Th" 00 #" /6&#" /46+" 07"" /2 " 05  " 04")8+ " 07")$" 04" " /4" ! Z5" .22   " 0. " .-" --#" -%JJP ) " /' y" .& D" /& ." .'Y" /%$ " -&J " /&8" /&>(" /& 9" /&80=" 0&"1%  -" .&:L F:7 " /" +L" 0$  " 0! +!" 0!" 0"" /@ %" @" /? " ;? " #@ 6" @@ " ?@ " $?+-" ?@* " ?@ A " =?" @60D<" @ Qb" @ /" >lh*&" ;@E( " ??*>" ?? " ;@"" " ?@"> " @@10  7" @"  " @"  " @?  0 !$" %?"   Z"O A","" @*+" @*V4" #@2kK" @:97K " ;*  " ;2" =; +" 7< !" :; #%" !; " .; " 9;)/" ; "" $;" ;, " <;'*" <: " #:*$" &;.+,." 8; " >:6U'#" ; P" ; 2" ;" %;" # " :"t&4 " ;"K " <:"0 " %;"+" <*7 ;" 7;*& " = " <(" 9=" <3J6" :< " <N " :<%" !" ;<" 8=2 " <2P"/"$ ?<* (&" <* * '" ;;*:8$" =<2 !" 5 # " >W" =2 " ?: QMKE=;#" >J    %" =R   )" @?b '#? " ;? /" -= " <=A" /> " %? " >= " .=" >R" <= )1 " =>" .= " ?" >%13" ?",Q " >" c" ="  " $>" 1 " :>"" >" i" 8=" " ="Z  " ?* DG" =*3*" =>* " @> & " G?-" >>2 " @> ;!" =B   !" ?B L= F+$" A " A" @ " '" ;Z#" =J,I8c2O .9 5 )" jB2"' >4") >4") >" @ (5" @ J" = 6" ? r" ? 2" > 2<" @ D " > 1" > 7!" ? %" @ # " < *" ? 1" @ C" = " @ " > /H" 2= 4 " ? " = ," < W<"1 <">"3 =%" AR  @"5 ?]A B`+" AbD"9 >F"; >" ;3" ?NH)." @1+" =''" ;" > Q" >16" ; " >(&" Q? +4" < D" ;>Z(" @4?" > $" > " ;! " @g" ; P" =&" @ " : '" :Z" :$" :" : "  B#"  J  4.& #"  % "  ("  1"   "  +7>"3  "  &" ! "  "  /"  6 "  $!9"  " 5"   7 " !" 'ST1 "  " j#^"  " " !*%!"  :1 6"+  E.) "  Z;"  " "  E5"  %"  S4"  A(" #" "  (" + #"  %]"  ="  J"  "  1O"   "   " 3 L-*" F "  /1"  P"  eB"   P86#" (R"  1 " "W423$" "/NN:"" " &" } : 4 8N" &" '" '" '*" ( " )" '  " (]8K +" '/" '" " *  " (1" " ("  " +"%" '" %'" '" %" ** ;5/R " ):  #" *J" & $" $R" &  " %+" # " $ ?" %(" # " % !" #  " %/ " #_" %"  " "" " #C"2.C}"r $u" "/2# 0" &* " $* " %2" %2  " #C:   -"" r "  g"  !" ",J/"'M,"  ."  ." "8#,]" :  ! " 2  "  J "  <"  "  -"  ""  ("  g" :" !N"  @'" | @" "mV0" ""6#" J.:%" R)" b ' "  ."  #"  +y"  0!"  F"  <"  $ "  R" " "  )" "$" =" %" <" +  " )$ "   " 5" : " "#9" "S1" "9 '" "/K" 2 " 2. - " *8!E'O?}" * ?/" 2  " 2Y + "  ."  & "  (#" J " *" "  "  " 2 " "  " :   "  ,"  4J"  #@"  7;"  ;"  7&"  .D"  k1" \?" Q:" *" }(" 7QX;"  %"  2"  U" &>"3   "   "  "  "  "% "  *#"  J  9#M)"  b2"'    "  "  +^"  $"  *" ! #$"  2"  *i8"-  "    " ! " F"  " !"  .6"     "   $"  *"  " !   "  " 0%"  *," *";  "  * !7"  2  &"  2 !"  BSM(  6n)"  b: " *$B -8"  a" #"  J"  ","  )" j $"  Q" X"  # "  "D"  2"  )"  ." ?," %9"  @+"  ="  Z=" %"  %)="    " }" C .="  1I"   " 'I4"  ,&"  {0"   " #1G" @ 0 #" - %"   )"  !" " " Q + "  $" ,_D" " C" = ";P<" "  " "09)  " :>;V0 t'" Z&2<("-  # " , +#"  3" @9"  '"  N." Q_+'" Vt" *33I" 20 ?" ! 6"  )"  %"  4 "  "  "  ,"  A"  %:"/ B   " E0"  " 1" !%" 4 H"  " -" !$" /" 3" 6" " %"  9" T " b " " @" p " " "H O'" "" !2 B .@U" 2$ #" JJ t# M} %" R& "  H"  $"  5i"  9"  4"  /"  #"  0 " # " d " S )Y" Tr" @(" `" /a" ) " V#" O " |" ,8"  / " l&v4(" ." )7}" @" f_g" ,"  " /" ig"  2"    " O'" ko" #> " 7,_L" b%* :"  5$ " "6#13" "Y." *I" *$" * 64I" * " *;" 2+; /" 2'7 " 2\m}" :Rb :-"" r  "  [" /" "   !" B )""  ^ "  R" ' " " ^4 " :`@ \ 8"  #"  \"  ""  c"  ="  N"  J"  3"  " ^0 Q" I !" J" '" "   " "<" * V-9" * " }2>,K?35w)" bu,"! j&"  +%" R7     )" b!   /"$ z "  R"G "  "    " *#" :     " : -4  #" J+  8*#" J * #" J5 ,*"  &"  ]"  T"  l" r!"  p" T " %)" bO0G,A7')+ul"  9"  %"  H"  \"  I"  y."  7"  $ "  '"  1"  >"  ="  )" c$'" 1" I" -" !C" 8" `$ c"  " "/. " 83 " -"  !" " " =" E 7"  " "-" "|" "8  *" " /" " ; " " >" *[IMA+!k% " 23  +" 2<" 24= " 2;" :,,/"$ z46"+ ! "  O"  "  D"  Hp" " <"  ) "   " "9"  6"  R'"  ("  n"  !"  Q"  $j"  ."  R"  ) " ! f"  Q "  5"  *"  -"" W"  " 0*" - " F" WU" !2" O" H" !" 3!"   " "" " " "V" 2) )$" 2 C<#"\" !2!" B$%" R, !+ (" Z>   -"" r"0 ( 6"+   $"  U"  . "  C"  -!"  +""  3"  f"  '" " b"" :" e9"  !" %" ,"  ;" 0"  F"  " & "  : : "  6" E " 5 !0" " $ 6" )Q1" ," '@0" " :" ")1$:" " *" K*"" * '" *2 " f*>_A," 2Cd"" " 27K " : 5 " z:"0Bo!" B8B "  (^"  #>"  V" 1  " / 1-" "! ,"  O"  R"  "" ! 2"  $"  -"  * "  M" ! 6" "5 " " ! 3" ^2" !>" ' " ! =" 5-" "(0" "G Y "  H"  R "  '"  \"  "  2 "  V"  '"  &"  P"  +"  0" d8" ) " 1Z:" w$ " &" K +F"  $" @" 0"" @c" (6"  4"" "1<" " " " ) E" *,  "" "qG4[ 3+" "=D" "_448D" " $" *kY% x" *A7 " 2 6," l24 !" B1 )" b)+ 12"'  ! ; "  6" 1 5" 7 +1"& !W*>"  0" P" O" !* 3  " !/* G " k" . E)" o L" M (" 2* =" o ;1" 7 "  " )+" 3)" 6N8" :*3b" 8 A5" "; " ]E '" A-"  " Z  " xc #" u" ,$ " E"" To " " "A'" gw " /" "2 -" '" " "; " 8* " L*  " w" "" a: Z,.1" ): " =:  I"> I" 2 " 0" 1=" 0# " 1# !" 1$ '," 1# %," 1# 4." 1$ 3)" 1% <"1 0" 1 " 1" 0" 1&" 1n." 1#" 0"^V7D" 1 " 0.!" 2" 128'" 1'" 0:&" 0* " 1-!" 2 " 0" 1$ " 1K"#" 1"(" 1A"0 " 2*" 02@k -L" 0 :./,'0+.'<-6+6'" 16 -" 0/ N" 0: " 04 " 14 '" 17 " 00" 07 " 00l/" 12$ $ " 20"" 05* ," 172  (" 1/ M" 1) ." 1/ " 1+ 5q" 1)  " 1+ 904" 2,-'" 1)*  $" 1& <" 2& 9" 1']" " 2(%5" 1'"" 0" !" 1"  " 1 " 2" =9" 0 " 1%) " 2#{7F" 4 " 4:  9!" 4B  " 5 )" 4 " 4 "" 4 ?W" 4 4?" 4# 22" 4! +7" 4 *:" 402" 5 " 4FE" 4" 4 " 5**" 4$#2=9" 4  " 5 " 4!" % " 4*9 /3 " 3 :!+L5:) " 4< ( " 5: # " 4< < " 4; * " 4;  " 4;( " 4<#  " 5; " 4<) " 59b 1 " 45 ' " 51= " 52'% " 442 " 41* " 51 " 5:-4  " 48   " 497 " 5: " 40! " 47  " 52  " 50   " 4:" ! " 5/" .m " 5:"! ' " 4:* " 56*% 5! " 46B     " 5- -% " 5- $ " 4+i " 4* 4  " 4-4?  " 5,:1 S## " 5']=P "E 4(  Q1'L2H0  " 4 , " 4 + " 4!/) " 3"  " 2"   " 3  " 3$ nb " 2" 8 " 3& . " 3! + " 3 $ " 3" " 35; " 3Jf " 4$In " 2)Y " 4"9C ! " 2BJF " 4< [ " 4;& " 2@ " 3>  " 37 ' " 27 ( " 40 S  " 37 0 " 28   " 30 1 " 27 9 " 37' " 23Y " 35 " 31' " 44#  " 37   " 31&" " 406  " 39- " 40 " 20Y  " 39! " 26N7 " 38 " 2/  " 2:  " 21">, " 39" " 22*  & " 3/*# " 3)J " 2)   " 4, R " 3* &BB "7 3)     " 2-b  " 3. " 2) " " 2*=& " 3) " 3- " 3,K " 3,"? " 3-" k ? " 2+*0d " 3+2  " 3( & " 2(   " 3(2 & " 2"  " 2 # " 3 ID=> " 22'@5 "   " "Z- "  " A3oe, "   ; A "6 !1E$%j``+  \T "  = " 9"(#  " }$z " "E0F/ " T1\ N ' " R<3u&FzV C " "2 " ".*!EH^D` " -+XX " - class" fence" hedge( x building" 5=" ;=" &=*  " 5=" )= " %=* " ,9*" .=  " =2 " = " ;= " =   " = " -72 '" 132 " 25*&#" (3:  " 2="  " 51*" ~/2 ,)" "-* " <12  " 89:0" =J   " 1* " !+*('" 5+*  " +=B-  " =")" =:$ # " 6;*6 + " ^%*!" 6/:   "" 6=" #" 01*$" '*  %" 4!*&" =" !'" :=/ !(" 22 )" &:*" '*"+" )Z  .  ," #*  -" /+*    1."+ =   #    /" $*   0" #*&1" j "&! $2" =b !  %)3" 7B!$" 4" * -5"' =   #*6"$ .3zD ##(   7" .=R !  8" -: &9" 0=j #  '  :" <J O;"I 3 rb  ))     5<" -!J &(=" J>" 1B-$?" +*%& @" ,R0A" 5 23 4B" +2 &C" -=j) %D" *  (E"" .=r&%  F" 8 2%$ &G" :  H" =="(>#I"  *&%J" 5*+*(K"" 0 r  "L" :=Z4    %?M"9 =  ! !    N" %**+O" 2*+$*!P" 0*"Q" 1Z1 2 #&R" +;j.  *%)S" :& & T" 2<(9U" 2"%"V" Z    W" B    X" R-,4QCY"= = "     #  /"#&Z" j!   %[" 2*/&2%\" B' 7]"1 6' (*     3# 3^"- 5 " *#_" *- .$`" 9-b  "  /$a" b"#*b"$ 1z, 1c" 2( %1d"+ <'$8 /Ce"= 8#8   $-  3f" 4*)*g" :8 /5h"/ =B  '  -i" +J   !j" <J( -k"' + 0(7 +Ol"I D/ $           m" 2 "n" Z& %'o" 9*$p" 6b #q" 5* ""# r" J s" ,&2t" .B. &- "u" Z" (  v" 92 (w"" r4 /  -x"' .$% (y"" r     z" R*J K  "{" 5(Z8  9|"3 8 !    '  U}"O =0(   %$   "!~" =,*.-" 4*  )"" 7r .8R   !3M" 82 "  %w"p =(      ,! $!)" 2 )L8!,G7#" (Z*1   " 6*&'" >*" +$J1" 62(%" "J$ !" 2*@"9 :*  %#" Z 2" :*   T"M )" ,' - 1" D*)*" F*" H*)*" ,J2" 4J* / 0" 5H2 ! $&" `Bj  - ,0 '" <.j#$ !" .: & #%" *b $ # %" ,*" & %" 4DJ ' $ '" ?4j', " *   " ,V2 D-" >Z*" ,L*2"+ X9 !"&1#t"m 2  %+"&    2D*#       " 2Z:  $" :*J$ 0  7L"E .0!     0") 5Z " ++"$ Zz       v"o ; $     #2=    '" fj  " 0D*"&%" " #(        $    $ 9#  $,')  ) 3#" 8.Z& " ' !" 4^:DR"K 16"         " :d*   " h*)"" -lr(+2 5%" 2bb-   0" 5p* 0") b" (   #" 7VZ .   $3" :h*   " r*)$*#" 'h*   D"= h@ x    1 " 0p*  " 86J" H  !%" tb  *" hB   #*8"1 *f       %" 9>b $ D " jB " v*" 0z*  " V2 @"  /%@"9 >4 #. -\7 8 9 " d2  !" Nr: %!'" 0vj+ -6..K " 6J&7* ! "*   )>+   * &?  * '810'/9" |*" x*'$ *# " 9l*6"/ =X  . -" B " -B # . " ~2 *"# 4r> $ 97@"9 b(5 &  !.     " p2 4"- ~" *   " -J& #'" ~j:  -" =p"" =:n"g z             " *" *  " *!" 5NR>N ?" 4*  6"/ p  "#    " %B!" !" ;*-&.#$" +Z $K2"+ #    " B  " v 3*    +   )d  ! .   &*&     / " /*$*%#" -*  " 1* -&,)<"5 L H+  >& 7 Y" 2 " J$"" 9*14$" 9Z$    " J (="6 ;) !$  $5  " * !" 9PR.B $+%'9$" Z  '" 2 ="6 ?   4 '+G" 6*  " 42" *" *  " 2: D"= 2t, %! (2   2 + " 9: ("! 4j4   !#" :xZ   ##v"o :f   * & / : 7   )  " J'8 ( " :%!(" /*  " &: :"+ " ?* $#" 0:'8" *+$,!" :   " %J$    ! " :*1"*  : " *&%" 8*" 8*   H"A Z$$  *4)##  )("! j* " 0B@ F %" 9*41" +2& .% /"" R   " .!  c  ,,  #2   &2  % % ! &   (!    !6#7 " 1*-,,+" *  " *"" :  3", ) J"   #" 2:!  " :   $"" -B1 ,#("! 9j  " $:  &%#" *  5". % , " B"" '*)*  " 1J'&& !5".       #!" *" 52" 9*"" 2 " 7*" *!$ #" *# $ " 82  E"> 7   .   &%#   "} f$ ,'    2 ! $        #'() ;"4 /'  "3  " B "("! .j$ @3 ("! ;j &! "" 9R4&GI"B  $C 0, 2 2  3  " :*&2%/" ': $  " J0 * " :B&1%" 12 " ;*(:)9$" Z#4"    " #:4  " =*/F8 ! " 2)X<  Y=" 8: " B (% " *.) "" #R$   " ,2  " *36&" 9b  " J+   #"" 6R(/("! j Z8 5" .B+:8# "   ." UZ0 8 ;7 "%"  "  Ah'<_A +!      " 5J,?+" 1*$#&" <b R ;  " 0:  ("! 1j %" 1*7"0 ' "  4   15". :Q "    " 2 , ) " /J2 %" .*4"1C"< '& $-  )#" :  I"B %      2$   *"# :r@&? $" 8Z((#  &" b ("! 4j(,1" 8*   " =*   ("! 5j<:!-" 4*" :AJ0; " &2$" 6BYj  " J6%"Y@$" Z)"(*"# r"   %" 2( "-  ! " #J *  ;"4 8"     +" :*0#/" 9*&:%;"" 9R" (!" 6*" =*<  9 " ':& !" B &.%" ?*" +" "* &%" *  ]"V 7 !*'   C 6  " $**+" :  N"G 6%&+"!   )0,"% z-  ,! $" =Z  ,) C" :  &" :  0 I"B b+*   0$ H"*% &G![)W#;I!" *F- C. ,"% z.!   " J1<2   " =*,+ " 5J$$ E"> 3  ,:4,.+! 3 -" 5: .3e"^ -  ") 0 ,        0 #-3", H"   ! $" &Z  *"# 'r   " #J $  '$" Z  "'!5" *  " ,:"&" :b(   & 7 " J!  $" :Z  " " #:(    " *-. /"( ((  5"!" *   " :( -" : % "x 6O ' % '.  *  " , !"" (R "!  #("! j"  )-** +    %$     1 !m"f .  $   *  #.<+     #'+ *"# 2r 5.!o"h $2     % #2'  * %&+"" &R   %" *"$" Z, (  )-" *%$$$" <Z* !" 4*  " :0!"%" *&,# +" *  " 0* " 5B ! " -JJ!"J?  !" 02  " J$" 0*1"* ..   G-#" *   /"( 1 8$$ -" *"#("! 7j    5" :2#,3$ E">    "+     " *G"@ 0     &,(#!  " 5*67" #*( ) &" b," *  ["T ,  $ >  #  " :B '" *  ,"% 9z4D '   " * " J* p0o-' ("! ;j* .  ' 37"0  &(   " *&#" ;2   " J <"7"" R $  s"l ;  (    8   &R)(#,%+      !" `:(%" +%" *" <*  " 52 6 5" *"        !'        # 7 J("   >%    % :    (  #     "     *%    !!     "%  0       !%(3# $    !  !     " =*$ 4# 3" #B  "+ #I"B 9&"  %E"> =%  *"# (r $ =" *#","% z   " 0*  " -2 . +"" =R@  " "*$ !!" =" *"" "R  $ /  " 7J*)" * 7"0 4&   -$(  " )#" *-." >* " 2  ,"% :z$:  &# 9 " : " >*  " :  *"# "r& .$ 9 " :   " 6JC& . '="6     "4  " !*('" $ J3    $       "" R  " !*" (* C"<   *   9" /2   $" <Z .!  " 6*  $" Z  "9* ;" 6*  " 0* " 5: "$%7"0        %&" 'b$&   7"0 /&   ' . ) " /J  & " :#& " J+d** /  " 0J$8 3/"" R :? -&" <b0  !%" =  &  $ !" #(    ("! (j $ %   # 3 " :%"+>#/"( 9   - " : N"G ! "2!  !  - " *" /:  ( ,1 7"0 - ( R   $ '& ' & -" 42* ) #("! j ( $! #" * " *' ( " J651"*  B-" #$" Z"% $1" 0*  $" -Z  " $" 9Z ,  #  " J, &-  " !*m"f % $ ".+-*  " 6*" RB  $ " * " (*  ! " 2*  "" =R( #5("! j" " &*&&#%" 02 5". ;* #. %7,"% z'(!I"B    .       " J  "" R 2 ("! j  5" :  (  " J 0! A0 $" %Z,   # " ;2   " -*  " :2" :" &* "& ##" <2  % K"D 1)&" &    (+ % " J%   " *  " <*" * $" Z " 0# " (*    " J  I"B ,'  %0%(%   E">    #" &) %$" Z      &" b"  a"Z 9 &  ,  *  ,1 " /* A": "     #     !)"" 7R" "# " >*  " *  ,"% :z" B'! 8" -*  " *J3(I2%U"N  * " /*.+" ;2" @*A P7" *21" :" &* ("! 9jB . 1$% " ;:"!;"4 6 8 7 ",! 7 %" : " 2  " ="$" Z     Q"J !  " <% ) 03 )" 1*!"#" Z #>8  !!" **'" *  " 72l(Q'"" :R4 I3", L 2;  !-  " *  " *&'" 0*   " *&" :b (# %" * 9"2 # $ ('   .   )1*"# r' k)" @B  U ="6   ,&     !" R" " nB  " ;:, % " J$ )" ,*$#" :*  " *" *,)" <2 23" *  $" <Z ,  5" 6:&*);" *( '" ;B   " *  " >    !  MM   1 2    *"6K9 >""!  &      .'   (#  8 %     4,         " 4,      $& -  !1&$* 9 \  %     " -*  ,"% z&6(.+=5" 1*M"F      ($''%9" 9BL [*"# rW"P %  "&     41 /   " ::$- +k"d            "" R< $ '" *     " J" *="6 "$ (() ) !c" *" *  ="6  2/($)*  !e"^ <   +( ( -$2  ! =" B   $" 7Z ) #" 5Z $   &" b3,+" *]"V / @ +'  %<  7( ) " !2& %" >:0 K+("! &j$"" <*  " #:(!" 5*$#" 0:86) //"( &*) Bb ! % E"> 7 (  3 " $" "&,("4,3    4' !%,      ,"% 5z2.?- " :  " *  Q"J 0 L  &%K" 12" " J1*2  7"0     % "  %" 5*, + " >*    " 2<) .;* 1"*  (:  & 3 7"0      &%   #" :/   G"@  !    !   " 2  " *  +"$ z!   +!" /2 " =*  "" R   " *" *1"* ??  " !    ! " %*&"#9"2 9,  " 2&# " :-  &" *  " 4* " *   " @"" 7* &#" 5*6 5" ;*:5" :,"% z$ , # 1$" Z  " 2!< 1 " 6*,-" *&&8#'9$" ;Z341&" b    " 72 $  %" 1*" <2&" (*63$" Z    ("! "j& +* V#   ' 3", $  $ %  " <*";"4 =#  ) " B0 # '" <:;."" R   &?.% " J   " :J 4  -" -*   " 1*('" ':( "! " 8:> 8+"  D& %  $ $  3 *% ,(3/  & # )B- %" 0*G"@ ) ;#  &() " &*&*%)" :  "+ " =*7"0    ( " 5*0 1 %" b  #/3"" 7R"   ) " 0* " #J$  $! #*"# r6>  )3("! j(  $! " @*'4" =2,)" 9*   " J,   /" *   _"X %8  '&   *  %%&" b  $" Z,! .> )7 " :(#" :"" *&" 5b  ,+    " :*(' " ;2#"$ " *"! " ,J   " :4# '%9" +  &-  6 , B.('   ,  ( ' ) ,  " 6*BA" (B&%" 0* " *8# 5$ " ":& +C" B,"  " 6*" ,! -5".  " 8*D   '("! j( & "'!*"# 'r+&*+" +:$ " 5*" ): +/"( 9Z B3 % %" *     " ?J#*   " %J 9/" @2" 7*  " ,*" *&$' #" (*!6$5$" Z   1"* '  " *0"/ ! " J  " $" *   " 6J  &'  " :$#)q"j & +/" 4   -&  .    $   + ' $" 0Z " *$!3", J &     -5" :  "" :R L01% " 1285" <Ba. $ !   &!    " J  (# " *    " 7*( ' " =J  _"X 7 , $  $   &G .+"1  " ?*"" *    " 9J4 P+)" *    $" "Z $*!   " * " J " !  " 8J: $; " :# " :&" 5*43" ;* " # " /:  &" ,*  " 0*#&!" 2& % " B  &! -("! >j     5" B&   " 2 "(C,%Y"R $     0  )!" :("   *"# ;r ) $ + " *:  " B!*( " 6*2,/+ " J.6+  " #*$" Z  & $#  " J , A": ; 8  , ,  !  ) " @"" " :2!@=" 82  " : .7" *  $" Z  $3#" 9*" +*"" !R & &" 5b  & I"B  Ij  h  2*F E &" b$       " :*  e"^  $ )X %4  4-,+- 0!&*# C %$" Z   " ;:1  $ 1"*  . 6 $)  ' # #1"* ?% #"&!.   -" ;* !4 3 ,"% z   " #     '"  C>-&9'% /q&'5)*$-/    & (+ $")",(#  !  / 4/ <1  $)   0 /># >!    '   %  " *$ '" *    &" b 2 0S8"1 : 2! '- ("! *j .!1" +B(   7"0 1*  %%" *" *  " 8*" *  " *" :    " *:" ./" 4*BC" %*. $- #" **()'" @:"  " *& .' -" *    " )J(*3 !$" !Z,   - " =2 *lAO" :^J% 9 -" ;:?63", 9  =" * "#&" 8bD2A " */0" **"# " <:7  " *  " 8*  " %:$ /"  . /)("! j( #+ ,"% +z  &  ! " )* .!)" = * " 5* " **" )** + O"H       &&  q^   " ?*?> " :" 4* ,"% zL5( &" *b&  # " 1*0/&" bh1  9" " : *   " J*% " / (  " $!"" )  *  "1,%&  !" *  *"# ?r  1 }"v R7      2  )=  (!$2    .! )  %7&  ,"% 5z* $'" * " 6* " *  " :2 . #)A " J* @%  ) " J`,--" $*  " ':  " 82%&9"2 2! &D1    ?"8 #$  ;  "   #!1 " !J&8   7" >2(Q,%T  " **'(" +: " *  "" *R 2 " <J7^*   ])" ,* "  -! )  $ #    '  /  &%   $ &*       "#7"0  (  %9"2 , $    ) " *   " *  " +:  " "J " " " ):" " (*  !" *  " @B# 4  " :" B,*#  " :$" "" R" & >/ 1" :  '" *!N"K " 5*,+("! j V+!  " =J ,  # # " J  !" *#B $A " +B#,*"# )r*,-# " *:  =)" +*" *$" 0Z;"8 &5  " ?:-2W"P ( /( !&")*   < 0) / ("! j6 :  9" (2$!%" *" !*  $" Z.  " !"      #&0(!  !*( &#% " ' ' H5%C   '#9" *\)0e(-S"L `"  * !  $= 5_ *) !" +*&'?"8 <K X(  *-  !3>" ?:&9"  "      %  !*  4 ,% " '() 54 $  &   '  # +   .4  "4 " $   31(#  (3+ ' #  %  $" Z  . " 7*!$"!" *G"@ 0%"(  )5, + ,   #!" **'$(%" :   &" b %   ! "" R<^]Q" :   " * #$ "# " *KNLM("! $j@  ! " 2   " <J$ "  G="6      G " JH8   7" :!, *) " @*    9"2    17 ("! j 'X0+" :,3 #" &* >! =;"4 ! ,  ! " " *74" &* & %" 6*  ."' 5     "#Io"h 4   (3&&%-! 0, +) 1( =7 " 6J9 4*"# +r" !"y T&.       %#    2P $  IE">  +     )" 5*" 6*1 2"  * @ '& H#   ""     B#  4   !"  #2  - 4 )   %& ? 9  7" +*" +*%"$# " 5J!"/ . / " J !#" 7* " =* ( ' " ="  ("! j" !" $*",#-" * $" Z8#    " 4J"K " *: &9 #" *" 7B"" :*! " " 5: #" 82#.F-" *  " 6*  " *  " B2: # 9" ( &    '        *$ % & 6E  !' /E$" <Z*) " :  " 6*" 5*"#("! *j *#"" <R    " J0$  1 '" :4 '" 6*" )B,+  " *  " :$2)+" :&  /3,"% *z$  " +24$% #w"p )  & .' F 8%38;  '&?5". &*  (   ; " (*"*#%"" 6R#   " >J   1" $*@? " *  " 2  " 6*  ;"4 ,7   &!*" 4*(%{"t     :S$9 !    " 4  (!:  -" *&!#c"\ #   &*.   $   /    &' +("! j  !!{"t  &     $  $   &  -O  #" )B  #" (2    " *4B1A" : 2Q 9"2   *&    " ?*  " + :  " *4 &3 %" 7: !" : , '" 8*  " "2(#06)$ #" * :3($#"" 7R<)!("! "j$" *Z   #" > *"  2/(0%" : *1$ 0#" *" > *)( "  *  "  *,+ A":   4    "  2  *"# ? r     "  "  :  " :2  )+$ " Z$, - -  "  J)n9 3  " *   " ? :!&  "  2   $ " # Z  k "d   #      0 (   ' -  "  *   "  J  !. "  *   " # *&#'$ " 2 4 #1 "* $$>  !7$ " <Z   2' " 8 *:&9# " ; * " *" ( %S "L *-       $GN) 3'* "#  r    ( "! @ j    8 )/ "( $. &    1 " # :   ; "4 P;&%R0 E%   &iN  4% /$ * "#  rF "   #  % " *TVSU "  *   "  :    "  ** ") 5 ".  & (      "  * "  *.+ "  B   $  "  *JK " + * "  * " $ *a "Z 6)    <@=> 217*   94  ) " " *   "  *  " " ? R%X&"- " $ .4 +-8$ B#"  !     (  40 0  # "  *'(  #04,  6& /  Y  ()7 @% 9  "'   !D 23 %  '%#  -! % "  * " # *"! "  *   " & 4 & 0&."!! %*H     ( ,H   *'"H+ !- "   "0N#; !   !    2" * $ '  %3 1##$ ! 1  " $ J   " @ 2   " + 2 . 7( "! j&2   / "( 2 ) 5 % " , *   "  : &!   " # J  G "@ * &9906   )$ " Z  "4& " b@  %   $ " Z     "  J  +&    "  JB5'3 ", "  3;*/]+$ "  Z& @0+ ![ "  *    " 7 :(  " + 2@ #3 ", ; '    R -5 "  B *.% !  "  JF3 #    " * J  (;5 ".   0 (* 1Qu "n 5 $5 X$ 9:  * -(5  .- - " & :% ) " : : =& 6A  " & *!(") "  :    " 8 :0 /' " 7 *  " " B  5 ".      # !H,3 " " *6J7G " * "  " ' :,(/ " ; :5   "  * " !& "  b22    1 " ( :**' "  *& " b  %    " < 2M0 N # "  :\ 0 G %A ":  0D    7(       " % J= D+ " " 2* "#  r 8  *1 ![  " J2 6 A$ !5, "% * z +22*  "  * &%( "! & j*   * "#  r6      #% " 2   U "N !   " !     +;  " ' J(>'& "  b.&   #7 " ' *  " ( *('  " ( J  " ; *,+ " ( 2    "  *  / "( & ! $- "  2 $ ! " + *-4& " ( b9  &9$ " -J<-O> 5 ".    (2 --( "! ? j ,    " *" #; "4 " (    %#!/ "(  L%[&T* Y.  "  * " 9 :  & " 1 Z$Z#g  "  J,!+"( "! : j -I  P3 "  *   " # *&+   "  JD &  #7 "0  ,[     ' "  B  2  #U "N V,-..   -> K   " & :*!$ " 6 Z    * "# + r !    " % 2.) " & *01" " " R ( "!  j<'   +      " ' :,' " ( *,-/ "( "   "(!    "  B<"!1 "* > &$   "  *('  "  J* &!7 "  *    "  :, "C " *  "  :     " 8 J 2/3 ", = !  (  ,  " " *   " = B,($ 0M " & :(") " & *,+$ "  Z^A "- !  " & *,"+ " ( *9,:+ " ' 2"  + "  2  " ' :("- " % :.(   " > 243   " ( *( ' " 8 *45 "  :!.%9 "2  >      -* "# rJ;,@ 7$ +O" " ? R  ( "! j$"    !  "  *L K  "  *   " ( :%0D7 " 6 :$$ "  ZJ-';&1 " *   "  2  3 ", !    ( %( ) " " *  " 5 :"" )? "8 )  # >+ ,  Q   "  J4  *I,)/ "( : -(0  " * :     _ "X ,          8  '    + '3 ", "  $  , "% 5 z$  #$ " 5 Z  :#+  " % *&$)# " 2 " 7 *0/ " *  * "#  r* &"'G " ; *  "  * ( "!  jN $) ! %  "  J  &%- "  *    "  2Z1&1'#  " J: E  "  : 61/ "( ; +^x-  + " # * " @ : ' %T/ "(      #% "  2:#*=&  w "p # 4!'2 % #"% 0$23 #   (%!"3 )7 "0  *5     1 "*       'W   " ! :* 'E "> (?# "/      #8 " : @ ' " : 3 ", *     "  *   " " ! R*   ' " *8.95/ "( "    9 "2  "   ""   !  % !#$ " = Z 1, $ 1  " + *1 "* ) ,  &- $ "  Z&(B +  !5   " J  <  ' " % *T *Q ) " ; 2,) " : *"% " 5 B+.$   " + :  "  :R S" " < R  5 ". 7 "!668!'$%&'  " + :!2 & $ " % Z4" '* "# * r     " " *  " 2 " *    " ! B & F K3 ", # - (  ) ' " ( *&%$ " $ Z:0    " 5 J 92.$ " Z2  E" " $ R  $  !* "#  r *#)/ "  *$ ! ! "  *$! "  *( )  " # J     " 7 :  " " $ R.   !   " # * 2/; "4   \5,L   #-*  5 ". '  # 1 "* ( 4  ," 5)#1 "* < &  #  "  :   " * *(' " ( B.  " 2 " 6 *& " = b[ F * ,1  " :  %  "  *1 "*  hA  "6 ?(7$   " * * " !  "  :    " # *" !  " ** $) # "  *  * "# ! r*$     " :   " + *1 2! " 6 *'&(# " 5 *+".# " 5 */"0#Q "J      ="** *-# % (&    "  J2? r;+7 "0 7 $<;01.@+ !" "  R /   7% " *   " *   "  *$!3 ",  !.. > 713 ", ,   3" 3 + " + *  "  2* 4+ %, "% : z* 25 , "% " z      '; "4 '  &(&% " " ( R((   "  2 $ " = Z( " 8 *, "% & z0$/  "  B,# " & *"# " 5 :"  " $ J8 = ) " 7 * " " *&% " ' *.,-+ "  **"<35 " */ "( ?    0% "  *b;>]=( "! # j8    " B  $ " ( Z *  "  *  "  *#$, "% < z )T? B?  "  B   3  "  2" ' 3 ",       / "(  ("J :*K  %   #C " 7 2   "  * A@ B?  " $ :  % $ " 7 Z2 # "  %  FD  ,  (  !       , "  )         " 8 *:7$ "  Z8      "  *pm " 6 * " ' *43S "L %   $ ,     +; "  ** %; "4 : G> % !  "  :$7$A ":    # /( >    !% "  *  "  *; "4  R (+ " " R(?(&'>Y9 "  * : 9( "! " j 3$ " " ; R0 ' 7 "0 >   &    " & 2:  " & J H"7  " 6 * "  *>#;&" " # R, ;(  " 5 *(,'+ " " :2! " "  R$ $#! ; "4   1& "  b $, #7# " ( *VS " 7 25 ". 5 (  &  ''" " 7 R  , " "  R1*  "  *"! " ? *E6 H3  " - *R?Q@  "  J 47 * "#  r+/n"8)O ($ " " Z   + " $ * 4 31 "*             " 7 * " ' B^ */ ' " ' *0(1', "% " z    , "%  z.,6-    !  "  J  9 " ( *NM; "4 #   4   #-( "!  j b>"C  +$ " : Z'  "  J,$+    " > J, . ( "! # j" &     " $ * ! " 5 *&0%- "  :4#B~EAM$ " % Z(3 " 7 *"1 "*  E  BA " % B 6)9 "2 ) *"H:C  ,) " ( : $  "  * &' " ! B"   4 "- / 4      1/]* "#  r"%(+! " ( * " "  R"   " ; *=( >)" " < R',(*)) 1 "*        " ? JM <" "  R O "H !    !         ) "" ) j=  #  " 7 J   " 6 * "  * !7 "0   " " $ R$  !& " b8 " *h= g>  " 6 *(")! "  *   " # : ( /& " # b 2 2?  " ' :! " & :& + " = 2c4 * :3  " )*[\ " ' 2 !6"# 1 "* !   0$'3  " & J(,'!, "%  z  $2  " *%&3 ", 7 .  <   ) " 6*   " )B"    " )Js:$2  "  J   9 "  B$># -  " 7*   " ;*.- " :  ( "!  j0      ) " 5B6 + " 72"1 "*      " " $R,*)1 !1 "* 91&    $ " " Z 0"=% " $*&' " #*2 3 " *& ' 9 "2 >     "     " %J< ;  " #* $ # ( "! j2(#$ " 7Z  *) " !*!0$/1 "* ?'&     / "(   & 1    " ;*%&&%/ "( '    $ I " 5*65  " J 1 " 5*&#  " <: G8 43 " !* #0 $/  " #B' 21 " ":. #  " * " 2    " =J!& " =: =$& " '2N A " *,)!  " J%& \%# " *!"  " %J8 # " 7*#,$+  " J   !9" " 6R. +& " b   ," ) " 5*./ " %B&  - & " >b < 67  " +*H jI k " *$ " "Z  r "k ) !*  E V?-- $3H"       1  " J `$vMa #" " )R5 6 # " ?2%@ ( /  " )::F/! ' " $B* 0 ' " ': $ " &B  " B -  $ " Z * *   " 6*  ,!+$ " - J:/ Q@  " 2  ! " *2?2<1( "! $j  -  " $*"!  " *   " *,+  " :J/4-u "n n0 T;  &#">'*Q4" # '7*J/  /R +)'o1 " B$8 *5! ' " *( >% =" " 'R $!$ " !Z -   " $B$# " *   " ;*!$ " :$ ,#  " $:" " 5*#N"O( "! %j + " *  " )JLA M "F    &   . *  &  $!9& " "b& "  !   " J   " :  #1 "* 75 ).& ) ( "! j.    +5 " :   $ " Z :' " " @R P% = "6 &J      !  " ):( $-A  " J2A2('21' " :> *% #  " J"  " * " *   " * " 9*  " *$!" " R   1, "% (z03    " !:%,"M " "20'  " '*& ,% ) " %:LI " 9*+4 ./ $ " ?Z!%. " 3 ( "! j8%   ! " 2" *! 1 " ;2 )" !  " 2   " 82>= " 2$  (# 5 " 72 + *! " 2& h# g " )2 (,%7 "0 6:, .%  ` "Y = 2 J] 5@ +  (%   " J*  (1 1* "# #r+ "$ " **$"# " ,* " **"*!) " :/(<%  " *("'!8 "1 + JP !0  " :/ " &B  1% " *  " %:&-) " 52 . #  " *   " ;*"   " 7*7( 6'  " %*,$+!$ " Z0*%({ "t  e    00*     '<     " " R -, 94 >  ,A %7 "0 '  $   " ;*  " $J1" " %R")" " )R"(0 !1( "! <j) "   " *J   " 2$!$ " Z! !, "% z " "' A " *   " 9*-$ .#  " *\&] % " )*$>#= " %B *"; " 5:*"; " (:   " !JQ"L)" " :R?,  +  " : + $2-$ " Z2 $' + " *20@!& " @b  H# " B (>)9 "2 (  (  , "% )z  &#( "! =j  !:      " 'J, 0) ! " *,+ " B.E("()  " *8 7  " <*38459 "2 &"     #   " *J   2 "+  ,$ &).#  " :8 &A- " * )* ,)  " *  " " R&#)   " J   &#@%( "! j  " 2 "" Rb 5+" ,:&%   " J<(# )" *   " #20D/% " >J%6.# + " <B34$ )" P  1 .   .&RC213  1 (/'") ': = %" *" *& B' A" *20//" : .5("! j"   " *+ ,! "" 5R ,LG/" *"" !R) "/ " 72- <:;" BE&*" * v.w+,"% !z)"$.  $" %Z&!-" *" '2F 4-  3$" Z ("! j * V5 + " $*+2,1" $2 /"( ##.'2BS1"* "58(- " =B'4 93", *$  .(     " )JF4# )" 2  " (*&B%A" BD&#+" : .- %$" ;Z+ * " )2*L)I" 8: # " ,*"0!//"( $    %1" 7:   " JR# ')7" * # $" 9:#  " .*U"N !H@ #% " $%*^P +'  )#( "'  G=" *5z&6{%"" R>*    " J""   '" b%( \ .!A": <   " *%H &G" ,: 4    " +J $ %  " J   " 8:/  "" 9* & %" 8*3" 4! " >2/>2!  " 6:)T,))" 7*   " 9J    " B  " J "" <R) , " 2 # $" 6* " -*4 3 " , 2R;Q<" 7*" 6* *+ " :*) (" * *"# *r & ( ' % " *C, F+ " 5B *,"% z &$ ))" :: ,1 +" .*"!" 9:!   " J(  %" 6:& "" +2J.- /" 7*!$" 6B& " *1 2 ;"4 7 %(\& -  ,"% 7z4$&'-$" Z 6 " =:% ,63" "2  &" b (D!1" *>?" :B/  8  ;"4      =" 82) * " *& F% E" 8*$" %Z0 >=" "B4+5" #:,)/*"# rI4 & ,#   7 " B&(! " $JB:9/" *" 5*$#" 8* " " .*" #2&H%C" * " &J " B%%&" 6b$. $!9" B &&%!" 2  $" (Z<$ )K" 5*3", =.8%  "" "R   " 72 '" b. h$N # L! " B7& " 2    " J    " 7* E$F)3", 'L $$&#%% " J  $""" %R:> 0% #-+$" Z    "" =R< %" B   "" ;R! ,+ >C!A": ! '&   M"F  %F 0 ) " (*> 9 " *  " (*(0% " 8J%    9"2 &  &" >b "  " * ("! j@ D5BO k" 6B + ." 2z' ^{( =&" +b=  &J" )*4855" #B4'90 /"( 5 " * X W9"2 & *: &  0 'A ' )a"Z  +   , &   8.'   ' 0 )'7"0 "" . &   %%" 7*  " )* ; <" 9:% $C*/b9 " J-     $" Z   $8 " *l"e 68 "-ER   0' . ? ; ! " *#D*(E- " J  " #*,$)%" *  !" 8* " &" *b 1F " :C, $ #" 6*$ #" *" !*6 (5 '" !*> ,; +" * " 2/ 0" 7*9" :$" 9Z `.!   7"0         " .*ji"" R2&' 1,"% z6 *%- " 5B  &+ X"Q ..64& 9   , 0 * &+K" #*, - "" R    $  % " -J ": "< 7 #;" *  "  !" <2 G&. '" *& %" :0 !+" :  (" *" "2("! jB  " 6*$%" ,:$  % " *?" >! " $J& $%1" )*!& % " $J ,'!" *  " 5:"9 " : H W" 8*+," "B*&% 3 "" R , -" 2& $% " 9:  " 2*.+%" <*  /"( " 2 -9" =*- . " 2 " *" */0 " .*dc " J  " J   ("! j    ( +" :3  (#" :&:! /" *  " ": (" :(%-  " 5J& '("! <j&O ;6   ")"" (R 7" %" (2i, p- " $:&%("! j 3( ZS " **RS" ":&-!" #*$% " 9*   ="6 #   B= " *3 -  )&" ?b*4  "" R&   5" !2,*+ =,"% zB   " * " =:+ (#8'" *( % " J  #" ;2" *3< 6=" *2*3)i"b % :EP"I  ' . (( 8R ")  " * " !"" (R4 :" 52.'  " *J  +(  ' " :"  " * *)1"* V " F9/ %("! >j.   " =J" * 74:5 " * " :A* " !9"2 & +'" *E H!" 2$#  " 6:%,   " *, 6- 7 " /J8374&" 8b"7 -* 0 -" *& %" *"&!#" ,*F E " !*" ;:  I"B       " 6*" * / 0" 8*+&0#="6 )H  (#  $ 5 " ;*-2 *1$" ?Z 'J!" >:  "" (R&@ )*"# r [( ,0  A" *!" =: *(?!5". #,23'" *P*O )"" R    " *2 $7" 2 0 3 " 5J $  * # " *$" ;Z)$ 21   " *!: $7 " :(Bv #I " J &(# " 8*  " (:-L&#-A": %   @"t+#  ) )   " * DC" $* " :$  " '*( <' ;" B$"#5" * " 6J$  " J 3 * P) " 28 !" *J &G %" ,*F E " 92   /"( gB$+ D  " 6: 3", ?$3$ ./" ;: ( "3" =*'>& "A" *,"% 7z%  " " *F(E' " :J%& '> 'D7 " J,">   1O" * " !J ?/" :D(/))"" 2B\;#5 * *( ) 1"* =&;  (A %B  $ " ::B';" >:$2" UA("! *j  , #" :: " :* * '" *" *   ="6 ?*  %4#7  1"* . 1 \ # +1" * F"? S (     (#U#) 0"1"* $& &+ C 1"* #(0 "+ &"' %,"% z_ %(83 " *. 9" *]:Z9" 2O&P#&" b $%" 8**Q&'P'" *( @) ?" 2!: " *   a"Z ". -   6" %  ! /$" Z !("! >j"+&   " :#,25   " =J   (" 92/0 " #BT  0!% O" 5* *+" *   " +J^  E 9"2 5 )   !8    /%" 8* " * " 82  " :B  " ** B+ A" *" ?:;& &) 1"* "0 :2*;)9 $" )Z$   *''" >B  ." -" *()9"2 P l*_*   -" 9:  " :*  " :%*%" B* D3" 7B+$" (*. - " =J#& !" !:( @- " 'JJ &G )$" Z      " "*H 0I+ " (J  7A" 6* " 5* "  *"# 8r/  .   " ?J   (" *$4 #3 " * @ A" =*# $ " J.  $/ 3" *$ 2# 5" .2T}'>+@" ;2'$  " J4*^   '_ " >J  #5". &  ) " 5:" ,%" 2 & +$" Z, <    7 " J+ " :" -27 EE " $* $" :Z  "="6 6@  &% @"! /E# " @J- " " @*  &" <b/4 " 2 L! M " >J+   " B, H1 U " J" F# 5" =*.+,"% z$& 41    "" 7R 1     " J&$ %" : ! " 72   " 8:. " ?:7. " &J ( >/-" *0 T- U" ;*$! " %J/ *=9"2    #" <* " 8*;$>#" =B " * " (*6 "/  " ;J' '$& &!" :6 H/  39"2 9&    '&',  %" $B&" ?bA $"" 5R#  $" Z F ("A" A" 7*) ,("! jJ>+    #" +27 GE ("! j 3 (" >*&%/"( .  2!* + %  ,"% 8z  8 .  ! *"# $r  ( s$" #ZZ("# #I" '22 . / " J" H ]" 2$ .# /1"* # ($' #("! %j(! ,"% 'z 0/ 1  +" 5:"   " 5*+ , &" >b$54$  ( O1" 92+ ." &22(!)" *$ .!-" *" =2  " 5: ( 1$" Z" =-" 9:  !2"+ %1" * &IM )  " ,2Q P " 7B!"    " =B) .$ 9" 2B &; %" <*#$$%5". :#(E "6 !< *"# r " 287 " >*0 1" 0*(5<,)89-5". $  %k" 62*S$.$#K"D (0, 5 (    %" )24, +" ?2  ! *"# %r 6 1" *^*]) " =J  " J4*r3 !7!" JT'%G )-" 92%$ #" +*J G " :2)& '" 4*   " 'B   5 " &2#*$)" <*'0*-3", 4$ 1 7" 5*" !" 4:  " 62&= #@ " >*-,  " =J5"" $R #,      " 9J     " 7*/ ." ""1 ?:4 %  8  26")       4 - &G " <:+   " 62 50("! j8N#   " * +" *" /**7*+8'" *" !" * " 5**"+" * J"C ##P .&  F " *(b'_ " J$  ! $" <Z@  8"?$" >Z   " ':6%"+   &" 4b  ! ",#" 2, 6 7" ,2G y.?" <:# " $" Z%  *"# ?r9 /$ (  8# " 2  " #2/. &+" ;*+&.%" 2h$Y #" 2PH ME" *,.)+" **7 8 " =2  )&" :b  , &  %"" 7R  (B!" ?*" *"" "{2Q4Rq#?  B  9Z B<+ j 94P%   %=q<3 n3 s3 " :   &" 5b  "" R4 6I/("! j   <G" *   " 4J.$  '1"* (   ## " <J! ." **$ )#" 62"9"* !" * 3", , 6,=    " =J%2& +" *2B1?" 4*  " 4:#." *)*&" b&   $" 7Z 0"&' #" =*#&&%" <*#,&/&" b   " 6B  " 2 " !:>Q" <:'0  )" *VPUO" =:$  " ;*+ *!" *   " 8B,U>D)" <:     " 9B  " " J( :#5" 62- . " :" ,7" ":( '" * ""!" *2Q 6C " !285" $*" 4*   " $J5 j " J 8 -R- _g"` B!   #7Z  &4"  J7/]I  S "" 3R  8(%,"% 'z.!     " :& H7 %" : " *  " *> &?%" * !$  % " *> &; %$" Z  " 7:1 &   " 9J ?   2" <* '(" 32  " /:  " "*H$G#" : "+ " J@ A)m" *0 /" *" *@? " #J  $7 '" : 1 ( " * 0 / " J" *  " :   $" (Z  !1" <*#>&";#" 3:('" ;27@: 3" <2&; !8 " 42" 7*  " "*&#" ;* ! " ;*  " *""!!" *  " * 1"* : '  $   $" Z " / -$" ZD%/ " &J*0!" 92  " * " $25"4"" R$ % " *>&? %" *  " : 2 '" $*   " 9*98 " ** 8)9" 2   " *2 &/ %&" b," 3*'&(%$" 'Z"  !'7"0 (   ,  " 8*N*M) " 9J (3 " J"  ) !" ** N' K" 3*" * " *$ #" : " =*" ":,$37" )* " " * & #" *$ & %" *  $" <Z/ $   '" 52+ ,%" ;:  9!" : . # " :("  C7"0       $  %QE"> ;+ 5 (   (5 *)3  " 923 4 " 4*- ." 4* ,"% z,& ?   '" &2 " :(*1'" <:+"$  " * 1"* 9   ,  !" *  " #2B .A3C"< mF ** 2     *)  w" :*8"7!1"* ".D5K&4F(  '-E"" 3R$ )" :" #" * " 32 # " *%(*%;"4   )@  " *" <*  " 2*"' #* " 52'* ,"% $z :   " J2< C-"& 8z-F   K'  " J  %=" <2  $" ;Z%  & A": $ $f# !   "" 0R    " 4J     " *   " :*% (! " "J4:# &" %b* '$/A\ 5)" :  1"*  &  $I " 5*  " * *% " 3J   & " *    " :*)* " J. &# %" B " *R~O}"" ;R $, !" ;* " 82 0 -" 2 " 2**-)." *( )" <*   " 4B    " !* ( '" * &" b>R! 3# " J  7   " *   " 3J!    " 92*  " *,F+G" 2.\)[" $*.0/-" 2*("! j6'  "' #  "" ;R)   *%3", &%  ( %" 20-" %*  "" 3R+,  " 2^ ,M +" 12 " B> &2 (M!M&" b( $   " * " 6J   " 8:@,#"" R$ !  40\q< &" b#I:L    (_%" B    " ;B'   3 " J("! j "     " 1*  " :&" 7b   " :: $  " *" 6B  &" "b " #*" 8*!$ #?"8 0($"',#! '# 7/]" :%P 4  A " J>&d? + +" :*.+D"= "G9    !'?" : y2b3 *"# "r& .%!" % " 2*$ %" " :  Q"J Q"J Q"J Q"J " * + ," *"!Q"J &" b $  %' " :2, %" * $" Z/ " ;*$!$" Z* %   " /*\pD[oC" 2 " B"  " 22$#%$" *  " 9*%$&%*"# 8r      " :X 4S1"*  " F   '   " 5J  ,"% 7z      " : * &" !b#   " :6! 63 /O" %:4-""#"+$" &Z$#,0 $" Z*"  " :B!( " #** .)-$" 7Z " *  " 3*.%-"/"( 4*'0+ $   '( " **7 *A":  $  $! ! !V   '" 2$; 0 " : n+ [" :*)*" *7  8"" R N U &" b&\#!" 9B $ ("! j( -" * " :J$+  $" Z("  " **" :  <"5 O )   V#) Q" !2 , -" *   E"> %@7   )      ("! *jT?B12%1&A0K8K"D !  (  < B/ )   % ;" 4:,*-#" *  " J0 & KY$" Z$ + " *   " "J  "" 2R   " *( ' " * *  ) ("! j    4H 5I" 2LK" :*  " 3B&! " :  " *    " J"   " 6B:E5@/%"" 8R #. " J24,11Y" 2O"H  )     ,  )  3 " *$" Z  " 4*.1-." 7*  " #2(M 0" :2% &" 2*,-" 1* " !J  )  " *  " BR#(  ' 7" 92*7 )8" $:#  " 2 TI  " J   ("! #j ( %#" :2   " 7*" 2,) "" 6R09 (+cl)" 9*&5'2 O"H & !  %  % 3" !2"" 7: " 3*"#" " 32"$ %" ::%"0+"  ,"% z*$%!" ?*   " 7J(1   " $J :  (%" 72 &  " !BI"B .    M@   " (*a(b%" :3( 27"0    & !$" Z( &    " #J " ! ! " J = 0 $" :B1& %" *  " *  " 8:# "%4%" %:/8* $" Z@ ( !  A": d >  #  ("! #j     !" *   " J435" 5:.' 5,#"" #R<  " ?*   !" $* * )" 6B   #" 9*&5%6" :2$B%  -"" $R ("! j   " 2,"% z&F Q " 92'  " @*  " "B*- #" B&!=" 1* "" ?R 2 $" Z N #c("! j( 2 0)U" :" $:   " (B=$" 8*"5&#4#" $: " ?*& '" 3*PSYR" :" @*( /"( 2   6@=4#+" 2@=" !:  () ("! !j"   " # ) I" @*  " * " ?: ,   " 5J(&  " )* " &Jg.  D" *At$Ds%" 9B  , " 62.1" #*#" #**"# r8#("! :j% #0    ,"% z ,    " *$ #  " *  " 2*"!" 1*,-  " 9J  &!" *  " 2" 21, 0+ " 82.E+D("! 0j "(   #" #B   " &*$("! j '" $ $M"" &R1  6 '$" Z( " . " *" %*" #B    " &*!$ 9"2  "    !    " "B   !" ?*& # " * :;" ?: :% %1"*  .(   !"" 4R"$!"" 4)     561 9  ( $b* T!  1-<mV" :8 )" '*  " !2 $(K" #*" @*( " :J %&$   " J* $ % " 1J(!) " 0*"$#!*"# 5r     " /2$#" 9:%$/;V-" @"5". ! 4   5" : " ?*& % " =*" *  " 6*("'" B% 9"2  N0 ,  ]"   +"" R 3@  6-  " 9B&3    " 5J" #&-+&" b.   C  3", %&  *!1" "2 !A": 2~c.-/? #4D%/$, "# OT!''"28?8CKI"B &! (      %   " J4*  " J, "7" 1*(() '" *  " J"   " $J  % " /*  " =2" 9*.;+<&" 7b '"CI" 6:*3" $*"! "" R   * " !2001" 32$ ("! 0j"#" 1:  " 6*#""" * I. L/" $*  " #2*")" 4: " 2,"% z Xz )9 ;S" 9:" -%5".      $   9" =B$" *& % 5".  " $b!   " 1J( (!,8 M:1A" ?22% /&" *&%" #*$#3",    ,1 " 02 )"" %R@  M" * " 9*(' $" 5Z   " >**%)&" *   " 3* $4 #3" 7B !6. 3+("! 4j  " 8*&/%0 " 9J   " 2-P, E" "2:8G 9$" Z6  +M" 8:  *"# !r  ,3&" b+ 6"#! " 6:   " =J8/"-,!" :"  #" 12 4 5" %*@=" *  " 12   " J, -" :   " *    " 72()#$" >**'&*+$#% " >J  " 0: &" B V$ %  " 2'   " '2  " *(' " 1J   " 3B  (# " *h#g$&" -b$)  " :4+$" Z " %*CD="6 64  . "1/1 " &:6"" #R&6 ) " J"(  '" #B<6+ &" =b<7 &  !%" ":(. /"" "R *5 " 7J,+  " B " 5B89,, ', !" *~GJJG" 2' * " >:  $$!,"% =z +1" *   7"0 2   -$   " !21(0 " 0:  #" 62&% " :  ("! 3j  " <23", &     " $*" !:: V =!" &*89" 4:  ' " 22 "5" 2* ;" =*" B.  5" 8*8A5D" 3*  7"0 =0   2  " 32*)&" b5 &   " J2  1; " 0J*  O"H /<  (    M+   7("! j4 "    ! #" * " ?J  %!" @*%0*5 "" R  '" 62&% " :$$0 " : 6b 3aU"N      $0+  !*5 " 'J " B;@"&    &" b "- " J( ',"% 5z  ,. 1$ &" =b "$+*19 " $J * C" :  3" 6*"" *(l'k"" <R2- "1. " *( '$" #Z= $)" %*  ( '" #:A "-" *  " *A. L),"% 3z"  ')7 " /*<9\^;<[_ " J  ,"% >z.'&, $" ZFg0t y" *  ,"% z  *   9!- 3",  3=+& BP] " 5*"(!'"" $R&  " * " !" 4:"&  +$'1*"# 8r  $   " $J"#  " ,*x{w|!" JP   )M/ " J3,(# $" ?Z"  -$ &" -b VI kZ!"" : "0! !3", % 7;3  (6,.i(/"(    J ++3" ,:    " ?*2+1," :   $" Z > ; " 72&%%(G"@ 9(         % " 3B  " 7 2 " #*,,++&" b  " "! 7I"B  ""   "  *"I$!J#" 52" " B"  * " *.L+I7"0 "&6 6 )G $'/*"# $ r  ."%*"# r.  0  -%" B9\,( %+ " ? J "" $ : <.G" 7 2 " " * ("! !j  @ '5". . */ &--6 !"  *=D4?" ! * "#" :"(>#" @ " "  *.!-5". <    %" $" > Z*' !"$" 6 Z %*"  * " > 2*#'$ 3",  ?( ,+("! $ j  %  " / J*' !!G"@ %.&     *  #-/ " 4 J ( " > *"!"" 0 *   "  J    *7$'" ; *" :"   " ? :('" *" @ *  *%;"4 >    3)  "  JB* A ;" < :.%%')("! " j. *   53",           " > *0+ -* "" - R20   " " J 1"* 7    !)/"(  (< '- %&"  b>"  /"( $ B  + "  J     + " 6 J$!>>-+ @"9 .*`H! 0      J = +]" ? B ;"4 * 2$ @MA  !""  R$ * )F"? * EbQg2%'X  ~P 8=GReYHD" # * "4!5/"(  & ! 6 )  " & *&4%57"0 ! "     -  )" 6 *  "  *  7"0 " "  0 "+ *'1"* 4 2#$0$(#$!  9M""  R( -?" = :%"" % *('" !B  "  *Z"Y" 6 *"" :!*"" > R,0 %'" : :" #" !*f#c$" $ *$2!/ " ; J,) %'" . :&! )/" !*  " &!**)" #!* " ;!B  "" 4!R  ) %;"4 ?!.' (   '$" !*D$E %C"< 0 F= {(,z>FID E@!FA%UL " !*  " 6!* "#" "!*&%" !*" 3!B$!  ! ''("! 0!j&1   % $" %!Z   +$" !Z 1&(' " !J#    " =!2,)-,,"% !z "- "" 5!R69 #(  " ;!J&#!  " ?!J0-! M"F #!  N"  2%     ("! j4.~/  %   %" 3!26) 5* "  :6#4T ;!_4"-  ,Q>:  $%'J! q" !* " !!* ), (+ " !*LK" #!B  ) " 0!*("! "!j""   ! " !J " 0/ 5" =!*:796" !* " $!J" &"  b$T5  1" ?!* " :!B&!%"" :!*" !2 =& &+ " ;!J" !" ?!* "$ !!" 4!*.!"-$#" !*"" ,!J& %}"v ! %M # "  )  $  %# 0%   (9 %" !2 " !* < ;" ":i l " /!B")*"   '!/"( -!-     " !J0-"" #!R8 "5/" 2!26152" "!*, ./ )" !!*RQ;"4 !! -@ 0 5 @QS" !B, )I"B =!.)  (# &# # $!c`  " :!*.)-(" !2*0!/&" !b    !-"" 5!R(+ .,) 7"0 $!!& . .0 %  " ?!J4/$*  %)" !:*' " "J" !"* :9"" >"R(' ,0MH!!/"( 0"     #" #"*  " "B * )" "":$>9!" #"*   " ":,2/" +":0. /)" ,"*&.'+ " "2 / 4 " <"2(%&*#$ 3", !$    #[,"% !z@ & ; #c" #"B  $%-" @""" !"2&" +"b/$ , ,  O !("! *"b2.%<m" :":$%" -. " <"* " "2 " 0"J   -#$" "Z*:  1" ":$  "! / " "J.*!!" "B&B ) " ="B   +$!e"^ !4  &,  ,  B  1? 0 1! " "J04   3" "B8 .O7,"% -"z %" ,  &   "" 1"R8C$" " 9"*&" >"b>7,4 %& 0-/.$" "Z2   .' - ("! "j(    ) " >"J61%" ?"8  4= (@ $ C #'  " ": H+%e" #": - " "2)*,'" "*KL" "":t6 " %"27 ," "B  ("! +"j   K"D <" $#:9 %$ "2(#" #*4  3 ="6 " P) *  $" "Z *    " 9#*$#W"P ""  1&.)B   &  ,% /" @#2( 7"0 "B&  3   " #:("! &#j9 6 1"* %# ,   = " #: $  -" "*n 4o9O"H ;#"!  *,  +(    " "24D3 I?"8 !#`      " @#" /"( *#    "" #R% &(1"" #R  +" ,#2 G  2!" #*'&" +#B&* "" #R)" #2,, +5" /#:(C &!" #** .) / " #J".!' " ?#J " ,"J.Z Y" #*   " #B    ,"% =#z('   *23. ("! 0#j(/     " #*  E"> 4#   (- #"%#4;\FGR+0 #&+' &" 7#b2C& ,'" ?#*&%%$$" #Z 8 $ )" #*&4'3 " %#J * ) 5". =#  &*-* ("! %#j* H)      " #*" #*="6 " "$3 </ +" "2T*S!s" *#**)" #*4635" #B$1" 8#:  " #*" 9#2 &  " $#*(#" +#*" 8#21 2 ("! -#j' "( +&" ;#b( "   " #*  /"( 1# #    &" 0#b 0*  " #B#( = /"( !#-"  &7!" ?#B (%#" " #*&0!/" 6#* " "*& *# +" #*$" "#Z: Z'  O"H ## 4#      "" #R5" @O" "#:6 -1" =#B*2 $" $ZG, 23 " #J   /" )#::  G" 8$: " )#:< I"" $$R " 8$*+( $" 6#Z!   "$"%" #*( h)i" $*  "" ;#R*)"   $" #Z     " ?#J0) 10" #:  3" $#***)+" $*  " $*    " >#J  ""/,#"" 7$R%     O"H #:&  !  4/ 5R U " @$"" #: ,R/! -" $:   " .$J# &!" &%5" $*("'#" 0$*!  " 7$J " *!  "" ,#R.Z +[ " 4#J   OE" 8$* @ = " $J * '" *#* @!A" $2 " *$:B - 3", #  *%   5" %$B $#+1"* $1    *  " ,$*  /"( 8$  " 4   %" $*  " $:  ,- #" #$2 " 6$B 3(    $" &$Z   1"* <$     " 3$:67,-" 9@%(#!&" 4$b    " $: *  1" #$2  +"" >$R<9%"%)" $:5 &"" 1$R ") #* " %$:* ) " $J %" 6$*# "!" %$*" $# #"" $R  2  '*"# &$r   " $J8+ JK" 8$*9&6%*"# 0$r(-&  +#" $*" $:    " "$J0@%7" @$B(#$ " $*"431"* $ $   <#3  " 5$B  &E"> /$  *5 <0  $ !#$-  1@% " $*,+" >$B &('& ("! $$j      1 !5 " $J<F9'" %*" ?%2&!%"" %**)" 0%*/0" >%*  " %:" 6%:&1 *+7"0 !% ?T $" $ZV 0#9q"j 9$,)   "      **   " %* " %*$" $Z $ =" <%*(%'&" @%20  i"b $0    /   ( #     #" $R` * r' ])&" 7%b  !" 6%2(= )>" %*-".!" >%*&#%$1"* %.0        ;"4 %=?^ &   l !1)(3", %n(  % <"5 $& 9  " $JF"#" E="6 %+  ? '..1"" %R(4G+ " 7%J  ,"% =%z2-"&<9=:#" " %%: * *% ("! ?%j&! %" " -%: 0/"~ ;%$# $  83 $*'"   61*.+(  30     (,'&&% !" %*Z[*"# %r  (  %" :%*0+/," 8%*  " %J .! !g"` %3 $(      &%     ="6 $ "X &:R  "  #c,"% "%z   3 " =%*&!%" " %J$" %ZPB/   #" 2%:4? 2G@,[U9 " %J    $" 6%Z% ,   7T+!" %*  " %B 0#'("! %j&  )% % " ,%J  DL 9?" ;%28154 " 7&2&5'8" &*  " 6%*!$"#" &*"" %*DC" :%B(#!  " %J00/5". %  " (   #   " &J  " %%:%0(E+" "%*6653" &*="6 %.+&*=  . C7" 8&*! """ &R ()#" !&*-L .E " &*   ("! %j ,   " 2&* >* =) " &J  "!" >&*(' )( 0") "z2LH*9- =-U3", <&   4198101"* %      8S(9 " &J    " 5&*" $&*:!; " &:&# " &*  " ?&2*'1"* && &    ("! &j 6    " :&J  #'" &:H 9+O"H &6  U"N %v 10D7:    !)1  =" 5&* e"^ >&*'0-2-2+ 1, (#;8+1)(  '$#'" &*" &B& 3" &*  "" @&R&! &!" &*   " 0&BF]" 5D)" &*" 7&*L I!" &*  1"* <& " :7""96#" )1 " &J    " &*D DEA" >&2.)'$" 1':"  " &2    " &J :  3" +&: *%$" &Z B  %= " &J(&4 !Q$" &Z(. D 3 ;,"% &z     /1"* ' &  G" 1':LK a` " 'B _"X &&   C" "1  & )!%" '*.-" ':" I"B % F 2  G'   %%  E" 8'*L$K# " 'J   ("! 'j(C"  #3", ?&(#  , '+*"# 'r 'D :/ 3 " 9'*2C$/B%" &2&" 'A " &J&R  7" ':&  y"r '+*+1" #52&>  # "*2A  +" ':..' !" ':  )" /': %!2!" ':)&"" >'2$#!$ " 'J     " '*   E"> $'       /"( ='  (%;8')9"2 5'  #     &$   " ;'J8)" -&" '*'N(O" .'*" 'B   "" ,'R S&I @(," "'*7> :?("! ?'j *, " #'B,$7"" 'R  " 8'*4u$3t# " @'JH " '* " ': " '*t) q, $" ;'Z #  " &*$%}E"> &0V   c !!" '*$" 'Z  $!;" '*-^.]" -'B$ $" 'Z   21 " 'J J# " '*  "" 'R8<5 " '*(@'?9"2 !' C %   ,( +  !" ?'*02/3" ?'2 ;"4 ,' H !  !3 J" k " (B $ #*"# ='r"#*'"&'&   " 2'JH  G" >'*(%)(" 6'*L I!" <'2" !" (:  " (*;0<-"" :'R 0& !("! "'jr  *+)3  " ?(J&! 1"* 5'  &&   1"* ' &  / ,"% 'z    )" @'B  4 " '**4' 5" '* &P!#O3", ' !9 $*0(!(1)" (B,  ' " (J   ,))"" 9(R" '*TS" (:Y$;#" 7(*L"I#" (*   3", (   9 " ?(*  " .(:" (*  " (* $ ! " 'JZ*"; U" (B /B &" !(b.   " (:  + /" (*    " ?(: " #(*h5.u@ 7("! (j%(:%#" (*P D5 K" (*a&d%" 8(*2s 3v" (B  ("! (j  " (* 3", (    3  &" ;(b    " 7(*3$4! " (J  " !(* $" (Z&!" <(2*!%" 2(B ./" !(*& ' " (:    " (:  1"* 1(0     " (J $ #" (* U"N (    '8  * !  ' " (B0-% " "(J   ! )" L(Jp#7! " >(:6 /"( !($   "4%  %_"X (K< 9 $*  &2  >    ("! )j3 *'$,?$" *)Z"/    " @):( " )2  " (*&t#q" <(B  $.!'7"0 (   '   " )*  3", (<H G#kC"< ?)*% 1-&1$"((  #"  " >)2  ,"% (z 4 .' K  " ;)J  #%" ):_ j#" 7)*< =" 8)" " =)J"$0 " `)*hg" )* ["T )&" 1)b   "=*  " (*( X' W" )B  $" !)Z( ,   " )2@ 5  ("! (j$  # / " :)J,- ")%" ?)* " ! " )J " )*o$r%["T >( *RK (!   !F- -* G"@ <*&!& $G:  "" *R8 ,9" ** " :*B$!  " *2 F"? )      "  *B )C&" *b'$   #" 3*B-.N ("! =*j  "" <*R   " >*B   " *J  2) /" *B #:5  " )*J"/ (  /"( 9*9LKot"" *R" $" *Z ;$$ " **)&*%" **  " !**" :**="6 !*( & . " @*"" <** &!' " ;*J6:!#" 7**-D8"I+&" =*b2:"   33,"% *z*  X#6W& # $" *ZR&  " **   $" =*Z0+     " :*J &(  &" "*b  " 4*21629" @*2 . +" **% *!I"B 1* $  #z5 O" 'Y" +: :( )" +* $ #" @+* " +B ; D!" +*   " ++* : 7" +*  " :+*,-" +:1!0*>+*"# +r  &   " +21 2" +*0-("! !+j%$&+" +*5 4O"H ?*46 ' 0<  /a("! ,+j :  9" +:T#=44t<5" !+*1 2! 3", -+.?  $'6 " +*   &" >+bt? :+%/    " +J  * 4+  " +*  &" +b    >)E" +*    " +J/  8)" =+*" +*> .= +"" 8+R H2 " ?+**&+#" ,+*C B " 1+*"(!%" 3+* * )$" <+Z 0/,*)058-)" +**0%/" 3+*8,9)" 2+B.#  9" +24 " +* :9 " @+J&  " !+*+ * 7"0 ,  5. `; 5   "~ +=    6 0(   ,' - -    )" #,2 A": ?+.1&        #+"$ +rF! P#>6>+ A" +*$7,'6'<"5 5+*G6_ @mZ4 k 5b'1 - 0 -" 1+*"&#%U"N :+#$ (%     3($ I7$" ,Z*  " +J " +* 2 /" 1+2$ *+" 2+:"*#" 2+B"%'/"( ,) & & 1  ("! =+j0" $ !" @,B  &  " 8,*.AB.-BA-5". ,%     $" #,*   " +2@"R;#Q" ,B  F#$" ,Z )"& !" 9,*  "" ;,RHO16 9"2 , #     8-# " ;,22516!" 2,:& ,) 9&" 8,b  &    " ,* " ,*  " ?,: 4 !" ,* "  !$" ,Z 0" 1,* $# " >,J $" =,Z (" !,2(  '" ,* " ,*87,"% ,z       " ,*- ,"" ,R    " ,B 74 6+" ?,*,&+%&" ,b  #   '* " :,2   ("! ,j      " 7,2 S*H )" ,2.?"->&" ,b03     " ,2-<($3#" =,B$  &" !,b &  " 0,B ,"% ,z   >+("! 9,j45$ $" #$!A": 0,    " ( , # "  " ) $ *^  *:v&=c,B% !O    .      &3 = /=59" ,*" !,*" ?,* " ,*, R)!Q1"* ,1&   " ?,:  ,- %" ,*    ,"% 3,z&%$ A1" ,:.A 7L'" -,:8X  /K " ,J   " :,*(")" 2,2$ 8! 7" 7,*/F 0GK"D 6,l  '0Q, 'H /20# ,s -hg+5". ,  ZH %'" 3-:, " 7,J   ?" 0,:,   " 8-J    " 1,*$ 0# /" 1,*$*!) " /,J& # !$" <,Z%@.   %($%'" 0-*  "" ,R* & 6S&']" /-*    " =,2 "+/" @-" ?"8 ," r-"=-FX } +i" 2-*l i " 4-*)*('" -*  !" -* """ -R  " --*  ,"% -z&'  ."   " -:  3", -  - $F  ! " -*   W"P !-A"K/  &O1   '.   & #N)^!N  " 6-: ,/C,"% -z  3#5". 4- "     " 7-* %T &S " -JA&# " =-J  "''" -*N!K ,"% ,z #. &  E" @-2&$$" -Z&   E " -J   " -* * )("! -j &(% "<%/;"4 !-        +$" 7-Z 6  M/ " @-*  " 0-2(' " -2#@.$ 5%F"? #-!        6Q9" =,$   :*'*#* )$  $  S$   )    " $ '  % &    !" 4-*!.$ "-#"" -R "" -Rk6PY1"* 0-   "    '5". 1- &4 ,  " -B% &1A": , %   ' ( ( @h =c $" -Z&    " 6-*!Z8"Y7" >-:  " --B   " ?-*$!" 8-225 . /-("! =-j ""1*!" ?-:,, `"Y *-- (./7/(CN@$%*-?% 1"    (,G+D8  c+" ;.2$C"#Da"Z -$       $ (! - +  " 4.*!< $; " ?-* "!" .*"" -R(%!1" @.B" 8.: " 6-: 0 / " -J     " .*" ,4D      6"  2<   3w,fM&  ,%!#   I$1 ' #E %K" ,-2y26UR)(35" ".*7 8 " 1.B&'" ?.* ! f"_ -x1,1 ;\%TI 0  W*      " =.2,& '!" 0.2$   !" @."&" -:b+(;@%-g" <.2-,*+" ?.*"! " .J"  !  " <.2*M */X/ " .J    " ..*zC4wF5/"( .O 1,V\ " 4.2  " +.JF_ %0* &" .b7.() " -.*"","% -.z$  ;2  %!" ?.* " ).: %" 4.2c"\ 9- )I3$ hP$9 2(8#D& )  !! I#!"" .R3$ "A": .        ^) u6 " /.*01" 1.*"!" =.2 " @.B$"+)" .*=>" 7.*8K 9L " .J*   "" 5.R  $ ,' " ?.*"!!&" .*  7"0 9.&u&$JF-i!FT  $ o'" <.*) ( " .J3  **"# .r* + -"" .R:" $;%" ?.20($" :.*" .*F!$6A2'E,"% .z    #" ?.2 *"# .r0& &/ % %" .*   " -.J.1"" /2  " *.*4*3'" ?.* ! ("! ;.j-$* +" .:  " .:> ,'" =. " -.J  " /*3( 6' " =/2;4  " /B   " 9.J !:K/"( .   &  %" .*  " 1.:@> -_&" 3/b/ *5  T"M -0   X    W! 7 " +.JL_.& I\'/#,"% .z   " .J  ">'9 " =/*  " //2T/Q2  " /J5 $" .R +HJDi  $" 0.Z  ,#;" /*'* " 5/* '*$&+!" 8/2'," ?/* " ..*":H;G" 8/2" =/J " ?/*" /*$/#0*"# ,/r'(   K"D .$    88   "7 !  " /* )& *% e"^ /  ,$       &     " /*$ ! " /* ,"% .0(   -) " /J$,B!  " /*9"2 .(   &)!K)" 2/: "%5". )/    5D$A` '" ?/B    " //B:!* '/" ?/2   " /2   " :/J    " /*$i$ %j! " ;/*&!" /*' &! &" 2/b  B4 A" 0/: !)?"8 8., 2    "*  3  " /B2+  " /: +6&*I7 " -/J*+  " ;/*$"!g"` 7/9,   *(   3 &# J &&6% ;',"% /z; 2   /"( /$   ## " :/2  9"2 ,/ $  "'=@ #$ -" /20$L-%%" //:$# 7"0 /$e *- B' 9)$" 8/Z%  * !,"% /z+$#- " /*  " @/: * " /2 9"2 /          " 10J%(" 3/* 5*6+" */**#-" " /*! " " >/B&" " ;/*% $!  " 40J)*C("! ,0j N7)" ;/*  " */*.! 1$  " +/J   " 02&" ?/: " -/*"!! " @/: Z= ("! +0j " 0Z .( ,"% 0z       " 0:(  " <0:> 11"* 700 - %  /. 0 & ./ " ,0*/$.#7"0 0 !   H 2+$" /Z&4% " ;0: (  ("! :0j-  " 10*+ , " /J$0:"" )'" 0*" 0*#&" 0: 2' $" 70Z94   ' K"D ..6(  @@ -  6zY*5y1qM"F /  & #2 "  =)     ("! -0j6E " 02  " 0:%" %" 0*01&" 0b$     " 0:>&) " 80:5 ." 0* & " +0b  " 0*   " 0:":'  " =0:&$   " =0*'* ('$ " 0Z@%,J%    '= "6 .0 ^I  ! !$ " 0Z: 3 # " %02hs%4i " 1*&# " 1:-0<'  " :0    %0    $  # $)   (   )   ) ' " 1*  a "Z 6114:      =7  " 41J98"'4  " 02*.h)33 " ,1** 1 " .1B .0! " =1*&" #!{ "t 0 m$ &  # P!&X ?&0l# 5B'    G 1w5 " 1*    " 1:9. '" " ?1R!$    " ;1: $ # " 1*     " 51*:<=9; "4 81   ,  * ( ! /#  " <1J)   &-!/ "( 1    0 p;, "% 1z4" '    " 61: " " 61R    " ;1*"$% " 1* [ "T +1  &  23 &    " .1*&&%' " 1*  1 "* 1,  1 Q "J 41=,         " 71B/D*% " ,1:.    " 0  2   ,  (     (=Ge=" ' J / #  A ": )04C0"TB7N  --#;/     " 1J      $ " 1Z!( !  " 81B  ",! " ?1:! " 1:"  g "` 1 " 91*' & " .1B"$+# " ;1B    " 01*  ; "4 1 $ (    Y  " ;1* 3$6# " +1*, "% 1z   I4 &  $31# " 12*6`-/Q$ " 31Z " 1 " @1: "M "F 0,  J     %''1 "* :1   5$&<   " ,1: % k "d >1 $$!*) 10 %$  !"  " 31B    S "L %1 4E" "  PH<8  IA r? #  A? "8 71D    !"5  " 61*   " <1J."  " 12    " 1BBWOh& " 2bA "3 ", 71     !'!  " 1*06/ 1 " 1*  " ;22$ #, "% 2z      " 2J ?  <   " =12  $ " 1Z=J !!( "! *1j68# " 822&" " /2B     " 52*  !  " 71* ( '7 "0 1" 4 + *  / %5 ". 1"mB )|#  @ "9 0 V  /s   +a " >2* " ?2: " 3222+ " 2*  " ,0(   $/&  )% .. 2  ) ""' $ +# " 42*( "! )2j:  ) " 2*'( " 2*/00/* "# 0b'$a+ Nc w  " @2J   \ " 2: & ! $ " 11Z4. $  = " 2B"g =$ 8%n+ & " 1b,$,= E ( "! :2j   $   " 2* J0 K-& " /2b(#  4!  " " 62R   * '; " 22*&'  " ,2J   (5") " 32:'"  " ,2:. 7" " >2* " ,22   " 2*M0h- " 2*Z1Y2 , "% ?2z    " 32*  " 22J& " 2* =4 @3   " @2J!!$ " ;2Z"5& ( 1 "* -22F-    $ " 92Z1706$ ( "! 2j     " =2J*+$% %&50! " 2*  " 62: !' " 2:` >U> )!" ?2*$ !$ *!"# 2r2)  !" 2* !" >2*$ #!!" 2*    &!" <2b"/ $# !" 2J    &!" 2b    !" (2*,+a!"Z +1        ",      !" 2:)!" "2*DE(!"! 2j6   !#k!"d 72&       )$6!3   21  !" 2*1 2!" 2*@4?3q!"j 52&%:3          '$"!" 32R(,++ 1!"* :2 >  $ # =!" =2B   !" 2*!" 2* !" 2J     7!" 2:  I!"B 92'       !" @2*  !" &3:,5+4!" 03*(!"! *2j #  "%!" 62: $ &!" (2b: -> e!" <2* %(!" <2** +!" 33B1" (&!" .2b      &!" 02b H !!" ?2B"$g!"` 3  $/ a @(C8,  .*3 Ig!"` 1  , .0+<  #%S     /)O!"H 63"    %   "!" ?2R   @!"9 2*/" $ , " R+/; R !" 3*   !" *3J ,!"% +3zB!  $  ! ="#!" <32  !" 32  !" 3B;> R5,!"% :2z!2  4   %&!" 3b %(8/ !!" 2:&$B/03 '!" ?3:  !" /2J"%*$ !* %#!" .3: %5!". 3 y* 8  !" 3*  *!"# 3r) 0).D !" ;3*'&&%!" 3*   !" )3J&* 1!"* +2:) ,    #!" 3B H  1!" 3*,8-5!" 3:  !" 3*4EJ45FG30!") 3 o!" 232!" >3*(''& !" <3J(  !" 13*( $' !!" 33**)!" 3*Z'&[*'!" 3B+J* W!" 93*&!" <3b !" 3: !" +32$",%+3!", )3      #"!" ;3R    & +*!"# *3r "    !" @3B 8$!" (3Z(  ) C!" *3*!" =3: "#*!" )3: !" 12    ( %"J#   -<.       6 "D   )5  / ''    7&!" '3bBM:^!k7!"0 >3  *-    !" -32,+!" 3:> / !" 32 4 7!" @3" !" ,322"%!$!" 3Z !" &3J  !" :3:-6> +!!" 4* !" 4*!" &3**)!" ?3**(+'!" >4*'$ !" *3B   #!" 32&2 1$!" )3Z  "!" ;4R   "!" 3R**Z   )_1!"* 134 "   -!" :42%" 8! !" &3* ./ !" 4JC(D7!"0 3 8      .?I!" 94*,$+!!" ,42   !" 33:P"FU=(!"! <3j  !" =4J  "1%!" !4*  !" ?4*&%%&!" /42 #!" 4*+",# 1!"* 3#"     !" -4*&%(!"! 4j1  6 !" 4*!, +!" ?42$! ! !" )42.>+=/!"( 4   2 ! !" ;4:  ! 7""0 4B>  $9   g""` 2Lo  BN"Nw2   !   :!  '  !  %-!"" 03$  !  !3V%*  +( ,% ) $ 5  2- 0        !"" :4*2/"" @4" #B$"" .4Z"(21( #"" 4*  "" /4*  "" ,4* (""! ,4j    % !"" =42   "" 3>S"   0     +: J28")<kM\$g C""< <4 A  B  %6 5   %;""4 +4('  *( %$"" ,4*  (""! :4j " '"" 42! "" 64* "" 4* "" 4*   &"" ?4b(%"" ! ! "" 74  1.& ! (!   0, "  2 *    !#"" ?42  "" 245"'#5" # +'&  &  &     M, !E%  # V  % (""! 4j   !"" 4* 9""2 '4"      -C"" +4* "" +4: $"" 4Z "" '4:>dm$"" ;4Z- ( !"" 84* "" -4J"" :4**)"" ;4:   *""# 4r   .-  """ &5R   3$"" /4Z@1 "7, %"" 4: 6)?"" =4*/&0%"" 4:4o"!<07!7""0 4 4>  H4 ?  [*%"" <42#&"" +52) &""" 54R  !7"" *5B "# "" ?52  "" 45*   "" 5*+",# "" *5*$#"" 52F1 1""* 44     "" 45:   :% "" 5*"" +5:$"!  """ '4R  * ) '"" ?5B%""" >5:   "" 5*0/"" "5B%& "" 5*  "" <5B!! "" 5J63 *""# =5r5     K""D 048&"! '"$,      !A"" ;5*  "" /5224"" 5: %4 +"" <5*"" 45*&%"" +5*""" 35* ":#9/""( ,5    "" -5:>-3$!#"" $5:"C<"bk;E""> 57&^),[(.    # H:)   *""# 5r MXZ_ "" 95:  """ 65R "" *5B "!  "" 5B #/""( 4 6 &M  -!1""* ;5 ? "     &"" ,5b&'""" *5: (%"" &52,   "" <52 "" <5:  "" '5B* 4C)""" >5R / """ 5B   $"" 85Z  & -"" 35*2231""" &5R  *1+/""( $4'f"z!6/;C  A"" 45*"87"" 5*_""X ;5 ,  .*   "         """ ;5R     "" .5JNP ))'%I""B 75"   2 1<-# %$   _""X =40 %&(->@( /    '    '  '/""( 5 % (& &(B 0E##"" ,5: "" 75B "" =5: %2a""Z &50 C4  ,   ( ) <, )   1"" 15* .H'K,""% 5z       "" 45*."+=""6 5 2     1""* .4 Hh ")2!    #)-"" 55B$  :+/"" 35:  "" 52Z *C' "" 6B"" )5:" "+""" -5R% &%"" ;5*#&"" 5  - !# # @  0   -           ,         %       &(  %&                    "           -""& 74z  hO8" %A +Q(""! 6j !   "   "" ,5* "" 46:&  "" 76*   "" =6J'$  (""! 6j3 4! /#"( (5$     %!#" 648   (  -  (' (     6  +  4   #/  #   1#" ?6*(;%>#" 6*  ! #" 5:2$ #" 84  . &+ *'2"&    !  "   *  !   '  #  ', 0!15$#" :5B)$0 ##" 66B  #" 6" #" 26:,  1(#"! <5j!$$#" 36*(%(#"! +5j "  !(#"! 6jST ( #* P)  '#" >6:$ '"#" @6R $#" 6*HEI#"B 85"  "!  /&#! #" +6J(  #" 6   L% 3 #M      4p          A"    #" 96: !K#"D 4& N$8*   '_77*#"# =6r  "   #" -6**1)4&#" *6b .  #" 66B  / +#" ,6:   #" "6:(k  ;#" 5B * )  #" ;6J"##" 6*   #" 36*& ##" 62Q$R! #" 562$ # &#" <6b")"!& =)$#" 66Z $ !  #" 36* "#" 6R 0 $  ,#"% 6z    .;#"4 5 H. %   / #" $6J=B#" ,6*c#"\ /5$%! *'   ,    ' !&;#"4 86<)    !  #" 6* #" .6*#" 46:*" )#" :6:!(#" 6B)DR' % #" +6*$+%, #" ;6J%$   #" 6*('O#"H <6  "        !" 9#"2 '6      2"  A-  #" 6J -, .1#" 6*   #" 6J/  1#" 76*0 / (#"! (6j     - #" ?6J"1   #" 16*& # #" ;6B34 #" 6B   J#"C 5D H" ( &% ? 3'"#" 76R( ' #" <6*"#" $6R    !  #" 6BP! W(  $#" ,6Z  ! #" 6J  #" 46*"!(#"! 26j   $"!  +&#" +6b,.   #" *6B      #" *6: #" 56*"*)#" 62?6z }63{#" ;6:'  " #" 6J  $R5#MW#"P 66((    '        ) # )3"#" 16R$#" -6B&1#" -7: #" 7*#" )7* =#"6 /6$"  $+ =?#" 7*#" (6B  *+%#" (72  #" (7*#" 7*& % W#"P 36$ 6       # .% $ M#"F 26   ,H   #%    #" !7*W.X-"#" 6R    0% #" (7:  "#" 97R  #" ?72"3 &(#"! 17j &#" )7b7     &!$#" 6Z&   < = #" ;7B&+  "" #" 72&"!,#"% 7z  $ X#"Q 5 `+"*357,*\    5CCI #" 6J$L  ?#" ,7*"!#" 47*  7#"0 <6#  *     #" =7*!&$#9#"2 6* "       #" 6J . A#" 7*" !  #" 37J& #73#", 7* :j@%-e%  + ,#"% 7rC "$ %$#" 7ZI"$ %#" ?7:   #" 7*" ! #" 17*  a#"Z 7#  3&S,K\4   ,"3%'8 +(AV ##" 7*%L &M#" 47B   #" <72#" )7: 8*   $#" /7Z       ;*'#" '7:#" <72$ %$" 7:, /1$$" ,7Z    $" (72 $" 7*+../$" 27*0/i$"b -7 *!$ /;  *2 ?4 <)  3$ 5      $" 7J   $" :72($"! 57j:  ( A$" 17*  *$"# (7r    $" -7:&# #"$$" 87Z  $" .72&*%# $" 57J"># 5$" *7*0+$*-*%'$" 7*$" 7: 4" ' $" ?7:!   %$" )7:-& *$"# 5j(,b#< 2t/3s7"+a$" 7Br0 -! $" :7*$" 7*,6+5$" 7:  **!$$" ,7Z   "5$". 7) 2Y5 EH $"} 5V' BD *b#G  6      >%= $" -72%$" -7B $" +7*  $" 7B @  !  $" 8*% ($" <7:)  &5*$"# 47r  "! &$" 87b*/  &$" 67:  $" :8B   &$" 8b #  . 0B$$" (7Z 4$!2    $" /8:(! -( $" )7*43"10$" 8B lK kL $" ;8*$" =8*#  "$" 47R*    1$"* 27    - $" !8*W2X/*$"# %7r#&'"0L)  )$" )8*!"$" #8*,),$"% 7z@" $ !$" 8:   $" 58: ! !$" 8:%0  +$" =6( 1 *      &)$)>       :K7  .A" "1 -   5% !$" 8*   &   &    *,       ,%* m0 !c($"! =8j8& $" =8*"!$$" <8Z $  #"$" %8R#,*+$,$"% 8z@Y       $" :82 $" 382 $" 18:   $" 8*8C ;J  $" 8J" #  $" 8*# $ $"x 172      $  '   ()"        (# %K   $" 8J   $" 08* "#!$" 8* 0 /$" :8* " $!%$" )8* $" 8J'2 7  $" '8J !$" 58:"&,34')*$"# 8r   ,    '$" '8*&$8'!7E$"> 8' 3  %V < 7$" 8B&T %'$" <8*& %$" 68B: * %$$" 18Z     Y$"R 97      %' !#$" -8* $" 8*QP $" %8*!"$" 8*- ."$" 58R* 2  $" 8J    $" 8* 0 -+$"$ 8r:$ ( $*  3{$"t (7(!      # !#-) #%$" '8B  $" (8* "$" '8R  $" 28:2%" 8* %" =8J*"%" 98B  %" ,8: @$3  %" 9J%" 08:*  %" 92  M%"F -86) ""4      3%", %8"3    0$) %" 08:2 !%" 9*n}ev =%"6 8$)  4 ev   !   %" 9J  %" 9* 0 -$%" 38Z& '%" ;8: .  %" 68:    !$%" 9Z0 23  (%"! 09j   -$ %" )9*$ #C%"< 28$+   (     &!!%" 9*)"*!%" !9*&S.%T-%" /881 *   "%  <->V(    #!"4%          %" /9* 3%", 78\# dc G  (%"! 48j&*<     %" 69*  %" 09*  #%" 9Bb9d'J {%"t 6" &" %   b-  j1  X#  !30*$ *\a27/]'[ "%" ,9R,-  !" %" 9B    e%"^ *8 ,:%/    ")1  "-0:=SXKP  (%"! '9j*   1- %" 9* . -$%" $9Z 2, ''%" 09* " !%" (92# $%" :8Z(, #%" 9*  %" /9*  A%": )9        %" /9:%" 09*  %" ;9B  (%"! 58j2   1%" 9* . -%" %9* ",!)%" ,9*$#%%" 8Z^'le.'W !  #G%" >9* & #%" 392&2%1%" /9B%" 19* %" 59:$ #)&%" )9b  !%!%" 49*)$*%;%"4 (8!$ ( "*!    %" 9: 0*%$%" $9Z!($(($;1"%" 9R4   ' E%" 59*-&.%N%"G 8 ,0H ))8;   ~5  $  Vta%" ;9B%" '92:=%" 92 !. "/y%"r 09  $ , J1    !      ,    !  3%", 9Y # # $d" &#d:K'"%" (9R   Q%"J %96'   4B#     3(%" 9: (05I%" 69B$( 9 %" <9J.?  )H+#%" 974!    *     (&   /'%'$   2& &  !   !  .#6 & $0/!%        ! 3 #>   /  1  !   (#    /=  &/C1%"* 9 2       %" 59J" (   %%" &9*"!%" 09: ' %" 982 %" 9*&S.%T-(%"! 3:j $*/ %" 09*   ,%"% :z ' .::+A%": 29  9*#, +   * %" 79* "8 !7%" &9*  %" *9*`g" ah%" 9::(% %" .9B*/ND !(1++' %" 9J1 . ,K7%"0 29"'     %" 19J ,(- /%" +:*"%" 6:R&  %" 59*(8'7%" =:* . /%" &9: " -%"& 9rC  (s" 9" < AC% 1%"* /:6+ & "%" ;:R    ;%"4 )9 #  !$     {%"t :9     &@ ,       $   ! !+9%"2 ,94@-2 %" 4:2  %" 3:B&   %  %" 0:J  %" :*($'#0%") *:z&'!& ?D 16%" :2"!: *5*%"# (:r   ,%"% >:z     & !,%"% 8:z  &%" ":b      %" $::  (%"! &:j  &#  %" 1:* .- %" &:J  #%" 9R'L&  u5%" :* , "-%" 3:*% & W%"P :4% (+  1$.!  $("+ 0#3s20l  ahit/+%" /:2$ % %" $:* %" ::)$  '(%"! 2:j , $%" .:Z$ T%"M 9  *   :0l 8z>GJ E   - &" ;:*"!&" /::$# ?&"8 0: & &   &     5&" 0::! (&"! -:j   &" :2 <;5&". -:JI,(  ".   ' ,&"% ):z   &" :*  &" &:*&" 6:*2.1+&" 3::&" ::**)&" =::F(  _5(&"! (:j  &" 5:**)&" ,:*(&"! :j     $&" 6:Z   :! #&" 2::$'  &" :JU  " #f  (&"! %:j %$&" ):*  &"| $9  &      !,     '  &" $::"# &" :JO4P# &" *9 NV&    )    "    !  !  53&" &::  &" 5:B , 07 %&" :*&" "::) 2"%89&" $::  &" /:2,%&" -:: '$*&"# #:r  *"! &" 1:J 3"&" 4:B$   ##&" .:2   &" 3:**-&" 3:B" @# C&" 1:*  ! "&" :R &&" 0:b   D!/2!E&" 2;*&" :2   '(&"! 79ZhWeVRC5.)/&" :*x*w)&" 2:*!:("='O&"H (:  &   '  ,      31&"* &:  $&" :Z&G * ( 1 &" ;:JNQ*& '%&" +:: #&&" ;* # " &" 7:J.4 # +3*&"# $;r!$  &" ;: 4 %  &" -;2"! ""&" 0;R  &" ;*4c:3d9&" );:! +8#&" 1;2"#&" 6;256&" ,;2 &" 3;B   &" 2;:F2 !%&" :*"JM&" 9;2  &" *;J ( "' &" +;* "!!&" 6;:'&>)&" &;* %&&" ;"  1&"* %:    ",  )&" ;* ! &" ;:J5&" 6:*&P%Q&&" %;b" "%3&", .:B/ 10( 4 =a&&" 0:b  ,0/-' &" 5;J ,  )&" 2;*  "  !$&" -;Z    '"#)/&"( );'"& !  4&"- ;      &" /;J" ,+ #&&" (;b( "   +)&" 5;B" ./ %a&"Z *: 2   && +&  !   #  "&" ';R( &"<-";; &" ;J&[   & /&"( :z36y:;.,7<'$ws&" .;*$&2%#1&" 2;*  &" 1;*( ") &" 7;:! . ',&"% ;z   % (Z *\M")[&" @;*  Q&"J :   28w.  :(Gj   #:&"3 :bc6' s  "%##!&" ;*6?,*1@/)&" &;:%( )&" 3;*,&"% 3;z  ,(  #5I&"B ;      )=&" 4;*8493&" );*  &" %;* M&"F 7:< &8D- )  '!&K '$&" ;ZL&" ,;2,/+0 7&"0 0; #+F2*5 #  % $&" ? "+'  '" ;2`Z_Y'" *<*&"%!&'" (<*1"2#'" 3<24 ,!  +"'" 7<*'" ) P G5'". %< $     "'" 7 6= )  + $$25'" 0=*  '" ==22  7'" 8=B$" #&'" (=b  *'  '" %=*"'%&;'"4 '=       -'" -=*#&'" %=: &'" ,=*;'"4 =e  * :/A NE='"6 -<")82 &(  S'"L )<      KR# &'" -=b&'" =b '" 4=:$- '" .=2# $'" /=Z "67  #5 '" =J Z4 Y3$'" #=Z.&,    '" (=J *() !,'"% %=z $ !$'" %=Z  '" 1=**'*'"# 2=r,"  "'" 3=R  '" *=B   '" 4=2'"$'" '=*",!-"'" 3=R   $ ?'"8 /="     "!% !'" !=2!." ('"! =j` >  "% /% ,'"% !=z "% #  !'" =B|M!+<(}7(" $=2! $!(" 5=B2$% (" $=:   (" %=*$#U("N =  LD$        (" <=*(" 1=*( ) &(" ==b$(  )(" !=*"!(" -=2 !(" #=2+,?("8 = 258;bi_j ] WQ(" >* =  @(" 1=*  (" *=: (" ==:$    ,("% <=z<" '+ (" @=*   (" >*  (" >* % & (" =J b6 _7(" =:27 =D##(" ?=*2R'_(("! >>j  (" .=*(%(" >*  (" =>:"(" %=*(" %=B"/ /B%(" ->*&(" =b &  (" #>*-. .3&(" (=b 46#1("* "=' ! "'L#   (" +>*  "(" *>R (" !>2 #(" 3>2! $ (" (>*(" <>*&#5(". ;=& (#$ !  -(" #>*+$,# &(" &>b0  %+(" !>27$@#"(" >R  (" +>*4437(" .>** )  (" $>J!F6  %(" 9>:8-'(" >*&''((" =:49JJ16MC(" >*=(@% "(" >R>C84& '!',3/5(". ->  *   -(" #>*(" &>*( ) Y("R =>;,. 2 ?  %(" 3>*" #(" >*. F- C (" >JW9:B#\Q!(" 1>    =&4 ""  /, 2*   #  6/"   "   1q("j <`m!0*9Dfq:.-2 $$]  4 6  LR +4G? IC*/#'.?=(("! .>j>++   "(" />R, "  7("0 = "!S 3  K(" !>:   $(" +>Z+)(" +=    !  #,&-    " ,  "6  !""'( (" +>2 $* !+(" >B 7 &(" &>b  #(" ;>*(  % (" =>B0  ! (" >:+.(" $>* #6 (3(" *>*$#(" l>*  (" 8>* , +(" #>* ( '(" $>* !" ! (" ">*"  (" !>*(" ->* (" 1>B   (" !>*(" />* (" 0>J$ . - (" >*%4 &3(" %>*8(7)G("@ =03:0 "0. #*OG A9(" <>*7("0 ->   & ' (" :>*C("< '> # "18 %  $(" >Z$=# +L (" ,>*  (" =>J #5(". 4> # a("Z 8>"" !$ 4    .T    +  !! (" ?>J .) !(" >*"(" +>RB+( '   c("\ 7=." ! (6&!$ @%#"  !" '#%%1("* 8>   (" 9>:   (" 8>2"   !(" &>*#"{("t 0>*   .&D%  !  -**  +" 9 (" !>J   $(" <>Z$  ( 7W("P :?   = <      #  #;("4 "?   B   (" 6>2 (" ">B . !  (" ;>2."+ E("> >ME J - 8 5` 5!GP- (" >JH'$ #& %*)%*("# 1>r    (" ,?*()  (" 1>J /0 "+ #(" &?*(" $?*!,"+,("% %?z%    &!(" >:0. !(" ?*G2H1(" @?2( (" /?2.$ /)(" 9?:   O)"H (?$-   %#   .*%*+#)" @?"$)" %?Z-*)" >*"9`:!:_9)" .?2.*/ Q)"J ;>       ) *     )" ?B/& ( ")" >R b8 +5/)"( 0?    )" +?2%/$)" ?j:'     )" =?*, -  )" ?*$"#! )" /?J.&w)"p 6?8# <  ) H#  $ %*"7' "#!  )" 0?: M)"F )>   *: $  !#&  &)" ??b4$  %M)"F ,?"      & (M( 9A)": ?    )" $?*)*(+)" :?2 ")" .?R ((+)" =?*,)  )" &?J' * *)" %?: * )" ;?:    )" 1?J     )" ?J$'$ %*QK3)", 1?# $)" =?Z  )" 0?* )" .?J   )" %?*12  )" %?J    )" 3?   !9' & . .(("" ! )%#   6 !& , " !   '  & %  &C)"< 9?:3.)# /  " OH)" 7?* )" >?24 ) )" 1?*)" ?* 34$)" ;?Z*   # #)" 3?*  /)"( 0?     ()"! /?j)$    $)" %?Z  & )" ?2 )" ?*:a8"9b7! )" 1?J  )" %?*   )" 7?:* "7)" 1?B  )" 9?* 9)"2 !? *)  % "  )" ?*  )" ?* d$ c#)" ?*RK8OJ9)" ?* " 7)"0 *( $  %)" ;?B(  $ # #)" 1?*$)" ?@Z  )" 8@*  $)" 6?Z*6    )" (?2.+&((%")" ?R03NH/4 &)" =?b &  !)" !?** ))" 1@*I)"B ?          ()"! .?j"$!- )" :@2    ")" :?R   )" 7?"  !*   8( #) 2         # '   )" @*:c8$9b7!)" !@* )" @*  )" %@*%$)" @@" )" 1@2,0)" .@B"# )" &? 05 72         D>" '# DDGG)0$)\\    /)"( @Bs6 0("77#n>?`)+C)" 8@:& )" 0@J /)"( @Q 5 2RK P ")" >?R0 " %33)", &?"$*%))" @:!"))" *@2H% E$ )" -@B$* A)": 1@       )" %@J  -)" @2")" ;@R0   /)"( 0?    (   )" >@J   )" "@:!6,! )" =@J# ,  )" = L    0*  4.6     !    ($"$     7  D!   =113 Y nTb )" @2/t& 7A")" ,@R $"#) )" @ M)"F ?#!XJ   "/91 A1 )" $@J   (!)" %@2)" :@* ,'1)"* 9@ !$*  /)" =@)" :@"   ")" &@! ()"! @jH? 9)" ?@"7)"0 7@(,&%& #K&   *" .@"*" @: *" @@2(3*" 8@*  *" ;@B   *" !@*$/5*". !@      ?!*" @ *" @b *" >@*" 9@*" 2@  *" @*" @ 3*", $@5( &(U) !* *" @: !:*" @ *" @*" 9@*'*" @*K, &x*"q .@  !!0  *$   9     A*": ,?>' !" C   #7*" #@ *" &@:%   *" @*" @:4U8 6 1 *" 0@"  *" @$*" =@*"~ =^X0.2. 0.&$]/-2, YW      + MG;*"4 (@ !,)     %'(N(>*" 4?  ,& $# "2. ( #:)  ) 5'#"#*%  )&#< " "*7M+;MP>) '  (B  , " C  .   y     b*"[ @$'$   0,4     !"%xf:*"3 =@M.( *" 1@&!"*" 2? #        E ,\  0 (   #*(+'%_ -/*" @ V&  Db$": & 2 # H <W0   B $-  .$ $ ' + I 1  ! $ D(X*&   "K @ $J  *" +@2. 8$ *" @"( x landuse_overlay" } >&;)/]31q+q;Q=u%j  @ 7 ! "# -7  F ,  8* H    ^! 0#$&  lL T,0 *" }'b*#[^1BE$#) " ! *V0]D ".%  $ .(H#^('L 2$  @ ,$28 H `% <;  @ *4 4O6*36m=w U% /)')r]7, BW! )wG")S <- # $!M"1"+ CmS] { C? +I/*F3<L9 !+  C"'E%/7#$2C- '' !1g +  " ,+S1"83nN5!6=%! &(1&".%(#4&07C3%G2IR_G> 1/)$3S7-D5<4o4>F>>U![-3^\g@aOX{<$[ =^7T&Zg^m4!= gu/b6P_~ b zIF.d\ `Lclass" wetland( xf tunnel"  "FFJF" *MC1;classoneway" motorway" ( x road" ,B"6 >6        '5") !j9=::m0b!ae,9;t"h : l` +  G l"` =      C   "  Ip"  hB" 9 > " #"0*P1'Q\ "P 93%-    B&y*uoq(W+   "n9 "- 9 .      4 "( @ZDOr #!  " .: & *" .L7  "" !B,*<',;+);*+<" .F" . " - :"" B  " *,"$*$ 6"  fB"  A^" & " %B8*" &b ."0"#/#!/" ' " ':"J7"+ '       " ! A"   "  4 "  !"  ""  '#" " F!"$" B    %" ,.4&"( P* * , 6.,'" ,jU  #!  L,(h  .("" V,r   +7KW $."4)"( @RIIQM%'395CA "!r(*" x,@+" # z," " ?-" r/<.."" ,r  .)+/" \+"$"  0" 1 1" 1 (2" 1 3" ?""7/[O4" 0 >5" "- 6" $NZ7" "- k8" ++ 9" 3 :" ;68X(*;" 1  <" 2.(-<hN(=" :Z V")< ("N~+ T ,>" = !,?" >2*+ %@" /(d1qA" >" &+B" 3 LC" = c[D" ( $E" +" FF" 1 LG" 2 H" 1 I" + ;4J" 1 K" 0 PL"  @M" 9?N" 0O" 3 P" * &Q" 3 PR" ( $(S" R  T" !( KU" !(( V" !)* b 7$#@tW" *2 aA/L : ,X" &b@B HPH& l2T0Y" !$ UZ" $ [" ) \" !" : @R]"  )"^" !B6 2 6P ":@!_" ) :# D8- e? `" Am|*a" 0b:<B* Bv (B,4b" >[[c" ?"o ]WC ?d" G Ce" G7*f" y8  : ?k,!%g" 8 h" Y5+i" < j" >8k" -%":"J4H$Rl" 5("#$*g?3m"' !j!* 5i QO?' )!J'R D DJ n" 2 =u!m\5-o"  Mp" 2>F\l4D *Fq" / /or" " ]%os" 3< {t" 4;"WAC1 u" 2=2V{oNV'( &v" ? Ow" A "#x" > 'y" ;JZ>03I?g^ f/8z"  {" =5%O[-/|"# 2r6 pt:!"W IEC m!_,mk3:}". /.s/  %t"$ -:!~" " @A:!" 8 4o" ,5=O1S" //Q3 9>" .4Mg/=I" .-"RB2L" ,/*DJLV(\" 6 +)" +$ E5" * p" 8 S" . RM" 9#7w" - js" +K," +$ K" 4/3" * 6^$" 0 "kk%##1?!" /!"a3}Qa'"" 6:%=W =M:?L\" 6 ." 1 "qEmc!" 0:)/%%M" ;*Ccq["" #$>q8" 4 Z" 9#"  mI" 1 E" /vX" >'>" 44P" A  " 7A*6_Hqvh :*" C'" 6="E 'B" 6; ,z" ,$"akQ" 1 Y" 5K7O" % Q " 1""EUF" -QIy[1"$ /b+5%7 Q+_ ob/hQ$" #):"`o=Y K>&" 1BN ch(]P6u&Ka" "":!L%""  HH"  p" (. 4"  " &= cj" '=B&" %$~" $ =k" `+gS" #$7E-" "*qcT3 i " "*T ]" "/2 * 0FlhR " 2;>6 `P#" ,)2= #2Sy#"" :$H*6 )I";&" :={G7gOM-" 8ZT"'0; mI5.3ZR "  0 "  ;"  <"  5" l+"  5 " X!"  :'KYAg39%" BR<[ 579Mo6YN"  0" , Z" FM%" (<2-. !<3 Q!A1 " 2[n+l l)8" !* "H0"# 'rGS#-UI ygOU 13"" /*of)CQ" =" 8 " , " ,)$" 2WI;yR" %yg3 B" *&," F " @ " }5 $ '" *2:s^9%" :-pAH /I" %(1"  " ;(u"8"+ - 1;&& "& 0 *8"1 ;9" +hP%" %Bm7?U+,,& >"1 ?rI?==q]eeq%Us{" 6"  "  P" /"I YT)" 6JC?" 1 " " /+c9" $"  B*-#n |Nj"  9&@"3 #, Bf 6"86 f#,J>!6?Ba2/6X\42HLj@"  u" =;?"  T"  H" B "  29a)+Oe3."! "j&F4J', ."`Lh<*/6E2u/0=, +" !:" $(."! b'%M's/A)=_G3'hO%" J-;SacQK  " ;*lB"Xn" 5@.'" 72 L\" 3&@~!" ;3:@6>8rNf>6 `F($#" 7/*W-Q7 " <1"ZBl" ;(t " 9**Ga =@9~7"" 9("X" 9# " 9%" 6# " ? "" 5! " 0% " 8 " 6 Mw" 4pwHY"" 302? Y!)" 1%:9M1#'" 25 3'" +*-I%CIGm[_M" (n,n" ." =?K#<%" )Br'!56[K 7"* * >XV P *^`@T,>>2 *R" * /"" )b!W kCGaa2&W8e:i%" 120 " " !)" 0'& " ) #" B% ,=*E@QJKVU5" "." 5 #" . $"  2V0R4<"   " 1 #1" }b " e " /A " @2 " >3JK" @.."! @bK,m\<>2"\-H V hX" #9= " }9D'" R?;$E4ql;H5F+D-R%" L|#r-" JYlRf%+ /," 92JVJP0C`4q %m" 411"$ 9JA7[1A" 1 #" ;1B 8pb\" @ :U" ="j~2E" @  " > 6-," 9R' 3$<U +@<$;*" ;Z ?_}a O1g0" < u"" 72  A)Q" H#   B " L^" H6X" UEKW*" ZFF$pqXaPeV]\CJAZCz" +=!1'"  BR0M,(<)" J<)p't+V > " 2 (\," 'RN2V":.PB(>(4"" %*(Q/m5"( jB N>RT:/b'(" ,JVm CI9g!#']1"$ 3r)]-o- 19& 7-!7/!@BN"A 4L%X1 Q IK9` `J!Q4 D1xWcV5 u/."!  Z-!'  i3s33'G" @1"; I)Y ["N -$Fw>MzfDOL*g8D2$<+1@74"' *@b uuL 6,%-F-" <-BaE =A" :%" *@1 )" 9B>IPk%0& " *A !" <-2.*XRHBzpJF8"+ uFvuJVA8=L41J=@1$=q2 " *%/Qq];{!" <2:  >` T "G *&" (526w<" }#@L)" @4JIPgr$mY1 f" @"Ou1a )"  hH" 7 (" 7:O}3](" AByum7Ke -]]" A(#C)" @  72 "  )B"5 A:jRMtM,*yK 4,7 %:$c$" :2,nNP(R*" +#e-%" }8Bl&&I 9*;ba)" "4JC+%//Kq/Q3Y;3+" &&RK1.{On@4]PU"H * s .>(Y8 [i's] KS =-9%{__"R $$,XpF&fZf28xhz&Jh"\8J6$ ( P,'" 9B|P*$bPhPhn&" A*RH"; <-IbY>L@s,m(X ;:'"Obk|y-8" %6"/!q?W/\"O %6^/@[P'k} Qh?> ( `6~X*Y_!m6") 9       " )>"FL*!" @)2M.9:Yd"#:" >=6/Z1#" >*9xFG"  zJ' " REA~K~i|OFc@Q 5C% " B(W"!f3\?\Q~NzB "5  3) ))-& N4 .@@ 2)+' " ;:,\PP "C ;$"*      !#$:0@ " A# /$ " B|l Jd>V*F  "9  "   -'    #3!  $ " B#  w$_y_K" " *:*dtD%ZCT " 0BB3 "& b SQf J- " " .zjq " &(*]! " 1*t(wd  " 2""& " A $ " #1:}Y6y4q@c4 "' 2b!7}6B6;W< "/ ($rD\}ZERMNefA&^  " 2H. "! -ZLSDQF_@qA ;? d  " +S.Um " " 2*D, >  " ,*WJ8>;D9! " 2*B*}(0 . "! #2Z3S  O&[4q)z " ($ +J1 "$ )!Z6ZD9dQDWDiT8?" " 3* _ ?#? " 3"I , " )bE)'+%;?eC"Q,G*%X)N1 " 3]\ "O ($F^},3>I 05'v S* )  !* " #3J7 waQdN$SF "9 3*N0,OOUx1 "$ '&Z1<L`x+s " 3 " 3" w " 3*,gguclassoneway" mini_roundabout" street_limited" " path" driveway" service" street" " main" " motorway" minor_rail" major_rail( x bridge" . " (% *" ) *!" #5 s7" 4 " >= B" ($ %"  1 " '$ ' " ) ; " ($ $ " + 4  " ^, " !: 7classonewaylayer" path" " main" " street" major_rail" minor_rail( x admin( x country_label_line( x country_label( x marine_label( x state_label( x place_label" 2ldirnamename_dename_enname_esname_fr scaleranktype" " Yaoundé" Jaunde" Yaounde" Yaundé" " city( xy water_label " <areanamename_dename_enname_esname_fr" W@" Lac Municipal( x area_label" " +" -      " $      " 7+ "  " '"  " J " J " ' " L@ " 8'" L     "  !"""""" ,#$%%%%%" N&'''''" A=($)))))" AG*+++++" @E,$-----" ./////" 99011111"  233333" 455555" /677777" l(899999" ?G:$;;;;;" <=====" >?????" &@AAAAA" +9 BCCCCC" !DEEEEE" "FGGGGG" 5N#HIIIII" $JKKKKK" %LMMMMM" G&NOOOOO" 'PQQQQQ" 7.(RSSSSS" )TUUUUU"  *VWWWWW"  +XYYYYY" /6,Z[[[[[" :.-\]]]]]" =.^_`````"  /abbbbb" H0cddddd" 881efffff" 32g$hhhhh" 63ijjjjj" 4klmmmmm" . 5nooooo" CJ6pqqqqq"  7rlsssss" #areaclassnamename_dename_enname_esname_fr" `V @" school"( &École Nationale Supérieure de Police" @" hospital" Hopital Central de Yaoundé" `O@" park" Bois Saint-Anastasie" @" Collège de la Retraite" @" Hôpital de la Caisse" @" Lycée de Nkol-Eton"  @" Lycée d'Elig-Essono" @@"" Hôpital Protestant de Djoungolo" `@" Écoles Publiques Mfandena II" jo@" École Publique Anglophone" "@"7 5École d'Infirmiers et Techniciens Médico-Sanitaires" @#@" Lycée d'Anguissa" @" Groupe Scolaire de Djoungolo" lV@" Lycée Bilingue d'Application" )@" École EPC Djoungolo" Z@" École du Camp Bone" @@@" pitch"! Stade Omnisports Ahmadou Ahidjo" r@"- +Our Lady of Victory Catholic Primary School" К@" Stade Malien" Ҹ@" Collège la Mefou" /@" Stade Camp Nlongkak" @" École Primaire Catholique" @" École de Nlongkak" "!@" Lycée Fustel de Coulange" `M@"/ -Écoles Publiques et Etoa-Maki Groupe I et II" @" ESEDA" `@"' %Écoles Publiques de Nkolndongo Mbida" Yر@" Tennis Club de Yaoundé" ?@"& $Collège Charles et Thèrése Mbakok" wk@" Jardin Comunal" 0@" CETI Notre-Dame" @@"# !Saint Vicent Pallotti de NLONGKAK"  @" École Maternelle Bilingue EPC" ^@" Ecole Charles Lwuanga"  pv@"- +École Primarie et Maternelle les Cherubins" 0@" Collège Adventiste" |}@" Collège Montesquieu" @y@"* (École Primaire et Maternelle Catholique" Ѣ@" École Maternell d´ESSOS" `x@"# !Centre de la Mère et de l'Enfant"  =@" École Maternelle Publique" ȉ@" Institut Matamfen" `@" Institut Samba" R@" Collége Privé Larousse" @" Clinique de La Cathédrale" +@" wood" Mango Trees with fruitbats" ~J@" École Publique du Centre" `@" École Maternelle" 76@"! École Maternelle Parc Repiquet"  Ž@" Pablo Escobar Stadium" @F@" Jardin Publique"  b@" cemetery" Cimetiere" @" La Petite Severine" s@" Collège Protestant Jhonson" `f@" Cimetière( x rail_station_label" #-" #-classgroupnamename_dename_enname_esname_frnetwork" rail" name" Yaoundé" network( x airport_label( x road_label1" B|l Jd>V*(" 0BB+ " O"Ku9o "  "FFJF " *MC1;/      " *:*dtD%ZCTE"9  "   -'    #3!  I "/ (W"!f3\?\Q~NT,w 9P  "6 A=MEA~K~i|OFc@Q 5C1 " B#  w$_y_KO "C ;$"*      !#$:0@6 " ;B,\P. " G* /M"7 FA@ #<4D"8N!. HES'-')#)K"5  3) ))-& N4 .@@ 2)+@"& b SQf J- "2 !" E:+2/i#i $"#$$$$$ !"  #"%&&&&& !"  e;'())))) !"! IJ[%;go{3gi4"*+++++ !" M:7?  ,',----- !" *%/Qq];{/".///// !" /*of)CQ("011111 !" =$"233333 !" 8 0'455555 !" >*9xFG$"677777 !" , ,"899999 !" N2 $5T#2-0<":;;;;; !"" OR+!-+i[5K)Wg#"<===== !" F ?>????? !"% HZC}K]EMg0 ?, "@AAAAA !" @**/X/<@TM!BCCCCC !"3 y8)'2k,!%1}kqU[ R4"DEEEEE !" Y5:#UaG)4#"FGGGGG !" *2:s^92$"H&&&&& !" :-pAH /I$%'IJJJJJ !" 'A *&'KLLLLL !" &C"D%R)$(''MLLLLL !" *@1E$1("NOOOOO !" ;(*u*aE)"PQQQQQ !"+ - 1;&& "& 0 *8"1 ;9)*"RSSSSS !" O"1,E6GK+"TUUUUU !"1 ?rI?==q]eeq%Us{(,"VWWWWW !" 6/-"XYYYYY !" F:e40* J:j'."Z[[[[[ !"  U6/\SSSSS !" MR0X,8:b:0n.k++uBi20']^^^^^ !" :C7? ):Q(1'_````` !" +NAMz.2abbbbb !" H:F0 J) *,3"cddddd !" M*%)WKA+4"efffff !" H"+P%$',5"ghhhhh !" O*&._0gJW*6"ijjjjj !" /"I YT)'7"klllll !" 6JC?"8mlllll !" / /o$9"nooooo !" 1 *:pqqqqq !" Cd}(;rsssss !" O"W 6<'tuuuuu !" ABbf^Z<xyyyyy !" J (?"z{{{{{ !" J,+"@"|}}}}} !" O 3&A"~ !" OIm*B !" <c"3,C" !" /G !" C"?eM+q -H !" 17(w*-I !" 0:M<&S5J !" :$H*6 )I";SK" !"3 #, Bf 6"86 f#,J>!6?Ba2/6X\42HLj@.L" !"  u8M !" BR<[ 579Mo6YN)N" !"  T)O" !"  H&P"QQQQQ !" B3Q" !"  29a)+Oe30R" !" "$D b ,S" !" &@;8S$/,T" !" )GDU" !"$ +bs ?+ w  S E {,EV" !"% #j8X.^ HL&82009W" !" $ J!>/6E2u/0=, +5X !" ) :# D8- e? ,Y" !" !:-Z" !" $(A[" !"! b'%M's/A)=_G3'hO>\ !" 0b:<B* Bv (B,4M]" !"- ;zlB"XQ3bYPF;^" !" PB [e._ !" P()` !" L )a !" O %6b" !" I2d2`4< ,c" !" G(?M)d" !" E [6e" !" K2)8,p" !" 3&@~4q" !" ;3:@6>8rNf>6 `F($6r" !" 7/*W-Q73s" !" <1"ZBl+t" !" ;(t +u"OOOOO !" 9**Ga =@9~79v" !" 9(*X*w" !" 9# .x" !" 9%*y" !" 6# 4z" !" ?**$"fLF*{" !" 8 .|" !" 4pwHY.}" !" 25 30~" !" />*-I%CIGm[_M/" !" ." =?K#<9" !" )Br'!56[K K" !"* * >XV P *^`@T,>>2 *R*" !" * C" !"" )b!W kCGaa2&W8e:i3 !" 1 "qEmc9" !" 120 5 !" 0:)/%%M3 !" ;*Ccq["5' !" K*nP~(-" !" NCU*" !" O 3&"lllll !" . %lllll !" 1 E8" !"  2V0R4<+' !" 8 9' !" 9J7=%$)t"))4" !" N2 =/ U4!;1" !" KB#*) !" 3Bma5A" !" L&:1l+" !" C# U" !"4 Mgc7 "$Lm\<>2"\-H V hX8" !" G;*KsC@" !" C1JxH;n=pUZUj:6" !" D)*ldRdZ)" !" P) 5." !" PO)7T)" !" PC - !" M= 2" !" KA`;" !" OOB u_E#CcIg?" !" P>R>=2.RVX@Vp*0" !" KK(7 1" !" LIyy0" !" KKBCy-" !" MI133" !" MI"}a-a3" !" LO*pI i o])" !" 6 k3' !" @*Ou1a%o}d' !"C M# @]XO]_d7$ORMRgr$mY1 fP' !"/ bn<fXf6l0' !" I"<`A" !" JYlRf%+ /." !"  a" !"@ 92VJP0C`4q %nMH#J%R%6 K*" !" M g3" !" 41*" !" L =9" !" M :+ 44*7" !" N2s+! IH-" !" M 2 !" >"vh rN-' !" -$vA' !" <-BaE =AC'LLLLL !"' *@b uuL 6,%-F: !" G:EA&Ei*5 !" J*3qWk?F' !"% &Bb`^`^M$UW]5OW?' !" HJJ|`PP%]z9E" !"$ 9JA7[1A2 !" 1""EUF+" !" 1 E !"$ /b+5%7 Q+_ ob/hQ8 !" #):"`o=Y K>: !" 1BN ch(]P6u&Kaq' !"P -$Fw>MzfDOL*g8D2$<+1@ C&}R" !"1 A+M%C=](]jPzoL-4~A*$7" !" ;1B 8pbb3" !" ="j~2E/" !" @.|Z5" !" 52P  XVJ"@" !" 8J%0":LA" !" C JSP.j\,N0^F' !"% Lz!4yJ;&KV9NN H " B<(." !" HIO>aA" !" <j9B#C1 7wD; M$q S [G]H' !"' A+jbJ* ;{P+'9 p' !"O I B(  $FJ"l@Jd JDl60j |` \h5" !" C * L-" !" G  7" !" F *>B5" !" F * = ?" !" FJomY-]0_N" !"- :+bT;3-^!. !" 4NodQ6" !" ;F*Jv B' !"!  Z-!'  i3s33'G6" !"  2xF0:fh" !"G  K(< T2~h(xFP F  D((^ V661%c]aeO*" !"  Ph' !"G  <GP%L9>K9` `J!Q4 D1xWcV5 uq/ !" r/<7' !" )>*Y_!mW'JJJJJ !"; <-IbY>L@s,m(X ;:'"Obk|y-8/' !" %6"/!q?W/p' !"O %6^/@[P'k} Qh?> ( `6~XFL*(v`fdj((.(H >R%VS' !"2 P"t" s2uf|=$M.9:Yd"#:: !" K82A{WE?'LLLLL !"# >=Z6/ocR H`j4@ F"GGGGG !"* #(rjE.g_ S8}0 S8._FEG' !"& +b\*J6&PLNd8nb.' !" OE 3>" !" ZFF$pqXaPeV]\CJAZCz;" !"  BR` /' !" :%/";;;;; !" C2#eo}{7GC1C' !"" 0Z5G o  [km % ," !" "[ 4" !" . 2}G s}y-" !" *O7'6" !" D*l+ wf/" !" C 6" !" B *bXpPp2" !" H"m-%e:" !" F :<<5T9|+" !" C )" !" O z." !" MN h4" !" ?* G/0(A !" 8ZT"'0; mI5.3ZR H" !"' 1Ib'%32=w*#Bwb'5" !" 5*tF/<&5' !" 12Q 7'|AQ" !"0 ?4d%Cr9" !" M9*y6" !" . 2f"p{"*3" !" I*Q$K!c:' !" <-:.*XRHBzp|8" !" (23757 +' !" 7 <' !" 7:O}3]D' !"# EZ1EAUyum7Ke -]]0' !" BX#C8" !" G92l%hC?U:" !" EH2QT\f2=' !" "4JC+%//Kq/Q3Y;3+" !" 5 =' !" 9B>IPk%0& ^' !"= EVO*c`8:jRMtM,*yK 4,7 %:$c4" !" B*\?\E^Qd?' !" &&RK1.{On@4]Pi' !"H * s .>(Y8 [i's] KS =-9%{_s' !"R $$,XpF&fZf28xhz&Jh"\8J6$ ( P,;' !" 9B|P*$bPhPhn@' !" G: 5R:" !" "BtlH,Dx0`"=" !" J<)p't+V > ." !" 2 (\1 !" " ]%o* !"  M@" !" 'RN2V":.PB(>(46" !" %*(Q/mI" !"( jB N>RT:/b'E" !"$ 3r)]-o- 19& 7-!7/!@Bb" !"A 4L%X1 Q I]@" rue 1.014" 4ޯs@" Rue Marie Goker" s^@" rue 1.024" nWa@" rue 3.085" *= @" rue 3.025" {s@" rue 1758" @" rue 3.021" gIGe@" rue 3.036" k @" rue 2.003" 4Tv@" rue 2.005" :j+z@" Rue Edjoa Mbede" eL݁@"  } ŎY@" Rue Antonie Essomba Many" /Gf@" Rue Martin Tabi Essomba" Pb@" dfz~@" rue 1.285" Ƽ')n@" rue 1.121" §yjDp@" rue 4.040" z.&@" Rue de Narvik" ̪#j@" rue 1.075" d*:@" Rue Mpondo Akwa" 0P3@" Boulevard de l'U.R.S.S." Yt@"  fCw@" Rue Marcus Etoundi" wj@" rue 4.102" yZ@" rue 1.004" 8"ꮅ5j@" rue 1.163"  8h@" rue 1.171" $|$ g@" Essono Ela" VQ蚔c@" rue 1.020" R7h@" rue 1.055" iPB@"  8l]@" rue 1.088" ++f@" rue 1.141" ?Pa@" rue 3.009" B ׁ@" Avenue des Ministères" kYL`@" rue 3.012" =q1Q@" rue 3.013" Fa[@" rue 3.014" Vπ\\@" rue 3.017" FOE)f@" rue 3.020" 7\]H@" rue 3.023" ]a@" rue 3.027" ~̅@" rue 3.029" z{m@" rue 3.040" (sˍ}W@" rue 3.056" u5G_@" rue 3.075" YvMZ@" rue 1.139" Ʋr[@" rue 2.056" Dxx@" rue 1.062" 8YFni@" rue 1.065" SCc@" rue 1.084" ,kd@" rue 1.107" b@" rue 1.109" wvÏx@" rue 1.133" [i@" rue 1.123"  l@" rue 1.302" v#@" rue 1.306" bhrNu@" rue 1.354" XW@" rue 1.375" ?X@" rue 1.377" {tk}@" rue 1.413" ΥX?M\@" rue 1.279"  ~-t@" rue 1.284" uS2]u@" rue 1.286" 9Ww@" rue 1.334" *6{v@" rue 1.340" < o@" rue 1.320"  xmw@" rue 1.322" )Cʌ@" Rue de la Briqueterie" V@" rue 1.296" ×XW@" rue 1.298" wh@" rue 1.300" 7Ro@" Avenue Marchand" i$d d@" Ministries of Transport" DmNM_@" rue 3.018" CYW@" I@" A.,@" Rue du Cercle Municipal" ï XV@" N 3" :sb@" rue 3.008"  s 5Ld@" rue 1.002" ŀH@" Rue 4.092" @ b@" Rue 4.111" 9P@x@" Rue 4.123" 0bu@" Rue 4.129" ǣ Ԕ@" rue 4.090"  1=s@" rue 4.100" _rr@" rue 4.113" Ukz@" rue 4.115" ]V@" rue 1.250" ib0o@" rue 1.255" @Tl#@" rue 1.270" r3cP@" rue 1.272" BU@" rue 1.274" JN_@" rue 1.281" h_*))@" rue 1.291" VEްI{@" Rue 4.121" kUp@" rue 1.266" gT>Wzq@" rue 1.277" VQJ/m@" rue 1.318" ;Ag{@" Rue 4.108" Oqvj@" rue 4.112" 1f@" rue 4.114" K彁@" rue 4.118" 5νz@" rue 4.137" d:Ј@" rue 4.139" u<`}@" rue 4.131"  x@" rue 4.133" 8%r@" rue 4.135" ƨ06@" rue 4.161" 16[@" Rue 4.119" c{@" Rue 4.086" P|@" )L@\@@" N3" ێXo@" rue 3.083" ͤO]@" rue 1.273" R@" Rue Sébastien Essomba" EL|d@" Avenue Charles Atangana" c}@" rue Onembele Nkou" %@" Rue Simekoa" OI}@" rue 1.276" d9@" rue 1.338" 6Q6t@" rue 1.364" E>X@" rue 1.606" trkrz@" rue 1.589" lw@" rue 1.587" ds@" rue 1.514" A(sj@" rue 1.332" TYvj@" Rue Joseph Omgba Nsi" Qx@" Avenue Germaine Ahidjo" iH@" \[fSt@" rue 1.033" !!Dso@" rue 1.031" Fm@" Rue Many Ewondo" .超@" nf-h@" Avenue de l'indépendance" ^o@" rue 1.053" 7 HY@" rue 1.018" F|@" Rue Menge Sogo" Sp@" rue 1.093" a[mu@" "\ߣ~@" Rue Marc-Vivien Foé" U!@" rue 1.577" `zm@" rue 1.417"  >NHz@" {,1a@" rue 1.415" ڦHh@" rue 1.368" i` y@" rue 1.411" [_p,@" rue 1.502" .X̴s@" rue 1.393" `7b@" rue 1.583" J.s@" rue 1.374"  }v@" Omnisport" %);@" rue 1.307" \lqm@" rue 1.308" 7 Czp@" rue 1.309" z@" rue 1.311" $co@" rue 1.313" 6.T@" rue 1.315" D65rx@" Rue de Kondengui" _`ʹ@" rue 1.271" h} a@" rue 4.105" cN|v@" Rue 4.155" ܌:0p@" rue 4.117" զq{@" rue 1.070"  Ӡkp@" rue 1.113" {z82@" rue 1.115" pb@" rue 1.052" G:@" rue 1.064" path" Q]@" rue 1.066" Y鼍t@" Rue Rudolf Abessolo" uE,@" \-pX@" Rue Monseigneur Graffin" [Qz@" Rue Manfred Otto Fouda" ]dY|@" rue 1.397" |>@" Rue Ze Mendouga"  @" Rue Jean Abanda" =$t@" Rue 4.127" eWVr@"  @" ̊@" Rue Henri Dunant" G'@" W_* @" Boulevard de la Réunification" nWMew@" Rue Albert Ateba Ebé" @" Rue Noah Tsogo" U-a@" rue 1.076" }nl@" rue 1.618" Qd"ohJ@" rue 1.111" \~q@" rue 1.504" <7r@" rue 1.506" p!x@" rue 1.579" ` oGq@" rue 1.583" qd%]ϳ@" UlO[@" rue 1.604" RU߾l@" rue 1.518" ֣Hq@" rue 1.671" PՂi@" rue 1.041" 3x@" rue 1.145" BY@" rue 4.104" Sn@" rue 1.051" ⇼3@" Rue Martin Paul Samba" IJNl8@" j[m@" Rue 4.098" T"t@" rue 1.661" eh@" t@" rue 1.280" @" Rue de Nachtigal"  3bBtO]@" rue 1.016" "3ɓ@" Avenue Maréchal Foch" ^e^@"- +Avenue du Président El Hadj Ahmadou Ahidjo" FGiv@" Avenue John F Kennedy" @" Rue 4.125" su9@" v@" 1Qb@" rue 1.010" X{@" Avenue Mvog-Fouda Ada" ;@" Rue Monseigneur Vogt" r/z@" zMUË@" Rue de Mfoundi" M7)u@" rue 1.105" _z@" rue 1.054" G"Wk[@" rue 1.161" -jm@" KwգM@" rue 1.103" hR(v@" rue 1.026" V\%X@" Avenue Charles de Gaulle" ^UЏ@" Avenue Winston Churchill"  Ru@" rue 1.073" c@" Rue Frédéric Foe"  ġ @" Avenue Marcel Marigoh Mboua" (@" rue 1.258" G t]@" rue 1.090( x waterway_label " M ` " $ 8@: H (R4\"@$&,$,  @P\R  <6,J &V8&&    <& 0,j*B"   $   '*4 $: " % .  & "4 8"   " :$2   "B& * 28"4  * ( ,, 20. 6 " A  +$' '    -  9>  /*9(  5*%'" UBE8?6  #/29Z  %F&2: VB\ " .t*. &$ , (" &(>  " 8 "w F   0.       8""     &*",*W "C 6 ,nF &6]es iUsSk'A1 " /JV{b3*hId=|7ponamename_dename_enname_esname_frtype" Mfoundi" river" Abiergué" Tongolo" stream" Ntem" Mingoe" Djoungolo" Ebogo( x building_label "  " / " ? " .      " (      " 8      " J " >  " !  " G  "    " +  " 0 " 2 " M      " 9 !"""""" C #$$$$$"  %&&&&&" 1 '((((("  )*****" % +,,,,," * -....." H /00000" O> 122222" NJ 344444" L: 544444" H? 644444" GI 788888" GI 9:::::" LH ;<<<<<" H9  =>>>>>" K=! ?@@@@@" LO" ABBBBB" E(# CDDDDD" N)$ EFFFFF" <*% GHHHHH" ? & IJJJJJ" @' KLLLLL" <.( MNNNNN" =-) OPPPPP" E* QRRRRR" F#+ STTTTT" N, UVVVVV" D- WXXXXX" D#. YZZZZZ" I$/ [\\\\\" G!0 ]^^^^^" @&1 _`````" I2 abbbbb" E3 cddddd" D%4 efffff" D%5 ghhhhh" N(6 ijjjjj" O"7 klllll" Aj8 mnnnnn" N9 oppppp" B: qrrrrr" ; ; sttttt" D$< uvvvvv" @,= wxxxxx" C> yzzzzz" =? {|||||" E@ }~~~~~" AA" CB" H C" HD" <.E" 8F" ;-G" ,!H" :/I" '/J" 8K" :L" 2%M" $$N" ,$O" 9P FFFFF" )2Q" 8R" 54S" 20T" 34U" 15V" 2.W" ,X" 4Y" 41Z" 1([" %\" ;)]" /!^" 8._" +!`" *!a" 8+b" *#c" 3d" :e :::::" .-f" 5*g" :h" /i" 1 j" /k" 26l" 4m" /$n" '5o" ,,p" . q" ;+r lllll" :0s" .%t" :,u" 2v" 8-w" 7,x" #(y" 8,z" %{" #-|" 3}" 5~" 1" % " & " $ " # "  "  " " " ! "  "  " ## "   " ' " " "   "  " " "  " "! " " " # "   "  "  " " "  "  "  " ' " / " # "  " % " 2 "  "  " ! " 5 "  "  "  "   "  "  :::::" !& " . "   " ' "  "   :::::" % "  "  "  " # " ( "  "  " "' "  "  " & " . " . "   "  "  " ! " ! "  "  "   "  "  " "# "  "  "  " % "  "  "  "   "  " * " * " , "  "  " 5 "  "  "  " "2 "  BBBBB" 6< " 0G " 9N " 0F 44444" << " 3J " 'A " 5I " I " >B " 6O :::::" 5< " 8 " :; :::::" 67 " 8H " $9 " @ " :: " >D " 7 " ?K " .9 " I jjjjj" *@ lllll" #C lllll" F " >N " DG " 2L " AB " 2K " >H " BO " G " 0E " 2N " H " 2N " 2M " 0N " = " 8 " ; " ? " ? " B " A " 7 " D " : " 7 " J " J " = " K " N " 8 " > " > " M " K " O " B " D " D " M " J " > " ? " = " K " O " 6 " L " G " A " K " K " M " F " K " G " F " I " F " I " J " D " A " O " H " E " N " ? " C " E " D " O " K " ; " J " 8 " 8 " G " M " ?" @ " A " 8 " 6 " 7 " 8" rM" #; " A" U "   "  "  "  "  " 6 "  "  " * "  "  "  "   "  "  "  "   "  44444"  "   " 2 " . " . "  "  " " "  " 5 " ) " + "   "  "  " & " " / "  " ( "  "  "  "   " " @ " " o. " 2 "  "  " ) " * "   "  " 4 "  " 1 "  " 6 "  " . " ( " . "  "  "  " 1 "  " ' "  "  "  " 3 "  " % " areanamename_dename_enname_esname_fr" `8@" Service du Gouverneur" ï@" Mahima"  Aq@" Pharmacie vallée" TW@" Chambre de Commerce"  Կr@" Air France" UU@"; 9Ministère de la Défence Etat-Major de l'Armée de Terre" 6@" Immeuble de la Mort" "m@" Goethe Institute" @v@" ringo" 3@"$ "Ministère de la Fonction Publique" )@"( &Fonds des Nations Unies pour l'Enfance" `a@" American Cultural Centre" Xl@" Chamber of Agriculture"  #k@"# !Institut National de Cartographie"# !National Institute of Cartography" u@" Ordre des géomètres Expert" ;@"3 1Ministère de la Défence Etat-Major de la Marine" @@" Fonction Publique" @ @"; 9Ministère de l'Emploi et de la Formation Professionnelle" >A@" Chambre d'Agriculture" `@"2 0Délégation générale de la Sûreté Nationale" @") 'Caisse Nationale de Prévoyance Sociale"  @"% #Electricity development Corporation" S@"H FMinistère des Mines, de l'Industrie et du Developpement Technologique" Nn@" Centre Médical" `n@" CASE" }X@" Centre de Santé" qb@" g@" OS@" IPAO" `8€@" Église"  &Un@" Collège Prive Pharadas" @(a@" François Xavier" \@"' %Groupe Scholaire Bilingue la Shekinah" `4"a@" Mosquée" \@" Marché"  yq@" Hôtel" @@" Hotel The Sport" nx@" Pharmacie la Colombe"  0}@" Pharmacie la Rosée" @#o@" Credit du Sahel" @" Bureau des Impôts" `@" Centre Santé" "@" Laborex" @"' %Paroisse Sainte-Thérése de L'Enfant" `fc@" CMC" @Ir@" les Petits Élus" oD@" MOJAS" f5t@" Centre Italien Nicolo Andrea" @W#c@" EB" @o@" GS la Poussette" Ue@" École Maternelle" Ut@" Paroisse Saint-Jean d'Essos" o@" Mosquée d'Essos" :'r@" Oillibya" '`@" Texaco" +"w@" Hotel Felydac" 0x@" Kaelly Hotel" `{o@" Mansel"  ԴV@" Hôtel Magny" `i@" Auberge Le Marseillais" wh@" Mfandena Hotel"  HAp@" Ndjanji Hotel"  w@"@ >Bureau Central des Recensements et des Etudes de la Population" z@" US Peace Corps" y@"r pMinistère de l'Economie, de la Planification et de l'Aménagement du Territoire Délégation Regional du Centre"  {@"< :Programme de Développement Rural de la zone Péri-Urbaine" d@"8 6Haut Commissariat des nations unies pour les refugiés"  k@" Développement Rural" @" MICHELIN" p@" Fokou ESSOS" @" AMM" ,]@" 0ܮ@" HYSACAMP" iD@" SAFCA"  l@" Menuiserie" `,@" AFRIGAZ"  v@" Sanza" Dy@" Schunda Company" @" SMALTO" Q}@" `'s@" Parapharmacie" ui@" Pharmacie Saint-Luc" q@" Cousin Castor" `fӀ@" Quiferon" @il@" COGENI" ~@" Lido" @gi@" Centre Medical Social" v@" Centre Veterinaire" @" Clinique et Maternité" 5s@"$ "Clinique Médicale Enfants Malades" :u@" Clinique Sainte-Maithe" ]z@"% #Fondation Médicale Bengolo et Fils" oo@" Fondation Médical Andre Fouda" E@" Gynecologie" @@" SCIMPOS" E@" Tôles et Acier du Cameroun" @" Mairie de Yaoundé 5éme"  b@" Winner Chapel" ҋ@" Paroisse Saint-Michel" @O]x@"+ )Mission Apostolique du Samaritain de Sion" b@" `Er@"" CNPS Centre Hospitalier d´Essos" r@"# !École Publique du Quartier Fouda" BAw@") 'École Maternalle Publique et Etoa-Maki" 7@" Fondation Médicale Fouda" )@"= ;Institut Supérieur de Technologie Appliquée et de Gestion" hd@" Sainte-Hélène" `kX@" Institut Mode'stta" @(q@" Centre et technique Likalo" )r@"# !église pentécotiste chrétienne" @". ,Eglise Méthodique unie Paroisse John Wesley" OXp@" Paroisse Fouda" \@" Chapelle du christ" ǐO@" \8e@" Total" @" Résidence Hoteliere d'Essos" OZ@" Hotel Jouvence 2000" `îs@" Centre Social" u@" Femmes en Detresse" ҂@" Mindaf Impôts" t@" RDPC" `-l@"H FMinistère de l'Administration Territoriale et de la Décentralisation" @" Gare de Yaoundé" ׃@" Fonds National de l'Emploi" g@" Imprimerie" So@" La Terrasse" @>yv@" Cours Suprême" M@" Independance Square" p@" Business Development Service" ͑@" CEPER" t@" EBAT" >@" Foundation Bandjoun"  r@" SPIC" Lt@" Mahima Supermarché" `4@" Meumi Hôtel" ֞~@" Hôtel Grand Moulin" @" Girafe Hôtel" @@" Tou'ngo Hôtel"   @" Tango Hôtel" 0u@" Hôtel Las Vegas"  A@" Pharmacie le Cristallis" @" Lion's Club International" @o@" CIGALON"  u7t@" Librairie Protestante" `4k@" Dog Security" 'Wy@" Financial House"  kt@" Samiris Asurance" G@" Hotel Franco" 2c@" Poste de Police" @^@" Boulangerie Centrale"  ~@" Centre Medical Le Jourdain" @&@" Cabinet Médical" S3@" Clinique"  !~p@" Cabinet Dentaire" S`@"' %Clinique Pharmaceutique Vétérinaire"  Yq@" Hôpital" 4p@" Lh@"' %Laboratoire Prima Analyses Médicales" v@" Afriland First Bank" aw@"- +Société Générale de Banques au Cameroun" @@"\ ZRéseau des Institutions De Formation Forestière Et Environnementale d’Afrique Centrale" z{@"7 5Mission d'Aménagement des Terrains Urbains et Ruraux" }e@" SCB" i@"( &Banque des Etats de l'Afrique Centrale" bq@" Clinique de Bastos" ~tj@" Polyclinique Emmanuel" !J@" Église Adventiste"  u@" Cabinet Dentaire EPC" @p@"" Secrétariat à l'Éducation EPC" `k3n@" Eglise" `Dkr@" @" Église Bethel" w@" Secrétariat Général EPC" w@" Chapelle Elig-Essono" @" CEPCA" `{@"0 .Église Presbytérienne Camerounaise Djoungolo" `@" k@"$ "Congregation du Saint-Esprit Casba" ɞ@" Paroisse Adna" `+"u@" Bureaux CEPCA" @`Centre De Formation Professionelle Rapide d'Employes de BAREAU" ̆n@"W UCentre de Coopération Internationale en Recherche Agronomique pour le Développement" `g@"9 7Agence nationale d'appui au dévéloppement forestier (" @؅@" Chambre Des Comptes" `|Fv@"% #Institut National Du Travail Social" nu@": 8Ministère des Affaires Sociales Délégation Regionale" @k@" Siège de L'UNDP" ?o@" Musée" @ц@"G EMinistère des Postes et Télécommunications Délégation Regionale"  0 @" SAIL"  ,@" Ministère de la Communication" Ministry of Communication" &@"$ "Société Immobilière du Cameroun" ϋ@" Union Européenne" |@" Recette Municipale" 6Cx@"2 0Institut de Recherches Géologiques et Minières"  /@"/ -Organisation des Nations Unies pour l'Enfance" `d@". ,Institut de Recherche pour le Développement" `O@" Hôtel Clamantis" @" Colis Postaux de Yaoundé"  /J@" France Volontaires" kt@" vY@" Pharmacie Le Cygne" @"/ -Menuiserie et Pompes Funèbres La Commerciale" `ew@" @" C@" Clinique du Bon Secours" }&r@" Dispensaire Mvog-Ada"  ^r@"$ "Hôpital de District de Nkolndongo" @g@" Merina Hotel" w@"$ "Église Presbytérienne Réformée" @"' %Paroisse Charles Lwanga de Nkolndongo" ߘz@" ,@"3 1Église Presbytérienne Camerounaise Marie Golker" #@"9 7Archidiocese of Yaoundé Saint-Joseph Anglophone Parish"  W|@"  u@" Secrétariat à l'Éducation" 2@" Le Caveau" @A@" NIKI" `4D@"* (Saint Joseph's Anglophone Primary School" Q@" Lycée de Nkolndongo" ӓ@" École Maternelle et Primaire" \@" Hôtel Venus" oօ@" Paroisse Saint Joseph" -x@"0 .Eglise presbitérrienne cameruonaise orthodoxe" df@" R@"  X@" q^@" Total Nkolndongo" $\c@" Pharmacie Balance" 5@" École Primaire les Papillons" `p@" Salina Douma" k@" CEFTI"  }@") 'Gouvernemental Bilingual Primary School" 4Zr@"& $Ecoe Publique Maternelle de la CNPS" @" Hotel Mirador" {@" Auberge Essos"  l@" Dépôt de Bois" `@" Centre des Impôts" yqt@" Maison du Parti de Nkolndongo" u@"( &Promotion de la Femme et de la Famille"  7b@" International Brain Consulting" @`Ww@" Niki"  }@" STAVAL"  $@" Marché Central" &s@" Librairie Saint-Paul" @" Hôtel Merina" m\y@" BICCEC" ؂@" Pharmacie Française" @" @j@" Pharmacie du 20 Mai" wws@" Pharmacie de l'Intendance" n@" Pharmacie du Soleil" @" Poste Centrale" @" Trésor Public" DĀ@" CamerCo"  g@"& $Direction de la Police Scientifique" J @" Ministère de Transport" i@"' %Ministère des Forêts et de la Faune" VTr@" Nigerian Embassy" #v@" École" @"4 2Ministère du Travail et de la Prévoyance Sociale" .o@" Cour Suprême du Cameroun" `ޓ@" Archives nationales" 7}@"& $Cathédrale Notre-Dame des Victoires" `*s@" Restaurant Populaire" s>v@"! Restaurant Municipal le Mfoundi" Uu@" Central Hotel" o}T@"' %Poste de police de la poste centrale"  KG@" Hotel Hilton" T@"( &Complexe Commercial de l'Hôtel Hilton" @" BEAC Nationale" @:.@" Caisse d'Epargne Postale" @,@" CAMTEL"  Qn~@"$ "Commissariat du 1er Arrondissement" R}@"0 .Centre National de Développement Informatique" d~@" Cameroon Telecommunications" -΍@" Centre Linguistique Pilote"  @" PTT" {@"! Ministere des Affaires Sociales" @" Sonel Centrale" `~@"' %Société de Recouvrement du Cameroun"  @": 8Ministère de la Promotion de la Femme et de la Famille" @݂@" MINADER" @@") 'Ministère de l'Enseignement Supérieur" Œ@"J HMinistère de l'Administration Térritoiriale et de la Décentralisation" @" Ministère de la Justice"  z@" Immeuble Ministériel N° 2" 1'l@" Palais de Justice" `I @" Institut Français du Cameroun" @" Tribune Officielle"  t@"B @Organisation des Nations Unies pour le Développement Industriel"  N@"8 6Ministere de l'Agriculture et du Dévéloppement Rural"  ,@" Ministère des Finances" }.@" Ministère des Transports" `o@"" Institut National de Statistique" Щ@"3 1Ministère du Travail et de la Sécurité Sociale" @"" Ministère de la Santé Publique"  [@"* (Poste de police du centre administratif" @~@"O MMinistère de l'Économie, de la Planification et du Développement régional" `h@" Musée National" %y@"4 2Ministères des Postes et des Télécommunications" @@"5 3Ecole Nationale d'Administration et de Magistrature" sW@"@ >Ministère des Domaines du Cadastre et des Affaires Foncières" B e@" i@" le Normalien" +h`@" Poste de police de la vallée" _@" Hôtel des Députés"  #ܲ@" Complexe Ministériel" z@" Attestation de Distance"  "@"$ "Ministère de l'Education de Base" W@" r@"+ )Ministère des Enseignements Sécondaires" @"D BMinistère de la Fonction Publique et de la Reforme Administrative" 6ѹ@" Imprimerie Nationale" X@" Premier Ministère" uf@" Résidence du Premier Ministre" k@" Ambassade du Tchad"  @" Cercle Municipal" @6@" Chez Wou" j@" CRTV RADIO" Ғ@" PMUC" `ԑ@" Économat" '@" Bricolux" @Cu@" Hôtel Somatel" `|+p@" Indra Hôtel" Ƒ@" Djeuga Palace" OeV@" Pharmacie de la Brique" b f@" Pharmacie Emmanuel" `}n@" Pharmacie École de Police" 3|@" Pharmacie 2000" `94t@" UBC" $@"% #Ministère des Affaires Etrangères" @"9 7Organisation Africaine de la Propriété Intellectuelle" `)@" Ambassade du Nigeria" y@" Sous-Préfecture Yaoundé 1" j@" @" Hôtel de ville"  X@" Croix Rouge Camerounaise" _t@" Fondation Chantal Biya" @"' %Laboratoire de Santé Hygiène Mobile" `l@" ?t@" NFC Bank" P~@" Programme Alimentaire Mondial" 9 @"$ "GMC Assurances SA Bureau Régional" @|@" Bibliothèque Nationale" r?@" Centre Pasteur" @" Morgue" @" UEEC" @@" UEBC Église de l'Esperance" q@" Église du Christ" `#P@"= ;Église Évangélique du Cameroun Paroisse de Briqueterie I" y@" Paroisse Catholique" @" Paroisse Tohé" 3|@" Centrale Diocesaine" Pn@" ESEDA" G;@" CTSP" @ @" Banque Atlantique Yaoundé"  3M@" Centre d'approvisionnement" `͞u@" CETIC Charles Atangana" @H@" SGBC" @Ph@" CSI la Gaité" `Ӗ}@" CETIC Communale" @"% #UCAC École des Sciences Infiermers" I@"% #Ministère de l'Eau et de l'Energie" @" Usine Bastos" R@" Le Moulin de Don Quichotte" @" `̓@" CEMAC ISSEA" 3*@". ,École Primaire et Maternelle de la Retraite" @e@" École Maternelle Annexe" 2y@"+ )Centre D'accueil des Enfants en Détresse" :v@" ASCOMA Assurance" @6@"! Direction Générale de Impôts" sv@" AER" @^@" CAMPOST" @" Centre Culturel" S@"* (Comité National de Lutte contre le Sida" @"4 2Caisse de Stabilisation des Prix des Hydrocarbures" @"C ACentrale Nationale d'Approvisionnement en Médicaments Essentiels" @q@" GMI" v@"D BOrganisation pour l'Harmonisation en Afrique du Droit des Affaires"   @" SONEL" O@"0 .Ministère de l'Eau et de l'Energie Batiment B" @f?q@"+ )Inspection d'Arrondissement de Yaoundé 2" @s@"U SOrganisation de Coordination pour la lutte contre les Endémies en Afrique Centrale" @ |@"$ "Délégation Régionale du Travail"  u@"$ "Organisation Mondiale de la Santé" zqx@" Forest Governance Facility" j@" Ministère des Travaux Publics" Z@" PAM" @;@"> <Église Évangélique du Cameroun Paroisse de Briquetterie I" "j@"# !Société Alimentaire du Cameroun( xmapnik-vector-tile-1.6.1/gyp/000077500000000000000000000000001324304754200160345ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/gyp/build.gyp000066400000000000000000000141451324304754200176610ustar00rootroot00000000000000{ "includes": [ "common.gypi" ], 'variables': { 'MAPNIK_PLUGINDIR%': '', 'enable_sse%':'true', 'common_defines' : [ 'MAPNIK_VECTOR_TILE_LIBRARY=1' ] }, "targets": [ { 'target_name': 'make_vector_tile', 'type': 'none', 'hard_dependency': 1, 'actions': [ { 'action_name': 'run_protoc', 'inputs': [ '../proto/vector_tile.proto' ], 'outputs': [ "<(SHARED_INTERMEDIATE_DIR)/vector_tile.pb.cc", "<(SHARED_INTERMEDIATE_DIR)/vector_tile.pb.h" ], 'action': ['protoc','-I../proto/','--cpp_out=<(SHARED_INTERMEDIATE_DIR)/','../proto/vector_tile.proto'] } ] }, { "target_name": "vector_tile", 'dependencies': [ 'make_vector_tile' ], 'hard_dependency': 1, "type": "static_library", "sources": [ "<(SHARED_INTERMEDIATE_DIR)/vector_tile.pb.cc" ], 'include_dirs': [ '<(SHARED_INTERMEDIATE_DIR)/' ], 'conditions': [ ['enable_sse == "true"', { 'defines' : [ 'SSE_MATH' ] }] ], 'cflags_cc' : [ '-D_THREAD_SAFE', '> 31) // // Ex.: MoveTo(3, 6), LineTo(8, 12), LineTo(20, 34), ClosePath // Encoded as: [ 9 6 12 18 10 12 24 44 15 ] // | | `> [00001 111] command type 7 (ClosePath), length 1 // | | ===== relative LineTo(+12, +22) == LineTo(20, 34) // | | ===== relative LineTo(+5, +6) == LineTo(8, 12) // | `> [00010 010] = command type 2 (LineTo), length 2 // | ==== relative MoveTo(+3, +6) // `> [00001 001] = command type 1 (MoveTo), length 1 // // The original position is (0,0). repeated uint32 geometry = 4 [ packed = true ]; optional bytes raster = 5; } message Layer { // Any compliant implementation must first read the version // number encoded in this message and choose the correct // implementation for this version number before proceeding to // decode other parts of this message. required uint32 version = 15 [ default = 1 ]; required string name = 1; // The actual features in this tile. repeated Feature features = 2; // Dictionary encoding for keys repeated string keys = 3; // Dictionary encoding for values repeated Value values = 4; // The bounding box in this tile spans from 0..4095 units optional uint32 extent = 5 [ default = 4096 ]; extensions 16 to max; } repeated Layer layers = 3; extensions 16 to 8191; } mapnik-vector-tile-1.6.1/scripts/000077500000000000000000000000001324304754200167245ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/scripts/build.sh000077500000000000000000000005611324304754200203640ustar00rootroot00000000000000set -e -u set -o pipefail if [[ ${COVERAGE:-false} == true ]]; then # test only debug version export LDFLAGS="--coverage" export CXXFLAGS="--coverage" make debug -j${JOBS:-1} V=1 make test-debug else # test both release and debug make release -j${JOBS:-1} V=1 make test make debug -j${JOBS:-1} V=1 make test-debug fi set +e +u mapnik-vector-tile-1.6.1/scripts/coverage.sh000077500000000000000000000003101324304754200210500ustar00rootroot00000000000000#!/usr/bin/env bash set -e -u set -o pipefail if [[ ${COVERAGE:-false} != false ]]; then curl -S -f https://codecov.io/bash -o codecov chmod +x codecov ./codecov -x "llvm-cov gcov" -Z fimapnik-vector-tile-1.6.1/src/000077500000000000000000000000001324304754200160245ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/src/boost_geometry_adapters.hpp000066400000000000000000000224501324304754200234640ustar00rootroot00000000000000#pragma once #include #include #include #include #include #include #include #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-function" #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wunused-variable" #pragma GCC diagnostic ignored "-Wshadow" #ifdef __clang__ #pragma GCC diagnostic ignored "-Wunknown-pragmas" #endif #pragma GCC diagnostic ignored "-Wfloat-equal" #pragma GCC diagnostic ignored "-Wpragmas" #pragma GCC diagnostic ignored "-Wdeprecated-register" #pragma GCC diagnostic ignored "-Wshorten-64-to-32" #pragma GCC diagnostic ignored "-Wunused-local-typedefs" #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" #include #include #include #include #pragma GCC diagnostic pop #include #include BOOST_GEOMETRY_REGISTER_POINT_2D (mapbox::geometry::point, double, boost::geometry::cs::cartesian, x, y) BOOST_GEOMETRY_REGISTER_POINT_2D (mapbox::geometry::point, std::int64_t, boost::geometry::cs::cartesian, x, y) namespace boost { template struct range_iterator > { using type = typename mapbox::geometry::multi_point::iterator; }; template struct range_const_iterator > { using type = typename mapbox::geometry::multi_point::const_iterator; }; template inline typename mapbox::geometry::multi_point::iterator range_begin(mapbox::geometry::multi_point & mp) {return mp.begin();} template inline typename mapbox::geometry::multi_point::iterator range_end(mapbox::geometry::multi_point & mp) {return mp.end();} template inline typename mapbox::geometry::multi_point::const_iterator range_begin(mapbox::geometry::multi_point const& mp) {return mp.begin();} template inline typename mapbox::geometry::multi_point::const_iterator range_end(mapbox::geometry::multi_point const& mp) {return mp.end();} template struct range_iterator > { using type = typename mapbox::geometry::line_string::iterator; }; template struct range_const_iterator > { using type = typename mapbox::geometry::line_string::const_iterator; }; template inline typename mapbox::geometry::line_string::iterator range_begin(mapbox::geometry::line_string & line) {return line.begin();} template inline typename mapbox::geometry::line_string::iterator range_end(mapbox::geometry::line_string & line) {return line.end();} template inline typename mapbox::geometry::line_string::const_iterator range_begin(mapbox::geometry::line_string const& line) {return line.begin();} template inline typename mapbox::geometry::line_string::const_iterator range_end(mapbox::geometry::line_string const& line) {return line.end();} namespace geometry { namespace traits { template struct tag> { using type = box_tag; }; template struct indexed_access, min_corner, 0> { static inline CoordinateType get(mapbox::geometry::box const& b) { return b.min.x;} static inline void set(mapbox::geometry::box &b, CoordinateType const& value) { b.min.x = value; } }; template struct indexed_access, min_corner, 1> { static inline CoordinateType get(mapbox::geometry::box const& b) { return b.min.y;} static inline void set(mapbox::geometry::box &b, CoordinateType const& value) { b.min.y = value; } }; template struct indexed_access, max_corner, 0> { static inline CoordinateType get(mapbox::geometry::box const& b) { return b.max.x;} static inline void set(mapbox::geometry::box &b, CoordinateType const& value) { b.max.x = value; } }; template struct indexed_access, max_corner, 1> { static inline CoordinateType get(mapbox::geometry::box const& b) { return b.max.y;} static inline void set(mapbox::geometry::box &b, CoordinateType const& value) { b.max.y = value; } }; template struct coordinate_type> { using type = CoordinateType; }; template struct coordinate_system> { using type = boost::geometry::cs::cartesian; }; template struct dimension> : boost::mpl::int_<2> {}; template struct access, 0> { static CoordinateType get(mapbox::geometry::point const& p) { return p.x; } static void set(mapbox::geometry::point& p, CoordinateType x) { p.x = x; } }; template struct access, 1> { static CoordinateType get(mapbox::geometry::point const& p) { return p.y; } static void set(mapbox::geometry::point& p, CoordinateType y) { p.y = y; } }; template struct tag> { using type = multi_point_tag; }; template struct tag> { using type = linestring_tag; }; template struct tag> { using type = multi_linestring_tag; }; template struct tag> { using type = ring_tag; }; template struct point_order > { static const order_selector value = counterclockwise; }; template struct tag> { using type = polygon_tag; }; template struct ring_mutable_type> { using type = mapbox::geometry::point&; }; template struct ring_const_type> { using type = mapbox::geometry::point const&; }; template struct ring_mutable_type> { using type = mapbox::geometry::linear_ring&; }; template struct ring_const_type> { using type = mapbox::geometry::linear_ring const&; }; template struct interior_mutable_type> { using type = boost::iterator_range::iterator>; }; template struct interior_const_type> { using type = boost::iterator_range::const_iterator>; }; template struct exterior_ring> { static mapbox::geometry::linear_ring& get(mapbox::geometry::polygon& p) { return p.at(0); } static mapbox::geometry::linear_ring const& get(mapbox::geometry::polygon const& p) { return p.at(0); } }; template struct interior_rings> { static boost::iterator_range::iterator> get(mapbox::geometry::polygon& p) { return boost::make_iterator_range(p.begin() + 1, p.end()); } static boost::iterator_range::const_iterator> get(mapbox::geometry::polygon const& p) { return boost::make_iterator_range(p.begin() + 1, p.end()); } }; template struct tag> { using type = multi_polygon_tag; }; } } } mapnik-vector-tile-1.6.1/src/convert_geometry_types.hpp000066400000000000000000000041711324304754200233570ustar00rootroot00000000000000#pragma once // Mapnik #include // Mapbox #include namespace mapnik { namespace vector_tile_impl { template mapbox::geometry::linear_ring mapnik_to_mapbox(mapnik::geometry::linear_ring const& input) { mapbox::geometry::linear_ring r; r.reserve(input.size()); for (auto const& pt : input) { r.emplace_back(pt.x, pt.y); } return r; } template mapbox::geometry::polygon mapnik_to_mapbox(mapnik::geometry::polygon const& input) { mapbox::geometry::polygon out; if (input.exterior_ring.empty()) { return out; } out.push_back(mapnik_to_mapbox(input.exterior_ring)); for (auto const& in_r : input.interior_rings) { out.push_back(mapnik_to_mapbox(in_r)); } return out; } template mapbox::geometry::multi_polygon mapnik_to_mapbox(mapnik::geometry::multi_polygon const& input) { mapbox::geometry::multi_polygon out; for (auto const& poly : input) { out.push_back(mapnik_to_mapbox(poly)); } return out; } template mapnik::geometry::linear_ring mapbox_to_mapnik(mapbox::geometry::linear_ring const& input) { mapnik::geometry::linear_ring r; r.reserve(input.size()); for (auto const& pt : input) { r.emplace_back(pt.x, pt.y); } return r; } template mapnik::geometry::polygon mapbox_to_mapnik(mapbox::geometry::polygon const& input) { mapnik::geometry::polygon out; bool first = true; for (auto const& in_r : input) { if (first) { out.exterior_ring = mapbox_to_mapnik(in_r); first = false; } else { out.interior_rings.push_back(mapbox_to_mapnik(in_r)); } } return out; } template mapnik::geometry::multi_polygon mapbox_to_mapnik(mapbox::geometry::multi_polygon const& input) { mapnik::geometry::multi_polygon out; for (auto const& poly : input) { out.push_back(mapbox_to_mapnik(poly)); } return out; } } // end ns vector_tile_impl } // end ns mapnik mapnik-vector-tile-1.6.1/src/vector_tile_composite.hpp000066400000000000000000000054131324304754200231410ustar00rootroot00000000000000#pragma once // mapnik-vector-tile #include "vector_tile_merc_tile.hpp" #include "vector_tile_datasource_pbf.hpp" #include "vector_tile_processor.hpp" #include "vector_tile_config.hpp" // mapnik #include #include //protozero #include namespace mapnik { namespace vector_tile_impl { inline void composite(merc_tile & target_vt, std::vector const& vtiles, mapnik::Map & map, processor & ren, // processor should be on map object provided double scale_denominator = 0.0, unsigned offset_x = 0, unsigned offset_y = 0, bool reencode = false) { if (target_vt.tile_size() <= 0) { throw std::runtime_error("Vector tile size must be great than zero"); } for (auto const& vt : vtiles) { if (vt->tile_size() <= 0) { throw std::runtime_error("Vector tile size must be great than zero"); } if (vt->is_empty()) { continue; } bool reencode_tile = reencode; if (!reencode_tile && !target_vt.same_extent(*vt)) { reencode_tile = true; } protozero::pbf_reader tile_message(vt->get_reader()); // loop through the layers of the tile! while (tile_message.next(Tile_Encoding::LAYERS)) { bool reencode_layer = reencode_tile; const auto data_view = tile_message.get_view(); protozero::pbf_reader layer_message(data_view); if (!layer_message.next(Layer_Encoding::NAME)) { continue; } std::string layer_name = layer_message.get_string(); if (!reencode_layer) { target_vt.append_layer_buffer(data_view.data(), data_view.size(), layer_name); } if (target_vt.has_layer(layer_name)) { continue; } protozero::pbf_reader layer_pbf(data_view); auto ds = std::make_shared( layer_pbf, vt->x(), vt->y(), vt->z(), true); mapnik::layer lyr(layer_name,"+init=epsg:3857"); ds->set_envelope(vt->get_buffered_extent()); lyr.set_datasource(ds); map.add_layer(lyr); } } if (!map.layers().empty()) { ren.update_tile(target_vt, scale_denominator, offset_x, offset_y); } } } // end ns vector_tile_impl } // end ns mapnik mapnik-vector-tile-1.6.1/src/vector_tile_compression.cpp000066400000000000000000000001151324304754200234650ustar00rootroot00000000000000#include "vector_tile_compression.hpp" #include "vector_tile_compression.ipp"mapnik-vector-tile-1.6.1/src/vector_tile_compression.hpp000066400000000000000000000050261324304754200235000ustar00rootroot00000000000000#pragma once // mapnik-vector-tile #include "vector_tile_config.hpp" // zlib #include // std #include namespace mapnik { namespace vector_tile_impl { inline bool is_zlib_compressed(const char * data, std::size_t size) { return size > 2 && static_cast(data[0]) == 0x78 && ( static_cast(data[1]) == 0x9C || static_cast(data[1]) == 0x01 || static_cast(data[1]) == 0xDA || static_cast(data[1]) == 0x5E ); } inline bool is_zlib_compressed(std::string const& data) { return data.size() > 2 && static_cast(data[0]) == 0x78 && ( static_cast(data[1]) == 0x9C || static_cast(data[1]) == 0x01 || static_cast(data[1]) == 0xDA || static_cast(data[1]) == 0x5E ); } inline bool is_gzip_compressed(const char * data, std::size_t size) { return size > 2 && static_cast(data[0]) == 0x1F && static_cast(data[1]) == 0x8B; } inline bool is_gzip_compressed(std::string const& data) { return data.size() > 2 && static_cast(data[0]) == 0x1F && static_cast(data[1]) == 0x8B; } // decodes both zlib and gzip // http://stackoverflow.com/a/1838702/2333354 MAPNIK_VECTOR_INLINE void zlib_decompress(std::string const& input, std::string & output); MAPNIK_VECTOR_INLINE void zlib_compress(std::string const& input, std::string & output, bool gzip=true, int level=Z_DEFAULT_COMPRESSION, int strategy=Z_DEFAULT_STRATEGY); MAPNIK_VECTOR_INLINE void zlib_decompress(const char * data, std::size_t size, std::string & output); MAPNIK_VECTOR_INLINE void zlib_compress(const char * data, std::size_t size, std::string & output, bool gzip=true, int level=Z_DEFAULT_COMPRESSION, int strategy=Z_DEFAULT_STRATEGY); } // end ns vector_tile_impl } // end ns mapnik #if !defined(MAPNIK_VECTOR_TILE_LIBRARY) #include "vector_tile_compression.ipp" #endif mapnik-vector-tile-1.6.1/src/vector_tile_compression.ipp000066400000000000000000000054271324304754200235060ustar00rootroot00000000000000// zlib #include // std #include namespace mapnik { namespace vector_tile_impl { // decodes both zlib and gzip // http://stackoverflow.com/a/1838702/2333354 void zlib_decompress(const char * data, std::size_t size, std::string & output) { z_stream inflate_s; inflate_s.zalloc = Z_NULL; inflate_s.zfree = Z_NULL; inflate_s.opaque = Z_NULL; inflate_s.avail_in = 0; inflate_s.next_in = Z_NULL; inflateInit2(&inflate_s, 32 + 15); inflate_s.next_in = (Bytef *)data; inflate_s.avail_in = size; size_t length = 0; do { output.resize(length + 2 * size); inflate_s.avail_out = 2 * size; inflate_s.next_out = (Bytef *)(output.data() + length); int ret = inflate(&inflate_s, Z_FINISH); if (ret != Z_STREAM_END && ret != Z_OK && ret != Z_BUF_ERROR) { std::string error_msg = inflate_s.msg; inflateEnd(&inflate_s); throw std::runtime_error(error_msg); } length += (2 * size - inflate_s.avail_out); } while (inflate_s.avail_out == 0); inflateEnd(&inflate_s); output.resize(length); } void zlib_decompress(std::string const& input, std::string & output) { zlib_decompress(input.data(),input.size(),output); } void zlib_compress(const char * data, std::size_t size, std::string & output, bool gzip, int level, int strategy) { z_stream deflate_s; deflate_s.zalloc = Z_NULL; deflate_s.zfree = Z_NULL; deflate_s.opaque = Z_NULL; deflate_s.avail_in = 0; deflate_s.next_in = Z_NULL; int windowsBits = 15; if (gzip) { windowsBits = windowsBits | 16; } if (deflateInit2(&deflate_s, level, Z_DEFLATED, windowsBits, 8, strategy) != Z_OK) { throw std::runtime_error("deflate init failed"); } deflate_s.next_in = (Bytef *)data; deflate_s.avail_in = size; size_t length = 0; do { size_t increase = size / 2 + 1024; output.resize(length + increase); deflate_s.avail_out = increase; deflate_s.next_out = (Bytef *)(output.data() + length); // From http://www.zlib.net/zlib_how.html // "deflate() has a return value that can indicate errors, yet we do not check it here. // Why not? Well, it turns out that deflate() can do no wrong here." // Basically only possible error is from deflateInit not working properly deflate(&deflate_s, Z_FINISH); length += (increase - deflate_s.avail_out); } while (deflate_s.avail_out == 0); deflateEnd(&deflate_s); output.resize(length); } void zlib_compress(std::string const& input, std::string & output, bool gzip, int level, int strategy) { zlib_compress(input.data(),input.size(),output,gzip,level,strategy); } } // end ns vector_tile_impl } // end ns mapnik mapnik-vector-tile-1.6.1/src/vector_tile_config.hpp000066400000000000000000000020371324304754200224030ustar00rootroot00000000000000#pragma once #if !defined(MAPNIK_VECTOR_TILE_LIBRARY) #define MAPNIK_VECTOR_INLINE inline #else #define MAPNIK_VECTOR_INLINE #endif #include #define VT_LEGACY_IMAGE_SIZE 256.0 namespace mapnik { namespace vector_tile_impl { enum Tile_Encoding : protozero::pbf_tag_type { LAYERS = 3 }; enum Layer_Encoding : protozero::pbf_tag_type { VERSION = 15, NAME = 1, FEATURES = 2, KEYS = 3, VALUES = 4, EXTENT = 5 }; enum Feature_Encoding : protozero::pbf_tag_type { ID = 1, TAGS = 2, TYPE = 3, GEOMETRY = 4, RASTER = 5 }; enum Value_Encoding : protozero::pbf_tag_type { STRING = 1, FLOAT = 2, DOUBLE = 3, INT = 4, UINT = 5, SINT = 6, BOOL = 7 }; enum Geometry_Type : std::uint8_t { UNKNOWN = 0, POINT = 1, LINESTRING = 2, POLYGON = 3 }; enum polygon_fill_type : std::uint8_t { even_odd_fill = 0, non_zero_fill, positive_fill, negative_fill, polygon_fill_type_max }; } // end ns vector_tile_impl } // end ns mapnik mapnik-vector-tile-1.6.1/src/vector_tile_datasource_pbf.cpp000066400000000000000000000001241324304754200241050ustar00rootroot00000000000000#include "vector_tile_datasource_pbf.hpp" #include "vector_tile_datasource_pbf.ipp" mapnik-vector-tile-1.6.1/src/vector_tile_datasource_pbf.hpp000066400000000000000000000037621324304754200241250ustar00rootroot00000000000000#pragma once // mapnik #include #include #include // protozero #include namespace mapnik { namespace vector_tile_impl { // TODO: consider using mapnik::value here instead using pbf_attr_value_type = mapnik::util::variant; using layer_pbf_attr_type = std::vector; class tile_datasource_pbf : public datasource { public: tile_datasource_pbf(protozero::pbf_reader const& layer, std::uint64_t x, std::uint64_t y, std::uint64_t z, bool use_tile_extent = false); virtual ~tile_datasource_pbf(); datasource::datasource_t type() const; featureset_ptr features(query const& q) const; featureset_ptr features_at_point(coord2d const& pt, double tol = 0) const; void set_envelope(box2d const& bbox); box2d get_tile_extent() const; box2d envelope() const; boost::optional get_geometry_type() const; layer_descriptor get_descriptor() const; std::string const& get_name() { return name_; } std::uint32_t get_layer_extent() { return tile_size_; } private: mutable mapnik::layer_descriptor desc_; mutable bool attributes_added_; mutable bool valid_layer_; protozero::pbf_reader layer_; std::uint64_t x_; std::uint64_t y_; std::uint64_t z_; std::uint32_t tile_size_; mutable bool extent_initialized_; mutable mapnik::box2d extent_; double tile_x_; double tile_y_; double scale_; uint32_t version_; datasource::datasource_t type_; std::string name_; std::vector features_; std::vector layer_keys_; layer_pbf_attr_type layer_values_; }; } // end ns vector_tile_impl } // end ns mapnik #if !defined(MAPNIK_VECTOR_TILE_LIBRARY) #include "vector_tile_datasource_pbf.ipp" #endif mapnik-vector-tile-1.6.1/src/vector_tile_datasource_pbf.ipp000066400000000000000000000206341324304754200241230ustar00rootroot00000000000000// mapnik-vector-tile #include "vector_tile_featureset_pbf.hpp" #include "vector_tile_projection.hpp" #include "vector_tile_config.hpp" // mapnik #include #include #include #include #include #include #include #include #include // protozero #include // boost #include // std #include #include #include namespace mapnik { namespace vector_tile_impl { // tile_datasource impl tile_datasource_pbf::tile_datasource_pbf(protozero::pbf_reader const& layer, std::uint64_t x, std::uint64_t y, std::uint64_t z, bool use_tile_extent) : datasource(parameters()), desc_("in-memory PBF encoded datasource","utf-8"), attributes_added_(false), valid_layer_(true), layer_(layer), x_(x), y_(y), z_(z), tile_size_(4096), // default for version 1 extent_initialized_(false), tile_x_(0.0), tile_y_(0.0), scale_(0.0), version_(1), // Version == 1 is the default because it was not required until v2 to have this field type_(datasource::Vector) { double resolution = mapnik::EARTH_CIRCUMFERENCE/(1 << z_); tile_x_ = -0.5 * mapnik::EARTH_CIRCUMFERENCE + x_ * resolution; tile_y_ = 0.5 * mapnik::EARTH_CIRCUMFERENCE - y_ * resolution; protozero::pbf_reader val_msg; // Check that the required fields exist for version 2 of the MVT specification bool has_name = false; bool has_extent = false; while (layer_.next()) { switch(layer_.tag()) { case Layer_Encoding::NAME: name_ = layer_.get_string(); has_name = true; break; case Layer_Encoding::FEATURES: { const auto data_view = layer_.get_view(); protozero::pbf_reader check_feature(data_view); while (check_feature.next(Feature_Encoding::RASTER)) { type_ = datasource::Raster; check_feature.skip(); } protozero::pbf_reader f_msg(data_view); features_.push_back(f_msg); } break; case Layer_Encoding::KEYS: layer_keys_.push_back(layer_.get_string()); break; case Layer_Encoding::VALUES: val_msg = layer_.get_message(); while (val_msg.next()) { switch(val_msg.tag()) { case Value_Encoding::STRING: layer_values_.push_back(val_msg.get_string()); break; case Value_Encoding::FLOAT: layer_values_.push_back(val_msg.get_float()); break; case Value_Encoding::DOUBLE: layer_values_.push_back(val_msg.get_double()); break; case Value_Encoding::INT: layer_values_.push_back(val_msg.get_int64()); break; case Value_Encoding::UINT: layer_values_.push_back(val_msg.get_uint64()); break; case Value_Encoding::SINT: layer_values_.push_back(val_msg.get_sint64()); break; case Value_Encoding::BOOL: layer_values_.push_back(val_msg.get_bool()); break; default: throw std::runtime_error("unknown Value type " + std::to_string(layer_.tag()) + " in layer.values"); } } break; case Layer_Encoding::EXTENT: tile_size_ = layer_.get_uint32(); has_extent = true; break; case Layer_Encoding::VERSION: version_ = layer_.get_uint32(); break; default: throw std::runtime_error("unknown field type " + std::to_string(layer_.tag()) + " in layer"); } } if (version_ == 2) { // Check that all required if (!has_name) { throw std::runtime_error("The required name field is missing in a vector tile layer. Tile does not comply with Version 2 of the Mapbox Vector Tile Specification."); } else if (!has_extent) { throw std::runtime_error("The required extent field is missing in the layer " + name_ + ". Tile does not comply with Version 2 of the Mapbox Vector Tile Specification."); } scale_ = static_cast(tile_size_)/resolution; } else if (version_ == 1) { if (!has_name) { throw std::runtime_error("The required name field is missing in a vector tile layer."); } scale_ = static_cast(tile_size_)/resolution; } else { valid_layer_ = false; } if (features_.empty()) { valid_layer_ = false; } if (use_tile_extent) { params_["vector_layer_extent"] = static_cast(tile_size_); } } tile_datasource_pbf::~tile_datasource_pbf() {} datasource::datasource_t tile_datasource_pbf::type() const { return type_; } featureset_ptr tile_datasource_pbf::features(query const& q) const { if (!valid_layer_) { // From spec: // When a Vector Tile consumer encounters a Vector Tile layer with an unknown version, // it MAY make a best-effort attempt to interpret the layer, or it MAY skip the layer. // In either case it SHOULD continue to process subsequent layers in the Vector Tile. // Therefore if version is invalid we will just return pointer return featureset_ptr(); } mapnik::filter_in_box filter(q.get_bbox()); return std::make_shared > (filter, get_tile_extent(), q.get_unbuffered_bbox(), q.property_names(), features_, tile_x_, tile_y_, scale_, layer_keys_, layer_values_, version_); } featureset_ptr tile_datasource_pbf::features_at_point(coord2d const& pt, double tol) const { if (!valid_layer_) { // From spec: // When a Vector Tile consumer encounters a Vector Tile layer with an unknown version, // it MAY make a best-effort attempt to interpret the layer, or it MAY skip the layer. // In either case it SHOULD continue to process subsequent layers in the Vector Tile. // Therefore if version is invalid we will just return pointer return featureset_ptr(); } mapnik::filter_at_point filter(pt,tol); std::set names; for (auto const& key : layer_keys_) { names.insert(key); } return std::make_shared > (filter, get_tile_extent(), get_tile_extent(), names, features_, tile_x_, tile_y_, scale_, layer_keys_, layer_values_, version_); } void tile_datasource_pbf::set_envelope(box2d const& bbox) { extent_initialized_ = true; extent_ = bbox; } box2d tile_datasource_pbf::get_tile_extent() const { return tile_mercator_bbox(x_, y_, z_); } box2d tile_datasource_pbf::envelope() const { if (!extent_initialized_) { extent_ = get_tile_extent(); extent_initialized_ = true; } return extent_; } boost::optional tile_datasource_pbf::get_geometry_type() const { return mapnik::datasource_geometry_t::Collection; } layer_descriptor tile_datasource_pbf::get_descriptor() const { if (!attributes_added_) { for (auto const& key : layer_keys_) { // Object type here because we don't know the precise value until features are unpacked desc_.add_descriptor(attribute_descriptor(key, Object)); } attributes_added_ = true; } return desc_; } } // end ns vector_tile_impl } // end ns mapnik mapnik-vector-tile-1.6.1/src/vector_tile_douglas_peucker.hpp000066400000000000000000000275421324304754200243220ustar00rootroot00000000000000#pragma once // Some concepts and code layout borrowed from boost geometry // so boost license is included for this header. // Boost.Geometry (aka GGL, Generic Geometry Library) // Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands. // Copyright (c) 2008-2015 Bruno Lalande, Paris, France. // Copyright (c) 2009-2015 Mateusz Loskot, London, UK. // Parts of Boost.Geometry are redesigned from Geodan's Geographic Library // (geolib/GGL), copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. // Boost Software License - Version 1.0 - August 17th, 2003 // // Permission is hereby granted, free of charge, to any person or organization // obtaining a copy of the software and accompanying documentation covered by // this license (the "Software") to use, reproduce, display, distribute, // execute, and transmit the Software, and to prepare derivative works of the // Software, and to permit third-parties to whom the Software is furnished to // do so, all subject to the following: // // The copyright notices in the Software and this entire statement, including // the above license grant, this restriction and the following disclaimer, // must be included in all copies of the Software, in whole or in part, and // all derivative works of the Software, unless such copies or derivative // works are solely in the form of machine-executable object code generated by // a source language processor. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT // SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE // FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. #include // std #include #include #ifdef SSE_MATH // simd #include #include #endif namespace mapnik { namespace vector_tile_impl { namespace detail { template struct douglas_peucker_point { mapbox::geometry::point const& p; bool included; inline douglas_peucker_point(mapbox::geometry::point const& ap) : p(ap) , included(false) {} inline douglas_peucker_point operator=(douglas_peucker_point const& ) { return douglas_peucker_point(*this); } }; template inline void consider(Range const& vec, std::vector & included, std::size_t begin_idx, std::size_t last_idx, double max_dist) { std::size_t size = last_idx - begin_idx + 1; // size must be at least 3 // because we want to consider a candidate point in between if (size <= 2) { return; } // Find most far point, compare to the current segment double md = -1.0; // any value < 0 std::size_t candidate = begin_idx + 1; /* Algorithm [p: (px,py), p1: (x1,y1), p2: (x2,y2)] VECTOR v(x2 - x1, y2 - y1) VECTOR w(px - x1, py - y1) c1 = w . v c2 = v . v b = c1 / c2 RETURN POINT(x1 + b * vx, y1 + b * vy) */ auto const& last = vec[last_idx]; auto const& begin = vec[begin_idx]; double const v_x = last.x - begin.x; double const v_y = last.y - begin.y; double const c2 = v_x * v_x + v_y * v_y; std::size_t i = begin_idx + 1; #ifdef SSE_MATH if (size > 4 && size < std::numeric_limits::max()) { __m128 begin_x_4 = _mm_set1_ps(begin.x); __m128 begin_y_4 = _mm_set1_ps(begin.y); __m128 last_x_4 = _mm_set1_ps(last.x); __m128 last_y_4 = _mm_set1_ps(last.y); __m128 v_x_4 = _mm_set1_ps(v_x); __m128 v_y_4 = _mm_set1_ps(v_y); __m128 c2_4 = _mm_set1_ps(c2); __m128 zero_4 = _mm_set1_ps(0.0); __m128 true_4 = _mm_castsi128_ps(_mm_set1_epi32(std::numeric_limits::max())); __m128 md_4 = _mm_set1_ps(md); __m128 md_idx = _mm_castsi128_ps(_mm_set1_epi32(i)); for (; i + 3 < last_idx; i += 4) { // Setup loop values __m128 it_x_4 = _mm_set_ps(vec[i+3].x, vec[i+2].x, vec[i+1].x, vec[i].x); __m128 it_y_4 = _mm_set_ps(vec[i+3].y, vec[i+2].y, vec[i+1].y, vec[i].y); __m128 it_idx = _mm_castsi128_ps(_mm_set_epi32(i+3, i+2, i+1, i)); // Calculate c1 __m128 w_x_4 = _mm_sub_ps(it_x_4, begin_x_4); __m128 w_y_4 = _mm_sub_ps(it_y_4, begin_y_4); __m128 u_x_4 = _mm_sub_ps(it_x_4, last_x_4); __m128 u_y_4 = _mm_sub_ps(it_y_4, last_y_4); __m128 c1_4 = _mm_add_ps(_mm_mul_ps(w_x_4, v_x_4), _mm_mul_ps(w_y_4, v_y_4)); // Calculate two optional distance results __m128 dist_1 = _mm_add_ps(_mm_mul_ps(w_x_4, w_x_4), _mm_mul_ps(w_y_4, w_y_4)); __m128 dist_2 = _mm_add_ps(_mm_mul_ps(u_x_4, u_x_4), _mm_mul_ps(u_y_4, u_y_4)); __m128 bool_dist_1 = _mm_cmple_ps(c1_4, zero_4); __m128 bool_dist_2 = _mm_cmple_ps(c2_4, c1_4); // Calculate the default distance solution now __m128 b_4 = _mm_div_ps(c1_4, c2_4); __m128 dx_4 = _mm_sub_ps(w_x_4, _mm_mul_ps(b_4, v_x_4)); __m128 dy_4 = _mm_sub_ps(w_y_4, _mm_mul_ps(b_4, v_y_4)); __m128 dist_3 = _mm_add_ps(_mm_mul_ps(dx_4, dx_4), _mm_mul_ps(dy_4, dy_4)); __m128 dist = _mm_and_ps(dist_1, bool_dist_1); dist = _mm_or_ps(dist, _mm_and_ps(_mm_and_ps(_mm_andnot_ps(bool_dist_1, true_4), bool_dist_2), dist_2)); dist = _mm_or_ps(dist, _mm_and_ps(_mm_andnot_ps(_mm_or_ps(bool_dist_1, bool_dist_2), true_4), dist_3)); __m128 bool_md = _mm_cmplt_ps(md_4, dist); md_4 = _mm_or_ps(_mm_andnot_ps(bool_md, md_4), _mm_and_ps(bool_md, dist)); md_idx = _mm_or_ps(_mm_andnot_ps(bool_md, md_idx), _mm_and_ps(bool_md, it_idx)); } float md_out [4]; std::uint32_t md_idx_out [4]; _mm_store_ps(md_out, md_4); _mm_store_ps(reinterpret_cast(md_idx_out), md_idx); md = md_out[0]; candidate = md_idx_out[0]; for (std::size_t j = 1; j < 4; ++j) { if (md < md_out[j]) { md = md_out[j]; candidate = md_idx_out[j]; } else if (md == md_out[j] && md_idx_out[j] < candidate) { candidate = md_idx_out[j]; } } } else if (size > 2) { __m128d begin_x_2 = _mm_set1_pd(begin.x); __m128d begin_y_2 = _mm_set1_pd(begin.y); __m128d last_x_2 = _mm_set1_pd(last.x); __m128d last_y_2 = _mm_set1_pd(last.y); __m128d v_x_2 = _mm_set1_pd(v_x); __m128d v_y_2 = _mm_set1_pd(v_y); __m128d c2_2 = _mm_set1_pd(c2); __m128d zero_2 = _mm_set1_pd(0.0); __m128d true_2 = _mm_castsi128_pd(_mm_set1_epi64(reinterpret_cast<__m64>(std::numeric_limits::max()))); __m128d md_2 = _mm_set1_pd(md); __m128d md_idx = _mm_castsi128_pd(_mm_set1_epi64(reinterpret_cast<__m64>(i))); for (; i + 1 < last_idx; i += 2) { // Setup loop values __m128d it_x_2 = _mm_set_pd(vec[i+1].x, vec[i].x); __m128d it_y_2 = _mm_set_pd(vec[i+1].y, vec[i].y); __m128d it_idx = _mm_castsi128_pd(_mm_set_epi64(reinterpret_cast<__m64>(i+1), reinterpret_cast<__m64>(i))); // Calculate c1 __m128d w_x_2 = _mm_sub_pd(it_x_2, begin_x_2); __m128d w_y_2 = _mm_sub_pd(it_y_2, begin_y_2); __m128d u_x_2 = _mm_sub_pd(it_x_2, last_x_2); __m128d u_y_2 = _mm_sub_pd(it_y_2, last_y_2); __m128d c1_2 = _mm_add_pd(_mm_mul_pd(w_x_2, v_x_2), _mm_mul_pd(w_y_2, v_y_2)); // Calculate two optional distance results __m128d dist_1 = _mm_add_pd(_mm_mul_pd(w_x_2, w_x_2), _mm_mul_pd(w_y_2, w_y_2)); __m128d dist_2 = _mm_add_pd(_mm_mul_pd(u_x_2, u_x_2), _mm_mul_pd(u_y_2, u_y_2)); __m128d bool_dist_1 = _mm_cmple_pd(c1_2, zero_2); __m128d bool_dist_2 = _mm_cmple_pd(c2_2, c1_2); // Calculate the default distance solution now __m128d b_2 = _mm_div_pd(c1_2, c2_2); __m128d dx_2 = _mm_sub_pd(w_x_2, _mm_mul_pd(b_2, v_x_2)); __m128d dy_2 = _mm_sub_pd(w_y_2, _mm_mul_pd(b_2, v_y_2)); __m128d dist_3 = _mm_add_pd(_mm_mul_pd(dx_2, dx_2), _mm_mul_pd(dy_2, dy_2)); __m128d dist = _mm_and_pd(dist_1, bool_dist_1); dist = _mm_or_pd(dist, _mm_and_pd(_mm_and_pd(_mm_andnot_pd(bool_dist_1, true_2), bool_dist_2), dist_2)); dist = _mm_or_pd(dist, _mm_and_pd(_mm_andnot_pd(_mm_or_pd(bool_dist_1, bool_dist_2), true_2), dist_3)); __m128d bool_md = _mm_cmplt_pd(md_2, dist); md_2 = _mm_or_pd(_mm_andnot_pd(bool_md, md_2), _mm_and_pd(bool_md, dist)); md_idx = _mm_or_pd(_mm_andnot_pd(bool_md, md_idx), _mm_and_pd(bool_md, it_idx)); } double md_out [2]; std::size_t md_idx_out [2]; _mm_store_pd(md_out, md_2); _mm_store_pd(reinterpret_cast(md_idx_out), md_idx); md = md_out[0]; candidate = md_idx_out[0]; if (md < md_out[1]) { md = md_out[1]; candidate = md_idx_out[1]; } else if (md == md_out[1] && md_idx_out[1] < candidate) { candidate = md_idx_out[1]; } } #endif for (; i < last_idx; ++i) { auto const& it = vec[i]; double const w_x = it.x - begin.x; double const w_y = it.y - begin.y; double const c1 = w_x * v_x + w_y * v_y; double dist; if (c1 <= 0) // calc_type() should be 0 of the proper calc type format { dist = w_x * w_x + w_y * w_y; } else if (c2 <= c1) { double const dx = it.x - last.x; double const dy = it.y - last.y; dist = dx * dx + dy * dy; } else { // See above, c1 > 0 AND c2 > c1 so: c2 != 0 double const b = c1 / c2; double const dx = w_x - b * v_x; double const dy = w_y - b * v_y; dist = dx * dx + dy * dy; } if (md < dist) { md = dist; candidate = i; } } // If a point is found, set the include flag // and handle segments in between recursively if (max_dist < md) { included[candidate] = true; consider(vec, included, begin_idx, candidate, max_dist); consider(vec, included, candidate, last_idx, max_dist); } } } // end ns detail template inline void douglas_peucker(Range const& range, OutputIterator out, double max_distance) { std::vector included(range.size()); // Include first and last point of line, // they are always part of the line included.front() = true; included.back() = true; // We will compare to squared of distance so we don't have to do a sqrt double const max_sqrd = max_distance * max_distance; detail::consider(range, included, 0, range.size() - 1, max_sqrd); // Copy included elements to the output auto data = std::begin(range); auto end_data = std::end(range); auto inc = included.begin(); for (; data != end_data; ++data) { if (*inc) { // copy-coordinates does not work because OutputIterator // does not model Point (??) //geometry::convert(it->p, *out); *out++ = *data; } ++inc; } } } // end ns vector_tile_impl } // end ns mapnik mapnik-vector-tile-1.6.1/src/vector_tile_featureset_pbf.cpp000066400000000000000000000004411324304754200241240ustar00rootroot00000000000000#include "vector_tile_featureset_pbf.hpp" #include "vector_tile_featureset_pbf.ipp" #include template class mapnik::vector_tile_impl::tile_featureset_pbf; template class mapnik::vector_tile_impl::tile_featureset_pbf; mapnik-vector-tile-1.6.1/src/vector_tile_featureset_pbf.hpp000066400000000000000000000035151324304754200241360ustar00rootroot00000000000000#pragma once // protozero #include // mapnik #include #include #include #include #include #include // std #include namespace mapnik { namespace vector_tile_impl { using pbf_attr_value_type = mapnik::util::variant; using layer_pbf_attr_type = std::vector; template class tile_featureset_pbf : public Featureset { public: tile_featureset_pbf(Filter const& filter, mapnik::box2d const& tile_extent, mapnik::box2d const& unbuffered_query, std::set const& attribute_names, std::vector const& features, double tile_x, double tile_y, double scale, std::vector const& layer_keys, layer_pbf_attr_type const& layer_values, unsigned version); virtual ~tile_featureset_pbf() {} feature_ptr next(); private: Filter filter_; mapnik::box2d tile_extent_; mapnik::box2d unbuffered_query_; std::vector const& features_; std::vector const& layer_keys_; layer_pbf_attr_type const& layer_values_; std::size_t num_keys_; std::size_t num_values_; double tile_x_; double tile_y_; double scale_; unsigned itr_; unsigned version_; mapnik::transcoder tr_; mapnik::context_ptr ctx_; }; } // end ns vector_tile_impl } // end ns mapnik #if !defined(MAPNIK_VECTOR_TILE_LIBRARY) #include "vector_tile_featureset_pbf.ipp" #endif mapnik-vector-tile-1.6.1/src/vector_tile_featureset_pbf.ipp000066400000000000000000000323631324304754200241420ustar00rootroot00000000000000// mapnik-vector-tile #include "vector_tile_geometry_decoder.hpp" // mapnik #include #include #include #include #include #include #include #include #if defined(DEBUG) #include #endif // protozero #include namespace mapnik { namespace vector_tile_impl { template tile_featureset_pbf::tile_featureset_pbf(Filter const& filter, mapnik::box2d const& tile_extent, mapnik::box2d const& unbuffered_query, std::set const& attribute_names, std::vector const& features, double tile_x, double tile_y, double scale, std::vector const& layer_keys, layer_pbf_attr_type const& layer_values, unsigned version) : filter_(filter), tile_extent_(tile_extent), unbuffered_query_(unbuffered_query), features_(features), layer_keys_(layer_keys), layer_values_(layer_values), num_keys_(layer_keys_.size()), num_values_(layer_values_.size()), tile_x_(tile_x), tile_y_(tile_y), scale_(scale), itr_(0), version_(version), tr_("utf-8"), ctx_(std::make_shared()) { std::set::const_iterator pos = attribute_names.begin(); std::set::const_iterator end = attribute_names.end(); for ( ;pos !=end; ++pos) { for (auto const& key : layer_keys_) { if (key == *pos) { ctx_->push(*pos); break; } } } } struct value_visitor { mapnik::transcoder & tr_; mapnik::feature_ptr & feature_; std::string const& name_; value_visitor(mapnik::transcoder & tr, mapnik::feature_ptr & feature, std::string const& name) : tr_(tr), feature_(feature), name_(name) {} void operator() (std::string const& val) { feature_->put(name_, tr_.transcode(val.data(), val.length())); } void operator() (bool const& val) { feature_->put(name_, static_cast(val)); } void operator() (int64_t const& val) { feature_->put(name_, static_cast(val)); } void operator() (uint64_t const& val) { feature_->put(name_, static_cast(val)); } void operator() (double const& val) { feature_->put(name_, static_cast(val)); } void operator() (float const& val) { feature_->put(name_, static_cast(val)); } }; template feature_ptr tile_featureset_pbf::next() { while ( itr_ < features_.size() ) { protozero::pbf_reader f = features_.at(itr_); // TODO: auto-increment feature id counter here mapnik::feature_ptr feature = mapnik::feature_factory::create(ctx_,itr_); ++itr_; int32_t geometry_type = 0; // vector_tile::Tile_GeomType_UNKNOWN bool has_geometry = false; bool has_geometry_type = false; GeometryPBF::pbf_itr geom_itr; bool has_raster = false; std::unique_ptr reader; while (f.next()) { switch(f.tag()) { case 1: feature->set_id(f.get_uint64()); break; case 2: { auto tag_iterator = f.get_packed_uint32(); for (auto _i = tag_iterator.begin(); _i != tag_iterator.end();) { std::size_t key_name = *(_i++); if (_i == tag_iterator.end()) { throw std::runtime_error("Vector Tile has a feature with an odd number of tags, therefore the tile is invalid."); } std::size_t key_value = *(_i++); if (key_name < num_keys_ && key_value < num_values_) { std::string const& name = layer_keys_.at(key_name); if (feature->has_key(name)) { pbf_attr_value_type val = layer_values_.at(key_value); value_visitor vv(tr_, feature, name); mapnik::util::apply_visitor(vv, val); } } else if (version_ == 2) { throw std::runtime_error("Vector Tile has a feature with repeated attributes with an invalid key or value as it does not appear in the layer. This is invalid according to the Mapbox Vector Tile Specification Version 2"); } } } break; case 3: has_geometry_type = true; geometry_type = f.get_enum(); switch (geometry_type) { case 1: //vector_tile::Tile_GeomType_POINT case 2: // vector_tile::Tile_GeomType_LINESTRING case 3: // vector_tile::Tile_GeomType_POLYGON break; default: // vector_tile::Tile_GeomType_UNKNOWN or any other value throw std::runtime_error("Vector tile has an unknown geometry type " + std::to_string(geometry_type) + " in feature"); } break; case 5: { if (has_geometry) { throw std::runtime_error("Vector Tile has a feature with a geometry and a raster, it must have only one of them"); } if (has_raster) { throw std::runtime_error("Vector Tile has a feature with multiple raster fields, it must have only one of them"); } has_raster = true; auto image_buffer = f.get_view(); reader = std::unique_ptr(mapnik::get_image_reader(image_buffer.data(), image_buffer.size())); } break; case 4: if (has_raster) { throw std::runtime_error("Vector Tile has a feature with a geometry and a raster, it must have only one of them"); } if (has_geometry) { throw std::runtime_error("Vector Tile has a feature with multiple geometry fields, it must have only one of them"); } has_geometry = true; geom_itr = f.get_packed_uint32(); break; default: throw std::runtime_error("Vector Tile contains unknown field type " + std::to_string(f.tag()) +" in feature"); } } if (has_raster) { if (reader.get()) { int image_width = reader->width(); int image_height = reader->height(); if (image_width > 0 && image_height > 0) { mapnik::view_transform t(image_width, image_height, tile_extent_, 0, 0); box2d intersect = tile_extent_.intersect(unbuffered_query_); box2d ext = t.forward(intersect); if (ext.width() > std::numeric_limits::epsilon() * 5.0 && ext.height() > std::numeric_limits::epsilon() * 5.0) { // select minimum raster containing whole ext int x_off = static_cast(std::floor(ext.minx())); int y_off = static_cast(std::floor(ext.miny())); int end_x = static_cast(std::ceil(ext.maxx())); int end_y = static_cast(std::ceil(ext.maxy())); // clip to available data if (x_off >= image_width) x_off = image_width - 1; if (y_off >= image_height) y_off = image_height - 1; if (x_off < 0) x_off = 0; if (y_off < 0) y_off = 0; if (end_x > image_width) end_x = image_width; if (end_y > image_height) end_y = image_height; int width = end_x - x_off; int height = end_y - y_off; if (width < 1) width = 1; if (height < 1) height = 1; box2d feature_raster_extent(x_off, y_off, x_off + width, y_off + height); feature_raster_extent = t.backward(feature_raster_extent); double filter_factor = 1.0; mapnik::image_any data = reader->read(x_off, y_off, width, height); mapnik::raster_ptr raster = std::make_shared(feature_raster_extent, intersect, std::move(data), filter_factor ); feature->set_raster(raster); } } } return feature; } else if (has_geometry) { if (!has_geometry_type) { if (version_ == 1) { continue; } else { throw std::runtime_error("Vector Tile has a feature that does not define the required geometry type."); } } if (version_ != 1) { mapnik::vector_tile_impl::GeometryPBF geoms(geom_itr); mapnik::geometry::geometry geom = decode_geometry(geoms, geometry_type, version_, tile_x_, tile_y_, scale_, -1.0 * scale_, filter_.box_); if (geom.is()) { continue; } #if defined(DEBUG) mapnik::box2d envelope = mapnik::geometry::envelope(geom); if (!filter_.pass(envelope)) { MAPNIK_LOG_ERROR(tile_featureset_pbf) << "tile_featureset_pbf: filter:pass should not get here"; continue; } #endif feature->set_geometry(std::move(geom)); return feature; } else { try { mapnik::vector_tile_impl::GeometryPBF geoms(geom_itr); mapnik::geometry::geometry geom = decode_geometry(geoms, geometry_type, version_, tile_x_, tile_y_, scale_, -1.0 * scale_, filter_.box_); if (geom.is()) { continue; } #if defined(DEBUG) mapnik::box2d envelope = mapnik::geometry::envelope(geom); if (!filter_.pass(envelope)) { MAPNIK_LOG_ERROR(tile_featureset_pbf) << "tile_featureset_pbf: filter:pass should not get here"; continue; } #endif feature->set_geometry(std::move(geom)); } catch (std::exception const&) { // For v1 any invalid geometry errors lets just skip the feature continue; } return feature; } } else if (version_ != 1) { throw std::runtime_error("Vector Tile does not have a geometry or raster"); } } return feature_ptr(); } } // end ns vector_tile_impl } // end ns mapnik mapnik-vector-tile-1.6.1/src/vector_tile_geometry_clipper.hpp000066400000000000000000000316021324304754200245070ustar00rootroot00000000000000#pragma once // mapnik-vector-tile #include "vector_tile_config.hpp" // mapnik #include // mapbox #include #include #include // boost #pragma GCC diagnostic push #include #include #include #include #pragma GCC diagnostic pop namespace mapnik { namespace vector_tile_impl { namespace detail { template double area(mapbox::geometry::linear_ring const& poly) { std::size_t size = poly.size(); if (size < 3) { return 0.0; } double a = 0.0; auto itr = poly.begin(); auto itr_prev = poly.end(); --itr_prev; a += static_cast(itr_prev->x + itr->x) * static_cast(itr_prev->y - itr->y); ++itr; itr_prev = poly.begin(); for (; itr != poly.end(); ++itr, ++itr_prev) { a += static_cast(itr_prev->x + itr->x) * static_cast(itr_prev->y - itr->y); } return -a * 0.5; } inline mapbox::geometry::wagyu::fill_type get_wagyu_fill_type(polygon_fill_type type) { switch (type) { case polygon_fill_type_max: case even_odd_fill: return mapbox::geometry::wagyu::fill_type_even_odd; case non_zero_fill: return mapbox::geometry::wagyu::fill_type_non_zero; case positive_fill: return mapbox::geometry::wagyu::fill_type_positive; case negative_fill: return mapbox::geometry::wagyu::fill_type_negative; } // Added return here to make gcc happy return mapbox::geometry::wagyu::fill_type_even_odd; } } // end ns detail template class geometry_clipper { private: NextProcessor & next_; mapnik::box2d const& tile_clipping_extent_; double area_threshold_; bool strictly_simple_; bool multi_polygon_union_; polygon_fill_type fill_type_; bool process_all_rings_; public: geometry_clipper(mapnik::box2d const& tile_clipping_extent, double area_threshold, bool strictly_simple, bool multi_polygon_union, polygon_fill_type fill_type, bool process_all_rings, NextProcessor & next) : next_(next), tile_clipping_extent_(tile_clipping_extent), area_threshold_(area_threshold), strictly_simple_(strictly_simple), multi_polygon_union_(multi_polygon_union), fill_type_(fill_type), process_all_rings_(process_all_rings) { } void operator() (mapbox::geometry::point & geom) { next_(geom); } void operator() (mapbox::geometry::multi_point & geom) { // Here we remove repeated points from multi_point auto last = std::unique(geom.begin(), geom.end()); geom.erase(last, geom.end()); next_(geom); } void operator() (mapbox::geometry::geometry_collection & geom) { for (auto & g : geom) { mapbox::util::apply_visitor((*this), g); } } void operator() (mapbox::geometry::line_string & geom) { boost::geometry::unique(geom); if (geom.size() < 2) { return; } mapbox::geometry::multi_line_string result; mapbox::geometry::linear_ring clip_box; clip_box.reserve(5); clip_box.emplace_back(tile_clipping_extent_.minx(),tile_clipping_extent_.miny()); clip_box.emplace_back(tile_clipping_extent_.maxx(),tile_clipping_extent_.miny()); clip_box.emplace_back(tile_clipping_extent_.maxx(),tile_clipping_extent_.maxy()); clip_box.emplace_back(tile_clipping_extent_.minx(),tile_clipping_extent_.maxy()); clip_box.emplace_back(tile_clipping_extent_.minx(),tile_clipping_extent_.miny()); boost::geometry::intersection(clip_box, geom, result); if (result.empty()) { return; } next_(result); } void operator() (mapbox::geometry::multi_line_string & geom) { if (geom.empty()) { return; } mapbox::geometry::linear_ring clip_box; clip_box.reserve(5); clip_box.emplace_back(tile_clipping_extent_.minx(),tile_clipping_extent_.miny()); clip_box.emplace_back(tile_clipping_extent_.maxx(),tile_clipping_extent_.miny()); clip_box.emplace_back(tile_clipping_extent_.maxx(),tile_clipping_extent_.maxy()); clip_box.emplace_back(tile_clipping_extent_.minx(),tile_clipping_extent_.maxy()); clip_box.emplace_back(tile_clipping_extent_.minx(),tile_clipping_extent_.miny()); boost::geometry::unique(geom); mapbox::geometry::multi_line_string results; for (auto const& line : geom) { if (line.size() < 2) { continue; } boost::geometry::intersection(clip_box, line, results); } if (results.empty()) { return; } next_(results); } void operator() (mapbox::geometry::polygon & geom) { if (geom.empty() || ((geom.front().size() < 3) && !process_all_rings_)) { return; } mapbox::geometry::wagyu::wagyu clipper; mapbox::geometry::point min_pt(tile_clipping_extent_.minx(), tile_clipping_extent_.miny()); mapbox::geometry::point max_pt(tile_clipping_extent_.maxx(), tile_clipping_extent_.maxy()); mapbox::geometry::box b(min_pt, max_pt); bool first = true; for (auto & ring : geom) { if (ring.size() < 3) { if (first) { if (process_all_rings_) { first = false; } else { return; } } continue; } double area = detail::area(ring); if (first) { first = false; if ((std::abs(area) < area_threshold_) && !process_all_rings_) { return; } if (area < 0) { std::reverse(ring.begin(), ring.end()); } auto new_ring = mapbox::geometry::wagyu::quick_clip::quick_lr_clip(ring, b); if (new_ring.empty()) { if (process_all_rings_) { continue; } return; } clipper.add_ring(new_ring); } else { if (std::abs(area) < area_threshold_) { continue; } if (area > 0) { std::reverse(ring.begin(), ring.end()); } auto new_ring = mapbox::geometry::wagyu::quick_clip::quick_lr_clip(ring, b); if (new_ring.empty()) { continue; } clipper.add_ring(new_ring); } } mapbox::geometry::multi_polygon mp; clipper.execute(mapbox::geometry::wagyu::clip_type_union, mp, detail::get_wagyu_fill_type(fill_type_), mapbox::geometry::wagyu::fill_type_even_odd); if (mp.empty()) { return; } next_(mp); } void operator() (mapbox::geometry::multi_polygon & geom) { if (geom.empty()) { return; } mapbox::geometry::point min_pt(tile_clipping_extent_.minx(), tile_clipping_extent_.miny()); mapbox::geometry::point max_pt(tile_clipping_extent_.maxx(), tile_clipping_extent_.maxy()); mapbox::geometry::box b(min_pt, max_pt); mapbox::geometry::multi_polygon mp; if (multi_polygon_union_) { mapbox::geometry::wagyu::wagyu clipper; for (auto & poly : geom) { bool first = true; for (auto & ring : poly) { if (ring.size() < 3) { if (first) { first = false; if (!process_all_rings_) { break; } } continue; } double area = detail::area(ring); if (first) { first = false; if ((std::abs(area) < area_threshold_) && !process_all_rings_) { break; } if (area < 0) { std::reverse(ring.begin(), ring.end()); } auto new_ring = mapbox::geometry::wagyu::quick_clip::quick_lr_clip(ring, b); if (new_ring.empty()) { if (process_all_rings_) { continue; } break; } clipper.add_ring(new_ring); } else { if (std::abs(area) < area_threshold_) { continue; } if (area > 0) { std::reverse(ring.begin(), ring.end()); } auto new_ring = mapbox::geometry::wagyu::quick_clip::quick_lr_clip(ring, b); if (new_ring.empty()) { continue; } clipper.add_ring(new_ring); } } } clipper.execute(mapbox::geometry::wagyu::clip_type_union, mp, detail::get_wagyu_fill_type(fill_type_), mapbox::geometry::wagyu::fill_type_even_odd); } else { for (auto & poly : geom) { mapbox::geometry::wagyu::wagyu clipper; mapbox::geometry::multi_polygon tmp_mp; bool first = true; for (auto & ring : poly) { if (ring.size() < 3) { if (first) { first = false; if (!process_all_rings_) { break; } } continue; } double area = detail::area(ring); if (first) { first = false; if ((std::abs(area) < area_threshold_) && !process_all_rings_) { break; } if (area < 0) { std::reverse(ring.begin(), ring.end()); } auto new_ring = mapbox::geometry::wagyu::quick_clip::quick_lr_clip(ring, b); if (new_ring.empty()) { if (process_all_rings_) { continue; } break; } clipper.add_ring(new_ring); } else { if (std::abs(area) < area_threshold_) { continue; } if (area > 0) { std::reverse(ring.begin(), ring.end()); } auto new_ring = mapbox::geometry::wagyu::quick_clip::quick_lr_clip(ring, b); if (new_ring.empty()) { continue; } clipper.add_ring(new_ring); } } clipper.execute(mapbox::geometry::wagyu::clip_type_union, tmp_mp, detail::get_wagyu_fill_type(fill_type_), mapbox::geometry::wagyu::fill_type_even_odd); mp.insert(mp.end(), tmp_mp.begin(), tmp_mp.end()); } } if (mp.empty()) { return; } next_(mp); } }; } // end ns vector_tile_impl } // end ns mapnik mapnik-vector-tile-1.6.1/src/vector_tile_geometry_decoder.cpp000066400000000000000000000057121324304754200244540ustar00rootroot00000000000000#include "vector_tile_geometry_decoder.hpp" #include "vector_tile_geometry_decoder.ipp" namespace mapnik { namespace vector_tile_impl { // decode geometry template mapnik::geometry::geometry decode_geometry(GeometryPBF & paths, int32_t geom_type, unsigned version, double tile_x, double tile_y, double scale_x, double scale_y); template mapnik::geometry::geometry decode_geometry(GeometryPBF & paths, int32_t geom_type, unsigned version, std::int64_t tile_x, std::int64_t tile_y, double scale_x, double scale_y); template mapnik::geometry::geometry decode_geometry(GeometryPBF & paths, int32_t geom_type, unsigned version, double tile_x, double tile_y, double scale_x, double scale_y, mapnik::box2d const& bbox); template mapnik::geometry::geometry decode_geometry(GeometryPBF & paths, int32_t geom_type, unsigned version, std::int64_t tile_x, std::int64_t tile_y, double scale_x, double scale_y, mapnik::box2d const& bbox); } // end ns vector_tile_impl } // end ns mapnik mapnik-vector-tile-1.6.1/src/vector_tile_geometry_decoder.hpp000066400000000000000000000057661324304754200244720ustar00rootroot00000000000000#pragma once // mapnik-vector-tile #include "vector_tile_config.hpp" //protozero #include //mapnik #include #include #if defined(DEBUG) #include #endif //std #include #include #include namespace mapnik { namespace vector_tile_impl { // NOTE: this object is for one-time use. Once you've progressed to the end // by calling next(), to re-iterate, you must construct a new object class GeometryPBF { public: using value_type = std::int64_t; using iterator_type = protozero::pbf_reader::const_uint32_iterator; using pbf_itr = protozero::iterator_range; explicit GeometryPBF(pbf_itr const& geo_iterator); enum command : uint8_t { end = 0, move_to = 1, line_to = 2, close = 7 }; uint32_t get_length() const { return length; } command point_next(value_type & rx, value_type & ry); command line_next(value_type & rx, value_type & ry, bool skip_lineto_zero); command ring_next(value_type & rx, value_type & ry, bool skip_lineto_zero); private: iterator_type geo_itr_; iterator_type geo_end_itr_; value_type x, y; value_type ox, oy; uint32_t length; uint8_t cmd; #if defined(DEBUG) public: bool already_had_error; #endif }; template MAPNIK_VECTOR_INLINE mapnik::geometry::geometry decode_geometry(GeometryPBF & paths, std::int32_t geom_type, unsigned version, value_type tile_x, value_type tile_y, double scale_x, double scale_y, mapnik::box2d const& bbox); template MAPNIK_VECTOR_INLINE mapnik::geometry::geometry decode_geometry(GeometryPBF & paths, std::int32_t geom_type, unsigned version, value_type tile_x, value_type tile_y, double scale_x, double scale_y); } // end ns vector_tile_impl } // end ns mapnik #if !defined(MAPNIK_VECTOR_TILE_LIBRARY) #include "vector_tile_geometry_decoder.ipp" #endif mapnik-vector-tile-1.6.1/src/vector_tile_geometry_decoder.ipp000066400000000000000000000762001324304754200244620ustar00rootroot00000000000000//protozero #include //mapnik #include #include #if defined(DEBUG) #include #endif //std #include #include #include namespace mapnik { namespace vector_tile_impl { namespace detail { template inline double calculate_segment_area(value_type const x0, value_type const y0, value_type const x1, value_type const y1) { return (static_cast(x0) * static_cast(y1)) - (static_cast(y0) * static_cast(x1)); } inline bool area_is_clockwise(double area) { return (area < 0.0); } template inline bool scaling_reversed_orientation(value_type const scale_x_, value_type const scale_y_) { return (scale_x_ * scale_y_) < 0; } template inline void move_cursor(value_type & x, value_type & y, std::int32_t dx, std::int32_t dy) { x += static_cast(dx); y += static_cast(dy); } template inline value_type get_point_value(value_type const val, double const scale_val, double const tile_loc) { return (tile_loc + static_cast(std::round(static_cast(val) / scale_val))); } template <> inline double get_point_value(double const val, double const scale_val, double const tile_loc) { return tile_loc + (val / scale_val); } constexpr std::size_t max_reserve() { // Based on int64_t geometry being 16 bytes in size and // maximum allocation size of 1 MB. return (1024 * 1024) / 16; } template void decode_point(mapnik::geometry::geometry & geom, GeometryPBF & paths, geom_value_type const tile_x, geom_value_type const tile_y, double const scale_x, double const scale_y, mapnik::box2d const& bbox) { typename GeometryPBF::command cmd; using pbf_value_type = GeometryPBF::value_type; pbf_value_type x1, y1; mapnik::geometry::multi_point mp; #if defined(DEBUG) std::uint32_t previous_len = 0; #endif // Find first moveto inside bbox and then reserve points from size of geometry. while (true) { cmd = paths.point_next(x1, y1); geom_value_type x1_ = get_point_value(x1, scale_x, tile_x); geom_value_type y1_ = get_point_value(y1, scale_y, tile_y); if (cmd == GeometryPBF::end) { geom = mapnik::geometry::geometry_empty(); return; } else if (bbox.intersects(x1_, y1_)) { #if defined(DEBUG) if (previous_len <= paths.get_length() && !paths.already_had_error) { MAPNIK_LOG_WARN(decode_point) << "warning: encountered POINT geometry that might have MOVETO commands repeated that could be fewer commands"; paths.already_had_error = true; } previous_len = paths.get_length(); #endif constexpr std::size_t max_size = max_reserve(); if (paths.get_length() + 1 < max_size) { mp.reserve(paths.get_length() + 1); } else { mp.reserve(max_size); } mp.emplace_back(x1_, y1_); break; } } while ((cmd = paths.point_next(x1, y1)) != GeometryPBF::end) { #if defined(DEBUG) if (previous_len <= paths.get_length() && !paths.already_had_error) { MAPNIK_LOG_WARN(decode_point) << "warning: encountered POINT geometry that might have MOVETO commands repeated that could be fewer commands"; paths.already_had_error = true; } previous_len = paths.get_length(); #endif // TODO: consider profiling and trying to optimize this further // when all points are within the bbox filter then the `mp.reserve` should be // perfect, but when some points are thrown out we will allocate more than needed // the "all points intersect" case I think is going to be more common/important // however worth a future look to see if the "some or few points intersect" can be optimized geom_value_type x1_ = get_point_value(x1, scale_x, tile_x); geom_value_type y1_ = get_point_value(y1, scale_y, tile_y); if (!bbox.intersects(x1_, y1_)) { continue; } mp.emplace_back(x1_, y1_); } std::size_t num_points = mp.size(); if (num_points == 0) { geom = mapnik::geometry::geometry_empty(); } else if (num_points == 1) { geom = std::move(mp[0]); } else if (num_points > 1) { // return multipoint geom = std::move(mp); } } template void decode_linestring(mapnik::geometry::geometry & geom, GeometryPBF & paths, geom_value_type const tile_x, geom_value_type const tile_y, double scale_x, double scale_y, mapnik::box2d const& bbox, unsigned version) { using pbf_value_type = GeometryPBF::value_type; typename GeometryPBF::command cmd; pbf_value_type x0, y0; pbf_value_type x1, y1; geom_value_type x0_, y0_; geom_value_type x1_, y1_; mapnik::geometry::multi_line_string multi_line; #if defined(DEBUG) std::uint32_t previous_len = 0; #endif mapnik::box2d part_env; cmd = paths.line_next(x0, y0, false); if (cmd == GeometryPBF::end) { geom = mapnik::geometry::geometry_empty(); return; } else if (cmd != GeometryPBF::move_to) { throw std::runtime_error("Vector Tile has LINESTRING type geometry where the first command is not MOVETO."); } while (true) { cmd = paths.line_next(x1, y1, true); if (cmd != GeometryPBF::line_to) { if (cmd == GeometryPBF::move_to) { if (version == 1) { // Version 1 of the spec wasn't clearly defined and therefore // we shouldn't be strict on the reading of a tile that has two // moveto commands that are repeated, lets ignore the previous moveto. x0 = x1; y0 = y1; continue; } else { throw std::runtime_error("Vector Tile has LINESTRING type geometry with repeated MOVETO commands."); } } else //cmd == GeometryPBF::end { if (version == 1) { // Version 1 of the spec wasn't clearly defined and therefore // we shouldn't be strict on the reading of a tile that has only a moveto // command. So lets just ignore this moveto command. break; } else { throw std::runtime_error("Vector Tile has LINESTRING type geometry with a MOVETO command with no LINETO following."); } } } // add fresh line multi_line.emplace_back(); auto & line = multi_line.back(); // reserve prior constexpr std::size_t max_size = max_reserve(); if (paths.get_length() + 2 < max_size) { line.reserve(paths.get_length() + 2); } else { line.reserve(max_size); } // add moveto command position x0_ = get_point_value(x0, scale_x, tile_x); y0_ = get_point_value(y0, scale_y, tile_y); line.add_coord(x0_, y0_); part_env.init(x0_, y0_, x0_, y0_); // add first lineto x1_ = get_point_value(x1, scale_x, tile_x); y1_ = get_point_value(y1, scale_y, tile_y); line.add_coord(x1_, y1_); part_env.expand_to_include(x1_, y1_); #if defined(DEBUG) previous_len = paths.get_length(); #endif while ((cmd = paths.line_next(x1, y1, true)) == GeometryPBF::line_to) { x1_ = get_point_value(x1, scale_x, tile_x); y1_ = get_point_value(y1, scale_y, tile_y); line.add_coord(x1_, y1_); part_env.expand_to_include(x1_, y1_); #if defined(DEBUG) if (previous_len <= paths.get_length() && !paths.already_had_error) { MAPNIK_LOG_WARN(decode_linestring) << "warning: encountered LINESTRING geometry that might have LINETO commands repeated that could be fewer commands"; paths.already_had_error = true; } previous_len = paths.get_length(); #endif } if (!bbox.intersects(part_env)) { // remove last linestring multi_line.pop_back(); } if (cmd == GeometryPBF::end) { break; } // else we are guaranteed it is a moveto x0 = x1; y0 = y1; } std::size_t num_lines = multi_line.size(); if (num_lines == 0) { geom = mapnik::geometry::geometry_empty(); } else if (num_lines == 1) { auto itr = std::make_move_iterator(multi_line.begin()); if (itr->size() > 1) { geom = std::move(*itr); } else { geom = mapnik::geometry::geometry_empty(); } } else if (num_lines > 1) { geom = std::move(multi_line); } } template void decode_polygon(mapnik::geometry::geometry & geom, GeometryPBF & paths, geom_value_type const tile_x, geom_value_type const tile_y, double scale_x, double scale_y, mapnik::box2d const& bbox, unsigned version) { typename GeometryPBF::command cmd; using pbf_value_type = GeometryPBF::value_type; pbf_value_type x0, y0; pbf_value_type x1, y1; pbf_value_type x2, y2; geom_value_type x0_, y0_; geom_value_type x1_, y1_; geom_value_type x2_, y2_; #if defined(DEBUG) std::uint32_t previous_len; #endif double ring_area = 0.0; bool first_ring = true; bool first_ring_is_clockwise = false; bool last_exterior_not_included = false; std::vector > rings; std::vector rings_exterior; mapnik::box2d part_env; cmd = paths.ring_next(x0, y0, false); if (cmd == GeometryPBF::end) { geom = mapnik::geometry::geometry_empty(); return; } else if (cmd != GeometryPBF::move_to) { throw std::runtime_error("Vector Tile has POLYGON type geometry where the first command is not MOVETO."); } while (true) { cmd = paths.ring_next(x1, y1, true); if (cmd != GeometryPBF::line_to) { if (cmd == GeometryPBF::close && version == 1) { // Version 1 of the specification was not clear on the command requirements for polygons // lets just to recover from this situation. cmd = paths.ring_next(x0, y0, false); if (cmd == GeometryPBF::end) { break; } else if (cmd == GeometryPBF::move_to) { continue; } else if (cmd == GeometryPBF::close) { throw std::runtime_error("Vector Tile has POLYGON type geometry where a CLOSE is followed by a CLOSE."); } else // cmd == GeometryPBF::line_to { throw std::runtime_error("Vector Tile has POLYGON type geometry where a CLOSE is followed by a LINETO."); } } else // cmd == end || cmd == move_to { throw std::runtime_error("Vector Tile has POLYGON type geometry with a MOVETO command with out at least two LINETOs and CLOSE following."); } } #if defined(DEBUG) previous_len = paths.get_length(); #endif cmd = paths.ring_next(x2, y2, true); if (cmd != GeometryPBF::line_to) { if (cmd == GeometryPBF::close && version == 1) { // Version 1 of the specification was not clear on the command requirements for polygons // lets just to recover from this situation. cmd = paths.ring_next(x0, y0, false); if (cmd == GeometryPBF::end) { break; } else if (cmd == GeometryPBF::move_to) { continue; } else if (cmd == GeometryPBF::close) { throw std::runtime_error("Vector Tile has POLYGON type geometry where a CLOSE is followed by a CLOSE."); } else // cmd == GeometryPBF::line_to { throw std::runtime_error("Vector Tile has POLYGON type geometry where a CLOSE is followed by a LINETO."); } } else // cmd == end || cmd == move_to { throw std::runtime_error("Vector Tile has POLYGON type geometry with a MOVETO command with out at least two LINETOs and CLOSE following."); } } // add new ring to start adding to rings.emplace_back(); auto & ring = rings.back(); // reserve prior constexpr std::size_t max_size = max_reserve(); if (paths.get_length() + 4 < max_size) { ring.reserve(paths.get_length() + 4); } else { ring.reserve(max_size); } // add moveto command position x0_ = get_point_value(x0, scale_x, tile_x); y0_ = get_point_value(y0, scale_y, tile_y); ring.add_coord(x0_, y0_); part_env.init(x0_, y0_, x0_, y0_); // add first lineto x1_ = get_point_value(x1, scale_x, tile_x); y1_ = get_point_value(y1, scale_y, tile_y); ring.add_coord(x1_, y1_); part_env.expand_to_include(x1_, y1_); ring_area += calculate_segment_area(x0, y0, x1, y1); // add second lineto x2_ = get_point_value(x2, scale_x, tile_x); y2_ = get_point_value(y2, scale_y, tile_y); ring.add_coord(x2_, y2_); part_env.expand_to_include(x2_, y2_); ring_area += calculate_segment_area(x1, y1, x2, y2); x1 = x2; y1 = y2; #if defined(DEBUG) if (previous_len <= paths.get_length() && !paths.already_had_error) { MAPNIK_LOG_WARN(read_rings) << "warning: encountered POLYGON geometry that might have LINETO commands repeated that could be fewer commands"; paths.already_had_error = true; } previous_len = paths.get_length(); #endif while ((cmd = paths.ring_next(x2, y2, true)) == GeometryPBF::line_to) { x2_ = get_point_value(x2, scale_x, tile_x); y2_ = get_point_value(y2, scale_y, tile_y); ring.add_coord(x2_, y2_); part_env.expand_to_include(x2_, y2_); ring_area += calculate_segment_area(x1, y1, x2, y2); x1 = x2; y1 = y2; #if defined(DEBUG) if (previous_len <= paths.get_length() && !paths.already_had_error) { MAPNIK_LOG_WARN(read_rings) << "warning: encountered POLYGON geometry that might have LINETO commands repeated that could be fewer commands"; paths.already_had_error = true; } previous_len = paths.get_length(); #endif } // Make sure we are now on a close command if (cmd != GeometryPBF::close) { throw std::runtime_error("Vector Tile has POLYGON type geometry with a ring not closed by a CLOSE command."); } if (ring.back().x != x0_ || ring.back().y != y0_) { // If the previous lineto didn't already close the polygon (WHICH IT SHOULD NOT) // close out the polygon ring. ring.add_coord(x0_, y0_); ring_area += calculate_segment_area(x1, y1, x0, y0); } if (ring.size() > 3) { if (first_ring) { first_ring_is_clockwise = area_is_clockwise(ring_area); if (version != 1 && first_ring_is_clockwise) { throw std::runtime_error("Vector Tile has POLYGON with first ring clockwise. It is not valid according to v2 of VT spec."); } first_ring = false; } bool is_exterior = (first_ring_is_clockwise == area_is_clockwise(ring_area)); if ((!is_exterior && last_exterior_not_included) || !bbox.intersects(part_env)) { // remove last linestring if (is_exterior) { last_exterior_not_included = true; } rings.pop_back(); } else { if (is_exterior) { last_exterior_not_included = false; } rings_exterior.push_back(is_exterior); } } else { rings.pop_back(); } ring_area = 0.0; cmd = paths.ring_next(x0, y0, false); if (cmd == GeometryPBF::end) { break; } else if (cmd != GeometryPBF::move_to) { if (cmd == GeometryPBF::close) { throw std::runtime_error("Vector Tile has POLYGON type geometry where a CLOSE is followed by a CLOSE."); } else // cmd == GeometryPBF::line_to { throw std::runtime_error("Vector Tile has POLYGON type geometry where a CLOSE is followed by a LINETO."); } } } if (rings.size() == 0) { geom = mapnik::geometry::geometry_empty(); return; } std::size_t i = 0; bool reverse_rings = (scaling_reversed_orientation(scale_x, scale_y) != first_ring_is_clockwise); auto rings_itr = std::make_move_iterator(rings.begin()); auto rings_end = std::make_move_iterator(rings.end()); mapnik::geometry::multi_polygon multi_poly; while (rings_itr != rings_end) { multi_poly.emplace_back(); auto & poly = multi_poly.back(); if (reverse_rings) { std::reverse(rings_itr->begin(), rings_itr->end()); } poly.set_exterior_ring(std::move(*rings_itr)); ++rings_itr; ++i; while (rings_itr != rings_end) { if (rings_exterior[i]) { break; } if (reverse_rings) { std::reverse(rings_itr->begin(), rings_itr->end()); } poly.add_hole(std::move(*rings_itr)); ++rings_itr; ++i; } } auto num_poly = multi_poly.size(); if (num_poly == 1) { auto itr = std::make_move_iterator(multi_poly.begin()); geom = std::move(*itr); } else { geom = std::move(multi_poly); } } } // end ns detail GeometryPBF::GeometryPBF(pbf_itr const& geo_iterator) : geo_itr_(geo_iterator.begin()), geo_end_itr_(geo_iterator.end()), x(0), y(0), ox(0), oy(0), length(0), cmd(move_to) { #if defined(DEBUG) already_had_error = false; #endif } typename GeometryPBF::command GeometryPBF::point_next(value_type & rx, value_type & ry) { if (length == 0) { if (geo_itr_ != geo_end_itr_) { uint32_t cmd_length = static_cast(*geo_itr_++); cmd = cmd_length & 0x7; length = cmd_length >> 3; if (cmd == move_to) { if (length == 0) { throw std::runtime_error("Vector Tile has POINT geometry with a MOVETO command that has a command count of zero"); } } else { if (cmd == line_to) { throw std::runtime_error("Vector Tile has POINT type geometry with a LINETO command."); } else if (cmd == close) { throw std::runtime_error("Vector Tile has POINT type geometry with a CLOSE command."); } else { throw std::runtime_error("Vector Tile has POINT type geometry with an unknown command."); } } } else { return end; } } --length; // It is possible for the next to lines to throw because we can not check the length // of the buffer to ensure that it is long enough. // If an exception occurs it will likely be a end_of_buffer_exception with the text: // "end of buffer exception" // While this error message is not verbose a try catch here would slow down processing. int32_t dx = protozero::decode_zigzag32(static_cast(*geo_itr_++)); int32_t dy = protozero::decode_zigzag32(static_cast(*geo_itr_++)); detail::move_cursor(x, y, dx, dy); rx = x; ry = y; return move_to; } typename GeometryPBF::command GeometryPBF::line_next(value_type & rx, value_type & ry, bool skip_lineto_zero) { if (length == 0) { if (geo_itr_ != geo_end_itr_) { uint32_t cmd_length = static_cast(*geo_itr_++); cmd = cmd_length & 0x7; length = cmd_length >> 3; if (cmd == move_to) { if (length != 1) { throw std::runtime_error("Vector Tile has LINESTRING with a MOVETO command that is given more then one pair of parameters or not enough parameters are provided"); } --length; // It is possible for the next to lines to throw because we can not check the length // of the buffer to ensure that it is long enough. // If an exception occurs it will likely be a end_of_buffer_exception with the text: // "end of buffer exception" // While this error message is not verbose a try catch here would slow down processing. int32_t dx = protozero::decode_zigzag32(static_cast(*geo_itr_++)); int32_t dy = protozero::decode_zigzag32(static_cast(*geo_itr_++)); detail::move_cursor(x, y, dx, dy); rx = x; ry = y; return move_to; } else if (cmd == line_to) { if (length == 0) { throw std::runtime_error("Vector Tile has geometry with LINETO command that is not followed by a proper number of parameters"); } } else { if (cmd == close) { throw std::runtime_error("Vector Tile has LINESTRING type geometry with a CLOSE command."); } else { throw std::runtime_error("Vector Tile has LINESTRING type geometry with an unknown command."); } } } else { return end; } } --length; // It is possible for the next to lines to throw because we can not check the length // of the buffer to ensure that it is long enough. // If an exception occurs it will likely be a end_of_buffer_exception with the text: // "end of buffer exception" // While this error message is not verbose a try catch here would slow down processing. int32_t dx = protozero::decode_zigzag32(static_cast(*geo_itr_++)); int32_t dy = protozero::decode_zigzag32(static_cast(*geo_itr_++)); if (skip_lineto_zero && dx == 0 && dy == 0) { // We are going to skip this vertex as the point doesn't move call line_next again return line_next(rx, ry, true); } detail::move_cursor(x, y, dx, dy); rx = x; ry = y; return line_to; } typename GeometryPBF::command GeometryPBF::ring_next(value_type & rx, value_type & ry, bool skip_lineto_zero) { if (length == 0) { if (geo_itr_ != geo_end_itr_) { uint32_t cmd_length = static_cast(*geo_itr_++); cmd = cmd_length & 0x7; length = cmd_length >> 3; if (cmd == move_to) { if (length != 1) { throw std::runtime_error("Vector Tile has POLYGON with a MOVETO command that is given more then one pair of parameters or not enough parameters are provided"); } --length; // It is possible for the next two lines to throw because we can not check the length // of the buffer to ensure that it is long enough. // If an exception occurs it will likely be a end_of_buffer_exception with the text: // "end of buffer exception" // While this error message is not verbose a try catch here would slow down processing. int32_t dx = protozero::decode_zigzag32(static_cast(*geo_itr_++)); int32_t dy = protozero::decode_zigzag32(static_cast(*geo_itr_++)); detail::move_cursor(x, y, dx, dy); rx = x; ry = y; ox = x; oy = y; return move_to; } else if (cmd == line_to) { if (length == 0) { throw std::runtime_error("Vector Tile has geometry with LINETO command that is not followed by a proper number of parameters"); } } else if (cmd == close) { // Just set length in case a close command provides an invalid number here. // While we could throw because V2 of the spec declares it incorrect, this is not // difficult to fix and has no effect on the results. length = 0; rx = ox; ry = oy; return close; } else { throw std::runtime_error("Vector Tile has POLYGON type geometry with an unknown command."); } } else { return end; } } --length; // It is possible for the next to lines to throw because we can not check the length // of the buffer to ensure that it is long enough. // If an exception occurs it will likely be a end_of_buffer_exception with the text: // "end of buffer exception" // While this error message is not verbose a try catch here would slow down processing. int32_t dx = protozero::decode_zigzag32(static_cast(*geo_itr_++)); int32_t dy = protozero::decode_zigzag32(static_cast(*geo_itr_++)); if (skip_lineto_zero && dx == 0 && dy == 0) { // We are going to skip this vertex as the point doesn't move call ring_next again return ring_next(rx, ry, true); } detail::move_cursor(x, y, dx, dy); rx = x; ry = y; return line_to; } template MAPNIK_VECTOR_INLINE mapnik::geometry::geometry decode_geometry(GeometryPBF & paths, int32_t geom_type, unsigned version, value_type tile_x, value_type tile_y, double scale_x, double scale_y, mapnik::box2d const& bbox) { mapnik::geometry::geometry geom; // output geometry switch (geom_type) { case Geometry_Type::POINT: { detail::decode_point(geom, paths, tile_x, tile_y, scale_x, scale_y, bbox); break; } case Geometry_Type::LINESTRING: { detail::decode_linestring(geom, paths, tile_x, tile_y, scale_x, scale_y, bbox, version); break; } case Geometry_Type::POLYGON: { detail::decode_polygon(geom, paths, tile_x, tile_y, scale_x, scale_y, bbox, version); break; } case Geometry_Type::UNKNOWN: default: { // This was changed to not throw as unknown according to v2 of spec can simply be ignored and doesn't require // it failing the processing geom = mapnik::geometry::geometry_empty(); break; } } return geom; } template MAPNIK_VECTOR_INLINE mapnik::geometry::geometry decode_geometry(GeometryPBF & paths, int32_t geom_type, unsigned version, value_type tile_x, value_type tile_y, double scale_x, double scale_y) { mapnik::box2d bbox(std::numeric_limits::lowest(), std::numeric_limits::lowest(), std::numeric_limits::max(), std::numeric_limits::max()); return decode_geometry(paths, geom_type, version, tile_x, tile_y, scale_x, scale_y, bbox); } } // end ns vector_tile_impl } // end ns mapnik mapnik-vector-tile-1.6.1/src/vector_tile_geometry_encoder_pbf.cpp000066400000000000000000000001401324304754200253030ustar00rootroot00000000000000#include "vector_tile_geometry_encoder_pbf.hpp" #include "vector_tile_geometry_encoder_pbf.ipp" mapnik-vector-tile-1.6.1/src/vector_tile_geometry_encoder_pbf.hpp000066400000000000000000000054371324304754200253260ustar00rootroot00000000000000#ifndef __MAPNIK_VECTOR_TILE_GEOMETRY_ENCODER_PBF_H__ #define __MAPNIK_VECTOR_TILE_GEOMETRY_ENCODER_PBF_H__ // mapnik-vector-tile #include "vector_tile_config.hpp" // mapbox #include // protozero #include #include // std #include #include namespace mapnik { namespace vector_tile_impl { MAPNIK_VECTOR_INLINE bool encode_geometry_pbf(mapbox::geometry::point const& pt, protozero::pbf_writer & current_feature, int32_t & start_x, int32_t & start_y); MAPNIK_VECTOR_INLINE bool encode_geometry_pbf(mapbox::geometry::multi_point const& geom, protozero::pbf_writer & current_feature, int32_t & start_x, int32_t & start_y); MAPNIK_VECTOR_INLINE bool encode_geometry_pbf(mapbox::geometry::line_string const& line, protozero::pbf_writer & current_feature, int32_t & start_x, int32_t & start_y); MAPNIK_VECTOR_INLINE bool encode_geometry_pbf(mapbox::geometry::multi_line_string const& geom, protozero::pbf_writer & current_feature, int32_t & start_x, int32_t & start_y); MAPNIK_VECTOR_INLINE bool encode_geometry_pbf(mapbox::geometry::polygon const& poly, protozero::pbf_writer & current_feature, int32_t & start_x, int32_t & start_y); MAPNIK_VECTOR_INLINE bool encode_geometry_pbf(mapbox::geometry::multi_polygon const& poly, protozero::pbf_writer & current_feature, int32_t & start_x, int32_t & start_y); MAPNIK_VECTOR_INLINE bool encode_geometry_pbf(mapbox::geometry::geometry const& geom, protozero::pbf_writer & current_feature, int32_t & start_x, int32_t & start_y); } // end ns vector_tile_impl } // end ns mapnik #if !defined(MAPNIK_VECTOR_TILE_LIBRARY) #include "vector_tile_geometry_encoder_pbf.ipp" #endif #endif // __MAPNIK_VECTOR_TILE_GEOMETRY_ENCODER_PBF_H__ mapnik-vector-tile-1.6.1/src/vector_tile_geometry_encoder_pbf.ipp000066400000000000000000000233321324304754200253210ustar00rootroot00000000000000// mapnik-vector-tile #include "vector_tile_config.hpp" // mapbox #include // protozero #include #include // std #include #include namespace mapnik { namespace vector_tile_impl { namespace detail_pbf { template inline std::size_t repeated_point_count(Geometry const& geom) { if (geom.size() < 2) { return 0; } std::size_t count = 0; auto itr = geom.begin(); for (auto prev_itr = itr++; itr != geom.end(); ++prev_itr, ++itr) { if (itr->x == prev_itr->x && itr->y == prev_itr->y) { count++; } } return count; } inline unsigned encode_length(unsigned len) { return (len << 3u) | 2u; } struct encoder_visitor { protozero::pbf_writer & feature_; int32_t & x_; int32_t & y_; encoder_visitor(protozero::pbf_writer & feature, int32_t & x, int32_t & y) : feature_(feature), x_(x), y_(y) {} bool operator() (mapbox::geometry::geometry_collection const&) { throw std::runtime_error("Geometry collections can not be encoded as they may contain different geometry types"); } template bool operator() (T const& geom) { return encode_geometry_pbf(geom, feature_, x_, y_); } }; inline bool encode_linestring(mapbox::geometry::line_string const& line, protozero::packed_field_uint32 & geometry, int32_t & start_x, int32_t & start_y) { std::size_t line_size = line.size(); line_size -= detail_pbf::repeated_point_count(line); if (line_size < 2) { return false; } unsigned line_to_length = static_cast(line_size) - 1; auto pt = line.begin(); geometry.add_element(9); // move_to | (1 << 3) geometry.add_element(protozero::encode_zigzag32(pt->x - start_x)); geometry.add_element(protozero::encode_zigzag32(pt->y - start_y)); start_x = pt->x; start_y = pt->y; geometry.add_element(detail_pbf::encode_length(line_to_length)); for (++pt; pt != line.end(); ++pt) { int32_t dx = pt->x - start_x; int32_t dy = pt->y - start_y; if (dx == 0 && dy == 0) { continue; } geometry.add_element(protozero::encode_zigzag32(dx)); geometry.add_element(protozero::encode_zigzag32(dy)); start_x = pt->x; start_y = pt->y; } return true; } inline bool encode_linearring(mapbox::geometry::linear_ring const& ring, protozero::packed_field_uint32 & geometry, int32_t & start_x, int32_t & start_y) { std::size_t ring_size = ring.size(); ring_size -= detail_pbf::repeated_point_count(ring); if (ring_size < 3) { return false; } auto last_itr = ring.end(); if (ring.front() == ring.back()) { --last_itr; --ring_size; if (ring_size < 3) { return false; } } unsigned line_to_length = static_cast(ring_size) - 1; auto pt = ring.begin(); geometry.add_element(9); // move_to | (1 << 3) geometry.add_element(protozero::encode_zigzag32(pt->x - start_x)); geometry.add_element(protozero::encode_zigzag32(pt->y - start_y)); start_x = pt->x; start_y = pt->y; geometry.add_element(detail_pbf::encode_length(line_to_length)); for (++pt; pt != last_itr; ++pt) { int32_t dx = pt->x - start_x; int32_t dy = pt->y - start_y; if (dx == 0 && dy == 0) { continue; } geometry.add_element(protozero::encode_zigzag32(dx)); geometry.add_element(protozero::encode_zigzag32(dy)); start_x = pt->x; start_y = pt->y; } geometry.add_element(15); // close_path return true; } inline bool encode_polygon(mapbox::geometry::polygon const& poly, protozero::packed_field_uint32 & geometry, int32_t & start_x, int32_t & start_y) { if (poly.empty()) { return false; } bool first = true; for (auto const& ring : poly) { if (first) { first = false; if (!encode_linearring(ring, geometry, start_x, start_y)) { return false; } } else { encode_linearring(ring, geometry, start_x, start_y); } } return true; } } // end ns detail MAPNIK_VECTOR_INLINE bool encode_geometry_pbf(mapbox::geometry::point const& pt, protozero::pbf_writer & current_feature, int32_t & start_x, int32_t & start_y) { current_feature.add_enum(Feature_Encoding::TYPE, Geometry_Type::POINT); { protozero::packed_field_uint32 geometry(current_feature, Feature_Encoding::GEOMETRY); geometry.add_element(9); int32_t dx = pt.x - start_x; int32_t dy = pt.y - start_y; // Manual zigzag encoding. geometry.add_element(protozero::encode_zigzag32(dx)); geometry.add_element(protozero::encode_zigzag32(dy)); start_x = pt.x; start_y = pt.y; } return true; } MAPNIK_VECTOR_INLINE bool encode_geometry_pbf(mapbox::geometry::multi_point const& geom, protozero::pbf_writer & current_feature, int32_t & start_x, int32_t & start_y) { std::size_t geom_size = geom.size(); if (geom_size <= 0) { return false; } current_feature.add_enum(Feature_Encoding::TYPE, Geometry_Type::POINT); { protozero::packed_field_uint32 geometry(current_feature, Feature_Encoding::GEOMETRY); geometry.add_element(1u | (geom_size << 3)); // move_to | (len << 3) for (auto const& pt : geom) { int32_t dx = pt.x - start_x; int32_t dy = pt.y - start_y; // Manual zigzag encoding. geometry.add_element(protozero::encode_zigzag32(dx)); geometry.add_element(protozero::encode_zigzag32(dy)); start_x = pt.x; start_y = pt.y; } } return true; } MAPNIK_VECTOR_INLINE bool encode_geometry_pbf(mapbox::geometry::line_string const& line, protozero::pbf_writer & current_feature, int32_t & start_x, int32_t & start_y) { bool success = false; current_feature.add_enum(Feature_Encoding::TYPE, Geometry_Type::LINESTRING); { protozero::packed_field_uint32 geometry(current_feature, Feature_Encoding::GEOMETRY); success = detail_pbf::encode_linestring(line, geometry, start_x, start_y); } return success; } MAPNIK_VECTOR_INLINE bool encode_geometry_pbf(mapbox::geometry::multi_line_string const& geom, protozero::pbf_writer & current_feature, int32_t & start_x, int32_t & start_y) { bool success = false; current_feature.add_enum(Feature_Encoding::TYPE, Geometry_Type::LINESTRING); { protozero::packed_field_uint32 geometry(current_feature, Feature_Encoding::GEOMETRY); for (auto const& line : geom) { if (detail_pbf::encode_linestring(line, geometry, start_x, start_y)) { success = true; } } } return success; } MAPNIK_VECTOR_INLINE bool encode_geometry_pbf(mapbox::geometry::polygon const& poly, protozero::pbf_writer & current_feature, int32_t & start_x, int32_t & start_y) { bool success = false; current_feature.add_enum(Feature_Encoding::TYPE, Geometry_Type::POLYGON); { protozero::packed_field_uint32 geometry(current_feature, Feature_Encoding::GEOMETRY); success = detail_pbf::encode_polygon(poly, geometry, start_x, start_y); } return success; } MAPNIK_VECTOR_INLINE bool encode_geometry_pbf(mapbox::geometry::multi_polygon const& geom, protozero::pbf_writer & current_feature, int32_t & start_x, int32_t & start_y) { bool success = false; current_feature.add_enum(Feature_Encoding::TYPE, Geometry_Type::POLYGON); { protozero::packed_field_uint32 geometry(current_feature, Feature_Encoding::GEOMETRY); for (auto const& poly : geom) { if (detail_pbf::encode_polygon(poly, geometry, start_x, start_y)) { success = true; } } } return success; } MAPNIK_VECTOR_INLINE bool encode_geometry_pbf(mapbox::geometry::geometry const& geom, protozero::pbf_writer & current_feature, int32_t & start_x, int32_t & start_y) { detail_pbf::encoder_visitor ap(current_feature, start_x, start_y); return mapbox::util::apply_visitor(ap, geom); } } // end ns vector_tile_impl } // end ns mapnik mapnik-vector-tile-1.6.1/src/vector_tile_geometry_feature.hpp000066400000000000000000000052121324304754200245020ustar00rootroot00000000000000#ifndef __MAPNIK_VECTOR_TILE_GEOMETRY_FEATURE_H__ #define __MAPNIK_VECTOR_TILE_GEOMETRY_FEATURE_H__ // mapnik-vector-tile #include "vector_tile_config.hpp" #include "vector_tile_layer.hpp" #include "vector_tile_geometry_encoder_pbf.hpp" // mapnik #include #include // Mapbox #include namespace mapnik { namespace vector_tile_impl { inline void raster_to_feature(std::string const& buffer, mapnik::feature_impl const& mapnik_feature, layer_builder_pbf & builder) { std::vector feature_tags; protozero::pbf_writer layer_writer = builder.add_feature(mapnik_feature, feature_tags); protozero::pbf_writer feature_writer(layer_writer, Layer_Encoding::FEATURES); feature_writer.add_uint64(Feature_Encoding::ID, static_cast(mapnik_feature.id())); feature_writer.add_string(Feature_Encoding::RASTER, buffer); feature_writer.add_packed_uint32(Feature_Encoding::TAGS, feature_tags.begin(), feature_tags.end()); builder.make_not_empty(); } struct geometry_to_feature_pbf_visitor { mapnik::feature_impl const& mapnik_feature_; layer_builder_pbf & builder_; geometry_to_feature_pbf_visitor(mapnik::feature_impl const& mapnik_feature, layer_builder_pbf & builder) : mapnik_feature_(mapnik_feature), builder_(builder) {} template void operator() (T const& geom) { std::int32_t x = 0; std::int32_t y = 0; bool success = false; std::vector feature_tags; protozero::pbf_writer layer_writer = builder_.add_feature(mapnik_feature_, feature_tags); { protozero::pbf_writer feature_writer(layer_writer, Layer_Encoding::FEATURES); success = encode_geometry_pbf(geom, feature_writer, x, y); if (success) { feature_writer.add_uint64(Feature_Encoding::ID, static_cast(mapnik_feature_.id())); feature_writer.add_packed_uint32(Feature_Encoding::TAGS, feature_tags.begin(), feature_tags.end()); builder_.make_not_empty(); } else { feature_writer.rollback(); } } } void operator() (mapbox::geometry::geometry_collection const& collection) { for (auto & g : collection) { mapbox::util::apply_visitor((*this), g); } } }; } // end ns vector_tile_impl } // end ns mapnik #endif // __MAPNIK_VECTOR_GEOMETRY_FEATURE_H__ mapnik-vector-tile-1.6.1/src/vector_tile_geometry_simplifier.hpp000066400000000000000000000067601324304754200252230ustar00rootroot00000000000000#ifndef __MAPNIK_VECTOR_TILE_GEOMETRY_SIMPLIFIER_H__ #define __MAPNIK_VECTOR_TILE_GEOMETRY_SIMPLIFIER_H__ // mapnik-vector-tile #include "vector_tile_config.hpp" #include "vector_tile_douglas_peucker.hpp" // mapbox #include namespace mapnik { namespace vector_tile_impl { template struct geometry_simplifier { geometry_simplifier(unsigned simplify_distance, NextProcessor & next) : next_(next), simplify_distance_(simplify_distance) {} void operator() (mapbox::geometry::point & geom) { next_(geom); } void operator() (mapbox::geometry::multi_point & geom) { next_(geom); } void operator() (mapbox::geometry::line_string & geom) { if (geom.size() <= 2) { next_(geom); } else { mapbox::geometry::line_string simplified; douglas_peucker(geom, std::back_inserter(simplified), simplify_distance_); next_(simplified); } } void operator() (mapbox::geometry::multi_line_string & geom) { mapbox::geometry::multi_line_string simplified; for (auto const & g : geom) { if (g.size() <= 2) { simplified.push_back(g); } else { mapbox::geometry::line_string simplified_line; douglas_peucker(g, std::back_inserter(simplified_line), simplify_distance_); simplified.push_back(simplified_line); } } next_(simplified); } void operator() (mapbox::geometry::polygon & geom) { mapbox::geometry::polygon simplified; for (auto const & g : geom) { if (g.size() <= 4) { simplified.push_back(g); } else { mapbox::geometry::linear_ring simplified_ring; douglas_peucker(g, std::back_inserter(simplified_ring), simplify_distance_); simplified.push_back(simplified_ring); } } next_(simplified); } void operator() (mapbox::geometry::multi_polygon & multi_geom) { mapbox::geometry::multi_polygon simplified_multi; for (auto const & geom : multi_geom) { mapbox::geometry::polygon simplified; for (auto const & g : geom) { if (g.size() <= 4) { simplified.push_back(g); } else { mapbox::geometry::linear_ring simplified_ring; douglas_peucker(g, std::back_inserter(simplified_ring), simplify_distance_); simplified.push_back(simplified_ring); } } simplified_multi.push_back(simplified); } next_(simplified_multi); } void operator() (mapbox::geometry::geometry_collection & geom) { for (auto & g : geom) { mapnik::util::apply_visitor((*this), g); } } NextProcessor & next_; double simplify_distance_; }; } // end ns vector_tile_impl } // end ns mapnik #endif // __MAPNIK_VECTOR_GEOMETRY_SIMPLIFIER_H__ mapnik-vector-tile-1.6.1/src/vector_tile_is_valid.hpp000066400000000000000000000315611324304754200227340ustar00rootroot00000000000000#ifndef __MAPNIK_VECTOR_TILE_IS_VALID_H__ #define __MAPNIK_VECTOR_TILE_IS_VALID_H__ // mapnik protzero parsing configuration #include "vector_tile_config.hpp" //protozero #include // std #include namespace mapnik { namespace vector_tile_impl { enum validity_error : std::uint8_t { TILE_REPEATED_LAYER_NAMES = 0, TILE_HAS_UNKNOWN_TAG, TILE_HAS_DIFFERENT_VERSIONS, LAYER_HAS_NO_NAME, LAYER_HAS_MULTIPLE_NAME, LAYER_HAS_NO_EXTENT, LAYER_HAS_MULTIPLE_EXTENT, LAYER_HAS_MULTIPLE_VERSION, LAYER_HAS_NO_FEATURES, LAYER_HAS_UNSUPPORTED_VERSION, LAYER_HAS_RASTER_AND_VECTOR, LAYER_HAS_UNKNOWN_TAG, VALUE_MULTIPLE_VALUES, VALUE_NO_VALUE, VALUE_HAS_UNKNOWN_TAG, FEATURE_IS_EMPTY, FEATURE_MULTIPLE_ID, FEATURE_MULTIPLE_TAGS, FEATURE_MULTIPLE_GEOM, FEATURE_MULTIPLE_RASTER, FEATURE_RASTER_AND_GEOM, FEATURE_NO_GEOM_TYPE, FEATURE_HAS_INVALID_GEOM_TYPE, FEATURE_HAS_UNKNOWN_TAG, INVALID_PBF_BUFFER }; inline std::string validity_error_to_string(validity_error err) { switch (err) { case TILE_REPEATED_LAYER_NAMES: return "Vector Tile message has two or more layers with the same name"; case TILE_HAS_UNKNOWN_TAG: return "Vector Tile message has an unknown tag"; case TILE_HAS_DIFFERENT_VERSIONS: return "Vector Tile message has layers with different versions"; case LAYER_HAS_NO_NAME: return "Vector Tile Layer message has no name"; case LAYER_HAS_MULTIPLE_NAME: return "Vector Tile Layer message has multiple name tags"; case LAYER_HAS_NO_EXTENT: return "Vector Tile Layer message has no extent"; case LAYER_HAS_MULTIPLE_EXTENT: return "Vector Tile Layer message has multiple extent tags"; case LAYER_HAS_NO_FEATURES: return "Vector Tile Layer message has no features"; case LAYER_HAS_MULTIPLE_VERSION: return "Vector Tile Layer message has multiple version tags"; case LAYER_HAS_UNSUPPORTED_VERSION: return "Vector Tile Layer message has an unsupported version"; case LAYER_HAS_RASTER_AND_VECTOR: return "Vector Tile Layer contains raster and vector features"; case LAYER_HAS_UNKNOWN_TAG: return "Vector Tile Layer message has an unknown tag"; case VALUE_MULTIPLE_VALUES: return "Vector Tile Value message contains more then one values"; case VALUE_NO_VALUE: return "Vector Tile Value message contains no values"; case VALUE_HAS_UNKNOWN_TAG: return "Vector Tile Value message has an unknown tag"; case FEATURE_IS_EMPTY: return "Vector Tile Feature message has no geometry"; case FEATURE_MULTIPLE_ID: return "Vector Tile Feature message has multiple ids"; case FEATURE_MULTIPLE_TAGS: return "Vector Tile Feature message has multiple repeated tags"; case FEATURE_MULTIPLE_GEOM: return "Vector Tile Feature message has multiple geometries"; case FEATURE_MULTIPLE_RASTER: return "Vector Tile Feature message has multiple rasters"; case FEATURE_RASTER_AND_GEOM: return "Vector Tile Feature message has raster and geometry types"; case FEATURE_NO_GEOM_TYPE: return "Vector Tile Feature message is missing a geometry type"; case FEATURE_HAS_INVALID_GEOM_TYPE: return "Vector Tile Feature message has an invalid geometry type"; case FEATURE_HAS_UNKNOWN_TAG: return "Vector Tile Feature message has an unknown tag"; case INVALID_PBF_BUFFER: return "Buffer is not encoded as a valid PBF"; default: return "UNKNOWN ERROR"; } } inline void validity_error_to_string(std::set & errors, std::string & out) { if (errors.empty()) { return; } std::ostringstream err; err << "Vector Tile Validity Errors Found:" << std::endl; for (auto e : errors) { err << " - " << validity_error_to_string(e) << std::endl; } out.append(err.str()); } inline void feature_is_valid(protozero::pbf_reader & feature_msg, std::set & errors, std::uint64_t & point_feature_count, std::uint64_t & line_feature_count, std::uint64_t & polygon_feature_count, std::uint64_t & unknown_feature_count, std::uint64_t & raster_feature_count) { bool has_geom = false; bool has_raster = false; bool has_type = false; bool has_id = false; bool has_tags = false; while (feature_msg.next()) { switch (feature_msg.tag()) { case Feature_Encoding::ID: // id if (has_id) { errors.insert(FEATURE_MULTIPLE_ID); } has_id = true; feature_msg.skip(); break; case Feature_Encoding::TAGS: // tags if (has_tags) { errors.insert(FEATURE_MULTIPLE_TAGS); } has_tags = true; feature_msg.get_packed_uint32(); break; case Feature_Encoding::TYPE: // geom type { std::int32_t type = feature_msg.get_enum(); if (type == Geometry_Type::POINT) { ++point_feature_count; } else if (type == Geometry_Type::LINESTRING) { ++line_feature_count; } else if (type == Geometry_Type::POLYGON) { ++polygon_feature_count; } else if (type == Geometry_Type::UNKNOWN) { ++unknown_feature_count; } else { errors.insert(FEATURE_HAS_INVALID_GEOM_TYPE); } has_type = true; } break; case Feature_Encoding::GEOMETRY: // geometry if (has_geom) { errors.insert(FEATURE_MULTIPLE_GEOM); } if (has_raster) { errors.insert(FEATURE_RASTER_AND_GEOM); } has_geom = true; feature_msg.get_packed_uint32(); break; case Feature_Encoding::RASTER: // raster if (has_geom) { errors.insert(FEATURE_RASTER_AND_GEOM); } if (has_raster) { errors.insert(FEATURE_MULTIPLE_RASTER); } has_raster = true; ++raster_feature_count; feature_msg.get_view(); break; default: errors.insert(FEATURE_HAS_UNKNOWN_TAG); feature_msg.skip(); break; } } if (!has_geom && !has_raster) { errors.insert(FEATURE_IS_EMPTY); } if (has_geom && !has_type) { errors.insert(FEATURE_NO_GEOM_TYPE); } } inline void feature_is_valid(protozero::pbf_reader & feature_msg, std::set & errors) { std::uint64_t point_feature_count = 0; std::uint64_t line_feature_count = 0; std::uint64_t polygon_feature_count = 0; std::uint64_t unknown_feature_count = 0; std::uint64_t raster_feature_count = 0; return feature_is_valid(feature_msg, errors, point_feature_count, line_feature_count, polygon_feature_count, unknown_feature_count, raster_feature_count); } inline void value_is_valid(protozero::pbf_reader & value_msg, std::set & errors) { bool has_value = false; while (value_msg.next()) { switch (value_msg.tag()) { case Value_Encoding::STRING: case Value_Encoding::FLOAT: case Value_Encoding::DOUBLE: case Value_Encoding::INT: case Value_Encoding::UINT: case Value_Encoding::SINT: case Value_Encoding::BOOL: if (has_value) { errors.insert(VALUE_MULTIPLE_VALUES); } has_value = true; value_msg.skip(); break; default: errors.insert(VALUE_HAS_UNKNOWN_TAG); value_msg.skip(); break; } } if (!has_value) { errors.insert(VALUE_NO_VALUE); } } inline void layer_is_valid(protozero::pbf_reader & layer_msg, std::set & errors, std::uint64_t & point_feature_count, std::uint64_t & line_feature_count, std::uint64_t & polygon_feature_count, std::uint64_t & unknown_feature_count, std::uint64_t & raster_feature_count) { bool contains_a_feature = false; bool contains_a_name = false; bool contains_an_extent = false; bool contains_a_version = false; try { while (layer_msg.next()) { switch (layer_msg.tag()) { case Layer_Encoding::NAME: // name if (contains_a_name) { errors.insert(LAYER_HAS_MULTIPLE_NAME); } contains_a_name = true; layer_msg.skip(); break; case Layer_Encoding::FEATURES: { contains_a_feature = true; protozero::pbf_reader feature_msg = layer_msg.get_message(); feature_is_valid(feature_msg, errors, point_feature_count, line_feature_count, polygon_feature_count, unknown_feature_count, raster_feature_count); } break; case Layer_Encoding::KEYS: // keys layer_msg.skip(); break; case Layer_Encoding::VALUES: // value { protozero::pbf_reader value_msg = layer_msg.get_message(); value_is_valid(value_msg, errors); } break; case Layer_Encoding::EXTENT: // extent if (contains_an_extent) { errors.insert(LAYER_HAS_MULTIPLE_EXTENT); } contains_an_extent = true; layer_msg.skip(); break; case Layer_Encoding::VERSION: if (contains_a_version) { errors.insert(LAYER_HAS_MULTIPLE_VERSION); } contains_a_version = true; layer_msg.skip(); break; default: errors.insert(LAYER_HAS_UNKNOWN_TAG); layer_msg.skip(); break; } } } catch (std::exception const&) { errors.insert(INVALID_PBF_BUFFER); } if (!contains_a_name) { errors.insert(LAYER_HAS_NO_NAME); } if (!contains_an_extent) { errors.insert(LAYER_HAS_NO_EXTENT); } if (!contains_a_feature) { errors.insert(LAYER_HAS_NO_FEATURES); } } inline void layer_is_valid(protozero::pbf_reader & layer_msg, std::set & errors) { std::uint64_t point_feature_count = 0; std::uint64_t line_feature_count = 0; std::uint64_t polygon_feature_count = 0; std::uint64_t unknown_feature_count = 0; std::uint64_t raster_feature_count = 0; return layer_is_valid(layer_msg, errors, point_feature_count, line_feature_count, polygon_feature_count, unknown_feature_count, raster_feature_count); } } // end ns vector_tile_impl } // end ns mapnik #endif // __MAPNIK_VECTOR_TILE_IS_VALID_H__ mapnik-vector-tile-1.6.1/src/vector_tile_layer.cpp000066400000000000000000000001021324304754200222340ustar00rootroot00000000000000#include "vector_tile_layer.hpp" #include "vector_tile_layer.ipp" mapnik-vector-tile-1.6.1/src/vector_tile_layer.hpp000066400000000000000000000301231324304754200222470ustar00rootroot00000000000000#ifndef __MAPNIK_VECTOR_TILE_LAYER_H__ #define __MAPNIK_VECTOR_TILE_LAYER_H__ // mapnik-vector-tile #include "vector_tile_config.hpp" // mapnik #include #include #include #include #include #include #include #include #include #include // protozero #include // std #include #include #include namespace mapnik { namespace vector_tile_impl { struct layer_builder_pbf { typedef std::map keys_container; typedef std::unordered_map values_container; keys_container keys; values_container values; std::string & layer_buffer; bool empty; bool painted; layer_builder_pbf(std::string const & name, std::uint32_t extent, std::string & _layer_buffer) : keys(), values(), layer_buffer(_layer_buffer), empty(true), painted(false) { protozero::pbf_writer layer_writer(layer_buffer); layer_writer.add_uint32(Layer_Encoding::VERSION, 2); layer_writer.add_string(Layer_Encoding::NAME, name); layer_writer.add_uint32(Layer_Encoding::EXTENT, extent); } void make_painted() { painted = true; } void make_not_empty() { empty = false; } MAPNIK_VECTOR_INLINE protozero::pbf_writer add_feature(mapnik::feature_impl const& mapnik_feature, std::vector & feature_tags); }; class tile_layer { private: bool valid_; mapnik::datasource_ptr ds_; mapnik::projection target_proj_; mapnik::projection source_proj_; mapnik::proj_transform prj_trans_; std::string buffer_; std::string name_; std::uint32_t layer_extent_; mapnik::box2d target_buffered_extent_; mapnik::box2d source_buffered_extent_; mapnik::query query_; mapnik::view_transform view_trans_; bool empty_; bool painted_; public: tile_layer(mapnik::Map const& map, mapnik::layer const& lay, mapnik::box2d const& tile_extent_bbox, std::uint32_t tile_size, std::int32_t buffer_size, double scale_factor, double scale_denom, int offset_x, int offset_y, mapnik::attributes const& vars) : valid_(true), ds_(lay.datasource()), target_proj_(map.srs(), true), source_proj_(lay.srs(), true), prj_trans_(target_proj_, source_proj_), buffer_(), name_(lay.name()), layer_extent_(calc_extent(tile_size)), target_buffered_extent_(calc_target_buffered_extent(tile_extent_bbox, buffer_size, lay, map)), source_buffered_extent_(calc_source_buffered_extent(lay)), query_(calc_query(scale_factor, scale_denom, tile_extent_bbox, lay, vars)), view_trans_(layer_extent_, layer_extent_, tile_extent_bbox, offset_x, offset_y), empty_(true), painted_(false) { } tile_layer(tile_layer && rhs) : valid_(std::move(rhs.valid_)), ds_(std::move(rhs.ds_)), target_proj_(std::move(rhs.target_proj_)), source_proj_(std::move(rhs.source_proj_)), prj_trans_(target_proj_, source_proj_), buffer_(std::move(rhs.buffer_)), name_(std::move(rhs.name_)), layer_extent_(std::move(rhs.layer_extent_)), target_buffered_extent_(std::move(rhs.target_buffered_extent_)), source_buffered_extent_(std::move(rhs.source_buffered_extent_)), query_(std::move(rhs.query_)), view_trans_(std::move(rhs.view_trans_)), empty_(std::move(rhs.empty_)), painted_(std::move(rhs.painted_)) {} tile_layer& operator=(tile_layer&&) = default; tile_layer(tile_layer const& rhs) = delete; tile_layer& operator=(const tile_layer&) = delete; std::uint32_t calc_extent(std::uint32_t layer_extent) { if (!ds_) { valid_ = false; return 4096; } auto ds_extent = ds_->params().template get("vector_layer_extent"); if (ds_extent) { if (ds_->type() == datasource::Vector) { layer_extent = *ds_extent; } else { layer_extent = 256; } } if (layer_extent == 0) { valid_ = false; layer_extent = 4096; } return layer_extent; } mapnik::box2d calc_target_buffered_extent(mapnik::box2d const& tile_extent_bbox, std::int32_t buffer_size, mapnik::layer const& lay, mapnik::Map const& map) const { mapnik::box2d ext(tile_extent_bbox); double scale = ext.width() / layer_extent_; double buffer_padding = 2.0 * scale; boost::optional layer_buffer_size = lay.buffer_size(); if (layer_buffer_size) // if layer overrides buffer size, use this value to compute buffered extent { if (!ds_ || ds_->type() == datasource::Vector) { buffer_padding *= (*layer_buffer_size) * (static_cast(layer_extent_) / VT_LEGACY_IMAGE_SIZE); } else { buffer_padding *= (*layer_buffer_size) * (static_cast(layer_extent_)); } } else { buffer_padding *= buffer_size; } double buffered_width = ext.width() + buffer_padding; double buffered_height = ext.height() + buffer_padding; if (buffered_width < 0.0) { buffered_width = 0.0; } if (buffered_height < 0.0) { buffered_height = 0.0; } ext.width(buffered_width); ext.height(buffered_height); boost::optional > const& maximum_extent = map.maximum_extent(); if (maximum_extent) { ext.clip(*maximum_extent); } return ext; } mapnik::box2d calc_source_buffered_extent(mapnik::layer const& lay) { mapnik::box2d new_extent(target_buffered_extent_); if (!prj_trans_.forward(new_extent, PROJ_ENVELOPE_POINTS)) { if (!ds_ || ds_->type() != datasource::Vector) { throw std::runtime_error("vector_tile_processor: can not project target projection to an extent in the source projection, reproject source data prior to processing"); } else { new_extent = lay.envelope(); } } return new_extent; } mapnik::query calc_query(double scale_factor, double scale_denom, mapnik::box2d const& tile_extent_bbox, mapnik::layer const& lay, mapnik::attributes const& vars) { // Adjust the scale denominator if required if (scale_denom <= 0.0) { double scale = tile_extent_bbox.width() / VT_LEGACY_IMAGE_SIZE; scale_denom = mapnik::scale_denominator(scale, target_proj_.is_geographic()); } scale_denom *= scale_factor; if (!lay.visible(scale_denom)) { valid_ = false; } mapnik::box2d query_extent(lay.envelope()); // source projection mapnik::box2d unbuffered_query_extent(tile_extent_bbox); // first, try intersection of map extent forward projected into layer srs if (source_buffered_extent_.intersects(query_extent)) { // this modifies the query_extent by clipping to the buffered_ext query_extent.clip(source_buffered_extent_); } // if no intersection and projections are also equal, early return else if (prj_trans_.equal()) { valid_ = false; } // next try intersection of layer extent back projected into map srs else if (prj_trans_.backward(query_extent, PROJ_ENVELOPE_POINTS) && target_buffered_extent_.intersects(query_extent)) { query_extent.clip(target_buffered_extent_); // forward project layer extent back into native projection if (!prj_trans_.forward(query_extent, PROJ_ENVELOPE_POINTS)) { throw std::runtime_error("vector_tile_processor: query extent did not reproject back to source projection"); } } else { // if no intersection then nothing to do for layer valid_ = false; } if (!prj_trans_.equal()) { if (!prj_trans_.forward(unbuffered_query_extent, PROJ_ENVELOPE_POINTS)) { if (!ds_ || ds_->type() != datasource::Vector) { throw std::runtime_error("vector_tile_processor: can not project target projection to an extent in the source projection, reproject source data prior to processing"); } else { unbuffered_query_extent = lay.envelope(); } } } double qw = unbuffered_query_extent.width() > 0 ? unbuffered_query_extent.width() : 1.0; double qh = unbuffered_query_extent.height() > 0 ? unbuffered_query_extent.height() : 1.0; if (!ds_ || ds_->type() == datasource::Vector) { qw = VT_LEGACY_IMAGE_SIZE / qw; qh = VT_LEGACY_IMAGE_SIZE / qh; } else { qw = static_cast(layer_extent_) / qw; qh = static_cast(layer_extent_) / qh; } mapnik::query::resolution_type res(qw, qh); mapnik::query q(query_extent, res, scale_denom, unbuffered_query_extent); if (ds_) { mapnik::layer_descriptor lay_desc = ds_->get_descriptor(); for (mapnik::attribute_descriptor const& desc : lay_desc.get_descriptors()) { q.add_property_name(desc.get_name()); } } q.set_variables(vars); return q; } mapnik::datasource_ptr get_ds() const { return ds_; } mapnik::featureset_ptr get_features() const { return ds_->features(query_); } mapnik::query const& get_query() const { return query_; } mapnik::view_transform const& get_view_transform() const { return view_trans_; } mapnik::proj_transform const& get_proj_transform() const { return prj_trans_; } mapnik::box2d const& get_source_buffered_extent() const { return source_buffered_extent_; } mapnik::box2d const& get_target_buffered_extent() const { return target_buffered_extent_; } bool is_valid() const { return valid_; } std::uint32_t layer_extent() const { return layer_extent_; } std::string const& name() const { return name_; } void name(std::string const& val) { name_ = val; } bool is_empty() const { return empty_; } bool is_painted() const { return painted_; } void make_painted() { painted_ = true; } std::string const& get_data() const { return buffer_; } std::string & get_data() { return buffer_; } void build(layer_builder_pbf const& builder) { empty_ = builder.empty; painted_ = builder.painted; } }; } // end ns vector_tile_impl } // end ns mapnik #if !defined(MAPNIK_VECTOR_TILE_LIBRARY) #include "vector_tile_layer.ipp" #endif #endif // __MAPNIK_VECTOR_TILE_LAYER_H__ mapnik-vector-tile-1.6.1/src/vector_tile_layer.ipp000066400000000000000000000073421324304754200222570ustar00rootroot00000000000000// mapnik #include #include #include #include // protozero #include // std #include #include namespace mapnik { namespace vector_tile_impl { namespace detail { struct to_tile_value_pbf { public: to_tile_value_pbf(protozero::pbf_writer & value): value_(value) {} void operator () ( value_integer val ) const { value_.add_int64(Value_Encoding::INT,val); } void operator () ( mapnik::value_bool val ) const { value_.add_bool(Value_Encoding::BOOL,val); } void operator () ( mapnik::value_double val ) const { float fval = static_cast(val); if (val == static_cast(fval)) { value_.add_float(Value_Encoding::FLOAT, fval); } else { value_.add_double(Value_Encoding::DOUBLE, val); } } void operator () ( mapnik::value_unicode_string const& val ) const { std::string str; to_utf8(val, str); value_.add_string(Value_Encoding::STRING, str); } void operator () ( mapnik::value_null const& /*val*/ ) const { // do nothing } private: protozero::pbf_writer & value_; }; } // end ns detail MAPNIK_VECTOR_INLINE protozero::pbf_writer layer_builder_pbf::add_feature(mapnik::feature_impl const& mapnik_feature, std::vector & feature_tags) { protozero::pbf_writer layer_writer(layer_buffer); // Feature id should be unique from mapnik so we should comply with // the following wording of the specification: // "the value of the (feature) id SHOULD be unique among the features of the parent layer." // note that feature.id is signed int64_t so we are casting. // Mapnik features can not have more then one value for // a single key. Therefore, we do not have to check if // key already exists in the feature as we insert each // key value pair into the feature. feature_kv_iterator itr = mapnik_feature.begin(); feature_kv_iterator end = mapnik_feature.end(); for (; itr!=end; ++itr) { std::string const& name = std::get<0>(*itr); mapnik::value const& val = std::get<1>(*itr); if (!val.is_null()) { // Insert the key index keys_container::const_iterator key_itr = keys.find(name); if (key_itr == keys.end()) { // The key doesn't exist yet in the dictionary. layer_writer.add_string(Layer_Encoding::KEYS, name); size_t index = keys.size(); keys.emplace(name, index); feature_tags.push_back(index); } else { feature_tags.push_back(key_itr->second); } // Insert the value index values_container::const_iterator val_itr = values.find(val); if (val_itr == values.end()) { // The value doesn't exist yet in the dictionary. { protozero::pbf_writer value_writer(layer_writer, Layer_Encoding::VALUES); detail::to_tile_value_pbf visitor(value_writer); mapnik::util::apply_visitor(visitor, val); } size_t index = values.size(); values.emplace(val, index); feature_tags.push_back(index); } else { feature_tags.push_back(val_itr->second); } } } return layer_writer; } } // end ns vector_tile_impl } // end ns mapnik mapnik-vector-tile-1.6.1/src/vector_tile_load_tile.hpp000066400000000000000000000140131324304754200230670ustar00rootroot00000000000000#ifndef __MAPNIK_VECTOR_TILE_LOAD_TILE_H__ #define __MAPNIK_VECTOR_TILE_LOAD_TILE_H__ // mapnik-vector-tile #include "vector_tile_config.hpp" #include "vector_tile_compression.hpp" #include "vector_tile_tile.hpp" #include "vector_tile_datasource_pbf.hpp" #include "vector_tile_is_valid.hpp" #include "vector_tile_processor.hpp" // mapnik #include #include #include //protozero #include #include // std #include #include #include namespace mapnik { namespace vector_tile_impl { inline std::pair get_layer_name_and_version(protozero::pbf_reader & layer_msg) { std::string name; std::uint32_t version = 1; while (layer_msg.next()) { switch (layer_msg.tag()) { case Layer_Encoding::NAME: name = layer_msg.get_string(); break; case Layer_Encoding::VERSION: version = layer_msg.get_uint32();; break; default: layer_msg.skip(); break; } } return std::make_pair(name,version); } inline void merge_from_buffer(merc_tile & t, const char * data, std::size_t size, bool validate = false, bool upgrade = false) { using ds_ptr = std::shared_ptr; protozero::pbf_reader tile_msg(data, size); std::vector ds_vec; while (tile_msg.next()) { switch (tile_msg.tag()) { case Tile_Encoding::LAYERS: { const auto layer_view = tile_msg.get_view(); protozero::pbf_reader layer_props_msg(layer_view); auto layer_info = get_layer_name_and_version(layer_props_msg); std::string const& layer_name = layer_info.first; std::uint32_t version = layer_info.second; if (validate) { std::set errors; if (version < 1 || version > 2) { errors.insert(LAYER_HAS_UNSUPPORTED_VERSION); } if (t.has_layer(layer_name)) { errors.insert(TILE_REPEATED_LAYER_NAMES); } protozero::pbf_reader layer_valid_msg(layer_view); layer_is_valid(layer_valid_msg, errors); if (!errors.empty()) { std::string layer_errors; validity_error_to_string(errors, layer_errors); throw std::runtime_error(layer_errors); } } else if (layer_name.empty() || t.has_layer(layer_name)) { continue; } if (upgrade && version == 1) { // v1 tiles will be converted to v2 protozero::pbf_reader layer_msg(layer_view); ds_vec.push_back(std::make_shared( layer_msg, t.x(), t.y(), t.z(), true)); } else { t.append_layer_buffer(layer_view.data(), layer_view.size(), layer_name); } } break; default: throw std::runtime_error("Vector Tile Buffer contains invalid tag"); break; } } if (ds_vec.empty()) { return; } // Convert v1 tiles to v2 std::int32_t prev_buffer_size = t.buffer_size(); t.buffer_size(4096); // very large buffer so we don't miss any buffered points mapnik::Map map(t.tile_size(), t.tile_size(), "+init=epsg:3857"); for (auto const& ds : ds_vec) { ds->set_envelope(t.get_buffered_extent()); mapnik::layer lyr(ds->get_name(), "+init=epsg:3857"); lyr.set_datasource(ds); map.add_layer(std::move(lyr)); } mapnik::vector_tile_impl::processor ren(map); ren.set_multi_polygon_union(true); ren.set_fill_type(mapnik::vector_tile_impl::even_odd_fill); ren.set_process_all_rings(true); //ren.set_simplify_distance(4.0); ren.update_tile(t); t.buffer_size(prev_buffer_size); } inline void merge_from_compressed_buffer(merc_tile & t, const char * data, std::size_t size, bool validate = false, bool upgrade = false) { if (mapnik::vector_tile_impl::is_gzip_compressed(data,size) || mapnik::vector_tile_impl::is_zlib_compressed(data,size)) { std::string decompressed; mapnik::vector_tile_impl::zlib_decompress(data, size, decompressed); return merge_from_buffer(t, decompressed.data(), decompressed.size(), validate, upgrade); } else { return merge_from_buffer(t, data, size, validate, upgrade); } } inline void add_image_buffer_as_tile_layer(merc_tile & t, std::string const& layer_name, const char * data, std::size_t size) { std::string layer_buffer; protozero::pbf_writer layer_writer(layer_buffer); layer_writer.add_uint32(Layer_Encoding::VERSION, 2); layer_writer.add_string(Layer_Encoding::NAME, layer_name); layer_writer.add_uint32(Layer_Encoding::EXTENT, 4096); { protozero::pbf_writer feature_writer(layer_writer, Layer_Encoding::FEATURES); feature_writer.add_bytes(Feature_Encoding::RASTER, data, size); } t.append_layer_buffer(layer_buffer.data(), layer_buffer.size(), layer_name); } } // end ns vector_tile_impl } // end ns mapnik #endif // __MAPNIK_VECTOR_TILE_LOAD_TILE_H__ mapnik-vector-tile-1.6.1/src/vector_tile_merc_tile.hpp000066400000000000000000000030461324304754200231020ustar00rootroot00000000000000#ifndef __MAPNIK_VECTOR_TILE_MERC_TILE_H__ #define __MAPNIK_VECTOR_TILE_MERC_TILE_H__ // mapnik-vector-tile #include "vector_tile_tile.hpp" #include "vector_tile_projection.hpp" namespace mapnik { namespace vector_tile_impl { class merc_tile : public tile { private: std::uint64_t x_; std::uint64_t y_; std::uint64_t z_; public: merc_tile(std::uint64_t x, std::uint64_t y, std::uint64_t z, std::uint32_t tile_size = 4096, std::int32_t buffer_size = 128) : tile(tile_mercator_bbox(x, y, z), tile_size, buffer_size), x_(x), y_(y), z_(z) {} merc_tile(merc_tile const& rhs) = default; merc_tile(merc_tile && rhs) = default; bool same_extent(merc_tile const& other) { return x_ == other.x_ && y_ == other.y_ && z_ == other.z_; } std::uint64_t x() const { return x_; } void x(std::uint64_t x) { x_ = x; extent_ = tile_mercator_bbox(x_, y_, z_); } std::uint64_t y() const { return y_; } void y(std::uint64_t y) { y_ = y; extent_ = tile_mercator_bbox(x_, y_, z_); } std::uint64_t z() const { return z_; } void z(std::uint64_t z) { z_ = z; extent_ = tile_mercator_bbox(x_, y_, z_); } }; typedef std::shared_ptr merc_tile_ptr; } // end ns vector_tile_impl } // end ns mapnik #endif // __MAPNIK_VECTOR_TILE_MERC_TILE_H__ mapnik-vector-tile-1.6.1/src/vector_tile_processor.cpp000066400000000000000000000001121324304754200231400ustar00rootroot00000000000000#include "vector_tile_processor.hpp" #include "vector_tile_processor.ipp" mapnik-vector-tile-1.6.1/src/vector_tile_processor.hpp000066400000000000000000000117111324304754200231540ustar00rootroot00000000000000#ifndef __MAPNIK_VECTOR_PROCESSOR_H__ #define __MAPNIK_VECTOR_PROCESSOR_H__ // mapnik #include #include #include #include #include #include #include // mapnik-vector-tile #include "vector_tile_config.hpp" #include "vector_tile_tile.hpp" #include "vector_tile_merc_tile.hpp" // std #include namespace mapnik { namespace vector_tile_impl { /* This processor combines concepts from mapnik's feature_style_processor and agg_renderer. It differs in that here we only process layers in isolation of their styles, and because of this we need options for clipping and simplification, for example, that would normally come from a style's symbolizers */ class processor : private mapnik::util::noncopyable { private: mapnik::Map const& m_; std::string image_format_; double scale_factor_; double area_threshold_; double simplify_distance_; polygon_fill_type fill_type_; scaling_method_e scaling_method_; bool strictly_simple_; bool multi_polygon_union_; bool process_all_rings_; std::launch threading_mode_; mapnik::attributes vars_; public: processor(mapnik::Map const& map, mapnik::attributes const& vars = mapnik::attributes()) : m_(map), image_format_("webp"), scale_factor_(1.0), area_threshold_(0.1), simplify_distance_(0.0), fill_type_(positive_fill), scaling_method_(SCALING_BILINEAR), strictly_simple_(true), multi_polygon_union_(false), process_all_rings_(false), threading_mode_(std::launch::deferred), vars_(vars) {} MAPNIK_VECTOR_INLINE void update_tile(tile & t, double scale_denom = 0.0, int offset_x = 0, int offset_y = 0); merc_tile create_tile(std::uint64_t x, std::uint64_t y, std::uint64_t z, std::uint32_t tile_size = 4096, std::int32_t buffer_size = 0, double scale_denom = 0.0, int offset_x = 0, int offset_y = 0) { merc_tile t(x, y, z, tile_size, buffer_size); update_tile(t, scale_denom, offset_x, offset_y); return t; } tile create_tile(mapnik::box2d const & extent, std::uint32_t tile_size = 4096, std::int32_t buffer_size = 0, double scale_denom = 0.0, int offset_x = 0, int offset_y = 0) { tile t(extent, tile_size, buffer_size); update_tile(t, scale_denom, offset_x, offset_y); return t; } void set_simplify_distance(double dist) { simplify_distance_ = dist; } double get_simplify_distance() const { return simplify_distance_; } void set_area_threshold(double value) { area_threshold_ = value; } double get_area_threshold() const { return area_threshold_; } void set_scale_factor(double value) { scale_factor_ = value; } double get_scale_factor() const { return scale_factor_; } void set_process_all_rings(bool value) { process_all_rings_ = value; } bool get_process_all_rings() const { return process_all_rings_; } void set_multi_polygon_union(bool value) { multi_polygon_union_ = value; } bool get_multi_polygon_union() const { return multi_polygon_union_; } void set_strictly_simple(bool value) { strictly_simple_ = value; } bool get_multipolygon_union() const { return strictly_simple_; } void set_fill_type(polygon_fill_type type) { fill_type_ = type; } polygon_fill_type set_fill_type() const { return fill_type_; } void set_scaling_method(scaling_method_e type) { scaling_method_ = type; } scaling_method_e set_scaling_method() const { return scaling_method_; } void set_image_format(std::string const& value) { image_format_ = value; } std::string const& get_image_format() const { return image_format_; } mapnik::attributes const& get_variables() const { return vars_; } void set_threading_mode(std::launch mode) { threading_mode_ = mode; } std::launch set_threading_mode() const { return threading_mode_; } }; } // end ns vector_tile_impl } // end ns mapnik #if !defined(MAPNIK_VECTOR_TILE_LIBRARY) #include "vector_tile_processor.ipp" #endif #endif // __MAPNIK_VECTOR_TILE_PROCESSOR_H__ mapnik-vector-tile-1.6.1/src/vector_tile_processor.ipp000066400000000000000000000316211324304754200231570ustar00rootroot00000000000000// mapnik-vector-tile #include "vector_tile_geometry_clipper.hpp" #include "vector_tile_geometry_feature.hpp" #include "vector_tile_geometry_simplifier.hpp" #include "vector_tile_raster_clipper.hpp" #include "vector_tile_strategy.hpp" #include "vector_tile_tile.hpp" #include "vector_tile_layer.hpp" // mapnik #include #include #include #include #include #include #include #include #if MAPNIK_VERSION >= 300100 #include #else #include #endif // boost #include // std #include namespace mapnik { namespace vector_tile_impl { namespace detail { inline void create_geom_layer(tile_layer & layer, double simplify_distance, double area_threshold, polygon_fill_type fill_type, bool strictly_simple, bool multi_polygon_union, bool process_all_rings) { layer_builder_pbf builder(layer.name(), layer.layer_extent(), layer.get_data()); // query for the features mapnik::featureset_ptr features = layer.get_features(); if (!features) { return; } mapnik::feature_ptr feature = features->next(); if (!feature) { return; } using encoding_process = mapnik::vector_tile_impl::geometry_to_feature_pbf_visitor; using clipping_process = mapnik::vector_tile_impl::geometry_clipper; mapnik::vector_tile_impl::vector_tile_strategy vs(layer.get_view_transform()); mapnik::box2d const& buffered_extent = layer.get_target_buffered_extent(); const mapnik::geometry::point p1_min(buffered_extent.minx(), buffered_extent.miny()); const mapnik::geometry::point p1_max(buffered_extent.maxx(), buffered_extent.maxy()); const mapnik::geometry::point p2_min = mapnik::geometry::transform(p1_min, vs); const mapnik::geometry::point p2_max = mapnik::geometry::transform(p1_max, vs); const double minx = std::min(p2_min.x, p2_max.x); const double maxx = std::max(p2_min.x, p2_max.x); const double miny = std::min(p2_min.y, p2_max.y); const double maxy = std::max(p2_min.y, p2_max.y); const mapnik::box2d tile_clipping_extent(minx, miny, maxx, maxy); if (simplify_distance > 0) { using simplifier_process = mapnik::vector_tile_impl::geometry_simplifier; if (layer.get_proj_transform().equal()) { using strategy_type = mapnik::vector_tile_impl::vector_tile_strategy; using transform_type = mapnik::vector_tile_impl::transform_visitor; while (feature) { mapnik::geometry::geometry const& geom = feature->get_geometry(); encoding_process encoder(*feature, builder); clipping_process clipper(tile_clipping_extent, area_threshold, strictly_simple, multi_polygon_union, fill_type, process_all_rings, encoder); simplifier_process simplifier(simplify_distance, clipper); transform_type transformer(vs, buffered_extent, simplifier); mapnik::util::apply_visitor(transformer, geom); feature = features->next(); } } else { using strategy_type = mapnik::vector_tile_impl::vector_tile_strategy_proj; using transform_type = mapnik::vector_tile_impl::transform_visitor; strategy_type vs2(layer.get_proj_transform(), layer.get_view_transform()); mapnik::box2d const& trans_buffered_extent = layer.get_source_buffered_extent(); while (feature) { mapnik::geometry::geometry const& geom = feature->get_geometry(); encoding_process encoder(*feature, builder); clipping_process clipper(tile_clipping_extent, area_threshold, strictly_simple, multi_polygon_union, fill_type, process_all_rings, encoder); simplifier_process simplifier(simplify_distance, clipper); transform_type transformer(vs2, trans_buffered_extent, simplifier); mapnik::util::apply_visitor(transformer, geom); feature = features->next(); } } } else { if (layer.get_proj_transform().equal()) { using strategy_type = mapnik::vector_tile_impl::vector_tile_strategy; using transform_type = mapnik::vector_tile_impl::transform_visitor; while (feature) { mapnik::geometry::geometry const& geom = feature->get_geometry(); encoding_process encoder(*feature, builder); clipping_process clipper(tile_clipping_extent, area_threshold, strictly_simple, multi_polygon_union, fill_type, process_all_rings, encoder); transform_type transformer(vs, buffered_extent, clipper); mapnik::util::apply_visitor(transformer, geom); feature = features->next(); } } else { using strategy_type = mapnik::vector_tile_impl::vector_tile_strategy_proj; using transform_type = mapnik::vector_tile_impl::transform_visitor; strategy_type vs2(layer.get_proj_transform(), layer.get_view_transform()); mapnik::box2d const& trans_buffered_extent = layer.get_source_buffered_extent(); while (feature) { mapnik::geometry::geometry const& geom = feature->get_geometry(); encoding_process encoder(*feature, builder); clipping_process clipper(tile_clipping_extent, area_threshold, strictly_simple, multi_polygon_union, fill_type, process_all_rings, encoder); transform_type transformer(vs2, trans_buffered_extent, clipper); mapnik::util::apply_visitor(transformer, geom); feature = features->next(); } } } layer.build(builder); return; } inline void create_raster_layer(tile_layer & layer, std::string const& image_format, scaling_method_e scaling_method) { layer_builder_pbf builder(layer.name(), layer.layer_extent(), layer.get_data()); // query for the features mapnik::featureset_ptr features = layer.get_features(); if (!features) { return; } mapnik::feature_ptr feature = features->next(); if (!feature) { return; } mapnik::raster_ptr const& source = feature->get_raster(); if (!source) { return; } mapnik::box2d target_ext = box2d(source->ext_); layer.get_proj_transform().backward(target_ext, PROJ_ENVELOPE_POINTS); mapnik::box2d ext = layer.get_view_transform().forward(target_ext); int start_x = static_cast(std::floor(ext.minx()+.5)); int start_y = static_cast(std::floor(ext.miny()+.5)); int end_x = static_cast(std::floor(ext.maxx()+.5)); int end_y = static_cast(std::floor(ext.maxy()+.5)); int raster_width = end_x - start_x; int raster_height = end_y - start_y; if (raster_width > 0 && raster_height > 0) { builder.make_painted(); raster_clipper visit(*source, target_ext, ext, layer.get_proj_transform(), image_format, scaling_method, layer.layer_extent(), layer.layer_extent(), raster_width, raster_height, start_x, start_y); std::string buffer = mapnik::util::apply_visitor(visit, source->data_); raster_to_feature(buffer, *feature, builder); } layer.build(builder); return; } } // end ns detail MAPNIK_VECTOR_INLINE void processor::update_tile(tile & t, double scale_denom, int offset_x, int offset_y) { // Futures std::vector tile_layers; for (mapnik::layer const& lay : m_.layers()) { if (t.has_layer(lay.name())) { continue; } tile_layers.emplace_back(m_, lay, t.extent(), t.tile_size(), t.buffer_size(), scale_factor_, scale_denom, offset_x, offset_y, vars_); if (!tile_layers.back().is_valid()) { t.add_empty_layer(lay.name()); tile_layers.pop_back(); continue; } } if (threading_mode_ == std::launch::deferred) { for (auto & layer_ref : tile_layers) { if (layer_ref.get_ds()->type() == datasource::Vector) { detail::create_geom_layer(layer_ref, simplify_distance_, area_threshold_, fill_type_, strictly_simple_, multi_polygon_union_, process_all_rings_ ); } else // Raster { detail::create_raster_layer(layer_ref, image_format_, scaling_method_ ); } } } else { std::vector > future_layers; future_layers.reserve(tile_layers.size()); for (auto & layer_ref : tile_layers) { if (layer_ref.get_ds()->type() == datasource::Vector) { future_layers.push_back(std::async( threading_mode_, detail::create_geom_layer, std::ref(layer_ref), simplify_distance_, area_threshold_, fill_type_, strictly_simple_, multi_polygon_union_, process_all_rings_ )); } else // Raster { future_layers.push_back(std::async( threading_mode_, detail::create_raster_layer, std::ref(layer_ref), image_format_, scaling_method_ )); } } for (auto && lay_future : future_layers) { if (!lay_future.valid()) { throw std::runtime_error("unexpected invalid async return"); } lay_future.get(); } } for (auto & layer_ref : tile_layers) { t.add_layer(layer_ref); } } } // end ns vector_tile_impl } // end ns mapnik mapnik-vector-tile-1.6.1/src/vector_tile_projection.hpp000066400000000000000000000017121324304754200233110ustar00rootroot00000000000000#ifndef __MAPNIK_VECTOR_TILE_PROJECTION_H__ #define __MAPNIK_VECTOR_TILE_PROJECTION_H__ // mapnik-vector-tile #include "vector_tile_config.hpp" // mapnik #include #include namespace mapnik { namespace vector_tile_impl { inline mapnik::box2d tile_mercator_bbox(std::uint64_t x, std::uint64_t y, std::uint64_t z) { const double half_of_equator = M_PI * EARTH_RADIUS; const double tile_size = 2.0 * half_of_equator / (1ull << z); double minx = -half_of_equator + x * tile_size; double miny = half_of_equator - (y + 1.0) * tile_size; double maxx = -half_of_equator + (x + 1.0) * tile_size; double maxy = half_of_equator - y * tile_size; return mapnik::box2d(minx,miny,maxx,maxy); } } // end vector_tile_impl ns } // end mapnik ns #endif // __MAPNIK_VECTOR_TILE_PROJECTION_H__ mapnik-vector-tile-1.6.1/src/vector_tile_raster_clipper.cpp000066400000000000000000000001241324304754200241420ustar00rootroot00000000000000#include "vector_tile_raster_clipper.hpp" #include "vector_tile_raster_clipper.ipp" mapnik-vector-tile-1.6.1/src/vector_tile_raster_clipper.hpp000066400000000000000000000056741324304754200241660ustar00rootroot00000000000000#ifndef __MAPNIK_VECTOR_TILE_RASTER_CLIPPER_H__ #define __MAPNIK_VECTOR_TILE_RASTER_CLIPPER_H__ // mapnik-vector-tile #include "vector_tile_config.hpp" // mapnik #include #include #include #include // std #include namespace mapnik { namespace vector_tile_impl { struct raster_clipper { private: mapnik::raster const& source_; box2d const& target_ext_; box2d const& ext_; mapnik::proj_transform const& prj_trans_; std::string const& image_format_; scaling_method_e scaling_method_; unsigned width_; unsigned height_; unsigned raster_width_; unsigned raster_height_; int start_x_; int start_y_; public: raster_clipper(mapnik::raster const& source, box2d const& target_ext, box2d const& ext, mapnik::proj_transform const& prj_trans, std::string const& image_format, scaling_method_e scaling_method, unsigned width, unsigned height, unsigned raster_width, unsigned raster_height, int start_x, int start_y) : source_(source), target_ext_(target_ext), ext_(ext), prj_trans_(prj_trans), image_format_(image_format), scaling_method_(scaling_method), width_(width), height_(height), raster_width_(raster_width), raster_height_(raster_height), start_x_(start_x), start_y_(start_y) { } MAPNIK_VECTOR_INLINE std::string operator() (mapnik::image_rgba8 & source_data); MAPNIK_VECTOR_INLINE std::string operator() (mapnik::image_gray8 & source_data); MAPNIK_VECTOR_INLINE std::string operator() (mapnik::image_gray8s & source_data); MAPNIK_VECTOR_INLINE std::string operator() (mapnik::image_gray16 & source_data); MAPNIK_VECTOR_INLINE std::string operator() (mapnik::image_gray16s & source_data); MAPNIK_VECTOR_INLINE std::string operator() (mapnik::image_gray32 & source_data); MAPNIK_VECTOR_INLINE std::string operator() (mapnik::image_gray32s & source_data); MAPNIK_VECTOR_INLINE std::string operator() (mapnik::image_gray32f & source_data); MAPNIK_VECTOR_INLINE std::string operator() (mapnik::image_gray64 & source_data); MAPNIK_VECTOR_INLINE std::string operator() (mapnik::image_gray64s & source_data); MAPNIK_VECTOR_INLINE std::string operator() (mapnik::image_gray64f & source_data); std::string operator() (image_null &) const { throw std::runtime_error("Null data passed to visitor"); } }; } // end ns vector_tile_impl } // end ns mapnik #if !defined(MAPNIK_VECTOR_TILE_LIBRARY) #include "vector_tile_raster_clipper.ipp" #endif #endif // __MAPNIK_VECTOR_TILE_RASTER_CLIPPER_H__ mapnik-vector-tile-1.6.1/src/vector_tile_raster_clipper.ipp000066400000000000000000000527741324304754200241720ustar00rootroot00000000000000// mapnik #include #include #include #include #include #include #include #include // agg #include "agg_rendering_buffer.h" #include "agg_pixfmt_rgba.h" #include "agg_pixfmt_gray.h" #include "agg_renderer_base.h" namespace mapnik { namespace vector_tile_impl { MAPNIK_VECTOR_INLINE std::string raster_clipper::operator() (mapnik::image_rgba8 & source_data) { mapnik::image_rgba8 data(raster_width_, raster_height_, true, true); mapnik::raster target(target_ext_, std::move(data), source_.get_filter_factor()); if (!prj_trans_.equal()) { mapnik::premultiply_alpha(source_data); double offset_x = ext_.minx() - start_x_; double offset_y = ext_.miny() - start_y_; reproject_and_scale_raster(target, source_, prj_trans_, offset_x, offset_y, width_, scaling_method_); } else if ((raster_width_ == source_data.width()) && (raster_height_ == source_data.height())) { mapnik::demultiply_alpha(source_data); return mapnik::save_to_string(source_data, image_format_); } else { mapnik::premultiply_alpha(source_data); double image_ratio_x = ext_.width() / source_data.width(); double image_ratio_y = ext_.height() / source_data.height(); scale_image_agg(util::get(target.data_), source_data, scaling_method_, image_ratio_x, image_ratio_y, 0.0, 0.0, source_.get_filter_factor()); } using pixfmt_type = agg::pixfmt_rgba32_pre; using renderer_type = agg::renderer_base; mapnik::image_rgba8 im_tile(width_, height_, true, true); agg::rendering_buffer dst_buffer(im_tile.bytes(), im_tile.width(), im_tile.height(), im_tile.row_size()); agg::rendering_buffer src_buffer(target.data_.bytes(),target.data_.width(), target.data_.height(), target.data_.row_size()); pixfmt_type src_pixf(src_buffer); pixfmt_type dst_pixf(dst_buffer); renderer_type ren(dst_pixf); ren.copy_from(src_pixf,0,start_x_, start_y_); mapnik::demultiply_alpha(im_tile); return mapnik::save_to_string(im_tile, image_format_); } MAPNIK_VECTOR_INLINE std::string raster_clipper::operator() (mapnik::image_gray8 & source_data) { mapnik::image_gray8 data(raster_width_, raster_height_); mapnik::raster target(target_ext_, data, source_.get_filter_factor()); if (!prj_trans_.equal()) { double offset_x = ext_.minx() - start_x_; double offset_y = ext_.miny() - start_y_; reproject_and_scale_raster(target, source_, prj_trans_, offset_x, offset_y, width_, scaling_method_); } else if ((raster_width_ == source_data.width()) && (raster_height_ == source_data.height())) { mapnik::image_any any(source_data); return mapnik::save_to_string(any, image_format_); } else { double image_ratio_x = ext_.width() / source_data.width(); double image_ratio_y = ext_.height() / source_data.height(); scale_image_agg(util::get(target.data_), source_data, scaling_method_, image_ratio_x, image_ratio_y, 0.0, 0.0, source_.get_filter_factor()); } using pixfmt_type = agg::pixfmt_gray8; using renderer_type = agg::renderer_base; mapnik::image_any im_tile(width_, height_, mapnik::image_dtype_gray8); agg::rendering_buffer dst_buffer(im_tile.bytes(), im_tile.width(), im_tile.height(), im_tile.row_size()); agg::rendering_buffer src_buffer(target.data_.bytes(),target.data_.width(), target.data_.height(), target.data_.row_size()); pixfmt_type src_pixf(src_buffer); pixfmt_type dst_pixf(dst_buffer); renderer_type ren(dst_pixf); ren.copy_from(src_pixf,0,start_x_, start_y_); return mapnik::save_to_string(im_tile, image_format_); } MAPNIK_VECTOR_INLINE std::string raster_clipper::operator() (mapnik::image_gray8s & source_data) { mapnik::image_gray8s data(raster_width_, raster_height_); mapnik::raster target(target_ext_, data, source_.get_filter_factor()); if (!prj_trans_.equal()) { double offset_x = ext_.minx() - start_x_; double offset_y = ext_.miny() - start_y_; reproject_and_scale_raster(target, source_, prj_trans_, offset_x, offset_y, width_, scaling_method_); } else if ((raster_width_ == source_data.width()) && (raster_height_ == source_data.height())) { mapnik::image_any any(source_data); return mapnik::save_to_string(any, image_format_); } else { double image_ratio_x = ext_.width() / source_data.width(); double image_ratio_y = ext_.height() / source_data.height(); scale_image_agg(util::get(target.data_), source_data, scaling_method_, image_ratio_x, image_ratio_y, 0.0, 0.0, source_.get_filter_factor()); } using pixfmt_type = agg::pixfmt_gray8; using renderer_type = agg::renderer_base; mapnik::image_any im_tile(width_, height_, mapnik::image_dtype_gray8s); agg::rendering_buffer dst_buffer(im_tile.bytes(), im_tile.width(), im_tile.height(), im_tile.row_size()); agg::rendering_buffer src_buffer(target.data_.bytes(),target.data_.width(), target.data_.height(), target.data_.row_size()); pixfmt_type src_pixf(src_buffer); pixfmt_type dst_pixf(dst_buffer); renderer_type ren(dst_pixf); ren.copy_from(src_pixf,0,start_x_, start_y_); return mapnik::save_to_string(im_tile, image_format_); } MAPNIK_VECTOR_INLINE std::string raster_clipper::operator() (mapnik::image_gray16 & source_data) { mapnik::image_gray16 data(raster_width_, raster_height_); mapnik::raster target(target_ext_, data, source_.get_filter_factor()); if (!prj_trans_.equal()) { double offset_x = ext_.minx() - start_x_; double offset_y = ext_.miny() - start_y_; reproject_and_scale_raster(target, source_, prj_trans_, offset_x, offset_y, width_, scaling_method_); } else if ((raster_width_ == source_data.width()) && (raster_height_ == source_data.height())) { mapnik::image_any any(source_data); return mapnik::save_to_string(any, image_format_); } else { double image_ratio_x = ext_.width() / source_data.width(); double image_ratio_y = ext_.height() / source_data.height(); scale_image_agg(util::get(target.data_), source_data, scaling_method_, image_ratio_x, image_ratio_y, 0.0, 0.0, source_.get_filter_factor()); } using pixfmt_type = agg::pixfmt_gray16; using renderer_type = agg::renderer_base; mapnik::image_any im_tile(width_, height_, mapnik::image_dtype_gray16); agg::rendering_buffer dst_buffer(im_tile.bytes(), im_tile.width(), im_tile.height(), im_tile.row_size()); agg::rendering_buffer src_buffer(target.data_.bytes(),target.data_.width(), target.data_.height(), target.data_.row_size()); pixfmt_type src_pixf(src_buffer); pixfmt_type dst_pixf(dst_buffer); renderer_type ren(dst_pixf); ren.copy_from(src_pixf,0,start_x_, start_y_); return mapnik::save_to_string(im_tile, image_format_); } MAPNIK_VECTOR_INLINE std::string raster_clipper::operator() (mapnik::image_gray16s & source_data) { mapnik::image_gray16s data(raster_width_, raster_height_); mapnik::raster target(target_ext_, data, source_.get_filter_factor()); if (!prj_trans_.equal()) { double offset_x = ext_.minx() - start_x_; double offset_y = ext_.miny() - start_y_; reproject_and_scale_raster(target, source_, prj_trans_, offset_x, offset_y, width_, scaling_method_); } else if ((raster_width_ == source_data.width()) && (raster_height_ == source_data.height())) { mapnik::image_any any(source_data); return mapnik::save_to_string(any, image_format_); } else { double image_ratio_x = ext_.width() / source_data.width(); double image_ratio_y = ext_.height() / source_data.height(); scale_image_agg(util::get(target.data_), source_data, scaling_method_, image_ratio_x, image_ratio_y, 0.0, 0.0, source_.get_filter_factor()); } using pixfmt_type = agg::pixfmt_gray16; using renderer_type = agg::renderer_base; mapnik::image_any im_tile(width_, height_, mapnik::image_dtype_gray16s); agg::rendering_buffer dst_buffer(im_tile.bytes(), im_tile.width(), im_tile.height(), im_tile.row_size()); agg::rendering_buffer src_buffer(target.data_.bytes(),target.data_.width(), target.data_.height(), target.data_.row_size()); pixfmt_type src_pixf(src_buffer); pixfmt_type dst_pixf(dst_buffer); renderer_type ren(dst_pixf); ren.copy_from(src_pixf,0,start_x_, start_y_); return mapnik::save_to_string(im_tile, image_format_); } MAPNIK_VECTOR_INLINE std::string raster_clipper::operator() (mapnik::image_gray32 & source_data) { mapnik::image_gray32 data(raster_width_, raster_height_); mapnik::raster target(target_ext_, data, source_.get_filter_factor()); if (!prj_trans_.equal()) { double offset_x = ext_.minx() - start_x_; double offset_y = ext_.miny() - start_y_; reproject_and_scale_raster(target, source_, prj_trans_, offset_x, offset_y, width_, scaling_method_); } else if ((raster_width_ == source_data.width()) && (raster_height_ == source_data.height())) { mapnik::image_any any(source_data); return mapnik::save_to_string(any, image_format_); } else { double image_ratio_x = ext_.width() / source_data.width(); double image_ratio_y = ext_.height() / source_data.height(); scale_image_agg(util::get(target.data_), source_data, scaling_method_, image_ratio_x, image_ratio_y, 0.0, 0.0, source_.get_filter_factor()); } using pixfmt_type = agg::pixfmt_gray32; using renderer_type = agg::renderer_base; mapnik::image_any im_tile(width_, height_, mapnik::image_dtype_gray32); agg::rendering_buffer dst_buffer(im_tile.bytes(), im_tile.width(), im_tile.height(), im_tile.row_size()); agg::rendering_buffer src_buffer(target.data_.bytes(),target.data_.width(), target.data_.height(), target.data_.row_size()); pixfmt_type src_pixf(src_buffer); pixfmt_type dst_pixf(dst_buffer); renderer_type ren(dst_pixf); ren.copy_from(src_pixf,0,start_x_, start_y_); return mapnik::save_to_string(im_tile, image_format_); } MAPNIK_VECTOR_INLINE std::string raster_clipper::operator() (mapnik::image_gray32s & source_data) { mapnik::image_gray32s data(raster_width_, raster_height_); mapnik::raster target(target_ext_, data, source_.get_filter_factor()); if (!prj_trans_.equal()) { double offset_x = ext_.minx() - start_x_; double offset_y = ext_.miny() - start_y_; reproject_and_scale_raster(target, source_, prj_trans_, offset_x, offset_y, width_, scaling_method_); } else if ((raster_width_ == source_data.width()) && (raster_height_ == source_data.height())) { mapnik::image_any any(source_data); return mapnik::save_to_string(any, image_format_); } else { double image_ratio_x = ext_.width() / source_data.width(); double image_ratio_y = ext_.height() / source_data.height(); scale_image_agg(util::get(target.data_), source_data, scaling_method_, image_ratio_x, image_ratio_y, 0.0, 0.0, source_.get_filter_factor()); } using pixfmt_type = agg::pixfmt_gray32; using renderer_type = agg::renderer_base; mapnik::image_any im_tile(width_, height_, mapnik::image_dtype_gray32s); agg::rendering_buffer dst_buffer(im_tile.bytes(), im_tile.width(), im_tile.height(), im_tile.row_size()); agg::rendering_buffer src_buffer(target.data_.bytes(),target.data_.width(), target.data_.height(), target.data_.row_size()); pixfmt_type src_pixf(src_buffer); pixfmt_type dst_pixf(dst_buffer); renderer_type ren(dst_pixf); ren.copy_from(src_pixf,0,start_x_, start_y_); return mapnik::save_to_string(im_tile, image_format_); } MAPNIK_VECTOR_INLINE std::string raster_clipper::operator() (mapnik::image_gray32f & source_data) { mapnik::image_gray32f data(raster_width_, raster_height_); mapnik::raster target(target_ext_, data, source_.get_filter_factor()); if (!prj_trans_.equal()) { double offset_x = ext_.minx() - start_x_; double offset_y = ext_.miny() - start_y_; reproject_and_scale_raster(target, source_, prj_trans_, offset_x, offset_y, width_, scaling_method_); } else if ((raster_width_ == source_data.width()) && (raster_height_ == source_data.height())) { mapnik::image_any any(source_data); return mapnik::save_to_string(any, image_format_); } else { double image_ratio_x = ext_.width() / source_data.width(); double image_ratio_y = ext_.height() / source_data.height(); scale_image_agg(util::get(target.data_), source_data, scaling_method_, image_ratio_x, image_ratio_y, 0.0, 0.0, source_.get_filter_factor()); } using pixfmt_type = agg::pixfmt_gray32; using renderer_type = agg::renderer_base; mapnik::image_any im_tile(width_, height_, mapnik::image_dtype_gray32f); agg::rendering_buffer dst_buffer(im_tile.bytes(), im_tile.width(), im_tile.height(), im_tile.row_size()); agg::rendering_buffer src_buffer(target.data_.bytes(),target.data_.width(), target.data_.height(), target.data_.row_size()); pixfmt_type src_pixf(src_buffer); pixfmt_type dst_pixf(dst_buffer); renderer_type ren(dst_pixf); ren.copy_from(src_pixf,0,start_x_, start_y_); return mapnik::save_to_string(im_tile, image_format_); } MAPNIK_VECTOR_INLINE std::string raster_clipper::operator() (mapnik::image_gray64 & source_data) { mapnik::image_gray64 data(raster_width_, raster_height_); mapnik::raster target(target_ext_, data, source_.get_filter_factor()); if (!prj_trans_.equal()) { double offset_x = ext_.minx() - start_x_; double offset_y = ext_.miny() - start_y_; reproject_and_scale_raster(target, source_, prj_trans_, offset_x, offset_y, width_, scaling_method_); } else if ((raster_width_ == source_data.width()) && (raster_height_ == source_data.height())) { mapnik::image_any any(source_data); return mapnik::save_to_string(any, image_format_); } else { double image_ratio_x = ext_.width() / source_data.width(); double image_ratio_y = ext_.height() / source_data.height(); scale_image_agg(util::get(target.data_), source_data, scaling_method_, image_ratio_x, image_ratio_y, 0.0, 0.0, source_.get_filter_factor()); } using pixfmt_type = agg::pixfmt_gray32; using renderer_type = agg::renderer_base; mapnik::image_any im_tile(width_, height_, mapnik::image_dtype_gray64); agg::rendering_buffer dst_buffer(im_tile.bytes(), im_tile.width(), im_tile.height(), im_tile.row_size()); agg::rendering_buffer src_buffer(target.data_.bytes(),target.data_.width(), target.data_.height(), target.data_.row_size()); pixfmt_type src_pixf(src_buffer); pixfmt_type dst_pixf(dst_buffer); renderer_type ren(dst_pixf); ren.copy_from(src_pixf,0,start_x_, start_y_); return mapnik::save_to_string(im_tile, image_format_); } MAPNIK_VECTOR_INLINE std::string raster_clipper::operator() (mapnik::image_gray64s & source_data) { mapnik::image_gray64s data(raster_width_, raster_height_); mapnik::raster target(target_ext_, data, source_.get_filter_factor()); if (!prj_trans_.equal()) { double offset_x = ext_.minx() - start_x_; double offset_y = ext_.miny() - start_y_; reproject_and_scale_raster(target, source_, prj_trans_, offset_x, offset_y, width_, scaling_method_); } else if ((raster_width_ == source_data.width()) && (raster_height_ == source_data.height())) { mapnik::image_any any(source_data); return mapnik::save_to_string(any, image_format_); } else { double image_ratio_x = ext_.width() / source_data.width(); double image_ratio_y = ext_.height() / source_data.height(); scale_image_agg(util::get(target.data_), source_data, scaling_method_, image_ratio_x, image_ratio_y, 0.0, 0.0, source_.get_filter_factor()); } using pixfmt_type = agg::pixfmt_gray32; using renderer_type = agg::renderer_base; mapnik::image_any im_tile(width_, height_, mapnik::image_dtype_gray64s); agg::rendering_buffer dst_buffer(im_tile.bytes(), im_tile.width(), im_tile.height(), im_tile.row_size()); agg::rendering_buffer src_buffer(target.data_.bytes(),target.data_.width(), target.data_.height(), target.data_.row_size()); pixfmt_type src_pixf(src_buffer); pixfmt_type dst_pixf(dst_buffer); renderer_type ren(dst_pixf); ren.copy_from(src_pixf,0,start_x_, start_y_); return mapnik::save_to_string(im_tile, image_format_); } MAPNIK_VECTOR_INLINE std::string raster_clipper::operator() (mapnik::image_gray64f & source_data) { mapnik::image_gray64f data(raster_width_, raster_height_); mapnik::raster target(target_ext_, data, source_.get_filter_factor()); if (!prj_trans_.equal()) { double offset_x = ext_.minx() - start_x_; double offset_y = ext_.miny() - start_y_; reproject_and_scale_raster(target, source_, prj_trans_, offset_x, offset_y, width_, scaling_method_); } else if ((raster_width_ == source_data.width()) && (raster_height_ == source_data.height())) { mapnik::image_any any(source_data); return mapnik::save_to_string(any, image_format_); } else { double image_ratio_x = ext_.width() / source_data.width(); double image_ratio_y = ext_.height() / source_data.height(); scale_image_agg(util::get(target.data_), source_data, scaling_method_, image_ratio_x, image_ratio_y, 0.0, 0.0, source_.get_filter_factor()); } using pixfmt_type = agg::pixfmt_gray32; using renderer_type = agg::renderer_base; mapnik::image_any im_tile(width_, height_, mapnik::image_dtype_gray64f); agg::rendering_buffer dst_buffer(im_tile.bytes(), im_tile.width(), im_tile.height(), im_tile.row_size()); agg::rendering_buffer src_buffer(target.data_.bytes(),target.data_.width(), target.data_.height(), target.data_.row_size()); pixfmt_type src_pixf(src_buffer); pixfmt_type dst_pixf(dst_buffer); renderer_type ren(dst_pixf); ren.copy_from(src_pixf,0,start_x_, start_y_); return mapnik::save_to_string(im_tile, image_format_); } } // end ns vector_tile_impl } // end ns mapnik mapnik-vector-tile-1.6.1/src/vector_tile_strategy.hpp000066400000000000000000000237271324304754200230110ustar00rootroot00000000000000#ifndef MAPNIK_VECTOR_TILE_STRATEGY_HPP #define MAPNIK_VECTOR_TILE_STRATEGY_HPP // mapnik #include #include #include #include #include #include #if MAPNIK_VERSION >= 300100 #include #else #include #endif // mapbox #include #pragma GCC diagnostic push #include #include "boost_geometry_adapters.hpp" #include #include #pragma GCC diagnostic pop #include namespace mapnik { namespace vector_tile_impl { static constexpr std::int64_t hiRange = 0x3FFFFFFFFFFFFFFFLL; static constexpr double coord_max = static_cast(hiRange); static constexpr double coord_min = -1 * static_cast(hiRange); struct vector_tile_strategy { vector_tile_strategy(view_transform const& tr) : tr_(tr) {} template inline bool apply(P1 const& p1, P2 & p2) const { using p2_type = typename boost::geometry::coordinate_type::type; double x = boost::geometry::get<0>(p1); double y = boost::geometry::get<1>(p1); tr_.forward(&x,&y); x = std::round(x); y = std::round(y); if (x <= coord_min || x >= coord_max || y <= coord_min || y >= coord_max) return false; boost::geometry::set<0>(p2, static_cast(x)); boost::geometry::set<1>(p2, static_cast(y)); return true; } template inline P2 execute(P1 const& p1, bool & status) const { P2 p2; status = apply(p1, p2); return p2; } view_transform const& tr_; }; struct vector_tile_strategy_proj { vector_tile_strategy_proj(proj_transform const& prj_trans, view_transform const& tr) : prj_trans_(prj_trans), tr_(tr) {} template inline bool apply(P1 const& p1, P2 & p2) const { using p2_type = typename boost::geometry::coordinate_type::type; double x = boost::geometry::get<0>(p1); double y = boost::geometry::get<1>(p1); double z = 0.0; if (!prj_trans_.backward(x, y, z)) return false; tr_.forward(&x,&y); x = std::round(x); y = std::round(y); if (x <= coord_min || x >= coord_max || y <= coord_min || y >= coord_max) return false; boost::geometry::set<0>(p2, static_cast(x)); boost::geometry::set<1>(p2, static_cast(y)); return true; } template inline P2 execute(P1 const& p1, bool & status) const { P2 p2; status = apply(p1, p2); return p2; } proj_transform const& prj_trans_; view_transform const& tr_; }; template struct geom_out_visitor { std::shared_ptr> geom; template void operator() (T1 const& g) { geom = std::make_shared>(mapbox::geometry::geometry(g)); } }; // TODO - avoid creating degenerate polygons when first/last point of ring is skipped template struct transform_visitor { TransformType const& tr_; NextProcessor & next_; box2d const& target_clipping_extent_; transform_visitor(TransformType const& tr, box2d const& target_clipping_extent, NextProcessor & next) : tr_(tr), next_(next), target_clipping_extent_(target_clipping_extent) {} inline void operator() (mapnik::geometry::point const& geom) { if (!target_clipping_extent_.intersects(geom.x,geom.y)) { return; } mapbox::geometry::point new_geom; if (!tr_.apply(geom,new_geom)) { return; } return next_(new_geom); } inline void operator() (mapnik::geometry::multi_point const& geom) { mapbox::geometry::multi_point new_geom; new_geom.reserve(geom.size()); for (auto const& pt : geom) { mapbox::geometry::point pt2; if (target_clipping_extent_.intersects(pt.x, pt.y) && tr_.apply(pt,pt2)) { new_geom.push_back(std::move(pt2)); } } if (new_geom.empty()) { return; } return next_(new_geom); } inline void operator() (mapnik::geometry::line_string const& geom) { mapnik::box2d geom_bbox = mapnik::geometry::envelope(geom); if (!target_clipping_extent_.intersects(geom_bbox)) { return; } mapbox::geometry::line_string new_geom; new_geom.reserve(geom.size()); for (auto const& pt : geom) { mapbox::geometry::point pt2; if (tr_.apply(pt,pt2)) { new_geom.push_back(std::move(pt2)); } } return next_(new_geom); } inline void operator() (mapnik::geometry::multi_line_string const& geom) { mapbox::geometry::multi_line_string new_geom; new_geom.reserve(geom.size()); for (auto const& line : geom) { mapnik::box2d line_bbox = mapnik::geometry::envelope(line); if (!target_clipping_extent_.intersects(line_bbox)) continue; mapbox::geometry::line_string new_line; new_line.reserve(line.size()); for (auto const& pt : line) { mapbox::geometry::point pt2; if (tr_.apply(pt,pt2)) { new_line.push_back(std::move(pt2)); } } new_geom.push_back(std::move(new_line)); } if (new_geom.empty()) { return; } return next_(new_geom); } inline void operator() (mapnik::geometry::polygon const& geom) { mapnik::box2d ext_bbox = mapnik::geometry::envelope(geom); if (!target_clipping_extent_.intersects(ext_bbox)) { return; } mapbox::geometry::polygon new_geom; mapbox::geometry::linear_ring exterior_ring; exterior_ring.reserve(geom.exterior_ring.size()); for (auto const& pt : geom.exterior_ring) { mapbox::geometry::point pt2; if (tr_.apply(pt,pt2)) { exterior_ring.push_back(std::move(pt2)); } } new_geom.push_back(std::move(exterior_ring)); for (auto const& ring : geom.interior_rings) { mapnik::box2d ring_bbox = mapnik::geometry::envelope(static_cast const&>(ring)); if (!target_clipping_extent_.intersects(ring_bbox)) { continue; } mapbox::geometry::linear_ring new_ring; new_ring.reserve(ring.size()); for (auto const& pt : ring) { mapbox::geometry::point pt2; if (tr_.apply(pt,pt2)) { new_ring.push_back(std::move(pt2)); } } new_geom.push_back(std::move(new_ring)); } return next_(new_geom); } inline void operator() (mapnik::geometry::multi_polygon const& geom) { mapbox::geometry::multi_polygon new_geom; new_geom.reserve(geom.size()); for (auto const& poly : geom) { mapnik::box2d ext_bbox = mapnik::geometry::envelope(poly); if (!target_clipping_extent_.intersects(ext_bbox)) { continue; } mapbox::geometry::polygon new_poly; mapbox::geometry::linear_ring exterior_ring; exterior_ring.reserve(poly.exterior_ring.size()); for (auto const& pt : poly.exterior_ring) { mapbox::geometry::point pt2; if (tr_.apply(pt,pt2)) { exterior_ring.push_back(std::move(pt2)); } } new_poly.push_back(std::move(exterior_ring)); for (auto const& ring : poly.interior_rings) { mapnik::box2d ring_bbox = mapnik::geometry::envelope(static_cast const&>(ring)); if (!target_clipping_extent_.intersects(ring_bbox)) { continue; } mapbox::geometry::linear_ring new_ring; new_ring.reserve(ring.size()); for (auto const& pt : ring) { mapbox::geometry::point pt2; if (tr_.apply(pt,pt2)) { new_ring.push_back(std::move(pt2)); } } new_poly.push_back(std::move(new_ring)); } new_geom.push_back(std::move(new_poly)); } if (new_geom.empty()) { return; } return next_(new_geom); } inline void operator() (mapnik::geometry::geometry_collection const& geom) { for (auto const& g : geom) { mapnik::util::apply_visitor((*this), g); } } inline void operator() (mapnik::geometry::geometry_empty const&) { return; } }; } } #endif // MAPNIK_VECTOR_TILE_STRATEGY_HPP mapnik-vector-tile-1.6.1/src/vector_tile_tile.cpp000066400000000000000000000001001324304754200220530ustar00rootroot00000000000000#include "vector_tile_tile.hpp" #include "vector_tile_tile.ipp" mapnik-vector-tile-1.6.1/src/vector_tile_tile.hpp000066400000000000000000000104001324304754200220640ustar00rootroot00000000000000#ifndef __MAPNIK_VECTOR_TILE_TILE_H__ #define __MAPNIK_VECTOR_TILE_TILE_H__ // mapnik-vector-tile #include "vector_tile_config.hpp" //protozero #include // mapnik #include // std #include #include #include namespace mapnik { namespace vector_tile_impl { // fwd declare class tile_layer; class tile { protected: std::string buffer_; std::set painted_layers_; std::set empty_layers_; std::set layers_set_; std::vector layers_; mapnik::box2d extent_; std::uint32_t tile_size_; std::int32_t buffer_size_; public: tile(mapnik::box2d const& extent, std::uint32_t tile_size = 4096, std::int32_t buffer_size = 128) : buffer_(), painted_layers_(), empty_layers_(), layers_set_(), layers_(), extent_(extent), tile_size_(tile_size), buffer_size_(buffer_size) {} tile(tile const& rhs) = default; tile(tile && rhs) = default; MAPNIK_VECTOR_INLINE bool add_layer(tile_layer const& layer); void add_empty_layer(std::string const& name) { empty_layers_.insert(name); } const char * data() const { return buffer_.data(); } std::size_t size() const { return buffer_.size(); } std::string const& get_buffer() const { return buffer_; } double scale() const { if (tile_size_ > 0) { return extent_.width()/tile_size_; } return extent_.width(); } box2d get_buffered_extent() const { double extra = 2.0 * scale() * buffer_size_; box2d ext(extent_); double extra_width = extent_.width() + extra; double extra_height = extent_.height() + extra; if (extra_width < 0.0) { extra_width = 0.0; } if (extra_height < 0.0) { extra_height = 0.0; } ext.width(extra_width); ext.height(extra_height); return ext; } void append_to_string(std::string & str) const { str.append(buffer_); } void serialize_to_string(std::string & str) const { str = buffer_; } bool is_painted() const { return !painted_layers_.empty(); } bool is_empty() const { return layers_.empty(); } box2d const& extent() const { return extent_; } std::uint32_t tile_size() const { return tile_size_; } void tile_size(std::uint32_t val) { tile_size_ = val; } std::int32_t buffer_size() const { return buffer_size_; } void buffer_size(std::int32_t val) { buffer_size_ = val; } MAPNIK_VECTOR_INLINE bool append_layer_buffer(const char * data, std::size_t size, std::string const& name); std::set const& get_painted_layers() const { return painted_layers_; } std::set const& get_empty_layers() const { return empty_layers_; } std::vector const& get_layers() const { return layers_; } std::set const& get_layers_set() const { return layers_set_; } bool same_extent(tile const& other) const { return extent_ == other.extent_; } void clear() { buffer_.clear(); empty_layers_.clear(); layers_.clear(); layers_set_.clear(); painted_layers_.clear(); } bool has_layer(std::string const& name) { auto itr = layers_set_.find(name); return itr != layers_set_.end(); } protozero::pbf_reader get_reader() const { return protozero::pbf_reader(buffer_.data(), buffer_.size()); } MAPNIK_VECTOR_INLINE bool layer_reader(std::string const& name, protozero::pbf_reader & layer_msg) const; MAPNIK_VECTOR_INLINE bool layer_reader(std::size_t index, protozero::pbf_reader & layer_msg) const; }; } // end ns vector_tile_impl } // end ns mapnik #if !defined(MAPNIK_VECTOR_TILE_LIBRARY) #include "vector_tile_tile.ipp" #endif #endif // __MAPNIK_VECTOR_TILE_TILE_H__ mapnik-vector-tile-1.6.1/src/vector_tile_tile.ipp000066400000000000000000000050671324304754200221020ustar00rootroot00000000000000// mapnik-vector-tile #include "vector_tile_config.hpp" #include "vector_tile_layer.hpp" //protozero #include #include // std #include #include namespace mapnik { namespace vector_tile_impl { MAPNIK_VECTOR_INLINE bool tile::add_layer(tile_layer const& layer) { std::string const& new_name = layer.name(); if (layer.is_empty()) { empty_layers_.insert(new_name); if (layer.is_painted()) { painted_layers_.insert(new_name); } } else { painted_layers_.insert(new_name); auto p = layers_set_.insert(new_name); if (!p.second) { // Layer already in tile return false; } layers_.push_back(new_name); protozero::pbf_writer tile_writer(buffer_); tile_writer.add_message(Tile_Encoding::LAYERS, layer.get_data()); auto itr = empty_layers_.find(new_name); if (itr != empty_layers_.end()) { empty_layers_.erase(itr); } } return true; } MAPNIK_VECTOR_INLINE bool tile::append_layer_buffer(const char * data, std::size_t size, std::string const& name) { painted_layers_.insert(name); auto p = layers_set_.insert(name); if (!p.second) { // Layer already in tile return false; } layers_.push_back(name); protozero::pbf_writer writer(buffer_); writer.add_message(3, data, size); auto itr = empty_layers_.find(name); if (itr != empty_layers_.end()) { empty_layers_.erase(itr); } return true; } MAPNIK_VECTOR_INLINE bool tile::layer_reader(std::string const& name, protozero::pbf_reader & layer_msg) const { protozero::pbf_reader item(buffer_.data(), buffer_.size()); while (item.next(Tile_Encoding::LAYERS)) { layer_msg = item.get_message(); protozero::pbf_reader lay(layer_msg); while (lay.next(Layer_Encoding::NAME)) { if (lay.get_string() == name) { return true; } } } return false; } MAPNIK_VECTOR_INLINE bool tile::layer_reader(std::size_t index, protozero::pbf_reader & layer_msg) const { protozero::pbf_reader item(buffer_.data(), buffer_.size()); std::size_t idx = 0; while (item.next(Tile_Encoding::LAYERS)) { if (idx == index) { layer_msg = item.get_message(); return true; } ++idx; item.skip(); } return false; } } // end ns vector_tile_impl } // end ns mapnik mapnik-vector-tile-1.6.1/test/000077500000000000000000000000001324304754200162145ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/test/catch.hpp000066400000000000000000012221431324304754200200140ustar00rootroot00000000000000/* * CATCH v1.1 build 3 (master branch) * Generated: 2015-05-21 06:16:00.388118 * ---------------------------------------------------------- * This file has been merged from multiple headers. Please don't edit it directly * Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved. * * Distributed under the Boost Software License, Version 1.0. (See accompanying * file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) */ #ifndef TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED #define TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED #define TWOBLUECUBES_CATCH_HPP_INCLUDED #ifdef __clang__ # pragma clang system_header #elif defined __GNUC__ # pragma GCC system_header #endif // #included from: internal/catch_suppress_warnings.h #define TWOBLUECUBES_CATCH_SUPPRESS_WARNINGS_H_INCLUDED #ifdef __clang__ # ifdef __ICC // icpc defines the __clang__ macro # pragma warning(push) # pragma warning(disable: 161 1682) # else // __ICC # pragma clang diagnostic ignored "-Wglobal-constructors" # pragma clang diagnostic ignored "-Wvariadic-macros" # pragma clang diagnostic ignored "-Wc99-extensions" # pragma clang diagnostic ignored "-Wunused-variable" # pragma clang diagnostic push # pragma clang diagnostic ignored "-Wpadded" # pragma clang diagnostic ignored "-Wc++98-compat" # pragma clang diagnostic ignored "-Wc++98-compat-pedantic" # pragma clang diagnostic ignored "-Wswitch-enum" # endif #elif defined __GNUC__ # pragma GCC diagnostic ignored "-Wvariadic-macros" # pragma GCC diagnostic ignored "-Wunused-variable" # pragma GCC diagnostic push # pragma GCC diagnostic ignored "-Wpadded" #endif #if defined(CATCH_CONFIG_MAIN) || defined(CATCH_CONFIG_RUNNER) # define CATCH_IMPL #endif #ifdef CATCH_IMPL # ifndef CLARA_CONFIG_MAIN # define CLARA_CONFIG_MAIN_NOT_DEFINED # define CLARA_CONFIG_MAIN # endif #endif // #included from: internal/catch_notimplemented_exception.h #define TWOBLUECUBES_CATCH_NOTIMPLEMENTED_EXCEPTION_H_INCLUDED // #included from: catch_common.h #define TWOBLUECUBES_CATCH_COMMON_H_INCLUDED #define INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line ) name##line #define INTERNAL_CATCH_UNIQUE_NAME_LINE( name, line ) INTERNAL_CATCH_UNIQUE_NAME_LINE2( name, line ) #define INTERNAL_CATCH_UNIQUE_NAME( name ) INTERNAL_CATCH_UNIQUE_NAME_LINE( name, __LINE__ ) #define INTERNAL_CATCH_STRINGIFY2( expr ) #expr #define INTERNAL_CATCH_STRINGIFY( expr ) INTERNAL_CATCH_STRINGIFY2( expr ) #include #include #include // #included from: catch_compiler_capabilities.h #define TWOBLUECUBES_CATCH_COMPILER_CAPABILITIES_HPP_INCLUDED // Detect a number of compiler features - mostly C++11/14 conformance - by compiler // The following features are defined: // // CATCH_CONFIG_CPP11_NULLPTR : is nullptr supported? // CATCH_CONFIG_CPP11_NOEXCEPT : is noexcept supported? // CATCH_CONFIG_CPP11_GENERATED_METHODS : The delete and default keywords for compiler generated methods // CATCH_CONFIG_CPP11_IS_ENUM : std::is_enum is supported? // CATCH_CONFIG_CPP11_TUPLE : std::tuple is supported // CATCH_CONFIG_CPP11_OR_GREATER : Is C++11 supported? // CATCH_CONFIG_SFINAE : is basic (C++03) SFINAE supported? // CATCH_CONFIG_VARIADIC_MACROS : are variadic macros supported? // A lot of this code is based on Boost (1.53) #ifdef __clang__ # if __has_feature(cxx_nullptr) # define CATCH_CONFIG_CPP11_NULLPTR # endif # if __has_feature(cxx_noexcept) # define CATCH_CONFIG_CPP11_NOEXCEPT # endif #endif // __clang__ //////////////////////////////////////////////////////////////////////////////// // Borland #ifdef __BORLANDC__ #if (__BORLANDC__ > 0x582 ) //#define CATCH_CONFIG_SFINAE // Not confirmed #endif #endif // __BORLANDC__ //////////////////////////////////////////////////////////////////////////////// // EDG #ifdef __EDG_VERSION__ #if (__EDG_VERSION__ > 238 ) //#define CATCH_CONFIG_SFINAE // Not confirmed #endif #endif // __EDG_VERSION__ //////////////////////////////////////////////////////////////////////////////// // Digital Mars #ifdef __DMC__ #if (__DMC__ > 0x840 ) //#define CATCH_CONFIG_SFINAE // Not confirmed #endif #endif // __DMC__ //////////////////////////////////////////////////////////////////////////////// // GCC #ifdef __GNUC__ #if __GNUC__ < 3 #if (__GNUC_MINOR__ >= 96 ) //#define CATCH_CONFIG_SFINAE #endif #elif __GNUC__ >= 3 // #define CATCH_CONFIG_SFINAE // Taking this out completely for now #endif // __GNUC__ < 3 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6 && defined(__GXX_EXPERIMENTAL_CXX0X__) ) #define CATCH_CONFIG_CPP11_NULLPTR #endif #endif // __GNUC__ //////////////////////////////////////////////////////////////////////////////// // Visual C++ #ifdef _MSC_VER #if (_MSC_VER >= 1310 ) // (VC++ 7.0+) //#define CATCH_CONFIG_SFINAE // Not confirmed #endif #if (_MSC_VER >= 1600) #define CATCH_CONFIG_CPP11_NULLPTR #endif #if (_MSC_VER >= 1900 ) // (VC++ 13 (VS2015)) #define CATCH_CONFIG_CPP11_NOEXCEPT #define CATCH_CONFIG_CPP11_GENERATED_METHODS #endif #endif // _MSC_VER // Use variadic macros if the compiler supports them #if ( defined _MSC_VER && _MSC_VER > 1400 && !defined __EDGE__) || \ ( defined __WAVE__ && __WAVE_HAS_VARIADICS ) || \ ( defined __GNUC__ && __GNUC__ >= 3 ) || \ ( !defined __cplusplus && __STDC_VERSION__ >= 199901L || __cplusplus >= 201103L ) #ifndef CATCH_CONFIG_NO_VARIADIC_MACROS #define CATCH_CONFIG_VARIADIC_MACROS #endif #endif //////////////////////////////////////////////////////////////////////////////// // C++ language feature support // catch all support for C++11 #if (__cplusplus >= 201103L) # define CATCH_CPP11_OR_GREATER # ifndef CATCH_CONFIG_CPP11_NULLPTR # define CATCH_CONFIG_CPP11_NULLPTR # endif # ifndef CATCH_CONFIG_CPP11_NOEXCEPT # define CATCH_CONFIG_CPP11_NOEXCEPT # endif # ifndef CATCH_CONFIG_CPP11_GENERATED_METHODS # define CATCH_CONFIG_CPP11_GENERATED_METHODS # endif # ifndef CATCH_CONFIG_CPP11_IS_ENUM # define CATCH_CONFIG_CPP11_IS_ENUM # endif # ifndef CATCH_CONFIG_CPP11_TUPLE # define CATCH_CONFIG_CPP11_TUPLE # endif # ifndef CATCH_CONFIG_SFINAE //# define CATCH_CONFIG_SFINAE // Don't use, for now # endif # ifndef CATCH_CONFIG_VARIADIC_MACROS # define CATCH_CONFIG_VARIADIC_MACROS # endif #endif // __cplusplus >= 201103L // noexcept support: #if defined(CATCH_CONFIG_CPP11_NOEXCEPT) && !defined(CATCH_NOEXCEPT) # define CATCH_NOEXCEPT noexcept # define CATCH_NOEXCEPT_IS(x) noexcept(x) #else # define CATCH_NOEXCEPT throw() # define CATCH_NOEXCEPT_IS(x) #endif namespace Catch { class NonCopyable { #ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS NonCopyable( NonCopyable const& ) = delete; NonCopyable( NonCopyable && ) = delete; NonCopyable& operator = ( NonCopyable const& ) = delete; NonCopyable& operator = ( NonCopyable && ) = delete; #else NonCopyable( NonCopyable const& info ); NonCopyable& operator = ( NonCopyable const& ); #endif protected: NonCopyable() {} virtual ~NonCopyable(); }; class SafeBool { public: typedef void (SafeBool::*type)() const; static type makeSafe( bool value ) { return value ? &SafeBool::trueValue : 0; } private: void trueValue() const {} }; template inline void deleteAll( ContainerT& container ) { typename ContainerT::const_iterator it = container.begin(); typename ContainerT::const_iterator itEnd = container.end(); for(; it != itEnd; ++it ) delete *it; } template inline void deleteAllValues( AssociativeContainerT& container ) { typename AssociativeContainerT::const_iterator it = container.begin(); typename AssociativeContainerT::const_iterator itEnd = container.end(); for(; it != itEnd; ++it ) delete it->second; } bool startsWith( std::string const& s, std::string const& prefix ); bool endsWith( std::string const& s, std::string const& suffix ); bool contains( std::string const& s, std::string const& infix ); void toLowerInPlace( std::string& s ); std::string toLower( std::string const& s ); std::string trim( std::string const& str ); bool replaceInPlace( std::string& str, std::string const& replaceThis, std::string const& withThis ); struct pluralise { pluralise( std::size_t count, std::string const& label ); friend std::ostream& operator << ( std::ostream& os, pluralise const& pluraliser ); std::size_t m_count; std::string m_label; }; struct SourceLineInfo { SourceLineInfo(); SourceLineInfo( char const* _file, std::size_t _line ); SourceLineInfo( SourceLineInfo const& other ); # ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS SourceLineInfo( SourceLineInfo && ) = default; SourceLineInfo& operator = ( SourceLineInfo const& ) = default; SourceLineInfo& operator = ( SourceLineInfo && ) = default; # endif bool empty() const; bool operator == ( SourceLineInfo const& other ) const; bool operator < ( SourceLineInfo const& other ) const; std::string file; std::size_t line; }; std::ostream& operator << ( std::ostream& os, SourceLineInfo const& info ); // This is just here to avoid compiler warnings with macro constants and boolean literals inline bool isTrue( bool value ){ return value; } inline bool alwaysTrue() { return true; } inline bool alwaysFalse() { return false; } void throwLogicError( std::string const& message, SourceLineInfo const& locationInfo ); // Use this in variadic streaming macros to allow // >> +StreamEndStop // as well as // >> stuff +StreamEndStop struct StreamEndStop { std::string operator+() { return std::string(); } }; template T const& operator + ( T const& value, StreamEndStop ) { return value; } } #define CATCH_INTERNAL_LINEINFO ::Catch::SourceLineInfo( __FILE__, static_cast( __LINE__ ) ) #define CATCH_INTERNAL_ERROR( msg ) ::Catch::throwLogicError( msg, CATCH_INTERNAL_LINEINFO ); #include namespace Catch { class NotImplementedException : public std::exception { public: NotImplementedException( SourceLineInfo const& lineInfo ); NotImplementedException( NotImplementedException const& ) {} virtual ~NotImplementedException() CATCH_NOEXCEPT {} virtual const char* what() const CATCH_NOEXCEPT; private: std::string m_what; SourceLineInfo m_lineInfo; }; } // end namespace Catch /////////////////////////////////////////////////////////////////////////////// #define CATCH_NOT_IMPLEMENTED throw Catch::NotImplementedException( CATCH_INTERNAL_LINEINFO ) // #included from: internal/catch_context.h #define TWOBLUECUBES_CATCH_CONTEXT_H_INCLUDED // #included from: catch_interfaces_generators.h #define TWOBLUECUBES_CATCH_INTERFACES_GENERATORS_H_INCLUDED #include namespace Catch { struct IGeneratorInfo { virtual ~IGeneratorInfo(); virtual bool moveNext() = 0; virtual std::size_t getCurrentIndex() const = 0; }; struct IGeneratorsForTest { virtual ~IGeneratorsForTest(); virtual IGeneratorInfo& getGeneratorInfo( std::string const& fileInfo, std::size_t size ) = 0; virtual bool moveNext() = 0; }; IGeneratorsForTest* createGeneratorsForTest(); } // end namespace Catch // #included from: catch_ptr.hpp #define TWOBLUECUBES_CATCH_PTR_HPP_INCLUDED #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wpadded" #endif namespace Catch { // An intrusive reference counting smart pointer. // T must implement addRef() and release() methods // typically implementing the IShared interface template class Ptr { public: Ptr() : m_p( NULL ){} Ptr( T* p ) : m_p( p ){ if( m_p ) m_p->addRef(); } Ptr( Ptr const& other ) : m_p( other.m_p ){ if( m_p ) m_p->addRef(); } ~Ptr(){ if( m_p ) m_p->release(); } void reset() { if( m_p ) m_p->release(); m_p = NULL; } Ptr& operator = ( T* p ){ Ptr temp( p ); swap( temp ); return *this; } Ptr& operator = ( Ptr const& other ){ Ptr temp( other ); swap( temp ); return *this; } void swap( Ptr& other ) { std::swap( m_p, other.m_p ); } T* get() { return m_p; } const T* get() const{ return m_p; } T& operator*() const { return *m_p; } T* operator->() const { return m_p; } bool operator !() const { return m_p == NULL; } operator SafeBool::type() const { return SafeBool::makeSafe( m_p != NULL ); } private: T* m_p; }; struct IShared : NonCopyable { virtual ~IShared(); virtual void addRef() const = 0; virtual void release() const = 0; }; template struct SharedImpl : T { SharedImpl() : m_rc( 0 ){} virtual void addRef() const { ++m_rc; } virtual void release() const { if( --m_rc == 0 ) delete this; } mutable unsigned int m_rc; }; } // end namespace Catch #ifdef __clang__ #pragma clang diagnostic pop #endif #include #include #include namespace Catch { class TestCase; class Stream; struct IResultCapture; struct IRunner; struct IGeneratorsForTest; struct IConfig; struct IContext { virtual ~IContext(); virtual IResultCapture* getResultCapture() = 0; virtual IRunner* getRunner() = 0; virtual size_t getGeneratorIndex( std::string const& fileInfo, size_t totalSize ) = 0; virtual bool advanceGeneratorsForCurrentTest() = 0; virtual Ptr getConfig() const = 0; }; struct IMutableContext : IContext { virtual ~IMutableContext(); virtual void setResultCapture( IResultCapture* resultCapture ) = 0; virtual void setRunner( IRunner* runner ) = 0; virtual void setConfig( Ptr const& config ) = 0; }; IContext& getCurrentContext(); IMutableContext& getCurrentMutableContext(); void cleanUpContext(); Stream createStream( std::string const& streamName ); } // #included from: internal/catch_test_registry.hpp #define TWOBLUECUBES_CATCH_TEST_REGISTRY_HPP_INCLUDED // #included from: catch_interfaces_testcase.h #define TWOBLUECUBES_CATCH_INTERFACES_TESTCASE_H_INCLUDED #include namespace Catch { class TestSpec; struct ITestCase : IShared { virtual void invoke () const = 0; protected: virtual ~ITestCase(); }; class TestCase; struct IConfig; struct ITestCaseRegistry { virtual ~ITestCaseRegistry(); virtual std::vector const& getAllTests() const = 0; virtual void getFilteredTests( TestSpec const& testSpec, IConfig const& config, std::vector& matchingTestCases, bool negated = false ) const = 0; }; } namespace Catch { template class MethodTestCase : public SharedImpl { public: MethodTestCase( void (C::*method)() ) : m_method( method ) {} virtual void invoke() const { C obj; (obj.*m_method)(); } private: virtual ~MethodTestCase() {} void (C::*m_method)(); }; typedef void(*TestFunction)(); struct NameAndDesc { NameAndDesc( const char* _name = "", const char* _description= "" ) : name( _name ), description( _description ) {} const char* name; const char* description; }; struct AutoReg { AutoReg( TestFunction function, SourceLineInfo const& lineInfo, NameAndDesc const& nameAndDesc ); template AutoReg( void (C::*method)(), char const* className, NameAndDesc const& nameAndDesc, SourceLineInfo const& lineInfo ) { registerTestCase( new MethodTestCase( method ), className, nameAndDesc, lineInfo ); } void registerTestCase( ITestCase* testCase, char const* className, NameAndDesc const& nameAndDesc, SourceLineInfo const& lineInfo ); ~AutoReg(); private: AutoReg( AutoReg const& ); void operator= ( AutoReg const& ); }; } // end namespace Catch #ifdef CATCH_CONFIG_VARIADIC_MACROS /////////////////////////////////////////////////////////////////////////////// #define INTERNAL_CATCH_TESTCASE( ... ) \ static void INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )(); \ namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( __VA_ARGS__ ) ); }\ static void INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )() /////////////////////////////////////////////////////////////////////////////// #define INTERNAL_CATCH_METHOD_AS_TEST_CASE( QualifiedMethod, ... ) \ namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &QualifiedMethod, "&" #QualifiedMethod, Catch::NameAndDesc( __VA_ARGS__ ), CATCH_INTERNAL_LINEINFO ); } /////////////////////////////////////////////////////////////////////////////// #define INTERNAL_CATCH_TEST_CASE_METHOD( ClassName, ... )\ namespace{ \ struct INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ) : ClassName{ \ void test(); \ }; \ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( &INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )::test, #ClassName, Catch::NameAndDesc( __VA_ARGS__ ), CATCH_INTERNAL_LINEINFO ); \ } \ void INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )::test() #else /////////////////////////////////////////////////////////////////////////////// #define INTERNAL_CATCH_TESTCASE( Name, Desc ) \ static void INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )(); \ namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ), CATCH_INTERNAL_LINEINFO, Catch::NameAndDesc( Name, Desc ) ); }\ static void INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )() /////////////////////////////////////////////////////////////////////////////// #define INTERNAL_CATCH_METHOD_AS_TEST_CASE( QualifiedMethod, Name, Desc ) \ namespace{ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar )( &QualifiedMethod, "&" #QualifiedMethod, Catch::NameAndDesc( Name, Desc ), CATCH_INTERNAL_LINEINFO ); } /////////////////////////////////////////////////////////////////////////////// #define INTERNAL_CATCH_TEST_CASE_METHOD( ClassName, TestName, Desc )\ namespace{ \ struct INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ ) : ClassName{ \ void test(); \ }; \ Catch::AutoReg INTERNAL_CATCH_UNIQUE_NAME( autoRegistrar ) ( &INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )::test, #ClassName, Catch::NameAndDesc( TestName, Desc ), CATCH_INTERNAL_LINEINFO ); \ } \ void INTERNAL_CATCH_UNIQUE_NAME( ____C_A_T_C_H____T_E_S_T____ )::test() #endif // #included from: internal/catch_capture.hpp #define TWOBLUECUBES_CATCH_CAPTURE_HPP_INCLUDED // #included from: catch_result_builder.h #define TWOBLUECUBES_CATCH_RESULT_BUILDER_H_INCLUDED // #included from: catch_result_type.h #define TWOBLUECUBES_CATCH_RESULT_TYPE_H_INCLUDED namespace Catch { // ResultWas::OfType enum struct ResultWas { enum OfType { Unknown = -1, Ok = 0, Info = 1, Warning = 2, FailureBit = 0x10, ExpressionFailed = FailureBit | 1, ExplicitFailure = FailureBit | 2, Exception = 0x100 | FailureBit, ThrewException = Exception | 1, DidntThrowException = Exception | 2, FatalErrorCondition = 0x200 | FailureBit }; }; inline bool isOk( ResultWas::OfType resultType ) { return ( resultType & ResultWas::FailureBit ) == 0; } inline bool isJustInfo( int flags ) { return flags == ResultWas::Info; } // ResultDisposition::Flags enum struct ResultDisposition { enum Flags { Normal = 0x01, ContinueOnFailure = 0x02, // Failures fail test, but execution continues FalseTest = 0x04, // Prefix expression with ! SuppressFail = 0x08 // Failures are reported but do not fail the test }; }; inline ResultDisposition::Flags operator | ( ResultDisposition::Flags lhs, ResultDisposition::Flags rhs ) { return static_cast( static_cast( lhs ) | static_cast( rhs ) ); } inline bool shouldContinueOnFailure( int flags ) { return ( flags & ResultDisposition::ContinueOnFailure ) != 0; } inline bool isFalseTest( int flags ) { return ( flags & ResultDisposition::FalseTest ) != 0; } inline bool shouldSuppressFailure( int flags ) { return ( flags & ResultDisposition::SuppressFail ) != 0; } } // end namespace Catch // #included from: catch_assertionresult.h #define TWOBLUECUBES_CATCH_ASSERTIONRESULT_H_INCLUDED #include namespace Catch { struct AssertionInfo { AssertionInfo() {} AssertionInfo( std::string const& _macroName, SourceLineInfo const& _lineInfo, std::string const& _capturedExpression, ResultDisposition::Flags _resultDisposition ); std::string macroName; SourceLineInfo lineInfo; std::string capturedExpression; ResultDisposition::Flags resultDisposition; }; struct AssertionResultData { AssertionResultData() : resultType( ResultWas::Unknown ) {} std::string reconstructedExpression; std::string message; ResultWas::OfType resultType; }; class AssertionResult { public: AssertionResult(); AssertionResult( AssertionInfo const& info, AssertionResultData const& data ); ~AssertionResult(); # ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS AssertionResult( AssertionResult const& ) = default; AssertionResult( AssertionResult && ) = default; AssertionResult& operator = ( AssertionResult const& ) = default; AssertionResult& operator = ( AssertionResult && ) = default; # endif bool isOk() const; bool succeeded() const; ResultWas::OfType getResultType() const; bool hasExpression() const; bool hasMessage() const; std::string getExpression() const; std::string getExpressionInMacro() const; bool hasExpandedExpression() const; std::string getExpandedExpression() const; std::string getMessage() const; SourceLineInfo getSourceInfo() const; std::string getTestMacroName() const; protected: AssertionInfo m_info; AssertionResultData m_resultData; }; } // end namespace Catch namespace Catch { struct TestFailureException{}; template class ExpressionLhs; struct STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison; struct CopyableStream { CopyableStream() {} CopyableStream( CopyableStream const& other ) { oss << other.oss.str(); } CopyableStream& operator=( CopyableStream const& other ) { oss.str(""); oss << other.oss.str(); return *this; } std::ostringstream oss; }; class ResultBuilder { public: ResultBuilder( char const* macroName, SourceLineInfo const& lineInfo, char const* capturedExpression, ResultDisposition::Flags resultDisposition ); template ExpressionLhs operator->* ( T const& operand ); ExpressionLhs operator->* ( bool value ); template ResultBuilder& operator << ( T const& value ) { m_stream.oss << value; return *this; } template STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator && ( RhsT const& ); template STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator || ( RhsT const& ); ResultBuilder& setResultType( ResultWas::OfType result ); ResultBuilder& setResultType( bool result ); ResultBuilder& setLhs( std::string const& lhs ); ResultBuilder& setRhs( std::string const& rhs ); ResultBuilder& setOp( std::string const& op ); void endExpression(); std::string reconstructExpression() const; AssertionResult build() const; void useActiveException( ResultDisposition::Flags resultDisposition = ResultDisposition::Normal ); void captureResult( ResultWas::OfType resultType ); void captureExpression(); void react(); bool shouldDebugBreak() const; bool allowThrows() const; private: AssertionInfo m_assertionInfo; AssertionResultData m_data; struct ExprComponents { ExprComponents() : testFalse( false ) {} bool testFalse; std::string lhs, rhs, op; } m_exprComponents; CopyableStream m_stream; bool m_shouldDebugBreak; bool m_shouldThrow; }; } // namespace Catch // Include after due to circular dependency: // #included from: catch_expression_lhs.hpp #define TWOBLUECUBES_CATCH_EXPRESSION_LHS_HPP_INCLUDED // #included from: catch_evaluate.hpp #define TWOBLUECUBES_CATCH_EVALUATE_HPP_INCLUDED #ifdef _MSC_VER #pragma warning(push) #pragma warning(disable:4389) // '==' : signed/unsigned mismatch #endif #include namespace Catch { namespace Internal { enum Operator { IsEqualTo, IsNotEqualTo, IsLessThan, IsGreaterThan, IsLessThanOrEqualTo, IsGreaterThanOrEqualTo }; template struct OperatorTraits { static const char* getName(){ return "*error*"; } }; template<> struct OperatorTraits { static const char* getName(){ return "=="; } }; template<> struct OperatorTraits { static const char* getName(){ return "!="; } }; template<> struct OperatorTraits { static const char* getName(){ return "<"; } }; template<> struct OperatorTraits { static const char* getName(){ return ">"; } }; template<> struct OperatorTraits { static const char* getName(){ return "<="; } }; template<> struct OperatorTraits{ static const char* getName(){ return ">="; } }; template inline T& opCast(T const& t) { return const_cast(t); } // nullptr_t support based on pull request #154 from Konstantin Baumann #ifdef CATCH_CONFIG_CPP11_NULLPTR inline std::nullptr_t opCast(std::nullptr_t) { return nullptr; } #endif // CATCH_CONFIG_CPP11_NULLPTR // So the compare overloads can be operator agnostic we convey the operator as a template // enum, which is used to specialise an Evaluator for doing the comparison. template class Evaluator{}; template struct Evaluator { static bool evaluate( T1 const& lhs, T2 const& rhs) { return opCast( lhs ) == opCast( rhs ); } }; template struct Evaluator { static bool evaluate( T1 const& lhs, T2 const& rhs ) { return opCast( lhs ) != opCast( rhs ); } }; template struct Evaluator { static bool evaluate( T1 const& lhs, T2 const& rhs ) { return opCast( lhs ) < opCast( rhs ); } }; template struct Evaluator { static bool evaluate( T1 const& lhs, T2 const& rhs ) { return opCast( lhs ) > opCast( rhs ); } }; template struct Evaluator { static bool evaluate( T1 const& lhs, T2 const& rhs ) { return opCast( lhs ) >= opCast( rhs ); } }; template struct Evaluator { static bool evaluate( T1 const& lhs, T2 const& rhs ) { return opCast( lhs ) <= opCast( rhs ); } }; template bool applyEvaluator( T1 const& lhs, T2 const& rhs ) { return Evaluator::evaluate( lhs, rhs ); } // This level of indirection allows us to specialise for integer types // to avoid signed/ unsigned warnings // "base" overload template bool compare( T1 const& lhs, T2 const& rhs ) { return Evaluator::evaluate( lhs, rhs ); } // unsigned X to int template bool compare( unsigned int lhs, int rhs ) { return applyEvaluator( lhs, static_cast( rhs ) ); } template bool compare( unsigned long lhs, int rhs ) { return applyEvaluator( lhs, static_cast( rhs ) ); } template bool compare( unsigned char lhs, int rhs ) { return applyEvaluator( lhs, static_cast( rhs ) ); } // unsigned X to long template bool compare( unsigned int lhs, long rhs ) { return applyEvaluator( lhs, static_cast( rhs ) ); } template bool compare( unsigned long lhs, long rhs ) { return applyEvaluator( lhs, static_cast( rhs ) ); } template bool compare( unsigned char lhs, long rhs ) { return applyEvaluator( lhs, static_cast( rhs ) ); } // int to unsigned X template bool compare( int lhs, unsigned int rhs ) { return applyEvaluator( static_cast( lhs ), rhs ); } template bool compare( int lhs, unsigned long rhs ) { return applyEvaluator( static_cast( lhs ), rhs ); } template bool compare( int lhs, unsigned char rhs ) { return applyEvaluator( static_cast( lhs ), rhs ); } // long to unsigned X template bool compare( long lhs, unsigned int rhs ) { return applyEvaluator( static_cast( lhs ), rhs ); } template bool compare( long lhs, unsigned long rhs ) { return applyEvaluator( static_cast( lhs ), rhs ); } template bool compare( long lhs, unsigned char rhs ) { return applyEvaluator( static_cast( lhs ), rhs ); } // pointer to long (when comparing against NULL) template bool compare( long lhs, T* rhs ) { return Evaluator::evaluate( reinterpret_cast( lhs ), rhs ); } template bool compare( T* lhs, long rhs ) { return Evaluator::evaluate( lhs, reinterpret_cast( rhs ) ); } // pointer to int (when comparing against NULL) template bool compare( int lhs, T* rhs ) { return Evaluator::evaluate( reinterpret_cast( lhs ), rhs ); } template bool compare( T* lhs, int rhs ) { return Evaluator::evaluate( lhs, reinterpret_cast( rhs ) ); } #ifdef CATCH_CONFIG_CPP11_NULLPTR // pointer to nullptr_t (when comparing against nullptr) template bool compare( std::nullptr_t, T* rhs ) { return Evaluator::evaluate( NULL, rhs ); } template bool compare( T* lhs, std::nullptr_t ) { return Evaluator::evaluate( lhs, NULL ); } #endif // CATCH_CONFIG_CPP11_NULLPTR } // end of namespace Internal } // end of namespace Catch #ifdef _MSC_VER #pragma warning(pop) #endif // #included from: catch_tostring.h #define TWOBLUECUBES_CATCH_TOSTRING_H_INCLUDED // #included from: catch_sfinae.hpp #define TWOBLUECUBES_CATCH_SFINAE_HPP_INCLUDED // Try to detect if the current compiler supports SFINAE namespace Catch { struct TrueType { static const bool value = true; typedef void Enable; char sizer[1]; }; struct FalseType { static const bool value = false; typedef void Disable; char sizer[2]; }; #ifdef CATCH_CONFIG_SFINAE template struct NotABooleanExpression; template struct If : NotABooleanExpression {}; template<> struct If : TrueType {}; template<> struct If : FalseType {}; template struct SizedIf; template<> struct SizedIf : TrueType {}; template<> struct SizedIf : FalseType {}; #endif // CATCH_CONFIG_SFINAE } // end namespace Catch #include #include #include #include #include #ifdef __OBJC__ // #included from: catch_objc_arc.hpp #define TWOBLUECUBES_CATCH_OBJC_ARC_HPP_INCLUDED #import #ifdef __has_feature #define CATCH_ARC_ENABLED __has_feature(objc_arc) #else #define CATCH_ARC_ENABLED 0 #endif void arcSafeRelease( NSObject* obj ); id performOptionalSelector( id obj, SEL sel ); #if !CATCH_ARC_ENABLED inline void arcSafeRelease( NSObject* obj ) { [obj release]; } inline id performOptionalSelector( id obj, SEL sel ) { if( [obj respondsToSelector: sel] ) return [obj performSelector: sel]; return nil; } #define CATCH_UNSAFE_UNRETAINED #define CATCH_ARC_STRONG #else inline void arcSafeRelease( NSObject* ){} inline id performOptionalSelector( id obj, SEL sel ) { #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Warc-performSelector-leaks" #endif if( [obj respondsToSelector: sel] ) return [obj performSelector: sel]; #ifdef __clang__ #pragma clang diagnostic pop #endif return nil; } #define CATCH_UNSAFE_UNRETAINED __unsafe_unretained #define CATCH_ARC_STRONG __strong #endif #endif #ifdef CATCH_CONFIG_CPP11_TUPLE #include #endif #ifdef CATCH_CONFIG_CPP11_IS_ENUM #include #endif namespace Catch { // Why we're here. template std::string toString( T const& value ); // Built in overloads std::string toString( std::string const& value ); std::string toString( std::wstring const& value ); std::string toString( const char* const value ); std::string toString( char* const value ); std::string toString( const wchar_t* const value ); std::string toString( wchar_t* const value ); std::string toString( int value ); std::string toString( unsigned long value ); std::string toString( unsigned int value ); std::string toString( const double value ); std::string toString( const float value ); std::string toString( bool value ); std::string toString( char value ); std::string toString( signed char value ); std::string toString( unsigned char value ); #ifdef CATCH_CONFIG_CPP11_NULLPTR std::string toString( std::nullptr_t ); #endif #ifdef __OBJC__ std::string toString( NSString const * const& nsstring ); std::string toString( NSString * CATCH_ARC_STRONG const& nsstring ); std::string toString( NSObject* const& nsObject ); #endif namespace Detail { extern std::string unprintableString; // SFINAE is currently disabled by default for all compilers. // If the non SFINAE version of IsStreamInsertable is ambiguous for you // and your compiler supports SFINAE, try #defining CATCH_CONFIG_SFINAE #ifdef CATCH_CONFIG_SFINAE template class IsStreamInsertableHelper { template struct TrueIfSizeable : TrueType {}; template static TrueIfSizeable dummy(T2*); static FalseType dummy(...); public: typedef SizedIf type; }; template struct IsStreamInsertable : IsStreamInsertableHelper::type {}; #else struct BorgType { template BorgType( T const& ); }; TrueType& testStreamable( std::ostream& ); FalseType testStreamable( FalseType ); FalseType operator<<( std::ostream const&, BorgType const& ); template struct IsStreamInsertable { static std::ostream &s; static T const&t; enum { value = sizeof( testStreamable(s << t) ) == sizeof( TrueType ) }; }; #endif #if defined(CATCH_CONFIG_CPP11_IS_ENUM) template::value > struct EnumStringMaker { static std::string convert( T const& ) { return unprintableString; } }; template struct EnumStringMaker { static std::string convert( T const& v ) { return ::Catch::toString( static_cast::type>(v) ); } }; #endif template struct StringMakerBase { #if defined(CATCH_CONFIG_CPP11_IS_ENUM) template static std::string convert( T const& v ) { return EnumStringMaker::convert( v ); } #else template static std::string convert( T const& ) { return unprintableString; } #endif }; template<> struct StringMakerBase { template static std::string convert( T const& _value ) { std::ostringstream oss; oss << _value; return oss.str(); } }; std::string rawMemoryToString( const void *object, std::size_t size ); template inline std::string rawMemoryToString( const T& object ) { return rawMemoryToString( &object, sizeof(object) ); } } // end namespace Detail template struct StringMaker : Detail::StringMakerBase::value> {}; template struct StringMaker { template static std::string convert( U* p ) { if( !p ) return INTERNAL_CATCH_STRINGIFY( NULL ); else return Detail::rawMemoryToString( p ); } }; template struct StringMaker { static std::string convert( R C::* p ) { if( !p ) return INTERNAL_CATCH_STRINGIFY( NULL ); else return Detail::rawMemoryToString( p ); } }; namespace Detail { template std::string rangeToString( InputIterator first, InputIterator last ); } //template //struct StringMaker > { // static std::string convert( std::vector const& v ) { // return Detail::rangeToString( v.begin(), v.end() ); // } //}; template std::string toString( std::vector const& v ) { return Detail::rangeToString( v.begin(), v.end() ); } #ifdef CATCH_CONFIG_CPP11_TUPLE // toString for tuples namespace TupleDetail { template< typename Tuple, std::size_t N = 0, bool = (N < std::tuple_size::value) > struct ElementPrinter { static void print( const Tuple& tuple, std::ostream& os ) { os << ( N ? ", " : " " ) << Catch::toString(std::get(tuple)); ElementPrinter::print(tuple,os); } }; template< typename Tuple, std::size_t N > struct ElementPrinter { static void print( const Tuple&, std::ostream& ) {} }; } template struct StringMaker> { static std::string convert( const std::tuple& tuple ) { std::ostringstream os; os << '{'; TupleDetail::ElementPrinter>::print( tuple, os ); os << " }"; return os.str(); } }; #endif // CATCH_CONFIG_CPP11_TUPLE namespace Detail { template std::string makeString( T const& value ) { return StringMaker::convert( value ); } } // end namespace Detail /// \brief converts any type to a string /// /// The default template forwards on to ostringstream - except when an /// ostringstream overload does not exist - in which case it attempts to detect /// that and writes {?}. /// Overload (not specialise) this template for custom typs that you don't want /// to provide an ostream overload for. template std::string toString( T const& value ) { return StringMaker::convert( value ); } namespace Detail { template std::string rangeToString( InputIterator first, InputIterator last ) { std::ostringstream oss; oss << "{ "; if( first != last ) { oss << Catch::toString( *first ); for( ++first ; first != last ; ++first ) oss << ", " << Catch::toString( *first ); } oss << " }"; return oss.str(); } } } // end namespace Catch namespace Catch { // Wraps the LHS of an expression and captures the operator and RHS (if any) - // wrapping them all in a ResultBuilder object template class ExpressionLhs { ExpressionLhs& operator = ( ExpressionLhs const& ); # ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS ExpressionLhs& operator = ( ExpressionLhs && ) = delete; # endif public: ExpressionLhs( ResultBuilder& rb, T lhs ) : m_rb( rb ), m_lhs( lhs ) {} # ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS ExpressionLhs( ExpressionLhs const& ) = default; ExpressionLhs( ExpressionLhs && ) = default; # endif template ResultBuilder& operator == ( RhsT const& rhs ) { return captureExpression( rhs ); } template ResultBuilder& operator != ( RhsT const& rhs ) { return captureExpression( rhs ); } template ResultBuilder& operator < ( RhsT const& rhs ) { return captureExpression( rhs ); } template ResultBuilder& operator > ( RhsT const& rhs ) { return captureExpression( rhs ); } template ResultBuilder& operator <= ( RhsT const& rhs ) { return captureExpression( rhs ); } template ResultBuilder& operator >= ( RhsT const& rhs ) { return captureExpression( rhs ); } ResultBuilder& operator == ( bool rhs ) { return captureExpression( rhs ); } ResultBuilder& operator != ( bool rhs ) { return captureExpression( rhs ); } void endExpression() { bool value = m_lhs ? true : false; m_rb .setLhs( Catch::toString( value ) ) .setResultType( value ) .endExpression(); } // Only simple binary expressions are allowed on the LHS. // If more complex compositions are required then place the sub expression in parentheses template STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator + ( RhsT const& ); template STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator - ( RhsT const& ); template STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator / ( RhsT const& ); template STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator * ( RhsT const& ); template STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator && ( RhsT const& ); template STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison& operator || ( RhsT const& ); private: template ResultBuilder& captureExpression( RhsT const& rhs ) { return m_rb .setResultType( Internal::compare( m_lhs, rhs ) ) .setLhs( Catch::toString( m_lhs ) ) .setRhs( Catch::toString( rhs ) ) .setOp( Internal::OperatorTraits::getName() ); } private: ResultBuilder& m_rb; T m_lhs; }; } // end namespace Catch namespace Catch { template inline ExpressionLhs ResultBuilder::operator->* ( T const& operand ) { return ExpressionLhs( *this, operand ); } inline ExpressionLhs ResultBuilder::operator->* ( bool value ) { return ExpressionLhs( *this, value ); } } // namespace Catch // #included from: catch_message.h #define TWOBLUECUBES_CATCH_MESSAGE_H_INCLUDED #include namespace Catch { struct MessageInfo { MessageInfo( std::string const& _macroName, SourceLineInfo const& _lineInfo, ResultWas::OfType _type ); std::string macroName; SourceLineInfo lineInfo; ResultWas::OfType type; std::string message; unsigned int sequence; bool operator == ( MessageInfo const& other ) const { return sequence == other.sequence; } bool operator < ( MessageInfo const& other ) const { return sequence < other.sequence; } private: static unsigned int globalCount; }; struct MessageBuilder { MessageBuilder( std::string const& macroName, SourceLineInfo const& lineInfo, ResultWas::OfType type ) : m_info( macroName, lineInfo, type ) {} template MessageBuilder& operator << ( T const& value ) { m_stream << value; return *this; } MessageInfo m_info; std::ostringstream m_stream; }; class ScopedMessage { public: ScopedMessage( MessageBuilder const& builder ); ScopedMessage( ScopedMessage const& other ); ~ScopedMessage(); MessageInfo m_info; }; } // end namespace Catch // #included from: catch_interfaces_capture.h #define TWOBLUECUBES_CATCH_INTERFACES_CAPTURE_H_INCLUDED #include namespace Catch { class TestCase; class AssertionResult; struct AssertionInfo; struct SectionInfo; struct MessageInfo; class ScopedMessageBuilder; struct Counts; struct IResultCapture { virtual ~IResultCapture(); virtual void assertionEnded( AssertionResult const& result ) = 0; virtual bool sectionStarted( SectionInfo const& sectionInfo, Counts& assertions ) = 0; virtual void sectionEnded( SectionInfo const& name, Counts const& assertions, double _durationInSeconds ) = 0; virtual void pushScopedMessage( MessageInfo const& message ) = 0; virtual void popScopedMessage( MessageInfo const& message ) = 0; virtual std::string getCurrentTestName() const = 0; virtual const AssertionResult* getLastResult() const = 0; virtual void handleFatalErrorCondition( std::string const& message ) = 0; }; IResultCapture& getResultCapture(); } // #included from: catch_debugger.h #define TWOBLUECUBES_CATCH_DEBUGGER_H_INCLUDED // #included from: catch_platform.h #define TWOBLUECUBES_CATCH_PLATFORM_H_INCLUDED #if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) #define CATCH_PLATFORM_MAC #elif defined(__IPHONE_OS_VERSION_MIN_REQUIRED) #define CATCH_PLATFORM_IPHONE #elif defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) #define CATCH_PLATFORM_WINDOWS #endif #include namespace Catch{ bool isDebuggerActive(); void writeToDebugConsole( std::string const& text ); } #ifdef CATCH_PLATFORM_MAC // The following code snippet based on: // http://cocoawithlove.com/2008/03/break-into-debugger.html #ifdef DEBUG #if defined(__ppc64__) || defined(__ppc__) #define CATCH_BREAK_INTO_DEBUGGER() \ if( Catch::isDebuggerActive() ) { \ __asm__("li r0, 20\nsc\nnop\nli r0, 37\nli r4, 2\nsc\nnop\n" \ : : : "memory","r0","r3","r4" ); \ } #else #define CATCH_BREAK_INTO_DEBUGGER() if( Catch::isDebuggerActive() ) {__asm__("int $3\n" : : );} #endif #endif #elif defined(_MSC_VER) #define CATCH_BREAK_INTO_DEBUGGER() if( Catch::isDebuggerActive() ) { __debugbreak(); } #elif defined(__MINGW32__) extern "C" __declspec(dllimport) void __stdcall DebugBreak(); #define CATCH_BREAK_INTO_DEBUGGER() if( Catch::isDebuggerActive() ) { DebugBreak(); } #endif #ifndef CATCH_BREAK_INTO_DEBUGGER #define CATCH_BREAK_INTO_DEBUGGER() Catch::alwaysTrue(); #endif // #included from: catch_interfaces_runner.h #define TWOBLUECUBES_CATCH_INTERFACES_RUNNER_H_INCLUDED namespace Catch { class TestCase; struct IRunner { virtual ~IRunner(); virtual bool aborting() const = 0; }; } /////////////////////////////////////////////////////////////////////////////// // In the event of a failure works out if the debugger needs to be invoked // and/or an exception thrown and takes appropriate action. // This needs to be done as a macro so the debugger will stop in the user // source code rather than in Catch library code #define INTERNAL_CATCH_REACT( resultBuilder ) \ if( resultBuilder.shouldDebugBreak() ) CATCH_BREAK_INTO_DEBUGGER(); \ resultBuilder.react(); /////////////////////////////////////////////////////////////////////////////// #define INTERNAL_CATCH_TEST( expr, resultDisposition, macroName ) \ do { \ Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \ try { \ ( __catchResult->*expr ).endExpression(); \ } \ catch( ... ) { \ __catchResult.useActiveException( Catch::ResultDisposition::Normal ); \ } \ INTERNAL_CATCH_REACT( __catchResult ) \ } while( Catch::isTrue( false && (expr) ) ) // expr here is never evaluated at runtime but it forces the compiler to give it a look /////////////////////////////////////////////////////////////////////////////// #define INTERNAL_CATCH_IF( expr, resultDisposition, macroName ) \ INTERNAL_CATCH_TEST( expr, resultDisposition, macroName ); \ if( Catch::getResultCapture().getLastResult()->succeeded() ) /////////////////////////////////////////////////////////////////////////////// #define INTERNAL_CATCH_ELSE( expr, resultDisposition, macroName ) \ INTERNAL_CATCH_TEST( expr, resultDisposition, macroName ); \ if( !Catch::getResultCapture().getLastResult()->succeeded() ) /////////////////////////////////////////////////////////////////////////////// #define INTERNAL_CATCH_NO_THROW( expr, resultDisposition, macroName ) \ do { \ Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \ try { \ expr; \ __catchResult.captureResult( Catch::ResultWas::Ok ); \ } \ catch( ... ) { \ __catchResult.useActiveException( resultDisposition ); \ } \ INTERNAL_CATCH_REACT( __catchResult ) \ } while( Catch::alwaysFalse() ) /////////////////////////////////////////////////////////////////////////////// #define INTERNAL_CATCH_THROWS( expr, resultDisposition, macroName ) \ do { \ Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \ if( __catchResult.allowThrows() ) \ try { \ expr; \ __catchResult.captureResult( Catch::ResultWas::DidntThrowException ); \ } \ catch( ... ) { \ __catchResult.captureResult( Catch::ResultWas::Ok ); \ } \ else \ __catchResult.captureResult( Catch::ResultWas::Ok ); \ INTERNAL_CATCH_REACT( __catchResult ) \ } while( Catch::alwaysFalse() ) /////////////////////////////////////////////////////////////////////////////// #define INTERNAL_CATCH_THROWS_AS( expr, exceptionType, resultDisposition, macroName ) \ do { \ Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #expr, resultDisposition ); \ if( __catchResult.allowThrows() ) \ try { \ expr; \ __catchResult.captureResult( Catch::ResultWas::DidntThrowException ); \ } \ catch( exceptionType ) { \ __catchResult.captureResult( Catch::ResultWas::Ok ); \ } \ catch( ... ) { \ __catchResult.useActiveException( resultDisposition ); \ } \ else \ __catchResult.captureResult( Catch::ResultWas::Ok ); \ INTERNAL_CATCH_REACT( __catchResult ) \ } while( Catch::alwaysFalse() ) /////////////////////////////////////////////////////////////////////////////// #ifdef CATCH_CONFIG_VARIADIC_MACROS #define INTERNAL_CATCH_MSG( messageType, resultDisposition, macroName, ... ) \ do { \ Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, "", resultDisposition ); \ __catchResult << __VA_ARGS__ + ::Catch::StreamEndStop(); \ __catchResult.captureResult( messageType ); \ INTERNAL_CATCH_REACT( __catchResult ) \ } while( Catch::alwaysFalse() ) #else #define INTERNAL_CATCH_MSG( messageType, resultDisposition, macroName, log ) \ do { \ Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, "", resultDisposition ); \ __catchResult << log + ::Catch::StreamEndStop(); \ __catchResult.captureResult( messageType ); \ INTERNAL_CATCH_REACT( __catchResult ) \ } while( Catch::alwaysFalse() ) #endif /////////////////////////////////////////////////////////////////////////////// #define INTERNAL_CATCH_INFO( log, macroName ) \ Catch::ScopedMessage INTERNAL_CATCH_UNIQUE_NAME( scopedMessage ) = Catch::MessageBuilder( macroName, CATCH_INTERNAL_LINEINFO, Catch::ResultWas::Info ) << log; /////////////////////////////////////////////////////////////////////////////// #define INTERNAL_CHECK_THAT( arg, matcher, resultDisposition, macroName ) \ do { \ Catch::ResultBuilder __catchResult( macroName, CATCH_INTERNAL_LINEINFO, #arg " " #matcher, resultDisposition ); \ try { \ std::string matcherAsString = ::Catch::Matchers::matcher.toString(); \ __catchResult \ .setLhs( Catch::toString( arg ) ) \ .setRhs( matcherAsString == Catch::Detail::unprintableString ? #matcher : matcherAsString ) \ .setOp( "matches" ) \ .setResultType( ::Catch::Matchers::matcher.match( arg ) ); \ __catchResult.captureExpression(); \ } catch( ... ) { \ __catchResult.useActiveException( resultDisposition | Catch::ResultDisposition::ContinueOnFailure ); \ } \ INTERNAL_CATCH_REACT( __catchResult ) \ } while( Catch::alwaysFalse() ) // #included from: internal/catch_section.h #define TWOBLUECUBES_CATCH_SECTION_H_INCLUDED // #included from: catch_section_info.h #define TWOBLUECUBES_CATCH_SECTION_INFO_H_INCLUDED namespace Catch { struct SectionInfo { SectionInfo ( SourceLineInfo const& _lineInfo, std::string const& _name, std::string const& _description = std::string() ); std::string name; std::string description; SourceLineInfo lineInfo; }; } // end namespace Catch // #included from: catch_totals.hpp #define TWOBLUECUBES_CATCH_TOTALS_HPP_INCLUDED #include namespace Catch { struct Counts { Counts() : passed( 0 ), failed( 0 ), failedButOk( 0 ) {} Counts operator - ( Counts const& other ) const { Counts diff; diff.passed = passed - other.passed; diff.failed = failed - other.failed; diff.failedButOk = failedButOk - other.failedButOk; return diff; } Counts& operator += ( Counts const& other ) { passed += other.passed; failed += other.failed; failedButOk += other.failedButOk; return *this; } std::size_t total() const { return passed + failed + failedButOk; } bool allPassed() const { return failed == 0 && failedButOk == 0; } bool allOk() const { return failed == 0; } std::size_t passed; std::size_t failed; std::size_t failedButOk; }; struct Totals { Totals operator - ( Totals const& other ) const { Totals diff; diff.assertions = assertions - other.assertions; diff.testCases = testCases - other.testCases; return diff; } Totals delta( Totals const& prevTotals ) const { Totals diff = *this - prevTotals; if( diff.assertions.failed > 0 ) ++diff.testCases.failed; else if( diff.assertions.failedButOk > 0 ) ++diff.testCases.failedButOk; else ++diff.testCases.passed; return diff; } Totals& operator += ( Totals const& other ) { assertions += other.assertions; testCases += other.testCases; return *this; } Counts assertions; Counts testCases; }; } // #included from: catch_timer.h #define TWOBLUECUBES_CATCH_TIMER_H_INCLUDED #ifdef CATCH_PLATFORM_WINDOWS typedef unsigned long long uint64_t; #else #include #endif namespace Catch { class Timer { public: Timer() : m_ticks( 0 ) {} void start(); unsigned int getElapsedMicroseconds() const; unsigned int getElapsedMilliseconds() const; double getElapsedSeconds() const; private: uint64_t m_ticks; }; } // namespace Catch #include namespace Catch { class Section : NonCopyable { public: Section( SectionInfo const& info ); ~Section(); // This indicates whether the section should be executed or not operator bool() const; private: SectionInfo m_info; std::string m_name; Counts m_assertions; bool m_sectionIncluded; Timer m_timer; }; } // end namespace Catch #ifdef CATCH_CONFIG_VARIADIC_MACROS #define INTERNAL_CATCH_SECTION( ... ) \ if( Catch::Section const& INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::SectionInfo( CATCH_INTERNAL_LINEINFO, __VA_ARGS__ ) ) #else #define INTERNAL_CATCH_SECTION( name, desc ) \ if( Catch::Section const& INTERNAL_CATCH_UNIQUE_NAME( catch_internal_Section ) = Catch::SectionInfo( CATCH_INTERNAL_LINEINFO, name, desc ) ) #endif // #included from: internal/catch_generators.hpp #define TWOBLUECUBES_CATCH_GENERATORS_HPP_INCLUDED #include #include #include #include namespace Catch { template struct IGenerator { virtual ~IGenerator() {} virtual T getValue( std::size_t index ) const = 0; virtual std::size_t size () const = 0; }; template class BetweenGenerator : public IGenerator { public: BetweenGenerator( T from, T to ) : m_from( from ), m_to( to ){} virtual T getValue( std::size_t index ) const { return m_from+static_cast( index ); } virtual std::size_t size() const { return static_cast( 1+m_to-m_from ); } private: T m_from; T m_to; }; template class ValuesGenerator : public IGenerator { public: ValuesGenerator(){} void add( T value ) { m_values.push_back( value ); } virtual T getValue( std::size_t index ) const { return m_values[index]; } virtual std::size_t size() const { return m_values.size(); } private: std::vector m_values; }; template class CompositeGenerator { public: CompositeGenerator() : m_totalSize( 0 ) {} // *** Move semantics, similar to auto_ptr *** CompositeGenerator( CompositeGenerator& other ) : m_fileInfo( other.m_fileInfo ), m_totalSize( 0 ) { move( other ); } CompositeGenerator& setFileInfo( const char* fileInfo ) { m_fileInfo = fileInfo; return *this; } ~CompositeGenerator() { deleteAll( m_composed ); } operator T () const { size_t overallIndex = getCurrentContext().getGeneratorIndex( m_fileInfo, m_totalSize ); typename std::vector*>::const_iterator it = m_composed.begin(); typename std::vector*>::const_iterator itEnd = m_composed.end(); for( size_t index = 0; it != itEnd; ++it ) { const IGenerator* generator = *it; if( overallIndex >= index && overallIndex < index + generator->size() ) { return generator->getValue( overallIndex-index ); } index += generator->size(); } CATCH_INTERNAL_ERROR( "Indexed past end of generated range" ); return T(); // Suppress spurious "not all control paths return a value" warning in Visual Studio - if you know how to fix this please do so } void add( const IGenerator* generator ) { m_totalSize += generator->size(); m_composed.push_back( generator ); } CompositeGenerator& then( CompositeGenerator& other ) { move( other ); return *this; } CompositeGenerator& then( T value ) { ValuesGenerator* valuesGen = new ValuesGenerator(); valuesGen->add( value ); add( valuesGen ); return *this; } private: void move( CompositeGenerator& other ) { std::copy( other.m_composed.begin(), other.m_composed.end(), std::back_inserter( m_composed ) ); m_totalSize += other.m_totalSize; other.m_composed.clear(); } std::vector*> m_composed; std::string m_fileInfo; size_t m_totalSize; }; namespace Generators { template CompositeGenerator between( T from, T to ) { CompositeGenerator generators; generators.add( new BetweenGenerator( from, to ) ); return generators; } template CompositeGenerator values( T val1, T val2 ) { CompositeGenerator generators; ValuesGenerator* valuesGen = new ValuesGenerator(); valuesGen->add( val1 ); valuesGen->add( val2 ); generators.add( valuesGen ); return generators; } template CompositeGenerator values( T val1, T val2, T val3 ){ CompositeGenerator generators; ValuesGenerator* valuesGen = new ValuesGenerator(); valuesGen->add( val1 ); valuesGen->add( val2 ); valuesGen->add( val3 ); generators.add( valuesGen ); return generators; } template CompositeGenerator values( T val1, T val2, T val3, T val4 ) { CompositeGenerator generators; ValuesGenerator* valuesGen = new ValuesGenerator(); valuesGen->add( val1 ); valuesGen->add( val2 ); valuesGen->add( val3 ); valuesGen->add( val4 ); generators.add( valuesGen ); return generators; } } // end namespace Generators using namespace Generators; } // end namespace Catch #define INTERNAL_CATCH_LINESTR2( line ) #line #define INTERNAL_CATCH_LINESTR( line ) INTERNAL_CATCH_LINESTR2( line ) #define INTERNAL_CATCH_GENERATE( expr ) expr.setFileInfo( __FILE__ "(" INTERNAL_CATCH_LINESTR( __LINE__ ) ")" ) // #included from: internal/catch_interfaces_exception.h #define TWOBLUECUBES_CATCH_INTERFACES_EXCEPTION_H_INCLUDED #include // #included from: catch_interfaces_registry_hub.h #define TWOBLUECUBES_CATCH_INTERFACES_REGISTRY_HUB_H_INCLUDED #include namespace Catch { class TestCase; struct ITestCaseRegistry; struct IExceptionTranslatorRegistry; struct IExceptionTranslator; struct IReporterRegistry; struct IReporterFactory; struct IRegistryHub { virtual ~IRegistryHub(); virtual IReporterRegistry const& getReporterRegistry() const = 0; virtual ITestCaseRegistry const& getTestCaseRegistry() const = 0; virtual IExceptionTranslatorRegistry& getExceptionTranslatorRegistry() = 0; }; struct IMutableRegistryHub { virtual ~IMutableRegistryHub(); virtual void registerReporter( std::string const& name, IReporterFactory* factory ) = 0; virtual void registerTest( TestCase const& testInfo ) = 0; virtual void registerTranslator( const IExceptionTranslator* translator ) = 0; }; IRegistryHub& getRegistryHub(); IMutableRegistryHub& getMutableRegistryHub(); void cleanUp(); std::string translateActiveException(); } namespace Catch { typedef std::string(*exceptionTranslateFunction)(); struct IExceptionTranslator { virtual ~IExceptionTranslator(); virtual std::string translate() const = 0; }; struct IExceptionTranslatorRegistry { virtual ~IExceptionTranslatorRegistry(); virtual std::string translateActiveException() const = 0; }; class ExceptionTranslatorRegistrar { template class ExceptionTranslator : public IExceptionTranslator { public: ExceptionTranslator( std::string(*translateFunction)( T& ) ) : m_translateFunction( translateFunction ) {} virtual std::string translate() const { try { throw; } catch( T& ex ) { return m_translateFunction( ex ); } } protected: std::string(*m_translateFunction)( T& ); }; public: template ExceptionTranslatorRegistrar( std::string(*translateFunction)( T& ) ) { getMutableRegistryHub().registerTranslator ( new ExceptionTranslator( translateFunction ) ); } }; } /////////////////////////////////////////////////////////////////////////////// #define INTERNAL_CATCH_TRANSLATE_EXCEPTION( signature ) \ static std::string INTERNAL_CATCH_UNIQUE_NAME( catch_internal_ExceptionTranslator )( signature ); \ namespace{ Catch::ExceptionTranslatorRegistrar INTERNAL_CATCH_UNIQUE_NAME( catch_internal_ExceptionRegistrar )( &INTERNAL_CATCH_UNIQUE_NAME( catch_internal_ExceptionTranslator ) ); }\ static std::string INTERNAL_CATCH_UNIQUE_NAME( catch_internal_ExceptionTranslator )( signature ) // #included from: internal/catch_approx.hpp #define TWOBLUECUBES_CATCH_APPROX_HPP_INCLUDED #include #include namespace Catch { namespace Detail { class Approx { public: explicit Approx ( double value ) : m_epsilon( std::numeric_limits::epsilon()*100 ), m_scale( 1.0 ), m_value( value ) {} Approx( Approx const& other ) : m_epsilon( other.m_epsilon ), m_scale( other.m_scale ), m_value( other.m_value ) {} static Approx custom() { return Approx( 0 ); } Approx operator()( double value ) { Approx approx( value ); approx.epsilon( m_epsilon ); approx.scale( m_scale ); return approx; } friend bool operator == ( double lhs, Approx const& rhs ) { // Thanks to Richard Harris for his help refining this formula return fabs( lhs - rhs.m_value ) < rhs.m_epsilon * (rhs.m_scale + (std::max)( fabs(lhs), fabs(rhs.m_value) ) ); } friend bool operator == ( Approx const& lhs, double rhs ) { return operator==( rhs, lhs ); } friend bool operator != ( double lhs, Approx const& rhs ) { return !operator==( lhs, rhs ); } friend bool operator != ( Approx const& lhs, double rhs ) { return !operator==( rhs, lhs ); } Approx& epsilon( double newEpsilon ) { m_epsilon = newEpsilon; return *this; } Approx& scale( double newScale ) { m_scale = newScale; return *this; } std::string toString() const { std::ostringstream oss; oss << "Approx( " << Catch::toString( m_value ) << " )"; return oss.str(); } private: double m_epsilon; double m_scale; double m_value; }; } template<> inline std::string toString( Detail::Approx const& value ) { return value.toString(); } } // end namespace Catch // #included from: internal/catch_matchers.hpp #define TWOBLUECUBES_CATCH_MATCHERS_HPP_INCLUDED namespace Catch { namespace Matchers { namespace Impl { template struct Matcher : SharedImpl { typedef ExpressionT ExpressionType; virtual ~Matcher() {} virtual Ptr clone() const = 0; virtual bool match( ExpressionT const& expr ) const = 0; virtual std::string toString() const = 0; }; template struct MatcherImpl : Matcher { virtual Ptr > clone() const { return Ptr >( new DerivedT( static_cast( *this ) ) ); } }; namespace Generic { template class AllOf : public MatcherImpl, ExpressionT> { public: AllOf() {} AllOf( AllOf const& other ) : m_matchers( other.m_matchers ) {} AllOf& add( Matcher const& matcher ) { m_matchers.push_back( matcher.clone() ); return *this; } virtual bool match( ExpressionT const& expr ) const { for( std::size_t i = 0; i < m_matchers.size(); ++i ) if( !m_matchers[i]->match( expr ) ) return false; return true; } virtual std::string toString() const { std::ostringstream oss; oss << "( "; for( std::size_t i = 0; i < m_matchers.size(); ++i ) { if( i != 0 ) oss << " and "; oss << m_matchers[i]->toString(); } oss << " )"; return oss.str(); } private: std::vector > > m_matchers; }; template class AnyOf : public MatcherImpl, ExpressionT> { public: AnyOf() {} AnyOf( AnyOf const& other ) : m_matchers( other.m_matchers ) {} AnyOf& add( Matcher const& matcher ) { m_matchers.push_back( matcher.clone() ); return *this; } virtual bool match( ExpressionT const& expr ) const { for( std::size_t i = 0; i < m_matchers.size(); ++i ) if( m_matchers[i]->match( expr ) ) return true; return false; } virtual std::string toString() const { std::ostringstream oss; oss << "( "; for( std::size_t i = 0; i < m_matchers.size(); ++i ) { if( i != 0 ) oss << " or "; oss << m_matchers[i]->toString(); } oss << " )"; return oss.str(); } private: std::vector > > m_matchers; }; } namespace StdString { inline std::string makeString( std::string const& str ) { return str; } inline std::string makeString( const char* str ) { return str ? std::string( str ) : std::string(); } struct Equals : MatcherImpl { Equals( std::string const& str ) : m_str( str ){} Equals( Equals const& other ) : m_str( other.m_str ){} virtual ~Equals(); virtual bool match( std::string const& expr ) const { return m_str == expr; } virtual std::string toString() const { return "equals: \"" + m_str + "\""; } std::string m_str; }; struct Contains : MatcherImpl { Contains( std::string const& substr ) : m_substr( substr ){} Contains( Contains const& other ) : m_substr( other.m_substr ){} virtual ~Contains(); virtual bool match( std::string const& expr ) const { return expr.find( m_substr ) != std::string::npos; } virtual std::string toString() const { return "contains: \"" + m_substr + "\""; } std::string m_substr; }; struct StartsWith : MatcherImpl { StartsWith( std::string const& substr ) : m_substr( substr ){} StartsWith( StartsWith const& other ) : m_substr( other.m_substr ){} virtual ~StartsWith(); virtual bool match( std::string const& expr ) const { return expr.find( m_substr ) == 0; } virtual std::string toString() const { return "starts with: \"" + m_substr + "\""; } std::string m_substr; }; struct EndsWith : MatcherImpl { EndsWith( std::string const& substr ) : m_substr( substr ){} EndsWith( EndsWith const& other ) : m_substr( other.m_substr ){} virtual ~EndsWith(); virtual bool match( std::string const& expr ) const { return expr.find( m_substr ) == expr.size() - m_substr.size(); } virtual std::string toString() const { return "ends with: \"" + m_substr + "\""; } std::string m_substr; }; } // namespace StdString } // namespace Impl // The following functions create the actual matcher objects. // This allows the types to be inferred template inline Impl::Generic::AllOf AllOf( Impl::Matcher const& m1, Impl::Matcher const& m2 ) { return Impl::Generic::AllOf().add( m1 ).add( m2 ); } template inline Impl::Generic::AllOf AllOf( Impl::Matcher const& m1, Impl::Matcher const& m2, Impl::Matcher const& m3 ) { return Impl::Generic::AllOf().add( m1 ).add( m2 ).add( m3 ); } template inline Impl::Generic::AnyOf AnyOf( Impl::Matcher const& m1, Impl::Matcher const& m2 ) { return Impl::Generic::AnyOf().add( m1 ).add( m2 ); } template inline Impl::Generic::AnyOf AnyOf( Impl::Matcher const& m1, Impl::Matcher const& m2, Impl::Matcher const& m3 ) { return Impl::Generic::AnyOf().add( m1 ).add( m2 ).add( m3 ); } inline Impl::StdString::Equals Equals( std::string const& str ) { return Impl::StdString::Equals( str ); } inline Impl::StdString::Equals Equals( const char* str ) { return Impl::StdString::Equals( Impl::StdString::makeString( str ) ); } inline Impl::StdString::Contains Contains( std::string const& substr ) { return Impl::StdString::Contains( substr ); } inline Impl::StdString::Contains Contains( const char* substr ) { return Impl::StdString::Contains( Impl::StdString::makeString( substr ) ); } inline Impl::StdString::StartsWith StartsWith( std::string const& substr ) { return Impl::StdString::StartsWith( substr ); } inline Impl::StdString::StartsWith StartsWith( const char* substr ) { return Impl::StdString::StartsWith( Impl::StdString::makeString( substr ) ); } inline Impl::StdString::EndsWith EndsWith( std::string const& substr ) { return Impl::StdString::EndsWith( substr ); } inline Impl::StdString::EndsWith EndsWith( const char* substr ) { return Impl::StdString::EndsWith( Impl::StdString::makeString( substr ) ); } } // namespace Matchers using namespace Matchers; } // namespace Catch // #included from: internal/catch_interfaces_tag_alias_registry.h #define TWOBLUECUBES_CATCH_INTERFACES_TAG_ALIAS_REGISTRY_H_INCLUDED // #included from: catch_tag_alias.h #define TWOBLUECUBES_CATCH_TAG_ALIAS_H_INCLUDED #include namespace Catch { struct TagAlias { TagAlias( std::string _tag, SourceLineInfo _lineInfo ) : tag( _tag ), lineInfo( _lineInfo ) {} std::string tag; SourceLineInfo lineInfo; }; struct RegistrarForTagAliases { RegistrarForTagAliases( char const* alias, char const* tag, SourceLineInfo const& lineInfo ); }; } // end namespace Catch #define CATCH_REGISTER_TAG_ALIAS( alias, spec ) namespace{ Catch::RegistrarForTagAliases INTERNAL_CATCH_UNIQUE_NAME( AutoRegisterTagAlias )( alias, spec, CATCH_INTERNAL_LINEINFO ); } // #included from: catch_option.hpp #define TWOBLUECUBES_CATCH_OPTION_HPP_INCLUDED namespace Catch { // An optional type template class Option { public: Option() : nullableValue( NULL ) {} Option( T const& _value ) : nullableValue( new( storage ) T( _value ) ) {} Option( Option const& _other ) : nullableValue( _other ? new( storage ) T( *_other ) : NULL ) {} ~Option() { reset(); } Option& operator= ( Option const& _other ) { if( &_other != this ) { reset(); if( _other ) nullableValue = new( storage ) T( *_other ); } return *this; } Option& operator = ( T const& _value ) { reset(); nullableValue = new( storage ) T( _value ); return *this; } void reset() { if( nullableValue ) nullableValue->~T(); nullableValue = NULL; } T& operator*() { return *nullableValue; } T const& operator*() const { return *nullableValue; } T* operator->() { return nullableValue; } const T* operator->() const { return nullableValue; } T valueOr( T const& defaultValue ) const { return nullableValue ? *nullableValue : defaultValue; } bool some() const { return nullableValue != NULL; } bool none() const { return nullableValue == NULL; } bool operator !() const { return nullableValue == NULL; } operator SafeBool::type() const { return SafeBool::makeSafe( some() ); } private: T* nullableValue; char storage[sizeof(T)]; }; } // end namespace Catch namespace Catch { struct ITagAliasRegistry { virtual ~ITagAliasRegistry(); virtual Option find( std::string const& alias ) const = 0; virtual std::string expandAliases( std::string const& unexpandedTestSpec ) const = 0; static ITagAliasRegistry const& get(); }; } // end namespace Catch // These files are included here so the single_include script doesn't put them // in the conditionally compiled sections // #included from: internal/catch_test_case_info.h #define TWOBLUECUBES_CATCH_TEST_CASE_INFO_H_INCLUDED #include #include #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wpadded" #endif namespace Catch { struct ITestCase; struct TestCaseInfo { enum SpecialProperties{ None = 0, IsHidden = 1 << 1, ShouldFail = 1 << 2, MayFail = 1 << 3, Throws = 1 << 4 }; TestCaseInfo( std::string const& _name, std::string const& _className, std::string const& _description, std::set const& _tags, SourceLineInfo const& _lineInfo ); TestCaseInfo( TestCaseInfo const& other ); bool isHidden() const; bool throws() const; bool okToFail() const; bool expectedToFail() const; std::string name; std::string className; std::string description; std::set tags; std::set lcaseTags; std::string tagsAsString; SourceLineInfo lineInfo; SpecialProperties properties; }; class TestCase : public TestCaseInfo { public: TestCase( ITestCase* testCase, TestCaseInfo const& info ); TestCase( TestCase const& other ); TestCase withName( std::string const& _newName ) const; void invoke() const; TestCaseInfo const& getTestCaseInfo() const; void swap( TestCase& other ); bool operator == ( TestCase const& other ) const; bool operator < ( TestCase const& other ) const; TestCase& operator = ( TestCase const& other ); private: Ptr test; }; TestCase makeTestCase( ITestCase* testCase, std::string const& className, std::string const& name, std::string const& description, SourceLineInfo const& lineInfo ); } #ifdef __clang__ #pragma clang diagnostic pop #endif #ifdef __OBJC__ // #included from: internal/catch_objc.hpp #define TWOBLUECUBES_CATCH_OBJC_HPP_INCLUDED #import #include // NB. Any general catch headers included here must be included // in catch.hpp first to make sure they are included by the single // header for non obj-usage /////////////////////////////////////////////////////////////////////////////// // This protocol is really only here for (self) documenting purposes, since // all its methods are optional. @protocol OcFixture @optional -(void) setUp; -(void) tearDown; @end namespace Catch { class OcMethod : public SharedImpl { public: OcMethod( Class cls, SEL sel ) : m_cls( cls ), m_sel( sel ) {} virtual void invoke() const { id obj = [[m_cls alloc] init]; performOptionalSelector( obj, @selector(setUp) ); performOptionalSelector( obj, m_sel ); performOptionalSelector( obj, @selector(tearDown) ); arcSafeRelease( obj ); } private: virtual ~OcMethod() {} Class m_cls; SEL m_sel; }; namespace Detail{ inline std::string getAnnotation( Class cls, std::string const& annotationName, std::string const& testCaseName ) { NSString* selStr = [[NSString alloc] initWithFormat:@"Catch_%s_%s", annotationName.c_str(), testCaseName.c_str()]; SEL sel = NSSelectorFromString( selStr ); arcSafeRelease( selStr ); id value = performOptionalSelector( cls, sel ); if( value ) return [(NSString*)value UTF8String]; return ""; } } inline size_t registerTestMethods() { size_t noTestMethods = 0; int noClasses = objc_getClassList( NULL, 0 ); Class* classes = (CATCH_UNSAFE_UNRETAINED Class *)malloc( sizeof(Class) * noClasses); objc_getClassList( classes, noClasses ); for( int c = 0; c < noClasses; c++ ) { Class cls = classes[c]; { u_int count; Method* methods = class_copyMethodList( cls, &count ); for( u_int m = 0; m < count ; m++ ) { SEL selector = method_getName(methods[m]); std::string methodName = sel_getName(selector); if( startsWith( methodName, "Catch_TestCase_" ) ) { std::string testCaseName = methodName.substr( 15 ); std::string name = Detail::getAnnotation( cls, "Name", testCaseName ); std::string desc = Detail::getAnnotation( cls, "Description", testCaseName ); const char* className = class_getName( cls ); getMutableRegistryHub().registerTest( makeTestCase( new OcMethod( cls, selector ), className, name.c_str(), desc.c_str(), SourceLineInfo() ) ); noTestMethods++; } } free(methods); } } return noTestMethods; } namespace Matchers { namespace Impl { namespace NSStringMatchers { template struct StringHolder : MatcherImpl{ StringHolder( NSString* substr ) : m_substr( [substr copy] ){} StringHolder( StringHolder const& other ) : m_substr( [other.m_substr copy] ){} StringHolder() { arcSafeRelease( m_substr ); } NSString* m_substr; }; struct Equals : StringHolder { Equals( NSString* substr ) : StringHolder( substr ){} virtual bool match( ExpressionType const& str ) const { return (str != nil || m_substr == nil ) && [str isEqualToString:m_substr]; } virtual std::string toString() const { return "equals string: " + Catch::toString( m_substr ); } }; struct Contains : StringHolder { Contains( NSString* substr ) : StringHolder( substr ){} virtual bool match( ExpressionType const& str ) const { return (str != nil || m_substr == nil ) && [str rangeOfString:m_substr].location != NSNotFound; } virtual std::string toString() const { return "contains string: " + Catch::toString( m_substr ); } }; struct StartsWith : StringHolder { StartsWith( NSString* substr ) : StringHolder( substr ){} virtual bool match( ExpressionType const& str ) const { return (str != nil || m_substr == nil ) && [str rangeOfString:m_substr].location == 0; } virtual std::string toString() const { return "starts with: " + Catch::toString( m_substr ); } }; struct EndsWith : StringHolder { EndsWith( NSString* substr ) : StringHolder( substr ){} virtual bool match( ExpressionType const& str ) const { return (str != nil || m_substr == nil ) && [str rangeOfString:m_substr].location == [str length] - [m_substr length]; } virtual std::string toString() const { return "ends with: " + Catch::toString( m_substr ); } }; } // namespace NSStringMatchers } // namespace Impl inline Impl::NSStringMatchers::Equals Equals( NSString* substr ){ return Impl::NSStringMatchers::Equals( substr ); } inline Impl::NSStringMatchers::Contains Contains( NSString* substr ){ return Impl::NSStringMatchers::Contains( substr ); } inline Impl::NSStringMatchers::StartsWith StartsWith( NSString* substr ){ return Impl::NSStringMatchers::StartsWith( substr ); } inline Impl::NSStringMatchers::EndsWith EndsWith( NSString* substr ){ return Impl::NSStringMatchers::EndsWith( substr ); } } // namespace Matchers using namespace Matchers; } // namespace Catch /////////////////////////////////////////////////////////////////////////////// #define OC_TEST_CASE( name, desc )\ +(NSString*) INTERNAL_CATCH_UNIQUE_NAME( Catch_Name_test ) \ {\ return @ name; \ }\ +(NSString*) INTERNAL_CATCH_UNIQUE_NAME( Catch_Description_test ) \ { \ return @ desc; \ } \ -(void) INTERNAL_CATCH_UNIQUE_NAME( Catch_TestCase_test ) #endif #ifdef CATCH_IMPL // #included from: internal/catch_impl.hpp #define TWOBLUECUBES_CATCH_IMPL_HPP_INCLUDED // Collect all the implementation files together here // These are the equivalent of what would usually be cpp files #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wweak-vtables" #endif // #included from: ../catch_runner.hpp #define TWOBLUECUBES_CATCH_RUNNER_HPP_INCLUDED // #included from: internal/catch_commandline.hpp #define TWOBLUECUBES_CATCH_COMMANDLINE_HPP_INCLUDED // #included from: catch_config.hpp #define TWOBLUECUBES_CATCH_CONFIG_HPP_INCLUDED // #included from: catch_test_spec_parser.hpp #define TWOBLUECUBES_CATCH_TEST_SPEC_PARSER_HPP_INCLUDED #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wpadded" #endif // #included from: catch_test_spec.hpp #define TWOBLUECUBES_CATCH_TEST_SPEC_HPP_INCLUDED #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wpadded" #endif #include #include namespace Catch { class TestSpec { struct Pattern : SharedImpl<> { virtual ~Pattern(); virtual bool matches( TestCaseInfo const& testCase ) const = 0; }; class NamePattern : public Pattern { enum WildcardPosition { NoWildcard = 0, WildcardAtStart = 1, WildcardAtEnd = 2, WildcardAtBothEnds = WildcardAtStart | WildcardAtEnd }; public: NamePattern( std::string const& name ) : m_name( toLower( name ) ), m_wildcard( NoWildcard ) { if( startsWith( m_name, "*" ) ) { m_name = m_name.substr( 1 ); m_wildcard = WildcardAtStart; } if( endsWith( m_name, "*" ) ) { m_name = m_name.substr( 0, m_name.size()-1 ); m_wildcard = static_cast( m_wildcard | WildcardAtEnd ); } } virtual ~NamePattern(); virtual bool matches( TestCaseInfo const& testCase ) const { switch( m_wildcard ) { case NoWildcard: return m_name == toLower( testCase.name ); case WildcardAtStart: return endsWith( toLower( testCase.name ), m_name ); case WildcardAtEnd: return startsWith( toLower( testCase.name ), m_name ); case WildcardAtBothEnds: return contains( toLower( testCase.name ), m_name ); } #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wunreachable-code" #endif throw std::logic_error( "Unknown enum" ); #ifdef __clang__ #pragma clang diagnostic pop #endif } private: std::string m_name; WildcardPosition m_wildcard; }; class TagPattern : public Pattern { public: TagPattern( std::string const& tag ) : m_tag( toLower( tag ) ) {} virtual ~TagPattern(); virtual bool matches( TestCaseInfo const& testCase ) const { return testCase.lcaseTags.find( m_tag ) != testCase.lcaseTags.end(); } private: std::string m_tag; }; class ExcludedPattern : public Pattern { public: ExcludedPattern( Ptr const& underlyingPattern ) : m_underlyingPattern( underlyingPattern ) {} virtual ~ExcludedPattern(); virtual bool matches( TestCaseInfo const& testCase ) const { return !m_underlyingPattern->matches( testCase ); } private: Ptr m_underlyingPattern; }; struct Filter { std::vector > m_patterns; bool matches( TestCaseInfo const& testCase ) const { // All patterns in a filter must match for the filter to be a match for( std::vector >::const_iterator it = m_patterns.begin(), itEnd = m_patterns.end(); it != itEnd; ++it ) if( !(*it)->matches( testCase ) ) return false; return true; } }; public: bool hasFilters() const { return !m_filters.empty(); } bool matches( TestCaseInfo const& testCase ) const { // A TestSpec matches if any filter matches for( std::vector::const_iterator it = m_filters.begin(), itEnd = m_filters.end(); it != itEnd; ++it ) if( it->matches( testCase ) ) return true; return false; } private: std::vector m_filters; friend class TestSpecParser; }; } #ifdef __clang__ #pragma clang diagnostic pop #endif namespace Catch { class TestSpecParser { enum Mode{ None, Name, QuotedName, Tag }; Mode m_mode; bool m_exclusion; std::size_t m_start, m_pos; std::string m_arg; TestSpec::Filter m_currentFilter; TestSpec m_testSpec; ITagAliasRegistry const* m_tagAliases; public: TestSpecParser( ITagAliasRegistry const& tagAliases ) : m_tagAliases( &tagAliases ) {} TestSpecParser& parse( std::string const& arg ) { m_mode = None; m_exclusion = false; m_start = std::string::npos; m_arg = m_tagAliases->expandAliases( arg ); for( m_pos = 0; m_pos < m_arg.size(); ++m_pos ) visitChar( m_arg[m_pos] ); if( m_mode == Name ) addPattern(); return *this; } TestSpec testSpec() { addFilter(); return m_testSpec; } private: void visitChar( char c ) { if( m_mode == None ) { switch( c ) { case ' ': return; case '~': m_exclusion = true; return; case '[': return startNewMode( Tag, ++m_pos ); case '"': return startNewMode( QuotedName, ++m_pos ); default: startNewMode( Name, m_pos ); break; } } if( m_mode == Name ) { if( c == ',' ) { addPattern(); addFilter(); } else if( c == '[' ) { if( subString() == "exclude:" ) m_exclusion = true; else addPattern(); startNewMode( Tag, ++m_pos ); } } else if( m_mode == QuotedName && c == '"' ) addPattern(); else if( m_mode == Tag && c == ']' ) addPattern(); } void startNewMode( Mode mode, std::size_t start ) { m_mode = mode; m_start = start; } std::string subString() const { return m_arg.substr( m_start, m_pos - m_start ); } template void addPattern() { std::string token = subString(); if( startsWith( token, "exclude:" ) ) { m_exclusion = true; token = token.substr( 8 ); } if( !token.empty() ) { Ptr pattern = new T( token ); if( m_exclusion ) pattern = new TestSpec::ExcludedPattern( pattern ); m_currentFilter.m_patterns.push_back( pattern ); } m_exclusion = false; m_mode = None; } void addFilter() { if( !m_currentFilter.m_patterns.empty() ) { m_testSpec.m_filters.push_back( m_currentFilter ); m_currentFilter = TestSpec::Filter(); } } }; inline TestSpec parseTestSpec( std::string const& arg ) { return TestSpecParser( ITagAliasRegistry::get() ).parse( arg ).testSpec(); } } // namespace Catch #ifdef __clang__ #pragma clang diagnostic pop #endif // #included from: catch_interfaces_config.h #define TWOBLUECUBES_CATCH_INTERFACES_CONFIG_H_INCLUDED #include #include #include namespace Catch { struct Verbosity { enum Level { NoOutput = 0, Quiet, Normal }; }; struct WarnAbout { enum What { Nothing = 0x00, NoAssertions = 0x01 }; }; struct ShowDurations { enum OrNot { DefaultForReporter, Always, Never }; }; struct RunTests { enum InWhatOrder { InDeclarationOrder, InLexicographicalOrder, InRandomOrder }; }; class TestSpec; struct IConfig : IShared { virtual ~IConfig(); virtual bool allowThrows() const = 0; virtual std::ostream& stream() const = 0; virtual std::string name() const = 0; virtual bool includeSuccessfulResults() const = 0; virtual bool shouldDebugBreak() const = 0; virtual bool warnAboutMissingAssertions() const = 0; virtual int abortAfter() const = 0; virtual bool showInvisibles() const = 0; virtual ShowDurations::OrNot showDurations() const = 0; virtual TestSpec const& testSpec() const = 0; virtual RunTests::InWhatOrder runOrder() const = 0; virtual unsigned int rngSeed() const = 0; virtual bool forceColour() const = 0; }; } // #included from: catch_stream.h #define TWOBLUECUBES_CATCH_STREAM_H_INCLUDED #include #ifdef __clang__ #pragma clang diagnostic ignored "-Wpadded" #endif namespace Catch { class Stream { public: Stream(); Stream( std::streambuf* _streamBuf, bool _isOwned ); void release(); std::streambuf* streamBuf; private: bool isOwned; }; std::ostream& cout(); std::ostream& cerr(); } #include #include #include #include #include #ifndef CATCH_CONFIG_CONSOLE_WIDTH #define CATCH_CONFIG_CONSOLE_WIDTH 80 #endif namespace Catch { struct ConfigData { ConfigData() : listTests( false ), listTags( false ), listReporters( false ), listTestNamesOnly( false ), showSuccessfulTests( false ), shouldDebugBreak( false ), noThrow( false ), showHelp( false ), showInvisibles( false ), forceColour( false ), abortAfter( -1 ), rngSeed( 0 ), verbosity( Verbosity::Normal ), warnings( WarnAbout::Nothing ), showDurations( ShowDurations::DefaultForReporter ), runOrder( RunTests::InDeclarationOrder ) {} bool listTests; bool listTags; bool listReporters; bool listTestNamesOnly; bool showSuccessfulTests; bool shouldDebugBreak; bool noThrow; bool showHelp; bool showInvisibles; bool forceColour; int abortAfter; unsigned int rngSeed; Verbosity::Level verbosity; WarnAbout::What warnings; ShowDurations::OrNot showDurations; RunTests::InWhatOrder runOrder; std::string reporterName; std::string outputFilename; std::string name; std::string processName; std::vector testsOrTags; }; class Config : public SharedImpl { private: Config( Config const& other ); Config& operator = ( Config const& other ); virtual void dummy(); public: Config() : m_os( Catch::cout().rdbuf() ) {} Config( ConfigData const& data ) : m_data( data ), m_os( Catch::cout().rdbuf() ) { if( !data.testsOrTags.empty() ) { TestSpecParser parser( ITagAliasRegistry::get() ); for( std::size_t i = 0; i < data.testsOrTags.size(); ++i ) parser.parse( data.testsOrTags[i] ); m_testSpec = parser.testSpec(); } } virtual ~Config() { m_os.rdbuf( Catch::cout().rdbuf() ); m_stream.release(); } void setFilename( std::string const& filename ) { m_data.outputFilename = filename; } std::string const& getFilename() const { return m_data.outputFilename ; } bool listTests() const { return m_data.listTests; } bool listTestNamesOnly() const { return m_data.listTestNamesOnly; } bool listTags() const { return m_data.listTags; } bool listReporters() const { return m_data.listReporters; } std::string getProcessName() const { return m_data.processName; } bool shouldDebugBreak() const { return m_data.shouldDebugBreak; } void setStreamBuf( std::streambuf* buf ) { m_os.rdbuf( buf ? buf : Catch::cout().rdbuf() ); } void useStream( std::string const& streamName ) { Stream stream = createStream( streamName ); setStreamBuf( stream.streamBuf ); m_stream.release(); m_stream = stream; } std::string getReporterName() const { return m_data.reporterName; } int abortAfter() const { return m_data.abortAfter; } TestSpec const& testSpec() const { return m_testSpec; } bool showHelp() const { return m_data.showHelp; } bool showInvisibles() const { return m_data.showInvisibles; } // IConfig interface virtual bool allowThrows() const { return !m_data.noThrow; } virtual std::ostream& stream() const { return m_os; } virtual std::string name() const { return m_data.name.empty() ? m_data.processName : m_data.name; } virtual bool includeSuccessfulResults() const { return m_data.showSuccessfulTests; } virtual bool warnAboutMissingAssertions() const { return m_data.warnings & WarnAbout::NoAssertions; } virtual ShowDurations::OrNot showDurations() const { return m_data.showDurations; } virtual RunTests::InWhatOrder runOrder() const { return m_data.runOrder; } virtual unsigned int rngSeed() const { return m_data.rngSeed; } virtual bool forceColour() const { return m_data.forceColour; } private: ConfigData m_data; Stream m_stream; mutable std::ostream m_os; TestSpec m_testSpec; }; } // end namespace Catch // #included from: catch_clara.h #define TWOBLUECUBES_CATCH_CLARA_H_INCLUDED // Use Catch's value for console width (store Clara's off to the side, if present) #ifdef CLARA_CONFIG_CONSOLE_WIDTH #define CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH CLARA_CONFIG_CONSOLE_WIDTH #undef CLARA_CONFIG_CONSOLE_WIDTH #endif #define CLARA_CONFIG_CONSOLE_WIDTH CATCH_CONFIG_CONSOLE_WIDTH // Declare Clara inside the Catch namespace #define STITCH_CLARA_OPEN_NAMESPACE namespace Catch { // #included from: ../external/clara.h // Only use header guard if we are not using an outer namespace #if !defined(TWOBLUECUBES_CLARA_H_INCLUDED) || defined(STITCH_CLARA_OPEN_NAMESPACE) #ifndef STITCH_CLARA_OPEN_NAMESPACE #define TWOBLUECUBES_CLARA_H_INCLUDED #define STITCH_CLARA_OPEN_NAMESPACE #define STITCH_CLARA_CLOSE_NAMESPACE #else #define STITCH_CLARA_CLOSE_NAMESPACE } #endif #define STITCH_TBC_TEXT_FORMAT_OPEN_NAMESPACE STITCH_CLARA_OPEN_NAMESPACE // ----------- #included from tbc_text_format.h ----------- // Only use header guard if we are not using an outer namespace #if !defined(TBC_TEXT_FORMAT_H_INCLUDED) || defined(STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE) #ifndef STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE #define TBC_TEXT_FORMAT_H_INCLUDED #endif #include #include #include // Use optional outer namespace #ifdef STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE namespace STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE { #endif namespace Tbc { #ifdef TBC_TEXT_FORMAT_CONSOLE_WIDTH const unsigned int consoleWidth = TBC_TEXT_FORMAT_CONSOLE_WIDTH; #else const unsigned int consoleWidth = 80; #endif struct TextAttributes { TextAttributes() : initialIndent( std::string::npos ), indent( 0 ), width( consoleWidth-1 ), tabChar( '\t' ) {} TextAttributes& setInitialIndent( std::size_t _value ) { initialIndent = _value; return *this; } TextAttributes& setIndent( std::size_t _value ) { indent = _value; return *this; } TextAttributes& setWidth( std::size_t _value ) { width = _value; return *this; } TextAttributes& setTabChar( char _value ) { tabChar = _value; return *this; } std::size_t initialIndent; // indent of first line, or npos std::size_t indent; // indent of subsequent lines, or all if initialIndent is npos std::size_t width; // maximum width of text, including indent. Longer text will wrap char tabChar; // If this char is seen the indent is changed to current pos }; class Text { public: Text( std::string const& _str, TextAttributes const& _attr = TextAttributes() ) : attr( _attr ) { std::string wrappableChars = " [({.,/|\\-"; std::size_t indent = _attr.initialIndent != std::string::npos ? _attr.initialIndent : _attr.indent; std::string remainder = _str; while( !remainder.empty() ) { if( lines.size() >= 1000 ) { lines.push_back( "... message truncated due to excessive size" ); return; } std::size_t tabPos = std::string::npos; std::size_t width = (std::min)( remainder.size(), _attr.width - indent ); std::size_t pos = remainder.find_first_of( '\n' ); if( pos <= width ) { width = pos; } pos = remainder.find_last_of( _attr.tabChar, width ); if( pos != std::string::npos ) { tabPos = pos; if( remainder[width] == '\n' ) width--; remainder = remainder.substr( 0, tabPos ) + remainder.substr( tabPos+1 ); } if( width == remainder.size() ) { spliceLine( indent, remainder, width ); } else if( remainder[width] == '\n' ) { spliceLine( indent, remainder, width ); if( width <= 1 || remainder.size() != 1 ) remainder = remainder.substr( 1 ); indent = _attr.indent; } else { pos = remainder.find_last_of( wrappableChars, width ); if( pos != std::string::npos && pos > 0 ) { spliceLine( indent, remainder, pos ); if( remainder[0] == ' ' ) remainder = remainder.substr( 1 ); } else { spliceLine( indent, remainder, width-1 ); lines.back() += "-"; } if( lines.size() == 1 ) indent = _attr.indent; if( tabPos != std::string::npos ) indent += tabPos; } } } void spliceLine( std::size_t _indent, std::string& _remainder, std::size_t _pos ) { lines.push_back( std::string( _indent, ' ' ) + _remainder.substr( 0, _pos ) ); _remainder = _remainder.substr( _pos ); } typedef std::vector::const_iterator const_iterator; const_iterator begin() const { return lines.begin(); } const_iterator end() const { return lines.end(); } std::string const& last() const { return lines.back(); } std::size_t size() const { return lines.size(); } std::string const& operator[]( std::size_t _index ) const { return lines[_index]; } std::string toString() const { std::ostringstream oss; oss << *this; return oss.str(); } inline friend std::ostream& operator << ( std::ostream& _stream, Text const& _text ) { for( Text::const_iterator it = _text.begin(), itEnd = _text.end(); it != itEnd; ++it ) { if( it != _text.begin() ) _stream << "\n"; _stream << *it; } return _stream; } private: std::string str; TextAttributes attr; std::vector lines; }; } // end namespace Tbc #ifdef STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE } // end outer namespace #endif #endif // TBC_TEXT_FORMAT_H_INCLUDED // ----------- end of #include from tbc_text_format.h ----------- // ........... back in /Users/philnash/Dev/OSS/Clara/srcs/clara.h #undef STITCH_TBC_TEXT_FORMAT_OPEN_NAMESPACE #include #include #include #include // Use optional outer namespace #ifdef STITCH_CLARA_OPEN_NAMESPACE STITCH_CLARA_OPEN_NAMESPACE #endif namespace Clara { struct UnpositionalTag {}; extern UnpositionalTag _; #ifdef CLARA_CONFIG_MAIN UnpositionalTag _; #endif namespace Detail { #ifdef CLARA_CONSOLE_WIDTH const unsigned int consoleWidth = CLARA_CONFIG_CONSOLE_WIDTH; #else const unsigned int consoleWidth = 80; #endif using namespace Tbc; inline bool startsWith( std::string const& str, std::string const& prefix ) { return str.size() >= prefix.size() && str.substr( 0, prefix.size() ) == prefix; } template struct RemoveConstRef{ typedef T type; }; template struct RemoveConstRef{ typedef T type; }; template struct RemoveConstRef{ typedef T type; }; template struct RemoveConstRef{ typedef T type; }; template struct IsBool { static const bool value = false; }; template<> struct IsBool { static const bool value = true; }; template void convertInto( std::string const& _source, T& _dest ) { std::stringstream ss; ss << _source; ss >> _dest; if( ss.fail() ) throw std::runtime_error( "Unable to convert " + _source + " to destination type" ); } inline void convertInto( std::string const& _source, std::string& _dest ) { _dest = _source; } inline void convertInto( std::string const& _source, bool& _dest ) { std::string sourceLC = _source; std::transform( sourceLC.begin(), sourceLC.end(), sourceLC.begin(), ::tolower ); if( sourceLC == "y" || sourceLC == "1" || sourceLC == "true" || sourceLC == "yes" || sourceLC == "on" ) _dest = true; else if( sourceLC == "n" || sourceLC == "0" || sourceLC == "false" || sourceLC == "no" || sourceLC == "off" ) _dest = false; else throw std::runtime_error( "Expected a boolean value but did not recognise:\n '" + _source + "'" ); } inline void convertInto( bool _source, bool& _dest ) { _dest = _source; } template inline void convertInto( bool, T& ) { throw std::runtime_error( "Invalid conversion" ); } template struct IArgFunction { virtual ~IArgFunction() {} # ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS IArgFunction() = default; IArgFunction( IArgFunction const& ) = default; # endif virtual void set( ConfigT& config, std::string const& value ) const = 0; virtual void setFlag( ConfigT& config ) const = 0; virtual bool takesArg() const = 0; virtual IArgFunction* clone() const = 0; }; template class BoundArgFunction { public: BoundArgFunction() : functionObj( NULL ) {} BoundArgFunction( IArgFunction* _functionObj ) : functionObj( _functionObj ) {} BoundArgFunction( BoundArgFunction const& other ) : functionObj( other.functionObj ? other.functionObj->clone() : NULL ) {} BoundArgFunction& operator = ( BoundArgFunction const& other ) { IArgFunction* newFunctionObj = other.functionObj ? other.functionObj->clone() : NULL; delete functionObj; functionObj = newFunctionObj; return *this; } ~BoundArgFunction() { delete functionObj; } void set( ConfigT& config, std::string const& value ) const { functionObj->set( config, value ); } void setFlag( ConfigT& config ) const { functionObj->setFlag( config ); } bool takesArg() const { return functionObj->takesArg(); } bool isSet() const { return functionObj != NULL; } private: IArgFunction* functionObj; }; template struct NullBinder : IArgFunction{ virtual void set( C&, std::string const& ) const {} virtual void setFlag( C& ) const {} virtual bool takesArg() const { return true; } virtual IArgFunction* clone() const { return new NullBinder( *this ); } }; template struct BoundDataMember : IArgFunction{ BoundDataMember( M C::* _member ) : member( _member ) {} virtual void set( C& p, std::string const& stringValue ) const { convertInto( stringValue, p.*member ); } virtual void setFlag( C& p ) const { convertInto( true, p.*member ); } virtual bool takesArg() const { return !IsBool::value; } virtual IArgFunction* clone() const { return new BoundDataMember( *this ); } M C::* member; }; template struct BoundUnaryMethod : IArgFunction{ BoundUnaryMethod( void (C::*_member)( M ) ) : member( _member ) {} virtual void set( C& p, std::string const& stringValue ) const { typename RemoveConstRef::type value; convertInto( stringValue, value ); (p.*member)( value ); } virtual void setFlag( C& p ) const { typename RemoveConstRef::type value; convertInto( true, value ); (p.*member)( value ); } virtual bool takesArg() const { return !IsBool::value; } virtual IArgFunction* clone() const { return new BoundUnaryMethod( *this ); } void (C::*member)( M ); }; template struct BoundNullaryMethod : IArgFunction{ BoundNullaryMethod( void (C::*_member)() ) : member( _member ) {} virtual void set( C& p, std::string const& stringValue ) const { bool value; convertInto( stringValue, value ); if( value ) (p.*member)(); } virtual void setFlag( C& p ) const { (p.*member)(); } virtual bool takesArg() const { return false; } virtual IArgFunction* clone() const { return new BoundNullaryMethod( *this ); } void (C::*member)(); }; template struct BoundUnaryFunction : IArgFunction{ BoundUnaryFunction( void (*_function)( C& ) ) : function( _function ) {} virtual void set( C& obj, std::string const& stringValue ) const { bool value; convertInto( stringValue, value ); if( value ) function( obj ); } virtual void setFlag( C& p ) const { function( p ); } virtual bool takesArg() const { return false; } virtual IArgFunction* clone() const { return new BoundUnaryFunction( *this ); } void (*function)( C& ); }; template struct BoundBinaryFunction : IArgFunction{ BoundBinaryFunction( void (*_function)( C&, T ) ) : function( _function ) {} virtual void set( C& obj, std::string const& stringValue ) const { typename RemoveConstRef::type value; convertInto( stringValue, value ); function( obj, value ); } virtual void setFlag( C& obj ) const { typename RemoveConstRef::type value; convertInto( true, value ); function( obj, value ); } virtual bool takesArg() const { return !IsBool::value; } virtual IArgFunction* clone() const { return new BoundBinaryFunction( *this ); } void (*function)( C&, T ); }; } // namespace Detail struct Parser { Parser() : separators( " \t=:" ) {} struct Token { enum Type { Positional, ShortOpt, LongOpt }; Token( Type _type, std::string const& _data ) : type( _type ), data( _data ) {} Type type; std::string data; }; void parseIntoTokens( int argc, char const * const * argv, std::vector& tokens ) const { const std::string doubleDash = "--"; for( int i = 1; i < argc && argv[i] != doubleDash; ++i ) parseIntoTokens( argv[i] , tokens); } void parseIntoTokens( std::string arg, std::vector& tokens ) const { while( !arg.empty() ) { Parser::Token token( Parser::Token::Positional, arg ); arg = ""; if( token.data[0] == '-' ) { if( token.data.size() > 1 && token.data[1] == '-' ) { token = Parser::Token( Parser::Token::LongOpt, token.data.substr( 2 ) ); } else { token = Parser::Token( Parser::Token::ShortOpt, token.data.substr( 1 ) ); if( token.data.size() > 1 && separators.find( token.data[1] ) == std::string::npos ) { arg = "-" + token.data.substr( 1 ); token.data = token.data.substr( 0, 1 ); } } } if( token.type != Parser::Token::Positional ) { std::size_t pos = token.data.find_first_of( separators ); if( pos != std::string::npos ) { arg = token.data.substr( pos+1 ); token.data = token.data.substr( 0, pos ); } } tokens.push_back( token ); } } std::string separators; }; template struct CommonArgProperties { CommonArgProperties() {} CommonArgProperties( Detail::BoundArgFunction const& _boundField ) : boundField( _boundField ) {} Detail::BoundArgFunction boundField; std::string description; std::string detail; std::string placeholder; // Only value if boundField takes an arg bool takesArg() const { return !placeholder.empty(); } void validate() const { if( !boundField.isSet() ) throw std::logic_error( "option not bound" ); } }; struct OptionArgProperties { std::vector shortNames; std::string longName; bool hasShortName( std::string const& shortName ) const { return std::find( shortNames.begin(), shortNames.end(), shortName ) != shortNames.end(); } bool hasLongName( std::string const& _longName ) const { return _longName == longName; } }; struct PositionalArgProperties { PositionalArgProperties() : position( -1 ) {} int position; // -1 means non-positional (floating) bool isFixedPositional() const { return position != -1; } }; template class CommandLine { struct Arg : CommonArgProperties, OptionArgProperties, PositionalArgProperties { Arg() {} Arg( Detail::BoundArgFunction const& _boundField ) : CommonArgProperties( _boundField ) {} using CommonArgProperties::placeholder; // !TBD std::string dbgName() const { if( !longName.empty() ) return "--" + longName; if( !shortNames.empty() ) return "-" + shortNames[0]; return "positional args"; } std::string commands() const { std::ostringstream oss; bool first = true; std::vector::const_iterator it = shortNames.begin(), itEnd = shortNames.end(); for(; it != itEnd; ++it ) { if( first ) first = false; else oss << ", "; oss << "-" << *it; } if( !longName.empty() ) { if( !first ) oss << ", "; oss << "--" << longName; } if( !placeholder.empty() ) oss << " <" << placeholder << ">"; return oss.str(); } }; // NOTE: std::auto_ptr is deprecated in c++11/c++0x #if defined(__cplusplus) && __cplusplus > 199711L typedef std::unique_ptr ArgAutoPtr; #else typedef std::auto_ptr ArgAutoPtr; #endif friend void addOptName( Arg& arg, std::string const& optName ) { if( optName.empty() ) return; if( Detail::startsWith( optName, "--" ) ) { if( !arg.longName.empty() ) throw std::logic_error( "Only one long opt may be specified. '" + arg.longName + "' already specified, now attempting to add '" + optName + "'" ); arg.longName = optName.substr( 2 ); } else if( Detail::startsWith( optName, "-" ) ) arg.shortNames.push_back( optName.substr( 1 ) ); else throw std::logic_error( "option must begin with - or --. Option was: '" + optName + "'" ); } friend void setPositionalArg( Arg& arg, int position ) { arg.position = position; } class ArgBuilder { public: ArgBuilder( Arg* arg ) : m_arg( arg ) {} // Bind a non-boolean data member (requires placeholder string) template void bind( M C::* field, std::string const& placeholder ) { m_arg->boundField = new Detail::BoundDataMember( field ); m_arg->placeholder = placeholder; } // Bind a boolean data member (no placeholder required) template void bind( bool C::* field ) { m_arg->boundField = new Detail::BoundDataMember( field ); } // Bind a method taking a single, non-boolean argument (requires a placeholder string) template void bind( void (C::* unaryMethod)( M ), std::string const& placeholder ) { m_arg->boundField = new Detail::BoundUnaryMethod( unaryMethod ); m_arg->placeholder = placeholder; } // Bind a method taking a single, boolean argument (no placeholder string required) template void bind( void (C::* unaryMethod)( bool ) ) { m_arg->boundField = new Detail::BoundUnaryMethod( unaryMethod ); } // Bind a method that takes no arguments (will be called if opt is present) template void bind( void (C::* nullaryMethod)() ) { m_arg->boundField = new Detail::BoundNullaryMethod( nullaryMethod ); } // Bind a free function taking a single argument - the object to operate on (no placeholder string required) template void bind( void (* unaryFunction)( C& ) ) { m_arg->boundField = new Detail::BoundUnaryFunction( unaryFunction ); } // Bind a free function taking a single argument - the object to operate on (requires a placeholder string) template void bind( void (* binaryFunction)( C&, T ), std::string const& placeholder ) { m_arg->boundField = new Detail::BoundBinaryFunction( binaryFunction ); m_arg->placeholder = placeholder; } ArgBuilder& describe( std::string const& description ) { m_arg->description = description; return *this; } ArgBuilder& detail( std::string const& detail ) { m_arg->detail = detail; return *this; } protected: Arg* m_arg; }; class OptBuilder : public ArgBuilder { public: OptBuilder( Arg* arg ) : ArgBuilder( arg ) {} OptBuilder( OptBuilder& other ) : ArgBuilder( other ) {} OptBuilder& operator[]( std::string const& optName ) { addOptName( *ArgBuilder::m_arg, optName ); return *this; } }; public: CommandLine() : m_boundProcessName( new Detail::NullBinder() ), m_highestSpecifiedArgPosition( 0 ), m_throwOnUnrecognisedTokens( false ) {} CommandLine( CommandLine const& other ) : m_boundProcessName( other.m_boundProcessName ), m_options ( other.m_options ), m_positionalArgs( other.m_positionalArgs ), m_highestSpecifiedArgPosition( other.m_highestSpecifiedArgPosition ), m_throwOnUnrecognisedTokens( other.m_throwOnUnrecognisedTokens ) { if( other.m_floatingArg.get() ) m_floatingArg.reset( new Arg( *other.m_floatingArg ) ); } CommandLine& setThrowOnUnrecognisedTokens( bool shouldThrow = true ) { m_throwOnUnrecognisedTokens = shouldThrow; return *this; } OptBuilder operator[]( std::string const& optName ) { m_options.push_back( Arg() ); addOptName( m_options.back(), optName ); OptBuilder builder( &m_options.back() ); return builder; } ArgBuilder operator[]( int position ) { m_positionalArgs.insert( std::make_pair( position, Arg() ) ); if( position > m_highestSpecifiedArgPosition ) m_highestSpecifiedArgPosition = position; setPositionalArg( m_positionalArgs[position], position ); ArgBuilder builder( &m_positionalArgs[position] ); return builder; } // Invoke this with the _ instance ArgBuilder operator[]( UnpositionalTag ) { if( m_floatingArg.get() ) throw std::logic_error( "Only one unpositional argument can be added" ); m_floatingArg.reset( new Arg() ); ArgBuilder builder( m_floatingArg.get() ); return builder; } template void bindProcessName( M C::* field ) { m_boundProcessName = new Detail::BoundDataMember( field ); } template void bindProcessName( void (C::*_unaryMethod)( M ) ) { m_boundProcessName = new Detail::BoundUnaryMethod( _unaryMethod ); } void optUsage( std::ostream& os, std::size_t indent = 0, std::size_t width = Detail::consoleWidth ) const { typename std::vector::const_iterator itBegin = m_options.begin(), itEnd = m_options.end(), it; std::size_t maxWidth = 0; for( it = itBegin; it != itEnd; ++it ) maxWidth = (std::max)( maxWidth, it->commands().size() ); for( it = itBegin; it != itEnd; ++it ) { Detail::Text usage( it->commands(), Detail::TextAttributes() .setWidth( maxWidth+indent ) .setIndent( indent ) ); Detail::Text desc( it->description, Detail::TextAttributes() .setWidth( width - maxWidth - 3 ) ); for( std::size_t i = 0; i < (std::max)( usage.size(), desc.size() ); ++i ) { std::string usageCol = i < usage.size() ? usage[i] : ""; os << usageCol; if( i < desc.size() && !desc[i].empty() ) os << std::string( indent + 2 + maxWidth - usageCol.size(), ' ' ) << desc[i]; os << "\n"; } } } std::string optUsage() const { std::ostringstream oss; optUsage( oss ); return oss.str(); } void argSynopsis( std::ostream& os ) const { for( int i = 1; i <= m_highestSpecifiedArgPosition; ++i ) { if( i > 1 ) os << " "; typename std::map::const_iterator it = m_positionalArgs.find( i ); if( it != m_positionalArgs.end() ) os << "<" << it->second.placeholder << ">"; else if( m_floatingArg.get() ) os << "<" << m_floatingArg->placeholder << ">"; else throw std::logic_error( "non consecutive positional arguments with no floating args" ); } // !TBD No indication of mandatory args if( m_floatingArg.get() ) { if( m_highestSpecifiedArgPosition > 1 ) os << " "; os << "[<" << m_floatingArg->placeholder << "> ...]"; } } std::string argSynopsis() const { std::ostringstream oss; argSynopsis( oss ); return oss.str(); } void usage( std::ostream& os, std::string const& procName ) const { validate(); os << "usage:\n " << procName << " "; argSynopsis( os ); if( !m_options.empty() ) { os << " [options]\n\nwhere options are: \n"; optUsage( os, 2 ); } os << "\n"; } std::string usage( std::string const& procName ) const { std::ostringstream oss; usage( oss, procName ); return oss.str(); } ConfigT parse( int argc, char const * const * argv ) const { ConfigT config; parseInto( argc, argv, config ); return config; } std::vector parseInto( int argc, char const * const * argv, ConfigT& config ) const { std::string processName = argv[0]; std::size_t lastSlash = processName.find_last_of( "/\\" ); if( lastSlash != std::string::npos ) processName = processName.substr( lastSlash+1 ); m_boundProcessName.set( config, processName ); std::vector tokens; Parser parser; parser.parseIntoTokens( argc, argv, tokens ); return populate( tokens, config ); } std::vector populate( std::vector const& tokens, ConfigT& config ) const { validate(); std::vector unusedTokens = populateOptions( tokens, config ); unusedTokens = populateFixedArgs( unusedTokens, config ); unusedTokens = populateFloatingArgs( unusedTokens, config ); return unusedTokens; } std::vector populateOptions( std::vector const& tokens, ConfigT& config ) const { std::vector unusedTokens; std::vector errors; for( std::size_t i = 0; i < tokens.size(); ++i ) { Parser::Token const& token = tokens[i]; typename std::vector::const_iterator it = m_options.begin(), itEnd = m_options.end(); for(; it != itEnd; ++it ) { Arg const& arg = *it; try { if( ( token.type == Parser::Token::ShortOpt && arg.hasShortName( token.data ) ) || ( token.type == Parser::Token::LongOpt && arg.hasLongName( token.data ) ) ) { if( arg.takesArg() ) { if( i == tokens.size()-1 || tokens[i+1].type != Parser::Token::Positional ) errors.push_back( "Expected argument to option: " + token.data ); else arg.boundField.set( config, tokens[++i].data ); } else { arg.boundField.setFlag( config ); } break; } } catch( std::exception& ex ) { errors.push_back( std::string( ex.what() ) + "\n- while parsing: (" + arg.commands() + ")" ); } } if( it == itEnd ) { if( token.type == Parser::Token::Positional || !m_throwOnUnrecognisedTokens ) unusedTokens.push_back( token ); else if( errors.empty() && m_throwOnUnrecognisedTokens ) errors.push_back( "unrecognised option: " + token.data ); } } if( !errors.empty() ) { std::ostringstream oss; for( std::vector::const_iterator it = errors.begin(), itEnd = errors.end(); it != itEnd; ++it ) { if( it != errors.begin() ) oss << "\n"; oss << *it; } throw std::runtime_error( oss.str() ); } return unusedTokens; } std::vector populateFixedArgs( std::vector const& tokens, ConfigT& config ) const { std::vector unusedTokens; int position = 1; for( std::size_t i = 0; i < tokens.size(); ++i ) { Parser::Token const& token = tokens[i]; typename std::map::const_iterator it = m_positionalArgs.find( position ); if( it != m_positionalArgs.end() ) it->second.boundField.set( config, token.data ); else unusedTokens.push_back( token ); if( token.type == Parser::Token::Positional ) position++; } return unusedTokens; } std::vector populateFloatingArgs( std::vector const& tokens, ConfigT& config ) const { if( !m_floatingArg.get() ) return tokens; std::vector unusedTokens; for( std::size_t i = 0; i < tokens.size(); ++i ) { Parser::Token const& token = tokens[i]; if( token.type == Parser::Token::Positional ) m_floatingArg->boundField.set( config, token.data ); else unusedTokens.push_back( token ); } return unusedTokens; } void validate() const { if( m_options.empty() && m_positionalArgs.empty() && !m_floatingArg.get() ) throw std::logic_error( "No options or arguments specified" ); for( typename std::vector::const_iterator it = m_options.begin(), itEnd = m_options.end(); it != itEnd; ++it ) it->validate(); } private: Detail::BoundArgFunction m_boundProcessName; std::vector m_options; std::map m_positionalArgs; ArgAutoPtr m_floatingArg; int m_highestSpecifiedArgPosition; bool m_throwOnUnrecognisedTokens; }; } // end namespace Clara STITCH_CLARA_CLOSE_NAMESPACE #undef STITCH_CLARA_OPEN_NAMESPACE #undef STITCH_CLARA_CLOSE_NAMESPACE #endif // TWOBLUECUBES_CLARA_H_INCLUDED #undef STITCH_CLARA_OPEN_NAMESPACE // Restore Clara's value for console width, if present #ifdef CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH #define CLARA_CONFIG_CONSOLE_WIDTH CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH #undef CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH #endif #include namespace Catch { inline void abortAfterFirst( ConfigData& config ) { config.abortAfter = 1; } inline void abortAfterX( ConfigData& config, int x ) { if( x < 1 ) throw std::runtime_error( "Value after -x or --abortAfter must be greater than zero" ); config.abortAfter = x; } inline void addTestOrTags( ConfigData& config, std::string const& _testSpec ) { config.testsOrTags.push_back( _testSpec ); } inline void addWarning( ConfigData& config, std::string const& _warning ) { if( _warning == "NoAssertions" ) config.warnings = static_cast( config.warnings | WarnAbout::NoAssertions ); else throw std::runtime_error( "Unrecognised warning: '" + _warning + "'" ); } inline void setOrder( ConfigData& config, std::string const& order ) { if( startsWith( "declared", order ) ) config.runOrder = RunTests::InDeclarationOrder; else if( startsWith( "lexical", order ) ) config.runOrder = RunTests::InLexicographicalOrder; else if( startsWith( "random", order ) ) config.runOrder = RunTests::InRandomOrder; else throw std::runtime_error( "Unrecognised ordering: '" + order + "'" ); } inline void setRngSeed( ConfigData& config, std::string const& seed ) { if( seed == "time" ) { config.rngSeed = static_cast( std::time(0) ); } else { std::stringstream ss; ss << seed; ss >> config.rngSeed; if( ss.fail() ) throw std::runtime_error( "Argment to --rng-seed should be the word 'time' or a number" ); } } inline void setVerbosity( ConfigData& config, int level ) { // !TBD: accept strings? config.verbosity = static_cast( level ); } inline void setShowDurations( ConfigData& config, bool _showDurations ) { config.showDurations = _showDurations ? ShowDurations::Always : ShowDurations::Never; } inline void loadTestNamesFromFile( ConfigData& config, std::string const& _filename ) { std::ifstream f( _filename.c_str() ); if( !f.is_open() ) throw std::domain_error( "Unable to load input file: " + _filename ); std::string line; while( std::getline( f, line ) ) { line = trim(line); if( !line.empty() && !startsWith( line, "#" ) ) addTestOrTags( config, "\"" + line + "\"," ); } } inline Clara::CommandLine makeCommandLineParser() { using namespace Clara; CommandLine cli; cli.bindProcessName( &ConfigData::processName ); cli["-?"]["-h"]["--help"] .describe( "display usage information" ) .bind( &ConfigData::showHelp ); cli["-l"]["--list-tests"] .describe( "list all/matching test cases" ) .bind( &ConfigData::listTests ); cli["-t"]["--list-tags"] .describe( "list all/matching tags" ) .bind( &ConfigData::listTags ); cli["-s"]["--success"] .describe( "include successful tests in output" ) .bind( &ConfigData::showSuccessfulTests ); cli["-b"]["--break"] .describe( "break into debugger on failure" ) .bind( &ConfigData::shouldDebugBreak ); cli["-e"]["--nothrow"] .describe( "skip exception tests" ) .bind( &ConfigData::noThrow ); cli["-i"]["--invisibles"] .describe( "show invisibles (tabs, newlines)" ) .bind( &ConfigData::showInvisibles ); cli["-o"]["--out"] .describe( "output filename" ) .bind( &ConfigData::outputFilename, "filename" ); cli["-r"]["--reporter"] // .placeholder( "name[:filename]" ) .describe( "reporter to use (defaults to console)" ) .bind( &ConfigData::reporterName, "name" ); cli["-n"]["--name"] .describe( "suite name" ) .bind( &ConfigData::name, "name" ); cli["-a"]["--abort"] .describe( "abort at first failure" ) .bind( &abortAfterFirst ); cli["-x"]["--abortx"] .describe( "abort after x failures" ) .bind( &abortAfterX, "no. failures" ); cli["-w"]["--warn"] .describe( "enable warnings" ) .bind( &addWarning, "warning name" ); // - needs updating if reinstated // cli.into( &setVerbosity ) // .describe( "level of verbosity (0=no output)" ) // .shortOpt( "v") // .longOpt( "verbosity" ) // .placeholder( "level" ); cli[_] .describe( "which test or tests to use" ) .bind( &addTestOrTags, "test name, pattern or tags" ); cli["-d"]["--durations"] .describe( "show test durations" ) .bind( &setShowDurations, "yes/no" ); cli["-f"]["--input-file"] .describe( "load test names to run from a file" ) .bind( &loadTestNamesFromFile, "filename" ); // Less common commands which don't have a short form cli["--list-test-names-only"] .describe( "list all/matching test cases names only" ) .bind( &ConfigData::listTestNamesOnly ); cli["--list-reporters"] .describe( "list all reporters" ) .bind( &ConfigData::listReporters ); cli["--order"] .describe( "test case order (defaults to decl)" ) .bind( &setOrder, "decl|lex|rand" ); cli["--rng-seed"] .describe( "set a specific seed for random numbers" ) .bind( &setRngSeed, "'time'|number" ); cli["--force-colour"] .describe( "force colourised output" ) .bind( &ConfigData::forceColour ); return cli; } } // end namespace Catch // #included from: internal/catch_list.hpp #define TWOBLUECUBES_CATCH_LIST_HPP_INCLUDED // #included from: catch_text.h #define TWOBLUECUBES_CATCH_TEXT_H_INCLUDED #define TBC_TEXT_FORMAT_CONSOLE_WIDTH CATCH_CONFIG_CONSOLE_WIDTH #define CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE Catch // #included from: ../external/tbc_text_format.h // Only use header guard if we are not using an outer namespace #ifndef CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE # ifdef TWOBLUECUBES_TEXT_FORMAT_H_INCLUDED # ifndef TWOBLUECUBES_TEXT_FORMAT_H_ALREADY_INCLUDED # define TWOBLUECUBES_TEXT_FORMAT_H_ALREADY_INCLUDED # endif # else # define TWOBLUECUBES_TEXT_FORMAT_H_INCLUDED # endif #endif #ifndef TWOBLUECUBES_TEXT_FORMAT_H_ALREADY_INCLUDED #include #include #include // Use optional outer namespace #ifdef CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE namespace CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE { #endif namespace Tbc { #ifdef TBC_TEXT_FORMAT_CONSOLE_WIDTH const unsigned int consoleWidth = TBC_TEXT_FORMAT_CONSOLE_WIDTH; #else const unsigned int consoleWidth = 80; #endif struct TextAttributes { TextAttributes() : initialIndent( std::string::npos ), indent( 0 ), width( consoleWidth-1 ), tabChar( '\t' ) {} TextAttributes& setInitialIndent( std::size_t _value ) { initialIndent = _value; return *this; } TextAttributes& setIndent( std::size_t _value ) { indent = _value; return *this; } TextAttributes& setWidth( std::size_t _value ) { width = _value; return *this; } TextAttributes& setTabChar( char _value ) { tabChar = _value; return *this; } std::size_t initialIndent; // indent of first line, or npos std::size_t indent; // indent of subsequent lines, or all if initialIndent is npos std::size_t width; // maximum width of text, including indent. Longer text will wrap char tabChar; // If this char is seen the indent is changed to current pos }; class Text { public: Text( std::string const& _str, TextAttributes const& _attr = TextAttributes() ) : attr( _attr ) { std::string wrappableChars = " [({.,/|\\-"; std::size_t indent = _attr.initialIndent != std::string::npos ? _attr.initialIndent : _attr.indent; std::string remainder = _str; while( !remainder.empty() ) { if( lines.size() >= 1000 ) { lines.push_back( "... message truncated due to excessive size" ); return; } std::size_t tabPos = std::string::npos; std::size_t width = (std::min)( remainder.size(), _attr.width - indent ); std::size_t pos = remainder.find_first_of( '\n' ); if( pos <= width ) { width = pos; } pos = remainder.find_last_of( _attr.tabChar, width ); if( pos != std::string::npos ) { tabPos = pos; if( remainder[width] == '\n' ) width--; remainder = remainder.substr( 0, tabPos ) + remainder.substr( tabPos+1 ); } if( width == remainder.size() ) { spliceLine( indent, remainder, width ); } else if( remainder[width] == '\n' ) { spliceLine( indent, remainder, width ); if( width <= 1 || remainder.size() != 1 ) remainder = remainder.substr( 1 ); indent = _attr.indent; } else { pos = remainder.find_last_of( wrappableChars, width ); if( pos != std::string::npos && pos > 0 ) { spliceLine( indent, remainder, pos ); if( remainder[0] == ' ' ) remainder = remainder.substr( 1 ); } else { spliceLine( indent, remainder, width-1 ); lines.back() += "-"; } if( lines.size() == 1 ) indent = _attr.indent; if( tabPos != std::string::npos ) indent += tabPos; } } } void spliceLine( std::size_t _indent, std::string& _remainder, std::size_t _pos ) { lines.push_back( std::string( _indent, ' ' ) + _remainder.substr( 0, _pos ) ); _remainder = _remainder.substr( _pos ); } typedef std::vector::const_iterator const_iterator; const_iterator begin() const { return lines.begin(); } const_iterator end() const { return lines.end(); } std::string const& last() const { return lines.back(); } std::size_t size() const { return lines.size(); } std::string const& operator[]( std::size_t _index ) const { return lines[_index]; } std::string toString() const { std::ostringstream oss; oss << *this; return oss.str(); } inline friend std::ostream& operator << ( std::ostream& _stream, Text const& _text ) { for( Text::const_iterator it = _text.begin(), itEnd = _text.end(); it != itEnd; ++it ) { if( it != _text.begin() ) _stream << "\n"; _stream << *it; } return _stream; } private: std::string str; TextAttributes attr; std::vector lines; }; } // end namespace Tbc #ifdef CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE } // end outer namespace #endif #endif // TWOBLUECUBES_TEXT_FORMAT_H_ALREADY_INCLUDED #undef CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE namespace Catch { using Tbc::Text; using Tbc::TextAttributes; } // #included from: catch_console_colour.hpp #define TWOBLUECUBES_CATCH_CONSOLE_COLOUR_HPP_INCLUDED namespace Catch { struct Colour { enum Code { None = 0, White, Red, Green, Blue, Cyan, Yellow, Grey, Bright = 0x10, BrightRed = Bright | Red, BrightGreen = Bright | Green, LightGrey = Bright | Grey, BrightWhite = Bright | White, // By intention FileName = LightGrey, Warning = Yellow, ResultError = BrightRed, ResultSuccess = BrightGreen, ResultExpectedFailure = Warning, Error = BrightRed, Success = Green, OriginalExpression = Cyan, ReconstructedExpression = Yellow, SecondaryText = LightGrey, Headers = White }; // Use constructed object for RAII guard Colour( Code _colourCode ); Colour( Colour const& other ); ~Colour(); // Use static method for one-shot changes static void use( Code _colourCode ); private: bool m_moved; }; inline std::ostream& operator << ( std::ostream& os, Colour const& ) { return os; } } // end namespace Catch // #included from: catch_interfaces_reporter.h #define TWOBLUECUBES_CATCH_INTERFACES_REPORTER_H_INCLUDED #include #include #include #include namespace Catch { struct ReporterConfig { explicit ReporterConfig( Ptr const& _fullConfig ) : m_stream( &_fullConfig->stream() ), m_fullConfig( _fullConfig ) {} ReporterConfig( Ptr const& _fullConfig, std::ostream& _stream ) : m_stream( &_stream ), m_fullConfig( _fullConfig ) {} std::ostream& stream() const { return *m_stream; } Ptr fullConfig() const { return m_fullConfig; } private: std::ostream* m_stream; Ptr m_fullConfig; }; struct ReporterPreferences { ReporterPreferences() : shouldRedirectStdOut( false ) {} bool shouldRedirectStdOut; }; template struct LazyStat : Option { LazyStat() : used( false ) {} LazyStat& operator=( T const& _value ) { Option::operator=( _value ); used = false; return *this; } void reset() { Option::reset(); used = false; } bool used; }; struct TestRunInfo { TestRunInfo( std::string const& _name ) : name( _name ) {} std::string name; }; struct GroupInfo { GroupInfo( std::string const& _name, std::size_t _groupIndex, std::size_t _groupsCount ) : name( _name ), groupIndex( _groupIndex ), groupsCounts( _groupsCount ) {} std::string name; std::size_t groupIndex; std::size_t groupsCounts; }; struct AssertionStats { AssertionStats( AssertionResult const& _assertionResult, std::vector const& _infoMessages, Totals const& _totals ) : assertionResult( _assertionResult ), infoMessages( _infoMessages ), totals( _totals ) { if( assertionResult.hasMessage() ) { // Copy message into messages list. // !TBD This should have been done earlier, somewhere MessageBuilder builder( assertionResult.getTestMacroName(), assertionResult.getSourceInfo(), assertionResult.getResultType() ); builder << assertionResult.getMessage(); builder.m_info.message = builder.m_stream.str(); infoMessages.push_back( builder.m_info ); } } virtual ~AssertionStats(); # ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS AssertionStats( AssertionStats const& ) = default; AssertionStats( AssertionStats && ) = default; AssertionStats& operator = ( AssertionStats const& ) = default; AssertionStats& operator = ( AssertionStats && ) = default; # endif AssertionResult assertionResult; std::vector infoMessages; Totals totals; }; struct SectionStats { SectionStats( SectionInfo const& _sectionInfo, Counts const& _assertions, double _durationInSeconds, bool _missingAssertions ) : sectionInfo( _sectionInfo ), assertions( _assertions ), durationInSeconds( _durationInSeconds ), missingAssertions( _missingAssertions ) {} virtual ~SectionStats(); # ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS SectionStats( SectionStats const& ) = default; SectionStats( SectionStats && ) = default; SectionStats& operator = ( SectionStats const& ) = default; SectionStats& operator = ( SectionStats && ) = default; # endif SectionInfo sectionInfo; Counts assertions; double durationInSeconds; bool missingAssertions; }; struct TestCaseStats { TestCaseStats( TestCaseInfo const& _testInfo, Totals const& _totals, std::string const& _stdOut, std::string const& _stdErr, bool _aborting ) : testInfo( _testInfo ), totals( _totals ), stdOut( _stdOut ), stdErr( _stdErr ), aborting( _aborting ) {} virtual ~TestCaseStats(); # ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS TestCaseStats( TestCaseStats const& ) = default; TestCaseStats( TestCaseStats && ) = default; TestCaseStats& operator = ( TestCaseStats const& ) = default; TestCaseStats& operator = ( TestCaseStats && ) = default; # endif TestCaseInfo testInfo; Totals totals; std::string stdOut; std::string stdErr; bool aborting; }; struct TestGroupStats { TestGroupStats( GroupInfo const& _groupInfo, Totals const& _totals, bool _aborting ) : groupInfo( _groupInfo ), totals( _totals ), aborting( _aborting ) {} TestGroupStats( GroupInfo const& _groupInfo ) : groupInfo( _groupInfo ), aborting( false ) {} virtual ~TestGroupStats(); # ifdef CATCH_CONFIG_CPP11_GENERATED_METHODS TestGroupStats( TestGroupStats const& ) = default; TestGroupStats( TestGroupStats && ) = default; TestGroupStats& operator = ( TestGroupStats const& ) = default; TestGroupStats& operator = ( TestGroupStats && ) = default; # endif GroupInfo groupInfo; Totals totals; bool aborting; }; struct TestRunStats { TestRunStats( TestRunInfo const& _runInfo, Totals const& _totals, bool _aborting ) : runInfo( _runInfo ), totals( _totals ), aborting( _aborting ) {} virtual ~TestRunStats(); # ifndef CATCH_CONFIG_CPP11_GENERATED_METHODS TestRunStats( TestRunStats const& _other ) : runInfo( _other.runInfo ), totals( _other.totals ), aborting( _other.aborting ) {} # else TestRunStats( TestRunStats const& ) = default; TestRunStats( TestRunStats && ) = default; TestRunStats& operator = ( TestRunStats const& ) = default; TestRunStats& operator = ( TestRunStats && ) = default; # endif TestRunInfo runInfo; Totals totals; bool aborting; }; struct IStreamingReporter : IShared { virtual ~IStreamingReporter(); // Implementing class must also provide the following static method: // static std::string getDescription(); virtual ReporterPreferences getPreferences() const = 0; virtual void noMatchingTestCases( std::string const& spec ) = 0; virtual void testRunStarting( TestRunInfo const& testRunInfo ) = 0; virtual void testGroupStarting( GroupInfo const& groupInfo ) = 0; virtual void testCaseStarting( TestCaseInfo const& testInfo ) = 0; virtual void sectionStarting( SectionInfo const& sectionInfo ) = 0; virtual void assertionStarting( AssertionInfo const& assertionInfo ) = 0; // The return value indicates if the messages buffer should be cleared: virtual bool assertionEnded( AssertionStats const& assertionStats ) = 0; virtual void sectionEnded( SectionStats const& sectionStats ) = 0; virtual void testCaseEnded( TestCaseStats const& testCaseStats ) = 0; virtual void testGroupEnded( TestGroupStats const& testGroupStats ) = 0; virtual void testRunEnded( TestRunStats const& testRunStats ) = 0; virtual void skipTest( TestCaseInfo const& testInfo ) = 0; }; struct IReporterFactory { virtual ~IReporterFactory(); virtual IStreamingReporter* create( ReporterConfig const& config ) const = 0; virtual std::string getDescription() const = 0; }; struct IReporterRegistry { typedef std::map FactoryMap; virtual ~IReporterRegistry(); virtual IStreamingReporter* create( std::string const& name, Ptr const& config ) const = 0; virtual FactoryMap const& getFactories() const = 0; }; } #include #include namespace Catch { inline std::size_t listTests( Config const& config ) { TestSpec testSpec = config.testSpec(); if( config.testSpec().hasFilters() ) Catch::cout() << "Matching test cases:\n"; else { Catch::cout() << "All available test cases:\n"; testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "*" ).testSpec(); } std::size_t matchedTests = 0; TextAttributes nameAttr, tagsAttr; nameAttr.setInitialIndent( 2 ).setIndent( 4 ); tagsAttr.setIndent( 6 ); std::vector matchedTestCases; getRegistryHub().getTestCaseRegistry().getFilteredTests( testSpec, config, matchedTestCases ); for( std::vector::const_iterator it = matchedTestCases.begin(), itEnd = matchedTestCases.end(); it != itEnd; ++it ) { matchedTests++; TestCaseInfo const& testCaseInfo = it->getTestCaseInfo(); Colour::Code colour = testCaseInfo.isHidden() ? Colour::SecondaryText : Colour::None; Colour colourGuard( colour ); Catch::cout() << Text( testCaseInfo.name, nameAttr ) << std::endl; if( !testCaseInfo.tags.empty() ) Catch::cout() << Text( testCaseInfo.tagsAsString, tagsAttr ) << std::endl; } if( !config.testSpec().hasFilters() ) Catch::cout() << pluralise( matchedTests, "test case" ) << "\n" << std::endl; else Catch::cout() << pluralise( matchedTests, "matching test case" ) << "\n" << std::endl; return matchedTests; } inline std::size_t listTestsNamesOnly( Config const& config ) { TestSpec testSpec = config.testSpec(); if( !config.testSpec().hasFilters() ) testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "*" ).testSpec(); std::size_t matchedTests = 0; std::vector matchedTestCases; getRegistryHub().getTestCaseRegistry().getFilteredTests( testSpec, config, matchedTestCases ); for( std::vector::const_iterator it = matchedTestCases.begin(), itEnd = matchedTestCases.end(); it != itEnd; ++it ) { matchedTests++; TestCaseInfo const& testCaseInfo = it->getTestCaseInfo(); Catch::cout() << testCaseInfo.name << std::endl; } return matchedTests; } struct TagInfo { TagInfo() : count ( 0 ) {} void add( std::string const& spelling ) { ++count; spellings.insert( spelling ); } std::string all() const { std::string out; for( std::set::const_iterator it = spellings.begin(), itEnd = spellings.end(); it != itEnd; ++it ) out += "[" + *it + "]"; return out; } std::set spellings; std::size_t count; }; inline std::size_t listTags( Config const& config ) { TestSpec testSpec = config.testSpec(); if( config.testSpec().hasFilters() ) Catch::cout() << "Tags for matching test cases:\n"; else { Catch::cout() << "All available tags:\n"; testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "*" ).testSpec(); } std::map tagCounts; std::vector matchedTestCases; getRegistryHub().getTestCaseRegistry().getFilteredTests( testSpec, config, matchedTestCases ); for( std::vector::const_iterator it = matchedTestCases.begin(), itEnd = matchedTestCases.end(); it != itEnd; ++it ) { for( std::set::const_iterator tagIt = it->getTestCaseInfo().tags.begin(), tagItEnd = it->getTestCaseInfo().tags.end(); tagIt != tagItEnd; ++tagIt ) { std::string tagName = *tagIt; std::string lcaseTagName = toLower( tagName ); std::map::iterator countIt = tagCounts.find( lcaseTagName ); if( countIt == tagCounts.end() ) countIt = tagCounts.insert( std::make_pair( lcaseTagName, TagInfo() ) ).first; countIt->second.add( tagName ); } } for( std::map::const_iterator countIt = tagCounts.begin(), countItEnd = tagCounts.end(); countIt != countItEnd; ++countIt ) { std::ostringstream oss; oss << " " << std::setw(2) << countIt->second.count << " "; Text wrapper( countIt->second.all(), TextAttributes() .setInitialIndent( 0 ) .setIndent( oss.str().size() ) .setWidth( CATCH_CONFIG_CONSOLE_WIDTH-10 ) ); Catch::cout() << oss.str() << wrapper << "\n"; } Catch::cout() << pluralise( tagCounts.size(), "tag" ) << "\n" << std::endl; return tagCounts.size(); } inline std::size_t listReporters( Config const& /*config*/ ) { Catch::cout() << "Available reporters:\n"; IReporterRegistry::FactoryMap const& factories = getRegistryHub().getReporterRegistry().getFactories(); IReporterRegistry::FactoryMap::const_iterator itBegin = factories.begin(), itEnd = factories.end(), it; std::size_t maxNameLen = 0; for(it = itBegin; it != itEnd; ++it ) maxNameLen = (std::max)( maxNameLen, it->first.size() ); for(it = itBegin; it != itEnd; ++it ) { Text wrapper( it->second->getDescription(), TextAttributes() .setInitialIndent( 0 ) .setIndent( 7+maxNameLen ) .setWidth( CATCH_CONFIG_CONSOLE_WIDTH - maxNameLen-8 ) ); Catch::cout() << " " << it->first << ":" << std::string( maxNameLen - it->first.size() + 2, ' ' ) << wrapper << "\n"; } Catch::cout() << std::endl; return factories.size(); } inline Option list( Config const& config ) { Option listedCount; if( config.listTests() ) listedCount = listedCount.valueOr(0) + listTests( config ); if( config.listTestNamesOnly() ) listedCount = listedCount.valueOr(0) + listTestsNamesOnly( config ); if( config.listTags() ) listedCount = listedCount.valueOr(0) + listTags( config ); if( config.listReporters() ) listedCount = listedCount.valueOr(0) + listReporters( config ); return listedCount; } } // end namespace Catch // #included from: internal/catch_runner_impl.hpp #define TWOBLUECUBES_CATCH_RUNNER_IMPL_HPP_INCLUDED // #included from: catch_test_case_tracker.hpp #define TWOBLUECUBES_CATCH_TEST_CASE_TRACKER_HPP_INCLUDED #include #include #include namespace Catch { namespace SectionTracking { class TrackedSection { typedef std::map TrackedSections; public: enum RunState { NotStarted, Executing, ExecutingChildren, Completed }; TrackedSection( std::string const& name, TrackedSection* parent ) : m_name( name ), m_runState( NotStarted ), m_parent( parent ) {} RunState runState() const { return m_runState; } TrackedSection* findChild( std::string const& childName ) { TrackedSections::iterator it = m_children.find( childName ); return it != m_children.end() ? &it->second : NULL; } TrackedSection* acquireChild( std::string const& childName ) { if( TrackedSection* child = findChild( childName ) ) return child; m_children.insert( std::make_pair( childName, TrackedSection( childName, this ) ) ); return findChild( childName ); } void enter() { if( m_runState == NotStarted ) m_runState = Executing; } void leave() { for( TrackedSections::const_iterator it = m_children.begin(), itEnd = m_children.end(); it != itEnd; ++it ) if( it->second.runState() != Completed ) { m_runState = ExecutingChildren; return; } m_runState = Completed; } TrackedSection* getParent() { return m_parent; } bool hasChildren() const { return !m_children.empty(); } private: std::string m_name; RunState m_runState; TrackedSections m_children; TrackedSection* m_parent; }; class TestCaseTracker { public: TestCaseTracker( std::string const& testCaseName ) : m_testCase( testCaseName, NULL ), m_currentSection( &m_testCase ), m_completedASectionThisRun( false ) {} bool enterSection( std::string const& name ) { TrackedSection* child = m_currentSection->acquireChild( name ); if( m_completedASectionThisRun || child->runState() == TrackedSection::Completed ) return false; m_currentSection = child; m_currentSection->enter(); return true; } void leaveSection() { m_currentSection->leave(); m_currentSection = m_currentSection->getParent(); assert( m_currentSection != NULL ); m_completedASectionThisRun = true; } bool currentSectionHasChildren() const { return m_currentSection->hasChildren(); } bool isCompleted() const { return m_testCase.runState() == TrackedSection::Completed; } class Guard { public: Guard( TestCaseTracker& tracker ) : m_tracker( tracker ) { m_tracker.enterTestCase(); } ~Guard() { m_tracker.leaveTestCase(); } private: Guard( Guard const& ); void operator = ( Guard const& ); TestCaseTracker& m_tracker; }; private: void enterTestCase() { m_currentSection = &m_testCase; m_completedASectionThisRun = false; m_testCase.enter(); } void leaveTestCase() { m_testCase.leave(); } TrackedSection m_testCase; TrackedSection* m_currentSection; bool m_completedASectionThisRun; }; } // namespace SectionTracking using SectionTracking::TestCaseTracker; } // namespace Catch // #included from: catch_fatal_condition.hpp #define TWOBLUECUBES_CATCH_FATAL_CONDITION_H_INCLUDED namespace Catch { // Report the error condition then exit the process inline void fatal( std::string const& message, int exitCode ) { IContext& context = Catch::getCurrentContext(); IResultCapture* resultCapture = context.getResultCapture(); resultCapture->handleFatalErrorCondition( message ); if( Catch::alwaysTrue() ) // avoids "no return" warnings exit( exitCode ); } } // namespace Catch #if defined ( CATCH_PLATFORM_WINDOWS ) ///////////////////////////////////////// namespace Catch { struct FatalConditionHandler { void reset() {} }; } // namespace Catch #else // Not Windows - assumed to be POSIX compatible ////////////////////////// #include namespace Catch { struct SignalDefs { int id; const char* name; }; extern SignalDefs signalDefs[]; SignalDefs signalDefs[] = { { SIGINT, "SIGINT - Terminal interrupt signal" }, { SIGILL, "SIGILL - Illegal instruction signal" }, { SIGFPE, "SIGFPE - Floating point error signal" }, { SIGSEGV, "SIGSEGV - Segmentation violation signal" }, { SIGTERM, "SIGTERM - Termination request signal" }, { SIGABRT, "SIGABRT - Abort (abnormal termination) signal" } }; struct FatalConditionHandler { static void handleSignal( int sig ) { for( std::size_t i = 0; i < sizeof(signalDefs)/sizeof(SignalDefs); ++i ) if( sig == signalDefs[i].id ) fatal( signalDefs[i].name, -sig ); fatal( "", -sig ); } FatalConditionHandler() : m_isSet( true ) { for( std::size_t i = 0; i < sizeof(signalDefs)/sizeof(SignalDefs); ++i ) signal( signalDefs[i].id, handleSignal ); } ~FatalConditionHandler() { reset(); } void reset() { if( m_isSet ) { for( std::size_t i = 0; i < sizeof(signalDefs)/sizeof(SignalDefs); ++i ) signal( signalDefs[i].id, SIG_DFL ); m_isSet = false; } } bool m_isSet; }; } // namespace Catch #endif // not Windows #include #include namespace Catch { class StreamRedirect { public: StreamRedirect( std::ostream& stream, std::string& targetString ) : m_stream( stream ), m_prevBuf( stream.rdbuf() ), m_targetString( targetString ) { stream.rdbuf( m_oss.rdbuf() ); } ~StreamRedirect() { m_targetString += m_oss.str(); m_stream.rdbuf( m_prevBuf ); } private: std::ostream& m_stream; std::streambuf* m_prevBuf; std::ostringstream m_oss; std::string& m_targetString; }; /////////////////////////////////////////////////////////////////////////// class RunContext : public IResultCapture, public IRunner { RunContext( RunContext const& ); void operator =( RunContext const& ); public: explicit RunContext( Ptr const& config, Ptr const& reporter ) : m_runInfo( config->name() ), m_context( getCurrentMutableContext() ), m_activeTestCase( NULL ), m_config( config ), m_reporter( reporter ), m_prevRunner( m_context.getRunner() ), m_prevResultCapture( m_context.getResultCapture() ), m_prevConfig( m_context.getConfig() ) { m_context.setRunner( this ); m_context.setConfig( m_config ); m_context.setResultCapture( this ); m_reporter->testRunStarting( m_runInfo ); } virtual ~RunContext() { m_reporter->testRunEnded( TestRunStats( m_runInfo, m_totals, aborting() ) ); m_context.setRunner( m_prevRunner ); m_context.setConfig( NULL ); m_context.setResultCapture( m_prevResultCapture ); m_context.setConfig( m_prevConfig ); } void testGroupStarting( std::string const& testSpec, std::size_t groupIndex, std::size_t groupsCount ) { m_reporter->testGroupStarting( GroupInfo( testSpec, groupIndex, groupsCount ) ); } void testGroupEnded( std::string const& testSpec, Totals const& totals, std::size_t groupIndex, std::size_t groupsCount ) { m_reporter->testGroupEnded( TestGroupStats( GroupInfo( testSpec, groupIndex, groupsCount ), totals, aborting() ) ); } Totals runTest( TestCase const& testCase ) { Totals prevTotals = m_totals; std::string redirectedCout; std::string redirectedCerr; TestCaseInfo testInfo = testCase.getTestCaseInfo(); m_reporter->testCaseStarting( testInfo ); m_activeTestCase = &testCase; m_testCaseTracker = TestCaseTracker( testInfo.name ); do { do { runCurrentTest( redirectedCout, redirectedCerr ); } while( !m_testCaseTracker->isCompleted() && !aborting() ); } while( getCurrentContext().advanceGeneratorsForCurrentTest() && !aborting() ); Totals deltaTotals = m_totals.delta( prevTotals ); m_totals.testCases += deltaTotals.testCases; m_reporter->testCaseEnded( TestCaseStats( testInfo, deltaTotals, redirectedCout, redirectedCerr, aborting() ) ); m_activeTestCase = NULL; m_testCaseTracker.reset(); return deltaTotals; } Ptr config() const { return m_config; } private: // IResultCapture virtual void assertionEnded( AssertionResult const& result ) { if( result.getResultType() == ResultWas::Ok ) { m_totals.assertions.passed++; } else if( !result.isOk() ) { m_totals.assertions.failed++; } if( m_reporter->assertionEnded( AssertionStats( result, m_messages, m_totals ) ) ) m_messages.clear(); // Reset working state m_lastAssertionInfo = AssertionInfo( "", m_lastAssertionInfo.lineInfo, "{Unknown expression after the reported line}" , m_lastAssertionInfo.resultDisposition ); m_lastResult = result; } virtual bool sectionStarted ( SectionInfo const& sectionInfo, Counts& assertions ) { std::ostringstream oss; oss << sectionInfo.name << "@" << sectionInfo.lineInfo; if( !m_testCaseTracker->enterSection( oss.str() ) ) return false; m_lastAssertionInfo.lineInfo = sectionInfo.lineInfo; m_reporter->sectionStarting( sectionInfo ); assertions = m_totals.assertions; return true; } bool testForMissingAssertions( Counts& assertions ) { if( assertions.total() != 0 || !m_config->warnAboutMissingAssertions() || m_testCaseTracker->currentSectionHasChildren() ) return false; m_totals.assertions.failed++; assertions.failed++; return true; } virtual void sectionEnded( SectionInfo const& info, Counts const& prevAssertions, double _durationInSeconds ) { if( std::uncaught_exception() ) { m_unfinishedSections.push_back( UnfinishedSections( info, prevAssertions, _durationInSeconds ) ); return; } Counts assertions = m_totals.assertions - prevAssertions; bool missingAssertions = testForMissingAssertions( assertions ); m_testCaseTracker->leaveSection(); m_reporter->sectionEnded( SectionStats( info, assertions, _durationInSeconds, missingAssertions ) ); m_messages.clear(); } virtual void pushScopedMessage( MessageInfo const& message ) { m_messages.push_back( message ); } virtual void popScopedMessage( MessageInfo const& message ) { m_messages.erase( std::remove( m_messages.begin(), m_messages.end(), message ), m_messages.end() ); } virtual std::string getCurrentTestName() const { return m_activeTestCase ? m_activeTestCase->getTestCaseInfo().name : ""; } virtual const AssertionResult* getLastResult() const { return &m_lastResult; } virtual void handleFatalErrorCondition( std::string const& message ) { ResultBuilder resultBuilder = makeUnexpectedResultBuilder(); resultBuilder.setResultType( ResultWas::FatalErrorCondition ); resultBuilder << message; resultBuilder.captureExpression(); handleUnfinishedSections(); // Recreate section for test case (as we will lose the one that was in scope) TestCaseInfo const& testCaseInfo = m_activeTestCase->getTestCaseInfo(); SectionInfo testCaseSection( testCaseInfo.lineInfo, testCaseInfo.name, testCaseInfo.description ); Counts assertions; assertions.failed = 1; SectionStats testCaseSectionStats( testCaseSection, assertions, 0, false ); m_reporter->sectionEnded( testCaseSectionStats ); TestCaseInfo testInfo = m_activeTestCase->getTestCaseInfo(); Totals deltaTotals; deltaTotals.testCases.failed = 1; m_reporter->testCaseEnded( TestCaseStats( testInfo, deltaTotals, "", "", false ) ); m_totals.testCases.failed++; testGroupEnded( "", m_totals, 1, 1 ); m_reporter->testRunEnded( TestRunStats( m_runInfo, m_totals, false ) ); } public: // !TBD We need to do this another way! bool aborting() const { return m_totals.assertions.failed == static_cast( m_config->abortAfter() ); } private: void runCurrentTest( std::string& redirectedCout, std::string& redirectedCerr ) { TestCaseInfo const& testCaseInfo = m_activeTestCase->getTestCaseInfo(); SectionInfo testCaseSection( testCaseInfo.lineInfo, testCaseInfo.name, testCaseInfo.description ); m_reporter->sectionStarting( testCaseSection ); Counts prevAssertions = m_totals.assertions; double duration = 0; try { m_lastAssertionInfo = AssertionInfo( "TEST_CASE", testCaseInfo.lineInfo, "", ResultDisposition::Normal ); TestCaseTracker::Guard guard( *m_testCaseTracker ); Timer timer; timer.start(); if( m_reporter->getPreferences().shouldRedirectStdOut ) { StreamRedirect coutRedir( Catch::cout(), redirectedCout ); StreamRedirect cerrRedir( Catch::cerr(), redirectedCerr ); invokeActiveTestCase(); } else { invokeActiveTestCase(); } duration = timer.getElapsedSeconds(); } catch( TestFailureException& ) { // This just means the test was aborted due to failure } catch(...) { makeUnexpectedResultBuilder().useActiveException(); } handleUnfinishedSections(); m_messages.clear(); Counts assertions = m_totals.assertions - prevAssertions; bool missingAssertions = testForMissingAssertions( assertions ); if( testCaseInfo.okToFail() ) { std::swap( assertions.failedButOk, assertions.failed ); m_totals.assertions.failed -= assertions.failedButOk; m_totals.assertions.failedButOk += assertions.failedButOk; } SectionStats testCaseSectionStats( testCaseSection, assertions, duration, missingAssertions ); m_reporter->sectionEnded( testCaseSectionStats ); } void invokeActiveTestCase() { FatalConditionHandler fatalConditionHandler; // Handle signals m_activeTestCase->invoke(); fatalConditionHandler.reset(); } private: ResultBuilder makeUnexpectedResultBuilder() const { return ResultBuilder( m_lastAssertionInfo.macroName.c_str(), m_lastAssertionInfo.lineInfo, m_lastAssertionInfo.capturedExpression.c_str(), m_lastAssertionInfo.resultDisposition ); } void handleUnfinishedSections() { // If sections ended prematurely due to an exception we stored their // infos here so we can tear them down outside the unwind process. for( std::vector::const_reverse_iterator it = m_unfinishedSections.rbegin(), itEnd = m_unfinishedSections.rend(); it != itEnd; ++it ) sectionEnded( it->info, it->prevAssertions, it->durationInSeconds ); m_unfinishedSections.clear(); } struct UnfinishedSections { UnfinishedSections( SectionInfo const& _info, Counts const& _prevAssertions, double _durationInSeconds ) : info( _info ), prevAssertions( _prevAssertions ), durationInSeconds( _durationInSeconds ) {} SectionInfo info; Counts prevAssertions; double durationInSeconds; }; TestRunInfo m_runInfo; IMutableContext& m_context; TestCase const* m_activeTestCase; Option m_testCaseTracker; AssertionResult m_lastResult; Ptr m_config; Totals m_totals; Ptr m_reporter; std::vector m_messages; IRunner* m_prevRunner; IResultCapture* m_prevResultCapture; Ptr m_prevConfig; AssertionInfo m_lastAssertionInfo; std::vector m_unfinishedSections; }; IResultCapture& getResultCapture() { if( IResultCapture* capture = getCurrentContext().getResultCapture() ) return *capture; else throw std::logic_error( "No result capture instance" ); } } // end namespace Catch // #included from: internal/catch_version.h #define TWOBLUECUBES_CATCH_VERSION_H_INCLUDED namespace Catch { // Versioning information struct Version { Version( unsigned int _majorVersion, unsigned int _minorVersion, unsigned int _buildNumber, char const* const _branchName ) : majorVersion( _majorVersion ), minorVersion( _minorVersion ), buildNumber( _buildNumber ), branchName( _branchName ) {} unsigned int const majorVersion; unsigned int const minorVersion; unsigned int const buildNumber; char const* const branchName; private: void operator=( Version const& ); }; extern Version libraryVersion; } #include #include #include namespace Catch { class Runner { public: Runner( Ptr const& config ) : m_config( config ) { openStream(); makeReporter(); } Totals runTests() { RunContext context( m_config.get(), m_reporter ); Totals totals; context.testGroupStarting( "all tests", 1, 1 ); // deprecated? TestSpec testSpec = m_config->testSpec(); if( !testSpec.hasFilters() ) testSpec = TestSpecParser( ITagAliasRegistry::get() ).parse( "~[.]" ).testSpec(); // All not hidden tests std::vector testCases; getRegistryHub().getTestCaseRegistry().getFilteredTests( testSpec, *m_config, testCases ); int testsRunForGroup = 0; for( std::vector::const_iterator it = testCases.begin(), itEnd = testCases.end(); it != itEnd; ++it ) { testsRunForGroup++; if( m_testsAlreadyRun.find( *it ) == m_testsAlreadyRun.end() ) { if( context.aborting() ) break; totals += context.runTest( *it ); m_testsAlreadyRun.insert( *it ); } } std::vector skippedTestCases; getRegistryHub().getTestCaseRegistry().getFilteredTests( testSpec, *m_config, skippedTestCases, true ); for( std::vector::const_iterator it = skippedTestCases.begin(), itEnd = skippedTestCases.end(); it != itEnd; ++it ) m_reporter->skipTest( *it ); context.testGroupEnded( "all tests", totals, 1, 1 ); return totals; } private: void openStream() { // Open output file, if specified if( !m_config->getFilename().empty() ) { m_ofs.open( m_config->getFilename().c_str() ); if( m_ofs.fail() ) { std::ostringstream oss; oss << "Unable to open file: '" << m_config->getFilename() << "'"; throw std::domain_error( oss.str() ); } m_config->setStreamBuf( m_ofs.rdbuf() ); } } void makeReporter() { std::string reporterName = m_config->getReporterName().empty() ? "console" : m_config->getReporterName(); m_reporter = getRegistryHub().getReporterRegistry().create( reporterName, m_config.get() ); if( !m_reporter ) { std::ostringstream oss; oss << "No reporter registered with name: '" << reporterName << "'"; throw std::domain_error( oss.str() ); } } private: Ptr m_config; std::ofstream m_ofs; Ptr m_reporter; std::set m_testsAlreadyRun; }; class Session : NonCopyable { static bool alreadyInstantiated; public: struct OnUnusedOptions { enum DoWhat { Ignore, Fail }; }; Session() : m_cli( makeCommandLineParser() ) { if( alreadyInstantiated ) { std::string msg = "Only one instance of Catch::Session can ever be used"; Catch::cerr() << msg << std::endl; throw std::logic_error( msg ); } alreadyInstantiated = true; } ~Session() { Catch::cleanUp(); } void showHelp( std::string const& processName ) { Catch::cout() << "\nCatch v" << libraryVersion.majorVersion << "." << libraryVersion.minorVersion << " build " << libraryVersion.buildNumber; if( libraryVersion.branchName != std::string( "master" ) ) Catch::cout() << " (" << libraryVersion.branchName << " branch)"; Catch::cout() << "\n"; m_cli.usage( Catch::cout(), processName ); Catch::cout() << "For more detail usage please see the project docs\n" << std::endl; } int applyCommandLine( int argc, char* const argv[], OnUnusedOptions::DoWhat unusedOptionBehaviour = OnUnusedOptions::Fail ) { try { m_cli.setThrowOnUnrecognisedTokens( unusedOptionBehaviour == OnUnusedOptions::Fail ); m_unusedTokens = m_cli.parseInto( argc, argv, m_configData ); if( m_configData.showHelp ) showHelp( m_configData.processName ); m_config.reset(); } catch( std::exception& ex ) { { Colour colourGuard( Colour::Red ); Catch::cerr() << "\nError(s) in input:\n" << Text( ex.what(), TextAttributes().setIndent(2) ) << "\n\n"; } m_cli.usage( Catch::cout(), m_configData.processName ); return (std::numeric_limits::max)(); } return 0; } void useConfigData( ConfigData const& _configData ) { m_configData = _configData; m_config.reset(); } int run( int argc, char* const argv[] ) { int returnCode = applyCommandLine( argc, argv ); if( returnCode == 0 ) returnCode = run(); return returnCode; } int run() { if( m_configData.showHelp ) return 0; try { config(); // Force config to be constructed std::srand( m_configData.rngSeed ); Runner runner( m_config ); // Handle list request if( Option listed = list( config() ) ) return static_cast( *listed ); return static_cast( runner.runTests().assertions.failed ); } catch( std::exception& ex ) { Catch::cerr() << ex.what() << std::endl; return (std::numeric_limits::max)(); } } Clara::CommandLine const& cli() const { return m_cli; } std::vector const& unusedTokens() const { return m_unusedTokens; } ConfigData& configData() { return m_configData; } Config& config() { if( !m_config ) m_config = new Config( m_configData ); return *m_config; } private: Clara::CommandLine m_cli; std::vector m_unusedTokens; ConfigData m_configData; Ptr m_config; }; bool Session::alreadyInstantiated = false; } // end namespace Catch // #included from: catch_registry_hub.hpp #define TWOBLUECUBES_CATCH_REGISTRY_HUB_HPP_INCLUDED // #included from: catch_test_case_registry_impl.hpp #define TWOBLUECUBES_CATCH_TEST_CASE_REGISTRY_IMPL_HPP_INCLUDED #include #include #include #include #include namespace Catch { class TestRegistry : public ITestCaseRegistry { struct LexSort { bool operator() (TestCase i,TestCase j) const { return (i const& getAllTests() const { return m_functionsInOrder; } virtual std::vector const& getAllNonHiddenTests() const { return m_nonHiddenFunctions; } virtual void getFilteredTests( TestSpec const& testSpec, IConfig const& config, std::vector& matchingTestCases, bool negated = false ) const { for( std::vector::const_iterator it = m_functionsInOrder.begin(), itEnd = m_functionsInOrder.end(); it != itEnd; ++it ) { bool includeTest = testSpec.matches( *it ) && ( config.allowThrows() || !it->throws() ); if( includeTest != negated ) matchingTestCases.push_back( *it ); } sortTests( config, matchingTestCases ); } private: static void sortTests( IConfig const& config, std::vector& matchingTestCases ) { switch( config.runOrder() ) { case RunTests::InLexicographicalOrder: std::sort( matchingTestCases.begin(), matchingTestCases.end(), LexSort() ); break; case RunTests::InRandomOrder: { RandomNumberGenerator rng; std::random_shuffle( matchingTestCases.begin(), matchingTestCases.end(), rng ); } break; case RunTests::InDeclarationOrder: // already in declaration order break; } } std::set m_functions; std::vector m_functionsInOrder; std::vector m_nonHiddenFunctions; size_t m_unnamedCount; }; /////////////////////////////////////////////////////////////////////////// class FreeFunctionTestCase : public SharedImpl { public: FreeFunctionTestCase( TestFunction fun ) : m_fun( fun ) {} virtual void invoke() const { m_fun(); } private: virtual ~FreeFunctionTestCase(); TestFunction m_fun; }; inline std::string extractClassName( std::string const& classOrQualifiedMethodName ) { std::string className = classOrQualifiedMethodName; if( startsWith( className, "&" ) ) { std::size_t lastColons = className.rfind( "::" ); std::size_t penultimateColons = className.rfind( "::", lastColons-1 ); if( penultimateColons == std::string::npos ) penultimateColons = 1; className = className.substr( penultimateColons, lastColons-penultimateColons ); } return className; } /////////////////////////////////////////////////////////////////////////// AutoReg::AutoReg( TestFunction function, SourceLineInfo const& lineInfo, NameAndDesc const& nameAndDesc ) { registerTestCase( new FreeFunctionTestCase( function ), "", nameAndDesc, lineInfo ); } AutoReg::~AutoReg() {} void AutoReg::registerTestCase( ITestCase* testCase, char const* classOrQualifiedMethodName, NameAndDesc const& nameAndDesc, SourceLineInfo const& lineInfo ) { getMutableRegistryHub().registerTest ( makeTestCase( testCase, extractClassName( classOrQualifiedMethodName ), nameAndDesc.name, nameAndDesc.description, lineInfo ) ); } } // end namespace Catch // #included from: catch_reporter_registry.hpp #define TWOBLUECUBES_CATCH_REPORTER_REGISTRY_HPP_INCLUDED #include namespace Catch { class ReporterRegistry : public IReporterRegistry { public: virtual ~ReporterRegistry() { deleteAllValues( m_factories ); } virtual IStreamingReporter* create( std::string const& name, Ptr const& config ) const { FactoryMap::const_iterator it = m_factories.find( name ); if( it == m_factories.end() ) return NULL; return it->second->create( ReporterConfig( config ) ); } void registerReporter( std::string const& name, IReporterFactory* factory ) { m_factories.insert( std::make_pair( name, factory ) ); } FactoryMap const& getFactories() const { return m_factories; } private: FactoryMap m_factories; }; } // #included from: catch_exception_translator_registry.hpp #define TWOBLUECUBES_CATCH_EXCEPTION_TRANSLATOR_REGISTRY_HPP_INCLUDED #ifdef __OBJC__ #import "Foundation/Foundation.h" #endif namespace Catch { class ExceptionTranslatorRegistry : public IExceptionTranslatorRegistry { public: ~ExceptionTranslatorRegistry() { deleteAll( m_translators ); } virtual void registerTranslator( const IExceptionTranslator* translator ) { m_translators.push_back( translator ); } virtual std::string translateActiveException() const { try { #ifdef __OBJC__ // In Objective-C try objective-c exceptions first @try { throw; } @catch (NSException *exception) { return Catch::toString( [exception description] ); } #else throw; #endif } catch( TestFailureException& ) { throw; } catch( std::exception& ex ) { return ex.what(); } catch( std::string& msg ) { return msg; } catch( const char* msg ) { return msg; } catch(...) { return tryTranslators( m_translators.begin() ); } } std::string tryTranslators( std::vector::const_iterator it ) const { if( it == m_translators.end() ) return "Unknown exception"; try { return (*it)->translate(); } catch(...) { return tryTranslators( it+1 ); } } private: std::vector m_translators; }; } namespace Catch { namespace { class RegistryHub : public IRegistryHub, public IMutableRegistryHub { RegistryHub( RegistryHub const& ); void operator=( RegistryHub const& ); public: // IRegistryHub RegistryHub() { } virtual IReporterRegistry const& getReporterRegistry() const { return m_reporterRegistry; } virtual ITestCaseRegistry const& getTestCaseRegistry() const { return m_testCaseRegistry; } virtual IExceptionTranslatorRegistry& getExceptionTranslatorRegistry() { return m_exceptionTranslatorRegistry; } public: // IMutableRegistryHub virtual void registerReporter( std::string const& name, IReporterFactory* factory ) { m_reporterRegistry.registerReporter( name, factory ); } virtual void registerTest( TestCase const& testInfo ) { m_testCaseRegistry.registerTest( testInfo ); } virtual void registerTranslator( const IExceptionTranslator* translator ) { m_exceptionTranslatorRegistry.registerTranslator( translator ); } private: TestRegistry m_testCaseRegistry; ReporterRegistry m_reporterRegistry; ExceptionTranslatorRegistry m_exceptionTranslatorRegistry; }; // Single, global, instance inline RegistryHub*& getTheRegistryHub() { static RegistryHub* theRegistryHub = NULL; if( !theRegistryHub ) theRegistryHub = new RegistryHub(); return theRegistryHub; } } IRegistryHub& getRegistryHub() { return *getTheRegistryHub(); } IMutableRegistryHub& getMutableRegistryHub() { return *getTheRegistryHub(); } void cleanUp() { delete getTheRegistryHub(); getTheRegistryHub() = NULL; cleanUpContext(); } std::string translateActiveException() { return getRegistryHub().getExceptionTranslatorRegistry().translateActiveException(); } } // end namespace Catch // #included from: catch_notimplemented_exception.hpp #define TWOBLUECUBES_CATCH_NOTIMPLEMENTED_EXCEPTION_HPP_INCLUDED #include namespace Catch { NotImplementedException::NotImplementedException( SourceLineInfo const& lineInfo ) : m_lineInfo( lineInfo ) { std::ostringstream oss; oss << lineInfo << ": function "; oss << "not implemented"; m_what = oss.str(); } const char* NotImplementedException::what() const CATCH_NOEXCEPT { return m_what.c_str(); } } // end namespace Catch // #included from: catch_context_impl.hpp #define TWOBLUECUBES_CATCH_CONTEXT_IMPL_HPP_INCLUDED // #included from: catch_stream.hpp #define TWOBLUECUBES_CATCH_STREAM_HPP_INCLUDED // #included from: catch_streambuf.h #define TWOBLUECUBES_CATCH_STREAMBUF_H_INCLUDED #include namespace Catch { class StreamBufBase : public std::streambuf { public: virtual ~StreamBufBase() CATCH_NOEXCEPT; }; } #include #include #include namespace Catch { template class StreamBufImpl : public StreamBufBase { char data[bufferSize]; WriterF m_writer; public: StreamBufImpl() { setp( data, data + sizeof(data) ); } ~StreamBufImpl() CATCH_NOEXCEPT { sync(); } private: int overflow( int c ) { sync(); if( c != EOF ) { if( pbase() == epptr() ) m_writer( std::string( 1, static_cast( c ) ) ); else sputc( static_cast( c ) ); } return 0; } int sync() { if( pbase() != pptr() ) { m_writer( std::string( pbase(), static_cast( pptr() - pbase() ) ) ); setp( pbase(), epptr() ); } return 0; } }; /////////////////////////////////////////////////////////////////////////// struct OutputDebugWriter { void operator()( std::string const&str ) { writeToDebugConsole( str ); } }; Stream::Stream() : streamBuf( NULL ), isOwned( false ) {} Stream::Stream( std::streambuf* _streamBuf, bool _isOwned ) : streamBuf( _streamBuf ), isOwned( _isOwned ) {} void Stream::release() { if( isOwned ) { delete streamBuf; streamBuf = NULL; isOwned = false; } } #ifndef CATCH_CONFIG_NOSTDOUT // If you #define this you must implement this functions std::ostream& cout() { return std::cout; } std::ostream& cerr() { return std::cerr; } #endif } namespace Catch { class Context : public IMutableContext { Context() : m_config( NULL ), m_runner( NULL ), m_resultCapture( NULL ) {} Context( Context const& ); void operator=( Context const& ); public: // IContext virtual IResultCapture* getResultCapture() { return m_resultCapture; } virtual IRunner* getRunner() { return m_runner; } virtual size_t getGeneratorIndex( std::string const& fileInfo, size_t totalSize ) { return getGeneratorsForCurrentTest() .getGeneratorInfo( fileInfo, totalSize ) .getCurrentIndex(); } virtual bool advanceGeneratorsForCurrentTest() { IGeneratorsForTest* generators = findGeneratorsForCurrentTest(); return generators && generators->moveNext(); } virtual Ptr getConfig() const { return m_config; } public: // IMutableContext virtual void setResultCapture( IResultCapture* resultCapture ) { m_resultCapture = resultCapture; } virtual void setRunner( IRunner* runner ) { m_runner = runner; } virtual void setConfig( Ptr const& config ) { m_config = config; } friend IMutableContext& getCurrentMutableContext(); private: IGeneratorsForTest* findGeneratorsForCurrentTest() { std::string testName = getResultCapture()->getCurrentTestName(); std::map::const_iterator it = m_generatorsByTestName.find( testName ); return it != m_generatorsByTestName.end() ? it->second : NULL; } IGeneratorsForTest& getGeneratorsForCurrentTest() { IGeneratorsForTest* generators = findGeneratorsForCurrentTest(); if( !generators ) { std::string testName = getResultCapture()->getCurrentTestName(); generators = createGeneratorsForTest(); m_generatorsByTestName.insert( std::make_pair( testName, generators ) ); } return *generators; } private: Ptr m_config; IRunner* m_runner; IResultCapture* m_resultCapture; std::map m_generatorsByTestName; }; namespace { Context* currentContext = NULL; } IMutableContext& getCurrentMutableContext() { if( !currentContext ) currentContext = new Context(); return *currentContext; } IContext& getCurrentContext() { return getCurrentMutableContext(); } Stream createStream( std::string const& streamName ) { if( streamName == "stdout" ) return Stream( Catch::cout().rdbuf(), false ); if( streamName == "stderr" ) return Stream( Catch::cerr().rdbuf(), false ); if( streamName == "debug" ) return Stream( new StreamBufImpl, true ); throw std::domain_error( "Unknown stream: " + streamName ); } void cleanUpContext() { delete currentContext; currentContext = NULL; } } // #included from: catch_console_colour_impl.hpp #define TWOBLUECUBES_CATCH_CONSOLE_COLOUR_IMPL_HPP_INCLUDED namespace Catch { namespace { struct IColourImpl { virtual ~IColourImpl() {} virtual void use( Colour::Code _colourCode ) = 0; }; struct NoColourImpl : IColourImpl { void use( Colour::Code ) {} static IColourImpl* instance() { static NoColourImpl s_instance; return &s_instance; } }; } // anon namespace } // namespace Catch #if !defined( CATCH_CONFIG_COLOUR_NONE ) && !defined( CATCH_CONFIG_COLOUR_WINDOWS ) && !defined( CATCH_CONFIG_COLOUR_ANSI ) # ifdef CATCH_PLATFORM_WINDOWS # define CATCH_CONFIG_COLOUR_WINDOWS # else # define CATCH_CONFIG_COLOUR_ANSI # endif #endif #if defined ( CATCH_CONFIG_COLOUR_WINDOWS ) ///////////////////////////////////////// #ifndef NOMINMAX #define NOMINMAX #endif #ifdef __AFXDLL #include #else #include #endif namespace Catch { namespace { class Win32ColourImpl : public IColourImpl { public: Win32ColourImpl() : stdoutHandle( GetStdHandle(STD_OUTPUT_HANDLE) ) { CONSOLE_SCREEN_BUFFER_INFO csbiInfo; GetConsoleScreenBufferInfo( stdoutHandle, &csbiInfo ); originalAttributes = csbiInfo.wAttributes; } virtual void use( Colour::Code _colourCode ) { switch( _colourCode ) { case Colour::None: return setTextAttribute( originalAttributes ); case Colour::White: return setTextAttribute( FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE ); case Colour::Red: return setTextAttribute( FOREGROUND_RED ); case Colour::Green: return setTextAttribute( FOREGROUND_GREEN ); case Colour::Blue: return setTextAttribute( FOREGROUND_BLUE ); case Colour::Cyan: return setTextAttribute( FOREGROUND_BLUE | FOREGROUND_GREEN ); case Colour::Yellow: return setTextAttribute( FOREGROUND_RED | FOREGROUND_GREEN ); case Colour::Grey: return setTextAttribute( 0 ); case Colour::LightGrey: return setTextAttribute( FOREGROUND_INTENSITY ); case Colour::BrightRed: return setTextAttribute( FOREGROUND_INTENSITY | FOREGROUND_RED ); case Colour::BrightGreen: return setTextAttribute( FOREGROUND_INTENSITY | FOREGROUND_GREEN ); case Colour::BrightWhite: return setTextAttribute( FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE ); case Colour::Bright: throw std::logic_error( "not a colour" ); } } private: void setTextAttribute( WORD _textAttribute ) { SetConsoleTextAttribute( stdoutHandle, _textAttribute ); } HANDLE stdoutHandle; WORD originalAttributes; }; IColourImpl* platformColourInstance() { static Win32ColourImpl s_instance; return &s_instance; } } // end anon namespace } // end namespace Catch #elif defined( CATCH_CONFIG_COLOUR_ANSI ) ////////////////////////////////////// #include namespace Catch { namespace { // use POSIX/ ANSI console terminal codes // Thanks to Adam Strzelecki for original contribution // (http://github.com/nanoant) // https://github.com/philsquared/Catch/pull/131 class PosixColourImpl : public IColourImpl { public: virtual void use( Colour::Code _colourCode ) { switch( _colourCode ) { case Colour::None: case Colour::White: return setColour( "[0m" ); case Colour::Red: return setColour( "[0;31m" ); case Colour::Green: return setColour( "[0;32m" ); case Colour::Blue: return setColour( "[0:34m" ); case Colour::Cyan: return setColour( "[0;36m" ); case Colour::Yellow: return setColour( "[0;33m" ); case Colour::Grey: return setColour( "[1;30m" ); case Colour::LightGrey: return setColour( "[0;37m" ); case Colour::BrightRed: return setColour( "[1;31m" ); case Colour::BrightGreen: return setColour( "[1;32m" ); case Colour::BrightWhite: return setColour( "[1;37m" ); case Colour::Bright: throw std::logic_error( "not a colour" ); } } static IColourImpl* instance() { static PosixColourImpl s_instance; return &s_instance; } private: void setColour( const char* _escapeCode ) { Catch::cout() << '\033' << _escapeCode; } }; IColourImpl* platformColourInstance() { Ptr config = getCurrentContext().getConfig(); return (config && config->forceColour()) || isatty(STDOUT_FILENO) ? PosixColourImpl::instance() : NoColourImpl::instance(); } } // end anon namespace } // end namespace Catch #else // not Windows or ANSI /////////////////////////////////////////////// namespace Catch { static IColourImpl* platformColourInstance() { return NoColourImpl::instance(); } } // end namespace Catch #endif // Windows/ ANSI/ None namespace Catch { Colour::Colour( Code _colourCode ) : m_moved( false ) { use( _colourCode ); } Colour::Colour( Colour const& _other ) : m_moved( false ) { const_cast( _other ).m_moved = true; } Colour::~Colour(){ if( !m_moved ) use( None ); } void Colour::use( Code _colourCode ) { static IColourImpl* impl = isDebuggerActive() ? NoColourImpl::instance() : platformColourInstance(); impl->use( _colourCode ); } } // end namespace Catch // #included from: catch_generators_impl.hpp #define TWOBLUECUBES_CATCH_GENERATORS_IMPL_HPP_INCLUDED #include #include #include namespace Catch { struct GeneratorInfo : IGeneratorInfo { GeneratorInfo( std::size_t size ) : m_size( size ), m_currentIndex( 0 ) {} bool moveNext() { if( ++m_currentIndex == m_size ) { m_currentIndex = 0; return false; } return true; } std::size_t getCurrentIndex() const { return m_currentIndex; } std::size_t m_size; std::size_t m_currentIndex; }; /////////////////////////////////////////////////////////////////////////// class GeneratorsForTest : public IGeneratorsForTest { public: ~GeneratorsForTest() { deleteAll( m_generatorsInOrder ); } IGeneratorInfo& getGeneratorInfo( std::string const& fileInfo, std::size_t size ) { std::map::const_iterator it = m_generatorsByName.find( fileInfo ); if( it == m_generatorsByName.end() ) { IGeneratorInfo* info = new GeneratorInfo( size ); m_generatorsByName.insert( std::make_pair( fileInfo, info ) ); m_generatorsInOrder.push_back( info ); return *info; } return *it->second; } bool moveNext() { std::vector::const_iterator it = m_generatorsInOrder.begin(); std::vector::const_iterator itEnd = m_generatorsInOrder.end(); for(; it != itEnd; ++it ) { if( (*it)->moveNext() ) return true; } return false; } private: std::map m_generatorsByName; std::vector m_generatorsInOrder; }; IGeneratorsForTest* createGeneratorsForTest() { return new GeneratorsForTest(); } } // end namespace Catch // #included from: catch_assertionresult.hpp #define TWOBLUECUBES_CATCH_ASSERTIONRESULT_HPP_INCLUDED namespace Catch { AssertionInfo::AssertionInfo( std::string const& _macroName, SourceLineInfo const& _lineInfo, std::string const& _capturedExpression, ResultDisposition::Flags _resultDisposition ) : macroName( _macroName ), lineInfo( _lineInfo ), capturedExpression( _capturedExpression ), resultDisposition( _resultDisposition ) {} AssertionResult::AssertionResult() {} AssertionResult::AssertionResult( AssertionInfo const& info, AssertionResultData const& data ) : m_info( info ), m_resultData( data ) {} AssertionResult::~AssertionResult() {} // Result was a success bool AssertionResult::succeeded() const { return Catch::isOk( m_resultData.resultType ); } // Result was a success, or failure is suppressed bool AssertionResult::isOk() const { return Catch::isOk( m_resultData.resultType ) || shouldSuppressFailure( m_info.resultDisposition ); } ResultWas::OfType AssertionResult::getResultType() const { return m_resultData.resultType; } bool AssertionResult::hasExpression() const { return !m_info.capturedExpression.empty(); } bool AssertionResult::hasMessage() const { return !m_resultData.message.empty(); } std::string AssertionResult::getExpression() const { if( isFalseTest( m_info.resultDisposition ) ) return "!" + m_info.capturedExpression; else return m_info.capturedExpression; } std::string AssertionResult::getExpressionInMacro() const { if( m_info.macroName.empty() ) return m_info.capturedExpression; else return m_info.macroName + "( " + m_info.capturedExpression + " )"; } bool AssertionResult::hasExpandedExpression() const { return hasExpression() && getExpandedExpression() != getExpression(); } std::string AssertionResult::getExpandedExpression() const { return m_resultData.reconstructedExpression; } std::string AssertionResult::getMessage() const { return m_resultData.message; } SourceLineInfo AssertionResult::getSourceInfo() const { return m_info.lineInfo; } std::string AssertionResult::getTestMacroName() const { return m_info.macroName; } } // end namespace Catch // #included from: catch_test_case_info.hpp #define TWOBLUECUBES_CATCH_TEST_CASE_INFO_HPP_INCLUDED namespace Catch { inline TestCaseInfo::SpecialProperties parseSpecialTag( std::string const& tag ) { if( startsWith( tag, "." ) || tag == "hide" || tag == "!hide" ) return TestCaseInfo::IsHidden; else if( tag == "!throws" ) return TestCaseInfo::Throws; else if( tag == "!shouldfail" ) return TestCaseInfo::ShouldFail; else if( tag == "!mayfail" ) return TestCaseInfo::MayFail; else return TestCaseInfo::None; } inline bool isReservedTag( std::string const& tag ) { return parseSpecialTag( tag ) == TestCaseInfo::None && tag.size() > 0 && !isalnum( tag[0] ); } inline void enforceNotReservedTag( std::string const& tag, SourceLineInfo const& _lineInfo ) { if( isReservedTag( tag ) ) { { Colour colourGuard( Colour::Red ); Catch::cerr() << "Tag name [" << tag << "] not allowed.\n" << "Tag names starting with non alpha-numeric characters are reserved\n"; } { Colour colourGuard( Colour::FileName ); Catch::cerr() << _lineInfo << std::endl; } exit(1); } } TestCase makeTestCase( ITestCase* _testCase, std::string const& _className, std::string const& _name, std::string const& _descOrTags, SourceLineInfo const& _lineInfo ) { bool isHidden( startsWith( _name, "./" ) ); // Legacy support // Parse out tags std::set tags; std::string desc, tag; bool inTag = false; for( std::size_t i = 0; i < _descOrTags.size(); ++i ) { char c = _descOrTags[i]; if( !inTag ) { if( c == '[' ) inTag = true; else desc += c; } else { if( c == ']' ) { TestCaseInfo::SpecialProperties prop = parseSpecialTag( tag ); if( prop == TestCaseInfo::IsHidden ) isHidden = true; else if( prop == TestCaseInfo::None ) enforceNotReservedTag( tag, _lineInfo ); tags.insert( tag ); tag.clear(); inTag = false; } else tag += c; } } if( isHidden ) { tags.insert( "hide" ); tags.insert( "." ); } TestCaseInfo info( _name, _className, desc, tags, _lineInfo ); return TestCase( _testCase, info ); } TestCaseInfo::TestCaseInfo( std::string const& _name, std::string const& _className, std::string const& _description, std::set const& _tags, SourceLineInfo const& _lineInfo ) : name( _name ), className( _className ), description( _description ), tags( _tags ), lineInfo( _lineInfo ), properties( None ) { std::ostringstream oss; for( std::set::const_iterator it = _tags.begin(), itEnd = _tags.end(); it != itEnd; ++it ) { oss << "[" << *it << "]"; std::string lcaseTag = toLower( *it ); properties = static_cast( properties | parseSpecialTag( lcaseTag ) ); lcaseTags.insert( lcaseTag ); } tagsAsString = oss.str(); } TestCaseInfo::TestCaseInfo( TestCaseInfo const& other ) : name( other.name ), className( other.className ), description( other.description ), tags( other.tags ), lcaseTags( other.lcaseTags ), tagsAsString( other.tagsAsString ), lineInfo( other.lineInfo ), properties( other.properties ) {} bool TestCaseInfo::isHidden() const { return ( properties & IsHidden ) != 0; } bool TestCaseInfo::throws() const { return ( properties & Throws ) != 0; } bool TestCaseInfo::okToFail() const { return ( properties & (ShouldFail | MayFail ) ) != 0; } bool TestCaseInfo::expectedToFail() const { return ( properties & (ShouldFail ) ) != 0; } TestCase::TestCase( ITestCase* testCase, TestCaseInfo const& info ) : TestCaseInfo( info ), test( testCase ) {} TestCase::TestCase( TestCase const& other ) : TestCaseInfo( other ), test( other.test ) {} TestCase TestCase::withName( std::string const& _newName ) const { TestCase other( *this ); other.name = _newName; return other; } void TestCase::swap( TestCase& other ) { test.swap( other.test ); name.swap( other.name ); className.swap( other.className ); description.swap( other.description ); tags.swap( other.tags ); lcaseTags.swap( other.lcaseTags ); tagsAsString.swap( other.tagsAsString ); std::swap( TestCaseInfo::properties, static_cast( other ).properties ); std::swap( lineInfo, other.lineInfo ); } void TestCase::invoke() const { test->invoke(); } bool TestCase::operator == ( TestCase const& other ) const { return test.get() == other.test.get() && name == other.name && className == other.className; } bool TestCase::operator < ( TestCase const& other ) const { return name < other.name; } TestCase& TestCase::operator = ( TestCase const& other ) { TestCase temp( other ); swap( temp ); return *this; } TestCaseInfo const& TestCase::getTestCaseInfo() const { return *this; } } // end namespace Catch // #included from: catch_version.hpp #define TWOBLUECUBES_CATCH_VERSION_HPP_INCLUDED namespace Catch { // These numbers are maintained by a script Version libraryVersion( 1, 1, 3, "master" ); } // #included from: catch_message.hpp #define TWOBLUECUBES_CATCH_MESSAGE_HPP_INCLUDED namespace Catch { MessageInfo::MessageInfo( std::string const& _macroName, SourceLineInfo const& _lineInfo, ResultWas::OfType _type ) : macroName( _macroName ), lineInfo( _lineInfo ), type( _type ), sequence( ++globalCount ) {} // This may need protecting if threading support is added unsigned int MessageInfo::globalCount = 0; //////////////////////////////////////////////////////////////////////////// ScopedMessage::ScopedMessage( MessageBuilder const& builder ) : m_info( builder.m_info ) { m_info.message = builder.m_stream.str(); getResultCapture().pushScopedMessage( m_info ); } ScopedMessage::ScopedMessage( ScopedMessage const& other ) : m_info( other.m_info ) {} ScopedMessage::~ScopedMessage() { getResultCapture().popScopedMessage( m_info ); } } // end namespace Catch // #included from: catch_legacy_reporter_adapter.hpp #define TWOBLUECUBES_CATCH_LEGACY_REPORTER_ADAPTER_HPP_INCLUDED // #included from: catch_legacy_reporter_adapter.h #define TWOBLUECUBES_CATCH_LEGACY_REPORTER_ADAPTER_H_INCLUDED namespace Catch { // Deprecated struct IReporter : IShared { virtual ~IReporter(); virtual bool shouldRedirectStdout() const = 0; virtual void StartTesting() = 0; virtual void EndTesting( Totals const& totals ) = 0; virtual void StartGroup( std::string const& groupName ) = 0; virtual void EndGroup( std::string const& groupName, Totals const& totals ) = 0; virtual void StartTestCase( TestCaseInfo const& testInfo ) = 0; virtual void EndTestCase( TestCaseInfo const& testInfo, Totals const& totals, std::string const& stdOut, std::string const& stdErr ) = 0; virtual void StartSection( std::string const& sectionName, std::string const& description ) = 0; virtual void EndSection( std::string const& sectionName, Counts const& assertions ) = 0; virtual void NoAssertionsInSection( std::string const& sectionName ) = 0; virtual void NoAssertionsInTestCase( std::string const& testName ) = 0; virtual void Aborted() = 0; virtual void Result( AssertionResult const& result ) = 0; }; class LegacyReporterAdapter : public SharedImpl { public: LegacyReporterAdapter( Ptr const& legacyReporter ); virtual ~LegacyReporterAdapter(); virtual ReporterPreferences getPreferences() const; virtual void noMatchingTestCases( std::string const& ); virtual void testRunStarting( TestRunInfo const& ); virtual void testGroupStarting( GroupInfo const& groupInfo ); virtual void testCaseStarting( TestCaseInfo const& testInfo ); virtual void sectionStarting( SectionInfo const& sectionInfo ); virtual void assertionStarting( AssertionInfo const& ); virtual bool assertionEnded( AssertionStats const& assertionStats ); virtual void sectionEnded( SectionStats const& sectionStats ); virtual void testCaseEnded( TestCaseStats const& testCaseStats ); virtual void testGroupEnded( TestGroupStats const& testGroupStats ); virtual void testRunEnded( TestRunStats const& testRunStats ); virtual void skipTest( TestCaseInfo const& ); private: Ptr m_legacyReporter; }; } namespace Catch { LegacyReporterAdapter::LegacyReporterAdapter( Ptr const& legacyReporter ) : m_legacyReporter( legacyReporter ) {} LegacyReporterAdapter::~LegacyReporterAdapter() {} ReporterPreferences LegacyReporterAdapter::getPreferences() const { ReporterPreferences prefs; prefs.shouldRedirectStdOut = m_legacyReporter->shouldRedirectStdout(); return prefs; } void LegacyReporterAdapter::noMatchingTestCases( std::string const& ) {} void LegacyReporterAdapter::testRunStarting( TestRunInfo const& ) { m_legacyReporter->StartTesting(); } void LegacyReporterAdapter::testGroupStarting( GroupInfo const& groupInfo ) { m_legacyReporter->StartGroup( groupInfo.name ); } void LegacyReporterAdapter::testCaseStarting( TestCaseInfo const& testInfo ) { m_legacyReporter->StartTestCase( testInfo ); } void LegacyReporterAdapter::sectionStarting( SectionInfo const& sectionInfo ) { m_legacyReporter->StartSection( sectionInfo.name, sectionInfo.description ); } void LegacyReporterAdapter::assertionStarting( AssertionInfo const& ) { // Not on legacy interface } bool LegacyReporterAdapter::assertionEnded( AssertionStats const& assertionStats ) { if( assertionStats.assertionResult.getResultType() != ResultWas::Ok ) { for( std::vector::const_iterator it = assertionStats.infoMessages.begin(), itEnd = assertionStats.infoMessages.end(); it != itEnd; ++it ) { if( it->type == ResultWas::Info ) { ResultBuilder rb( it->macroName.c_str(), it->lineInfo, "", ResultDisposition::Normal ); rb << it->message; rb.setResultType( ResultWas::Info ); AssertionResult result = rb.build(); m_legacyReporter->Result( result ); } } } m_legacyReporter->Result( assertionStats.assertionResult ); return true; } void LegacyReporterAdapter::sectionEnded( SectionStats const& sectionStats ) { if( sectionStats.missingAssertions ) m_legacyReporter->NoAssertionsInSection( sectionStats.sectionInfo.name ); m_legacyReporter->EndSection( sectionStats.sectionInfo.name, sectionStats.assertions ); } void LegacyReporterAdapter::testCaseEnded( TestCaseStats const& testCaseStats ) { m_legacyReporter->EndTestCase ( testCaseStats.testInfo, testCaseStats.totals, testCaseStats.stdOut, testCaseStats.stdErr ); } void LegacyReporterAdapter::testGroupEnded( TestGroupStats const& testGroupStats ) { if( testGroupStats.aborting ) m_legacyReporter->Aborted(); m_legacyReporter->EndGroup( testGroupStats.groupInfo.name, testGroupStats.totals ); } void LegacyReporterAdapter::testRunEnded( TestRunStats const& testRunStats ) { m_legacyReporter->EndTesting( testRunStats.totals ); } void LegacyReporterAdapter::skipTest( TestCaseInfo const& ) { } } // #included from: catch_timer.hpp #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wc++11-long-long" #endif #ifdef CATCH_PLATFORM_WINDOWS #include #else #include #endif namespace Catch { namespace { #ifdef CATCH_PLATFORM_WINDOWS uint64_t getCurrentTicks() { static uint64_t hz=0, hzo=0; if (!hz) { QueryPerformanceFrequency( reinterpret_cast( &hz ) ); QueryPerformanceCounter( reinterpret_cast( &hzo ) ); } uint64_t t; QueryPerformanceCounter( reinterpret_cast( &t ) ); return ((t-hzo)*1000000)/hz; } #else uint64_t getCurrentTicks() { timeval t; gettimeofday(&t,NULL); return static_cast( t.tv_sec ) * 1000000ull + static_cast( t.tv_usec ); } #endif } void Timer::start() { m_ticks = getCurrentTicks(); } unsigned int Timer::getElapsedMicroseconds() const { return static_cast(getCurrentTicks() - m_ticks); } unsigned int Timer::getElapsedMilliseconds() const { return static_cast(getElapsedMicroseconds()/1000); } double Timer::getElapsedSeconds() const { return getElapsedMicroseconds()/1000000.0; } } // namespace Catch #ifdef __clang__ #pragma clang diagnostic pop #endif // #included from: catch_common.hpp #define TWOBLUECUBES_CATCH_COMMON_HPP_INCLUDED namespace Catch { bool startsWith( std::string const& s, std::string const& prefix ) { return s.size() >= prefix.size() && s.substr( 0, prefix.size() ) == prefix; } bool endsWith( std::string const& s, std::string const& suffix ) { return s.size() >= suffix.size() && s.substr( s.size()-suffix.size(), suffix.size() ) == suffix; } bool contains( std::string const& s, std::string const& infix ) { return s.find( infix ) != std::string::npos; } void toLowerInPlace( std::string& s ) { std::transform( s.begin(), s.end(), s.begin(), ::tolower ); } std::string toLower( std::string const& s ) { std::string lc = s; toLowerInPlace( lc ); return lc; } std::string trim( std::string const& str ) { static char const* whitespaceChars = "\n\r\t "; std::string::size_type start = str.find_first_not_of( whitespaceChars ); std::string::size_type end = str.find_last_not_of( whitespaceChars ); return start != std::string::npos ? str.substr( start, 1+end-start ) : ""; } bool replaceInPlace( std::string& str, std::string const& replaceThis, std::string const& withThis ) { bool replaced = false; std::size_t i = str.find( replaceThis ); while( i != std::string::npos ) { replaced = true; str = str.substr( 0, i ) + withThis + str.substr( i+replaceThis.size() ); if( i < str.size()-withThis.size() ) i = str.find( replaceThis, i+withThis.size() ); else i = std::string::npos; } return replaced; } pluralise::pluralise( std::size_t count, std::string const& label ) : m_count( count ), m_label( label ) {} std::ostream& operator << ( std::ostream& os, pluralise const& pluraliser ) { os << pluraliser.m_count << " " << pluraliser.m_label; if( pluraliser.m_count != 1 ) os << "s"; return os; } SourceLineInfo::SourceLineInfo() : line( 0 ){} SourceLineInfo::SourceLineInfo( char const* _file, std::size_t _line ) : file( _file ), line( _line ) {} SourceLineInfo::SourceLineInfo( SourceLineInfo const& other ) : file( other.file ), line( other.line ) {} bool SourceLineInfo::empty() const { return file.empty(); } bool SourceLineInfo::operator == ( SourceLineInfo const& other ) const { return line == other.line && file == other.file; } bool SourceLineInfo::operator < ( SourceLineInfo const& other ) const { return line < other.line || ( line == other.line && file < other.file ); } std::ostream& operator << ( std::ostream& os, SourceLineInfo const& info ) { #ifndef __GNUG__ os << info.file << "(" << info.line << ")"; #else os << info.file << ":" << info.line; #endif return os; } void throwLogicError( std::string const& message, SourceLineInfo const& locationInfo ) { std::ostringstream oss; oss << locationInfo << ": Internal Catch error: '" << message << "'"; if( alwaysTrue() ) throw std::logic_error( oss.str() ); } } // #included from: catch_section.hpp #define TWOBLUECUBES_CATCH_SECTION_HPP_INCLUDED namespace Catch { SectionInfo::SectionInfo ( SourceLineInfo const& _lineInfo, std::string const& _name, std::string const& _description ) : name( _name ), description( _description ), lineInfo( _lineInfo ) {} Section::Section( SectionInfo const& info ) : m_info( info ), m_sectionIncluded( getResultCapture().sectionStarted( m_info, m_assertions ) ) { m_timer.start(); } Section::~Section() { if( m_sectionIncluded ) getResultCapture().sectionEnded( m_info, m_assertions, m_timer.getElapsedSeconds() ); } // This indicates whether the section should be executed or not Section::operator bool() const { return m_sectionIncluded; } } // end namespace Catch // #included from: catch_debugger.hpp #define TWOBLUECUBES_CATCH_DEBUGGER_HPP_INCLUDED #include #ifdef CATCH_PLATFORM_MAC #include #include #include #include #include namespace Catch{ // The following function is taken directly from the following technical note: // http://developer.apple.com/library/mac/#qa/qa2004/qa1361.html // Returns true if the current process is being debugged (either // running under the debugger or has a debugger attached post facto). bool isDebuggerActive(){ int mib[4]; struct kinfo_proc info; size_t size; // Initialize the flags so that, if sysctl fails for some bizarre // reason, we get a predictable result. info.kp_proc.p_flag = 0; // Initialize mib, which tells sysctl the info we want, in this case // we're looking for information about a specific process ID. mib[0] = CTL_KERN; mib[1] = KERN_PROC; mib[2] = KERN_PROC_PID; mib[3] = getpid(); // Call sysctl. size = sizeof(info); if( sysctl(mib, sizeof(mib) / sizeof(*mib), &info, &size, NULL, 0) != 0 ) { Catch::cerr() << "\n** Call to sysctl failed - unable to determine if debugger is active **\n" << std::endl; return false; } // We're being debugged if the P_TRACED flag is set. return ( (info.kp_proc.p_flag & P_TRACED) != 0 ); } } // namespace Catch #elif defined(_MSC_VER) extern "C" __declspec(dllimport) int __stdcall IsDebuggerPresent(); namespace Catch { bool isDebuggerActive() { return IsDebuggerPresent() != 0; } } #elif defined(__MINGW32__) extern "C" __declspec(dllimport) int __stdcall IsDebuggerPresent(); namespace Catch { bool isDebuggerActive() { return IsDebuggerPresent() != 0; } } #else namespace Catch { inline bool isDebuggerActive() { return false; } } #endif // Platform #ifdef CATCH_PLATFORM_WINDOWS extern "C" __declspec(dllimport) void __stdcall OutputDebugStringA( const char* ); namespace Catch { void writeToDebugConsole( std::string const& text ) { ::OutputDebugStringA( text.c_str() ); } } #else namespace Catch { void writeToDebugConsole( std::string const& text ) { // !TBD: Need a version for Mac/ XCode and other IDEs Catch::cout() << text; } } #endif // Platform // #included from: catch_tostring.hpp #define TWOBLUECUBES_CATCH_TOSTRING_HPP_INCLUDED namespace Catch { namespace Detail { std::string unprintableString = "{?}"; namespace { struct Endianness { enum Arch { Big, Little }; static Arch which() { union _{ int asInt; char asChar[sizeof (int)]; } u; u.asInt = 1; return ( u.asChar[sizeof(int)-1] == 1 ) ? Big : Little; } }; } std::string rawMemoryToString( const void *object, std::size_t size ) { // Reverse order for little endian architectures int i = 0, end = static_cast( size ), inc = 1; if( Endianness::which() == Endianness::Little ) { i = end-1; end = inc = -1; } unsigned char const *bytes = static_cast(object); std::ostringstream os; os << "0x" << std::setfill('0') << std::hex; for( ; i != end; i += inc ) os << std::setw(2) << static_cast(bytes[i]); return os.str(); } } std::string toString( std::string const& value ) { std::string s = value; if( getCurrentContext().getConfig()->showInvisibles() ) { for(size_t i = 0; i < s.size(); ++i ) { std::string subs; switch( s[i] ) { case '\n': subs = "\\n"; break; case '\t': subs = "\\t"; break; default: break; } if( !subs.empty() ) { s = s.substr( 0, i ) + subs + s.substr( i+1 ); ++i; } } } return "\"" + s + "\""; } std::string toString( std::wstring const& value ) { std::string s; s.reserve( value.size() ); for(size_t i = 0; i < value.size(); ++i ) s += value[i] <= 0xff ? static_cast( value[i] ) : '?'; return Catch::toString( s ); } std::string toString( const char* const value ) { return value ? Catch::toString( std::string( value ) ) : std::string( "{null string}" ); } std::string toString( char* const value ) { return Catch::toString( static_cast( value ) ); } std::string toString( const wchar_t* const value ) { return value ? Catch::toString( std::wstring(value) ) : std::string( "{null string}" ); } std::string toString( wchar_t* const value ) { return Catch::toString( static_cast( value ) ); } std::string toString( int value ) { std::ostringstream oss; oss << value; if( value >= 255 ) oss << " (0x" << std::hex << value << ")"; return oss.str(); } std::string toString( unsigned long value ) { std::ostringstream oss; oss << value; if( value >= 255 ) oss << " (0x" << std::hex << value << ")"; return oss.str(); } std::string toString( unsigned int value ) { return Catch::toString( static_cast( value ) ); } template std::string fpToString( T value, int precision ) { std::ostringstream oss; oss << std::setprecision( precision ) << std::fixed << value; std::string d = oss.str(); std::size_t i = d.find_last_not_of( '0' ); if( i != std::string::npos && i != d.size()-1 ) { if( d[i] == '.' ) i++; d = d.substr( 0, i+1 ); } return d; } std::string toString( const double value ) { return fpToString( value, 10 ); } std::string toString( const float value ) { return fpToString( value, 5 ) + "f"; } std::string toString( bool value ) { return value ? "true" : "false"; } std::string toString( char value ) { return value < ' ' ? toString( static_cast( value ) ) : Detail::makeString( value ); } std::string toString( signed char value ) { return toString( static_cast( value ) ); } std::string toString( unsigned char value ) { return toString( static_cast( value ) ); } #ifdef CATCH_CONFIG_CPP11_NULLPTR std::string toString( std::nullptr_t ) { return "nullptr"; } #endif #ifdef __OBJC__ std::string toString( NSString const * const& nsstring ) { if( !nsstring ) return "nil"; return "@" + toString([nsstring UTF8String]); } std::string toString( NSString * CATCH_ARC_STRONG const& nsstring ) { if( !nsstring ) return "nil"; return "@" + toString([nsstring UTF8String]); } std::string toString( NSObject* const& nsObject ) { return toString( [nsObject description] ); } #endif } // end namespace Catch // #included from: catch_result_builder.hpp #define TWOBLUECUBES_CATCH_RESULT_BUILDER_HPP_INCLUDED namespace Catch { ResultBuilder::ResultBuilder( char const* macroName, SourceLineInfo const& lineInfo, char const* capturedExpression, ResultDisposition::Flags resultDisposition ) : m_assertionInfo( macroName, lineInfo, capturedExpression, resultDisposition ), m_shouldDebugBreak( false ), m_shouldThrow( false ) {} ResultBuilder& ResultBuilder::setResultType( ResultWas::OfType result ) { m_data.resultType = result; return *this; } ResultBuilder& ResultBuilder::setResultType( bool result ) { m_data.resultType = result ? ResultWas::Ok : ResultWas::ExpressionFailed; return *this; } ResultBuilder& ResultBuilder::setLhs( std::string const& lhs ) { m_exprComponents.lhs = lhs; return *this; } ResultBuilder& ResultBuilder::setRhs( std::string const& rhs ) { m_exprComponents.rhs = rhs; return *this; } ResultBuilder& ResultBuilder::setOp( std::string const& op ) { m_exprComponents.op = op; return *this; } void ResultBuilder::endExpression() { m_exprComponents.testFalse = isFalseTest( m_assertionInfo.resultDisposition ); captureExpression(); } void ResultBuilder::useActiveException( ResultDisposition::Flags resultDisposition ) { m_assertionInfo.resultDisposition = resultDisposition; m_stream.oss << Catch::translateActiveException(); captureResult( ResultWas::ThrewException ); } void ResultBuilder::captureResult( ResultWas::OfType resultType ) { setResultType( resultType ); captureExpression(); } void ResultBuilder::captureExpression() { AssertionResult result = build(); getResultCapture().assertionEnded( result ); if( !result.isOk() ) { if( getCurrentContext().getConfig()->shouldDebugBreak() ) m_shouldDebugBreak = true; if( getCurrentContext().getRunner()->aborting() || (m_assertionInfo.resultDisposition & ResultDisposition::Normal) ) m_shouldThrow = true; } } void ResultBuilder::react() { if( m_shouldThrow ) throw Catch::TestFailureException(); } bool ResultBuilder::shouldDebugBreak() const { return m_shouldDebugBreak; } bool ResultBuilder::allowThrows() const { return getCurrentContext().getConfig()->allowThrows(); } AssertionResult ResultBuilder::build() const { assert( m_data.resultType != ResultWas::Unknown ); AssertionResultData data = m_data; // Flip bool results if testFalse is set if( m_exprComponents.testFalse ) { if( data.resultType == ResultWas::Ok ) data.resultType = ResultWas::ExpressionFailed; else if( data.resultType == ResultWas::ExpressionFailed ) data.resultType = ResultWas::Ok; } data.message = m_stream.oss.str(); data.reconstructedExpression = reconstructExpression(); if( m_exprComponents.testFalse ) { if( m_exprComponents.op == "" ) data.reconstructedExpression = "!" + data.reconstructedExpression; else data.reconstructedExpression = "!(" + data.reconstructedExpression + ")"; } return AssertionResult( m_assertionInfo, data ); } std::string ResultBuilder::reconstructExpression() const { if( m_exprComponents.op == "" ) return m_exprComponents.lhs.empty() ? m_assertionInfo.capturedExpression : m_exprComponents.op + m_exprComponents.lhs; else if( m_exprComponents.op == "matches" ) return m_exprComponents.lhs + " " + m_exprComponents.rhs; else if( m_exprComponents.op != "!" ) { if( m_exprComponents.lhs.size() + m_exprComponents.rhs.size() < 40 && m_exprComponents.lhs.find("\n") == std::string::npos && m_exprComponents.rhs.find("\n") == std::string::npos ) return m_exprComponents.lhs + " " + m_exprComponents.op + " " + m_exprComponents.rhs; else return m_exprComponents.lhs + "\n" + m_exprComponents.op + "\n" + m_exprComponents.rhs; } else return "{can't expand - use " + m_assertionInfo.macroName + "_FALSE( " + m_assertionInfo.capturedExpression.substr(1) + " ) instead of " + m_assertionInfo.macroName + "( " + m_assertionInfo.capturedExpression + " ) for better diagnostics}"; } } // end namespace Catch // #included from: catch_tag_alias_registry.hpp #define TWOBLUECUBES_CATCH_TAG_ALIAS_REGISTRY_HPP_INCLUDED // #included from: catch_tag_alias_registry.h #define TWOBLUECUBES_CATCH_TAG_ALIAS_REGISTRY_H_INCLUDED #include namespace Catch { class TagAliasRegistry : public ITagAliasRegistry { public: virtual ~TagAliasRegistry(); virtual Option find( std::string const& alias ) const; virtual std::string expandAliases( std::string const& unexpandedTestSpec ) const; void add( char const* alias, char const* tag, SourceLineInfo const& lineInfo ); static TagAliasRegistry& get(); private: std::map m_registry; }; } // end namespace Catch #include #include namespace Catch { TagAliasRegistry::~TagAliasRegistry() {} Option TagAliasRegistry::find( std::string const& alias ) const { std::map::const_iterator it = m_registry.find( alias ); if( it != m_registry.end() ) return it->second; else return Option(); } std::string TagAliasRegistry::expandAliases( std::string const& unexpandedTestSpec ) const { std::string expandedTestSpec = unexpandedTestSpec; for( std::map::const_iterator it = m_registry.begin(), itEnd = m_registry.end(); it != itEnd; ++it ) { std::size_t pos = expandedTestSpec.find( it->first ); if( pos != std::string::npos ) { expandedTestSpec = expandedTestSpec.substr( 0, pos ) + it->second.tag + expandedTestSpec.substr( pos + it->first.size() ); } } return expandedTestSpec; } void TagAliasRegistry::add( char const* alias, char const* tag, SourceLineInfo const& lineInfo ) { if( !startsWith( alias, "[@" ) || !endsWith( alias, "]" ) ) { std::ostringstream oss; oss << "error: tag alias, \"" << alias << "\" is not of the form [@alias name].\n" << lineInfo; throw std::domain_error( oss.str().c_str() ); } if( !m_registry.insert( std::make_pair( alias, TagAlias( tag, lineInfo ) ) ).second ) { std::ostringstream oss; oss << "error: tag alias, \"" << alias << "\" already registered.\n" << "\tFirst seen at " << find(alias)->lineInfo << "\n" << "\tRedefined at " << lineInfo; throw std::domain_error( oss.str().c_str() ); } } TagAliasRegistry& TagAliasRegistry::get() { static TagAliasRegistry instance; return instance; } ITagAliasRegistry::~ITagAliasRegistry() {} ITagAliasRegistry const& ITagAliasRegistry::get() { return TagAliasRegistry::get(); } RegistrarForTagAliases::RegistrarForTagAliases( char const* alias, char const* tag, SourceLineInfo const& lineInfo ) { try { TagAliasRegistry::get().add( alias, tag, lineInfo ); } catch( std::exception& ex ) { Colour colourGuard( Colour::Red ); Catch::cerr() << ex.what() << std::endl; exit(1); } } } // end namespace Catch // #included from: ../reporters/catch_reporter_xml.hpp #define TWOBLUECUBES_CATCH_REPORTER_XML_HPP_INCLUDED // #included from: catch_reporter_bases.hpp #define TWOBLUECUBES_CATCH_REPORTER_BASES_HPP_INCLUDED #include namespace Catch { struct StreamingReporterBase : SharedImpl { StreamingReporterBase( ReporterConfig const& _config ) : m_config( _config.fullConfig() ), stream( _config.stream() ) {} virtual ~StreamingReporterBase(); virtual void noMatchingTestCases( std::string const& ) {} virtual void testRunStarting( TestRunInfo const& _testRunInfo ) { currentTestRunInfo = _testRunInfo; } virtual void testGroupStarting( GroupInfo const& _groupInfo ) { currentGroupInfo = _groupInfo; } virtual void testCaseStarting( TestCaseInfo const& _testInfo ) { currentTestCaseInfo = _testInfo; } virtual void sectionStarting( SectionInfo const& _sectionInfo ) { m_sectionStack.push_back( _sectionInfo ); } virtual void sectionEnded( SectionStats const& /* _sectionStats */ ) { m_sectionStack.pop_back(); } virtual void testCaseEnded( TestCaseStats const& /* _testCaseStats */ ) { currentTestCaseInfo.reset(); } virtual void testGroupEnded( TestGroupStats const& /* _testGroupStats */ ) { currentGroupInfo.reset(); } virtual void testRunEnded( TestRunStats const& /* _testRunStats */ ) { currentTestCaseInfo.reset(); currentGroupInfo.reset(); currentTestRunInfo.reset(); } virtual void skipTest( TestCaseInfo const& ) { // Don't do anything with this by default. // It can optionally be overridden in the derived class. } Ptr m_config; std::ostream& stream; LazyStat currentTestRunInfo; LazyStat currentGroupInfo; LazyStat currentTestCaseInfo; std::vector m_sectionStack; }; struct CumulativeReporterBase : SharedImpl { template struct Node : SharedImpl<> { explicit Node( T const& _value ) : value( _value ) {} virtual ~Node() {} typedef std::vector > ChildNodes; T value; ChildNodes children; }; struct SectionNode : SharedImpl<> { explicit SectionNode( SectionStats const& _stats ) : stats( _stats ) {} virtual ~SectionNode(); bool operator == ( SectionNode const& other ) const { return stats.sectionInfo.lineInfo == other.stats.sectionInfo.lineInfo; } bool operator == ( Ptr const& other ) const { return operator==( *other ); } SectionStats stats; typedef std::vector > ChildSections; typedef std::vector Assertions; ChildSections childSections; Assertions assertions; std::string stdOut; std::string stdErr; }; struct BySectionInfo { BySectionInfo( SectionInfo const& other ) : m_other( other ) {} BySectionInfo( BySectionInfo const& other ) : m_other( other.m_other ) {} bool operator() ( Ptr const& node ) const { return node->stats.sectionInfo.lineInfo == m_other.lineInfo; } private: void operator=( BySectionInfo const& ); SectionInfo const& m_other; }; typedef Node TestCaseNode; typedef Node TestGroupNode; typedef Node TestRunNode; CumulativeReporterBase( ReporterConfig const& _config ) : m_config( _config.fullConfig() ), stream( _config.stream() ) {} ~CumulativeReporterBase(); virtual void testRunStarting( TestRunInfo const& ) {} virtual void testGroupStarting( GroupInfo const& ) {} virtual void testCaseStarting( TestCaseInfo const& ) {} virtual void sectionStarting( SectionInfo const& sectionInfo ) { SectionStats incompleteStats( sectionInfo, Counts(), 0, false ); Ptr node; if( m_sectionStack.empty() ) { if( !m_rootSection ) m_rootSection = new SectionNode( incompleteStats ); node = m_rootSection; } else { SectionNode& parentNode = *m_sectionStack.back(); SectionNode::ChildSections::const_iterator it = std::find_if( parentNode.childSections.begin(), parentNode.childSections.end(), BySectionInfo( sectionInfo ) ); if( it == parentNode.childSections.end() ) { node = new SectionNode( incompleteStats ); parentNode.childSections.push_back( node ); } else node = *it; } m_sectionStack.push_back( node ); m_deepestSection = node; } virtual void assertionStarting( AssertionInfo const& ) {} virtual bool assertionEnded( AssertionStats const& assertionStats ) { assert( !m_sectionStack.empty() ); SectionNode& sectionNode = *m_sectionStack.back(); sectionNode.assertions.push_back( assertionStats ); return true; } virtual void sectionEnded( SectionStats const& sectionStats ) { assert( !m_sectionStack.empty() ); SectionNode& node = *m_sectionStack.back(); node.stats = sectionStats; m_sectionStack.pop_back(); } virtual void testCaseEnded( TestCaseStats const& testCaseStats ) { Ptr node = new TestCaseNode( testCaseStats ); assert( m_sectionStack.size() == 0 ); node->children.push_back( m_rootSection ); m_testCases.push_back( node ); m_rootSection.reset(); assert( m_deepestSection ); m_deepestSection->stdOut = testCaseStats.stdOut; m_deepestSection->stdErr = testCaseStats.stdErr; } virtual void testGroupEnded( TestGroupStats const& testGroupStats ) { Ptr node = new TestGroupNode( testGroupStats ); node->children.swap( m_testCases ); m_testGroups.push_back( node ); } virtual void testRunEnded( TestRunStats const& testRunStats ) { Ptr node = new TestRunNode( testRunStats ); node->children.swap( m_testGroups ); m_testRuns.push_back( node ); testRunEndedCumulative(); } virtual void testRunEndedCumulative() = 0; virtual void skipTest( TestCaseInfo const& ) {} Ptr m_config; std::ostream& stream; std::vector m_assertions; std::vector > > m_sections; std::vector > m_testCases; std::vector > m_testGroups; std::vector > m_testRuns; Ptr m_rootSection; Ptr m_deepestSection; std::vector > m_sectionStack; }; template char const* getLineOfChars() { static char line[CATCH_CONFIG_CONSOLE_WIDTH] = {0}; if( !*line ) { memset( line, C, CATCH_CONFIG_CONSOLE_WIDTH-1 ); line[CATCH_CONFIG_CONSOLE_WIDTH-1] = 0; } return line; } } // end namespace Catch // #included from: ../internal/catch_reporter_registrars.hpp #define TWOBLUECUBES_CATCH_REPORTER_REGISTRARS_HPP_INCLUDED namespace Catch { template class LegacyReporterRegistrar { class ReporterFactory : public IReporterFactory { virtual IStreamingReporter* create( ReporterConfig const& config ) const { return new LegacyReporterAdapter( new T( config ) ); } virtual std::string getDescription() const { return T::getDescription(); } }; public: LegacyReporterRegistrar( std::string const& name ) { getMutableRegistryHub().registerReporter( name, new ReporterFactory() ); } }; template class ReporterRegistrar { class ReporterFactory : public IReporterFactory { // *** Please Note ***: // - If you end up here looking at a compiler error because it's trying to register // your custom reporter class be aware that the native reporter interface has changed // to IStreamingReporter. The "legacy" interface, IReporter, is still supported via // an adapter. Just use REGISTER_LEGACY_REPORTER to take advantage of the adapter. // However please consider updating to the new interface as the old one is now // deprecated and will probably be removed quite soon! // Please contact me via github if you have any questions at all about this. // In fact, ideally, please contact me anyway to let me know you've hit this - as I have // no idea who is actually using custom reporters at all (possibly no-one!). // The new interface is designed to minimise exposure to interface changes in the future. virtual IStreamingReporter* create( ReporterConfig const& config ) const { return new T( config ); } virtual std::string getDescription() const { return T::getDescription(); } }; public: ReporterRegistrar( std::string const& name ) { getMutableRegistryHub().registerReporter( name, new ReporterFactory() ); } }; } #define INTERNAL_CATCH_REGISTER_LEGACY_REPORTER( name, reporterType ) \ namespace{ Catch::LegacyReporterRegistrar catch_internal_RegistrarFor##reporterType( name ); } #define INTERNAL_CATCH_REGISTER_REPORTER( name, reporterType ) \ namespace{ Catch::ReporterRegistrar catch_internal_RegistrarFor##reporterType( name ); } // #included from: ../internal/catch_xmlwriter.hpp #define TWOBLUECUBES_CATCH_XMLWRITER_HPP_INCLUDED #include #include #include namespace Catch { class XmlWriter { public: class ScopedElement { public: ScopedElement( XmlWriter* writer ) : m_writer( writer ) {} ScopedElement( ScopedElement const& other ) : m_writer( other.m_writer ){ other.m_writer = NULL; } ~ScopedElement() { if( m_writer ) m_writer->endElement(); } ScopedElement& writeText( std::string const& text, bool indent = true ) { m_writer->writeText( text, indent ); return *this; } template ScopedElement& writeAttribute( std::string const& name, T const& attribute ) { m_writer->writeAttribute( name, attribute ); return *this; } private: mutable XmlWriter* m_writer; }; XmlWriter() : m_tagIsOpen( false ), m_needsNewline( false ), m_os( &Catch::cout() ) {} XmlWriter( std::ostream& os ) : m_tagIsOpen( false ), m_needsNewline( false ), m_os( &os ) {} ~XmlWriter() { while( !m_tags.empty() ) endElement(); } XmlWriter& startElement( std::string const& name ) { ensureTagClosed(); newlineIfNecessary(); stream() << m_indent << "<" << name; m_tags.push_back( name ); m_indent += " "; m_tagIsOpen = true; return *this; } ScopedElement scopedElement( std::string const& name ) { ScopedElement scoped( this ); startElement( name ); return scoped; } XmlWriter& endElement() { newlineIfNecessary(); m_indent = m_indent.substr( 0, m_indent.size()-2 ); if( m_tagIsOpen ) { stream() << "/>\n"; m_tagIsOpen = false; } else { stream() << m_indent << "\n"; } m_tags.pop_back(); return *this; } XmlWriter& writeAttribute( std::string const& name, std::string const& attribute ) { if( !name.empty() && !attribute.empty() ) { stream() << " " << name << "=\""; writeEncodedText( attribute ); stream() << "\""; } return *this; } XmlWriter& writeAttribute( std::string const& name, bool attribute ) { stream() << " " << name << "=\"" << ( attribute ? "true" : "false" ) << "\""; return *this; } template XmlWriter& writeAttribute( std::string const& name, T const& attribute ) { if( !name.empty() ) stream() << " " << name << "=\"" << attribute << "\""; return *this; } XmlWriter& writeText( std::string const& text, bool indent = true ) { if( !text.empty() ){ bool tagWasOpen = m_tagIsOpen; ensureTagClosed(); if( tagWasOpen && indent ) stream() << m_indent; writeEncodedText( text ); m_needsNewline = true; } return *this; } XmlWriter& writeComment( std::string const& text ) { ensureTagClosed(); stream() << m_indent << ""; m_needsNewline = true; return *this; } XmlWriter& writeBlankLine() { ensureTagClosed(); stream() << "\n"; return *this; } void setStream( std::ostream& os ) { m_os = &os; } private: XmlWriter( XmlWriter const& ); void operator=( XmlWriter const& ); std::ostream& stream() { return *m_os; } void ensureTagClosed() { if( m_tagIsOpen ) { stream() << ">\n"; m_tagIsOpen = false; } } void newlineIfNecessary() { if( m_needsNewline ) { stream() << "\n"; m_needsNewline = false; } } void writeEncodedText( std::string const& text ) { static const char* charsToEncode = "<&\""; std::string mtext = text; std::string::size_type pos = mtext.find_first_of( charsToEncode ); while( pos != std::string::npos ) { stream() << mtext.substr( 0, pos ); switch( mtext[pos] ) { case '<': stream() << "<"; break; case '&': stream() << "&"; break; case '\"': stream() << """; break; } mtext = mtext.substr( pos+1 ); pos = mtext.find_first_of( charsToEncode ); } stream() << mtext; } bool m_tagIsOpen; bool m_needsNewline; std::vector m_tags; std::string m_indent; std::ostream* m_os; }; } namespace Catch { class XmlReporter : public StreamingReporterBase { public: XmlReporter( ReporterConfig const& _config ) : StreamingReporterBase( _config ), m_sectionDepth( 0 ) {} virtual ~XmlReporter(); static std::string getDescription() { return "Reports test results as an XML document"; } public: // StreamingReporterBase virtual ReporterPreferences getPreferences() const { ReporterPreferences prefs; prefs.shouldRedirectStdOut = true; return prefs; } virtual void noMatchingTestCases( std::string const& s ) { StreamingReporterBase::noMatchingTestCases( s ); } virtual void testRunStarting( TestRunInfo const& testInfo ) { StreamingReporterBase::testRunStarting( testInfo ); m_xml.setStream( stream ); m_xml.startElement( "Catch" ); if( !m_config->name().empty() ) m_xml.writeAttribute( "name", m_config->name() ); } virtual void testGroupStarting( GroupInfo const& groupInfo ) { StreamingReporterBase::testGroupStarting( groupInfo ); m_xml.startElement( "Group" ) .writeAttribute( "name", groupInfo.name ); } virtual void testCaseStarting( TestCaseInfo const& testInfo ) { StreamingReporterBase::testCaseStarting(testInfo); m_xml.startElement( "TestCase" ).writeAttribute( "name", trim( testInfo.name ) ); if ( m_config->showDurations() == ShowDurations::Always ) m_testCaseTimer.start(); } virtual void sectionStarting( SectionInfo const& sectionInfo ) { StreamingReporterBase::sectionStarting( sectionInfo ); if( m_sectionDepth++ > 0 ) { m_xml.startElement( "Section" ) .writeAttribute( "name", trim( sectionInfo.name ) ) .writeAttribute( "description", sectionInfo.description ); } } virtual void assertionStarting( AssertionInfo const& ) { } virtual bool assertionEnded( AssertionStats const& assertionStats ) { const AssertionResult& assertionResult = assertionStats.assertionResult; // Print any info messages in tags. if( assertionStats.assertionResult.getResultType() != ResultWas::Ok ) { for( std::vector::const_iterator it = assertionStats.infoMessages.begin(), itEnd = assertionStats.infoMessages.end(); it != itEnd; ++it ) { if( it->type == ResultWas::Info ) { m_xml.scopedElement( "Info" ) .writeText( it->message ); } else if ( it->type == ResultWas::Warning ) { m_xml.scopedElement( "Warning" ) .writeText( it->message ); } } } // Drop out if result was successful but we're not printing them. if( !m_config->includeSuccessfulResults() && isOk(assertionResult.getResultType()) ) return true; // Print the expression if there is one. if( assertionResult.hasExpression() ) { m_xml.startElement( "Expression" ) .writeAttribute( "success", assertionResult.succeeded() ) .writeAttribute( "type", assertionResult.getTestMacroName() ) .writeAttribute( "filename", assertionResult.getSourceInfo().file ) .writeAttribute( "line", assertionResult.getSourceInfo().line ); m_xml.scopedElement( "Original" ) .writeText( assertionResult.getExpression() ); m_xml.scopedElement( "Expanded" ) .writeText( assertionResult.getExpandedExpression() ); } // And... Print a result applicable to each result type. switch( assertionResult.getResultType() ) { case ResultWas::ThrewException: m_xml.scopedElement( "Exception" ) .writeAttribute( "filename", assertionResult.getSourceInfo().file ) .writeAttribute( "line", assertionResult.getSourceInfo().line ) .writeText( assertionResult.getMessage() ); break; case ResultWas::FatalErrorCondition: m_xml.scopedElement( "Fatal Error Condition" ) .writeAttribute( "filename", assertionResult.getSourceInfo().file ) .writeAttribute( "line", assertionResult.getSourceInfo().line ) .writeText( assertionResult.getMessage() ); break; case ResultWas::Info: m_xml.scopedElement( "Info" ) .writeText( assertionResult.getMessage() ); break; case ResultWas::Warning: // Warning will already have been written break; case ResultWas::ExplicitFailure: m_xml.scopedElement( "Failure" ) .writeText( assertionResult.getMessage() ); break; default: break; } if( assertionResult.hasExpression() ) m_xml.endElement(); return true; } virtual void sectionEnded( SectionStats const& sectionStats ) { StreamingReporterBase::sectionEnded( sectionStats ); if( --m_sectionDepth > 0 ) { XmlWriter::ScopedElement e = m_xml.scopedElement( "OverallResults" ); e.writeAttribute( "successes", sectionStats.assertions.passed ); e.writeAttribute( "failures", sectionStats.assertions.failed ); e.writeAttribute( "expectedFailures", sectionStats.assertions.failedButOk ); if ( m_config->showDurations() == ShowDurations::Always ) e.writeAttribute( "durationInSeconds", sectionStats.durationInSeconds ); m_xml.endElement(); } } virtual void testCaseEnded( TestCaseStats const& testCaseStats ) { StreamingReporterBase::testCaseEnded( testCaseStats ); XmlWriter::ScopedElement e = m_xml.scopedElement( "OverallResult" ); e.writeAttribute( "success", testCaseStats.totals.assertions.allOk() ); if ( m_config->showDurations() == ShowDurations::Always ) e.writeAttribute( "durationInSeconds", m_testCaseTimer.getElapsedSeconds() ); m_xml.endElement(); } virtual void testGroupEnded( TestGroupStats const& testGroupStats ) { StreamingReporterBase::testGroupEnded( testGroupStats ); // TODO: Check testGroupStats.aborting and act accordingly. m_xml.scopedElement( "OverallResults" ) .writeAttribute( "successes", testGroupStats.totals.assertions.passed ) .writeAttribute( "failures", testGroupStats.totals.assertions.failed ) .writeAttribute( "expectedFailures", testGroupStats.totals.assertions.failedButOk ); m_xml.endElement(); } virtual void testRunEnded( TestRunStats const& testRunStats ) { StreamingReporterBase::testRunEnded( testRunStats ); m_xml.scopedElement( "OverallResults" ) .writeAttribute( "successes", testRunStats.totals.assertions.passed ) .writeAttribute( "failures", testRunStats.totals.assertions.failed ) .writeAttribute( "expectedFailures", testRunStats.totals.assertions.failedButOk ); m_xml.endElement(); } private: Timer m_testCaseTimer; XmlWriter m_xml; int m_sectionDepth; }; INTERNAL_CATCH_REGISTER_REPORTER( "xml", XmlReporter ) } // end namespace Catch // #included from: ../reporters/catch_reporter_junit.hpp #define TWOBLUECUBES_CATCH_REPORTER_JUNIT_HPP_INCLUDED #include namespace Catch { class JunitReporter : public CumulativeReporterBase { public: JunitReporter( ReporterConfig const& _config ) : CumulativeReporterBase( _config ), xml( _config.stream() ) {} ~JunitReporter(); static std::string getDescription() { return "Reports test results in an XML format that looks like Ant's junitreport target"; } virtual void noMatchingTestCases( std::string const& /*spec*/ ) {} virtual ReporterPreferences getPreferences() const { ReporterPreferences prefs; prefs.shouldRedirectStdOut = true; return prefs; } virtual void testRunStarting( TestRunInfo const& runInfo ) { CumulativeReporterBase::testRunStarting( runInfo ); xml.startElement( "testsuites" ); } virtual void testGroupStarting( GroupInfo const& groupInfo ) { suiteTimer.start(); stdOutForSuite.str(""); stdErrForSuite.str(""); unexpectedExceptions = 0; CumulativeReporterBase::testGroupStarting( groupInfo ); } virtual bool assertionEnded( AssertionStats const& assertionStats ) { if( assertionStats.assertionResult.getResultType() == ResultWas::ThrewException ) unexpectedExceptions++; return CumulativeReporterBase::assertionEnded( assertionStats ); } virtual void testCaseEnded( TestCaseStats const& testCaseStats ) { stdOutForSuite << testCaseStats.stdOut; stdErrForSuite << testCaseStats.stdErr; CumulativeReporterBase::testCaseEnded( testCaseStats ); } virtual void testGroupEnded( TestGroupStats const& testGroupStats ) { double suiteTime = suiteTimer.getElapsedSeconds(); CumulativeReporterBase::testGroupEnded( testGroupStats ); writeGroup( *m_testGroups.back(), suiteTime ); } virtual void testRunEndedCumulative() { xml.endElement(); } void writeGroup( TestGroupNode const& groupNode, double suiteTime ) { XmlWriter::ScopedElement e = xml.scopedElement( "testsuite" ); TestGroupStats const& stats = groupNode.value; xml.writeAttribute( "name", stats.groupInfo.name ); xml.writeAttribute( "errors", unexpectedExceptions ); xml.writeAttribute( "failures", stats.totals.assertions.failed-unexpectedExceptions ); xml.writeAttribute( "tests", stats.totals.assertions.total() ); xml.writeAttribute( "hostname", "tbd" ); // !TBD if( m_config->showDurations() == ShowDurations::Never ) xml.writeAttribute( "time", "" ); else xml.writeAttribute( "time", suiteTime ); xml.writeAttribute( "timestamp", "tbd" ); // !TBD // Write test cases for( TestGroupNode::ChildNodes::const_iterator it = groupNode.children.begin(), itEnd = groupNode.children.end(); it != itEnd; ++it ) writeTestCase( **it ); xml.scopedElement( "system-out" ).writeText( trim( stdOutForSuite.str() ), false ); xml.scopedElement( "system-err" ).writeText( trim( stdErrForSuite.str() ), false ); } void writeTestCase( TestCaseNode const& testCaseNode ) { TestCaseStats const& stats = testCaseNode.value; // All test cases have exactly one section - which represents the // test case itself. That section may have 0-n nested sections assert( testCaseNode.children.size() == 1 ); SectionNode const& rootSection = *testCaseNode.children.front(); std::string className = stats.testInfo.className; if( className.empty() ) { if( rootSection.childSections.empty() ) className = "global"; } writeSection( className, "", rootSection ); } void writeSection( std::string const& className, std::string const& rootName, SectionNode const& sectionNode ) { std::string name = trim( sectionNode.stats.sectionInfo.name ); if( !rootName.empty() ) name = rootName + "/" + name; if( !sectionNode.assertions.empty() || !sectionNode.stdOut.empty() || !sectionNode.stdErr.empty() ) { XmlWriter::ScopedElement e = xml.scopedElement( "testcase" ); if( className.empty() ) { xml.writeAttribute( "classname", name ); xml.writeAttribute( "name", "root" ); } else { xml.writeAttribute( "classname", className ); xml.writeAttribute( "name", name ); } xml.writeAttribute( "time", Catch::toString( sectionNode.stats.durationInSeconds ) ); writeAssertions( sectionNode ); if( !sectionNode.stdOut.empty() ) xml.scopedElement( "system-out" ).writeText( trim( sectionNode.stdOut ), false ); if( !sectionNode.stdErr.empty() ) xml.scopedElement( "system-err" ).writeText( trim( sectionNode.stdErr ), false ); } for( SectionNode::ChildSections::const_iterator it = sectionNode.childSections.begin(), itEnd = sectionNode.childSections.end(); it != itEnd; ++it ) if( className.empty() ) writeSection( name, "", **it ); else writeSection( className, name, **it ); } void writeAssertions( SectionNode const& sectionNode ) { for( SectionNode::Assertions::const_iterator it = sectionNode.assertions.begin(), itEnd = sectionNode.assertions.end(); it != itEnd; ++it ) writeAssertion( *it ); } void writeAssertion( AssertionStats const& stats ) { AssertionResult const& result = stats.assertionResult; if( !result.isOk() ) { std::string elementName; switch( result.getResultType() ) { case ResultWas::ThrewException: case ResultWas::FatalErrorCondition: elementName = "error"; break; case ResultWas::ExplicitFailure: elementName = "failure"; break; case ResultWas::ExpressionFailed: elementName = "failure"; break; case ResultWas::DidntThrowException: elementName = "failure"; break; // We should never see these here: case ResultWas::Info: case ResultWas::Warning: case ResultWas::Ok: case ResultWas::Unknown: case ResultWas::FailureBit: case ResultWas::Exception: elementName = "internalError"; break; } XmlWriter::ScopedElement e = xml.scopedElement( elementName ); xml.writeAttribute( "message", result.getExpandedExpression() ); xml.writeAttribute( "type", result.getTestMacroName() ); std::ostringstream oss; if( !result.getMessage().empty() ) oss << result.getMessage() << "\n"; for( std::vector::const_iterator it = stats.infoMessages.begin(), itEnd = stats.infoMessages.end(); it != itEnd; ++it ) if( it->type == ResultWas::Info ) oss << it->message << "\n"; oss << "at " << result.getSourceInfo(); xml.writeText( oss.str(), false ); } } XmlWriter xml; Timer suiteTimer; std::ostringstream stdOutForSuite; std::ostringstream stdErrForSuite; unsigned int unexpectedExceptions; }; INTERNAL_CATCH_REGISTER_REPORTER( "junit", JunitReporter ) } // end namespace Catch // #included from: ../reporters/catch_reporter_console.hpp #define TWOBLUECUBES_CATCH_REPORTER_CONSOLE_HPP_INCLUDED namespace Catch { struct ConsoleReporter : StreamingReporterBase { ConsoleReporter( ReporterConfig const& _config ) : StreamingReporterBase( _config ), m_headerPrinted( false ) {} virtual ~ConsoleReporter(); static std::string getDescription() { return "Reports test results as plain lines of text"; } virtual ReporterPreferences getPreferences() const { ReporterPreferences prefs; prefs.shouldRedirectStdOut = false; return prefs; } virtual void noMatchingTestCases( std::string const& spec ) { stream << "No test cases matched '" << spec << "'" << std::endl; } virtual void assertionStarting( AssertionInfo const& ) { } virtual bool assertionEnded( AssertionStats const& _assertionStats ) { AssertionResult const& result = _assertionStats.assertionResult; bool printInfoMessages = true; // Drop out if result was successful and we're not printing those if( !m_config->includeSuccessfulResults() && result.isOk() ) { if( result.getResultType() != ResultWas::Warning ) return false; printInfoMessages = false; } lazyPrint(); AssertionPrinter printer( stream, _assertionStats, printInfoMessages ); printer.print(); stream << std::endl; return true; } virtual void sectionStarting( SectionInfo const& _sectionInfo ) { m_headerPrinted = false; StreamingReporterBase::sectionStarting( _sectionInfo ); } virtual void sectionEnded( SectionStats const& _sectionStats ) { if( _sectionStats.missingAssertions ) { lazyPrint(); Colour colour( Colour::ResultError ); if( m_sectionStack.size() > 1 ) stream << "\nNo assertions in section"; else stream << "\nNo assertions in test case"; stream << " '" << _sectionStats.sectionInfo.name << "'\n" << std::endl; } if( m_headerPrinted ) { if( m_config->showDurations() == ShowDurations::Always ) stream << "Completed in " << _sectionStats.durationInSeconds << "s" << std::endl; m_headerPrinted = false; } else { if( m_config->showDurations() == ShowDurations::Always ) stream << _sectionStats.sectionInfo.name << " completed in " << _sectionStats.durationInSeconds << "s" << std::endl; } StreamingReporterBase::sectionEnded( _sectionStats ); } virtual void testCaseEnded( TestCaseStats const& _testCaseStats ) { StreamingReporterBase::testCaseEnded( _testCaseStats ); m_headerPrinted = false; } virtual void testGroupEnded( TestGroupStats const& _testGroupStats ) { if( currentGroupInfo.used ) { printSummaryDivider(); stream << "Summary for group '" << _testGroupStats.groupInfo.name << "':\n"; printTotals( _testGroupStats.totals ); stream << "\n" << std::endl; } StreamingReporterBase::testGroupEnded( _testGroupStats ); } virtual void testRunEnded( TestRunStats const& _testRunStats ) { printTotalsDivider( _testRunStats.totals ); printTotals( _testRunStats.totals ); stream << std::endl; StreamingReporterBase::testRunEnded( _testRunStats ); } private: class AssertionPrinter { void operator= ( AssertionPrinter const& ); public: AssertionPrinter( std::ostream& _stream, AssertionStats const& _stats, bool _printInfoMessages ) : stream( _stream ), stats( _stats ), result( _stats.assertionResult ), colour( Colour::None ), message( result.getMessage() ), messages( _stats.infoMessages ), printInfoMessages( _printInfoMessages ) { switch( result.getResultType() ) { case ResultWas::Ok: colour = Colour::Success; passOrFail = "PASSED"; //if( result.hasMessage() ) if( _stats.infoMessages.size() == 1 ) messageLabel = "with message"; if( _stats.infoMessages.size() > 1 ) messageLabel = "with messages"; break; case ResultWas::ExpressionFailed: if( result.isOk() ) { colour = Colour::Success; passOrFail = "FAILED - but was ok"; } else { colour = Colour::Error; passOrFail = "FAILED"; } if( _stats.infoMessages.size() == 1 ) messageLabel = "with message"; if( _stats.infoMessages.size() > 1 ) messageLabel = "with messages"; break; case ResultWas::ThrewException: colour = Colour::Error; passOrFail = "FAILED"; messageLabel = "due to unexpected exception with message"; break; case ResultWas::FatalErrorCondition: colour = Colour::Error; passOrFail = "FAILED"; messageLabel = "due to a fatal error condition"; break; case ResultWas::DidntThrowException: colour = Colour::Error; passOrFail = "FAILED"; messageLabel = "because no exception was thrown where one was expected"; break; case ResultWas::Info: messageLabel = "info"; break; case ResultWas::Warning: messageLabel = "warning"; break; case ResultWas::ExplicitFailure: passOrFail = "FAILED"; colour = Colour::Error; if( _stats.infoMessages.size() == 1 ) messageLabel = "explicitly with message"; if( _stats.infoMessages.size() > 1 ) messageLabel = "explicitly with messages"; break; // These cases are here to prevent compiler warnings case ResultWas::Unknown: case ResultWas::FailureBit: case ResultWas::Exception: passOrFail = "** internal error **"; colour = Colour::Error; break; } } void print() const { printSourceInfo(); if( stats.totals.assertions.total() > 0 ) { if( result.isOk() ) stream << "\n"; printResultType(); printOriginalExpression(); printReconstructedExpression(); } else { stream << "\n"; } printMessage(); } private: void printResultType() const { if( !passOrFail.empty() ) { Colour colourGuard( colour ); stream << passOrFail << ":\n"; } } void printOriginalExpression() const { if( result.hasExpression() ) { Colour colourGuard( Colour::OriginalExpression ); stream << " "; stream << result.getExpressionInMacro(); stream << "\n"; } } void printReconstructedExpression() const { if( result.hasExpandedExpression() ) { stream << "with expansion:\n"; Colour colourGuard( Colour::ReconstructedExpression ); stream << Text( result.getExpandedExpression(), TextAttributes().setIndent(2) ) << "\n"; } } void printMessage() const { if( !messageLabel.empty() ) stream << messageLabel << ":" << "\n"; for( std::vector::const_iterator it = messages.begin(), itEnd = messages.end(); it != itEnd; ++it ) { // If this assertion is a warning ignore any INFO messages if( printInfoMessages || it->type != ResultWas::Info ) stream << Text( it->message, TextAttributes().setIndent(2) ) << "\n"; } } void printSourceInfo() const { Colour colourGuard( Colour::FileName ); stream << result.getSourceInfo() << ": "; } std::ostream& stream; AssertionStats const& stats; AssertionResult const& result; Colour::Code colour; std::string passOrFail; std::string messageLabel; std::string message; std::vector messages; bool printInfoMessages; }; void lazyPrint() { if( !currentTestRunInfo.used ) lazyPrintRunInfo(); if( !currentGroupInfo.used ) lazyPrintGroupInfo(); if( !m_headerPrinted ) { printTestCaseAndSectionHeader(); m_headerPrinted = true; } } void lazyPrintRunInfo() { stream << "\n" << getLineOfChars<'~'>() << "\n"; Colour colour( Colour::SecondaryText ); stream << currentTestRunInfo->name << " is a Catch v" << libraryVersion.majorVersion << "." << libraryVersion.minorVersion << " b" << libraryVersion.buildNumber; if( libraryVersion.branchName != std::string( "master" ) ) stream << " (" << libraryVersion.branchName << ")"; stream << " host application.\n" << "Run with -? for options\n\n"; if( m_config->rngSeed() != 0 ) stream << "Randomness seeded to: " << m_config->rngSeed() << "\n\n"; currentTestRunInfo.used = true; } void lazyPrintGroupInfo() { if( !currentGroupInfo->name.empty() && currentGroupInfo->groupsCounts > 1 ) { printClosedHeader( "Group: " + currentGroupInfo->name ); currentGroupInfo.used = true; } } void printTestCaseAndSectionHeader() { assert( !m_sectionStack.empty() ); printOpenHeader( currentTestCaseInfo->name ); if( m_sectionStack.size() > 1 ) { Colour colourGuard( Colour::Headers ); std::vector::const_iterator it = m_sectionStack.begin()+1, // Skip first section (test case) itEnd = m_sectionStack.end(); for( ; it != itEnd; ++it ) printHeaderString( it->name, 2 ); } SourceLineInfo lineInfo = m_sectionStack.front().lineInfo; if( !lineInfo.empty() ){ stream << getLineOfChars<'-'>() << "\n"; Colour colourGuard( Colour::FileName ); stream << lineInfo << "\n"; } stream << getLineOfChars<'.'>() << "\n" << std::endl; } void printClosedHeader( std::string const& _name ) { printOpenHeader( _name ); stream << getLineOfChars<'.'>() << "\n"; } void printOpenHeader( std::string const& _name ) { stream << getLineOfChars<'-'>() << "\n"; { Colour colourGuard( Colour::Headers ); printHeaderString( _name ); } } // if string has a : in first line will set indent to follow it on // subsequent lines void printHeaderString( std::string const& _string, std::size_t indent = 0 ) { std::size_t i = _string.find( ": " ); if( i != std::string::npos ) i+=2; else i = 0; stream << Text( _string, TextAttributes() .setIndent( indent+i) .setInitialIndent( indent ) ) << "\n"; } struct SummaryColumn { SummaryColumn( std::string const& _label, Colour::Code _colour ) : label( _label ), colour( _colour ) {} SummaryColumn addRow( std::size_t count ) { std::ostringstream oss; oss << count; std::string row = oss.str(); for( std::vector::iterator it = rows.begin(); it != rows.end(); ++it ) { while( it->size() < row.size() ) *it = " " + *it; while( it->size() > row.size() ) row = " " + row; } rows.push_back( row ); return *this; } std::string label; Colour::Code colour; std::vector rows; }; void printTotals( Totals const& totals ) { if( totals.testCases.total() == 0 ) { stream << Colour( Colour::Warning ) << "No tests ran\n"; } else if( totals.assertions.total() > 0 && totals.assertions.allPassed() ) { stream << Colour( Colour::ResultSuccess ) << "All tests passed"; stream << " (" << pluralise( totals.assertions.passed, "assertion" ) << " in " << pluralise( totals.testCases.passed, "test case" ) << ")" << "\n"; } else { std::vector columns; columns.push_back( SummaryColumn( "", Colour::None ) .addRow( totals.testCases.total() ) .addRow( totals.assertions.total() ) ); columns.push_back( SummaryColumn( "passed", Colour::Success ) .addRow( totals.testCases.passed ) .addRow( totals.assertions.passed ) ); columns.push_back( SummaryColumn( "failed", Colour::ResultError ) .addRow( totals.testCases.failed ) .addRow( totals.assertions.failed ) ); columns.push_back( SummaryColumn( "failed as expected", Colour::ResultExpectedFailure ) .addRow( totals.testCases.failedButOk ) .addRow( totals.assertions.failedButOk ) ); printSummaryRow( "test cases", columns, 0 ); printSummaryRow( "assertions", columns, 1 ); } } void printSummaryRow( std::string const& label, std::vector const& cols, std::size_t row ) { for( std::vector::const_iterator it = cols.begin(); it != cols.end(); ++it ) { std::string value = it->rows[row]; if( it->label.empty() ) { stream << label << ": "; if( value != "0" ) stream << value; else stream << Colour( Colour::Warning ) << "- none -"; } else if( value != "0" ) { stream << Colour( Colour::LightGrey ) << " | "; stream << Colour( it->colour ) << value << " " << it->label; } } stream << "\n"; } static std::size_t makeRatio( std::size_t number, std::size_t total ) { std::size_t ratio = total > 0 ? CATCH_CONFIG_CONSOLE_WIDTH * number/ total : 0; return ( ratio == 0 && number > 0 ) ? 1 : ratio; } static std::size_t& findMax( std::size_t& i, std::size_t& j, std::size_t& k ) { if( i > j && i > k ) return i; else if( j > k ) return j; else return k; } void printTotalsDivider( Totals const& totals ) { if( totals.testCases.total() > 0 ) { std::size_t failedRatio = makeRatio( totals.testCases.failed, totals.testCases.total() ); std::size_t failedButOkRatio = makeRatio( totals.testCases.failedButOk, totals.testCases.total() ); std::size_t passedRatio = makeRatio( totals.testCases.passed, totals.testCases.total() ); while( failedRatio + failedButOkRatio + passedRatio < CATCH_CONFIG_CONSOLE_WIDTH-1 ) findMax( failedRatio, failedButOkRatio, passedRatio )++; while( failedRatio + failedButOkRatio + passedRatio > CATCH_CONFIG_CONSOLE_WIDTH-1 ) findMax( failedRatio, failedButOkRatio, passedRatio )--; stream << Colour( Colour::Error ) << std::string( failedRatio, '=' ); stream << Colour( Colour::ResultExpectedFailure ) << std::string( failedButOkRatio, '=' ); if( totals.testCases.allPassed() ) stream << Colour( Colour::ResultSuccess ) << std::string( passedRatio, '=' ); else stream << Colour( Colour::Success ) << std::string( passedRatio, '=' ); } else { stream << Colour( Colour::Warning ) << std::string( CATCH_CONFIG_CONSOLE_WIDTH-1, '=' ); } stream << "\n"; } void printSummaryDivider() { stream << getLineOfChars<'-'>() << "\n"; } private: bool m_headerPrinted; }; INTERNAL_CATCH_REGISTER_REPORTER( "console", ConsoleReporter ) } // end namespace Catch // #included from: ../reporters/catch_reporter_compact.hpp #define TWOBLUECUBES_CATCH_REPORTER_COMPACT_HPP_INCLUDED namespace Catch { struct CompactReporter : StreamingReporterBase { CompactReporter( ReporterConfig const& _config ) : StreamingReporterBase( _config ) {} virtual ~CompactReporter(); static std::string getDescription() { return "Reports test results on a single line, suitable for IDEs"; } virtual ReporterPreferences getPreferences() const { ReporterPreferences prefs; prefs.shouldRedirectStdOut = false; return prefs; } virtual void noMatchingTestCases( std::string const& spec ) { stream << "No test cases matched '" << spec << "'" << std::endl; } virtual void assertionStarting( AssertionInfo const& ) { } virtual bool assertionEnded( AssertionStats const& _assertionStats ) { AssertionResult const& result = _assertionStats.assertionResult; bool printInfoMessages = true; // Drop out if result was successful and we're not printing those if( !m_config->includeSuccessfulResults() && result.isOk() ) { if( result.getResultType() != ResultWas::Warning ) return false; printInfoMessages = false; } AssertionPrinter printer( stream, _assertionStats, printInfoMessages ); printer.print(); stream << std::endl; return true; } virtual void testRunEnded( TestRunStats const& _testRunStats ) { printTotals( _testRunStats.totals ); stream << "\n" << std::endl; StreamingReporterBase::testRunEnded( _testRunStats ); } private: class AssertionPrinter { void operator= ( AssertionPrinter const& ); public: AssertionPrinter( std::ostream& _stream, AssertionStats const& _stats, bool _printInfoMessages ) : stream( _stream ) , stats( _stats ) , result( _stats.assertionResult ) , messages( _stats.infoMessages ) , itMessage( _stats.infoMessages.begin() ) , printInfoMessages( _printInfoMessages ) {} void print() { printSourceInfo(); itMessage = messages.begin(); switch( result.getResultType() ) { case ResultWas::Ok: printResultType( Colour::ResultSuccess, passedString() ); printOriginalExpression(); printReconstructedExpression(); if ( ! result.hasExpression() ) printRemainingMessages( Colour::None ); else printRemainingMessages(); break; case ResultWas::ExpressionFailed: if( result.isOk() ) printResultType( Colour::ResultSuccess, failedString() + std::string( " - but was ok" ) ); else printResultType( Colour::Error, failedString() ); printOriginalExpression(); printReconstructedExpression(); printRemainingMessages(); break; case ResultWas::ThrewException: printResultType( Colour::Error, failedString() ); printIssue( "unexpected exception with message:" ); printMessage(); printExpressionWas(); printRemainingMessages(); break; case ResultWas::FatalErrorCondition: printResultType( Colour::Error, failedString() ); printIssue( "fatal error condition with message:" ); printMessage(); printExpressionWas(); printRemainingMessages(); break; case ResultWas::DidntThrowException: printResultType( Colour::Error, failedString() ); printIssue( "expected exception, got none" ); printExpressionWas(); printRemainingMessages(); break; case ResultWas::Info: printResultType( Colour::None, "info" ); printMessage(); printRemainingMessages(); break; case ResultWas::Warning: printResultType( Colour::None, "warning" ); printMessage(); printRemainingMessages(); break; case ResultWas::ExplicitFailure: printResultType( Colour::Error, failedString() ); printIssue( "explicitly" ); printRemainingMessages( Colour::None ); break; // These cases are here to prevent compiler warnings case ResultWas::Unknown: case ResultWas::FailureBit: case ResultWas::Exception: printResultType( Colour::Error, "** internal error **" ); break; } } private: // Colour::LightGrey static Colour::Code dimColour() { return Colour::FileName; } #ifdef CATCH_PLATFORM_MAC static const char* failedString() { return "FAILED"; } static const char* passedString() { return "PASSED"; } #else static const char* failedString() { return "failed"; } static const char* passedString() { return "passed"; } #endif void printSourceInfo() const { Colour colourGuard( Colour::FileName ); stream << result.getSourceInfo() << ":"; } void printResultType( Colour::Code colour, std::string passOrFail ) const { if( !passOrFail.empty() ) { { Colour colourGuard( colour ); stream << " " << passOrFail; } stream << ":"; } } void printIssue( std::string issue ) const { stream << " " << issue; } void printExpressionWas() { if( result.hasExpression() ) { stream << ";"; { Colour colour( dimColour() ); stream << " expression was:"; } printOriginalExpression(); } } void printOriginalExpression() const { if( result.hasExpression() ) { stream << " " << result.getExpression(); } } void printReconstructedExpression() const { if( result.hasExpandedExpression() ) { { Colour colour( dimColour() ); stream << " for: "; } stream << result.getExpandedExpression(); } } void printMessage() { if ( itMessage != messages.end() ) { stream << " '" << itMessage->message << "'"; ++itMessage; } } void printRemainingMessages( Colour::Code colour = dimColour() ) { if ( itMessage == messages.end() ) return; // using messages.end() directly yields compilation error: std::vector::const_iterator itEnd = messages.end(); const std::size_t N = static_cast( std::distance( itMessage, itEnd ) ); { Colour colourGuard( colour ); stream << " with " << pluralise( N, "message" ) << ":"; } for(; itMessage != itEnd; ) { // If this assertion is a warning ignore any INFO messages if( printInfoMessages || itMessage->type != ResultWas::Info ) { stream << " '" << itMessage->message << "'"; if ( ++itMessage != itEnd ) { Colour colourGuard( dimColour() ); stream << " and"; } } } } private: std::ostream& stream; AssertionStats const& stats; AssertionResult const& result; std::vector messages; std::vector::const_iterator itMessage; bool printInfoMessages; }; // Colour, message variants: // - white: No tests ran. // - red: Failed [both/all] N test cases, failed [both/all] M assertions. // - white: Passed [both/all] N test cases (no assertions). // - red: Failed N tests cases, failed M assertions. // - green: Passed [both/all] N tests cases with M assertions. std::string bothOrAll( std::size_t count ) const { return count == 1 ? "" : count == 2 ? "both " : "all " ; } void printTotals( const Totals& totals ) const { if( totals.testCases.total() == 0 ) { stream << "No tests ran."; } else if( totals.testCases.failed == totals.testCases.total() ) { Colour colour( Colour::ResultError ); const std::string qualify_assertions_failed = totals.assertions.failed == totals.assertions.total() ? bothOrAll( totals.assertions.failed ) : ""; stream << "Failed " << bothOrAll( totals.testCases.failed ) << pluralise( totals.testCases.failed, "test case" ) << ", " "failed " << qualify_assertions_failed << pluralise( totals.assertions.failed, "assertion" ) << "."; } else if( totals.assertions.total() == 0 ) { stream << "Passed " << bothOrAll( totals.testCases.total() ) << pluralise( totals.testCases.total(), "test case" ) << " (no assertions)."; } else if( totals.assertions.failed ) { Colour colour( Colour::ResultError ); stream << "Failed " << pluralise( totals.testCases.failed, "test case" ) << ", " "failed " << pluralise( totals.assertions.failed, "assertion" ) << "."; } else { Colour colour( Colour::ResultSuccess ); stream << "Passed " << bothOrAll( totals.testCases.passed ) << pluralise( totals.testCases.passed, "test case" ) << " with " << pluralise( totals.assertions.passed, "assertion" ) << "."; } } }; INTERNAL_CATCH_REGISTER_REPORTER( "compact", CompactReporter ) } // end namespace Catch namespace Catch { NonCopyable::~NonCopyable() {} IShared::~IShared() {} StreamBufBase::~StreamBufBase() CATCH_NOEXCEPT {} IContext::~IContext() {} IResultCapture::~IResultCapture() {} ITestCase::~ITestCase() {} ITestCaseRegistry::~ITestCaseRegistry() {} IRegistryHub::~IRegistryHub() {} IMutableRegistryHub::~IMutableRegistryHub() {} IExceptionTranslator::~IExceptionTranslator() {} IExceptionTranslatorRegistry::~IExceptionTranslatorRegistry() {} IReporter::~IReporter() {} IReporterFactory::~IReporterFactory() {} IReporterRegistry::~IReporterRegistry() {} IStreamingReporter::~IStreamingReporter() {} AssertionStats::~AssertionStats() {} SectionStats::~SectionStats() {} TestCaseStats::~TestCaseStats() {} TestGroupStats::~TestGroupStats() {} TestRunStats::~TestRunStats() {} CumulativeReporterBase::SectionNode::~SectionNode() {} CumulativeReporterBase::~CumulativeReporterBase() {} StreamingReporterBase::~StreamingReporterBase() {} ConsoleReporter::~ConsoleReporter() {} CompactReporter::~CompactReporter() {} IRunner::~IRunner() {} IMutableContext::~IMutableContext() {} IConfig::~IConfig() {} XmlReporter::~XmlReporter() {} JunitReporter::~JunitReporter() {} TestRegistry::~TestRegistry() {} FreeFunctionTestCase::~FreeFunctionTestCase() {} IGeneratorInfo::~IGeneratorInfo() {} IGeneratorsForTest::~IGeneratorsForTest() {} TestSpec::Pattern::~Pattern() {} TestSpec::NamePattern::~NamePattern() {} TestSpec::TagPattern::~TagPattern() {} TestSpec::ExcludedPattern::~ExcludedPattern() {} Matchers::Impl::StdString::Equals::~Equals() {} Matchers::Impl::StdString::Contains::~Contains() {} Matchers::Impl::StdString::StartsWith::~StartsWith() {} Matchers::Impl::StdString::EndsWith::~EndsWith() {} void Config::dummy() {} } #ifdef __clang__ #pragma clang diagnostic pop #endif #endif #ifdef CATCH_CONFIG_MAIN // #included from: internal/catch_default_main.hpp #define TWOBLUECUBES_CATCH_DEFAULT_MAIN_HPP_INCLUDED #ifndef __OBJC__ // Standard C/C++ main entry point int main (int argc, char * const argv[]) { return Catch::Session().run( argc, argv ); } #else // __OBJC__ // Objective-C entry point int main (int argc, char * const argv[]) { #if !CATCH_ARC_ENABLED NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; #endif Catch::registerTestMethods(); int result = Catch::Session().run( argc, (char* const*)argv ); #if !CATCH_ARC_ENABLED [pool drain]; #endif return result; } #endif // __OBJC__ #endif #ifdef CLARA_CONFIG_MAIN_NOT_DEFINED # undef CLARA_CONFIG_MAIN #endif ////// // If this config identifier is defined then all CATCH macros are prefixed with CATCH_ #ifdef CATCH_CONFIG_PREFIX_ALL #define CATCH_REQUIRE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal, "CATCH_REQUIRE" ) #define CATCH_REQUIRE_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal | Catch::ResultDisposition::FalseTest, "CATCH_REQUIRE_FALSE" ) #define CATCH_REQUIRE_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::Normal, "CATCH_REQUIRE_THROWS" ) #define CATCH_REQUIRE_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::Normal, "CATCH_REQUIRE_THROWS_AS" ) #define CATCH_REQUIRE_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::Normal, "CATCH_REQUIRE_NOTHROW" ) #define CATCH_CHECK( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK" ) #define CATCH_CHECK_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::FalseTest, "CATCH_CHECK_FALSE" ) #define CATCH_CHECKED_IF( expr ) INTERNAL_CATCH_IF( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECKED_IF" ) #define CATCH_CHECKED_ELSE( expr ) INTERNAL_CATCH_ELSE( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECKED_ELSE" ) #define CATCH_CHECK_NOFAIL( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, "CATCH_CHECK_NOFAIL" ) #define CATCH_CHECK_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_THROWS" ) #define CATCH_CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_THROWS_AS" ) #define CATCH_CHECK_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_NOTHROW" ) #define CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::ContinueOnFailure, "CATCH_CHECK_THAT" ) #define CATCH_REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::Normal, "CATCH_REQUIRE_THAT" ) #define CATCH_INFO( msg ) INTERNAL_CATCH_INFO( msg, "CATCH_INFO" ) #define CATCH_WARN( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, "CATCH_WARN", msg ) #define CATCH_SCOPED_INFO( msg ) INTERNAL_CATCH_INFO( msg, "CATCH_INFO" ) #define CATCH_CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CATCH_CAPTURE" ) #define CATCH_SCOPED_CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CATCH_CAPTURE" ) #ifdef CATCH_CONFIG_VARIADIC_MACROS #define CATCH_TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE( __VA_ARGS__ ) #define CATCH_TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, __VA_ARGS__ ) #define CATCH_METHOD_AS_TEST_CASE( method, ... ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, __VA_ARGS__ ) #define CATCH_SECTION( ... ) INTERNAL_CATCH_SECTION( __VA_ARGS__ ) #define CATCH_FAIL( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "CATCH_FAIL", __VA_ARGS__ ) #define CATCH_SUCCEED( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "CATCH_SUCCEED", __VA_ARGS__ ) #else #define CATCH_TEST_CASE( name, description ) INTERNAL_CATCH_TESTCASE( name, description ) #define CATCH_TEST_CASE_METHOD( className, name, description ) INTERNAL_CATCH_TEST_CASE_METHOD( className, name, description ) #define CATCH_METHOD_AS_TEST_CASE( method, name, description ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, name, description ) #define CATCH_SECTION( name, description ) INTERNAL_CATCH_SECTION( name, description ) #define CATCH_FAIL( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "CATCH_FAIL", msg ) #define CATCH_SUCCEED( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "CATCH_SUCCEED", msg ) #endif #define CATCH_ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE( "", "" ) #define CATCH_REGISTER_REPORTER( name, reporterType ) INTERNAL_CATCH_REGISTER_REPORTER( name, reporterType ) #define CATCH_REGISTER_LEGACY_REPORTER( name, reporterType ) INTERNAL_CATCH_REGISTER_LEGACY_REPORTER( name, reporterType ) #define CATCH_GENERATE( expr) INTERNAL_CATCH_GENERATE( expr ) // "BDD-style" convenience wrappers #ifdef CATCH_CONFIG_VARIADIC_MACROS #define CATCH_SCENARIO( ... ) CATCH_TEST_CASE( "Scenario: " __VA_ARGS__ ) #define CATCH_SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " __VA_ARGS__ ) #else #define CATCH_SCENARIO( name, tags ) CATCH_TEST_CASE( "Scenario: " name, tags ) #define CATCH_SCENARIO_METHOD( className, name, tags ) INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " name, tags ) #endif #define CATCH_GIVEN( desc ) CATCH_SECTION( "Given: " desc, "" ) #define CATCH_WHEN( desc ) CATCH_SECTION( " When: " desc, "" ) #define CATCH_AND_WHEN( desc ) CATCH_SECTION( " And: " desc, "" ) #define CATCH_THEN( desc ) CATCH_SECTION( " Then: " desc, "" ) #define CATCH_AND_THEN( desc ) CATCH_SECTION( " And: " desc, "" ) // If CATCH_CONFIG_PREFIX_ALL is not defined then the CATCH_ prefix is not required #else #define REQUIRE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal, "REQUIRE" ) #define REQUIRE_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::Normal | Catch::ResultDisposition::FalseTest, "REQUIRE_FALSE" ) #define REQUIRE_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::Normal, "REQUIRE_THROWS" ) #define REQUIRE_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::Normal, "REQUIRE_THROWS_AS" ) #define REQUIRE_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::Normal, "REQUIRE_NOTHROW" ) #define CHECK( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECK" ) #define CHECK_FALSE( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::FalseTest, "CHECK_FALSE" ) #define CHECKED_IF( expr ) INTERNAL_CATCH_IF( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECKED_IF" ) #define CHECKED_ELSE( expr ) INTERNAL_CATCH_ELSE( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECKED_ELSE" ) #define CHECK_NOFAIL( expr ) INTERNAL_CATCH_TEST( expr, Catch::ResultDisposition::ContinueOnFailure | Catch::ResultDisposition::SuppressFail, "CHECK_NOFAIL" ) #define CHECK_THROWS( expr ) INTERNAL_CATCH_THROWS( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECK_THROWS" ) #define CHECK_THROWS_AS( expr, exceptionType ) INTERNAL_CATCH_THROWS_AS( expr, exceptionType, Catch::ResultDisposition::ContinueOnFailure, "CHECK_THROWS_AS" ) #define CHECK_NOTHROW( expr ) INTERNAL_CATCH_NO_THROW( expr, Catch::ResultDisposition::ContinueOnFailure, "CHECK_NOTHROW" ) #define CHECK_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::ContinueOnFailure, "CHECK_THAT" ) #define REQUIRE_THAT( arg, matcher ) INTERNAL_CHECK_THAT( arg, matcher, Catch::ResultDisposition::Normal, "REQUIRE_THAT" ) #define INFO( msg ) INTERNAL_CATCH_INFO( msg, "INFO" ) #define WARN( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Warning, Catch::ResultDisposition::ContinueOnFailure, "WARN", msg ) #define SCOPED_INFO( msg ) INTERNAL_CATCH_INFO( msg, "INFO" ) #define CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CAPTURE" ) #define SCOPED_CAPTURE( msg ) INTERNAL_CATCH_INFO( #msg " := " << msg, "CAPTURE" ) #ifdef CATCH_CONFIG_VARIADIC_MACROS #define TEST_CASE( ... ) INTERNAL_CATCH_TESTCASE( __VA_ARGS__ ) #define TEST_CASE_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, __VA_ARGS__ ) #define METHOD_AS_TEST_CASE( method, ... ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, __VA_ARGS__ ) #define SECTION( ... ) INTERNAL_CATCH_SECTION( __VA_ARGS__ ) #define FAIL( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "FAIL", __VA_ARGS__ ) #define SUCCEED( ... ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "SUCCEED", __VA_ARGS__ ) #else #define TEST_CASE( name, description ) INTERNAL_CATCH_TESTCASE( name, description ) #define TEST_CASE_METHOD( className, name, description ) INTERNAL_CATCH_TEST_CASE_METHOD( className, name, description ) #define METHOD_AS_TEST_CASE( method, name, description ) INTERNAL_CATCH_METHOD_AS_TEST_CASE( method, name, description ) #define SECTION( name, description ) INTERNAL_CATCH_SECTION( name, description ) #define FAIL( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::ExplicitFailure, Catch::ResultDisposition::Normal, "FAIL", msg ) #define SUCCEED( msg ) INTERNAL_CATCH_MSG( Catch::ResultWas::Ok, Catch::ResultDisposition::ContinueOnFailure, "SUCCEED", msg ) #endif #define ANON_TEST_CASE() INTERNAL_CATCH_TESTCASE( "", "" ) #define REGISTER_REPORTER( name, reporterType ) INTERNAL_CATCH_REGISTER_REPORTER( name, reporterType ) #define REGISTER_LEGACY_REPORTER( name, reporterType ) INTERNAL_CATCH_REGISTER_LEGACY_REPORTER( name, reporterType ) #define GENERATE( expr) INTERNAL_CATCH_GENERATE( expr ) #endif #define CATCH_TRANSLATE_EXCEPTION( signature ) INTERNAL_CATCH_TRANSLATE_EXCEPTION( signature ) // "BDD-style" convenience wrappers #ifdef CATCH_CONFIG_VARIADIC_MACROS #define SCENARIO( ... ) TEST_CASE( "Scenario: " __VA_ARGS__ ) #define SCENARIO_METHOD( className, ... ) INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " __VA_ARGS__ ) #else #define SCENARIO( name, tags ) TEST_CASE( "Scenario: " name, tags ) #define SCENARIO_METHOD( className, name, tags ) INTERNAL_CATCH_TEST_CASE_METHOD( className, "Scenario: " name, tags ) #endif #define GIVEN( desc ) SECTION( " Given: " desc, "" ) #define WHEN( desc ) SECTION( " When: " desc, "" ) #define AND_WHEN( desc ) SECTION( "And when: " desc, "" ) #define THEN( desc ) SECTION( " Then: " desc, "" ) #define AND_THEN( desc ) SECTION( " And: " desc, "" ) using Catch::Detail::Approx; // #included from: internal/catch_reenable_warnings.h #define TWOBLUECUBES_CATCH_REENABLE_WARNINGS_H_INCLUDED #ifdef __clang__ # ifdef __ICC // icpc defines the __clang__ macro # pragma warning(pop) # else # pragma clang diagnostic pop # endif #elif defined __GNUC__ # pragma GCC diagnostic pop #endif #endif // TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED mapnik-vector-tile-1.6.1/test/data/000077500000000000000000000000001324304754200171255ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/test/data/0.0.0.vector-b.mvt000066400000000000000000000056051324304754200220360ustar00rootroot00000000000000x water( osm_id" " B9YP] W@?@3ERc ?O/E eKUWU;IAc[ a_Go5G!a JG!i:)GAKMQu-HLRq[AkR%gAg ]q+>O8d?SVA6)\wC}=i}"1&1UBOF)^I?&QdJ /L@FC$NG#Lqu S=g(B,RRYO(!WQGqmRi,cW$3JZY)E\mV-U_ ?! l;R'B=h MBY7? AV% /+P;TKD*[M`D R R[SMBCU9@ MGc CH7i=M>4_s[Q S1?IH?DO0O. F?D)P@E)ZF B\O2BeaUJ=0u@4YXuFVG^K]Ac? NBC %HWHs \j@ LP(OPGD!ZB}J$jB!M`MVs8Nx];DnNE8q!>XVt@7^e7=F[W I(YMZVf!L:@8llDf'@D$tJv/>n ^JFAD+imk)i KNmm3W Oc&tg@/.MI91EOR@|&d\?Q"3RVV?dUW;T " NCNN *j# HB; &DNE 2FM TF: *Q2|,c A #"\^<3s 2P FC@+?V) "O>`fr  "GX "B"JN0K ;"P O ,Z* C *c FN" D ",'lL1 ,rT-C }6   F ?V)&TplX2jTX(N rR@QPx)hT99jWlm@?8 Fd;A<3EC?w _k.i"?e=E1YIXo Gb5 |d$MFC :@d\dV4J jMO0ACSKK)D'EEL?! YH1C8YT4_hTt4 ,D0f]A_-eJ!W E|%H0f N_ (U. ZX:@)4JnH&GIA5e Au (n T6Q  @D B a %Q^ON8?,FD$ rBX$G(NJ"F@ 8P_DMXK:SNnROk.X}8 NGBJs`E{?>HVB"CJ/dCm=%Q_ q%?/kQGworgGyM)5_A.7C!QAU OWAQuS I"0iM8@uzo.lOCA S? eSq5fQGIH-(ONF8n7[Xp1 C:RR<Dv BbS*G\XN5J0Q? ?0SFHn\B @7HE ^V2 THhEy=L\;\1^|e^!R|C(K^R;PEOtUFL%3\'@^oUK'A;ZE\U YE=I+AwKEC2 RP  f"1VUECU 2$jBo^AVA? BH,TLn,6"s?I  r 2bHS WENGY2 O'OH'J?(p RJ^ J? N1M mP PB JFVW`P A 6aLWT :.H@7BX_4YI  "n|{O *V6*g#u 2:F+l Ij3GQ  *P&PE%?/E bZ'w "H LRCS y"R sq $A"B .N}2 #"ALX0 hHJGt  1Ja*N_ &$;  LO2 {D-F nB; 'A@&U  Q:  jN$\BRB]*YE&LcZ#gU  Bf:GTFjqm5g" 2@?(A?D%" +@??" ?" %@?" -@ ?? " 3* @;@?@3" %!"@mapnik-vector-tile-1.6.1/test/data/0.0.0.vector.mvt000066400000000000000000000073441324304754200216210ustar00rootroot00000000000000mXypev=W3=w4}tsift-YmٖmIqXYͮ1BvB`Re "drI*IA\ )uz=^=kFf%.>JG={e~ ߃rd?^LiUTeBWݓ4P:K`O H^1Du86g4;1DG#8 X c)h?q/͗#-客v/e! CE~Þ_GS/Fm iD(E~Fi i?5"~ SL2a9\-5eA|rʠN1UW7Nj(;E@!mXC *qM<.[Z+gM*30C/zïΙ*EOϊS;!,W0-<&PLzY^: w"\\KD͋qT%')#EDu$6T]Z[k=x '-)s!,(r*+ʿ (҄`W礢t=C{%\l"#c<{:tT=Q)}N6a⒍N=EFG$&E*PcQ+|Mkbuƪ@M[~{M9ߎ5ﻬ":"?r vM ;WÏ@H(5ϑZ KVh"QvQ)E!D7rc)Nd>of o&( %1Ք[XJDBgrdbZ.J'3E93Z3y?DIyO4_Sf,eŠB0ˏH\nE(ߍi&@iFjܞe a nkoR5C?\K2x O oM">i=fpiAb̶6݆oM ՚cVWm" X]^H-lp i!"} h WY[b}u)qw̐ѧp)h~o!aX41jx˒ʨlP'51Pxd`feE{1 t(l6i~8ԝ \밌 J]BGzDKWQ8vCHL<{B'PD#!q=LGJyB&YF¥Յp9hk+Iꊐ>l<ĘmKPP|ѩuVBXAb#!s@hҌَUpr:G!ʓB=d'jYz52QwE~lEZ7<%YltxT(r/E\>2t!T]WpZ'bfY^Gmp^MI+_iƵ|? YwP煜0i}dw]72iP|uė9;SpV9oo봣B;m؆JV2e4T涜o[˖Kg@-iEa`Rae\M5&]TBhofʴƨ9oS_5]| { 6{ByىMWT9W4tqO0NFoB}-}9N4$x"t57q\sFbecݨɴnOݟ C&')`ƿBDHnDa AiU]pD9 ɐc`7LGKX'ZQ1V8yGŴM wԝP*Pݼ6C>,c(1Dް(|ڛ$ԺKRTL k3w͂ZvF?w?c>-lↅM܅W]6Fmapnik-vector-tile-1.6.1/test/data/256x256.png000066400000000000000000000016231324304754200205760ustar00rootroot00000000000000PNG  IHDR\rfZIDATx1 nsq lgT:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:yN:y Ir`IENDB`mapnik-vector-tile-1.6.1/test/data/NZ_Coastline_NZMG.dbf000066400000000000000000000002171324304754200227650ustar00rootroot00000000000000_ascalerankN featureclaC 0Coastline 0Coastline mapnik-vector-tile-1.6.1/test/data/NZ_Coastline_NZMG.prj000066400000000000000000000006101324304754200230220ustar00rootroot00000000000000PROJCS["NZGD49_New_Zealand_Map_Grid",GEOGCS["GCS_New_Zealand_1949",DATUM["D_New_Zealand_1949",SPHEROID["International_1924",6378388,297]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["New_Zealand_Map_Grid"],PARAMETER["latitude_of_origin",-41],PARAMETER["Longitude_Of_Origin",173],PARAMETER["false_easting",2510000],PARAMETER["false_northing",6023150],UNIT["Meter",1]]mapnik-vector-tile-1.6.1/test/data/NZ_Coastline_NZMG.qpj000066400000000000000000000012251324304754200230240ustar00rootroot00000000000000PROJCS["NZGD49 / New Zealand Map Grid",GEOGCS["NZGD49",DATUM["New_Zealand_Geodetic_Datum_1949",SPHEROID["International 1924",6378388,297,AUTHORITY["EPSG","7022"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUTHORITY["EPSG","6272"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4272"]],PROJECTION["New_Zealand_Map_Grid"],PARAMETER["latitude_of_origin",-41],PARAMETER["central_meridian",173],PARAMETER["false_easting",2510000],PARAMETER["false_northing",6023150],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["Easting",EAST],AXIS["Northing",NORTH],AUTHORITY["EPSG","27200"]] mapnik-vector-tile-1.6.1/test/data/NZ_Coastline_NZMG.shp000066400000000000000000000023641324304754200230310ustar00rootroot00000000000000' zW;+>ABYTA43KFAqܿYAW;+>ABYTAZ9CA(g0WAlfAAB[UA{sAADCVA|oAAHګ8 TVAdq >BA0ʔVA{zBA՘cyVA)ݑBAz+VAUvLCA(g0WA5')CAVfWAFINCAuX)VAzYCAiOWAZ9CA3VA CAVA˶ACAsVAyvICA`$VAB<BA^~KoUA_\K2CAnlEUATPιBA rb/UA94BA6UA :NBA[5QUAԨAA^tTAFIAAE8p-TAdRSnAA+ TAtP^w@ABYTA5Y@A \TAYb>AW".TAW;+>AuTARPf'?A*jR+UA[H@AۭQUAHyh@A4vUAlfAAB[UA83BA|O άVA43KFAqܿYA${eQEAܱWWAojEA/WAEA?k9R$VABqDA|O άVAh.BwDA_~՛VAl4DA@-VAKk1IDAl2WA.cDAf`nWA]vΰCAqD&WA.%#VCAeWA^1DA`kZWACQDA[:XAiLDAXA^xrDAl(XA,sL DA}XAi,OCAwȸR? YAk1CAۢjYA3BARhYAii))CAqܿYAeVCA.IgYA )DAxfYA ڻBDAYA0~DAV XAι_DA&UXA)VDEAY8 AXA5#G%EAΝjXA!EAOK9EXAELu0 FA 9XAֻFAWj`XA43KFA)%`QXAFAWA>`lFA?,;ߴWAikEAJdWA SzEAwr`YWA)DEA岊kWA{eQEAܱWWAmapnik-vector-tile-1.6.1/test/data/NZ_Coastline_NZMG.shx000066400000000000000000000001641324304754200230350ustar00rootroot00000000000000' :W;+>ABYTA43KFAqܿYA2>8mapnik-vector-tile-1.6.1/test/data/image.mvt000066400000000000000000004352621324304754200207530ustar00rootroot00000000000000 layer*JFIFC     C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?ntiL*c.& WA{x{&ҭ26gJ٘ø0xǮjm F-] \Ϊ3dL6sGoM)I픘2('t|^k:96 T}pc穭x0_|?5runi*€l𬜬SkdR'zuxl:J6yH$(EPyoZ\Ao 2F~ z`k>E}GP-CXAs?!f*VNXxືɴyF6jɻ*τŴ%鿔Z(VEMǎqҸXm5+?MϗWFĖbv^G>15tyFM8ke{qj$U )޲r3_wխ9'Ovz_Sȁ i9l)n?i~0*+:sI!VU +r6qykz.T[)p0&9?5zO/W<5 .{كƪ`} $8KOß7-E %IO-f] r>V+{-_Z֥omF&~/mShޣ[ KY "O ||>HU;s{CYXkO#EvM? = U9fwDJS\_͵$fe9n'qCD:H0w@)pX MR>񏄴 6yateyll\(-R?,b5߈O}{XXΪ!gI'NlxOW g߈-~i0o)618 O5^iڗË|s;Yi-0;9oüz|2M ַYGI?.3Ȯ~'xE4M/MԚm.!-N(@WVB35筧|)[ {1y&kr.8*23]6|=auj1{̂ G᳁Z6z/|LFsml<; '(,{fL%R(N8¦ 'w~E׼!7-m>)Y1ӾEo 75=F>bF'YIsQ}5|Q^ $dl2v*k̂'t?M%m Kih|V0{z/K}7^l̲4F@dަ,꺌IkR/2|KmyI?Zo>)Ⱦ7[n-wms= Frǎq_ b)xX ɢ6ez|)gxB,o0$PY`Ctf mqR@?<׎h'5O>1xDMْAj\vt\GehbT\։3|<е Z 4*hXI?w#sXֳ>/JuYAH)^ ߱O9?i [xx>>l"(Nӂ=3^[Of:wNl^YY\Q?Z+׎6Q8evW՝jM6wd~khdZgmv'qcsQi_aԭ~q|_0ȉ4x׭:rk29<5 ij>Vi'ܴѮ;⟘gW>1ׂTR[yf#%y 6w B xc#*qƱZ56ٮܸ«m#@>ت.֘4ΑyvֱK,5i r]Fς 'F-<9說t|>x(=J54An~k4x#ᵽƟM]]rHzd!qGlADv20 mBͼ@P!+qAeUjiE.+²cuŶf4D #cUK-:t27)+a&s/ C{EEcz]k+ie-ܷp%wnǮ}x)lkNJDM+Wt4dbo+3JP*Hgg_/Ïk1̊l^ #5#NS]}!<8j x!~ou3,Qh?-{u঴:pӅ*Kgݶ|i^;!thOco (=spşC]xsNxWVmR0G+u^ ǚm QsAᇱW5O_ ~"#ԭa@'YV!Lyt9;`)Tz3nUo ڞ ְԐ s_?y'%eо뫫j!5حD:uRLʣ@?s&4UO_ %@1Yn*ͼKn`69ϱ|O݆kk.-N8<GtӧއSJ>J;nԼEi%ܲlpe_#9#<3_g4v}wo.l+ G[ ?1Ե+V>e"Z#]@1d\@a-e&]{mˋk(S!W 3Xt\Է7C ϩ7w[Ԍv|'KöS,x3pF0>c_m2r웙ScdBg$^"g|Uv΃q /׆=T^O^_Qx@|/ӼEn l7QYFsM<8e~񹋠k+Fm~e F2.Xp)nagv\~&-KkiF; H]^+MŨ&ǜ_?w 񯈼yzAՑOH|1QSYftG7"-;?*tlU}Oc sY\,>:>_,Co&9g+`$R}ݼZo$k%qv ƯR9񞛬ݤl9W2Cpp91fٝsNMiBKI˶N=1^miu_j\tm${L߈<sxd[ZmJv2"[OIX&97ߎJIuZ9S6|}|$fM2QoN4U T;rq@k*;yF<coP}_qK_1V3!/-qz";G m-u3t.($72׵M(K_#W%=8埆>!kJ"=#!;0!|9|I3 {ĉX#$r9 Zk GJyd nŲ:n޺m+ĶwByhbv.>\֩Ǒy :Х쮭Thz)Vďd)8'ߟʶIo/$Ju/͏;ejiN8.umV$(H 23 O\O֫k?M{ŧ_Ik{;= mf*؝=Mfj1kI)c'Y u\-8&5t-PL0Xcsڻ_*ԭb =|qZ)F;?OڴZzS!7ƯvγJW<y헒X\M?/l~uͯEi1jOaB%q+U ዝ ":*%ǡ)ז]LI4σ2Gqi .v}rږ^٦o!ufK^џoj6k٬v%F^F`LѼZ[5/mKXI/*sƍQe5,X\;<|8&s렯`u{ b`wj |pvp F1Q/|1[)  id{V\#OX|U5#YBDr>ޘN\hͦk)erK.mʱ%T%e>[ok+Kks$ueħt?lj4k!}?>z;.TnhH4V? .[{gxI,Dݷ=;|6 5cY{2^@p7(lm'iR ˉ<O ap$Ooej֞#>3M9Boe\ $_3GR~(\O5l&XM(1ީEoTlYc JֻafwqM|bu1M: i>Iot2y=|ѯ5E-Izedz*Oz<>']@. Hͷj0s+<6C^X%19$ Ʒm.hиaf>W?OIxYQh&*pG#7]mx7Sg5ޛ'_s⯀W; +\Z7O%0yPqd|D7^O&k+%1ˡ8=S⇈5..kYgoaGk{vm -H?,S[,$%YSyl^1[+lZh+,4ʞpVPOJ!OxI-8r7OqMs|G^߈nIV8Zڪ3(ܸއao}io !& A|r{O~%3]Z|䅎 1Uzҹ?\jVKcqD?FJ|뚽qh$Z=ѺPn13~4YE\I\xPY5Foe)fՎ܂q$³\˦-͒eprg#x~ x'Huk}3Ӌn:B0P@2I W7/|%wl7? YxrvXm+;R] Hּ}="bd8.c ágh3GO\̱`mۻ@>mah4[3-Ν=+ǚPqW sƝvVc*gҍ YXou8$ZOX|KnGZS;Oǽεjy>5:]9Q,$97QL[/ ik[mpW:uoW׎4o~ii_eGtljzcF_6 9<.=,ΝESGƍC]j.>ڞil A3*I۸| 5?[B*Rg!S 4`:ɮL"W m7مJ%Jy'*=+i:ׄt8t [$//b9eP*`AθZ<<b9*~^Yk$q3]6qJH~ݏ9w 4Z֑jKi3Fo.^]߈Pk(g˙o5ho<Ǵ*X!/`+|hG Hec‰B;O1# f`:qQfk:uG}*ĽdEre5>)6^8A%Z8<`4]#3ӡ_ %KsZe=;WL\zu cG5 Uo# `oi1݈=JN=y-KjZk#]Z8 Þ\v֧'>],o<|ͳh#=QŮ][I3{I!Bv[&!6qjZ\-Πom 6s&p^ŮG-qxL7k$;p\p}^ ٛ◇x࿏!Kcji.#=v;!֬;-QjI H-:-:V}&5 pgv ;{ su&ڱu9eWtWī kV6LZC:jH7yJ"~aGibo,ώvڽ-?mKt]=wK`V#,odY9]1o—P$˟S#TBs%7.S >.Ym!GA>73OıA$[ϕ8d '޼OuttȣVζfǵmx[Wc_Q}a$ru>ƦK޺{f q᎗ksnR:UO<m=+v$ )=ۥaԺeR+o02ĪF9bD}ݗ ~-F8o5c%ഊ=B^*敢jZׅn ԣC:*7f3#$}YHIFG2)Hۃ`=7w h)nj <:IjG+N. m.y3FECrR3{A,0sowT4z x^ik:MWII #(98].G X!T>+)KݳGkt9C?a^{mSௌ4]c*^&?ʢq7> htĄI'sDH<_|0XX#Oo*f`Uq~:~ ܭşoCgbUi[cqǧSogy~~i#ǒݩoP~?a-sLOy2DsAſJMc@W!m ]/Ej[O{b5%}N"k#T>>SJ^&%Di53.qp;2WQiwվ/CF☽C8^:)_F$3][GitF0dhr/NAލNY|3զi6~tҬS" VLCxm'KX[mSZw 񥶕=Ԟdy.txSPDb,7>|)~4p~_lY;\s@O$ޑeoef$F[$mQ$Θ_'j\..q$+TF9ڽ |e74[դw-.}hH Rw&c"O,>$x/!o'dV]*tZ~x/4A =%vpJJ~^ҧѩOF2_sU]1FoZ>CӵC⇃5Im#S1q1ϭPԴ 7NnnLNyT%`tX4ɉV]5/RR>$|,cV{~[^W[DChogo<{c¼ 'Mo-8. tēW5 e5{HW둞xsᮭƓľp-`v?+洲3WۥUnEӟ-#=Mhs浮+PA$vep:Vi&aӢaIsd>|C|AycYCmu ȉD#'sZj-^jnd~;kx+˥h{4\ӐZN9F8!#>O5?~ t5n19+"2:fj7`^ #ٶhԁxઞq։jjᮕ|H1kOhWR]8I;?)rw,~.[E&΋V7sivȄ$ D>x ͽti"Z;Fnob^4t[_jS2˥fy,lF/\ri]nzl*j]Dzt]R.KwD%n$bAN +{s-uKCuxrenA\`msV|_n5_~=ҵKHGm#oRrErV=-Ε k̀Urw<]7?ܘsl;S,tiEߎ{qGfĩ ?V2vux''l5h`}3~RJ.b{_89 zڬ쩾9T|i$f-cz}x_ !+XIe̦9c0)׫>M_^ Ej1aeh9GB 5_z>wܤX^'᦯&F XA¥mIeq{gx?xQk˫لcA`>Sje"1v5,W-t2m#]1,\ȀG&b2x_ n/,hm5-iVWi,Rv$cr> u";35ތ~'ukWWlZ& )L *n T-׈5+m{CÖWF0_g=]-43;/6:DM0@nflrCzgڽ?[cD|;񦋧3{ezn9zb/o9'c=2Wp9jioM^}@mi[ܓ\=<$${;}kNj :wd}Ű wV'Ǡ:W_WFa`mwU$Wh~M%._-$*IME%`v"hR<~rϹ$~Ͽq 5 XB:\$E>Ny ]ݿmƗ-M5maP,yY|J HZP!)%Pf#0q޽3O/>>xJ# cXn9z2x xudz??<>ko hkdnɺH'1[F{/R)m-S?ƽD|$oRP4xK3MZƹ$B9bGqO/^Y"r.ĶnUܚ;7C ̵m)~_iCܧѕe!o9c ,ί sZGT}kx. 3Gdc^ߍQxnoZ{f{Y pdY@3sJ.m(cIЬG9ϮsA?,bn®q߶ZÂ%bX^;/RsGY:Fh^r.,dsJ$̲֚Z }+ƅkԦKIl&'\;d~=OK;{OH⸝)%UbĐKK+C?Io!bֵ_bD2ķ3sҁ-K϶ytn˝w#үj6^ɞݦ Vp1gjڧͦfԮ왑Fp~^ǽfO@iquX!h˪ˁ eqg~"jFYAPAs[ri-𔚗]kh+-χu9+]78'8kĚ'?pEI7ENPul`{jh, 쥕- ;t/t6[h Onxujm5ƱJ-JpA]]aOlc O΍`RA2s2seX ΙCE,"=~U X'\;?3}3ź&BD(/yوb:i^NH D¾=/md睄s":USlg&mvs af<:?LL7mwKj1tnͽ?* NyKg?-D;|O/$|M[m6XeXI&Au'ҡ7$|yG][yKV2:Wxj{/{{K_,[d៘z1Y񥕖pWviNݽ&WՑ`64.yKnfvLp&=е_U&2I!a++w >q?:K]Vvæ躖uE4_bp)jw>Ehn\"OhK$I_cMΙkPm+ +H=ѭcBe0[ b+\w?>|Zԑ-޴X t$ooVZdڮX, ineTsRҾ\f/xk|3nIlĢx.2?Osr"|Os-HM۳e\a–䓞qXsk7:M^ÒpOubIW<;CilxhSVn9&C,G9JO̫!i^O,|i ZE.B@lۤ`:u ^]Gŝ$X>1?tSy?tgmtcܤ)w3xf`;(XT9_ M$ۓU3bnN׮m:+G,Zg+2jm^1{4w(PX]&6!Waڻ| .eԥlmJ_@gn8.9#ڶtς?ՙQEj~%[eZ#Mhy}j*Wߣ<>U\=΢24)g-l Km$kӼ+y|c[Ð 0YerqAS3ؚϏ A&=L^u#.YrIku?9u]kPA+@sظ <n޺c<&fH9)<}>|A-p0ϣ~/~SuI!?3mR~y;w=ܓGo\J,rzqǹ/[%%_=E }Ab]т1ӵ 1OPtKWgFR4g qV,~br'NI֖֗k[VR76i3ҳem=cDu).`( )ݻgo|U),.mtɹ74F Ԕs~xj_j_Qo%DžuL]*V*w?^i2SZ raXȽz>Zƹrź^BۃE$]A~MbrmLI.C?”4*8s'ֺx7t_Am .JX\"K'RB`a\2:|^t$?S faAL:ѩ^ߩy':%;}6َsҽVφ Ny O4y,|ܒ@5亾j:gũd]}{O56#F:V.mX=_\Fwlm[|9\*V*Mκ^2/ S—r:ω3zư$ AKt~ ~^$𥥷fL2'sU_= <+F_ Wpk,'Ү˒ՈN^_L"o=8'ݖU2=sx`}I%_)>_oVqi{(c 6&c? |6׭ >K+Fɍۦ=kO?T?> r k⻷EH7$l9'd|>,k%ƭxMklGi1*O G9+OB?mt@<.&Ѥ>4.{ M$i6%;;T+44y--nd!Jq+=q%[H2\AD GOP8/_FxZѼ7XG,n\j VؤpyŴC.mf`Z\ō|UG4m$n/-˜d GT?u/ x2cƋrL.Iڄq+x~3ƛβjmیV\ad9uK+ ؝'Fak-mMf5 "né95x\~# i!k8$eR9 qRo>/`oR)[eH81̬ 3'{qhx223#9~=gJ:V}3Sӆ8=WtWM-uIO$VL%n;1#'`xmk/KkM:Eg #-ێa>d:OZ&ajvm2p ?#ZZD#Rŷ UV|ԏ+vP>Ŗv[mwmoc/"XêgN-?t FK8x<$@2jos(5k_+oMxV{[X5v|2ьwĚ//bY;uK2G0:sľG4yu; TǭXܛI+2m=3ɫޖ`TyfA=^Dm5C8%u-[fm#=2[o@O֎@e>̌Io@ R2qc_:r{1zmlb=KYY@)'sKB{?^E_5߶Fm:3$cγfյ w776?r[p 9)lmBM%i5bTr8dz5%: o3Zi9]Ǚ wV 3^ygQ7jTeܗx .*Ki, y$6q4`dF%x>&J_#쫲@J=bl3Jοj-ͺƙrK#?ueҹxq< 2hV,.nEYё62tYe5KPCnϽixdn6v.3Ċ?5/AirmO Mw<ז)m$`T$t]E!\^ݪ=o͞$TM"Sj #Gʉ2> W5/VMC}Fe^~EvXq]Ĩ<>,kr:x_MX_C۫f1޲ OKm⎏]gA^ d"6| '#Z~8x?_.y$A 5FGΌߍ_<:AxAx屷6!i#ij [㗌hB*(Squ%dɍKI60hyfHɖ<1\`S%h|:Eq%`$\%y+׷ӯo{Iq`I2,wǽh~Kี9T+BdVEBA0%XN0 g;]'dZkki2p&;4o-iΡڲ)lb]WUҠfGqa:c#U_|k K i % ʒ:H䌐@)xZ3n$zސ%6II g YMe7#Z|eχ?; tZչu;bG5<abm.ȭ_#<E={4}V JNٷ9uI9ST IP0մ,bfl=gSn-`y;xt P弖\,m.zw=+;O<]}^5d3}?SҲkJSIqtᙦز)bH9ҡ;3aBfTWtdex'v|@Ҽm?<5"#~G4d1]@0;'ֹ fk+4M1.i0wYے9F} Gk)11JrqA;=\uƉϪxWYּ:Fj LeE?4N8&-Zk+\wWi`li=;V&>k.$iOHN𮧿_7l<#(O:r< qoJF!'iǵEKxkTY~ul>瘑aTɷԏkw|*+[J-vfol*(QoiI&i$Y5Ģϗng=ՉX٥b88  V|zizA]&Xn`nwXr8=:f[j#Xrƪv #G=i ug}}"j:.on?wl 3˷hE𝥍HĒ8nȇ8c%X)9sLeeZ >6ȻpzO ]D'g꺔bT]<ȭ NIw?ZZx{þ$1"o$\6emz4}79d6:WNJ|}tְ۲lR*!P:T՗,.oMB|dT/!4_*閦];Pņ:+oa&x2/[K{ȷ\a\`Fz׮_~"xt2fzbBR ʻ;|x.$^@$u%ecCt閿 =j E}*mB[ ȣ79]⿉m3U?~*+nQڦi75&1 6*UNlZ'%HCgϻ`T|֝DMt:"nt;QK{J Qn$. c5GFƦox?A[h.u.A;"0tW UL!kB1'<`MCe[=R﯋B]ą$u ۏ8hGjzJXV)"ABvS; >^$Ӽgck"UEc VU9>Uy8kOzgjww7ŕΗdh 8G,8Q53$nLc:I2chNJ8_eZSw51\FjڇR}W:[nBRCn`B*ڠO~kMPǖ!ݎsһ8݂*[Cq/.%Xn6 y]3=OqjVzaVDz1j׌|K]++"_-E~>}Uτך=6z]VWniD`d}VG &67^v+g`wm63޽gMGV{kJfCrוKWROUYII]\^mV8/=i̥¢K&r{}ڟף{@}!xMTЌnjmY^,ou%d| 6)>oή:a3HO ^;pՁwruOhߍ/۹9뫟>)]:;+[A@Ƚ`rOt+;LxHP$ AlՍ#O6j1i֓[Cmns+Skg{W5]U[^3j5]:Kb;*=6(+ߥi(Y%аB;M"9 #xjT{Vv#,gt=O}4sX iѯ"\=]IE?/:/KN^:|MOir%к▙ak؍l/h >PO*}|fO=^9<)W?=qר~֞!iom!>:"IoSdBo'k@9/IAkTu3Rgӵ'e)Vlݎ9ەS]]GS,Z]T:|bCׂG>[Vڞ^ibϺ0$قcoN:|\l `ԡ/}u(0Wěw4t/Lsj0-٬>qm4 񤈪 2<ק>/wE|̷0w\} w&Pt5u-fwԵӴx3"#.߹gm-@N}XR8.*N¹S5=W;/~:妋B(kQp~f tCb-3:\6,xM.3py>!b-/׵;k,ås>|Gz##|H~7|]otP4;VbnqԞ+fxlE_fS*7g?iJ3=䬷C]XCcWCN`1^g$%}@JL[J.P$V숲8v`F$q㏇t* 3]Y6Jt+7 qRZ K>Ğ7.gii[m:*bnX1 \Z=|ͣ ay  $gҺo .#cnw 2XtPG5xjD4Xxev 75tx(bW$ ;4YV# htd<Y7Bo 2L>7$0%Hn ϠӾTOx7Xc]Avς)ӝ>¡ck k1>UۦG+ FRbK"Ϋ֟i5++LP%Ό0:u>Kooo5j+ Ǵ1bR u#'-^)|)=jf b+dF}3ybחϨ)+kv|DEn|#~~:ĈOӮFB r!˅=ϥLq.\sDJ!YL2>N`= an-F6ZLc9*YOz|s_ѵsiY`Y 1ʞq/4Dyhi#ҚwWdї++/Mowow89JiJq܊c_4Qמ[b-]7u2q#K *&~7ʎkvV A8% 6cӴox>X^ZJ.ഞ"QY_kB-æ{@KKO Kە4-`ohk6CyǮzR%OZ߂1=\Ư=-|a{ŀ\8H7C"AT# <'o]K/^˪YjMp/q(=y XoDӓQdEW6O+uvȧdƚg%_]eoG4_Ld~U BY ir)jQQ90$W3/PK&HM̹ҵ>OaΏ{aixG%?xB~ref̒6ϩ]i0I,!+@2H%$^9xVi-гM*Su|#^'s ;-i:SۗS*Ȼ9{թ_NO}GWYn&`GP#T2$p7o< *&Kl_y3(Q`F@~Io~%MCİ>{];/:S\ ^5f9vlu~qvx Ze|wL\aK$z{Mm櫶;>vP+/ͬKgulrE1U 00y~'N8jG)Ξ|3i5n-%iaC 0ā2>z_?u/Cr fVbIQ׌8UEf tոQ V'Ny:k]uK KM%~$Ͱnup* Ĩ4W5W9anMׄ.&f.)-FөO-Gq% pwQ5%}rt֛_>/?ũ~j|bm&08X)ú @M+ĠHWOOwfejU3c sqx:i~hfn Kcy䐆Gz_dQ𽵧qꛔ"E4V,nیs|Ŀ |.7e2P01#M5D #.L{8zo&c.x]7շ #a==kWX;Xh:mͺ`Ȳ37v23wֆi([D^_i дm[P(.$ }3Б>#4~#ĺv%Cv&ώ?:Y\x3SIn kJ .!ʤ,TӖyEm{CKf/6m&0.qFj;Hq9.\%V·o> &icn-7{9rm.0AFedP?͜_,vUY>AIQzbK/<6%k2DyRz$ඏ{K[)-PK%_qpG#jKokoiC4p[$<~y#G9i6 Qs$n ZFXff sVfy}i Vʿg~·.5H.ov-x+\䋫IBPed?N݂#Sfm4-/1-߄,I|0zV#QW)<8׋Iͼ8'=ӓXbYFEMrB_ǦR%euߗӨ⧊Z/>95QH䙏e`XVgEhMFz{Bx7:~ml#Y}hY@ݘwyrnNJ kdMkW16M<FsҶ~jXF7RB܇*{ZW]=?;#E[\.7?&I7\jN@1',rQ:-(RT[ўּ_\jrp̨7ѐ>badM VW~ҴGvv=*:sSTؽO$kg݂p̞^qcwn 3$&8ə10׭jͩj:E>G2#N U̧EZzy`?y4Ԋ.U`g>y~4FIh1efKk[}xu+i}HGLfkVzVl} . 9Ѿ->%/.-϶>"# m;A8zUk]>5/Nutkz\ț?M =vynb/*>9yⴴO>,n-Oau$:oo' j ` EOvx8sgenώ3!c\f+Zߎ&-2ѴEn23~so`; h4.kՈȹWY(^_= ;,>sd T}gXcXEp1b#>זmwڙ~Pݞ18Q5?^6bX(6 2YM* BO0`;Pf㻭/ Ed)izTpv$zmnrpUpO'=+c/JOOjP>4Ƿ ЃF,֮t5ԋ@?+(8rsֺ4xsS%NG+ٕHA;所dVYrڤrۋc-lv2L#%]/5x:kYz5GkWy YI$uV}3~QEm̐^sjs } -q(<1ywm0=cd+E$쎟}3ǚ׍<-i%ż ?ʿ,ewU)ExX|m\ߦay+11Dot.5 k+k:5l6yeV*=8׵n CG6RbKw {ӵ݋n)2Эu]2Gd}Ir̅'39+ GK}9fr9 ŎY3mnVޡȓ>#ֽZh S慥%w Ӥl( q#TFRgetwKVcpBHȣH#ǜ'ХE֬VT S1`AA\>aˡ< "i#,ڣ,6-;PCNe#2[G‡dz>qR"N|Z> OcIi:Ƙp6sR]7v)ן`VRg4xZԗSiiVdcwqGf__66}uVAC'$̯̮_waxyuD:GkdBmYB-Γ}sJWZ2p|<JGQL:ޭen<z͎GS֩׷fZ]ٸm&s'bN>D6X9_=?pJgxn=[[*M-8 ɂ ݐ=GN+?l]3Fto؋_, 3e#(=vq'!uj&ŚCIk%kˉ%ty z}ñPⱎ̈́Odi`8zY5oZi4:sIyqL٘Pw5KX6L>,A+L5j._ֆLx~eѥNf=zX6jFd*swM t| g]ņy4VRHme suu}3TNoꖦZm.fV?+s2ԇY{W|D刖o-|K/P2×I>cuǭMVO$d,nH!1'O;h^%Hn+/dm ac5k[ ĖBԭgh'UĘ*km Юpp+P|ǜYx'^:4gJITZibx̫ncY @^-+?ڋge^g\u T =+)E♓;w9oI%@9OCWjgP^u+Vu~`C^n6ESyn<о%J[ipm #Qo3DbL;8nWi>.Zi5? r -R; T&bOrИ I} 7'iWa Z:/~ SnDom&S6Aڵ $ԭlk 8`|VŽ>Qd1{hyEQ V⿆4^ aK_[D;w4o|ínHս;A  O_Sv?Ֆwc%s)׋i=Κ>ˍ ׊v? 9'hmuck=&~!I>:;Y)UFs拳g\; wu׉u]%,ꚼֶ@*һvgE5Rڔ:vk`C=KGym=ʑEGƿ!$<G<('&EQ{qwcH5k8]Dx$mWivXi~"]NL}%tL +dy5 WRr8wt;)J7HZrfϰjxjt={Om/IG #P>`:Տ6SImrlJAk ֭+}.56N!χ|8j}K]3 rt֒&۔=~B ҥFjZlZ[íiФf7瑌0>ڇ"# Hg,G, ,s+q~!i:>1>,Ksdxx~e=Eǀ;m9sxS5DdF|@* sY߸naoM}}ʒ#eH  }.]#l4oy J @9o}^\_>r1+g ocڣg˦ rxZ*O3qcgI].Aa+^ ol~bT/DsWմvW k),|w c8[z |&cylྵA$*LwA'=Y^M̻O>ŤMmӟR.:+#qQ|% 6>bqq:O^O{m&m|>h:ݫz"$oMlVFͅʌ!Wv01$HϲO5fULog,jzs]4hl#?V57S=I+- b1b5 PmԊ0NR1z9G::E^ $2'RdxGۨj b6D܌qN?[/"x’hKve'w'ye2xV^-#&4&HoY5)r" u~ĶkI4r+=:kbV#'R]+K}= ǩ$J5W>gc ?: hZcjFڋI$+oN٨}[ x>Jm:縟71(3>=:|m3n*- Qxmi-|ID_F3Ef7zi/3aϊ_ 5;& O>DZyY cׂ7pEz_ڡ@l|EuM'7< OݓW 76ںVZJFp7КFzϖB ^_*njj}q7<t!XF G"8> U9G #m7U+~Q6uGOًk-}U>SmeܹX6V3ZIRsƾkox7v^j6RL6YH01z55ݶyq.1ӽzf~ѵi$MI*Xq 狼CyggK(_;V1sHj9m+_}kKx tz,8CƬiSx 8Z{ctYAl/>b@IKYG/xѤkhdYwF#1gQw5m*_|mt5Fe_܅V;~R@FX {FA)q|~E-{SeD?; Uh\H>F^z|[O%g8CzLT~μaG{ub̈c$ s0I' WA7;noT1O );eF*Qo=;G?d/h>MNHvťk pHX$.3&Oe5KWKeYl|餒UEqS5 l/Cm,Zt6N#?2 _ψ|Kk(dl>m ZPAi˯ɜMxumuHMoy\Ÿ+rAt-u Z=A)Ӯetm&@$ ׎ikE]Z@ @+n9p9=*_J-͸gW#pUR))ǚ$pj /RʽT(d 3(ϵu_uOh:ũonVP}>YCppr7xO6\ċXÅl\ϣ]'v[*K}?İn)m&<|@ {SpzU<5x"r3>KkQlfK 5;ؼt|=wq5 !dü)NObM^ֿ83{ڬ4.~Ս#-,z?'B};I-g<{'=C$֮< WRՒ@ T`c+{:|qixJ!ArNw885mI/~kGեXlw[ןJiN2TsZ'I|Kgj#bC)\ړLGKhR97c n=3Ucc75{}fBײq9ʰևeNfd>ve8ՙ;"^-ߊ4FK-$=JpjZu̶ͭ3 xfTMڼzw?y4 K-Ή;IuaP}x-WšŮm9E~H=ҳmf mbY=Ɛ$hYn hI~UoփwuQ'csRNyZ6[*L6 t/\ه]R-?Zs ER 0紑ӂUg#5cywi=ܐja^L'8QIי[ՊqZ#-G@;VI牸ʕH?o{@eEM+n ?\T.~|Bđ47%Ϊ 9<VSR.WTlA~042Z)# 3WEEN?בIS,:\E4$"r1¾.Ϳ>!iw6tRK5/(:H% |E;\ֲjIT%7ɤqB=.M3FfU{ˠ,O΍\UOoćRK2iPCH1В6`S.5=>m:UK:o vbHݎG'5NM`ӭvg+_~0;ci:̐Ф%'oFTQOq %X9'cfnG%*wx7:k]: rJ k72>!Meko;@p8i߁4 k75%yF28FcO1? _5V:H;q/*9? ?G_y]!\ F~2Mf-/>" E9t>^A\ bGptcʨ΋C#UW/G3FbEʈDpϵIe뚅ֻ`%ƑK8hT*AֺK:VחP&ٿ*@lǩVt'ִuot7@ nI'v0sӨ5*t8CƐi1=#1\Ʒj<0W3JKq,Vϔ~a۞/_4F,,>#s{jr [~`:ֺOns^ʾ-A$7Nү4;e\n-"7@F BGs8@Ly#89i|EvwVٗ@eء7&@|TI6nM_ƺMld۵q'ꇤwU۲^\Zڼ!StʺPOo `(gp]T+MIx—+ᑨAhi^lՔ菺yx>(SU\`0đﻥ 9/h ]ZXECmzʋOj]oǿ5 j^1}Z R9%YvZO?n$2Hq{$-dkpx;mM|,KO>3.Xm[uڱ osNj6̹7FZCԃV}=ݜ:v/0#$1vBz~M%xP[lqö8FD֞Qu 2/ sH. ͽp2J@Ljy Kq'أwlu̙9KuXGq$c"sX7]fiǠ| Gq_Tx+Rk@~\Q_Þ)n"K{&Q -\pՁt |y=} r00r˃<^\~ӿlG#bks\2~+-Z(FԴJ9FҰ|{mi%4Wl"[99\{360ЯK?xS~!qYI{g+IUnIu+{@ef)&Ykf|c՟4˫Fk xWmJ~րm ֱcn.ZI%%W,[%NN28^Ķ9޷&}lpF 0<%A_SkwIcvch![66GP^H~F}ץqVOfk4" [M1l9UK빊.V&={R٢\Ge}:O]Oo{'.go2"A0<;qֶn8$&e$s?!Ժ`&_>EN  pYBéI=8!ElPv՚Ԛާ٦JJd}ۙsoM>xf=FI]V1PH솫hy!H||kdv|U,]Eڕ6=:~#)f,.n!-o]6n1';\~_>&udt~pe'r<{\g'N>hZKxtcPe@/_֧}b{̺,pm\êB 1F0w~SXԿ8"?ۍJ#W3)F6LR{5T3G+&{MJ5.^өީ]Vj \6 8{ZͻxB,A%Y2v۞oJӘhR#0T{.x-?k?5D~4}˶^0Ğ/Fz+R~빜u>u]U״yۏj!jh<خ _! 2uQ Ƶ? cyf_.ukyBǫuMm keNnyZuŝ^|K$rA3scCUkj.5?mKxndS˽{vz =A{DiL2,_6̛G0I{ֆ{N֡] 3yVoHP@WY? !4uio1efM}ij8$qph|Csl:[M)/?_j؛G+kIif[Kkzomg>vͩ~Z2x]D|F"0Hq־4 >Im9vNq2"J~vEݑ=)0־ϧo?ʧ0 qjcw'>B72ůKYeYVUbSsy`>:H`ӬH1OՅx cIG76~(9[5޽)$IO]`=YHs Ve(ͽ_,e'O=ݳIHw"Qq֯="&\Mp΋j:E{_h0T"JZ⟈R+x{/NDjH\Ȗ1'+!q~? &i*5u=Poool[,y,:2liϥ=}NLucu'8gPw\0]j2{ FY E?İKeb9A<򞼚Vh%RVQyL:7Q4 #oEoĵյۋ9Z[ZDpQT8횷&}?Ma)KXFFg k߂<5ʞ%{'llKdg$Tw9ayX𕞑a{.^K vBaRyZ\@e(ٙc`1}KZSM_Z1afon7I`p$psϵm|DK;; /ui2ZokEFn8e݁ɥ R*RQEn4JQORF!RҦUa ǜ ڤM_,H;T8osnL4bQ'l9 :qfLfW"0 @A F#=3I%Eoxf/ w^/!$cx 4v6{a5nLz0y?ھ x&Caq3Mu(K2UTs"7|}+[_4*ixpvŒ{aYjR4;֥> Zy-yky,vNK<+s:QqZ~up;>U5 cS0RLj$ U#KB$fh}BmqCDdž둁+xjGt_lMJ4L.05BKE=Ő&Ry`~C["[rB&CgR{_3\e8|g{ Г'-lJ|=בUi7 B€]ea'÷qDZ!CHm98㞕jzKn30˼.'={ح}OR6#KݷKOlP:w% heҴ!6K۴`};"Ь Ze0Y}(hԘg.CIY)]d0xcMIT8#zz\l7uMŚ飼KnV$HJꧻ0sw*YXҥS]wҮl ,/_ +a@Q%Aⶴχ|HmrmTvZ|&Hs;OLj |QK _ b}HI$h%y*P4nȕ'rzk9K,lRBv8k,.s7ZdE|ܨe}*SZkW\K-I3 s F>e&)u ?`Ht^[ASЩ-QI5OPkV[i !}\cV^=(<+HZbjȺ`D?"#M'nȎ k>Sl9㏄dl7I.`Z]Y9dr}+Ɵ}_TЮ -n24ʫO~!e0;&wUH=Φsxŷc+i!A {,%k2KyL}Zg$$TamUtJ6y]jںjzo|.nh%i9dOVt_r [4mm΃yXC9y[oȃJw4 nsC $8ޛiǤ԰\l;c'iVS`Y?!^i\`$u9`TƍD2j_2O*Yq:Ǚrߗnt'UխMF7evK7[3ck趏ylth/fCs<(P zt? =VIko 4ȪFnקz௏.lkvv52 \Ȭ^G!3M ej|˛p8w˸.;DŽ|O/!2C-\R&+XO ]YkWW?mna)"H d$HNA8kqq._ !y~ПlZٝ4֧xJ-Nep yݚ+VOzth3,5IW&r>b>RA\tb*m~GwmAo ~U8 E[(% O%Y 0Gl`Q6fGXk{? |}u똇`ls= OY>FH̚mcR9 s:[W[դoxd6i 9L􎼂Hk:hdf H}޵lB{8Ku&l^OӧxiLY#򀭎U`'+ZnY5ӯq^x=t [dd$'5}u[]2X6YuDP{d3Ai#Ğ$J/ -71;~5B\ym(9Y>X8 @vkE-xyDW{Th2"֮h-uLKVwg`= T%mdHPXq=ps\Zv U8ێ?})͡j| q}Ee#J4>"mcmw_yJĈ8 )> b3R^csD_>;|?<&qmjP*)P2f#:Y9b ?~i< fc%O^S9fNv W؎wXKuO݃^w kד*n `fmcڟ+P<7.s^SE9:ZZ9ZxrA%=FUxYHoJayn ªDD/8OJ%?eNm[ßݼ&"MDU>cFqڤe:xV7<{{9  gb0NCWhSǢ:0O:?Wk^)B_<},},\ /~V~'Iz=o/>&ԞfȬoVH%Qڬkt-uѥy^D$Yfl`93q>7a ϋJҥF:yA!e_.6H;CDGa6+²ܧ f [`RV[ =/MlF П]d$b3}f7uq'_м٩d`k{7\B3 tֵ89VH1|J%B c2`f9$~r~~^?Wß?ggJ 6hO`@ʴ#;@PUeۋ?F2z3׮J=[QKkmm 6e\Z:Q_ |YX:#qO׵9JGv3 ?Ĺ]?iHyt%[ӼiZi7XQxە-fK;6o W B|>$>W[?F g(meq:VdrT/_?|c{+M>u%!TY#.=H zj:kU76[mUD0OL+S0k7\^1 rkV2\7We{z6Xwaokڽ,3E5m2}S&Ϋ*x+7T]6s9Rumk~)4?I Of@1j7$T5i¤{OYK&QiTd#gVoo̚DݒUXin³39Rm/ 5 ֵjcSԞL8 GniCFM͔Ke-Qʟqy3xF իiX!YwnʠO8~ ]Σwc[[~Se)fb n,&k?ip5umH'Jq52w- JxV|ۻʋ E?­rJtO9y}$x>pT'1[Zfa{6yjdQWvqç?xW im5 AHS<"eFdn1%MTa|o▢|YGë$@%nGuU!PWkMM׭ͳ)zֺ^ӭ"䲆}pXF|S'i1J.{\|$̣|&K`t8i6cxi7sūѦ=<_z_YQr5V݃˦_.p:ba/Y #FYW$:9=zfj~yclhd,Lt+W$FijR-+Ƶ;$7VUXTc3WM|KoRd,׮v41W-x77^+<lU_Cҹopllmw.3;Uq4$58&[jXk4nY+:U5M6{ 2\ye*A=kҮy.Zv݌R&sZ{tHnѢ㼌H xrx@r o`ַ;XL{,N>OմZ;F͒+T[ 1L0+c[~ZG8_O%;d9ֳ-_6:α 0_rn钽MeuԎg|[]q{"[V_[#*9>e.;u-7G- x'IY@#zOYj6"-ޟy[GXz sY:4tgdBֿl?q:`zg5n)ȃW<IҮ4(͵&iı?}:^kυzY~+MF8?l]YX0`0Gz>AiZ޷$0&ܗp[ʓ[4vOMLqMwĭ?dHd)xܤ^cҽvϋzw IezZ_Lv6R𥾛ƕG8 1$>>o~r/5^&,,~v Uݨq?'îjW'Ky 2~xa]n ^Fhv|r^og+5 ޘ6氺ԂGIN:Z-lWLc0x`W~$G.5ۛ ;(:~5cLnb%<nf(UCަQrޕY=7C$].WOm(]d.Q{qSS4k>(O.%BG?jx7M:oN5edqÌP]=]l؁$ ï=*kWv[ǥkZOrn'!|ןZZPm 6VTs#e8exsF9G>atc|C^!!iӿomqJNFW=3Q%+'~!?u+Qc-39{wQx sBI$y7/&6cjsxKn4&s蠕2D$c8H\;4BIAb$ tOfiz8RGUOOghlo7l}kS1ZhNG{*'ͺC@.r,*"<d3¯iԾk<[Z e-#v[3м?pje_8 ,#I_Y;/UJ/ ~+.zT^?M}2+h-+*CaR%xUVWԁڴoj~K x xPaYI - @ _qaaoi:]ffF'*qexoRj#m2Z|WrmV NH^V\352}ܚu}CHFQ*TdXdU_6:,s1o.Ꮧ;:S? .<5}WJ >}j<brOv,_w0gUX$fևQnW_ |YkM?I1h܃?W~\qYJ"`_a,:`=+ݿeI񕗍 ԭ]AtMq6w)ל858?h~mHi6 d%?&H/ %6Cm˯].hZ"/,wc*_u0}l^ %M2/zΉKr(V{In$czVMe6uGj@3>wǿ o<ޜE|sg*s# לܘgTTf tmf5m^];>wC`u=*=^-O)Ӯ]go_ĪA'#[M';1 Ih֟]6oV|SŐ[t;yJ?>PG;mJ/!5A%bGlƝ;1OnO柡0 A;ls.:$Ev:BҮ|?s}d+KDVvf FqߓEv9EѯbJXmv<|߻Qtx8_P[^çXj4UEz{WЍFWǯh^ ސWk(8 [\Z?kil~(FQm`uc\pǯZM jiC,ܛ-թFO0VͶX k]JhB3V; }$x{OԴ;?Zw"YTե~pv zT_sĚmՍ/]QG+ѵs;,F{ _yĿjo͢ڙ 0ѱt% #9o u5UiNKH~xM&luG8nevwAn,6K[=eM˷\W4{[1R;{=7"7:k\:ܰ]eXsr)'_רxJPԬa8b=k[ qsi6W)[ȢF]x=k_׮dB1êh ,vI? CݜojZè dݾ}*yPkua |+m}nLe^0 ۾fC "c|օoϤh*M]iaYSc+#`A /=s277fSg?:&WbFɯKR=6 9bvzUV]ʒ;#,亂[i3\ޠ3:RSR[yfni8߆7sm9dn!!1`Ni6qK!Wz0zI|$%}>GCIu[}PU=c|]jj<*W,MwliM >zÎw,uE| )kr ˅oƵtkqZgKea2e)81H- ^K_|+ԢXJ,';,̼džoZ>JcXE2 @6Pn3ޢZDͺ2,h-A~KM #nRHԤU5[9+sr Ҽ!XS+.Z=^݃>[ qޗ? uzK[C_ mR@  T](32-'<Кv* hEM?Oά‚mw{S]. ǖO\дN9qg=ܴ;n)޸=2heCZ]ܳ^c9 y>ŏ8ǧZ|i~ߤ_y:\?CK3 %T3myʪoSݠ2?[ qjJ汪Ϩ\ܭՍZasI, YF[dW8e.mK{(ML[AUt WP0Fe~IGKO密+fP# #vMX62)s}ӕ>C^~ƺWۯZ&<3f kcrƺ_wºeUҼJa&*C}8Ic)r;3<6WG}Lm=/Y{o][D6"1l?2A׮:8دì[=[9xةϧAWo]wͿ¦:ZjPMiR4g2F9bsWO _i};۹:=JEҖ}9zNZ:Nicq~r4voqZF<#ӭ5-!9j N{=m-٬˵;܁ҰUk#Ksrn V=3UЮu+ȼ$*ۆiiljtOxs%xZ)EͺEr^I3NtzT |>)ݿ+ K2W;ɷKuܿ{~x?:V c-H&z珑޺ZwFmj$Xs d1Wa𑴸O_ -/T;RemEazׄ?iо$5]P _[L} ۻ &}mt;˘+yv-y8n8=8S_E_4߉vjJdiRDueO!q7pcU'L췋Z1K\|4ߘ4qk,Cmc^HlcO_r6CiU+G⿀6|O>?kS].&VF8 7_7Z|>N4}oUP(/#9:ѫQ4t%vAŒE~0[ɅDpHRf!6ErJg_~F~uaмOp'ҵ0 epTu#c\~'_3-bnTw+Nxet')YG_-OX+cI8mjZ5v0o{xdl`ěf|%^t=X0U9D%^_|6]Wj^9 6&Wن9HzG4rs.x_XFaf[UǘᶡÜ`OL7߉?<;?/u[0]k"ft,3*3񖛦}¾"Ӽ3 Bv#39]`hk4G$m$7*z|PC up<5md{CZhw/aUG ;MBQo$2ݒ ?1 5E̷c`8Ȯ~~jT>{ue1qO.ծ䗆k bYsxZ+m;g2 EK 'ğn]{T}o-C5<$ 0R ^OZE82 AtCekw#"OzNk~| `i_Ryx#,RFݫ# )+i6q֩(Tiz[vz~]΢f "]~rIOҶpVN|hm$ontd8Tc_";Zb&Ԭ`ʍawӵ-Y4b;C4vY{J7;_`|IK}F:]ũYM/UL1LeEeK4Ae+hovkcy8'kk&_~~/xn?;n&ksΩ,ygǐHEqˡ^~3Q:DM [2Ҷ|O5[ú~z;Ig)# RR㑁cNs{6PH%5lZɆHD|LW9eb; cOZχoai9G(w{kQյ#Qjs^BTI:ڌⷅm7YϨ_GLgޜg4}+MG7˲&<>n/_h%ӄ|:1Oj6Bzu&w6wxC>S<z] ’ۙ!]WT1v;؞DΛa 1.f /|?O|#[Vv_Q˭ًl+ҿfMGúş?d?ڤ6~4-D[jtm0|O)Cs_7[FAFB"{mՊV -jKy vfF|gUѵ( ™LKrOjm?W֑4h퟇|Ji_ 5ˋyb̳&(*_nt]#w%ZDqOyu${gmOϤ*L7+nۂ5jX]ڴD4FV#Ѵ+/ᙍxV89S{Z_̾t/Ώ,:HYrZїGu-FKtK/>$l\eո s=>|vѵτ![;GkV)U*r3V}:ݳFkAH%%5G|,&nn5F?7=R\CTѼg[@w%(w=둋@tp糧ɞHFUvw}Y77-pgn7`Ӧ=3Y~Af>=Nq oئ;a\DD9)ɧ^٭*pHdaЃ9r6z~!v+H$}9Z|u]OF}5֐SF,l^}'yیy mz >"Y,mη3w1'fxO@#M/Hv>?x[{W͂X :U-SÚԷ><%֏fHa-BφON$>ُ̹_^ս)P'Z|_NڰF$va"'G%gQضFx=+n/ùg<)HtFP!'dDVqC[+k{qu-|*׊,JNxSӞ}/Em>|l;8lu7=)5ø0zUX}7SƧwVOojȁyH'Ӹϵ6Hd[G56߱Ztno`qHpR>HApJm:;{}͏5(k{M]P.툼s'=;V4z=/ReԮ[UVKk[{.;KyLV-<=z{U7ri(d4%Θ*U[LqCnZ7)Ãn|Mq`WJLxKӼV]Wi#Kv| 'Izgĺlwb^n% t÷=̒iytmsͷ܃>2@aO%fG6|E">h> 5VIGt$ WDͨݎOlw  mf}NY@w 'AvIqFAaСnsTm/KUE t? J~\F/iZ==o˨[6Г*;Ha\bX vk1Duۙ8NjJ4u3ğ>7DZ?E!ډK6Pz+cN _Rw֖{JN@ zr=^ gSOUmYǶ, 4v\x'viaR;/e@2cSP9(RNQqW?gZ\[j>2$i/ ٞݽ+JTiy5/-vg(gV  㩭; |!HG!ݭȽy㚳zԶw_ @Z+d.@ʟ-3G2O8}f5LZm)^ 5 Jݘ&0CHN6ƫ)7k?iU 6,^NECx-[cMB ll99$uX \@A^sjkZXӴ{XuR]%H;tVՏ>o-X[%]n},Qp 5k"i-oF YP0eQj%SVKRg'w}3 xsK>(9Ͷ8[4||!OgW5σ+-'Q d8FⱵ x/Oլm`[VnWO\j(ygvZl22d;קRr Zݔ VLzB]7O<7=LMЃM<fjZ-Až?פ}.GfylA$ns=ioXxHErIŕu,F@OB5![I?,)wcRxێy>jNǾ4K4 sG39cV%nۦkr>`dۖ$Gֳ3 <[;C 5#]Kwز]\…l wuJW.逸 h+}nbAB\G|Mkq.h#¥`:rsYn-n-#ejdPzU/ƕZ\"ey4~+mA^2|@~,I A2s;ßo1+*Ҩ|1yCkWGѤz7p V+M2dc<7iHa*DT8m"RTڹ]/H|-<TҼAY]_\yQ]xɿwÍ'ڢ4JIG+b do$}YKx~ojhRx[6ҠL6;ٿ5_//gZE:'#gcEr%YC ]c$_S\\(owmfz]nfrZ/|@Ϳ j\|V-Y-ARtv\dеɜ+Aqe_ 2A9}Ki|,gx[m97ipGT2@jK.ne>Cc+J)w\ϪW:N~ un%V.~n~kFotWѴ]KVnu}B7ӵFOC$l}(\xNoxkλ%2Eģ 3׺ޑ%΂;`bm!}?ȼ<[>ۼSGyi7$ F<{[XkgkoD:K]Bk{Ț&'aQ=xUj6scə I[7>ᯉdQ-xa1 #VopwvqOiV2. *FXC?8L~e MqH.օ-Ǩ]q%e}w˰F쫞'xwQ2DVTvG7Iit`k Ĭk\qR5c4Soo̶? +Bi6}O .Jʞx5{5~1F¬–ѪGnMpwZ~O$m`v ~u&mkӼl_>c>i*p%S2~/|q{_}R;ȗw d;jjF;>) nwGćp3YZz<'i9E06 ?|o6ma:@ K9\`nŏ ~_,':!2.vxv믇_YWp!ZjZZ=nW7VRiYhK_q Z|=:[h&D-62A#<.Jr'&z?i/ُƤ x8_ڿ';9G5/ÐxN_?#{|w7OiR [ಆ<sދv*;m3ñi:Xik718 s=Um{Rq)o?"Kܶ/ 6~r _ uKXgk1]]^K{=> wP1yg4 [S=c-5fe͛CDX^9 \D:喟Hm)ybAGu6Ϻ(X9>U`=kcGn+-VId{R3}=dkvynm ycV>@y3\u&nt[@"09䞾w6o5*Kq *z`}soo5'4d$ԐFx~$]$7렳~q,73:RO^y]%xd2`ddHQODQhwM}v|0?q֫mlώE`Wp@k[R;LGnu{[Zdtz̑A5QT^d9<=OE?h<{ݤ*A%tռoK+ZA2]>X\I<~227ǃ+$$6(m[͆Vg* 2Z槪 &VZ $>f w֗bmgPFmGBPeuhZn ݆dMѼA!}6LgɜSq 8Ef3EV҉S0]gta~V__esmOewkh9O>5? Ωܤ3jD y"7RUNqڰW|_u#_-EA}ӻ=xтwؗzm uk푒+,D4|V+t^<==RD֬/^-2  IFp P[xr`ty+;LaQ$xS.O!x86  SʜIS'Vd͞4vQ.'2eLExiF?Ko/1b9KmyᏈa85ig_&DG#9`@9>[{Y,$d9qDK s=3Tn5WGҵ[mztݤ>eeNN{ xwSD/\os)0zF.^J}iuEw!ȱnPhh.z o[ qH5N{?ܛzp:=Wm^T>$!]Zk6aF8*#\U?%dž*\iwFb]?ĚIH XGcҹzR[DӥYomxlSPgi-?QncQx}ͫ{өɲxܞ"M.ɱZIr=r3L0Լ Q4M$zbU0LzF9 kˮMGPw\ f?鞘Үj$+^ɯBL)b2s\iΫVd_BQ ۦ/~ֲbUl9׫KlҖ? 6nt(+K]fHN!E||xWt{KWt9cl'ar8j˜c^7/<5Mj" v:ŊtIJ9GJ=yehuQQfy=k>I|YȭQJTXMnw w_V~_g]/.|E$Z}" wNb+{ vH+gG/⏀9!f%{q$xb*I<l.&*4Za;]ZgQUld$z0n*׈5^ 䲁/Ld#H۳wWq#I$qVᛝw}=5t7w2N8 kڢk^k͒xZ~3KR@ڸuȑB&1+wk7Ėw<'cizZFvOG/mxT'o$?Y m쪀@$09i F Bf* L? fӯ#DRʠd /- T6jznWB6m. ?(#Z^*%ÍgV{m4yA&h~1zKGaԽԭqii1 JDm`G^6 6Z$vd6i =i>kKV8ty~:e9̀Ffq9FK/-o$rZJ~uz;Tծo|7)<+%S?go.l8`Ͻd:ϋt>U[v< # Ohj ^uGŸ^IjmO1nW[pXoB`xC_izmmc;\lW7[k%ʓ~78e#վ&چH Bb?t&[OܤȽ z oZ櫦=MtPفg =BSF u{Zh;2Dhpr*I ,B42H[p]{ ,1_1O) Y;ͫ͜Jedb0Q۱ WHM{Ep-<Ɏ֪jUƪZa޲e^3q0?:a֧lE&h; ̭1_xmY}_K|dw-ʌͽi"Nަ(9{s~MVmA?z?w> 8arkRJMOG[[l8u=;VJ׭5eu(ct|1j~#N,3AGI!Sc]'K`6w+]qj.=cz6}6|_ݠIKIdL 2 qw"Xݞ;BTDY^4[ME!;sr@b(hiӤǶg=.z@8Gc^?dMRcO+˕cFycrw7/^xo_KАo,i' p*㯥_g?Vw #璸@~ `$1߰t G=So{llsIs:wjOm< -kQIj[B$6J~]> |Qf'v $eb\<ۇ.rjeݴ6ұ٣o-Z>{+*lFڅjmXжJ~tWCK'K3_'X aNlp`_7[scYw>I.em rV̋r$2rpǕW+o-|-u%d>jg'>+g/z~i sUռ;u$ʯ}-#0rTkQ5lewW.dYa;6wew/$rv]f)羸ׇ+۬cvP1_P\hE6);8#1}ٰrJxEE ?]/;.Nxqڠ!TQ𷄉K=Ak,[ou",n7JUO=Gh4{__X-(QGzNTRW~&wc,i9*>7cjz} IL Q~sœk [k>J zbJ~ vLˊ|]H[%mU"tkeu6XM5$6bl;&oggt,> N %u}JeATmǣMyޱOj\LԠeV=' :v;ޤjAT7)ꤐxi-{vwQ䌝rF=)>xp]pUg)2x6Wcƞ*Ӽ5`,Y tbI mDu\w)cmp\}vׯ Y-E|؄iqX'дgȲK!B8#޻]G}xS@ia{]$='/>+7$Ԯ+km1F]!ڸNgML_Y\X-ljF$_bb͓n){h_5xM0Co-f ,M09zUO>W7CqfڄRKLO7#ϽQ] zzh--u3d0aڻ_~,j{t7/]1-dl*qQ%4u(xc :iׇ=ifVJɍ8[VG>=f&$=*}5JT_Q*Cuˆb %lmS9b>G>SnmR--NbHMDMPRG?5|[K|{ffq슇yt~UH|xoM+o . hPId2 d d׆|<1Yk^@\ll[ ɩpG6w&_AJʟ0uI׍ޡ[K 'sǷ^:[^u=-I_J ۆr1ϵahv3zqK[Y|Z_/^*2C4Y: B^ǛxeI0r20 Joc\&[}Rhge8n,qDt1f,K(Hy[xa`3ʴ++I|B.2e{m*Ziv TtZȶѹ瀵dK]FH- I]ۆbF`RxOKXڭ--TBsRIg( m"f{,Rts|7ngɫ$zLԬtгdH<CT=&]/G{{imC cvOҬx.c_ŵ[GU{$(rWx%;l? F[-rKӾھ4kcHX*OgG%֕WE}b q#I1.:.5o8̝`f O뚕v/fy[$+x@B VV p$< '/[\kw:<Ҕ16<ȗ~zѤU_ .a=rb6xLIJ7y0)܍Tj+i'B0Vti u 43 le5n}a|)lx-'ڴ Ob.`y\!$4o?eWAsjmp1.{ȿ*Q2?uH;#ƯnfKؚ8ʢBTX3;U7:E?N՞F  p\ M wNL])$l6O=0{I5a}Z]CDѤvѐ~z^z9ROcGH|/s\zTܐE109+?3֖-ҥ}>^eGORYdH'Ye#޶%mmnS3+g 'ӽ)Kɢ][El.B'#xCOdZ.[Ic+q# >cQjǩ뺞s,P'y$g=4Bo|I ַ+̲pbqs?.IL Wi}]fx;MrQ RrT*A`Gx~(g5zI[/c9ؘ \b{mo%~o_&ro4<6Ia"ƨUd%B*:)|<_$Ӽ,^졂Of ~J`6w-mNs8]Z+h6n4IՖ51g͍+aLúX #Il瑔  tM]maY\/|!{oiq;(K[KÞ8;!]wßmؾ-sQ5I*6": 跖j&J!`s=둴lw.AU2Ó{ShNWZϥ~ڟvW}ZA6֚apՌgnU;߉_mIZ&'8XM.{Vo˞b"GI[}ǜwZdŪ+E~{c ]TvsJ37J ;dkcyq[ q-8z[߈^=GCU"n[F6I+no?VH9ns `9}G@o$5˨;=P|5bkӦ׳W+J*G$yi㧬.^O |E+1!`@یcx^>£k4Suzy~vߍ*6Q5 Dv胮X> *!ȝBpWig3c}+ؼKio'g x;2^x'z]ܲ>jxP3l>ldp}+.F/ H<;aȖcm-aGM%yˁ?*)|_}iy2\EdȅcsW{K[{I$D:NK㤹݉UE'!?\>i^9u[` E$+I%qsu2Cnۃc'oUo-}i$qbo-/k'kc?u:c]|Ŝ$u{r|5(4ۍB܌ 4xf|y'.|oy-ncI;XCF:V^j|Rm koV3Ju!a^I0^?x0̳hdpY~Tk=b3&/OrWZ ,jAʜzs¶:CYvn1`vSMr\m?ėQOum<`c=V XFצ̻H9I {0;SjKBu[{q{!Y]^\|I?qSkdj_KfΊv՝Cv*d+ĺk6mW(i,qSnsN֬~x>ۓH®fhPKG.nqZԊRiwi+̨N8j-CZ_2J22G87SN-K{0ۨOR#S-$@zUI.i,ZE_ %Ybcpy*z{Q]b~/M^)ZA<7ɍ>hvb[BF#Cm(TKzMvzf//omaXo&YnGްxo~"OaX/a;dCk#Hl>uil v(8pD}r=7hh DfCŌٕIϾGZ Ho |3.u lvkQ\&^-ӧuŎmHb vuݦiYΤ~52COQ-l$[[$鮕l׭(uF.ar|$]3rv+̾ k>K^JZVpQ>?]>,گ]iZF7o mUb@9¹qʃ-)yM_ESm7>ӼM2~GaQյodׇYNoFC  0N)?Y5uOKOs )37 2y8{?k!|%)5ӿtOjeC(ܡw8.Tck}R}KR[G|]CD |Q{?m7\-P팤m,GxlF,ľirek{+E$v_kwm};z.>"elM2AYYafqscMXeVn+_ܮ9SvxU/#e' ǎq֡6Чu FXnN#lwgp:).mHkوP6Pr<=HZfB$_^eu4O( Ͱ<5-( "PT13zD|Gb`9,7 OƗBM.k/qXrOF5“8m:$Kxk)g۔m.x^`h❇+'@v 7GƨQSῺqԴK?T.|Gb\P`$dq .=8SR|#nȊ};OlnJ>]f9'ip!;x%R,_>nqqUmA<6#v.t_[O~wHvF3Z !xtZ{K ωcӡLmp$x\xԫJ1sH x~*r ( eE\g,98׷\ݝD; Xv\=TNk%9Х<'VI.t])2qn*A {@EK>~˒kWP[ \6ǒ?ڸ>=5m`3z7<p{tEԎ#sZlyk[hvK=XbT N^mYimt|Cw '*~bOeҾ~ض߃z͸QWx鎕M?Xg $;6xm9?b+z2^* {ȱO!5k{;7N>終9f=BhJ|g\$&{Tc{Ha:_f}5e+ 1{=*Ѿf*W$}P_In5ʪXF3=*/ uo꩛u*ɵDT)'$ww¾?5[.?? %1t1^+ sU)wzt{$-] +k1⵳{)2ݧ-gk1hc_r=+[NG4]Rcc~Q^+1~66dK&4uaTC._nn+jp{F5\ҷ:=*O-[ZaM%(>d+u`II>3㯂Q\k@%:JC:W 9K?`xoo;lM+FHvM^,𧌾> \7̥[yЎUdݩVϙ<t G&IY#a瑑ں{/|LUUbGduXͭ|9׎d;mt+-Ar錷!!7vxOs>%q'"k+yḙ GRvH9{ / ϥxVٽm)lWG ׊,-HBM^j1${fB+:c$iݻn"C:c(@mZwzܹXj|7o ^,eKvv,HJ2+GnrIJQGϣUҵd⽉q#x\:ޅmXyPA*I0W{ʾkj/4\P WrEԵ4MUIm"ǃ9Zċh/f5Ϣ묶Sqb"ny޳cG7+T+2^Ey^dS[q*PpERەot}B6Wyp"ѣnƭp9 v{.nv$r*fkո[el8qں-;[q|}k&[G[+$ACg;sF,3'oDyo!a *Ua#֦o{#H2korj1^CMxUa>YQI@$giKRԮ1ip^nϑ.mm7`jm'ޕ{I' ipYe5R0F=k+ľkm?gX{[g1OOF(#$zA}Zk~9Y[laOI?"8.WPu^xHx* V+o ,Vp]@cdLGҼ7 ]+/5Hj$rM.C[d\ +IVrk3ĺ>xZ]:C(ܲ!!p>3Ǿ'э:EmDb'r*jOj.-n K,{ozM~iVJ{h΢|۴G[v29m<ڌ1C097 ],Z)ԦjL'ZV)> ֗/:;Op7 ki,xiGqjZ=Sۑur zwnl#ѵ[]Kud8`mn\種㧆>@m6-R[5]mz+ EpzZ;3*/MOiyej^$Og|ԩboOɧF;E"A@>\k^4y'}6T9zw_búw%H׭4}*8.W }|2| q? };įiwa`Ԕjgk^dI+Tq&6qfW@{ >_4d|ЎxxœK7ݩFchU* uo@;nһ]ʋqhY~'M*Z-ikfqAf٘W.*C# LCc/Ku>u;6mKJK u*BNTue9x}o>tڥeso}溅!TvN0[r 7(Nn1R,9m&Z&.+I+xIK/ko{ik%žȌKgva)NaǗ?؞ּ=֣zEecxY#T H99=)T M vM+Vݵﵴ<DŎomq<2-m uj6`Я-oc+aNC`oZ_>~*!tBϣ?NUUpAlz[KM^3Vі\Vn"Im*~{|qiEQêӳ_)uW|IcHԢ,sCy|y?d_ Z?f=;RS"^j$*F ^cC΅+cE|3KpW9hk,?I2'\t5QܻS UZt{%-Avx3c(Tn*皹?fQh~ZE%'xG'^##rw`A |ɫ ǦMsgtam6prc6okStut-r;To#') +Ж;V'IPNs^cNní~++e[Y)2Ey#Zyq.QL謌Xe>̨78G=᯳.ߵ(iFE o Dͪ$qJ7Jl([9tK[_>4]FtAuOnmv$[I;FT\N qT#y_tKku-]=k݈ê"@ x^^^=R^؈a~=ï?3hzjI.d,6) 9|uV+Cƺ0(xqh256w^Hd]ĻAH`it$DSSFd~%lu--'IemmNunqe]BJ BldeܪHhۜJQ;m7ǯx7%߉u|z|Sqj7hRhoQASd89~hnG┒ qh[3q lwCgc*k nYjC]O4[s#U9ʖxgR{lx[Kyi=^^;Y@9^bdxk[|IѮÿBIidte;A-ό _+yj6.ڥM.3xF4PicIqdcz{]QXsς?/:m>,z~i,ig<(U'r(c4kx;^-}vf&E"Bwz\eX7rC-i󟔰ϧޮïxMaI{itjsp :Մi6}ﹷ>|<-ʒ:X%ܮݭn7/? ߏIm/%H(I9鑇V{Vͤw85`y۴*a$#X֟O_?iߋ7]m@]5B`ӮL3K !è1rE[ՕJI# E<$_>O7mAKYυWjDq7ncYdftm+s _=/5o? ω? Ggxȼ,f`ޱwf&Q9Ds->s\Mfj4N, w-Ĕ^K.tfٟZ߅W_^<{:ݿX΍'*oT8d'~?7 H&_W>R E5 }<̫$R+1R8/#_gK>/XKO| 4^!P6>^mɺ#PYUY9^(;/~^Ftߵ5clh mwkq ۦ\hlϑ`mkJ.qlHU?/$\6"+sV<_ooso?o;XԃHԹ'ķڕJ勵c4=0Gk sS(x/M7?o_}p]2h d*T4_ c!vI2[v@N1ڮ.Qaqw$ ϥhEM|N^y%Z_1'p_& )^xҗ35,.t}W vH&tr[0?oJ|9g ƉnDeՀ"enBþ*uO~.÷_Q#)"1* EmAд{buu$Ѽ6'- `F8Wii/tLwt _YiSjz^әd^ }9Sv?|7+߲?čGˎ[{^SmuD6'uˎ?æHҬ< MV :Z4mRy>(JI28=;Ox '^闅\5X_xՇ|@47𗉬οO3*Y LYNK/̇1 5;x❤_ ?iISC#ݹ0fo*y~8~$;[!ִ[]o·=H%-SG# .-i?yw@khddzYkV=N*"C \=iVռ5G-ĒEx/a\Uh~" ,'4_Defc>,E]Ԟ~.[j`po y}ܔnU1ۜvx{Pd_[4 _0rs}p+ׇ}%Uaoҫy~#&~^=GgxOǞѬ^B)(-u.Hc3s֓#7ڭƨ"483zuJPat4R{Cg Y$㓍*?|}߶_i^ޕ)°Jwpf 5GLF>,dKڦg ah}X-a)roYgi\u6}Kd Ś|úo iQj,.@LyfMeNCjlfhGzH_{E]Fa"b ~YAVLdginsR%_{ J,mG[B)ضҡA^GoI@Ѥ,-MӒ%ͳm7Y?zVO{r9fr)^*[;h%Fg;}џtB?Z4ˬH꺕%UAw֨ZN-F t q*+Wp |\,/Dvn\ ͳ8)Jv|zh6Gx`N# Ө8 +Ú3S+ICnO.A4l3Nو2"eb;.#u\Mj[Җ=Ν+eHm ꃏzrJ7Ouƥ5aؖ4_|Wxn{<7q=ӴΆBv@Q_)xKtK_f2];(9I$ޙgEY4=zGK1ʖrxZ䤜mq(t]<k|!4閎ˡrb+۹xUG^ u,7qHF}X&K-oVH]H*F\Y{ ~&ixjd&y7ʟ˛x_?#>2cM{]gOj cof /kŸYW4]XR-7_>|CѼ#;ծ](>cD~f >cP<3σS*t$'< MJ_oOtM2[ȳY3#vs4:ye68"&V˒?p5ϋ^0 sXb|"]988U\`(~cM8|psrq֝V;h9%+hڟR]v]o4_7 3LyJ;{{:Kx;[ӦԾxRGi{ Q3dFw$G~=0/4m#w$M򬳼_=ӮrIz`3]uGIgYECo!_ҲZ0^3FH#|.۞2yYCm{j'eU%_W/U5tKR 5&m*-W&72 te2p;T{0zOvóGc~N;W־2|MuȲbH%7tۻ=~ eGiE82]s*O: xJS"LxL+d8b(^:GҢ׼9E v]!t`<ȵ9ǵP^3%^%ԥ/&h$IF ?"~5a8co#JɌ1E!:0~s@qEѼC}GLfi;#0 yh);#_]K{NHon",c 9v_>G⏆Z5V^=֘UVlrf0}S_? Fez,okGp/n'& ss\ .~ og,4VqH1nA OީS[XcF .XbfJpbIIH +Ҿtm>k~"Aqg-"j?xTWѦuK\yŀ $~0|;_|37MCiL$5+2*m3` 5yMx0ۻ"Ni(H,VM(~5 |jWRx+AGԅrgV)0 c|q߉<'{'HӾ#AMַۤ7 1` \2@ȮOោ^мe6>p| T ˎ9)ƍZvFucR.=~_<'j,Eo/cek>`G>9lwj'7|'Z<1j3 eu$)״Kdw>9t+J PB2`؃yi:.. kͿ5h,t[S5Ԓ7I,9]M9ަ_w@ѬkgOGGmɎGo"&ZY[g5oiqVxG!^-\궢GM>6DWigX}+:,|lV$Y즵v7ZcT)!T9Jy`;-tOSͿ{XeGa F-rok#ӧ.x\/n\_5oKG_OǗ>i#d᧰%TV,]ԲősdڤдMXﺓ e}OA ?[n27x2u;wA־ZT.ۇn%Pf]`9b?Au⛄Ѡ{˸QPo'5Pj,wKok*ky@F`ldprG~_ N"yguYӤn.my[ }+ujTm6é %gF)]2Oּ)CApd.#cl{+Kþ(kFDZ'.47]N܃Ih^,$ |w%A"#T;Sl| IN9VRВMf(ͮiqH8GZ>/Rі%h!m|3yE #$ >F58$Qc? L|5E59Ry(O5x3%ޟSzT'<=wd?S:αTQ~XO*%)q4-$d5u}ǥE~˿4]Β}]_2&p9e%R%jkzch~$aTҵ9Te Ӡ^G}6McɧY]x*&ZV%Mfێ =%ff|w;O~Ͽ4?I>L"u߀Yrk6e 믥^kMw6Sw.f\s`g~4JS”Xhp=|ؖ?nvU khlWV!RazׇcQ |Eq jNd9V #p`V_σj7OH.mz|>8 A91NVj<x;tӧC;8ݦ72ݞ8|+'J0M>ZY ycr :N[;;*m9^v"p/̇R[cRrGN1[i: YVWWԦ(|(Cr>WǥWy5[u8O5P .I8t {7'.gIU4FX [ 9njG۬1GgOCLozKa~U-]&dAkx"FIQՉmk&9eņWWy ,kW+kmΫx`?.N=k{c\Ki:%HnHx֓WeN)9{˹ῆ!!Ж{Vk-ZoMu YK7 ʠcgǥe[Y[i-ū$$ X:<n]x;G [K%Kc*˅#>ިVՋ owZk=FԸ`Y=2瞣z~ O.&glml,GD`"` ue%e6vV8o? -퀾"N1UIs 2jynu Ym#?֧N٭`JR[W@RU ~UG^$Kh4}J;y%km)?ڣCi293$P NG>iMu7o>X&"1l>_M˫h^%ҼIuey ?) QXzoh"Mo^q=ђga2H%S۵W }B/ m*X2ԓMu/3Kռ+|qVkImv $P`V&MnGqjZ:6EJ dq+HH.tK3FI/!x>0X} x%rJ[K O01$?\׉%{?u)4~[9~EUٸ6FF&ע(nu(].1a&r~t; wp ν*ZD]ߊ\Sh83G :oJUagtoeniMkz]~4k)%hEzޯC_յb-ZXLՅ͊dVrrYW׆%OmqgL{Y;xj+~@/ i}so6/ {W!|GZ 1{gh^R\c-Գd{'Mn旤G-梾M̮$aFj!K5lQ (rI5FUh9(=A)nߩ>DŽ>h-e>npon:uk4j_>$xBG~Q2EYo$ \~n4É]+IѴrm[ b4v?ηw$ˊBi.k.\x ||:|Q vjO媇;wrc>%~:rjޖ="eV 6_CRO=1I0+-6Xb8#<Ժ.]\_jVK-ER @˃ـ '{SKsɝJZ#fop[=%M+Śy[6J\pi j͖kv{iY!X;h 0,:}q#?_;Zv]_\ɨ21);2`di_ebw.;skvx^Map`m(Pp]2u#5Mk`+mB)o"G|0 o _>xf+dѣ&gSHr-D 0r> W8aϧJkYI;GQqxog5{?pXNt}UƗ{34``B8@Z>2i3wuuS Կk%$U.7pHsۿB ~>$ۙ,/;eid&HXPOLlW{Yо+|`Ӵkįq NeyvF覻7Φp9r롩7~;xfe."{|8,K_i5'Si-1XEg{7W'᷉ſXѮfBvGg5rY,^jz_W5/#~:ׂ?mVү/"1N_axn`̓qٔ"!lP߲?Pמωt Y0e17~xS O~>%z> OKW> YZH r^$Ro7*.#2%:n$g |U|||44 +^>+&O__29`<0;d2™UbM/h/tG7u+&2>DvM*Iscڤu)e}t_-%Ȥ lq-u? ]jɧxv^ 5}6**Qvg%#]7ubnk{IB <6K7W״Eͩ $$C$w+v5=#^K_0 2qz@,eL?d?ӜL11Z+LRy{onX>1 vّl  ,fs Ix~+-=9aSŴCiJu Ǩ^V3^ea 9Mt!VXLTҭF5H/Y$8ܒ( anlW5bz_+ٿ(xfFc?f9r>I=$ N*ckues$þ#,"sd˓\砮6?Vq-L["Ϩ{R8ׯH|IpaF;I >ýKCGO0 c%P eUbj6ݎffac\Awsgs<͏3쮬ǹRa2Gd_TKki%O\X\$Fc;G<Νj:4hX;pI v"E5..V7VэJHdpz%G|%ok+cu#ܫrLGn_2+I@=LW}"/[xN hVU)SP&?MyT{W{sNxnkFGOy>|=fĖfc+;LNm=^X閁,gs32 lM]V Ḃ & t=?^mqa յ֥fevy^0u>ª;{_e/Zh}u]~6S'6$0*?.ĭIsowPkֈa5jv}7wZK&!1yHXs1$o_xwvMháF'}VHI]ǟ0qVvA %a~^6iMOgq4qF?s6I@3j7|4Yæ_E+˩]&sO}kF43͍ r0yi7%`m BKɡwppyhG/__&Z)a=NA,7z|ZKIKZ&IHq\iu*f %Ψ*pMO}b') ,>^#P1|T$]3Pe06p˵㞼⺘|/Y |l<, LU"$q}tּj1%%7ps'H=sڴ^͏[\xᯇ÷2Y̠{eХ|?]GHg1KrFpvx_G&[ic,%Yn2Hp)omt9"?ֺ)-.%7v% Up:k['Fo]{D%#C'va?yx<֤~!ŬjI}aa:$:NM A?V;֙1[v׺uYFٳÞ;FCm-I ρjkk~mL;ghx<9᪜֠g^.Ӵ{ѣ񾠆|D@T9CR= *XHAzkv3uo E>/MRJ\OɛWr^8˜ grQ"]GBIN-DY%BrI=I'&R||gwN;4!aV8*/aWKEqO]}+#.sF8zt-R׽8CpIiMsY#,YC*Mÿ5?~▓ dwPSS"АAj$xw~' BLf%ᶈ 5I),z<0.OOş5ksHNOc1(Ⱛ9CCz92 ÙŸ,xOvug"T%L͓m+;W]!s!$Z鋯+˾H?Ρ~<6I[9tןJ+xׂb7?8JO˩`X:b7vLRU$IA{7/HY]4XqѰY>Q^_@@J~4\]!SӼ+YH1Gһ~cxMk;k$ѵ==g !Pv>ҕ\u_Id^ul;ZJXXtmmW7Kc]%/ I<= -āuzÏzM{4wQ +ű?m9.xឈ [o'[vuuũ\{Hj|Pt/Ů@_iZ%-1?\<.w ZYS: x$eE$n8 Ɨƫ$}j[σ|YN*q?g_ E6^隌GM/4 ܄TzMthHڨ($Ε s3WGuI+{:ƞXOvH8;c q_ߋ"2nUb760arD`2֡}/2|ei"G :p8+ռs|SƧxT6H 1:Z0Wyuۥ"݃g?N| | GHԤǟ_hQ^C߈? ?7m17Í7F7`?{3jv%U\ G|eS־5|jlxfKxVe.:ꟳ*G)AAAH%u&~GIi-GN O Y;R> F"X_4vprGhT%y/ "~~Xo 2<%m\|-+9Ե+8]xHݳ_Jzu'ί'tGq _ ҡwg!/48l{˥2sJ /5wɿ$ԮB$e| pk4Gׇe5}#ج2ͽٌr#by^[k&h:>oimZER0xWN;g_IxsRh%OaGgFЎi[_EDqn&<.޹Z:}+Kyy{oީ~WQH\fn gĐhNvF[R?..q-Ιw5$ejq&pxR}F77I}[@K69ƛ)Ӽ-&,xc<:}P/Bm$l?9$ޤݵfoxnjvxI#׉;LGgk4\xicY݂@H@ 2Gnxgg-,nmඖS%>V9g{)}Ytȴ_taU2/hـbcgf/yu*P7o_eC ks |*F;u|GM V^׆]'Rc{~ISSsOA7IKfb.۱攣ͱ{ha6]A Z}KoawqcZޛ|fҿ٦a6nI3]mM+>e;oVbqϽj1Yx;^h>Q"I(ze4j3՜S >mN=3\3Ёp";rۀxڰOqk{3MƲWueݎI<E;+0_˚oRxZmI{\AbXLLu YxvGFGHWhRq-kZtXk\ٱBp:\[z/%i57'vỄɂAxJ9< iP"SV0jE ]9o4_S2xǽ[u,vZ*?tN)pnX3Y? Z 2 M8搶O1yO_MU4gwGuYY0siF>^ظX۱\x:K3^ wUjĨtGue|q}u$qA, G=[ |M-^e<:@Ǔyv1H.}ާdEØ$,Ԯ|w}haE=;wp/Aufu[nN7FX{65zux8~ٚ-S mI9瓓r>-jm`^ Ck~x\30z97^e/>>Xks6pG(C!ؠ.7,` ^t>kqũ*ڨY`Tigh@ Imoư麆iR[[NLc۸ŞT35kWoVWԛ [V"SKC|1SCa6P=ى3]Aw |]~ ,σY& ׎_ 5Rwc]VaU^VP: ZI WDԴ^S7:TcffMo+˔isaF)7hxUΙ8dYer,xS`|co [˭ 1g*!7a[y?θoJm>i5+ԤLUpnqwoc}6X\.CGcQuTt8q$SF^?|޵-j$,?s!nxsgQᵲOcrS34H |Ro ;m{s* v&0C 3޽ZWßoWM nr@Տ.u9U} xi+ּ[hĭ_0|Xk? |xY׮8mMq`x>#oL㟯/xOm4&[+3R8_o߷g4_k-nuR( ө\ 9Qx_#a5qk!p# s?kW⾸o{yMwpbV &yx<Կlg/O[ jھj*nxaO>) 3#_~mf+CQö&1H0xTJ}{ƒjx6Ui g a9t$|ZU)(ek4?x^і/5( R+c4ь*$>c>3a= m_o5S%ʻ+?IzWU )t/iJeEF{`WU/Pjq[$iYeºveo(6pg=FlL$>oC'hB.5|s0u{ҽ ,+&It u9d\Ah1,9Lw9-}O,Q3yv>cYŸz^eD|5ۼAK(k^yGmn~ĞԬ>3}?|X t0-iY*„`:t^֡Mx<ږ2U#Yw>:Dq,Ѷ,Nvc=]Oh^2x3췢0mF8$ǵoj;j ^V[opJh!I3c̯?n,]K'2]I-L3j ;;rM-"IQ{= i՜3R1 8KN:Ҽm}* <-۬rExEi`4G^"PCqM⿈MrX )QOpTSnPߴ1'W^~jVW-/>Ks| /하dFTxi~7_` 'B-4bY4+fѻ( O#\x95mi*2|IgS `\[I,[FYa:ךk񅧊Duʘhr0ͽKg62_if("AUb[ `5ڔ:eռ">cljr~#hf_HlyS2>V"N??x˷S,Vϡ/O:Ɠu$iw3EȌ {um[B~N'Iu[|'#v!eZ$cKȂB>VvZo'Dկ k Rٕ w.7 zˊ;Nɝ%CbMDcN֨MtNk HH& ,\C}J)FG< jy3hZ׈<>ڤLmUTr$(ץQҵ%lo$ ֧arc9NMtbmnDIas(f r3JٺA5Tqrw;q,i_-uIfO-i#<9^'s{F=nF,3_SQί'FF v5ZS& kG n7H[rbAt>՜;; څ^!ms5F"9#p׌{K~,,zh~+t^ڣ5 c$×Σ,Fe؎8ee$`@RsV o?a&B*q'^G#]-t"_<9j/4B.%mc6,nP!ӡZ_M-qhon*|V&k_x[B!0Htz{=gÑ6AsdJ{[^ I5y9.S$dsTS¾+}h n>lmѱe3j*Km/?b\`gi@W=񧈿|Ij+6Rr dЫ:Ӵ:O|1ҼmmLSyXZ//@gj?=+:I?HAȭ@7ۛ| K \}WFf[PGCS#5ᏈPh^]:=cw3rbS'nexKG̓|X~\pVlQ7o-@\o'}z`5u[{Ӫ]/v|v#xi\|'ҢP~3C$GJ4eN @kGJ\_0CJmOs*1h4{z7{߇>-խuE#f n֏ |r>"]ai_k7[۲9 8"D5YȯKSx5^rc𷊬=q&q\TmлRH=?q>8<6&SO^EQ]ĒG]w8yKJ:SɊ4_y6`FIҾtzYs\xnxߊuZ:V%e4?̬T AEmԇc6ihplvʡ)-8״|toc> Jf~3$3b1nX} sP #ѡ?zy| !̒coڋ_e+ 0 ]aq.'Yo928EaVQ[0,M#[mC7x-[R}JٯӃcOf H%Ga.?u߃n>#x&|MjRNC~1 Ř!~O.L$RER>e?ࢿWl#.BDžDW1KrQ%V9O4x_7W6Sژ&?i)+ͷZGǢA먩%~fX 1|ME./ˑt-4Z=" 29?tV }ygH+v 췝ۨI1Z쵝>^gdYU~Ss`{uVuFf;1Rҽi')XW!CC^uBKU|1k_|*Ͼ<5MRMѣYK'29 F;˚W뚗D'n%;u*[T9=֞KiCw}FH#+x9<+ϴ(ItzŤG7yr!HυXx↧3ıiFbQё###5ٯ2Ҿ$|iOq.XQ 8kzz5y.?skp*ɻj18^MQ3$E,sj6 ryQ\׷J|vN$f& T6ԋ0].5/1ҭ/ ؛s88g{1/n75l1R-,&N{& 8+Uaq> ]@۽f8b̬NH'?7nM­}_%"I켒2x{|M$ߕ덽IM])#¾,]F%^&/i{d# Sǖzi> ?RW*qWdkӋ8ͤBјⷎzHv@ҷ|% ѬgRk>|nOe3 Z9+8?) wEtejZEׇǡy s*n';\0yDxϥh?w;ZMC49VO䣝ǎM;.tv8tɤ]#w:>ҠR(dOe6ϜQ 9v_ěu9o4! W2a{ig~ XxRÑ6אc %̪U[J[]5({EGe4<6wrjmUׇnZl k/x{FE֝Jq+)|\q )k x?ÞKaVBa3''$Y>_שM}; 3E $ɂs޵Xmn.ubҰEԲ'9G '|"l#^vhdqʃNzc|Te}L1XΪL|-{~/^@kj1we\gԑY4,~,.7Ow;7.8?$/~U];ߛ])  ~^xWh'3Ԫā*$FN3nvpѥNxNH1h^:Y] rJwn)q+X6l]V_W j*yYGVٞ#nB[}ťRqYUƩ6&x J_ *GWrT7nTǙR$Tk[B|CSÓY7[w| v=x_Nnf5P 71r-48E@>e9il;8QE~R.JdgVH }ֹj)atbڏo3柌5>9^عMieMK}Mj95)<1QkCe:;ϱc$q #Ñm|P 6v? > i_i­>ѪiUXX$|O .iHpl)OBVC_V(ӼCMv rjzEȒٿvO>[(lEe|eBLzX pa6LF"j&A{W^,!fXo~j{6V iX,0vG462ub_!wumRg1sVX(5sXwlNjSMXZi_;5= h։olڈ_&0W3ֲ|-?&F?eӣs̯޷~|4|rx%vvHB7}G]=,uf>kZlb}fP #=*+^_o>QK<<䃁>d1޶>uk:+^43]+"]?ZX총ryEPGoE+c!lE*k1 P.izkuqiHu'[%4χ#^xg'4,O3j鶰35n 沸^ybHS}~?/?~*'V]4,j][yﵓ w+nGhO[kWWthx V18ڦQo/X7>bMf9Ύt_=1jjqm yo*]%..ʰŀIlUoTKH+xz̲,ROltx3ZGGYt}"G(-m1d }1ۭ Q4zq|J}]؞|ȁ#oT֬-5M6e+-ͼs n^04ؤ? HRѴIb &@L%,nON1ƻiZhSDwhߜgFO\TcZvnCܻ?w V&$<+gcĭ?49d SxOqx;w ,aem&w#hMI]M[SZw7SOhJF1;{;Kǧx^=xzxfᩏ%'΀c6\Y1HNã4?KE]DU:kۛT[[6ۤznGуqYW׺Jx?p A[g>x6^]DHid8вy?HSo} H2!@g-n4|x  #~!nO DSx [G*/|9[hwP$DPz@[özV.$G9PgEgor1%AcP<frVd_2*iy͜_n<9]} 6ӏƨ:6/6?2/ʝ~lLZ+_.q1:|iP H O>A< .yss.VQ+s_@X,9F\t_PQK6LH@synAng)mzFr{ sNML7fmV{k# KI.uU>bvfGAm / uVElfoaїy\jz\o"v}nsVǂ3ͽ569G1$s_F~v\\,YeVY8rEs_>1|'?Xƥi%YS$kKg(Nt_zIѬ._q?iC]*IrTu-Okf]jtߴ/ /jӵS5HRSq-! `k~ 6_4֓4E0̑Wp# ÜpCj?b_sZOItmL,!X1kcѥWXiy1FdEry@8ɯ[ !{fʧEr/{U}m~^'OV ) K{ ]2g0Bi>[90xSpO/-t`,lM# deؠ qW|>/5Kؘ #́Gz-RU]b>K>{x+f0[ZT2E8164΃}b1Zܧ# ,F>~ʂ>tF:ę-ۏwc|=%E[%6)l-xW>![ׯC7;RZ6Cׅ<3grLK) d<:In}^Kٮ Rsi^o{w>n?l't[jOmLQct@]s_8'ͨje4X ӣxl H[ Rx< ;j@ 6A67Q͌|¾X7;9X64$98\:GnuTfߖƟØO|#zHU./aKuIR3YcA^]+RhSE#SAEIU_Mu nZ8Xh$+u_#'2x~- Kd<+>3khIcp_z!mZ=ŗMmZw3 s!jҴ+qJF~l\J"Y*6OC?X_ a~] xwZe⹇Yf!gNyᏉWp6,;~,z%港\nH+[$c|iπ-{gm" ]Lo7C6F V_1ң+vԛ>̞o4ٶ~2?E]~\&5ςQ5߅nX/6Kc  0U5OZ31k)TdfǕrdmiyLԡu:0]%d>Z:|CHukmx916M『6ASR" C~K ⿲Iuܝن`[&, E:=:GF;ث87n|61/izb##KO\:59*r+дvQKB(c,i2S^I$+A aH.-۱8եEx$0Rfk{F&^d޷#vӵ-'L-V`3:t_5Ƒ{O!?øC +o| ^+8ʼimGFr1z¿^g2vS{ޟf@ZL F>kPuO&[Nw9۹'X"1F<~5웣~)I#x2^;O-6ߥ'#sx ?-g &r%xl`q!svB5EӶuc H5{ž<>! RJKzJIy'nv>˪hW_e[.;dvh杙`0͞vVK[}OPqG6e qwv!Ҟ&'gӵZ}khl\h~_;!GUȢVK)? ̼~UWQ%thB) l(?QZQЃĶ+y'M,1iH?`[Ccp|nVK}!uztkJ_PV]C}8k ;KyÎd 5if&1p@Ϛ$ep E:jxJ޷{=-#ջgKm`> ]8y% n2WxȬ+D s-ԘavK\OyL2|rGvʞ$֨OOLm2%wv#>M &ռcjwn|־69ϷJaib}cEkL'}qI/i7z$ڈ{ JiGcWOЯo^B5[^ܔ@ #'ۚϻ%5omú,|7^oGu=Z6f[v# q֝MԮt9ޱv~|T&I'[ {pxnGrBLs!E F:|m~fյ1X!gAO;xU[z$ ؜:c3gzJ?i|Lc?o4/~մE^KPCjH4ɴ4Z+v`/sH ۩泮o!ӵ[x4d, e.H?Jn];^@И^+IǕlt>*|&Ү>Bf=]oX8B 0`;^Ρ{53֭$$?\ @ú5+2WX0TIfM{=UXnޠu5bVG5hS~N ଞyM4%-Ti"cBVʱ$-Pk|"["='<:r\ Y.^4ovn{m n G 鷸 ևaiZDyjB+F:?N1Yф]E&J79KgwzELvÎ\1^uacTPZ4J, 9$iuN\υc'9, C\=B\[=k4vd8څsk|\h뚕Ǎ4Ee8#W?VWz֦ҡG|H(9'ֵ#]_…GR{`VuOpEg.Yimt=67Y@?Xk ׺H[Z$<]/x~AhīA `ۨj_ y]:ᔄHJn+1+]. :Ч#]_0 9#B񵏋cZxG-R<2%xC{Ei/i# p`sUB5p#)Z#%F?_3ďxK׭xiWbO{t~[@ %CK)H (kk]h$C )?30ך=P}4ѮmjI z?FkKcʊG:]M)8n핎ذw UAχ^(⯊Rd[*Wݕ8sӿdٍWtSQ]#Tkg Vc=w|=¶:iiur]qHgw|Vb-O| kj?cZ[nO8^k}#=5{au^'zLVў‚q0_:~|TgC˧]Z3>96ߗNx;࿅>(~'36}"Hު@~BnOzi%~]O*^צבU@xV=sx+\ˤd{ `r1r %[OZn@.psqtF>aBӢ }/OxOƯ(<'F B?IIfU#!Λ1+\s7~&$cogzr.g` ?60yZRl7XZ+تwվ!S_^Ykkɾe+6؍`q^ǿuuB|Յd* Qz}CkYhW(lQcAmA#jzjö3j>iu @ݜ(H3W#寖xژJ2} UcծgxQ|Z& ^&KP\ra tC_UZ8*tc;>S3xlFg;鿿~Ƿzv㿍tw /q;쇃ZR{`ݬF\j8r=V/߱sYtVh^kI#%A[5_>KK+Mi4eLq/đ3,.˞+ͼ%-7YEpTc 710̇JqU/hd4-:ovi1-)EG=jgI ֓%M3$zh Kyg'uRR]IkQ|4Z=O֢wZN}]Y}mo)Al=vt|fXex>V}BK\+,dP4UUnF.nq*lK!+q{|,t7=-t YK `dolp9|GCX4> Ñ[sz[&\r4p۶.E?2[q_Gϖr7B"#62 sS}h/đO lh$Kf ,2$_Kӭ:z|js*3.,2n)A'BG]֗Xho=RsnI?i_MgĚG,Xd6sv=Vk O,Î{`kZh|7C/ˬ7Z޳YCE.HX9\<ֺƟmq,92121]?| 'e֛u #_rB\!kcNK]j0|cZXI|1Aw~ 86N&㸓pwfg-F:O{w~}k2H?JǿӼ)!v~Aah_?hKRh,vQ$ɷ*5m|r<ֲ""!,gʗ?{_Ļ!m<9+h-?|8S*տo|S Hs&Nݔ7[j}'O Jh4#mELG<G53eiI˗ᙏ'']ykf"8h:]F܂q$Q_[3 z>"̓ʡw.r.֞k:X,uitY'|!7^j6Zjzjmqhekvo 7 =*onM#2Y"H91UM]{W~ |7-Su8,5BKqcw \εይ* eMωq'V@;՛O:fe?|9j^9uR,h#r~Օ} M쉧k *|v'wH?7ZӤդ27*{(QˣF~#|@ o<=iq2]u*,A>'y61Iww7jdfH=KjVM֦ٜV;zIP+/º_|Aku; -5ʯPc\gtO>+Gn t[WcW =_ o^//T,l77t6#g$`rH|?!Iд$ X±WȞX}axh~ϫd2,J cۧkILJmk[CSB%DZhJR'F2 Sv*ѵ8f7v"62y[Xg\9+r@e .ysn|293.gi5Ri[%U4i#~ '|yAOSg YotWdx @(opX xx_tx=N?f>dž55=~G|H<Ŭ.c4@ I x>hMqDnd@NG\O8EԼ ȶ+᤺ׯl{)ngˆMs_.Gyx_N-b VkI'YcVmW[o?xEbcN*d%AFCzVj6<}">"ռ_oO%yXA!߆o92dcK7 x3\G'S]̓5ڮ!=)ev΀n+.sஷw#? <YAG xO8siɾ뷘BHRSo.ZNED{y=,E|z6Տe&/x[MG1EtļJ2Gtez*/1gÚ*ZZB ӦOk3|~(_|hOKqu1@X/R`iߴͮ\;&馍?yI.?Wp:J=Po_]jI|._|UNV~vtX[[XO;{Pg*G5u/~%(D,ZXmϹ|W^1jchko͢i7(kZjc&UQ<)U%:8 ho>)k~Ohy7HFeqX{]gP[O6Xi!ʗ;9>uf+׆?rh&:|Q](RxY>*$b[q˗InH36؉$֔il7\ѯpnD۷gpj}COׅr_K) 2]-zaϽl۷5sk\}pÞ3k+#˕N/]4O{44S3,Abq޳_5͝iJvܿ9=溏[j[?چ'^{i>*%y"բfb~7X1BN:?S˭xB/h隮uhпlξh?h?!ZÍ2{|{kӦؗ֔_7<#{&u{nj/Ɍm.\徘fGƿxĭg|jZMSohcxÆPpvm,m}{*R2w_A OkIrԐm z;~Y-gWRMoe!/mprJXr /߈?xzxʷ׭7<'#(7׊7^*Ӽ39t8[ǚ\\;opKc<MsdQ E;#aku)n,DYcw+_?׈O-[F%^|L`<>C}[]'Ŗˮ^(#ԑ2٪ npZ?rǕe_=-n٭b otRD$@ bxv rc".J &vɷ0Z[A ogčs 0Nxu_X4eR3*nj|ԑY$[_Itks$;0U󃟦?ZdԴ-4n"&8SaCj׶~.txLӷG!uz e+%I:ߙ{N .vqoc G?[lj|%ufnq{wyr?#wŽѻ({&4 K0!#c޺x1KQKujNz޲]:5]itnq]c|LJVDoK΁6񹹅7UXzMX>O#=S׏1E $&[MWV{m>bG8l^3-ּa?Ûۣqxsۑx cJ=G$e؇g=o7alZ6=2xs\+-1,yvڠpArO1Nzh6s,"6rDL?^k_ dwl57:j7 D1+RA[ƾ# O<,L~-3]EҪU?K0=S|Ki|7|%>Hp_-EQ /hVյH|5ykW Cy sָ "75ĺmRZ5ﮮ DpiPq8W3:>oiNZ#"Jx+:(9kcܺ*OUoio T׉'\f23\|-dGĊO|m_ ZG6qox.![lN>M\^'L $`}kخ<[mjʹŪ?R5jƴ=_Q/ڮ2$*6CIScӷ +E1?1Sx~GWߋn[O(@WC?Ëg[<{{u&w$%S{3*_+\I!k ڇjq>w6+? ߶«_#S 0޲$dž݅'ڳ'Nх7Ĺ{9n>#b Uco7m2?7lξx/CW AnbӒ5ӴY *Lת05ɴHh{E<+>x?PK0KxCAl1N!eQU`Rլvf RRojIk׾.z+iZɧKVXX rcMKMq =&.V,1 v SF.Sq)Y$Pj>x?"LHY 7`^|jˣ>(x:Ca6$[ևiz:>=u ^PC#:'?s> @YM%pG ~ZZM(ݿkuz4hݟ=JMFxo¶hwwrBd]0 aV;4ݗֱ%W ܫ:뷷\VaؙK@*A+T j,"{m0Z=r$G7BF2x7=ėvF3Mq}+YhnwO]mTMʲ_yx ~ҟ tx;7W&;N8XQ^_VabA~^k>oDUxR<_{I㯧m^/k>9>ӧ3xa &׭]*x?}ٶzK*x&ŨjڶmiS@-lwLdq3b+0WZ[}=.[4ce裞qZ/ |Z"jWr<3T@'aL ZdW90nq,.9ouD{lCK0=~k*,˂c!Mգ ;EH4)BKn+ QgOG|Vĝ ?M#^ޞ͖nH?(Q$ʃ0]qe7{Ii1OgߢLmar*B ɗGQks/NjG4Ph7^\lqqϵM hU˕|/6/x|m#Dd(r۠G@#U-kᏌ|?,ZV9"p`FLAx#!Zt8y@n0A+{ß@NLr$[ qȤ?4 -j{R=& gynf9T1*%J!R-0`6ŚevMlThpj=I^ud #@ Im^ γ bkKK`00ކۚV:gJ F_RG1?QR|cզ,,XY]K;yx^??|4|m.Zjg$|_ޅlz!}cKz״[Nd\>f_=sν^N7>|?o6ifc R'% OҰi_<u>&մ5݈^yr2Ǒxw|q7ͼW:ί̻My?NKU'dxÞ~zmM0K$âP3P0|R/ R=#➫ ]x QY$[VIXzV7gFys6ddk2ȓ%8?6{g +}Kƚo-OEu+Y%2j.xPUؿWoYxr{M.a$ڮ〠ןR֔ޏ=Kᇈ|%୯CRI7FS ^ATe'28(f/yla4}a;UA dn5_ΟWQg5,VO]5ʅ ϵ[pVBxg ֏e'(#F䓮vPpW5ugn!*u/y=zOuPxPm"h,mRO:1]VZԱ}VUO`*xQrOj϶Z_si<+sw}hXRHP3qO|WOt}OC?at3D2K84ijyokwA.- zuK8Y$ Kw.i|8[ r+"O۴;ei Wɺrmr8'kwh60 s*I QF޾WFqN_[F4ZJRy 9}ʨ-p8\)xc>)x^)ZM[f4H.^[>Q8:Sl?e"Y$)ߨjs֕xW+-9A~雑׷ź7éДh|ϧuhz«|ŽzgkcMjhVYddg j{sNoCm.vӯSQd;z(uk{kn-y [< 3[xO^!Wo j|67 Pc+9]YQvVk0=ì0y_j~,ucy]3Li7Y3qlw__UTWßx,,TڡBoY:GCH{RZ\̲ Wm:$>/ >[iWeFR]'wC,9&Hۚe{}JWP>U1h3׏NwD4VV|uX|*gzMgblʞ#HIŮ`$CbQ*z;5/%dH"h33k #V5dÚ;'aLˀFczxsq5HliWדR(jLj2֯6d3WT<ӽrz!jZ7.t;+gsuzd:/Ylf $j |&W|k~+kC,.֙yʲlm#8V^L6z<760oYj-YuIwo4L:aW|?k<AQmMY~peI$}ټ']ZUV75ZƤe}jg$f\Z:׃%h[Z!ό Nx5 isףѵxg|[xݾjv!kHDfL2b ":C!u/75*sNmr0]|02D;/"iO {K_27^:ٯWI&湷"F E*quRK;Q8; fMJmC wolna\EIr-^ 岇BSO?Losw]:vj|m.%ZcfSK햄r>E;Lg aVizfk ]J@96.䙃cyKWvlehu ~Ux F]+)w]FI;BܞvtOzl=(v#VƼu ]KRrzⴤZf(|ыK.J/C>Z|Mu<16{"d&6LG=)?bi/,DWr–9\c\u/a-Q\꒟?85éO./(QRqZ^[it,mIׯ2k{)KnHhgv F3VtEm,W6grN+сR G5*;dߙmWZM,f*jqZгƟUW'ƙ+]B;Hq}%oo9--oow#YB\WWkU]\cHWq@!J\X(UkǖOb7*\[#AQ[I5+o0Y8yWAt+igwY-FoXv2go ;ۗGKK1^y&.w gPFyKًgf|Ckm6# LmAc=?Z/?]𽼛 Jk~__ua=όLt;}P[|4HЅQFI'_?E0%S)R)? ϫk:8u#ag(rr?*CbXavVnڵ-olgҎ㹣ۻYw`ă3zOFlbtxﲟ^;f5)l[Ds>q2~ltZGڤ1y[W5v>eR @A=ήZV4+"i} q]1{)]x\ithMʣ8#>FR~~ M2ǥi9Q\z^{)P5 cTL6sz<+o[x_:Vͤ]ڂ':aމ.Wpwiz&uhcI{t26vn ư,4R; ؘ |"~$3mvNeM(eNʑӧC+xHqbDUl7ܞIitAuIfXІXR29oztSP𾏩fhY73c#{-/5O+?r{_B$]:1u┉$HdPIX6ԟm˲>O+W?:)S +,VD(fvs85x%x\lGPY|'[dI+M ?~5agB.&m3©\1Npti ,~gĘ)QjNdD4v Ő 9㏢ΚWg#:9ӱ#WW-t3Oҵ)cETa\dܹj_GJI쯼Kڊ2ܕYZֽ魾hzƍ ,EO G*/w܁~b7c<6;e<٭rS>rŵ1g]G, rCjkMG< ez5xzO~^j:2>=KƑc]Ey JnNx-_O~߳ k_}ޠ?٬.t]+y,Z49r;ƚLׅyCӯP![tLŢ) 8^+>/Z/n'GɈ D rœqWQM$GRl<5޿O׃ne% H,O_oX>2x>2O:UMgjؑ+aVF:^kQ?oGk۝ j7l =aZ|@cjmv7rYN|cUcAwdGxkrԓ{Ь9/;w<1x_A-bť-O{?pV 7ʦdܠbɮK 4['յ}F{_:#i$y6>Ҭ$9KaP}tq7,$HK {Vs嚸Q/_3?ׄdnoC}#GMX!kkX&FnY.ώnqǯ|yߏO1nmF " d$Ÿ|]}<6qj{k#[]+y,Gy889w?u?_|>隤SipGl$EERHdЬ=|-?fZMuG_϶G»WOKm |ڼ~xV~,.coͷ+g'&{^_kv~ǩjW_(1`v:gڬ|[t%x2J#Ki-at:jUB}i)[3MQuk˨k׈ Q|([?Em}݆.j%}vH=ީsFo|9iז! 4T]B`c܎VT:Q9hcdwVSC,b)J呃F2?65/|4{[bmg=̘%#MfjZ74u𮿢^Ǫ]-*>'q z?x m-cDxm56` w=<Ӿ5'f^ MWy$F+ŵn`b~GBv8_C|><h6y%Fp=<]?{n|E ռWg?(/䉤I-&ߛ/4crm  dЫVݯQFSJ^j:)wRF[b)]_eҪY_c}u|@f,%+DX zoG:k7V6|]nuCWo%G[k%+%ʲzZ&\~|YY|;-J]Y4i./,S o/QH6;|$'|)itJ-rג*n`90bpsʌxG]|;䚾?dO jP3yAn\ sU >c%7 (@[dra85Pn%9c  Kh>-m$]$, ڶ|,ˡj M?P*<)ϓ66371^@S. Wnl4}'ZHqCF+3EtFjIlt_-4G–J JD u`wc%r:v"<O}֟owJ`dޖs, zLx8Zim`THݵLn`aicsۥԀ[Gi",A~9CYNu$+sZFJ{oku}|YT&_*N<#v%l2u$ad[S̵9񎔗w;.F@ryk&_'=CZѵ]&mP<Α+H-9?#h7RR85u8}j珼Ems.avik #sELv`ٟK?kᯔIliF=Ub5ku>*񕷈t=QXMi/PxYb@=q@9+ӧ{WGf |O-u{;d]VvP񃅵1 4zkz.ZDV4+ۈeYz`zU }#64RK6JpG*=#vu\#*O \d~55ֻm PxdGџLJ).tVE,<& 8M!Ziu]L15Dr7;Z?bwK5ɼ?v#'>R^,o#-fڪ}}+&nC^#M_].˦hW}y(; <nf'i~ csv x, y 1, 2 csv x, y 3, 4 1, 4 mapnik-vector-tile-1.6.1/test/data/linestrings_and_point.geojson000066400000000000000000000016071324304754200251130ustar00rootroot00000000000000{ "type": "FeatureCollection", "features": [ { "type": "Feature", "id": 1, "geometry": { "type": "LineString", "coordinates": [ [ -180, 60.020952153748 ], [ 180, -60.020952153748 ] ] }, "properties": {} }, { "type": "Feature", "id": 2, "geometry": { "type": "LineString", "coordinates": [ [ -180, -60.020952153748 ], [ 180, 60.020952153748 ] ] }, "properties": {} }, { "type": "Feature", "id": 1, "geometry": { "type": "Point", "coordinates": [ 0, 0 ] }, "properties": { "x": 0, "y": 0 } } ] }mapnik-vector-tile-1.6.1/test/data/poly-lat-invalid-4269.dbf000066400000000000000000000001151324304754200233660ustar00rootroot00000000000000_A WFIDN 0mapnik-vector-tile-1.6.1/test/data/poly-lat-invalid-4269.prj000066400000000000000000000002451324304754200234320ustar00rootroot00000000000000GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]mapnik-vector-tile-1.6.1/test/data/poly-lat-invalid-4269.shp000066400000000000000000000004741324304754200234350ustar00rootroot00000000000000' [VG@1seN@h[VG@1seN@ ,@VdDEHnT^ZV[O jQ[ HR1seN@&@1seN@G@nk5@3@_TB٠P ,@HZUmapnik-vector-tile-1.6.1/test/data/poly-lat-invalid-4269.shx000066400000000000000000000001541324304754200234400ustar00rootroot00000000000000' 6[VG@1seN@2hmapnik-vector-tile-1.6.1/test/data/poly.geojson000066400000000000000000007213071324304754200215100ustar00rootroot00000000000000{ "type": "MultiPolygon", "coordinates": [ [ [ [ 160.660729764719179, 11.102727405686379 ], [ 160.659111562675008, 11.10018834845026 ], [ 160.657515531432665, 11.096796477789358 ], [ 160.65753255704405, 11.095962241612344 ], [ 160.657375012797871, 11.09562687517214 ], [ 160.657257784441185, 11.093621141333658 ], [ 160.657464541452669, 11.092293712699473 ], [ 160.656872585485729, 11.091568738552658 ], [ 160.656485804363939, 11.091093324773974 ], [ 160.656439239325323, 11.089673932247242 ], [ 160.656824006437631, 11.08786014964401 ], [ 160.654974357230685, 11.087468010545621 ], [ 160.65406271785244, 11.089957047866969 ], [ 160.654109289434388, 11.091376406720709 ], [ 160.654155848432879, 11.092795748962516 ], [ 160.653354809570004, 11.094187118370879 ], [ 160.651717721063306, 11.095567539656274 ], [ 160.650236963479813, 11.097266556894384 ], [ 160.648385871404571, 11.099972864633127 ], [ 160.647064731996494, 11.102026761644085 ], [ 160.644240088159023, 11.103537952995296 ], [ 160.643896841954614, 11.103697913153159 ], [ 160.643040858197025, 11.104498037407692 ], [ 160.643033182002426, 11.104507141155578 ], [ 160.633069003803541, 11.113842195636524 ], [ 160.631949031408482, 11.11456021947823 ], [ 160.631605819796164, 11.114720124466141 ], [ 160.630492979567464, 11.115439288888407 ], [ 160.629489310188887, 11.115092690383756 ], [ 160.628583981416369, 11.114450854459443 ], [ 160.627982493738813, 11.114537385404624 ], [ 160.626456735177442, 11.11483359220504 ], [ 160.625515723432358, 11.115068704434245 ], [ 160.624860327793414, 11.114543679212355 ], [ 160.623052788461735, 11.112498581758041 ], [ 160.622047047524973, 11.112132198752379 ], [ 160.620776836544849, 11.112516282926387 ], [ 160.618362623922451, 11.114450886387926 ], [ 160.618267776236166, 11.114697328367898 ], [ 160.616786990331832, 11.11641260981162 ], [ 160.616444693497499, 11.116575649543551 ], [ 160.615203691261144, 11.115286740170369 ], [ 160.614623017823845, 11.115350059991066 ], [ 160.613848480134976, 11.115927947067616 ], [ 160.613836792442356, 11.115934828583535 ], [ 160.613208189419566, 11.11764592150803 ], [ 160.612095554888441, 11.11836510164917 ], [ 160.610900686654219, 11.118511909393527 ], [ 160.609067366573356, 11.118108316255126 ], [ 160.607325377384711, 11.11666140048875 ], [ 160.606569282268197, 11.116398302922351 ], [ 160.60472518115364, 11.116004802120642 ], [ 160.603765659588248, 11.117073960105806 ], [ 160.603723872411592, 11.118743640340154 ], [ 160.604270125981515, 11.120334145489947 ], [ 160.603380068449042, 11.121972635642051 ], [ 160.601478823320633, 11.124088628818166 ], [ 160.601468768926992, 11.124095023482164 ], [ 160.6011265133113, 11.12425802231038 ], [ 160.600012352138265, 11.124977538848102 ], [ 160.598982628271983, 11.125443530395138 ], [ 160.596796028325826, 11.12523013876223 ], [ 160.595885329399806, 11.12461747028785 ], [ 160.59563152552272, 11.124529173695919 ], [ 160.594603063781307, 11.125011846816358 ], [ 160.593509113718113, 11.124896844752195 ], [ 160.59184242400147, 11.124021133628563 ], [ 160.590862698351941, 11.122822119470392 ], [ 160.590067308956208, 11.121142176599426 ], [ 160.589155388823912, 11.120512883887921 ], [ 160.588560470607092, 11.12060432798604 ], [ 160.588316612208615, 11.120502867131078 ], [ 160.586690845485521, 11.121043661091274 ], [ 160.585940501974591, 11.120782363684603 ], [ 160.58402584797841, 11.119803130286604 ], [ 160.583269865905464, 11.119540116411704 ], [ 160.582340729735819, 11.119761529332479 ], [ 160.582639591297635, 11.121268346594681 ], [ 160.583022436437091, 11.122538829600568 ], [ 160.58336551500247, 11.122378984831741 ], [ 160.584072546285029, 11.121221208882456 ], [ 160.584080852357658, 11.121208513903451 ], [ 160.586487618774328, 11.122375730333566 ], [ 160.58655742652067, 11.122958460548539 ], [ 160.586100270311675, 11.124202254775055 ], [ 160.584987882976492, 11.124921237364184 ], [ 160.584550857441911, 11.125330569165335 ], [ 160.584530726335373, 11.12616498584814 ], [ 160.584937960295946, 11.126586127635562 ], [ 160.586858477907896, 11.127550025432999 ], [ 160.588366645413458, 11.131176210037417 ], [ 160.588614910866568, 11.131262736098257 ], [ 160.588684684777803, 11.131845433356171 ], [ 160.588156820011676, 11.132503269868835 ], [ 160.587546447138379, 11.13339694912119 ], [ 160.588044197052284, 11.133586685103843 ], [ 160.588884168707693, 11.133613475199388 ], [ 160.590250512923149, 11.132982885176117 ], [ 160.592016234215492, 11.133597387311516 ], [ 160.592489793530433, 11.134619324733793 ], [ 160.591836325601605, 11.137196197388707 ], [ 160.591034339770545, 11.138569260791687 ], [ 160.589687035859527, 11.138379383739043 ], [ 160.587861439438456, 11.137169054130757 ], [ 160.587204753925448, 11.136644691074169 ], [ 160.585861768834292, 11.136439943074596 ], [ 160.585195146431772, 11.135928770015772 ], [ 160.584127122576319, 11.13498110828699 ], [ 160.582714384566941, 11.134193736561448 ], [ 160.579178742412239, 11.133770708381702 ], [ 160.578173355859832, 11.133404463055598 ], [ 160.578014404522719, 11.133069869279158 ], [ 160.577353310693837, 11.132560518287377 ], [ 160.576899882151054, 11.130704397301535 ], [ 160.575653398355911, 11.130252959152632 ], [ 160.574542988879017, 11.130163369562744 ], [ 160.572798447302858, 11.129508737267198 ], [ 160.57095306490254, 11.129115868154718 ], [ 160.569784679026839, 11.128443595876302 ], [ 160.568053472706339, 11.126966982631012 ], [ 160.566085519338372, 11.124599439836487 ], [ 160.565264452946167, 11.123752486514329 ], [ 160.565105760534863, 11.123400790655705 ], [ 160.564216612413276, 11.121970706119509 ], [ 160.562937929165457, 11.119265515404827 ], [ 160.560547174511726, 11.117279304885399 ], [ 160.559403085121403, 11.115757942095343 ], [ 160.557941275110124, 11.11355033713677 ], [ 160.557644796795245, 11.112046433056951 ], [ 160.557758688079247, 11.110962604037821 ], [ 160.559174966104734, 11.111738332751038 ], [ 160.560815671037801, 11.11346329651124 ], [ 160.562276266207789, 11.115654286811985 ], [ 160.563096102939852, 11.116515234560136 ], [ 160.563598988296548, 11.116693098082512 ], [ 160.563783659514741, 11.116195062843675 ], [ 160.563787950373325, 11.116180152313497 ], [ 160.56225109975793, 11.11340156459528 ], [ 160.560885236318086, 11.110964211902891 ], [ 160.560810472128765, 11.110376189434184 ], [ 160.561356506388734, 11.108884336849538 ], [ 160.560537102307933, 11.108036890667037 ], [ 160.560029432555552, 11.10786047739396 ], [ 160.558533454211499, 11.107306170498482 ], [ 160.55768917266326, 11.107294582412212 ], [ 160.556749263046555, 11.107526196779881 ], [ 160.555203065717677, 11.108640273232176 ], [ 160.554586319028488, 11.109546284026349 ], [ 160.554814575332841, 11.110467065840288 ], [ 160.555705178633815, 11.11191372392782 ], [ 160.5560756113764, 11.112918379360181 ], [ 160.55641076781842, 11.113844880674373 ], [ 160.55641576916895, 11.113857029216234 ], [ 160.556559191469631, 11.11808569548991 ], [ 160.556426860046656, 11.120003215572721 ], [ 160.556739017326748, 11.120687666284743 ], [ 160.557558799991341, 11.121548556293625 ], [ 160.558041607305313, 11.122560675339059 ], [ 160.558633610271272, 11.122483681864706 ], [ 160.559091452043589, 11.121243273060298 ], [ 160.559591935162587, 11.121418435212982 ], [ 160.561139102246557, 11.123389286294421 ], [ 160.561964045133379, 11.124238455659235 ], [ 160.561869260395156, 11.124484763116502 ], [ 160.56218628383624, 11.125174597411416 ], [ 160.561830262795667, 11.126139305234263 ], [ 160.562878168555073, 11.1279209722325 ], [ 160.564017708914434, 11.129457284140063 ], [ 160.563999239473958, 11.130291038968458 ], [ 160.563546478475331, 11.131519594927084 ], [ 160.563537060334397, 11.131522392511979 ], [ 160.562860429278459, 11.131839183966818 ], [ 160.562014673900194, 11.13182785886293 ], [ 160.560354253422446, 11.13093707914895 ], [ 160.55909557289678, 11.130496228599766 ], [ 160.558156553772562, 11.130730754521057 ], [ 160.557302264599969, 11.131539843544152 ], [ 160.557024292620952, 11.132283583844613 ], [ 160.557002967860768, 11.133101073212377 ], [ 160.557568925806379, 11.133873697373788 ], [ 160.557728745150257, 11.134211371091766 ], [ 160.558212221237056, 11.1352197918124 ], [ 160.558773751085624, 11.136007364262037 ], [ 160.559445582087847, 11.136506582525199 ], [ 160.559668156073457, 11.13742545781254 ], [ 160.559490596847866, 11.137924629636638 ], [ 160.558809736198725, 11.138232398333416 ], [ 160.557123482915813, 11.138191099895295 ], [ 160.556203456139713, 11.137605403678073 ], [ 160.555204145831539, 11.137223876814605 ], [ 160.554453869740598, 11.136962681746363 ], [ 160.553174678948892, 11.137342448652214 ], [ 160.552334916054946, 11.137315714170956 ], [ 160.551510096108075, 11.13646664682298 ], [ 160.550941784451823, 11.135691375113577 ], [ 160.55062453447303, 11.135018778280482 ], [ 160.549704518485015, 11.13443313740191 ], [ 160.54852694741831, 11.134554448846222 ], [ 160.545996400872639, 11.134494747393928 ], [ 160.545404869731527, 11.134554520571623 ], [ 160.545130945778681, 11.135300382771062 ], [ 160.5456129013929, 11.136309119888187 ], [ 160.545340601863359, 11.137054481304151 ], [ 160.544902089447078, 11.13746411048237 ], [ 160.544634206636687, 11.138194514184894 ], [ 160.545111724224284, 11.139218174046469 ], [ 160.545771055408693, 11.139727822943659 ], [ 160.54693615172917, 11.14043150934917 ], [ 160.547353565596353, 11.140852823449679 ], [ 160.547323160054532, 11.141686500502152 ], [ 160.547049329219135, 11.142432267862487 ], [ 160.547119982080233, 11.143017846776718 ], [ 160.5473681753748, 11.143104332235081 ], [ 160.547691030267032, 11.143778611204324 ], [ 160.547507842508168, 11.144275965798011 ], [ 160.546169647617916, 11.144056404995776 ], [ 160.546160470477361, 11.144065943054866 ], [ 160.54573310963633, 11.144479021367124 ], [ 160.545205443128708, 11.145136537446842 ], [ 160.544523153195456, 11.145444677635258 ], [ 160.544276599657877, 11.145357709229042 ], [ 160.544320859213713, 11.143691960905878 ], [ 160.543474643741007, 11.143660323243193 ], [ 160.542176801016041, 11.144890594378104 ], [ 160.539785718685295, 11.145988604944991 ], [ 160.538920766257178, 11.14680752610397 ], [ 160.538552041450032, 11.147799425930344 ], [ 160.538602554222336, 11.149218842621034 ], [ 160.53850741750702, 11.149451503537437 ], [ 160.539060256880305, 11.151059120170839 ], [ 160.538607532281446, 11.152287124750019 ], [ 160.537119383602828, 11.154013133743222 ], [ 160.535826279913351, 11.155211068909272 ], [ 160.535279863420755, 11.1567018420926 ], [ 160.535761662454519, 11.157710369351626 ], [ 160.536418965306751, 11.158237580111448 ], [ 160.536145117395137, 11.158983131855265 ], [ 160.535121436945246, 11.159450352941487 ], [ 160.534827413276048, 11.161029672777046 ], [ 160.533306214462868, 11.161307214212856 ], [ 160.53247999642636, 11.160458827055683 ], [ 160.532231844391589, 11.160372339146983 ], [ 160.531873151907376, 11.161350816294407 ], [ 160.53177394507324, 11.161611887287888 ], [ 160.532093568430383, 11.162286930774757 ], [ 160.532098690514005, 11.162299036734474 ], [ 160.53215614635144, 11.162867899952124 ], [ 160.533414916985009, 11.163322264920799 ], [ 160.533735686890395, 11.16398334436353 ], [ 160.533740809634509, 11.163995451702997 ], [ 160.533528760014121, 11.165325530934386 ], [ 160.533853010801181, 11.165999195718557 ], [ 160.534927343006302, 11.166934089140875 ], [ 160.535239272357984, 11.167618221816653 ], [ 160.534717532357803, 11.168260063574509 ], [ 160.53344421427559, 11.168641105496732 ], [ 160.533435910611928, 11.168653787189173 ], [ 160.532738989717217, 11.169797183990903 ], [ 160.532122176647931, 11.170702211619737 ], [ 160.531191821964399, 11.1709236162213 ], [ 160.529340503480455, 11.170542644190023 ], [ 160.528775198998773, 11.169783980077387 ], [ 160.528291982439896, 11.168776031447591 ], [ 160.52790860170856, 11.167503446224636 ], [ 160.527495960082405, 11.16708085388631 ], [ 160.526241989752492, 11.166624964359585 ], [ 160.52537796967809, 11.167446655659329 ], [ 160.525287473939926, 11.167677861486684 ], [ 160.525764772169936, 11.168701167957096 ], [ 160.52624886025896, 11.169712238048229 ], [ 160.52569981034398, 11.171186375925517 ], [ 160.525606241796964, 11.17144913433488 ], [ 160.525088554568015, 11.172093110510085 ], [ 160.52422289927361, 11.172915197452042 ], [ 160.52421261208994, 11.172914843060505 ], [ 160.523035584284571, 11.173042511016382 ], [ 160.521691811213913, 11.172838183218653 ], [ 160.520603315628961, 11.172721640907337 ], [ 160.519915997200002, 11.173041265940888 ], [ 160.518713401811084, 11.174007516859696 ], [ 160.518688834818079, 11.174825344533836 ], [ 160.518690693423991, 11.174838414998925 ], [ 160.518986027546617, 11.176344661467628 ], [ 160.519622223785291, 11.177702144798733 ], [ 160.519006215073148, 11.178610167816295 ], [ 160.518419621259369, 11.178668304560224 ], [ 160.517075913282582, 11.17846394722214 ], [ 160.516235577619341, 11.178433864976617 ], [ 160.514617925911608, 11.178974800630842 ], [ 160.514518846654539, 11.179235742880495 ], [ 160.512902849381533, 11.179776178874121 ], [ 160.511629754434182, 11.180157051808079 ], [ 160.510628991344589, 11.179793161351101 ], [ 160.509211132019686, 11.179014929069 ], [ 160.508625450347438, 11.179076219655721 ], [ 160.508282451211556, 11.179235811924739 ], [ 160.511126654163007, 11.183064405181108 ], [ 160.511678799027607, 11.184657747113064 ], [ 160.510887146911813, 11.186046593795032 ], [ 160.510442454194191, 11.186450812757503 ], [ 160.507737753642886, 11.186891641780807 ], [ 160.5056446946069, 11.186408920864784 ], [ 160.500502741250727, 11.183428716026997 ], [ 160.499248691084404, 11.182990181116169 ], [ 160.498404174312071, 11.182974998933314 ], [ 160.498148078914795, 11.182884095788173 ], [ 160.495348833124609, 11.183571055016598 ], [ 160.492733195794585, 11.183743955454929 ], [ 160.489118085206059, 11.183569771973461 ], [ 160.486112996241246, 11.182472603336471 ], [ 160.485172168210539, 11.182703919164352 ], [ 160.484147750726805, 11.183184710732762 ], [ 160.481487186165992, 11.18502540498724 ], [ 160.480207605045592, 11.185418424630029 ], [ 160.479953045461713, 11.185327096756948 ], [ 160.478202080236855, 11.184705874068058 ], [ 160.477527189196849, 11.185008114394037 ], [ 160.477686873798774, 11.18534543472823 ], [ 160.477910465049433, 11.186279952966185 ], [ 160.477481227387528, 11.186672741196066 ], [ 160.47695382511904, 11.187329510378266 ], [ 160.476119375430841, 11.187301190307984 ], [ 160.474453446161419, 11.186423316011114 ], [ 160.473860997639804, 11.186496860330259 ], [ 160.471652326183829, 11.187107490548563 ], [ 160.470792112761302, 11.187910571497262 ], [ 160.471268015078522, 11.188916568782895 ], [ 160.471063247384279, 11.190246898401517 ], [ 160.469811082419966, 11.189808034862242 ], [ 160.468551779047203, 11.189367897283041 ], [ 160.466717548947287, 11.188972298530686 ], [ 160.466463886227132, 11.188884129478311 ], [ 160.464301142826798, 11.187830346465489 ], [ 160.463545926087022, 11.187567551712728 ], [ 160.461953838099248, 11.187273811463511 ], [ 160.460292802389205, 11.186394687946462 ], [ 160.459268236389647, 11.186861881065152 ], [ 160.458180230657717, 11.186745450984453 ], [ 160.457265585973062, 11.186158980624853 ], [ 160.455922435961156, 11.185954858390852 ], [ 160.454643828045249, 11.186344103877905 ], [ 160.45020893311289, 11.185304124323908 ], [ 160.44920930797673, 11.184936920920832 ], [ 160.447564030595174, 11.183239898567329 ], [ 160.446565157427784, 11.182875903737854 ], [ 160.445129366820794, 11.18293079750411 ], [ 160.44421440688248, 11.182330923337508 ], [ 160.443309500119966, 11.181717865041191 ], [ 160.442147074547734, 11.181014438710283 ], [ 160.440709689007917, 11.181069854337933 ], [ 160.4335489117571, 11.181281441031873 ], [ 160.433300927737974, 11.181195058575277 ], [ 160.432449864933943, 11.181192295869007 ], [ 160.431540996180246, 11.180577113090111 ], [ 160.430694354092765, 11.180559437403186 ], [ 160.429167915723241, 11.180862542130036 ], [ 160.428422754567322, 11.180586766428494 ], [ 160.427852141212554, 11.179827027140785 ], [ 160.428058252954656, 11.17849653868179 ], [ 160.427487628393209, 11.177736798787549 ], [ 160.426054662305461, 11.177777416347039 ], [ 160.425456893599403, 11.177849283208543 ], [ 160.42391579138706, 11.178973516452832 ], [ 160.422573975491503, 11.181848769019274 ], [ 160.422236850522836, 11.182010033145119 ], [ 160.421734530871049, 11.181832387180938 ], [ 160.421410273926341, 11.181159553304207 ], [ 160.421094786827069, 11.180487519832827 ], [ 160.420338861857942, 11.18022178834522 ], [ 160.419572233362146, 11.180779307653136 ], [ 160.418884471958989, 11.181095646741666 ], [ 160.417902221205679, 11.179910278568757 ], [ 160.417315920640931, 11.179968539546245 ], [ 160.417294422168112, 11.180801780259413 ], [ 160.418367318905183, 11.181739066335386 ], [ 160.418594643109486, 11.182661808072691 ], [ 160.418072203999657, 11.183316986084947 ], [ 160.41745887789196, 11.184206675758233 ], [ 160.417210920705713, 11.184120311823433 ], [ 160.417416885092592, 11.182790038070772 ], [ 160.417341945576197, 11.182220209025418 ], [ 160.41692588534147, 11.181809427379903 ], [ 160.416159555964214, 11.182349822760735 ], [ 160.415566475546541, 11.182420293478804 ], [ 160.415409172691398, 11.182085871114872 ], [ 160.415340145210337, 11.181500683481563 ], [ 160.415519820000924, 11.181005032443471 ], [ 160.415017518833537, 11.180827407661912 ], [ 160.413817532666798, 11.181792499605818 ], [ 160.41331523801864, 11.181614876907739 ], [ 160.411973073959786, 11.181407430339396 ], [ 160.411128176085384, 11.181389306799229 ], [ 160.410605146583777, 11.182048056972953 ], [ 160.409494980071656, 11.182761907073932 ], [ 160.409538505666717, 11.184178002120191 ], [ 160.409269061705373, 11.184924798769597 ], [ 160.408835810648924, 11.185332316838744 ], [ 160.407582845322963, 11.184877262876864 ], [ 160.40769812100163, 11.18379515098772 ], [ 160.407804465308317, 11.182729282033451 ], [ 160.407651450494598, 11.182380002726802 ], [ 160.40785306917428, 11.181064690518379 ], [ 160.40753485474346, 11.180376543898234 ], [ 160.407117174447876, 11.179966290289768 ], [ 160.406531043079013, 11.180024524207198 ], [ 160.405325992960343, 11.181001322545486 ], [ 160.404397155115277, 11.181219080035159 ], [ 160.403894886161993, 11.181041485035323 ], [ 160.403324321084483, 11.180281941903718 ], [ 160.40273093683308, 11.180338932058982 ], [ 160.402637521089673, 11.180601412442359 ], [ 160.401252514365098, 11.182060268480535 ], [ 160.400316919341833, 11.182290236572721 ], [ 160.398796106375443, 11.182581574344924 ], [ 160.397294393358123, 11.182037131684979 ], [ 160.396290650376159, 11.181685157620921 ], [ 160.39513314599273, 11.180980773116417 ], [ 160.394129375669536, 11.180628691707023 ], [ 160.393284451570622, 11.180610651474055 ], [ 160.391153701779587, 11.18179065350364 ], [ 160.390652220345203, 11.181616273384213 ], [ 160.389580087635096, 11.180675692146457 ], [ 160.38926623903788, 11.180003382705943 ], [ 160.389261991073113, 11.179994436894098 ], [ 160.389127227480344, 11.178836922238652 ], [ 160.388804598062393, 11.178163810171272 ], [ 160.38814506011343, 11.177651923983857 ], [ 160.387642705220202, 11.177474419497607 ], [ 160.386913964284474, 11.176377515225255 ], [ 160.386686342766808, 11.175441462557078 ], [ 160.386205510980034, 11.174430869034468 ], [ 160.38578907658308, 11.174037356789585 ], [ 160.385386142912381, 11.173582003082739 ], [ 160.385059332689906, 11.172923739254678 ], [ 160.384399656243403, 11.17241191746945 ], [ 160.383311254406379, 11.17229273676177 ], [ 160.381969302586413, 11.172085533200008 ], [ 160.381557676943544, 11.171659991807974 ], [ 160.380807407966415, 11.171396224349801 ], [ 160.37998843656348, 11.170530277217958 ], [ 160.379238170282974, 11.170266519846356 ], [ 160.378303713086979, 11.170499721571439 ], [ 160.373055243667352, 11.174765743095561 ], [ 160.372960244656241, 11.175028664335928 ], [ 160.372532432291536, 11.175424396204138 ], [ 160.372166058410812, 11.176414187795338 ], [ 160.372646743042765, 11.177424669172694 ], [ 160.373629731188629, 11.178612616062217 ], [ 160.373861753665523, 11.179533619785225 ], [ 160.37351924966822, 11.179693100899087 ], [ 160.372425038930089, 11.179589260559046 ], [ 160.371034761266259, 11.177960966042521 ], [ 160.369551975127735, 11.176598257772211 ], [ 160.367323393461874, 11.174956932612682 ], [ 160.36659467299998, 11.173860246075124 ], [ 160.366272030070803, 11.17318726406317 ], [ 160.366611736519701, 11.173042190617164 ], [ 160.368460015996732, 11.173411922935447 ], [ 160.370478062712436, 11.17329926243443 ], [ 160.372095680837845, 11.172764607087753 ], [ 160.373209765453083, 11.17203584565819 ], [ 160.373824032635014, 11.17113227831646 ], [ 160.374706412702153, 11.169495913040564 ], [ 160.375798928920318, 11.169593390161628 ], [ 160.376914390072415, 11.168887978385124 ], [ 160.376274956762956, 11.167526480805524 ], [ 160.375632459190911, 11.166196508092554 ], [ 160.374723632640183, 11.165581822364114 ], [ 160.372970444548685, 11.164962724600715 ], [ 160.372748253469354, 11.164028480434542 ], [ 160.372823757125531, 11.163805331407588 ], [ 160.372828912010675, 11.163793594843291 ], [ 160.373034637555435, 11.162463482494148 ], [ 160.37355115153261, 11.161806551767327 ], [ 160.374397869418061, 11.161837471325994 ], [ 160.374989170244049, 11.161767329952058 ], [ 160.375512950758207, 11.161118436108264 ], [ 160.376701720146116, 11.160969516242425 ], [ 160.378950434945921, 11.161778305635439 ], [ 160.379791671334317, 11.16180747266756 ], [ 160.380816103411291, 11.161329710111099 ], [ 160.381091027503487, 11.160584713475227 ], [ 160.381094677699082, 11.160573421418334 ], [ 160.382035409389431, 11.159531860359284 ], [ 160.383156714281853, 11.158804128507468 ], [ 160.384250443769588, 11.158911420769138 ], [ 160.384660098752704, 11.159347786143773 ], [ 160.384544569447996, 11.160416494327947 ], [ 160.384798145047483, 11.160504510886046 ], [ 160.385116448419211, 11.161192577291484 ], [ 160.385776180229044, 11.161704392770092 ], [ 160.386546210797832, 11.161135456213598 ], [ 160.387931048569868, 11.159676163631199 ], [ 160.388818647591791, 11.158027628585172 ], [ 160.389199679462791, 11.156216439182264 ], [ 160.389132034781994, 11.155630817516926 ], [ 160.388306885383798, 11.154780179673464 ], [ 160.38799128599095, 11.154108270869942 ], [ 160.388017353953785, 11.153273611349141 ], [ 160.388017869156386, 11.153263248939348 ], [ 160.388288475448462, 11.152532893615566 ], [ 160.38881055818149, 11.151877557311124 ], [ 160.388673732293597, 11.150706717871797 ], [ 160.387438339300274, 11.149430057290786 ], [ 160.38695819449535, 11.14842246457175 ], [ 160.386821465148699, 11.147251574773009 ], [ 160.387097200521822, 11.146509430407612 ], [ 160.387186145834477, 11.146261794279198 ], [ 160.387544795408019, 11.14528059532109 ], [ 160.386474520866955, 11.144329219410904 ], [ 160.386588332958041, 11.143260802024374 ], [ 160.385677815274818, 11.14264652995805 ], [ 160.385080293830612, 11.142725406827513 ], [ 160.385070015063491, 11.142725058730434 ], [ 160.383790790864253, 11.143928796128295 ], [ 160.382444418485107, 11.14373674806952 ], [ 160.381441212440848, 11.143381472704217 ], [ 160.38162083668351, 11.142885679609233 ], [ 160.382809816637121, 11.14274332908731 ], [ 160.382988444031525, 11.142244420079708 ], [ 160.384028981249514, 11.140944822812534 ], [ 160.385577474301385, 11.139824347158378 ], [ 160.385261445564907, 11.139138896651588 ], [ 160.385457137838756, 11.137821457534674 ], [ 160.387232263589283, 11.137620564583068 ], [ 160.39051064266144, 11.137949703095044 ], [ 160.391788774974799, 11.137559601921534 ], [ 160.393067586955425, 11.137166028265227 ], [ 160.395560612871975, 11.134992024823655 ], [ 160.395903176982529, 11.134832335049516 ], [ 160.396422607502046, 11.134191178850374 ], [ 160.397947791268024, 11.133884184359625 ], [ 160.399384287891252, 11.133831622366385 ], [ 160.400154735114057, 11.133275820456651 ], [ 160.40120069226478, 11.131964102120241 ], [ 160.40221914635265, 11.131494545536114 ], [ 160.40340404521902, 11.131366988302787 ], [ 160.404818369529181, 11.132144839231815 ], [ 160.405737327321191, 11.132746556857873 ], [ 160.406734212490448, 11.133097037423665 ], [ 160.407574918607565, 11.133129695004222 ], [ 160.407663999089038, 11.13288194095308 ], [ 160.406772546217098, 11.131444795862567 ], [ 160.40704667291422, 11.130702873601143 ], [ 160.40805071914329, 11.131054631191253 ], [ 160.408889058866549, 11.131084581514289 ], [ 160.409254532547948, 11.13009080380818 ], [ 160.408774239291205, 11.129082892809256 ], [ 160.407859885388604, 11.128479782655841 ], [ 160.406269905326639, 11.128169461113565 ], [ 160.405267360058332, 11.127817282376398 ], [ 160.40486192587673, 11.127396524036472 ], [ 160.404787052066752, 11.126809400606353 ], [ 160.405078839170244, 11.125245120477688 ], [ 160.404671289744385, 11.124804562667304 ], [ 160.403821893139451, 11.124801788350037 ], [ 160.403415216378789, 11.124364380254519 ], [ 160.403511426606713, 11.124117887239239 ], [ 160.403341564068768, 11.123793903451434 ], [ 160.403790759678685, 11.122564081402166 ], [ 160.403480282008871, 11.121880173437411 ], [ 160.400633360525944, 11.121126665497396 ], [ 160.399990407819985, 11.119796058104257 ], [ 160.398924501382425, 11.118843177574819 ], [ 160.397410716026059, 11.115228356522589 ], [ 160.397940028333835, 11.1145738256002 ], [ 160.398873182671935, 11.114340505205595 ], [ 160.399801938524291, 11.114122110376895 ], [ 160.399812975536037, 11.114118826802827 ], [ 160.400147019309117, 11.113964984428218 ], [ 160.400663919490057, 11.113320933495997 ], [ 160.400093229847471, 11.112544166488338 ], [ 160.39843239602277, 11.111679733246671 ], [ 160.398362974172869, 11.111094330351627 ], [ 160.397605074722122, 11.107744710152573 ], [ 160.397187553871248, 11.107317344462171 ], [ 160.395277806803136, 11.106363602349859 ], [ 160.394707085246438, 11.105586863812057 ], [ 160.39489216745514, 11.105092550561483 ], [ 160.395257445624509, 11.104098557310889 ], [ 160.393679088510908, 11.102981542587083 ], [ 160.392997982446587, 11.103303416864311 ], [ 160.391609334063673, 11.104761983147418 ], [ 160.387272530083123, 11.109651265711554 ], [ 160.386069126866971, 11.110615334238583 ], [ 160.385388062015579, 11.110937131814142 ], [ 160.385133678072236, 11.11084600184614 ], [ 160.383609215468937, 11.111149787441672 ], [ 160.38158755438576, 11.111264477737434 ], [ 160.380831432967057, 11.110999227281647 ], [ 160.380425500447728, 11.110558291964651 ], [ 160.380099383296539, 11.109916582630614 ], [ 160.380103786230677, 11.109901654847389 ], [ 160.380553895069795, 11.108657883180165 ], [ 160.382979502093974, 11.102798518659885 ], [ 160.382754175716542, 11.101878211789819 ], [ 160.382254161467841, 11.101703586570881 ], [ 160.381388077302347, 11.102519741204992 ], [ 160.380615286644229, 11.103073192730083 ], [ 160.379334918089, 11.107355852323408 ], [ 160.37932650568041, 11.107368569475714 ], [ 160.378710924874298, 11.108273493347831 ], [ 160.37691183925628, 11.109322911897834 ], [ 160.375894222641392, 11.109789128195258 ], [ 160.375026540798729, 11.110605613895009 ], [ 160.376102320782991, 11.111545069435524 ], [ 160.376169261351805, 11.112127694267768 ], [ 160.375085109515851, 11.115095118332842 ], [ 160.374151248094591, 11.115325293779534 ], [ 160.371243330962187, 11.113991473440333 ], [ 160.366619485709066, 11.113467849453651 ], [ 160.366366637229817, 11.113376293678613 ], [ 160.363929021745719, 11.113080455852309 ], [ 160.361421501975371, 11.112179161531106 ], [ 160.360176825028759, 11.111742850010858 ], [ 160.359939504134388, 11.110816163250137 ], [ 160.360467244758297, 11.110145133995376 ], [ 160.359487661633153, 11.108959391680308 ], [ 160.360162677391088, 11.108652978578339 ], [ 160.362190436929723, 11.10854306115878 ], [ 160.364614506240287, 11.105768970963464 ], [ 160.366506405402134, 11.104473969023674 ], [ 160.367546591005578, 11.103173716906969 ], [ 160.367478734317331, 11.102587951070319 ], [ 160.367955520905355, 11.100512484319443 ], [ 160.367720251664679, 11.09960545441265 ], [ 160.367155177818375, 11.098830650341576 ], [ 160.365899857272211, 11.0983873089958 ], [ 160.365218903857055, 11.098709193738506 ], [ 160.364442545711512, 11.099273816374719 ], [ 160.363941074902357, 11.099099696014489 ], [ 160.363646592077004, 11.097577101542267 ], [ 160.362644153178422, 11.097225321383664 ], [ 160.362301679772031, 11.097385161337311 ], [ 160.361964847031743, 11.097546726476269 ], [ 160.361687752236492, 11.098289666567988 ], [ 160.361920262696543, 11.09921109636679 ], [ 160.361835052072877, 11.099447530029039 ], [ 160.360302805854758, 11.099747103139281 ], [ 160.359965852179783, 11.099908694242162 ], [ 160.358176974440482, 11.100945072946265 ], [ 160.355402759307339, 11.103874621550172 ], [ 160.35531191184495, 11.104109304275392 ], [ 160.355303383507504, 11.10411524741407 ], [ 160.353848852041523, 11.105011147965344 ], [ 160.352650458575795, 11.105973745787567 ], [ 160.352628977129314, 11.106793641896756 ], [ 160.352629339960686, 11.106807147846698 ], [ 160.35261111470561, 11.107626067163693 ], [ 160.351496431720875, 11.108352667522391 ], [ 160.349970709759049, 11.108657016068658 ], [ 160.349469932848592, 11.108479319159244 ], [ 160.3487434697997, 11.107368135672507 ], [ 160.348241190248473, 11.107190892164112 ], [ 160.34664926652647, 11.106909140924879 ], [ 160.345483115177615, 11.106218171055637 ], [ 160.344660893887237, 11.105366971341402 ], [ 160.344095895097098, 11.10459236607768 ], [ 160.344022504561821, 11.104004966721046 ], [ 160.344129657469239, 11.102938355865961 ], [ 160.34306022690501, 11.101997384554585 ], [ 160.343239528916939, 11.101501521953628 ], [ 160.343949449932722, 11.100350722465556 ], [ 160.3470836239064, 11.099509451326929 ], [ 160.347760203000291, 11.099202482624587 ], [ 160.347106198557469, 11.098675582012699 ], [ 160.345671094519332, 11.098731865861588 ], [ 160.345007425965264, 11.098224876512036 ], [ 160.344998534888674, 11.0982173127263 ], [ 160.344775405222236, 11.097293221562301 ], [ 160.345731643879134, 11.096228974377979 ], [ 160.345591429979237, 11.095072524586438 ], [ 160.345687165619751, 11.09481254198143 ], [ 160.345306916829685, 11.089646013582692 ], [ 160.344739052742312, 11.088885808918016 ], [ 160.343094614258575, 11.08718332848129 ], [ 160.342345846394153, 11.086919574598207 ], [ 160.341318599251196, 11.087399197509802 ], [ 160.340027429578726, 11.088607621050166 ], [ 160.338349710957885, 11.091646753850593 ], [ 160.3372351834185, 11.092373565869989 ], [ 160.336721169372566, 11.093020221361558 ], [ 160.336717524592757, 11.093031518629866 ], [ 160.336441809270752, 11.093760363211929 ], [ 160.336351361490273, 11.094008549078367 ], [ 160.335361536955872, 11.096726654686838 ], [ 160.333909313277303, 11.100685203813525 ], [ 160.333415062283478, 11.103592539817543 ], [ 160.333331384425435, 11.103828460663236 ], [ 160.333422378100892, 11.10668056233135 ], [ 160.332470491590215, 11.10772965000811 ], [ 160.33213250285894, 11.107874504215429 ], [ 160.33162463493656, 11.107695581421808 ], [ 160.331738906206823, 11.106630399957195 ], [ 160.331681206337464, 11.102141626625301 ], [ 160.331299125464, 11.100860003112285 ], [ 160.330386080269761, 11.100267411894025 ], [ 160.328375989588068, 11.099555663957306 ], [ 160.327305851758098, 11.098618491087732 ], [ 160.326101492994979, 11.096509689272121 ], [ 160.324687858514068, 11.095715684096177 ], [ 160.322093019311637, 11.095079522683923 ], [ 160.31993262553118, 11.094034932988889 ], [ 160.318851582569209, 11.09309429579492 ], [ 160.318214598302973, 11.091732099497838 ], [ 160.317737581483186, 11.090737462729749 ], [ 160.316667810070953, 11.089783276704594 ], [ 160.315500844381006, 11.089089490745916 ], [ 160.313745127872039, 11.088469029108726 ], [ 160.313177314529241, 11.087709073926314 ], [ 160.312283208467989, 11.086270359434705 ], [ 160.309982093993142, 11.084056301773829 ], [ 160.309727790037527, 11.083965312907804 ], [ 160.307746966406, 11.082408025164931 ], [ 160.304945109430577, 11.080016579884539 ], [ 160.304534787167313, 11.079590917656844 ], [ 160.304715566920379, 11.079094579171018 ], [ 160.305463935394727, 11.079375241140895 ], [ 160.308879201884707, 11.080862344520272 ], [ 160.311614341961786, 11.082684976504073 ], [ 160.313415521252239, 11.084724722010172 ], [ 160.314945566571083, 11.087508959957585 ], [ 160.315540976864241, 11.087423453485467 ], [ 160.3164261647714, 11.085788085836752 ], [ 160.317607585157816, 11.085643687356306 ], [ 160.318036076560162, 11.08525053025526 ], [ 160.318187521275121, 11.082502871293721 ], [ 160.317590866748986, 11.079487923037034 ], [ 160.316589367048863, 11.07913286702596 ], [ 160.316191515049212, 11.0778865009742 ], [ 160.315970375200834, 11.076951672670802 ], [ 160.315469623507568, 11.076774153953375 ], [ 160.314513738937336, 11.077838546945404 ], [ 160.314012993710605, 11.077661031010964 ], [ 160.313439477786574, 11.076899327343169 ], [ 160.313213057689609, 11.075976299616775 ], [ 160.312802707793281, 11.075550595398852 ], [ 160.312206929901578, 11.075622667530808 ], [ 160.311852123970624, 11.076603209485681 ], [ 160.312003755722941, 11.076952852261945 ], [ 160.311648944569669, 11.077933376705866 ], [ 160.311958102569008, 11.07861728124772 ], [ 160.312373952723789, 11.079044741896929 ], [ 160.314220135378548, 11.079416914844089 ], [ 160.314630474220735, 11.07984262309493 ], [ 160.314770736691798, 11.080998934978789 ], [ 160.313820480937409, 11.082064968906597 ], [ 160.312974907097583, 11.082044668460801 ], [ 160.312227882113291, 11.081780574401799 ], [ 160.310995267014192, 11.080503975457558 ], [ 160.309666735648221, 11.079473809418621 ], [ 160.308013804788544, 11.078594809553067 ], [ 160.305435035461471, 11.077120485860599 ], [ 160.305177595820453, 11.077030448198251 ], [ 160.303950602474885, 11.075755665846378 ], [ 160.302875500208927, 11.074813417330905 ], [ 160.301627777386415, 11.074371922549071 ], [ 160.300873633827365, 11.074106630961323 ], [ 160.300395260483185, 11.073095426021389 ], [ 160.299979409734874, 11.072668020696288 ], [ 160.298641195881203, 11.072474775638595 ], [ 160.298207022855365, 11.072883316970907 ], [ 160.298369706744495, 11.073205801898732 ], [ 160.299291900967688, 11.073812385172873 ], [ 160.300084582808694, 11.075495667589426 ], [ 160.300557668218914, 11.076518639678506 ], [ 160.300972389834925, 11.076929360815521 ], [ 160.300545217536438, 11.077339186142288 ], [ 160.299291890014757, 11.07689596598674 ], [ 160.298469737493207, 11.0760451400833 ], [ 160.297969035374194, 11.075867672475708 ], [ 160.296489030376392, 11.074488043477846 ], [ 160.295167673994257, 11.073459340633294 ], [ 160.293497260598372, 11.072602800275423 ], [ 160.292180173747738, 11.07155925107061 ], [ 160.291174149081399, 11.071205760439025 ], [ 160.290925369049148, 11.071116577347015 ], [ 160.289193682902663, 11.069662354171335 ], [ 160.28686527800113, 11.068277067944029 ], [ 160.285954256916142, 11.067674073682305 ], [ 160.286027966348712, 11.06826130515112 ], [ 160.286752637186453, 11.069358911657606 ], [ 160.287737350873613, 11.070549145639728 ], [ 160.289720923039795, 11.072091593374262 ], [ 160.29086315739346, 11.073616063054999 ], [ 160.291097889997218, 11.074526237758553 ], [ 160.291054110315486, 11.076196690805553 ], [ 160.291055231432836, 11.076206566333962 ], [ 160.291265980318428, 11.077950850599866 ], [ 160.291833811358742, 11.078710652335488 ], [ 160.292153742076493, 11.079384401376766 ], [ 160.292379794781567, 11.080293722955723 ], [ 160.292381036136703, 11.08031036909636 ], [ 160.292451314026295, 11.080891773610011 ], [ 160.292366083021051, 11.081128171102357 ], [ 160.292759653283383, 11.082389115509008 ], [ 160.293491360858326, 11.083488016719459 ], [ 160.295466524659645, 11.085043284384067 ], [ 160.296196711320562, 11.086142655075879 ], [ 160.296365001782902, 11.08646683689059 ], [ 160.296342606060705, 11.087300438756582 ], [ 160.295661161336056, 11.087619201060425 ], [ 160.294136770984068, 11.087920316313188 ], [ 160.292795569172739, 11.087697251742796 ], [ 160.292047653178486, 11.087430112100225 ], [ 160.292041753232326, 11.087445481291082 ], [ 160.291947099874818, 11.087708484315671 ], [ 160.291501954601159, 11.088936839066466 ], [ 160.291068419711763, 11.089341648028089 ], [ 160.29047826167627, 11.089415418502076 ], [ 160.288372522447162, 11.088950616306986 ], [ 160.288130908045986, 11.088862686512115 ], [ 160.286543879473783, 11.088566600066333 ], [ 160.285613370580734, 11.088782638842943 ], [ 160.283312948845577, 11.089665496506818 ], [ 160.28179146907712, 11.089952157485072 ], [ 160.282524091631444, 11.09105401090779 ], [ 160.283252961220455, 11.092136568947334 ], [ 160.28289382803024, 11.093131608196604 ], [ 160.280663461544037, 11.094582076418254 ], [ 160.280573083762533, 11.094830151893708 ], [ 160.279391997580888, 11.094974505170585 ], [ 160.275710676390673, 11.094217004964708 ], [ 160.274871247765532, 11.094181336723404 ], [ 160.273094111241392, 11.094408059697136 ], [ 160.271731114824831, 11.095031904596571 ], [ 160.270818693793899, 11.094429446313766 ], [ 160.270408479834998, 11.094003948481719 ], [ 160.270110988379457, 11.09249702962779 ], [ 160.268535734807131, 11.091377673958437 ], [ 160.267159133751505, 11.088943762112885 ], [ 160.266912788009193, 11.088857280377006 ], [ 160.265681228178693, 11.087577701751473 ], [ 160.264607408872365, 11.086638964849731 ], [ 160.262951570564638, 11.085754650241059 ], [ 160.260619607121754, 11.084384681220186 ], [ 160.259393298752855, 11.083093408853943 ], [ 160.258553675407143, 11.083074944380385 ], [ 160.256865673090374, 11.083037233535872 ], [ 160.255774216008916, 11.082930558522669 ], [ 160.253609589495426, 11.08188168345618 ], [ 160.253457974507256, 11.081532248384868 ], [ 160.250786910676169, 11.080321436373405 ], [ 160.249375577661397, 11.079541341694163 ], [ 160.24794552287176, 11.079576520442544 ], [ 160.246353575729302, 11.079292573414589 ], [ 160.245448317352555, 11.078691614661782 ], [ 160.244893282013521, 11.077094913012958 ], [ 160.244839017850779, 11.07568905738971 ], [ 160.244428779916348, 11.075263675863715 ], [ 160.244084256057249, 11.075420855128451 ], [ 160.243222485312629, 11.076235787854774 ], [ 160.242137872973927, 11.076116993644689 ], [ 160.240635391640268, 11.075581924927707 ], [ 160.240311071620482, 11.074923421426011 ], [ 160.239332587263249, 11.073718400098819 ], [ 160.239278276150031, 11.072312571169165 ], [ 160.239959409525113, 11.071993735829583 ], [ 160.240780768489998, 11.072847602135877 ], [ 160.242123990143, 11.073042324012013 ], [ 160.243059483448889, 11.072814332156575 ], [ 160.243824171153449, 11.072259648300472 ], [ 160.244427583236757, 11.071351605711163 ], [ 160.244548093096824, 11.070274585422537 ], [ 160.24533748135579, 11.068889149358204 ], [ 160.246784854359845, 11.068015086276143 ], [ 160.248126071745503, 11.067842949361362 ], [ 160.249158263275291, 11.06771877039218 ], [ 160.251249386498131, 11.068180369205784 ], [ 160.25268541022001, 11.068129686879397 ], [ 160.253458172312008, 11.067579333519545 ], [ 160.253547606802471, 11.067328085754347 ], [ 160.254402299533069, 11.066511696016661 ], [ 160.255271276113263, 11.065697835567532 ], [ 160.257832651739477, 11.064096776936099 ], [ 160.259357565033611, 11.063798380985352 ], [ 160.260942965727736, 11.064094466018551 ], [ 160.263452468776791, 11.064986049416499 ], [ 160.264380105614208, 11.064753566124368 ], [ 160.265567522164901, 11.064613739358146 ], [ 160.265813893716285, 11.06470018648823 ], [ 160.267181968803101, 11.064064075347682 ], [ 160.267809085534708, 11.0623387897936 ], [ 160.268490376807136, 11.062019832526984 ], [ 160.269242916262272, 11.062285387561934 ], [ 160.269562916714875, 11.062959045043808 ], [ 160.270408162998876, 11.06297914826491 ], [ 160.271336969538709, 11.062763329488398 ], [ 160.272837434583977, 11.06329585691317 ], [ 160.274339412354294, 11.063827951921265 ], [ 160.275183808179889, 11.06384493218898 ], [ 160.275863635921382, 11.063526429890356 ], [ 160.274954142031135, 11.062923080070492 ], [ 160.273041819065583, 11.061965464368571 ], [ 160.272631485098202, 11.061539943575552 ], [ 160.272395416248941, 11.060613197538594 ], [ 160.272774532232177, 11.058801803938135 ], [ 160.268986327721223, 11.05521497543535 ], [ 160.267485210559158, 11.054686136235716 ], [ 160.264965642347192, 11.05461779977346 ], [ 160.264711369395087, 11.054526916243587 ], [ 160.263463681107879, 11.054085857826491 ], [ 160.262456867806634, 11.053729479184145 ], [ 160.261527986173576, 11.053945431191613 ], [ 160.260410343592383, 11.054700976104909 ], [ 160.259075532405035, 11.054476536283818 ], [ 160.257320863720821, 11.053853321309701 ], [ 160.256387752306267, 11.054084159358334 ], [ 160.254186774123042, 11.054689980868396 ], [ 160.253505561862909, 11.055008985695029 ], [ 160.252753066222965, 11.054743525668272 ], [ 160.249997236496398, 11.05376582033178 ], [ 160.249316047932211, 11.054084828232316 ], [ 160.249063266360224, 11.053993393551846 ], [ 160.248539028655841, 11.054650088103019 ], [ 160.248033841762719, 11.055284074479189 ], [ 160.248030204271288, 11.055295368695909 ], [ 160.247033892318058, 11.058025716952912 ], [ 160.246437373589885, 11.058094841603562 ], [ 160.245098803076303, 11.057898826477228 ], [ 160.244435013089571, 11.057385755841263 ], [ 160.243199218907307, 11.056104252608595 ], [ 160.242271846142074, 11.056336791375667 ], [ 160.241090118656984, 11.056478512144697 ], [ 160.23878013700164, 11.058164869188193 ], [ 160.237142415618507, 11.05954846659329 ], [ 160.237056400356067, 11.059781683601473 ], [ 160.234670064296978, 11.060895288840495 ], [ 160.233453804494985, 11.062707591909559 ], [ 160.232355562726781, 11.062582813157775 ], [ 160.231836904508413, 11.063241100602445 ], [ 160.231904177559869, 11.063823204150097 ], [ 160.231223088769525, 11.064142104865713 ], [ 160.230632279453062, 11.064212929101467 ], [ 160.229559061985015, 11.063270996866686 ], [ 160.228968258571228, 11.063341827655517 ], [ 160.228039364966833, 11.063574782118554 ], [ 160.227286102498141, 11.063306125220933 ], [ 160.226713416302545, 11.062541462071371 ], [ 160.226803685865434, 11.062293390805433 ], [ 160.225894534217076, 11.061690374327215 ], [ 160.2249591493445, 11.061918485801367 ], [ 160.223867847326147, 11.061812104315296 ], [ 160.222801780748028, 11.060871517632735 ], [ 160.222047063068317, 11.060603468964189 ], [ 160.221114207654693, 11.06083424746214 ], [ 160.220549601056206, 11.061285109401082 ], [ 160.219913711770005, 11.061808269548875 ], [ 160.218974360977967, 11.062034175701893 ], [ 160.218322200021873, 11.061507614643478 ], [ 160.218002212432594, 11.060834293455047 ], [ 160.217811485223223, 11.058258139934665 ], [ 160.217220726028557, 11.0583290099786 ], [ 160.21578489615095, 11.058379965165626 ], [ 160.215133479052895, 11.057849800539726 ], [ 160.214464645482906, 11.057348651249555 ], [ 160.214308586823734, 11.057014221189382 ], [ 160.213983696468119, 11.056335565342623 ], [ 160.213163184085545, 11.055485078567747 ], [ 160.212181847102613, 11.054294788717643 ], [ 160.211610382750081, 11.053546865756143 ], [ 160.210857192024577, 11.053278443638952 ], [ 160.209589749710318, 11.053653437051164 ], [ 160.206341021750404, 11.055582634437044 ], [ 160.204983392685023, 11.056205640507077 ], [ 160.203206142077363, 11.056430055442643 ], [ 160.203128294756539, 11.055840999789334 ], [ 160.204612058710609, 11.054125790606898 ], [ 160.204630945106885, 11.053293520823516 ], [ 160.204058241169378, 11.05252901819123 ], [ 160.202810111706697, 11.052085251194073 ], [ 160.202557432365097, 11.051994009236642 ], [ 160.201401032873889, 11.05131876296538 ], [ 160.200665493019585, 11.050201493090784 ], [ 160.199917848414799, 11.049934889205144 ], [ 160.198545256872592, 11.050582880822045 ], [ 160.198044788735075, 11.050405759134264 ], [ 160.197251024165382, 11.048720810339406 ], [ 160.196653830355416, 11.04878689376517 ], [ 160.195382259367676, 11.049176828810461 ], [ 160.194291125213937, 11.049070661369639 ], [ 160.192790503160325, 11.048535724842349 ], [ 160.192037378225422, 11.04826740343419 ], [ 160.189765580257102, 11.048299568479433 ], [ 160.188584244983474, 11.048441344373733 ], [ 160.18790339592411, 11.048760333308548 ], [ 160.187240495093846, 11.048243993563613 ], [ 160.186993467728911, 11.04815449826884 ], [ 160.18616810500879, 11.04729891559036 ], [ 160.185331192942272, 11.047283560149232 ], [ 160.183287835475682, 11.048237393400834 ], [ 160.183178454370108, 11.049304081589044 ], [ 160.183250712013177, 11.049891342895153 ], [ 160.184412516227695, 11.050585189703314 ], [ 160.184941270152279, 11.053015685872481 ], [ 160.18535148797713, 11.053440796379276 ], [ 160.18670033263146, 11.053626451433272 ], [ 160.189648520216195, 11.053290346182758 ], [ 160.190647891548281, 11.053645007645361 ], [ 160.191201206032389, 11.055228106418886 ], [ 160.191110990691129, 11.055476129776054 ], [ 160.191112866845287, 11.055489174518902 ], [ 160.191183218197608, 11.056063404062948 ], [ 160.191093002145095, 11.056311423506875 ], [ 160.18947699747028, 11.056858518142601 ], [ 160.187872536016528, 11.057391957884789 ], [ 160.18652369897157, 11.057206258831229 ], [ 160.184860011878385, 11.056335715448533 ], [ 160.184541639678343, 11.055662114646051 ], [ 160.183922722804709, 11.053479690914832 ], [ 160.183279059843301, 11.05214474141787 ], [ 160.18211489521164, 11.051448206994644 ], [ 160.180602468828141, 11.05174000847359 ], [ 160.180593077053061, 11.051742813993688 ], [ 160.178800186738499, 11.052791795642536 ], [ 160.178714375946299, 11.053024887854201 ], [ 160.177515235996793, 11.054001966104785 ], [ 160.176242982218866, 11.054388679963184 ], [ 160.175237315565852, 11.054029198197854 ], [ 160.173237633490373, 11.053333988509126 ], [ 160.171898425557373, 11.05312175277537 ], [ 160.170965037353994, 11.053349481443522 ], [ 160.168331362206601, 11.054374038766969 ], [ 160.167149383217577, 11.054512764436293 ], [ 160.16564891519775, 11.053978046643433 ], [ 160.164238760494868, 11.053195332647315 ], [ 160.163825820081001, 11.052784747996018 ], [ 160.161480683388163, 11.052230161799191 ], [ 160.159213773442644, 11.05224749678651 ], [ 160.156766564059467, 11.052760772401834 ], [ 160.155151360421428, 11.053321396139751 ], [ 160.152965200607639, 11.053117433972139 ], [ 160.151048301673796, 11.052153001065612 ], [ 160.149712156750155, 11.051957033273004 ], [ 160.148525947297031, 11.052110728358429 ], [ 160.147849702512957, 11.052414728899651 ], [ 160.147311143793615, 11.053905087866861 ], [ 160.148953749578283, 11.055594030719163 ], [ 160.148681763990822, 11.056338295136143 ], [ 160.147662387792991, 11.056816135838362 ], [ 160.147799790480917, 11.05798893745683 ], [ 160.150167672282748, 11.057696628128618 ], [ 160.151505546737042, 11.057892132502678 ], [ 160.152186194367545, 11.057573266951644 ], [ 160.152121940795269, 11.056990615019561 ], [ 160.151634264360894, 11.055990371356913 ], [ 160.151407568515509, 11.055068596268674 ], [ 160.151583636902132, 11.054587574405051 ], [ 160.152425473121326, 11.054591174135187 ], [ 160.153425368471005, 11.054948813388611 ], [ 160.15399796254863, 11.055712902788908 ], [ 160.154907817476868, 11.056318469582976 ], [ 160.15600377684521, 11.05641282217721 ], [ 160.157088722892411, 11.056534273215709 ], [ 160.1582039831938, 11.055810173896578 ], [ 160.159138407437496, 11.055568526723828 ], [ 160.160060942009352, 11.055350834189426 ], [ 160.160795981612807, 11.056454125198739 ], [ 160.161890480425058, 11.056548947463664 ], [ 160.163482579521684, 11.056835241788427 ], [ 160.163723178580767, 11.056919821487163 ], [ 160.165644166010338, 11.057886663275871 ], [ 160.167482532070977, 11.058259301051951 ], [ 160.16975470662581, 11.058230520357048 ], [ 160.171026016131776, 11.057840727015087 ], [ 160.172570419985561, 11.056709636879178 ], [ 160.173823806661261, 11.057154982420851 ], [ 160.174150230869373, 11.057006503556208 ], [ 160.175596418498174, 11.05694538519151 ], [ 160.176940025240214, 11.057142764384965 ], [ 160.178325011935243, 11.058759579440984 ], [ 160.182976001145107, 11.061520162510124 ], [ 160.184227808821277, 11.06196609812736 ], [ 160.185121261152432, 11.063406653319381 ], [ 160.186187126043137, 11.064346834333248 ], [ 160.187693209969098, 11.064883563609344 ], [ 160.188035579837788, 11.06470655658944 ], [ 160.189465095087741, 11.064670997126973 ], [ 160.190737465894074, 11.064284430904285 ], [ 160.193010686657203, 11.064252143967632 ], [ 160.193847603355749, 11.064267637825889 ], [ 160.195800906209058, 11.063562204410863 ], [ 160.198056166485969, 11.064365209828868 ], [ 160.198398184570181, 11.064205313414805 ], [ 160.199145646691846, 11.064472006108339 ], [ 160.2013480939045, 11.063869238742996 ], [ 160.202119256892303, 11.063302350861134 ], [ 160.202389971545273, 11.062558287187953 ], [ 160.201428024212589, 11.060549458377334 ], [ 160.201269852826414, 11.060195301570097 ], [ 160.202108948810235, 11.06023055923561 ], [ 160.202770592081635, 11.060730365698314 ], [ 160.203088946854592, 11.061404070978964 ], [ 160.204006132268034, 11.062011291770126 ], [ 160.204891614782525, 11.063447726371708 ], [ 160.205722814891857, 11.064288111930239 ], [ 160.206722103769323, 11.064642959796297 ], [ 160.208309472540066, 11.064941368833384 ], [ 160.209833826386898, 11.064642930644604 ], [ 160.210581337259242, 11.064909673139519 ], [ 160.210834766370851, 11.064997317471171 ], [ 160.21074538952513, 11.065248489654252 ], [ 160.210296887115163, 11.066474201404539 ], [ 160.20961591720922, 11.066793053399222 ], [ 160.208682280621275, 11.067020631420375 ], [ 160.20825398883207, 11.067430746446311 ], [ 160.208073485812861, 11.067926782094887 ], [ 160.206957730961989, 11.068650862347774 ], [ 160.205613917698372, 11.068453219057572 ], [ 160.20273172426235, 11.069391326672486 ], [ 160.202465371228641, 11.070120416062389 ], [ 160.202942083073168, 11.071131147022886 ], [ 160.203604924128769, 11.071647604465301 ], [ 160.20419560973852, 11.071576799886126 ], [ 160.204715051675606, 11.070921991185529 ], [ 160.205316885300306, 11.070854661647344 ], [ 160.206106512824334, 11.072537309393267 ], [ 160.206209167875897, 11.075363434809731 ], [ 160.206209538051041, 11.075376928870849 ], [ 160.207872867757146, 11.076234348479995 ], [ 160.208625121706262, 11.076499836050393 ], [ 160.208805647038474, 11.076003850282547 ], [ 160.208981783059158, 11.075522774697065 ], [ 160.208162178224313, 11.074668723766495 ], [ 160.208005041253642, 11.07431767447544 ], [ 160.207518451506417, 11.0733200666361 ], [ 160.208217519537499, 11.072165987782101 ], [ 160.208813733183945, 11.072096949116766 ], [ 160.209814002777108, 11.072454959544256 ], [ 160.210490585501248, 11.072151071530373 ], [ 160.210513085221692, 11.071300848525091 ], [ 160.210036245101122, 11.070290080626346 ], [ 160.209806423291326, 11.069392679344734 ], [ 160.209803797800276, 11.069383258664715 ], [ 160.210163944393514, 11.068388046386376 ], [ 160.211093582930488, 11.068158277634794 ], [ 160.2116843044831, 11.068087461216077 ], [ 160.212117491999976, 11.067682687254589 ], [ 160.212299633647717, 11.067186148149792 ], [ 160.212402089243909, 11.066118119227573 ], [ 160.212584101905406, 11.065621607277423 ], [ 160.21267348145858, 11.065370432222492 ], [ 160.214878878256343, 11.064753134643807 ], [ 160.215398439711265, 11.064128660228034 ], [ 160.216080573159388, 11.063795833662772 ], [ 160.21717030928238, 11.063902652881447 ], [ 160.217834733096993, 11.0644187407836 ], [ 160.218219729409014, 11.065678147358488 ], [ 160.21845381923157, 11.066584577659427 ], [ 160.218183027982434, 11.067328697665308 ], [ 160.217574169038016, 11.068234907031091 ], [ 160.217758101369185, 11.068955584454146 ], [ 160.217808995406585, 11.069144492583655 ], [ 160.219308941876221, 11.069676627433759 ], [ 160.21928518339675, 11.07051029354062 ], [ 160.219274193057259, 11.071346945166097 ], [ 160.218640667116631, 11.073083606173366 ], [ 160.218554659382846, 11.073316750827185 ], [ 160.218104173826305, 11.074559982493984 ], [ 160.217989370596086, 11.075638436848205 ], [ 160.218989552627988, 11.075996554034409 ], [ 160.218628448674366, 11.076988601391651 ], [ 160.217199934324469, 11.077040544550206 ], [ 160.215167933650548, 11.077160262767961 ], [ 160.214644585993312, 11.077503426641673 ], [ 160.214064501509171, 11.077873714678061 ], [ 160.214171911087078, 11.078800789655936 ], [ 160.214202232763, 11.079043427054046 ], [ 160.214359114407387, 11.079380958432914 ], [ 160.215770183479378, 11.080160693797195 ], [ 160.217023750896089, 11.080606498445665 ], [ 160.218869564569161, 11.080981129925844 ], [ 160.219961637975445, 11.08109079716909 ], [ 160.221228271767586, 11.08071306056214 ], [ 160.221475309927996, 11.080802647468149 ], [ 160.224031304756636, 11.080013184628472 ], [ 160.226177685846125, 11.081070359566059 ], [ 160.22735330949277, 11.081753791302354 ], [ 160.227559191281955, 11.083508696561804 ], [ 160.227107710795707, 11.084748718401418 ], [ 160.226071477718392, 11.086050822810972 ], [ 160.226067839783724, 11.086062110889488 ], [ 160.225888505319631, 11.086544121917587 ], [ 160.226294281340444, 11.08698432572193 ], [ 160.227143612301234, 11.086989592203096 ], [ 160.229434362799481, 11.086136566124759 ], [ 160.230183511464844, 11.086402991691521 ], [ 160.23117883262762, 11.086755888993633 ], [ 160.231444285804486, 11.086850211552923 ], [ 160.232438109457547, 11.087203565954226 ], [ 160.234524720161545, 11.087663114437429 ], [ 160.239174506904476, 11.08735179109909 ], [ 160.241443083246025, 11.087331997683963 ], [ 160.242876562792389, 11.087278840325022 ], [ 160.243625767609558, 11.087545325297191 ], [ 160.243877590243102, 11.087633533225564 ], [ 160.244378105294658, 11.087810881518998 ], [ 160.246357799936192, 11.089353686449391 ], [ 160.247112647465258, 11.089621916547042 ], [ 160.248632112399008, 11.089335693201294 ], [ 160.249633163520798, 11.089690429692267 ], [ 160.250368486525161, 11.09077748824452 ], [ 160.250521581499157, 11.09112644462126 ], [ 160.251009072654966, 11.092127492538353 ], [ 160.252325581581943, 11.093170608712173 ], [ 160.253989915918396, 11.094025049907325 ], [ 160.2559088339965, 11.094983941168676 ], [ 160.256319020584527, 11.095409368560254 ], [ 160.256313122436552, 11.095424733148251 ], [ 160.256042342760423, 11.09615172021212 ], [ 160.255113297053157, 11.096384332172077 ], [ 160.255434758101586, 11.097057291259866 ], [ 160.255851321266647, 11.097487616474579 ], [ 160.256165638850632, 11.098159301724698 ], [ 160.255979303141004, 11.098653611973615 ], [ 160.255352115092307, 11.100377921578577 ], [ 160.254333356419153, 11.100854907880745 ], [ 160.253735319946742, 11.10092409959343 ], [ 160.252397763637958, 11.100730767978341 ], [ 160.251129977298518, 11.101105078290065 ], [ 160.250781040771017, 11.10127706265963 ], [ 160.249514269687808, 11.10165446844028 ], [ 160.247897584569955, 11.10220074260647 ], [ 160.24613035615954, 11.10240073932737 ], [ 160.24419391365285, 11.102273644668713 ], [ 160.242443803813188, 11.10165232885242 ], [ 160.240526727408195, 11.100693077210062 ], [ 160.237364689137337, 11.099288599343371 ], [ 160.237116895656413, 11.09920259268833 ], [ 160.235699314015591, 11.098417679612433 ], [ 160.234788708459121, 11.097814997424761 ], [ 160.2343105427409, 11.096804573583549 ], [ 160.233260739734646, 11.095032641038181 ], [ 160.232344984153656, 11.094441721798995 ], [ 160.231003836383309, 11.094229269862277 ], [ 160.230076466319645, 11.094461459695683 ], [ 160.227941684939708, 11.095648661210651 ], [ 160.227393922535356, 11.097151824656585 ], [ 160.226790790121242, 11.098042323552548 ], [ 160.225766129501579, 11.098521122399346 ], [ 160.224764386299569, 11.098163330279187 ], [ 160.224516610773691, 11.098077342179847 ], [ 160.223429671485974, 11.097955654344737 ], [ 160.222748628458248, 11.098274240506511 ], [ 160.221024085013255, 11.099886553548446 ], [ 160.220228579287209, 11.101303569631993 ], [ 160.220548374765457, 11.10197676512624 ], [ 160.220868166931155, 11.102649960824881 ], [ 160.22162285268368, 11.102918138737136 ], [ 160.224469029536777, 11.103634268103113 ], [ 160.226719361692517, 11.104432774195493 ], [ 160.227293425019809, 11.105196865186906 ], [ 160.227534059457213, 11.105281593511348 ], [ 160.229271172640694, 11.106739730262785 ], [ 160.229931196608305, 11.10727093508258 ], [ 160.231360484798813, 11.107215794978318 ], [ 160.236504771910177, 11.107080948622162 ], [ 160.237750058162391, 11.107539746444145 ], [ 160.238823206817301, 11.108464713125537 ], [ 160.240053533088684, 11.109740748935307 ], [ 160.240193481741414, 11.11091308217298 ], [ 160.239590215436465, 11.111803475408587 ], [ 160.238401504357597, 11.111943283287976 ], [ 160.237153600553739, 11.111498839457296 ], [ 160.23537964401433, 11.111710959573486 ], [ 160.233697678035668, 11.111674663567452 ], [ 160.229947556009648, 11.110312676568055 ], [ 160.229098628500054, 11.110320725939264 ], [ 160.228580259023659, 11.11096137402154 ], [ 160.228652245372558, 11.111548579014199 ], [ 160.230155865839663, 11.112083393448696 ], [ 160.230311797073682, 11.11241778028783 ], [ 160.230385279163215, 11.113004539400054 ], [ 160.229450048129536, 11.11323208517916 ], [ 160.228358895671079, 11.113125251144011 ], [ 160.22818337317932, 11.113609350813668 ], [ 160.228588304751383, 11.114046373856226 ], [ 160.229160319235945, 11.114797454114488 ], [ 160.23074260833792, 11.115091252622905 ], [ 160.233185600989913, 11.115400761765184 ], [ 160.2349355011184, 11.116022119002986 ], [ 160.236577304090446, 11.117722970243795 ], [ 160.237398323099541, 11.11857677121175 ], [ 160.237652478042975, 11.118667704066326 ], [ 160.238474247751952, 11.119517888459265 ], [ 160.239723777588353, 11.119962036815284 ], [ 160.242402241847344, 11.120368249309506 ], [ 160.24895535458171, 11.121011722080498 ], [ 160.249208649180787, 11.121099534941626 ], [ 160.2518876555026, 11.121488746955899 ], [ 160.253882458182829, 11.122227909559577 ], [ 160.25480404986709, 11.122803698797743 ], [ 160.255439188727792, 11.124165273235382 ], [ 160.256153256968275, 11.126084827306906 ], [ 160.255859614295844, 11.127661606106237 ], [ 160.255317302137001, 11.129149141913015 ], [ 160.254347565324537, 11.131032457305496 ], [ 160.253219686062806, 11.132578553967726 ], [ 160.251670864714384, 11.133709252008071 ], [ 160.25181501200683, 11.134866566879468 ], [ 160.25237803606322, 11.13564084064582 ], [ 160.253223010049567, 11.135661426547456 ], [ 160.254929242582705, 11.134864746854124 ], [ 160.25596688909269, 11.13356655839843 ], [ 160.25691929356168, 11.132504513862647 ], [ 160.257659663596485, 11.129699972607016 ], [ 160.257818429248033, 11.126956198907695 ], [ 160.256942082488621, 11.124697271098842 ], [ 160.257122848258348, 11.124201395396611 ], [ 160.258891136596503, 11.124004906023021 ], [ 160.261424280559083, 11.124046652214618 ], [ 160.261672081169479, 11.124132725089735 ], [ 160.264605951198661, 11.124626556137201 ], [ 160.268885456084945, 11.1253184950726 ], [ 160.270405468604423, 11.125015742247331 ], [ 160.270833362084318, 11.12460965495735 ], [ 160.270767103966364, 11.124024013185334 ], [ 160.267079622226248, 11.123278142572845 ], [ 160.26523706590342, 11.122891356055094 ], [ 160.263070033824221, 11.121856408703545 ], [ 160.261022276690284, 11.119714746942396 ], [ 160.25852385163941, 11.11882956665773 ], [ 160.258269666682736, 11.118738603188978 ], [ 160.256175739888562, 11.118277169225468 ], [ 160.253918026765234, 11.117476853224645 ], [ 160.25276404961366, 11.116773027911906 ], [ 160.251582375853729, 11.116914030877783 ], [ 160.249465220646243, 11.117282569294348 ], [ 160.248130545280333, 11.117074671898283 ], [ 160.246459343676463, 11.116218871923468 ], [ 160.246049248220544, 11.115793497449157 ], [ 160.245802215910771, 11.115703830086121 ], [ 160.242867727770715, 11.115207261011912 ], [ 160.242211480731186, 11.114695382813707 ], [ 160.24147499551961, 11.113608914483894 ], [ 160.24141053359233, 11.113036419598824 ], [ 160.241408538781684, 11.113023411736238 ], [ 160.241678081756845, 11.112280026799176 ], [ 160.244362550824405, 11.112670750724837 ], [ 160.249323620685033, 11.113046684379482 ], [ 160.251000249283919, 11.113081309832145 ], [ 160.251500725147878, 11.113258747382261 ], [ 160.255796837296288, 11.113115298720794 ], [ 160.261118148816649, 11.112493185396266 ], [ 160.262727010872339, 11.11194280574853 ], [ 160.262817385451001, 11.111694817985089 ], [ 160.266455882006198, 11.111039877767501 ], [ 160.270503885208086, 11.110807235614605 ], [ 160.272688322601169, 11.111020722973265 ], [ 160.274118022383817, 11.110965759343772 ], [ 160.274370737595234, 11.111057181828507 ], [ 160.275385145416863, 11.110588445902955 ], [ 160.276162379597878, 11.110023652383578 ], [ 160.276453233658913, 11.108460738008541 ], [ 160.276952291709165, 11.10863868058849 ], [ 160.278437422019522, 11.109989107824621 ], [ 160.280991962524439, 11.11229335309017 ], [ 160.282398865289537, 11.113088851601432 ], [ 160.283366549263206, 11.115096845004555 ], [ 160.283489946907991, 11.116277872545819 ], [ 160.283140728954294, 11.117259423055279 ], [ 160.28343795814564, 11.118766239984108 ], [ 160.283917498366094, 11.119776589397212 ], [ 160.284507594124477, 11.119702989932783 ], [ 160.284850725947024, 11.119546431531964 ], [ 160.285194613923665, 11.119386247533482 ], [ 160.287666197698854, 11.118034882219616 ], [ 160.288330975235482, 11.118534331967936 ], [ 160.289813028666714, 11.119916454451422 ], [ 160.291062025004635, 11.12035769116787 ], [ 160.292993692450494, 11.120497114476761 ], [ 160.294406518560692, 11.121277414111875 ], [ 160.294946025483483, 11.12286869611061 ], [ 160.296552486025746, 11.12315599314732 ], [ 160.297030374346178, 11.124166934553008 ], [ 160.29698949007431, 11.125818665372645 ], [ 160.297563824980784, 11.126566188560064 ], [ 160.297807008763158, 11.126684316263198 ], [ 160.298972724525328, 11.127374940252384 ], [ 160.29845795329706, 11.128017920957712 ], [ 160.298449546738595, 11.128030627877409 ], [ 160.297840330622591, 11.128919393523979 ], [ 160.29715261040468, 11.129239652229552 ], [ 160.296229218102042, 11.129456554228693 ], [ 160.296043940877979, 11.129967462262035 ], [ 160.295771119095605, 11.13071189360824 ], [ 160.295412129244397, 11.131689429554397 ], [ 160.295733312354145, 11.132362570278969 ], [ 160.297146185129492, 11.133142919735041 ], [ 160.298464483785864, 11.134169102836825 ], [ 160.29837403651635, 11.134417090269881 ], [ 160.297061586181087, 11.136460465043799 ], [ 160.29678747007793, 11.137218822820167 ], [ 160.296678656163692, 11.138285121202278 ], [ 160.29700080725317, 11.138961352491657 ], [ 160.298480436754289, 11.140323869353233 ], [ 160.298802579469651, 11.14100010437741 ], [ 160.299804311028993, 11.141351807373072 ], [ 160.300227158865624, 11.140957377764362 ], [ 160.30168682979658, 11.140070946568404 ], [ 160.303027489693136, 11.140281061750668 ], [ 160.304779533115635, 11.140902842386391 ], [ 160.305258054458534, 11.141910148150185 ], [ 160.305652249919575, 11.143156794950192 ], [ 160.305878637795871, 11.144092812253401 ], [ 160.306379202431259, 11.144270484495058 ], [ 160.306717514152751, 11.14410867425136 ], [ 160.306829170168413, 11.143027919128322 ], [ 160.307105211743789, 11.142282607318311 ], [ 160.307526854345525, 11.141871527039077 ], [ 160.307755091110636, 11.141783252770086 ], [ 160.307878424505333, 11.141732973860432 ], [ 160.307939823404183, 11.142313334631019 ], [ 160.307652501389271, 11.143878287776811 ], [ 160.307793561011096, 11.14505055527178 ], [ 160.307450366122737, 11.145207010880762 ], [ 160.306425035295177, 11.145685314957051 ], [ 160.30649695603222, 11.14625571558196 ], [ 160.307585779874387, 11.146377539005424 ], [ 160.30943293233716, 11.146750072570859 ], [ 160.310090867379046, 11.147261901296668 ], [ 160.309546492825092, 11.148750150600431 ], [ 160.309456013952939, 11.148998114523261 ], [ 160.30952927997896, 11.149585115055208 ], [ 160.310277682490749, 11.149848986547543 ], [ 160.312133386212054, 11.149416394425812 ], [ 160.312647362693014, 11.149593514778077 ], [ 160.312785271534608, 11.15073609118364 ], [ 160.313287342771929, 11.150913354435797 ], [ 160.313873249912405, 11.150854833780866 ], [ 160.314194349415857, 11.151528031358655 ], [ 160.314509935213096, 11.152199463583665 ], [ 160.315264859524632, 11.152468233276336 ], [ 160.31705716490552, 11.151435555817404 ], [ 160.31812672558118, 11.152372811163964 ], [ 160.31838108509362, 11.152463866977042 ], [ 160.318606136511619, 11.153383166890558 ], [ 160.318843508465818, 11.154292133237981 ], [ 160.319497159329558, 11.154818901904099 ], [ 160.320776120216891, 11.154428744393487 ], [ 160.321457704988944, 11.154110547020109 ], [ 160.322111239150502, 11.154637369797387 ], [ 160.322348725577825, 11.155546320653816 ], [ 160.323441032794079, 11.155650262973365 ], [ 160.324364580713961, 11.155433633177305 ], [ 160.325210675711446, 11.155450894563637 ], [ 160.325959126385243, 11.155714854079477 ], [ 160.326090481338809, 11.155992133120316 ], [ 160.326434149573117, 11.156740308491477 ], [ 160.327347960496979, 11.157342879041412 ], [ 160.327599825420464, 11.157431296532462 ], [ 160.32901586508919, 11.158211164739619 ], [ 160.329584676451049, 11.158963880788423 ], [ 160.329590429661323, 11.158972374842321 ], [ 160.329698989846889, 11.160974007371559 ], [ 160.32836220653536, 11.16076576790377 ], [ 160.328087520601372, 11.161510583665542 ], [ 160.328066195612223, 11.162343370448687 ], [ 160.327383070719236, 11.162661949447113 ], [ 160.325958175898705, 11.162704353803868 ], [ 160.323659608412385, 11.163557126033584 ], [ 160.321039554828985, 11.163753955184522 ], [ 160.320114536234883, 11.163970949625922 ], [ 160.319772180890197, 11.164130469159256 ], [ 160.318223251685055, 11.165263956560725 ], [ 160.313327018556549, 11.169370797621225 ], [ 160.31321530692685, 11.170451282349013 ], [ 160.315938984758162, 11.175351404509843 ], [ 160.31752287386638, 11.176455353992457 ], [ 160.317776204556537, 11.176543338653971 ], [ 160.318408369891785, 11.1779027116563 ], [ 160.318409601115036, 11.177919347885055 ], [ 160.317963430499361, 11.178626454491303 ], [ 160.317710699244287, 11.179041508484604 ], [ 160.316122012453491, 11.181825229304943 ], [ 160.315350802314953, 11.182394187820929 ], [ 160.313823280956058, 11.182694694633122 ], [ 160.311393604737191, 11.182379090862614 ], [ 160.310373356528004, 11.182845051058568 ], [ 160.309505281094516, 11.18365693321457 ], [ 160.308329666773318, 11.183801974708112 ], [ 160.307895320519208, 11.184209698864784 ], [ 160.307618526054483, 11.184934405198323 ], [ 160.30635090752952, 11.185327727077697 ], [ 160.306260388761388, 11.185575572893072 ], [ 160.30617502097877, 11.18581168789416 ], [ 160.306167368092872, 11.185820759114716 ], [ 160.305555995344946, 11.186726353192691 ], [ 160.30487964821512, 11.187032517608159 ], [ 160.304035374043167, 11.187014589692268 ], [ 160.301780134799657, 11.186215538372474 ], [ 160.300692369326782, 11.186096546169452 ], [ 160.295625489977709, 11.186808752320275 ], [ 160.29394520738586, 11.186760324611686 ], [ 160.29292549626615, 11.187239816271624 ], [ 160.292327432402232, 11.187308596604648 ], [ 160.291579241058628, 11.187044647409671 ], [ 160.29132508847772, 11.186953545253113 ], [ 160.290507627404338, 11.18610512709599 ], [ 160.289758208481572, 11.185824558996597 ], [ 160.28882665257521, 11.186053553799903 ], [ 160.288393886096713, 11.186460766202606 ], [ 160.287149016667655, 11.189100873522491 ], [ 160.285863380472591, 11.190294734288877 ], [ 160.284455741078176, 11.192598915427636 ], [ 160.284359733592765, 11.1928449319335 ], [ 160.283163380323714, 11.193805012125313 ], [ 160.282228747274218, 11.194034856392703 ], [ 160.280543501010527, 11.193998110793421 ], [ 160.279614395121001, 11.194229716214522 ], [ 160.278254460246302, 11.194850889138456 ], [ 160.276225399108569, 11.194973990789723 ], [ 160.275047355291434, 11.195102774699317 ], [ 160.273683194201055, 11.19573878222986 ], [ 160.272495622136148, 11.195894184931698 ], [ 160.270995471303081, 11.195364175338383 ], [ 160.269822506274295, 11.19547447656101 ], [ 160.26914044805406, 11.195795873976557 ], [ 160.268616392629212, 11.196447562974168 ], [ 160.269184352185448, 11.197210070422567 ], [ 160.271439041231588, 11.198008854091853 ], [ 160.273716500652142, 11.197975156520943 ], [ 160.275481360875574, 11.197774179426212 ], [ 160.277099786005778, 11.19722926108691 ], [ 160.277504492370639, 11.197666473139513 ], [ 160.277731724765005, 11.198587946100401 ], [ 160.278828835810032, 11.198680335422196 ], [ 160.28000777540268, 11.198554738185045 ], [ 160.280442151305664, 11.19814715549564 ], [ 160.281845955563909, 11.198940368777473 ], [ 160.283193216035698, 11.199121671160011 ], [ 160.285127445801322, 11.199261335690885 ], [ 160.28612418657849, 11.199614655130082 ], [ 160.286377568584896, 11.199702591292754 ], [ 160.287692269955016, 11.20074322497249 ], [ 160.287923877485809, 11.201649865369319 ], [ 160.288132907938092, 11.203402611641993 ], [ 160.288611972745485, 11.204412529307481 ], [ 160.288791381480905, 11.203917506382084 ], [ 160.288797288585698, 11.203902159642201 ], [ 160.289063293043085, 11.203187727828254 ], [ 160.289767636078608, 11.202037358412268 ], [ 160.290016259129288, 11.202126714751332 ], [ 160.290154962617521, 11.203278431220873 ], [ 160.290427654822764, 11.205620607347383 ], [ 160.291938174895307, 11.206151210971163 ], [ 160.291936155741865, 11.206162005964902 ], [ 160.291725010349666, 11.207488844236094 ], [ 160.29084635203202, 11.209122417699131 ], [ 160.289808849182833, 11.210422462521887 ], [ 160.289280369660872, 11.211088950000821 ], [ 160.28951028677244, 11.211996020403797 ], [ 160.29023853390521, 11.213091692177851 ], [ 160.289556487315878, 11.213412919254084 ], [ 160.287792135433563, 11.213610006996724 ], [ 160.28753726422633, 11.213522497542179 ], [ 160.287195353897715, 11.213695265600505 ], [ 160.286923412467104, 11.214424938355968 ], [ 160.28703801455103, 11.216429709671505 ], [ 160.287035869480036, 11.216440539392336 ], [ 160.286840496718014, 11.217738702467484 ], [ 160.286638058346028, 11.21906612097612 ], [ 160.285053340704337, 11.221849875370166 ], [ 160.282896514493075, 11.223885784932135 ], [ 160.28083299528717, 11.225659380080186 ], [ 160.279879547966971, 11.226706457375952 ], [ 160.279608816222805, 11.227452591471355 ], [ 160.279519909647604, 11.227699772818744 ], [ 160.279061598540693, 11.228936348376424 ], [ 160.278796770735198, 11.229667117051045 ], [ 160.278204450731664, 11.229737390186505 ], [ 160.278040779800307, 11.229398631042885 ], [ 160.277245185042204, 11.227718469681079 ], [ 160.27649569820386, 11.227454866289607 ], [ 160.275312577546686, 11.22759499673939 ], [ 160.274724549981187, 11.227650428363242 ], [ 160.274562227860287, 11.227328261740444 ], [ 160.274432069872404, 11.226164250253035 ], [ 160.273427158514949, 11.225792948344539 ], [ 160.272829580360906, 11.225875004634167 ], [ 160.272016860845582, 11.225011894215701 ], [ 160.27058595157186, 11.225065874770015 ], [ 160.269648941521069, 11.225292747690629 ], [ 160.269221837004125, 11.22570134418063 ], [ 160.269289362724095, 11.226286000449331 ], [ 160.270287386313356, 11.226638933865967 ], [ 160.271888618821464, 11.226911548963685 ], [ 160.272763560328514, 11.228371078385846 ], [ 160.273681850908645, 11.228961697812068 ], [ 160.27422973175041, 11.230555555448715 ], [ 160.273863599941791, 11.231543913422003 ], [ 160.273276454237788, 11.2316024623311 ], [ 160.272717099882669, 11.230827312402386 ], [ 160.271861926566714, 11.230836236257666 ], [ 160.2712969378602, 11.230059368223136 ], [ 160.270129346198928, 11.229383019583974 ], [ 160.26863548568187, 11.228837381101229 ], [ 160.266993423730185, 11.227136580511631 ], [ 160.265497821444768, 11.226591506201567 ], [ 160.264319311716719, 11.226723530983927 ], [ 160.263971317002586, 11.226904840247684 ], [ 160.263435879184954, 11.228381573000966 ], [ 160.263318363810498, 11.229459231936744 ], [ 160.263954264224736, 11.230802649915359 ], [ 160.264530293679513, 11.231552400603283 ], [ 160.265533897774901, 11.231907062717314 ], [ 160.267733773121876, 11.231302484044578 ], [ 160.268399186087038, 11.231818562673658 ], [ 160.268867127436096, 11.232838165209307 ], [ 160.26914302245558, 11.235161293101051 ], [ 160.269465331183085, 11.235833420674828 ], [ 160.270057733019627, 11.235763136843289 ], [ 160.270914830822392, 11.234962223966468 ], [ 160.271327043144879, 11.235390325314524 ], [ 160.271711204611393, 11.236645357877491 ], [ 160.271699692373829, 11.237463981987688 ], [ 160.271603522638856, 11.237709871812122 ], [ 160.272259004756251, 11.238239108156334 ], [ 160.274583031712069, 11.239618980257399 ], [ 160.274591039431499, 11.239623400635093 ], [ 160.275331835740189, 11.239886209418907 ], [ 160.275512924369906, 11.239390973246211 ], [ 160.275789190261207, 11.238646737713744 ], [ 160.275489957059847, 11.237142320758833 ], [ 160.27476194108155, 11.236046906546134 ], [ 160.274940643477464, 11.235548954323869 ], [ 160.275444032120419, 11.235725860803273 ], [ 160.277666918922137, 11.237370148560826 ], [ 160.279172339811709, 11.237902318249352 ], [ 160.28044249293572, 11.237525912022472 ], [ 160.281632414921546, 11.237373703465229 ], [ 160.282382014729251, 11.237637331710205 ], [ 160.282383872351858, 11.237650369799219 ], [ 160.282445076222245, 11.238236893033797 ], [ 160.281920217023014, 11.238891777042486 ], [ 160.281147069125041, 11.239440189468795 ], [ 160.281126709618547, 11.240288646217675 ], [ 160.281420394601867, 11.241791339245754 ], [ 160.282818933759074, 11.24339126771376 ], [ 160.284383516104612, 11.244520819852109 ], [ 160.284958355150707, 11.245284633331845 ], [ 160.284750500641195, 11.246592812172775 ], [ 160.284819159628228, 11.247194069438883 ], [ 160.285388755152383, 11.247939048140777 ], [ 160.286143841291363, 11.248204501382126 ], [ 160.286714658776702, 11.248966109289869 ], [ 160.287775693228497, 11.249918789300308 ], [ 160.289124751773784, 11.250113628238452 ], [ 160.28927711047703, 11.250448931616909 ], [ 160.289005385489872, 11.251191763051848 ], [ 160.288572538910955, 11.251598485399581 ], [ 160.288392259358119, 11.252096835789406 ], [ 160.288708988536911, 11.252767266304328 ], [ 160.289380276814228, 11.253268155836103 ], [ 160.290712283026579, 11.253474879621562 ], [ 160.291806520116808, 11.253582197141224 ], [ 160.292968165387862, 11.254274163041011 ], [ 160.29353895883736, 11.255035813653768 ], [ 160.293851268225978, 11.255721158861808 ], [ 160.292812639149162, 11.257017111793477 ], [ 160.290951675486326, 11.257462859526035 ], [ 160.290178041302852, 11.258028182300931 ], [ 160.289993738251411, 11.258524287444549 ], [ 160.289903152837127, 11.258771876076723 ], [ 160.289790993288307, 11.259851166703651 ], [ 160.289002567987268, 11.261235949913386 ], [ 160.288547128567984, 11.262471171824348 ], [ 160.28854434903559, 11.262485579568995 ], [ 160.288434194351055, 11.263554031242515 ], [ 160.287915154219604, 11.264193336914744 ], [ 160.287576888144173, 11.264354606157871 ], [ 160.28673039353788, 11.264333508837268 ], [ 160.28639213097884, 11.264494776596347 ], [ 160.286183728626781, 11.265819803744963 ], [ 160.285823744673763, 11.266812722924442 ], [ 160.285124998126321, 11.267946516025027 ], [ 160.284029354855676, 11.267839546511798 ], [ 160.283803287241881, 11.26692164795724 ], [ 160.283826508880452, 11.266089560383433 ], [ 160.284551988788394, 11.264105610437454 ], [ 160.284478703629588, 11.263536391161963 ], [ 160.284409699596864, 11.262952317462247 ], [ 160.284799237670796, 11.261132130081576 ], [ 160.284476171277163, 11.260456850293705 ], [ 160.283878229971037, 11.260525213928037 ], [ 160.283545608625303, 11.260688224479269 ], [ 160.283180155210147, 11.261679421918167 ], [ 160.282256250990343, 11.26497528171973 ], [ 160.281305275865691, 11.266024281424128 ], [ 160.281297621426944, 11.266033339546663 ], [ 160.280080406757918, 11.267826706158582 ], [ 160.279740939162764, 11.267971336808172 ], [ 160.276450191612867, 11.271549855570814 ], [ 160.276442537281412, 11.271558912565396 ], [ 160.276769830812867, 11.272219250163415 ], [ 160.277589009650654, 11.273070167093529 ], [ 160.278339969992999, 11.273333477116541 ], [ 160.278926453209579, 11.273278751155168 ], [ 160.280105495426767, 11.273136941392703 ], [ 160.28060881149014, 11.273313962721197 ], [ 160.281595843761806, 11.274488756982503 ], [ 160.2825856545102, 11.274868169413729 ], [ 160.282895139297267, 11.275537197609816 ], [ 160.283387479562037, 11.27653581524766 ], [ 160.284047221014589, 11.277050267182112 ], [ 160.284201495357792, 11.277398501266422 ], [ 160.284273104045582, 11.277968136755964 ], [ 160.284247042714071, 11.278814539439097 ], [ 160.282758293991691, 11.281333015274537 ], [ 160.282483351220264, 11.282076450108178 ], [ 160.282544157358672, 11.282656037669245 ], [ 160.283211001353266, 11.283171774405552 ], [ 160.284211692470365, 11.283541221730463 ], [ 160.284528145759168, 11.284211552111424 ], [ 160.284849877402507, 11.284870133999366 ], [ 160.285104028205467, 11.284961322328016 ], [ 160.285172827733788, 11.285545331388201 ], [ 160.284646561042166, 11.286213684521822 ], [ 160.284634903519844, 11.286220527910714 ], [ 160.283874211662379, 11.286764685711024 ], [ 160.283688985182636, 11.287257452659176 ], [ 160.284446424696966, 11.287525713343612 ], [ 160.285687612134183, 11.287980231453885 ], [ 160.285851426496947, 11.28830185542833 ], [ 160.285581952488258, 11.289047008972082 ], [ 160.284989672613705, 11.289116934957315 ], [ 160.283650748088235, 11.288908613487781 ], [ 160.283307212484004, 11.28908151710865 ], [ 160.282455392376306, 11.289883455963023 ], [ 160.282766309111082, 11.290551987090982 ], [ 160.284019882713864, 11.290996049662862 ], [ 160.285357171385755, 11.291204876018876 ], [ 160.286356615003086, 11.291557762662924 ], [ 160.287017797959919, 11.292071800396092 ], [ 160.286381937476563, 11.293804577951999 ], [ 160.287269758510803, 11.295239539996837 ], [ 160.287411813722429, 11.296392557969977 ], [ 160.287311268962668, 11.296653140761252 ], [ 160.287112549373575, 11.297964609547742 ], [ 160.286842909604076, 11.298709719710942 ], [ 160.286144909757894, 11.29984625550151 ], [ 160.285530754706457, 11.300747508170385 ], [ 160.284503097469241, 11.301221051470547 ], [ 160.282757234651342, 11.300589796734503 ], [ 160.280482604590787, 11.300624087643918 ], [ 160.279297956578603, 11.300763725673583 ], [ 160.278033518375366, 11.301140945736101 ], [ 160.274758533332061, 11.300805723076827 ], [ 160.272580149202952, 11.300594391601994 ], [ 160.272653316661859, 11.301163379397719 ], [ 160.273286915326935, 11.302506904101934 ], [ 160.27351828853574, 11.303426245370765 ], [ 160.273332416454679, 11.303922450536136 ], [ 160.272993318225616, 11.304080399258357 ], [ 160.272560471868331, 11.304486684468353 ], [ 160.272882102725276, 11.305145122371684 ], [ 160.272605832089937, 11.30590223541598 ], [ 160.270223305785322, 11.307000227511566 ], [ 160.269112811044636, 11.307712009032615 ], [ 160.268203290424992, 11.307108595232179 ], [ 160.267294640730029, 11.30650832763207 ], [ 160.263822363135915, 11.307500811504374 ], [ 160.263546527953537, 11.308240758496741 ], [ 160.263869356679777, 11.308915735369842 ], [ 160.26427479333347, 11.309338907189264 ], [ 160.265618735163628, 11.309535588002579 ], [ 160.266617976761438, 11.3098884652624 ], [ 160.265643814604886, 11.311781667714429 ], [ 160.265557606415058, 11.312014166760825 ], [ 160.265622044801773, 11.312612784942578 ], [ 160.266461805606184, 11.31262931301548 ], [ 160.267388777037979, 11.312416442710189 ], [ 160.268986238533415, 11.312684181664514 ], [ 160.26913966631858, 11.313035916904841 ], [ 160.267937681029906, 11.313991835218784 ], [ 160.267667436124214, 11.31473347685786 ], [ 160.268073729015867, 11.31515980008821 ], [ 160.269802679325664, 11.316610458669786 ], [ 160.270527234656981, 11.317719905439333 ], [ 160.271119546656024, 11.31765009539906 ], [ 160.271128942623449, 11.31764731945742 ], [ 160.272485320163412, 11.317015765821649 ], [ 160.273940872584177, 11.316130906608672 ], [ 160.27497946187205, 11.314836393337206 ], [ 160.275820265526278, 11.314856058498743 ], [ 160.277841854796577, 11.314747417545965 ], [ 160.278248923115058, 11.315170169862615 ], [ 160.278544275978419, 11.316674665567271 ], [ 160.279659107392945, 11.319026466439892 ], [ 160.280636547060936, 11.320210634935577 ], [ 160.280892152499689, 11.320301421357721 ], [ 160.281705721970496, 11.321164080514816 ], [ 160.282463032388932, 11.321432469750375 ], [ 160.282975455025337, 11.320775405281218 ], [ 160.283590299537082, 11.319870861058478 ], [ 160.284521792371578, 11.319643190018875 ], [ 160.285262291913227, 11.319936920816311 ], [ 160.285590990606011, 11.320596676047948 ], [ 160.286087076876868, 11.320772554282636 ], [ 160.287135860199555, 11.319464883444276 ], [ 160.287972943197104, 11.319495905293079 ], [ 160.288723153152176, 11.319763027632606 ], [ 160.288881612603262, 11.320096354680194 ], [ 160.288510341840066, 11.321085091861221 ], [ 160.288933699520385, 11.321499684076759 ], [ 160.291182560326973, 11.322308410258957 ], [ 160.291816099758478, 11.323651993144168 ], [ 160.291138324998542, 11.323957399582744 ], [ 160.290636726140491, 11.323779730221386 ], [ 160.290253680879658, 11.325600025345356 ], [ 160.289295501878684, 11.326660216610433 ], [ 160.289120955793607, 11.327142782580163 ], [ 160.29002529748243, 11.327758100209159 ], [ 160.290454241637065, 11.327349732023508 ], [ 160.291842473285953, 11.325897811310611 ], [ 160.293202968963385, 11.325261813174762 ], [ 160.293699413970415, 11.325451198362947 ], [ 160.294519776051203, 11.326301784576948 ], [ 160.2937529437244, 11.326854075481631 ], [ 160.292475979107564, 11.32724137800199 ], [ 160.29161848859232, 11.328041029433127 ], [ 160.29134247342904, 11.328780946495138 ], [ 160.291501781213896, 11.329117403770589 ], [ 160.291999082242739, 11.329309930636301 ], [ 160.292771948260508, 11.328742313997251 ], [ 160.293296449284469, 11.328091916073474 ], [ 160.295205917788167, 11.329045114085487 ], [ 160.29552228608037, 11.329715322184716 ], [ 160.294977456780401, 11.331203203548519 ], [ 160.294136707456488, 11.331183345349615 ], [ 160.293542810559757, 11.331253502509851 ], [ 160.293029959726368, 11.331897032782143 ], [ 160.29325713895966, 11.332814138311331 ], [ 160.293574233232164, 11.333487494488306 ], [ 160.294235241577724, 11.334001616855932 ], [ 160.294489980506569, 11.334089304360601 ], [ 160.294987690804675, 11.334264761092978 ], [ 160.295388675208102, 11.334702943734372 ], [ 160.295024435989177, 11.335692838476888 ], [ 160.295685437867945, 11.336206971535441 ], [ 160.296595548219273, 11.336807071673965 ], [ 160.296664276858394, 11.33739085350615 ], [ 160.296482898946749, 11.3378855688777 ], [ 160.295715915196581, 11.338437765463594 ], [ 160.294620442408586, 11.338330161787683 ], [ 160.293186567854207, 11.33838354606821 ], [ 160.292602602543212, 11.338440553051763 ], [ 160.292253532050296, 11.338611469239606 ], [ 160.291803763304443, 11.339836930643701 ], [ 160.291533336178816, 11.340578470291076 ], [ 160.291510897496494, 11.341396110757564 ], [ 160.291151281567636, 11.342384525417573 ], [ 160.29069470979627, 11.343622101713402 ], [ 160.290605650509406, 11.343868947983591 ], [ 160.290175926057515, 11.344280809413616 ], [ 160.290172270647531, 11.344292068224377 ], [ 160.289901487351983, 11.345020088720041 ], [ 160.288655844277031, 11.347640733619794 ], [ 160.289222076998612, 11.348399938453417 ], [ 160.290311969644392, 11.348505839760575 ], [ 160.292244539981539, 11.348644710200556 ], [ 160.294219678522978, 11.350196154272883 ], [ 160.29571644806208, 11.350724945723943 ], [ 160.297288401711114, 11.351842335512245 ], [ 160.296772984835229, 11.352483011613643 ], [ 160.296768693256865, 11.352497850609215 ], [ 160.29648856966142, 11.353235357787005 ], [ 160.296785029342487, 11.354739226888077 ], [ 160.29592215298419, 11.35555023178949 ], [ 160.295747523647577, 11.356032651824211 ], [ 160.296223008337847, 11.357039191478615 ], [ 160.295947741040322, 11.357782004500089 ], [ 160.295608579961367, 11.357939728958092 ], [ 160.292268397143772, 11.357025057360955 ], [ 160.289589880921966, 11.356620829355977 ], [ 160.289499178897842, 11.35686811551815 ], [ 160.289223938010622, 11.357610890136895 ], [ 160.289456128074448, 11.358516096556309 ], [ 160.290022642271879, 11.359288753073315 ], [ 160.289322824656836, 11.360424757898954 ], [ 160.289137409417094, 11.36091709147609 ], [ 160.289798275185717, 11.36143121244001 ], [ 160.2903877055534, 11.361376098766616 ], [ 160.292522184088853, 11.360190129627682 ], [ 160.293859669171752, 11.360382702030222 ], [ 160.295433010236025, 11.361499655067604 ], [ 160.296062525066333, 11.362854277276714 ], [ 160.296851034097841, 11.364531805788534 ], [ 160.297607264776957, 11.364797334082716 ], [ 160.298291863812381, 11.364480094508613 ], [ 160.299832598754733, 11.363364142248752 ], [ 160.300770420411254, 11.363135067911568 ], [ 160.301018871047916, 11.363224651175992 ], [ 160.302442691015472, 11.363184751535986 ], [ 160.30394670136684, 11.363714963804204 ], [ 160.305440673871999, 11.364258334508181 ], [ 160.306191439012707, 11.36452212749893 ], [ 160.306616834930082, 11.364125251179997 ], [ 160.306627626511784, 11.364115283664921 ], [ 160.3072624630029, 11.362401240473476 ], [ 160.307393520039398, 11.360489633809108 ], [ 160.307007151162054, 11.359236171401017 ], [ 160.305869238747988, 11.357715760925178 ], [ 160.30464638665822, 11.356427395505381 ], [ 160.30441935652243, 11.355510347901676 ], [ 160.304445547850719, 11.354681468763586 ], [ 160.304805924607393, 11.35368952157355 ], [ 160.305393053856506, 11.353631686458936 ], [ 160.306483045032223, 11.353737687793013 ], [ 160.313006999923743, 11.358308089461717 ], [ 160.313255473273927, 11.358397683896316 ], [ 160.317211789206112, 11.361486101567262 ], [ 160.318206674707341, 11.361854412017875 ], [ 160.320659376968564, 11.361338130731637 ], [ 160.321907944410327, 11.361777575190281 ], [ 160.322411176380797, 11.361954948282666 ], [ 160.322930660669726, 11.361316636484045 ], [ 160.323625236893889, 11.360178602795459 ], [ 160.32363689847665, 11.360171770537873 ], [ 160.323972024486778, 11.360005072353418 ], [ 160.324809219353654, 11.360036455969565 ], [ 160.325228502963711, 11.360448992618643 ], [ 160.325020728883572, 11.361772653087019 ], [ 160.325678914173693, 11.362301385879352 ], [ 160.326154373500572, 11.363308187330006 ], [ 160.327404473638467, 11.363747237570193 ], [ 160.328674821279094, 11.363372676022944 ], [ 160.329268829687493, 11.363302731512965 ], [ 160.329428189891075, 11.363639214366971 ], [ 160.330932311077788, 11.364169686509802 ], [ 160.332424143823971, 11.364710587241728 ], [ 160.332986063326132, 11.365484940708761 ], [ 160.332970548472929, 11.366303966725933 ], [ 160.334697325747868, 11.367766555856889 ], [ 160.335603555659134, 11.368364761655847 ], [ 160.3373039872763, 11.370656389351749 ], [ 160.33771733246013, 11.371084301522195 ], [ 160.338401283043936, 11.370763935194756 ], [ 160.338171993669789, 11.369844002393236 ], [ 160.338691543809688, 11.369205578488002 ], [ 160.339533218817451, 11.369222181297728 ], [ 160.340444968539714, 11.369822197296918 ], [ 160.340693469171725, 11.369911843511009 ], [ 160.34177849210667, 11.370029807996065 ], [ 160.343643033622612, 11.369585435148087 ], [ 160.344961783874652, 11.370608518572395 ], [ 160.345937683482163, 11.3718073254614 ], [ 160.355348963095565, 11.375441259437123 ], [ 160.355356967925132, 11.375445687841673 ], [ 160.356865819125233, 11.375160595247754 ], [ 160.357162152785605, 11.373586755695717 ], [ 160.355752673767114, 11.372810848116732 ], [ 160.354571251219227, 11.372938402470625 ], [ 160.354151958499017, 11.372525734505301 ], [ 160.354755992518164, 11.372442755118847 ], [ 160.356180306042063, 11.372403132727538 ], [ 160.356455854759275, 11.371660109560377 ], [ 160.357069567766672, 11.370773295477353 ], [ 160.356587007017566, 11.36976494081002 ], [ 160.356712780645722, 11.368658742744058 ], [ 160.357983201460826, 11.365222883251805 ], [ 160.358834295514185, 11.364422130987425 ], [ 160.358051013463154, 11.362731850828352 ], [ 160.357546048220087, 11.362554857612601 ], [ 160.356635806011866, 11.36195425400423 ], [ 160.356317191555803, 11.361281066042212 ], [ 160.356274949116141, 11.359867884428697 ], [ 160.355522317553124, 11.359604389653407 ], [ 160.354844198644173, 11.359909549264961 ], [ 160.353981715271431, 11.360723902424072 ], [ 160.350504023734857, 11.364780029551092 ], [ 160.349476697583896, 11.365255969986745 ], [ 160.348053168007709, 11.365298877343157 ], [ 160.347147280576337, 11.364683494422831 ], [ 160.345986954110117, 11.36399379588085 ], [ 160.345345982022963, 11.362652077187667 ], [ 160.344805919240457, 11.361063383475109 ], [ 160.343395218594168, 11.360271049332662 ], [ 160.339143790609938, 11.358755146649681 ], [ 160.337712461043054, 11.358793702548565 ], [ 160.3369670430898, 11.358531576470774 ], [ 160.336807450670676, 11.358181548055459 ], [ 160.336516732049915, 11.356678904940448 ], [ 160.33553630418271, 11.355495054273419 ], [ 160.333830325593652, 11.353215110357379 ], [ 160.333258531825606, 11.352453794965262 ], [ 160.333100014259458, 11.352120417314705 ], [ 160.33280910489438, 11.35061779209628 ], [ 160.332670440096223, 11.349450384440646 ], [ 160.333057158592311, 11.347629018177003 ], [ 160.331829011648722, 11.346358721635967 ], [ 160.331510332451643, 11.345685641946316 ], [ 160.331690313584971, 11.345191283631952 ], [ 160.333802421964748, 11.344832871020955 ], [ 160.335074482557303, 11.344457554948404 ], [ 160.334940939940111, 11.343278357529346 ], [ 160.333782167361619, 11.342588359668175 ], [ 160.332049783535439, 11.341137563636028 ], [ 160.331648349707876, 11.340716305657155 ], [ 160.331256326092245, 11.33946062662981 ], [ 160.331347060982637, 11.339213207220652 ], [ 160.332029470228719, 11.338893010216836 ], [ 160.334051738115079, 11.338785028430975 ], [ 160.335486015542045, 11.338731769134352 ], [ 160.337074350142615, 11.339026971983053 ], [ 160.337984761163852, 11.339627343840624 ], [ 160.339980162725624, 11.340345473289114 ], [ 160.341075954200136, 11.340453252777257 ], [ 160.343739647758696, 11.34168714059826 ], [ 160.34704418992311, 11.343441523341136 ], [ 160.349548177310396, 11.344325485672627 ], [ 160.34980235333515, 11.344416844531652 ], [ 160.350550593752274, 11.344695138539867 ], [ 160.352227403457164, 11.344740237799813 ], [ 160.355588741432342, 11.344821412592236 ], [ 160.356591065062332, 11.345191138320919 ], [ 160.357999272309456, 11.345967361092493 ], [ 160.358246956867191, 11.346053860638436 ], [ 160.358109526554813, 11.344902763207731 ], [ 160.358046523304182, 11.344320431495918 ], [ 160.358226441695592, 11.343825999548697 ], [ 160.358819384350909, 11.343739348988034 ], [ 160.359566162429871, 11.344018120867936 ], [ 160.36062943098392, 11.34495045338911 ], [ 160.361472499255399, 11.344983549206439 ], [ 160.362498419035489, 11.344507763345122 ], [ 160.362747616408711, 11.344593823587152 ], [ 160.361953734964999, 11.34599252395409 ], [ 160.361340078555401, 11.346879703912606 ], [ 160.361066572736974, 11.347635981530297 ], [ 160.361722094360516, 11.348148787795974 ], [ 160.362634069879846, 11.348748917274682 ], [ 160.364137084609723, 11.349279981091405 ], [ 160.365362446716432, 11.350565161200942 ], [ 160.365271656095132, 11.350812610192541 ], [ 160.366087206977056, 11.351658485663227 ], [ 160.367840765161844, 11.352292260007147 ], [ 160.370202726617919, 11.352020112046032 ], [ 160.371610112056516, 11.352793366499608 ], [ 160.373110385917499, 11.353338938943415 ], [ 160.374724489955469, 11.352802007292619 ], [ 160.37686357748106, 11.351614423687044 ], [ 160.3782873105107, 11.35157146630959 ], [ 160.379607659430462, 11.352611547598972 ], [ 160.380016267337709, 11.353034309328093 ], [ 160.382924070137705, 11.354353328277558 ], [ 160.383833609095603, 11.354950967063944 ], [ 160.38447288939696, 11.356310747037647 ], [ 160.384330918111203, 11.35821658735971 ], [ 160.384750020176568, 11.358646457527886 ], [ 160.385904117392926, 11.359331599912284 ], [ 160.386836042163679, 11.359097630121349 ], [ 160.38795334152519, 11.358388000476845 ], [ 160.388540468262136, 11.35831678400576 ], [ 160.389266842315095, 11.359409855716795 ], [ 160.389999926913191, 11.360521322394879 ], [ 160.391149745851351, 11.361221362483475 ], [ 160.391648503750048, 11.367548945191885 ], [ 160.390222261283668, 11.370651231014813 ], [ 160.394304826815983, 11.384123795065804 ], [ 160.392243236741962, 11.382823217696494 ], [ 160.389332239955422, 11.381491114302998 ], [ 160.387636070084795, 11.38034098364685 ], [ 160.385945938484895, 11.379182315021891 ], [ 160.385937404753207, 11.379188222892671 ], [ 160.385172801458282, 11.379732520428563 ], [ 160.385057080851425, 11.380808687309791 ], [ 160.385603927775833, 11.382399111588308 ], [ 160.386167342853128, 11.383173404745268 ], [ 160.386490165113941, 11.383831867373811 ], [ 160.387262447051171, 11.383278566796063 ], [ 160.390899204750326, 11.385690165982203 ], [ 160.390542540157071, 11.38666753755672 ], [ 160.388167331095048, 11.386952859408275 ], [ 160.387803876880838, 11.387942378699009 ], [ 160.388441638259366, 11.389285361139107 ], [ 160.392638969216932, 11.395543811577289 ], [ 160.393117493566564, 11.396550132759225 ], [ 160.393435088452406, 11.397220298387657 ], [ 160.392412429338634, 11.40075908795591 ], [ 160.393134162313487, 11.401866877671813 ], [ 160.392616625953707, 11.402507890502935 ], [ 160.393283659124876, 11.403014103058862 ], [ 160.395322844245328, 11.40207801431967 ], [ 160.398273998694265, 11.401749161285059 ], [ 160.399137274448634, 11.400948679480276 ], [ 160.399094000754019, 11.399535921232784 ], [ 160.396910573388368, 11.396238029154883 ], [ 160.396299463055783, 11.394065768307351 ], [ 160.393778861909311, 11.39092823561397 ], [ 160.394212425975439, 11.390522258119917 ], [ 160.396688579901422, 11.392243923831511 ], [ 160.399364159780305, 11.392657842874939 ], [ 160.39984258335528, 11.393664281682579 ], [ 160.399234145799937, 11.394552788939945 ], [ 160.399554125641771, 11.395225696954489 ], [ 160.406227936996686, 11.397073259575809 ], [ 160.407537526771051, 11.398106661979194 ], [ 160.408704257281215, 11.398795169114679 ], [ 160.410065210921232, 11.401245885784199 ], [ 160.412383093690494, 11.402634349881582 ], [ 160.413991687493365, 11.405171766152916 ], [ 160.41499552968628, 11.408599868061163 ], [ 160.418012460850633, 11.411934706837084 ], [ 160.418782208642568, 11.414430346328828 ], [ 160.418891945237277, 11.416427542242952 ], [ 160.420777807715837, 11.418221712691492 ], [ 160.423954445949846, 11.421883023991715 ], [ 160.423934795719902, 11.422713511022978 ], [ 160.423001444517183, 11.422930086845117 ], [ 160.423818312022433, 11.423775950991526 ], [ 160.425494214557261, 11.423829798475415 ], [ 160.425507622748995, 11.423829251128812 ], [ 160.426865690979923, 11.423199210747271 ], [ 160.427499570989312, 11.421482178491043 ], [ 160.425484490931694, 11.415449460630313 ], [ 160.424806666187294, 11.412678875676654 ], [ 160.423400536923879, 11.411890878897857 ], [ 160.420034514250915, 11.411811741882239 ], [ 160.417287301760581, 11.407742392351167 ], [ 160.415742797327113, 11.405803829076964 ], [ 160.415773789236255, 11.404959718853338 ], [ 160.415852275358617, 11.40472278519213 ], [ 160.417880938451191, 11.404611312396767 ], [ 160.418219564339921, 11.404450585454828 ], [ 160.418021102558896, 11.402703151624053 ], [ 160.419516966524043, 11.400168588288857 ], [ 160.419816263625364, 11.398597071125383 ], [ 160.416931287237389, 11.396452019073294 ], [ 160.416700585251306, 11.395532072299382 ], [ 160.416008185274649, 11.39358023109896 ], [ 160.411324219057519, 11.389405238524555 ], [ 160.409890571667859, 11.386385000233091 ], [ 160.408887369932529, 11.386018386568516 ], [ 160.408115279897061, 11.38658519562977 ], [ 160.407847129790326, 11.387326125099358 ], [ 160.407841198612829, 11.387341450968465 ], [ 160.407258980210173, 11.387387265304479 ], [ 160.406256263155115, 11.387034102322684 ], [ 160.405871300774862, 11.388841384822255 ], [ 160.40507426568692, 11.390236988475626 ], [ 160.403643267119975, 11.390278084982238 ], [ 160.401733708819535, 11.389312743545675 ], [ 160.400751975398038, 11.388128568298079 ], [ 160.400438760013884, 11.387443442131417 ], [ 160.399642643736684, 11.385766718392524 ], [ 160.402443087840794, 11.385088070031037 ], [ 160.403051513185147, 11.384199416030905 ], [ 160.397222468109504, 11.379292933202887 ], [ 160.395010884213718, 11.376838136593836 ], [ 160.394373868687097, 11.375498121666878 ], [ 160.395378392939193, 11.37278842510702 ], [ 160.394083978343531, 11.370922316867986 ], [ 160.393085947196823, 11.364419425941875 ], [ 160.393221533374259, 11.362508687116508 ], [ 160.393491260367739, 11.361780688968414 ], [ 160.394443738679769, 11.360732606581252 ], [ 160.396012117475578, 11.361842406055599 ], [ 160.39708342157499, 11.362779559157669 ], [ 160.398039177119699, 11.364793147501643 ], [ 160.398696578940132, 11.365319225362862 ], [ 160.400036763547064, 11.365525268351139 ], [ 160.40094881451347, 11.366125717097221 ], [ 160.402020573537385, 11.36707636940689 ], [ 160.403373301394595, 11.369526464554397 ], [ 160.404029613582281, 11.370035921179104 ], [ 160.404091779501783, 11.370027791631989 ], [ 160.404623932487596, 11.369966074616343 ], [ 160.404400201589425, 11.369047350028389 ], [ 160.404086769141003, 11.368362166483413 ], [ 160.404480277587567, 11.368185105542624 ], [ 160.404763648961904, 11.368057471832607 ], [ 160.406014299378199, 11.368497082079315 ], [ 160.409507673550593, 11.369769937798409 ], [ 160.409781911336637, 11.369027028379426 ], [ 160.409661042553125, 11.368774023547468 ], [ 160.409462547708728, 11.368357136953559 ], [ 160.408595038422305, 11.367580506032064 ], [ 160.408403535536593, 11.367409432782566 ], [ 160.408333528132829, 11.366825659480028 ], [ 160.408696984782068, 11.365835724356007 ], [ 160.409338325332982, 11.365904810746329 ], [ 160.409781633737737, 11.365950757988259 ], [ 160.410286619993173, 11.366127936982586 ], [ 160.410299052084355, 11.366117483246345 ], [ 160.41072009403851, 11.365721771324907 ], [ 160.410585704113714, 11.364555918641173 ], [ 160.410012202104269, 11.363794502082698 ], [ 160.408464695666595, 11.361853182141322 ], [ 160.407878154677462, 11.361234839309663 ], [ 160.406835779427723, 11.360132823070446 ], [ 160.405197258938813, 11.358439089900045 ], [ 160.404216602116861, 11.357254385197471 ], [ 160.404143727994693, 11.357089099376985 ], [ 160.404062504399462, 11.356905899819761 ], [ 160.403965793853416, 11.356703493232807 ], [ 160.40358544852873, 11.355898745888892 ], [ 160.403610243942097, 11.355069650277594 ], [ 160.403518711095586, 11.354604236752147 ], [ 160.403312361667105, 11.353564809005876 ], [ 160.403582130030372, 11.352836798092003 ], [ 160.405381055360124, 11.351790255736972 ], [ 160.405495808101733, 11.350710448777715 ], [ 160.40539503388311, 11.349880959024434 ], [ 160.405356877628009, 11.349559392602037 ], [ 160.40585659837879, 11.34666116785878 ], [ 160.405627624857601, 11.345730199959924 ], [ 160.405404855962956, 11.344821169088588 ], [ 160.404650850799129, 11.344045026617852 ], [ 160.404581861601741, 11.343973673488817 ], [ 160.40447069674093, 11.343731359045515 ], [ 160.404268435359853, 11.34328835959073 ], [ 160.403624905373562, 11.342727569841381 ], [ 160.403199310000502, 11.342353834607849 ], [ 160.402881453779088, 11.341683412809058 ], [ 160.403155440524017, 11.340940319185627 ], [ 160.403763713888026, 11.340051066647089 ], [ 160.404471240849915, 11.338901563952112 ], [ 160.40483617493021, 11.337910834735441 ], [ 160.404179710555468, 11.337401400582918 ], [ 160.402902973179749, 11.337774620101163 ], [ 160.402060866463586, 11.337758105451565 ], [ 160.401161074026362, 11.337147252083941 ], [ 160.400514511284598, 11.335816378254679 ], [ 160.39958344225488, 11.332956090106146 ], [ 160.399925020362588, 11.329720229174287 ], [ 160.399612614682042, 11.329051557156166 ], [ 160.39796970144215, 11.327355690097052 ], [ 160.39781466258944, 11.327004026787257 ], [ 160.397431679808903, 11.325761752186665 ], [ 160.397428201674018, 11.325749191480718 ], [ 160.397047529454937, 11.324479051887575 ], [ 160.397923807551763, 11.322861683226803 ], [ 160.399218637655508, 11.321654045548629 ], [ 160.400743549986771, 11.321350011022862 ], [ 160.402336609441761, 11.321647524590311 ], [ 160.403492410248703, 11.322349275752977 ], [ 160.40463186626738, 11.323867756133522 ], [ 160.40551110116408, 11.325310174178291 ], [ 160.405561470619716, 11.326728829356266 ], [ 160.405790214251596, 11.327646436896153 ], [ 160.406356782261327, 11.328406608141888 ], [ 160.407108117265096, 11.328670664515466 ], [ 160.408378402428468, 11.328292437337586 ], [ 160.409040556301761, 11.328803621513506 ], [ 160.409513510301224, 11.329825824378375 ], [ 160.40958794387933, 11.330394926999199 ], [ 160.4085610035076, 11.330874561771488 ], [ 160.408049188968107, 11.33151811230446 ], [ 160.40815598292059, 11.333514489908936 ], [ 160.408131278410082, 11.334343788899048 ], [ 160.407518701038128, 11.335247999314838 ], [ 160.407153766050413, 11.336238782215519 ], [ 160.407804735344826, 11.336746460767847 ], [ 160.40807165566801, 11.336840951372011 ], [ 160.409658611616152, 11.33711669889688 ], [ 160.41065327875603, 11.337482253596143 ], [ 160.41163122564069, 11.338681535781705 ], [ 160.412654935099084, 11.341276921693092 ], [ 160.413538215373165, 11.342538094008331 ], [ 160.413953628496301, 11.343132261078054 ], [ 160.41470215282385, 11.343410815302372 ], [ 160.415290385544239, 11.343349436402727 ], [ 160.416066132054084, 11.34277082137012 ], [ 160.416360443207452, 11.341389902949398 ], [ 160.416451479484863, 11.340965642068818 ], [ 160.416379086880653, 11.340599767886539 ], [ 160.416153488024094, 11.339460465254852 ], [ 160.415611708611124, 11.337870923842885 ], [ 160.416045170260475, 11.337464534051405 ], [ 160.41645720970476, 11.337611348877713 ], [ 160.416543227641171, 11.337640326512714 ], [ 160.417359383372684, 11.338500171815538 ], [ 160.419089605068166, 11.336885859032581 ], [ 160.418975794929821, 11.334888185957702 ], [ 160.418243649355816, 11.333792916650909 ], [ 160.418196223595913, 11.332390341620149 ], [ 160.418196750095518, 11.332379995211841 ], [ 160.418704122158601, 11.32947863662919 ], [ 160.418545658581053, 11.329144904635033 ], [ 160.418725531786009, 11.325568867660404 ], [ 160.417930174413158, 11.323890862701113 ], [ 160.41670664231421, 11.32260761046318 ], [ 160.41572410337929, 11.321423115167372 ], [ 160.41531131988728, 11.320997960321277 ], [ 160.415681734357463, 11.320008698542107 ], [ 160.416358677288059, 11.31970357458307 ], [ 160.416862287128822, 11.319881091831181 ], [ 160.420037505840043, 11.320466035704746 ], [ 160.418205631004355, 11.320072375631444 ], [ 160.416950605816794, 11.319630789068739 ], [ 160.417589471972434, 11.317896336270257 ], [ 160.417610115475441, 11.3170646236153 ], [ 160.418408040539987, 11.315684077590141 ], [ 160.41917924178361, 11.315113252500364 ], [ 160.420294001597455, 11.311325173527772 ], [ 160.421244046776451, 11.310273346690796 ], [ 160.424975644338673, 11.309375479066574 ], [ 160.425886508580561, 11.309976463707036 ], [ 160.426957221664395, 11.310927844029489 ], [ 160.427868211053124, 11.31152881074142 ], [ 160.428793557013705, 11.311306601460821 ], [ 160.429222742641173, 11.31091484043713 ], [ 160.429432493255746, 11.309571935933317 ], [ 160.42901810470363, 11.309147031486072 ], [ 160.427864558604711, 11.308447761004128 ], [ 160.427048499779545, 11.307601280011388 ], [ 160.426163394226052, 11.306156712300931 ], [ 160.425933797040301, 11.305235614524111 ], [ 160.425112086236084, 11.304387415074853 ], [ 160.424775819652638, 11.304551283324306 ], [ 160.424613675056065, 11.307290555986583 ], [ 160.423865088696061, 11.307018861443295 ], [ 160.422113844174419, 11.306384002800232 ], [ 160.420386450429817, 11.304923177674164 ], [ 160.419793495127124, 11.304992941171243 ], [ 160.417428981223537, 11.30526644446075 ], [ 160.415581808054782, 11.304897870610924 ], [ 160.414432731182529, 11.30418383496094 ], [ 160.414268919150459, 11.303861829102802 ], [ 160.412535049166422, 11.302396263385374 ], [ 160.410554355617791, 11.300847322131855 ], [ 160.408739042204786, 11.299650535101886 ], [ 160.407738571782687, 11.299283453512045 ], [ 160.407404272660528, 11.299429777194019 ], [ 160.406378857551829, 11.299909374535506 ], [ 160.406421425130418, 11.301323933825723 ], [ 160.407973973676036, 11.303267676224396 ], [ 160.409357182549712, 11.304887683740079 ], [ 160.409330979466489, 11.305717699030302 ], [ 160.408633629801159, 11.306854633623574 ], [ 160.407945292650965, 11.307173430942919 ], [ 160.406040446908747, 11.306210385078897 ], [ 160.40337619687449, 11.304978991195359 ], [ 160.402396674314133, 11.303793691924511 ], [ 160.401848875174835, 11.302202264211603 ], [ 160.402125217863016, 11.30146146852351 ], [ 160.402991075578399, 11.300645064377404 ], [ 160.402419711254339, 11.299886230471225 ], [ 160.402121304048137, 11.29838077631714 ], [ 160.402078697381228, 11.29696623053049 ], [ 160.401416416063086, 11.29645511933086 ], [ 160.401168611373208, 11.296368627262172 ], [ 160.400077399847476, 11.296249288618846 ], [ 160.398803499107572, 11.29663924854877 ], [ 160.396897766280006, 11.295673258468879 ], [ 160.395006889782678, 11.293873831916471 ], [ 160.394260774350414, 11.293598208583839 ], [ 160.39325507154544, 11.293242993305103 ], [ 160.392847986972924, 11.292819627489518 ], [ 160.392411278260312, 11.290148803017573 ], [ 160.391528040463157, 11.288717644682389 ], [ 160.391044875036158, 11.287708525062177 ], [ 160.390817514259055, 11.286790297547428 ], [ 160.389677960504912, 11.285254800956777 ], [ 160.388519317423913, 11.284567676805626 ], [ 160.387767910344422, 11.284303872204337 ], [ 160.387409239331305, 11.285279791165461 ], [ 160.387457627999481, 11.286696036454636 ], [ 160.386839722761522, 11.287599034913487 ], [ 160.387225000433659, 11.288854508250404 ], [ 160.387643773173437, 11.289264203939556 ], [ 160.387635350710781, 11.289276886583149 ], [ 160.387115320339319, 11.289933460424752 ], [ 160.386342243758889, 11.290484591536124 ], [ 160.386074011056763, 11.291229826535904 ], [ 160.385895018267632, 11.291727827346499 ], [ 160.384937355023652, 11.292775317597609 ], [ 160.385005149539552, 11.293356667870958 ], [ 160.386344920837246, 11.293565537455532 ], [ 160.387683832949534, 11.293771274282749 ], [ 160.388682995392713, 11.294121587783634 ], [ 160.388845304256478, 11.29445077291758 ], [ 160.388849544766231, 11.294459712874252 ], [ 160.388366529885502, 11.296528903244432 ], [ 160.387505216963746, 11.297330402303434 ], [ 160.3864141053445, 11.297211104526497 ], [ 160.385324218346369, 11.297108439337075 ], [ 160.38434468522405, 11.295923345641492 ], [ 160.383370432911676, 11.294726505276929 ], [ 160.383456016809362, 11.294490567078638 ], [ 160.382978407298424, 11.29348332538488 ], [ 160.382226708313283, 11.293206020426146 ], [ 160.381652071986537, 11.293273909590317 ], [ 160.381117151229461, 11.293931424074263 ], [ 160.380587157630515, 11.294570486427022 ], [ 160.38009473984684, 11.29439663654513 ], [ 160.379613252201182, 11.293387177475909 ], [ 160.378707665317592, 11.292774850466413 ], [ 160.377523075422005, 11.292917686201609 ], [ 160.376861611410334, 11.292403102873635 ], [ 160.376613837534308, 11.292316650132316 ], [ 160.37688754853005, 11.291573249136061 ], [ 160.378819184102099, 11.29170904799561 ], [ 160.37934318036568, 11.291054743789177 ], [ 160.379363607542928, 11.290223091421531 ], [ 160.378702125977327, 11.289708498890253 ], [ 160.377103193180801, 11.289426826397037 ], [ 160.375680759844812, 11.289470127472585 ], [ 160.374659896851199, 11.289934946078878 ], [ 160.373639167610946, 11.290399719415866 ], [ 160.372908686259109, 11.292382266264918 ], [ 160.372956939540472, 11.29379828109666 ], [ 160.372771468879165, 11.294291343559054 ], [ 160.371254358505468, 11.294580016719744 ], [ 160.371158118093319, 11.294825881033152 ], [ 160.371571790659772, 11.295253980241256 ], [ 160.372232353291082, 11.295765395262304 ], [ 160.372046880436727, 11.296258441523436 ], [ 160.370497789716637, 11.297392231252278 ], [ 160.370413847965409, 11.297627654791924 ], [ 160.36964212621308, 11.298195399639896 ], [ 160.36870979633477, 11.298409745453814 ], [ 160.367872955090064, 11.29838186559866 ], [ 160.366958632454327, 11.29779260251123 ], [ 160.366455988277096, 11.297618419222275 ], [ 160.365772522874181, 11.297935881064825 ], [ 160.365592348020584, 11.298417137361586 ], [ 160.365979056174922, 11.299671828058038 ], [ 160.365551440313169, 11.300079983635847 ], [ 160.365207327436622, 11.300239407360429 ], [ 160.364032793635062, 11.300369056149414 ], [ 160.362185458152624, 11.299997770380349 ], [ 160.361253926501576, 11.300215277774104 ], [ 160.360572989579168, 11.300535368797552 ], [ 160.359958344268847, 11.301437081378182 ], [ 160.35931849787724, 11.303171601100868 ], [ 160.359233691887795, 11.303403848656606 ], [ 160.359324589259273, 11.306233473629332 ], [ 160.359780001516356, 11.308072276033691 ], [ 160.360391403684957, 11.310235183750001 ], [ 160.360396388993848, 11.310247295653362 ], [ 160.36072122582425, 11.31093590445076 ], [ 160.361026962299491, 11.311592794172217 ], [ 160.3610312021612, 11.311601731509308 ], [ 160.361166597032252, 11.312757240065091 ], [ 160.361803416243418, 11.314100879829981 ], [ 160.363148524219326, 11.3143115658303 ], [ 160.363307011668553, 11.314645143802929 ], [ 160.363555610488987, 11.314734748438239 ], [ 160.36362434524591, 11.315318984734974 ], [ 160.363602619124691, 11.316133704086852 ], [ 160.365854148557418, 11.320019754302592 ], [ 160.365426543205871, 11.320427884180157 ], [ 160.364927379312434, 11.320235652753945 ], [ 160.36394900615079, 11.319054013677498 ], [ 160.36176641467577, 11.315765765075371 ], [ 160.36103022790266, 11.314668846026722 ], [ 160.359533789618581, 11.314125889438815 ], [ 160.35875962125931, 11.314690746028733 ], [ 160.356712508788348, 11.315634920330105 ], [ 160.351509691085113, 11.315167830699528 ], [ 160.350355780696816, 11.314466080005142 ], [ 160.35003218133977, 11.313794173758659 ], [ 160.350219616268674, 11.313314318091834 ], [ 160.351329665854024, 11.312585721857875 ], [ 160.352018848726942, 11.312253109210575 ], [ 160.352641231307246, 11.310547819043446 ], [ 160.352873864785465, 11.308390447959818 ], [ 160.351238522714368, 11.306679596176634 ], [ 160.350523059662095, 11.304764910446082 ], [ 160.35014230255041, 11.303495109659911 ], [ 160.348363388819877, 11.30063118700852 ], [ 160.344522982559454, 11.296464341054218 ], [ 160.343549506270762, 11.295264421841797 ], [ 160.343385692293595, 11.294942626326678 ], [ 160.341835281952683, 11.292982613643973 ], [ 160.339883575461357, 11.290614789827506 ], [ 160.337242672268388, 11.288549265048479 ], [ 160.335517979412202, 11.287085811669382 ], [ 160.334175827396564, 11.286891667847328 ], [ 160.331561581478496, 11.287073683141708 ], [ 160.329974536089225, 11.286778764565884 ], [ 160.329726825063688, 11.286692379980531 ], [ 160.327880549607158, 11.286317904165578 ], [ 160.325880744196013, 11.285598138063877 ], [ 160.325310069584333, 11.28483629815706 ], [ 160.324469910914189, 11.284819841783838 ], [ 160.321855829831776, 11.285001951487345 ], [ 160.320262365954818, 11.284702247408173 ], [ 160.319518396305455, 11.284440006367593 ], [ 160.317539713598876, 11.282885586711176 ], [ 160.316382996020963, 11.282198652327436 ], [ 160.315296972975347, 11.282078366695632 ], [ 160.314106515367939, 11.282216520057627 ], [ 160.313091787428107, 11.282683066821399 ], [ 160.312493468004817, 11.282768341229625 ], [ 160.311995995247798, 11.282575873931835 ], [ 160.311837555704216, 11.282249166035776 ], [ 160.311832443219345, 11.282237094009524 ], [ 160.312272275126503, 11.281848891312766 ], [ 160.31337716240489, 11.28112132894724 ], [ 160.313639519506808, 11.280405236932438 ], [ 160.313644801712826, 11.280393485840742 ], [ 160.313764713974876, 11.279298386883898 ], [ 160.313622592616952, 11.278144936449147 ], [ 160.313740580343307, 11.27706735837727 ], [ 160.314437182067621, 11.275930665850684 ], [ 160.314443968598141, 11.275918468880105 ], [ 160.314851108114453, 11.276341443159437 ], [ 160.314738754101882, 11.277420768545502 ], [ 160.314469208521587, 11.278166191428053 ], [ 160.315220314456866, 11.278429671834092 ], [ 160.316082284963954, 11.277614280509683 ], [ 160.317036124277138, 11.276567908910657 ], [ 160.318897529891188, 11.276122525207684 ], [ 160.323458619311282, 11.272168002211828 ], [ 160.323962065561687, 11.272345138793064 ], [ 160.324457505178657, 11.272517852869504 ], [ 160.325045685504591, 11.272462718904627 ], [ 160.326415179120971, 11.271826544183341 ], [ 160.328504107763194, 11.272298905876868 ], [ 160.330165302145588, 11.273166205548673 ], [ 160.331237143674286, 11.274102576682292 ], [ 160.331121484667307, 11.275183039667999 ], [ 160.330327437854265, 11.276579653068909 ], [ 160.329459609754707, 11.277386640369842 ], [ 160.326756480898609, 11.277822785603428 ], [ 160.326237952302932, 11.278465283342697 ], [ 160.325845565815541, 11.280283039447752 ], [ 160.326670359869809, 11.281136173286056 ], [ 160.327766387889966, 11.2812433683258 ], [ 160.328956092781311, 11.281102086181164 ], [ 160.329532268644442, 11.28104036683094 ], [ 160.33152585905566, 11.281761852255414 ], [ 160.332378835111399, 11.281781319044558 ], [ 160.332558665416201, 11.281286565681031 ], [ 160.332489775605353, 11.280702326525436 ], [ 160.331077222815367, 11.279924469094921 ], [ 160.330083378187538, 11.279556066766238 ], [ 160.330008972273816, 11.27897006390076 ], [ 160.330533899401388, 11.278332462467487 ], [ 160.330961440208853, 11.277924067633915 ], [ 160.332214446940583, 11.278365273196295 ], [ 160.333627021226903, 11.279143134106477 ], [ 160.333780664267692, 11.279495116194463 ], [ 160.335763090122953, 11.281031788260085 ], [ 160.341148865674256, 11.284082502662715 ], [ 160.341402105230912, 11.28417066727164 ], [ 160.344491068347764, 11.284996462385012 ], [ 160.345655944869804, 11.285688076792805 ], [ 160.345972412694778, 11.286358801318878 ], [ 160.346173560949467, 11.288123429092057 ], [ 160.346718401593392, 11.289715090048093 ], [ 160.349549095349346, 11.291273004438315 ], [ 160.351722488427328, 11.291493328487224 ], [ 160.352411384834426, 11.291177594235517 ], [ 160.353109856819572, 11.290040374778423 ], [ 160.35363371341586, 11.289386165455518 ], [ 160.354083570293113, 11.288159347842322 ], [ 160.353267898446717, 11.287296461362308 ], [ 160.352014788783691, 11.286855052356321 ], [ 160.352447933115059, 11.286448437104248 ], [ 160.354014183470525, 11.284497428801927 ], [ 160.354902483959705, 11.282852256464293 ], [ 160.354669777503432, 11.281946057414373 ], [ 160.354173052304702, 11.281756611075689 ], [ 160.352987772128103, 11.281896473959845 ], [ 160.352580589181713, 11.281473326052037 ], [ 160.353284175762298, 11.280324226726378 ], [ 160.353055992799653, 11.279403092605744 ], [ 160.351988219381468, 11.278468661724101 ], [ 160.351824649470245, 11.2781297423392 ], [ 160.351596325779013, 11.277208645083064 ], [ 160.352374403532536, 11.276645576652259 ], [ 160.35296611195642, 11.276572494079238 ], [ 160.354352631192427, 11.278197471046131 ], [ 160.355352541996069, 11.278550660921145 ], [ 160.35618773071127, 11.278578857434651 ], [ 160.356374751520462, 11.278085278637143 ], [ 160.356055390960307, 11.277398312785797 ], [ 160.35483515382839, 11.276128418254572 ], [ 160.35443732404957, 11.274883687554821 ], [ 160.354147005484947, 11.273365922068699 ], [ 160.353390076574811, 11.273100571812794 ], [ 160.35289368288187, 11.272924638087618 ], [ 160.352597425071139, 11.271422211656228 ], [ 160.352274379579455, 11.270746519796875 ], [ 160.35111573628393, 11.270059809942053 ], [ 160.350957430181666, 11.269709123504605 ], [ 160.351390549995358, 11.269302382016393 ], [ 160.352411097993155, 11.268837365451779 ], [ 160.352930610851473, 11.268197795034924 ], [ 160.352566021259605, 11.26610731562883 ], [ 160.352660349705502, 11.265848354719749 ], [ 160.352277358077885, 11.264595752920062 ], [ 160.352793488984787, 11.263950339366843 ], [ 160.353819207027954, 11.263473532099242 ], [ 160.355494927313657, 11.263517952650487 ], [ 160.356765661911709, 11.263141938633884 ], [ 160.357631933332726, 11.262328322840018 ], [ 160.358335944270777, 11.261192313889465 ], [ 160.359451511942581, 11.260464604698099 ], [ 160.359653097444635, 11.259137414142691 ], [ 160.360074291772577, 11.258754497894328 ], [ 160.361679386420064, 11.259027103350233 ], [ 160.362360327478484, 11.258706646049287 ], [ 160.362969550112012, 11.257816092046104 ], [ 160.36335414937264, 11.255992998010072 ], [ 160.363541009353526, 11.255499289762701 ], [ 160.363666963728406, 11.25359962114727 ], [ 160.363825525820403, 11.250857588415734 ], [ 160.364280379138734, 11.249618361834022 ], [ 160.366099996265007, 11.247754145777781 ], [ 160.36637049872445, 11.24701128499944 ], [ 160.366052840617243, 11.246337185501378 ], [ 160.365212362085771, 11.246320915342519 ], [ 160.364529776699129, 11.246641968120411 ], [ 160.363233128169242, 11.247848370534696 ], [ 160.361688689047725, 11.248968360469883 ], [ 160.360754443302369, 11.24920076182698 ], [ 160.360594805828669, 11.248863974803299 ], [ 160.3600238493419, 11.248101780098839 ], [ 160.359536948312495, 11.247899271021156 ], [ 160.358506772533218, 11.248391195698025 ], [ 160.357755369982925, 11.248127659535845 ], [ 160.357533661942313, 11.247194108009623 ], [ 160.356931108642016, 11.24727734963543 ], [ 160.35616379340928, 11.247830662961935 ], [ 160.355572038574167, 11.247903910042011 ], [ 160.354821280508787, 11.24763680194974 ], [ 160.354752420689721, 11.247052247435839 ], [ 160.355455859660424, 11.245902554094165 ], [ 160.355579478380662, 11.244826100132547 ], [ 160.356254749584764, 11.244503793598167 ], [ 160.358522945827161, 11.244494910826443 ], [ 160.360140610132106, 11.243944533181731 ], [ 160.361431572490659, 11.242736336221666 ], [ 160.361955358939497, 11.242081588701252 ], [ 160.362043640583408, 11.241831115992971 ], [ 160.363499785491115, 11.240961434326682 ], [ 160.364271393262328, 11.240393027316474 ], [ 160.363864044601172, 11.239969809790432 ], [ 160.362769242527946, 11.239862352949677 ], [ 160.362948924025147, 11.239367262806372 ], [ 160.362912833772356, 11.2379537313538 ], [ 160.362268154681942, 11.236608261024136 ], [ 160.360947292265564, 11.235582044904442 ], [ 160.360105467983402, 11.235549265037548 ], [ 160.359312266153552, 11.236950099336342 ], [ 160.358381436704263, 11.237164617827281 ], [ 160.357044013240994, 11.236959125259895 ], [ 160.355701442594466, 11.236765366725656 ], [ 160.35309051535441, 11.236950708212355 ], [ 160.351312168445901, 11.237147769225281 ], [ 160.350562263512131, 11.2368838613087 ], [ 160.349558180843218, 11.236528707445647 ], [ 160.349310382774462, 11.236442365396435 ], [ 160.34890182053033, 11.236002584413249 ], [ 160.348050463138804, 11.235996329386047 ], [ 160.345596833813829, 11.236515826299692 ], [ 160.345122966984746, 11.235510828590096 ], [ 160.345053927857293, 11.234926302947526 ], [ 160.345075638023161, 11.234093970630012 ], [ 160.34634908724405, 11.23370311425192 ], [ 160.348891900148686, 11.232936336223666 ], [ 160.352901005073903, 11.231299927534266 ], [ 160.353751613079339, 11.230497260955458 ], [ 160.353688730230289, 11.229897242660824 ], [ 160.353049492801603, 11.228553604502636 ], [ 160.352907220342956, 11.227399232143769 ], [ 160.353361862968939, 11.226159749216551 ], [ 160.353451619027283, 11.225908798355052 ], [ 160.355566844033319, 11.222470658597313 ], [ 160.356291843729736, 11.220488025876797 ], [ 160.35715435610723, 11.219685054331979 ], [ 160.357492177049124, 11.219527134135312 ], [ 160.358089608364963, 11.219455453823672 ], [ 160.359343157536557, 11.219896451343516 ], [ 160.359654151518328, 11.220582809183284 ], [ 160.359998122198107, 11.220423072247119 ], [ 160.360701599896146, 11.219272853144719 ], [ 160.362810306037119, 11.218926653266633 ], [ 160.363973260393323, 11.219615529600194 ], [ 160.364908560037833, 11.219385931330541 ], [ 160.367362631766582, 11.218866141608402 ], [ 160.369137645262981, 11.218649475731951 ], [ 160.369566364932979, 11.21825721332441 ], [ 160.369841413884274, 11.217512684842131 ], [ 160.373821267093433, 11.216690137744063 ], [ 160.374065938341715, 11.216808033008215 ], [ 160.37506701020564, 11.21715737712411 ], [ 160.374958317683706, 11.218226651913835 ], [ 160.372209002478428, 11.22032326421269 ], [ 160.371996485900468, 11.22164764233659 ], [ 160.373323185106273, 11.222675694670473 ], [ 160.373124294815227, 11.224006205718263 ], [ 160.37191827309249, 11.224965328550306 ], [ 160.370484870865312, 11.225019459689687 ], [ 160.370058109907916, 11.225431490005132 ], [ 160.370215708169866, 11.225748571326896 ], [ 160.371552414196799, 11.22595768272693 ], [ 160.373578029353155, 11.225843701257919 ], [ 160.37458230366363, 11.226198930088362 ], [ 160.379259737009079, 11.224235094138631 ], [ 160.379376014845235, 11.223156813699902 ], [ 160.380149057882932, 11.222604746484533 ], [ 160.38224187145488, 11.223062501055063 ], [ 160.384578636703992, 11.223635021939474 ], [ 160.384927960951245, 11.223463517171641 ], [ 160.386993909540848, 11.224765769225518 ], [ 160.388179959938043, 11.224638801501159 ], [ 160.390976078584004, 11.223956620907508 ], [ 160.391842530558023, 11.223142248330413 ], [ 160.392450313872871, 11.222251477770399 ], [ 160.393131421233591, 11.221930658573957 ], [ 160.393957614560122, 11.222780842111595 ], [ 160.393999358265916, 11.224196680730683 ], [ 160.395548607720286, 11.226155439916727 ], [ 160.39645832062709, 11.226756467232995 ], [ 160.397383041474541, 11.226536949666865 ], [ 160.398234897269788, 11.226556648188119 ], [ 160.398482777815133, 11.226643043564662 ], [ 160.399483574347812, 11.227009822231237 ], [ 160.403353366177129, 11.227267981214178 ], [ 160.403876466012434, 11.226609743097976 ], [ 160.404669730145059, 11.22522533810595 ], [ 160.405281892503041, 11.224319642755894 ], [ 160.406212313405348, 11.224101834722996 ], [ 160.406480382655502, 11.223355863177957 ], [ 160.407106201586345, 11.222456288657019 ], [ 160.408119936775563, 11.221989325448783 ], [ 160.409964820526682, 11.222371237205371 ], [ 160.411059150109025, 11.222475572593837 ], [ 160.411404134498838, 11.222318957296736 ], [ 160.412829415379747, 11.222270843484036 ], [ 160.412839694087381, 11.222271199603581 ], [ 160.414538199725655, 11.221489142478312 ], [ 160.415131104085845, 11.221418933004401 ], [ 160.417500103033348, 11.221145681110299 ], [ 160.418334146378754, 11.221174100552611 ], [ 160.419545070802656, 11.220199744304791 ], [ 160.420257661775366, 11.219049871100067 ], [ 160.420403644972424, 11.216316243405203 ], [ 160.419520715911773, 11.214870313293574 ], [ 160.418854112016277, 11.214356923595407 ], [ 160.417262945863968, 11.214076551611699 ], [ 160.416849779982243, 11.213651346577482 ], [ 160.41607778408337, 11.211124904106322 ], [ 160.41516788941891, 11.210523767946817 ], [ 160.415258577114798, 11.210275790621271 ], [ 160.41436967685317, 11.208845259830504 ], [ 160.414823889623335, 11.207601846449686 ], [ 160.416345692508514, 11.207314067794467 ], [ 160.421236612614251, 11.207116276253332 ], [ 160.422509324297351, 11.206725449974039 ], [ 160.423286054902832, 11.206155042858304 ], [ 160.424216497134665, 11.205937094792592 ], [ 160.424724405098544, 11.206116543615392 ], [ 160.430433681591211, 11.206751389015452 ], [ 160.431109077166838, 11.206445753819322 ], [ 160.431040027110328, 11.205860640598512 ], [ 160.430151803897473, 11.204426230513405 ], [ 160.430083618457076, 11.203844255228924 ], [ 160.430674231459761, 11.203771259600538 ], [ 160.431673784514402, 11.204138418744261 ], [ 160.433160538867497, 11.205497527763578 ], [ 160.434413215213084, 11.20593938988987 ], [ 160.43576247346212, 11.206148507274907 ], [ 160.436935447808963, 11.206015217204678 ], [ 160.437959478341696, 11.205534804530327 ], [ 160.440686534757418, 11.204280994569947 ], [ 160.44187586876447, 11.204139454071194 ], [ 160.442806440788388, 11.203921494212571 ], [ 160.442896283710922, 11.203670299939317 ], [ 160.443329693214991, 11.2032628356805 ], [ 160.444850950937251, 11.20297187781652 ], [ 160.447536152781595, 11.203383972649236 ], [ 160.449218723863225, 11.203429734117524 ], [ 160.450998705911957, 11.203215252466734 ], [ 160.452909115743722, 11.204180326036488 ], [ 160.455097368059711, 11.204402951927754 ], [ 160.456937277068107, 11.204783279245863 ], [ 160.458196405199317, 11.205223441022548 ], [ 160.458967328108514, 11.20466831195113 ], [ 160.459050919038617, 11.204418947630607 ], [ 160.459670226157158, 11.203531007117348 ], [ 160.460782802190124, 11.20279973971337 ], [ 160.4635792251689, 11.202130952875073 ], [ 160.463748922449128, 11.2024550069874 ], [ 160.463265077799889, 11.20454155170701 ], [ 160.464427870133648, 11.205228110138103 ], [ 160.465449340195505, 11.204762081097606 ], [ 160.470612609352997, 11.203814171485131 ], [ 160.470861493254262, 11.20390377888867 ], [ 160.471960964065232, 11.204006798205031 ], [ 160.472374255775435, 11.204432263576376 ], [ 160.472417383875467, 11.20584885432123 ], [ 160.472282123451294, 11.20776068868161 ], [ 160.472166469211373, 11.208843120125598 ], [ 160.472578872863949, 11.209265438923639 ], [ 160.473166871761123, 11.209206946530163 ], [ 160.474196714771608, 11.208728286430215 ], [ 160.474954406657787, 11.208993873157194 ], [ 160.475265768419717, 11.20966394330835 ], [ 160.475858420954296, 11.209604080108452 ], [ 160.47893347762286, 11.208175796996111 ], [ 160.480296992083112, 11.207547224141852 ], [ 160.481246462116331, 11.206496758698572 ], [ 160.481726545009991, 11.204438355458617 ], [ 160.482611147516792, 11.202804607518404 ], [ 160.48261631145067, 11.202792865805847 ], [ 160.483483336350758, 11.20197095220893 ], [ 160.483568177207928, 11.201738187682842 ], [ 160.484503331207634, 11.201505333970324 ], [ 160.485343434294236, 11.201535503323173 ], [ 160.484368045239648, 11.203417444259458 ], [ 160.484870621559651, 11.203595283080592 ], [ 160.485118654122573, 11.203681765090915 ], [ 160.487507023259695, 11.20258607877067 ], [ 160.48885552856126, 11.202778777836432 ], [ 160.489854550870746, 11.203143112306948 ], [ 160.490198880127281, 11.20298322667092 ], [ 160.493904589283403, 11.20290984178545 ], [ 160.496820052356128, 11.204241743802344 ], [ 160.497983048964585, 11.204928594775501 ], [ 160.497207411352093, 11.205498633009396 ], [ 160.495594796493293, 11.206037631774775 ], [ 160.495559046489035, 11.206882159796525 ], [ 160.496391612288448, 11.207717939777874 ], [ 160.497618258971784, 11.209002024315083 ], [ 160.49794328775414, 11.20967840669722 ], [ 160.497917323392358, 11.210509805505779 ], [ 160.499579224228029, 11.21138588362658 ], [ 160.501241131381391, 11.212261985954799 ], [ 160.501490399031326, 11.21236515791739 ], [ 160.501813320306667, 11.213021751308794 ], [ 160.501907744655085, 11.215856295387464 ], [ 160.504703899626776, 11.218265193939839 ], [ 160.505550000829544, 11.21828015819573 ], [ 160.506340161989755, 11.21689248271001 ], [ 160.507186275924795, 11.216907439604928 ], [ 160.507434325186637, 11.216993968881296 ], [ 160.50851096463137, 11.217944781561263 ], [ 160.508943023223821, 11.217537746575779 ], [ 160.509122274607762, 11.217038778110977 ], [ 160.50923068056855, 11.215971920423248 ], [ 160.509416316088021, 11.215477856739172 ], [ 160.50991794034141, 11.215652687973131 ], [ 160.510669253634234, 11.215913569197559 ], [ 160.510739686450307, 11.216498602468103 ], [ 160.510536159484246, 11.217828490815551 ], [ 160.511007451940117, 11.218849642730602 ], [ 160.510834243228317, 11.219333200923204 ], [ 160.50966399868247, 11.218644936015417 ], [ 160.509326762830426, 11.218806049707958 ], [ 160.508867905968827, 11.220048104680691 ], [ 160.507250486997776, 11.220588085650947 ], [ 160.506389912758976, 11.221390838379786 ], [ 160.505963026412928, 11.221786097811318 ], [ 160.507211606655574, 11.222236715810178 ], [ 160.510008082180804, 11.221565546426016 ], [ 160.51100713691045, 11.221930095234825 ], [ 160.51217172589773, 11.222616650136775 ], [ 160.512987502570837, 11.223477948845865 ], [ 160.51413404012456, 11.225000357716411 ], [ 160.514516082655149, 11.226269141643094 ], [ 160.515152961500746, 11.227612248898387 ], [ 160.516065189700555, 11.228227190571175 ], [ 160.518253582903156, 11.228430426759957 ], [ 160.519507727222447, 11.228882943581549 ], [ 160.520077062044891, 11.229657258029549 ], [ 160.520395489281867, 11.230328835948276 ], [ 160.520623066983461, 11.23124852905803 ], [ 160.519912006699457, 11.232401713616017 ], [ 160.518777132837613, 11.233949145428232 ], [ 160.519510307233617, 11.235045925899389 ], [ 160.520988956735778, 11.23641904837775 ], [ 160.522033706037831, 11.238199626681292 ], [ 160.522192527777634, 11.238533815826129 ], [ 160.522651587865823, 11.240375335095232 ], [ 160.522398587435333, 11.243366588159876 ], [ 160.522099940325091, 11.244942081495642 ], [ 160.520870965579803, 11.246738227079861 ], [ 160.517959841984919, 11.248490709101429 ], [ 160.517704667147711, 11.24840283428779 ], [ 160.516258192355508, 11.249266152741592 ], [ 160.515521354620887, 11.251263669167349 ], [ 160.514226544409752, 11.252459770420163 ], [ 160.512614647279094, 11.253001040566021 ], [ 160.511275350293118, 11.252798215491413 ], [ 160.510836965848853, 11.253206846937033 ], [ 160.510900755531651, 11.253786819398485 ], [ 160.511130707753011, 11.254708938052289 ], [ 160.51220141102101, 11.255658069613503 ], [ 160.513102524704379, 11.256283085722977 ], [ 160.514634781072402, 11.255962766644167 ], [ 160.515820951939872, 11.255833235901559 ], [ 160.516476856201876, 11.256357250220859 ], [ 160.517051191067537, 11.257119738946097 ], [ 160.517886462102666, 11.257145005982654 ], [ 160.518988458968636, 11.257251344179085 ], [ 160.520854092387253, 11.256798482985161 ], [ 160.521779847270096, 11.25659285538622 ], [ 160.521790892322969, 11.256589590635908 ], [ 160.523307775582225, 11.256287468960481 ], [ 160.524334492464732, 11.255820609171481 ], [ 160.525787001680897, 11.254942028862589 ], [ 160.526922425267315, 11.253408540070984 ], [ 160.526930098071944, 11.253399465532103 ], [ 160.527791959842318, 11.252576361201861 ], [ 160.528136393198992, 11.252416675519074 ], [ 160.529048532920058, 11.253031764716217 ], [ 160.529805313577839, 11.253294647536132 ], [ 160.530545135516519, 11.25356935323463 ], [ 160.531819829289276, 11.253189094089851 ], [ 160.53391700181632, 11.253658195779115 ], [ 160.534011029146654, 11.253409197614024 ], [ 160.534100286499012, 11.253161608675322 ], [ 160.533278846843473, 11.25231547214308 ], [ 160.531021698731649, 11.251495668474295 ], [ 160.530110847255429, 11.250897060568899 ], [ 160.530135481241899, 11.250066365376185 ], [ 160.530409627183019, 11.249321694089952 ], [ 160.530843442373737, 11.248914359313767 ], [ 160.530937459697014, 11.24866535142432 ], [ 160.530778786123648, 11.248331115212197 ], [ 160.530199604114472, 11.247569907779837 ], [ 160.529139905947375, 11.246624093323792 ], [ 160.527993566932224, 11.245101541423104 ], [ 160.527112458241419, 11.24366050483207 ], [ 160.526540403210248, 11.242900605790812 ], [ 160.526583118386441, 11.241233962251757 ], [ 160.525697963366639, 11.239790706118857 ], [ 160.524586767514933, 11.23742732826631 ], [ 160.524116866571745, 11.235595742637379 ], [ 160.522603991993037, 11.229716132530159 ], [ 160.519139546519312, 11.223729776680358 ], [ 160.517820998410485, 11.219613381108918 ], [ 160.518927108064076, 11.218887656846716 ], [ 160.518935650092402, 11.218881723656928 ], [ 160.519297683213864, 11.217903116698155 ], [ 160.519273713731678, 11.215653316549181 ], [ 160.518042897778173, 11.214366757562807 ], [ 160.516292544467916, 11.213741270986626 ], [ 160.515631146917343, 11.213229069492289 ], [ 160.515649893378537, 11.212396316890898 ], [ 160.516610402552431, 11.211328918038594 ], [ 160.516560325824997, 11.209910568985649 ], [ 160.515898884584004, 11.206334494691816 ], [ 160.514580090884209, 11.2052816739336 ], [ 160.514765716063437, 11.204787523645743 ], [ 160.515015012088725, 11.204890706059588 ], [ 160.516814539471881, 11.20383677263233 ], [ 160.517924457589658, 11.203136894662064 ], [ 160.52238650486845, 11.203340396996454 ], [ 160.523736788762733, 11.206614022351012 ], [ 160.523028831931583, 11.207766755208393 ], [ 160.521480485288834, 11.208875568512601 ], [ 160.521302852804126, 11.209374153034455 ], [ 160.522463171908186, 11.210075678887684 ], [ 160.522347953744344, 11.211154944809437 ], [ 160.522666468467179, 11.211826603504024 ], [ 160.525536963493863, 11.21173917533644 ], [ 160.525786551737355, 11.211825275585358 ], [ 160.527632856060819, 11.212207978055472 ], [ 160.529046046975679, 11.21299471020424 ], [ 160.530269658189269, 11.214280173263925 ], [ 160.531161893857302, 11.21571141864449 ], [ 160.532001350766848, 11.215738647857275 ], [ 160.532688861554078, 11.215419352265478 ], [ 160.533212238881418, 11.214777693219954 ], [ 160.532987366308816, 11.213843340327918 ], [ 160.532503586206758, 11.212832437527078 ], [ 160.5328681629274, 11.211856317899885 ], [ 160.533644013922753, 11.211286122418235 ], [ 160.533756895364746, 11.21020405709988 ], [ 160.533872149184845, 11.209124679268452 ], [ 160.533292730628261, 11.208363362838952 ], [ 160.532552862418981, 11.20808878006757 ], [ 160.530681435986565, 11.208540845755369 ], [ 160.529931517762975, 11.208279464504136 ], [ 160.529359374740011, 11.207519429438593 ], [ 160.529721818052707, 11.206523459683078 ], [ 160.530746958150786, 11.206056418940832 ], [ 160.532184271480418, 11.205998450563294 ], [ 160.532955689885881, 11.205443117435502 ], [ 160.534009795432382, 11.20412987752308 ], [ 160.534598054236454, 11.204071414205917 ], [ 160.534940129018651, 11.203908807668499 ], [ 160.536029992988631, 11.204025252157848 ], [ 160.539314207854488, 11.204363488650092 ], [ 160.541226151823878, 11.205326120415142 ], [ 160.542140548234755, 11.205923617515758 ], [ 160.542384239930243, 11.206025108208202 ], [ 160.543301015269151, 11.206625317409435 ], [ 160.543600770788061, 11.20813011862297 ], [ 160.544003356013718, 11.208565927721747 ], [ 160.545778472715455, 11.208360370330368 ], [ 160.54653560883969, 11.208623104414086 ], [ 160.546920139683181, 11.209895110161327 ], [ 160.547670127136541, 11.210156565641732 ], [ 160.548108609602735, 11.209747520446024 ], [ 160.548466102138121, 11.208769957780676 ], [ 160.548650950524461, 11.208272554419928 ], [ 160.549396528544975, 11.208548940195497 ], [ 160.550630985015289, 11.209817906823314 ], [ 160.550880324428363, 11.20992114947946 ], [ 160.551680749392716, 11.208519573905644 ], [ 160.552273498547663, 11.208446220273856 ], [ 160.553272733431157, 11.208810974511701 ], [ 160.554259080754662, 11.209993411340474 ], [ 160.554756550667349, 11.210183243729912 ], [ 160.555004676846124, 11.210269828001733 ], [ 160.557030904342071, 11.210167097597953 ], [ 160.559926882489549, 11.209231501039305 ], [ 160.562638354972535, 11.208806721597922 ], [ 160.56317992768615, 11.20732842647304 ], [ 160.563382131745101, 11.205998262348679 ], [ 160.563344204801155, 11.204585924284496 ], [ 160.563521931913584, 11.204087149923335 ], [ 160.563615939539972, 11.203837939553722 ], [ 160.564322438118609, 11.202685331215006 ], [ 160.565092908790035, 11.202143832071132 ], [ 160.565920572894953, 11.202992003355904 ], [ 160.566920325333086, 11.203339653762644 ], [ 160.567760883360421, 11.203370026761879 ], [ 160.569993827315187, 11.201922032470835 ], [ 160.571178211708485, 11.201789284431763 ], [ 160.573024868263644, 11.202165475475608 ], [ 160.57446382965216, 11.202124255754727 ], [ 160.575661789950374, 11.201170036901363 ], [ 160.575850826467047, 11.200674664217644 ], [ 160.575088015836542, 11.200410069583087 ], [ 160.570724429343045, 11.199948167900882 ], [ 160.568624268718025, 11.19946658507549 ], [ 160.565867865587677, 11.198491385597359 ], [ 160.562932562931479, 11.197998388678371 ], [ 160.562678022665523, 11.197906888978865 ], [ 160.561020603977795, 11.19701841444143 ], [ 160.558601908638991, 11.195882050391718 ], [ 160.55744278221016, 11.195179805704303 ], [ 160.555958770577945, 11.193807493071676 ], [ 160.555386370295679, 11.193047256685826 ], [ 160.554385415895069, 11.192683056767009 ], [ 160.553700290443203, 11.193005240501002 ], [ 160.552585752158024, 11.193720295063393 ], [ 160.551496354871659, 11.193607096241983 ], [ 160.550579465076083, 11.193006857162837 ], [ 160.549261555735114, 11.191970297073825 ], [ 160.549007774294552, 11.191882011457249 ], [ 160.547031923359185, 11.190321800468388 ], [ 160.546300703663462, 11.18922723589824 ], [ 160.545982074428707, 11.1885553429514 ], [ 160.546002408698939, 11.187721694870104 ], [ 160.546370360150775, 11.186727123647318 ], [ 160.547304459742662, 11.186494582344746 ], [ 160.547986761628891, 11.186186797311443 ], [ 160.548005582054941, 11.185353563784243 ], [ 160.548190374641052, 11.184856014973548 ], [ 160.548031423444854, 11.184521647012035 ], [ 160.547299281560868, 11.183423901663945 ], [ 160.548113898664923, 11.181203501396597 ], [ 160.548571145905612, 11.17996095347762 ], [ 160.54830149004502, 11.177608815546186 ], [ 160.548914140347279, 11.17671867791929 ], [ 160.549167813988163, 11.176806980666562 ], [ 160.55028317666995, 11.179170751492862 ], [ 160.550855523864499, 11.179931015489043 ], [ 160.551700469710312, 11.179946254126426 ], [ 160.554838952663374, 11.179124971030237 ], [ 160.555087986107679, 11.179214662821398 ], [ 160.556117629945419, 11.178732325796938 ], [ 160.556709150669576, 11.178672810526313 ], [ 160.557688724997632, 11.176771148466798 ], [ 160.557549772407725, 11.175620027815997 ], [ 160.55766403795775, 11.17453690532199 ], [ 160.557777536945565, 11.173457402727159 ], [ 160.558985130193491, 11.172476083566679 ], [ 160.559986081110679, 11.172840242930141 ], [ 160.561099889585648, 11.175204795505191 ], [ 160.562359953578778, 11.175645473949027 ], [ 160.563537061478257, 11.175511163655136 ], [ 160.563727514061242, 11.17501522946287 ], [ 160.563404390975649, 11.174358109414079 ], [ 160.562423605556717, 11.17316008162698 ], [ 160.561946163560151, 11.172153516858117 ], [ 160.561785957185634, 11.171802410421858 ], [ 160.562008540674753, 11.169651377436765 ], [ 160.561352087155683, 11.169127150388709 ], [ 160.5586805842172, 11.167902385578747 ], [ 160.555651857951744, 11.167655649279137 ], [ 160.553835978715739, 11.166429383516988 ], [ 160.553582286396477, 11.166341087494235 ], [ 160.552189118248208, 11.164733977366582 ], [ 160.550463688045596, 11.163245871352773 ], [ 160.548155061308137, 11.161038171341975 ], [ 160.547673278475088, 11.160029539691241 ], [ 160.548059802024113, 11.158201161829906 ], [ 160.549567320231347, 11.155662101242081 ], [ 160.550422328795605, 11.154849650184614 ], [ 160.550434011072525, 11.154842776755906 ], [ 160.551894742696192, 11.153966441546928 ], [ 160.554350984202074, 11.153452340477349 ], [ 160.556309657264904, 11.152748534759258 ], [ 160.557518124249555, 11.151783441213752 ], [ 160.559089925574369, 11.149824537862184 ], [ 160.560824788568283, 11.148202242752268 ], [ 160.561501522034803, 11.147892377183558 ], [ 160.561589942352356, 11.147641226373436 ], [ 160.563115779178048, 11.147348604922392 ], [ 160.564369096533625, 11.147801389684 ], [ 160.565195510765705, 11.148650083001952 ], [ 160.566080084517012, 11.150094935513195 ], [ 160.566728878295038, 11.151442759263341 ], [ 160.567110262305476, 11.152696118962098 ], [ 160.567837528154541, 11.15380596681627 ], [ 160.568823682582661, 11.15499236081334 ], [ 160.569325746785779, 11.155167156438752 ], [ 160.570892813573977, 11.156303924769341 ], [ 160.572652626199925, 11.1569166868619 ], [ 160.574243842115692, 11.157221670572254 ], [ 160.5762028450049, 11.156518055053736 ], [ 160.576980146881141, 11.155963744958862 ], [ 160.577323208724437, 11.155804051179553 ], [ 160.581304759668285, 11.151910177411962 ], [ 160.58340795500385, 11.149292412066128 ], [ 160.583738588685179, 11.149143195230447 ], [ 160.586020329661665, 11.14602919927324 ], [ 160.587388149768998, 11.145398385726871 ], [ 160.590330611375009, 11.142810729993247 ], [ 160.590515412201654, 11.142312756241122 ], [ 160.591538547140118, 11.141842115777786 ], [ 160.59219534591054, 11.142366471132851 ], [ 160.592404294413939, 11.144107705766352 ], [ 160.592540319874047, 11.145291074073423 ], [ 160.593183532609601, 11.146637546663422 ], [ 160.595252899870076, 11.147949499675773 ], [ 160.597444962977931, 11.148164993240506 ], [ 160.598196892545957, 11.148425963189572 ], [ 160.598450672268029, 11.148514295059108 ], [ 160.599769802871464, 11.149565001591169 ], [ 160.600699020487269, 11.149343895920195 ], [ 160.602504996286598, 11.148307064166788 ], [ 160.603776621476555, 11.147923015447047 ], [ 160.605531541161014, 11.148547815287392 ], [ 160.606353787264339, 11.149411801893089 ], [ 160.605902279636211, 11.150639978721429 ], [ 160.605789484105543, 11.151723353127887 ], [ 160.605853647631761, 11.152304269024995 ], [ 160.606655837728994, 11.153985479187289 ], [ 160.607485921064296, 11.154025628781618 ], [ 160.610052628007622, 11.153250762917061 ], [ 160.611058513365776, 11.153600123922326 ], [ 160.611299981950623, 11.153698955114725 ], [ 160.613084789296323, 11.156578503715407 ], [ 160.614083872767736, 11.156940142696008 ], [ 160.614357727768095, 11.156211255781347 ], [ 160.612533375172575, 11.151901406227328 ], [ 160.612370360581394, 11.148479359896996 ], [ 160.610094154114307, 11.148500011144741 ], [ 160.609908414803698, 11.148994870462406 ], [ 160.610137894975281, 11.149915411173151 ], [ 160.610120092479349, 11.150752479876314 ], [ 160.609179872037373, 11.15098363108801 ], [ 160.608524061036178, 11.150462279398445 ], [ 160.607472331976936, 11.148677749605431 ], [ 160.605741565676141, 11.147220793364115 ], [ 160.604417243076853, 11.146181903237077 ], [ 160.606535322150876, 11.145829662614155 ], [ 160.608386791244442, 11.146207659493808 ], [ 160.608564493723463, 11.145708350073239 ], [ 160.608175932894738, 11.144453160188348 ], [ 160.607939900576014, 11.143527715718623 ], [ 160.607885777315175, 11.142933531415599 ], [ 160.60796982827793, 11.142697222970261 ], [ 160.608724059763063, 11.13987557296921 ], [ 160.609658996394558, 11.139656106798922 ], [ 160.611096036085343, 11.139611544739381 ], [ 160.612118590972671, 11.139137651069111 ], [ 160.612131785927346, 11.139130326606629 ], [ 160.613332918473901, 11.138160201215889 ], [ 160.613416971434702, 11.137923870131186 ], [ 160.615422582551247, 11.135552299798638 ], [ 160.615791645372411, 11.134559664571382 ], [ 160.615059832557307, 11.133464109684391 ], [ 160.613646980405207, 11.132676390971351 ], [ 160.612825590123293, 11.131815431182652 ], [ 160.613307230734478, 11.129739258878669 ], [ 160.612918542677761, 11.128483879467629 ], [ 160.612936245830383, 11.127646613232796 ], [ 160.613800592570044, 11.12684102463105 ], [ 160.61489467770491, 11.126956118525257 ], [ 160.616721386439849, 11.128169994411252 ], [ 160.617726146236379, 11.128533279466211 ], [ 160.61984891405092, 11.128165737355932 ], [ 160.6203458954285, 11.128352402921614 ], [ 160.620266140633134, 11.128573859442119 ], [ 160.620269632910464, 11.128586463215804 ], [ 160.620480266538408, 11.12950603385017 ], [ 160.620171109275816, 11.131923397522442 ], [ 160.620642311866163, 11.132942921807871 ], [ 160.622628717458269, 11.134488011212222 ], [ 160.623380521845746, 11.134766162698153 ], [ 160.623722838113025, 11.134603199743134 ], [ 160.623905438230338, 11.134109130531051 ], [ 160.624114580338755, 11.132778554955316 ], [ 160.624478379508787, 11.131797619856378 ], [ 160.624820698731213, 11.131634643272212 ], [ 160.62566087935798, 11.131661506303805 ], [ 160.62625239449585, 11.131588255644498 ], [ 160.632046779415163, 11.126652569432856 ], [ 160.633513122566058, 11.125773954529276 ], [ 160.634712818942262, 11.124803943091663 ], [ 160.635762206839416, 11.123499945990762 ], [ 160.636738737444205, 11.121613978261443 ], [ 160.637809587116749, 11.119491744560628 ], [ 160.637816390396239, 11.11947949290998 ], [ 160.639112913245668, 11.118245242856672 ], [ 160.640390447052084, 11.117862526705274 ], [ 160.643446288872724, 11.117272461383342 ], [ 160.643785870585987, 11.117123883318051 ], [ 160.644465558257764, 11.116816333703973 ], [ 160.645861402478374, 11.115351243985611 ], [ 160.646042268363715, 11.114850667961671 ], [ 160.646039648645171, 11.114841212611061 ], [ 160.645420966469374, 11.112657488934028 ], [ 160.646047984555338, 11.111754910093211 ], [ 160.647497382332631, 11.11088783377577 ], [ 160.647776263909492, 11.110139780041031 ], [ 160.647458103499048, 11.109470093039695 ], [ 160.646453080788717, 11.109106740604632 ], [ 160.64647642161367, 11.108270814328469 ], [ 160.646819673484885, 11.108110873428457 ], [ 160.648594404455196, 11.107914705047362 ], [ 160.648940451515244, 11.107740286612607 ], [ 160.649280048740451, 11.107591664328076 ], [ 160.650236377735069, 11.106540010802654 ], [ 160.651355640787216, 11.105818643885849 ], [ 160.652637005685051, 11.105424549558684 ], [ 160.653422915944532, 11.104027687609346 ], [ 160.653430593427913, 11.104018582420746 ], [ 160.653384475977873, 11.102612937747063 ], [ 160.654000694631463, 11.101720208092257 ], [ 160.654776359333226, 11.101145183216087 ], [ 160.654868097028384, 11.100899563564138 ], [ 160.65487402723295, 11.100884153147833 ], [ 160.655855376288258, 11.100548277145963 ], [ 160.656821898450232, 11.100220214517828 ], [ 160.657574253945995, 11.100481237218821 ], [ 160.658380237346591, 11.102162822186418 ], [ 160.660177360489428, 11.104218773759916 ], [ 160.659726645454498, 11.105451301988001 ], [ 160.661009488960588, 11.108154710907401 ], [ 160.661983190961678, 11.109349733767415 ], [ 160.662333641974982, 11.109191077786445 ], [ 160.662857832275364, 11.108530452360046 ], [ 160.662629667987886, 11.107608743186702 ], [ 160.661553897049004, 11.106658967461451 ], [ 160.660591314795653, 11.104645161707442 ], [ 160.660729764719179, 11.102727405686379 ] ], [ [ 160.654109722043273, 11.097549014857373 ], [ 160.65479539691259, 11.097225876215576 ], [ 160.656214368521489, 11.098015621736554 ], [ 160.656284184451351, 11.098598831056213 ], [ 160.655846901063597, 11.099008533753539 ], [ 160.654085414912231, 11.098381965718017 ], [ 160.654109722043273, 11.097549014857373 ] ], [ [ 160.604534744138505, 11.142018678181284 ], [ 160.605374787404656, 11.14204556543055 ], [ 160.606149411682054, 11.141474803657397 ], [ 160.606741185102237, 11.141415126510241 ], [ 160.607313981979303, 11.1421758835169 ], [ 160.607213822237384, 11.142434018682321 ], [ 160.60704142559851, 11.142921544527058 ], [ 160.606106510816772, 11.14314097852499 ], [ 160.605016966813025, 11.143010835059158 ], [ 160.604349034982903, 11.142513557212206 ], [ 160.604534744138505, 11.142018678181284 ] ], [ [ 160.568377440221525, 11.14616208898269 ], [ 160.571843222662636, 11.142915018366702 ], [ 160.57328430116965, 11.142855431090304 ], [ 160.575607263160919, 11.144255333474742 ], [ 160.578184858563645, 11.145746736295166 ], [ 160.578749552888667, 11.146502823076359 ], [ 160.578914991051022, 11.146842277387048 ], [ 160.57922853353935, 11.147526329325171 ], [ 160.579114348129053, 11.148609944414975 ], [ 160.578348611885303, 11.149150690329115 ], [ 160.577390887945825, 11.150218708048989 ], [ 160.576114224121284, 11.15368512198344 ], [ 160.575586374630348, 11.154342671915035 ], [ 160.574900261400188, 11.154662069921393 ], [ 160.573810658704389, 11.154548950356187 ], [ 160.571876256498399, 11.154403735174855 ], [ 160.570872236455955, 11.154054099255395 ], [ 160.569542671796171, 11.15301385321707 ], [ 160.568887216349879, 11.152506303796013 ], [ 160.568905927393047, 11.151672654661127 ], [ 160.568861058377223, 11.150254668861747 ], [ 160.568060490918811, 11.148573559478992 ], [ 160.567676215756165, 11.147303961965253 ], [ 160.568377440221525, 11.14616208898269 ] ], [ [ 160.565753270063112, 11.130918885624174 ], [ 160.566369417278963, 11.130009913913103 ], [ 160.567125288504798, 11.130272899156115 ], [ 160.56810057131176, 11.131486500986167 ], [ 160.569423585411386, 11.13250824593111 ], [ 160.569491743031193, 11.133091323119357 ], [ 160.569722352167418, 11.134014741101909 ], [ 160.56917595142545, 11.13550625873925 ], [ 160.568559018773556, 11.1364119853587 ], [ 160.56796210504325, 11.136483524234077 ], [ 160.567553706670537, 11.136045787446005 ], [ 160.566096211717081, 11.133840379708724 ], [ 160.565543559465084, 11.132245703763052 ], [ 160.565753270063112, 11.130918885624174 ] ], [ [ 160.551400548523333, 11.172275277903488 ], [ 160.551579391940919, 11.171793018230678 ], [ 160.55351371694141, 11.171921259596914 ], [ 160.554460551506679, 11.171691625417399 ], [ 160.555454455681087, 11.172054431959127 ], [ 160.555359622962982, 11.17230057806888 ], [ 160.5554286560197, 11.172886499582829 ], [ 160.554743524664048, 11.17320886120817 ], [ 160.553654799281105, 11.173092192229406 ], [ 160.552973688457911, 11.173416768256569 ], [ 160.552700007694682, 11.174145157308153 ], [ 160.552425790197901, 11.174890727789979 ], [ 160.55165427562352, 11.175446477506862 ], [ 160.551146917836377, 11.175269870039369 ], [ 160.551400548523333, 11.172275277903488 ] ], [ [ 160.546290736836937, 11.167644960537665 ], [ 160.546628548360587, 11.167497084907314 ], [ 160.547379781667701, 11.167775078442411 ], [ 160.547635096250559, 11.167862883176802 ], [ 160.547956610257359, 11.168520408028554 ], [ 160.548111179136129, 11.168869740255561 ], [ 160.546997593457291, 11.169588314376954 ], [ 160.546341059869434, 11.169064215656597 ], [ 160.546018324768255, 11.168390033711141 ], [ 160.546290736836937, 11.167644960537665 ] ], [ [ 160.543079407040977, 11.167909186958097 ], [ 160.54335180684879, 11.167164125127369 ], [ 160.544446406600457, 11.167265323509726 ], [ 160.545108109217352, 11.167777657206592 ], [ 160.545013013257432, 11.168040912695661 ], [ 160.54432706684824, 11.168360158566649 ], [ 160.544153766829339, 11.168844181685508 ], [ 160.543974666576759, 11.169343546037055 ], [ 160.543709704428863, 11.169251794261376 ], [ 160.543312622716542, 11.168817695469253 ], [ 160.543079407040977, 11.167909186958097 ] ], [ [ 160.539432106547878, 11.162385594615314 ], [ 160.539890058964261, 11.161145986609336 ], [ 160.541158282740497, 11.160776586795983 ], [ 160.542003093797604, 11.160791704293862 ], [ 160.542486374210455, 11.161799829907238 ], [ 160.542888489283854, 11.162239257011032 ], [ 160.542710040220527, 11.162735064061259 ], [ 160.542441318884926, 11.163468857782545 ], [ 160.540411409152682, 11.163583808384342 ], [ 160.539655773362313, 11.163320798197029 ], [ 160.539432106547878, 11.162385594615314 ] ], [ [ 160.538935520864669, 11.17454386077069 ], [ 160.539941639008305, 11.174896131111991 ], [ 160.540348348052362, 11.17533415978426 ], [ 160.540165230315296, 11.175831254056746 ], [ 160.539738263082455, 11.176226926999419 ], [ 160.539393671728703, 11.176386994268848 ], [ 160.538229002107386, 11.175683216626719 ], [ 160.537910311759106, 11.175011327627507 ], [ 160.538935520864669, 11.17454386077069 ] ], [ [ 160.535289996836326, 11.172119868908402 ], [ 160.535314646783632, 11.171271231730382 ], [ 160.535741590788149, 11.170875532522397 ], [ 160.536244269136972, 11.171053463616994 ], [ 160.536723180076365, 11.172076376538101 ], [ 160.536453576115719, 11.172806904257639 ], [ 160.536022207024246, 11.173217525425979 ], [ 160.535519535034695, 11.17303958914559 ], [ 160.535289996836326, 11.172119868908402 ] ], [ [ 160.526944955671581, 11.203284058549032 ], [ 160.527282587983962, 11.203136382507381 ], [ 160.528287757105375, 11.203485557775632 ], [ 160.52867676595892, 11.204742463747795 ], [ 160.528588318821249, 11.204993375216725 ], [ 160.52865639300768, 11.205575853190965 ], [ 160.527697173152234, 11.206643030812256 ], [ 160.527443566125669, 11.206554716416685 ], [ 160.527244649734769, 11.204788712798742 ], [ 160.526760809087591, 11.203777817914265 ], [ 160.526944955671581, 11.203284058549032 ] ], [ [ 160.5206866303011, 11.201035096218137 ], [ 160.521801002305693, 11.200320232060985 ], [ 160.522297216971026, 11.200493411318545 ], [ 160.522705312329919, 11.200930895426827 ], [ 160.522522144673957, 11.201427636212989 ], [ 160.521661494346887, 11.202230747233997 ], [ 160.520819558860865, 11.202200972230388 ], [ 160.519904490707887, 11.201600457387773 ], [ 160.519741289074119, 11.201281101761646 ], [ 160.5206866303011, 11.201035096218137 ] ], [ [ 160.516308609824193, 11.200595726104883 ], [ 160.516491724935179, 11.200098876984679 ], [ 160.517492425027058, 11.200462905959775 ], [ 160.518064712839646, 11.201222825865345 ], [ 160.517884254373683, 11.201705266649498 ], [ 160.517453051039524, 11.202115587918133 ], [ 160.517197821733845, 11.202027777729128 ], [ 160.516376588139792, 11.201178198811895 ], [ 160.516308609824193, 11.200595726104883 ] ], [ [ 160.522217861008443, 11.234622618207879 ], [ 160.521784097571498, 11.235030039488459 ], [ 160.520954680904907, 11.234989548558541 ], [ 160.520371142204255, 11.234243276841632 ], [ 160.520554346641831, 11.233746620250466 ], [ 160.521146935737221, 11.233673387295259 ], [ 160.521893812177211, 11.233949308686308 ], [ 160.521802961688564, 11.234197415896523 ], [ 160.522217861008443, 11.234622618207879 ] ], [ [ 160.520488234911937, 11.248549483060492 ], [ 160.522806962821306, 11.246870103120173 ], [ 160.523965645680249, 11.244488974025325 ], [ 160.524742347350525, 11.243922341369974 ], [ 160.525998113497906, 11.244374648613483 ], [ 160.526560095006374, 11.245147726330162 ], [ 160.526974092429327, 11.245569799792149 ], [ 160.526764259541835, 11.246884083141612 ], [ 160.527134190219243, 11.248986705070026 ], [ 160.526866858535243, 11.249719140692962 ], [ 160.526249675580431, 11.250623073064126 ], [ 160.524791650440818, 11.251499972677877 ], [ 160.523705916632736, 11.251385433417918 ], [ 160.521450388417605, 11.250565315562834 ], [ 160.520463666104774, 11.249380248370864 ], [ 160.520488234911937, 11.248549483060492 ] ], [ [ 160.51773293069391, 11.253733377558722 ], [ 160.518827046328653, 11.253835213694455 ], [ 160.519389719680021, 11.254604584980576 ], [ 160.519553671881027, 11.25492700021988 ], [ 160.519275122254044, 11.255686475639688 ], [ 160.518688496499692, 11.255744220540336 ], [ 160.517682121506255, 11.25539526266156 ], [ 160.517373751565941, 11.254710644463055 ], [ 160.51773293069391, 11.253733377558722 ] ], [ [ 160.513589863854889, 11.254199590406746 ], [ 160.514711375376748, 11.253486900753673 ], [ 160.515203403225769, 11.253657859449453 ], [ 160.515112537515336, 11.253905892683692 ], [ 160.514157821166577, 11.254957145198356 ], [ 160.513565284773762, 11.255030261839737 ], [ 160.513589863854889, 11.254199590406746 ] ], [ [ 160.511580249393802, 11.213448275543088 ], [ 160.512510417682165, 11.21322729037337 ], [ 160.513262622212892, 11.213491318611938 ], [ 160.514358066847535, 11.21360945890167 ], [ 160.51460613039734, 11.213695993914552 ], [ 160.515262355885966, 11.214219931657558 ], [ 160.515421978522909, 11.214557323301058 ], [ 160.514242858190727, 11.214688613175205 ], [ 160.513471554029792, 11.215243784467585 ], [ 160.512377342018766, 11.215142291586282 ], [ 160.511560287302729, 11.214264331386982 ], [ 160.511580249393802, 11.213448275543088 ] ], [ [ 160.513241990222525, 11.217405172127057 ], [ 160.514083720533648, 11.217435072301409 ], [ 160.514497035133076, 11.217860728553603 ], [ 160.514056587297802, 11.218249827991901 ], [ 160.513471156685739, 11.218324443526532 ], [ 160.512714324560278, 11.218061769364287 ], [ 160.512554585946958, 11.217724429414709 ], [ 160.513241990222525, 11.217405172127057 ] ], [ [ 160.511481677205438, 11.207547529729888 ], [ 160.512168078191337, 11.207225075363594 ], [ 160.512670727014324, 11.20740300051194 ], [ 160.512829493266821, 11.207737250616725 ], [ 160.512988383987448, 11.208071463281559 ], [ 160.511779855901409, 11.20905237174863 ], [ 160.511193202635241, 11.209110383319972 ], [ 160.510779862747, 11.208684739481583 ], [ 160.511481677205438, 11.207547529729888 ] ], [ [ 160.504399978612156, 11.210594746659073 ], [ 160.504431473893192, 11.209765073858344 ], [ 160.504859211981227, 11.209372876192891 ], [ 160.505368110452537, 11.209548928490836 ], [ 160.50618273657139, 11.210393518116291 ], [ 160.506340860419357, 11.210731333413211 ], [ 160.506570072699219, 11.211650590875532 ], [ 160.50648077387936, 11.211898291035777 ], [ 160.505794403335017, 11.212220699383643 ], [ 160.504291336786935, 11.211678722966509 ], [ 160.503972827963054, 11.211007184212574 ], [ 160.504399978612156, 11.210594746659073 ] ], [ [ 160.478174687593935, 11.201746913593908 ], [ 160.479876571825514, 11.200973710063876 ], [ 160.480384655535971, 11.201153300513328 ], [ 160.480791584774863, 11.201573890252471 ], [ 160.480703202072419, 11.201824719298877 ], [ 160.480173369099532, 11.20247864176052 ], [ 160.478811362319874, 11.203106857768503 ], [ 160.478309800069553, 11.20293214389074 ], [ 160.477995550184147, 11.202245859285787 ], [ 160.478174687593935, 11.201746913593908 ] ], [ [ 160.474296707531408, 11.189169130033248 ], [ 160.475067719848028, 11.188613765204206 ], [ 160.475977143556008, 11.189212150884956 ], [ 160.475888906927167, 11.189462970463946 ], [ 160.475366149483705, 11.19011832568045 ], [ 160.474615308120946, 11.189840552518699 ], [ 160.474367274544193, 11.189754102689877 ], [ 160.474296707531408, 11.189169130033248 ] ], [ [ 160.475466947112039, 11.205265193033174 ], [ 160.475809731146768, 11.20510577063099 ], [ 160.47655738600568, 11.20538453906274 ], [ 160.476811044502853, 11.205472743185323 ], [ 160.476879919792111, 11.206058134170577 ], [ 160.47651565342548, 11.207033905164602 ], [ 160.475923346041725, 11.207107290934177 ], [ 160.475447568401449, 11.206101344928523 ], [ 160.475466947112039, 11.205265193033174 ] ], [ [ 160.464884469432889, 11.200906947699517 ], [ 160.465401944784844, 11.200263654271888 ], [ 160.466247864813795, 11.200278402451415 ], [ 160.46699840662734, 11.200542636180597 ], [ 160.466903248335967, 11.20080566413057 ], [ 160.465789484548623, 11.201520169818954 ], [ 160.464947859515604, 11.201490529497434 ], [ 160.464783799218338, 11.201168201522426 ], [ 160.464884469432889, 11.200906947699517 ] ], [ [ 160.457513869464663, 11.192425863559205 ], [ 160.458427480796416, 11.19300924332498 ], [ 160.458930006284476, 11.193186982629536 ], [ 160.458909853140995, 11.194019968040596 ], [ 160.458133302349268, 11.194573492375415 ], [ 160.456612230631919, 11.194878074151365 ], [ 160.454612117500119, 11.194147170758013 ], [ 160.452175928527311, 11.193838257845913 ], [ 160.451329200271857, 11.193820441831198 ], [ 160.451261000601448, 11.193238305968526 ], [ 160.451878993142401, 11.192333608589319 ], [ 160.453152370462249, 11.191956067303922 ], [ 160.454087450363971, 11.191723067285748 ], [ 160.454515604146707, 11.191327263569507 ], [ 160.45437693858176, 11.190160197785932 ], [ 160.454466779658588, 11.189908937491309 ], [ 160.455153739251756, 11.189589532283794 ], [ 160.456903037644224, 11.19021779902562 ], [ 160.457316353497731, 11.190643199588049 ], [ 160.457469353393293, 11.19099263048585 ], [ 160.457200854614086, 11.191725685202087 ], [ 160.457513869464663, 11.192425863559205 ] ], [ [ 160.412022240779322, 11.182825303532587 ], [ 160.412349768265699, 11.182690705856126 ], [ 160.413353601970471, 11.183042770625404 ], [ 160.41326810779654, 11.183279090520484 ], [ 160.412834842699425, 11.183686631878594 ], [ 160.412503028076429, 11.18383610752405 ], [ 160.411678126970571, 11.182985236444278 ], [ 160.412022240779322, 11.182825303532587 ] ], [ [ 160.414895547906696, 11.214349484282955 ], [ 160.41607912821209, 11.214206248718526 ], [ 160.416740212673318, 11.214717852868906 ], [ 160.416893024671765, 11.215067137825606 ], [ 160.416037189035848, 11.21587175207201 ], [ 160.415027982113429, 11.215517727115111 ], [ 160.41462475097768, 11.215079388038211 ], [ 160.414895547906696, 11.214349484282955 ] ], [ [ 160.413317701903168, 11.21015369478004 ], [ 160.413974507861042, 11.210680156136881 ], [ 160.414302152837507, 11.211341587638847 ], [ 160.41387448792463, 11.21175064948803 ], [ 160.413117481965458, 11.211468176655439 ], [ 160.412387340085104, 11.210371602796284 ], [ 160.413317701903168, 11.21015369478004 ] ], [ [ 160.404946672681291, 11.185894070604 ], [ 160.405716987497669, 11.185325327089071 ], [ 160.406314663320444, 11.185253487618697 ], [ 160.406720769688377, 11.18567737106784 ], [ 160.406627341406306, 11.185939841601956 ], [ 160.406013677997322, 11.186846555302402 ], [ 160.405173111116824, 11.186813527901311 ], [ 160.404925175920624, 11.186727175398977 ], [ 160.404946672681291, 11.185894070604 ] ], [ [ 160.411920099592265, 11.218594971179789 ], [ 160.412099108401776, 11.218096381594734 ], [ 160.412443223985434, 11.217936604293461 ], [ 160.413183541626921, 11.218213831861501 ], [ 160.413358699206299, 11.218539469140312 ], [ 160.41367122026827, 11.219225746100943 ], [ 160.413655338155365, 11.220043328874485 ], [ 160.412650172200443, 11.219691508102501 ], [ 160.411989124791063, 11.219179922037863 ], [ 160.411920099592265, 11.218594971179789 ] ], [ [ 160.399345177764758, 11.184174161719506 ], [ 160.399778389536692, 11.183766656967622 ], [ 160.400782143725309, 11.184118661209494 ], [ 160.40092951588241, 11.184466183220358 ], [ 160.400920336127655, 11.185288818076012 ], [ 160.400576252361503, 11.185448734123359 ], [ 160.399736941275506, 11.185432374670707 ], [ 160.399159898374364, 11.184668001679675 ], [ 160.399345177764758, 11.184174161719506 ] ], [ [ 160.396682027087081, 11.186022168765177 ], [ 160.397115230082363, 11.185614685558511 ], [ 160.397780396556669, 11.186128362910356 ], [ 160.397849553420428, 11.186713397879229 ], [ 160.397162783234336, 11.187032804240777 ], [ 160.396644224848558, 11.187676516574124 ], [ 160.395895576407327, 11.187412138816221 ], [ 160.396682027087081, 11.186022168765177 ] ], [ [ 160.397643059851276, 11.191122259156199 ], [ 160.398240340013643, 11.191036944242972 ], [ 160.39880654724729, 11.191811302141765 ], [ 160.398974620044612, 11.192135648452501 ], [ 160.398610408763943, 11.19312813357709 ], [ 160.398108185955749, 11.192950522032174 ], [ 160.397379551252442, 11.191853560394041 ], [ 160.397643059851276, 11.191122259156199 ] ], [ [ 160.398206558486777, 11.221226258605723 ], [ 160.398883409146748, 11.220920297981039 ], [ 160.399387199575727, 11.22109750315936 ], [ 160.400708791101124, 11.222137653913469 ], [ 160.402533076985037, 11.223338363720618 ], [ 160.402929469134904, 11.223788853609049 ], [ 160.402422225877075, 11.224418617494731 ], [ 160.401482030344198, 11.224649529146909 ], [ 160.39998888983655, 11.224092072985686 ], [ 160.398757595906289, 11.222821145082156 ], [ 160.398186415021513, 11.222058589448261 ], [ 160.398206558486777, 11.221226258605723 ] ], [ [ 160.385860931030294, 11.177686845536645 ], [ 160.386534114907676, 11.178204872590609 ], [ 160.386346148601064, 11.178682502509504 ], [ 160.385830399470109, 11.179342452604262 ], [ 160.385479491178245, 11.17948401452905 ], [ 160.385005429889702, 11.178491865154971 ], [ 160.385860931030294, 11.177686845536645 ] ], [ [ 160.384375449517648, 11.183298509405159 ], [ 160.385469733547296, 11.183402423118979 ], [ 160.386377273980372, 11.184000583004787 ], [ 160.386530157727208, 11.184349823451813 ], [ 160.385944116633965, 11.184408052826877 ], [ 160.384851337519564, 11.184303682198605 ], [ 160.384190210245777, 11.18379229725433 ], [ 160.384375449517648, 11.183298509405159 ] ], [ [ 160.381073962273689, 11.180720003612562 ], [ 160.381252800969747, 11.180221299342303 ], [ 160.382126212384691, 11.17940759883496 ], [ 160.383299550987033, 11.179277093718866 ], [ 160.383711278975653, 11.179702601539395 ], [ 160.383684579799478, 11.180547378126823 ], [ 160.383351613681299, 11.180680206575481 ], [ 160.382754385884283, 11.180765593840766 ], [ 160.382141173770407, 11.181655137329424 ], [ 160.381300453808507, 11.181639291945793 ], [ 160.381073962273689, 11.180720003612562 ] ], [ [ 160.364573019769409, 11.13762802251469 ], [ 160.365163434674656, 11.137554590576615 ], [ 160.365052597380839, 11.138639040620216 ], [ 160.364619544994468, 11.139046673837782 ], [ 160.363920824148153, 11.140183349277475 ], [ 160.36373784601065, 11.140697117847337 ], [ 160.364554871626808, 11.14154315072328 ], [ 160.364718772661519, 11.141882349204131 ], [ 160.364448292951579, 11.142612668151044 ], [ 160.363766472465301, 11.142931014631445 ], [ 160.362668193966499, 11.14282531030161 ], [ 160.360968258283663, 11.143612993186402 ], [ 160.360713824992729, 11.143521888326921 ], [ 160.36005421043518, 11.143010204429018 ], [ 160.35930556546694, 11.142746156112333 ], [ 160.358470666782978, 11.142715307180696 ], [ 160.357351246732975, 11.143442732841745 ], [ 160.35650644425553, 11.143425038890433 ], [ 160.355918848026931, 11.143484008315053 ], [ 160.355936500828903, 11.142662165595727 ], [ 160.356548919330947, 11.141758788999484 ], [ 160.357021589961647, 11.139699217517077 ], [ 160.357795803594087, 11.139115185734257 ], [ 160.359825013231386, 11.139005340211494 ], [ 160.361775095071778, 11.138323540295685 ], [ 160.362023025141809, 11.138409768730039 ], [ 160.362771697795239, 11.138673810117847 ], [ 160.36302601458479, 11.138764947743123 ], [ 160.364573019769409, 11.13762802251469 ] ], [ [ 160.359399236798538, 11.135507938552488 ], [ 160.360266851876986, 11.134691906626085 ], [ 160.360767597523704, 11.134869702952324 ], [ 160.361269849461422, 11.135047055261069 ], [ 160.361175041729297, 11.135310045134077 ], [ 160.360222796793551, 11.136358805410341 ], [ 160.359880330707739, 11.136518469758807 ], [ 160.359220685495444, 11.136006796810001 ], [ 160.359399236798538, 11.135507938552488 ] ], [ [ 160.342608966755108, 11.11330173352712 ], [ 160.343220318349637, 11.112394897320586 ], [ 160.343608988721599, 11.110570748923667 ], [ 160.344289823474128, 11.110248993576983 ], [ 160.345101970027741, 11.111113383660621 ], [ 160.347043459864722, 11.111236806715846 ], [ 160.348233095619321, 11.11109717521502 ], [ 160.349065509878784, 11.11112512175138 ], [ 160.349819734974687, 11.111390763197434 ], [ 160.350141160659376, 11.11206429742237 ], [ 160.349780352552443, 11.113042960060353 ], [ 160.348751901622563, 11.113536198618355 ], [ 160.346116823875207, 11.114555041242941 ], [ 160.344597082666581, 11.114843926124683 ], [ 160.343588450202645, 11.114487251773332 ], [ 160.342681451440058, 11.11388593855156 ], [ 160.342608966755108, 11.11330173352712 ] ], [ [ 160.340180201291446, 11.146260131017822 ], [ 160.340635908194002, 11.145019033941788 ], [ 160.340815432329975, 11.144523407883213 ], [ 160.341356404462459, 11.143046134798382 ], [ 160.341378542056418, 11.142216243031221 ], [ 160.341738085067618, 11.141221395145495 ], [ 160.343512772967728, 11.141020411729411 ], [ 160.344379516336147, 11.140208167801726 ], [ 160.344322980525419, 11.138802810267526 ], [ 160.344597648635641, 11.138057689753211 ], [ 160.346513797437041, 11.13901226031002 ], [ 160.350452636994589, 11.139858896426134 ], [ 160.35126384295063, 11.140720135367348 ], [ 160.35157949216142, 11.141391851210521 ], [ 160.351726382593966, 11.142549237171947 ], [ 160.35145730845403, 11.143296085510226 ], [ 160.350775558908481, 11.143614411613896 ], [ 160.349592760758128, 11.143741440086304 ], [ 160.348911895376489, 11.144062903601599 ], [ 160.347864931647564, 11.145374351350691 ], [ 160.346568841813877, 11.146582901391294 ], [ 160.34462550989312, 11.147269360908028 ], [ 160.342666108135404, 11.147977461734476 ], [ 160.341568359142002, 11.147885290951709 ], [ 160.340728060857032, 11.147852682991966 ], [ 160.340068529510972, 11.147341115084259 ], [ 160.340180201291446, 11.146260131017822 ] ], [ [ 160.332870553208863, 11.112058428182328 ], [ 160.332782465930705, 11.112309245000583 ], [ 160.333081272534713, 11.113816317291707 ], [ 160.333220255781924, 11.114969390088477 ], [ 160.333791683919827, 11.115748752247757 ], [ 160.33453493631086, 11.119903647402113 ], [ 160.334253593351548, 11.12066110523482 ], [ 160.334163115701955, 11.120909204130747 ], [ 160.333730244545649, 11.121317018221317 ], [ 160.333229545662164, 11.121139332738975 ], [ 160.332749987078927, 11.120128499659826 ], [ 160.332428021871436, 11.116372346861127 ], [ 160.331948303271531, 11.115361535164439 ], [ 160.331469703950262, 11.114353789873979 ], [ 160.331756927794402, 11.112788028076919 ], [ 160.331367647286044, 11.111529082745371 ], [ 160.331976272140537, 11.110636694224709 ], [ 160.332870553208863, 11.112058428182328 ] ], [ [ 160.355626403297862, 11.135003140817815 ], [ 160.355265460022736, 11.135981563391921 ], [ 160.354680723393699, 11.136056737698903 ], [ 160.354262503267165, 11.135626441803382 ], [ 160.354030202509364, 11.134705316659442 ], [ 160.353618363992382, 11.134279930187926 ], [ 160.352582582242121, 11.135564484315575 ], [ 160.351896423392077, 11.135897799739663 ], [ 160.351337232663127, 11.135124933045001 ], [ 160.351783029692115, 11.133896711967996 ], [ 160.353072121184226, 11.132686524999558 ], [ 160.353346800981228, 11.131941295366863 ], [ 160.353933645296934, 11.131885885729599 ], [ 160.354349770984413, 11.132296390839242 ], [ 160.355235821124069, 11.133744545080917 ], [ 160.355152083582453, 11.133980417654238 ], [ 160.355626403297862, 11.135003140817815 ] ], [ [ 160.354886248660648, 11.140892015791627 ], [ 160.354801269273281, 11.141111222333045 ], [ 160.35495561186417, 11.141477047407992 ], [ 160.354678388404807, 11.142219538236503 ], [ 160.353846017988445, 11.14219136270294 ], [ 160.353676338103895, 11.141867528402425 ], [ 160.353798338770815, 11.140756074697519 ], [ 160.354226910463439, 11.140363276274025 ], [ 160.354886248660648, 11.140892015791627 ] ], [ [ 160.369763621560708, 11.165217603980688 ], [ 160.370946811414029, 11.165073764060248 ], [ 160.371703444053423, 11.165342374751139 ], [ 160.371612865989817, 11.16559040711439 ], [ 160.37098748336112, 11.166490541564322 ], [ 160.370646217914611, 11.166666723797569 ], [ 160.369641685430992, 11.166311836877798 ], [ 160.369763621560708, 11.165217603980688 ] ], [ [ 160.367718530260191, 11.14992963249947 ], [ 160.368393589690839, 11.149623566505642 ], [ 160.368647028548679, 11.149711583656853 ], [ 160.369216205880463, 11.15047136437607 ], [ 160.369370042516408, 11.150823753386257 ], [ 160.368700615981737, 11.15113153766395 ], [ 160.368102186648798, 11.15120046482288 ], [ 160.367436947391695, 11.150687000896202 ], [ 160.367283859155719, 11.150337796846985 ], [ 160.367718530260191, 11.14992963249947 ] ], [ [ 160.370047227565664, 11.157475079397948 ], [ 160.370797855837793, 11.157752250740105 ], [ 160.371045019735675, 11.157842143411765 ], [ 160.371363456864998, 11.158530090833924 ], [ 160.371092020229156, 11.159257153068499 ], [ 160.370279379423067, 11.158396191756006 ], [ 160.369951505876088, 11.157734871411947 ], [ 160.370047227565664, 11.157475079397948 ] ], [ [ 160.373863586914183, 11.153245128947763 ], [ 160.374687069201144, 11.154096115952481 ], [ 160.376096707537471, 11.154888669908051 ], [ 160.376254066997603, 11.155223013383909 ], [ 160.376756350035663, 11.155400588326303 ], [ 160.377078774288407, 11.156090669525767 ], [ 160.376122301717658, 11.157136950246334 ], [ 160.375830430308525, 11.158700315547742 ], [ 160.375397345696939, 11.159107948231091 ], [ 160.374550972297158, 11.159090549482046 ], [ 160.374325971472331, 11.15817068633325 ], [ 160.374347385730914, 11.157337535894973 ], [ 160.374099459937383, 11.15725126514414 ], [ 160.372736231101896, 11.157877356520441 ], [ 160.371731644882345, 11.157522505550885 ], [ 160.37125219859422, 11.156511520831794 ], [ 160.370517805255332, 11.155412952886655 ], [ 160.370381711618961, 11.154245520260575 ], [ 160.370493660459573, 11.153164298907354 ], [ 160.371286315227366, 11.151778743212487 ], [ 160.372401870595525, 11.151049194228527 ], [ 160.373156181823134, 11.151315056915402 ], [ 160.373382603755573, 11.152234545870783 ], [ 160.373863586914183, 11.153245128947763 ] ], [ [ 160.372032802066798, 11.148957333492367 ], [ 160.372556056959837, 11.148318803607095 ], [ 160.372894550626341, 11.148156971904831 ], [ 160.373215810987546, 11.148830530118731 ], [ 160.373126754580056, 11.149078170132256 ], [ 160.373036193887089, 11.149326254931786 ], [ 160.372517814965164, 11.149970131825288 ], [ 160.372106000833412, 11.149544664611028 ], [ 160.372032802066798, 11.148957333492367 ] ], [ [ 160.36628699483208, 11.139912293673158 ], [ 160.36696882928959, 11.139593917958713 ], [ 160.367717878637649, 11.139871489951449 ], [ 160.367533658701689, 11.140368627518537 ], [ 160.367100629343383, 11.140776378924318 ], [ 160.366261368003194, 11.140760283577562 ], [ 160.365759115353455, 11.140582902404839 ], [ 160.36628699483208, 11.139912293673158 ] ], [ [ 160.330060867356451, 11.126716303614117 ], [ 160.330382213342745, 11.127389653734159 ], [ 160.330201252777812, 11.127885792897766 ], [ 160.329356568355308, 11.127868269616508 ], [ 160.328625157931953, 11.126769132199199 ], [ 160.328399922203971, 11.125849446478508 ], [ 160.328578370169026, 11.125350644593846 ], [ 160.3290112256432, 11.124942872099625 ], [ 160.329513531905292, 11.12512007297982 ], [ 160.329581350232615, 11.125705531396548 ], [ 160.329649166710794, 11.126290988731952 ], [ 160.330060867356451, 11.126716303614117 ] ], [ [ 160.317200105404851, 11.095281055836239 ], [ 160.317702057483928, 11.095475276956851 ], [ 160.318513110888688, 11.096322745317055 ], [ 160.319272890798629, 11.09658992310225 ], [ 160.319431252106085, 11.096927324495002 ], [ 160.319683176869802, 11.097015649351913 ], [ 160.319751106689353, 11.097601193413983 ], [ 160.319069532361453, 11.097919890260126 ], [ 160.318226469749249, 11.097902121331666 ], [ 160.317156367116041, 11.096965058488024 ], [ 160.316586483040197, 11.096185305859043 ], [ 160.317200105404851, 11.095281055836239 ] ], [ [ 160.349584663565309, 11.222571042410687 ], [ 160.349769905201811, 11.222077625430297 ], [ 160.350197327974996, 11.221668798844059 ], [ 160.350789214619311, 11.221595358651237 ], [ 160.35144414536984, 11.222121929013854 ], [ 160.351269690070296, 11.222605355643868 ], [ 160.350746007643096, 11.223260261002705 ], [ 160.350059496634429, 11.22357929108078 ], [ 160.349494045516337, 11.222818855080952 ], [ 160.349584663565309, 11.222571042410687 ] ], [ [ 160.350459388543271, 11.227903597320232 ], [ 160.351039720011556, 11.227843812342908 ], [ 160.35170704262697, 11.22835991056853 ], [ 160.352120046887137, 11.228784805253266 ], [ 160.351933154268835, 11.229278672940163 ], [ 160.351256682686994, 11.229584476687167 ], [ 160.350590591504925, 11.229085013700933 ], [ 160.350437820102144, 11.228735980271097 ], [ 160.350459388543271, 11.227903597320232 ] ], [ [ 160.343428516151761, 11.229313750050062 ], [ 160.343872736337545, 11.228910345093441 ], [ 160.344791459462499, 11.228689101130755 ], [ 160.346342407582853, 11.227556524397226 ], [ 160.346590211931783, 11.227642851517755 ], [ 160.346844397325583, 11.227734085593722 ], [ 160.347070641969481, 11.228652773690001 ], [ 160.346710527670808, 11.229646621423184 ], [ 160.346530910696544, 11.230141709417794 ], [ 160.345504776459109, 11.230605493107802 ], [ 160.34350737155296, 11.229885195380827 ], [ 160.343428516151761, 11.229313750050062 ] ], [ [ 160.354344129022792, 11.252773771334224 ], [ 160.355354431643008, 11.253127182560196 ], [ 160.355603090622026, 11.253216696858363 ], [ 160.355327097379956, 11.253957672246395 ], [ 160.354735227518802, 11.254030920865555 ], [ 160.354142615093224, 11.254100993109613 ], [ 160.353825867029968, 11.253430138959512 ], [ 160.354344129022792, 11.252773771334224 ] ], [ [ 160.350191646353522, 11.257156453153266 ], [ 160.349827374382585, 11.258147760071527 ], [ 160.350377169684918, 11.259738405608115 ], [ 160.349155967465123, 11.261533738909277 ], [ 160.34903794301934, 11.262611807497112 ], [ 160.348512954041382, 11.263249651623857 ], [ 160.347997196898376, 11.263908541382483 ], [ 160.347155231579052, 11.263892666992943 ], [ 160.345886094547126, 11.264268223403372 ], [ 160.345541291040917, 11.264424619256372 ], [ 160.345018408934976, 11.265082195737966 ], [ 160.344171587796467, 11.265060967867106 ], [ 160.343607136946474, 11.264303845214814 ], [ 160.343887534427154, 11.263548136748069 ], [ 160.344157013214442, 11.262802444971847 ], [ 160.343676544717937, 11.26180980275134 ], [ 160.343088274656736, 11.261864978569147 ], [ 160.341296317454209, 11.262898148027219 ], [ 160.340792297681702, 11.265799180695124 ], [ 160.340268566719061, 11.266453581952607 ], [ 160.339247247057642, 11.266915470189005 ], [ 160.338999498972868, 11.26682910064728 ], [ 160.336703229543502, 11.267681826300128 ], [ 160.336180386111977, 11.268339331232983 ], [ 160.336248319567346, 11.268920546213895 ], [ 160.337158730113543, 11.269537858541918 ], [ 160.335438557552067, 11.271140699730999 ], [ 160.333978306742154, 11.272024539940055 ], [ 160.333053203499787, 11.272240483503429 ], [ 160.331551552146209, 11.271709807227587 ], [ 160.330725916011772, 11.270860243082886 ], [ 160.330324521387524, 11.270421890917786 ], [ 160.328636821584041, 11.270387915634837 ], [ 160.327975404891646, 11.269873647035713 ], [ 160.326020228237525, 11.26750698032043 ], [ 160.325703089944255, 11.266816112561511 ], [ 160.325999199883114, 11.26524395626668 ], [ 160.326016598072471, 11.264426893057216 ], [ 160.324700510916131, 11.263386202253407 ], [ 160.323970359720107, 11.262287607299113 ], [ 160.323653662020178, 11.261616978785883 ], [ 160.323833421745434, 11.261122134515244 ], [ 160.324172137414905, 11.260974315078144 ], [ 160.325588446579104, 11.261740736677842 ], [ 160.32717681768375, 11.262051978214568 ], [ 160.328766637476775, 11.262332231574538 ], [ 160.329951757022371, 11.262192103953542 ], [ 160.3309721301178, 11.261727029977994 ], [ 160.332062622605974, 11.261832347337501 ], [ 160.332717303239548, 11.262358833332495 ], [ 160.333220800726934, 11.262535969283563 ], [ 160.33812834704986, 11.26150142347899 ], [ 160.338583134308919, 11.26026273381899 ], [ 160.338921539027467, 11.260101417428643 ], [ 160.339101684410394, 11.259619992381435 ], [ 160.340782414621287, 11.259652574069174 ], [ 160.341630734284024, 11.259673311964503 ], [ 160.342671392628318, 11.258376543664093 ], [ 160.342280446935092, 11.257119535793192 ], [ 160.34246638464046, 11.256622775100132 ], [ 160.342804167462162, 11.256465024524902 ], [ 160.3438994004959, 11.256568966080165 ], [ 160.345077874381161, 11.256441000033391 ], [ 160.347236498776681, 11.254419027923174 ], [ 160.348806503347021, 11.25553099921599 ], [ 160.350191646353522, 11.257156453153266 ] ], [ [ 160.320369459924336, 11.183372648559107 ], [ 160.321055322449723, 11.183039835539496 ], [ 160.321805287481112, 11.183303405129637 ], [ 160.322121955875275, 11.183991412840419 ], [ 160.322195481592331, 11.184561193435682 ], [ 160.322014404957514, 11.185056948484146 ], [ 160.321424227451843, 11.18513013809936 ], [ 160.320758424064479, 11.184613783452317 ], [ 160.320187160800828, 11.183851766666955 ], [ 160.320369459924336, 11.183372648559107 ] ], [ [ 160.330286164226692, 11.258967514875414 ], [ 160.331966797887333, 11.25900004947195 ], [ 160.335263230637736, 11.258513553072628 ], [ 160.335511853436714, 11.258603047534695 ], [ 160.335332196349384, 11.259097912965373 ], [ 160.335241552153718, 11.25934558610968 ], [ 160.333945955926936, 11.260554667048382 ], [ 160.331015735291999, 11.260062980747534 ], [ 160.329154995827878, 11.260511820711748 ], [ 160.328651505601812, 11.260334701253907 ], [ 160.330286164226692, 11.258967514875414 ] ], [ [ 160.326527982003313, 11.254545538745015 ], [ 160.32814169825852, 11.254013416237525 ], [ 160.328644330590834, 11.254187376523085 ], [ 160.329050937688237, 11.254614010296763 ], [ 160.329215192100861, 11.254949310233465 ], [ 160.329029292680019, 11.255446029726537 ], [ 160.328193330441195, 11.255414915637832 ], [ 160.327844164779464, 11.25558623623898 ], [ 160.327332820661013, 11.256230255255721 ], [ 160.326740326056722, 11.256300336170442 ], [ 160.326078849112804, 11.255786093204998 ], [ 160.326527982003313, 11.254545538745015 ] ], [ [ 160.326240890948526, 11.259186495787354 ], [ 160.327018775538733, 11.258623289058539 ], [ 160.327520634783667, 11.258800880858407 ], [ 160.327426348222929, 11.259059813884926 ], [ 160.327399052391428, 11.259890057759948 ], [ 160.326715576210489, 11.260194286292833 ], [ 160.326124185887522, 11.260281007349931 ], [ 160.325971493507353, 11.259932116594893 ], [ 160.326240890948526, 11.259186495787354 ] ], [ [ 160.328568124715957, 11.256679957544199 ], [ 160.329262402428725, 11.256365706044209 ], [ 160.330557449979182, 11.255143117292333 ], [ 160.331737445038868, 11.255014629635188 ], [ 160.332741335499747, 11.255369786617067 ], [ 160.332646288232041, 11.255632361865613 ], [ 160.332467516959809, 11.256130375167391 ], [ 160.331006098902776, 11.256997889737569 ], [ 160.329557344120389, 11.257868430815241 ], [ 160.328806102603409, 11.257604974317815 ], [ 160.328568124715957, 11.256679957544199 ] ], [ [ 160.339278684678305, 11.272229752854219 ], [ 160.340383881228206, 11.271532489591978 ], [ 160.340726703680531, 11.271356328077028 ], [ 160.341823962609368, 11.271480152928939 ], [ 160.342573708487691, 11.271744163504133 ], [ 160.342821456018612, 11.271830543645741 ], [ 160.343070074358849, 11.271920065926606 ], [ 160.343138858219731, 11.272504439202324 ], [ 160.341960439338948, 11.272632225968113 ], [ 160.341462573159987, 11.272456769698826 ], [ 160.340092914449656, 11.273092967316989 ], [ 160.339183732627475, 11.272492249927925 ], [ 160.339278684678305, 11.272229752854219 ] ], [ [ 160.297524571486861, 11.204796341916035 ], [ 160.29821320297404, 11.204480022169157 ], [ 160.29879334758283, 11.204420061004486 ], [ 160.300113482707644, 11.205449056837907 ], [ 160.300366878913508, 11.205537018847037 ], [ 160.299934041946699, 11.205944113955882 ], [ 160.299341479558166, 11.206014544614332 ], [ 160.297910323533131, 11.20606852786568 ], [ 160.297346011069891, 11.205294532935477 ], [ 160.297524571486861, 11.204796341916035 ] ], [ [ 160.294678060890817, 11.204070703360125 ], [ 160.295203029508656, 11.203415356756832 ], [ 160.295449158053231, 11.203502066346198 ], [ 160.295613169231785, 11.203823852348659 ], [ 160.295817871993989, 11.205591552039266 ], [ 160.295637685126763, 11.206090214880014 ], [ 160.29529289474101, 11.20624687754785 ], [ 160.294302637882311, 11.205898339011826 ], [ 160.294678060890817, 11.204070703360125 ] ], [ [ 160.293103638217616, 11.199874947657715 ], [ 160.293701690277686, 11.199806239786632 ], [ 160.293943815373297, 11.199890733236982 ], [ 160.29442290877472, 11.200900725630316 ], [ 160.294654867396844, 11.201820909982681 ], [ 160.294564344100309, 11.202068681361066 ], [ 160.294023217996084, 11.203544494819687 ], [ 160.293927541877338, 11.203803984146351 ], [ 160.293610978061366, 11.203116238178083 ], [ 160.293364726993701, 11.203029567915117 ], [ 160.293472281571951, 11.201964485401973 ], [ 160.29292410315341, 11.200370048942681 ], [ 160.293103638217616, 11.199874947657715 ] ], [ [ 160.290741152791043, 11.200140967263147 ], [ 160.291176447700877, 11.199736507626604 ], [ 160.292264096860606, 11.199855579751736 ], [ 160.29242220771539, 11.200192709389285 ], [ 160.292489799073678, 11.20077761051922 ], [ 160.292056127219752, 11.201181580808102 ], [ 160.290972762151569, 11.201047636377345 ], [ 160.290808745282021, 11.200725859951064 ], [ 160.290741152791043, 11.200140967263147 ] ], [ [ 160.286670611873035, 11.191173320556882 ], [ 160.287448417736101, 11.190592344534057 ], [ 160.288197808775692, 11.190872920284452 ], [ 160.288106075944654, 11.191104084229679 ], [ 160.288090338828567, 11.191938077478024 ], [ 160.287567064115251, 11.192593030442641 ], [ 160.287070675475917, 11.192417488587552 ], [ 160.286657924082277, 11.191975808821976 ], [ 160.286670611873035, 11.191173320556882 ] ], [ [ 160.334950542173914, 11.324030506020398 ], [ 160.335542993545033, 11.323960821262183 ], [ 160.336294031898859, 11.324224573158004 ], [ 160.336453485874273, 11.324561148219408 ], [ 160.335929635375891, 11.325214909524215 ], [ 160.335681090386373, 11.325125327971639 ], [ 160.334928428416674, 11.324862056752488 ], [ 160.334950542173914, 11.324030506020398 ] ], [ [ 160.337518091744528, 11.328585800210327 ], [ 160.338952313952291, 11.328532456597888 ], [ 160.339364942106016, 11.328957254546129 ], [ 160.339275078845105, 11.329207858313874 ], [ 160.339180343486277, 11.329453111395575 ], [ 160.338497151276272, 11.329770224222832 ], [ 160.337501236671216, 11.329405587146645 ], [ 160.337518091744528, 11.328585800210327 ] ], [ [ 160.360770331053004, 11.339982504865548 ], [ 160.361855476145138, 11.340100329975607 ], [ 160.362429027498109, 11.34086141668663 ], [ 160.362676723783352, 11.340947916685815 ], [ 160.362497670487073, 11.34144552141953 ], [ 160.362317277468179, 11.341926541588336 ], [ 160.361226846910142, 11.341820445113564 ], [ 160.360496383590657, 11.340725401893001 ], [ 160.36034788465065, 11.340378764278878 ], [ 160.360770331053004, 11.339982504865548 ] ], [ [ 160.366566982436325, 11.346529633992795 ], [ 160.367472196173424, 11.347141984919745 ], [ 160.36862713855345, 11.347830075677734 ], [ 160.368540767563672, 11.348062654639296 ], [ 160.368616390340634, 11.348648082838082 ], [ 160.367933904901093, 11.34896819922756 ], [ 160.367177180888007, 11.348702486915631 ], [ 160.365858210251304, 11.347679142471737 ], [ 160.364978305681063, 11.346234327125517 ], [ 160.364993797655302, 11.345414921201023 ], [ 160.365612637836051, 11.34451598934953 ], [ 160.366702220989481, 11.344618985240775 ], [ 160.367205625248715, 11.344796434702195 ], [ 160.367026425488007, 11.345294071247627 ], [ 160.366152740825839, 11.346105197799277 ], [ 160.366566982436325, 11.346529633992795 ] ], [ [ 160.371905932369998, 11.351236053366584 ], [ 160.37234086413028, 11.350829390540996 ], [ 160.373087585239404, 11.351108408595513 ], [ 160.373399877901335, 11.351776831885962 ], [ 160.372972912278499, 11.352187794703966 ], [ 160.372464000055345, 11.352008537730061 ], [ 160.371721197507981, 11.351731896166017 ], [ 160.371905932369998, 11.351236053366584 ] ], [ [ 160.372376361248627, 11.321520898119354 ], [ 160.373894925479988, 11.3212322063928 ], [ 160.375599173392288, 11.320450564440447 ], [ 160.376530654836245, 11.320233301900437 ], [ 160.376853889618474, 11.320891876342955 ], [ 160.377013234640174, 11.321228625792175 ], [ 160.378114122037488, 11.321334968891215 ], [ 160.378696085152342, 11.321275246788597 ], [ 160.379103047000228, 11.321698535296948 ], [ 160.379416694104322, 11.322383724229299 ], [ 160.379892757561407, 11.323374192616338 ], [ 160.380808966196383, 11.323976613308588 ], [ 160.381217386971883, 11.324416459977581 ], [ 160.381012096129581, 11.325743894262416 ], [ 160.379467231759406, 11.326862145342762 ], [ 160.374400588380382, 11.327549290421137 ], [ 160.373719577129378, 11.327869155167674 ], [ 160.373385494041401, 11.32801530504357 ], [ 160.37403598208212, 11.328539879088257 ], [ 160.375197072887573, 11.329243176090635 ], [ 160.375360816907829, 11.329565017546486 ], [ 160.375176124903135, 11.330061008282449 ], [ 160.374577464628658, 11.33014599625408 ], [ 160.373397414807101, 11.330273520605038 ], [ 160.372638226153128, 11.330005165443167 ], [ 160.371988963084419, 11.329497220457794 ], [ 160.371925575958329, 11.32890126038458 ], [ 160.371288888599565, 11.327557592197376 ], [ 160.369874797639511, 11.326779593625638 ], [ 160.368556764703186, 11.325742332088826 ], [ 160.367629942100677, 11.322898372448488 ], [ 160.367559734352795, 11.322314596031095 ], [ 160.368401680956168, 11.322330928156891 ], [ 160.369312334553513, 11.322931491876489 ], [ 160.372376361248627, 11.321520898119354 ] ], [ [ 160.368052677750711, 11.313270813885811 ], [ 160.368827127395519, 11.312719432161728 ], [ 160.369323474884567, 11.312895514349815 ], [ 160.369657883309941, 11.313557568003835 ], [ 160.370144939460772, 11.313743190785697 ], [ 160.370461409424792, 11.314413940903339 ], [ 160.370531642229423, 11.314997770944249 ], [ 160.369446222529461, 11.314880157818273 ], [ 160.368784252864856, 11.314369186859869 ], [ 160.368122917865577, 11.313854635624391 ], [ 160.368052677750711, 11.313270813885811 ] ], [ [ 160.371761021623399, 11.319348943083391 ], [ 160.372539921274893, 11.31878273437318 ], [ 160.372872498179589, 11.318636989834932 ], [ 160.374127205052787, 11.319078271300461 ], [ 160.374285683696172, 11.319411875069372 ], [ 160.373852411321735, 11.3198182980704 ], [ 160.37316989922283, 11.320138674616121 ], [ 160.372491684624634, 11.320444195139745 ], [ 160.37174047397869, 11.320180311697786 ], [ 160.371587794728924, 11.319831419548914 ], [ 160.371761021623399, 11.319348943083391 ] ], [ [ 160.369397758525196, 11.310404289967723 ], [ 160.369329012385066, 11.309820000701116 ], [ 160.369258759717638, 11.309236151628415 ], [ 160.369850627300025, 11.309163233165654 ], [ 160.370344198121103, 11.309353717976219 ], [ 160.371576808394224, 11.310626842944787 ], [ 160.371736301606973, 11.310963556271632 ], [ 160.371810838477415, 11.31153255505807 ], [ 160.371535445522738, 11.312276223812832 ], [ 160.370598701422523, 11.312505318881726 ], [ 160.369847470801517, 11.312241475523331 ], [ 160.369285293217501, 11.311466665068476 ], [ 160.369397758525196, 11.310404289967723 ] ], [ [ 160.365910546892678, 11.302164841465485 ], [ 160.366255406763258, 11.302008602321788 ], [ 160.366605030939212, 11.301850955333077 ], [ 160.367346392539616, 11.302127992823065 ], [ 160.367842761225091, 11.302304041008592 ], [ 160.367912169611515, 11.30288477515691 ], [ 160.367822302178638, 11.303135516642927 ], [ 160.367229656976917, 11.303205168955412 ], [ 160.366642209910481, 11.303263233027405 ], [ 160.365986337940512, 11.302750473781357 ], [ 160.365910546892678, 11.302164841465485 ] ], [ [ 160.389701293858224, 11.334438347495594 ], [ 160.391264021117991, 11.335563459625968 ], [ 160.391920453985676, 11.336072813689096 ], [ 160.392244835656186, 11.336748057303668 ], [ 160.391969240368127, 11.337491482534984 ], [ 160.391450992269171, 11.338130019097006 ], [ 160.390609820722858, 11.338116664990421 ], [ 160.389268593386703, 11.337907828791888 ], [ 160.388358060588473, 11.337307048258459 ], [ 160.387696011119544, 11.336795979650793 ], [ 160.387150185928107, 11.335204622713126 ], [ 160.386518836178965, 11.333849050167178 ], [ 160.385448849511988, 11.332911578230402 ], [ 160.383860773137002, 11.332619440951419 ], [ 160.382833174672328, 11.333095863507445 ], [ 160.381881028040425, 11.334144324026683 ], [ 160.381288267679707, 11.334213950855432 ], [ 160.381039031611294, 11.334127879625793 ], [ 160.380991014997704, 11.332712315986992 ], [ 160.380423014684453, 11.331952797972914 ], [ 160.380539934279597, 11.330875692290872 ], [ 160.383995965901192, 11.330708250027479 ], [ 160.385673217195546, 11.33075330120249 ], [ 160.386198557254062, 11.330116001946454 ], [ 160.386537093812336, 11.329954966589435 ], [ 160.387606275162597, 11.330889433574127 ], [ 160.388671124371996, 11.33183863919149 ], [ 160.388969205532476, 11.333343402525943 ], [ 160.389701293858224, 11.334438347495594 ] ], [ [ 160.387509734240808, 11.306549571881618 ], [ 160.38869158859103, 11.306421321460508 ], [ 160.391823197550593, 11.305594892662112 ], [ 160.392828834107689, 11.30595016547062 ], [ 160.39355401752519, 11.307043969898617 ], [ 160.394444329904189, 11.308476306170419 ], [ 160.394757921003048, 11.309161681272672 ], [ 160.394213244856019, 11.310647464811916 ], [ 160.392759018051635, 11.311518529347582 ], [ 160.390964754308243, 11.312551131725296 ], [ 160.391194338668583, 11.313471885552149 ], [ 160.390580730846722, 11.314359648944617 ], [ 160.389649366435236, 11.31459048824289 ], [ 160.388055632708614, 11.314296753109353 ], [ 160.38560412380204, 11.311739199057623 ], [ 160.384756545607303, 11.311721134574439 ], [ 160.383416873332663, 11.311512099151418 ], [ 160.382422116167788, 11.311146865137307 ], [ 160.381520426506199, 11.309728287124267 ], [ 160.378810200673115, 11.307889332353021 ], [ 160.377756244325298, 11.306135295987371 ], [ 160.377125259126899, 11.304776055490475 ], [ 160.376460305029951, 11.304279495796967 ], [ 160.374670585371206, 11.305297347422799 ], [ 160.374306084574613, 11.306288211758428 ], [ 160.373280071122252, 11.306764522903809 ], [ 160.372962058872815, 11.306094173807599 ], [ 160.371642940384106, 11.305053770781143 ], [ 160.371491568179096, 11.304721436214942 ], [ 160.372098291037275, 11.303815268703682 ], [ 160.372711740936182, 11.302927477993798 ], [ 160.372912189509123, 11.301601183802093 ], [ 160.373271498753894, 11.300621988932837 ], [ 160.374049626713571, 11.300059172100333 ], [ 160.374890790651392, 11.300072220578425 ], [ 160.375552212713671, 11.300586799033765 ], [ 160.376029767627898, 11.301593930232013 ], [ 160.376870526960289, 11.301624101507469 ], [ 160.377457671631134, 11.301552551580125 ], [ 160.378251137911946, 11.300169885769442 ], [ 160.382776444695395, 11.300952814190021 ], [ 160.384026040085246, 11.301405798000358 ], [ 160.385613540402261, 11.30170121630263 ], [ 160.386286545659516, 11.302202255000971 ], [ 160.386497969536919, 11.303148806688002 ], [ 160.387098161536329, 11.306141169882803 ], [ 160.387509734240808, 11.306549571881618 ] ], [ [ 160.375227016918444, 11.293772902754275 ], [ 160.376561540606787, 11.293993445089896 ], [ 160.377227288142905, 11.294493169832281 ], [ 160.377476689877625, 11.294579146497185 ], [ 160.377117735455499, 11.295571933144172 ], [ 160.376524603533397, 11.295628297837709 ], [ 160.376026691516074, 11.295452687300973 ], [ 160.375613882338286, 11.295027705913704 ], [ 160.375137911617628, 11.294020063384103 ], [ 160.375227016918444, 11.293772902754275 ] ], [ [ 160.376871955019084, 11.313920403404035 ], [ 160.377717977753917, 11.313938911425467 ], [ 160.378718493077685, 11.314288834508533 ], [ 160.379121311039938, 11.314726944259121 ], [ 160.378942279203585, 11.315224773713119 ], [ 160.378009780325897, 11.31543898262445 ], [ 160.376691935696471, 11.314415127148571 ], [ 160.376871955019084, 11.313920403404035 ] ], [ [ 160.375841318385341, 11.308243110767835 ], [ 160.376438723492242, 11.308171960843648 ], [ 160.377503582467966, 11.309121076179823 ], [ 160.378166599498059, 11.309635198708882 ], [ 160.378081004069315, 11.309871082053608 ], [ 160.377647728258864, 11.310277585097506 ], [ 160.376895588358735, 11.310010582319368 ], [ 160.375826321933715, 11.309076365127643 ], [ 160.375417979989834, 11.308636498543366 ], [ 160.375841318385341, 11.308243110767835 ] ], [ [ 160.388044394761721, 11.321270322101899 ], [ 160.388135178945902, 11.321022738998598 ], [ 160.389875573061744, 11.321650279200187 ], [ 160.393515036255508, 11.324078033933539 ], [ 160.394081602545043, 11.32483811526385 ], [ 160.39448882796691, 11.325261398830724 ], [ 160.394310367074752, 11.325755638026637 ], [ 160.39312938108219, 11.325886800342488 ], [ 160.392764562886043, 11.326877589518618 ], [ 160.392171875085154, 11.3269472114021 ], [ 160.391579932731929, 11.327020010967624 ], [ 160.390285520923271, 11.325150108533579 ], [ 160.388400784327501, 11.323352561571994 ], [ 160.387764901208527, 11.322011778650973 ], [ 160.388044394761721, 11.321270322101899 ] ], [ [ 160.397222150563209, 11.348595833179983 ], [ 160.397720127473946, 11.348771604034042 ], [ 160.398127149299569, 11.349194931680122 ], [ 160.398037948557658, 11.34944196676908 ], [ 160.39760971138594, 11.34983651215704 ], [ 160.396602746770498, 11.349481423302541 ], [ 160.396449843141909, 11.349149569778328 ], [ 160.396131152182789, 11.348476076954203 ], [ 160.397222150563209, 11.348595833179983 ] ], [ [ 160.400517301306166, 11.354246183594617 ], [ 160.401517762563316, 11.354596445706301 ], [ 160.401924896485355, 11.355019750694556 ], [ 160.402334743594821, 11.355459236720186 ], [ 160.402060582397269, 11.356202229119779 ], [ 160.401128098945179, 11.356415983288365 ], [ 160.40047010295595, 11.355907036624572 ], [ 160.400003842601706, 11.354889938370597 ], [ 160.400517301306166, 11.354246183594617 ] ], [ [ 160.399723279154756, 11.34949177100391 ], [ 160.40040446787566, 11.349172192634683 ], [ 160.401405821255992, 11.34952556670815 ], [ 160.401994985879412, 11.349467312456644 ], [ 160.402586821356721, 11.349394687569626 ], [ 160.403238927028866, 11.349918973191437 ], [ 160.40280550195456, 11.350325237818804 ], [ 160.402038663907405, 11.350880741613851 ], [ 160.400609027287032, 11.350921776461874 ], [ 160.39995142614174, 11.350395734284801 ], [ 160.399621303300336, 11.349735783032676 ], [ 160.399723279154756, 11.34949177100391 ] ], [ [ 160.405359146571101, 11.364910988310031 ], [ 160.405856240317576, 11.365083685859011 ], [ 160.406425303291172, 11.365859951858507 ], [ 160.406328933783783, 11.36610566068307 ], [ 160.406239576747595, 11.366352697486066 ], [ 160.405492040424349, 11.366077227193509 ], [ 160.405015048790858, 11.365070109575184 ], [ 160.405359146571101, 11.364910988310031 ] ], [ [ 160.387259113373972, 11.300321563291238 ], [ 160.388622913279164, 11.299680832923038 ], [ 160.390466263758327, 11.300067172637815 ], [ 160.390613357751988, 11.300414434603907 ], [ 160.390528517518277, 11.300646746404116 ], [ 160.389845790564806, 11.300967347569832 ], [ 160.38925395467308, 11.301040261259219 ], [ 160.388073586894251, 11.301168128826898 ], [ 160.387322240012281, 11.300904259302321 ], [ 160.387259113373972, 11.300321563291238 ] ], [ [ 160.388593755520333, 11.303589691362909 ], [ 160.389191220378422, 11.303518525069705 ], [ 160.390027410082638, 11.303550108851747 ], [ 160.390350949823699, 11.304222349669224 ], [ 160.39025617857817, 11.304467774330156 ], [ 160.389917631880991, 11.304628926412031 ], [ 160.3888265289103, 11.304509558742186 ], [ 160.388498572885226, 11.303852223551235 ], [ 160.388593755520333, 11.303589691362909 ] ], [ [ 160.413405753593224, 11.304663824955311 ], [ 160.413310950756255, 11.304909293039277 ], [ 160.413469595762194, 11.30524301326696 ], [ 160.413290375239285, 11.305741069412576 ], [ 160.412946256592193, 11.305900456620916 ], [ 160.41229112266862, 11.305390560892354 ], [ 160.411473878196659, 11.304527591375766 ], [ 160.411405155823843, 11.303943054327933 ], [ 160.411489154437561, 11.30370757336266 ], [ 160.412489279970998, 11.304061209986907 ], [ 160.413405753593224, 11.304663824955311 ] ], [ [ 160.419985176386831, 11.413472401651514 ], [ 160.42057864500805, 11.413399679264682 ], [ 160.421331376358353, 11.413663653355567 ], [ 160.421805237203017, 11.414685074157953 ], [ 160.421619021197415, 11.415164098833369 ], [ 160.420941748938219, 11.415485463333495 ], [ 160.420029894220391, 11.414884757509412 ], [ 160.419985176386831, 11.413472401651514 ] ], [ [ 160.423081624685267, 11.414292723549472 ], [ 160.423414331456343, 11.414147357907295 ], [ 160.424168577759161, 11.414410903723438 ], [ 160.424577043985209, 11.414833843110863 ], [ 160.424641230986367, 11.41541573146581 ], [ 160.424213273972441, 11.415823297459541 ], [ 160.423868997539643, 11.415982241459254 ], [ 160.423211331862859, 11.415473068120878 ], [ 160.423081624685267, 11.414292723549472 ] ], [ [ 160.346757935215948, 11.369580237275724 ], [ 160.34684635301042, 11.369330186835171 ], [ 160.347599655750372, 11.369596861396362 ], [ 160.348257003844537, 11.370122600725981 ], [ 160.348165868957864, 11.370356483189191 ], [ 160.347833358673114, 11.370501997799822 ], [ 160.347234985077989, 11.370586726863271 ], [ 160.346832418098671, 11.370148800872908 ], [ 160.346757935215948, 11.369580237275724 ] ], [ [ 160.354140479476115, 11.370268772265106 ], [ 160.355411202168881, 11.369894260402065 ], [ 160.355577562370257, 11.370232146309501 ], [ 160.355137167453648, 11.370636851611019 ], [ 160.354702405137317, 11.371043285799558 ], [ 160.353458072247406, 11.370588681721744 ], [ 160.354140479476115, 11.370268772265106 ] ], [ [ 160.353439027893785, 11.365269074949717 ], [ 160.354455625762512, 11.364803223381207 ], [ 160.355615997356097, 11.365492998803761 ], [ 160.355435908727117, 11.365987323361447 ], [ 160.354504174244283, 11.366221103740504 ], [ 160.353915987208126, 11.366275688024464 ], [ 160.353342602215406, 11.365514722679718 ], [ 160.353439027893785, 11.365269074949717 ] ], [ [ 160.328584665626607, 11.360545255472172 ], [ 160.329172754845445, 11.360490616507301 ], [ 160.330173762842605, 11.36084362847631 ], [ 160.331513037623239, 11.361035818296084 ], [ 160.333171398052912, 11.361914488150504 ], [ 160.333419897433345, 11.362004113934288 ], [ 160.333399234659765, 11.362834873375736 ], [ 160.332721235519045, 11.363139983597678 ], [ 160.328723385889589, 11.361712477225923 ], [ 160.328564021026693, 11.361375993010908 ], [ 160.328584665626607, 11.360545255472172 ] ], [ [ 160.321368012639311, 11.331730740475839 ], [ 160.322118961535836, 11.33199446482125 ], [ 160.322961497243369, 11.332013908202427 ], [ 160.323214653015327, 11.332102111951398 ], [ 160.323464801997716, 11.332191204866808 ], [ 160.323289289053093, 11.332670729882928 ], [ 160.322510706071341, 11.333236623042788 ], [ 160.321912621582726, 11.333335103345304 ], [ 160.321511243673569, 11.332883319070376 ], [ 160.321368012639311, 11.331730740475839 ] ], [ [ 160.326539873490475, 11.352277032650823 ], [ 160.328785028871607, 11.353084336310781 ], [ 160.329356935299302, 11.353845578982924 ], [ 160.32942620271092, 11.354425866929509 ], [ 160.328647550120621, 11.354991521375931 ], [ 160.32738269873451, 11.355367974509733 ], [ 160.326535430544766, 11.355349760631571 ], [ 160.326126919750919, 11.354927246583348 ], [ 160.326058410870104, 11.354343357945007 ], [ 160.326243035179971, 11.353847707001441 ], [ 160.326265141829879, 11.353016483854967 ], [ 160.325862545372047, 11.352578646220641 ], [ 160.325947366954807, 11.35234659992053 ], [ 160.326539873490475, 11.352277032650823 ] ], [ [ 160.32207636936775, 11.345947284081682 ], [ 160.32267478713473, 11.345862354458319 ], [ 160.32440540535967, 11.34731348423659 ], [ 160.324538942046559, 11.34849253214071 ], [ 160.323701596508471, 11.348461264677262 ], [ 160.32295069856437, 11.348197466360089 ], [ 160.321970364302473, 11.347013726767177 ], [ 160.32207636936775, 11.345947284081682 ] ], [ [ 160.317918610633768, 11.325742770554738 ], [ 160.318325580676031, 11.326165740246882 ], [ 160.318641971904555, 11.326836109110888 ], [ 160.318007912975361, 11.328571257410015 ], [ 160.318414873709429, 11.328994226181326 ], [ 160.318731251194293, 11.329664585122497 ], [ 160.318212988792851, 11.330319985189554 ], [ 160.314646693907775, 11.328470670240526 ], [ 160.314080296363954, 11.327711222071034 ], [ 160.313498814846213, 11.326976596687636 ], [ 160.313535969994092, 11.326120394697009 ], [ 160.314467886030428, 11.325906305099618 ], [ 160.314783930663367, 11.326563173956497 ], [ 160.315530452825357, 11.3268417349964 ], [ 160.316398177185107, 11.326028797471658 ], [ 160.31707045633317, 11.325721652820484 ], [ 160.317918610633768, 11.325742770554738 ] ], [ [ 160.313513562265911, 11.333105867449159 ], [ 160.314693519133641, 11.33296117987736 ], [ 160.315126569717847, 11.332555003564785 ], [ 160.315969065132549, 11.332574434610461 ], [ 160.316037662241769, 11.333158374098545 ], [ 160.315757244620244, 11.333913227581352 ], [ 160.314740128256602, 11.334376407922669 ], [ 160.313644379904758, 11.334268807905975 ], [ 160.312654550222163, 11.333888960182039 ], [ 160.313513562265911, 11.333105867449159 ] ], [ [ 160.309808784614688, 11.330102784730242 ], [ 160.31049194507068, 11.329785668776015 ], [ 160.311237220631085, 11.330047611095416 ], [ 160.31201659342176, 11.329484851107782 ], [ 160.312512736813943, 11.329660822970251 ], [ 160.312581473351997, 11.330244722718193 ], [ 160.312148435483351, 11.330650911121113 ], [ 160.310876925813687, 11.331039897844624 ], [ 160.309623389762294, 11.330595382968646 ], [ 160.309808784614688, 11.330102784730242 ] ], [ [ 160.312421577662889, 11.339137129548369 ], [ 160.313859930322593, 11.339068970207629 ], [ 160.314115563966567, 11.33915982813499 ], [ 160.313835131856791, 11.339914613553407 ], [ 160.313151827881939, 11.340231679465587 ], [ 160.312564649707184, 11.340289585062475 ], [ 160.312156234865711, 11.339867089971632 ], [ 160.312421577662889, 11.339137129548369 ] ], [ [ 160.306959980713515, 11.317070919341097 ], [ 160.307595307423213, 11.318427814700526 ], [ 160.307509912164477, 11.318663507283446 ], [ 160.307324550067875, 11.319156166471073 ], [ 160.3064829432235, 11.31913998647131 ], [ 160.305923641741032, 11.3183818690661 ], [ 160.305441152708482, 11.317356651672776 ], [ 160.305801067906202, 11.316381296982877 ], [ 160.306230061110398, 11.315972803933573 ], [ 160.306484206310074, 11.316064064531179 ], [ 160.306895605342646, 11.31647210350773 ], [ 160.306796226013205, 11.316749273773178 ], [ 160.306959980713515, 11.317070919341097 ] ], [ [ 160.291999488550687, 11.262311752277986 ], [ 160.292586674177187, 11.262253393289008 ], [ 160.293584793202768, 11.262606607974677 ], [ 160.293500981290549, 11.262841992898954 ], [ 160.29341038620953, 11.263089574457089 ], [ 160.292975878832891, 11.263496701142254 ], [ 160.292129350224826, 11.263475598374631 ], [ 160.291729338557076, 11.263054006786437 ], [ 160.291999488550687, 11.262311752277986 ] ], [ [ 160.295245304285999, 11.270439254989293 ], [ 160.295329126451946, 11.270203889373681 ], [ 160.296344579265849, 11.269740347060765 ], [ 160.297344188376627, 11.27009317844812 ], [ 160.296650402421164, 11.27121545819996 ], [ 160.296306957400702, 11.271388414438604 ], [ 160.295301853543293, 11.271033816598187 ], [ 160.295245304285999, 11.270439254989293 ] ], [ [ 160.31693077997403, 11.346878382210246 ], [ 160.318286266857712, 11.346254437778608 ], [ 160.319127119395432, 11.346274452836019 ], [ 160.319291153744217, 11.346609565638207 ], [ 160.319175231309856, 11.34768908463993 ], [ 160.317317988447826, 11.348135238081854 ], [ 160.316475521992743, 11.348115693812119 ], [ 160.316152221984112, 11.34744408867731 ], [ 160.31693077997403, 11.346878382210246 ] ], [ [ 160.315603083237221, 11.336640178310853 ], [ 160.316042062369405, 11.336218701741744 ], [ 160.317216113195968, 11.336089378808984 ], [ 160.318716028019082, 11.336634373604557 ], [ 160.319377101081471, 11.337148648767876 ], [ 160.319694944473696, 11.337818541423841 ], [ 160.320323943959096, 11.339177269826205 ], [ 160.320054914834174, 11.339918536299569 ], [ 160.319880262300444, 11.340401139788725 ], [ 160.318873713672474, 11.340046522775021 ], [ 160.317810893634999, 11.339097578572217 ], [ 160.316312344275815, 11.338569147001849 ], [ 160.315651287538458, 11.338054888761077 ], [ 160.315339366530793, 11.337369698187395 ], [ 160.315603083237221, 11.336640178310853 ] ], [ [ 160.288515454186211, 11.214724100363359 ], [ 160.289265038904489, 11.214987702513856 ], [ 160.289519279214886, 11.215078802693254 ], [ 160.289744021004935, 11.215997572042044 ], [ 160.289311214321771, 11.216404560703653 ], [ 160.288560637714681, 11.216137850904447 ], [ 160.287996402319067, 11.215363953370639 ], [ 160.287836825058889, 11.215027310379012 ], [ 160.288515454186211, 11.214724100363359 ] ], [ [ 160.314409259940675, 11.356024748847434 ], [ 160.314843841775058, 11.355618300471585 ], [ 160.315840370545004, 11.35598608625136 ], [ 160.315999744555199, 11.356322538700878 ], [ 160.315569450045302, 11.356714143991967 ], [ 160.314982625173968, 11.356785426977202 ], [ 160.314229297092027, 11.356518973955728 ], [ 160.314409259940675, 11.356024748847434 ] ], [ [ 160.309369860215952, 11.343587647890988 ], [ 160.310817226709162, 11.342733029587068 ], [ 160.311320470891047, 11.342910322088917 ], [ 160.311811294841192, 11.343098070702473 ], [ 160.31213560799506, 11.343772762470692 ], [ 160.311948545328988, 11.344265767393583 ], [ 160.311430062870159, 11.34490747137569 ], [ 160.310000425602254, 11.344945718290772 ], [ 160.309413611481972, 11.345017072075651 ], [ 160.308837400097559, 11.344270809633164 ], [ 160.309369860215952, 11.343587647890988 ] ], [ [ 160.311006706496471, 11.348375042251535 ], [ 160.311685457784108, 11.348072963945683 ], [ 160.312430801227663, 11.348334947074385 ], [ 160.312250227348329, 11.348832794099383 ], [ 160.312070287193137, 11.349327054687235 ], [ 160.310800082441602, 11.349701816487118 ], [ 160.310477012572676, 11.349043762402504 ], [ 160.311006706496471, 11.348375042251535 ] ], [ [ 160.293667531244722, 11.285518064464661 ], [ 160.294004310985486, 11.285357330204418 ], [ 160.294356107967758, 11.285202339737506 ], [ 160.29475617169436, 11.285623895658691 ], [ 160.295164466139965, 11.286063390868861 ], [ 160.295326783638615, 11.286385492426085 ], [ 160.295141529085981, 11.286878305584567 ], [ 160.29489386808288, 11.286791968216965 ], [ 160.293734816253448, 11.286102560329807 ], [ 160.293667531244722, 11.285518064464661 ] ], [ [ 160.295885687790019, 11.303335452014121 ], [ 160.296068199899196, 11.302857141446754 ], [ 160.297825094957886, 11.303478528581287 ], [ 160.298383598873812, 11.304233475749623 ], [ 160.299885598963698, 11.304767281159279 ], [ 160.300367081796139, 11.305775859930034 ], [ 160.300000457143739, 11.306763491813998 ], [ 160.299498665641977, 11.306585883326383 ], [ 160.298430502592652, 11.305648867616336 ], [ 160.297610727067138, 11.30480140204212 ], [ 160.296611278750362, 11.30444838394067 ], [ 160.295954535221085, 11.30391939235574 ], [ 160.295885687790019, 11.303335452014121 ] ], [ [ 160.303248433305896, 11.336394046441285 ], [ 160.303428542163573, 11.335913249464289 ], [ 160.304180266032461, 11.336180056534042 ], [ 160.305148343788034, 11.337374018315201 ], [ 160.306319398994162, 11.338053294023505 ], [ 160.306726432147627, 11.338476168671999 ], [ 160.307794399165289, 11.339413416419832 ], [ 160.308800884961983, 11.339767969435369 ], [ 160.309203500089012, 11.340205734408956 ], [ 160.310271430730324, 11.341142882752981 ], [ 160.310429844291548, 11.341476242313359 ], [ 160.30999529727714, 11.341882785234235 ], [ 160.3094093494704, 11.341957293999833 ], [ 160.308069560934598, 11.341745079969039 ], [ 160.3074764867319, 11.341818302600508 ], [ 160.307205867397045, 11.342559951556373 ], [ 160.307021318312906, 11.34305559984873 ], [ 160.306026409235244, 11.342687449049709 ], [ 160.305475450760184, 11.341109077351179 ], [ 160.304746727487156, 11.340014172526285 ], [ 160.303952415757635, 11.338334533279017 ], [ 160.303221174330616, 11.337236978321679 ], [ 160.303248433305896, 11.336394046441285 ] ], [ [ 160.303525761151633, 11.344864330238062 ], [ 160.304203602017481, 11.344559092398972 ], [ 160.304886607186319, 11.344242148817539 ], [ 160.305639937786509, 11.344508514241589 ], [ 160.305796838697546, 11.344842297680215 ], [ 160.305273101384898, 11.345495710039522 ], [ 160.304008463708385, 11.345872293992375 ], [ 160.303345851348269, 11.345358582865952 ], [ 160.303525761151633, 11.344864330238062 ] ], [ [ 160.305933925745421, 11.34908448857248 ], [ 160.306776330459883, 11.34910401720788 ], [ 160.307023936280302, 11.34919045355503 ], [ 160.307094112842805, 11.349773785827683 ], [ 160.307162783228165, 11.350357559948691 ], [ 160.306728113005107, 11.350764065678451 ], [ 160.305982928997395, 11.350502058043091 ], [ 160.305658650290212, 11.349827429175086 ], [ 160.305933925745421, 11.34908448857248 ] ], [ [ 160.288811131291311, 11.291028793913929 ], [ 160.289150622301548, 11.290884256476765 ], [ 160.289646787663173, 11.29106006613517 ], [ 160.290466635058038, 11.29190746714438 ], [ 160.290630033824925, 11.292246196399386 ], [ 160.290197130476855, 11.292652615452353 ], [ 160.289445314777254, 11.29238604009069 ], [ 160.289038272969208, 11.291963190121049 ], [ 160.288811131291311, 11.291028793913929 ] ], [ [ 160.290626560321385, 11.289167755330272 ], [ 160.290803520367547, 11.288687611690186 ], [ 160.292056168074993, 11.289128616485458 ], [ 160.292214067517165, 11.289465589553458 ], [ 160.292461721123487, 11.28955192684988 ], [ 160.293642186091489, 11.289426904786222 ], [ 160.294240417380109, 11.289341656521557 ], [ 160.294552562270354, 11.290026881596981 ], [ 160.294214276973548, 11.290188040067711 ], [ 160.293101202157828, 11.290897485448459 ], [ 160.29267379678825, 11.291305688108784 ], [ 160.291927247557368, 11.291027359140026 ], [ 160.290527241441907, 11.289444984153842 ], [ 160.290626560321385, 11.289167755330272 ] ], [ [ 160.29438293842864, 11.283564534298726 ], [ 160.293958726447073, 11.283941291552548 ], [ 160.293620443108864, 11.284102476697853 ], [ 160.292868582917464, 11.283835921802652 ], [ 160.292366884472216, 11.283658356420077 ], [ 160.292050299993548, 11.282988009718011 ], [ 160.291981498162187, 11.282403953198402 ], [ 160.292319776447329, 11.282242762116617 ], [ 160.292658926590974, 11.282084707705163 ], [ 160.293314893019954, 11.282610524012615 ], [ 160.294065255923357, 11.282877521219056 ], [ 160.293980551009639, 11.283109709144117 ], [ 160.29438293842864, 11.283564534298726 ] ], [ [ 160.289817027018159, 11.284436392538032 ], [ 160.290504359816538, 11.28410404810626 ], [ 160.291249424591513, 11.284382787659526 ], [ 160.291165591265155, 11.284618104168253 ], [ 160.291234385612228, 11.285202146811979 ], [ 160.290962527996697, 11.285944667064744 ], [ 160.290535262753082, 11.286352864767855 ], [ 160.289868410228564, 11.285837080277439 ], [ 160.289817027018159, 11.284436392538032 ] ], [ [ 160.28999804512182, 11.303198449968496 ], [ 160.290161826089701, 11.303520063630781 ], [ 160.289982175136117, 11.304014481002792 ], [ 160.29029940412488, 11.304687915813027 ], [ 160.290373759637816, 11.305273586253584 ], [ 160.289690836154904, 11.305590858510865 ], [ 160.288939068092105, 11.305324233610573 ], [ 160.288463504945867, 11.304300437626347 ], [ 160.287712608983639, 11.304036959507611 ], [ 160.28739096550575, 11.30337842177854 ], [ 160.2877345138252, 11.303205580956462 ], [ 160.289004549529125, 11.302830154570442 ], [ 160.28999804512182, 11.303198449968496 ] ], [ [ 160.290766018109991, 11.318820111985431 ], [ 160.291517747064461, 11.319086798621955 ], [ 160.29176623535966, 11.319176312914093 ], [ 160.291924822143926, 11.319509613703762 ], [ 160.291247046844632, 11.319815054206765 ], [ 160.290406166484843, 11.319795323764598 ], [ 160.289902931038654, 11.319618148931925 ], [ 160.289744470143546, 11.319284818011488 ], [ 160.290766018109991, 11.318820111985431 ] ], [ [ 160.282239065651481, 11.307382500743257 ], [ 160.28300592307582, 11.306829979513555 ], [ 160.284625859302366, 11.306286811557714 ], [ 160.285963490151772, 11.306478694198232 ], [ 160.286598394736444, 11.307838930303639 ], [ 160.286513669373335, 11.308071033440797 ], [ 160.28580967622861, 11.309222613361277 ], [ 160.284534397796961, 11.309609690448079 ], [ 160.282947087096233, 11.309311683933011 ], [ 160.282540115871313, 11.308888870508374 ], [ 160.281973947593372, 11.30811257823957 ], [ 160.282239065651481, 11.307382500743257 ] ], [ [ 160.282152513486466, 11.310710750729694 ], [ 160.282744881688927, 11.310640911306297 ], [ 160.283151846905525, 11.31106372487486 ], [ 160.283310451397199, 11.311397010662118 ], [ 160.283220680825764, 11.311647560684786 ], [ 160.282785284427774, 11.312051159400266 ], [ 160.282447030871822, 11.312212214182559 ], [ 160.281785957058105, 11.311698183291984 ], [ 160.281469635329842, 11.311027965422383 ], [ 160.282152513486466, 11.310710750729694 ] ], [ [ 160.296183639227053, 11.333304179289129 ], [ 160.296455275075431, 11.332579155334155 ], [ 160.297380689111122, 11.332360220815147 ], [ 160.297798517342528, 11.332773081605403 ], [ 160.297702202435005, 11.3330187254293 ], [ 160.297613145938158, 11.333265618482701 ], [ 160.297189325894806, 11.333662255800736 ], [ 160.296591763671614, 11.333743655767346 ], [ 160.296088542215045, 11.33356642744096 ], [ 160.296183639227053, 11.333304179289129 ] ], [ [ 160.297849135392426, 11.340326111592848 ], [ 160.299118010034022, 11.339934608503757 ], [ 160.299373618987488, 11.34002544844367 ], [ 160.299526239753646, 11.340374059784754 ], [ 160.299007705697221, 11.341015788598632 ], [ 160.29840863968289, 11.341097589264079 ], [ 160.297657827738703, 11.340833921952171 ], [ 160.297849135392426, 11.340326111592848 ] ], [ [ 160.300597649275858, 11.347448891466911 ], [ 160.3011915574196, 11.347378833338613 ], [ 160.301598548598292, 11.347801680590011 ], [ 160.302425913830177, 11.348653611504622 ], [ 160.302330913675036, 11.348915785886348 ], [ 160.302302037128442, 11.34972853003479 ], [ 160.301618920082461, 11.350045460949676 ], [ 160.301121352617514, 11.349869906163674 ], [ 160.300237613099029, 11.348423829474541 ], [ 160.300597649275858, 11.347448891466911 ] ], [ [ 160.297465381549785, 11.345207203527696 ], [ 160.29753407777099, 11.345790949609112 ], [ 160.297693347475871, 11.346127397818876 ], [ 160.297173651969416, 11.346782974013424 ], [ 160.296580172837849, 11.346835950316631 ], [ 160.29566999597472, 11.346235864025314 ], [ 160.294193811218491, 11.344876458322595 ], [ 160.293125864725852, 11.343939513814481 ], [ 160.292807603959034, 11.343249589493801 ], [ 160.293428681820103, 11.342367247868426 ], [ 160.294099334366507, 11.342060710983999 ], [ 160.295100220777499, 11.342413436347336 ], [ 160.296052245942946, 11.344429783383173 ], [ 160.296962184712214, 11.345029942943045 ], [ 160.297465381549785, 11.345207203527696 ] ], [ [ 160.296125044413827, 11.348073067197097 ], [ 160.296803714620381, 11.347771001552232 ], [ 160.297463796449591, 11.348282020292427 ], [ 160.297628344908674, 11.348606724424151 ], [ 160.297601040438337, 11.349449517100751 ], [ 160.29717332375688, 11.34984378569388 ], [ 160.296421678399213, 11.349576952703648 ], [ 160.296103030621964, 11.348904114579414 ], [ 160.296125044413827, 11.348073067197097 ] ], [ [ 160.281316841700999, 11.316829531714978 ], [ 160.281909074451619, 11.316759761699402 ], [ 160.282317011567528, 11.317185670777336 ], [ 160.282226365917353, 11.31743306269874 ], [ 160.281955582061158, 11.318161317563359 ], [ 160.28152831194555, 11.318569251318344 ], [ 160.281278208579039, 11.318480233848998 ], [ 160.280798458181323, 11.317471426555365 ], [ 160.281316841700999, 11.316829531714978 ] ], [ [ 160.278590502836181, 11.311936524532946 ], [ 160.278861127993963, 11.311208269037344 ], [ 160.279702595316735, 11.311224333362052 ], [ 160.279860439762246, 11.311561227225933 ], [ 160.280087117980088, 11.312481935856392 ], [ 160.27981120224112, 11.313221929477864 ], [ 160.279472956969556, 11.313382976820396 ], [ 160.278970371635893, 11.31320227001741 ], [ 160.278654056502745, 11.312532076403965 ], [ 160.278590502836181, 11.311936524532946 ] ], [ [ 160.274492916793349, 11.30768980030906 ], [ 160.275519620625118, 11.307213222607395 ], [ 160.277212891807977, 11.306427600839616 ], [ 160.277722622460772, 11.306609570608666 ], [ 160.277879606777446, 11.306943329358782 ], [ 160.277789849134962, 11.307193881756499 ], [ 160.277265480389389, 11.307844433023162 ], [ 160.276249548446543, 11.308311028208474 ], [ 160.275064987850726, 11.308450709138059 ], [ 160.274560900957482, 11.308270470475776 ], [ 160.274492916793349, 11.30768980030906 ] ], [ [ 160.270725722484968, 11.313317230542575 ], [ 160.270906105212305, 11.312819327178477 ], [ 160.271499518198937, 11.312766135422333 ], [ 160.272002715714081, 11.312943240306467 ], [ 160.272251182548302, 11.313032720145261 ], [ 160.272324306129207, 11.313601647612467 ], [ 160.271794906754735, 11.314270566502024 ], [ 160.271298847056784, 11.314094743997385 ], [ 160.270794784442216, 11.313914500509997 ], [ 160.270725722484968, 11.313317230542575 ] ], [ [ 160.285437870480195, 11.236232373630124 ], [ 160.285308076513616, 11.235051267113475 ], [ 160.286391277567816, 11.235185467013304 ], [ 160.286550806947929, 11.235522070938202 ], [ 160.287281629316624, 11.236603208081647 ], [ 160.287509972853002, 11.237541094693135 ], [ 160.286827345761424, 11.237841893456432 ], [ 160.286307971606874, 11.238498565355197 ], [ 160.285964078619713, 11.238658218713281 ], [ 160.285371738198052, 11.238728434935757 ], [ 160.284971928337029, 11.238289797263192 ], [ 160.284575375147767, 11.237045094405852 ], [ 160.285437870480195, 11.236232373630124 ] ], [ [ 160.280292467712741, 11.230212325277499 ], [ 160.28131921527077, 11.229734707778251 ], [ 160.282068083116826, 11.230001926388422 ], [ 160.282729543595451, 11.230515880047928 ], [ 160.282886708000063, 11.230849786847203 ], [ 160.283208411534076, 11.231525604250185 ], [ 160.282842228668954, 11.232514019007812 ], [ 160.281913149454482, 11.232745232239422 ], [ 160.280840333100713, 11.231806271070955 ], [ 160.280111389355085, 11.230707636968129 ], [ 160.280292467712741, 11.230212325277499 ] ], [ [ 160.280716726668999, 11.233704529944454 ], [ 160.281303545197545, 11.23363251703856 ], [ 160.282054028832334, 11.233899267952072 ], [ 160.282866716687096, 11.234762465233841 ], [ 160.282776169092017, 11.235010111639772 ], [ 160.28235328107894, 11.235403811365645 ], [ 160.281597293332709, 11.235135289525102 ], [ 160.280778703719761, 11.234287443133226 ], [ 160.280716726668999, 11.233704529944454 ] ], [ [ 160.287225492791208, 11.245244799831752 ], [ 160.28741213190645, 11.244751316241718 ], [ 160.287659829811588, 11.244837586261125 ], [ 160.288162602641563, 11.245018135845363 ], [ 160.288066756856921, 11.245277515979273 ], [ 160.288050405588251, 11.246097600138809 ], [ 160.287621572641399, 11.246506569732212 ], [ 160.287113298197028, 11.24632425303566 ], [ 160.287225492791208, 11.245244799831752 ] ], [ [ 160.282699846207606, 11.228279069395111 ], [ 160.283286679904592, 11.228207026188072 ], [ 160.283788482553604, 11.228384416969201 ], [ 160.284110198109261, 11.229060247810256 ], [ 160.284357909714458, 11.229146492850223 ], [ 160.284177694822063, 11.22964496604798 ], [ 160.283998111451268, 11.230139849975467 ], [ 160.28349631259033, 11.229962454220791 ], [ 160.282925388445307, 11.229200831405469 ], [ 160.282699846207606, 11.228279069395111 ] ], [ [ 160.266368198013595, 11.228857357622823 ], [ 160.267049486622369, 11.228539878876248 ], [ 160.267795519955172, 11.228821444143843 ], [ 160.267957836774372, 11.229143586471453 ], [ 160.266841435586343, 11.229865200064076 ], [ 160.266006989396629, 11.229851024199156 ], [ 160.265843321708559, 11.229512305996881 ], [ 160.266368198013595, 11.228857357622823 ] ], [ [ 160.294797806126496, 11.081441325581824 ], [ 160.295159061109672, 11.080465837986303 ], [ 160.296340349436178, 11.08032146833116 ], [ 160.297184832615272, 11.080338614517904 ], [ 160.29809582898406, 11.080941722570767 ], [ 160.298899698849482, 11.082628368856195 ], [ 160.299215605826447, 11.083299942780018 ], [ 160.298949588461994, 11.084032634123696 ], [ 160.298516868383302, 11.084440514887563 ], [ 160.297582000868317, 11.084671476009056 ], [ 160.297171708349396, 11.084245847874977 ], [ 160.296603025557204, 11.083482874347775 ], [ 160.295601667591399, 11.083127913165079 ], [ 160.295028219056832, 11.082366367565738 ], [ 160.294797806126496, 11.081441325581824 ] ], [ [ 160.305932917747924, 11.128450767370477 ], [ 160.306952464875422, 11.127987562151064 ], [ 160.307364121965634, 11.128412769632515 ], [ 160.30811259051012, 11.128676546872166 ], [ 160.30802213683134, 11.128924569882729 ], [ 160.307498908525019, 11.129580279477182 ], [ 160.306323312168018, 11.129725910914791 ], [ 160.305819848389717, 11.129532121175595 ], [ 160.305500151251351, 11.128858456980486 ], [ 160.305932917747924, 11.128450767370477 ] ], [ [ 160.309470725104859, 11.131942963403638 ], [ 160.311238646618563, 11.131743636972359 ], [ 160.31223621980206, 11.132110237157617 ], [ 160.312562682479324, 11.132771713522057 ], [ 160.312472218653369, 11.13301973261045 ], [ 160.311701094340577, 11.133589264469391 ], [ 160.310602282883906, 11.133480685523372 ], [ 160.309353221052248, 11.133039226479752 ], [ 160.30910325229371, 11.132933293507742 ], [ 160.309470725104859, 11.131942963403638 ] ], [ [ 160.290328368639877, 11.109200618244779 ], [ 160.290783534132117, 11.107959427684953 ], [ 160.291645765388012, 11.107144737504703 ], [ 160.293166439714639, 11.10685521932932 ], [ 160.294004700462523, 11.106874377422493 ], [ 160.295666755428044, 11.107757358337656 ], [ 160.296735037568567, 11.10869468019763 ], [ 160.296718171667266, 11.109529832239817 ], [ 160.295928948307875, 11.110918128574875 ], [ 160.294819200434347, 11.111629555525868 ], [ 160.293631522471884, 11.111768824444962 ], [ 160.293293247794111, 11.111930770723999 ], [ 160.293186224331009, 11.112996826623522 ], [ 160.292498895008265, 11.113330722110939 ], [ 160.29107028558667, 11.113371616802809 ], [ 160.28999405571173, 11.112429933782565 ], [ 160.290328368639877, 11.109200618244779 ] ], [ [ 160.299619659986121, 11.131791468833937 ], [ 160.299956449544879, 11.13163005422085 ], [ 160.301067898107164, 11.130918449458491 ], [ 160.301231685036782, 11.131257491537106 ], [ 160.301145637132322, 11.131490577558088 ], [ 160.300780712605473, 11.132483506733402 ], [ 160.299940969787457, 11.132464599969113 ], [ 160.299342809995068, 11.132533694569171 ], [ 160.299619659986121, 11.131791468833937 ] ], [ [ 160.288427878076646, 11.114396264358643 ], [ 160.289109284056252, 11.114077748966043 ], [ 160.289864106675395, 11.114346295411766 ], [ 160.290275909581311, 11.114771390083369 ], [ 160.290185496243737, 11.115019421715195 ], [ 160.289840720226266, 11.115176487047831 ], [ 160.289509230813081, 11.115326194491081 ], [ 160.288253831043079, 11.114880099886072 ], [ 160.288427878076646, 11.114396264358643 ] ], [ [ 160.285007503955512, 11.109822071887178 ], [ 160.285773391387039, 11.109270843984314 ], [ 160.286944303207861, 11.109949559509129 ], [ 160.286172506293525, 11.1105161472086 ], [ 160.285242027931986, 11.110731964592716 ], [ 160.28457321605805, 11.110230333838041 ], [ 160.285007503955512, 11.109822071887178 ] ], [ [ 160.262765371407795, 11.086249026669432 ], [ 160.263425563821613, 11.086780297536537 ], [ 160.263593843121072, 11.087104372583706 ], [ 160.263817739566463, 11.088024246581959 ], [ 160.263889769953295, 11.088611748238399 ], [ 160.263365999207565, 11.089264549834228 ], [ 160.262695514785463, 11.089573242288026 ], [ 160.261935087953759, 11.089303187758384 ], [ 160.261520602320019, 11.088892609682119 ], [ 160.26238806153367, 11.088079537266479 ], [ 160.261994642886549, 11.086818965901591 ], [ 160.262765371407795, 11.086249026669432 ] ], [ [ 160.256805511061231, 11.092515853065136 ], [ 160.257740208983364, 11.092284923723426 ], [ 160.25789267293365, 11.092637493479904 ], [ 160.258060936219664, 11.092961540720031 ], [ 160.257880243449847, 11.093457612963164 ], [ 160.257446840013301, 11.093862304087985 ], [ 160.25678318186587, 11.093349121461051 ], [ 160.256805511061231, 11.092515853065136 ] ], [ [ 160.237880032023128, 11.074604091643593 ], [ 160.238627630861401, 11.074870991891794 ], [ 160.238701364722914, 11.075457938419449 ], [ 160.238013468652298, 11.075788965994766 ], [ 160.237260240386547, 11.075520344746801 ], [ 160.237355680238153, 11.075260555579094 ], [ 160.237198910017781, 11.074922902469382 ], [ 160.237880032023128, 11.074604091643593 ] ], [ [ 160.231699746618375, 11.076039031392069 ], [ 160.231627635453549, 11.075451638275746 ], [ 160.232308727256026, 11.075132839218927 ], [ 160.232810112716493, 11.075313262631541 ], [ 160.2329672504722, 11.075664397272208 ], [ 160.233883245167988, 11.076255237425082 ], [ 160.234040381007446, 11.076606373426021 ], [ 160.233358035924738, 11.076908524659945 ], [ 160.232767232622706, 11.076979273895192 ], [ 160.231766220196931, 11.076624700636851 ], [ 160.231699746618375, 11.076039031392069 ] ], [ [ 160.226296871618416, 11.066023496720005 ], [ 160.22706971057363, 11.065456108702611 ], [ 160.22765899916206, 11.065385737720032 ], [ 160.22797896925195, 11.066059106282621 ], [ 160.227552104462177, 11.066468829338168 ], [ 160.226526563837666, 11.066944910723956 ], [ 160.226116325677083, 11.066519611749118 ], [ 160.226296871618416, 11.066023496720005 ] ], [ [ 160.225284478473014, 11.069570881368266 ], [ 160.225719226823173, 11.069165637118601 ], [ 160.226308505341962, 11.069095286572447 ], [ 160.226718610542406, 11.069520623263626 ], [ 160.226948280519167, 11.070442018234107 ], [ 160.226678317580081, 11.071189292325776 ], [ 160.225586160524131, 11.071079685222186 ], [ 160.225014399393302, 11.070318192030511 ], [ 160.225284478473014, 11.069570881368266 ] ], [ [ 160.222649602472501, 11.063604463935041 ], [ 160.223488810418445, 11.063639796812987 ], [ 160.223989322341026, 11.063817024171948 ], [ 160.223651497476681, 11.063962058340127 ], [ 160.223561230780518, 11.064210116809296 ], [ 160.223132007041642, 11.064617150767511 ], [ 160.222289414604205, 11.064599833287033 ], [ 160.222130992954078, 11.064262698287935 ], [ 160.222649602472501, 11.063604463935041 ] ], [ [ 160.223548148929581, 11.072024421610164 ], [ 160.223566290485081, 11.071189014902682 ], [ 160.223904114226656, 11.071044013066077 ], [ 160.224404610660599, 11.071221261665698 ], [ 160.22456577687413, 11.071543961885753 ], [ 160.224795437581321, 11.072465325553457 ], [ 160.224435195683441, 11.073460600974981 ], [ 160.223613896279261, 11.072606888536722 ], [ 160.223548148929581, 11.072024421610164 ] ], [ [ 160.223730201261702, 11.067632964361605 ], [ 160.224077429111048, 11.067461329031786 ], [ 160.224905862182993, 11.067506709321371 ], [ 160.225079314970571, 11.067818950790418 ], [ 160.224730455153235, 11.067991070764585 ], [ 160.224307990803595, 11.068385855564461 ], [ 160.223554797165747, 11.068117320794491 ], [ 160.223730201261702, 11.067632964361605 ] ], [ [ 160.211392592383561, 11.05569726196391 ], [ 160.211644405519024, 11.055785380453532 ], [ 160.212054658058747, 11.056210616050933 ], [ 160.211801342811242, 11.056122943781453 ], [ 160.21162085778235, 11.056619063741978 ], [ 160.212031107623147, 11.057044298551874 ], [ 160.212349482643845, 11.057718078303786 ], [ 160.211758746516068, 11.057788955063005 ], [ 160.211011205654614, 11.057522237397626 ], [ 160.210939880240517, 11.056938006036999 ], [ 160.210957919619602, 11.056102571957867 ], [ 160.211392592383561, 11.05569726196391 ] ], [ [ 160.212071062182645, 11.062369716086582 ], [ 160.212661794626712, 11.062298865277814 ], [ 160.213414959974642, 11.06256733095368 ], [ 160.213573383718909, 11.062904439984898 ], [ 160.213740076827548, 11.063228876427235 ], [ 160.213306887980764, 11.063633685651954 ], [ 160.212463216988624, 11.063630341976532 ], [ 160.212138853551295, 11.062971983498638 ], [ 160.212071062182645, 11.062369716086582 ] ], [ [ 160.208588032156797, 11.060289962471042 ], [ 160.209107434839211, 11.059634887014997 ], [ 160.210451320408367, 11.059832460227286 ], [ 160.210859928486798, 11.060258174583661 ], [ 160.21076968261093, 11.0605062199994 ], [ 160.210589189140819, 11.061002307956954 ], [ 160.209569299773051, 11.061480191063485 ], [ 160.208731165023295, 11.061448010269411 ], [ 160.208407544932271, 11.060786043218624 ], [ 160.208588032156797, 11.060289962471042 ] ], [ [ 160.206368941766385, 11.061727855197065 ], [ 160.206953759385954, 11.061672361412921 ], [ 160.207622549350077, 11.062173469439339 ], [ 160.207689225042884, 11.062759041228718 ], [ 160.207350312507458, 11.062918016022637 ], [ 160.206435620712512, 11.062313423004188 ], [ 160.206368941766385, 11.061727855197065 ] ], [ [ 160.198882706717058, 11.061309203691991 ], [ 160.199816281570691, 11.061081565214218 ], [ 160.200316729526179, 11.061258720070846 ], [ 160.200136261897512, 11.061754763253468 ], [ 160.199798246072305, 11.061916877048681 ], [ 160.199117333781345, 11.062235759361036 ], [ 160.198364195324075, 11.061967228857055 ], [ 160.198882706717058, 11.061309203691991 ] ], [ [ 160.187298141474514, 11.060536010327278 ], [ 160.187877247903373, 11.060478773022954 ], [ 160.188377662525596, 11.060655892294811 ], [ 160.188544478862724, 11.060980213434522 ], [ 160.188116902674039, 11.061386735234418 ], [ 160.187683192873891, 11.06179508445671 ], [ 160.186935647385042, 11.061528487126218 ], [ 160.187298141474514, 11.060536010327278 ] ], [ [ 160.181064179083222, 11.056683402268462 ], [ 160.181178236338809, 11.055584818311965 ], [ 160.182197890521792, 11.055106904959976 ], [ 160.182612103068237, 11.05553420651046 ], [ 160.182678830325472, 11.056119678562226 ], [ 160.182498419945915, 11.056615684255776 ], [ 160.18163982670464, 11.057416202133405 ], [ 160.181049220849644, 11.057487106136861 ], [ 160.181064179083222, 11.056683402268462 ] ], [ [ 160.161013416083449, 11.05427406113315 ], [ 160.16210403925399, 11.054397230440568 ], [ 160.16260526739859, 11.054577402022852 ], [ 160.162519348620208, 11.054810498421578 ], [ 160.162176301964081, 11.054984356477762 ], [ 160.16149559848742, 11.055303256987354 ], [ 160.160826303925376, 11.05478221586001 ], [ 160.161013416083449, 11.05427406113315 ] ], [ [ 160.149512338654461, 11.053288439131942 ], [ 160.150524968706861, 11.052822769494568 ], [ 160.151277891864709, 11.053090935396185 ], [ 160.151192990080432, 11.053327115663553 ], [ 160.150764072386295, 11.053734049701857 ], [ 160.150077800169811, 11.054051229372632 ], [ 160.149426562324948, 11.053521476755021 ], [ 160.149512338654461, 11.053288439131942 ] ], [ [ 160.26528793748534, 11.062270774024064 ], [ 160.266216834922488, 11.062054907838752 ], [ 160.266621519931135, 11.062478675867931 ], [ 160.266440878086314, 11.062974969810446 ], [ 160.265607936698046, 11.062944404000374 ], [ 160.265107299689646, 11.062767063562605 ], [ 160.26528793748534, 11.062270774024064 ] ], [ [ 160.376816027440952, 11.152915956611439 ], [ 160.377593255031996, 11.152348185220148 ], [ 160.378183707178295, 11.152274849478307 ], [ 160.379440302948126, 11.15271819077196 ], [ 160.379505191464546, 11.153318212258165 ], [ 160.379413385549469, 11.153549649328918 ], [ 160.378822929819847, 11.153622976400861 ], [ 160.37807260903088, 11.153359292875045 ], [ 160.377301413642812, 11.153911650492791 ], [ 160.37655110074931, 11.153647971443696 ], [ 160.376816027440952, 11.152915956611439 ] ], [ [ 160.375158320746635, 11.141978347121718 ], [ 160.376024449377837, 11.141162818275202 ], [ 160.376272395700369, 11.141249070296206 ], [ 160.376773172810601, 11.141426929736202 ], [ 160.376684246774147, 11.141674561322617 ], [ 160.376161495917387, 11.142333580080866 ], [ 160.375728429372458, 11.142741338028719 ], [ 160.374978084576867, 11.142477711217154 ], [ 160.375158320746635, 11.141978347121718 ] ], [ [ 160.373941220123641, 11.13678622691164 ], [ 160.374216869657744, 11.136044058946974 ], [ 160.374739594336035, 11.13538497999809 ], [ 160.374508543948338, 11.134480329213385 ], [ 160.375193829341612, 11.134143867076533 ], [ 160.376034355062103, 11.134176458352334 ], [ 160.376446230815787, 11.13460195055125 ], [ 160.376354449213807, 11.134833437438395 ], [ 160.375921390457734, 11.13524125167096 ], [ 160.375742673085682, 11.135740213967075 ], [ 160.375809528730969, 11.136322719909485 ], [ 160.375540384965007, 11.137069764887197 ], [ 160.375107327434421, 11.137477560298537 ], [ 160.374516870365539, 11.137550983412659 ], [ 160.374014460997984, 11.137373625084281 ], [ 160.373941220123641, 11.13678622691164 ] ], [ [ 160.382800517042256, 11.152812242152603 ], [ 160.38332182352022, 11.152153751008861 ], [ 160.384073276857038, 11.152434137807401 ], [ 160.384489382520542, 11.1528447773095 ], [ 160.384394521478839, 11.153107755667159 ], [ 160.384214508184215, 11.153589990587111 ], [ 160.383697600540103, 11.154233549645062 ], [ 160.382947385834257, 11.153969807491027 ], [ 160.382783511207521, 11.153630568028078 ], [ 160.382800517042256, 11.152812242152603 ] ], [ [ 160.381571447152737, 11.138384230154136 ], [ 160.381755699596908, 11.1378870277341 ], [ 160.382279342832504, 11.1372310786636 ], [ 160.382859641425085, 11.137187916661814 ], [ 160.383023828547749, 11.137510084583333 ], [ 160.383186743217948, 11.137846245774218 ], [ 160.382827277009852, 11.138824357582305 ], [ 160.381959594192836, 11.139640402591526 ], [ 160.381115516781648, 11.139625824096651 ], [ 160.380957245985229, 11.139288294709637 ], [ 160.381571447152737, 11.138384230154136 ] ], [ [ 160.387320016252858, 11.131205834656857 ], [ 160.388862053558654, 11.130080362921978 ], [ 160.389610872969854, 11.130344482474589 ], [ 160.389770399948361, 11.130698708235157 ], [ 160.390090515684278, 11.131355787572289 ], [ 160.389483067439016, 11.132247773920538 ], [ 160.38888726507605, 11.132332997494505 ], [ 160.388131276730746, 11.132067467243377 ], [ 160.387049848021661, 11.131949886973436 ], [ 160.387320016252858, 11.131205834656857 ] ], [ [ 160.387648619310085, 11.127973340325399 ], [ 160.388424260399603, 11.127405722539798 ], [ 160.388926736576337, 11.127583092443892 ], [ 160.388836180541603, 11.127831274798579 ], [ 160.388651060629286, 11.128325423696776 ], [ 160.388217960235636, 11.128733317716289 ], [ 160.387536883287879, 11.129054957685451 ], [ 160.387383739628632, 11.128705644338229 ], [ 160.387648619310085, 11.127973340325399 ] ], [ [ 160.391138220977297, 11.13005717781204 ], [ 160.391817688133443, 11.129736028128892 ], [ 160.392320168465147, 11.129913415079615 ], [ 160.392569385190853, 11.13001632651889 ], [ 160.392637115607016, 11.130602091800508 ], [ 160.392710755528896, 11.131172481445812 ], [ 160.392187071249396, 11.131828539570447 ], [ 160.391432606810213, 11.13156267630167 ], [ 160.390863402181537, 11.130802643342253 ], [ 160.391138220977297, 11.13005717781204 ] ], [ [ 160.390182329069148, 11.117964034486775 ], [ 160.390519365009794, 11.117802505603317 ], [ 160.391685707260564, 11.118493916198585 ], [ 160.391838749908487, 11.118843302225248 ], [ 160.391163563239104, 11.119149658343419 ], [ 160.390402039419087, 11.118882533550286 ], [ 160.389749235193506, 11.118372009662073 ], [ 160.390182329069148, 11.117964034486775 ] ], [ [ 160.393532047453334, 11.121961884965739 ], [ 160.394213157183287, 11.121640175648652 ], [ 160.39472105207787, 11.121819349706234 ], [ 160.394624856667718, 11.122065832687525 ], [ 160.39376941740764, 11.122871723345481 ], [ 160.393421704379875, 11.123043211872334 ], [ 160.393015039549113, 11.122605852443158 ], [ 160.393532047453334, 11.121961884965739 ] ], [ [ 160.391759143928653, 11.112102285367035 ], [ 160.392192238939771, 11.111694257777913 ], [ 160.392946652304573, 11.111960080667831 ], [ 160.393538090301035, 11.111889667639515 ], [ 160.394292634360397, 11.112155460587424 ], [ 160.394450097757471, 11.112489937477614 ], [ 160.394270513207232, 11.112985967400505 ], [ 160.393155939988617, 11.113702261613778 ], [ 160.391578937173563, 11.112601898685099 ], [ 160.391759143928653, 11.112102285367035 ] ], [ [ 160.394484651361182, 11.11781120143659 ], [ 160.39441096705545, 11.117240739322131 ], [ 160.394344063806471, 11.116658044875498 ], [ 160.39502367305775, 11.116336735121193 ], [ 160.395525194828679, 11.116510987975493 ], [ 160.396344730817844, 11.117377099168323 ], [ 160.396169534972785, 11.117858176784843 ], [ 160.395894739981799, 11.118603784312269 ], [ 160.395213620913012, 11.118925522454417 ], [ 160.39455118914654, 11.118380379527791 ], [ 160.394484651361182, 11.11781120143659 ] ], [ [ 160.383884291585559, 11.146763055804501 ], [ 160.384317395604256, 11.14635530872533 ], [ 160.385570063453969, 11.146796440914335 ], [ 160.385475082414217, 11.147059478332361 ], [ 160.384365319682274, 11.147773771088589 ], [ 160.383362994979393, 11.147421606853609 ], [ 160.383108658465972, 11.147330429779938 ], [ 160.383884291585559, 11.146763055804501 ] ] ] ] }mapnik-vector-tile-1.6.1/test/data/polygon-style.xml000066400000000000000000000001521324304754200224720ustar00rootroot00000000000000 mapnik-vector-tile-1.6.1/test/data/raster_style.xml000066400000000000000000000001361324304754200223670ustar00rootroot00000000000000 mapnik-vector-tile-1.6.1/test/data/simplified_geometry.geojson000066400000000000000000000141771324304754200245650ustar00rootroot00000000000000{"type":"MultiPolygon","coordinates":[[[[160.5234375,11.2197860479317],[160.5234375,11.2335794562443],[160.509375,11.2335794562443],[160.509375,11.2197860479317],[160.5234375,11.2197860479317]]],[[[160.2140625,11.0542139873837],[160.228125,11.0542139873837],[160.2703125,11.0542139873837],[160.2703125,11.068015249669],[160.2421875,11.068015249669],[160.2421875,11.0818158616881],[160.2,11.0818158616881],[160.2,11.068015249669],[160.1859375,11.068015249669],[160.171875,11.0542139873837],[160.2140625,11.0542139873837]]],[[[160.2984375,11.0818158616881],[160.284375,11.0818158616881],[160.284375,11.068015249669],[160.2984375,11.068015249669],[160.2984375,11.0818158616881]]],[[[160.621875,11.123213788449],[160.6078125,11.123213788449],[160.6078125,11.1094151318478],[160.65,11.1094151318478],[160.65,11.123213788449],[160.6359375,11.123213788449],[160.621875,11.123213788449]]],[[[160.340625,11.1094151318478],[160.3265625,11.095615822671],[160.340625,11.095615822671],[160.340625,11.1094151318478]]],[[[160.5796875,11.150809140847],[160.5796875,11.1370117917051],[160.59375,11.1370117917051],[160.59375,11.123213788449],[160.6078125,11.123213788449],[160.6078125,11.150809140847],[160.5796875,11.150809140847]]],[[[160.4109375,11.3163260298893],[160.396875,11.3163260298893],[160.396875,11.3025365900508],[160.425,11.3025365900508],[160.425,11.3163260298893],[160.4109375,11.3163260298893]]],[[[160.565625,11.123213788449],[160.5515625,11.123213788449],[160.5515625,11.1094151318478],[160.565625,11.1094151318478],[160.565625,11.123213788449]]],[[[160.5234375,11.2473722050633],[160.5234375,11.2611642936208],[160.509375,11.2611642936208],[160.509375,11.2473722050633],[160.5234375,11.2473722050633]]],[[[160.340625,11.3576903617557],[160.340625,11.3714771406069],[160.3265625,11.3714771406069],[160.3265625,11.3576903617557],[160.340625,11.3576903617557]]],[[[160.396875,11.3852632522956],[160.4109375,11.3852632522956],[160.4109375,11.3990486960562],[160.396875,11.3990486960562],[160.396875,11.3852632522956]]],[[[160.565625,11.1370117917051],[160.565625,11.123213788449],[160.5796875,11.123213788449],[160.5796875,11.1370117917051],[160.565625,11.1370117917051]]],[[[160.565625,11.150809140847],[160.5515625,11.150809140847],[160.5515625,11.1370117917051],[160.565625,11.1370117917051],[160.565625,11.150809140847]]],[[[160.4109375,11.3301148056307],[160.396875,11.3301148056307],[160.4109375,11.3163260298893],[160.4109375,11.3301148056307]]],[[[160.3828125,11.1784018737118],[160.36875,11.1646058351055],[160.3828125,11.1646058351055],[160.3828125,11.1784018737118]]],[[[160.5234375,11.2197860479317],[160.5234375,11.2059919808932],[160.509375,11.2059919808932],[160.509375,11.2197860479317],[160.4953125,11.2197860479317],[160.4953125,11.2059919808932],[160.4109375,11.2059919808932],[160.4109375,11.2197860479317],[160.3546875,11.2197860479317],[160.3546875,11.2335794562443],[160.36875,11.2335794562443],[160.36875,11.2611642936208],[160.3546875,11.2611642936208],[160.3546875,11.2887464868818],[160.340625,11.2887464868818],[160.340625,11.3025365900508],[160.36875,11.3025365900508],[160.36875,11.2887464868818],[160.396875,11.2887464868818],[160.396875,11.3025365900508],[160.3828125,11.3025365900508],[160.3828125,11.3163260298893],[160.36875,11.3163260298893],[160.36875,11.3301148056307],[160.3828125,11.3301148056307],[160.3828125,11.3439029165083],[160.396875,11.3439029165083],[160.4109375,11.3439029165083],[160.4109375,11.3714771406069],[160.396875,11.3714771406069],[160.396875,11.3576903617557],[160.36875,11.3576903617557],[160.36875,11.3439029165083],[160.3265625,11.3439029165083],[160.3265625,11.3576903617557],[160.2984375,11.3576903617557],[160.2984375,11.3301148056307],[160.284375,11.3163260298893],[160.2703125,11.3163260298893],[160.2703125,11.3025365900508],[160.284375,11.3025365900508],[160.284375,11.2749557211495],[160.284375,11.2611642936208],[160.2984375,11.2611642936208],[160.2984375,11.2473722050633],[160.284375,11.2473722050633],[160.284375,11.1921972558972],[160.3125,11.1921972558972],[160.3125,11.1646058351055],[160.3265625,11.1646058351055],[160.3265625,11.150809140847],[160.3125,11.150809140847],[160.3125,11.1370117917051],[160.2984375,11.1370117917051],[160.2984375,11.123213788449],[160.284375,11.123213788449],[160.284375,11.1094151318478],[160.2421875,11.1094151318478],[160.228125,11.1094151318478],[160.2140625,11.1094151318478],[160.2140625,11.095615822671],[160.2421875,11.095615822671],[160.2421875,11.0818158616881],[160.25625,11.0818158616881],[160.25625,11.095615822671],[160.2703125,11.095615822671],[160.2984375,11.095615822671],[160.2984375,11.0818158616881],[160.3125,11.0818158616881],[160.3125,11.095615822671],[160.3265625,11.095615822671],[160.3265625,11.1094151318478],[160.3265625,11.123213788449],[160.340625,11.123213788449],[160.340625,11.1094151318478],[160.3546875,11.1094151318478],[160.3546875,11.095615822671],[160.36875,11.095615822671],[160.36875,11.1094151318478],[160.396875,11.1094151318478],[160.396875,11.123213788449],[160.4109375,11.123213788449],[160.4109375,11.1370117917051],[160.3828125,11.1370117917051],[160.3828125,11.150809140847],[160.36875,11.150809140847],[160.36875,11.1646058351055],[160.36875,11.1784018737118],[160.3828125,11.1784018737118],[160.453125,11.1784018737118],[160.453125,11.1921972558972],[160.48125,11.1921972558972],[160.48125,11.1784018737118],[160.4953125,11.1784018737118],[160.509375,11.1784018737118],[160.5234375,11.1784018737118],[160.5234375,11.1646058351055],[160.5375,11.1646058351055],[160.5375,11.150809140847],[160.5515625,11.150809140847],[160.5515625,11.1646058351055],[160.565625,11.1646058351055],[160.565625,11.1784018737118],[160.5515625,11.1784018737118],[160.5515625,11.1921972558972],[160.565625,11.1921972558972],[160.565625,11.2059919808932],[160.5375,11.2059919808932],[160.5375,11.2197860479317],[160.5234375,11.2197860479317]],[[160.340625,11.2887464868818],[160.340625,11.2749557211495],[160.340625,11.2611642936208],[160.3265625,11.2611642936208],[160.3265625,11.2749557211495],[160.3125,11.2749557211495],[160.3125,11.2887464868818],[160.340625,11.2887464868818]],[[160.340625,11.1370117917051],[160.340625,11.150809140847],[160.3546875,11.150809140847],[160.3546875,11.1370117917051],[160.340625,11.1370117917051]]]]}mapnik-vector-tile-1.6.1/test/data/simplified_geometry_pbf.geojson000066400000000000000000000141771324304754200254140ustar00rootroot00000000000000{"type":"MultiPolygon","coordinates":[[[[160.5234375,11.2197860479317],[160.5234375,11.2335794562443],[160.509375,11.2335794562443],[160.509375,11.2197860479317],[160.5234375,11.2197860479317]]],[[[160.2140625,11.0542139873837],[160.228125,11.0542139873837],[160.2703125,11.0542139873837],[160.2703125,11.068015249669],[160.2421875,11.068015249669],[160.2421875,11.0818158616881],[160.2,11.0818158616881],[160.2,11.068015249669],[160.1859375,11.068015249669],[160.171875,11.0542139873837],[160.2140625,11.0542139873837]]],[[[160.2984375,11.0818158616881],[160.284375,11.0818158616881],[160.284375,11.068015249669],[160.2984375,11.068015249669],[160.2984375,11.0818158616881]]],[[[160.621875,11.123213788449],[160.6078125,11.123213788449],[160.6078125,11.1094151318478],[160.65,11.1094151318478],[160.65,11.123213788449],[160.6359375,11.123213788449],[160.621875,11.123213788449]]],[[[160.340625,11.1094151318478],[160.3265625,11.095615822671],[160.340625,11.095615822671],[160.340625,11.1094151318478]]],[[[160.5796875,11.150809140847],[160.5796875,11.1370117917051],[160.59375,11.1370117917051],[160.59375,11.123213788449],[160.6078125,11.123213788449],[160.6078125,11.150809140847],[160.5796875,11.150809140847]]],[[[160.4109375,11.3163260298893],[160.396875,11.3163260298893],[160.396875,11.3025365900508],[160.425,11.3025365900508],[160.425,11.3163260298893],[160.4109375,11.3163260298893]]],[[[160.565625,11.123213788449],[160.5515625,11.123213788449],[160.5515625,11.1094151318478],[160.565625,11.1094151318478],[160.565625,11.123213788449]]],[[[160.5234375,11.2473722050633],[160.5234375,11.2611642936208],[160.509375,11.2611642936208],[160.509375,11.2473722050633],[160.5234375,11.2473722050633]]],[[[160.340625,11.3576903617557],[160.340625,11.3714771406069],[160.3265625,11.3714771406069],[160.3265625,11.3576903617557],[160.340625,11.3576903617557]]],[[[160.396875,11.3852632522956],[160.4109375,11.3852632522956],[160.4109375,11.3990486960562],[160.396875,11.3990486960562],[160.396875,11.3852632522956]]],[[[160.565625,11.1370117917051],[160.565625,11.123213788449],[160.5796875,11.123213788449],[160.5796875,11.1370117917051],[160.565625,11.1370117917051]]],[[[160.565625,11.150809140847],[160.5515625,11.150809140847],[160.5515625,11.1370117917051],[160.565625,11.1370117917051],[160.565625,11.150809140847]]],[[[160.4109375,11.3301148056307],[160.396875,11.3301148056307],[160.4109375,11.3163260298893],[160.4109375,11.3301148056307]]],[[[160.3828125,11.1784018737118],[160.36875,11.1646058351055],[160.3828125,11.1646058351055],[160.3828125,11.1784018737118]]],[[[160.5234375,11.2197860479317],[160.5234375,11.2059919808932],[160.509375,11.2059919808932],[160.509375,11.2197860479317],[160.4953125,11.2197860479317],[160.4953125,11.2059919808932],[160.4109375,11.2059919808932],[160.4109375,11.2197860479317],[160.3546875,11.2197860479317],[160.3546875,11.2335794562443],[160.36875,11.2335794562443],[160.36875,11.2611642936208],[160.3546875,11.2611642936208],[160.3546875,11.2887464868818],[160.340625,11.2887464868818],[160.340625,11.3025365900508],[160.36875,11.3025365900508],[160.36875,11.2887464868818],[160.396875,11.2887464868818],[160.396875,11.3025365900508],[160.3828125,11.3025365900508],[160.3828125,11.3163260298893],[160.36875,11.3163260298893],[160.36875,11.3301148056307],[160.3828125,11.3301148056307],[160.3828125,11.3439029165083],[160.396875,11.3439029165083],[160.4109375,11.3439029165083],[160.4109375,11.3714771406069],[160.396875,11.3714771406069],[160.396875,11.3576903617557],[160.36875,11.3576903617557],[160.36875,11.3439029165083],[160.3265625,11.3439029165083],[160.3265625,11.3576903617557],[160.2984375,11.3576903617557],[160.2984375,11.3301148056307],[160.284375,11.3163260298893],[160.2703125,11.3163260298893],[160.2703125,11.3025365900508],[160.284375,11.3025365900508],[160.284375,11.2749557211495],[160.284375,11.2611642936208],[160.2984375,11.2611642936208],[160.2984375,11.2473722050633],[160.284375,11.2473722050633],[160.284375,11.1921972558972],[160.3125,11.1921972558972],[160.3125,11.1646058351055],[160.3265625,11.1646058351055],[160.3265625,11.150809140847],[160.3125,11.150809140847],[160.3125,11.1370117917051],[160.2984375,11.1370117917051],[160.2984375,11.123213788449],[160.284375,11.123213788449],[160.284375,11.1094151318478],[160.2421875,11.1094151318478],[160.228125,11.1094151318478],[160.2140625,11.1094151318478],[160.2140625,11.095615822671],[160.2421875,11.095615822671],[160.2421875,11.0818158616881],[160.25625,11.0818158616881],[160.25625,11.095615822671],[160.2703125,11.095615822671],[160.2984375,11.095615822671],[160.2984375,11.0818158616881],[160.3125,11.0818158616881],[160.3125,11.095615822671],[160.3265625,11.095615822671],[160.3265625,11.1094151318478],[160.3265625,11.123213788449],[160.340625,11.123213788449],[160.340625,11.1094151318478],[160.3546875,11.1094151318478],[160.3546875,11.095615822671],[160.36875,11.095615822671],[160.36875,11.1094151318478],[160.396875,11.1094151318478],[160.396875,11.123213788449],[160.4109375,11.123213788449],[160.4109375,11.1370117917051],[160.3828125,11.1370117917051],[160.3828125,11.150809140847],[160.36875,11.150809140847],[160.36875,11.1646058351055],[160.36875,11.1784018737118],[160.3828125,11.1784018737118],[160.453125,11.1784018737118],[160.453125,11.1921972558972],[160.48125,11.1921972558972],[160.48125,11.1784018737118],[160.4953125,11.1784018737118],[160.509375,11.1784018737118],[160.5234375,11.1784018737118],[160.5234375,11.1646058351055],[160.5375,11.1646058351055],[160.5375,11.150809140847],[160.5515625,11.150809140847],[160.5515625,11.1646058351055],[160.565625,11.1646058351055],[160.565625,11.1784018737118],[160.5515625,11.1784018737118],[160.5515625,11.1921972558972],[160.565625,11.1921972558972],[160.565625,11.2059919808932],[160.5375,11.2059919808932],[160.5375,11.2197860479317],[160.5234375,11.2197860479317]],[[160.340625,11.2887464868818],[160.340625,11.2749557211495],[160.340625,11.2611642936208],[160.3265625,11.2611642936208],[160.3265625,11.2749557211495],[160.3125,11.2749557211495],[160.3125,11.2887464868818],[160.340625,11.2887464868818]],[[160.340625,11.1370117917051],[160.340625,11.150809140847],[160.3546875,11.150809140847],[160.3546875,11.1370117917051],[160.340625,11.1370117917051]]]]}mapnik-vector-tile-1.6.1/test/data/singapore.dbf000066400000000000000000000030561324304754200215750ustar00rootroot00000000000000t WOBJECTIDN LOCALITYCCASE_SIZENNAMECHYPERLINKCCLUSTER_IDCINC_CRCC2FMEL_UPD_DDX_ADDRF Y_ADDRF SHAPE_LengF SHAPE_AreaF 1Bedok Nth St 3 (Blk 542, 544, 545) 5Zika_Cluster AA20160014 DC383BDC618AC696 20161130 3.80795113000e+004 3.48141038000e+004 1.83437848274e+003 1.82596539949e+005mapnik-vector-tile-1.6.1/test/data/singapore.prj000066400000000000000000000006401324304754200216310ustar00rootroot00000000000000PROJCS["SVY21",GEOGCS["SVY21[WGS84]",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",28001.642],PARAMETER["False_Northing",38744.572],PARAMETER["Central_Meridian",103.8333333333333],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",1.366666666666667],UNIT["Meter",1.0]]mapnik-vector-tile-1.6.1/test/data/singapore.sbn000066400000000000000000000002041324304754200216140ustar00rootroot00000000000000' pB@rlC@p@hj@mapnik-vector-tile-1.6.1/test/data/singapore.sbx000066400000000000000000000001641324304754200216330ustar00rootroot00000000000000' p:@rlC@p@hj@2:mapnik-vector-tile-1.6.1/test/data/singapore.shp000066400000000000000000000011741324304754200216330ustar00rootroot00000000000000' >Clr@ףp@jh@@Clr@ףp@jh@@.!@Mbl@Șp@@jh@L @/@= g@Sm@L @ܨ@?@T@ףp@Q@b@ގ@Q@sY@~@3a@&S@~@ @my@@R'cu@TR'@X9Ns@|a2@9r@I.@X9Pr@U@s@rh@lr@/@Clr@-@Clx@@K7@@Gz֐@@Dio@2@J{@ -*@C@镼@+@@镼@Y@/@w-!@HPT@.!@Mbl@mapnik-vector-tile-1.6.1/test/data/singapore.shx000066400000000000000000000001541324304754200216400ustar00rootroot00000000000000' 6Clr@ףp@jh@@2mapnik-vector-tile-1.6.1/test/data/singapore.xml000066400000000000000000000025751324304754200216470ustar00rootroot00000000000000 103.92383995989066,1.3312732063470314,0 103.92116959172444,1.3293149668842956,103.92651032805688,1.3332314458097674 pbf 15 0 shape singapore.shp zika_cluster mapnik-vector-tile-1.6.1/test/data/style.xml000066400000000000000000000001521324304754200210050ustar00rootroot00000000000000 mapnik-vector-tile-1.6.1/test/data/tile_with_extra_feature_field.mvt000066400000000000000000000000361324304754200257250ustar00rootroot00000000000000 this is the name0c(xmapnik-vector-tile-1.6.1/test/data/tile_with_extra_field.mvt000066400000000000000000000000341324304754200242100ustar00rootroot00000000000000 this is the name(x cmapnik-vector-tile-1.6.1/test/data/tile_with_extra_layer_fields.mvt000066400000000000000000000000371324304754200255720ustar00rootroot00000000000000 this is the name(0cxcmapnik-vector-tile-1.6.1/test/data/tile_with_invalid_layer_value_type.mvt000066400000000000000000000000361324304754200270030ustar00rootroot00000000000000 this is the name"@c(xmapnik-vector-tile-1.6.1/test/data/tile_with_unexpected_geomtype.mvt000066400000000000000000000001021324304754200257730ustar00rootroot00000000000000 this is the name(x" this is the name"cccc(xmapnik-vector-tile-1.6.1/test/fixtures/000077500000000000000000000000001324304754200200655ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/test/fixtures/alpha-white-2.png000066400000000000000000000216161324304754200231430ustar00rootroot00000000000000PNG  IHDR\rf#UIDATxIu&l%%1$n]۲-nRZbh-VY [ڲ + TARCZ?39393{}d'O6y̙3gΜ43+._Ťq])/$0S3 om?SH{ÜSs//vۃs`Jz/+W/) v ~v[:{T\qdmWn;t Wg0E\u r .+0+ pњ:8=s~k寈~Ea _~ ~ώA)]<3F;eÍrL2mSY <"Oȱş(oI軄a.iS@< cz\6c>L}}&w8 R8yNC uaj:,f(wծrlO>5!NŹwgF^vZ@ uA֚[pLVşz_Ծ5cտ/ͳ>j~;,3`@k&ewmJmNzP l&~Z^%(F6P>i֣62^s ,O>?> WWGwxWHKb?i F}~ e HuxM8=(b Ba*0p(  ?پ_}URg~g A&b47 Y0} ᠑ywWtϺ5xyglqS~V7$̵|,8y!Udfo D!N>dHv4oW^ځANA_k(~wi?4aoUYWLN 臏# F`e)A fd66%7 Ѕ@g"nÉ^SÏ:$ЧoV$-~}h"PAstDV@ ̥yM{ϯ ѿV~!!iDbQ2hL\*@P; (y ( &pĜˣ #?~_#?/$O] [c:OB`!(#LM qP1哀1 }PRR})w?5]meRlBONGP݀L`0Q_%: jpjȲT 1RHg y5ÿ,~_G+[> YKGc;BP4 aK.G~7 յ`+Ⱥ'a~_ v~JIU(?%G}: 1,@x75"&p.{#rN>5[W|Wn]}Kk?rq2O^\|l|Scl،e'r3F0n&cfjqܚT@P@CT L~Wgraq.׃}/z1||p q/0h{`$@l)@Lڋ*Urn=W"_\GV%OXl>/sYTa0F`ǂx3@A DM8.-7#"xcKkA>߾C_g21g/@n^~,or$m @v q.`qp xԄ?7^)^Uqo?F;{|_o‰|svЯ2%&p,X^H ⁐L@"z-|c__1C_G}bR|;᯻Ũ@L @m@f0N꿫` p"ڊ_?|}!~w{mV=B_+-fwM #5] Șh~~=~q$~꫽-+)\Xn<7t +ۂQ ȞP 8^Я\t)#ngn=K=3"W#<{EEßI ټ cqrэ&P dۆ<qސwOqy1S^9v(|f0.>Ky)w!79#Ob7`] B 3okO-Z[aHÅo͖b7mc(~cGVSg*";q7|/AkK-3m)Y@ئx([jqWp8jĞF&9~\2}ǷV 53/] _<ײm&0& d^xHsG ?p$o=Go-8ZpK=<* ?OݹW]\Xl|hF~}B!\ g+`g  g 'վRY>wrWyp{>kzE(xh}lKL [u`mY <1g/{b^ _7'fSO?OHi￐‰102 [D4e d>̻Pl=Xi~ŗ ?>Snug>o^R}.|􊂄 }4M ATQc1ШT \2u`\pHRjH6^#>ۭOpq?\畗yBOtjW<} r'xa|6.3)Ȏ@i$N 5 @p Ik1Ń~5;?G|B)ݗre )|?f6j^fυq0c*≙|CaJ>'D?b?[}_^I}$p?=ůL6h)!3nVQ5qʬ5pOqy9+tN^cĪB_E.Ow=m׆7XM ! " HƎ@ `=` ς@ RYZEnK/x AwJ% }$~υ6(!0SgWz@, lsӂs8`O`G#<<['oyUs3ᓐ(q@ EȖ`>4kF3n0xlbzoᢎvL?OrS:wn}~Jj}疌 tFNpY@v'b.#S,ns0 hw Sj=_ȓ{9}Ztk*{( EUA%/7ƢaeY˩hy 2|x<(C5dm>|c߾\CşZv7r{[EBUۀ4HD@c^P`@Ծ6碷{+~Azo^߉ތeQ1@eb;-Kf@`3H0q`0c$wJn%q3h%S^sZ^cٽ>fF67f8Pvʣ4LtF݀s `z |x>[gmb9-|'.!XS$Z.d'S# Am:C1z;0qB6X8y>pY?mL0N{8Z=+b^4ћH|-|VܣžJHŊy&~f˚ $#( B AٌhxL-#GGw%c=e7.'WG+_[lD6m|@gfedmw,m;ay]/Ȇp>;^W+7Xcs @e  ]Ls0~JXYC~vi>m{ $xEnk6u  m@ ڂ s( P_!p8٨jаMQ7|-zqdױ^47}6a}f!) 4"VPHφV01 3ya_/R0f[ T}7>T =8[LG KE/'6ƅ1PE3}?5[d Aׂas}UglW)~*꽚u ӹ}V7Vy/x%b'x+ը AvE~I(f;0nLuit3@߿w⧰&w 7g/> }зݏ}, 0#P_N, N vw  (/YW G>OY{nqk,uq>~Nw~},Bn)`hHY@f @|9{@c5ʳ0jKݳϻY}IJ 0,`lrpLJ08:xgt:.|)z/ $գ~nyS3M@dn~ pQ5 yo x湽<);]&f &`mةvHQaHۀx`^ `,j0(ê4}-ŧvv%| mP}oXo\vcA.f M͊ ane|TelR :o2b[0 .6K>=WҳuŠ?&z͛c0;A;[ 年qhm2`1#] $h8*cq(tR%|^M:2ע'E&`lPY ?  `bP5P5 @-@@&T_[pD.ǪOccn2J0hfBJ0X @hȄon|_qDN.|'yzWz.t/rh,30V@X^N A> pp, 7\$ {F{n&*k'7bCE#h5P1hp@Ona @ *֪K[w7ޒz)/|L3&0 3XB` ud8 ૾[=oeOkb_?6"z4@TI]DE@\ /_ nŎ@4>k>K)՟QK)-$E~ܖ TLj8ih %Tu{$~(~3}}c?B9+`&P, 6`aFx  " `l!q+~Z}V[UGtk+ gmMG MzmB],@.@ d:@ p4U??ӗ~%bo?O3r#8 Dq Lpϋf6 0 L\Xlg+}ISag; Ȏ4:,; pd$`=u+p*P RL__WVzSԛf3e,@71dn~ 96kZsjNjǍZxx6(ʊ_[僰1@x2m Fda> @8zp 8n_E0.Xg _}KcFj0Ϗ[ oi;--b_=WgؽWc,kȾ}}M&aQ9G@z4M=>1`&@_Ѝx̼of`w_b]2y|Hv䭪kzszl_~PV{;$0dK>PmzzwrtuzwX`\OoTo\0c^`*y߀0s5 -Z l}{c]SMIENDB`mapnik-vector-tile-1.6.1/test/fixtures/expected-2.jpeg000066400000000000000000001310541324304754200227000ustar00rootroot00000000000000JFIFC  !"$"$C" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?iS ƥ8敐? b 25d!`wǒqwc5O80qDZa,:fu٘4:Rh,BSbMƖb0'HPsRyh"L2j2GSMpKrsF3ր,`eI(4yEŽM@T49=)ʥqL @O Q`N \ՈcR/*lP2"7n(0с4/ck*ÞHc9*~q:GaL(X24ΝFE=ʄ{B_#4ॏ>QRo.VIFY48w$Ӏ0ڽM4Niw%˳IXrFj'a~T8n¢94!FErcOhBܿ2_}(qpқl\=L],X49a?Ύg=KP3I߭3nJY7L`#gwSR|@ӂ皑"ԫ'#4$chA`EcžJ҅ 9=4:EQh zZ?CQ3BGz,;O.,z}c'E@UOUy@XSI!^^¢/Ey"q#sxoSRĆDGGtA;.k6S#,QrOSH8^K1ڞHacycAf* 硡!܋y401}iwOjHqY.Z oLySֈ(ۅOSޙv$zRV%' ybqH? i \ JS3-JzZ s:z 9945X)x44I𦏛2Zx>ۚ؀3S17fg, Y cpZSSRM<qH ,.2{Qn UVAܚq౦=qIw8YXZ* Q<)mf \SF:LS34dӰ8H_֛z Aqր%JqM⤎ &p0ilsAy @Xu(4p)ʹ< B@)=oFFe#|0su?ZY>u<X.@>zW=LU*n͝Tu*+pO5Z>p)%Y׃_7:jJe})J.-N#nJ(#^)׶6S/`xdb ~^ksX0*gyҥHҢ&9&f2Qmҭ\F] )-.GJ !PjDX5P;`nxȑ{fclc* FTIS" ZEXCJWF2-i쬃 ')2í2JKw!HFOᇭZxK?^\ȥbc5S)d>T 2DyS2@$a8c*vсQ$9@&La+TFֆPKq>|AO6J mSIb)bC9)1݂sHX޹4NM- l=Ӣg8-Ue8!҆if͜*1wsGs@dҕy^ Č8n *r)yXzzf )ѦF}(}x PkcJaLQq؇Jh>^odR UX'C$Ē;RH$ nM.⸅liLT=if۴޺M{IZ0ȇEJ.7RVG=Sr 9:ȇ2`EiZtmq9ă'~k#c ݏq<|SVZ>|r4]']!%WKjaqes$FU8j:Q.T^c8c춒$7p1X267Y_vG}ΠvkA!in"+ ]$ҧ)Xn8^UT9$bQtM);#ҼQ~A}3Ͻ7KvܦwX=W]>ݾӤI)+*$u5L6'~O[[TG-Z}2܄nzzWAw|-aafW 9'{|܂p޾4y5+/ݰ sT:EAr/F45?)XjwPޛEPF<9oOL%H~~zT(1&E~(7k:BW\}#:72Bz6*Q^3±iijQk|9%Ԧ A7W~Z78鯵F4+oNex Ҟ~lqACX'+c=h$=)1QAATHV bs@qM%~^pzfߠ@Ev!fg4,Ѻ4_  q򞴙╎㝡~QNgzҕ!*AqւCtKrةZS<ףç%) `MjF^|?°5M?r%0V;Eq֥y -U>k{kI}ǭofl.ƒtJڧ­o,q8:9"*HT'57Цqn Hxb:GVKa$V%汧U:[L̇^𾡣Bf8#ӼA+xY-Rܼ5&-J$,2 r!΃ulL2HU O֕_rZIlu,<3meG}1#G+]@[ s` Z(̷GYWVRZ9;~OMXm+Y767,.9;=KIF6}9JBNpaNߚ=y}J 3Tr6=)t5sianLh(f]t4kY W7ʻgz_Sm'X+rV@;zⰨKӽN2j=TMR% {~5zk/,\\m76}?:#nF+O2Psjz颅GY@z`W(j}fS:rZc?1;NOj֗dk^BrQIq?+=p&5siuu"2|8yҳ~pN{m`?t)!>Ul6|R$*{ےzIf%ȶ_O隚 5Q |O(vm%r;Ms%ӳ>Ql $?/4/~Ee2ʱL(%OR8~5Fk]Fج-`gs$SvW0Aي&gN99\޹i{`X+om4NFydnO>iw7wKtqzSIJQZ59/Z@71\MsX>/aMCOv?yGҽ+hX&cjy6̈́,\t1UY0cIZǜ),zYep sN##6yh(FszzH"\*#l%֞#`?yNGSH7) N#mUL 9ހ+~e;1;f<6W$z9悅V?t׽ A c'ܓQ'đOcA$lA``iI`f@Q@M-& (yJUQeOb;K/6V;{ Q6Ӓibly`|a` ԃ==h(1HB=)#)vE׽!GT}{nnKx_V6i[q\҅:.ݮLgRZQ}|Zxl|v0qIӬB@cGkg=8A3|IAojRբ+rv9kOVw #(\d RAϦ1.-źG>~U}3p:.z.,.@q޺0wVZr*4Oj+JUҴ4a1$e& s5xbhj(8 c'=SSݔoqUbK:$,?R/ RzPK'(EBW8Y*Xe]s^# 㿵,l#wM9R$\s@QR3ڐ*bAlDxݹjmΟ:2b7r徥)N=:} d2c)6W|~V@pe`jROsHUiŵ:4V6WOoE+/Io%p~Ĩ?)u^b(-!)^u.zo[Nhya./@G 2)Y~'Q tYVXfDppH ڛ8Y\DZ#o^9AEsOuK9.ki$ҋcI*O@~Tɺ̀Vk;}[KYC0TȦqM"n:keb=#p*f+SN9N*BvMQ֣XI>H Cu \ű펴=F8%KɌ`~W4#.eԙ. Gy=eݒ x b1,}y' ^$EFzkS];_8^>S<@҂3R |Ҷ=Q X{+#v:2Efo=ڂ>Vr矼)85_QB ['ڞX=*H1,@GAN,sQK&å5G$3 5JyͽK=Y|_T\M:wVt5j"O1>2N}j4* =iEJ(PEP)ur@-(QSDThS?1ơs ڤDFqSޡwf=Է»$0zRG/\ѡukHz WdW7P,0,c,qU1lD@G;Tq=Ou,3vhԜԣdtVE8JgFfӦy"v~8c?LWrs)|+:.zۯLe9sSZ;p!RZv056}2dlbLdOt;x<u9>x^JV[wpjy2eT Î)jjeoQ}N('m.kڰ[tH0z:K{9앁a#%aRxCVTmcaTnu䳅& IdL,# >P,qXNM-Y=bF%3C#+jc2E Fr~!g RE"5ڪ۩<[ ~osV#54އ)`QEP48t)`}"y(,!V~TOqQ@sc9<b|%G4_oMO>UjѣiС*̈2ب8'V֓yg{yaouf(0ٮ]4좌;9>43+3N}aNŽ)<,߿zݭti^ak sҼd'ޤ{٘SJWEbi&,btս_昛ٱIei RY_}Ycx0~PjwLQ{U=v84B%[E+Ǣ 0 }jͩam*j"VoccVѴmg]H(%}b,lTݷ=FGӵ"&ݕ)mΟp[m#zTMS|} .hYHRp' ?:M,&F@gh: R3,'߽7ƽ=( cs wָq;_KY.՝ir3\9%Ŏn*~G""r>H=B(FB[B'=k7Wt:Yl. jXg<\d읏Frڹ[}~f~'5FB֬_my"]89p'W·} (A$|j6~PE`aھGL_mKkx!-YB|ȚZ Uc'PO"o h]rƠy 3Fwz?.VWBׄ{[|(VW'ǭuQQ%ݻl͹Y@ !ڴ=dWoCҊi{ۋ0Uc6MUǥTvl| =FyUo1I4́6AzI#ڕqH4 њV&4`qQyRzfˊh@A79;zVPzmqmpkP!EcY ´hV2.{Й'1.Vym"MJ:Xx_~!4'llqb:W{%A<]*e{o~6^1zzRZ惞ƽ3yU2(W'?z+[k 6A BXG-uc+'%ZR6fpӞL, HHd29QY,,|7eykҮ,o.%y5 vr'iBG mՈt_ttw=[{dy6m+fXL~`I?&[h兙I%1bF7&qƢ/a(KKQ>Z.|O%\[0Oˌ Kl YhDlGMNx!iC*HF(_Ooj5g| R4HD`UkoMnVwv?Tqx[v\Σ\h-Q"xROBfZBmOSqªm948v+ԌRVG&>lt={zappg>4J%r5z^Fj|c"[kU .@ Lۑ)y\;onw/AŏH#,z݆oǜ2 EI2t zJ|)'挞;r=V5u>;c)qZyR;prАt[w^[$ ӼU}+& On*!$N,S=(2) xA k:Pd*0)!'vlj$h@m=j7n:$40, 0+&#upѭI:ϭX+6]CU{k-.[DAT['xIY.%1vRp=3Yk"3W|nQtheGS }ǍLyԾ``שCN0QH@-]ǘ) .OAUӵ5g>;Sw Q{JFvxH*֜kܽPN¹)S#5)4XN)N\ҁN\RwmAEƑ iUJ@:MbΎ3KHE(*O 8cҀ-T}jRG`sU(9iR'Gi$^?)MB.O9(ٟzq^o9DI%g\F6\߅bJFqsS\j6:`kI~i,-Dee:Zڵ([33iuɂyáU_bhbD2r0}k:XI:6vK".uI-EllrNY(Pˇ 61:؝^z+֦dOUtWՕ׉a$ٵ'bJĻx亚H,M#^T!HFzWNiǝR_ίþ$I ?>R43y*nZDf`17aJβ[_q{DcW +?KkB.@oBk}rsvz1UlhXBnK|XԪWfzjH 2#`__^Ge\wu,@⼲:ݣf1A)xV2VX'8X:ϪgGL[-fIbMҹ?ZZGizDC9C5ȸVw99@y^W׺%ē .mC8TR{#:Jn1ݐ1LH(8P)Lt@KOS43R1(=hv$}i0eSpj NM&1BO^jIZVj [#W< M1*Im!n>{PԮobl@||nGg6$2F֓i &bꋫEq ɗgߓ(^~n8b]Ϥܥ: x}[^[r 3?r7rr#*wwmn3Q-T~U$jY*?7aP$x'$MzlPqLT1ҚzP`qJqө}(Q@Q@ ҌQ@ ҉-$)AJpS҆FD=H **x.ZXJhL1KJAր9mO\RUUjhUJJ80!$*m_xmðj ]OÛmDHimU&&m+F'nVQ8< c@?JHy$jcOVYdGcSsnʆ\dWih@.o[Ey$eStj6C-+HeӊpxFn1IWҳ<{`})1#@ 3]4zl?h&B.'֬Zi݋dp8*\~UO㫵6)%-WѴH]Fq\}ZTN ı!LɎ_Y~Eť9:*p_u$^&ʜRLm+OK[wD#9qkMM")e\Cg$h\n\ 6AQJ;C5Q ?zM'}#nO-tYD@_Aky@G^oŮb=u{ԐGEUO?,5ԫxKnօ hgȌß´|Cgc çXX? [{m¶ܷ$3Xѻ^ӴYEp2>9"s&"8hBbֲ&$kU~if*cL IcOn IJ]FX7#ƮYB䓐3z^jgKggElg&Up(b|,t7GfJW5z27$rH gqvZN+hOz8JҚq^2`ԠeSG4Ȣ1 !Ef m,{9PIʏ֔ɓ( cСDBˁՀYXߏP+/yUPoO#}qjFmKBNPM,i 9DрJ\TM iR7RQդ"G'ҖIg!p^IJ[ڲu9#iZ9XnqϥB@1.Cڪ¹[$6S!#n*`ci=j+i5ޙ-mW/ԠxApXɰa֩Igu#=T;vK'zR'uuM;>>"tlZ#F PV~@g9kS8uZ9 UXs ISwʥFm4"?4: 4dcV9 U O/?ȧM$*=(li^[8;JHK(aS+|Qm`mO\W)k*'R7lk^!+BW (1 ( 9l NbxKјDF v.7hݹI8u~ K/nsXSxQKU4Ao:W5ٵg-ZO Ruz-lD1G揉,[m)hCms G^2 E +%C*H "_aCI4YPU| =On} huwxDQ _RҭuVH* n\}ZU1FJ89^\ױMef=LnsUD`W p1ZEݎ<8 s\+ؖ-#nCGmar0F֝RKLFЬP9{Xb]yv8^K {){C]z|FU)776,WI g_w^$AiK% (h>6 +[#{lBbE"1@G=iM/M'NԒQ|Ǡ4Kw%(?mi~#{|)f{z:-BMycS݁[a!{gx9;=6)5ETrFrav{ue1jW=kqҡeXfYkHȞsalU!7́dVciĮ1H *+JJu[ȑn g9z}?,(AmWQ0V#'$K/$w(YxЃ< ˼ioi'mxB]&u3ڴ!}N8\NX@WSyW127Q~ZU)+iمQLAE>i1`3p+<)=n 6C3c<5kӤ'cZTjUv Z[{fAzMoo(>5:f¨P>G^t߅|lEJһgŠC0@Me TF:ux=M.X14}+%w;wIepU?7Q@C_j觊xɘ JjҊ8<w/'<buP#K2 v_QFhI8qtJon̎ 1=1]̪Zye)/wFyAvn z.̛RxUgڹ/Mk(ɶӐ:r:קK189=GW/NI-Sg:QK1M͹B,~\YAZ[5#S }*o9i ww$[5}9uijs^+~C%#G|;;)'ۮIlcY1CItSrA,XR$詖\=1W}-]ۥg9`;hBFXz/7o9}{q}+kI.NzT9 ~SL>VM0;q޺<)QHN bO An\~5jWWW_BFryS۝9^+ 𰤢R6Mx#]hlRrzQ YZ-mo"Rۚ z+B ȬwV!llsǰ85~Xe|sީxEKy[8=q]T0!Uo寈*OoFr7R R}5^j1ya*XgKe%:w`WqiZD]S|2zw}+T-N[=<6"Z_dV^+R%0}Q5[c=˴]Qa$j(^wzMd!B1f#Y{)s%mX]١WghϐќGֲu(cc-j-!pqմ2+_JK[am:eF1e'%czя#%J!X}iỷ THr2}<^+4ۻШE#({;n m @VM5KTm{{+mXZpӊ*8p*K+ZPsNy8+2ĹoLV\2LB6?[yq qTA \wxֺIhThpH) f`''ӥ>F*Of월I)ڙ\ ?(ym 2;cٌŽ1yǥfkNo} n60$V9ʌR-9㞹{3laQ+ NGpJ^Cd:.M叠#.z5("nl^^ ZF%bQjkp{PIgm kc)pqP=3Ҹ]wDҤ&E/?,qW 5Ln(#ӊFT=y?*.tfY$+E˪^ H-#夐lw$LElHq9Y ;\PjH^:ޢ$Ξ'*ۑ{tȄ9׭9qi]8\O7-14=yyyݦoFr|#?@zկ ͧEve3rupgv=խ͹Thy`'9_ԔhIuc+-'͐nXӵr:-:UXKuT5*04Xa tҭq{)\9A.%^M03(^(<::e:vRSKC#GD ʪ}9i<K9g@^ V֡m0)|{+ Ymk@_ַ{Qk~=!עIJprl8ɯ0`C9^jzp,pc OyL718zyg7,<ӕ6zծY($<qjw_gR/!򡓩 =yvmVJaXdwu]j7fV=:9Մ)\ y㹳"vHGB}p$Ed} oe%n`m8aQ Ex-I}9sܼn sz\̐242ȼa+/5!&!.!"'xkt+4 (yzrX c+cgb jk^BT<[\?J`׮xnQ#$x Tw{61W,wy\ӭx+`3ڇSk&s c^ڠĒJ ojGUzjͻػzX!#UqD #~5+h6ɝr0Ed ,c"\paJqZ@҂ ܞ{ک:6 )7#;}kDڵُ 1&`,\Ҳ_U$(|($5I3##zԛvvCVvc 93$;0(k9/}ƜAbx) +zj*B~a;sypg$ )9$T3z%f (ғ;]O_j_tR =STSU"Eˎ1c5m{ikX{"Gi$i;IWM" eOF5W/h|Z2f4T8gJQn}WSEwbMrGҹ^#'{bZEM QHEվb}=Ng 6 pN:dZEY0H$]l'1$ep7a3Ycb]TvyTibgk`Pd9~Un}"Uzzްm5ékB# |Ã[-"]5b#UI{]R.GCgig%̊Æ҈<<&8* m$23\N4U !I=+4^nf&@w@g} Xʎ'R+gRld6*2zңX"}#G O?ZzNx9L A.*"(N=ZI*LlH?{+P(H|҂S\ҹEV pG?lbXx`S c3Sß&E`Ta9Ǟ%1IT, *odAl) vp栛 U0P֗R]@. *#Zx pUey'Q[cp 9>#p|Yݬ+'  㿡`kб jM8ylj}=}vT<abUBNҐew`c=3ZR ,AnNy鞕(҃H2t;{&`zqڗ5" ?7O HGҌPP o<(8=ϵ;!oql`Bb;N->0zJTf-FG޽A:ư5 fe{xo'z$n 5[}&Yn)r+RʨÒ hJ5S&&7t ]Վ@sV⻟vedTR̠p}+#+ׅX{Btu͝N=+wԵH dnq.t{] :5n {2LGeI>N@%y :XCS' *9ެޥOpiA 9{\ǝw\SCosmxlj.b'SІgT^*aMY&)d3g{W%q<rL$@ta^Jt]}O zxr~Dl$G9f;UzV#XXv9ʾzX'kh} <Nkk %76FMԜIRkEDn$D ! UO8=+/^kUVː;dU-%-;25$/YӜy) @EPNf_ޅPtĽpJA(EQESnߝqZ kάz6注\v.2KuqO֬ZE$@Α?5]Af xWI!CH#? b֭8#]Ʋ%W'g8~{aLQwn zzsX0rds-")%VDV/BILUykv0=Ϩ-ñ slg_p%sӁ/47<ӡF8n#FtUPUt9wwmb8=sV_1/'jMQe"KXiR1s<\R$䞦7t_βƣ ]>t:%-'p#9dqI`\ܧTqU!e{I]ߖw9b}i\wjO]i$fwcFeM\gqrHuoPSCvDM7ݏm9# ߚkL^MHBnv's$gS!}2<NИदyE $i!do_qǼ$@Wc{se!{iJӭ5 [L&wgqcpFZlv1﮻ꏴ;ʞѱp$ kچ+ٯ$=FG9?i5ҙH+3_7ZM=UcR ]ɖ!j3GqOtdF);18P:`&AJB6 v/!{VܐiB VU@nHpƒvBQNx^s[oǻ} 䃸g9_ig`<оdzץ`,%IJK#f=׭C''*%mLZy`6힋gq%Lk$5Xؓ/Qzךp[#+85vU&I zeN5i5)#Kk <씪qG?AYRYZ,\P~qr~F^%RG8e1KB}8&2\Nqm#MSsn%W=;)rwҭNy1%#Y!X\Mu,q21}H|Ҥ9F>e>+8h,V!ܹ=s$\ N1۴WBGA,Sj!(KpXC GAe ƥ-cvDj2H<^dEgΕ9Ϧ;Uq6; F m qj;f:qIZBQtT. <AªJD+.sHв]5j9B67sҲ$s=jtYH3AQrJ2MOm.ҙ㿭aC3c ǦkBz`m 6EpB> =8rk*)|OVI z⃢3OsycF8_3/Z,ܯU_]>k7:l(](RM*aIv<\ׁn-$CD=] dƵYnRtMOIp\e5%3}%|Rx ym[Ɇ\zc]]i7,ΔT\1J rp1ךMuZylR?gljT':hSn[:l8/r;VVmt}{P!QQ`Y77Jfr;ҫj3\0Rfw#*5/iȱI7’N\nN_*1;՘|hOs+wp܃L;g{ԽS1 D Fwcҷ/dK{屓1XQRTu0ⰯEU5Uӗ:9 O)7cb#w_gv[%@bGl` k.Rn-`#a]]CUO5. nci*IP.߅|*=5EV6oR XN9K #b1͐ lWx_#]gn"wڠM|gJ4UVR=ȈN쎵$ < Xrv\T Ԝן8REG# xq<iٻ &>ZrmtYv6JwgZS(S儩8[CdS=AH=jL{ ӨVv*jWSQsL@jtF99>\s=Tm)Nhygao+j9bR}ήMVhCq*Ĝz~U{} Hw1듟&U.;xxv<҄vCe5T Z(̘ziɀ3="8=kKY7?5aS 79)uO9U N=q' ґNWziGLw#ڞ FG@x4sR|F7uz<+{s-[EW;tc=kcp[{*i$v^ SW%mtum;sm9^VS3q}ğLRZ̴mO nDxF@zlm+0S`d~KT;5gȇ nn"79@<WO='ҳlxmZ ьc N)I Oh=vO&"\yfߞ+EQ3Iʌ A[*<1JZ)@#o_JvH銦I>wX)XYT]8⣻1_ҳ╁Jy sUFR]|J L79dY[#m_*4NsqV*pʬ_CםJ2Mqj'mM?9;^:|3nmGoʣ7xe;Ascּ %RNRwg1,{qԨIa 8 ~ZP@?7;W5Rϵ{W ؂LYiޜ¹c֣Yd2@2:%Saזvڈe2 v8W3؝= U8lWtdh4ks}mGC\QoqV9V`FAV})ϽX+*8Ljbu#"L$P)A8_ƢVZQnU\/ӭZ@0T#Tf#'hC+H1=) I\.ĮG֘.>oϥ+Jܧ5rGQv VĿrH`&[>3l(ϽHTIn,p>(9ER9`~5CD7l$|,i猌5KhrUJՎO~Ғj<ۡPZʾY|[<Eƪ-oF}-aa H! >QGz[n&mi eY ?dniH*i4B%qLx/SU@1T!ؑ 8<5IXMfz@Nxzd.t><Ҁf.ӟOjb"T%Jg8}E,yqӵX#G{Ol`rG̀q a2FO҂Ic*XU$𽪲CiQ€OP4,VSQ]$0MŶ\q7>3ƌ9㊿j[, 4{8b*IfXy:KG=lx/ n>LA:jw}c;@! sPS2SPU'hW/&rIqE*GnO$qּF]ޭ~h&.ɊAzOlZ(7\fN{0ʙ ܁1PjbiMԊ{0}:ВLUzTRE[ԪGL ]g {\;Ivs; rʹGOZpF0ץE$k  v9SMԐo pB4b&sj8aYר+5<$xj#4F>L~55c# F8Z2vN=鉴*Z209a5+ڭm799GbvۥmCRnp#SF1yjw<`7ZqygG#=ssdS׊v>RLYDa\=G"njc!@qPʜn*@̰siW{ӗ!yufR=W;A87Uc9@'C zP呁?@*Xq8ةk|rOEznVo ۷U{뛅Jy8V ETuy}hMBgC *m-3w-Č"6[ s=PH5ԛKqx>7i g5'88G'01#R*3!ˁR%s@1yPJnjTsHI>ғ$kopw 8V{I &}9D H8Y^RK$*avx%yBėb\1 HPP{`~<ԍ$Tapr9zT29?9QsxT8B=*Ep ހRŶJ+ӁUwS, _Zgi2v$Wq  +*p;zPİO)$BAڜh<C@iVTNi.X`8t;ajvSzg\NܓAS@'{ @c$bN]B3ZX\ 9vaO}zׅ`/MՃwݫv+Jϵ0v9 *E=2{(aI=Fi@✀heLS3ҙ$94x5H?5j^1NLNdd$;Ko %H3j4[@w*cLU6*0͸<Э@!C=*9B÷jc`qU/]ce*0AZ̻]Ųp;V5{[']#ǽP]B WE93QF9#zr}3VNTv T`aZ{ QK ֝!1aFGN=2ic' vG$F,sL#e%v˧J`Zwg0q*ט 5GL|Y37(˙8 ⾃*FiΤv矊Քv%gr/TO6wB!}*āT8=U$mI5%%7+]^\TE'=;UffΩ9]X3uYFӑϞsSEr6n0:T`BpIS*;U&Ƞ`gלvV!qG֛ZU Ga!z{㐨`8B2 b2U@ 犓lE#0`.=8$a?Fۂv@SL6%Uj #`tGwU-8P9;zqT0;PP$䐋*UiL!y:UVS?t*}>UF*,{P=YQ`V~-@yң ؚA985شr*E(͍N={WcdRaZ8I䐲 }>+_ñ2c$1[rXCegO3JҮbc e ^#ν'NKsѧMI3}Hj6_VB y87#$q UiJS`yg`6 pi\cFw`wBpQG͏~DC.[p?>@r;z>jnTQz{S'p\9X9*i*Xmlm94# Wv1Ҁ&Y~\# 2(2;Ue?( ݀H8 K|ۄ&)(#>Qa\pHdKyPH9 QU@I{ ո'@Z@vC>r)4}>UxQUl&I9չ 0j2X`Ty La84qw>?zeG 2}:O&vt8 ;#ۊ{WcoXUVlGJ6C#:*|MRy-O0k3ueQI&]=I=nj$^tщwlu֩&QeIF4z:csiw@P3ЏJ0jUN7&&+xزH-sWSFB(HQ wlĊS[bp>!7_gJA I4N( %۽>6JNs0#@S@"ztNi|"@ iG~~NT9%a@)#dPA8r)#=T|?(~Tvp{S.ӊNb(13"~S:cOA@ =;T>! F=qIixOg؎*-F E7nHbc>1^K@hZ\[HѲ#n/1cSx{Pi&Hfi-!1bd Hj,>dHL^^F= ݍb+Ia=mg G|[fs&08rE|jr' nQUvf[%I $u洮dPe lNPiiTgd$crAf^!o='5.[4Ci`aHdd4ˆ`tP?^aIcS'P1#9#:"e,2~P:U;F9͵10Q(ۘ .]+phzPY8P)5m>Lp?uHnݔG 2Ԋ l~t6'= hpbn4qǥ4E ` Iv"Rں(PyEjEJ "L3z.&Y$vUZGc5r~\cҾXXZosɭUw $dd$TlĚrWq"aryӌҐ]OjR8?OCqhfs;B zg3Qg;XnH"*HqrA5zW Q/l3^##it<$d9gz *gX$L߁nSe"^C1J#B] i fPpCu=jUAؖЅr?CN6WmXp_*ˠc)P2s)1Xܤ@BA1PQߍ8` 9O^8(Ř)GI8;;!=HoB åQ;cֵ>xR6R0#9?UTT[ijx^cf]Br ޒ+dsV خ1kd9m̾;HA_Z¹nq;]g?0]ʕ\o\ֲXLTwZZN%3&7w+>q#ӽ]o?+=ZU-^Ɗ0qOJI[4Ƒd Bwšm rq@qI ͞=6${)6Ѽ7'۹=(*ĪP@-A*X .zbqx@gU6 鎼ՕUِ*gl@ Wbț99'@V|$c[!Qn?Jy19uP d'0AˆQ}! fw*7 }3Q\ccF99`>DI"28` Rrq8]7/yEtrX9n==~LD)Ǟz#jt'V\ՎQsh~!MmXMytoq0P3\~5aYIo J$K8b@!־?UJOaIBz#L63;KZFd S<*k;dH zKCM A(iqUXnjeprE~~~y6ڣjM lvF>W'r;R;EYCH tTbH/s#q9c~JY.A1!#t(F`>ԾRڹ5: OH9 WX\PIj4qrA8j8urA>Za@h q#ӥ;!yoS@XR{ԃsUNy8> *099QFy?0ӕvph?'Z8p@銍˃&C7J??ҭ1hV EdQ8n?ΐf oasi r'9}9&jpuԱEDgr3ǜ~D1C9QMa$}H'y$$ȊA+`*6B&X TI6v5hcg=X9 ;8$69.߀K8R@8d/#'^r{sښ%FbA;yQQ"A2Yf~cʮG*sJd 2[iceu k%Akm *g(:^Ho.w%@dS.z~m(i$1~گ*W>,º4Օ Uiew$czTExL]X&y{bLc'E~|[ɵ[!O.C5x㚎I w@ g|Y9(sҙ*pBq٨ui6G˰YzS{cE{1$ݫ3ri9NbLmdunAVI'wjL`'3KӀ}MX G!O.yTḓx&㞘.23=(ɍbA~d0g{ǭH6E :(e~#oZT6TzԒBP$܎ߖ:f)U1 ʕt tbx7e4#J? O^)֯Lq:rs#ȝHM>%OE1@f#%L@fFSpcR1!D۴azc u".p*qLo8OM#s&Nq<Nu Urw}ig d?'ޜڝ e$ 2 Uv@<7  :E \xt'UdI8\ޟW+b3H4Ycp&qye:q_,L:ۋ{xW$wz 0@1c΄Q+yB dY$\eB sϠ5Q´P>,zW.owս5|3U[xkq"1ީ)-Lr'v%'a1d`ǮH*f'tFzq"w9eyl-/sꮆV^EI>f[A4}%!"υˎO;~4MG>_ֳhOe˵%i8!c}}VXP tO݈T *UOmp cd##JFӀAOۏnO4F:P+h}{qA_z^iWYYT ~Q&㞄dtGoNyFHl,R60 lpNNz )rp3P{t enEf3X@: ZGiQۈ3n^jGo"4ugd6U%ǥkKKoCN*{O"¦@ ~5q|O]fv+@Xz$MB7#1GQ_I摪:5׹ø$`Mk!@zcaƺ9"+l~CY0$.q6{<jߔz "Źx8wj$iKcn 5]ѕl:SDjH EMr.hbGN^H 0zjd2'g~@ cq1 Q6VżQ.TU$ěz`  \A08TݺbȠT{bA:>R _V7QDNC0g4ppERkn:Ai^d$LWA3rjtּsA{:po\FI"R<`1 q/c~ *7N $2gEY׆!5ttp#H89N[\@I\VU+ HZ}`5\3׵HҙӊnsƿK>l `ڙ{P sJ9/FcxQQ.;yiq EigSz0fY#!KpM3Y3dҭAp#zg"Xi=*/_,{pS+:1EG*l53=}" DP܌O'Cr{RN֛URIʎCEX\Rdc曌`sԽ}~1g:@:sO4b4(};UG5!%Wi99ԀJ8'⍧ RyltJτUUR1xPՋK|*TJtMI[qB$0rr>X"qPِ7DORH 79zDꭃ*p@5);q88֖gaZZ65"1# =CQViODi;#W3+>@9I.$X@}r}Xm.kqeT N{^P`Bd۹p+1ZVR^ /si.-l KkTUU'w T..;8.@9k@܋2甆r;W'qIbbGfTFv ƢCϹsGZUv|Y v>թ zĥIJ6}'?1!͞Jm~PNsgR,D&AP2 Z@+d`)|=yШ'8ٜXjҀV me@aT'2pT%v( [1I;O5#FpNq֚BV1#HH ޣI1߾*G23{q@(-yu+$9ئpx-7UbAN??{☬faj'%)C S hDrZ=0 Srpy<)NA%,O qX54md5p 9ޘnI8J.+*@TRUSnnOl`fGb6*aՒ-JQVLG;wUO-%eIsYnҧ_zWh ]mapnik-vector-tile-1.6.1/test/fixtures/expected-2.png000066400000000000000000014723161324304754200225510ustar00rootroot00000000000000PNG  IHDRxIDATxԽW=}{'$LL8q$K̶-[23`vS]GdJG5k*^=! {&_i~hZFd!Y4(dUC4r{+/n) 6o5ߠ;=v]Ck4|jM6|>˻Ƣw?؎{|\t~{xxoe?_تƾh+{Dv<q[<# [:s)p,}!|&~asRe8=+Wڋ[*'Oً:K|+Wl-w?8.S35g嶮-^<8H?v@V5 F[݈k=#2V?x_1o _c+Xu½:<_*'bC_4brF }o#owGxpv'{ Lvў<-s90N>,a;^Y}S)_'>0;9, $`ozwxVzⰓ.Ǧ'Nr@z? T >z/hh]3kKf@?čCn~@vM/68'LF{kU)4}zi1 p}o+t*\R}cH{!-G j֛N5?-hȗo^|4>< 5 wc֛k8ccD; 9A@_A^>k9yێx|I ࿢DKs @{oF"_o{$>JF?:S固;n#~8"Ko{"eֻ/1% {X5.Hn_O"< })Akzb'; ֖_ߤ ='5RK; EU.#zǂ kwZoh>XO}{ح"c} Q%yvoxj&'N>([@QX &šqR#&^1Ekjo~ fkMJ.,`a]? ?  k{emS_Rjckb =#VОGhU@ @* U_@|0-[ЮG&qd[uir'O8zZ=5Ԭ5M#eoi  Ty$~dʼa悽gu^=Y^Oa'K = (=%yCqd3ExVU~R(oD箞QҭnBfz‡ԶHl4ĉaw\y]/#͒*:sp}kzʹd»?8oic:vs+yiTOh$ZSļօyp mp i[@l)y~<=<G"F5`BeI<:%5qk֖u IHo[XJU8z]O_'z1qa⟎I,G?7BD^b,(}%LoOŷ󰽷_́<=icvZ&n ؚR Z y&`zVEg@9ô:'~},MR$͞a>^(`׽߶dΒb;fϥ/L;o'e~;q{z}zrxJQvSFR㦊*F<࿸)<Ď ~!ng1;# Y!R~RD͒I}xhI[Iz~yy'> }| {Z qdS^=?@<a ԯAF?|>Hz$*9^qp=ީ}S_=R\q}Im;! U|x:z2UЬn bkוo1|@[ p2}ûRSuC֋1YraMCIIGtqOy֞rq$ĥ]ߘnvKy$0]rgm76Rjg^R$v[UL,^+N*6޸Qj"|Yk'B+Z5C+5YNɥ^_&M؆?ML=ש`=8VV5ƙGD]7I)b⇬i: 6BqáČ=c* ǔ=B.bsRy5u:Mx%V=`Zcڜ;G"b/oh"^큗lc{a|Zk\[ ̏ϐпG@G|rNF 'ڃwDo@<"H2Q{PSޓV]$fUMmH"U1rK> -՛@Zqk;< COr}Lp06ұ ]ycϒb޷jW'w7MxzЄ%ji)<_0ዱ|zPtR RN ?zNlYc*̒r,{s]HyK^<"C=9uF !?Pewα,~&)٬]>|͸&N$7 ܁XhJO&A+1Ջ%y@Z&Ҹ*7YVJIaל"!DX5si4^lGK6H̿JMGyy9!ڃ$Hm)j|Xz@LWvE}$Hɪ>MKԎO#k"U*_ &< RKLV,bAy՗1{RJ8xS;UDvZf39?v.aM ~Tx}Y*>cq|IC \,4>΋=nI $]KoK50yNlR魰 Ъ ycc)$Ivl[VaDk-J'쿠'CNn0;I^?XxZMߪ&L/[=SUާ'vZq,-HH{ mc+0xa,yD4XY+d.\?Ǭ4K4gLheS;s8?JQqL5z=GWVڢ6l]g*:PuMDP$=2{xx׋yTIUNꩤ0;ɧHz/;QH`-PgWTURuoL1vR=`I^2n Z7k)xtkwc{S.o=yzxnn Z7 e̪zlzCv0J2KzKR=YN>^n=~=a_d]_ز?W+ {@s 'ƪIBqbN/ƛM7>wnd<eOjAŸ>zqȥNu˱X2 ̹]$ S,gn+* 6^<76T:Et$j_p;q v ?%6ɠ:_}}E>Hv {U~3[8i^Kfݚښq\dxͯhpΑ#-ۿu~ەm[`4^K;K㐼qɪ^LJc5Z2엧"^ s6/ s= &͒4h,dU,ĕ>o*I+o_Kb>2sppl/[IUE|2/*nf+z'O@~S&`}7Ȕwi^Ē* .mUF72>E9(Sm^~t]G-˒7ɓGtI$;hBL,:hU,da{^6=io^m:QO75が߽?%DI5%s^B:2k|q9Z_kIU_@#xk`qL4ЍSld0<@YXfUPm;qZ/R!KlWQ|[2&sirL,OZD WRŒ~UV#S m$7MDLLS1~p4k @6W8,ÑmUu?@20vva[%Z򷲿%zQc>A44e| Tzx&/ZD*[fkY[zړkZFer0@0Q2=Ikͪи:ƭS PZ֠򧒤$O.{vMb-N;m(C& \r6vM,i+̒||"Bzr{a'6dždOk=mQV;K<dIG-sOU㤚T[wG t ~OD~ytF{T̘!}x{cgO {P&ٻR49#O H="S1;~kWJgE`*g6^wBas,z;"@ CaA=beD?/7֬Hyϟd$Vq}-R9Fl'ߔN)&rr^9SVR}bzBb_X zIT6V^% ؋#칷η^yO5Р?&:=99qqxs@ @" w\mo?&*yZKIXݗ*R&[l@'Pkc,Z5 X:Ӊ{+Yݓ~d`KxNlK*T`UOjcտ_cI㣘*< baJɀ̳Y$!yjY=5@gOvRW[_m)V>}]`\#d D@N}0zoW?Tu*#.^l {Y'cL{7lIjmϻj+(3>?8^~4{,j̭)}? XC? +xcqg1#ZMB@縸\󼵷m]˷^XC{x-PCx CõtX%n4|6>Zyާ8> =b 6?o{/m[FloЇ [jXD@e"ܴDyL=U)^l"` >דm ۖ4 *)` X)ޯ(O@=[.,YMRIzP`w/^XGUlvXGhJ+ҹ_|Ó;X-{_Zٿ*sd?:$}.$V 1Q*qxu1X"QX0nwUiuz9{љ8@ebfC~z ^ŒuNUC'No}ݓS^k #58a)@ `QHPW&6m`Qc%'1} I^GՔlA>ǼX[ X*G&`lJDIfs.2-zl+C6@$czB$װ8(c[^ȀI 둖kXKj&WQx= #)w .z^A}K|8Ɂ{KkU v?=zl߆Rj5D7ʺ\ A-R}@{}̀y#ԓN a.BbvdHԪ VʦgOϻN Gl#1$`)@)m[xXΥWQ4\^$X,{a*#ScvQ8*e?I8f2 o Cl gC#Ox3H|JReVPZҤmg<2&M (iBqڑIx?뢽8.L%28{*Ο"bJ5rB"8 o޳">gW=P@WA@I@=Px9Xo-=Ҟ?3?ΥCg2 WdepYЀe nir y`6cy?K?{!E;$r-5̹z"Ѧ-IR35 @6&+76?Ug#sB-7ȆtъwLZVR3,XrSb2߅Ixk^p?zUPb^܏jPT+H%X}Jڧ6W[o>z_l+PobYl3ߓ*帳wzT7 `\c8|RL&*! IN.[96Jl1dYVC?.;p=X % BŪy? qfxt&2o͌z5evBʢ,D]kAV'S=K eL,e#?8J5 t*.Z6^v̥G핏C/yLS+r9k _+!{a {jmLFZ[ŷ2yE|f_Uv%For ūteKyO&lA58.0U8E\`x|ۚFdL"$M49aqRi >zm囊CG@QucV>y- 2xGPSq |Kdk앵Ɗ;z3"%^'#@jJgHb^2Ǩ o vŎkø:ZRlBVmh;"6e'| ŠV5 !?}8X3#|5 {ˬj@-`eZ܃* @xv xz3n= o8dMVSoc75D m\ @;x$9eG yt3[<,fWu,0FXX4,B/7y;Je6Hp@rU$?-N&s"t# qyb6bt%Jy$ ~5༡%ݚ5q*оfh/S+dž~zz@65JujR8gv7c6 +3١ed62#׶>T&z=;%IS?c4H'JR$#% g3QQ\Bė) Kd{$I|اԊESBL)Y<l,#8eevo·a4gs4 pB 봙eM{^`} RrZK%4 ~>ubn{L{z,z RRRVuK@ s uHLVIv1y/{`C'"sd"bc6;FVgrRp) @ uAek+~7M\/&Xx:e wZ GY?_dŸPk/ITERL!46J2:~nʕrYG# ?><hX^ ~烖\*#W ϕcJM|^Τ%ݝ_%Y4r/jo5i)ųUljYOKi?$0XL\-;*`"ܞj@ck혱aY¶.)9#!0O=+R8ND:7AWI};gaDz\&ɥǩvK LǠ= X% ZRH`>RA#~y\\a-LNɚ`Ey; 9mͮhQUK+pZ̒hn-z9eHb%*c/T+}.s,lbRSMdIդB7uQ%p=k{bS ozyY&{PY$;f&ć!x\Cz`SUH@sҽ%^MK`ؙKw2t'-扱lKՌdY\۾qf@'Z{rG~/GЮ[ Ūm.6_IX \|OL ˷I)Kj#EhG5 $TiU}EB(,{G^W5@?Zsb5l0~ 0䍼rI4 y*3߆zi xs{5  A4й 1`# ;1? qNi(+uV[`$18uֻ14ڼi[]WJl:lyqv/me[MDp،nΠ;vu]2һU4tIk܆ xz[ʣgAzU貖z%0Ja<\w@w)-JAذA,% `?@@5Ҧp[kǕrR:J7"ym.&.2LU{UcÅ'c 1r7Myu8@),Yi , f ;ݦ Ikw #=JDù|`khVk˜B6>8Q:$ol딷g;͆6K%l7w\;V_cD@@VFBnWS9`,'MSDUSχ؆2p~3+1UX91Q'벊|8lk?r[,-@'\yf]>UKb`ۅ~mj`zzƺ%ouLX:<-8׫r d _;eaGhPc]NӋ/S4QѲG9Hd"C{EnT;D^=")^{r>ǒUo#)"` ӄb~甬l{.DI]YUG%7k-ɺ烗#:m]ZcG>8<$O Mvk[c-TV쬩 ([򸹣[5z4 ijeӋs;=̋kK.[}G51Ώ,:S!łX:|[ɫve^O <{ gۼZM 60f %Z?u&6cg'z~΂'^*">hf}my,%Q/`&1s2+p=KߩfIgzIR TElΙ&'R#E%^j,+x\j]<2]_+˳E2{K9ۖ@|Xo֓ ,=@PxUߩTSf%kwM6C]궳ѣ}iٰjwnlOYy~\ .ȩrzFrt-?7Vx] BNMŜ^bHU-> z-vfzEʷ=!cN$ ·Ek 7aM` 5b`$(D2`TZ{$P %z@U޵-[9胝gzW F6.ɖ)_p=ƋhE׵8.V;tcї]NLKKh/_=0uzv;.tPHU~*!>^w,y",H u @pL~l@ h`$o t} +It2 ȟl3yp^jq(:OɟHS~A:.JS9} iWtfR>%΍ʞsrcTzJ970#seW2|-'gg当fsʎ$zv˻IFiV(::Q4pcq㊄hq75f@o΅Z!DOb.YFW#  Ⴈ{2LG {6[T$T 7czg섦'*(0Mj($7*x.8;)]zcjB"FSHxIJ>ϝ_|y89 6"%{nuY=^<?5iczg,yIP-c(H"ѹA@MY9u*~5iӫWb$wuJvsl*#*Z7.m{b{(- QIO^woʖSҹX:ItOMoYJ^9;rAgorNzGfT{ -"ݿɩrhl>;!.on;+u+^{֐-5ũH͹O=>xzn1nVFdȓyd k\('M8q |/b?~g `.b8HdBfKt36ä́`Hг%{6SܛZ,Ϭe}@긨|>=dm2noŵWgVzE?[9Rg)b>h! @ϟ'g[hC#E p :i*:/` UYZ ߤRrR}.:=bϔ~/,ʮpVj'wJF-)Y{G}@q~6i?9 5--,9L^>ϋBD.3#[g&5_~G=<*CeW2z @fܖɵ[26>){2s޼/7LNNʅI9 ¥y$SsW)}%/ȡ+㖼wﶬ}u`;H#sp'pbAW`; 1'0,t;?3eL62(5Z/a'06р8}ֽb_P@^ig$-ɼhW NccF&J@jB@[y,ΆF,񳞧jOI_' P,$hE x>/1r[K!P$0 HkL{v7v^KG7j3yM'b_NH`D <ϗ&A;G-viV; m&nݫ_+n$.): l6*+y}ru . ەf9O@G^m|_"=!;_k2sܾ@nܸ%_|ܻwOe``@e}YPnB.]#83-7\  .T^ '&Z.ZWk֣QUmHx̳_ N A]7svt9;;̫r{i\O)Xfߓ\Ky3 ~aNr&>f^R ]4J詄ݟjE;dT0Z*q$l/g,G1j~+aJU%ZОdksg`4Ma_+yUVM+z9 zDU}鯴 @yȁ_\!OZ 늤³-wҫ??Yx;Xa_:-ɵ7>`E1aG2/nն+2{q{h<p| $F1V"]l}M<`mTz]c2Zv Q膷fk]~{@^tߚY Ɂ.yoeyɑy3w_fo}%<Ņ}$wn?;ȃy\~OnB<[$7z3koxRgenL\1~Nè"\ D``A><6*L8'NTnPC\;Ys05]0Zm9uUkE@Uɺ|{t #pIϧbC>| 0'?ԃeo3SP\lK^ɷ=vh`"Xt$ojs'eOՋ%hErVF׫+lzoERMK].s׍",XD9WMe`۳n(c #SNHzO rKKt'Mr6 h"kO);̽.| l]OZYGƾ2#0@ͻqe$_we=~ PB#ו!^y{`ZwOEˬnBnK6eD^ؽυ<WV;Z_.M@_\&=zNljvV=؋!#uhyАl,嵦IФ4ݐ7@ϔl?+?x@^|vlDNM ^'soF^߸~'_C!10B/p'{"o!78>$ݣs;6'GJ#991(WʕG]9=}[Zz.ɇ''WG1CyNZwd]I;%o xwfo N׹";o:0jMtT!.BR@!L,+Yj ,U2gE 0V&u.U/pl?OZ]80L&<ZZ֓U}%={k`Z [ѯ u| \8.LzHxUV7G!Ahm^H{Fr2PvK,kLr/Ž.z6C|ꬮ4h&UKtTb^DŽ 9-Y6c XZZe宩D#&JaFKу糡/[-|/l>>(}?p@x\]e$xMDg3zH-EBqLrg/ A+GbWoyym y%ݗ5vV^xT65霼*' 姛NJa陽#s=sܽX<|"'_Mnz$wHFG&e~Z \q/dM,rsL?'S]r|윑M䝃֮Hff`-69,ALfT7iсykht$ok\ږ3ϫAi(ŊUzPO8~`gP4{H "JGZJV" B3J`'4J1LΖx}  ˓8Ic:FE(pYG g3suf8or@x |2} sr("V$+) )c&&7o0\Ip=T`rt{†c? $C{-z.b2jϫ-t :&?=0!o@xz$U'.kT&"04 VܦўSg@owL=FoeaBW6I'(ow + DcQ]'J#<@KùĶ\X0wdWϗZߪU ÆhGd@ ዕ[}u<ڊ@V? f9]k|x[J ]+/ew۸zN~X/Iߥ>~YfHg^hI93tI&o1p}y,,\98wYf/,HGgܵON8%25='cd`tZ/Ke95~옐=ɞv~lP> Ѿ`oS!!.o5fl$ [Up0yu$;j);}C{-e cu6]+Ŗb&29HJ7yilGce}KN&$WNc\Q]4+c$1~HLr6\֛Zs J0ѓ%lPئ vRa'|z6D`3"HE2#$7Qo)R`!}<&Dc#/.!qdД`Aè K6{J=W;[{ZrCjg4>$dqMJ?h=ژ^'.oÐ,o(Y99KV˛"[B`<2,'&=nIجL<.ߔKr\4딎_'}c9sKvMmڤ ^ W+W7#'+g.J>CxKqL>}Nm>-jw;o>"o}_~Q'Ww{Y8:&:;/I@,CI& I 뱔.0ë^#KX$r,7˅ٚ1 i@'Ht#I *vridiY@nD~=RײVH L#~\8ItQv&,еXPԱO=Oc׶ 1޾,ͪqExKYtz~]F2,lh<$`׬,mӲ4{vyOrN `˩1uQݒs.M7䭖Y锼 <<ߜ,ԵuPk|U0Y,H7e21:6v 5ƞH "b~ }|D$$ljPy߁+Ogp|vyyl( }=ucWe?.Ztk]~)']~('&nHclxDjWd6O\kchFOG;Odd_@zqo99 k_7m9&?~7 is@L@ 9$81 5(5-O}2M5Վ kvgux\}ow\] ;{G a b' ϕp^gwPzFr9rtO܍G9>/'{F\߸N\P}X G:k?4)#LKw~˖rcg[_<{fKaC \ѹ[2=z?nG2t9kkF^tP64 6+O^:0s$֪5kkSdUlP+i?ٽ4FxxǏ |h^w-gz:'cn<H|*; VXц{wdփMy6GHlKXڦ*pru,x&i1iQ'  ^MR5q Qpn$ fRkݧ%@+}^#!Z~,v{&N?:#/Ͼ3I0Mʔo^7]96csk k5Z؟?Xd<ٿ}lrpF{򲳁y5&(pEm9__绺c~6᬴)3g|)WoT{ẜ)oQz"CjQrOO& 3# 6-m鹱rJvJ1xzV? o,d"P( #,<P/v*R"\p \Hf [-=6i@,W뜔m1掅w/\ r\z=#z\NSgoT9 wB'rW}?qF=${v]r\w$kp:Z[\g?<`h4 {5!7c0VFgd\NupwON1$l`zg6fmZ`${k YeE_T2,L@a$@EZs+fuLLg"ͷ#i<|z('4&.p'YӨJ%x'_ T2&YM2AN}86d&9-k_[j9,qMl st E#Rpp{hk3NLLNǶo|FGд(GFޑ/c3.y#-]cHL pxby/^NR=u֚Oѡ\fk0k w_-1o|~Rvw_s#w"hZOɇG?8wSF. ^ M^^y>qN<Okpa\|G.^'3/]/}W@ nKK~9pwJWg_# zOFf# |A"J+yԈިLܼ~#\V rhÃCr9weۀ|]~C^~^~'k-Xץ7>ל d+|8Tt ~]kxn6  lby5I;T):J97y LYȸI\eJf>+$AΝf= x-ldUDzƊ\+t AX*@+#@iR䑪E@ŀe)Tz`]$O"OV]g}h$-kgs.":" 0Ob"e#2UlBΚ4 V1cey;h$}GdHǵJKǴ.gfʞދ>o PYikkW$3 s7bwzt@vma^f&FeSΆldG&oHFkxJ:/˙rp込0EvgA>=)ol7vD@u 6o[+\[A6\@?r@E?$ >Gp-6[eGGp FeǑAm[#P ɩroZ_cG>yw݇kw~gk22});_DGtǐ9pR<}?/'n1yXEzS[0H&> ~?zɤ:\ im3YŁXc*yk??#?kj4_~vH~N7;䏍G3_^95.ge]Yp\(|wszWz&b ^C JWN~bl{]#O\~Gt0<@xq ss2:<"_>z,ܕWxa6Ȉ:<رrWe(zȧz}˦a9y9M4DzmwHʛW5Zjٽ!#+v)x]ۨGL ;_ AۗcfC[vj$)?& I=} buI~n?cП!HReI̠R/c>K+ݩroB*_M}5U[@y ]UJl# OѱI^֜Im#Vj_/EI- %r풽|g|>!}b^zGohTX`>=vM>{^~ill>,NOqR/Ǐg:dmyM;+emyW ܽ .s~uuqi}L[NɻF}n4ü Nɱr|fw\d ڂJY ?thձ1[uHZC.(t1a,xqc[:ݖniyoy]IS]gKi3cC\X‡&ᵡ"Wn?[^t5V *$ >|U$Wo܍1~$v%\ًryܼ~K/. p\Μ:+mm24<.s\v8?zY]~o:Ew{زlYa4(IdY>0Ȝs D΁H0z] ,}D"ƪjWJ]iD$Wc:VvPՅ,`jLݟ?;gT z@;@2!v6FǟcdzӠD773EL$.o666;=lB`o.[Wi1/i-Z9b9C,W-g:+ʢIi8S`|,2y H&侄|!Pzi@}iEu}'aQNgFT3wnJ5qJCJ| ]8w3?gCev^́0>цojQ=~w@-~rS 9-,`ne ŵ=9Oέ+QW1 [Rs({|q}%T#ʫPBW Vxjbs4ƴ/Dq9"/M| G$\$(*S|pnJM7@iEB')u:q筺`:0[J40aufHN < nENQ3Ov.;8JlًEА#z&`:v+-s? pӨ2rJLKYAj_\iJLuA㧾 ec( oM*wf<]>3Lk/"N9"$ )o؈lL=v4\i=UA_PlRSuj oH9|6Tw Ɔ1өz![0nkWW"VWu4l"6U N({ ;z2k:hhDusn5o=qxLP>=CJ@#H`Q+dnSƍ7$o q mzgLJk-׺8Zim(zнPUi8'S@O! ~qkX] DtZWU\kK.= |} C`=6ѷR>gl0myƃ܀=>9ZKY;F&lGODgNʯaİ'Z!JKU o-BeSPGY{?Ϧm%όWku^5 Cf.?}3f 75j9>t^NM=c8cEF4g/nG֧ (y@!B@%m-; bJic{UU]&sS y)8T`MДŎ*p58ɮ Z?.;gMm5$@I=OsyWk[zL۝B$pĬMi %Ys?H4a|ۃ4T7;ZxnwģdsH2*[^q)rg}OEg7zpuA7)' U7{̳Syu~H5: h}g6JVKJ~S|XnR]IA9p.8PY:0̸  3{I_DCfi.&_J ޖ|5>{5מ!7Et=ʓǟ1~ڦwt0Wr3k3O迮Dt|*g7Z̦HƔN{-8|$>o]Ad0c`J"`tQ9h*m*0{=A@$j6.k)D酅R B2Ft#3gZѢkruhlB{Yf dK HTB@YD"x4)!)7OSwn]G6c=:.iH$UB-![W \r k n ^gm-۲ Y%$V~:ji|RڒaVoVoVyz7' +蜌i$/6'H,cfm ڗ㲹[kw3k+ٿ;>vJk~y]Nld$Z}*ӟYa5i9$$\lAf'2chchFF\ aIfC %P H\3P\0=>\6YJU\Y >p΂!ra35Pqj_5q&=lL6F#V[]<{~;EF t[5fkՋJssvwe﬋ۭo5deQ<~[%k۵xnR&soI [ZR 18Ɵ~lA/܎.~G`ݝN|O喑2`N`=yxJ2Cr'Ow̼%җ?>F|.u67@ec Ϊ!#觸=` AVL0dXh4@!׌ǖ)Qv;: ]%NuYs~g6#av `)Y5ntGƃtp>YF$*hp͔}NxW=um@%q3@Ƞylк\xemR\*_mgN'0D8APY*RMFjD.\8_DaLN&3ٮv8UQ-أzmS}&+flFkfnV鏩췚"[u򳐃kr,>ǎ$kI,%/'*;Z[g}}]5+l`W=<>vOTG-@"܊*]~װwO3gE(i Ǚ/z9`O^$z2Z,*ҳjQ0 \{h w/Jx!/a`;ANsK:Q+99/3xC^LaΑ~9Gq\jȱn/cY|=ѷ_dyW 2$.ߝ[UnW[;T _\L~Ն-.'d \F*EbXcn]*" ;kqѱs X6矷̱y}-\$,RF'w s:t3v< (}w>gخׅ%9rƐ74u#תxSBp>"C[/*(ZL|REt*3GB  9D&W\#m+Hl`ss+ L"@9kLCs=A_2"={p٥:}F131D9>]F$!ǀwyJ.I^K 9J7<ޔ(\:Z:ku՘47NksSCLSc)3okk!b۸>:O[n7?J C|1pCuXluЏ/ov"2BGnX :x(})j `"Bd2m,cI`#9}0!#&rUB\#K;1O'@֕YfMJN--@~Lϔu s*Ȕz+v);[mD|%ӟl UJ`l2alk`Eu!N@Rϙp ۚ;_iG%]&1ƿs$j[]5ory^ SF^I's vr2$lkK c92Dp*M%JP9o1v_wE02{0&Oyt~WFgRnd659ubNT<=h׺Dk*ݽ#u'I Cտ jh&Z5j:G 4GѱIt`pd>_>oa6i \3|*MİgW)14dUG'CNO ~.畖>rlV!'txd-!ݫ*OU"kɒ{AP:ٌetvn0g[y`&U'{i ?%jL$$M߷vLVa! Tzy c6(-3)Μ8Fa=yMŤmѥ}٤$dkUyyymYp9tZ0g18[l7BT7[_ N0<}Ulnտѐ7TgӸ5Cb!l+=Fܘ\ZY$h) fXLIp]fKE` Uh0M/'aQ"F̬q'Yc&3LP" ȓow~۞ \cny?ΞQ  ټٶ(jV^˔4U䓹My|?d50ƴstroT@HÇڦmwM+ho> iN!/ruMd%ϮiV~ ѹ-Ɗq(]xΘ|x8n>]D(d$ {M}TЋqd򥮈-9ZPj A@5uEH&j$'M힩D݌ \j)/q^_H &pqaWOt#$a:'qLa|Cs=5a0$QppV{E4L@cQ[Iw ^ߖNjОz?j KǚR iO`OF`rs-f߶rSx[Μ%%5Z,`?~: 1'} &mb maYl2 .>ۮp.=s✄8]V~̏<~gS'` Je }*nkY?s$Ŝ~H%(pJ}@n?LA}([N,sŕ)4&w4_} ~fFơ̂U9ջ&cD Fߐø^׃8ztL1/ EgXBY. oB7)} 2yKQ~V`0k|J" :R L6KЄ=}F=>7Z&3A44wSFˡicP?ŝnHS9Ryʣi_T{b֖LXe/%Zks^cmZ2j10vc&`c s4A,??}mL?PqI-S_(=yȯRÀ%Lۀ[{*!q<˩ zCJ v\PDs>i2D yLggJ 3_ɂ׶=7Ʊu&>g Sû#04|riD'.%:"KkOP>gx *稱χ~/&Y?D~~!5煔P؀B8%{?ϕ|f( kd}\?mcQeu/>݋nҺw@Xi\) mO5WkGdL+{l4j W-ay6&ge3@$`3oi浼M2cEo msS79.Z+ Tbg9#< @|vٮW"slqz6e'pb:kB?Q3(?-3J&̆8؟Ȧ"^3<X}e}3.T:tDJ=Ƕ V oSA݌=O-]׸Rh͠ߟD}adSQ,ṡ^=9~Ձ>DžqoL#;$]R }}숎\ S CQ?IظG͌Gq_{$xYpCp&T?aGà W@BOq WPrޙ-l=kH, B&\*&u's-z8oe߭GHd)";!A~fǟh75}JHחwɭ]*DKjuPUjVД>klMH߱w}kދOxO}1LZ^lXme3iܗ:^oT(mt,%DCKN\@fg4lqz:Ozj5L=B7QiGBz y5 Ԝq!P0j?*M$ϔ??zM\Gr'a;% K0,1 ~$_$bIH <#DF,Ǹ|q1ُv?R7Obj{\ ]#ޭ &Fct{j 𻖐r35,e-^Ɵ{sz}?7ʞ'dJGR2K#c۞;Wүlo4vi6z"_ .mj&iGX>]Sn\?PIo`;_ILf V*!d90;LKlf@ 8 p^َCg9Yj@xO_kNZ@U5g";mT"&7O*d-̴HF2%ӑLɹ|`G"wMKj}D@+BGkM@GՃkzQ1,k ÃCz*ܛ(n`~+?*x[ mhS< ivk?{A|Yק1!#͇'wPa.|@X?? ~Xj{XJK@me7 yRƔOŇ|&j+Z@@9  N!&?AV4ڷxhi_mI(v{O"4*ٹ,.t:'(ѱL.Y9.f/NBzr'7EO8pTnw֐^Vol/a|QG'p( KqLn!_G{D'#\r8h:8C/IL־.X`O@Q&E`DChAs\g׵T64Cp\cXKj<>.i cA/<>vףf2fw$Z|hb4 onT)-Ύc Ω~qN"f!"T]I7F-)pSӇW}U31r6x..aqQ;f:U<n6׻˹ja?‘2"C9r e ?(g/y^oW6wՎdsI"Hz?kk;8Ǟhy硒4~Un5F]nۓՏ Н8o R,o>Bhv1Xn_KWuxf ސ~ _P_=xwK Luunѫ[Mt%rRċuxY56 8+,{ӳ61I,󞕈S7ֿՇvZnNBsE?.#=N8 p.7i>D2nWY>8h\!K%Yd 6J#2~C .O-8{m oؑ3s+<*D z*4e C _H5#Ds-lcnxb{p'71!trp%ȝiZrN2;vL |Dc 3RIڻIf=8% -)r/ -ͫ/4s_L#>:2}~pL\"QFFlA )Ψˍ6yMkm/޿ކ7h[,dJo݋z0(}ra|:*#E, Ɛ}z^-ss Sa/2\ׇ0[!;j9_h'cq%qTJGZK_8wC-fMsW\G(A-K1NA\fsvuC2(dtjEP7c}聂?3 mqm"ä1< ,tUr9Ii~cUukdfh Na#莮",d92]+^|ڑDsi*z7TR+8)~օt1+Zy^gLZހ0:3Y 68eFSxnlQ`T:>q8%lw1'Qgny;BX8f%BJtSi/PX2Y٫ZW[`2B<5<,zGzˉ!dfNm]aQ6A YM' sO C[+n监/Vՙcr\}N1HgWm͓_ڧpv7>CݤM rz]{˨wjVM|I9]]ުVwUiA7"V]ꦕY8f2T/ hlbkQhf&|ApM?*$?RSND}]3ۺqv 1 xj'Kg?+HN g aB$t{7;ƍ|kX7bxO:~)lCOc=,9+ؔW7TP(g-`j:ZvҟF@|wKIM؆Iru(z)D"NqH!Zr)KȊ1r !O#[cz FqM?>݁A?y$d%"2^,ޭ/E/7&4ODYW4qFkW[ft^i|5Xs(DE{ts8~G/UGp0ѿ IgU]*g2vkV$S'`|g]<PɉL Bk`%]3#`?4pјJ$Yp&3bHsЏ߈{yk}{\\?G>l݃mA6e\F\ @)?KhI{g~ 0aL8A" Wpݶ}v w' .Cv!"9qHKܚn#n:m@ɡ8qgZºnl @$#l6'ڪhքiKP`x[4HM}.=;bY" S53@oi@[kj081ȞYIf$B.oѱGL9Fx`܇}0w_ޏo)I87:@$jG4]wvmc|}Ew2D$m$VySZ~H+@w=j1,c(jH % f5B9wH$D6 ru | _r[R@m {0u:y)#?n 3SSqI̭(>S[XݹIl'SGvPLs7$dOgôG^_ND"re=p@т )ѐ\'B,O3k5/2kr9;,*n$+)9i V?{QwÆ 01\#fY7 ެV{5Nzǎ1S A|.gYZ6n /Ζ*mױ=ΔM.R粍_3 pX ."Uu~S`=N7^}\+7)Wb6-dp~NZ]DuE^UUPG_4_1"{!Br@~?䫆cֿ?wŴͺn 4C'pY1TlrsOm_?lğb;EU+E[ Y^|):{^ [yaVX0Lto9)(Ln: Xe̸Y83fO%N!yՁ3"UxÚ*eb*86>bo2hM)v&_O*Ͳ. <~}ǯQǭ4Ķ0Q@c;ѫ ~~Β'q< ^V>'rҜw*)I1wY]Çwpz^q/ƫ4ef,jѹ <^'0ƔtR2CSߎ~< {!2I?ʕ%Jg"'ױ,@fn] DuQc~2FNc"o8-QzcpI*ؾ3FpRL@wcI f/ Z_3#DqvEx7JYҚ[ёLHR?2]|.|ဢ`Tg? GJ|(F&\p1Z{99 R\2djK=Ywi%*S>`_;/ !fjb^B˥,n#<LTRòF45*O'iXpy|Ɔ1ۏV\DӋH-"D~K/`}L \ K-Nl`V=/Bv8?伇$V@C6g5cy,VIdB=nbv<<>hn?%AYFiVe\[q)tv*7]5x eUnz\ `+/k1|ħGTbMdXax˲ȿ8<t2?lЯ:{U uUH|pfgYk9Q̽ 8I+] u|imN+_3a4ϪF|%ipF KkZ+'hsßvWr2/ќ=?.&%:h)Fc$<$}*5 [xN?^я7'fS.~JY9oUpUE$B g4M_Ǹ'.Tu 7H\? &=~%%:皝[|m D{'t#d nY=E!{c˻ 0L\$w#|! 8X:JxK' Kc0F1>6`z{J"fwőq(fJ-}NʎtSK~}{RmNfm?O!xcAiQQvcpЭ?<6Z12 ͏Q(>&OR@r5l cDs=[{?f4=E}#^ 9M.O!! :z6U` ') u>qNSЬwLPJ!sh[MJ"$O7V*ߝǂ/sG_1=<~krǤ;YK*0t'W4ARƔ9I$HҘ%ť5-ӨCS; ?! LGH r~h . %gt{RRv E( 80iY% _IN  IbϿiCw19^S=o UsdtPf%w~V!/Pܽ"4Kei`K(r;1߇RJm`2W23OcpĔB~ N7̲:!n3p`a.'_7J=Re^oZ 0mqS" Li-?E.CZg&ƾ~+TҸ]gy?p 95*2 ]3(7>lܛi|#'QjI *q8wqTaqN+̮ @.dטCnx>N$&m4v.PB"1ZPҥ)]n dP܇Ǝ! 2J/=F,mXrlĭ m~A@9nx|T'S2a-4֠\6Էw(`j. /ʝn~Wk]r.%BEe]/6& Cx=Y LbJK6]ֹuD0AQk*d+vYpVlW(vUiuEs.ҹ){ZE 0͸^gLm_x 9bݞ)|_%]fw.-`I*Y'Z6\|4b7] hġE9OrT\ղUk\ٖkeM)J=~=3`[\^_Z!|\F,|酒߂\C$ɹuw0D)^..i_R~#%_@vZ`3[,>l,ip* Ϻ:|2ԶIyO=ɀ|I5޶ӵ\Ay\VC.$Vcb@A."/#N&$v&76(ߧx e|dtM+p9;lfw+hl+{Kθ5hNu gUd}L/`"454ԡXn:U1yNX-].u`*Y/^<RkdKg_c[f !/~ww[54TL uhDLN{LMz5UhnSu"dc\zJ?~־AꚺzܨiG׀~8ڲIj0ZܸCݽ&9M!a![2:5NRlp#6?d8[D,1'&EU2<` j$fej?K?¢2OE/2$@?ߏp`{e vXka") 0_t S" !|-,o3%*,oF@b+-1W?щ)x!Ft=!چajMϯjh1_l^3Glˤcb"$]p,H_:_s%We^sbx@ŅԚ~k7|U[8NN3: ovp~8lcIh/J?# ;/[My"gbRe"@ |W_{6#k؟ug7ͽEIܒȖ؛(R$H${/"|9s.I9y@̙3;8}pZwm7D2x5s*@32 Db9 H B}oJZFgfG[]-ݦ0^v1' xΔd<]; O"/ $ zFh :ɜo[mOQdUt֝n>]0ƃq{|C;F]JϮKbtO|lԫم@ D/21S# X2g*y!KAk{/W}$yT|I\k CxzHGzy\ⱱ1COqY굵5l5!3KMO.3 NV$1U*]gs \%XEW7w4'`@̜`MAϓsA7oN/Pok&/pGg&pj7"A ON@wv1THLf̔},A.V@>9h$"/VR" m{kWQ-1YFa~S- 3BfZI;Zֱזh^R]X\ìd]ij*̥Kbܜ8af夅619<hBmJٗ^)NS7 U,!:gJ=wZ6o|Hlm(39lOFU˯`eOz;WK XY]W.Gλu7?',]@aYIϱ=8<"IW&?Ԡ qM?YY}߻5M&)3 oF|t 7cͬ m)!$)6 X $O[ϚJNWWU6<P_]1 v5DIOŁ\&B^nƅ$.Uyq\ՉwFOÛ]BWdFeo=nH&U8@q MY㇦>|Y׍ >=,iS^i#*$d5 ,hIc\4Z! >9hKOͪ7~| UX'hY}YdsbAfnv[+Rp}nP7o?( 2NP@Ko_׆t  y?jM3"KhJ;1 kv8sIvD$c>>?wsn_%v5K.u|L"Md_ۙ }Y5g00LNIb <<~\;Rջ | ߜgK D(VIALd2J'g[` (BBϛqu/C|=abtNSz*: 5XŦZ%o:-yy=$X-ci|K׼x1_ q>v|e:1,/^Hb1!xE!/G4f9kUͨoqׇJͣ=7]v'jnw68f5JxEU>3c(`S>ڄo{Ԇu0X@K8knWC ؊vsVH%[X\ӌ: (H mSYަ&gTKR;3aQ0"0D7!EZWnR|9:/j3Onarzn љ\@?<t%Nl!],c/m8x =+>T$z&0?8Ǭ*Snjd5kJ-pdiUf'?&*#%tx><Ć<4S_=. Hqys I+{?AMrEFKS8+ ™ 1tb`a xC>s R;:Bl H-aJ7[\QtzZG8Ai$ʆ=g`ccC'^ͱu-:Ng^=BxkjEu\+qߎB`m{pS 0&cf:$F7e`Uت}u|dOh"݋ٯ/sWH3a<T},Dɂw#N l⇎ tr@f7IfF>;c$n4{128> kUŕVQ9tQ7сo;M[B srk}W^@qN/(VZ2OS|RsEfwίc015wOB<Wv>o5"ߗ jM㽖~W;]]Ƒd;B 86@O \*͐wE9Jg#]w#0o&uԓ_~f|?wήj`^Ix<P (  qgpvCGwL 0+'wV{ÒS Ge׵ťvbq̓Htvyi *qBd;hvばN0HkD 6>~ "Q\@U{M< TSɱ5!%|,U1K/f凐\Жç]V%,/ڝ##hM&xIX*&)`4ܕX|`Z=J=Ue=á.ѻn@?MVk6r+lm7`bްJyiO=TibI 8ڐTIM*qN`x r)vw xB"}nϗ%pޣ:Z` e@Bu.HuЛ\Xne$%󝝟yG=_Zhrn!0KU>|2chWX71 E]%|՞_[$ cln  9$3T@7w៚Fam p ]{qc~'\GkK׸*9yDH8&~dً]B4T.@D6 iH24|} ǖ!ty֋^k xECMGATQc&_ #7cu!, 17KkjDj,lԭ0};x99oTvU?+!N5NSKϋd Zh, vcZm)W r?ޔmURq?KG [G*#Ս,V8BiB54ѪXxu #MseńL|@njFbm5DbGmpfff%\ ;2YbbS|GgM Pd&75"f 6Yxd/jUrd@o^] x8kBƝMl7 Ǩ4g`/n2{ N[ڕ + vlOwruk}֯DD^ßx6ʟ2i:_y]lL&E"W;\P7:{d 4“ML#?&qxn{7ttޝogG$Gww/Zrެ{ #9GxW5ޑж5;{BP֘ABCZ2hC# Q.;Mt/[=c.}/^: d̏W[IC]s 1AdAӽGHl#:"67%]Lx|N2MM%кAބYc€imgumR`_\]9,7&60Fhw!{~~Cj*v&'މ_xLx~T'nzMлHl[ShHךzqciLyיB cOVw)auWd՜]ZMK,.#dhV~3E-qFR7FuTW)vS6پ!~=4$˓yFo>)dc?"@waxx# z3dڜXxVW7v{CH䝪E4xcsk(k YPZ概].R bz~G#ŹUDCI Uj(޹ҋKU7WnΏOo'^Lns,"DJ mm;I +J;7`'20)M*j`]e0&&ߌn03 '=!\d*@^_D!-Դch"- ?#ծp%}XAx~scW7-$q̊6M-#2Q!_ޖJIP 6v]"pfK3 xˍx3n]-[o@;kpU{mKijfEwi ?d?x4Y;H XvoZVt݆Ovd6Pmo#siR& }?عc|"e1a<_'ڤ]3WopF]<,qlo`jrZ]5~SŅ^ڋ4 VYD(GE G mD^T[BT k(ޫՁF6:A7nOڅ~wk_q}XGYN/+nbmk[@9)D#3x 穊e2dӞYF&6^\nCjZ}M>Wot1XG}h6 I"ame$CVYZfv~=bw;/WJm:v}CHCt|̄s0]efk0 O"g qdTGW"'TT H9vkV(@j:98] ?W+ۂEQ~Gs3"WMsU͚F{>tqE_#Odyd-ʣRrMuTxz%.0{/ݦ 4Xn E=3"hs,g*inR`4#>'!A:`R <w=s/,$N=8`hN YLOSxwDh9ˌgDyj/u23U!d/|2JvW}cz3;/k h=wmcp&%$` @ @M תX>|r_Uuӫlh I2y2LCgt jq\hrWqNZ74A2 !þ,~l4;֫#Sߌ>r")FP9kBvC1?Bj ɸxBp^]h$&&yXDݜӦ+8z䀿nSb/Z 01n.I&`V_uCQ|؏׮wwէ~/gRcXB]緱û8<:@C8n>{:^N98wxOmv߮NRUi;- >_V7X-0 u펎 Ϟ?AKq ?k{kR3&WA@!`":zp?FPSB';@0>a^sRh=fi=4uRv֔K\==Nh f_+tr}~3|F2we_֌=(jљA@僣G1!EpR [צN!## dH-ȁ8+$Vwoεss_NJ#I 1*$(0㖖Si+-7{Ԛs$S^~vEn>gfJ.})KS [ &,?K$M r^1Y%QYqHrS+u#>2;H ȯS˺l jGB8zt=(FG Fu"%)db_0PS)jFkz'o=ƐJn1?wċuN;[82{v1^.gNyv-ؔMQ@sP4ޮ4oH+NJmbdC*!O7۪} Y3dMym 87j]7)]+1Ioʖ `&n`f+y \b&>7/̓oChYwQgW6|ǟnal]%xr s8`Q0u-M߻`\يX_T-@r*`,$(/~RBRxn4&4^Ru+oGuw%v/akc+Gr0BAMNO.~ C`@ό晩 36aLߝzCOc,&떼 4r:g=]\W%~%7}0@-<5m3I`}5mW**@~z 3s[2A(҉5+]J8;; 0HIj8&Ӡt[k;[/`; 45@@ .%$6ү8Cm Pz7@Ž8D݋NҾ_h@߬9U`yWw{E|*w Dl^=hf U*r {%g!O6q/z2qYoG2fؼ!n?  (W,J=<%;"`mlʌؔkg{lj>4zKh8Y˜>B # pg8ч6|vRwiȯ#(@[n g&ќKF^-[|/|ӎ.Q|Cu5^zp DA27)ow]m\ʁ2,&Kdd?5+ޥ2 .J&ҿg疱.eDrUi􏍠V 1;^O_{rpffyW[*{ڋw}~(Ԓc p@2 u,6CavQG&i`JbHྖ m9)I+KӦ * l%+/Uho %b`o- 䟌rS{J`% ~L4*vzWbBrXWXgsO)==񡽭K -ESJe547}Kn|tj7=P=.ED5J&g)$)n!7#98-ePzjù"&Tsm 3$ xjyV:X0^YDRVA81x}P萀2 |6lvr9oڦ@$(PK`Gi,$zLn y91+l-r J!a fY=.9M>QP"Rv2c~6 {|E=%>U\+Yb'SsPYׇ5þAz~_GEUu&y`(B$103$M(F:/>[~P~#Aq0kB ~q؏^n/W U߫Kw})1>"t~RO.$Ye*'8}@r}·3+菦mo4ޑ><8dh[^#s+ (&a(p4ffZd$&Rfp1c6Jq8!ZɠctndgiΪTo0by}='&F?v?( w z>3:~2=2 Lk5 gYTQ`4mjR Ӡ0:|Q&լ:Nz-yC%푗Z^ ~U55LJGLTJߴx|4SmĀ?\o&7Ld694{˴O_05%47/<-8-*8 ?ooԓ%.Ia}%t Gx#1UgYdv3e|~ffUzc%7|.=yrpGvRWewk:Qt6Еď9\ǻԝ]y̏'x$~]Rr^߽ %;cyћ@v}0| [,זpppDIOk9vye۴($f]彽{'ɛ]B MeիtvN__hßQ.5ॺQY5&~WQ76+?Iyh;8L(D"2X W@"[PxI%5&[e8fmYw+e%>P)wk {`KxcxS7'4!vϕq'Z!{U0:) 1$9;*: ޫ{-I?u+NCֈSMe4yQ$޽R0ZC,n" FSED%NJ4Źu,ί`ie;{{J.k$f5',_q."hhBcW{i> F3DOdobݠ<,ÖVn^n%#)od:_01/!t{u\ğA64J,B:2$3$ Z2/!\LoR%-tn`{W ȷI?٣~76%/&dYtL(dVMa"TA_o/g}hkEOimЎat0(ydzmR;@Kl  /mwcҟ`[K.ee'm7kw=SML =ggʞ p;ˌ{19^E4`2O7=N}ЦmP`(~k~ - Q٨d:2D-@jS8Ohߔ %||Ү=KjS{ +R8ۺpKh8Ɓ45oqepK"7|>kf? /yC/bsvkU x~qaYAf?ť ULDuN D GtUwL⇪>|Q37zU| )/ۣBK!Z*fgƅ0EH86G"dHÉ B8 ) K) +,sM*Y~C]u g8rp8>x|&H`ރ){'8d|o 7~ˇz[Wreja!Դ-*h*b|4" cP@~kCu[j;27=:6\}/qntcL x)$E. @xU# UL lJ67Yp`3ooz|nZn"`ٺ E%"Piլ:X mPoQI+ߝ {¸J 7I1M~|*`]. -8XD7.`*W?>ʍ?~&4g~l?(ayN  _/^_wroԎ!_g;:6,2_L˔.]s(PLKDhUc|v{ wC]G_+W;Mܸ-Arͩ\I uZ1N!Ib:?e!r`$`qt\QKo?  }j7PD<ָ ;F s*,$R0L!KW 'BfL6NUl80PU0=+e-ri=n9ߎMZ7ց+yU+юN 8nhgPԖכUx>ik3x9帨-Tp6pDae݆7:<v:g Cg`!b)sW]еДn <'s}dziɗyo9n54/\|r@Q\ Ua77|M<7e6c]ۮ~XXz{j;-B?֥jjF#q>tO2\-Y}u\_zm4M0-\P KS1m)|Օ璭ZՁ%For ]C\w1r֘1l|vܭ{ $h{$>Gv ޞ#?JJxb]D\fǩ'gݮi=a!os7J l6kq\Y{6 4?UMð#x.ζ4ih8 Z¨ゐtГyE3Yĵ'IWWE^ᯭ+ 7ը'[\V%:7ݿGwqt;[ۘSfC4̡Hd}i|ŗMCz;>oC|O2`&Tt8`(PHGm:Kc0Eh"VVְV$;$բI=lajqgK2S\$WU`̫ѼC!4xh9w*R4%W#b/#=Z?ped 5%ep+#0那D"ul(p"i~fT("#NI@:7 ]k&lej@ Ъ;`I7`eKaWsۛJwOvikXϗ9=pH|6$m VoHض;!T 0h#%l L/;%sJaM44pK ]pXcun/#Cl%-0G ,04]|]k o}| d#xͪLUx%?/T x\W-~{K6@y }'60N&FlPHF@m?S{nwLoۀPɰۖ*/g%`y6ٿ)ӛۢ8JU! c'%mnuR'z׾>g9e5Pzd9zN3}4%l })y,Pf埕}dK몦g=?%]fz(J$I0 KDS: M!<Of7ͧĬfô؍ƑN HfG\2s~gw_jm}#Z[h}KPd9;XPg ֥.I@ ?O8 I [Moa\{m\0fĒ%hjW=xzu~p"3 R٢f|eռVJB@CPWiD\׀?ABO66žD 8 oD?5{P&ny85@17&X m+fo?CfYD)sf;Ig3Kfgke "*!^f.̺T3Dnw~(.{U4`3v2s,tF@#rg9N8F̞^7H#M`^Ն4ryWG'1xShN]RE)) XfJV%r|W/gBAݓ:BBtlmaCG.9`<+@8@pUI9! R +ݟPjցOX4 M+ # (NS<%=%xUp`QySaDBLh@P1E!eDy%>!L8Gp_4w\o)=FBX7$<Ry=-#vO(}Rʮ Y0` ̬R}#lP)r cbhU{J_J޼veC&@ygό?FWF4~|VǕ$fB=+ v3?LQ۞G /sr戣m,Ɩ @!u2x^@٦ƯwW+\6)=%*2BJ<"n4ˋ)9` zauq:z3h(E!UseU֏O`vqcBlHpEWAk{ ;Q &\އwN/4fkkJ5Kg~Ń7k:BvH,"=ל E–Zf$T+"]`09C>;V M7)4; nϫ iد״.[vmgFzܷwb|)4϶N i?;wĀwU {8p( `ӎ)ݗ3y };ԝ;cd^}y%pA5d]mv`m&nE~ع?G c Z?8 go&tEfu@\wWtnh(xb*4ڑ.37W|琙^R>Lgf5MclȃLgZ p8T44&fz+~_>\n`ܔ\ SE]Cp$n?_i64!z'VHwlJT./Y\M/}  ?y5-L(>i .Q1k}&3$$~q3DWq)[7q'r_?pݷs<>Aߨz*nmo4NGۓ``4`1/cIoU} f x! ;GJ} 4(c^&i[{8LLb4@H@h$Q SԚEl~ÅM޾171|֕-:KM<HNd@y<,og$xi0^ g샣 ԕ2oă kL}bdە#v}ݻ[w`? @D I/k1yq.[hHX `UOP6z[dD /_ښQҭ{2Tph}#d଱[{_;N2r+~/4Kf)$ j% F3PMЙ)1M'UJ( iwMc \f _~i$;xn^\U <#(&9-{=(NKai*l2AGtP@Cx] j:G񗫍RA%!r@.zM21)s*7mvţBEԶb<(޻ڧ7nzTGqAR:@}5oi&rS}j 4ЗOqz3' gg&l`Uﳫ q=x bom'IJ `,qϪ B*{7~5Xg<-&HL[!G'\N?f C [1yx)|?Mna<i_3C9[\Ho Od\<ph6Um_L㗷ɲlSJJ>f#a66pM ?,=2? x 85/+l 1F]B"f1h/ʫ+,* &$'H=pz  Q9ŅyԒƋ<ךƯB^#Wr>eH5|K6i=uT@4Jju. @7Ftpf%e\EpÒ=ϪO7$bǘd+;Z e ":6\4B6[wa8ۡ9UW&eM`ՙߋL" x^}yz?+̬bqi{;ܔ:]q#RILą4 `͆6vyMQN?ø![xƘ3*YR9YZ'!x6@Wt1/fvh1 eђMlu{0uir;:Ͼ߳4-w<2XW_9Tg'ln`gیm؟Tȭ pBMe>+ VAs7C&qm|0z?U[W7A`,J)G, Ӡ3,{ Xux~ڏQ ]($Qu-hiv)dbޞ*[A.F^qwX}_xT7Ӵ|?nACL-VH7fp, 0 O7K<_Z 0@ϿC y3lgyS `𲩅- K 1Xg ڮNdh# oj _ŕGs&ktRHAe}MrZi%i_)v 0͝[l<1ġR ޝ}ۺyQs4JcDL9]Ű /Ǥ!UNNM0:? mQwL?k) WN@I>Q xM\dF ?NE|?x+oXx| pE%}ܚR@@/ej{^WMZR6 0AxU] 3rFHMhYgMayyUG ӯm &0# ,rr4VJHŸ(*XݣXZXF2D4Ek/3EL-訟'EK0ք*!?6Z4ny}LϪ/rKcE7kTV;ĒS*f.-r1=³ȮKFPb>PK%Q܊7gm`-f@Pd-<TU ]i{|8X?,/$d$ J!%`g$^&<]ٓ&v7u75ɥ7YEN~}%y$o6l]V KWai?POM5Սn13vJ-ouv5vcp&+& \Dp Pf Cd^)n[`o%@<P n pܱ}Q⸆S{5F Ӹ/BRu%*n,?xisWDVloJO眙-[rer[9I9,Q$u@{χz^*!\ƿᓑ tFlY2E%n_ϙuruEi SB0cZ pO%ޛvg7'`2܆8n-fSL ʈ/6=Vwv~B s9Di8~h?NLXk75]eᓺ \7wfp$qU<7/.[/scbK3yAͤ54ڍ| -#Ohޓ]>Ȥj^1U^/@h'_':Wظ a^6ϙf:Q|lWa슬ɀ Uj!+ I!#fWk {\v'xjI^&J-sTjnKz&#Y|>h#@ ؔCS^e0n׏l:+;q$1m#NIrUց(%ֱhNY O /fWX*)^?j D0+Ё_PELfMG0}[/;CFbGy0LܩmxpFV`UW{xФ?;׿#(%"<ɀDJ*2ZL;VwEE֌X1{*5 %\2}Rk5 W`+*m|0 a'&?Pӽ}+ -+O@C@-cp^8Wp`VXLNO75GJ.+<ʁ8(hmSjuWkg e@65G-?$@uo^^0fsu 7ٷҖg" TJ _R^&&dN*.$Ġt`}% \׈YJZէRhqrol U @K*zHB3mF_s˵.,qLci(Zǰ]?HtDڨ(O͆\m~FD<@y^i:&,IQ&蚽a!.|/6:m_c: O|Y,FC H"@WL -#P鞿*4  7Jdb݈40wߣ>oeN/?Frn"_p ?Epq }">$rNXuր+Ƙ0j* /"@s<MoƩ5T9>(?S*Vos6rފ9jE|9WZ.cCV_ RWL/YWR+drwOg+UPʦB|[yPoT=w E jG/|Ё_U9j id钬.;>oK8~QT'n<Jޗ=3ۉtҾvyG6erߩFLcHM,y/y/_gLN`ڗ/An@#FG"@Jd)D L ,-P#_X@4f<hN>E&>ߧk{g0j}0(.zVGߗ(LN)/x>=W<[/s{Y>qƒʍ6|Hq*wzmqXm r ෞfhؗ}Ys ՟ԽQ^iރ*NoED@4Zs 퀥Ezhn9%WK_#zs&3سc?W[{n|VM dA<]0 6Uxwg?p1mXzBchmITM֛ l)e4*)V BSuWt`ӯ4!Z䮄za3`3Xjos%WD@03Z" 1Y ;e5Nw6ߵmy;V$ߝJy(P}ŗ/dUCZJťfQ\s,F_)?͋>ՕTس']%prIs h{ݫ" !JHr{k-"DT7# ZD躩HOat9Rp7mg]z$&[&Я1GU?F .H&e7=u]O9]wuS`negS< ҅'VcD|I?}F-¤KJ IE8LI *› up:xE+ ë ׫Ԁ^}h=ϋ{taP-Ec> җ<`W{iۓW3L-9}~S# -,y_ .8s }[h ̸.֗۽1Х II@)tVnl55u+Xàlq@S\~ mfPt_ͥ n4LA83 u1D2½5šD||k6ZfF0Kw \eXlUr yH.0䩀\xtb_L=:)|1EjL!D^G:yeLj !?G OKtd: oa <"DB9a̅O~ #6 è1Boө-4Om~ 9h́h6`*U=<٫梹`"QQ䂻yu= Gf<'q&#~J8^mMXKT1xEs-:^|>iOn yi^XD";)ޖCPYFmAH@I!AP"{&2p`aP)c6WJ{+)@R<)+OZ7K[z~K,E{<8lxeB[~ǔ1Y&V@0@ߟC4`r n2Kl505XoNIn taaJ)3YP~Js^ W#::f`W}ꕅN9ԠD? +J(E8Zy1?/sU¡*+K`r< *zſTϿKi(venO&3 j@orM~]SBv04EUOضȾZy>\/"73?#Q."OG8` 5rn" ^[#);wZp}</G(^ku|ȩDëZ}kl 'E%̀x݋ t#؅`!,`@1-yܙu9d6eĸc8A݌Fa$tXڅ+BaOuƈ7QO}\^RY\~O7`_i1ހņALYݘydc ;$OdTI5(^o 5vɉ 6ly&!w`F~3 dyAdkR@-^dҠc>=3 & *f3!F9E _<+ml 66u?Q*V9Ǟ>os!rh ;䂌'G>(޿N4+X\yJU WDj~{V#@g*z^Wd6$H-XB(P`P=|y_iœn jBG_] a_'o B 0{ɬR 6<Hiʑma 5}s}c+)`͕ϿD D&f)XɋB6W6 lLk59Fn:OE[Xpqt` k|`(ہ׊l"T@|m -4Xb{^xaw,j|O<<+n{mhb<{/.s ic!$y"2%,,o戠oF䂿l-xO XJ8&K,| ˈ*=Kt%h^"yBK`DX6%1a`dڎYW2όѱ@d(7k9+ kk/x⫲`$ϭ6L.#pdN (tB!G"l*d2Mf"?LV]OT~!ِy^nS M~ gMO}̯c;,\͞%b4jP>|ӲF ? :ЍϳNTMH-I-"#BL Tlw8M{j6p޿17_-驢e;\xX#ſ 'j&qޭMh6פEbbrq}9 <}KqXP(%B?<$Nь8c"7IxC17 dAtds# ~M@/ '&-K3,vGX|>mV ߍ`ɒ'П#P RsR -\s Y"yon`\? @@7lYpmgO&豙ɀ*V'_A,kSXRξWJp&ϰJ@cyp%tup WwT篼/q#12P9)]Џ]0@pp!޽m=DόyPjVI=P,Sjw4+f<_/* t!=:P)R-=Al:!P5>lА_IU=Gdlmŷ(Ց\8?^9`ET`(Q`?xAT_RRx=hpnaҟ;\@d:L,m'.wNy9@1fY/KVWgrcȕø+%1xNSH  =#NjpķP;UuZ|.q͊&G}1" sE1NřçIEi}ItQDmo0sTizT#T$Z]\]E 6@=aǮQ- RH >{iz\}ĈDU][0ROZjBxkn=矕)ay[nW!d))[85Rg―IR1UzAQJn9D5 1K@M/@ΗN4[6Fw~ 67Dδ1כc2Ov`]!GyxQa/]XDv\8:/ǽf$ H{SHQG`lmyY/4uhua"X}=': 7yӞj{10+!{Vj 9%(3C:!0a#E"JI [](go[2X\XgxoRJ9z&U)Rdg{O$ypHTL.ùI\hv sZ4(&S6/#ȉ@b-,cay!Ͽ ?g1~6~jMs_ߔ4w~?y*@ pPT# 2WnW W":i`_~E  WV5;p?[rn H @)/lVߏ6O;Pz ', ٝv%e×n3 <+imbiwFEFKN7ϕ1ћk#/;;޾C̅z`!"0n v$p&qm°5KH% fbD6|zr{NV m$/ڦɛONtٗE^HQG[ZoF"h8IA0FlĈt̢:M|߅WEgt c6Z7{``u>cpBdeͭ;JAx)`Od%H2yj'pvn7i'oe!q#'ω^K$_"j*1ߗv 1`J0lʳWyb}%7_Ja$@_){#@'/DJ@'  m+_|I_ sp܏,[,??U¼m[x?Snu<\.W+F,;4+W*zzA%="UW"ҿH (p_x,R(;#Zod GKs֫upRez98^+P@ƪj5OTdJi+% iD=oUDL #\?>.HgàMᛞ)NzQ3v k}Zq[^;ڹ̏c DkQZ ҢwK`ͯtMc6Tz;UzuҟfOz op =2{8 kF.{}p9FVG/$8{`(##-EEQ䝯 `n"Ca9C2Y0=;&r_tB3"ό¾Ry&OK?oz\.?=cV$eˣpU Vea!U<#5 : |)f}Uoł&P)x `o__)?@t+]1$Lt?Yp?G<8L9Fd.?$ Ll ߏ%N({ėxOgpCD/3(D%aDe@%sdvv6^uտ# yT_.\OtnxtU[qe>OCxv7.u/4tПdXt>u!r81ݝz'㟍pJ N?Z&Q7j-F$<-B4L6Zy6|EH ֔)8b1)0lv4Y͵9dD& /|tςZo-7Bf~ה+=?U +g- $[ "" k_X-.ˣ1: <] b":ENx¾_~z&`} _ @Zx\Si"2Ggx0+gC6!Ou_b~$E 0QUЏXP޳bR_" pP_䗞P_÷&}E5 s_l$^֊/& ֯+.њ:E`\df{*+պ^V4j B]|̦@U3z& 3Hcj,PJzI]\JNYHρSJR%,󫮱mw2K/}Rb+a`s\=y·od4/?8n Eq? ߦ}=MT-L?xytHb~>U<9!y\?-W,tc*D}xAGh@v^:Ś3G*H"ڦczwj,-aL <~n_P7-icwpF^$5ی3D"r{Ƀa|M$urdQL[T(y/g?as k[%G[E}S - ֞ aɵlWJf 0B}3Q sy! 9}/}'ϱ*~o'e0^4s>/pp*[GOG+}gB$ %Y2yKEeJy8ߦ&q!f8`3!z=r*&Rr;̓F 鞰8B<ݾH]x`^k"zp;1HD!X#LN رȑ=Gf9y Avu9s[X\EsɏH-obޯLv|O Vm| x6UlK%%]} _-_I0ceƥmywmz;`5 Vr`ISuXHIN\78Gc4jZP>I8K f,8bǹ^CUwq֖K<%':#E& f=_ T禨*~\9j}ֵjt7sՀL 9_IجVtv#y7bTZ@bA3U+_,O4^w}N:Aɓu%&93?GShgha'XMےk2+od ~g MBMas9,ŀ{X 0(im0UadW[E!6)Vl]h`f7Aݭܦ9ǬsyycA.qJɂD1'#^&v#:!&%F9M" t丞oOPm3InXz05:.p0>9!`neK /9~e̸#hq |Gˑ4w#]\hJ ζǕsqT<-nj|؏q,Ʀx؍Y@#8sG730C 1m~?Y Ih3`Hǹ%/`ڕƤ#qk39z Rv(.6Oњ -#ɮggS!#5^= U^VJ@W/220;%`ҿvj@W3Gq YV"z=*AMTDR H JQr׋?~/<MuVkgO{oT&q?I$ c`>޳]\D' D嚇=0͒'1P3A] n<ÅZ1mwd|/ؤBoTf0)|Ec@hlၵ[=NhFt:p*/*;ݸ8ڄ5V|Mm4Q?}x7jo,ntnhɉ~i<#}i1?OÉ,$bpߒD_pñ%<ۗwwÞڝy)v8o;%&PX\ꦌ>qo%<{>\{8k܆`oܵ &yߥ OMs@mqt :HLΡ##3'HmOcƌ'fQ(Fk>=B?ΖBx|*\/lIj`ǝl;e@/GUW6e @5௦o&/K*~Əbqg&PDJ? T Y|B?&jC1@ki|>Ç.\M$.٥&裩ާsMUݚYL_KuY'TW*VYXITKTb+HQ_m+0W@]<5h~k5Z5Hm&X*Tu }&@z>ZkGyC>$3O0> [B_c=yL4K`Gm$plL%oDlX3}2pc.{>unέ&"p)PYP WF`PF:FΡ5#ҿɿc{AI v9$Ljvn7Ӗ!#pkac^i]n,FҚx47\ A|^ 8Օ4ns >AC w$ o(}Hm.!Haee ;;(Ds[ry)s%yWD#"Z|};V[q wN+[3sk1W xAjacC&E[ >x  ˛/mH DԷ`L*yGW*3: Yܤ CSsλ]98GУzqrS,&㤊|*| Z:cU]o*8W* +'{W,jop? ۫3BOu >"A&;FSW@Dúls="voF XiHlj4hK 8%6(!u   HHDˆ p@@nL 3b Jt ͇#iܞۀ[y ZD$ffwfpUKH)N9p[Up+ \n;!Fu.™*™Y=3i!쵋Wd3.)2H[7\[Rx%I ŭ,%xIHE^.C>LV1K@N00DmG,0y]&QN8Abxp>XfhA߆ZC{G;+5Eu x|rnqSW>.JrN/uS!vs/f"J::G!"z=Jy /cdy*-\jnLc@0])Ұf&wgpŎA+1[20{ @+\*"`^W*ViN̅za%^+˚ ?2>UǏ ~8*Sq~03Tj'@{*^.0s =LI5VN).2ϋr՞=~ϟjKJg-yveGnƣzFZ"2'!70.q_1RB.w#-tz#Y3sH:6ߥ{\vkDut)$ '5D^#V;/k/<xi;ld``0K w,G4 vNEv/"&{U|5?{i_Rf#D5>–X@0aA2C~oۦEj1luh%tN{m޿׆/c Kd#Ed,G?Dvΰ Hʘ (I2`ˠYR_U?,PuV?W%{STW&ł렯D$oW,Qs=Pj0s&@k 1jz0+5T @YHZ=j]uyz_FڰT?=:?& Lz@}IcWր ÿ8Lue5J@ p &ƚܜZ)ȁQ'^"nnwyrTsNZC9{"Z47,ztDh*Ƃ n &UL2M>XpN"{E_%- -'L47J:=h됵ԹpCtl^5,&Nros΃ךx]"[.c:<ypNFf+4 L 820쎢/>==: ϙH{c<-$abi_tXDy&!?;ɯ`lop=e ^$__p/3O<5:v\k(KQyS)J疏r\W;b8W;O?>;`|g-n5㝻 2+HQ$"P\xEؗ`F_ڒ2ϤiGzL*Lm@5@G޾s ?'26'|m A<92Zct)dYwbq:*jCbu'fGIP^Sjy2WӕZ_T*qZ[vδ>շ_W F]RA(`h UٯjU:>{J7.%oB@ONT5=^9ƭlJ]egk4pً=Gd woI(To5DbБ+^/5t0 YjsJxʟё鎄eV=P7\kp{$I,?+ٝmNoKMZhOB`/^&ЛI&O_y|7ŝ!ƃvvC{FՇVMq!K}],Y7.>N|.Y i& W4-Sf1Nq<,= "B3э&20nct W8_bN.Hms4WpB^ oea|q: -z'C1B,ӹW3 "R N"PA\"Rvs7eR!Aܬ ݸ؇G e-.G- [fޅ}˯[;n1xˏHA~e B9%PE]m@%KοT3O?k }.TUM?[bn t|VeV?:<x9wr?֡:r<[UeUg5]PT B* R[쥛̈́SȠ?-y8">Wy}~9π:rIDATT+. N{ ugU @52_Jv`T)p ۺgܵv_on7hߎDfzC 1ݩiykO2x58oz\̡ߓC+jw&nc.O)kt }{Cb4Of2wI>=rt#ͥ@S~m@Z7qAX7t,^w3*[t<20f47t:_idgA?/v Y%!5 U8aw`>_@ $},QmGS -hǨ#`zQ q5JmCh蛄=gzyc D!ڃAD(w҂+P9v>O\R^MmE#=q'=݈p ѹNv*|?dםcsYxh~]+ϱF:j9TBYږVF}-8fqƵªXZ 68̦ȁNŵ}@7OŶ@߽X"$J ]0; +tg[}nZZ_1+jf\+~h~rqE3=UK*0甗*"**D H߿ 0aQ@+3wH<K|:tntx]w|2i/fOLb0߿ђ%Ox'zҷ25Rm6\…8E@SXAPU[!0+=s/;p.# !$WaP+ڹ;xcH̉TfIZ@C%$2=[.ɢLd;Vc^ 5~4LP;Ń8iĝa3F޿cMFhYT@HRX+4>kER 'Ջ_;Sí  c #`ɡpy 4v~*rUegSƷ0qP3N~8(xaU|6=RmKJYJ^ 5d;/Nus%–D8UQ&PU>?;Eĉ(=A," w\ԅ̀ pE[" +E10{*U"Z+ uҷxp&? Ls5!P V T_ TQcAQ"/_o2*7 Q'dV۝tytdl]şx

Y@<{6-Y[{3smɖdɶ KrI9'IsNQlv-Pyp@Fکe:B &%X.31!h H-pdN._{y)8QfB^fOOD+s[K7rsV>AWl + RpU Pނ'^l *@@vAL!B^Wau7@Tn<:#b߶R 0 l$$[* <_F$lyڬ,75S#r~AOugO3D Yv)Ҷ~}g9`e7u +I V-fて/ m гo2 Lރ @4ѓ|g_~BR&=Ui)2Ɖ$SKVEӘ+{%R 4b?a=FAM [ֿ_`Ơ#2/GRw@wڗeimdw̕]h f8-bu6+*3NŚmo{E p KHMnΦ})˨:LYQ/f ]G'Vɡ٧ JJ>!-.|>CLGSp'XkuMUdLfP)Oaiy;*J $l@dV"Xفw6|SxË;)Ji9;pY#LI)W/זNjǷEgnxW3w ޢ;`~eln\W~Q\@Y ~[- p&r5@o~CU2'+Wt03fHзl2nڀZ,,Ӿ_I+k KqOh?`"@c$RO®\e dh*d}y\f\O!, !O.}3 P/cricߓSs sw 8|?žze'1 fG`f27{-t?ccUZ$HO` RDvX!h?/D菳Jg5.+?] c2p*sYayd#qI29Xځmⲷ3^?QۣM6lh3}3}nj~n* 9љUBC1$uHPz8x~Jӄ)8We?q Gm|C@8f8$}bTxѥ@?N#ȕ2~p vیJ {3,i#`XnHuDJ8(@Egs],//P1UDޙR򅊎eK.l?D~ܙ5Vqn8g/̥0N]Nh ;'SfBڬR )"hX.s| [ pnoݻ ''+/νq߱ynYb=t[ܼ4?oI$ L.1 c$$ ޵K̪G[Xo6^2R i5e]Ɓޒ3Ja,RkױN)ۊlyV$R~ۿwq=lݺ.b4WP,̫R6]\y!ed &B&BybpɅO|O_M6[k՟֨6RC!d]{ 4Lkcgl 䢎"K xDrÕ.{/p}5ظ-wjV b]o7 1CHy0FD$`R$eJvO << I"@̀ޮU#şM 2dCSL%(B9Tak$0&$cԍ}W].{Ә.Ÿ^>رc~{~X+ Yu%[ی8_.bҘBǜ]fN\%S]H 1|˖kQkc 󸽱^`#lH 0΃Z]wzjON*^fsb&eG#PnYbIH>G1@1ED"@n \ / 4OkC'WRh l=o<"jgW<%}|$?[}1>!g~|:BwbwzϜ88&'ZA-$7@4I X'txW5FXgY ggbEe]e\Mݿ]W;Bv;!W.-8CY 'TцJye!UI9k(ulՖ oaֶam]T! P\T" )7 7Dӹ)Ɇ^Tf{t4:a!ר `߅SF*Míb$K7{aOX3]Ip,+PjWhjs-vow[wcl}$,vM@qz0]ϴ=M9(fYkN74lR̬dVݟ= Ixo$fYـ GkƲnC %SO4>]`!\JUuOu)}w8_#Hv04[ą >{MW$W.<@ |'A-mdvLXk}&͆ ~ ;fg7S[v4WoU_.q7oB|ک5CYF}Hm`xck2mo06] hsU5筛_ۯ ?ydUR`{]#tVVŚ8'mz3E !/tE_Y-n|/)XvAb*"f$::Q&(A듍s]'3ZCO&~[]Uv^k)}U 9E8-5uX{g{nT#d#=V?Gў^hhZ-S]|&y+¥pTjފYb~fd>h.RyuD .coq};gVL@Gz|K /*DnL ,rI@f]n޽p <销ph|OF ci~ n^5!$nX-I=|5Q%\,v*jߺ,!\ؗF2Or>8?;\veqe^aW-Wqq7TO?o>Tq[XRa,o`%oMo!95ċkO9Ji.@fR-pŒ@Ү1yu+Tmye.7?}ܚOu'tJB6oZnǍ$dr]%쉙0"wyoĥX,Qs{q h' /QT e>'?``-e|2T/[}r?ONFNGtb`6PUlZ2hk<;/k['y0Ψ` ܓԹ  Og lFC{Z&4Q,i߷Q馿@D~plK8s>]O#s;~Qj&Wge}7Q]Zd[[(ȓXGGdspBH >8-0YJ4%)"`Rr~!sdi M)(\poA45LyEghe%DHHeatl ^,7+C$`&QٺD,d-oIt};aN"r> 5a懑^Z$-EgNoО^|`o &I/. xكt\]+lY걞Ҋ5!$ʪ6$A-uB9 0(yz38͌Ej~b{,t,ɬ IFtztX_g1_zjA=g NLZ#e"H쩎z0WpGmf,_Y7^j (MM@+ gg; k-L"{,) pLPۑn}M"* Ғj&mh:U$pn:W^U4Lh$iwF9ajM(/W zOHƸ6iK7!/z"2hJU,lJTy4ΥޕNϣSW /GJR(Mn˫qkXe0P(/"=Tq_x2.(ƙfWʫͮN7>H_M]nl 0i:5 0FG0&}Q LE oo((;Ȳ2 Puo ȅro5TW{Y-FH/U!wbdFwN|p=$u fc9NoJu0ӈHsD"1 Pؾf 6o>ƍ lv1>Wi-U:YԺ~sJHYsILo>n!&v;"0d`$*LnF࡮Uj.8x\IyEf?6&令B%oI3~[ZF\'{q^l7">W,x7j8C5%m5+5 ejyySfi4{\͗S`/Gevۃ`& 1Qc{g{LߨKmL(op3'!(k=#~ z,v%N\OL}m ^ŴD:.xk>a>؇Hh }=e'${׏wfA,U43xP^>k4Y>%p['L]/{ɩA EikB"|=_{URr۸"HS̖/XO)6R臷tlU!Ya,ܪDet@1G6K*˒ʇ^A{A0$Q]L?Biy CĀ %&Q?ZĂX.0KcReGBg w;*0@e7_M5l;~I@NFFq&~`Ϡ8N=S#5OԀ_`kn1$@y$>"`\z଀S\ eKTt4*lx _Nmcxa^ \ףYa:4ai^,FWM\N6O ySt,cJ0ND0P6zҷ{^5YBy*~*ⓎI\0d:|s; /Qw5_多QqP TAS|By ͯ!Έri]@TyQylz!}?7 M7cf@>cb6aSwvXTݤhd]4|->3FVd 7Zo`ެ.owY8K^}g$1j_)9ޖ-/.GGd|6BEeexA띋#^"ؑm? |w5;,ů%oqiAяXh 2ř";V $|6)ѻOAz : #@Gd5xr /#/($ K~y&ؚ*8O{h-㛩5}ajDKn~E$.EoNK! l YՒ9GX W$]p"uaWbgڧ+ͫ~ k$-JTD1m7LhrbW^N>vI;)|x pJEfÌ A& DCu ʸ02~pkĞcZv 'Q$!#k&}46qˇB8ձWdF3)x /⥆%w0= e#:K\8$<_i}%4yp_O ☢|a"u5hHIUL& *c&)v|^o6Ϩ/}cl'"Jp \pre7[pFp~4hS2R)|ٍPdQ7`nOp欬DoRccM>蘑ھg6N.i|p_惩 7nD\IIDrx t X L GxaZG{:z8 48q >m'|qD[rL.K`4YFl b5pM/K>;FkJ xի/ FI1g .u}?7D c80>jv}1ҕцbC)ׅmudg8^,`<WrizsZfiK~1Y2>řn?NiC/9F -ÛP:B<7ϱUfXZXM ptBP~F=L378t`ϟ{.޷#~x'=Gxu7%v`&5$N G,`gK s̒”%س $(ȔH36ʭ`"!&/z N ˹ܙ}X*=9QNM%L5!&}D lW4n pv5ډ@= xvo   B,/˓38;©q.ّFh:3"RݡR RV2ǔ)~--E=W<`4eurtiF^׫ق#H'yQmxՙ$-9`-mw xMzڟq@6lX[Z9-$~?:\%6ou/gqeRK|!fj'9>q97/{FVWxf# e~ '3EqvpjZ7tYxھuOd `Ia2;~Y@2{p 9#2ykjkqz) pCW?F?g #EA\R+;61ZF;O:Z"ֵ+?$+MQ%$S1 zsg&(֚1_$௮Ts2$$\|!܏HoivPCˤrm杀,1څ9@5My6U#W~\45~ x"NͲ@T!Vl(fj5v[]Zcn$tĭk"o -Q{X'% {┦ fX͙w_g1RAǓ'r tg[@S7pf(L}ڐ!vuF,Kh.⧩9eMIZNqv:&Bp?v0,!&˴lR-ó87aW\H 9f%2K&Wqa :ޑ东a`U"F|/LE. H'Elg])!>h 0=(ZfÃܕMfHi5Tt1ȟٽlNN%T̖L\K?z۲7?M_{+lCj`P%j*UUA%IkLKU4A8;yWߍdaOP= yV_o*%Qu㵦^0xa=;C}u 8Ņ1ȟo:.Xݚ7x;ع& `s<c\vvK4P_p֕ͅwkNG^rE@5>u,#Dߓ׭ch ]YBX9YiqϔHAȮ"mF"ZzIM>^),J``Dd K:J9^H>PcdϴނІ@WA4$@*0[fI@ xKyj !]m^__)N{d{35⽫_tRZ:9Pi AxӴf ❮~oTyF.b?'@B7oj(n}Y?g߀ߕŋqH:+kF<7.;Th) ,y1v:;,൪(3~uR6 .10%L@5#4վ.SR2^:9?S'@GӺ8yݨL87M~/~hz025 EՔ*! O2=^nK)/s\J<>3Ph@t </yhpGK覃EzpUwno6/5k?:c)YU9}nq~2)k $Df$Ɗ.'X2խʋr%ȯ85:)wjSɌ}C6ɲ*j"ܲQHNUT Fl;_:Zꈔ(f9 AűHۼ8R S|S.fKILp.瓏H5޶KvT.w ūMi j%.NyY%(,qOMڃFke4CkD&_T^{Mb!(GX-'hH]lWlTG ? 3@y(߾ Υ۷kS 3EodH|2kᖐ ו+ {"ظaJ058o8i44…6L#HMhi Mn}G߾ jo y $PO,I9GI ?F$UDv7; }5$= mrh'f_TYgv__u)ۏO$ 89gܩ$`:LO9L E+f_4Rٲ'/*:sr >hYKx0ouY}rd8*Ve D^_Xw-L%lq e㚍$BfOɮbpS7 PDq]BN N% gI-sg'i$2yxcyrnxuF4~DW&>hͨupqc9[ѴH$d*83ELBklqsFHrD=a dr)dHIұ^N_ ;"ux\7#:מSسAWxoPcri}-*0rݷr]KU%jn2 U hǪsR,{ ~ A9+GrwWS`d▂ t껃훏,[VFnj?oI6wn~ ƿ$[vSW v?3WmN𷬔ՖpCs[kZ`$VSHXvٺM3?M#Ȣ -{B ;TDTgzgU5XNz",^##gUe?!7݂E`P[^ֳgcK+3=5GŜlq3`?`ژػ#Ʀ t_C@eu3$]' x6/{ B ޼}ۗ9iR㴑GuSm)9c%a!HY+!SxD"C㳁0$*.mP9| 誊Lfw0YUNP{=͎d+ Y/#_N'c:xW6!}bEM/ g0Zpe]#ik)8>{__m({#:&5`FfY:rζ `Pke>_A|e<-I6)@OR6de\G8,b tHc)lo6d? 1D|CS֋w!K`o Uk;TkF 'V͉U}"?1n ^g ^O৕okmbF *8!`7b < cC(}a BcBʧgӘJ*xqZIKYVIP]l7=ZWH[q@$|wv;?]Ddv7{H@RS&U  T4EC: !ꋢc.? !_ ^-1/Xz4gY7|Jk?HN`'BLg;G|=AN 賩Ͼ}ޚƿ7,j5W@&寪~R9&⪍ -``kg>$9GK`pfg4C ,® X8`Ms?/5YM0@##ۦ=qf؅qw| ]IGv~ ̅~|4~4 'Q EU%?C2U6jw_RR߃oU=/KB%/D !B&B:9*6T#j(zo It1P}ŧs2A(\y <-~iUũI|y56"kj .lSϧ<5:Fb-j梔J`TDF"U$rym<ƅĴO$)A"74L_f7wzܾ~bCJb_^ჾnQuPJp%N %qY^%$A 'HԷA69<#FJٗTVTo ?C/U8J}~GbF^ں%ۻi- }OKb+o) uJ _?D}l"?Z g$N_'pF@gʟ??Q>onڿJ&@Nb0R@znc.v\Bϕ)t\kzØ!)OX΍G՛9z^(weݩPuDٯ' rsvz.cҿv>?i5Xě 8v)/VF" ɨWv7"9KYksc˪׽ 2WD--iD3O\Zg'=T;$&S(3vo;`DdXMGwĦ5\Z3qs.>*1`mIISL!w\@-YrRUVW@ei %llVV-HjcF$jZ. )!Dtϯ~@2[~KF\EHCQ"45Od8~ h~YQC >["Xi¼*VRI%D>uKϓy5ˍwV#Tn tQ$TmflzHu2gX%.TZFGПdӍ3.r5hF%7Ew5ӿy<7߇w7|\c,hz#zRAuj./{@Zvw' ,GFfsv9<62(!弤Vk6)͑B‹H_+KX[T{_(ǯ.*+0cvv_=zJu^kȘUy`o_q6 K4şoMZQ=oM> Ms?I#@#d ӮY_{څ`0 LBJ+x*Nvd_T<C㘽 ]'Ǹk_* o7ϩf#TO <1Po.kVMxf Lv>f7oYB{~Z{ٮL0vM=T1@6 hsT xVg@F?S0ǗE&4_jF~G:*\j^ieY35pMV+M[2~Xí!]^Nnhn[ =A$#A<S r%$_"[b ªf$/f~NhT|6)`YP@BA_?U\xlpB+r'5;zK]e<]],y̨T.}>W2 ?fpA;xq M4m3_17\xh?Dsn.CFjsE{[RU;mOb񖋎 P/5`wzcƿ2 O%{goUFMޚ,Iv?>N'_cK.0qee@E DȘ.Wp _De%\ }Ubh-9"qݏk4$hs]v2P Hk9G']ZKYg_4]a#mLgE˃Q9PceY_I?Xc@8}"⹊l(n#,+#˝;u6!ԝnK˫XY[|c5|=Y뼩 x,qpV M(V#,a0CᦏSh #n$I^"sjkK5mLW6ns7d tߣ_yUG.C @=l3o_&2:/0,p|uy/u-nQ^fHXZrfYLrh:3 e<: |;IJ716\ݮ?O#MGZ'GZ.v5`{j^=Y_ezIuNKPUM̤@xvӁFQ5Ŀ4 eӲOW'!#S2׵=uӤ@P jba-[X_M`i풅hMPgֺkV]Tl=? pՋƾ 1>T֫>>(e N2009tNG4:ôlF䒚P/ +hG"85WLWCI$uY :,:Z,W@"ѕZ tFWJ>g\F($a~Q6WְtʕyuU-("N#HtBGC807x7Hnns}ҪVޗy\K]&uK5@4Xs0^c< ZHa FY9H `6O@`05S7:.\N"`'k5p|/oM SDfIEl5Gc kd~F!+= /f"e2ÅGQNq}'rrùm\)ŷU<\m|V@bHpWj']&$$7%vc'?؞,"OHξ0ZFh:W^wܜ~ -p@WFoNVGF^n(Q`'[-{΅Z<%|7qm_MWhAl*uxl0\] &q$lE#Yd2-KIN őv#˸@G`Ag_mZ_8 ct;"zP &M]y%;=1_ pվ LQ#>JZBӯʈlPeX:h*d:+WR"%HP)cne [~V1 I [YEYYON8u]w}n)%y=~jψ~ǩNjGmT1݃@}"2֔CGCF*qKQZ3ZfQ? 4M&`e.;`Ͼ ;I@=~gs7$HM?C=F$ `H#~\4^אF sꗋd:\ldeic.?:;]!nj`wIjg3q~ %U>~ xho&ÄHstͯ+YpFj{̆loN:ǰ7 0M{^|;Wq%֚UY]v.B~6}9gpF᝸֑37Z<8#d7ϖ fMnY@cj{RKh3\D:G&]F:@5 q٬f TBT֬G1_ʊwpㆀ.\o7M.>'~|5RPS(26S-*}ӚF$_ʾ?% ̬s=a6{l?,0#ROPz8WL'~ ]ߴ?Z[56|3FHM]{;(dj?[}OkJ-C1OZ6t z0&WW+6cny^6* 0[jխfX$>Ȟf8xqFq4hPqWMut=UňH4q!,UdیN96vZފiN3a>/*Խ!qMS-sa BrrddQ%$BZPΔRZ *Kv,?/)J#(ax*1/BH6%*\߸l^F[a9ecƅ)k56&JxIFY`> ?gO;Aw.};`KWߏH<8g~d;{wf8 c1ل _Ae:K׫=WNJ01J/*%}5mߪgw%Jvտ+iK$=j$~īO6|\m0})i?ZGBabND%mGTd''Sp㬎:F?`v)W6Gw/PFد]QZgI!7r*r,5!4#/쑠/F[4ɝUPLz7q77Tnzhc.d2B*<dTM͡HWKkX*bciP*ᓨi؁:.O![5[v+vwJeC!~OYd{̮RO4;kf\w|Ï/G1]oȯXQ!뷴(qo:Ny]Il 0.~Ɨ ot~i`lѾ,5KvG l#> )0N Z$Jl@~fvD j%95J-`ӹ?/o|.L/ЊWk(HSd-_v41 <) Lb؏q:l_/(@L<- 1 iTN~nxa"jSu3}z-%r{\HiKaOn_*튯tN(lf•LNJ7+̮\UJџ)V0AoǑ~.Zwж4lU@=ߑ"v(TJ& iM՚uZòzW@*ŵGPwXҾX4>'-Jؗ[wa [l0Cg=8hb(+4E0*!QA0/\BG# ({qeˢweɒ,+99Y ` A䜻fʖeǷZf $%O@ht歹*?!Xc!_6OOn*ikȬH=3a17r$(Z|MTז _D 7-.t~u]U< 7# *kf?n jaFʹ%|5HrOXDު׶% 9g 7i}k0[ [̀[ @3C c.%}0[WƔ?Ǥ_R#{}PO08iLrLe"ˡ,DX`|څv&>9fps2,ʘ\J<y>ׯtf¸5?U"sqAQX,Yp3}ފ 5tA` U(`:XP΅/H߈=y~ƿ5G~ ߋ3!w|ɦ?%}8nS C9ߴ .`?_UU^ur,3=_H#r3%ύc2dz>r^RiXjxJ@op~hgq<3I\ ׉]6/"HdNv{IGN>ZUA_ᵿa"/g]" [Ȭ 5,%70c_HK]_5F+m"&|yJ "vGJzNvm\w@G/s_Kf2a-R;VS+0X5DyNtNđ?9Q?,(WZ_E{5ǜ%o:6sT`G i0+2P]e& Ϸff.d#~G;Mb1Q '(=gFo*# " !ʈ]plq%u~Vݖ\sH&(7`ߤ/AKo!}%tD,y\kƎ7"gP-g,i6a=;FNnYtDp356N$u; Tt. ͻv/ |:@!v#!\yD͎3L%o'sm34s+7ݳG(v)C.(ݰ;1|1@s[8ӹ ;6gtљ'?k!) "ZW?qkts#[v 8ѧP gt73@|2 CIek^f~5M%C)"Jj<(F{Dڸ麳A +7 t'ڿ$Pt|M&Lx֝Y}g/=ŭ>Ň2 yuA7i8{`!ך3fB4@=67KLVE^˝.ܘ 0GՆ K#~V"`~M3WʁJ ,K~`?ա*=[s@pHsBX ODd~ p>CS gHc:'EGG['y XqT%*c%.K-~i/xU?"[3ݽv5 ?NXN؍t2&kbA6`2z3kz_ EdUm W,r=% | ſI?XƠdPtyhC&|=^b6_NǤh8ۏKqqL'1xlPpXrˈA;y[cvDe&r/-\uvܵJw(-/)9^OcͰb!`nHц%KI jp4|)5fz/lPÓ6M"KǺsp?JI9_D Ƹׇ]^Î/ ~\ RÒŋxeN5)%} N8)R鹷;pHAls_=IY$\~z^z v&bMy'^1Rt} P[|ޥc&@ޗ/t23``['f7 7 `Ma}=~n Y^W-Y*[`&<6ȣ4'GS(:1͉S&ۮPZ 2 '+g +N!2qTA2.Km:wxnL_>?1ʊLxm~fjt hS΄fW V"P`wsaF k4W @$ЌߙRkc/=#w֣t~M wٸB.exrbRvQ0Cz2ջH܅R5t,To\-6'>4N|!5l9a){Clgm.FHX$[Fǥo4l@@@~d%q1ʋXpHmJ('" tH =,S=>dstͳ8uʓtб]áNv ppP\O#Ҕf=bz[^a:Éhb?!g>S&E9MDIz(hC;08#ǡ=$=\ F^$A!㾢8d@'u|>a+?]:9gWEs E5C`Y{eJ{"`uf 9`^jDW-~c_^EF p3pxSX %vǢ? /yd\Fyn৿8Oht1M&{c7$?Jl{qg>߽XHAf`xfžfw:oȀY D~Dk8͋.) @T'0PT'40֨SJP  ?CyNb dWXl55IgSҙ+qN L,!7 y|5G}rUd_G.T]^HH8}S0MnLtDX'}Ye!ίְ1=cEV=gaxsHAY_$ ;ʴLC00]Lݡ.m᭞8>?V`[~/l;[SPoؽu5řĦcWJAD#*>^aFOL=3E5T3Q"1r #$j$`^(>x7<~{S"E}f{Ie +_VPz.:7zEʛOK=,oBd=QM$ I]rcA ι}7'|XHa؝m6a/lLhV}LЍyr-Fdo;HE^`筽aX"/E`&fs-0˪rݟoc)$H;_,< ~n$L (p,t :6IS6vAVX̋3T1Ts T JHƊ7:H#>'*ZS%zGbg46 BFy&SlNھ҈0wwMM@O>0{8[$o_?5"FǟVMQ̉~x|c5!JZqi fXp ^ v=Yf䳝I?d3FِGtF"}X>[] GAg ^8#DTV_o_&fM] 8e72e'9ٗqr 㶃"V\5' OoD2>s?73P9^Mf/YY?/O?,03-eOꫢ鯢h{^$"IRZF]ρ!B2w-" cO%zgWvƻ@D KV $%9b9o6o'~2WHUʟmQ };+??Ʒܡvޯy`7hT8N @X'A͝}y ݯ80I#U_OaZ1J&\܇r -tib{pF=#gѲt9 mIYR?6Ӷ_z:El~Y,aMY=dQ-XUǛ:2]\.yetEǖg3TDD_9 ' yLK5(|XFHM"@aKL8@t4nK[Ǔ1\[I"cp#.$ܲjNP& Y3qL Bǖ<sH ƮCiaF\J%B.83 @ywN먬f*f`- T"0 P5e5L PoHfIt#bO`{7/Y`#7wI2O>ov͑g3lY@>Kb|dת}*2 `pW@*#"bTWuĽ2,}S%8}1i"ia"A|7wn #NY) JOQ [G4_2UׂͿ0vڗe_ډէ8#m-4HKbY+fO9˔˪%_ PG_/Jv0ܘ@2)xQ7U |r@tPf]jb1r9r!b.R>b! ~RK!W)!+^&_Li>PT㑤 w9ߨyf9l g`?&=8J5K$_Lq,G((){t^&eDE ~2śEz;r]4IɘXRc̥6|j_u@nxdQWЖժȗ7D;y,kl < sgRs&!(Hv]VL{x?OGh0 ^iL`!oÜaJ} r,TudBq#.Ă!C!*#L&Nq(n=ڟ(jcYp%?'AK4 ZAf_pɂu5 K#18ᖱSO*n5f>Gx 1o~7)r,5Wo9?}K= 2@ `3P,ul\u>U 6ȊÝ]`>5 @{B&avjS^nad/L{&3}ևS=2GqEN8od%8Cy0=T#:x?Uj)޷#f=O|vk =~y? Gv)sq}U5Z0 _Y}#UfqꀾHM@j4pด#y^"D/K15_p_Eē}pG>[4+Wu:%\misl糒1RNzgG`N&p"7 PNY/`PGy^\R}a=0)0G'%7DpPZ҅o '8%c@DuqIǪ>:哒~pgIDAT*n$1(Ĕ79Q|?s&LqNj ܬ짳2kȗhWPF+o"[[;+?.}.L8!)mF$M}wT'6'xɒD85^". _^?v ,_6tM<) >oH&I^i skvbUx]R=$Vl6JE#2F3xryģ1_]a Lt|76|poq{"^0PN>XeTd]1i>" i&;okOdI:ExkDglf1dz:m g)6B_,NgIc:ȐgHm1# ~L\rzH{}~ܙQ!HAKV$!e[7ҡIY MGȟqbFw1܂#) ǘ.<Ű3~mLG0͞ |5:>Nm"Wit 9m~|0•>/}>d7 `x?/[?)PZ 4m/Tko?V?]w .'}\^.+[BkyB~",@QTKY.X^<d[ `RRH } %deh˛"M{LB9)wb`ҋy8Ƨ[>9?BAcȔ61(\Üi9Oym'߱ye(U՚W_)`{1i?KP"x`g[) H3T[Y^L|3࿞^Q^yp@m3$xәpGt\+ƶNu'"OfDbB9EM +e-1z^"EGTD0ǰ/g2=W{.`I p}K4;_1Gi+">?\cNgc*RT ;m\nsKLgދumN /<ge*"ZijH*/g>;ݚOZu6O  11JԐ+ֈ,@*eE[[= ycU#v,:""H o[I"->c9 d eƷ1=h:j6AȍϘ?TƢOo?ZPlJ5qNZ\D? ^u/t;hSKՇXHkEP wrMn +PJ g7򿆩QO //%G{nDAe + '2o9িN#q|13 L/`!c6QD\ f`c|6Eg\Rq"4a,VM/}nàˠ*:W%,omum[ Lx5͍;? [ o} |휌`Sbd N{H*/Y-x14v'NߜqaC3mh{skt1KLE/Jf|֦W30O?ޛ"l $@5 T1'sZTM/3\o7XG%= H5߫vo8e&f1<PJh {y\7FXUl. 8 D~*MJH z r^䴐AR:M#RP" =(ՖM6G~!2cǸdqEn iJX՚%bFlD hyq .Fp֡@@nK6+b!ތ4qz=*>cVXm[&"2|2}2X4,u}࣡"3[xjȕWeb"! I2L"'B! x&"qε Tv:M`>^@6Gw?[] O$/}DK1,-EއyG;0ݱutZc,NˮI|w>o$E^E)[qX(eFJeM+l>YY*TxzPT#$,ڢjʍI 08ڍ+&"42y>a<'Iu8顃NƊA95 R̀ kT`=Q `2QEVEZ@74 9JyVr1lڇRklfu!9d9Z N?>m§=./3"lD fLx6D}WR]Fz7͌lDğPp{6QtONK#H6:%mqL#tqg8O?EؘDDzR1T86Do.Q-{ޫt#ފA*\n2:ADPݚ)@ܤȪ~W=HH#JBHi> q,&1"XXG$ 5FS9$ j5 zl(|_;(=|"3YDˤ05ݡ|7jꘕh8 peDLlxR+[o\= VҵA$^ݕ7/&eq_u7]TNm"ʲXp_+ߌ_El̎)t5oT+x)W S^\oCp LhR_ s1|6w݅q}hF^0.T^osNCvi:O)0U$TJ/k ̏%Ed6*%_<Ts*wcnpٽI&֍DnPׅH=msgyܙ#PHgKF*"ղAtR(ӊ˸ Hg4 4"eL/Zqkp?OaЛlvmE֐L +El;U.g Le#{/+E+V1AT>0dq^9c2^/?F# Z28v |VJܴ7Ѥ9>? nf++H,dDx%8%23Q@O;CnݵW{ GG&Ƣt %!# ̋ڏq}7:NѪ6asF6A NfS]d?)L."N`yy=Za/Ho,#[zET#tB_l!jTUDoXT)P75y w% E"Lr\a4 pk]2B@c: 8rƒ_dߗڿil |soN+g`^%#_K%E  $u(J{ps` Ny1.E6o1E9\XFIl?/ǤdڱVL j{ 83S%<) #(ZhZ(c6bs+=gF4"~:N7pMo'U$RSBٍ'p̍q|0wm\q7&%$RUdBb+iQ?5DyL-$1E?0)a"V0|/}L(pB$Q!_Ɛ3Zq>QKDU2tDxH!>ͥy_7GIxhEDlsU"A i.d׶dl!b>O>* ( E9VҠjRqs}lB `t.W &}p9O0.S56G_ -y9D ##ceOP48Nq=m!ot|f@6~"v3kYS{3IP?6x(]zC V$jNJp甙xkKA' _pJwu+[k\n9V}< @AciW AFHVeܲ1.c4Eה_K˔h<^&*!T_\]Me]Էq7,yDpK|2[ n9#*y)McΏHC5|;ћRfQJOiʩN>?ޢͨS81 FZouڹq÷S\(!0&>Hcd4@VD颏ɮk2fd S z8UX@dD"!@$?ߍq7>30'^" ͘7Veű䥍ۇmtgws 5!\ 3:>MI%_j{zY"+KpR3_gg!&"{_v%EX!8o>z{û3VfوH{ [`$m=[V:k nF^zF9DH껗tQtƅQ;Mte:}ǘbWgy)3+:_c̺C1X=Tbqu<#CXLhd,F IVĝ{ $zDmQep3D~cDDX&5 #K̛I‘ͣ}1+-EdKxa*<Q*Pm! l|5~ \ \1tN8}(:Gb)]DzgyD6Wҗ6HGH"7e3g x{a])%`xH܇\˹sI[{ V}>k_+NvL52RW2{X1__j^f`FzN??/Ϗs?X^{lm$ wet4qEZh]+a$~H{=^\ta,}_fs"rD":ufqՍ;Q'кJ` x O&PYLKDn ʭJ] !e좾)j|(›]KZH S:E9#)E4g 0A3sǥ}GYHϕ]~{P$)= wGL^70u8}S.D1~p48&Qcsyhbiׯxvb>gco|ӂo]G?~ǵ)yk'LI?J(&RƯlϧJ@&ͺYdQѾj .pOʕE׵;3QZZ_=kܸw'uV+`hvl0=/Ӯj eyn?kA PN:?"ZӚI}L~CidmZ+U]@.G&H\DOS"|QJss]eM=Ψ?鑑VGܐ=3!^Mo:"A_94|9~gJXhG x+9]~"ZZZR77Gq4.!?Y[=G,Y@4F.[`"ؠWH@:B,؄ XD`>#b{}3>hb;Q|>w[FYp` d2#ج-YP3+a$5֒|8Kf\D=x ]wmXjHj_in"`+&?o>U/$@eDz)`BS@DKD|Zi@Ã;-EMC1"Dx}p/ ۉwSO$x."Tl F<8D{=i{+sbVl6Vڌ`Ol7 )P Aɂ]3 ]8&eF:NԘ9 W!V߯ɯYEy72i)RjB.38گcu-KH sgCiQJ1#9!P@ %DU Y|5Oԫ+y +HDF|F0<;E&,a<l@p)zk:y|>ÕEqpͬ#BO󬼾J 38.ㄜc!`{|-Ѫ*eHjsMK"lMi|N%{7"7.!D V8YY"rëӦ #-q5P[~$"S{H D+ٸdax\'UM8&"8BD~}gt`"`*X&!^`؟Gk2j"xe  C{eǵA?)qx5D`#qx(f"\cZcaqཀྵ(.V:l+OJW14=;qg E1m{t=rmg3 nO}׋Zhg)` Hy#ۢ82 bEX&O~޳_/3/PKg%d^ Va3RߌZ{\_ BWJ+螗p) w~CY{B.]VLX0ķt^1{0-!_!rKNH_CYFu%#fO׻)+-W4|VY^f`^P9"M}s:U`U!Qy}a=x>_pDM @rϸzh֯F`@ij.e/J),hV7|68k%޴O\ ]z3:q (PZBTCG-k*Ar }0']irkc.Xe_2"55\c6kOzJ w[,z@CAǟ`*ic,0I'Y9^ZE4X)# F<>Mkx2& |ofSHFG4k=3!H&k!Cz3v<цS 0oԪ`e627 Zs=An*bxȗPYݨgxW<~>]O!`f@h_   `*5`́ZߜWjڿ"3sjA?YF 'Z. ZFi8C76>8Rm}XZbΕDǨ.7.~ߏ/oH Dz^\N% X xiËӄ<xHG GZbx;;V>f~8i|ΙGV)7g'>?OAvXj&)K Bj猌-F;URTBjsD /y<?g^yj zn3X&^5{.de|v|_ju֞n,sc<- {u,}+ tXMO&#i+UXdQKPp(kL%FY.܅m '6ɨw}Q4Tw,Ŝ \$ErL]ﱴm@\",mHJY/JJ1QsdVӗ2ˏp(.{|; CqbcmKM9B|$ bQ?E_dՌ#w3ia6I=]K@8`K_8ugL=7}r0.ף ? Σ}|!"cyP*%L@|h a:OkJчշnu!Z&ˬ2+X4_c@ݯ_WAF7={AY!AzuY'o"wzLX& slk>ngR x>Q>8Z<ӿ2qV#~^1rU ϺSpEח(}tްx]qxp{Lȩ>CCG꯸- ':B8?e]bD% z;iGq覱siXi0npءFDKT7}kIaTZyb-vSwq]d4o KHTH L@H@1G&muG6a3!%9n??JQ~ިZ -MOP hFcu~G:L4,o/TDf3Z)I@Au9D.L5O@Y[ Fվ  x:w>E2BҺ&gu(m^4EYiߛc^6F-?R>ZU"D*ySc.@ TwD9g{x6aW@i} L ł!FАI/{:l|?;gTf V`6Q F ,{bo4C@|)8'pu] [?J,Q?; 7*RjB~ "y_q&xGd#I ^رl`"|k^rԗ" h߼{Gjk/ K{u@Vnmp0v= ,i!TjaJKKU VcAg"1E"yNǎyTMVc<*s(ȟ3rI( psp*?_JS,U$+lAYzf\>/1A&fb,Qo(c|5$06Dyp_g?vNߚa82ܻD—GRI_ǘ8|=ùh\j[@Kx@_ϧNuF(b?G{vx778E REpáx+dR(d,4Gp(=lH/iH%x"Kd MYވy?Րn#R!(&Dbv>^rм d7y|0L|G}FّA˱|jh| Q<*ffj6 w>=؇T@BDb#7T$Dz(lI$@稸^0FY4hTUߩc |OV"29)g! >ZeDgl_pC.,x螀wqVW70b"!w SA|Eo}t.iSƾ,!pMx{TcUξ3 y )P**:W9{17́Ue`w9I9aSJoJیmmeC|8Mޛj?Шt֢bsVl728LÈu6*+`i~3 *cDiIWߌs1=qvVkh'E"zņ Fs]V zwXH4`(Fo<``,9(`1|:HK,4 nXa;qob~~M#|89Y]rnEG$)",ߎ\Yth.YŧX*7d(n.~x po_؎Do"X#y~+StYl*Ȓ|ioVR#Uc> g-$sqФX0o2GC3Kwx 3),ഺ??C\;mRno@10 =!\Q1H,5?|rjXhZZoX3V&(/bZ>1+=h{DC&OioIGJ19Sfy~)sCXFYV׼ߛ#{E.gEHOEW-JH+5ŝjY@=T".~bl|Q/h5ʡF&6uf' IΤe6oثqg"0O46ef@ 3M[щ-QJɒZZtxp?%2X0pe2EV*n Դ bIc+h,b7fq/)>D!iT@"dNJ-r"e/,ltR{ imץti]F U]ぴs@T6V,)ZtQ?{ٳ2.FUtx1H-5{GN{N "^ |(SпwC x6mIFUOk4hdTM mifJ3eɄ0QJP$ J;|Y|7nu7-@3*9Mz `d8#6b:|qɐ:c3hk*R#mx:#dmn~A2B LpUt c0i4K%/. 4$`gΕ{QZ.^$?q28nKź=D%@c sD A5Лed7gu9몲罒WpS$Emۍ?() mGjP~+`MvG;E,Y0H6Q{{n.ěy܅`r^j6⡺5f f6"E{uqQ6tl$ئHږt-}jBRziX-/Y,!I@KJ"+;<7ץhSXbE uR;b0cSt?v^{HV E@=Lkb(-X$.t8x%`*?&0|\LQ kn9Jő ɸ L11{Q ˔t݅[[Ð/s17`xD)9q6UZE&>o•_M*}N/39`vdydjX huᛡ9fkBFh(^8B^B+w8 :A"?s֕, 9qdYV,Y-[Q(@s *;Ȟp7 Q{y? ޫaނ ScyeÃUl]h6)(s5+B|*]UhDuGBxk,Ûx.*I_,At9ڑhBGN47N. XÑ$i$`AIV _H=<=:~#s |n$`լ²KkH2A3\BNDž+{Sr |8:1VX0efo)$Y UI|<#!t6h"5aRߋ7#?XD5-Q:^HjcS7â7%dh(C BLJ MQaH٣JYy-B^ K V,̮1;!α$ec.QòaHhJ]8p5k%r\*)L1 Qry8V` kZ/s1Rc`eD2h<@(-~j-]\^C2G8F ݁u(9T|Ct|N]cl#8˫/9!ɞ.q~8zDAi~Gr:N!SO[@>P3vȈUB" P( pb$fo/RA0֔ylϪBq?CP#߷(`L#jT.@]gA>9–Y uw`)X!!Āّ\A8ʖOjEt)S9ֻ߽ Ghjr^@>;rwJo49&Zd47jE8^jy9 gرpb$+B|߷)4ٲەėFpe܋XR@e׆tcro$"$]? >,vl9x`)`Ѽ; L5elysAM\p,`ff a!I9V$sk5H- T/ʔ^mXw ϫwְHjlxq0H;6.s ڦ`Q0Kt¤ۏy\caQ4>*ۋiW>{ ,9SF4aZ$~.dXV` oWo oڈ<ͤ]V+Ty9.6*+?T~q؋3=87JޛIqVl lgA&>vW\jGGdk=xM*:+ӶĐLdLe&6JM|3%OL#uj+R7r8&u|.h$PЃ\:&)Zc*XY^D2t b_8MvG[AbL!ۺ"7~i&(p2Ѯrdɲ ^PݾS Y8`NQËeZ3u\h}pbc~|Q͹cz?OkO7b@z<}kڹHM}ڟEsgH,6?Ue6St P+3÷ bt#{CBm|5oFpsd#r-ϔ\ktfF?㫥^Wn3ƽuy5 qOޚ,O/HϬӅC]t?Aı,>f>տ!2a|̢ge1m8vqoh&`5@fR?)V'. 0dyxg |VƬ5=x⎑g1^ԯ u۽yBtI4G`X`RO; Q@{i:j7=! 2dž!n (Q(#Qa-!m!}I#hL]{ al& J4\(趦i,>{۵=k *un?A$JlGMP.bwz @!ՔwB@Hz慼8hxe$b@^iI1cʋޛ萘|FjWl XC'!ɕȖH7M2# 5$fH x}R dlMkrC " w Wma*M(cuP_F@iR܏"r\jʔNMJ5z5B]30@Rh0'cџŒ'UWJaOl|/i_c]>=exہf!`}>7|4~\^aSZ[;5>GփG n?j yQ@GwGHgoZ? `M(D{x׻GXj@\r F L"]ךj>%gG>/D6/L2B<Dd ky$nfX_ *ɀtw.24ohkc&$=CwYmBl";`2\44pYпX`/:93=16vqq2#R1 k0i+/~F'*<ސ/\4;{G;>먴=:ʢeJ].c .u;1ra_L/fˍ0y~!Vn{c8Uxpi  81P-vA45SҙҟujdG2A?A[ȩfU[)}0'wc ohPX"@GʊQ H}P"d3r.z)YL?]SBBX#efqӬ#tLĴjf#[_XSmX% ѸT ;9<̠0'ȓ(q3}r鈶w)z C*$X"͒E"YXv kxFxRW~ŗPW~ݿ6$9쟖FZdÄ́ŷB,A\'@/_XYv{1cRnAdH8nY-]qm h\$LBRW.ЬL<cQMFattc^זOO0FC;%~n `jqCG8=s^_V@HUVYJEEէw<$v7~EDe>/1'˱~9o; ,^qݘ@ȤD5'G S+ DfF}<~PM H5GˀQ?D3sH:s?#YVI8\oCK;XN5#wosrInKu pn˩\ӽ$b>G/+-mT٣@l<ڀφ$/.7}7\Zm) ~fMoxNO7oĈo S0$J.XA#0|75Yhz71ݿ/)30w\0 |8 + ODs:E}773&>wBϼ8?hvLjbK\E( ᭩S"O_Je`_F.xHs"Ij2Dmrpr e߿9_ŗa4)qM[(_[@lȍkY(P:TADY B `VHv}j |=zTqb,nb Hb:^r 4VIhIJ2F϶Y{Ӎt^W91X\ O4# EW wI|9eMglP΀~-U!fHHUPtͤ" 3&rkՂQh4yXL/m+L["ѭ=kvػny`w{S _U0EZ\m!۝<$Ge: nQ?{o _^TjU!y'99)Źq] Z>3J(*=Us17o<V; i ?j@ 0$%( $9P@:XcާViLX•=_`x5g) ۿYat {:Īk)N%/ 5[|YflŔ۠žj|}h;5-պz(8{β 1hcW{0W&_2zv/ S{,zc,d{3iS}>"OFɤW}ODU :lq;3&icn3çY|:LJ:4QRa"ͻI@"jL"G;|-? $ (PW]{Bޒvf$mx-E|{o|aM9!!B q*y?~vÇywsj`[F`4_l~d&@?; =#wk/ikw W֔lzAٛoL,`9k}wǑQWQ{ݸ<HpNLH>7ZzvVXZ48F'D{>nw.[5lm_͎*t% 83ѽEl% QPab3}C IsaJ=89PeLr1s +q#''r \Svu%FNz$|$Rg0j\H [,'u1- ^'MYx9/Jrۜ㕞0NI~ Sl d+:ݏ`{KO Is$ [>v4F|F{4*Xk (iOnW74~c25ſ!` >+qbݱO܈8ca$YFזph'_jZH@V$,P/l,@И}l8m̲ )|Omd-ĚwQ,&ȥ#j̾}LcI,pcv$V:I\>),X5m,8]J,߬71/VY kτZN/ &>_+ɔҝRGG D["M_C.Nd J|V&yb %qÓ'+ \TOon{+ķuj=%&o.= Ngo wB8Pj[Ӧ\'ZJI-,;Ar{0b#+(Ozpm"fd?Zũa\Kz=ҶP("aÙ7s1,?,":tcULA L=O5ixFnb Hthm*+}AN{_BA7gTo$,yL xZlFO1KPFU/ yn>h_0f ;(р(К4_FpQ7r6R.fAȀl,ge5؈'6*ˉX@ϢWGWO#+ l[@Izm,{\Le{ÚK']To<[Mڛ[FWgI|ש4ΌEt)U7`Y:`CIG^\L si\%|ϓo `.`5݀+%d-`,&YcڝŒ/wcʗJXA}RTfMG?v  ЏL P a($!9dC6-|1H'{ݥDE'<~cgV@RIT]41Dz/PX|{v@.ST[eoj:ޟF׈(!S!9-Lxp'+WDTŌ!5!zjv>u|,GhuD$|3%rqundDO!)PqĴV&Sh5jȹ${5\3 Oɍ$՟.އܛc2{߬X@"j<`U a-uRM˓HQ7i΁LkV{=.[kaU"Op~t^ #)7Wm!_a6fK@;03Á'kH ?#pfFHU3L-C~E pj>ŧ]:Ifs?zwLk/1ì3}tfnSݒ-W~YѱU#u',:2: XHn${㵙^.Y!&xk"teLz|yЪAY~zޚ{|W/߰lX&NbM<.2YmzBQC9ɹ1B"F855j3aU) Q8%7:qv8#u/ ףh)^~C6n8ķB"ySٌ8LU`+zAV1?O6Xkh4+P. Ȕ3ȶZ`j^gk +xmwg=j)tg}:͏T*XeOXTJ(aDx<_P@2w I<Nj+ÈZTlBXw)=@PUZ)7(QNq "1H" HѮB(^eET͇QSM{ײKآ [[B*B(Vw;F GBax y(a[#%k''8$5sH 9A" dk͇FO"r>+@Z;F_lTQ+4.ԴGi왳άcAͩzS+|>/ɴ:gr J[lYe i Ҍ olE>nl㍟ * w,`ue`26}ρ3,|Sgϲn5>fgE8uiv*KWE\Ve\v_C(ajRT;|XJ% atiYaK1i2&UM/G.F<I\-7D^'q-&jXc.QlBnS:2rq3:(_,sK2uCmA'XDP4h`tn,딃{rk:Y[Z!YZ4R|P1]\5"07g5GOoelb!#F!x<^6T83 =2"N'jشuHtAIHzU/E;<$JHvkưG87"kЋ7\/{jN }0B)Xj5dH DzUFդ'7>%JrVGnpQ@R ǭrK[r~`ޓU}ϱcxQ[0O^wugq|ruL̯6I$<)ffFE6DiQkV3(H}Juwn%: & [Â[G {Åd$|,Z:{-LjάeNG٧!}Wds>c.|;O~k}pF 8:E1.ZP(8p;I HCE׿?s0~HWT Tg*{F xqshF6zG$u2Gw}҉khhk8`\pV' M̥YǾt_1cm2 fh+oUv_qq3OiC+(fEbQo"6kIߩhw'1/'LB0MƧQ|aB#$?h&@~v/﹡e*5K\fP✘D(JK7}'0_;& \f^X~jI:u|`! Z Л~fN8"bGQ1_x0@E6 ".w.x! ݍ8NN5OWƫV=]n"3h^NpvW7:ܾ-'r+Z<!hƲlR Ɲ[XҮ5JvK6\| @ρB)X Z.()%o֦dm wf=ycHG6@O ǟOWεƞv1dODiR)阂j>ߒ϶ ~}-%sl/8 LLN'- !f5 \q$}5o!RLZT֟!Yi耤T@S2M8oV99 H1X; ,3: kg'ld5t2"S܄=$Yi/H*8)/:0oMjF۾~;l9۾ mS6p0r(ǿ'ڍ-YYljKGOO.JHEۚKQ۾|3k`) liZtCY[?Y1-?GCD@@$YoIzR Q>׺?1|Ip?1*ftf|Xt &~(әtͮ9qZ;u컯n?8Dվv@Bp/c06U3ՀQ`nfO};n󫱄[@'3( SbDI @ A GeLL<_#lNX|X:r[U[uL2k'G-u2 61ZT4N0HJU*<Z 8kޏW],Nqq\pah]XDKI7NLMC(X6Fu$og]qȔF&CVAs=Xc-6'5e&ɜ4,,"pQ~\`S>v[)_ Aق` SYc^~eGIkT֤=%Iޙ兩H&[+r 7"HJtXѐ(]M&QKmn2B|^FBcH L[C"XC] xҐzD5\ڻ9~Q>d6< k7&|fv0(bW;\o$>c_PğoMoÎ HχIχ@' g.0O)0yB@2Pls$`dXrEuͮ2.}7Za9WגH__Lks+t3kY\?"G b6`@̔Dv`fzkg s.loƚgﴎ??s~jס7>翺X8of=h?MƚD4[J ?vy*} v'q﷢}rXhQǘrDW1,!%b@P '-%XNGW&l¸7bhZXF푛M m1'rNt#f.rpu9oB m)w|C^h@Pk42ZbYȖU((9P ^yR+4&$VC5(jKSzT9/LBB<p/]A@v(0_JhUSIVx?fVg!x4):BM]_WlE+ w>6T\T!1SŧUo87DžޝўHi GQ[q=rI [4h6Ym|rܙ!SGBE?#~&shcT+cr;BZ~Ϛm0ƦW=Fl)M$ 5vn!"T.`24ZsMeԠO;qI΃!ݍm-~9!b A0{VyiK?cն7aDÎ nl$U,%i9i2-DLߛN%Gxw_M,Pe]9 ,ja%ag_ ">=kn}t?Lt]ø?%9f픱t^k!! ؾ?=UŃ{{wsK-I-DI-..a֞&5j{6:rLkO4 Y)Bպ@jXYrںs2!uj??Oapb<xHP朸?{e5'yKw1S0Ymy`Ee7?!w4gѕsI |,l[ v{Q!XF5ADo`7bT'czuqo-x XԾ=n}4}]`]H[ L]O`0@Be7Wwi3B,{z(S a2p8_ ;j0('LCdQk9a5JXWfmP-%5z2n\.%ǻPmclu窱r"60*ܬ}&9 Lj%$8DEhv8)Iv{ju1.ylƜ&(ô1װ4G] Ct#G,T4%F" 7}ELX)61Ia`ecur~ F4EyDGB7$r5p{gl 7e 6+jYϝr]@DH+ z.ހ٣{Co>KtjE|kٛagWDϟS)^&8U,BXǓ~!y \qnx+t&oWa-p߮pԲ?3L>{ _o4O4z@=C{B-_RC/O$Do0@$ 8x*slx·pr~IDATCC8d;_kmf6'?؟30ڄ*`A@o_nX`,NPG_o[ zk&`auQ_jwW <E}j.{o(|B~+x'{ ޮ2m;Gۇŀ=O'0F`/?c۽bA gN^zlC0#-[~L.M٠0򯖂j&klu[v"Gq}3dQ^AF6A~蔐X[,N Z %}N#Qln Ųl^~Xy!d)fyw4 md vт3 8N+2h^=:5y|w%L71't$;?pRN< % S8 օ<8~}BsItj5LoZ}oe1Ct{rW`h#SѨp0Z=%3U 0(\9A֬z$m\ZU j8?Gz7We ma.9;, +U3%od#K ୩SN!k TEOWUӵE]U楙4}e8YutgH3r)y`3{ 8 hJu$ ^etjupԊu_r!qs|E(%v$G.ZAdPK?] ?:Ps#Aa6Y%$DJ3QgG¦H5 *WTp}TB: fU[ b~5)2yqJ"AvPOJ-78pG@܄Q|m\_HrrqBl=aĪL. p}))oF>o@cf@ږpmDSGgδ?, 蹘'AugG@~_wZz^D9Fǰ['cA\ _hc<Q  ft |l6Ll`@s]`WԿ]`OwM9Nc[{j U<1iW-9 7QB*Sbex@8`^uT ͉,S ) yWhmP*UUjH_Y&'YK؎y߀z7`hqj# CZDZH@F _:HՋZ/n6hnUMB 6%.hגm"h!}ͻXԩDž \He$C*ǟ@ Yd8YR޿=#n|&D$KxƌZ&2[X@ofΥXq`&P2T !sg̡__6vD6aX 0~7+U\seᖍvKOM$n1 /p#'Ϗ5FO_Lܧ}KqsQ0q*9u].?|,_=DׄJߒͲ#)~=B5$84ġ>'mmIDHcby ْ\g+ھ՛.-ۘOt)&~mL"td T@l o/b VMkk\EO7&5Ez.l=(!d*=1 xa%|oF WHpSylʆ^CZGt.·~d6,2uy(6Mkƣ2obwq~{Dѻ>rgRxGaEf5}HDѬC:=ģ18sܕPEkoN{He:nxbrLo`YJKBJq,pHi @ܣIQuԬJ2"@TLV`V׿~ocd>z ]rnTt ~_j:M ۗ]h[3yOP}ЗH>  ~2dw o@"L֐(lynb#i]LP$Vo}S ۦD,9LY {>P6!hI5JCZfMPUIbK>3H$vQ߻-'-! $ kpZj=)j+ꅑ2^hV?3Mw;1yL'+|b8'ϐl2^W6GFѷ0'E@HW(ERl5%|ِ#.ق[J ٔ7Ҹ|}_Ƃ{Q7Mpw_8ֱ ^YWە 5IpC™!x gz 6[=gU>ƨlzgjC5(k/`ݷ|)$폫9kͩ.I=Mm d+r ˭m?Fk>T+y hLR] zrѬ?xxۍZu2&u!f lލ]+j/ચ4QR|f:Թ o:(Z )rxnj]~8b$._GM[5#[P\V[@|TjU!we#(5jZy}DۈX2k5|0W#q}<}2lslKleMT!KL:9.=rmkhr|6kx .1՛?pF} #JO#&pQo~.ާӟ?єcV6D,`ٓrX!˹=<4~V# b颶 Na& ro^ r3fh;#]?%Tʆxwc6ȶ_[>'fþ{VIo Hİ)Dj_^NXc\Vtn4˿3$>#|gng2k_)5Z}hϰhTív[ .$DD P!t6T{U ^Nv6|ilLLiٌ*V#rO95>+si0Vdze%T/tTu>b%+c2`ulhqX v\__І iX Y#ô3Q"a_V6+\y$R#ZhM!>:.)Z0,)-!7Մ)J]Ds|+!*m/s~#Me/yG]Mlrr#!,j M5f] Y6Of2X"MS+RLgx%r)̭ ؼh62Ԅt<0kK%fU(FdoN?,b^VBB,w^9S3-\$/u˦vӥS3:z&%4+*ٲIEwDWU"I$Jgk}~=K]8Is&9Zgi(xĀ.6ȴsC;UBZ_6KPfl?g!t#=/ێ(nDpa<=n\o7hĉF0'v 4ײr qnք 7ٖL:nMo,sYc~kkkXZ^E$?Z ,;N>׾xΚ&{hoO)!i%ew:}XΓS} 3|_-e1ޥ,Ѿg,w@9-~t<}}ޗOg_hvC]LsU~Օ.F`zBq&qn=cKA Piu.19j>yJ50 ԘeN#t Qg:SvI {?07~MN5ϰFuɁm`*r̲p5 @_F^ Y~ks0CMڣsv9SA9T(G? in, ҆jXe\O7?b` #,Cը%umJ`dC1v0τ10) $pMQ "(^14tећ5{.y,۴2R NFK$A~T~,~^ a)CH6`! O:X.Dܲ.-`ȵh%kE )xԢ%3Bxr򿖘]i_U9eR%/"(\GWvxkQ}~TAk ][Y!K9%O\{rAA$z]s*FU\wt#<1^ˣekhD TVZILA-z "_`?(@ѵY$ ,T'TqOW}7% J-F@{!⹭r%2.ޜvYjdzY馕q6&bs *jVA:[پ)GF(h72O`Z>!!LeBC*L3'X]xk>qkszmmW5mF8agHg7Stυ }N\Yĥ%|9Đ[a*Ehi{^ o_iN`C:f\]Iî j$%jhxW"b6M[N6 /095 _\ugƪ.! Qr^@,qc~R`ZzQPʦ7ռe?7x>y\%uy-w*Y\LЃTT"$|~!,dLy\̱dѬЎևD9|lVD|Ć_Z@icR=|~e k" SE2TLowե.8)R4GLōQܥx.!Kpx5*HYi'B `H& [9al:_ |'wS%16Tl_j###33%|Vo(XbBfo B˜olc6RҖk86l]c%DuGmA2ST-愐XCvfqXk0|y|Ɖ z g%xVj*NlhQ!ǩ)ζ\;BLR;VSki`?/cW\J1K JUŽW6,WrT:zY-2ټ:@(IY!OBr}, ;eC-g@i3_7b먾 'w-/[uLW 8MGL?$z|cCO?޳ݱy`M79 :sV9-,;wCw5jih/|FSv^g8 0o2+>= ~h2N㤿P gW Z괿F{ :+i)+ j5SMnݕY\[KבbOPσDv S׺سXk-_ۓ!!|.l jnfJI͑BK.s{>kK_rpԯӹ@&"C4&Hg6/b!Z/ 01XHĹ95u"7xI6ק]:Hm=ӔT˂zK/XקK8&mU,3ڝA X b񎣩- l_ 5KKK;}9X%!(uS %3朂r&7!BD""qK\\ "mL$xFH=ǝ^9яb>[џvƧh 25f ';\X~Tm@Nfcgۆ0eG(rt x80]f(C?3May'=tN~lgv *(&+W9Ɔ# Ʒg01-K,I.N倶x‚ v71"jRmNJ<΁Q0E^f  B)KBf6&:%**AX_et=ItbFJ7 Cs[9Mq [O*'zcZ 2Ti}uo'(MLE"@b%&9EUYuA0~c$C+t:Rmcgw+qlkr4RAUe)ŅŽ5jwHRޒG"Գ'D&aEø]yڏB笉/z`[ g gYċ+*1]1җ)(ƬD0;D*yu?df^5rFBl/ݙARWN0 X}=4Iz:7#"\*!LAdLŎ%|G#! M*IHo`a5}4h%qœ» >֨IU>puȰo~M9ؔ}iho P`zu^dάֹYhu,rJ[ut.B /,U7>] -+Ӵ4sIUoჹ0^e=\yÈ]鼅X Pu f҄,ZVL^7%zV F#[yU\ 9FI7$2BhY|7+;L=?Zc&-r'oWd (iϨQ~=yL,U+^|.Q0.Ӆa4tR*m?ŇtzWCFEJ6I>hL/s'54zշ g|^%p3txz LOg6 =?J_5j?f̯q?5o )Z'pG*JhW\Xw.nҡ;%Mo%(8lU鿸#Ig:s꧐.TqN/DX,<3mGtcbJ`2?}v9 8_g3J q0-~{gI!F` <0g5lX}\ O3U:x `_x0`~.iMm1-Ĵ$QӝʍQ[l'T9}O]g&'p^n.?7 ?􏎚+8ul@XLh ~)}~$7(QuKDu{,߻dҏpģlK %2i$r!#"~N$R~9d)T$z"(`GPkȶul5u(3oaѽ%7FE Eɔ='kĖȁ&MA"t!j3-&!Z yBZ&r'QZ9^b BVuvfhf’hF;4MoߓsƬJE,+h3 WP͸t%z}JD.Gvwxy!C@u=傎THpZu\v';&zL[&D:[|O"9뫵?6٤NٻHZ;*[9 y4{jtM<1P]KW/H)|g:ay' yn;Nt5!|EoZԚhI4+#%d杫>"͋ um ||"+|f/$L5uR(b<ٕrp5|w9'&=rGrJ>#3 Vt|W|?Դ6"w^ 1y+_̬YVB6K6łx! 9mX\:jʛ78ޘh;)\I챮btȶhf`:ڿubZ 5 X"y0W¿A1(=(L۱9 >-at;뚙yuvrv$f<#[Ƿ$8Ќ& (IE "g%]Tˇ$  Y@_s,?n%+O'7,r}/ w–;Mw xEJ>j:J@u:! xURWYMOB@\AְV V-,Gc~`ُfyQҀڷ"Q( uHaT6o5\WF:a`9ooiJx|]W@+z8n6n-&2L5T&SIz̄ՠ_S5=G^.߷[m6}|֍HNh4Mm׍匶YpY3ggjjz<DȿT£M }~.T:`xk.$/"l)t.,`: ,a{|qSj^?C?F /DК~\?)-TeKj%yl@)*yUK!1w{&^ Ő|\tilCeW lF\6Բ 7zsk9cکF~ND՜Yt3" ,X d)fe}=ـl a|SqKOC&rty7WTS̿lS\nxx?pl_m (e t/f?FO$o:\#S42O)pمfqSn֕X0b[^I@y]92Gx#TM>p=OX j_}hԨi6n]4n ꌢa_}Z[&⩥s׌ /ڌG3  5αf}`iYc YSCR㟸$?"5!$y4IewoONIU7S->TC'ldZ&?&De kyZ U/, N.9@-({pZe`zǫӻpz.oQ5FS8W NL@iP xCM1uPx_O xM-!Om#u]Dr]xSMu}d[g#Z#Zl[IWS[X_} Ui|~iV~C\YCw_,9u[b4nEBq,4I* [:`>6,J5a6 ԋv6;Χdt*L0I>[sǒfme ^=ȟ:80lTh[2 6"E| 9o^'UԎU9~& 74- ?Ԍ߅_mv &%_ ީ}3r>uUt$Z Ǒl pIy5u tyIbd2{qGC^GmeF]$&A*pڱtTyʨs "a-ᧄ l. rE%(mL'^CA"ogF*WN)Yt6 vB\Im,2 U+4")]]x{鳝F^@apl!+W GH lbgE! |Z+5jfXn3$.,rtk{fW37aT+5m j.RkSnJ #*ҩg%RU|/5JU([ k\CV-BH~`:1#m|V]m{j2nlk](D1m{B7/Ss)k\NYU{BBqa?=m "Zo;K򻭕jyKFjG-vVN*h|qilY)ϲ4CBŅV%$Q9#!޹[wϚ/ 6?k}=v㾂i$\_]ILPܔHVOE|/]D>#mJ Ljƺ'X-` .|rYH)| qjjgjά\3m$J,^=ڪi~G(0%QJ@f}<oGH}|&cWJ&u 6BsH"A6V1 =NŀpM:&-؃1S[󿰘}5_풀!hsjBaC􅧍-9ؕh!S DVXPh@7b1sF9 k=QP^^:YLBFb@T9%Z75gc Atq"!8ؗ!xܻIo2" `z2&5 )+ ԉh/z>ѸKo#-Y d%'`討^ Y`4O&]pDzd3u J'`/$_E6n^԰B"/S#` "A]<ό!j$ (h@R 09 2l,'4LYLB[hk:i ٴ k6<nfc&D+^|/ 58 |#6xa:4F&!{rU{͟L'?j7@Æۋ..&9(@z0I; ώZYPʘr)2Y%5z-`Z$t^/\o]߯Jh҄e%r])Ÿ:H 7_F<ιڹpczk$U/V}!mNm$)xC3sA ӛn4X"c@hTH` m{M]rScalz{8bڧɔ] [_/ҿ15q?yk0u_rԄIgV+MzH [u$_񭛺v'p p&_{^3$$G#= 3H)7;ho `I3 OuV0_hMW>;T.eF١ COrE@gbEޟ$ N.0br^%A9e'%Z̡>Xs8RŰ^&! 0% HoeFSƎ3 RR(Д'47d$qyۏ,zPi]kfXӗ:|ّ?#?~WHDk.|vu PP8lД?N7oW5ZuQ rp3AΡ<<>Fۆ4='R 4뇧:k:pë~|l('r HI]顭/kܗBm^w-W~)g?WU˿ "%([e=}˕_(H7;FNΙ_[oFH?:^6GnxsҁWxs1ð>]5ڇh:/VJ\JP)$ Zn*5e " } L8+f,c/$5s xu~SMBZ}c͙䊖/)4aN2(o[ƥu} ^tϮsr)-'+ S@g01ej6E;^SP\6uYJY|쁱>;Z@^nOJo~7.`:oU'>ߕ[^}>O^ -F+?>0)zOooBL;'7>&o,C.`\88d xޔF3.]UOU`T?@Bb|y9(*̣[ٟ8da$S ˥JFGapS@uX_I3=5YON55LpXN`,H,x2$ipoDɀ)Q}R)OR@4U2 n{ |NwA},0TgIǐu~f6VhA]|y$2>]rxg[=FѴw1y\tk !z$rfQ '#:VTܚ1m pf0`+$T=:lLzs4]K-i^ġM l7ɨ.6ĢDC$Wg.l'@k" 2bI34 ]:57m\Abo},pP÷XjS)!ۅ;6rRCy==kqpoL٘;b_YD{3TUlw߰boإjxo5\w]+2>p#։ު6ƺ&!58Y Z)RSGz*h[>;s|#o]4,{ӊ.p/ ^OM/CQ/ʶ3^8퓤t|5oK(6mf)}p=|3p?зM3`JF7 eGЌ5}iÕߓcݙnKWqxe7.\Í~S<毬mͤ~|gJlO'XNkf V+C"0ڭ1ƣ u~l(ਙп#3 Re#>S@1N[LB@tk#n #Dḉ=7Vl~!k\e@6Xj 7LҘf-.L0+HQ6jQ}ԫ#K)~jrȲw*@4T17CZR,-_ (6+RZ Q5,$HBY WB\ğ s8WjU0S) iv<svPSS*:}FgalS"0Y/CH>Vq/F %z+ %K$"ֵ9nʆPB&rPod[l;+u/wyi&1zh7Y9@@/ =-NWIr$~V*U ʹ15L_^QQ,iuT3L@ oI^N?4 |ge}G-8]Ye-PFqo*y`ـv]gjq4Yl!yrId Y 1c 'ݺ`&@G'KN 5P1ZN';{)7cd3Tt&5kf8/.ޛ1deu[k 6/1l[me O,'kuͧ7vQ@ O=FBn8)l]R^Ҳ&OVR@e=w\b@$qVϰ[:DxmrYv_ϯ4Js\Ό T3I `FBHz9RSҵjV4TCV'$ܶ_᭭:pz\TG bo(՚EvB]ŋlôI]K@;G'GaŃ3 ͆Z[dɴ.1Wk@Z #(MexiB ZJ< :BZ ,T5G.Tzv/ԕv/L$e i،h\tŏ l?hT,ey\Zĺ/@+=! ܃k7q8:3;?@lc{;pvhgȿsrC'o#}q/Ww_j-בvA}0ڀϸֽQ haS0d$g}QiU߻{`iN{},Ⓙ7~7@0`>QcMs(ԗi*4ϳ.4`ˏ߰-H4E,Q[9ڮƾxn^`ZF>V!itKN`*BB3Q>{y/a9̳@MBJ X|1.!A?|1'\ ¬oV4%_LC+ & \Ir(8*Yg:;p!:oڥ-\$a˯@ڭ^{2IXPЗe2|_$)\YN@U85x]#?,`m\raփ}ru{)Y8=죐TP,1e?E$qԧ[IucDܴ WQM>?!9r#da(zk!pYRᅥzO UQ`:{z!\HM@XG \EC,,pؿ&d?/{q&ǃ| Śx%sH^d3'`qCX$aD>/=, HM~?G{]KzGgw?Us?) !GgkZ;J$6ڻ5~<r-QMCy9H! %DBɖ.om߮GG.~ S\剉Na :,pJ,P)3_+ xF 1xIO3ތ#S"o 00D#@_cdhqdK_ؐ^f)@ @1l%; (B թnݎmZmUT?l7g 0 ؤ|Y!sem/3A b*<-?[iEK5PDŽf&fR ´IȻALx:^AL). l;0KA34c5.`ir7`mcV B^D( #N2Dћj렙<ّOBRz?_pW"~yeL]7w›؍laKxŽe68ۚ'`D/5=O`f>l-A}^2W$BjF~gѳЀ>I[ $|].fxʕƔD~%}iFcP6=޸2Cv*n(d9C:3Cf#p'Х[#@[]jE}ԏζ(R~]3J$sNϟW,t$* !:.Rl}kY" DC:a80J-;5ZQv`w:#wy YBL:呆Jx fBEc 0gJޮӢ-Q~\ButX3!H%.d\GQ+h9dYR.|:%Ѿ @NNBPNoL8e0X\^wx}.V%ٱ O @\62tRi OLeOR_=Tq6}FtZe,^$}&Opv~'wp~>n'O@z^7~*{gwuv?![5N)Gr0m{Iʲ Sk;бH:|;f/qz|H9`-Obc N5>#"N>0* Fo[dam xNE%LqgLJEhIJ:9S5Xx`9lJv0)! ks>eU"bAG$g$9ǔUP3p xآD'%'fAkUg `Vac{Agj&ڕh~[|u3vI'p,s H %Bw% o`3К\sX,b-k+S|.6Ot;%yOHȄCUM+ 3 m@x; IGPH$y0'^)ߏ0$Y{\T~?;b`]h)<,7Hfc\$e#r:%t@PSLK'92@IY6YW"_//dB@(@KMNE=;ʹ8Jgl;,uRJ!O"Vi0^ w !2@`ж^!:jh)H~_Fy3.R%=fUGRVlE=FY1Ty| Rc@?Dnlm35Qr6cca@SmgZj(nO(Z Ļ.*Z4>k]VJI 5RUk޻woX? 5Jij ^agi¼'g#xTdz .֖F^#=vtYҞ';(`\_K!'89lڝ2Mh1HS0P|x|koq} i0pr_F,0ȟ#z zZ?bUSdP NɏhnڹԾi=+D:e9]/ѝѼ0Y_8ݔq} 2I@ cʟY`t7yѡO>21z9H;07ѿ p!L~>vP8PA3N59ZI,$?<[4ޘto,zC^!%㧳Ojc <8 E=vG_B@0ZOԾ할"]9y9-ʟ/=S.%.U= B؋rHd`ȝwך ~a|NOYMnuw[3tA8d~7>9%[ ^` =>GDWw&1t=%؈l(I )Xyn Y, KT=iOeڝhe vdo@HױK#ȓ!"Jd))1#`Hy~- Y! )_D Ԡc~\4;R2PWҲUH/v8h応B[QDKc]Nc{ ) ]N>2P>ĶC錐;vJ{aygfR4CyD@{I7 TfAL!i&}BwǩKn#hu p {@CY ?\ .[.{5 ( Րbd.y*h|v*f ҙ=3Yg}N6i?8qqZ}B:IP0S ␰P fO{y$MFE'e[@\!2^~9ݻ;7k'A6C<L[5l&𑿆'fxr1ʃ~۪u}3y`c)Z$ Ͻ-[wL啸Q$@w9%۞];[wpOQ"F?_?[)跏oi_`/'qh5%7QO\\\> As'E3]S?dT},xw)6O[$K8ɏΚ)[#&?WMc+Lɞ?aJ0N*Ɵdڀ !5Xs{`O}E/aO{u` zd#:=hARޗwgd=c;l eѺsK; PTتMCaV=oŚ fHX`# 3$W PBo(p R<#n!^=n-*6v)f)e.ޏ 1`OQ 3:\Z;68g R m3q^B_^?\v}4SPOHF g0Q<Y)$P:@ĶϫȒԆ&Pp<~ZFzI3݃+rLuo*3H-j%HRXtD UW;OwGArֺ7kӋA>7?K] * xo)x}ʁ:u<8ܸ٥v*Ց?8DVDWNfEK޳DtU+mx|} !j#aosWHbKHsG{ u|bomqq;gJOgi2 3> PʃT6#fɎsձ[<Nsaݛ+14C޼7n ?JnoY?k0c ? A`(ohWP;FV>þ-*ۘ!_.wM6XXX~jb%шHЧMԯlSQ0JcHdi1.}(NxV``^w|4E-`2 s!+7 VΩ~ an,ÓتS.9%zrJsJ#^n<}}T9zMtsg;@fn>ʖz2gB2Jǧ(%/d4QJA5 $REI͋u>Q?; `b [;OZ]\=1< $(}==s2Xva{k 54aSJNRZ!{½{;? %F73蟊The+BN~|کG}D&/By-s—S[N/<y|Wq?0mguHZ_aֈfXFRfUf픸:tYudhLm?li}aN}qq_< [eњs i-Qb )v^3VDѶ"H4]8/Fk,of1VO98U(Wxm.Ú¡xC5穰5pZ *|vW vbZ\r\6~alj9[I${Spj=A^A+3ևq^tNW$J czg ӛ9Ok %oMa1iM3'1\5/Dװ]RdmH\J8jX"Xt/@E^ o*{)~~N~FZCsh'YLl;HQF碣!:hh=`Gxo#`$[S"cd}Ly=DئCvz> }_ @-e'鱦y(6'q Drydhr~#|m.{-4ErF!#9XCtvUPH@R S @-fmL!`E3L7U$Ⱦ+:Gj4䠫~FWkMyE2SDv"KiBB&}]v'ôR :VsqQ sS*{qz?f+LDmՍBLHHM81YKA$u$y~o~f+(LdS_` * Ȥ-$S9z * $WMss7߿o }|8Wcf@mҵTR_'Hښ dz}*߇BL!T!t.I[??+sgܺ% ?$\7봿! 8?;׺r}FT׏q7)aaÇ56\I8,0=+9OWxO,٫o|9k4?ȌXzJE _QK<,=9oOv\Q΀GG"q0X~Q7IMאCasueu9a%v8D87m'lrzu 3(vjrZ -$"?qi3|ß&}xa*凢ن|=`n("ǖ8)O5{|j¶{|q>v-9{*PDrLN9qP,N ST)F Fw@h;?sBaPSrP{4čJ 3,j@ V5ä,|վ)ګsP=D(` `5Y?fc-J( Zi`?L(yf.9Z ?v5UQ<9O $rf/7IVEǚ3jM4(X*13|Okƃ)upfS@f+* &i a:Z[{{"ye= St[q+S˥$`ޞ~HC3dDƈl^J(ޜ7k@20,wM2ƾ|w}|V!H$J]VS kX) HG(fKGSGpԆø<7+ѫhݓ3Z8]`"u 7 ZΏ́L7|֖+Ò틠kFB˦TGk8;=TpR~nM3rts~{\ߺ#I85?$K@sR-s+}k$ȉcbէzIVwØ\t`m/`^C δT ߮=|ߘNJ,K1o¶I_ @CaIÛ!,[;Z2x!㣅u`,=ONj2H&[r@gM)ISP bokt+NuUC=wv(ש>BC\qڄ H~AX 5au'xz``0#?8+?ޜse?X׷[>&w:1 ai$s  uAFRsXmvcBN!*x '0fOqߌg]GV1ZJj[A~Nϯ$$ëfV 潶(P%&2:<3 j/[}X AƪW3>ԄEV`/0i|iA?w2h2%2?`@Sfxf{@H\,Opګ?oSf=٩Q߷-H$LO 'q,EU?UJٝP*}FZ<֭e/@Z’:wimgHhADCŁjE LI PcmA, @]>!k`kF  4"q `?3$66*~vTWCgLjCu>\D*B6VQl?W>LקjSLcn\O.ԋx3\3 h=6J*{fo?-׵: ZΏ/ DŽw 4sJ&(_4{zZ) Q iE0"3_h, +bqMռF\IsQ3omTy%ԩy^|{.bv!cv9wGb/Rp~g]9$ПZvݿv$\@toЗnaśWN|zuOl૫kY|3&BE}}:L;tRoNvUdXN.3kF BMc&`> k5]:8^K * u|RhmO@ :5=X:HUp6tʼniXHwc3v怄Ih`@F s- 7d ?R*& Ŧ7,<# K"JH'|Ql!f 5|fMZ`Pj NZ+U9^WQ3%{)&~oHŲ~L 'H:ut<5MuqT-;?ފ3-{7e-!i=Q/b^Q^Ng#~#`;Q~(;>e2*qUJ4=U'q3Y~d/@ú\l/"c$Ti?itXu\v }$FiZ^ Lr$f|&0KIK`z u2-ܣRTA[*9} rDbn ojL=SGWզ>5nLe/XÙ\ְF)`B$"yn*MOu?`zoNm#hjDEWNkY~Aу?ź'g1FNl fwwr56 ijHBB^b/y \ܐ(JL*sU_e!dXSKLN^ tկ:g8Df^(eYŒS~4||gx|*g;%zcBXQ/-[־Ne;[><'nҲ -O,7:.#d遟W L'5 rj0C S7߆4Cz$"f5m9$:)#Ȗ#9mfh[-\i Yh‘()p }QCCŒM[D^ o/ɘ;F nROKr:BB#עEveW iyޏ'&. T8b^4]2HU;MbڞˤiCctK` !pDyUV91U/(ψ5~Ƿ^Vj=Lx4@2$ŀ:0fܸ2bg@Pd &H"7D^!`_6ʴ|/V#!*rwkLAot V8$Ѿ_/$ A|O3 c,aa6PM/1$CJh4`%tvBˊ(h  g[׹qZ`YNs$t\[/'u޶C pzɑ2sI" {,53 `vM]ݲYMjJ0`H"fx{2W<\_FsXNc2km֢ڄBaq=6T褀!ӬwgTQ6DɦH5!d͍ K`eJ@ *UBܖsd#g<9 sĨ (59/v x\'jWEm1]7r=' {ϲqRdhyudRGqWFPF$NUE1-l *g[ Zغ?[&Ahc/8DgB'XГ=>>e_ߓ-h Gݰ B /51KI}@?hcSIQ3ƜǙ.bh]n  X):K1m6eA3NM40^!$ϲ5W7gTy.f2eo͉}ڙ0b@~ejH8e+ z|! +R#?G4&r_;$)Zk'4O4ʉROS/JUQg&*Ua9Xz4<dl<6FCѮvRȁ %ԉF9/JT{8_&zhg%|//su:Z Ӱ5 [ a$LYѴ,2T8</J@|6P7r?I#~N$h@ī#a-%5( |}6*,Y`3 CuF|̒߫vLql냭J`lv!3ȱDMA9a 1#LWB9ԿNQDF?êi$ 1E#KlP`%U(D F=onu| p>۝$g1<$Nw$)MtoO`Ir)MfMG]૖a@hVoӗx}*eS89|4ęzxYc\9ǧ)[noTeǫr3عHjN_VOYumK)*I<_p/oKޔ莑(=濛=B0]!E*m)xȴ1WG2een~?jwn'8QC((ϧۘuB4@B!~߾?5 pAНE𷤁0Oؿ v_=I @qXݖsi[Ϋ o~& [ߣ1@-YwƥUti/Lϩew'A%%%0%G(YN0.O?Y##)Pù% UϷޘj L| 8h}o}M/3Ǿ:'иzcNn|0,̔%~Ũ<&wz_`V &7|jb 0 ;@\P瑍$rmou`T-595UvSOMsI}9(4X,la8ɀx\git@eK=[[ Ueoi>Ą K5z=:*Tޗ} ZB $l4c A\l% #\l|FPb+U>K,@9{FTS叙UˮG?.}&aMcIw`G=L|oFf fWqJe@#j|+e$ Z 5[`dC.]>1b9lZ=q4. ov ;冝MToo~Cxa$W{$,y ,%X儲FwJf(F0O%#: /ERy| $$m/cu[Ù >X:>'L 67qfܒƔcSh!}`!kjkMXJxF#f Yb5I[L!4ٶG&9qpеJ$BXla=}K.Յ'Q|5K >H ٜHJ#5u)~fΕ?;q_M#7JSэF=$9HL4F7`=V'^o{'nwkhOg(!7~cLg@+ pP`vf([moHYJJT_޾LHwýƗ# ^JPӖউռpP'4c{yU]~{$RIem=ΚiYbTehsZƺQlfG[k\ooϝ6 Bdca} 3"7z@5$ ԏO',%aU>WU= T~IJ1pZ 먠(f@go2|ozU(%2lo/JFX9v{MaHrKuy6#'M+B9/L)xLoxg*\qkcxW,s TGhM fRcy:nGo5 qf44L`4H7S#cT:Q ^~EmW(<7k,)TYV5BT- +,'ly_PdTͩpM#WhV\},T.BUbIDATFֶd3(d-ơBP%~D-=|\*>  !j?z Q?/!Z̶,S/ߕ! $"kH Ht t4oR83@'*RQG{za_ ?7/ǵwM6jmKJB3D=:,KEp.@_J|7ך&4\-~#Kn  O T8Zg&TT4:] 6AE8mD0˔ZKBZiOpU[ⷧ$ۘ>8Dmd3EL-l`.rwk?3&c~ۮY;_ YVz*1Qzt"M*]$2 ky{ ;Uc} Ήk'BQɞ!HJ@m (iLFjI0mc(k#!=cM@'^#c!oq4ͥOMx%f{̤e}EWh|-+TrJp""xwh sy|: B \`w{G={Txb.ѠΟlg6z\Η'm|M!?`s)JcOŨ@ {D++Kh2P6R8wjȆʆnKTUMjw1|FJn6s˜ceSN%*a^}4ŧs1 fԞ66ea>_XwB*( B+M%if5$(W{#VZVNtqUrװep ֬364}?;  0'dN0cUJ G@%rt3c9.eEf@k,'YլeCGDZ3SjtT7 q[Ǽ\-`#|`rċ~/,[ ZV_ !@@f$ ϬBE.|2VSN`yY!>1DM,5CA'I%.i4y[eTojά3oJN 6oz'P7$$\ @%ߪpRP.-S2@rO rUstu6.bw|EϨ%kU'm[Kp౜D?=V.Z'& `B~[6h)lU&K윓gΖ~Dؗj2}.}\fHF`?[`}_5bV"l\[qwi,z66|1?qjHX+n?fWb hG NwQb!`PQ?U3D2A _h^ bn;d]M~1pu2!yĆ o/`[M@b Bq3J&(- kW(~і<}1J^V?0gZ{byLII_6KAc?H&82Q7 9GK %5+4@ dl 0@9dƮͼ?8D!`Y'I$Z"+%IHAX1A;{ _$eh)AfIxXf ى#z 1}t =p_JllXb=FYY0˘sײLn9A]48%)m Utkn..w(ıb@*a_^ϮU=M뿡|M,[oL'U*yL7g?s1`Ad`g4i >%^ޟs `]}\:Guί b8?-%'H:@_q]\7w etůʍ-WrY*Vc{qW4ŒtF]wy,uvB7b1jv[Ă _Əp>yx}x- f ,stٞ|fsr>$[5 vݧ)WIm9%FJ1`qWt +0jBf[sWJdc>6c fyQIUWc$`Ỳ$X vRv5>=VazQ?;KSYL0n /t*+Vw>'[>#۫ap[}7 5\'?,|pc3;'ׯ,sA`u9g]Hy[V~jn 7KrBĵ$M5qF"R)L]R/5 `8짡 ψg>SI,clyT( &qeeD./ea]l%B162;`\1|oL}1COpJi`蟽ۻ ePK*m7:;{>B%|G<-v[QyCU%|ݺޟm9!2*WGFfM3'ʉ,c0CBBĒ v\Ded'CBaF3$` K=Pm7L#1lQ3%mYa04N"08F1pfL g4aHrIUiPIB 0 lVTKP=?T [6cqRU7W8 zA6O9=ywqa#܍l!m[R&my$e$1f,%ա6Z]컻kuۅD1?Yk(\Ex{rJRXwyr[M])eL^4b+ᩉ +!Ky(’DDxl^? Lg$vkwsbv,0.thq S& LĺěI!g9=&TdU6ؑP>l#;=Uֱ F SV&)Z_ qY%P4n(gG%"&`yؑcѐR~[rM%Ji=hi&6תrN5,2ƒӾ'7][–|{gl'6=nj0dJG!#.ezM,;__*s ]z1qbCOhM*Y+sHw(ğL 3k_ͺDmD;uZNeTuC(#TqI5(Q,@o3^ZU mKѕ+ILLGrUl˄ s;),&աt "ZofǿDțEȏ qnvOf-\ .,]av 5cv4O{cf(HrI:H"Ȋ d1o xGbayRY_dY3.nnWsQrУc)DbkJI533lPɎ JUz "JNL,c~fxy4,w>$:ӡi99JH& іDE^Ni=fZÔ@j 4ΨC  f ll6>)qDs}Fw 3$7%5[ GoIW!PW-5SK-ZMxU8jP@K XV'm\ΞOK_3*QnԣXOņ$ /jݶ5rU]}# )V_+iǽҚrN^6Q^g'x~:SѩyjEli#ouI˅xBŽOxU=l --h7%#c!AL:6$$࿞ذɏ~/ț{v$:#' ,;j9*HI$R0`6T">Mӂ4VOX, @DCG1Pg2Z S1ayld:Ph&7bHK`-9V hڙ ^P" p {&2|sJ~/>{(%\Z7?›?wGY=-Pxv<\! qHQ}%&dїc& KzztQttS35Mc^ۚu\ iz@Dw >yόxA\x^U^"2%iC+k<יUPc !&g}pTMdsIk(h}~;=޼74Y]ES x =N) "pM^ֆPͯ@?yã*9A Jql`.u 3r(T[Id ܜ4cV#;Mn F NҪbBRܖ׮H72:l+YijI%6:7/eo&d!KI_mbdU'x6 fo=@zsu<>۶:aI-znL-9ž2l_&0Bw&lQs#q\ ^řk$ WgJf%_ƅ.\,LjA3+|Ml (ՙQ+8H!)pFHJKI7ODt&B1䀄$LgRUi|GX\B0RoO`l<,VVfsnN 03Kl3{.=k`n\Is8g6D )T_`M`mN 8LN +xIA")pFHxNڕK/ ށ87)ٰ?BȐA;N6K8ج o#CfsFדv1&cxAvܬѯ,7?9OEu@} vdzQȪye2/clHZxPcm @&jWks9IDb#!UpVj5P/> #8{ x!We  ==YN=E$)$nHI,u2om+n?{mT:Z;Pō:ޖ(YK;N|?Δ:- xZ"qFO5D@JIOfJB>4`XˊyY]oSWfG==JQHer~|í-P[ ;جTEõk? a>Voepu <>Tܹ\u!)/jNcg L'4_ `J S0&/zָrx^Xg9)q3Sq|( Ri dJ6xcxw"GCxuҮi.'iwFUYr>ZbZs*z# g3UX/ԱVbrW@V3{?:XItˮ ^_sU🎯b*`T3z<yɺ> 0>'<.!K1uWsq>r}6\uP}uUDM 8b88yG[Lox1!w͋P&(D!wh =6B$CG|5>C89FIR&.mL!,z<A"yhSu '@[*BlQx6Q|-D7I} `@+BU# ÇS$Y$ H37,N e9{$ĝQ308R8302 f N8L%#y ㍩O ~AawϾ<@jJ V9W{XPXT7!(e4|{l(qLZo yM̭ mLNnkk/@ֿL7zd @o롕!h @GDSwjSMJc~=|'/կ\+ `68I1ee9;KAI/xJ(A(}Lc- ^ݣ!w%~77~0ջ?- {pky\c1wq~wB$'_R?fF>U傑g2A0 0snYK&KM$NN(p쉔-a(Gv&"}nLDq%XrGDJl^ JI9 B,8{wwr~7HWkHn]ŧ^?h %'?w ;8l.n|kS&'0J#ep[6f/P,vեT_r%FyGkXVi^8χ Wke& PA mxY鵉0>1.5,>v#o*l)ޟK n"ljzv  \`>J9! @yj   )˔K ee})ֳ**!Q^c^յ9Ix&G]sC-*dO $ YrIw9N~f8=@c/I-ņA7Z$,XA,DZnހY]K!u>$`0y?cu7{~`J3l%頷ƎήlkFe4yn޴ܥ=ln'hoo+ X+FYtvv"ֆƍ3_]g9 :"E,*}e9/I1-uB.fZZVDryl ݚ^Q޾!?/U鶎*2jm1L+ͮq?9@: ~ )w"W/t+[ICa:S9tp"UH\5h{D??:sobk[~\+sJ󧅸KUP>WSvYFʸ? Tm~a pԿT̐GI?wBB)f:xv 'ؐH%;ϾnuLS]"-PU\f4*߹qp-ahɇ@H'  h{+;oOߨ\uk=pJ3$x0F-p/sZQAS0<nE3CxYey/泺9|-%|k<0@xSADSɄ!1Z :T𨻪gf7;'ޝ+Q(uI:&XPSS0^Rzv*"pa,+ x˚gAkc U71mSyѿZк4X*pmL(aX-0Ҟ쒂Ry2r˫#ך%`}s.u/ـ<LWHlF" &4B{yTf5}F/- yr v| cq1%AI|" Da9E|9uV,-|7}NSLkM{٩iObEi6D@!2W`1{]To+I;#&kZ)UsJh3˦7հb)YFsQ}0lal5!KwQ>FePA@KO I'Uw./)Ux0%$pq󸲒^ 3ͩޣ({RT$YC64uGzJ,EHDMyLѐBQGJc :>ܓ<ٔT"F/@hRմ 03$|,guY5r&Є%򊷈W 9 Q9XVLJׯkoĝ_[Q?D[w^wqo86'[Hc|5 ҝs~4n$2#xZl|t(J~\HBkg_eDrd&yN`-Y;,׌قW&xgH *s%Խ]!Um`f G8>9?R``^́FN i~a$$;,l&풀|οe g6YɁ=O`}@[X{/ݰV|e]hrcP=zu[).[{ܬ*FxQKrSTy5f>I/P.Ȳ dl"!tUU:UŸG$6ӵN$9r|R-x+`/uJ `/ZI/`QwH5׹hC>6|/AM3sNN ڜ[PQ"2F R}VUyql$WÈO/y ASDRQ,TKL3nolb!Uiia=B`3 rH^|4dQMk@@d%٠J WFB<6pd~&hGK˶J=֨iq7ML@' QPJ؀7Aˤ xԿ| HiL両J[%mR&-{X T) \ґjLk7Їz Λԅe=#QXk4vsR6(.bL7\60]ƹI!,GXxcvJ`ʕ6rvx1FGE (TB7uQ,l )uu:PPdRDjZoxu4.%PͲXLX\Aޯ<м{l"sbFShO4S=~UHIA =cjȓ9Nkђ.b ^uzʪQa ~/4h_TQinnLS{yI_D8D5#`J$rj^a>VQyO1n&oUߓѾ6IM*&P稅HƯ |rB@bTwc]GAF@+׷=~t,/%yD:-HQ/b!.$>ep+<@х>_E؊[sIH >L/yNZ3:V7ulD: ]+=,ͨ +%B0S hoX UBž h9`̓|1 E?cv)Hh+k 8&HW!l>$'x&"7htHQ? ̄Q=t,dT$t5B酡#Uv@6dk%|357n]G]d?~1Q:7$}{&mAf6MכvsMM?% +_C4;FI$>[(z~[YCdN*>Ux.?h65qm/ɢʌPr9d=Kڐ]L1+$dJ1ݼSY+)hU%wW`tW>RQ;׿L%ZHz=|l"A`{-1vF8^wKĚFsϒUj8?qU[@</~Vm$*#k`r) y̆Xץ/WB[{q6ߠƿ89}L/V r`^hoW Gv¼W٫z_L>tQeC"*;]=RtΖ& M٣2 B.rn^dH_\nUDO>.-0^y?kG21oD{eTQ9S4b S0hP>cd .RV܇]|g]|K>- }fԏ3%?lDƠbCOv-۹YCV*1k!9oX̕W!OgU/#nFuc;uoU6y] g .yo5{hMܒ({[77I 6 8њtdNud}S9])!1˚ fxF1~$…3C<A{b`=//~5/6t#kZgـi]$$Q?E:Rh!0i W"VBxV 3<s#dtHbsj9dB #`6ZMI Q4|P`)HmNR _1!0Ͽ{c*cn{#6D0jeRݶ ؒ]A*ȿT/I ҜjOB߈rb]`. .[ZJ{kf-F-:u#/p_h t븘9ٚbMofRZ/A>]42ˉ*LiW`aS AA|Y\L^[i[=븦 i!9 |j$֫+( QhW/6yOQWƣ=<nH`Ұ"D @_wԯk~N#pǦʿ'Ro};ˢ8mtvnuҶCRrWYHPDsz$0K괅ґ|Ǝtr oué7=v1bKg'|]v)C%0rSu_`# y, ` 옗x @Y6F+0RU\L@Jy9=IxVK1bD1}bNMSUL__Hŷeqa=LArzFV#k3HpUAQ9;ѩ4G}6axEy (1լS^6n]G %VA5:y.z7'fGgvo<\[ (DgC+0qEjJ1,KĂ|H;)ōq$F]^U@ゐys#"W üoW&.Fhv:f)##`zhQ$l2` 0}^X N]p!$eM=Y%$MO1%;0$aQya['9>(iگo*s"@EfAu64 C4;` A`ɿM߈eY޷f"xRӁ\+V"kݺq26ղծYhȹI]/,u~Da2V:t{m$W>YņÖ9P2}ԷO;x}%h$zVe] tC*)^)w&}{/wr pXEFbw!|]HH\)3J0Jٸk˩>Ik&Wã3Bz4BQ$l^4: iэ3첟q( d.q+C\Gk[>pE 0 F_Gٹzht=5d[rCހ9FƑBx2S!4~zVEvHa>`2NV6y޾T,㜳w⋳AO[R]kCKx۵;lUEmWH I ڣbّu!ό'O{IsmYz9DCWrj11ʈ^T??Ѱ ~hbzmbD y#%OyroעDy{*3xo"y ;Hl!D(HKfiIKÙԊnL q,ڈZ:m(k|>N(Hϑ4sddHTGӈM<ܓ O !@Gݫ-p*da ,L࢐ /*8ХqdvTл2wYF.x(/^Qp] |5yV?؈)Hm5qHu2}!!l\eD>|qK7!gэL,u PuAf506qfE^ fE/&ӆLN^RG) o)#0'MX {=`Nbl 4bA= $$Z"'Ž>34S`~o a&#`HPo1ЖE^B!ͺsYn9oGfwY=9<|- ٲMП.ʹ痆C8}j ؠH$Ѫn:3)=sJRNjWQ{3 uc?"An{!",%J=vmT:-12ށ'^G8܉ ٴz' e\Y ix/jӺ?eؼĘ%YKR? xdN%x#mķoC*WD< ܺ[~՛4 ]e]vn Q4%{{߸+XSwPp6; PaXti8AE%g.4eG83T'ȧFZTk arPM~AsH#`Jm߬'l|Y5(gy5 @@E >=P8HL%d_-OTPU$OA @II~95eW0ufզ+*&$(rp^NIY4ך9zz$H[AFjP xMEgX~jߢTC綹Y1:}[eI͙6>3Q] )~t4eujSkevޜ)݅u_ёdtrH6Skێ 6%󐯌d1DҴh)dlm6e|3U;[N; jՑ6BRdFee9ebf=gva WEa5IZYF;D)6DN,#7k7q8z׮U]NjD}unc{wo:VZz'ER% tGufB_QA@<g3% gc`}9?ՐNEJQu(*}X?ןsF1! J~Vr_߬y"{vz d4KE٪Tn"~ K!V0^`=K 1PN(^u'D@^$5B`Ee/ax,@՗漰JtW5w'?!U"S-!Q-^ n6 bԋn̶gZ=5SlKec9J"3AD #,KUսsAW0eD>! 70&7CyIznmc͟Ā s `FqPEC6%pi}|tB$+F|O"{-Oc=>':z `hWK2AmȮiڜzN3Lkk@¤ݳN,A# !ǖp%0 +Z6qLcv 󘘛T1`hPM]Ԍ~i!rZӎ^@PPZ^# ?1*"~d5Ϳ`M?v?0CNLt>0$$!(ܟ7@K3 (NNbTFv PÄl>𨉁Fg"w>JNCxn"~ Q?1UNO }ls@W5-PP=P*k=KB_tmJؓ]5z!1` QߋTO9זG4[I@ Wf-T}B`nqM+3zl*"8eG3B.^w:iJ}8.Uو?=Bj6ueU]l`疂ōM:tW֊1IRҚ;d7S`;#F}nk3,z7pPO9.}<1UT(5b9C@~w׿=n|n?[l_NI@wC}9'4P[@s֫xwz{2ZyJόinaQԔ?{0 :yCÀ'A剩2O($)ؔuD4 ~ n]K^96A,UI-@UO!Fw,gF<&B=?3+Zp~N@ǒ/~MYi )]\.`1ɝ3D@f(}&~mDL~f"oBdmx15GdWc)cj^JB+liwgf=L⧓(c {7dS:7WB/wIRg<|D-}e s4a1teo ok.qrYU;[tS"&38=ׁ֪ujxb=t>@k]|>[S!]pr288;K8ɶ~% F;õEvIw]XU6)_KAnY\Pe7i*н_wǵo~Ҕ?'$`jS<GE-n5,ep~>g"xוPF΂y-$gG|_ͲLnO&q?Nw!(A[s3g!/==L'pzj痘o , [MIoJOU](6bH&L | 50͞Ns) .?p_ ݬZ^v7~8զDyU3o (8،DI\w".dvq5 _[KT>㟢&3 x┼WhH]:?k{y륈w^K {CslC:xnSk:O ѱZ&ok:6+ a#R0X3uO#3$9~j|VJ٤"op^H_$,JC9-13f$4 }!P3~}@&7zзGG;;m9>>Q?J;0XF}FZ xioAEf:Ful`("WLWu_-=/x+}) ,#e.Ivqtjk Ah굦EF}zy|ޞG+_j{G6MnJFUXL= ]G;2CIˎjh!ffQ5YC~i ` "h YH NeN{Rm*|k[rwoؾWuw}[ΩkR4D+wbdž߻ ~{{&"@{ /'=gw 0a1}zl6!?gߋ>$Y<'V0;_D?)חz8e8.>6`o 3'f?ћ`YL3ڧfWKwǜ=<3ϖA*vWk KimhvSUM\a/r5$KEh T\ 4 W4c1 jqf}f խֆm\%WqȰDVJ2C9P؇DrK|3XzԤ(ixU[UO %W $ldyͅ q{=KXdU!$lLG>WJ06뇛@ª\n!g].b%zn,9\i`WĚ<.]"DŽbq1RcOP&jɨH//ī% (| y 3=P BA=um-vcuL<߸ jk!9 Dm+VA{>y^'0>h]hRvր킖 Pr!i `\s#WdT}YQgy}dS[5{}wn}S {?r.\ɶAtV6OIF}S񟘥B<-YU}?\nk;? >_K1ٛ^-~giY}#Q6 8#SW tb$6(;j?/9^6Wwi80{T׏Ի&ʴE>_u,nC*-V#u. uQ%@OSw;w+ ퟰux{R B_`r`vrp^*o ߒ0DvC@35}^&`_>nBt$I1v3.fY^) kiL3:KZP?Qhx f&5>㡙'{!1%&R#B>= #J,@Q>w/u0} 3;r*e-Jt$ t*B |E@(uh( vj̒e~ylF"IfV@()as֏i'Yu*i'{Q`)5%D|Ŵ1M+:`oFUgXtCkԛLu׶˸M\{ rZBup/_B]^ळ>u0&òBqC-wI.HO )0 _\V@%QbV !F2`0.DYȒYY\c*j ̸Ok`G'U Fc cgf&'?ɎeeX~grr=%;+}&o As1;wD2HX5a06 0Q]Hc!^ O`'?y=~}41%/5K:Bۀ3aMWӌ>3EoVG?Kd9Aw{f:v:[{r&wY\Ia,w[YK?xwz:r:6p$XhąPSLXl^u"MO v `sN7ORbە=*` FRm, iVQ4F#7ac{K%x$X@W XZK4jkؓsc7Jx;4O~C{ voPa!DH%յ`=Z0\.2b?6}C:M] $Ķ`wcR {L4!h~?&ފh޷-p앬;5|0g&3~cV^dxIO!:~0E0SWu0g<ّˮ~0uHB]C@]6lțP7Q5z w3 -EZgLajod-:z3?nSѻWgDau%R',{կgs5E}ΖdXIĺ5(Кrʥ_ wzxNRFL8o.U@MHdNa5l#TS+@} \ŗ4puYP L.80_n# pyu^ hoLK-Q#h`ACl$)p9uGL aeא5\VoEpo..y |QO ;;8Fƽ8zl0&7 rȥ$ 5HH-(O^(3:YP͜6ڻf^Ag b5>>t@8(!!``*ثڮ w ߆Um|d󩩊n6fSCF,[8֩>^Rxe:&N'~3nC΁ae_y)u|閺!u\J:Nۨ]w߽~f 37u% xJ6_f8>w1[/a$^d Ovr|аTV~m t$G;G[ۆKGe, )/ic5+vfHķfsNl!yi Z=wy AFsK7\: {Gs*<5):VBfJ9`ժgߘڿ?vX@#AZV_1&Mt y w v& RoQqi>YV3n!`~>cd7GgGL෋us.~HD9<&3}(#WiU)u8߽;FL3E#5^Lx:EdcJğUT/F ` ZSra睟ԍP "{te@D35N^4nYMqiJT#XKa!a7KmowO>6{ gO»0 : g p(=ƭ>H!#p1C{OAGj?~43bOPb @B0Ǥ|tP}!&Hjg\Ô{L/g`? y5Uuq` Ͱ`VfeVhv9 ś `G7IXP-B"`7t|HZ ΀Jl hhzW|:>>q`߰w;)n54z-+0ѱFsC@qkA)r}̺3?'v`ƇE! 3=/1ӊ\gh񸒀fvpx[o``[49lXƕ޶Nl_2'bM9Ϯ<}qut{EB𔯫l5`;<R7wa}<>y!%ӳEmqkTXcd:S4Xn,Dm&| p$ {gO)1=}+ju{JdLo  ޤ5ONu/:4{>GKɌy 5SD$s֪'4~rnx+ v4sLɄs)#?Ipda:UYkS47g0dZknz:B}Gs L9f͖s=MH۴NX*kHLc4~pæ/]Dhݯׯݓzk%.%,K CP@5{Ey|⭐PǶ?#:|=cɐi=7kʼnUF -^ȶ2vG`?\eh)cݟ:f嘂=~::.8!a>iD1JlYW}X/hV UH- /Zubd}"\f2s2,fr2\^Ֆ̹ d>sC8Ef@g+'&߼_'=*"?B$ l ,7B|oN7v&@2&7){^EývB`H=fZ50 @Pn"Zo ^l{Ó]<˾-ħ~s^2L;nW/;Sxn*$cSlNt.lbzrOw#|\QB>J;ogRTKN^o^ݪ 0gkΦړ0#=C%%qjdqcMo&-oN+MuwA( pUt "hHqQ*P^7BǘDx$m{8!96s!}:ڹspC6nA~w$ؾ4nXb=Tпz`,D8Fpgqj:|t#d'jF& f>R̷v!]oeLa>_?/_5c3gx}vhzll|}Xh7<} Eq[Ѳ!s~?rf`!=?DLRU+'N 3@؟ |Qbb{-6%W&3Zj&?1x1zt5a4KQ 7c@79*ϫO=uD՜:bK(h7 {w_HAN+.#kZFM4P${G[bfOVROH$u9x4'\`Zb!8y9jcu 1%;L5ئG"42Í)d`t~\xhs,d X5 2@1%$Yº3)Gr" 5FA 7W0s:)@G҇iL]ufV|IY h$adBy/I]pIkz-6>$iHSgi:*йksijM,,K,sB09 rA\'-\陌 U翩 ~"HuwfO&Z5 H݈.Mߔke)N|YV ˞6P5-='Cr 3yg Z3@9#OuPЬV೎ŞyO\D|kX ܟftD+`>7$2xݓU'd|R KMTeS 7$5ءFy3lIث!6|~jeKRL, 0dS঺[%Z)uTSO#?S^ ŗ᜺Xx l ԪBNusfEpV@ $VIlnaO7^Վz߹} L.3W cnсDA7.|>åp9 Z",~H]r.⓮f-m 1羼]>Ft( H19ﺠW.>N jE!S>A%"%'K.5B?1$?\%X"6'ǎefI?)ɍn MS@yLȂ+SR~8nrD\wOv^/i^. _sـ>k>'E! \/O`}0RJY (f䢀y;@9L!Aomr&ی#my=|TëAgs&3tmdKڏqC9LB_#Q?ɼ T,qOY]?yi6GF:sr G̮߫ A)c3zUBJհ٪Uxқ`6SS!W<:Zʻ?Lղvf$*jl6UO[d=h#@<ݷ=V~NM͙uWp8%~ /3ܔ)0ݧ'Z A3IMo!޹!M&tU$/05TYΏ%X+hFb1Hdǧ3!:,OZ8aM:귗@|?|M{ ܰF. CLޢh{vFjM:=?Na00\HbwףT?kK[8κ:8-pFK`غ,ì,fP̿oO1) TimfIP jɠM.Eh_OXφTD\݊nđe:|P<5)[~IjmY ~s>v79 s(Ѡ- -|lJFMN8hp;m,$2l\p:n 88ژDDSF'`}'c93|E~``k0,AkgZa!BjBh E`_N.iݢޘz%A@C"Ge!@eو7:a,*J1LX.;@7CjX}J2u콂_8u_'3.ڧ$zwpO0g^t> 13Uзb)#> WWƏӲx}63oz~~.y?3ܢf%p4U̍1O$!` e+,U  I \> N'n;Bہ;xqROMKpF-"QAf U,c.[%lu JdwؖsK\{k:7VcC{ҿq[*ۧ\5ikcgIu(tuɟO{l`(B`HW,]OEvpvXU -;׿E -LX\`e]TM\7/L985˓)<7,AiqPeN~D%{0j@n_k{7b@;2xp/Mk/-ۣ]x i-|Qs=*KTyrŮEu8_"Z]?g_`/92xǵ!{iJ,gfN"Ϋ %K 1Kx94 AӍ[:ϒ'YqF\/fE$u:$x~XYu:VB,S/ř2BqpWwPŷoؾu J_=0y|2%\;o-uyY4Ǫfx/)?.48҅ q!iDk ^s*!uv>bp̨ w<V%rX1) )7hV,( Dԥ@,eФ-|I6?KDLg̪K`x}9ⓙ3zqLſ=& >uy^Io.%nm OݘLj`:&'Ǿ-<9_O9ПN#/Ǫ0 O8eј >p"L6 ^Ãv@gAE/'@ޖ Pk(|Xms ̭JGx\::\6DwHp6R3%ȿowk'j do85`xic3^ۻ1E 8 [asҷ c9׃z=5fN\us}`%&?e>ƾ#H@CkXl |jvKl?9S=k0t]Lc1[ȼL!yZQ" $21l) KɒS%-t \]-̪0|cRpo+JdYƻAM|bރɕ%,Ș~ +ط4 vwEپZD:RVVfObmmM!=~ "UK W{#A;DZYעR&Z`9!5+sW#c)j .^4=HK`Z7N-{9׍!ZiO̶ÐDɦE <\Δ< K$3u{j~ycn0(,)XM}L3'0.$`2 \nA/M !_| 23& rgI)$L 8H"L0#`'F@H2`/0"C)Ֆb&>eUvLSSDg߮%m, -O6ʇ:A]~ٲ2-ykh9eNEud:{Jh"u Mva䪀e[ٹQ= Cs6Tu5`^բevY;(]PW@gC#Փ&ox81c:|wOw0Q m[X2ݿr]_8QAIDAT-%i?N~R]ԾLUu/CHF;nw3dƀYϞ8tpHm߯.tEmYпc4J0b %?pT 1K SWBkJfz=RPP6W|tD#;בlK$YxoZssYA0BvWܬhlwѻ~&X)❅ "FV^c#rhClĹ=m NZ4b" ;up5wuA.DX s3=u}ܺ۷!WT7kr;NF &*(vXIa)b|IUk: 2Os/NQ I_ĢC[U<|5yNE\SE7rA:S 97:?=AIL@t9!V&`juCWuKkK5| @0'A\@EJ&3\^P@".CHmTuf0] MF RAqcЭ*Sx (m6LQDF'/;Y.t {?L_Dw/Bզ[mMo8eq]Ve50 6P ۫XB*{{h_kpU|_[7Woko /UHs5[q2!#(TK~mO(&Yy)p""{_,U$(%Y̹ l7xWS/GQpvtW\C@Ǵ? ?a&Bq@M:\7hc?F֪i$Ҳ=B0_;6 ;~Ospl  y.%U9p JAZ,e`Z'Shpjy[G6<<f+1|6ꔀ#k Րڻ0{:Wdt #5tFsC-i%@"DRI HM.冖8' A3Mfh=ܒ䰦n~1JdXu:Z^p>Y2G^d48yPRA'?gad܄7haSJTpfY6*j"6֗ķn!C8B|vְ "5R;GNù(V p! |рnpAv ?['H%?$^ )oyLg%"Ⱥ괮K)n8Ic8,+pkk%- |ځPrSZQf:>i'Zh$@@1 3$\#P!3f-l-0u+`@~S, P`2ՈM'!2"VZ?;xn,·)uܲnY෋ˢޚ/ 5%{{ v5b!f~[mlm=pGnf:)dPz m|$4Ғ#{ `RBmw魅Pb N&<.:@pGi~h ?~~/M$ud/pTO%ZKgU~oHT<s||˕/_^)qW[P N.dU0@T2ľӷ |/૕>f+K-/Wwdm#^.P͡P VNa!Ђ֣9t4LI#/:I3@"Z[]duҨt:,: 2Pm\a% OKD# ޛ .oC!J!"W0,5oR NxC[e5;RVF.n=lݾY S$3vha5Co_ ύh*plM/D+QQAAil//k>2U%j sel%5+06O]e~=|: ~fxحGV̪z3~Z?k*H؅K8VI@_.WZ`;FʪfNgHzTH3 ! NK XRkVľ&!up54(lYX IhKM"3XThZmYV^&cU75*azj_O_'Zp/D؜L.wnV-?[άG{oVmtQ YO}:Riox}>w 857x%B_o`(_<|*B 2J#1\q̢݅gqEHި@p~ыV4bȢv-812uN߄n΅*)hTޕ2Ve%A<1]ԲS熿|G3E[ ˸P_|y ;709gpnyצ 5檫p0CqS\$^V k.'OadcJla^Y h'A_'ق~@ŁB<$ f؍Lv%-A*RK0H{jv 4(0#P eFfVͰ `F⿸D FBgeouʴ)S=`9m~#26ݚ6" `UR WGoh7.rOunzD^ LoyFv|$PyR9̟UȨ݅&Fa/z7_sX0:7G0Ͳ}& @ǯQ_NcWXN[izD];uJN`zS1H4}XxxwtZu%. iJvo<GY װS`l׶ (.|xX ׀?,c߽)0`?}GDgiɁ>8~L@o5p~m? b^ ٭cSI/zӳ~zFG \L)bʦȶ25D%(teQΆ{ϭ-`5#DrַCoo:Wk!4BjYv8`j/see:OS$#9!A*7W f"9?y,eq&<$VE$:?[ERׯ0 zP& #Y9.DRX#%.@t,>uȲC~8$ 4Z*I,\]V&pI@HQ?B?)d$<$`Zq]T/ vP@4jW5.$|.oL) O1wpL6aff `i@20'0stpvIKjR3$DI"Y b&%g1];  );R:ѿfe6%^rmC̾Xڧ:iu(pep.TFNԙ 6E7N t mUp &v8֔2YRle4wT=9IhR{kol yOyĀ*j\>v!pKiB7_Iq 'JT2Q'z6Ü-# `$9W)M_kR|ǧRV޻1QJ@Y" B0 ΦnnefT| a?w3\7Tp&7o &g2wْo{(u2WYlon.13l= 'Qm~Mݐh+;xV0qNa3rpʓ񇋸*^\Wsax)졻h)t1mnոFvt אPhT]M d-l e?w|=^q1!%Y`O81M5-m<7*yOg cW睡FL7E.yejCD'gxi|2,c~#Eu-"Qocm*%lup֮-GQ*\!tNيGONc߱[>49(I"jNK`!NwIAw~I{L4au چfXJ#y,/>QX+Q7&ٮ'lfU7߿>}.<#~>K~K듸qRhJ.Q!lyƴ(6x 32Smt~$BfY$8lj69F'` )@@/ }lu P'olh7pN"M[._M102فB!ŹM<7!ϲ}XÒ hYHt(zMw75C]4P6h%9թp*]2Zz>܃8ęWM,ѸWdwlw$bf"'09 K} `hFn/T0Vɫ[=gL/YxMWd}f<'}PXj_5lT2 eRa+S7s}+ƶ?*Y?[g5 YH{7i `6߶֬hcO3YLɼ@ ?tK.I8YeLt19 Ycb˂#,k[QPSB *./QQ'VrJ]h`g-XZT gŠt,#Od ܼ=Z3ǃc]g0'}^g0@п,`;&`:":*|,<u| \ĥqy=U$`Vŵ  _[R;$F&1P`:iY `J;T(:)\!FK:xJG ;xմ 2@q uf*EVM@2s9_Ekk[ gZz;UײW#lQΣV|NB"`̀0 `'3ՔP#Q51))xq:ZZŊje\}]x !7A-6w'j_vP.N0( 9B#'1 6;OLŴtύ.F W+.vpUΰػ"&5L*݈-rBj{{LG03 f>;)p4 2aPSm0 Z\~f lŝ}` 7&@3JFH'+vcg<yk (`bFجX{M K D-l];@׈jsrf8Ku]ˮ*,NwHK۴ضB|%!zSQ;Q~/"-\N4x6-L 8g tE<.l_"0/EsK1<>ğ$hJO\~ifB8lDRHT"$װ(w[zc+k ӈ$X\[ƭni_Fl vKeu+t؏727  =#lriQ/vtv9^>MgaLǧ)X5u-Q P$zT1_6saXaM 6ZZGnйхkc_}ڲtɸ]|͗iwYoM)9 /6\Sk,p>{׳!Bf xB <)D_F3zL,*3m~>?5m)й?5\5v<9Ƽ}o8n'Gu!I:R?U;{Y2ӽ`o˷ڏf\V;S[L Ial|y8C2뷊UfKs79C@lCn S&8%ÿ֞oT(KGXF`_5psUAug3F̱Vŭ,:8H )%ĉ養ųmW85*NX> f2 yX/ DJ ~vM#xAX ʥPG9rRs? w443˪2ackKtv}еhD6X!*#"߽wr j,C0Д'?SDr\Ѕs_(avxbs( FG@zjZ`]-Mށ ;(c:oP?LFgqqe\1zP"Y"2tƧ$Zd 0> rؗ Ƣ.yS3gL00.r]̩BPπ`'\[ͅLY&gHH^C`9!)9_/C+m xwiǰۉCfze`Ol D:tat΂*Y`i!ܝY-bUN lS̨zۢZm8I'+ZСF$cIxa2M6q N&Y9+JaZ|v*; ONt=5}(q`ova]hvBe(Nۣp1eD&' #: ZfyB ]hƙ<$h~sC+h[, kt<1Uҽov-JRM ?n+ TUү}3"a'ʜŒ0$vҳ}z`qs-t@?Fy:E|>x`U6<܉&%_ư @0F"Vkf Zt HڈnHAHPh_l/;jxUꟹtCOY8)JkquPwuDQ<="Lr O_IܘaώˏgKV͇&o8x09&:.pMXY]Mys+~tvtRa>D9@Y\qDŽ)< IX2\M43@Av _z//y{/,;ŷ߳=ΣV)&eQ%RB!sNr1I-w=~g [@os>H^b<^f 󱫬K#nY_/G"kk7?3Nj6-i?KF3@$?`J $$l1P٥@b.!0N#eM&.1!$B@!NRKc]erN7J8SCng>TI"M Ԭ͙P;f 𚎀SXnxal&f=lMEќ pI-pP_j;=]DZߝ Uq#nx]G.q*>>՜z,|V>'?ȑvPz:`Fy;: $:Rnrfb&~"HXD8fc+#Ë,{ \?Jn?W;kiǀ{0bE,:QNDy !ɭFPR@ olMw,aӁnkcUKZ\rrJ 拰zUSnxY `[{gvs6~T.~:n-/my&*cEz=( j_a{o`:5\#Y h ~OG4P2Üv K((SGqxg&-'u'Fo5{c%֯fp-/md=VZ2l듙9`^}C(﯅kv!??#c!⇓2ؕA8" R:?mM2ʇ$DO~3i4+_3'>nD4%Rkjj|sm{h/lO`)6vng6 }PѢp y3+{Gt|7ġvP@Чvs&ArwE70 dr>v}2CLk{-W;Ezj:A'[} XL 5Ru蕭:GP>N}6'rpa H^JqOSu?AFDɮZ?(4.%bKŻ‚/ʆx% ~m2+D"߯催 jHp#9zۙ"$J. @up Ow! O8#ܭ `*m%KzZՉCj)\+ty^jJـ :Be KBA7L]Ϳ[r`{\qivNΡf@,PdމicC!LbIptoxP[vv%b"@c\Jf~Mc)X A$fDsh$d3尣4iD &gTLk=42rlȌ₻7C~%r>7 ';? 54 އF3zLi|^OI]+T] j{l2}P#"qSLj8O>wyqR>t1>[7=tGSY5}K]/%f@rZ3@Cɞ pm gO!'-{a p?9 z7dS[fg>7!Dgyv"qj8/OۢEbZM/EhH{[B9*4{]\@6sy'<ǹc\lk9=wC)cxXmup4G! UoMO, D$^e #0-"d&SU"߷jBۚye3jHnq臀w$*pWrtdPh3)h _/₫?f1.xőA_$ *ITT#'on˯3͝œ<,~^SۻU<ҒKdra}\b%'oKd?pȴdsc%t`/V gl!@@FZJ0J. k rLbD;0HHcܖHFbewXgT/@̵LfZ;Ev\U}?|=f0H" W+|cSe1+ot9B}:vXf$? &{1@аgv 7ϕ觑dluMvDȡ*qN;u+am[- jBjG]9O+l/tHC8fߞ0~*Zޟg$MLbqjOM!=dh`b@YzOgl$3:g[+3L,E &u<`ӇǻB,i 4zw){8oG 7[XKɞ [9=+ m(꡼7E^V{ !M0o9, 0=S ͈^_2d[I%I\F2z;{06 u;i}w% .N 8V7MX(f/!}’?Vm 7|0Hu,i:m%XzI"}=B,AEJ(.a 7 Wʏ{(>§xN _+4> $pۛ)9As伫)5~]Kiܽ ~TT> OeH|ǿEbF<:p+Qp}}B2G{(tj5|)&B8;`K@+-|r.5rLE p03_c3"- zp&U|꽁kXm t\*{K(9l/ܔ<.b^5u4-ɅRqw +:36ѿG#$Vۧ0-[3, 0X#ֈo-rWJ("$VJ3  !y!qAfN0®*_> xL\:۞VW70:ݞW} i9,24>?Bl=W78ٌvY[,{|{飱&M :þ9m':7jt8'{iI:{$Y Y;?Dq(l]}? X~ 7x7rNrǨGbp/uH5Ut$hkrҌ h0_=!Dv)Dax :SB&73|Fxg%v;{,>ؗ^ .heg+\0Rz9O=݈sw,<8@j4J<qdtkrSF=ړӇvfa?axߤzɰAh B[/0y~ 2QC.MWCG;Ft(SU kX3w*Zk Xu6|/6 "#l &jN^ة#dZj?Toi`}7~_XNfkJߑ8oI]њj=!$ŗ$.p XFqݷHyz7bɿLFx[N4Q"P0<^TwڲOTUMheCjs|FLӳ@k=#= z.4qrfVwbJ3w5%5 )l*` "G}"L7, g UDHOSTJf$`_ U* 0?>1n^NB@I:dDDW{ t:Bo,pnSm|߮kڜQA )O ep/S@gk[|J꼘F:zTd־oT ŨHNIFAr@M 1~l/~Sټ'F [rEC>&ll!X #CKU񁷅M#ywG4-VY-/֫4%P7*F]ґLӓ4Sڳv`!  3]-!4U[}z'nf]lMG܉$Oi9쉹#C鋵^q N\@7J@Z@7X1椎B֪ӝ pyk^GYJ I '- @׬4ӏ[x WwN! ݈_Nى˸Ut`=I=JOHYZ Ÿ:;f>\:thC.!5\5 9: jF!W' 2u Bx\^U^MBcRV;<Jd6ڼ&̢͈̀" E G BjÍY,(MT=hWG{*D@HfҞnM#͢FFe)ܕ&/S22ڀt0>h TgNu<>:KN_>V >98%Ǒ%FL 0BIm RxG8#_,zuF[NE~Lh?0){{(2pqddHܱq!o4?GhzMޤMh˻H]Ng[gmlg LhWSzηtCu|n%M8ƃv `H9x [E F$mqƥ\_ADgs؝aI@ޒErc?E^"#8w>+m{P}P/\`/xk଼P &ɍ8o3^s7q&89&(Z(U$E i+;q!3--}Zu/Йe[Uw-zwOuf^k#}!bKK|m9ynʆoj\&pvˏ{!& ZOKd7O#Oі~ґHzn\-up9ga"XIޟ -`2 bN xnDQ\v\Dž;p3udm )*club3r{jÈ i$oR$^DHD۠y͍:$viY5 ȅW {Й`4 ( 4^`S"5 |/ N.? nUi3[|gѣI< BrBؽB ;LJ3xhc>޾u2P>ԩ 04M2o7~TH'н(s iksB19&?̌v.mZ%=ҶfpRel3)a8žDf$ KáISv(NH }V&:&?,-3,71B@5II %hO- E\?Dy< vuNޖu}ZmQMDŘ5:/ƺ}}?l_aNva@?urK@t$$. Wg :Fs jRos?EfV6,n?ͅl78|^ly[.jn$|Dzwj43%=w_ESXQD[CN= O9F]~q:팶 2זAM?K*HAz] {ȴX\.c9jԆ`=@ZOsOC][m%wv~S˚`[jӇ \I2Wq=UFk->Y-{PU̵u ?l7L!?'5PPE$ Oٖ1PPM~h@rF9q{BY%EN.n%32>q-[ dSGOZ.'1=mJfgw]yOq 5An@T6%nFC%4z‡ Gha@ΡyҶZ~J#$(d; SoWk9aݚ%t&'41v qo]V!uPѣ=:B\ǕeeT6V߅'Fi~,xv`9!V~RIY< PvBqǿ`71O[iJN`Dja=+D~?:h  {E{{О7Fi0|VC4?+1䆸T#OO|8e$v iqq:m˨r{9[Μf 1  "#\$S@lm49XI W5*XY$knr:d^ s^t6Mspi^Ή*_ qDhf+Ya)ޕ[k\1EVAg)Ff4,7ԉўvnjk^@{i7#e:Ԟwh18&xQu#<ׇ˸|E6MA6o!Uc}لy'=r˓pZ=bIdv/[d+\ ܳ@vKeާŔ'U` hP($OVnszu;tUܫ5s@K\er.f@k:c@_!H Pat7! u]},I )B .Fx*(21!,ex[ =D4H[8/䗓5Il dFF7ǠIQN}uQܞޖM?u+m˖4 s_ ~*!-$&;c|XW;Cu[V' 9kF1"ul'T;@"Q$͙`p"$c/dC* 1`V=F(JHt'|i яQt&~ E?J9,* س̍xfc~{MN2ɟ\Y4;{ `moOd޽`T}؎$-M{|sߴ b@;{ N}+v?qd@G6v>G\N\r\Nd7$:*"=ThK '9@c'مzϾ43l9-D||ӡl(VM[phv"Gl2{jt=Vm e𞳄vP4 Jt `oR8Yw8h!MhºDku3 5)2ޗtό lg_)AHHtlhy6MOs*nTwq)knx|<&Pn*İq BAz3ib3~K6^=KL1rx/U6:ʆZćq{KK)N T3zOPD?D1.')WthD͍&$qduzגlG\-! | 'ZK6,E`ދY*[ 3aL`aR1*iRD"@a0$@oT|Z`T7$2B2#wZHHLp4B|&]Dl5\jݛP@Eg` ͱ9f.ǸǥTVts1θXg'v oow }ښoN$j hirn1Ϻ蠅}-lP ǩ<Ƞ2jyץAY} ,/P_C hÛ bG `6*j@Vm X$YY%D'oO`'Dj q5j^Ec9sK_iy`y-=>IxL )Ś=7os 3 w(l'SCV'I}Ӿr}Y3rMQі>V tQ |%S$5ѩt˚C`~"٬M\'9{AT$b}kF b?n۞xuuq53 zrjF|wA|+k<8<|ӱNԅHfWB!'"7sCfVѿ 0ϥD|3$Y@#li6?8svt mlYS_96:=Jqw}9|j?O1\t)D5λ((U Z9D A4X +#iHbO iY%t nEWq3=˹2aڜtD+S~!.M]_U3Bj3~6u\5u_JiSIY5~_? A4kn;fngs>˰(<0;` q1+@2'-<@̀ r΀D!i%u~7f Rb=&;38l%k*whPǚҩ&\3ǿ>mc_ $Gǹ@eŇ1܄لSop8'SG\>S堍4юim=%]^#aG#7ETeo{d LWhvҐhD<>\,( qo )8oKT?BR5\pji#|3y+H; b H@'Ӽa)}o|un2MtqsUtBSI~1<3(N^Wפ{нFv4Aہ\F6>pnYr[=g k =$&8T&5֩'_M?2}ͪeȟ}l@`Rr.Ee'=kaeYLdkM潷gBTE$Ln;|i= xg+$ 7%RN%Q!XHWß˟|fvdʥCj8]6w=s稍n IYp/':la9'k_`5ipY__gY8ƙ$"Y(Qyn~]A{SɁGxxN=Os5a&Yʖ. #NUe9?I?3 , Xk gp> I fH@BBeZIJ[=  j̉rFgh!IP^rXArElvpC~HHN;񑷁hACr*3 hJ^PNk@O;:"OAH[{Ӫ-)ƫD$BFE97}Fye1cuv ,v{Np)Po|xb@i8NJrX52)ZLhӼ=[pIYK3ාѵ&10{WTFyf>}I)u{m/U_ka>5v2gt9&2lܗ9̢qJ.NMY4%PA* x?KZh8B% h 9M *HL"\k(2h.H~H!'lpqs>2=m$j\X#y#8TCr 45_>D}gG6.2*ՒlU| (oa)^1!?iH';/JjB o䇠O!XnXֿ3~d`+!$&7\\FHTsgT [`PXl/mBq1,la3xoӋ˾t; ȦYş__??/O*9Rsy&n\ޜ7ZVrK\u\Zl I f}flYkTߓH -܉݆O@w!Bz4g9@L۳Lপr7nO&p{ˀ8 2 n"`~Z뷥+0BXO"@xD$Ĉ`yfT1ci $7(zK)I)rjc|XCt܇=ė:qDoo=op}.Wm@wT/C_w< |`wX>Ũ%bk#un QT?[=ԆMdĺaT \L)dfBH1OҤkQ]coGDdW^Cb1`pZ%A~B"n)7ƚP N3.ź-fNd)Euv@`N̲\"@0ڝU_L=ڢPoQghcw3J;0u;gX%LԜYoe85P'G23BNy8 ]hρe -"IkjYCK[e>[*I~x;T3 m6?K j+ Nތ p:җhC ,ǫ>ar\P">U|3 L`Ӧ =Pu^?k3rD+*^ k)c$;yI5|lŸ| F%{UY:^tu4;|$'1ސ-GNdE? eXvF*lm%`+jy\R߈kQ|o70,EG@D#reiY#3ڭ<,Τ>iBU"y>4eRF)oH֩覵j_GS8~±N yMCgYm*q!XUpF6U$& kohoLD&?kt"uv`wz}0DaQfd lkwD4̖1C 0$W/=o]ڐE7"1Ͽ]xx^y)MpQ)-2F#U;H6vش$_½lq#Bl5 ƻ߇&Apb$k_m>?Ibm-r>mnDDl_X|w!hL#^.c-u[=/}AnKں:XnI_\gOJ@"ײM:eFϳu@ae f):<Kl iMkj(щO^OCy]xuwcmኰwa|K M.r &#p8:u[i|URDKS)ޓȌ P: 6I%[ꔑhu`Rf}2?"rJLmgVJ{ZSª,9 HrR="HIU9V"kJx砅 6 jn}p2}rpNjc{V{}ϰOkO,fI05-e2@."gFL-L|3v!?fk~yh( XPh7L",A(kzNd[=(5~;p#GaYg7XP_E~WB uZUX qcu:##D 0Dd]Y<=~qY2`C' &#oN򜣧5Fo2ἧ 3oQ3[l%.ީx\9`n

3/pѮY+^]OY4b^^vHt}: 󉣹X. ^v!1vo;/1@o/,E"8QgEHr'8Ύ{oM!-d]\olI@UE >ɵjk4Jd.4.[S#"A? o󽚕l %Kw,gB _{ ]w]w,( /ytD3߀ څ0#D9O@gIx]4R8bBb,NxTBЁJ+>q)X'.%:ugM)fv}2)&t˵,ګBH4I&57.[ m!y9KBJҝc0Z=H(<%7u?lS"7bfJH,Uv px<.1+7«љ@C;n&7] $t_8e:% P{JNO^ؑ̀죖nT`e΁\ا 3\ΔHHN2GNBo'4|j|x.6zOkyV{fErsމ N7BZ]-Ӟ v_^V'?"+ _`-H5n374N[Me ܍H2)ܦ5SsSֆ)6kLJAXk3Ӝ05fk'je]?}QP([< %m{0ϟ[m>'3 ص jc}p7??/,-ݿ@['#~>-ܵuNc;lkֺ`W•dK-?/A}i{y߭ )u6GkjI/x s=S=rT{.xkcFg=5'+Rvnbdc~e50gEuvA~ nY'$ u &g7Iۗ]i7,că&C`/؍<~{ tkGBbv԰eDn:N+8Z$0S| KX/,"Hi>F;jHeQFO6x3|.;ge>Fd 7wq-xK,0 @&4pgBpBJX.X^O#8hh]&DWs-.7@yefv^>e[@`{"Qbv\Q` GϔA[ʪrT=g4"հuy. ( Z`w?$$4VIv9%UNVB^K20`[ʨ1<Tgf)ϺKo$۲|O%1D$+?5WO9BVmX':~,YLI:q[$&onmFlL}Zޢm7s΢ZT/f Nk )2WzjƖ:p;H>#rO oB{J;yo`;$heM)ԅҾ\»C\%q.`%%~ˀOtP`~G?9Դ;J8lDEϮZ5UX#9. K ^U_dvxs(kO#}>E£W0uËO?mzh?u~>f QÕ%! fy^YIIŒZXI(deQCy-, 0#@^&=l 99r(<8s-O7 \~eyCG(i4y^cMISfsD~ 8d6,Xc 4mo_FeLgb9YIkܷO[LJbkf: CL|.#24XR!O*L$Lq:.~X5"l?;{).ŚX'PxB`KRrMDz} ZB.2w]\Idɞ&$~,}Gqׇć@+<~\Ď70iI]?F$ W oz`2/XbF/TD ][PX ;DžUR,_CA߹ua Mq w30&ೝetՔL^?[OôAr3Hec l,pR]`FW.V9[GxP"*z^"^8W|ۅ`=)9ڨmA"S>k[qµF_yƗJ:5o%*_za ٽp'' `m) rΡwZ{^NTwӧ.XJ @V] ֖lDml]BP[hفMycN,f XTVi@ 0cځ8*0'9ka1k]t,P@7} YYgfuA*3\:NLv#HbHm;ߏ D4;jk"tgng;2y/'GXӝk(f%/~nEa'Aq! |O5NQɹIgMiR>޲傊)i 3JI• fHXhА6 #)Y"#.]9!D%H[^mqu4{J6{A&ځdٽ:Me$%'E='zmQ2I y%X'7 ls |Y {X`O5 &`/ڝ왆E"~!&q> avq'둽ҁ +r"Tj3kt XVpe9zF!{:B8ncyꪋU& e@^s4Zk9uU嘆G :aW;Pȿ͋S,iknYG?_P/F:Qb/YsPW+^f(#gD#4vpSj.Nم?34^ےMg;q*P j,oBuU4f0,\Nu=B.IT_Ij\ Oɫj6?Ǧֆsn7b5IO"ۜZjZ@5*e΂KgK$1OIԍ"& Ox莼Wս]OR@"ŠDp)e8'`FG+)]),cu! V֔l4Z7{B1RBŲV/l-|h H(Z!ipj- r<L+݂,aCP2 # `d)A O炷&dtODЃٸU{?< ;!p^A ʼn֠IDATD;9͏#״<b4"r?6e  A_F㠎⸀Q#}L"=U0=\ޗ- -8*~EaLݦsee*5-(?IgcINئt8ݗ0#r\Xl5^l O]h'&7`TGs؉b[&*7$ȼϢ`$̀]oN8j{V<Ǯ-q|1ĀN}ei8 >(ܧC'nސkŅn.Ex{K0fZU Xn@p@~0B'5x=\Uqʑ/8y\ng ~3@W!FCu#g-/s_Y+kMi  f)x|vH7kq/.o> k/?o")ρD;f.}7C@ł'([k^tҲ̚rq'(7x3p_p:))T:JYgKlqxm!͓v"X KM- u3vK#'Suc9)`qVx "*ı,˭즊Y& h('2\{#}۲Qoym!ԋ)s!DH6/hߣO˩ Ikurp'9;mS`EvA]r? HoaG3aNlր)&B?fT AH)'[d (H1`̎D#x[]m ɣsM o9iٔB38%cЮf/nJ_RCEFaBaFalh;1)AvZT1)KQ!0}=S⹨/OK }zfV`gb1A㭘7߇~,=irHUv O> pSɋ 0uW_=Q\O >!%F  CuV@vg,0 @g_}ҟ޷u5vM|C;`gy6+v`s` q1ő؇9ؑc%CsGg+RqފrNFi)׋IQE.:Z~`bY\TV!ݐ\W569JOqS_9Ý1)ڶ>`3&WգzЁim~R?cs;! {Jد(6lcizK4O'^^c4]Ưoe<^MYmVMtuC  ujZkZkY @ҌK>/|=>Dg359W+W ~߇M<}'9qno;`}s߂ȼĸvQԙg!ha:7g^XG~vB<3ߎ7<3(]DžL2u|vJtEK]: j#TK,͌3g35/%+}OלC.ȉ\ܠ/G@n>ͰLT:Ӱ5so]sM幡4 < Fj-^̓,ӘMFc=E2!*aT7"(G+ oG `?-$EXC0X~D{B ?zn~G : ({mLFhvdӼaOXom, dZvx& ! c(ŠZ^@JSY}}B0| uc5*!VӸW\9M{,v |lTC4r^>t+hvP̈[)#JVatB<Z-Vb,z,z_|9iv y9C TUF;4GGZiNk;e%.0C:NWcv3B+ Br4=aQlH^k?|fڊS\\p@v HZŚ#b܋&g`T}Q!=cB&d;Eň,>cy-YJ%߃K.[;:h$i "M;lPʼnLxbL3!ZtFHx"/*C@"L>'i5pOSJމ Gh)\J4L#B}Zi|A~㔐B5j($$i$se-v<3F8 FoQqf4!yҼ*[WSqL=]x=Qe*ɹ4'|%<(Zh\B w U"=⩣z$iֿ'߫ 5E4ڽH/ n}@{4d)y8%Z_wwinz7p׫w;$0g<&BtrNrҘyEkO֢4*B̛).msPV< q$r˛xdFIfl]HLF~P"]#ױ/Bh2+GF!޷spLMR}\yۺHAG- Y4iU4F[YQAA뾘 . F9@;%VDxh nkY4s.2moO?5̘ΐN GaOy\z7vSh&1Qqo~$SXO`q7ݸF5!%+(,OvRљQDǴ&85x/N"8=ĀEYT(D 0CrYxBNԃ xrİc,8ޖlƁM HiM7f)g?P xfX?Tf1Rbs2I|}35\-5[*fNoO,v:+=8OxXО礪| Ź,xX޼WfPKΉEZm']GeZv!ťWNlRQID<~! |^ )lv=섹v[$=`*=)@YNj%(zx3Lmv'9Aekc. v^:V6q!-ΞzT֫ƥ-=w1 ݎ"=?̻7B`5]"`ߞcj}.ZNwitkUUWpg“*M,N9O&UYئ\YD0A^6rNN!ƒ> ̨47ߚU$P, r}_"qdV-%(,<4&Ho܀B ˹a>/BqUJzjx{u7 yz\BV}To{+C_ lσMyL;Mp:}ʣ~>aEݞ"!c\Mkswg9ؼ[T)  k.B8ڐ2fp)TI[> ʉ@Hq 4e{$!'\D8SBIh>󺃹96[6'ГWv P,n\W us`aW}_ *yT59aԸxnan~?4޶H=dSs}@O?"ߍmLV$ppk=eGh%|QIO`UBuw[C~y 9!6sZ^UIS-mO*Ü>{ ۗtﮆC[q|CzrpS@rJ~;pzkC ѽmx${^ȊyG>c]J f8v45L+'!  nGi\IUqP겜hk^ԟebA9lk)%Yd9WGOƤ= :o6ձC^2y֋.bQ\y KkbGFH1oD5?p`IO39c(! lNDC+ 7#ġE88*567cCf~\->3qVT[ԢO#}eWȢ1Ec*@[Y@"} 1 $)̺Xx/ńp;0x?K F1Rj鸧QӚZ4^PgR|XƪVujC9gH/y 2gˡx,ԢD.Ť*A2sW!FX,ZM PXaIx*^>I| Z޿ܦQ(D ORZxR2.7_`-bI*sDZLQm*į ϯ`DoKAkKbSv`VGngR НF]gik|7v.~ ^W , `  b?&߳FN-N+pt Op p[QFBj]Ԇ`gMRb',fӘݐ5h7$(aq^9;{ŵb"­ kiԶ:*8"kԚٵIQׂx! ~9;!<MybQA\zsJŷt j'!{>x{wǛ@E=wg5ڣ8Ekz1Sk^A}%њXCMym|o!soz^?~>HE0q]u?;o>#vܝ5C?T$ ) _. wūWq~z,OnxI8 |jr8{CQ<[X?Oz3KUJH6H:,p=pW? VzQC3*j !+EH:m=i(fUcX3,c /xv3y+,i !8" 0v~ ¾gH"oEP] K¨ămVe!$ $b2֨\Sh\[K~L#D.40@0"3 xT GPvx_uꜙy5gK)mjc2UiNs_Vem8Q3ݜ vekm=jYQÍ;gTASJuQ^!$&dHU"$^=I' ׍~!n9=rβ*YE_=GE^f1\&(G1!Ę2KӸNr^ʉO4ؑ#*HesR6zwZ]OT/JzN(5""?*-ur; Hatg|bb.yns PA`*VH6t .7ܒp5-ƴ!w i3Tg;ix~ $~ZwQz[W8w?ާN ϯO_*hQzM/$/'"AILE=I90/'g ?F̥SӈCLX#Lsh&5#TṚ(\e2! @c]Νzb@%,"PP`&Hg!)mʹFzX |&Β)-^?K>夐JYi!fDS%w&!j$ϡRF>g0•ܴFCDQ9aHoGh@O[~ ǒkF-5UH}=#Ix3T| z٨_5Fwc78ni$ȭAvCtG̭Ep QGvq&Tݮl4d-i!4 e ޞ`@`aYn:tT"S ΡEC6"`/813P6-%bư8[Kju[=`!>)oO!-ٲz1l=DsAS!O}xf g7jk-~hR3{?'cofn9XofkI%,pgu9h}w0le}a$u'Yl~,1oqǹ` X@l`y'bSP욀\8:;_qHBh=!wĐ[K"9K<^S8i-߬V}czx{ttч 1nғ#Aexylc1?T[#MaIg_F|:_MWx~E+^uxشxx&c{0oVh?5LZZ1u ʟ}a ~PkXn1wNin 7D{Z4@OtD 1wkcf4]nЃ#;[ż,p9 _݌pBo'8Fsx-4 ie>>-xa]z[wB#?9gT Eov`egVGVKNQƵ@yl4 0y A }wigDcq x,=w=b{?e(wXڊh<,D5m0HAPaT[ "ǫ}*?RcLL BJO,uI s뛏u{gI0{((G@1񄈂7<3k4j襤tȧ)U*; mM&gp+i"Rƛ!Ҵ<scBR9%4~{ϱN7z.LhxvҹCX^(n'iݢck]UQtOYZ/^E4qϤ%弨|*5%VW[wϱdf1`q5Opgj29O8hD^Gh] @aFC BS+Yihd/i@oV@HF -ڗrBFR')\K̡9J w;#[?(<ınDdI{L FpVLy |9qr63(>у i t]֤x!~TjyyOȏ1K=|uu剼AG^=+VjMI|z kh^=(( $QWdųOk>uLF/iPޫ_oJwL4:ر?c/fSkL8Xiw {3Uza-$a1I@wvP~m$g 4@%y2r]`Q`Zd[YoyYZWmdQ̠GL<̔,AT@[PCc#q\Ӿ{vz4:pG~+#+cz IVQV}.A@jzT{Tfj3i|q.O"% 4N-) jT@H1 /Omz1 M as {o5$^mJb|+0ʠv?Tv`?2B`*QF@(zOmߤ,$A3^*y1Lɰ;-ŲN Zɺ8Y-]O2ꍆՈ66А.tعftGp))@rc*qݕ-pntm]v: 0P*%:3F XSn}V;V9&g 3 \lp_pMtR=B޾̯"u=j^jKIvU%DR.Nf1!B>Jp}z c WaIEr9Y ٫뜍3 5Y^"h{>AOK]|]z3Znϰx{.^.n _4>{C7\,* ` ]`6uDN?!8A\@>#$Ox$aVs줠Q8~F;5uwJ X7! [Z벿$a]@k+l֐׋/t@r9BBT$JH2| P%p#L8VTpH{C$(s;]I74gn99c]u9'w v۶,Z4c*ζg^%4QV7Za߳DrM7k_LM*&p#W.DꪠI-jFs!!q,̢w*)Kz²0 [&sz矄4/ >\ ^a,|yxmk';7Y<*`Tߜ,ptšxdq|Qitki!'bw@rɏj2PˬMI0@OVmX~[z 1`!t(pRN=R~t)F)LD"FyFHٕ0.!(jiL~?3 ^NSdCΑ!S SD?5)(`!)ĄIjZ0Ju?7(3,dW6HI(^a<7 fJ{{pI6X=: 9r ~(6tJl#x7^˘vR0mL31vn'Il#n8 Ì\U=-ױR?d5 .Dj3 YSK8>]kE==.Np9ijˏjUy--VRA=Mr^baFU}oo6XGϜIh|.Aۼ{>u)I&5O'_.I^^S@E@ώjw;O OۀހwݏO{Rwsk,f?EZ<,` $%?jا|6) GƏ!/r^,na =2Idx||BVyTp L"lO7ƑyD9K]noK:mzŭBqLDHO8--L-FP]ּɓ<{^T߀^}{S{+(t'E<`ىc u_ D ׉PO`EcE_:Lcz;&#IQdW*"W5AN%LDt;-tf|LkHh#HV@\?B0 N~yv!WBy`JTyBRЌ%<(Y)) sȓ?<à,4a ga"s#82}|.@vzA :`:WTNh, ; iA! 9ꘄ:6 WG9c:q|eT@=),UEi\OxML!-dGlr5@vlG0f4Zͭ غdkf587ઘZiQN3bE6m]h4> l+ ɀ MVO5bkKDxk%/];Pw;ݎ đj=h5hޛhh;:U{D>pl^_QȲ0Aٍ $Wǐ^Fa{/ N@un{sjާ/o[N?^g_?}?4r'>O-! ؿ}*qi쳿^u4J[ Kca~nyZ..$Iw^ȉg!>ke>5:)GSZ?IH ޏohZ'Ȓx+ X'8}k'˘ݪcdN<6OVz.`LSM\hY8˛YK*KwA]침9e4ևD%TYh.ńhb=!TX؈hEV p ]_ IIsB  xBrpRw*x*$O2=DH~ r>58wu7 6bN#-=;,,=LDT=:)}i$L Xg 0Bqw#}+4DZ Se<dv4?3̋JQʤ|<`d*. uk.^Ƥx/TQ&g˟ܦY ? 1$i$7Jp$z檒THBa6//,&4?_a},~>bLlQW;!wfW2΅h Y\x$aiVܯ ·9%qEuF<6VHm{N-}jl`o]wIWݞ@uXnϥcRL$n[=-"`itftT?kްȀyVvVG@Ұ\C݁B4w`Ej: yuz0r캣QQ jAފ>[0 ņ'G n-O#ƁVE$6EQÄ|0cX c7E~O@N<}I{Hfj$TÅآgp12&ƕ8cC?-ۓCYw( P"jO ^{R;r&cq1w %nyܶbfsc뜅mZ8AXitXؚkȂ;XD@Nj,Z{(,V?l8yQ V;oF*x;z޿ QL j}(`paUDmW$SƤ4RZcxQ\wuĢJn*j6-ގyE_{uBk^t%nѷ(`'%n%4p \GFI6Y^i [ @S6g>K:B>]Vek}?J=wk@bGө4*2A@<p$$D@X׮#38᫒sEܫ/ۥM\I:3!4բ5D]kJ:l9}zksp=]A[J}N#3Oy7=Uz6߶WV=o2,WP|fwG7c*n76~_WA۟[0ҭC^ Et YсSGt/vwx Uj{6@o#>m 0Ya b/3%\Ip9<[ir86{u4Zx4v5x}( ԖS)×ER@% q}+g)}nFW.\O->$c45xLLd{P 洇g'#!뿓Z$[>W<.n[YL3 TU Ϟ x&$iOI'iISڤnmP[P@@ZCXh^ h='&X]m2HHFtd0mo]M2n0>ޞTA%,FODlb\8?sNp1c$<۶OMn9rL hN^>P ?70^Ix(<2+z#Gj \IG ,Q)gihZs2.& 8OhR.ǚQ,E\p%39Ņ#)eDKFx=S=׿u4g^~ϔ%'nK`tDN$`j$́_ϒ5+oYi /-bj Wp)y ,ₐs5yڎ(#H:Ă;sO3o9wxX6u8ZIN+xRqgl7oc8>^?z7@q.B+GML0ٝF/H8(je.|;7NO^[G_#Ɗx1 гnJr\OW> i$jl1lORޜ'>O=Na$CF65\Εy3-LE9Ǘp.Ro, ~YT,yXClo|A<Z34T *.pxz{Z(+$C"\~@{ckCǑ=M4%%L7nv kQ50_V`T^ToaFVtk䥻p%$fX= `>Ϩ\G"зۚbF HBmIds>GZHqx=Tjg{\ ` cLk 46<$osɂ7٦G"@}M=_/xg0@?n?юwZ~SwuN#v[NzW,Mx;uQlyMm 7"`7lmboIA0cXUdܖrEF{vW'M/v2B 5|>>SB&+YǍ/1x c(v3;eKXs=H5tvJ?{v$i7uV7<$׉pc?бlO88c(R{OJ(MzCY_ϸ:.Տ9Pd$2+~!-zr"SƦڤ@摀@@GϞ: u0[ģ' ɂBC^!!bnŅZx+_P}/NR0ܘ}F,@kۛz90RrLJ! e~I8hh*EE`v Ns pjsaMt豗ճg||!ã q%Yg~=[)?}ӎOdhR #|.IzӞAZfn0#f=@d%%C'缨-|Z 7|ެ"O`Z gE!?T4 O\gn4Wqwjw{Y򰡳Q7﹛F܂A7M[]>?ݝ? `:$|,s6<L|]X9X5:nzWFOG 7\-Kz]r3jDBB3ND΄(kJu^<5pyK*KYD՞Fhlg垀^Z%x}?|=/o j=NK_I_?fRV(Hj[8?S'4Ea2*W.0N':iz^Hnj v*ŀa9Hi 񀿿2B3 qx\J,'7&e4/ugpwfW+u\* .gW.|w[-jkؾV+ ہ#jO B "ÃZsyL%N4%!J5 N/~cE>ӚG辗hYU? 2`juԂvJһx Xc\A # n*YRcQ~讃 FN#y: -njѧ7^=GH9do >m=WHH^x7‡>I1.k:\hVK yqEy4^#fOg_%Y=Nv+5@B^[K3`*h)w>P暈,m;qZ;@[# ݏ& {n @nW|1+" )QX<*۟>/|3|dxO}*I']o*ǃm}tFpg* Dk1XvT ; v2qOG2kyleqtE椬b?~ϿD`/珅&^X{T@U9"IJn1!bÀ[ֱX ́{|oohgA=$y6H"3<#GXJdК սppc\^F87 dpA= Mrz}q)vqKg!kܝ-wy_u'̵27ohE|V ?vb.oteYVkap<|rm̢\hUu.ĮR$7EfΗĎ~HMÛ?B4~ Ը(Ǖ3N4Oٍ8vgt-L-s⠾fw a 1`15T0)ZH}@7:cwOkCK0M?HHI{v@[@-P n?ߍͪQ|8/^> ?i$!қ(=[Ӛ~ ^zV^U597pcBkxn׭>}+*jZ c;5>1xަ6+ēȄm3WG}g4a!`T9f ֦4~w~n`Χ7r?9h)rp)ϕuAwAE }!XˎI/ZGӦt4،w#+ y ;z &x6i<3řkNj*rQXnHǐ, -m`oU1Ve=8,z9rEuWu jBPu  Zk !Y3 ܵkL=spkZ]@'݃o(s>U XN(&cwC~G%%Ý<_Z nHex~ZV(H@2?Gy|)4+?n)ШftA=e~M߇77U|(ql"S13:r$%d:t8JŴ܂p)V,L#4N=@;}w>%߫p^[]|G :w/S4tӟ4ׁq\uP<^"fl `K p5 qa qk!,nm|O_cGPzVWſ 3 v;"H>=@#A֞R_uc)\N q5R\Aq&( u?A[ Yzߩw gfnU u -j4sެj390r=G*T"s %g?'pw[ ;vo@.ٴm9x~xIӼU{[ʔz6.d5$X  |+npum-ap cQ!SݞOP@^LafY4c s܊\`~@}H],׋Bq<8C5;9fݨ>aNSV{PAZkvNJX9Lh= ޥQ?èĨNT$3-@Pg%$ ۔ד95pV_W`Yޝ8zgkScϭU MLt"0 7ܰ֡9rq#ciNp muFi](*@[^y?"_x_ݘEJedĹאOEyg Q#}VԹ=w͢+svgzV/*?wk~}Gw1J~GiH}Y,; Qa#* /aAjFhP(SzzoPϊ_M;ഫRxZ }S 'E([Vf_K PR0(`LTM,λb㸁\J?*+b~HoǾEf>t}J8ls ^a]<v2xY@t=~#ig4 xk $ 5nJ OL: H,aQ< xF΢O*S9 w=s3>0B`;V@~a?Y.r6ϰ sTࢭ@컭m s@nzF҂#D`R- q^D`yEkjrX󶡙4^EߝH;m1+nG'[@}nj* $# hy$( }Bby=*\KPp"sJHWcyl,n&4( =8`$EU`']$l |0Q%5pt?`i"`gP o4;%=LI.)+rhOsoEwVN|Is#je|7C ,/w%}[p"" e$V(,"ђ*|Y|\gmt;JBGҚއI.f:Kܞy[aO* G [XFY#ئmaw?2NjhmfP=c(׍|7H&1{8DW?GЫsh׼) KLakJ ?h?g$B ݗ\$7Rxw$ Խp%WQߤ v1M%(}e9[025!Kz|^TmV -L`fmCI`@=У65W^v/ v"gXz>"@ Vg]nv!pa ug9{<}F5 F 4FkaW֏Y͈ vh-2שnV]O DfkLBc9E,o$o~M<~;+b{9Uݰ?a;u D~ۧ(O鬞3IEpӲnFkmMV 6ZRfK-{s,9'<":˙utr說- jAGS>rW?ŭO/ p&;KXF rK) eToob ׏ZA@4~L o'qU<2<|.tĂҚ#6["@0mJxG99Ml=Hc8ٝ*$BFApj~@s@1=0Phe 逬-5׎Gf|mp4G݌\ c{{nNFgZ`5KrMdWn&TvIRѿ$zלmORQa 6%+x+EEyG* ȹ, ˢ,l`s4>=0ӲPW3m+z[ 3Y"O38li7v!$?%xFgu~$hX1@ѷ{񷽹+U;73"Vg<<6?0(&Y)}]V`"Y\ͻ"_H3\:6vwwt*[;<ߍxWjgn“f}q9FOzaB2沈 דM-^,tsP(绝/ wREp\/xzNuB%~ލKjcac! $ULSU{ Q'C isc A#e?,:ڷv`_C|'i|)gj8J5y'q[X72گ촊}><Ẻ0Nc<߃b Hf"95"YЇō$w+Xbs7vwsg>Д#,m  ^P)޿ >*ᾐ0 ɱ͓ cۍbv/0!0էOm/0^U0|9;0B𑕤xj`s}V@k ͌E~ )iFhF*9-;p='?Łt&F]p )XtݭI!5XNlqo6 C\(}!J:Rv %^Cvy/.P.; Ԗpwz W0SV08ܪ4gT7}p!U3"@-.sH]@`VZU:=+W|u'l{~?KY5OA HV@+?`!IlhvF\ pQp-gW{AsSOĐePg5 aƎűU|<>&[HQ)ab'-Gq¼z[:~Hxmsܺ5gE `y @W4ٟ Ot]gE!Ίi饹K ZwFh+^^R`7>h:݆!)D;?!_=/l#|$l>p^Bt6">ftr%LX FaL #QW]Ŏ3 @y.[k 8d`kEfd@y@¹HU""_Bcz3 B X_x%1 `:i9Nj qT%짱0LKI #=ۏ -f7'zHT$hfXCBp&<"-M<MCStF8l3tΥ(s9|^"L4J|>{ss@Rƍl+Rc!Њf ?MV-r᐀.^ʣwo i\qOk?:.l#-|WB E] x =m# ~CqWZǸX M\)VcV^e%!碋u?Ѽ/ Б Vљ78kmVkU G04kC \M~~Qǫ"e+9nQ -ϵ%NՑX0:Ã_xQݑ.Ю~jzXc_,KB1.b> %$H m4ΣCn^,4W#gUͻf6r®7a"eEgH;}|Vú^&P vkIDATp~=𣤦+ٙݮuCldx#@ͅ5ߋbw,^!.ɢu!4ܩU6*ir>,CT{1*vSZm 'x'1PrA~mV@iHd9YNe| [aB@)'@Yn"Whk,Ǣ"$jx@$lc ~n/u$9~:zF\cJQ?&,$4 GnqTwÈ (V H  FڀK.;L  sK"`@n|#|x̌1# "2.[F>/GVg;Ŵ~IFXOMʵ^\sBy.5*aBTHV@pU5"&/k; % .ػn$Ay[\2cs\"E_ Yo{ߩp:J.WrqƪiVaÃϊj"0y 'M40\ #!xj\{ YD d"?pqki, WN9$XN*}Q2a8z71A.!Z UnSK14 ǧO .'t^7SZ`:@QM)DI:MOK8}PЭE,%Aiy@a47Q^v2[P"y_#L0@N$Hmܢ~}.0v_Fk,NOHN5}!cդ?nfov'IgɵB /&\#Ϊ~~r8^<zӐ}ӣU|F| ]r|<+*n,*NZ9>+Uas!N<"|Z, [==C7kUP."Frjm; W` Orp_'zd:uaԷ~/3w Wz~KQ^=5x32`wu/ U%/OW2 Lgzuږ72|nk!ۦ7a~?À.(PA ?|9vOSMtON+;غPj"41uV݃ ]^a{=cv&py3!{7b 9d#,Taŀw)spu!xg ^V-4;EհWvRͤxн V{7BT{709mxbBĺ|QuYgv_Egey'6O;0y_p+I':BCz)#֡d$6K`^F̋72`!WЭr u"AF"xvsH,l43S^ލ",,Uk:yoG¹4)p!6 HWQIy*_'~?[.߀_ FH$՗_fڲ /=9qWW1헒!~e@pzկz ߪr-)j[*@/dxQȼ7'^OˢQHpF2mT'29B0[X8: 籿ænG*ijM}'`>݂Vd_1aHOh.Zaqa.VI$ j{e,Ú'SPprXVzs@ڣco O v[ }9~rQ`A'R8y=yL0v-IVHzIh@|nHGS' :;mZZcJFGՆ[#j|hjAݚ1Tn<=n}v.Sn`o>&{ZǀK.ݩWja|˭aKF}\e>624ǷZdCU_-.$Vp1ķ秐^#//pkOg:%d`o? pE)Bb@H"nm_'"k4!j۫j*;lPo$˱YKSi* b4.97 %q>њ, U- J&o!6!^k.!e^}t xx:D" U鵤c{n}4 ?=TX\TT[{s4Iٿ}||ֿFoiR$ho#gkBJcvЊ u:x[q}s*tȫX=`a'٭F&6+VF&G0r0bNIm1? =xK4LEꙒ s +Z Ė!@r5r\e3Q%y =l i[$ĴofN$+[NL(z&oT-Z)/R>NK!'f*~KbU"n O@90n`C! 'Bw<k:v;n {@ﵐ篝># 0~yը@dx`@Fp[lsm7e\\znjy|D{kex㦲7f~ߥx=wE}쟻[yE7-5q^59%vS<^Iܫ7Y*(i~oI ]= ӹ$Hz1.! 8C-tZp\_],ht+#"@?r Uݖb_F *4[tZ .Qb"6G~)'l c+O8O9%i| ,>J3AGÌ,s( `_؏]#JR~ gJ}9hЉ@9H&z?bUà ϋx&@?ϧ5 郪7z:l4:GI Jߧ8PVG30 nCJ+#/!8";4>>Ϟ[8fs~TiƘWq6{=?L0wt; &ť a;Sx_`^N4xC%Fx˛.t[ k5oniȜz'͐m3Gm 9 zuKK90P$KQ` [KKg|@!729X~yζ-D`f|OXo.O>L6qwZB*OT-iy?]0Hy\E%Zds{[ 8,/SKEo''?_gOE0c_ NZo A1x!?`m?,`L <#B"{Z_AGsR mf+u~$X 簫;>6t{$`M S1Ċ cgGZ; $@ n8+JO0\@QڐN d_^/B!N=Q! MpÍTE\E8Q$9h:{(nV:BpYi:svލnÇ^L»1ywBq_-nO D:ÁT'B_S$h_犒`BVgy,ryz{ p=?%&w.[1HY6 ~M~kC43A=vY^`D`ݒcq* 7_v ==![5}z ylNL~ȖFeMnw+Jɚ񋿿N߳>noVu+_ު>?ޒ/-nŔ/ra,^|_~^ +,Ŀ:R[{@![n=Nu2!u[U[>̌Kqapm n,k] oXnrWSkh]8Drqx!@jd:<(ZXn Y7Ne!W&.!;~ >fǑ N))hj} 4̌bh :'#_Q)]a, ntP.ׅ rnLΆ4 IFW(8>,ϥq3,cZ'@ⱱӪj?<. ?2i{9lЛ/0'~OWvQ`'-6-|ÔGi=H`$*_L®W ߘN - @F zNP;?03sQ0{Q)iJ뎵kalS's~k(Y,$`D>L)oaB<^)HPk-Cj)`khī/0\ `L]kDu tc|a3ʢG_˫E)p_ȣ\,1VN<>gzI^*{]#cB FX6Afqfs`PPKFHA'8xVDw yܺFvX7zph^+l!}7+s*<$`+P Eh(ԑeU__;D@YY!1&6YސuuYim+o|cQ\שɢ=z|c|/^L{j?2pO C_ -<% Z,68W]3:Ϋ5_Ȳ'ԊiT+FaeKpf`[as%$"W $+ q-`sxm:) ZdF[!;1/hϒ.q/?׶V8 _O`@+qfܰ_W%o9`y.>$4>!ֹtd){vf};&7otN okraRT>OovWBQZN_F5{?"+t=vX $ 4CT@60;`MXYJkG$nM`Ϯ+;-J]  7>&:ɶ5ьdF&x {y {`b8=/$@>^a{Zng!GS\LBdJn!X@q=7_o kk׮3i15>$-4ؼEs\'22}a1Xb#0[#t&4 @۾QTgv# PYBiqHŕ!-i 2A Cj{yxL`^?H[ $_ ӣj|lύqy;Qqp/sC @b3fH>:d7naRn!]qܝ F=$fYO8K%|l)ܓߝw'|)pQ<.E'uє*^0 ||sm|k۸ #,*#b`Jg> VOp +}w[lYP̭آ־ ӻ5&Y9\H\ [_]&`s+F,Z@Lm3mmDE,ugE&_λ3cz?zT]=0&oQ8!.޾6ETT:+.i겶B- n[Y 60뤒sz$s=zl>fzs~T-]Q7<ÈMKl LoP0>>T2l- O'Phtcm-9tkLRhQl bu+&XYILH^3[B>+BsX\+!d3Mi6WݮtFDc_b5$$T3ww3AօJ6c8}Ta0`޿Mv 4)Fh||8ٿ.<010t@}3V ,^rl~ 7N`WOp7>>԰/ =F\ @lV?Db!1 4ͬKp3-nĮBv#} +-iȋѬr& $r~SI|Q|ݫܝOz3o 5! -芒 x76!ףqȽbEy}N<#|}'`^#kxOy{Xo~{l.Lj,oF6?o=]s ,^ eӷ"ewwwu?&X_ڞ=ۭsc䀯!I N৑sc9줆xd,~+9#4{(Wp)O"r-䍁)3:-"GDw8B23/ i..LEė+zOXl .Hӓszn>/-s^o>v#| ɇMt: >᳆ ]"`?;fXW%~6 iZ.i]?'} E-d@qUUԂ@YH(̰>.EvqA.ϒyܩgp/7n.#7Ƃ2g1638ɋw]ѽ؅xJ:Ϧ1)HDV{j}ȗ17JR8f'G2R?j ␮cj9)=^r0gX]boR,`/eIU ]Z 5ً\[qM v|B`ZȀxwIB9Hx8Yl YX9IaP>E1CSA};Fq , @?F}\6x{9~3 O..+B <`pG`d|PQLk?®!h mdbA SWڄeL;U3opVJp)9-ٟojcm;g)\kRgVLJ&.pnl,)o2ߏAw4?7 ]BP jhЖc!1 å~'oHY'4he;o!9U37qzV7@' ̰YﳩIv> Y|_ŗydA\2OrʵenɵUA_Qfr5ʱ磳rWD1:?|AJQﭻ!z7O@|. ?8 th`;ZfhbWYe$(k邿u.ܑ#1܋N2쿑/|wy1iG#0a3:]n[p? T14[Dh&,zS,B+qlq$࿳ĎldњR@[~x£u195)ã**T DKsY'^7sAF2ء0**2nUL>-MLS~߬zߝg`o>weIXږ(Mpy[ ܢ?k &Kwx`o5VG3ϟ[崮|?b9.xlpqvĞHm?]iWs3ĭ\ =yO-YܛX2Ï@ʔ_ȵ|!RP e|F +%( yvI,!vZo_G𛞉wOmoC?   07`y#.Q+EΪw ]B7onͽH,}Z~(J]%&cn# ne~ 6}eК`7 Dzx}ǝ  uP昪l,͆qS+ <8̩"+x[^~n\K$hlsB"(褮?;,gPPjl:Dk.z}:O`u:grV d}$)l d 8~'T<-ɳ"=ɫ?mA'IU \9) ?i36Q򨒀ļIFqկۀcA9@o=X P fF+BGaIok1xA̛'?ⵛ#*۷mVƟ|A~@ߍr<[<A39<׊ &5ՍYuܘ7&FXGdqyTW1`rr nW-cl~UܭOJ3Uo L"1%dr\(FNw} q Wzӝ?~OI~ X+EnW#s''pRo7s_ בM N#@;.hB3x [1쯤{MAI0*gxpSF >)jB`&i !`~B գX8Ա.D2_V"@f A?>٫ÄLآVG' HI \1[QBF>-]L?I@q#[) Z)tgJ )B@Sr& N{]m .%UҞj^+U6t/ 5:B+!A6-ȭ?ۼ~y.UQ>g$oElmx7oܿ.w>nX vػE Lb9gO:1i$ $(x5N w+-=`o@l'ouu#/g@#߼+cD/%򱐓c^>FѴl1  oPݟB}VIq4G~rH3"ks[HVRp=½JqZ]!O{uoz?F;i[%:$zn>{;J->˙N? `Zkyob'>cİ;cO,c:w] wB -rS.c#,/3vUЎ97ME %mE" <6)G"[œsp1yu&Cd_Fj^@}ߡWO|M@k[T[O p?,?y2oz 7@%YA|bET{k6AsO<໸1}@7ÔU|^j4J!F`urh}2#NElZQ܍ DQjO1T "8AmQVolF k5`x^>=Cz,B`>';4lSvD7Pu2d@Xx ٛp+W&rS#.FnJ@mܬp/'~wkVv{wI,di޽&mnG ^ގzA xgD<N]# WsZhap&;e7Er'70+ʦxߟNc-~ XQQ__ hE>[0 <}P ~Ge}gr~KQd+ cc*r{0x2]!5<;i;=V`0"q# ft 0O@z ѩkJҵD097u0,ϪeDgΞ9z+B>>Mmquno-ȀgܚJ Ǽikw΀SwP?z#&g2I1@]@ܩ[g{nE\E.>|#CVD#;‘ZoE%o 4Կ'S/\Lf .}0]9AN_aԪ}8c]=[TtVm^NV)=_ ڢ֖d#lPń٩b{8g8Z+T=9jã:lONas%l HjdAG)!20 'W䱐'9%Y@CN`(=&vRaA!S2X;" k1 @e#y~* # $Hz@k|n-AxR ? ik=g֭E9 PGu&XToE!n(5@J71ּߑ"DBT,ćI⍞h3=OŎdQ>Rg1wr;]o #mdv q֊4i`wgM{YuK<[^맷oQ~ iZoB?|5p|lxaV>ȻBq`S<&{ߋ&.%i\+MʺR[4'Dу(Bxr/M-BZ4DS@e&zsVB HƮcokq9 Ft0GEt$@S}VВ~Y@~0%fX1sȈ%.pZ K$3=]JX"" s Oȥ0w\EZ/ ׇ5S7ӷhw;Ⱦ-/t+:!Q/W›.u-PEnF6wCsx}Vy.l|IH+C&Xh.8+$C63.{hO!Mqى>ޚe^{I\1@0IA\~ml ! Aw&|ğ\ơD,OzpRRmOƔXn;cwҐF%;$kDHC;h ;⋂`pƷ$pWAgBpr޻_A9Y?MtaDItc ''`?NAB3B+oN $ld1<_ݝVS /?௠.u-( -* _;`w0o%ڟie#"s`)@KsH&| 3`N _O6ȾJ a\IBV=i!(z9 /iev푺lk?u s:דݕ">@`my\\}ۏ EYNȵ.K$ym៥Mo~ng,i]@!O"2;-do sq%..2_z{{Sޗd`/JdM~uL"VzBU9v,#GBm9/>!so"3iX]ԍ|7$piPL-`L^K|KL9K!pg`(BKh۵5 +s I .Ԏ5 ~}eQ\db9]ߵvw{KgP??٩ʏq/HiHN,YޚYSQ'gOb^62)̕=;?ESj4?֍V'[-9g3;EPPrBzk au1$!)WYNXn̨{i;NRZwS8kzǫ)lG1]! J(7KI%Fwvߍ(wWsU"@޴fΎ $^'@w) s?lb}/eDh 3W/:&XHBA!:2? S \Dl_ Aru6a=!=I4`4UOZG-\4.@V?p c7 1`9$`&BaTwJzA?K,~;][AEO6Q&Ol &ƽ,3!K+r~Dڶ>]>w^ESpG0Rߖߚ-Л p.4k CJ\Rf0NEn@ eFq 3Ǎvi 6# vgG}5yBxg-jQ<Ƞ3Džq }T'Q_V[1m%A6(ey\(RHbWc_*4w3 AD/IH|M\k4S]y^лp Z;>]?\?o/"5ʞ'ݦtys$sN,H^p[F@&X_ ר][ o*3pFE6תZ>3 >R/kx.EvH?ŭ!AD6xq@K$JPExMa_l전ԋHfBHkuy,צ/?;ķ_aw3SO:gW"wn {+1lV`;VkI, a$خ8F*i${8ٟU,ޙ+<[MG@ej~B?E,jvQ"`xfo@rSմQ6ZW$R7) MuJhE[Փ}9=?uqk'}+ sqM׵^# Ҭ,$}7 ]17xT/Hw>붏wcKɓQL7Cjcd-Nc%#oI~5=Eڐ$Kf~ma~*Ϸ8Wۼg xxF~|msM~uE}XGwғ4;IoRzK(ԭFxһs;Bs4e>+{Q&^7$˂J'N@bh`ϙ]@chb>13Bh~*㳃)q* ,RD)+4BBcaiEOjjP,J8ŚmF/:!,ET A crr ICnz % 0qkZ:c,y;[*fFBks: :#op3 ުx'|{uR>wlX69ғ.IgDHg\%mXeUM̙nR!o Sk%\p;hF (02Bs`3e߭C91]FKQ'BKa! $"Sǽ2Rk{Gpz/քQ7gQL R/O՜~'y|o'e05߅mWcJ>"O.P͐fXiwdܹ<uz'u>`u/EK^F:xu[1PG$}:"pC"r>3HP|zSƴhk4@л6B/Y. ?z:V]4N" p5 D~O߱91 xKjKS+zY 6^z!1{6뀟CIK{2_Xv&^hz[}?+߷e #GEo{ݧ՟O-FZ Džrndn#RsUp(uv%!ƜB#l]^j"%X Bra [-o =ARh}m>_Ka/3ETgg^tFxI`c& բNSo>?=-1ZM'(k׹lde@ǖ n߉}{QoJKOgW*\9ëxiLNֱ:^$.Mʣ,Ek?X5UghJ8|wJ7-oni I5,`־MVq+ogpzZƽ/:(L幃0aԶ8|kov'vx]gX8<=`ml 3NJbϴ( ^_Q"Fl@n bNn$ 4-\OoiƀKMvP$h02Fxi4\ =y%N+[ ruBX)u> 9mPc+)AyY&Ooc xv9v^Yg6N~LoҸ^@r᜜s = Iưs;7jQ~[ aE4 ͥYl5$PH%Ї똋=q#Vt;Sz%En;cR) `NwD1`@{鴙D3>랂RdE7|ϛߤ6)v9'mV61n'ȣK횧Kt`OV;H-MUZJ%xa!D,x0aqy$qUudJȖB?ja@h ښ*qw/ 0@(M➀?ul%;CZ/˯+笁5磲Duk2m(xU 0ALDnbH~w+8v˸zEpzĽzP $@Tp^ys@- )qXglj;a{ӨK_\C~eD/s$gl %@{`pO#fRięsYP:Ie.ԫFY h m-+)B2)uMlF%jt2:W-m ݖM߳LTp;Ru:E$"`:$# 0' OKZ--tŅ6~^Gݲ8OGx'u 8[@N Pg0XI[?A"pKZ>gCUQ[v}$03@LB P ,Bh+x3Q»satgr^nWF,`_ *Tǰ83O6铲ơblo%dUm;ڌ㄂sȅl 21^>pmi3Љ#t{7oM`ok'NCnNMn n"'@&h *ύn/Ix?Ckcs3ǶXE{L`Q6ssSM6FK흻&\Z+zS%b@.>Wv \>З#̠Tè,jJM̦zQHalu\f _ogъa.`8Z.|qZUz,P/c*,Xnc͌/gBV汿ZK+:B.5⳽XD97Zck1@X&bB p'ymϫ# \Jp0q\hs$Op0XܞR  @F@`?[Zd8B?hޭ th "搖(t3KҖ7ZdaF6P}TMz70>ވ]F9Q!~ ܘ@Atg3i> c g\'u);,xio`cd-uS.QYGe9eNcg_ ݖ`KOmݘ"|WHl|+XQ/yɈ`6I@bI ]2TK׷nˎq!SDO1+#QeN* k#\tpHu_$=̮Tt|p/'fvf (3)TdoZL 4j 4GeƛF>Bf@7ap-8^jq02~4Q oK}Q%\gѿ2 r y1 u(9p&]DL]c )(DyH˘ӌ>oD:OrL!\ܹLmߗX _О}nj\!miOWEz =j<^O  IoW^sI Il]~ylރ8>@u+X9UE앂hFaF55*UpV=Ԡ ̅`_!E8?QD{t&2B4F/$(9Pt/ ($.:Z[ h`V;jg  Q?;5T(t`OgXf)= 4?y/?^O3L(`O `e_&& 8B2UG(.Exm<+EO(RS`UEV汍s @"a_B:,{.6+ pnf"WQ+k _gCwXF #_3~t>V$ uf^#дn7׆]8r̳d4ܧ_g?_S#sb-3ò5Rr4"i!=sxynogy&ji [Sh'̠f +QPkx#?q6.ȗ{iuR],JbpSfGy0N4`[f0v? ӭoM׊h݈o H{[G;C;֗;?0S`; o3i#fN nz;wȦrG$-)PO! =98}xSlnZ2.MKRX7KH[̖$=[GJ (ɢ-`u+I|Ƭ?Cc#G;|}!Qy;lK V#!+5W3XQR/Vn5yL`l#A47t5B-^bc tZt@=d{ܶvT@w8:v#Z hJ_^ FQiUDHq 0AmZob@9?#z0X4Qa?$)Zr_DW&킱im|?U7FxzS,אHV hYtzo 2*j9, u lbH"s"("%"Ȼ@ tC,wI_>߈}a *l [ [ ׈#[\oc%>ˆ 32@or4\r`?ܗNkiC fmc|TS1`J$ _ i| T^@hR}14hLa]IKS8َK2NHw6"/΃Ya[ R-Lc`*?݉Mֻ ,7HX >~#ǼwM:7_9`e~W `̋_>(̖0x^r#o3z&Գ~l3f,ilg%w."5 Y]ep;5f3.r#4B₿PjmNlcҝۃ*&ٕ)OT/ `z*~AIDy_IxKqEU& bT~l#~?_L0\X^cFT /VQ- !lGq|u2Ǫ|fw4P͢w~\4-A x'!F+coK46q?9{wxp//,D t2 Ga'@ ' [S:&l? n˔>;4rM}.>0K`C?S;seoJCM0>^V?n/|> ѕ/vm ׫u0'ُb`?,ʷ2Nl$K#6U0>9:5R2G˖<s.*!{HtFmvL1M [Kp6q=͏@̖F1|=#䀷3rz}v[` `As4=1{ۢM"7=qV&) F1ofpGTD(+r-!} p)XdR<qW%nEU}2C_vWqg/I,Oh9{|Ŗk8n^ |~c<~wžEϼ 8AB6:Ǽ Hx?\!k TO/[S/mUonČ?{}ulJ/<{={ެН e߱*NDDߏeCM6W.[~݃?`QEVHȟt>2]tMU*IG$Ro%7dq_P&bq;}_~ERyE0ݯQYL`o=9얦qf>oPόŸ{Y#k9Ve+QuYƝ_IElR: 00,shq>w+8vsIt~:rbL~FCN V `+O= )ļG@1gưy4;3JgF\qM?ӎ5o\Qs A// }6#@Tے]ܞeϧ>i/s!|<= 9(>-l)1.zoMv IRdɬQD`Mo\"'n0L^:卋Lwu7K^$Xz M'Hୖ|{ 8;C} "|~&E|_kme!57SnҬ&gzm>Ԍso: w~ϼ3|e5zyx OT1(P/^hjQrN ^nc+l 跊c8u hք@Wvf7X`s9t6@t7Ո]"q"Wf ڀNH6{ڷv& AK6~4YFfe L+`oF6- V7`=.pE*dm+lgF8q} <Ґ?j+.*Ew1pNkq E)MSl/%s:-=9V4Ju\Gy1yW6cHG04[mVF'8Zd36$ǗC@^r1K &QzT SXɇP !Śj ֖"X ![ "W"^` éadkqDqn (ٝ?7 4:m;$$AGr|x.xfhԟ?2(t"ϥf<7!Vgy-]]:R-NZS碷7w\}7܎_dm3o(%N"Q|YOBopFVdc_WφYsyˆQ<`&u%*pzhߺTC&n "u>я ~ǪXfS~QG3UЬ%aBkkۢ `:Y;3}ukmtmh ge+% .>qu?WcxE;x/PP2|+v 9o[ch.cQE96d5!iHl/v+8iMcz۫ylm/cR1gXoƴ)ЭE[5!Y8Z9[۵69>?Z2li`C\цY3sz[ޝ` 2dYW`~w1ɎoZ$o+۲(fmw2O$"l<1gNKi}V7bNRyu)xk,9Ľ/$pt/z)NƺC4ւ)c1,V-'x6j"Á~z4G~k4vkQlfIUgO`*ڃC4#(̣w/x )Ćַ  ~6NEb@;:vBxWPUdYNĕl`u} VK?+'r|KNNwhU.r?93r0X\D`Gwqpƃ{ܽ$" WQZ /^wﰆVSUGeaMUg50{K !AUVsCjLbP-WX]Ñyg{POm4c205{z/GV[Jb(/>"ptZPsý|'>['^GaCl?`G>@Y!B3XHʄW4F챷>r0Ѡ;[O>UӋ!%1\Y!.$ 1 ћ'z"c<-&SxvbIgYVwfc :뢾~wE;Ǹ\ +\{7gL4ؼL'`"/ABv(y j4b/~GOF%y} Vg1 ]`?u 3l{1|>I-{$lc6q4kEКs  8W:?o0u<6?N MauI0-kEOQ<;/C^ÍLѕjN#4%rJP+ZG0uc`# ETV1Sjan ^c9 ЀˀMQcIvO \ZnG>?~ct>AK?:hHVf&Bچ A2g= -4wTtK {/+^9FiYuчg@tmy i *~"'"?~v i_ԉzC gwb*~W)`︁|v⁛iıQ`rE<sQJD2r TX%,XJj]( q>BvoZ{9BFs;.xcJٜmfG^WYDZE<#o^9YT?'y-zk! m`Ѿ 6>kcuFaDu$pmSU5ldn% Ca- '~[ި&~:gdcMFYjwS۱ۺ$fv(xYH7-su;z e%O\`; xb0WA:%y& Ξ:)>.OK ]w l4/mߏ gڟ7! l! ǖE%zZIA\|^{95ߎKC%0(?MNLG}U(`)P9H=s :jKXs}osNV\M_Ύ`>-Dz7./\E*A>-_y]nmZ\<##`c=Fxvl`%+XwS 02!zt4ޟY j[wXb;։r3.[9zCkeyo?n# RWrQȄIDAT(gYP eӽIR^9)eCI''7ϣI'#lWP^7nHh;|*)|o0!1$΢Yժ蟬FH 8/VJ8ip db3?S,V#ڊS."'l)HV'/G=CX_}j $poZ_ B˱ J俼 @y seV1[tv]ȫ,[zćN~`.vA?'d4FúG~I]$P, VapE3CQ!#Rh $ x-@ǸMrjO.QVRM7@f."v 5/SiV3]8W Ǹ󕔎m]8wkXh6+GνzGl/ 0۸@'K>Gl J4ZgԿ$/N4| snJTdC虞;cxgLVoʛ9 2Z[Ϳ,_ @K(m?߲ @L`% Lj&ȓ52o7CvYp\#WLW-b\_#AxH?`=u߭7>>MHtE*FQ# xŠ `xM /p:g$/>Yr ְNsD\@w(ԃp|@qdfQ^+V.—b{KQDqN)'j#ƼjaR8lpWHķElC洌f'QA k;d8h_C  \ cw{Vwf)ؙ^!~X8:}X 82K$VM~3Ϭ*<08?U P(o am3`@=\ c?)}cWKLn _Gw4z'Ľ~Y ۔CfFAqFdhK"y0=n!7}? mmnΪt8}cf[1-hV+Bf®8^D5*U0K5TB"lE?` J+ ɹ,KqܞDQ|><x(^"^Kj5S֮q"}96031(ߢX31Hx?.MutؿݔW&δ@z}6Pt'&1dciF)=wCn;{~hV&#7!$cFf@#H{Lt ѤӖz ȟU+e9V-詀]G|K+48HaC"{fŽ0|QVs#:Zł\.fXD F _VB]@-փfwZ+;Ibo+![b%xĐ`4l`'j-yf $+[I$ c*[H_lN߉aE;a x5-X $UȒ '5@-l @v#"#[ì!3g 2?#uۥ ߿2+t}Ӌ,܌}}#^ԫ$"&r`8?0z&doM;M>7D}fzۛŭ-ZEQ}]Gަ)!֞=GM@ ~2N|BdgN+^v[:/Jo/Qh)q31`jyKm6~ t3 t? 6 10@jz/}&-AZ^wZ`]Jh(`F.`Y f9x I?59Y/zx?_tKS{xmjLq=AleSso;6'haZ?ݕ ^)+~-:[azZA̷؜캥J $$ [n `>_> K$yC 8,Dtc@ $#Y\A`p c]h"VXˌ;1l'>f#?p%$"=lqUD;^ŗ)]K%pő %tfd#0R'Īg.)rGT`j95?J1¬ @C'7Ud2bYTVb/tYOJṞ ^~)ˡmi 8wr7<<ڑYD:S })<dSX |q\XpbH.W 8~{??mva}m4jm&HVQ _lepU'FHgRV[Q[qXvm5 YZ%{o&%as}K.N 殺4ݍ((ܜ ֌` 3JP-CC:Ev3!$Pꚦ*^] t#y~<ό {M之c4ފcLcJWo⺶=9x=V#~ {0B_=Bny:x'\e4!/Q"74VO~{b?]Ea&Z#یX&xCл%C= [^>qZX'V꦳|7.mSO-n{e~y=)|, _׬Sg@' X4ͺF>~++ޝ#@QNEU%.FOt{Sm[S)E=Z&6`F}=,eH;"JfĀ$qy%]B(^'& gS{BvJxo4dr~?YvW x'WWth[(Eat8Xs6sg`]+TNXZxq?Tj3MOBe[WYnmnT}2ܬEs;?߁ϯp]-Ug'#t_0(|`\jmIrK8~9E#$'l@,R('CȷX^_MKYKc| WQ]"T4j/w 8[K`5-2'i, Plpb1wX[7+BX/zݝ 6ZٜAx&Mh(os8 )P;E =!@m@)TjD/ B؃qj{Kaukg7C~ڽho~Ҵu2џh%1 zش|]+P#^l,ua 7{g(>Jpn{kw;րk4F{x{/OLlt's#y]$bHZ%Q7VP2p)Tǻg%\WZX:7X;c^vl ~&0Fp{j,`> Լw ڙN.0}6].z{vR9oe? p}}mƁ%g?hУݼYx-LT'HfQpWD| #pf;i|%@~G=9|<[]!8֒8Xcw9Tͽ8Aksug#;n[vQ>fFHF2h^wK8`Os 7+h>uw|&U7Ћk+/{OjOQYl@# PG&+7_FWqײchwޜHTm$zRM]7wk,E@w`ꀡzkO :Ot6,mmkIH=o6n0ev\.)l.F,lmfk=IvdżG'3yo#=$<ݛ?EHX'Zʤh-W?cg¦`tFDk; z]^˼a}Tȓ|$Jrx.(/7ƴG3Y.]"QCo(`6T" 9WG,fy &QhQ_c砅s3ȟv^2 t<(#jG[<"N>w 0ro>N+_;`?? Ϝ 9%J7氷>\vss]HP̎beqF'nk`-u!|sRS@9чucP4eS/iy> fo[|{3F#E*\"? +BBZX !Fx0 H^:#%)~mJ{Wѓ/m|^|#Y3 K cŞж?!ݹ)@õHQEVH $`Yi+#|- l>iO@g"@z(%~7׿licki$!i;IJVв^2ZSBjˢ|7BtF7伨r4`&L%~gCϢ$^]^B-[-l`{tv+K1eewx̾Pc'L?#T}[>Sg=etO H}!VR0 7%/8 ^VAg~~֢Fag>Sskvi˺.W $@S`}yݖV6'Y ,#|Dg89O0Ћ.FGP, i25\_kg"R6Әj*2OÿW'$ 0mLkՆGrV;7rakyH_568x [߮?w|zg*w>/% 0Yd׺$4zƥ@'.B?w/E^]2h1]>68Ff{iD%mTG o>C&#6AR[Ԛ*k#mwIG s[\ZljgWMW]s Өk:h[+(h[,5hO{ MjRVO%p~_@#E! [kC#ZWa5<½4 ]=9+ѓ5` Gu4@⹩ ^]h> cYZѥKo > +疐ML^\@%5F873xVH5$ě?T-]mȣmzk%5~W 5㪍TH4Z)>{8p  _muAn;ooؤ? OA'K;},ab4elz0ߩ' \6<_Kޟć9|9i<Ύb20Я1yJn7ww-#Bc{oװGc}4+ة!`axS_g}z@0'U"v6|(pm/ @1@ab@g)t+u%.n<YDP[}eoAn7gϰ6bDeĠaro|dH;!E_8J @Z~v}#T<>Uw x}3pzs< IͿx8.7؃@.q>ڏ?g/0%sw$Zh $ɮLD>OCfY%`q~wWL4@[[ 4KU:w~ќElhp!m)=tڨFW{5pZAO!ZfAWq5z<UyT@ӋֈxJ0BBϧˠʙ9 ml7kW@tFm|B6&}]G0 g$'KxmvoΗdL.aط@|a/1s(Ggw<6 rq`Vpu'.Pҫ{(5̝<qzB?O7^=/}Uo|[-z{QiE~3lh s*2UKE4"|S@5E-7 GKܵv텻JE/+w\ߎ> Moh(d+18u6̥(X';Dvyc|foqtrƻ Yޭ`'MV P+.I`[> e^Kg:_3#H4yk.3v/{~.bFi^z E8+\< _-akz  PR+sd{4 d0!x A@ c"6Zd@_j򜠀k`ʜ'yA L3/d{'^:bǹ0ΆUp .u/ %p /pjyxsn6tCO(Pғepm#pZl}-S6Jוrh4y+w?ζp9  w_jSnՠkC}mhx< #+ǫ7l~ͷ%v[q%x;NY&X -ƕ@݉vj9_aiVO:;=p{&ik*NiES=S_#En9 O@~s!?Ewxwxs"й2bُ!D&E"2+FqM*1Fp9ǵtwQXKFrtkJvZJCGtO *Q}ڕP#j{߿4&# j`[*PA5|> ŇD͠lQlԖLy>&A7㟓 ?;>\^6cN7g`F*hN 'pJ…~cE XZv'o$?83F[1qի Hk,#_ඔ &;ˠw:} 6`/Y>_Njsx7wC!Kf4@'z"#}0h1x?ҞhswkWoQC )ыic ߯t9b>[ ‘_ldƟQܼ*iv[ת~_>jV}L)0OO?C**͑k@+YNRѣvy=5JòF$N$`Ӻm>q R N( )QzU8h/Nh gLJWALƃ(I&A\bJ94õRɩ!(4]1[f^>IfbM?KC)KC2aiSs.GU0F@ ؃ToN!h@T-hCKO$5=m >?C=}wت65hVï%~2-Hx#iޓl$R`?I0I8Yċ/6^6^`o d7+VRƛ_%ϡF%5[N J#,ik%l#C1Mû_V.N\+'0^,KavA &Ɵ{ĉpw?,-:l.b>+4pcҘ4=2߷1JmBTI2dwE *fЋhً@aDr"C@ƿ3d0κ{zowlG4owS0@|$@p3" 9h\ \D 'q!ooT>|Pƽaȅ}9;$f^ n%[̀4FGf0O v_"\4.k[zYwcna{./ٳT%@_U3@H j>ʁwt{ h#@-dlp` {wT@' zw FlhŽ{>&Xo~g_L #2oYT{1{Uײ#=x&"zWPiTnVx-GA"R"fgp+{ư{%}?"a,]D2A<46_]D*I~2΀ _@.>&*'14H95Wel֦e$ n̠F F\|2f;`_tK-Cm?E@#v n pn7a:)(;t!`'Λu&0|_Ňsxel /s>T꩛+gҬWdN /_qr&9&:vMS @m5@mF<ఫql.wJ#`[svG[ H+ˡnlV=~PoQazZGi_APmUk_m4ի`*AS>j (w]Gc*3?ϯXetFG%~:ܱ H@MzPΓ{\ NmH7ňhuMHԓZ oM$:0 c5@0z=Ln 8ƱYŵ$HV so#WO4U{UT/ZL7В056*~d?~ImlG1t?1v~#`k[?y?|C9wC@Z6xIXiG%~/~%&Fv]]t,ϝJp z&W/~ 948l4LH8 bx _a =6ƳW'݋#)|0U[n{Ips;4lA۹\-.v{~ܾ̓67!7yI|vJ7Bz+琎 Ku@!91˭妰S^͝1+دSbx^@ǦjT&'_oNKΜA!E+ ^ ј1,1ſn4#"6m8#Ý᧱7OOO" >CKt/H!] Bh}>HN0u Q(`W3Us_=5 fJ ~ ~ gNEY4kGT66R`{fHQ)[Q<=X  peҾOhTE(CU~9пYn?m5h씁[v5Zg)4F_+!%ywkD#$ ymӉosUB*P:%HmNxL&snslD9qlQdsHfVʒ\fqTƁ(.ȕ|j?lEq5;;뫸W7Q#7b Htv5qp[ZjAbJ 4V4jTm]{<#FYSj7`aV,I70; 0m`_vT!`9`{v36'iBGnw| 5l־s#Y oK HP/J,mBW$]o #hw_r 'jR 5 K3xD;Gxmx _M.b} 2/vO†4Z$pm_Xpc?i.J#M3Yjj`=7Za̔53(ƄTnG4}. f`3Ҽ^3aNɁ,最Z} ;GCTCJdOO4L"6~7pR}w_}:C= t#7^'Džv?M8lgoGnf]:mus|Z ](;/;C8g&|E)@i{|aP(ɒώϛr'0DcH@"'S-pTP@ uwϏ}4ƨz?+p:E:\{yy‡hR"6K MR., "D91 H Or%<JkUZ~zwk2nWpqKGgqul=yz44/;D۟uI?3W$rEj4%Oό::'xRןG/gNje].6c|5RZ hƞi @;y18N qNp @]s&۠^Aa] >ȫp5z\GhUb O)\(K0MxvxBv)0SeGey:ޜݔf@\ۜKr~լѲ?u>YǴT<];\ő`'C%*=5#S]w+-/qKOZj_I4 ugKފhYmsb?}c4ݩ):цȇkh#dgZ.?4 q?'ΧF^FC1T6ҟdd6Y_~%{mݕ2nmְ263,%q5ı4˪?n pn? rNԈ]&'T wK!{΂5TMmY\7Oo QM;sFaonq4o uU TW>vE~%wнmy)4ωKCJ#LS5:5 d ]@9xN.4O ݾ ϸv! 8gr7| >\@z J Vh2pҸf=_MN{>l#E$xF"j_V4'A&;[aJ}(ʉI>ancdRp0ƿhL%ӯʈU^wFe@J ,1N_ñ^ F]i  .|&`pS!j}]~8$ԋ~Eá5 .bgB\h..%؞^7[,zuWMƫ|γ.Yyd3#FCS?:Oَ@vnncKj% Ws\=q*f~F)Hr@5BRI5@dKl~>P2-И0V:>u3>OK{׹^+taW}ZaWjsؖG믎ա}93>:E@;$RlõatUiy3M@9kߧѵG^eW爴*o&pz/Wqmj<(N\q5(nŵ**~I٭(: P0ާǻulA'IiRfWX:`/CoCSh@=W䡟H eZ ;&z:T2EHP`ˬcYFxw?k n] ^|׋/p;fm͐(>]9#.o*mU6·+)1h'3_̵A#yvq~6ُÖTPcGgF47Sm@5ˈެ|~8!Bٽz5Tov*@#:HDIemWP6:mƴs(xPo+{\D(; Ȍ1(4~UN~5/g; k9$7&Ь,`:Hzy[[ hl̛B\f<4px~5d!֣cC~ŁnE\6ݜk}U(@Mc(n΢h>79gIcG,ϿЋH X `Lb"9,^3c(ցէNc9XGp0DADl<+-ވliw:l*)>biHӉg gJ^ԚO˶L1tʐ*=v+3kj?kTU=n_M^'mڦ΁]eDk:V\/ݫT0ʽCA*wH ٯGc-|5G蟮kn1=tkqT)uL(q]R}ܪҌʩh"J6'uj Ph=:xa&H@V3H#πxȃFܤe,{;5FFο$c|[OzD8(;)K `ϔ.' ^0$;tbVl,]jp7#jk|?#|Tzjn_4  ^iߖUB"n 6}PCf*b(rz%ߠ| UZLn2=zr/JαˤXt⪡T]'iɧNvUy9yg<GnD?z0ƻ+<ޘG.[#4,BGv?Ao=>1=3q)' >F(B_OG1<|Qg>K|涑=.j%45f9*>v_J1w|ctK툁~5' t~]_:cJ@kDkY|ͼV]oT\I_iJdll[x;G{%ŒGv)#C. T˚_,^-,'V08rӞ3[edȯ"jh 9BdGG3<ە9߮^ZxQY]Nkܻr(;!۞[eD#ڱJZ/_{t hh8ոk_ըk_C:h@w>;au.v5<^+ 4*n݂oٵcWljDz[tءN;΅ў l]3@ :؏vUE@N0NE/-3@M(N/cDda^53'xcdo,Ε0nqfex?C^"] 컄Ov +z/ -FϦ/Ԅvݜc'`>zyꤐJ9L#> 0a@@`ӽL6xydG16y?1%:0f`D}Dž:"bϬl`[7|Ő1\ Rk@\@usx^͚a kq'AF0-1)4ߟYgܡ޿MFlZ6iv$4FtTE`.1naƟ4 73O }VS J45ɎKh}UKHrܖϹn`ETA5PUqЎ`ALY%KxtЬ+Cfeh!+@tԊy- z&1|E && MEfeW).!>1$C؍.Vl7a\/q5 :(/·;1z^E66@;iWPsNYG;wgyj k،(wO{w+bCv/=`--W*iǩ|[]JG9wm6h:)mnOfƕ hG;g=zvG1mW"Fσ 4~{xf3lM3|ğk ̤_zeߺ?nI͝6VP*bqs,W͎!ڋ(*y177g+U$kwʪ4 shg YE)nsITSXoN ?>P`ރp~ #`/g=w1U81P|q '1d `dy1^3ӒUcwNკy|:?/Wpx!K8Zęd bfD=H̢72s82k+ڼ:+1iH'wOgK!|f@>_˳8盐f?4.\ ⋕i=I38Z NzRO}ܳ-2 @JN-isl"mvC*0==s]s&g/GlG[3¡UnԟƕuF_#tJc$@2Ny"k&6 5l, 67QnL"WC8h :EG1L_9FCBpg莇p.{)92OVp)h_HI^OjHO ^J5sIgsGgh I x}<׼a4BQEaY6 f*N/r<%%' 7ySpagDXg;i]W촣4EwXQYmOWg&aVZGî]!̙ߪC% 0uׯRud棶ZJ;o7XҔ}y}"@!sR\ wjn2k4mSDO=؜蕉15@៧G se71svEF J6KHNt#4xM Kxc"?͸lpN=jIq[E)F)1dQWP>W@)7Yn{|bB1Z7L4+ܝapB(z涆4$oO" >e*q]h@=+*H@ e@< hz I?ã4kv.V[{P׎.=I;鎺%*;(|c;ZKN]%ٺšсvWAPIx-~\jhJ;'\ Дy+^!Sj5:lõ:w`p{hQ̀(\w\snB+jYkaۍ-_ ݩ@jܿ\AvqyX񹪆I㕘 蹩*6dP {|2Q?&k_ 㣎Q6—kU R2h앱 \]kh4'n }8>`܋hzưU_DOQIcgRz̄^m!ze ֛"̑o (m,0=O`27 Ob߄xy(^KK9Z^'`9>DPji@9389sB{vf}X^U+C.αۓ#oz߶zJd7/5kyfԋWd79Ў =6(ÓI4Ӑdo1vf? SKXfbxb83¹0WHoQ\;5`cwASgE`hn ˈ'{qjӞO\q2q^MU95wfus7\ct}zd[ӕ6qYQl+jj˱k3!m_IH^u_ "8v`%m'UġDB%!qF\Q .:GRboBGSܿ9X5׏wjx]+xe( X\;sU-Uo/&'Wt"`+*vUTS>bgv-&"npЌϑ;68.ߊK?nz=h9nY,wUԁ ?Dyv)4ܣYo_xYmB:8MXPt[a8j:ԣWy3̦V %99қ. ulRqbAA:jUDW|ΪMP@ 0iQAehQ?Qr; V튦<:0[>?sn( Aufk>v\qXs5k+ƨ n[ǿ7 $zx̗w xk,ӱ:Gc61lq,qǷNw{ݰ߻vB ?I񿷟qAÍҰzE"NZG#Z'H4Pp5i{RH0OoԚ 8y4Ge!5[y^maaË68Ëme?H!fol7u"۩sTZfcGk_~ok1`{Xv )P[?S}axLoxl/uc4">c F!Kid)+8{ouᥞe|]x*L2E{eL.?6^:ksƐgoa3FZ^4uNdk'XO̮ :'q1OĨGu21OYϏN`&Mybt6e͆DJxq?HHw j 8+`T;pGꎫvҹmD;'5T)ag5J|\ʀߙSy:q&++%6;S$-Z[ jqֹ5\3Γ޾ܸ+j+4`5z^g7?k:@8~Lrov;GhKsmBD2O\t`'N /ylo/4$BI^4 ⋉0g-l}o4pRr +1px?:~w [F?,ix58>QM1?\⇃<~YϷN7@U X %91-aTD[_VnQcÛAx%5:Y4!2[s[K6W#nO|7I8 jM%aDmŖTnGN4Nص6ɞWo\~bCs\Vwewhnk].h[j P,!<=td:Y,J(5sz1q=|M,Va6Ύ!j `)؁ `1rn\'<2i0 pD<|ƋZu1djڢfJG@j N:`kY 2[kU ,㝱9<7*gb(%F4)H S~'Gr"tɉs`Y⍛s\  d?ڗpP( 3ԸSH qfq ݁1!0ƀxofF*OU>,6 LIaV;Ud?7"LؖAW%4(]fk@í.T/? U1',HY(ƻ]JzxuЇH?1y1U$pR=,yώĨ?1lϿ , ԥ-)3J>>`p'<c/}=mxlu ]B#}1BWr ,ϚTmyφ+)p! 1ۿ{UQDUE}Jpȧt#,c*~s}#єFh(k{]lSvYVwVҳ2Tז1G#kY~eOPZ$zlka w6frvg[|>+oO-i~|/Pm׸kF$1~'Tޝ[7kg2$dٷ& b..ޭ=zw S5oU1"noAz 6wi''^\*nmD@Z|G 7K˝oSi9鍣91լdf'phy{Jܝ ࣆQ[ Nt趆,C ;*$$+Gh#[Vr -*$׬ [Xzcp+&!gʵOg RlP0i8+}7g @%V~L6H!:S/ztxoͽL*0,%4oEa1JxTo|6SAʕΡGqsRHP!D` |sHT0]Ne ?n'Q[Gl+@`-3%DY46PiNyxb O/AɑMc7y8%$[3D^평.COdE~ץKS%'B@%z}zgzh 'g`[?3s^3+@l 0Viߤ Iw|=- Pn)m8_p;,#@2_`G8Iù΃[w>͹ӫaW?Nkܧ1,ЬA\lv(wӐ%W5K4}kma!0@L^+_5HvL%8WnPnɤɛ~{vN4ԁsnGLv @ZiUrAsm|f> O;5~k8Fػy[FAnWRK3cKN`/mƩeѫk{cXC$qh,~>g >#Sg3=r0_Y+\:k|3$JC~5з66q%4d\YV`Zr%sg?uelxGuZkU JdSBV FqUhȈ ~աx"j ïn7^K1ؑ[c__Ȕf)ydJXhzEi;WNMmb)Wۿn6N+6%ިږ,pWɄe9S#xOD:xd>T=:+dW0D/!{v.7 GsW0^~yǏ#}Ҭ+R~RR,Xn>?;\՝86+X7gQ\pewFx~|<Fo bs0a)َ׆Ŭ9:L:% mMHs(^xfmџ03+liIb"Յ & tf/3e1kƐ?c;&z  d9/:Ԟ'FJ5ğN*rs5ܹos&x H9ՏADW0K~^}Y=}Re @,va_(.&bn)Åi'7g0fkiTVg{xHvGIҤNjGn{p3% Te֮כl<7``⿥abmu, Eufy;+DuTGާSM|#9 ؝7db֛d@[{SP*7)Jȅ2 J ߪWwtFEUp#OLF ;&0/Y0ex|e#~ڼŁё~F)PfϓMi8+3Ӗ&`4,?$W3 ZUV+d#":ML f]+Sц7KjPusPٙh뉡zGkq-hv_WlӣqܙD{]#f17䀽bjƨ{~P!&K99[b Ϸbgj['.DwḐ< ~?x};O?Nm3ȟozw`DžY愭|@5kvUZC{f8Ԁ+Me8S8 aKeMwX)^?w >@[GTOY+EUh zHouA^,+0U L3'82,&KrS'ܓ0Pco2 DxI's)'9\_>gKd)U>Wah%[K:#gy;sGU-(wN}ۅ)L<{7~7a~IDAT3].ow".,vȿg:]>=p? \7laOn\7eE6 <]'W^hV+OAlR4% DJ`IIٮ[9nd1, h~^ >1dd~Fd#k!Z*۠ϮD0jc훖6 DG΄Ѷ/W~G/3శHi7Fw '᨟P_&wNYZ) rew`J)P݀Qt'U'!udow Mh.q⧑1\^eS30W"ܿيRܼNGø[15\bwl\=8Wٹ U"϶d'9m|073 R) yA%:2MiOK}f>xܲc#f%{*0%62e'j;uZ|^؁-]f,xPZf*@Lk1 Z0Zc1 ^{D{i_R|]A_eE|m6_. f5qf$$, HL?2Q2fY܏H ֘ `ʟĀJ*ު\p6_! u~h~F [0fKIpWƑdO"`C2;nMpؓ=6֊/oϱV氶0|xOoM⁋7[=u_w¼o b]>rz/n88? GVnɝ!G,K`ƚqo C3\YFXv$av,Oї5"e L`TJ( W-σ~GNA#5#\8d@Dхo2%^S?F@$&lJ9)&P{__,ld}D~j" |1߿H$aDE@1'Atcs&7cGZfuZڱX)*??Ι17@Z[[޽%}hE׈+[AQ^{#cq.ōR^ GwǍ\{}&)?xZ:Q^d΃>xc c@xZUA g5h2Z'xKz#'zKE|2Hd\vY͓=ؑ=HDPhbC?'*p~5cWFe7ck~`'>%.޼w"fjN#ߟpZjU:dj,@@SM_"_T(&p uv=@e+jƇ<[TgP&C0M}fjZy,.A_I 2<";THб @"`b@=1 A u`w_! >1{* PB3o*c_e@JIĝǽX^s8j3! E~kWisk8?$zo?\.8wA5PM$p-Gk cx:abGxMQ1ԊuX2"x$|wOVJ [?EUWڏNSڼ8_뎦h% {#MG#hPa+t}?ocQoEYO/?D ON|0v{KTKD Lu똷NR# oϔ_lAJzK0ɵ6Ɨy8Պxf1` d:^Z:7ʣ8QTvi]ow\J\J9,ܜb;S0;hhHEό`nF<28|ߩ|,2ڌ+؛]MG璇@tm!|>R1@gWy )OaؤIQCQfWQЎnuĪ[ zEQ6[`#]r$75u*eotZ#rS̟觚?= lu0NS HI34S2#$ʬ+]JF{.;˲TV2;IL8,,ҏy?\zď^9)ggor-21'E|3Msb/hKKeuq/ޘql/bJƹ\^m,?qGp Xzw=ᴋg{|]tk֪?7]w{q7kqw'Z y5$+ `+kR^>AIEOm)r1, -X:jT}wkLmBFR],$mS"ʄWu0 mT&۔n|ruD=_(M~DPi"7t+DEFnsK=?kqoeMuS{,nR޼b]v $w#Cy#8҃yNΠ$jT˰;b_ 2J.6סm ]3m(c-1<\lt],ܨǭuPe\_ZNT'}($l L hmǵV쏹-zir(GɁ?Q  #lU8"loBҥS}1 iJl1̕vc6]M6pMkgؙߋ}(O eqq䕢(V pi^tȂJ"zgnv4;Ya`ȗQ?Ez 9^~#vjmI,BkQB{½,w:_dKu}ާbeDJ[}}m yl*aG :khV>+_[7P˥Cė>.^@bKW\t`agr%ϮFU,Ǔ xQó(tq ]4rw,(L4Y? '# v$j=F8.Y&4^F?v^ęy#g 5P<\qLη޶+4\rꬕ-##.Z7iv~5Frpf we1,L [ Է_AH 7QfnĮj͙ ]yy+Zxݫt.Gʹ$~ۡ>6ì ̛IlrLby9u 2łcSؔ3y6p{Ѻ6bi=jw$Yэq(4`<4mNa'LUo.@e B@VKH'XB 0TI@1[ `i?a H6~ ra/E?A?_v>^v-^y@=|42g/탄";~ I?lԿ?J6 %hUp+}BK`@݀6rE ~zz}F]oqQ}7~e8p Ob(,Z? .Hw`fwa{E?g0E PD~zٟ%ץ|VZx~RYd,2s 2 eR?ڟC)J`ύ/`wLe cD=?5 5pP5D堒b\gЕ4^fAT xI\DCֿV"mDHzgB3v0"Of6֐6 sw}{Z!o53(X 4`XݦflK+ŏ5BV[{n*Kq6;t /C;1;Yc}HNrwM= ty('s-˜(L+@4h5 zi 2wZ$D@[m}K;6dEظ?8pKlβ4ٕ߅#~g$lWYcz?M>҄: jݒ\Ey4;Ѯ}h@h'Fö6y^\3 E@^ʕJ׷"W%T_B?5z,, h:gPA8,Dȴ2Dn~W=$ٯ lh+OWZu0pHdBe?_XZ{эf]iuOW&8u=L珦L/lɑX;~l퀟u*'ߊxIp3g/_@,~ЬӚ*ٙ{u7%.ܷgm<_pm9X` \dq62)B5Ɍ-}"9~Ah?C}O)E?W$+<@(' JqE[wP{lp~>~]? ;@eE~/W/>Ke|-} "PG{"{Hw 2_i7g)[[;ɯvʮ‘xP7!MĞ*kP%8_S^4Nv" Ϡ+7n6`Ar,5S񾸭溫L%G;es: Qڒr|WX-u[sWb[yc6.򗈌hC/0+܌-9."jöˊU[S>fL @Lgi?A@{n/3Ϳ4}.ѭؑۂ1aoA bq=ոZ(nN3)FǮ6qIoG.kfks G4@`$]«|^jx@ &WWdm~V@VU"?R `ֿ!`jki^g?Yf;Xg+ ٸ%%ޯNYqf $\$3,PgTϬ:mz2nX6j;X~<ջcxzg,hϗty(0Y³sX7j@.lWδZOәN6cm.O6aH `eDZ.0B5~:m}C`NH'q $hQʏT7TII)MsLjhōg?a*/㧕f?V%SW XeMiwnZͨ&!?:ׅg[xkMXkHV,vʭN5/#xpE}nJ k0 !7pF ^ѿ HO n|HKD C5veП=2_&!Pۆ|5?Sc3U"XI맺^*5xEm:z\s%mɟ#GHyĒZ|>Su5j?|-O$H॒@xw ΁gYmםopQVF[ͩu6/ ᴯv-_EHkAU_b婸|Cp:i[Mj}wrܹh%Rw<:r0zV" |r&lvߗ{G;t}6A5k$|`vÎ0,;qԴ|W'pK;pWщԮV\jµnv$wBkWU*U: tGՎl73Ikv~|Q:-7A*O?k]:J1G H@DQ@F5p﯅wh9!f[C`v4=^q2{p_ :KbgK7B_t2Ͷcy $._j3_p-U`z nq<0ŀˎ,Y]LoP _ʃZ A@יf.>~yK J*: H x[)5cr"Cfl;n0 i3^Ou1@_@Q0}-BxQ EX?,!)࿆|JW"E}e$^u~e|P/XNjlIS6Nc\~%`tYm_>V !8f-ӧ5Ƚꎳd3]@r? S>o3sQ߇ڑ.™HN;bYaGhCߙ.2ܞvƖttk=08[NHkjLw\Xj{ GuG+`O>Dp+đ~َk.éroV$W!zW"YCu)BjO p2 vؕ]XJ'v$Z=>tu2]:s sF&K^7ӫTQ2-@%%-ȼ@Fwk^PJxeR/5?IǾDWyPW` 0 @@0_9eՁJ\t}S  Pmi\w?fܫW"M^ec~$-m?%3x ­{~XijMȋSSxہ =.-[~¾/O5[ehJݺS{?\cuX3VefH?#~+NZTBfDȟ:׭VS}F?uPk*Z͠j)}oi|ߊ2 b_0vz51kՔX\ &j ID~7|>Wt6D pA/B!1MEF$]';PG]EsDul4P5|ЕCDāRI&A>G!.!BD0)ÆP#3H;玗O )'ݹK. HtV7t`_I/۰? guڐsyVL c~-uqznMXo.fл˩h!VysGT;қjq82M5:bt%l?XܰMco|g XI 뵚;t6 ]ٝv{{n p|G]mp(/ߗfN }X,+ĥ|\hu]8ڄc-R}-.3!}}r4 8ۡaq6 IQI;z8OǃGY| ecd4GqydƏ/ݓj@8Uh܈Nᣴ1|>d>L69Ñ^oJki+;̺ ַvb9Mؓ^cPӄ/R.t b,rw-5oPz i|5eǢmU$2 Ɽ_^@}A/oIB4䆁mB>RK^{~t)[Y٣T՞}V?9Jۢ>YG\l.wXyOK3x3fCB#Z=wڷhP'7Lv70qlq3O& ?q@đ[xzǑmDPߊ'LM7c;4Tih N6bqղ$#|ߑ !x<''F\*SYj1ƭ*Be+}#p>1sDi!$$z8sE3z[$;9O+_؋ʆqxrz~2=٪N{quSٴz Gv_ќ_xmKzU_FKn4@DWԊ8*#W?D7% n d՟DD/ l@z %7?(kZ|Lo$ lUgc{ϲf_v~(D*;18цX-T Z/=)cz}1dCAwPםg.eULe%fѢ} :O3ᓔ>ky{T٬շP4Puy?ˮwY ,ѲjXZj)C~G5Қp'oƖ cͤ !||Rnbsj6]s[ybv3Evv.s+]_ݹH*FRG)[j,"vDE'da#X{ a'TGXr{qȝ>fM_ߊJwՆm.8Մ7N \Y?2"]?<ΡsAD@.Jon;u`5~Bz A\OZ4e.őd$@YMZ|=yF,.D8|!"hF3RD޻7YD(ccO(Mlfη]=a ],ܙtMy0d}ėlP؃vhđahz X(I(t$םp6l=&8_^:T' `Pxod(+jW5W~:evj@^ܪVAfo"qc[ļ:;SܨDjהOPfx]\r~`QOJ"kѿu ]81R;=X$\rl3(0ba x:|9ݙk&ܞm ͞z6 @;[tcͶڢ> kQ3`wLϚaK?_Ok<#1LjLZ׌ۼ/S6JH!P~%qJQ2Sd @ PH`3Tv ~{r YKr-;Wa/MU{#1Ӥr|z)xt)}pukk4fMI֪}^'oGI54u]3K2tdbA7&PVtg+ #ӕh+#[y E(Ǚ̩|I}&΂!l/tUy.R[渋L{YSFh1F P2tY 8YՆ}9V UnԃεӬ4UvqRm6u^nKﰔ=7gtPoIi6:^oJc8UG~R6Pԡ\ę^|YdY.lOFN'[c.P,yր#&G:%'(޺x!-O|DoID~4[yoY -h*"-i_ueZw.P灁~ !P% c fK*>u(xt23{= l2n;vǰd1fO#7"QS߿K?Rw 3m.rk-=e#wqNa?90l}vu+'&d !7Iw_Ba%;k+Ĺ"|_Ҁ9؞1莗Nٹ>t?bz xc~7]ك:kϩƗZ܉ZLT"m׆jquI}C8>euđz쥙#";ɑ-Wk}x̑r>}96ٝeۃBy37YQT|owĻ\D{1X~A࣢4E9MBԕTt/-?M^Wf*bܗUeB^s[b]!JK[2HH"o7φ Mp:Po>G M)5Y'F  ưZZЯ(K`Ĝ/z;|Ѻ@G௒+CIsnr'v[\UΕfR$i0ϡ7%.c7I>2Q,Ý~1}7ukEMw\2ԆMؕQ->p@ɄOc[ck| F|9߭6ʮJ7 >}(& @&2 }n&e@K&w,&%~t>sfynM%'wf m^nrnGVڟ?i:jNjpgp.V"|[]s#8䞛^-e&&ޅJz׊n3e+ъ/sϋ,9oGyCOttP&~UB9ǃ}wN(L`&cWG$z.u}W txm~+}]2Is/˽"~2nSFQZIxH`Z%TN67o^D8dr?׫D~? /{ZwpN8zؓ׃8r% aEV0{dOf5o{xNjKsXK%sO_ob@^24lG~+@>[O=J/΄,g=hY'L`9, h@Cǔ-;\tu\*wP5jn&5.(r< @o_'o[ZD}Q~ J^׍2gߏBh@(h#G |@9:OX@~D:?& x?_9!@Ph7ؙކHjFVG3kp: Ptߝ<eu֛,ܸ׎LNWbpc3U (+*Bx;r{cy%ʱ5E!_ylϻnoq{Gv8r%mE#2c5hE^F~{ ;!۽ \ƞ+W*UEqYN LSx-`mlwQ>SRu>>#6+江ESAImtc ئo__t,!R/GNߝǻ8)G o|SOGj1ڊ3e2HG:^v|&>T.?}kO ۶ o[Nv ?w}?E`a_:qU.H?]ʢ=P~@{ #"%S_i,>7,jJ}x[`WLϨ?174MKZH'0R3AG ~6{LHkbZk A/O02ɵfTa&&\>ͦ7ێ;lٛk3MVܙw~=x[EZE 4jādu+@y}XsK#PO]+V^ct.*'-յ/IuR_]i"b o3KQ?[;%jLbAzx;%'lQKZU*Htu s E>T㢸Z!c-0JZc@X0󙀌qh}#V>lT ,B6mEގ#(doԾo|'@ <P_]mt_ od UGkQ .cOqs@ۗE."Ǖv\-Yp.,K:hGM5ihFNhn@AItdb|ՀbGrGA`.ñ$\t};3 ha,d߼ݚ?w \7-3—2-%#@'WPЙ6~H#⾨UFa~ g %PZ.fvĿ{q:tx4߁z|/v:{(yu?Yq`5fkuy<\t>Xrދg7,KT?3x-89QJm-o}sb&~"oO七o)DOXډH1H8(Uv4KF>~T 6z<)!Q|E׺FV"{S ExGg{#odtlcmG P; pS$1[n\0c9]6Wd+2SHkƙ\dQ{u=YJ6"ԝtQ\uY!/=Zڒ?c{3p jUk8Us2ő8;ߏY\h&G{R2wWn|YVa|]4ݙ.?_O/E:oߏY ɷeΩULC*OG쀂5|\We 'swvsfzXV.tL]q6p4@+b)1\l %W桜\ھn|h_n{uycDi"@=!6 NҌ,ԙRٽ>݉g7$hᄙ0_xp٠D ^{ٽ_-p5૬jLp$U5hD]jq5Xy#hLzb-LL$ؑҳH)xw!Q}]8[_Kq-wy0_L{5wTLc{<ɭ` J• ڜ+11^-.O_ raZ(mPvhÆl}S~xmI5f+ʻUqk7R{rnC 4TDm<ٶɪ٥8VZm8[[@ e qW;ڑ҉k=: sZ)7:Rҍ}Ո=ؙႢfLo7>;v  ]@QOhbFCuqU9$~wη3gR]×ݹX`l iA@lzPϥI)ԜYk|Q[kɐ2~Yw;{Oh&Կʅ2W D"Q-@0?#)V{t ?c:8.^m]Xы;FL6X nM4\[Xg'ǣR;s~z2~beG V'o"#࠵*2_à[eDNCmE/WIS9A%5Y1>FRԡ DhrcAh`Ѕd1exVཱིX|7`nߋ?^DK,o?۰QA'uOAQFA&|e龟OiSi@;k"4KtRj[$fį͑O?7DKoc9mI 01ͥz|z;.i6339HƅHI3YB.@! kFj/ƍZܿߊJt#^QڗpW[ˎz\n…8.vjo!rԑ1ufZeANyƹt|_t(17w.pl>ˤ8>_cIst SMvI#'Aßs ]؂/Zue#T7&Χ05J >Ss,Oəll9y*VWR8qG²e^-`Gz%kU)2ʑ~|Ug9(ěKU|S9e΢\kpنhS& /{`K=QAYED-T+)H LUWU՞,M^2ܔ M9\بHg ` E5jKT?B'yB Kȟ:ץ>%aLEtB`(-h1/X9`oUb'Ȧ=1X3\t"u3 ?;7緌PǔO;wa-/o? }1CF;^Ni]fҗH+hJ~dOZ\t]-O>e-TcoMOgt5T,AdzuSZ؈$ ߆6,(+R"}=UK4h ~OeIKH|Q|ҭ_\HԎ`ToFXj2-W8vƱ+9_ed`(ƹLuɨα8Ƨp~ƧMP*{clMF* bCNo)r#;}ٸ֕˭IHjvġ;革HW˄=V>y@FN&ё/JIQv&`1aC7Xᮗ Բ@Ĵ+'1@ǿZ|x a- >NJ5_ΔR||:ˑ̀\S&r ].uW{5&0ܚRϮTg@gr`5}# #@QZ`jPhD;?E`@@(_d@%(c9J-K_+ B@'"fu>!h& ?ߐ  r)沍A̐}!:O%@$ M֙͟@R/ PJ)Ǥ#f6߄74d Kgٶ XÉ* .!@//ǁb`l͂Q <ڼYe?#dAw^M0k Gy@.)JUgSQmbAy@1/ׯG^]EE bʰw=J޾jmdMSΆs5ۙ [٦`וVwFaS~ Qi`#_O'GD~f4DC,k2| _W<_UErA0AU_$FQUZY5ؑ3l TU `LK\gW/Vr G2qN?,5dv(M6k"@Ukw^qIA`J+PԶˈd"CdtqNT8МcSG{qfYye. EJ$ERwL24L -{LLzQRj{vOgsJ4;a{瞋k ص˕4j4גR/F >gEӅ|Mٲ6T | yn׾#pmFy>v8\p^qZRq_l+W;@mN 5.gBKւM[0N]f̆V =}y۶ Z-E>B0&,=;J]ϸ#)zphWNl:m6\ǫoJXvݾ@~.bƞ@QRP_@gJU*(;AQχG <YL DUk9]E {ʀ7Z~~;9k{pcc 6FwFF7_7a7x7v'^!qn~ko-`"C4b0?ÖD?kp2;[[dEaI\Ntʋ7yNqC7@YL|%qa @=}\PoLXoZ~R4la >wƯ*/W.I\K1\`ǼWgabݹ6D2'Ϸǣ@>/$AkA ~=/N+E~|'uK57xIJ2-ϭXT"ƺ X41?s"?JEѰf?:vE/|o>vaa`Q!=r, dSݘ`GWk &fak'Ua*4ĵ\jU*;ڌF8_@E>O/A"uQE}#:$qs4Vm1L WzYf#qm".di_6x90хjwaJ0QV@RyάBp Nް6Dx} vY-kz7M8ݲ3x#LlLme+9+ VyarJz9Q>W3j$*½wEg. /G7#7@ٵ'a~|V58F @w;x9<Ϸpwo V[Sm.n?LobB5a'˜7gm0FQzd/ wI xӴ~BcB^6f̼Uj oZ0#JTo+ N^4(>ݬs]䧁/{__ ݐC X Xoˋk}{A*`<@E|9tFL,'yCutA=t\(ȷ hT\Wpg(}d!A/c6Śay '4V3OݚR @%yzH 狓+%V!xC {>+%QV݁5IiNJ|i¥;Pӄt9{ꑟBb7v[:9Y4 a.CY%K}ʑO@u6pW.E\Sb7׎0w_Tfc]x!g3& |'^ELdzی%C4қÿbF׉+%*zugZvq"u֔]}!x/ᕪ̺q:gYُ_}jͿ5<4ދzKx4P>8X>jG]0*\& Z^pqs0 Ea0?hq1i3.BSŨ"ͭ"K+FdU;hIྊ*ϲOy[:qcHS<(Eǟ WJDQ ;΃hK_HsOSWF?^ kϓn H`l>}pû3;b){[l۝QVu6O?wMSƟfØBpdl@~E|w;WSb~ 앨xêR.JAy/_?JZ %1DzG&˃{yGo~7#x{A"k1FTS\4ǐ1 Ƌd>.@~B+G卿'y{/@Qѯ(/;?q?1~03V4A[jb(Z6T'GGzqn}ߗ>Wy@ ?q};|Os< USdjlsy^OOS*wJ kQ`>UA̹)O6|܆/3CpuY4Ou37L4y|z:AT/jFqCu L(Ghޯy'+mվr9F|kpWw%LcOCP^oyO4 Lz2E `nH&^i+8Ҳl2i5 Clb'xx]NwlEm0^4NQeָ,+dy:'{9mh}\ʈC2m _ߞ @`R4ѽ>X-'!R=G ~bX?*ӗ"!z$)!2ջcfBme y>YW7V.VW޳ڶsyVXkQu&W{F]K_@2 )ܼ~ ·9l(׊*P xqP|9|4!O"MѠ^ŻU^',DNy|ҹkڱ~ƃ9Ï{a'~g5z7Au `0QJໝAK!Wƾ` 4@ /S)ܿ5{aoox^?_NZ3!k(d@b(p7/^;Ѿr~>q1 u;_/.rT'ܾ(8xN=\JS>Yh!f-$\\GBDu~bdBi/Œ-?@ {~x&2=ŕ5sa :(zr0$Hyz;WL>lL_u%qr`gᝆx5өVӎ6@P':жЍd1ǛW@YUԏ4z5Ƈ* ƾǛ:V887pz>ʌaI([/ד{x5@rZ~G3>5Ɩpq92 Zx0$Қ-4J"41[k6&&ˊ,ɐd^1iXX}+ky" Th`g2sxr 86P:`)&󪌦Qqa7W^%=Vܟ?)nR;@dpͳʻ+u[ӳ?KHSg-"h>SZi e,KUF+ TQ,+x%h"Y5bJ jUձ>O&p!%,4r'`ow;~m%j9~$G8 l0h`iؿ3pgo6|#x7ow8ߊSp/܌ׂ zAs!EOs `ۤ.Uu^V3.g{e.oh=N xxi]%ߏ >^d^ݾ>IX@@dՐI ?WyY4C ,0?l=dx=?Dž|>!۟4{y\2>/S2&޿Ar;x<7m}w}%D{mY0 {awlys[=v<8𳻏?S2.^ I_ VUl44DZG~'Rx>< }"}ϗsq{?Ey[|t(>A.u¾Ηx0{x2/C&c.}%r)w:o}Ng=_#-~K `M<^J9FB|@ {4瑽PQI$~V"4F"$4V20aۥ {^g#5#56^V N7Q6ҏډ;|0 #-$:R_By 8)çMе6ΥwmW͠F.v_mgq.&` >l8LJpl׫gZ~*d×шӓreR2v% lp7MDhNQuC2 J]: 9j>jR&P|FI8Df 4ݱa@_H%b_ @E7dbn{[xp;{?|PVH~75M#V~߾^ xq7wwon7nq?N Յ|[!|ۋosٍq/ҞP@\`A#&d?c.C.`>OD: -pqSD' E={7"2~zNyK 22}hAK1 E-h<R=/ PE<ҞPBES_< qI߫$Q@"(جZ LN/꠸$Xa2Ib;T;Cճ68/WNWGQϲ}8zևD7Sn|Ӄ Y4/e÷ hjzV3 {w#X5}VEp%}m_Bz\˸w5 0ZcM| <>8kKNy܄sLW$cL[^X{LZ ) `@ln#Ū re/W{d4Ooh$z:,]zKE$y7Mp&V5A"#84H7>ȩ9W,C"*G\%i+2B |܏F h ')aO4(9г?u6ИӨͶv 4G{nWD =ߔX` \x,uD|JSsq\#rS2⎨כ*FE+v >?1!5~x'xw'N&pX0#&Dw>p/@?Fa0\rCX ھwnq'qfrފݍ{9<EhBΝ<lDԼ7_ Vz1_ϥ^o:q>|o>o3$,sȬX.ߟו1{#PLQS\5 -.!Y&*+}$vYxި'~y&߬C.A͇җ>_3t۽ϓR %Ȃ")𹞊rQ ?Q#ծ8|)/#&P?Hƿ""7&NۥtCsٌ ːo X&tY4~}nyvSÕ.8w2x>Sux?[ <~WJ@U& A9 r} 4FD:m+$O i\?=M{P{q =P^~X<P'> 7I<?hSTzT4)U_L,H>ƥBjD MEbg7߰XߵSΊ`3KT1gg/es~{iuԵp N'fp~q+ZR(+ re\֣(tIDATy,j7};6w3 ]q2.P9 lLhKV^I |2*ӵ<[@Wݨ(_`!Ѯ.UoJL#3` yOEyrqJ$]Ji/1*/c}~KQ!U 9lDPp, H7@z S)Y z*|dy/zW]^[Zǥ:t6ּG-hQ@C T:2@_">_lC|$] ´ݛ<'e:Vڼ7ӫLC9 Oc}͞`̳ u}+[;ݬln7X`y=m׶ڱߍNz n6{=,`nngؿmܹw{ (0p/ {oq+Zw+gA"(u{ \/`ݶ X8O_ȗR}Uf",\8?ΰ^o &8+ߋ=-ul=:~=%P4k5z*8hbI<q8P_!:/kX BOP:(a@@MGT*\7HT#{HxF/$lUFj,Bŀ}zSxUA:0?_/g$ [xNp.O;u~_i:junt{ /@l $I6@(/ KcXFFN PrymvN }d|5V# _u( Mdzog7quCL%) oxo_y+U&?Ҙ[DfmL / b~("Դhמ?y hA$\/>808H2GhHU6GH*޼ "2z)W3 R"gDF;..C.u@zlD:7ES^ rt}oJHzm<_EwX>gQS1ˇGy̱`ƞA=j|<l_9ksvﴎLSJƳ_Nt~bߗT`˾>piGVZV7HϘU Au] ƛ<z(Fd><TJ։6^4n[-so]\gSΘ9Kɵ`jm= UcrW?=#ψA&`㍖%KgٶfM((W  P)խ>yKۦԉ҆>UKEi~ASʀFK` d}HO#Ԁ?~?,&J $=,8Dq1Ge$@b7׬Dv(ƃׁvX ~s-X^х,ֶs,lV_`q5.;6o^ؿy '8`j@ƞƟC~|:p!6BĨ De5}н t9ZD-2@\dԥTz et뽼ky%$O(?Bq==*^Xс8PO}ir@E6 KvW890^*(_ W_& 0~׎v] NԔ^m[9buD_0R9:MTS#6#gߗ_ |uQouD>|ٍRJ~@Y\8 *#Iuݴxj/B>7azz2x$!d\* 1<{n_nPYU|# HPH@j1.xz%ו R(C`t2CTMOz+9Ll0݂n$YO0Ѕfqkk7q{[ׅw#fcvK[IbV;vfm0*wa4LGтhܽ ]F mZ:O5?VV!WlPRNk{#}I# sP5,#,`}DEuZYV}]S_7rHJ%T xx>A\o!Gt,{Vp) ƙm?G7;+S}*4ya?p 9*DvΨf$@ ɫnEٚHLx P9{Ÿų}1|2NQ ^ ׇjz[% aBB>?*,\R8ӎ\o@t:~@@e\'= hj!CBW+rx6]^ k 7/[gjzEݢᷴA#evh90yln$>h _v };ߣlt^zwpv` gwa8Cua?1ʑ#ȘJF8^Q#p?wm:(?|7ޏk(jзA_R'pp}LI4n4nOTJ D T ( F ?@dp1roD Eq.AK;WAï4GBË犩:;љvl`l6ϮFT&k0Dsavsq[혾ъF.[`)xܸ~r wgԠ6{6"{2|-o <: +6z@ui(A2 9jϱ @9&OqC*.Y='^wGC'h|}zŸ˸N?z:T FxкU1jBq7Ddlf|h9 ~HƧ([+7.*Y==}˞3f@^ kQd/kc桱 X3fyJ`U]1߇sRb l6wbe}uåoP9rWq9L-UKq75 z.=e+a|~9C8hHJӂygTq;+xs'SSx+= 2.~b 3nr(>o볞p1yLtr 'ziۼ`)Ko]u$ȓd܏xo"qAS2^z$z)֍Gç:y ۏ ]4@Jg*:͉^Hy|o5oKQR45QPj@Q8PZR|k/ds)]Ep"<' H 6Ѓ(zf0LD0sIn`.n _^3۝_kNz]mS[)j4Vw[ l.n ~.W^ ,а[w"!SavZ tAO(4pD0 0/?Azpu,:k=?}Wχq$A{^K`BqiǙ>5h3K+'! ($s:o+I`"{WxuUy5Cœ5"Y[FܺйLpFj1 8:`Z -xꔕXV\R0] Z8S |v:Y]z0D̿`.E(PÄfsU y35 9jG* \Az)k+2QOp*> sq {u"Ol|.(KuK6^ lNfLL9\Eڗfе1i&| e $qmy~.!ʗE=tx~*%GP63i4OMcn  lz3ւў^~]cاo aj\Nm`j3`vSXH@;)ؾ݃1OA 0@ @\޹m`/l< ^5zEZF|z@Bt:acN7Yͦ8Tj"YyCIRxnb'+ݐB+abJ%^ 0n>%߫ixR>~[\i+vxA@QPU^E`U(}ԜֱOQUb@(O,`,/pu1ONUTRQenJ&J$&Ur7@`iH_~*GQ$drˇ$tq#H0^'n.\Lju3(<+H^Y9VH;Ś8ap\,35 x~P܇y6o Msk EɕiPwos;#̣: H/t>ҊF.`tw19 nĵIUӃILOⳞe|u:p"}Øltq_Or f Ù>D0NMd"xu po6P h$U޻Wýx-*|m(A=52bAJ"(EW-z?zn)%35tCvׇEQXVJ'NӑyRߜI6ă9dPr[@ %"$MIċ~>+q2. %%!ROP1ZNMZ #LG=2@+Xz2 UH.鏩ncF=Ztsv'InՇшTmq7 r yk-عi+I+'6 ޭNyEsMyy%2[Nh DF_`HR2>G2eyl"*`My.!Dꑩ@΋/!* )8G |ƒFd ~x{77m=U$AfINYa]v˰\OiR0PWX4`*x|z6 b 9bFrڇ!{F~8@C1歆tfLA`аTk |m-x+5:zCid7ѻ7هӘah)brmX@@/>lh _u|. / G&$&;ܻm\-vnd N' `Ps8lj9< COQ$3{4f5HȔZ*VK# pY%S2\4\zrXmNܓ5W¾%[$A+ 'Rە&Z:JȬkvW;UEBatIS~5Ċ`ak•\AR ztLWatj$b|˻nz-Wj hZc `zۍiV3ne lwbc/cFKV pl[!ߓ<<%IK{ќb'z9E+FB_HyqV*Eb~ ;[[`'}iPn4APyxJmy aIX!5͔@ϕx8>N4 V7a|mNj4M"=_gUecɿ0ɖk{vGׂ]$23LD|;j'з݇~}$rt(hCd*2hFb otC Mh(CPjF;0=jG{qe0)T-$tt}5dѽ<8Z;RO7tcP(^In&^InᅆeK<]Sy_R 5m#M XR=y~0:]v_^)ηݏ5 0er͆n$o_zVDM%cySx2К'-sthdWdlE,|QzOVԧm57R. "A{OwwP`òu%\{wq*1Ϻ:Eb MӍ.%ý؎Zz. 7Z5at9F>)[Nmea'MaX F|e@dьc$AV X a@|ϪۻET^wP {{ (X`1#__au S/< ;/ TDJy)?B\χЈCCOKPnd"KU #SxpJ `FL "$hxzxxP ƃzJ (E \J69Z, S@ހxN/yEz݌ncёx_nS2S+~jOMYcCԠW,WMoXi0:C` #hʝE9T}/Ϯup{Jzzsk ~Tw.| ײ蘪GU94נve|Ct.>pM/xa/ԅQVtrHVDR7{a&y2FԤ|2j[ϡR?gؽlQK3Vs?k[1 GL*i{LH|_*(#j74Oо] { ۠,8P"in~9p_eo*ԍp/Fq﷥qe35tosu]I``CMfW[oDj-Icz+j R`y3XXojyS-e1q"r VJs^<7w\_M|}5F婋s6U\Okb} ߾;w5=8H_<&!JO|}A Aq:9w[zAK #Fp_x'ӎDroΙ;=FYW!xyҁҝx#Չ}ʼnpL'@@-:pu UHΔ)xO$F6P@C_#mG8`a- 4/Z$s zʑ_C>L}In^t:QFn;͞Yc2L{YovK0ۈZ\JN,7wýr/PnFvE<ߡa0'lPA[(Dkaabvac5޲TVHɨ'08Z27&rSEUiWDΚHaRʴ vB#ml5D8T:GSeKTUjrTDG EQDq /5 z2F Xsqc !;&+1Bfa62ц\m9 -0L o4YZ@@Ym׫ Ypy/c=;w 66@\wڳ DODK=ғAVM}\7zV3ɼ7u$)+_ :X _IEiBЦOA;^PRsğJO!}! 4zk荾T;^ZR2^X¡yZ1תqngrx.:E[5갾dy oħ8>㋞ŗqOjdקZѾӅ*T] }9Ä>ӂtL|uCmׂK]ӈs ?uËװtS)`rw[q'n:LwrvЖc[0Drra혫@J$KMmŗm8ӒéD0!6h-PV2z)߆p6/qH/jX>eƃJoLoc4,ƈUTz_3KC[檝ZS$p3k6Ldx!RVcDmD|@w<Fz"xAca\߅ }/,w:p+}am ^TXz+@@B3Fhц 4!MQCcMN0c)W0ƴJ"Nvr&e=kXGh5H[G9R{"\ Ƞ+|U@\Ћ ycϋ(Tr_'H+ǯA)W{2^Q9=1PL #d֮Ϙ4ɞ/@bp"3c/2Jqj,5ъ:K tLՠk=K0hBLapUu,Zyv[-_KX`fgY!3[iBSOϷ'`MTie~NSrQDiuۗW<z>U@.I$dhJWA 6qo8z28H$ȓ}~+s{ +a\ޠ{>@s ;+M߉yAR(*?sOtkHv1̀7gMkXj%x8\ǡ`$VLfeѺfC.~Zck=Ksl@׌a9H{. p=4LbKP}UU8)yE'N$šY?h%!x@Wd!V…“@x_<̯h?yހ 4/(nyފhv}o={%"/$@_ǥ7"Q?~_'7qm}BՋ6Dh F yH!8Zs`|?LiIw#8 ^\ Yk/|>߄O x+ӂc-`f:'C ՙA|kW|ZD2x SXjAdyIdf"3SaUMcQ=5G=l2T{b1`ͨsob][{o O7с W3(c(,m # @;LٵV.P>Zk MwX> ~?N D;'~9 n-7q$c\n Fx0,+;ҴQ:~ތjԥ.^Jizfc71i^o鶹s"q0OηhŁ+]{ h~<*z!)],m)~Vq xA= Wx_AX Ap.E+H+ͬx ]aO ͵q:W'Dt+0@0Ѓm^ˢo)rI4YRz0ϟ_n׃6F6ZJ۞O?\yRiT|=s':P3BD3j}<[gֆ+H`^|Y0CL~JO4M.$¶`5ȭ47x7A]n@RruYՈse~Y @?Tw(d=AЗ ImT7 4Cߞ'z <^J4Fԍ[?F@}Zxnx+ݠH ^I~'0 ^|Š Fw}~ čh7>diߗuR>H|S_ G Jb8ދy^,~Ox@}KX4yᗫ"=`h(9 fq#MuG MTk8UxZGF;qT/δ՚n<|օ7gZMN&p,>jt77[y4 R w&p,Z]*q1 '?EX 3 LVyw{zXϔT]؎U)J LS'0izJzd Z|S0lG|7hGv F4T1xr5Wqm2֠l2==p*c T8 ~r [qۖop"7Ra((P҈1~"46>3y8*> 'iQfX?*KJVQU9)Nx[J?ȑ(Q@|Q^dәKxroPƛ};an|ӆ X9B| 1wȮWP3p 5eV"1l3:4JOo-isa~- l~斛{#I '''J94]kqVJlP8=U<Ciۗb|*}_;/cn7n}:@ʓi= < A2>WI?k51}H>Y(W. K?FV^F<U= 0NS_gWHvc\~/c'*'E|Z J9" Íxa!H@4I ]-V9x&wb:_v\ 8R/re6|)xB\̝ATu^?\NEU6SΦRhEtC {>xܸ7kwN`n ݬf&[PXoNLa:t%Z!=V&TZm t-xfuR;G0] GT/X9jfu);ۺ,{Lwl%˶lTe,$9LQճf?9GZ`s;FZ<{>ɥ G><@ÎX8x=^8s^6W3f?x:2e/aT4+43~)=.W#qSԌmHb{\vG%YJf7-}%N)H~Kה%$%坂%FU ,y 22rU,'rgJӒ7{(O{Fq: 19Y/uxsSCoJ<yU>-IzKrD }^Xתֿ}xeUw{P}$Y=c݄\rN|5S:v^07uXS'ynTym}!HBX[QcmZ+Q2\5y3C aXi:8SvNIM*xM,br]~r+ex|MJQR%$>sM˦7[9$e6(͸lJvE&7.kCR=; ?F6TXGX&l%weA 4>t}!Cդ0ԉ;*C;}zplduvH[r1'?&c> Πo=^RS޳My{{pOi R0$ kc<4`}A>^9־tO<,,qcwlWMv?p-ꃼ80_> `(SWD'Å&I\W9]~hb-H֜jcҿ?d %>C{2b=%>vּMS2'9#jdD6Jo*q闱üs >i6 A`   px2e}?P1~ o x* ڹ9ng-*4Z%Xk[E\xVod7~hseXI>J5ZN:4 a& 2&냒-depLN- 3R)3eyW'3#ʼnn݂5Z^:O崟ϓ6yv~R?Vk)'g2VB Rd[$\$7 ѝ `m ꟧%rS۝z=-I^ʐofFT?\Zc]ǚ-Vrp3h-Se Fނ0v^M٨om]sahFO;A ̜,}A >g5!=xs\D+KU?A @!&^fL6wd/I\`}q^M-0i0׋Ҿ>#$sg'%Ń~~3#٭>ɃXĤ J26J@Rc<葁j"X ׻S Lc@($^ʑLf^G&@>tcLqJPd- [鶪T\?JU>/?l#$@n|Wexf=@8~ 9uxsWb:~&W<\$$lA nI3Q| ֔Nȕ]ZKEa/ 7 'W>x_.eNM{_N[u3?[l2U !|2$$UI_݊eK֏哛rR*וdT/KnEb6I濕ō}?#?m~i^jw}l;cu:"a5&{C:!I|ӒvuM72?p4ۿkVmRKps z)e%%V@='Zt2p&ݛ|4$M+_Ȃ;%ݕ;`^P(Q`~(|SK|9,]A6 p/Zd#൱NAN/v`>E࠷'#}pM{R O \bZ Mń-ywCr|AǼ^旗NMT˞Uq2?Y?N:!1%q~Zd:LG/[[2 J6j))T,XjS2ҿco[zK|-`|$ .A)`R@ :NZ$$\($ PZ(dу'xؑ ȃt^3d?? ;%ت 0)pK$@^'A?,1U(8wez~aUYDbۀDՖuZz<L/_|&SeZJKj1 Jf_u5.w-!jZKyɋsTp_Jɺ$ӒMɍq m[kݒ Zձ.]MVRoWaVѲ\)*u0P챎C0dAʃ\]{^G \C Pc~oq~ν$>drR gv>J͒9(g@ }x H.͒@  OvG =(4p!6ovdd/jAkX StWgLw䯓 ͸)+GCk1RJ 2JfV2S+!s_)1-H$[羭#{P0^ZTqv 3Dn.4#]6%Ypp'rLTfCÏX!b "| ^WرlF3e X&>\>'7 Y|[}ov/ KyMlWu9k]{=9pb Iߔfdnrp.(3~дIcQǿ}K$X`߲{{_I&Z҂O$<`E"NĻt ]8t><&gM!@$\9y"_L+(.In,k?q)Dt\ѕٚjrFڥI|*3kI9Ӝ~?D&ReE  xOe\.ť}]:g;%v)D^IAH)Y1 Iq#-ɹN  Q 9؆R~&D%'jQ!髗$7l_F:(k ӿ=)ikԬ|8$VԂg~˗sr!ܤL Z[gn6/s:Fr`?wa-%394eS6Vԛh2}x^'>C a][ǀ*0-ߥxd:0 j&_ws53I@{1٘7?JDWǚ_^Ϧg NIīHHҭdKz;g#&񭴎~IoU!\˵X.X(CGֈtVJJ*)]R,*$]m@ġ'hlw^&?ǣJ[6y  'ۿ p"hM1Ty3k-ФƁ}$f9LP},I z uuU>Xb_TKEju㸮uBx@ * *Z\'ӵțlDo s|wZfS>ݓ?M)A7M.e/Uug]*#r皂%?xpo\n+3ew7*w2uZ[Q^Lޛd%e }z=e[{O (}vAԒZap-' dlRel(K2됁ZF:uNWlZ뗔Zv>%< W"B1s{0x8& ZQ4gBWJVE♼2p"Ah|d< F'B//'xX6aoI3I'aB" Oel>%9#$ldHz |WqG0o`@.ޣ 5IA/ƸʅzS!ñR\+}ܕ7 y .LKڨvJ*^KW 7sLV>뗏r򇩒) qjL>}co9r~Q>73rO&"p{Pֻ ^$ I"w?dK߂#,/yXd6paݯD-g']x`w,5-P,#l&jb}КgVO6Tzܣ , 'R @*9V,q.`@}#$zO BYۋ(Pυ;[NޗOGWz^;ۛep)'modMR0X%ޗWOR;*GU0n˷eYQ=v~(ЫݯJ2CCgd\Mر.YR dG=$9&m#_٘T(?aQ{y)f GoɄQgtn'-ypX x@RPr1tkR+ J{^E)o۴ ^J@;[z h{[>!1gXռ3WҢ& {cgvGn~=}XX8Y+[m ^s;L̥Cn{0ٖ I쉉B]Fo*p__KIy'?>>%objD^ꘐzg䚼~+%ֺnU݉גU]y{7"q ^9~?6-}< X0c`{ ? eg6M?1$ ]|hG|\>죪 >O/oY@'xOxC7!ccnEޛ0_ -}_< }u>?g iz3)PI\,n@LA7>V= a"3Pĝc O @8xML($TD+}_*jDHt{!@P#W峙;ъ|;:%s'{r)Nj,w7Oex)/~ޖ+ܸ$٩vevYelQkzRݨ4 uٝv(onzNfXfyuSq0$^#7{{-+{L(dZ1YnҴfφ->a@t% edpjd YEr;Uݖ?lXb H-yC,V=mp %p7S" * 9V:"pN܊9Vj<@ֻi'i3T$6 XXAj O~> [jd̀Iw?2GFբZ4C,&/+ fiVm`yB}ǦqwQ1dM~6tPEuu Rݕ|='iqf{kOЧO?q Kti]l~&Pp  Yt3qכq1w]oo !5!Vׄ9?@x$?BZ[[܇^? <p٪'23,'b8]|,7˞$ۿgǙ+OC7<0翐X2(?+k&#AhďO[QqAL,Cˣ{&_t~"|qIOeEY+PYto$WdR?Hp@SH;.w̴Kb%nBtu*7cDI} L)=IfYƎL Gd ,n @9}]V敫#_aЪ kې Ьߪt(t7аFFy6MKs grHË`1$349O#L~lc?ƅ~?ׄ$~?ąVka3гS4:V./m*Jl ]a.ٷV/)䊭S"KBZ9uפ\HQ߫xݫڳhZAxzyev~_&u}?nPpR 'g/=UM'[5h9̊@ ,3~691ZpcX@'{xU6ê:a#Qʫ (34F-(;/LEo?]}Qۓ֤nJ_8%|.n-$` :7  %zBz@kMoh_E:{w[M*&Jqgɞ9Ƕ1cd懶 iĂ\Hk| ԌӒG8 k_M@k0O֓P^vTk 0Q쁬X}+1{ְ|?CA[a]Hl,/Uxz K' c#!P 89wII|L=yO@$?~X<,d+SL2 ; Z@L-,#1ތZxON?@u3D I؀Ȑy crC ~Oܕ?-T.ܡ,?T&JR"/dMS,d%k3qP0{PBYF'@aw9b[1+mܪsGҳ+JZ>-~*mS7M|>,\*i$d9ּ̜m,RQN7ߌ~T@-b ;9)@ɂz>Z1l/ IxFRc˜Yy{Pr$ʊ+g 'Z<V7+C;/Lja>oD[y]wla-d> `8z@* ?r q / KԼ< af]ﭘ Da]m,כOuufdԿ`矻f|{W'sؓ@z[U!@6Q[탽l:Ԕ:ƃ/Ka5}sVCa^40QpY&+'s!>>ߧtrѹv5=NS%1Jݫz~M5]VMTC8G$X%"  1}^'BBd^|ľtƏ0Bx>l% `!VIc8>J$jݵeD!0?xg.C;ޛp^h!V@c4$ Qd7Y;@ֻo g?ݝ~`21aF2-}8HH's C&bm-ysg-4u׉J65r~^2t\/e&{eV_2 nL =t /z*RHSV%lc}.{6ZLb EAP`^1I@j<~ J1X\%Fq?'G%#x?SrJ[ tދ;=6w$1ŷFE)4zQY=ydnHRDL'"g![zyW"@CF `⳰j*OU4,zz ^w !umGCXf8<|sրlԨ u^CO@rI^EgUk\ t4|_/Z"z> p9 -utzTf\h.8xAg JϫQK$@^!"!~ ucgA/Ƣ&C8Ŧ0d?( 7 <#Ya\3Q!?z@V1V9֭X}C_(*#6L ÓVqɇ[ Opb-4 @8S}"O5xtW>^ϧp)?lwUKL[@6a)u+ޖw˛Sy" ڷ,FfseA&6dβ/gemִZJX&2ywT Jj-S-HV->Sj'ŽW߇˿4o_떶.i[6o1R\c=rcKn.*cbk9a $-)t[OI op7r5 n"Z)"r;^*lGmѴΎ%upW߷J\F'Kੂ7{F(4U v+c ~9DԆh% Hjv=JƵg'8۴ӛ30)= dvkicC橆q{mV^h[bc7Nd_Pk%GzO)(GDB04z3sF6gV?"Ooo:'ޛ#@ ػb31ls ] 0~2?ҢǫY %ӕ^lEh $NtqK(Ё4؏壆O?d+VnVVd=,Pg!wօfgVdqz a#+(D ,cNi`ㅃhj_^ȄB@,xV&tR/'GetwJ.'?nT,y VӴ k>吜W+*oWz*rWS6[IAZ ח#^hѽ3K$>p<% V%ri+A(qX5}$E}_d&1@QAS5`;)+cG85 s{=I|X\ա9Yҙ\ޓ] g0ss၉aCoTހ(cY_׳k$hvm:-Fs_S%nu(C^ $@nNiskRU[%U? ;\5p>/?~FyMKmamaǹh|&+/tU噛\hLc׶lg:n+6l G$a1׮9 %>"ҢԵ.O `qzlX)xU0>ΥC#O9ϣ^mZ#d$X`0K#dœz(ws:[=%c xw?A@O7ZYޭbzayyaU2qԊ2Vn L/ι0U*MSJU f;KX8dt-}XK6 ^5 C:[ X~7OuXr>T“ `{=eTSQk#WGO䃉ruT.ʇ LVe2-iݚ,'仟4`w] 2=!cRK;j)жKr[~[Eta}3OvM-e|5{C 0k } `ıW ɂ1JNjn."J$U%/i*@q]밊x5Ho`DD="})%_ڒ\[* ؖFo)\k!C:4 @ %=)[y=~U~sZ{&_ 25% *@D_?H)pX  7YZt?H1g%+a3 ` #X@^XEQ lBl^~>c\}OFaix b{ xs)=o~]~S]S61> IENDB`mapnik-vector-tile-1.6.1/test/fixtures/expected-3.png000066400000000000000000000016231324304754200225360ustar00rootroot00000000000000PNG  IHDR\rfZIDATxα 32= |*<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<t@'<tyNYooIENDB`mapnik-vector-tile-1.6.1/test/fixtures/expected-4.png000066400000000000000000000216161324304754200225430ustar00rootroot00000000000000PNG  IHDR\rf#UIDATxIu&l%%1$n]۲-nRZbh-VY [ڲ + TARCZ?39393{}d'O6y̙3gΜ43+._Ťq])/$0S3 om?SH{ÜSs//vۃs`Jz/+W/) v ~v[:{T\qdmWn;t Wg0E\u r .+0+ pњ:8=s~k寈~Ea _~ ~ώA)]<3F;eÍrL2mSY <"Oȱş(oI軄a.iS@< cz\6c>L}}&w8 R8yNC uaj:,f(wծrlO>5!NŹwgF^vZ@ uA֚[pLVşz_Ծ5cտ/ͳ>j~;,3`@k&ewmJmNzP l&~Z^%(F6P>i֣62^s ,O>?> WWGwxWHKb?i F}~ e HuxM8=(b Ba*0p(  ?پ_}URg~g A&b47 Y0} ᠑ywWtϺ5xyglqS~V7$̵|,8y!Udfo D!N>dHv4oW^ځANA_k(~wi?4aoUYWLN 臏# F`e)A fd66%7 Ѕ@g"nÉ^SÏ:$ЧoV$-~}h"PAstDV@ ̥yM{ϯ ѿV~!!iDbQ2hL\*@P; (y ( &pĜˣ #?~_#?/$O] [c:OB`!(#LM qP1哀1 }PRR})w?5]meRlBONGP݀L`0Q_%: jpjȲT 1RHg y5ÿ,~_G+[> YKGc;BP4 aK.G~7 յ`+Ⱥ'a~_ v~JIU(?%G}: 1,@x75"&p.{#rN>5[W|Wn]}Kk?rq2O^\|l|Scl،e'r3F0n&cfjqܚT@P@CT L~Wgraq.׃}/z1||p q/0h{`$@l)@Lڋ*Urn=W"_\GV%OXl>/sYTa0F`ǂx3@A DM8.-7#"xcKkA>߾C_g21g/@n^~,or$m @v q.`qp xԄ?7^)^Uqo?F;{|_o‰|svЯ2%&p,X^H ⁐L@"z-|c__1C_G}bR|;᯻Ũ@L @m@f0N꿫` p"ڊ_?|}!~w{mV=B_+-fwM #5] Șh~~=~q$~꫽-+)\Xn<7t +ۂQ ȞP 8^Я\t)#ngn=K=3"W#<{EEßI ټ cqrэ&P dۆ<qސwOqy1S^9v(|f0.>Ky)w!79#Ob7`] B 3okO-Z[aHÅo͖b7mc(~cGVSg*";q7|/AkK-3m)Y@ئx([jqWp8jĞF&9~\2}ǷV 53/] _<ײm&0& d^xHsG ?p$o=Go-8ZpK=<* ?OݹW]\Xl|hF~}B!\ g+`g  g 'վRY>wrWyp{>kzE(xh}lKL [u`mY <1g/{b^ _7'fSO?OHi￐‰102 [D4e d>̻Pl=Xi~ŗ ?>Snug>o^R}.|􊂄 }4M ATQc1ШT \2u`\pHRjH6^#>ۭOpq?\畗yBOtjW<} r'xa|6.3)Ȏ@i$N 5 @p Ik1Ń~5;?G|B)ݗre )|?f6j^fυq0c*≙|CaJ>'D?b?[}_^I}$p?=ůL6h)!3nVQ5qʬ5pOqy9+tN^cĪB_E.Ow=m׆7XM ! " HƎ@ `=` ς@ RYZEnK/x AwJ% }$~υ6(!0SgWz@, lsӂs8`O`G#<<['oyUs3ᓐ(q@ EȖ`>4kF3n0xlbzoᢎvL?OrS:wn}~Jj}疌 tFNpY@v'b.#S,ns0 hw Sj=_ȓ{9}Ztk*{( EUA%/7ƢaeY˩hy 2|x<(C5dm>|c߾\CşZv7r{[EBUۀ4HD@c^P`@Ծ6碷{+~Azo^߉ތeQ1@eb;-Kf@`3H0q`0c$wJn%q3h%S^sZ^cٽ>fF67f8Pvʣ4LtF݀s `z |x>[gmb9-|'.!XS$Z.d'S# Am:C1z;0qB6X8y>pY?mL0N{8Z=+b^4ћH|-|VܣžJHŊy&~f˚ $#( B AٌhxL-#GGw%c=e7.'WG+_[lD6m|@gfedmw,m;ay]/Ȇp>;^W+7Xcs @e  ]Ls0~JXYC~vi>m{ $xEnk6u  m@ ڂ s( P_!p8٨jаMQ7|-zqdױ^47}6a}f!) 4"VPHφV01 3ya_/R0f[ T}7>T =8[LG KE/'6ƅ1PE3}?5[d Aׂas}UglW)~*꽚u ӹ}V7Vy/x%b'x+ը AvE~I(f;0nLuit3@߿w⧰&w 7g/> }зݏ}, 0#P_N, N vw  (/YW G>OY{nqk,uq>~Nw~},Bn)`hHY@f @|9{@c5ʳ0jKݳϻY}IJ 0,`lrpLJ08:xgt:.|)z/ $գ~nyS3M@dn~ pQ5 yo x湽<);]&f &`mةvHQaHۀx`^ `,j0(ê4}-ŧvv%| mP}oXo\vcA.f M͊ ane|TelR :o2b[0 .6K>=WҳuŠ?&z͛c0;A;[ 年qhm2`1#] $h8*cq(tR%|^M:2ע'E&`lPY ?  `bP5P5 @-@@&T_[pD.ǪOccn2J0hfBJ0X @hȄon|_qDN.|'yzWz.t/rh,30V@X^N A> pp, 7\$ {F{n&*k'7bCE#h5P1hp@Ona @ *֪K[w7ޒz)/|L3&0 3XB` ud8 ૾[=oeOkb_?6"z4@TI]DE@\ /_ nŎ@4>k>K)՟QK)-$E~ܖ TLj8ih %Tu{$~(~3}}c?B9+`&P, 6`aFx  " `l!q+~Z}V[UGtk+ gmMG MzmB],@.@ d:@ p4U??ӗ~%bo?O3r#8 Dq Lpϋf6 0 L\Xlg+}ISag; Ȏ4:,; pd$`=u+p*P RL__WVzSԛf3e,@71dn~ 96kZsjNjǍZxx6(ʊ_[僰1@x2m Fda> @8zp 8n_E0.Xg _}KcFj0Ϗ[ oi;--b_=WgؽWc,kȾ}}M&aQ9G@z4M=>1`&@_ЍQa]a O W)|Y᝜yQy[3-*ԟE9(( a8*f /n|)뚓ˇo}`.)cKRTfޅ o[e>FK (6/]7AK! j `6uyQO(qϘGayb;AK! `*|OaDEo,L?eg|?R `Գ dKfb[K">>T`Vl-0XqB o:I߃fK[cx.p(qpI ;ϫX5ǂ $ .$d 1LJCso7pu+`Ewen c(QI[xQlfdS3n 6 +zc&ֽn֋c 7Bڝ[X>a~E3JauYƱm dMLgEk V~y"EJ6 ; #n@=jC/2xE%ڿogbc>(foei3!R7Ѧr?hpnL} RstX|1ֵ OnZ&U/5衟p1T~ HI|NFVi) h\qLU]U~Fidb '8x$e6>/;,7u{Q!qB{p\ b« [=haƷ Th/܎Ԃ^c0Yv STv'U-*/l /U+lO|1ӮWv#>;`M5 W8kcvE3%s@`2@<|ոY@p~z)UndBh}H磘c|bo8xNL9\"r0U:Eu;scV2&ob~u5cw">.<θy}(嘰."Ec1ϜW (S'6R;Sd@ oP[.F0_"&߸vNjX7XD/\ZW0u`?2R73og0U-k ! 罔`KK_5#Oσu?W $[: jG3*?_\1'Ěv9DXoZub`{{nL6=@=*E[`K:tka. -8EgxdhQ΢%.H%}54`q 60 *wu!Nc|yۀW'{ ߲CsXjJJ90]IvUG *O=Caw ^0]a}J_PҽQiQuGx Y`:l?,8Lmf0Af!aޚn"0ڣ*>8Nc1Ԃ60yyY!6,Y9qg>c@m 6X"߿(n~y]OX4=Fuwyn<h-A@4oDuzʹl(s})h1Ӄ_*[Ղq0FA12؅TK!}A\SXU2XGֵGǁȤՎۃ3(ODz=^>,q.{{Nd0OÜ\*ۍmfN V}.z$4]ehb]%-D雈lTD {_d>ʅg%+^V0@\V7 *Y`?J^{nJ@,rH85{ye'DXn`sn'z>NɟZ]& 6#>{1$f^=[H ʇX 3OD*9  +l]rmĤT :a {uq `S?C馼y}]~މF>HpT #:cQ{`c< >"IFdB|.h7Dh\o?JM >a=EVPVsz{s") _*2C7>K#};Rlz!>tIgL7iL==]aPٌL"J<0ˊzжGӵo `F `;lo{#k9)/ԟqĄ?^l\w0zSv@qU8hL`lBBZ ~k7khC9CϹ+h]󠱇8x$d%>Rro QwP7>YQ; ЖmM èMagc0#@( {}"f ixI_S{u +VMW,sH* ^l#L(KF(ڤ9>q[=n;43 FOqz +2Q_Ե0Q̾:a"bʋ`)l jM@˜E):u2Wmh iX†p%FGi9}^- # < 'NL{ªֵ`8d +w<̳QX! FӍK !B_h|&po, ቮ`=9`-yh@6#Y֛pwo`ԅEIʭ1A.x6 ]Gb<ZU,]R: Q\4k_~o';4‰)rLle8ryKVARfz*xH|3[0FsNJ"bKB$u{p  [D bό:8mCH_l(kce`.bnS))xr)ǹz]ܖ޲0"*٧0evt?xK\HT"PI𵂕Dm8;Dƻ@Fq[3?#ta8r,Y{3}щ0*yt o\O #?q$ݪ†C4=nEDRzanψ~`o^:&(( "W*D,jC [X͛ ,Guߡ>) :)^ 7DghjG'9gn@-~tJ_\D~8sesK_}!@}۱1^s|x=}ʯ0B3H0ҁoCha(IG\) q <("Q X[2c L`آ(WU ( \L؇< o9(/( 綞$hփRMJbHWK}ZV<9>W\!M^q $s~xcS֙G~@Ԡ1LKg5fX6a˸{g@ 0JCym;|REsD\]#ަ4]O4Sb]߿w-Bb WdӞֽL:(Os$jqhhώzDzl'_D٣t=1,])">G097lIv>wC89r ~I!0_vY,hWY[ u©R 雘pzM_{,|b;uu{y9IP o/HGg<ϕI8zY@(Ч8F5Ec9qY8m3ɣUO%(4\H|QXc2/Xu~$-=G,gT͵Dކ <1v yQockVg,(?㫼! d#v L`~xVSa ̒e h_ƅEnb\s*% Bj˛]/|(2 HkP~b3s})FDk;"g%*bGzK$'T=5Tim(ӠmXX.Aw(40!&aG4=#,T9'h2;)u>J_{bDbF M0iՅ>lC H o6]iߤڴ^x/Fo2iKEpN`F=+8Pw<-R `h$ӮX?k ۋ)D"VR f=3&PdN<m[/NGXnORJ} `'d85Oj<ed"V4ˆ!&bnJ,v x! eGIqP %&P춋X 逸߅'m[nMk[?r?\i@ą% {`HÝmOIyBI.\XDG,.p7rC>ش>r.GꔔѨnzUGn!\B5X!)ߴg lɾ^hzm_dnĊ) `v过c[;,r#"Sy2v;k 1&[KO=peޅ1¸ +[t¤a{0rW!o{#Pc70:ł*)f71ؑf1e^\`6(2BHɴ4qd"/<ш7 L;2W8QBu߻GBCCc@&_u]C3nc¦Xקl؄4zx6r:%m`V0fA[8C:(F((h;qⒸߒ4U $fbj9}`IYJKl(=8?ypYMԢt! /E'.5~E,B,$k}1q(4PʖRs^V~Ě%Ri AHi&bWGQ5]cx|;t'K% ;%#O0K( ;&Ds#t|1+Щ EXLyD൶ FRl3XMd)Yh@! KT]$: y `*"c9%"fױG̠ԗ,Dި d@ pJ_SQrШVC>( L 3wO2X VW=fMq] :X:m  E͡5yB[@,4en0IS-戙g[H5O}vUKq$2+mau_JsH5F~`*&T\ "||@تdX^#Kh|*6wB6; Z3ű ayWOR gAVo8Q(n_@y>D9t62})80pIRzTXAUS!,3c:{呑$D[r 2b` 1(7R_j;ޟprM"* q69Xb<ŕuL>"-`9[LvPvωXRM+\pܓ2O$u1:&c mgDyxX'1xzus'v [LfDl lr"8d\kGh$g@:5is9…2W%>\"$n3I39na&bݪ JBhB >oЦ<ȥ Qm]~0Cj7Q1y!v[(?ht#& g36?DN >>J`&z]EX)p/Y2Y& ?r<$^HbVTa]7E\FyR5o{BPQb =ԡ95'e?{2%b;% "" l7Dwt,\n7+։ ;Du<4}HputFY`I!u9!LPf@z>,،eݎ亸& =bv}) -9{GׅTs!" n!xTH6'=]؜X5H(B)ұrJ\.`>dW  Z fXO)>o_>xzx0xadXzb!LD{khrj?RuܗXpa8B}Ժ<4iBme I9ҽLL28IQPYc!!b&Pչ,,^k{t2'x>1a}ԃ [O{}MS.q 13fLbg/z()@+ ?C0D$Ȭ hpL'g Yy%}Gσ˄0x ;"vQ9&10zi,!r&o " ɰR]/(¨Lƛđ048h|HV[Rr2-KV<$2[VVJ4d) 3k5b=mv8ݫWK"uwHP B >9hMv WHF#͑Qd%=GP\." Cb5 0dls;.Hvxnc{$:\{X["L)(W@HBKYh0ds\$(O]xѺ߻g]|[A,9b떪& P4fI<s=v۠)zT8Zuq'Hz0t\\t%Pt'{#(]鄮 `)k 6` G(aE ž%N0tg}I?K:@#\VԹn; J^b¼e1 >8*џh{(S vK 5>C 'EE! P9Ǎ@ f<[<ubq!h7?0pX !9D]s- H;)vaY??p+Z kc-S>[5*!;k౪& ˙xy0xc1wQ6,tc'bmMNmeVs0xYaE_"fB '{jגđrͲ5~J{$%g$q!wc0bǢ8Rt[ZqO;l@[}d`Vb H/0b1Eܤ7ruβ{1qȶʜyĖ DN(Lav㺇hgQ@ԏMF냈-gTQwa@JCQkp&ކqV>#i]a1؊P03`I Sch_Q@؈ʫ/0b@L8,B8@;?M ?az)[l+eC>g݅e%n^4|1ӽ]@1Vb E1:g[@[ >]g݅aԿ(>Go]Qd>%( v+8p;PC;0 tsYwaŰqwԽ,hs;#2 ͙w2YoaŰ\Pu ܗu)8uc/Caj4z<[ is%O'+RC#} ϐ[ḁEvvGޣ) ȏs,~=p ނ0Y/ -Odz ɘG-+E~Hd" ̹?Gq 2 Dz}g,xxm!N9 ) 1Ei* +3 -~AxC"Е脅. q1 |/80|6nanT^>J@>\FP7Aw^PUH@><v nAΧ8pRul  dA@>* 4 wMN@>H`P7 7- &0|ȒL'h9&1 `| A;b>Q YP/]G$08D3n>AaH7đ~/NA!("qԟ_P' 7= aAC@ 0= aAC@ 0= aAC@ 0T{(zH~œ OP ZP,8#KÓ !fT@*0?ֈx@i+"NgmV c=%}c:^ K( X P@,3#L`Sc .~cT1o y(C rU8NaSN +H!wH~/F,`>c'06 ,~[WVͻ $bfsr. <^n@tv ;, Yp;r-8MU0S耝+8*#_G_"'nIiga(RxNtk~M '(,0gO_a ʼħ0`4MRDWʎ0|x_Oƀ M VP] [}»OT@!f@WP4L*N@>0 ?ixAD-w!SN_eA;)|E}}?ee/g-XsB"mɁ0w\8'PWx~[3)^ }(R^![PlMw$akFuL@p)Od#%a9wCEܷbxf:&P4& o,gzN6#kq#6!bĹ ;b$|W:ŽO+?EO2c:N{+Fwb睿dsC@{a?>_V݄zԜدW9: N7ZR Ρ Cjn+,ކ'B]Jj^| |ÉϧlrH΂wԭ8>oԼXCu `mְl\YVwG4N.px7g{Gj>+AJ&ӍŶ'W~[~zx;r:d]'RssI7Sv&R-F7/XǺ`=mjh` s/M7bIہ*lHlzg /^/תmBᓚGS_G *7Q†T{_Q"]G,!!b;(Jpw64}unPDV ˹e<Ǿ_I͏#B`ltgD?֧B68q `F"~9D^t'SF"ÉMwD}.>|._XYṰl 9+sfr"\<%o|D94Ɋ8,$F93MDǎ(eK.tJ=S$@4t=Cj Wؒ85٦ +/pW =\uv؍DewY;Dq٠: 8ɷ 9-D(no&5i"mBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB]AϧAIENDB`mapnik-vector-tile-1.6.1/test/fixtures/transform-expected-1.png000066400000000000000000000045061324304754200245500ustar00rootroot00000000000000PNG  IHDR\rf IDATx߫$t]]uDJ2 #AP‹ *Ћr( #ȋ"b/J*Љb/ XHILCXĬԝg9sf333?<329thYC q ' {,"g8ȌC8o8n~H2zf6^r1 `~ XѩW碛V&WEd ,] d߾GW/g ,] Vg*FHcٟ͑7qU3K~Uttm[BŨ/p\Oo ^Z~3X+'>u_oC>Vֱ$F|ydcZ~Cط :w2abG/pDޏ,J>G=ᴒd}XUhZwX.p0-s-FzSCi5#Hm189f9wGr>Gb,p =s%?| u X(zRC ? EoA?Vz'xahC5#H AArN8AV-FF>GՊ_`:d5blvG6@ c| *ok| jkQ1ˢ' \7 qU`0{'4(uQ[A17 q5QNhP ƭ BbXf7 QX`ؚ8{+4(u5QVhLj=[`ܚ0{/4&F| BCbP/*0ln\akF{!1foĠ>\`ԚAfhDFgoĠn-0j({34$ 7CC Z{kR`Кq^hLQkF{1FfoS`ԚqVhPakF[AfokT`ؚ8{'45QNhTqkvШ;Qƭ鍳7B \eo7 +0pMoV`ڽq>h\kFqFfvoW`ڹq6@kF۠fovn :P`8{tصQ.Dk{]ЉcٻƮ7AG ^[eo6)0xmm :R`:8{tuQL|=Й{3F[CF[C[C[C/'K˿R`,{ б{ б{ б{ бssFO A ߟ8d?+p6~{ Qۃ_y k@Nws C)p =6~w81 [68[æ[~sT z'o Do~sT z7M1DO8^:E/ G}6a[>ְ{' Jݖ0Ubd/C(:)p4-췅`5o {}Epi+,{aG~Kط[ :v*b/,pP֣o c>}:zaK' *Fkz0`bWD' Xg,M j~#X [~Xe \>621E.pxUf T7B~X 8ޘ&uo^1ftU!\}A?{(#T\E/U 󥠰8#W&m/iH=^X/YP^=T`/yı\}>z.*_ {GwRPث8D8KAa?&?xW|)(DMџ ~pPqHG?(p{͗¢A}$:]͗"Q]qϓ/Eú4n/e!gR. qhDE?|)(Zq/_ Y&GE'9\KA=_,d98N&á/u?7 ?RPhpKAUsЗBЗBOC_ 6)3hnIENDB`mapnik-vector-tile-1.6.1/test/fixtures/transform-expected-2.png000066400000000000000000000007721324304754200245520ustar00rootroot00000000000000PNG  IHDR\rfIDATxڱJaῌ6AhjhE"<Τ=Zr0{>{ ]8CaU(?;$}Y,L(_Owdt6 *}to:շvsM@uz y>w{lBKVIENDB`mapnik-vector-tile-1.6.1/test/geometry-test-data/000077500000000000000000000000001324304754200217335ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/test/geometry_visual_test.cpp000066400000000000000000000254121324304754200232010ustar00rootroot00000000000000// catch #include "catch.hpp" // mapnik-vector-tile #include "vector_tile_strategy.hpp" #include "vector_tile_processor.hpp" #include "vector_tile_geometry_decoder.hpp" // mapnik #include #if MAPNIK_VERSION >= 300100 #include #include #else #include #include #endif #include #include #include #include #include // boost #include // test utils #include "test_utils.hpp" #include "geometry_equal.hpp" // std #include #include #include // protozero #include void clip_geometry(mapnik::Map const& map, std::string const& file, mapnik::box2d const& bbox, int simplify_distance, bool strictly_simple, mapnik::vector_tile_impl::polygon_fill_type fill_type, bool mpu, bool process_all) { unsigned tile_size = 4096; int buffer_size = 0; std::string geojson_string; mapnik::vector_tile_impl::processor ren(map); // TODO - test these booleans https://github.com/mapbox/mapnik-vector-tile/issues/165 ren.set_strictly_simple(strictly_simple); ren.set_simplify_distance(simplify_distance); ren.set_fill_type(fill_type); ren.set_process_all_rings(process_all); ren.set_multi_polygon_union(mpu); mapnik::vector_tile_impl::tile out_tile = ren.create_tile(bbox, tile_size, buffer_size); mapnik::geometry::geometry geom4326_pbf; std::string buffer; out_tile.serialize_to_string(buffer); if (!buffer.empty()) { protozero::pbf_reader tile_reader(buffer); if(!tile_reader.next(mapnik::vector_tile_impl::Tile_Encoding::LAYERS)) { throw std::runtime_error("tile buffer contains no layer!"); } protozero::pbf_reader layer_reader = tile_reader.get_message(); if (layer_reader.next(mapnik::vector_tile_impl::Layer_Encoding::FEATURES)) { protozero::pbf_reader feature_reader = layer_reader.get_message(); int32_t geometry_type = mapnik::vector_tile_impl::Geometry_Type::UNKNOWN; mapnik::vector_tile_impl::GeometryPBF::pbf_itr geom_itr; while (feature_reader.next()) { if (feature_reader.tag() == mapnik::vector_tile_impl::Feature_Encoding::GEOMETRY) { geom_itr = feature_reader.get_packed_uint32(); } else if (feature_reader.tag() == mapnik::vector_tile_impl::Feature_Encoding::TYPE) { geometry_type = feature_reader.get_enum(); } else { feature_reader.skip(); } } double sx = static_cast(tile_size) / bbox.width(); double sy = static_cast(tile_size) / bbox.height(); double i_x = bbox.minx(); double i_y = bbox.maxy(); mapnik::vector_tile_impl::GeometryPBF geoms2_pbf(geom_itr); geom4326_pbf = mapnik::vector_tile_impl::decode_geometry(geoms2_pbf, geometry_type, 2, i_x, i_y, 1.0 * sx, -1.0 * sy); std::string reason; std::string is_valid = "false"; std::string is_simple = "false"; if (mapnik::geometry::is_valid(geom4326_pbf, reason)) { is_valid = "true"; } if (mapnik::geometry::is_simple(geom4326_pbf)) { is_simple = "true"; } unsigned int n_err = 0; mapnik::util::to_geojson(geojson_string,geom4326_pbf); geojson_string = geojson_string.substr(0, geojson_string.size()-1); geojson_string += ",\"properties\":{\"is_valid\":"+is_valid+", \"is_simple\":"+is_simple+", \"message\":\""+reason+"\"}}"; } else { geojson_string = "{\"type\": \"Point\", \"coordinates\":[], \"properties\":{\"message\":\"Tile layer had no features\"}}"; } } else { geojson_string = "{\"type\": \"Point\", \"coordinates\":[], \"properties\":{\"message\":\"Tile had no layers\"}}"; } std::string fixture_name = mapnik::util::basename(file); fixture_name = fixture_name.substr(0, fixture_name.size()-5); if (!mapnik::util::exists("./test/geometry-test-data/output")) { boost::filesystem::create_directory(("./test/geometry-test-data/output")); } if (!mapnik::util::exists("./test/geometry-test-data/output/"+fixture_name)) { boost::filesystem::create_directory(("./test/geometry-test-data/output/"+fixture_name)); } std::stringstream file_stream; file_stream << "./test/geometry-test-data/output/" << fixture_name << "/" << bbox.minx() << "," << bbox.miny() << "," << bbox.maxx()<< "," << bbox.maxy() << "," << "simplify_distance=" << simplify_distance << "," << "strictly_simple=" << strictly_simple << "," << "fill_type=" << fill_type << "," << "mpu=" << mpu << "," << "par=" << process_all << ".geojson"; std::string file_path = file_stream.str(); if (!mapnik::util::exists(file_path) || (std::getenv("UPDATE") != nullptr)) { std::ofstream out(file_path); out << geojson_string; } else { mapnik::util::file input(file_path); if (!input.is_open()) { throw std::runtime_error("failed to open test geojson"); } std::string expected_string(input.data().get(), input.size()); mapnik::geometry::geometry geom_expected; if (mapnik::json::from_geojson(expected_string, geom_expected)) { assert_g_equal(geom_expected, geom4326_pbf); } } } mapnik::box2d middle_fifty(mapnik::box2d const& bbox) { double width = std::fabs(bbox.maxx() - bbox.minx()); double height = std::fabs(bbox.maxy() - bbox.miny()); mapnik::box2d new_bbox( bbox.minx() + width*0.25, bbox.miny() + height*0.25, bbox.maxx() - width*0.25, bbox.maxy() - height*0.25 ); return new_bbox; } mapnik::box2d top_left(mapnik::box2d const& bbox) { double width = std::fabs(bbox.maxx() - bbox.minx()); double height = std::fabs(bbox.maxy() - bbox.miny()); mapnik::box2d new_bbox( bbox.minx(), bbox.miny(), bbox.maxx() - width*0.5, bbox.maxy() - height*0.5 ); return new_bbox; } mapnik::box2d top_right(mapnik::box2d const& bbox) { double width = std::fabs(bbox.maxx() - bbox.minx()); double height = std::fabs(bbox.maxy() - bbox.miny()); mapnik::box2d new_bbox( bbox.minx() + width*0.5, bbox.miny(), bbox.maxx(), bbox.maxy() - height*0.5 ); return new_bbox; } mapnik::box2d bottom_left(mapnik::box2d const& bbox) { double width = std::fabs(bbox.maxx() - bbox.minx()); double height = std::fabs(bbox.maxy() - bbox.miny()); mapnik::box2d new_bbox( bbox.minx(), bbox.miny() + height*0.5, bbox.maxx() + width*0.5, bbox.maxy() ); return new_bbox; } mapnik::box2d bottom_right(mapnik::box2d const& bbox) { double width = std::fabs(bbox.maxx() - bbox.minx()); double height = std::fabs(bbox.maxy() - bbox.miny()); mapnik::box2d new_bbox( bbox.minx() + width*0.5, bbox.miny() + height*0.5, bbox.maxx(), bbox.maxy() ); return new_bbox; } mapnik::box2d zoomed_out(mapnik::box2d const& bbox) { double width = std::fabs(bbox.maxx() - bbox.minx()); double height = std::fabs(bbox.maxy() - bbox.miny()); mapnik::box2d new_bbox( bbox.minx() - width, bbox.miny() - height, bbox.maxx() + width, bbox.maxy() + height ); return new_bbox; } TEST_CASE("geometries visual tests") { std::vector geometries = mapnik::util::list_directory("./test/geometry-test-data/input"); std::vector benchmarks = mapnik::util::list_directory("./test/geometry-test-data/benchmark"); if (std::getenv("BENCHMARK") != nullptr) { geometries.insert(geometries.end(), benchmarks.begin(), benchmarks.end()); } for (std::string const& file: geometries) { mapnik::datasource_ptr ds = testing::build_geojson_fs_ds(file); mapnik::box2d bbox = ds->envelope(); mapnik::Map map(256, 256, "+init=epsg:4326"); mapnik::layer lyr("layer","+init=epsg:4326"); lyr.set_datasource(ds); map.add_layer(lyr); for (int simplification_distance : std::vector({0, 4, 8})) { for (bool strictly_simple : std::vector({false, true})) { std::vector types; types.emplace_back(mapnik::vector_tile_impl::even_odd_fill); types.emplace_back(mapnik::vector_tile_impl::non_zero_fill); types.emplace_back(mapnik::vector_tile_impl::positive_fill); types.emplace_back(mapnik::vector_tile_impl::negative_fill); for (auto const& type : types) { for (bool mpu : std::vector({false, true})) { for (bool process_all : std::vector({false, true})) { clip_geometry(map, file, bbox, simplification_distance, strictly_simple, type, mpu, process_all); clip_geometry(map, file, middle_fifty(bbox), simplification_distance, strictly_simple, type, mpu, process_all); clip_geometry(map, file, top_left(bbox), simplification_distance, strictly_simple, type, mpu, process_all); clip_geometry(map, file, top_right(bbox), simplification_distance, strictly_simple, type, mpu, process_all); clip_geometry(map, file, bottom_left(bbox), simplification_distance, strictly_simple, type, mpu, process_all); clip_geometry(map, file, bottom_right(bbox), simplification_distance, strictly_simple, type, mpu, process_all); clip_geometry(map, file, zoomed_out(bbox), simplification_distance, strictly_simple, type, mpu, process_all); } } } } } } } mapnik-vector-tile-1.6.1/test/raster_tile.cpp000066400000000000000000000400071324304754200212360ustar00rootroot00000000000000#include "catch.hpp" // test utils #include "test_utils.hpp" #include "vector_tile_projection.hpp" // vector output api #include "vector_tile_processor.hpp" #include "vector_tile_datasource_pbf.hpp" // mapnik #include #include #include #include #include #include #include #include // libprotobuf #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wsign-conversion" #include "vector_tile.pb.h" #pragma GCC diagnostic pop #include #include TEST_CASE("raster tile output 1") { // this test should create raster tile with one raster layer unsigned _x = 0; unsigned _y = 0; unsigned _z = 1; unsigned tile_size = 512; int buffer_size = 256; // setup map object mapnik::Map map(tile_size,tile_size,"+init=epsg:3857"); map.set_buffer_size(buffer_size); mapnik::layer lyr("layer",map.srs()); mapnik::parameters params; params["type"] = "gdal"; // created with: // wget http://www.nacis.org/naturalearth/50m/raster/NE2_50m_SR_W.zip // gdalwarp -t_srs EPSG:3857 -ts 1048 1048 -r bilinear NE2_50M_SR_W.tif natural_earth.tif params["file"] = "test/data/natural_earth.tif"; std::shared_ptr ds = mapnik::datasource_cache::instance().create(params); lyr.set_datasource(ds); map.add_layer(lyr); // Create the processor mapnik::vector_tile_impl::processor ren(map); ren.set_image_format("jpeg"); ren.set_scaling_method(mapnik::SCALING_BILINEAR); // Request the tile mapnik::vector_tile_impl::merc_tile out_tile = ren.create_tile(_x, _y, _z, tile_size, buffer_size); vector_tile::Tile tile; tile.ParseFromString(out_tile.get_buffer()); // Test that tile is correct CHECK(1 == tile.layers_size()); vector_tile::Tile_Layer const& layer = tile.layers(0); CHECK(std::string("layer") == layer.name()); CHECK(1 == layer.features_size()); vector_tile::Tile_Feature const& f = layer.features(0); CHECK(static_cast(1) == static_cast(f.id())); CHECK(0 == f.geometry_size()); CHECK(f.has_raster()); std::string const& ras_buffer = f.raster(); CHECK(!ras_buffer.empty()); // debug bool debug = false; if (!mapnik::util::exists("test/fixtures/expected-2.jpeg")) { std::ofstream file("test/fixtures/expected-2.jpeg", std::ios::out|std::ios::trunc|std::ios::binary); if (!file) { throw std::runtime_error("could not write image"); } file << ras_buffer; file.close(); } std::unique_ptr reader(mapnik::get_image_reader(ras_buffer.data(),ras_buffer.size())); if (!reader.get()) { throw std::runtime_error("could not open image bytes"); } mapnik::image_rgba8 im_data(reader->width(),reader->height()); reader->read(0,0,im_data); unsigned diff = testing::compare_images(im_data,"test/fixtures/expected-2.jpeg"); CHECK(0 == diff); if (diff > 0) { mapnik::save_to_file(im_data,"test/fixtures/actual-2.jpeg","jpeg"); } std::size_t expected_image_size = 45660; std::size_t expected_vtile_size = expected_image_size + 26; if (!debug) { CHECK(expected_image_size == ras_buffer.size()); CHECK(expected_vtile_size == tile.ByteSize()); } std::string buffer; CHECK(tile.SerializeToString(&buffer)); if (!debug) { CHECK(expected_vtile_size == buffer.size()); } // now read back and render image mapnik::Map map2(tile_size,tile_size,"+init=epsg:3857"); map2.set_buffer_size(buffer_size); vector_tile::Tile tile2; CHECK(tile2.ParseFromString(buffer)); CHECK(1 == tile2.layers_size()); vector_tile::Tile_Layer const& layer2 = tile2.layers(0); CHECK(std::string("layer") == layer2.name()); CHECK(1 == layer2.features_size()); vector_tile::Tile_Feature const& f2 = layer2.features(0); CHECK(static_cast(1) == static_cast(f2.id())); CHECK(0 == f2.geometry_size()); CHECK(f2.has_raster()); CHECK(!f2.raster().empty()); if (!debug) { CHECK(expected_image_size == f2.raster().size()); } mapnik::layer lyr2("layer",map2.srs()); protozero::pbf_reader layer_reader; out_tile.layer_reader(0, layer_reader); std::shared_ptr ds2 = std::make_shared< mapnik::vector_tile_impl::tile_datasource_pbf>( layer_reader,_x,_y,_z); lyr2.set_datasource(ds2); lyr2.add_style("style"); map2.add_layer(lyr2); mapnik::load_map(map2,"test/data/raster_style.xml"); map2.zoom_all(); mapnik::image_rgba8 im(map2.width(),map2.height()); mapnik::agg_renderer ren2(map2,im); ren2.apply(); if (!mapnik::util::exists("test/fixtures/expected-2.png")) { mapnik::save_to_file(im,"test/fixtures/expected-2.png","png32"); } diff = testing::compare_images(im,"test/fixtures/expected-2.png"); CHECK(0 == diff); if (diff > 0) { mapnik::save_to_file(im_data,"test/fixtures/actual-2.png","png32"); } } TEST_CASE("raster tile output 2") { // the test is to check if you can overzoom a raster after encoding it into a vector tile unsigned tile_size = 256; int buffer_size = 1024; mapnik::vector_tile_impl::merc_tile out_tile(0, 0, 0, tile_size, buffer_size); { mapnik::box2d const& bbox = out_tile.extent(); std::ostringstream s; s << std::fixed << std::setprecision(16) << bbox.minx() << ',' << bbox.miny() << ',' << bbox.maxx() << ',' << bbox.maxy(); // build map mapnik::Map map(tile_size,tile_size,"+init=epsg:3857"); map.set_buffer_size(buffer_size); mapnik::layer lyr("layer",map.srs()); mapnik::parameters params; params["type"] = "gdal"; params["extent"] = s.str(); params["file"] = "test/data/256x256.png"; std::shared_ptr ds = mapnik::datasource_cache::instance().create(params); lyr.set_datasource(ds); map.add_layer(lyr); // build processor mapnik::vector_tile_impl::processor ren(map); ren.set_image_format("jpeg"); ren.set_scaling_method(mapnik::SCALING_BILINEAR); // Update the tile ren.update_tile(out_tile); } vector_tile::Tile tile; tile.ParseFromString(out_tile.get_buffer()); // Done creating test data, now test created tile CHECK(1 == tile.layers_size()); vector_tile::Tile_Layer const& layer = tile.layers(0); CHECK(std::string("layer") == layer.name()); CHECK(1 == layer.features_size()); vector_tile::Tile_Feature const& f = layer.features(0); CHECK(static_cast(1) == static_cast(f.id())); CHECK(0 == f.geometry_size()); CHECK(f.has_raster()); std::string const& ras_buffer = f.raster(); CHECK(!ras_buffer.empty()); // debug bool debug = false; if (debug) { std::ofstream file("out2.png", std::ios::out|std::ios::trunc|std::ios::binary); file << ras_buffer; file.close(); } // confirm tile looks correct as encoded std::size_t expected_image_size = 1654; std::size_t expected_vtile_size = expected_image_size + 23; if (!debug) { CHECK(expected_image_size == ras_buffer.size()); CHECK(expected_vtile_size == tile.ByteSize()); } std::string buffer; out_tile.serialize_to_string(buffer); if (!debug) { CHECK(expected_vtile_size == buffer.size()); } vector_tile::Tile tile2; CHECK(tile2.ParseFromString(buffer)); CHECK(1 == tile2.layers_size()); vector_tile::Tile_Layer const& layer2 = tile2.layers(0); CHECK(std::string("layer") == layer2.name()); CHECK(1 == layer2.features_size()); vector_tile::Tile_Feature const& f2 = layer2.features(0); CHECK(static_cast(1) == static_cast(f2.id())); CHECK(0 == f2.geometry_size()); CHECK(f2.has_raster()); CHECK(!f2.raster().empty()); if (!debug) { CHECK(expected_image_size == f2.raster().size()); } // now read back and render image at larger size // and zoomed in mapnik::box2d bbox = mapnik::vector_tile_impl::tile_mercator_bbox(0,1,2); mapnik::Map map2(256,256,"+init=epsg:3857"); map2.set_buffer_size(1024); mapnik::layer lyr2("layer",map2.srs()); protozero::pbf_reader layer_reader; out_tile.layer_reader(0, layer_reader); std::shared_ptr ds2 = std::make_shared< mapnik::vector_tile_impl::tile_datasource_pbf>( layer_reader,0,0,0); lyr2.set_datasource(ds2); lyr2.add_style("style"); map2.add_layer(lyr2); mapnik::load_map(map2,"test/data/raster_style.xml"); map2.zoom_to_box(bbox); mapnik::image_rgba8 im(map2.width(),map2.height()); mapnik::agg_renderer ren2(map2,im); ren2.apply(); if (!mapnik::util::exists("test/fixtures/expected-3.png")) { mapnik::save_to_file(im,"test/fixtures/expected-3.png","png32"); } unsigned diff = testing::compare_images(im,"test/fixtures/expected-3.png"); CHECK(0 == diff); if (diff > 0) { mapnik::save_to_file(im,"test/fixtures/actual-3.png","png32"); } } TEST_CASE("raster tile output 3 -- should be able to round trip image with alpha") { // create a vtile from scratch with a raster unsigned tile_size = 256; mapnik::vector_tile_impl::merc_tile out_tile(0, 0, 0, tile_size); mapnik::box2d const& bbox = out_tile.extent(); { // build map mapnik::Map map(tile_size,tile_size,"+init=epsg:3857"); mapnik::layer lyr("layer",map.srs()); mapnik::parameters params; params["type"] = "raster"; params["lox"] = bbox.minx(); params["loy"] = bbox.miny(); params["hix"] = bbox.maxx(); params["hiy"] = bbox.maxy(); params["file"] = "test/fixtures/alpha-white-2.png"; std::shared_ptr ds = mapnik::datasource_cache::instance().create(params); lyr.set_datasource(ds); map.add_layer(lyr); // build processor mapnik::vector_tile_impl::processor ren(map); ren.set_image_format("png32"); ren.set_scaling_method(mapnik::SCALING_NEAR); // Update the tile ren.update_tile(out_tile); } vector_tile::Tile tile; tile.ParseFromString(out_tile.get_buffer()); // Done creating test data, now test created tile /* vector_tile::Tile tile; std::string format("png32"); { mapnik::vector_tile_impl::backend_pbf backend(tile,16); backend.start_tile_layer("layer"); mapnik::feature_ptr feature(mapnik::feature_factory::create(std::make_shared(),1)); backend.start_tile_feature(*feature); std::unique_ptr reader(mapnik::get_image_reader("./test/fixtures/alpha-white-2.png")); if (!reader.get()) { throw std::runtime_error("could not open image"); } mapnik::image_rgba8 im_data(reader->width(),reader->height()); reader->read(0,0,im_data); backend.add_tile_feature_raster(mapnik::save_to_string(im_data,format)); backend.stop_tile_feature(); backend.stop_tile_layer(); } */ { REQUIRE(1 == tile.layers_size()); vector_tile::Tile_Layer const& layer = tile.layers(0); REQUIRE(1 == layer.features_size()); vector_tile::Tile_Feature const& f = layer.features(0); REQUIRE(f.has_raster()); std::string const& ras_buffer = f.raster(); REQUIRE(!ras_buffer.empty()); std::unique_ptr reader(mapnik::get_image_reader(ras_buffer.data(), ras_buffer.size())); if (!reader.get()) { throw std::runtime_error("could not open image bytes"); } mapnik::image_rgba8 im_data(reader->width(), reader->height()); reader->read(0, 0, im_data); unsigned diff = testing::compare_images(im_data, "./test/fixtures/alpha-white-2.png", 0, true); CHECK(0 == diff); if (diff > 0) { mapnik::save_to_file(im_data, "test/fixtures/actual-4.png", "png32"); } } // Now actually re-render to trigger the raster being passed through the processor // and confirm raster still looks correct { protozero::pbf_reader layer_reader; out_tile.layer_reader(0, layer_reader); // create datasource wrapping raster std::shared_ptr ds = std::make_shared< mapnik::vector_tile_impl::tile_datasource_pbf>( layer_reader,0,0,0); // before rendering let's query the raster directly to ensure // the datasource returns it correctly. mapnik::query q(bbox); mapnik::featureset_ptr fs = ds->features(q); mapnik::feature_ptr feat = fs->next(); mapnik::raster_ptr const& source = feat->get_raster(); CHECK(source->data_.is()); mapnik::image_rgba8 const& source_data = mapnik::util::get(source->data_); unsigned diff = testing::compare_images(source_data, "./test/fixtures/alpha-white-2.png", 0, true); CHECK(0 == diff); if (diff > 0) { mapnik::save_to_file(source_data, "test/fixtures/actual-5.png", "png32"); } // okay, now we'll re-render another vector tile from original // which triggers the raster to be resampled mapnik::Map map(tile_size,tile_size,"+init=epsg:3857"); mapnik::layer lyr("layer",map.srs()); ds->set_envelope(bbox); lyr.set_datasource(ds); map.add_layer(lyr); map.zoom_to_box(bbox); // build processor mapnik::vector_tile_impl::processor ren(map); ren.set_image_format("png32"); //ren.set_scaling_method(mapnik::SCALING_NEAR); // Update the tile mapnik::vector_tile_impl::tile new_tile = ren.create_tile(0, 0, 0, tile_size); //, buffer_size); vector_tile::Tile round_tripped_tile; round_tripped_tile.ParseFromString(new_tile.get_buffer()); REQUIRE(1 == round_tripped_tile.layers_size()); vector_tile::Tile_Layer const& layer = round_tripped_tile.layers(0); REQUIRE(1 == layer.features_size()); vector_tile::Tile_Feature const& f = layer.features(0); REQUIRE(f.has_raster()); std::string const& ras_buffer = f.raster(); REQUIRE(!ras_buffer.empty()); std::unique_ptr reader(mapnik::get_image_reader(ras_buffer.data(),ras_buffer.size())); if (!reader.get()) { throw std::runtime_error("could not open image bytes"); } mapnik::image_rgba8 im_data(reader->width(), reader->height()); reader->read(0, 0, im_data); if (!mapnik::util::exists("test/fixtures/expected-4.png")) { mapnik::save_to_file(im_data, "test/fixtures/expected-4.png", "png32"); } diff = testing::compare_images(im_data, "test/fixtures/expected-4.png", 0, true); CHECK(0 == diff); if (diff > 0) { mapnik::save_to_file(im_data, "test/fixtures/actual-7.png", "png32"); } diff = testing::compare_images(im_data, "./test/fixtures/alpha-white-2.png", 0, true); CHECK(0 == diff); if (diff > 0) { mapnik::save_to_file(im_data, "test/fixtures/actual-7.png", "png32"); } } } mapnik-vector-tile-1.6.1/test/run.sh000077500000000000000000000001701324304754200173550ustar00rootroot00000000000000#!/bin/bash set -eu set -o pipefail source ./bootstrap.sh BUILDTYPE=${BUILDTYPE:-Release} ./build/${BUILDTYPE}/testsmapnik-vector-tile-1.6.1/test/system/000077500000000000000000000000001324304754200175405ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/test/system/encode_and_datasource_decode.cpp000066400000000000000000000106421324304754200260430ustar00rootroot00000000000000#include "catch.hpp" // mapnik #include #include #if MAPNIK_VERSION >= 300100 #include #include #else #include #include #endif // mapnik-vector-tile #include "vector_tile_geometry_encoder_pbf.hpp" #include "vector_tile_datasource_pbf.hpp" #include "convert_geometry_types.hpp" // vector tile #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wsign-conversion" #include "vector_tile.pb.h" #pragma GCC diagnostic pop TEST_CASE("encoding multi line string and check output datasource") { mapbox::geometry::multi_line_string geom; { mapbox::geometry::line_string ring; ring.emplace_back(0,0); ring.emplace_back(2,2); geom.emplace_back(std::move(ring)); } { mapbox::geometry::line_string ring; ring.emplace_back(1,1); ring.emplace_back(2,2); geom.emplace_back(std::move(ring)); } vector_tile::Tile tile; vector_tile::Tile_Layer * t_layer = tile.add_layers(); t_layer->set_name("layer"); t_layer->set_version(2); t_layer->set_extent(4096); vector_tile::Tile_Feature * t_feature = t_layer->add_features(); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); CHECK(mapnik::vector_tile_impl::encode_geometry_pbf(geom, feature_writer, x, y)); t_feature->ParseFromString(feature_str); REQUIRE(1 == tile.layers_size()); vector_tile::Tile_Layer const& layer = tile.layers(0); REQUIRE(1 == layer.features_size()); vector_tile::Tile_Feature const& f = layer.features(0); CHECK(12 == f.geometry_size()); CHECK(9 == f.geometry(0)); // 1 move_to CHECK(0 == f.geometry(1)); // x:0 CHECK(0 == f.geometry(2)); // y:0 CHECK(10 == f.geometry(3)); // 1 line_to CHECK(4 == f.geometry(4)); // x:2 CHECK(4 == f.geometry(5)); // y:2 CHECK(9 == f.geometry(6)); // 1 move_to CHECK(1 == f.geometry(7)); // x:1 CHECK(1 == f.geometry(8)); // y:1 CHECK(10 == f.geometry(9)); // 1 line_to CHECK(2 == f.geometry(10)); // x:2 CHECK(2 == f.geometry(11)); // y:2 mapnik::featureset_ptr fs; mapnik::feature_ptr f_ptr; std::string buffer; tile.SerializeToString(&buffer); protozero::pbf_reader pbf_tile(buffer); pbf_tile.next(); protozero::pbf_reader layer2 = pbf_tile.get_message(); mapnik::vector_tile_impl::tile_datasource_pbf ds(layer2,0,0,0); mapnik::box2d bbox(-20037508.342789,-20037508.342789,20037508.342789,20037508.342789); fs = ds.features(mapnik::query(bbox)); f_ptr = fs->next(); REQUIRE(f_ptr != mapnik::feature_ptr()); // no attributes CHECK(f_ptr->context()->size() == 0); CHECK(f_ptr->get_geometry().is >()); } TEST_CASE("encoding and decoding with datasource simple polygon") { mapnik::geometry::polygon geom; { mapnik::geometry::linear_ring ring; ring.add_coord(168.267850,-24.576888); ring.add_coord(167.982618,-24.697145); ring.add_coord(168.114561,-24.783548); ring.add_coord(168.267850,-24.576888); ring.add_coord(168.267850,-24.576888); geom.set_exterior_ring(std::move(ring)); } unsigned path_multiplier = 16; mapnik::geometry::scale_rounding_strategy scale_strat(path_multiplier); mapnik::geometry::polygon geom2 = mapnik::geometry::transform(geom, scale_strat); auto geom3 = mapnik::vector_tile_impl::mapnik_to_mapbox(geom2); // encode geometry vector_tile::Tile tile; vector_tile::Tile_Layer * t_layer = tile.add_layers(); vector_tile::Tile_Feature * t_feature = t_layer->add_features(); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); CHECK(mapnik::vector_tile_impl::encode_geometry_pbf(geom3, feature_writer, x, y)); t_feature->ParseFromString(feature_str); // test results REQUIRE(1 == tile.layers_size()); vector_tile::Tile_Layer const& layer = tile.layers(0); CHECK(1 == layer.features_size()); vector_tile::Tile_Feature const& f = layer.features(0); CHECK(11 == f.geometry_size()); } mapnik-vector-tile-1.6.1/test/system/encode_and_decode.cpp000066400000000000000000000056601324304754200236350ustar00rootroot00000000000000#include "catch.hpp" // test utils #include "encoding_util.hpp" // // Point Round Trip // TEST_CASE("encode and decode point") { mapbox::geometry::point g(0,0); std::string expected( "move_to(0,0)\n" ); SECTION("protozero decoder VT Spec v1") { CHECK(compare_pbf(g,1) == expected); } SECTION("protozero decoder VT Spec v2") { CHECK(compare_pbf(g,2) == expected); } } TEST_CASE( "encode and decode multipoint" ) { mapbox::geometry::multi_point g; g.emplace_back(0,0); g.emplace_back(1,1); g.emplace_back(2,2); std::string expected( "move_to(0,0)\n" "move_to(1,1)\n" "move_to(2,2)\n" ); SECTION("protozero decoder VT Spec v1") { CHECK(compare_pbf(g,1) == expected); } SECTION("protozero decoder VT Spec v2") { CHECK(compare_pbf(g,2) == expected); } } // // Linestring Round Trip // TEST_CASE( "encode and decode linestring" ) { mapbox::geometry::line_string g; g.emplace_back(0,0); g.emplace_back(1,1); g.emplace_back(100,100); std::string expected( "move_to(0,0)\n" "line_to(1,1)\n" "line_to(100,100)\n" ); SECTION("protozero decoder VT Spec v1") { CHECK(compare_pbf(g,1) == expected); } SECTION("protozero decoder VT Spec v2") { CHECK(compare_pbf(g,2) == expected); } } TEST_CASE( "encode and decode multi_line_string" ) { mapbox::geometry::multi_line_string g; { mapbox::geometry::line_string line; line.emplace_back(0,0); line.emplace_back(1,1); line.emplace_back(100,100); g.emplace_back(std::move(line)); } { mapbox::geometry::line_string line; line.emplace_back(-10,-10); line.emplace_back(-20,-20); line.emplace_back(-100,-100); g.emplace_back(std::move(line)); } std::string expected( "move_to(0,0)\n" "line_to(1,1)\n" "line_to(100,100)\n" "move_to(-10,-10)\n" "line_to(-20,-20)\n" "line_to(-100,-100)\n" ); SECTION("protozero decoder VT Spec v1") { CHECK(compare_pbf(g,1) == expected); } SECTION("protozero decoder VT Spec v2") { CHECK(compare_pbf(g,2) == expected); } } TEST_CASE( "encode and decode polygon" ) { mapbox::geometry::polygon g; mapbox::geometry::linear_ring lr; lr.emplace_back(0,0); lr.emplace_back(100,0); lr.emplace_back(100,100); lr.emplace_back(0,0); g.push_back(std::move(lr)); std::string expected( "move_to(0,0)\n" "line_to(100,0)\n" "line_to(100,100)\n" "close_path(0,0)\n" ); SECTION("protozero decoder VT Spec v1") { CHECK(compare_pbf(g,1) == expected); } SECTION("protozero decoder VT Spec v2") { CHECK(compare_pbf(g,2) == expected); } } mapnik-vector-tile-1.6.1/test/system/processor_and_datasource.cpp000066400000000000000000000310051324304754200253160ustar00rootroot00000000000000#include "catch.hpp" // mapnik-vector-tile #include "vector_tile_datasource_pbf.hpp" #include "vector_tile_processor.hpp" // mapnik #include #include #include #include #include // test utils #include "test_utils.hpp" // libprotobuf #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wsign-conversion" #include "vector_tile.pb.h" #pragma GCC diagnostic pop // boost #include // std #include TEST_CASE("vector tile output -- simple two points") { // This test should create vector tile with two points // Build Map mapnik::Map map(256, 256, "+init=epsg:3857"); mapnik::layer lyr("layer",map.srs()); lyr.set_datasource(testing::build_ds(0,0,true)); map.add_layer(lyr); // Create processor mapnik::vector_tile_impl::processor ren(map); // Request Tile mapnik::vector_tile_impl::merc_tile out_tile = ren.create_tile(0,0,0); CHECK(out_tile.is_painted() == true); CHECK(out_tile.is_empty() == false); // Now check that the tile is correct. vector_tile::Tile tile; tile.ParseFromString(out_tile.get_buffer()); REQUIRE(1 == tile.layers_size()); vector_tile::Tile_Layer const& layer = tile.layers(0); CHECK(std::string("layer") == layer.name()); REQUIRE(2 == layer.features_size()); vector_tile::Tile_Feature const& f = layer.features(0); CHECK(static_cast(1) == static_cast(f.id())); REQUIRE(3 == f.geometry_size()); CHECK(9 == f.geometry(0)); CHECK(4096 == f.geometry(1)); CHECK(4096 == f.geometry(2)); CHECK(190 == tile.ByteSize()); std::string buffer; CHECK(tile.SerializeToString(&buffer)); CHECK(190 == buffer.size()); } TEST_CASE("processor -- can deal with (optional) variables") { // Build Map mapnik::Map map(256, 256, "+init=epsg:3857"); mapnik::layer lyr("layer",map.srs()); lyr.set_datasource(testing::build_ds(0,0,true)); map.add_layer(lyr); // Create processor const mapnik::attributes vars { {"zoom_level", 20} }; mapnik::vector_tile_impl::processor ren(map, vars); // Request Tile mapnik::vector_tile_impl::merc_tile out_tile = ren.create_tile(0,0,0); CHECK(out_tile.is_painted() == true); CHECK(out_tile.is_empty() == false); // Now check that the tile is correct. vector_tile::Tile tile; tile.ParseFromString(out_tile.get_buffer()); REQUIRE(1 == tile.layers_size()); vector_tile::Tile_Layer const& layer = tile.layers(0); CHECK(std::string("layer") == layer.name()); REQUIRE(2 == layer.features_size()); vector_tile::Tile_Feature const& f = layer.features(0); CHECK(static_cast(1) == static_cast(f.id())); REQUIRE(3 == f.geometry_size()); CHECK(9 == f.geometry(0)); CHECK(4096 == f.geometry(1)); CHECK(4096 == f.geometry(2)); CHECK(190 == tile.ByteSize()); std::string buffer; CHECK(tile.SerializeToString(&buffer)); CHECK(190 == buffer.size()); } TEST_CASE("vector tile output -- empty tile") { // test adding empty layers should result in empty tile mapnik::Map map(256,256,"+init=epsg:3857"); map.add_layer(mapnik::layer("layer",map.srs())); mapnik::vector_tile_impl::processor ren(map); mapnik::vector_tile_impl::tile out_tile = ren.create_tile(0,0,0); CHECK(out_tile.is_painted() == false); CHECK(out_tile.is_empty() == true); vector_tile::Tile tile; tile.ParseFromString(out_tile.get_buffer()); CHECK(0 == tile.layers_size()); std::string buffer; out_tile.serialize_to_string(buffer); CHECK(buffer.empty()); } TEST_CASE("vector tile output -- layers outside extent") { // adding layers with geometries outside rendering extent should not add layer unsigned tile_size = 4096; // Create map mapnik::Map map(256,256,"+init=epsg:3857"); mapnik::layer lyr("layer",map.srs()); mapnik::context_ptr ctx = std::make_shared(); mapnik::feature_ptr feature(mapnik::feature_factory::create(ctx,1)); mapnik::geometry::line_string g; g.add_coord(-10,-10); g.add_coord(-11,-11); feature->set_geometry(std::move(g)); mapnik::parameters params; params["type"] = "memory"; std::shared_ptr ds = std::make_shared(params); ds->push(feature); lyr.set_datasource(ds); map.add_layer(lyr); mapnik::box2d custom_bbox(0,0,10,10); // Build processor and create tile mapnik::vector_tile_impl::processor ren(map); mapnik::vector_tile_impl::tile out_tile = ren.create_tile(custom_bbox, tile_size); CHECK(out_tile.is_painted() == false); CHECK(out_tile.is_empty() == true); vector_tile::Tile tile; tile.ParseFromString(out_tile.get_buffer()); CHECK(0 == tile.layers_size()); std::string buffer; out_tile.serialize_to_string(buffer); CHECK(buffer.empty()); } TEST_CASE("vector tile output is empty -- degenerate geometries") { // adding layers with degenerate geometries should not add layer unsigned tile_size = 4096; mapnik::box2d bbox(-20037508.342789,-20037508.342789,20037508.342789,20037508.342789); mapnik::Map map(256,256,"+init=epsg:3857"); mapnik::layer lyr("layer",map.srs()); // create a datasource with a feature outside the map std::shared_ptr ds = testing::build_ds(bbox.minx()-1,bbox.miny()-1); // but fake the overall envelope to ensure the layer is still processed // and then removed given no intersecting features will be added ds->set_envelope(bbox); lyr.set_datasource(ds); map.add_layer(lyr); // Build processor and create tile mapnik::vector_tile_impl::processor ren(map); // Request Tile mapnik::vector_tile_impl::tile out_tile = ren.create_tile(bbox, tile_size); // Check output CHECK(out_tile.is_painted() == false); CHECK(out_tile.is_empty() == true); vector_tile::Tile tile; tile.ParseFromString(out_tile.get_buffer()); CHECK(0 == tile.layers_size()); std::string buffer; out_tile.serialize_to_string(buffer); CHECK(buffer.empty()); } TEST_CASE("vector tile render simple point") { // should be able to parse message and render point unsigned tile_size = 4096; mapnik::Map map(256, 256, "+init=epsg:3857"); mapnik::layer lyr("layer", map.srs()); lyr.set_datasource(testing::build_ds(0,0)); map.add_layer(lyr); // create processor mapnik::vector_tile_impl::processor ren(map); mapnik::vector_tile_impl::tile out_tile = ren.create_tile(0,0,0); // serialize to message std::string buffer; out_tile.serialize_to_string(buffer); CHECK(out_tile.is_painted() == true); CHECK(out_tile.is_empty() == false); CHECK(147 == buffer.size()); // create a new vector tile from the buffer vector_tile::Tile tile2; CHECK(tile2.ParseFromString(buffer)); // Validate the new tile. CHECK(1 == tile2.layers_size()); vector_tile::Tile_Layer const& layer2 = tile2.layers(0); CHECK(std::string("layer") == layer2.name()); CHECK(1 == layer2.features_size()); // Create another map mapnik::Map map2(256, 256, "+init=epsg:3857"); mapnik::layer lyr2("layer",map.srs()); // Create datasource from tile. protozero::pbf_reader layer_reader; out_tile.layer_reader(0, layer_reader); std::shared_ptr ds = std::make_shared< mapnik::vector_tile_impl::tile_datasource_pbf>( layer_reader,0,0,0); CHECK( ds->type() == mapnik::datasource::Vector ); CHECK( ds->get_geometry_type() == mapnik::datasource_geometry_t::Collection ); // Check that all the names are in the list mapnik::layer_descriptor lay_desc = ds->get_descriptor(); std::set expected_names; expected_names.insert("bool"); expected_names.insert("boolf"); expected_names.insert("double"); expected_names.insert("float"); expected_names.insert("int"); expected_names.insert("name"); expected_names.insert("uint"); std::size_t desc_count = 0; for (auto const& desc : lay_desc.get_descriptors()) { ++desc_count; CHECK(expected_names.count(desc.get_name()) == 1); } CHECK(desc_count == expected_names.size()); // Add datasource to layer and map lyr2.set_datasource(ds); lyr2.add_style("style"); map2.add_layer(lyr2); // Load map style mapnik::load_map(map2,"test/data/style.xml"); map2.zoom_all(); mapnik::image_rgba8 im(map2.width(),map2.height()); mapnik::agg_renderer ren2(map2,im); ren2.apply(); if (!mapnik::util::exists("test/fixtures/expected-1.png")) { mapnik::save_to_file(im,"test/fixtures/expected-1.png","png32"); } unsigned diff = testing::compare_images(im,"test/fixtures/expected-1.png"); CHECK(0 == diff); if (diff > 0) { mapnik::save_to_file(im,"test/fixtures/actual-1.png","png32"); } } TEST_CASE("vector tile datasource -- should filter features outside extent") { mapnik::Map map(256,256,"+init=epsg:3857"); mapnik::layer lyr("layer",map.srs()); lyr.set_datasource(testing::build_ds(0,0)); map.add_layer(lyr); mapnik::vector_tile_impl::processor ren(map); mapnik::vector_tile_impl::tile out_tile = ren.create_tile(0,0,0); // serialize to message std::string buffer; out_tile.serialize_to_string(buffer); CHECK(out_tile.is_painted() == true); CHECK(out_tile.is_empty() == false); // check that vector tile contains proper information vector_tile::Tile tile; tile.ParseFromString(out_tile.get_buffer()); REQUIRE(1 == tile.layers_size()); vector_tile::Tile_Layer const& layer = tile.layers(0); CHECK(std::string("layer") == layer.name()); REQUIRE(1 == layer.features_size()); vector_tile::Tile_Feature const& f = layer.features(0); CHECK(static_cast(1) == static_cast(f.id())); CHECK(3 == f.geometry_size()); CHECK(9 == f.geometry(0)); CHECK(4096 == f.geometry(1)); CHECK(4096 == f.geometry(2)); // now actually start the meat of the test // create a datasource from the vector tile protozero::pbf_reader layer_reader; out_tile.layer_reader(0, layer_reader); mapnik::vector_tile_impl::tile_datasource_pbf ds(layer_reader,0,0,0); // ensure we can query single feature mapnik::box2d bbox(-20037508.342789,-20037508.342789,20037508.342789,20037508.342789); mapnik::featureset_ptr fs; fs = ds.features(mapnik::query(bbox)); mapnik::feature_ptr feat = fs->next(); // Check that feature is not empty. REQUIRE(feat != mapnik::feature_ptr()); CHECK(feat->size() == 0); // Check that this was the only feature so next should be empty CHECK(fs->next() == mapnik::feature_ptr()); // Now query for another feature. mapnik::query qq = mapnik::query(mapnik::box2d(-1,-1,1,1)); qq.add_property_name("name"); fs = ds.features(qq); feat = fs->next(); // Check that feature is not empty CHECK(feat != mapnik::feature_ptr()); CHECK(feat->size() == 1); CHECK(feat->get("name") == mapnik::value_unicode_string("null island")); CHECK(fs->next() == mapnik::feature_ptr()); // now check that datasource api throws out feature which is outside extent fs = ds.features(mapnik::query(mapnik::box2d(-10,-10,-10,-10))); CHECK(fs->next() == mapnik::feature_ptr()); // ensure same behavior for feature_at_point fs = ds.features_at_point(mapnik::coord2d(0.0,0.0),0.0001); CHECK(fs->next() != mapnik::feature_ptr()); fs = ds.features_at_point(mapnik::coord2d(1.0,1.0),1.0001); CHECK(fs->next() != mapnik::feature_ptr()); fs = ds.features_at_point(mapnik::coord2d(-10,-10),0); CHECK(fs->next() == mapnik::feature_ptr()); // finally, make sure attributes are also filtered mapnik::feature_ptr f_ptr; fs = ds.features(mapnik::query(bbox)); f_ptr = fs->next(); CHECK(f_ptr != mapnik::feature_ptr()); // no attributes CHECK(f_ptr->context()->size() == 0); mapnik::query q(bbox); q.add_property_name("name"); fs = ds.features(q); f_ptr = fs->next(); CHECK(f_ptr != mapnik::feature_ptr()); // one attribute CHECK(f_ptr->context()->size() == 1); } mapnik-vector-tile-1.6.1/test/system/remove_repeated_point.cpp000066400000000000000000000015001324304754200246170ustar00rootroot00000000000000#include "catch.hpp" // test-utils #include "round_trip.hpp" #include "geom_to_wkt.hpp" #include // mapnik #if MAPNIK_VERSION >= 300100 #include #else #include #endif TEST_CASE("vector tile multi_point encoding with repeated points should be removed") { mapnik::geometry::multi_point geom; geom.emplace_back(0,0); geom.emplace_back(0,0); geom.emplace_back(1,1); geom.emplace_back(1,1); mapnik::geometry::geometry new_geom = test_utils::round_trip(geom); CHECK( !mapnik::geometry::is_empty(new_geom) ); std::string wkt; CHECK( test_utils::to_wkt(wkt, new_geom) ); CHECK( wkt == "MULTIPOINT(128 -128,128.711 -126.578)" ); CHECK( new_geom.is >() ); } mapnik-vector-tile-1.6.1/test/system/round_trip.cpp000066400000000000000000000235661324304754200224450ustar00rootroot00000000000000#include "catch.hpp" // test-utils #include "round_trip.hpp" #include "geom_to_wkt.hpp" // mapnik #include #if MAPNIK_VERSION >= 300100 #include #else #include #endif TEST_CASE("vector tile round trip point encoding") { mapnik::geometry::point geom(0,0); mapnik::geometry::geometry new_geom = test_utils::round_trip(geom); CHECK( !mapnik::geometry::is_empty(new_geom) ); std::string wkt; CHECK( test_utils::to_wkt(wkt, new_geom) ); CHECK( wkt == "POINT(128 -128)" ); CHECK( new_geom.is >() ); } TEST_CASE("vector tile geometry collection encoding") { mapnik::geometry::point geom_p(0,0); mapnik::geometry::geometry_collection geom; geom.push_back(geom_p); mapnik::geometry::geometry new_geom = test_utils::round_trip(geom); CHECK( !mapnik::geometry::is_empty(new_geom) ); std::string wkt; CHECK( test_utils::to_wkt(wkt, new_geom) ); CHECK( wkt == "POINT(128 -128)" ); CHECK( new_geom.is >() ); } TEST_CASE("vector tile geometry collection encoding x2") { mapnik::geometry::point geom_p(0,0); mapnik::geometry::geometry_collection geom_t; geom_t.push_back(geom_p); mapnik::geometry::geometry_collection geom; geom.push_back(std::move(geom_t)); mapnik::geometry::geometry new_geom = test_utils::round_trip(geom); CHECK( !mapnik::geometry::is_empty(new_geom) ); std::string wkt; CHECK( test_utils::to_wkt(wkt, new_geom) ); CHECK( wkt == "POINT(128 -128)" ); CHECK( new_geom.is >() ); } TEST_CASE("vector tile multi_point encoding of single point") { mapnik::geometry::multi_point geom; geom.emplace_back(0,0); mapnik::geometry::geometry new_geom = test_utils::round_trip(geom); CHECK( !mapnik::geometry::is_empty(new_geom) ); std::string wkt; CHECK( test_utils::to_wkt(wkt, new_geom) ); CHECK( wkt == "POINT(128 -128)" ); CHECK( new_geom.is >() ); } TEST_CASE("vector tile multi_point encoding of actual multi_point") { mapnik::geometry::multi_point geom; geom.emplace_back(0,0); geom.emplace_back(1,1); mapnik::geometry::geometry new_geom = test_utils::round_trip(geom); CHECK( !mapnik::geometry::is_empty(new_geom) ); std::string wkt; CHECK( test_utils::to_wkt(wkt, new_geom) ); CHECK( wkt == "MULTIPOINT(128 -128,128.711 -126.578)" ); CHECK( new_geom.is >() ); } TEST_CASE("vector tile line_string encoding") { mapnik::geometry::line_string geom; geom.add_coord(0,0); geom.add_coord(100,100); mapnik::geometry::geometry new_geom = test_utils::round_trip(geom); std::string wkt; CHECK( test_utils::to_wkt(wkt, new_geom) ); CHECK( wkt == "LINESTRING(128 -128,192 0)" ); CHECK( !mapnik::geometry::is_empty(new_geom) ); CHECK( new_geom.is >() ); } TEST_CASE("vector tile multi_line_string encoding of single line_string") { mapnik::geometry::multi_line_string geom; mapnik::geometry::line_string line; line.add_coord(0,0); line.add_coord(100,100); geom.emplace_back(std::move(line)); mapnik::geometry::geometry new_geom = test_utils::round_trip(geom); std::string wkt; CHECK( test_utils::to_wkt(wkt, new_geom) ); CHECK( wkt == "LINESTRING(128 -128,192 0)" ); CHECK( !mapnik::geometry::is_empty(new_geom) ); CHECK( new_geom.is >() ); } TEST_CASE("vector tile multi_line_string encoding of actual multi_line_string") { mapnik::geometry::multi_line_string geom; mapnik::geometry::line_string line; line.add_coord(0,0); line.add_coord(100,100); geom.emplace_back(std::move(line)); mapnik::geometry::line_string line2; line2.add_coord(-10,-0); line2.add_coord(-100,-100); geom.emplace_back(std::move(line2)); mapnik::geometry::geometry new_geom = test_utils::round_trip(geom); std::string wkt; CHECK( test_utils::to_wkt(wkt, new_geom) ); CHECK( wkt == "MULTILINESTRING((128 -128,192 0),(120.889 -128,63.289 -256))" ); CHECK( !mapnik::geometry::is_empty(new_geom) ); CHECK( new_geom.is >() ); } TEST_CASE("vector tile polygon encoding") { mapnik::geometry::polygon geom; geom.exterior_ring.add_coord(0,0); geom.exterior_ring.add_coord(0,10); geom.exterior_ring.add_coord(-10,10); geom.exterior_ring.add_coord(-10,0); geom.exterior_ring.add_coord(0,0); mapnik::geometry::geometry new_geom = test_utils::round_trip(geom); CHECK( !mapnik::geometry::is_empty(new_geom) ); CHECK( new_geom.is >() ); std::string wkt; CHECK( test_utils::to_wkt(wkt, new_geom) ); CHECK( wkt == "POLYGON((128 -113.778,120.889 -113.778,120.889 -128,128 -128,128 -113.778))"); } TEST_CASE("vector tile multi_polygon encoding of single polygon") { mapnik::geometry::polygon poly; poly.exterior_ring.add_coord(0,0); poly.exterior_ring.add_coord(0,10); poly.exterior_ring.add_coord(-10,10); poly.exterior_ring.add_coord(-10,0); poly.exterior_ring.add_coord(0,0); mapnik::geometry::multi_polygon geom; geom.emplace_back(std::move(poly)); mapnik::geometry::geometry new_geom = test_utils::round_trip(geom); std::string wkt; CHECK( test_utils::to_wkt(wkt, new_geom) ); CHECK( wkt == "POLYGON((128 -113.778,120.889 -113.778,120.889 -128,128 -128,128 -113.778))"); CHECK( !mapnik::geometry::is_empty(new_geom) ); CHECK( new_geom.is >() ); } TEST_CASE("vector tile multi_polygon with multipolygon union") { mapnik::geometry::polygon poly; poly.exterior_ring.add_coord(0,0); poly.exterior_ring.add_coord(0,10); poly.exterior_ring.add_coord(-10,10); poly.exterior_ring.add_coord(-10,0); poly.exterior_ring.add_coord(0,0); mapnik::geometry::polygon poly2; poly2.exterior_ring.add_coord(0,0); poly2.exterior_ring.add_coord(0,10); poly2.exterior_ring.add_coord(-10,10); poly2.exterior_ring.add_coord(-10,0); poly2.exterior_ring.add_coord(0,0); mapnik::geometry::multi_polygon geom; geom.emplace_back(std::move(poly)); geom.emplace_back(std::move(poly2)); mapnik::geometry::geometry new_geom = test_utils::round_trip(geom, 0, mapnik::vector_tile_impl::non_zero_fill, true); std::string wkt; CHECK( test_utils::to_wkt(wkt, new_geom) ); CHECK( wkt == "POLYGON((128 -113.778,120.889 -113.778,120.889 -128,128 -128,128 -113.778))"); CHECK( !mapnik::geometry::is_empty(new_geom) ); CHECK( new_geom.is >() ); } TEST_CASE("vector tile multi_polygon with out multipolygon union") { mapnik::geometry::polygon poly; poly.exterior_ring.add_coord(0,0); poly.exterior_ring.add_coord(0,10); poly.exterior_ring.add_coord(-10,10); poly.exterior_ring.add_coord(-10,0); poly.exterior_ring.add_coord(0,0); mapnik::geometry::polygon poly2; poly2.exterior_ring.add_coord(0,0); poly2.exterior_ring.add_coord(0,10); poly2.exterior_ring.add_coord(-10,10); poly2.exterior_ring.add_coord(-10,0); poly2.exterior_ring.add_coord(0,0); mapnik::geometry::multi_polygon geom; geom.emplace_back(std::move(poly)); geom.emplace_back(std::move(poly2)); mapnik::geometry::geometry new_geom = test_utils::round_trip(geom, 0, mapnik::vector_tile_impl::non_zero_fill, false); std::string wkt; CHECK( test_utils::to_wkt(wkt, new_geom) ); CHECK( wkt == "MULTIPOLYGON(((128 -113.778,120.889 -113.778,120.889 -128,128 -128,128 -113.778)),((128 -113.778,120.889 -113.778,120.889 -128,128 -128,128 -113.778)))"); CHECK( !mapnik::geometry::is_empty(new_geom) ); CHECK( new_geom.is >() ); } TEST_CASE("vector tile multi_polygon encoding of actual multi_polygon") { mapnik::geometry::multi_polygon geom; mapnik::geometry::polygon poly; poly.exterior_ring.add_coord(0,0); poly.exterior_ring.add_coord(0,10); poly.exterior_ring.add_coord(-10,10); poly.exterior_ring.add_coord(-10,0); poly.exterior_ring.add_coord(0,0); geom.emplace_back(std::move(poly)); mapnik::geometry::polygon poly2; poly2.exterior_ring.add_coord(11,11); poly2.exterior_ring.add_coord(11,21); poly2.exterior_ring.add_coord(1,21); poly2.exterior_ring.add_coord(1,11); poly2.exterior_ring.add_coord(11,11); geom.emplace_back(std::move(poly2)); mapnik::geometry::geometry new_geom = test_utils::round_trip(geom); CHECK( !mapnik::geometry::is_empty(new_geom) ); CHECK( new_geom.is >() ); } TEST_CASE("vector tile multi_polygon encoding overlapping multipolygons") { mapnik::geometry::multi_polygon geom; mapnik::geometry::polygon poly; poly.exterior_ring.add_coord(0,0); poly.exterior_ring.add_coord(0,10); poly.exterior_ring.add_coord(-10,10); poly.exterior_ring.add_coord(-10,0); poly.exterior_ring.add_coord(0,0); geom.emplace_back(std::move(poly)); mapnik::geometry::polygon poly2; poly2.exterior_ring.add_coord(-5,5); poly2.exterior_ring.add_coord(-5,15); poly2.exterior_ring.add_coord(-15,15); poly2.exterior_ring.add_coord(-15,5); poly2.exterior_ring.add_coord(-5,5); geom.emplace_back(std::move(poly2)); mapnik::geometry::geometry new_geom = test_utils::round_trip(geom); CHECK( !mapnik::geometry::is_empty(new_geom) ); CHECK( new_geom.is >() ); } mapnik-vector-tile-1.6.1/test/system/round_trip_fill_type.cpp000066400000000000000000000045551324304754200245110ustar00rootroot00000000000000#include "catch.hpp" // test-utils #include "round_trip.hpp" #include "geom_to_wkt.hpp" // mapnik #include #if MAPNIK_VERSION >= 300100 #include #else #include #endif TEST_CASE("vector tile polygon even odd fill") { using namespace mapnik::geometry; polygon poly; { linear_ring ring; ring.add_coord(0,0); ring.add_coord(-10,0); ring.add_coord(-10,10); ring.add_coord(0,10); ring.add_coord(0,0); poly.set_exterior_ring(std::move(ring)); linear_ring hole; hole.add_coord(-7,7); hole.add_coord(-7,3); hole.add_coord(-3,3); hole.add_coord(-3,7); hole.add_coord(-7,7); poly.add_hole(std::move(hole)); } mapnik::geometry::geometry new_geom = test_utils::round_trip(poly,0,mapnik::vector_tile_impl::even_odd_fill); std::string wkt; CHECK( test_utils::to_wkt(wkt, new_geom) ); CHECK( wkt == "POLYGON((128 -113.778,120.889 -113.778,120.889 -128,128 -128,128 -113.778),(123.022 -123.733,123.022 -118.044,125.867 -118.044,125.867 -123.733,123.022 -123.733))"); CHECK( !mapnik::geometry::is_empty(new_geom) ); REQUIRE( new_geom.is >() ); } TEST_CASE("vector tile polygon non zero fill") { using namespace mapnik::geometry; polygon poly; { linear_ring ring; ring.add_coord(0,0); ring.add_coord(-10,0); ring.add_coord(-10,10); ring.add_coord(0,10); ring.add_coord(0,0); poly.set_exterior_ring(std::move(ring)); linear_ring hole; hole.add_coord(-7,7); hole.add_coord(-7,3); hole.add_coord(-3,3); hole.add_coord(-3,7); hole.add_coord(-7,7); poly.add_hole(std::move(hole)); } mapnik::geometry::geometry new_geom = test_utils::round_trip(poly,0,mapnik::vector_tile_impl::non_zero_fill); std::string wkt; CHECK( test_utils::to_wkt(wkt, new_geom) ); CHECK( wkt == "POLYGON((128 -113.778,120.889 -113.778,120.889 -128,128 -128,128 -113.778),(123.022 -123.733,123.022 -118.044,125.867 -118.044,125.867 -123.733,123.022 -123.733))"); CHECK( !mapnik::geometry::is_empty(new_geom) ); REQUIRE( new_geom.is >() ); } mapnik-vector-tile-1.6.1/test/system/round_trip_simplification.cpp000066400000000000000000000130311324304754200255210ustar00rootroot00000000000000#include "catch.hpp" // test-utils #include "round_trip.hpp" #include "geom_to_wkt.hpp" // mapnik #include #if MAPNIK_VERSION >= 300100 #include #else #include #endif TEST_CASE("vector tile point correctly passed through simplification code path") { mapnik::geometry::point geom(-122,48); mapnik::geometry::geometry new_geom = test_utils::round_trip(geom,500); std::string wkt; CHECK( test_utils::to_wkt(wkt, new_geom) ); CHECK( wkt == "POINT(41.244 -59.733)" ); CHECK( !mapnik::geometry::is_empty(new_geom) ); CHECK( new_geom.is >() ); } TEST_CASE("vector tile mulit_point correctly passed through simplification code path") { mapnik::geometry::multi_point geom; geom.emplace_back(-122,48); geom.emplace_back(-123,49); mapnik::geometry::geometry new_geom = test_utils::round_trip(geom,500); std::string wkt; CHECK( test_utils::to_wkt(wkt, new_geom) ); CHECK( wkt == "MULTIPOINT(41.244 -59.733,40.533 -58.311)" ); CHECK( !mapnik::geometry::is_empty(new_geom) ); CHECK( new_geom.is >() ); } TEST_CASE("vector tile line_string is simplified") { mapnik::geometry::line_string line; line.add_coord(0,0); line.add_coord(1,1); line.add_coord(2,2); line.add_coord(100,100); mapnik::geometry::geometry new_geom = test_utils::round_trip(line,500); std::string wkt; CHECK( test_utils::to_wkt(wkt, new_geom) ); CHECK( wkt == "LINESTRING(128 -128,192 0)" ); CHECK( !mapnik::geometry::is_empty(new_geom) ); CHECK( new_geom.is >() ); auto const& line2 = mapnik::util::get >(new_geom); CHECK( line2.size() == 2 ); } TEST_CASE("vector tile multi_line_string is simplified") { mapnik::geometry::multi_line_string geom; mapnik::geometry::line_string line; line.add_coord(0,0); line.add_coord(1,1); line.add_coord(2,2); line.add_coord(100,100); geom.emplace_back(std::move(line)); mapnik::geometry::geometry new_geom = test_utils::round_trip(geom,500); std::string wkt; CHECK( test_utils::to_wkt(wkt, new_geom) ); CHECK( wkt == "LINESTRING(128 -128,192 0)" ); CHECK( !mapnik::geometry::is_empty(new_geom) ); CHECK( new_geom.is >() ); auto const& line2 = mapnik::util::get >(new_geom); CHECK( line2.size() == 2 ); } TEST_CASE("vector tile polygon is simplified") { using namespace mapnik::geometry; polygon poly; { linear_ring ring; ring.add_coord(0,0); ring.add_coord(-10,0); ring.add_coord(-10,10); ring.add_coord(0,10); ring.add_coord(0,0); poly.set_exterior_ring(std::move(ring)); linear_ring hole; hole.add_coord(-7,7); hole.add_coord(-7,3); hole.add_coord(-3,3); hole.add_coord(-3,7); hole.add_coord(-7,7); poly.add_hole(std::move(hole)); } mapnik::geometry::geometry new_geom = test_utils::round_trip(poly,500); std::string wkt; CHECK( test_utils::to_wkt(wkt, new_geom) ); CHECK( wkt == "POLYGON((128 -113.778,120.889 -113.778,120.889 -128,128 -128,128 -113.778),(123.022 -123.733,123.022 -118.044,125.867 -118.044,125.867 -123.733,123.022 -123.733))"); CHECK( !mapnik::geometry::is_empty(new_geom) ); REQUIRE( new_geom.is >() ); } TEST_CASE("vector tile mulit_polygon is simplified") { using namespace mapnik::geometry; polygon poly; { linear_ring ring; ring.add_coord(0,0); ring.add_coord(-10,0); ring.add_coord(-10,10); ring.add_coord(0,10); ring.add_coord(0,0); poly.set_exterior_ring(std::move(ring)); linear_ring hole; hole.add_coord(-7,7); hole.add_coord(-7,3); hole.add_coord(-3,3); hole.add_coord(-3,7); hole.add_coord(-7,7); poly.add_hole(std::move(hole)); } multi_polygon mp; mp.push_back(poly); mapnik::geometry::geometry new_geom = test_utils::round_trip(mp,500); std::string wkt; CHECK( test_utils::to_wkt(wkt, new_geom) ); CHECK( wkt == "POLYGON((128 -113.778,120.889 -113.778,120.889 -128,128 -128,128 -113.778),(123.022 -123.733,123.022 -118.044,125.867 -118.044,125.867 -123.733,123.022 -123.733))"); CHECK( !mapnik::geometry::is_empty(new_geom) ); REQUIRE( new_geom.is >() ); } TEST_CASE("vector tile line_string is simplified when outside bounds", "should create vector tile with data" ) { mapnik::geometry::multi_line_string geom; mapnik::geometry::line_string line; line.add_coord(-10000,0); line.add_coord(-10000.1,0); line.add_coord(100000,0); geom.emplace_back(std::move(line)); mapnik::geometry::geometry new_geom = test_utils::round_trip(geom,100); std::string wkt; CHECK( test_utils::to_wkt(wkt, new_geom) ); // yep this test is weird - more of a fuzz than anything CHECK( wkt == "LINESTRING(0 -128,256 -128)" ); CHECK( !mapnik::geometry::is_empty(new_geom) ); CHECK( new_geom.is >() ); auto const& line2 = mapnik::util::get >(new_geom); CHECK( line2.size() == 2 ); } mapnik-vector-tile-1.6.1/test/test_main.cpp000066400000000000000000000012301324304754200206770ustar00rootroot00000000000000// https://github.com/philsquared/Catch/blob/master/docs/own-main.md #define CATCH_CONFIG_RUNNER #include "catch.hpp" #include #include int main (int argc, char* const argv[]) { try { GOOGLE_PROTOBUF_VERIFY_VERSION; } catch (std::exception const& ex) { std::clog << ex.what() << "\n"; return -1; } mapnik::datasource_cache::instance().register_datasources(MAPNIK_PLUGINDIR); int result = Catch::Session().run( argc, argv ); if (!result) printf("\x1b[1;32m ✓ \x1b[0m\n"); google::protobuf::ShutdownProtobufLibrary(); return result; } mapnik-vector-tile-1.6.1/test/test_utils.cpp000066400000000000000000000113001324304754200211120ustar00rootroot00000000000000#include "test_utils.hpp" // mapnik #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if MAPNIK_VERSION >= 300100 #include #else #include #endif #include #include #include namespace testing { std::shared_ptr build_ds(double x,double y, bool second) { mapnik::parameters params; params["type"] = "memory"; std::shared_ptr ds = std::make_shared(params); mapnik::context_ptr ctx = std::make_shared(); ctx->push("name"); mapnik::feature_ptr feature(mapnik::feature_factory::create(ctx,1)); mapnik::transcoder tr("utf-8"); feature->put("name",tr.transcode("null island")); // NOTE: all types below that are not part of mapnik::value // are likely getting converted, e.g. float -> double feature->put_new("int",static_cast(-73)); feature->put_new("uint",static_cast(37)); feature->put_new("float",static_cast(99.2)); feature->put_new("double",static_cast(83.4)); feature->put_new("bool",true); feature->put_new("boolf",false); feature->set_geometry(mapnik::geometry::point(x,y)); ds->push(feature); if (second) { ctx->push("name2"); mapnik::feature_ptr feature2(mapnik::feature_factory::create(ctx,1)); feature2->put("name",tr.transcode("null island")); feature2->put("name2",tr.transcode("null island 2")); feature2->set_geometry(mapnik::geometry::point(x+1,y+1)); ds->push(feature2); } return ds; } std::shared_ptr build_geojson_ds(std::string const& geojson_file) { mapnik::util::file input(geojson_file); if (!input.is_open()) { throw std::runtime_error("failed to open geojson"); } mapnik::geometry::geometry geom; std::string json_string(input.data().get(), input.size()); if (!mapnik::json::from_geojson(json_string, geom)) { throw std::runtime_error("failed to parse geojson"); } mapnik::geometry::correct(geom); mapnik::parameters params; params["type"] = "memory"; std::shared_ptr ds = std::make_shared(params); mapnik::context_ptr ctx = std::make_shared(); ctx->push("name"); mapnik::feature_ptr feature(mapnik::feature_factory::create(ctx,1)); feature->set_geometry(std::move(geom)); ds->push(feature); return ds; } mapnik::datasource_ptr build_geojson_fs_ds(std::string const& geojson_file) { mapnik::parameters params; params["type"] = "geojson"; params["file"] = geojson_file; params["cache_features"] = "false"; return mapnik::datasource_cache::instance().create(params); } mapnik::geometry::geometry read_geojson(std::string const& geojson_file) { mapnik::util::file input(geojson_file); if (!input.is_open()) { throw std::runtime_error("failed to open geojson"); } mapnik::geometry::geometry geom; std::string json_string(input.data().get(), input.size()); if (!mapnik::json::from_geojson(json_string, geom)) { throw std::runtime_error("failed to parse geojson"); } mapnik::geometry::correct(geom); return geom; } unsigned compare_images(mapnik::image_rgba8 const& src1, std::string const& filepath, int threshold, bool alpha) { boost::optional type = mapnik::type_from_filename(filepath); if (!type) { throw mapnik::image_reader_exception("Failed to detect type of: " + filepath); } std::unique_ptr reader2(mapnik::get_image_reader(filepath,*type)); if (!reader2.get()) { throw mapnik::image_reader_exception("Failed to load: " + filepath); } mapnik::image_any const& image_2 = reader2->read(0,0,reader2->width(),reader2->height()); mapnik::image_rgba8 const& src2 = mapnik::util::get(image_2); return mapnik::compare(src1,src2,threshold,alpha); } } // end ns mapnik-vector-tile-1.6.1/test/test_utils.hpp000066400000000000000000000022501324304754200211230ustar00rootroot00000000000000#ifndef __MAPNIK_VECTOR_TEST_UTILS_H__ #define __MAPNIK_VECTOR_TEST_UTILS_H__ // mapnik #include #include #include #include namespace testing { std::shared_ptr build_ds(double x,double y, bool second=false); mapnik::geometry::geometry read_geojson(std::string const& geojson_file); std::shared_ptr build_geojson_ds(std::string const& geojson_file); mapnik::datasource_ptr build_geojson_fs_ds(std::string const& geojson_file); unsigned compare_images(std::string const& src_fn, std::string const& dest_fn, int threshold=16, bool alpha=true); unsigned compare_images(mapnik::image_rgba8 const& src1, std::string const& filepath, int threshold=16, bool alpha=true); unsigned compare_images(mapnik::image_any const& src1, std::string const& filepath, int threshold=16, bool alpha=true); } #endif // __MAPNIK_VECTOR_TEST_UTILS_H__ mapnik-vector-tile-1.6.1/test/unit/000077500000000000000000000000001324304754200171735ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/test/unit/composite/000077500000000000000000000000001324304754200211755ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/test/unit/composite/vector.cpp000066400000000000000000000002501324304754200232000ustar00rootroot00000000000000#include "catch.hpp" // mapnik vector tile #include "vector_tile_composite.hpp" // // Unit tests for vt compositing // TEST_CASE("composite") { CHECK(true); } mapnik-vector-tile-1.6.1/test/unit/compression/000077500000000000000000000000001324304754200215345ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/test/unit/compression/compression.cpp000066400000000000000000000432331324304754200246060ustar00rootroot00000000000000#include "catch.hpp" // mapnik-vector-tile #include "vector_tile_compression.hpp" TEST_CASE("invalid decompression") { std::string data("this is a string that should be compressed data"); // data is not compressed but we will try to decompress it std::string output; CHECK_THROWS(mapnik::vector_tile_impl::zlib_decompress(data, output)); } TEST_CASE("round trip compression - zlib") { std::string data("this is a sentence that will be compressed into something"); CHECK(!mapnik::vector_tile_impl::is_zlib_compressed(data)); int strategy; SECTION("strategy - invalid compression") { strategy = 99; int level = Z_DEFAULT_COMPRESSION; std::string compressed_data; CHECK_THROWS(mapnik::vector_tile_impl::zlib_compress(data, compressed_data, false, level, strategy)); } SECTION("compression level - invalid") { strategy = Z_DEFAULT_STRATEGY; int level = 99; std::string compressed_data; CHECK_THROWS(mapnik::vector_tile_impl::zlib_compress(data, compressed_data, false, level, strategy)); } SECTION("strategy - default") { strategy = Z_DEFAULT_STRATEGY; SECTION("no compression") { int level = Z_NO_COMPRESSION; std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, false, level, strategy); CHECK(mapnik::vector_tile_impl::is_zlib_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } SECTION("default compression level") { int level = Z_DEFAULT_COMPRESSION; std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, false, level, strategy); CHECK(mapnik::vector_tile_impl::is_zlib_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } SECTION("compression level -- min to max") { for (int level = Z_BEST_SPEED; level <= Z_BEST_COMPRESSION; ++level) { std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, false, level, strategy); CHECK(mapnik::vector_tile_impl::is_zlib_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } } } SECTION("strategy - filtered") { strategy = Z_FILTERED; SECTION("no compression") { int level = Z_NO_COMPRESSION; std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, false, level, strategy); CHECK(mapnik::vector_tile_impl::is_zlib_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } SECTION("default compression level") { int level = Z_DEFAULT_COMPRESSION; std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, false, level, strategy); CHECK(mapnik::vector_tile_impl::is_zlib_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } SECTION("compression level -- min to max") { for (int level = Z_BEST_SPEED; level <= Z_BEST_COMPRESSION; ++level) { std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, false, level, strategy); CHECK(mapnik::vector_tile_impl::is_zlib_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } } } SECTION("strategy - huffman only") { strategy = Z_HUFFMAN_ONLY; SECTION("no compression") { int level = Z_NO_COMPRESSION; std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, false, level, strategy); CHECK(mapnik::vector_tile_impl::is_zlib_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } SECTION("default compression level") { int level = Z_DEFAULT_COMPRESSION; std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, false, level, strategy); CHECK(mapnik::vector_tile_impl::is_zlib_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } SECTION("compression level -- min to max") { for (int level = Z_BEST_SPEED; level <= Z_BEST_COMPRESSION; ++level) { std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, false, level, strategy); CHECK(mapnik::vector_tile_impl::is_zlib_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } } } SECTION("strategy - rle") { strategy = Z_RLE; SECTION("no compression") { int level = Z_NO_COMPRESSION; std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, false, level, strategy); CHECK(mapnik::vector_tile_impl::is_zlib_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } SECTION("default compression level") { int level = Z_DEFAULT_COMPRESSION; std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, false, level, strategy); CHECK(mapnik::vector_tile_impl::is_zlib_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } SECTION("compression level -- min to max") { for (int level = Z_BEST_SPEED; level <= Z_BEST_COMPRESSION; ++level) { std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, false, level, strategy); CHECK(mapnik::vector_tile_impl::is_zlib_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } } } SECTION("strategy - fixed") { strategy = Z_FIXED; SECTION("no compression") { int level = Z_NO_COMPRESSION; std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, false, level, strategy); CHECK(mapnik::vector_tile_impl::is_zlib_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } SECTION("default compression level") { int level = Z_DEFAULT_COMPRESSION; std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, false, level, strategy); CHECK(mapnik::vector_tile_impl::is_zlib_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } SECTION("compression level -- min to max") { for (int level = Z_BEST_SPEED; level <= Z_BEST_COMPRESSION; ++level) { std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, false, level, strategy); CHECK(mapnik::vector_tile_impl::is_zlib_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } } } } TEST_CASE("round trip compression - gzip") { std::string data("this is a sentence that will be compressed into something"); CHECK(!mapnik::vector_tile_impl::is_gzip_compressed(data)); int strategy; SECTION("strategy - invalid compression") { strategy = 99; int level = Z_DEFAULT_COMPRESSION; std::string compressed_data; CHECK_THROWS(mapnik::vector_tile_impl::zlib_compress(data, compressed_data, true, level, strategy)); } SECTION("compression level - invalid") { strategy = Z_DEFAULT_STRATEGY; int level = 99; std::string compressed_data; CHECK_THROWS(mapnik::vector_tile_impl::zlib_compress(data, compressed_data, true, level, strategy)); } SECTION("strategy - default") { strategy = Z_DEFAULT_STRATEGY; SECTION("no compression") { int level = Z_NO_COMPRESSION; std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, true, level, strategy); CHECK(mapnik::vector_tile_impl::is_gzip_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } SECTION("default compression level") { int level = Z_DEFAULT_COMPRESSION; std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, true, level, strategy); CHECK(mapnik::vector_tile_impl::is_gzip_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } SECTION("compression level -- min to max") { for (int level = Z_BEST_SPEED; level <= Z_BEST_COMPRESSION; ++level) { std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, true, level, strategy); CHECK(mapnik::vector_tile_impl::is_gzip_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } } } SECTION("strategy - filtered") { strategy = Z_FILTERED; SECTION("no compression") { int level = Z_NO_COMPRESSION; std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, true, level, strategy); CHECK(mapnik::vector_tile_impl::is_gzip_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } SECTION("default compression level") { int level = Z_DEFAULT_COMPRESSION; std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, true, level, strategy); CHECK(mapnik::vector_tile_impl::is_gzip_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } SECTION("compression level -- min to max") { for (int level = Z_BEST_SPEED; level <= Z_BEST_COMPRESSION; ++level) { std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, true, level, strategy); CHECK(mapnik::vector_tile_impl::is_gzip_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } } } SECTION("strategy - huffman only") { strategy = Z_HUFFMAN_ONLY; SECTION("no compression") { int level = Z_NO_COMPRESSION; std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, true, level, strategy); CHECK(mapnik::vector_tile_impl::is_gzip_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } SECTION("default compression level") { int level = Z_DEFAULT_COMPRESSION; std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, true, level, strategy); CHECK(mapnik::vector_tile_impl::is_gzip_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } SECTION("compression level -- min to max") { for (int level = Z_BEST_SPEED; level <= Z_BEST_COMPRESSION; ++level) { std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, true, level, strategy); CHECK(mapnik::vector_tile_impl::is_gzip_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } } } SECTION("strategy - rle") { strategy = Z_RLE; SECTION("no compression") { int level = Z_NO_COMPRESSION; std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, true, level, strategy); CHECK(mapnik::vector_tile_impl::is_gzip_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } SECTION("default compression level") { int level = Z_DEFAULT_COMPRESSION; std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, true, level, strategy); CHECK(mapnik::vector_tile_impl::is_gzip_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } SECTION("compression level -- min to max") { for (int level = Z_BEST_SPEED; level <= Z_BEST_COMPRESSION; ++level) { std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, true, level, strategy); CHECK(mapnik::vector_tile_impl::is_gzip_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } } } SECTION("strategy - fixed") { strategy = Z_FIXED; SECTION("no compression") { int level = Z_NO_COMPRESSION; std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, true, level, strategy); CHECK(mapnik::vector_tile_impl::is_gzip_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } SECTION("default compression level") { int level = Z_DEFAULT_COMPRESSION; std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, true, level, strategy); CHECK(mapnik::vector_tile_impl::is_gzip_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } SECTION("compression level -- min to max") { for (int level = Z_BEST_SPEED; level <= Z_BEST_COMPRESSION; ++level) { std::string compressed_data; mapnik::vector_tile_impl::zlib_compress(data, compressed_data, true, level, strategy); CHECK(mapnik::vector_tile_impl::is_gzip_compressed(compressed_data)); std::string new_data; mapnik::vector_tile_impl::zlib_decompress(compressed_data, new_data); CHECK(data == new_data); } } } } mapnik-vector-tile-1.6.1/test/unit/datasource-pbf/000077500000000000000000000000001324304754200220725ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/test/unit/datasource-pbf/from_layer.cpp000066400000000000000000000217121324304754200247400ustar00rootroot00000000000000#include "catch.hpp" // mapnik vector tile #include "vector_tile_datasource_pbf.hpp" #include "vector_tile_projection.hpp" // mapnik #include // libprotobuf #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wsign-conversion" #include "vector_tile.pb.h" #pragma GCC diagnostic pop // Boost #include TEST_CASE( "cannot create datasource from layer pbf without name" ) { std::string buffer; vector_tile::Tile_Layer layer; SECTION("VT Spec v1") { layer.set_version(1); layer.SerializePartialToString(&buffer); protozero::pbf_reader pbf_layer(buffer); try { mapnik::vector_tile_impl::tile_datasource_pbf ds(pbf_layer,0,0,0); FAIL( "expected exception" ); } catch(std::exception const& ex) { CHECK(std::string(ex.what()) == "The required name field is missing in a vector tile layer."); } } SECTION("VT Spec v2") { layer.set_version(2); layer.SerializePartialToString(&buffer); protozero::pbf_reader pbf_layer(buffer); try { mapnik::vector_tile_impl::tile_datasource_pbf ds(pbf_layer,0,0,0); FAIL( "expected exception" ); } catch(std::exception const& ex) { CHECK(std::string(ex.what()) == "The required name field is missing in a vector tile layer. Tile does not comply with Version 2 of the Mapbox Vector Tile Specification."); } } } TEST_CASE( "can create datasource from layer pbf with name but without extent" ) { std::string buffer; vector_tile::Tile_Layer layer; layer.set_name("test_name"); SECTION("VT Spec v1") { layer.set_version(1); layer.SerializePartialToString(&buffer); protozero::pbf_reader pbf_layer(buffer); mapnik::vector_tile_impl::tile_datasource_pbf ds(pbf_layer,0,0,0); CHECK(ds.get_name() == "test_name"); } SECTION("VT Spec v2") { layer.set_version(2); layer.SerializePartialToString(&buffer); protozero::pbf_reader pbf_layer(buffer); try { mapnik::vector_tile_impl::tile_datasource_pbf ds(pbf_layer,0,0,0); FAIL( "expected exception" ); } catch(std::exception const& ex) { CHECK(std::string(ex.what()) == "The required extent field is missing in the layer test_name. Tile does not comply with Version 2 of the Mapbox Vector Tile Specification."); } } } TEST_CASE( "can create datasource from layer pbf with name and extent" ) { std::string buffer; vector_tile::Tile_Layer layer; layer.set_name("test_name"); layer.set_extent(4096); SECTION("VT Spec v1") { layer.set_version(1); layer.SerializePartialToString(&buffer); protozero::pbf_reader pbf_layer(buffer); mapnik::vector_tile_impl::tile_datasource_pbf ds(pbf_layer,0,0,0); CHECK(ds.get_name() == "test_name"); } SECTION("VT Spec v2") { layer.set_version(2); layer.SerializePartialToString(&buffer); protozero::pbf_reader pbf_layer(buffer); mapnik::vector_tile_impl::tile_datasource_pbf ds(pbf_layer,0,0,0); CHECK(ds.get_name() == "test_name"); } } TEST_CASE( "extent of a tile effects the scale of features" ) { std::string buffer; vector_tile::Tile_Layer layer; layer.set_name("test_name"); // Add feature to layer vector_tile::Tile_Feature * new_feature = layer.add_features(); new_feature->set_type(vector_tile::Tile_GeomType_POINT); // MoveTo(5,5) new_feature->add_geometry(9); // move_to | (1 << 3) new_feature->add_geometry(protozero::encode_zigzag32(5)); new_feature->add_geometry(protozero::encode_zigzag32(5)); SECTION("default for v1 is 4096") { layer.set_version(1); layer.SerializePartialToString(&buffer); protozero::pbf_reader pbf_layer(buffer); mapnik::vector_tile_impl::tile_datasource_pbf ds(pbf_layer,0,0,0); mapnik::query q(ds.get_tile_extent()); mapnik::featureset_ptr featureset = ds.features(q); REQUIRE(featureset); mapnik::feature_ptr feature = featureset->next(); REQUIRE(feature); std::string wkt0; mapnik::util::to_wkt(wkt0, feature->get_geometry()); CHECK(wkt0 == "POINT(-19988588.6446867 19988588.6446867)"); } SECTION("geometry coordinates change if layer has different extent") { layer.set_extent(2048); layer.SerializePartialToString(&buffer); protozero::pbf_reader pbf_layer(buffer); mapnik::vector_tile_impl::tile_datasource_pbf ds(pbf_layer,0,0,0); mapnik::query q(ds.get_tile_extent()); mapnik::featureset_ptr featureset = ds.features(q); REQUIRE(featureset); mapnik::feature_ptr feature = featureset->next(); REQUIRE(feature); std::string wkt0; mapnik::util::to_wkt(wkt0, feature->get_geometry()); CHECK(wkt0 == "POINT(-19939668.9465842 19939668.9465842)"); } } TEST_CASE( "datasource of empty layer pbf returns a null featureset pointer" ) { // From the spec: A layer SHOULD contain at least one feature. // Unknown behavior when that is not the case. Current behavior is to // return a null featureset. std::string buffer; vector_tile::Tile_Layer layer; layer.set_name("test_name"); layer.set_extent(4096); SECTION("VT Spec v1") { layer.set_version(1); layer.SerializePartialToString(&buffer); protozero::pbf_reader pbf_layer(buffer); mapnik::vector_tile_impl::tile_datasource_pbf ds(pbf_layer,0,0,0); mapnik::query q(ds.get_tile_extent()); mapnik::featureset_ptr featureset = ds.features(q); CHECK(!featureset); } SECTION("VT Spec v2") { layer.set_version(2); layer.SerializePartialToString(&buffer); protozero::pbf_reader pbf_layer(buffer); mapnik::vector_tile_impl::tile_datasource_pbf ds(pbf_layer,0,0,0); mapnik::query q(ds.get_tile_extent()); mapnik::featureset_ptr featureset = ds.features(q); CHECK(!featureset); } } TEST_CASE( "datasource of pbf with unkown version returns a null featureset pointer" ) { // From spec: // When a Vector Tile consumer encounters a Vector Tile layer with an unknown // version, it MAY make a best-effort attempt to interpret the layer, or it MAY // skip the layer. In either case it SHOULD continue to process subsequent layers // in the Vector Tile. std::string buffer; vector_tile::Tile_Layer layer; layer.set_name("test_name"); layer.set_extent(4096); layer.set_version(3); layer.SerializePartialToString(&buffer); protozero::pbf_reader pbf_layer(buffer); mapnik::vector_tile_impl::tile_datasource_pbf ds(pbf_layer,0,0,0); mapnik::query q(ds.get_tile_extent()); mapnik::featureset_ptr featureset = ds.features(q); CHECK(!featureset); } TEST_CASE( "datasource of empty layer pbf returns a null featureset pointer for features_at_point query" ) { // From the spec: A layer SHOULD contain at least one feature. // Unknown behavior when that is not the case. Current behavior is to // return a null featureset. std::string buffer; vector_tile::Tile_Layer layer; layer.set_name("test_name"); layer.set_extent(4096); SECTION("VT Spec v1") { layer.set_version(1); layer.SerializePartialToString(&buffer); protozero::pbf_reader pbf_layer(buffer); mapnik::vector_tile_impl::tile_datasource_pbf ds(pbf_layer,0,0,0); mapnik::featureset_ptr featureset = ds.features_at_point(mapnik::coord2d(0.0,0.0),0.0001); CHECK(!featureset); } SECTION("VT Spec v2") { layer.set_version(2); layer.SerializePartialToString(&buffer); protozero::pbf_reader pbf_layer(buffer); mapnik::vector_tile_impl::tile_datasource_pbf ds(pbf_layer,0,0,0); mapnik::featureset_ptr featureset = ds.features_at_point(mapnik::coord2d(0.0,0.0),0.0001); CHECK(!featureset); } } TEST_CASE( "datasource of pbf with unknown version returns a null featureset pointer" ) { // From spec: // When a Vector Tile consumer encounters a Vector Tile layer with an unknown // version, it MAY make a best-effort attempt to interpret the layer, or it MAY // skip the layer. In either case it SHOULD continue to process subsequent layers // in the Vector Tile. std::string buffer; vector_tile::Tile_Layer layer; layer.set_name("test_name"); layer.set_extent(4096); layer.set_version(3); layer.SerializePartialToString(&buffer); protozero::pbf_reader pbf_layer(buffer); mapnik::vector_tile_impl::tile_datasource_pbf ds(pbf_layer,0,0,0); mapnik::featureset_ptr featureset = ds.features_at_point(mapnik::coord2d(0.0,0.0),0.0001); CHECK(!featureset); } mapnik-vector-tile-1.6.1/test/unit/decoding/000077500000000000000000000000001324304754200207475ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/test/unit/decoding/linestring.cpp000066400000000000000000000541471324304754200236440ustar00rootroot00000000000000#include "catch.hpp" // mapnik vector tile #include "vector_tile_geometry_decoder.hpp" // test utils #include "decoding_util.hpp" #include "geom_to_wkt.hpp" // mapnik #include // libprotobuf #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wsign-conversion" #include "vector_tile.pb.h" #pragma GCC diagnostic pop // // Unit tests for geometry decoding of linestrings // TEST_CASE("decode simple linestring") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_LINESTRING); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(2,2) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(10,10) feature.add_geometry(protozero::encode_zigzag32(8)); feature.add_geometry(protozero::encode_zigzag32(8)); // LineTo(0,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "LINESTRING(1 1,2 2,10 10,0 10)"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "LINESTRING(1 1,2 2,10 10,0 10)"); CHECK( geom.is >() ); } } TEST_CASE("decode degenerate line_string only moveto") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_LINESTRING); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); CHECK( geom.is() ); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode degenerate line_string lineto(0,0)") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_LINESTRING); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(1,1) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); CHECK( geom.is() ); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode line_string with first lineto command having delta zero") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_LINESTRING); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(1,1),LineTo(2,2) feature.add_geometry((2 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "LINESTRING(1 1,2 2)"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "LINESTRING(1 1,2 2)"); CHECK( geom.is >() ); } } TEST_CASE("decode line_string with second lineto command having delta zero") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_LINESTRING); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(2,2),LineTo(2,2) feature.add_geometry((2 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "LINESTRING(1 1,2 2)"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "LINESTRING(1 1,2 2)"); CHECK( geom.is >() ); } } TEST_CASE("decode line_string with third lineto command having delta zero") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_LINESTRING); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(2,2),LineTo(3,3),LineTo(3,3) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "LINESTRING(1 1,2 2,3 3)"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "LINESTRING(1 1,2 2,3 3)"); CHECK( geom.is >() ); } } TEST_CASE("decode degenerate linestring with close command at end") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_LINESTRING); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(2,2) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // Close Path feature.add_geometry(15); // close_path std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_LINESTRING, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_LINESTRING, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode degenerate linestring with close command first") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_LINESTRING); // Close Path feature.add_geometry(15); // close_path // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(2,2) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_LINESTRING, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_LINESTRING, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode degenerate linestring with moveto command count greater then 1") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_LINESTRING); // MoveTo(1,1) feature.add_geometry((2 << 3u) | 1u); // command count 2 feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // MoveTo(2,2) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(3,3) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_LINESTRING, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_LINESTRING, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode degenerate linestring with moveto command count of zero") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_LINESTRING); // MoveTo(1,1) feature.add_geometry((0 << 3u) | 1u); // command count 0 feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(3,3) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_LINESTRING, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_LINESTRING, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode degenerate linestring with lineto command count of zero") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_LINESTRING); // MoveTo(1,1) feature.add_geometry((1 << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo command count 0 feature.add_geometry((0 << 3u) | 2u); // LineTo(2,2) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_LINESTRING, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_LINESTRING, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode degenerate linestring that starts with unknown command") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_LINESTRING); feature.add_geometry((1 << 3u) | 5u); // invalid command // MoveTo(1,1) feature.add_geometry((1 << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(2,2) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_LINESTRING, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_LINESTRING, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode degenerate linestring that ends with unknown command") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_LINESTRING); // MoveTo(1,1) feature.add_geometry((1 << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(2,2) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry((1 << 3u) | 5u); // invalid command std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_LINESTRING, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_LINESTRING, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode degenerate linestring that begins with lineto") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_LINESTRING); // LineTo(1,1) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // MoveTo(2,2) feature.add_geometry((1 << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(3,3) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_LINESTRING, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_LINESTRING, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode degenerate linestring that begins with lineto delta zero") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_LINESTRING); // LineTo(0,0) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // MoveTo(1,1) feature.add_geometry((1 << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(2,2) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_LINESTRING, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_LINESTRING, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode degenerate linestring that begins with close") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_LINESTRING); // Close feature.add_geometry(15); // MoveTo(1,1) feature.add_geometry((1 << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(2,2) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_LINESTRING, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_LINESTRING, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode linestring that begins with two moveto commands") { // This should work with v1 but throw with v2 vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_LINESTRING); // MoveTo(1,1) feature.add_geometry((1 << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // MoveTo(2,2) feature.add_geometry((1 << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(3,3) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "LINESTRING(2 2,3 3)"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_LINESTRING, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode malicious linestring") { // This should work with v1 but throw with v2 vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_LINESTRING); // MoveTo(1,1) feature.add_geometry((1 << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(2,2) feature.add_geometry((((1 << 29) - 1u) << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_LINESTRING, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_LINESTRING, 2, 0.0, 0.0, 1.0, 1.0)); } } mapnik-vector-tile-1.6.1/test/unit/decoding/point.cpp000066400000000000000000000341101324304754200226030ustar00rootroot00000000000000#include "catch.hpp" // mapnik vector tile #include "vector_tile_geometry_decoder.hpp" // test utils #include "decoding_util.hpp" #include "geom_to_wkt.hpp" // mapnik #include // libprotobuf #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wsign-conversion" #include "vector_tile.pb.h" #pragma GCC diagnostic pop // std #include // // Unit tests for geometry decoding of points // TEST_CASE("decode simple point") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POINT); // MoveTo(5,5) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(5)); feature.add_geometry(protozero::encode_zigzag32(5)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POINT(5 5)"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POINT(5 5)"); CHECK( geom.is >() ); } } TEST_CASE("decode simple negative point") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POINT); // MoveTo(-5,-5) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(-5)); feature.add_geometry(protozero::encode_zigzag32(-5)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POINT(-5 -5)"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POINT(-5 -5)"); CHECK( geom.is >() ); } } TEST_CASE("point with delta of max int32") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POINT); feature.add_geometry(9); // move_to | (1 << 3) std::int64_t max_32t = std::numeric_limits::max(); feature.add_geometry(protozero::encode_zigzag32(max_32t)); feature.add_geometry(protozero::encode_zigzag32(max_32t)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POINT(2147483647 2147483647)"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POINT(2147483647 2147483647)"); CHECK( geom.is >() ); } } TEST_CASE("point with delta of min int32") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POINT); feature.add_geometry(9); // move_to | (1 << 3) std::int64_t min_32t = std::numeric_limits::min(); feature.add_geometry(protozero::encode_zigzag32(min_32t)); feature.add_geometry(protozero::encode_zigzag32(min_32t)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POINT(-2147483648 -2147483648)"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POINT(-2147483648 -2147483648)"); CHECK( geom.is >() ); } } TEST_CASE("point with delta of min int32 + 1") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POINT); feature.add_geometry(9); // move_to | (1 << 3) std::int64_t min_32t = std::numeric_limits::min() + 1; feature.add_geometry(protozero::encode_zigzag32(min_32t)); feature.add_geometry(protozero::encode_zigzag32(min_32t)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POINT(-2147483647 -2147483647)"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POINT(-2147483647 -2147483647)"); CHECK( geom.is >() ); } } TEST_CASE("degenerate point with close command") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POINT); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // Close Path feature.add_geometry(15); // close_path std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POINT, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POINT, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("degenerate point with lineto command") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POINT); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(1,1) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POINT, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POINT, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("degenerate point with moveto with out enough parameters") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POINT); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POINT, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POINT, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("degenerate point with moveto with out enough parameters - case 2") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POINT); // MoveTo(1,1) feature.add_geometry((2 << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POINT, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POINT, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("degenerate point with moveto with command count of zero") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POINT); // MoveTo(1,1) feature.add_geometry((0 << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POINT, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POINT, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("degenerate point with invalid command") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POINT); // MoveTo(1,1) feature.add_geometry((1 << 3u) | 5u); // 5 isn't valid feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POINT, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POINT, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("multipoint with three movetos with command count 1") { // While this is not the proper way to encode two movetwos we want to make sure // that it still works properly in the decoder. vector_tile::Tile_Feature feature; //feature.set_type(vector_tile::Tile_GeomType_POINT); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // MoveTo(2,2) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // MoveTo(3,3) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POINT, 2, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "MULTIPOINT(1 1,2 2,3 3)"); CHECK( geom.is >() ); } SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POINT, 1, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "MULTIPOINT(1 1,2 2,3 3)"); CHECK( geom.is >() ); } } TEST_CASE("decode malicious point") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POINT); // MoveTo(1,1) feature.add_geometry((((1 << 29) - 1u) << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POINT, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POINT, 2, 0.0, 0.0, 1.0, 1.0)); } } mapnik-vector-tile-1.6.1/test/unit/decoding/polygon.cpp000066400000000000000000001771031324304754200231530ustar00rootroot00000000000000#include "catch.hpp" // mapnik vector tile #include "vector_tile_geometry_decoder.hpp" // test utils #include "decoding_util.hpp" #include "geom_to_wkt.hpp" // mapnik #include // libprotobuf #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wsign-conversion" #include "vector_tile.pb.h" #pragma GCC diagnostic pop // // Unit tests for geometry decoding of polygons // TEST_CASE("decode simple polygon") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,0 10,-10 10,-10 0,0 0))"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,0 10,-10 10,-10 0,0 0))"); CHECK( geom.is >() ); } } TEST_CASE("decode simple polygon - int64 decode") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,0 10,-10 10,-10 0,0 0))"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,0 10,-10 10,-10 0,0 0))"); CHECK( geom.is >() ); } } TEST_CASE("decode simple polygon with hole") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // This ring is counter clockwise // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); // This ring is clockwise! // Cursor is still at -10,0 // MoveTo(-7,7) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(3)); feature.add_geometry(protozero::encode_zigzag32(7)); // LineTo(-3,7) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(4)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-3,3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-4)); // LineTo(-7,3) feature.add_geometry(protozero::encode_zigzag32(-4)); feature.add_geometry(protozero::encode_zigzag32(0)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,0 10,-10 10,-10 0,0 0),(-7 7,-3 7,-3 3,-7 3,-7 7))"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,0 10,-10 10,-10 0,0 0),(-7 7,-3 7,-3 3,-7 3,-7 7))"); CHECK( geom.is >() ); } } TEST_CASE("decode simple multipolygon") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // This ring is counter clockwise // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); // This ring is counter clockwise -- so it is not a hole but a new polygon // Cursor is still at -10,0 // MoveTo(-7,7) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(3)); feature.add_geometry(protozero::encode_zigzag32(7)); // LineTo(-7,3) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-4)); // LineTo(-3,3) feature.add_geometry(protozero::encode_zigzag32(4)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-3,7) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(4)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "MULTIPOLYGON(((0 0,0 10,-10 10,-10 0,0 0)),((-7 7,-7 3,-3 3,-3 7,-7 7)))"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "MULTIPOLYGON(((0 0,0 10,-10 10,-10 0,0 0)),((-7 7,-7 3,-3 3,-3 7,-7 7)))"); CHECK( geom.is >() ); } } TEST_CASE("decode polygon with hole where winding orders are reversed.") { // This should work with v1 parser // but fail with the v2 parsers. vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // This ring is clockwise // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(0,10) feature.add_geometry(protozero::encode_zigzag32(10)); feature.add_geometry(protozero::encode_zigzag32(0)); // Close feature.add_geometry(15); // This ring is counter clockwise -- so it is not a hole but a new polygon // Cursor is still at 0,10 // MoveTo(-7,7) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(-7)); feature.add_geometry(protozero::encode_zigzag32(-3)); // LineTo(-7,3) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-4)); // LineTo(-3,3) feature.add_geometry(protozero::encode_zigzag32(4)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-3,7) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(4)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,0 10,-10 10,-10 0,0 0),(-7 7,-3 7,-3 3,-7 3,-7 7))"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode simple multi polygon with hole") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // This ring is counter clockwise // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); // This ring is clockwise! // Cursor is still at -10,0 // MoveTo(-7,7) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(3)); feature.add_geometry(protozero::encode_zigzag32(7)); // LineTo(-3,7) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(4)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-3,3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-4)); // LineTo(-7,3) feature.add_geometry(protozero::encode_zigzag32(-4)); feature.add_geometry(protozero::encode_zigzag32(0)); // Close feature.add_geometry(15); // This ring is counter clockwise // Cursor is still at -7,3 // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(7)); feature.add_geometry(protozero::encode_zigzag32(-3)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); // This ring is clockwise! // Cursor is still at -10,0 // MoveTo(-7,7) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(3)); feature.add_geometry(protozero::encode_zigzag32(7)); // LineTo(-3,7) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(4)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-3,3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-4)); // LineTo(-7,3) feature.add_geometry(protozero::encode_zigzag32(-4)); feature.add_geometry(protozero::encode_zigzag32(0)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "MULTIPOLYGON(((0 0,0 10,-10 10,-10 0,0 0),(-7 7,-3 7,-3 3,-7 3,-7 7)),((0 0,0 10,-10 10,-10 0,0 0),(-7 7,-3 7,-3 3,-7 3,-7 7)))"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "MULTIPOLYGON(((0 0,0 10,-10 10,-10 0,0 0),(-7 7,-3 7,-3 3,-7 3,-7 7)),((0 0,0 10,-10 10,-10 0,0 0),(-7 7,-3 7,-3 3,-7 3,-7 7)))"); CHECK( geom.is >() ); } } TEST_CASE("decode multi polygon with holes - first ring invalid") { // One of the problems with the v1 logic is that because we are // not sure about the correct winding order if we run into an exterior ring // that is invalid in the first ring it could reverse all the rest of the winding orders. // Within v2 this should simply throw. vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // This ring is bad exterior ring. For v1, it will make the next interior ring as the first // exterior ring! // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // Close feature.add_geometry(15); // This ring is clockwise! // Cursor is still at -10,0 // MoveTo(-7,7) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(3)); feature.add_geometry(protozero::encode_zigzag32(7)); // LineTo(-3,7) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(4)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-3,3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-4)); // LineTo(-7,3) feature.add_geometry(protozero::encode_zigzag32(-4)); feature.add_geometry(protozero::encode_zigzag32(0)); // Close feature.add_geometry(15); // This ring is counter clockwise // Cursor is still at -7,3 // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(7)); feature.add_geometry(protozero::encode_zigzag32(-3)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); // This ring is clockwise! // Cursor is still at -10,0 // MoveTo(-7,7) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(3)); feature.add_geometry(protozero::encode_zigzag32(7)); // LineTo(-3,7) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(4)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-3,3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-4)); // LineTo(-7,3) feature.add_geometry(protozero::encode_zigzag32(-4)); feature.add_geometry(protozero::encode_zigzag32(0)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "MULTIPOLYGON(((-7 7,-7 3,-3 3,-3 7,-7 7),(0 0,-10 0,-10 10,0 10,0 0)),((-7 7,-7 3,-3 3,-3 7,-7 7)))"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode simple polygon -- incorrect exterior winding order") { // winding order is clockwise // v1 will reverse the order // v2 will throw as invalid vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(10,10) feature.add_geometry(protozero::encode_zigzag32(10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,10 0,10 10,0 10,0 0))"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon - only moveto") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon - only moveto and close") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); CHECK( geom.is() ); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon - only moveto and close followed by close") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // Close feature.add_geometry(15); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon - only moveto and close followed by lineto") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // Close feature.add_geometry(15); // LineTo(2,2) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon - only moveto and close followed by lineto -- delta zero") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // Close feature.add_geometry(15); // LineTo(2,2) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon - moveto and close followed by real polygon") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // Close feature.add_geometry(15); // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(-1)); feature.add_geometry(protozero::encode_zigzag32(-1)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,0 10,-10 10,-10 0,0 0))"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon - only moveto and lineto") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(10,0) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(10)); feature.add_geometry(protozero::encode_zigzag32(0)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon - moveto and lineto followed by real polygon") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(2,2) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(-2)); feature.add_geometry(protozero::encode_zigzag32(-2)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon - only moveto lineto and close") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(10,0) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(10)); feature.add_geometry(protozero::encode_zigzag32(0)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); CHECK( geom.is() ); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon - only moveto, lineto, and close followed by close") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(10,0) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(10)); feature.add_geometry(protozero::encode_zigzag32(0)); // Close feature.add_geometry(15); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon - only moveto, lineto, and close followed by lineto") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(10,0) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(10)); feature.add_geometry(protozero::encode_zigzag32(0)); // Close feature.add_geometry(15); // LineTo(11,1) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon - only moveto, lineto, and close followed by lineto -- delta zero") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(10,0) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(10)); feature.add_geometry(protozero::encode_zigzag32(0)); // Close feature.add_geometry(15); // LineTo(10,0) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon - moveto lineto and close followed by real polygon") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(1,1) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(2,2) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // Close feature.add_geometry(15); // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(-2)); feature.add_geometry(protozero::encode_zigzag32(-2)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,0 10,-10 10,-10 0,0 0))"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon - only moveto, lineto, lineto and close - both delta zero one command") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,0) feature.add_geometry((2 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); CHECK( geom.is() ); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon - only moveto, lineto, lineto and close - both delta zero two commands") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,0) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,0) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); CHECK( geom.is() ); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon - only moveto, lineto, lineto and close - first delta zero") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,0) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(1,1) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); CHECK( geom.is() ); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon - only moveto, lineto, lineto and close - second delta zero") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(1,1) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // LineTo(1,1) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); CHECK( geom.is() ); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon - only moveto, lineto, lineto and close - lineto two commands") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(10,0) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(10,10) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,10 0,10 10,0 0))"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,10 0,10 10,0 0))"); CHECK( geom.is >() ); } } TEST_CASE("decode polygon - only moveto, lineto, lineto and close - lineto one command") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(10,0) feature.add_geometry((2 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(10)); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,10 0,10 10,0 0))"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,10 0,10 10,0 0))"); CHECK( geom.is >() ); } } TEST_CASE("decode polygon -- moveto command count zero") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry((0 << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon -- moveto command count two") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry((2 << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon -- lineto command count 0") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry((1 << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo no commands feature.add_geometry((0 << 3u) | 2u); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon -- lineto command count 2 when it should be 3") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry((1 << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((2 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon -- lineto command count 4 when it should be 3") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry((1 << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((4 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon -- close is first command") { // It is important that in this test the lineto has dx and dy of 0. // This checks that the skip dx,dy 0 on lineto doesn't prevent // a series of bad commands from throwing. vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // Close feature.add_geometry(15); // MoveTo(0,0) feature.add_geometry((1 << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon -- extra close command") { // It is important that in this test the lineto has dx and dy of 0. // This checks that the skip dx,dy 0 on lineto doesn't prevent // a series of bad commands from throwing. vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry((1 << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon -- lineto is first command -- delta zero") { // It is important that in this test the lineto has dx and dy of 0. // This checks that the skip dx,dy 0 on lineto doesn't prevent // a series of bad commands from throwing. vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // LineTo(0,0) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // MoveTo(0,0) feature.add_geometry((1 << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon -- lineto is first command") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // LineTo(1,1) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); // MoveTo(0,0) feature.add_geometry((1 << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon -- lineto is last command -- delta zero") { // It is important that in this test the lineto has dx and dy of 0. // This checks that the skip dx,dy 0 on lineto doesn't prevent // a series of bad commands from throwing. vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry((1 << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); // LineTo(0,0) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon -- lineto is last command") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry((1 << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); // LineTo(1,1) feature.add_geometry((1 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(1)); feature.add_geometry(protozero::encode_zigzag32(1)); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode polygon -- has invalid command first") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); feature.add_geometry((1 << 3u) | 5u); // Invalid command // MoveTo(0,0) feature.add_geometry((1 << 3u) | 1u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { CHECK_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, vector_tile::Tile_GeomType_POLYGON, 2, 0.0, 0.0, 1.0, 1.0)); } } TEST_CASE("decode malicious polygon") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // We are going to massively increase the number of // command counts here to produce a very large // LineTo command. // LineTo(0,10) feature.add_geometry((((1 << 29) - 1u) << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { REQUIRE_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, 1.0)); } SECTION("VT Spec v2") { REQUIRE_THROWS(mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 1.0, 1.0)); } } mapnik-vector-tile-1.6.1/test/unit/decoding/polygon_scaling.cpp000066400000000000000000000444021324304754200246460ustar00rootroot00000000000000#include "catch.hpp" // mapnik vector tile #include "vector_tile_geometry_decoder.hpp" // test utils #include "decoding_util.hpp" #include "geom_to_wkt.hpp" // mapnik #include // libprotobuf #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wsign-conversion" #include "vector_tile.pb.h" #pragma GCC diagnostic pop // // Unit tests for geometry decoding of polygons with scaling // TEST_CASE("decode simple polygon - scale 2") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 2.0, 2.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,0 5,-5 5,-5 0,0 0))"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 2.0, 2.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,0 5,-5 5,-5 0,0 0))"); CHECK( geom.is >() ); } } TEST_CASE("decode simple polygon - scale 2 - int64 decode") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 2.0, 2.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,0 5,-5 5,-5 0,0 0))"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 2.0, 2.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,0 5,-5 5,-5 0,0 0))"); CHECK( geom.is >() ); } } TEST_CASE("decode simple polygon - scale 3.214") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 3.214, 3.214); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,0 3.11138767890479,-3.11138767890479 3.11138767890479,-3.11138767890479 0,0 0))"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 3.214, 3.214); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,0 3.11138767890479,-3.11138767890479 3.11138767890479,-3.11138767890479 0,0 0))"); CHECK( geom.is >() ); } } TEST_CASE("decode simple polygon - scale 3.214 - int64 decode") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 3.214, 3.214); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,0 3,-3 3,-3 0,0 0))"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 3.214, 3.214); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,0 3,-3 3,-3 0,0 0))"); CHECK( geom.is >() ); } } TEST_CASE("decode simple polygon - scale 0.46") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 0.46, 0.46); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,0 21.7391304347826,-21.7391304347826 21.7391304347826,-21.7391304347826 0,0 0))"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 0.46, 0.46); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,0 21.7391304347826,-21.7391304347826 21.7391304347826,-21.7391304347826 0,0 0))"); CHECK( geom.is >() ); } } TEST_CASE("decode simple polygon - scale 0.46 - int64 decode") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 0.46, 0.46); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,0 22,-22 22,-22 0,0 0))"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 0.46, 0.46); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,0 22,-22 22,-22 0,0 0))"); CHECK( geom.is >() ); } } TEST_CASE("decode simple polygon - inverted y axis") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, -1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,-10 0,-10 -10,0 -10,0 0))"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 1.0, -1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,-10 0,-10 -10,0 -10,0 0))"); CHECK( geom.is >() ); } } TEST_CASE("decode simple polygon - inverted x axis") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, -1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,10 0,10 10,0 10,0 0))"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, -1.0, 1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,10 0,10 10,0 10,0 0))"); CHECK( geom.is >() ); } } TEST_CASE("decode simple polygon - inverted x axis and y axis") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, -1.0, -1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,0 -10,10 -10,10 0,0 0))"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, -1.0, -1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,0 -10,10 -10,10 0,0 0))"); CHECK( geom.is >() ); } } TEST_CASE("decode simple polygon with hole - invert y axis") { vector_tile::Tile_Feature feature; feature.set_type(vector_tile::Tile_GeomType_POLYGON); // This ring is counter clockwise // MoveTo(0,0) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(0,10) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(10)); // LineTo(-10,10) feature.add_geometry(protozero::encode_zigzag32(-10)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-10,0) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-10)); // Close feature.add_geometry(15); // This ring is clockwise! // Cursor is still at -10,0 // MoveTo(-7,7) feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(3)); feature.add_geometry(protozero::encode_zigzag32(7)); // LineTo(-3,7) feature.add_geometry((3 << 3u) | 2u); feature.add_geometry(protozero::encode_zigzag32(4)); feature.add_geometry(protozero::encode_zigzag32(0)); // LineTo(-3,3) feature.add_geometry(protozero::encode_zigzag32(0)); feature.add_geometry(protozero::encode_zigzag32(-4)); // LineTo(-7,3) feature.add_geometry(protozero::encode_zigzag32(-4)); feature.add_geometry(protozero::encode_zigzag32(0)); // Close feature.add_geometry(15); std::string feature_string = feature.SerializeAsString(); mapnik::vector_tile_impl::GeometryPBF geoms = feature_to_pbf_geometry(feature_string); SECTION("VT Spec v1") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 1, 0.0, 0.0, 1.0, -1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,-10 0,-10 -10,0 -10,0 0),(-7 -7,-7 -3,-3 -3,-3 -7,-7 -7))"); CHECK( geom.is >() ); } SECTION("VT Spec v2") { auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, feature.type(), 2, 0.0, 0.0, 1.0, -1.0); std::string wkt0; CHECK( test_utils::to_wkt(wkt0,geom) ); CHECK( wkt0 == "POLYGON((0 0,-10 0,-10 -10,0 -10,0 0),(-7 -7,-7 -3,-3 -3,-3 -7,-7 -7))"); CHECK( geom.is >() ); } } mapnik-vector-tile-1.6.1/test/unit/encoding/000077500000000000000000000000001324304754200207615ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/test/unit/encoding/geometry_to_feature_pbf.cpp000066400000000000000000000020631324304754200263650ustar00rootroot00000000000000#include "catch.hpp" // mapnik vector tile #include "vector_tile_geometry_feature.hpp" // mapnik #include #include #include #include // protozero #include // libprotobuf #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wsign-conversion" #include "vector_tile.pb.h" #pragma GCC diagnostic pop // std #include // // Unit tests for encoding of geometries to features // TEST_CASE("encode feature pbf of degenerate linestring") { mapbox::geometry::line_string line; line.emplace_back(10,10); std::string layer_buffer = ""; mapnik::vector_tile_impl::layer_builder_pbf layer("foo", 4096, layer_buffer); mapnik::feature_ptr f(mapnik::feature_factory::create(std::make_shared(),1)); mapnik::vector_tile_impl::geometry_to_feature_pbf_visitor visitor(*f, layer); visitor(line); REQUIRE(layer.empty == true); } mapnik-vector-tile-1.6.1/test/unit/encoding/linestring_pbf.cpp000066400000000000000000000367371324304754200245120ustar00rootroot00000000000000#include "catch.hpp" // mapnik vector tile #include "vector_tile_geometry_encoder_pbf.hpp" // mapbox #include // protozero #include // libprotobuf #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wsign-conversion" #include "vector_tile.pb.h" #pragma GCC diagnostic pop // std #include // // Unit tests for geometry encoding of linestrings // TEST_CASE("encode pbf simple line_string") { mapbox::geometry::line_string line; line.emplace_back(10,10); line.emplace_back(20,20); line.emplace_back(30,30); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(line, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.type() == vector_tile::Tile_GeomType_LINESTRING); // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // Therefore 2 commands + 6 parameters = 8 REQUIRE(feature.geometry_size() == 8); // MoveTo(10,10) CHECK(feature.geometry(0) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(1) == 20); CHECK(feature.geometry(2) == 20); // LineTo(20,20) CHECK(feature.geometry(3) == ((2 << 3) | 2u)); CHECK(feature.geometry(4) == 20); CHECK(feature.geometry(5) == 20); // LineTo(30,30) CHECK(feature.geometry(6) == 20); CHECK(feature.geometry(7) == 20); } TEST_CASE("encode pbf simple line_string -- geometry type") { mapbox::geometry::line_string line; line.emplace_back(10,10); line.emplace_back(20,20); line.emplace_back(30,30); mapbox::geometry::geometry geom(line); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(geom, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.type() == vector_tile::Tile_GeomType_LINESTRING); // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // Therefore 2 commands + 6 parameters = 8 REQUIRE(feature.geometry_size() == 8); // MoveTo(10,10) CHECK(feature.geometry(0) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(1) == 20); CHECK(feature.geometry(2) == 20); // LineTo(20,20) CHECK(feature.geometry(3) == ((2 << 3) | 2u)); CHECK(feature.geometry(4) == 20); CHECK(feature.geometry(5) == 20); // LineTo(30,30) CHECK(feature.geometry(6) == 20); CHECK(feature.geometry(7) == 20); } TEST_CASE("encode pbf overlapping line_string") { mapbox::geometry::line_string line; line.emplace_back(10,10); line.emplace_back(20,20); line.emplace_back(10,10); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(line, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.type() == vector_tile::Tile_GeomType_LINESTRING); // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // Therefore 2 commands + 6 parameters = 8 REQUIRE(feature.geometry_size() == 8); // MoveTo(10,10) CHECK(feature.geometry(0) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(1) == 20); CHECK(feature.geometry(2) == 20); // LineTo(20,20) CHECK(feature.geometry(3) == ((2 << 3) | 2u)); CHECK(feature.geometry(4) == 20); CHECK(feature.geometry(5) == 20); // LineTo(10,10) CHECK(feature.geometry(6) == 19); CHECK(feature.geometry(7) == 19); } TEST_CASE("encode pbf line_string with repeated points") { mapbox::geometry::line_string line; line.emplace_back(10,10); line.emplace_back(10,10); line.emplace_back(10,10); line.emplace_back(20,20); line.emplace_back(20,20); line.emplace_back(20,20); line.emplace_back(30,30); line.emplace_back(30,30); line.emplace_back(30,30); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(line, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.type() == vector_tile::Tile_GeomType_LINESTRING); // All of the repeated points should be removed resulting in the following: // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // Therefore 2 commands + 6 parameters = 8 REQUIRE(feature.geometry_size() == 8); // MoveTo(10,10) CHECK(feature.geometry(0) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(1) == 20); CHECK(feature.geometry(2) == 20); // LineTo(20,20) CHECK(feature.geometry(3) == ((2 << 3) | 2u)); CHECK(feature.geometry(4) == 20); CHECK(feature.geometry(5) == 20); // LineTo(30,30) CHECK(feature.geometry(6) == 20); CHECK(feature.geometry(7) == 20); } TEST_CASE("encode pbf degenerate line_string") { mapbox::geometry::line_string line; line.emplace_back(10,10); // since the line is degenerate the whole line should be culled during encoding std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE_FALSE(mapnik::vector_tile_impl::encode_geometry_pbf(line, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.has_type()); CHECK(feature.type() == vector_tile::Tile_GeomType_LINESTRING); CHECK(feature.geometry_size() == 0); } TEST_CASE("encode pbf degenerate line_string all repeated points") { mapbox::geometry::line_string line; line.emplace_back(10,10); line.emplace_back(10,10); line.emplace_back(10,10); line.emplace_back(10,10); // since the line is degenerate the whole line should be culled during encoding std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE_FALSE(mapnik::vector_tile_impl::encode_geometry_pbf(line, feature_writer, x, y)); feature.ParseFromString(feature_str); CHECK(feature.has_type()); CHECK(feature.type() == vector_tile::Tile_GeomType_LINESTRING); CHECK(feature.geometry_size() == 0); } TEST_CASE("encode pbf incredibly large segments") { // This is a test case added that is known to completely break the logic // within the encoder. std::int64_t val = std::numeric_limits::max(); mapbox::geometry::line_string line; line.emplace_back(0,0); line.emplace_back(val,val); line.emplace_back(0,0); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(line, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.type() == vector_tile::Tile_GeomType_LINESTRING); // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // Therefore 2 commands + 6 parameters = 8 REQUIRE(feature.geometry_size() == 8); // MoveTo(10,10) CHECK(feature.geometry(0) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(1) == 0); CHECK(feature.geometry(2) == 0); // LineTo(0,0) CHECK(feature.geometry(3) == ((2 << 3) | 2u)); CHECK(feature.geometry(4) == 1); CHECK(feature.geometry(5) == 1); // LineTo(1,1) CHECK(feature.geometry(6) == 2); CHECK(feature.geometry(7) == 2); } TEST_CASE("encode pbf simple multi_line_string") { mapbox::geometry::multi_line_string g; mapbox::geometry::line_string l1; l1.emplace_back(0,0); l1.emplace_back(1,1); l1.emplace_back(2,2); g.push_back(std::move(l1)); mapbox::geometry::line_string l2; l2.emplace_back(5,5); l2.emplace_back(0,0); g.push_back(std::move(l2)); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(g, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.type() == vector_tile::Tile_GeomType_LINESTRING); // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger // Therefore 4 commands + 10 parameters = 14 REQUIRE(feature.geometry_size() == 14); // MoveTo(0,0) CHECK(feature.geometry(0) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(1) == 0); CHECK(feature.geometry(2) == 0); // LineTo(1,1) CHECK(feature.geometry(3) == ((2 << 3) | 2u)); CHECK(feature.geometry(4) == 2); CHECK(feature.geometry(5) == 2); // LineTo(2,2) CHECK(feature.geometry(6) == 2); CHECK(feature.geometry(7) == 2); // MoveTo(5,5) CHECK(feature.geometry(8) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(9) == 6); CHECK(feature.geometry(10) == 6); // LineTo(0,0) CHECK(feature.geometry(11) == ((1 << 3) | 2u)); CHECK(feature.geometry(12) == 9); CHECK(feature.geometry(13) == 9); } TEST_CASE("encode pbf simple multi_line_string -- geometry type") { mapbox::geometry::multi_line_string g; mapbox::geometry::line_string l1; l1.emplace_back(0,0); l1.emplace_back(1,1); l1.emplace_back(2,2); g.push_back(std::move(l1)); mapbox::geometry::line_string l2; l2.emplace_back(5,5); l2.emplace_back(0,0); g.push_back(std::move(l2)); mapbox::geometry::geometry geom(g); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(geom, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.type() == vector_tile::Tile_GeomType_LINESTRING); // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger // Therefore 4 commands + 10 parameters = 14 REQUIRE(feature.geometry_size() == 14); // MoveTo(0,0) CHECK(feature.geometry(0) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(1) == 0); CHECK(feature.geometry(2) == 0); // LineTo(1,1) CHECK(feature.geometry(3) == ((2 << 3) | 2u)); CHECK(feature.geometry(4) == 2); CHECK(feature.geometry(5) == 2); // LineTo(2,2) CHECK(feature.geometry(6) == 2); CHECK(feature.geometry(7) == 2); // MoveTo(5,5) CHECK(feature.geometry(8) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(9) == 6); CHECK(feature.geometry(10) == 6); // LineTo(0,0) CHECK(feature.geometry(11) == ((1 << 3) | 2u)); CHECK(feature.geometry(12) == 9); CHECK(feature.geometry(13) == 9); } TEST_CASE("encode pbf multi_line_string with repeated points") { mapbox::geometry::multi_line_string g; mapbox::geometry::line_string l1; l1.emplace_back(0,0); l1.emplace_back(0,0); l1.emplace_back(0,0); l1.emplace_back(1,1); l1.emplace_back(1,1); l1.emplace_back(1,1); l1.emplace_back(2,2); l1.emplace_back(2,2); l1.emplace_back(2,2); g.push_back(std::move(l1)); mapbox::geometry::line_string l2; l2.emplace_back(5,5); l2.emplace_back(5,5); l2.emplace_back(5,5); l2.emplace_back(0,0); l2.emplace_back(0,0); l2.emplace_back(0,0); g.push_back(std::move(l2)); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(g, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.type() == vector_tile::Tile_GeomType_LINESTRING); // Repeated commands should be removed points should be as follows: // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger // Therefore 4 commands + 10 parameters = 14 REQUIRE(feature.geometry_size() == 14); // MoveTo(0,0) CHECK(feature.geometry(0) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(1) == 0); CHECK(feature.geometry(2) == 0); // LineTo(1,1) CHECK(feature.geometry(3) == ((2 << 3) | 2u)); CHECK(feature.geometry(4) == 2); CHECK(feature.geometry(5) == 2); // LineTo(2,2) CHECK(feature.geometry(6) == 2); CHECK(feature.geometry(7) == 2); // MoveTo(5,5) CHECK(feature.geometry(8) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(9) == 6); CHECK(feature.geometry(10) == 6); // LineTo(0,0) CHECK(feature.geometry(11) == ((1 << 3) | 2u)); CHECK(feature.geometry(12) == 9); CHECK(feature.geometry(13) == 9); } TEST_CASE("encode pbf multi_line_string with two degenerate linestrings") { mapbox::geometry::multi_line_string g; mapbox::geometry::line_string l1; l1.emplace_back(0,0); g.push_back(std::move(l1)); mapbox::geometry::line_string l2; l2.emplace_back(5,0); l2.emplace_back(5,0); l2.emplace_back(5,0); g.push_back(std::move(l2)); mapbox::geometry::line_string l3; l3.emplace_back(5,5); l3.emplace_back(0,0); g.push_back(std::move(l3)); // Should remove first line string as it does not have enough points // and second linestring should be removed because it only has repeated // points and therefore is too small std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(g, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.type() == vector_tile::Tile_GeomType_LINESTRING); // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger // Therefore 2 commands + 4 parameters = 6 REQUIRE(feature.geometry_size() == 6); // MoveTo(5,5) CHECK(feature.geometry(0) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(1) == 10); CHECK(feature.geometry(2) == 10); // LineTo(0,0) CHECK(feature.geometry(3) == ((1 << 3) | 2u)); CHECK(feature.geometry(4) == 9); CHECK(feature.geometry(5) == 9); } mapnik-vector-tile-1.6.1/test/unit/encoding/point_pbf.cpp000066400000000000000000000152241324304754200234510ustar00rootroot00000000000000#include "catch.hpp" // mapnik vector tile #include "vector_tile_geometry_encoder_pbf.hpp" // mapbox #include // protozero #include // libprotobuf #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wsign-conversion" #include "vector_tile.pb.h" #pragma GCC diagnostic pop // std #include // // Unit tests for geometry encoding of points // TEST_CASE("encode pbf simple point") { mapbox::geometry::point point(10,10); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(point, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.type() == vector_tile::Tile_GeomType_POINT); // MoveTo, ParameterInteger, ParameterInteger // Therefore 1 commands + 2 parameters = 3 REQUIRE(feature.geometry_size() == 3); // MoveTo(10,10) CHECK(feature.geometry(0) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(1) == 20); CHECK(feature.geometry(2) == 20); } TEST_CASE("encode pbf simple point -- geometry type") { mapbox::geometry::point point(10,10); mapbox::geometry::geometry geom(point); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(geom, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.type() == vector_tile::Tile_GeomType_POINT); // MoveTo, ParameterInteger, ParameterInteger // Therefore 1 commands + 2 parameters = 3 REQUIRE(feature.geometry_size() == 3); // MoveTo(10,10) CHECK(feature.geometry(0) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(1) == 20); CHECK(feature.geometry(2) == 20); } TEST_CASE("encode pbf simple negative point") { mapbox::geometry::point point(-10,-10); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(point, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.type() == vector_tile::Tile_GeomType_POINT); // MoveTo, ParameterInteger, ParameterInteger // Therefore 1 commands + 2 parameters = 3 REQUIRE( feature.geometry_size() == 3); // MoveTo(10,10) CHECK(feature.geometry(0) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(1) == 19); CHECK(feature.geometry(2) == 19); } TEST_CASE("encode pbf simple multi point -- geometry type") { mapbox::geometry::multi_point mp; mp.emplace_back(10,10); mp.emplace_back(20,20); mp.emplace_back(30,30); mapbox::geometry::geometry geom(mp); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(geom, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.type() == vector_tile::Tile_GeomType_POINT); // MoveTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // Therefore 1 commands + 6 parameters = 7 REQUIRE( feature.geometry_size() == 7); // MoveTo(10,10) CHECK(feature.geometry(0) == ((3 << 3) | 1u)); // 25 CHECK(feature.geometry(1) == 20); CHECK(feature.geometry(2) == 20); // MoveTo(10,10) CHECK(feature.geometry(3) == 20); CHECK(feature.geometry(4) == 20); // MoveTo(20,20) CHECK(feature.geometry(5) == 20); CHECK(feature.geometry(6) == 20); } TEST_CASE("encode pbf simple multi point") { mapbox::geometry::multi_point mp; mp.emplace_back(10,10); mp.emplace_back(20,20); mp.emplace_back(30,30); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(mp, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.type() == vector_tile::Tile_GeomType_POINT); // MoveTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // Therefore 1 commands + 6 parameters = 7 REQUIRE( feature.geometry_size() == 7); // MoveTo(10,10) CHECK(feature.geometry(0) == ((3 << 3) | 1u)); // 25 CHECK(feature.geometry(1) == 20); CHECK(feature.geometry(2) == 20); // MoveTo(10,10) CHECK(feature.geometry(3) == 20); CHECK(feature.geometry(4) == 20); // MoveTo(20,20) CHECK(feature.geometry(5) == 20); CHECK(feature.geometry(6) == 20); } TEST_CASE("encode pbf multi point with repeated points") { mapbox::geometry::multi_point mp; mp.emplace_back(10,10); mp.emplace_back(10,10); mp.emplace_back(20,20); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(mp, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.type() == vector_tile::Tile_GeomType_POINT); // MoveTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // Therefore 1 commands + 6 parameters = 7 REQUIRE( feature.geometry_size() == 7); // MoveTo(10,10) CHECK(feature.geometry(0) == ((3 << 3) | 1u)); // 25 CHECK(feature.geometry(1) == 20); CHECK(feature.geometry(2) == 20); // MoveTo(10,10) CHECK(feature.geometry(3) == 0); CHECK(feature.geometry(4) == 0); // MoveTo(20,20) CHECK(feature.geometry(5) == 20); CHECK(feature.geometry(6) == 20); } TEST_CASE("encode pbf empty multi point geometry") { mapbox::geometry::multi_point mp; std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE_FALSE(mapnik::vector_tile_impl::encode_geometry_pbf(mp, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(!feature.has_type()); REQUIRE(feature.geometry_size() == 0); } mapnik-vector-tile-1.6.1/test/unit/encoding/polygon_pbf.cpp000066400000000000000000000522351324304754200240120ustar00rootroot00000000000000#include "catch.hpp" // mapnik vector tile #include "vector_tile_geometry_encoder_pbf.hpp" // mapbox #include // protozero #include // libprotobuf #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wsign-conversion" #include "vector_tile.pb.h" #pragma GCC diagnostic pop // // Unit tests for geometry encoding pbf of polygons // TEST_CASE("encoding pbf simple polygon") { mapbox::geometry::polygon p0; mapbox::geometry::linear_ring r0; r0.emplace_back(0,0); r0.emplace_back(0,10); r0.emplace_back(-10,10); r0.emplace_back(-10,0); r0.emplace_back(0,0); p0.push_back(r0); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(p0, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.type() == vector_tile::Tile_GeomType_POLYGON); // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // Close // 3 commands + 8 Params = 11 REQUIRE(feature.geometry_size() == 11); // MoveTo(0,0) CHECK(feature.geometry(0) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(1) == 0); CHECK(feature.geometry(2) == 0); // LineTo(0,10) CHECK(feature.geometry(3) == ((3 << 3) | 2u)); CHECK(feature.geometry(4) == 0); CHECK(feature.geometry(5) == 20); // LineTo(-10,10) CHECK(feature.geometry(6) == 19); CHECK(feature.geometry(7) == 0); // LineTo(-10,0) CHECK(feature.geometry(8) == 0); CHECK(feature.geometry(9) == 19); // Close CHECK(feature.geometry(10) == 15); } TEST_CASE("encoding pbf simple polygon -- geometry") { mapbox::geometry::polygon p0; mapbox::geometry::linear_ring r0; r0.emplace_back(0,0); r0.emplace_back(0,10); r0.emplace_back(-10,10); r0.emplace_back(-10,0); r0.emplace_back(0,0); p0.push_back(r0); mapbox::geometry::geometry geom(p0); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(geom, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.type() == vector_tile::Tile_GeomType_POLYGON); // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // Close // 3 commands + 8 Params = 11 REQUIRE(feature.geometry_size() == 11); // MoveTo(0,0) CHECK(feature.geometry(0) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(1) == 0); CHECK(feature.geometry(2) == 0); // LineTo(0,10) CHECK(feature.geometry(3) == ((3 << 3) | 2u)); CHECK(feature.geometry(4) == 0); CHECK(feature.geometry(5) == 20); // LineTo(-10,10) CHECK(feature.geometry(6) == 19); CHECK(feature.geometry(7) == 0); // LineTo(-10,0) CHECK(feature.geometry(8) == 0); CHECK(feature.geometry(9) == 19); // Close CHECK(feature.geometry(10) == 15); } TEST_CASE("encoding pbf simple polygon with hole") { mapbox::geometry::polygon p0; mapbox::geometry::linear_ring r0; r0.emplace_back(0,0); r0.emplace_back(0,10); r0.emplace_back(-10,10); r0.emplace_back(-10,0); r0.emplace_back(0,0); p0.push_back(r0); mapbox::geometry::linear_ring hole; hole.emplace_back(-7,7); hole.emplace_back(-3,7); hole.emplace_back(-3,3); hole.emplace_back(-7,3); hole.emplace_back(-7,7); p0.push_back(std::move(hole)); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(p0, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.type() == vector_tile::Tile_GeomType_POLYGON); // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // Close // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // Close // 6 commands + 16 Params = 22 REQUIRE(feature.geometry_size() == 22); // MoveTo(0,0) CHECK(feature.geometry(0) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(1) == 0); CHECK(feature.geometry(2) == 0); // LineTo(0,10) CHECK(feature.geometry(3) == ((3 << 3) | 2u)); CHECK(feature.geometry(4) == 0); CHECK(feature.geometry(5) == 20); // LineTo(-10,10) CHECK(feature.geometry(6) == 19); CHECK(feature.geometry(7) == 0); // LineTo(-10,0) CHECK(feature.geometry(8) == 0); CHECK(feature.geometry(9) == 19); // Close CHECK(feature.geometry(10) == 15); // Remember the cursor didn't move after the close // so it is at -10,0 // MoveTo(-7,7) CHECK(feature.geometry(11) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(12) == 6); CHECK(feature.geometry(13) == 14); // LineTo(-3,7) CHECK(feature.geometry(14) == ((3 << 3) | 2u)); CHECK(feature.geometry(15) == 8); CHECK(feature.geometry(16) == 0); // LineTo(-3,3) CHECK(feature.geometry(17) == 0); CHECK(feature.geometry(18) == 7); // LineTo(-7,3) CHECK(feature.geometry(19) == 7); CHECK(feature.geometry(20) == 0); // Close CHECK(feature.geometry(21) == 15); } TEST_CASE("encoding pbf empty polygon") { mapbox::geometry::polygon p; std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE_FALSE(mapnik::vector_tile_impl::encode_geometry_pbf(p, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.has_type()); CHECK(feature.type() == vector_tile::Tile_GeomType_POLYGON); REQUIRE(feature.geometry_size() == 0); } TEST_CASE("encoding pbf multi polygons with holes") { mapbox::geometry::multi_polygon mp; { mapbox::geometry::polygon p0; mapbox::geometry::linear_ring r0; r0.emplace_back(0,0); r0.emplace_back(0,10); r0.emplace_back(-10,10); r0.emplace_back(-10,0); r0.emplace_back(0,0); p0.push_back(std::move(r0)); mapbox::geometry::linear_ring hole; hole.emplace_back(-7,7); hole.emplace_back(-3,7); hole.emplace_back(-3,3); hole.emplace_back(-7,3); hole.emplace_back(-7,7); p0.push_back(std::move(hole)); mp.push_back(p0); } // yeah so its the same polygon -- haters gonna hate. { mapbox::geometry::polygon p0; mapbox::geometry::linear_ring r0; r0.emplace_back(0,0); r0.emplace_back(0,10); r0.emplace_back(-10,10); r0.emplace_back(-10,0); r0.emplace_back(0,0); p0.push_back(std::move(r0)); mapbox::geometry::linear_ring hole; hole.emplace_back(-7,7); hole.emplace_back(-3,7); hole.emplace_back(-3,3); hole.emplace_back(-7,3); hole.emplace_back(-7,7); p0.push_back(std::move(hole)); mp.push_back(p0); } std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(mp, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.type() == vector_tile::Tile_GeomType_POLYGON); // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // Close // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // Close // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // Close // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // Close // 12 commands + 32 Params = 44 REQUIRE(feature.geometry_size() == 44); // MoveTo(0,0) CHECK(feature.geometry(0) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(1) == 0); CHECK(feature.geometry(2) == 0); // LineTo(0,10) CHECK(feature.geometry(3) == ((3 << 3) | 2u)); CHECK(feature.geometry(4) == 0); CHECK(feature.geometry(5) == 20); // LineTo(-10,10) CHECK(feature.geometry(6) == 19); CHECK(feature.geometry(7) == 0); // LineTo(-10,0) CHECK(feature.geometry(8) == 0); CHECK(feature.geometry(9) == 19); // Close CHECK(feature.geometry(10) == 15); // Remember the cursor didn't move after the close // so it is at -10,0 // MoveTo(-7,7) CHECK(feature.geometry(11) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(12) == 6); CHECK(feature.geometry(13) == 14); // LineTo(-3,7) CHECK(feature.geometry(14) == ((3 << 3) | 2u)); CHECK(feature.geometry(15) == 8); CHECK(feature.geometry(16) == 0); // LineTo(-3,3) CHECK(feature.geometry(17) == 0); CHECK(feature.geometry(18) == 7); // LineTo(-7,3) CHECK(feature.geometry(19) == 7); CHECK(feature.geometry(20) == 0); // Close CHECK(feature.geometry(21) == 15); // Remember the cursor didn't move after the close // so it is at -7,3 // MoveTo(0,0) CHECK(feature.geometry(22) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(23) == 14); CHECK(feature.geometry(24) == 5); // LineTo(0,10) CHECK(feature.geometry(25) == ((3 << 3) | 2u)); CHECK(feature.geometry(26) == 0); CHECK(feature.geometry(27) == 20); // LineTo(-10,10) CHECK(feature.geometry(28) == 19); CHECK(feature.geometry(29) == 0); // LineTo(-10,0) CHECK(feature.geometry(30) == 0); CHECK(feature.geometry(31) == 19); // Close CHECK(feature.geometry(32) == 15); // Remember the cursor didn't move after the close // so it is at -10,0 // MoveTo(-7,7) CHECK(feature.geometry(33) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(34) == 6); CHECK(feature.geometry(35) == 14); // LineTo(-3,7) CHECK(feature.geometry(36) == ((3 << 3) | 2u)); CHECK(feature.geometry(37) == 8); CHECK(feature.geometry(38) == 0); // LineTo(-3,3) CHECK(feature.geometry(39) == 0); CHECK(feature.geometry(40) == 7); // LineTo(-7,3) CHECK(feature.geometry(41) == 7); CHECK(feature.geometry(42) == 0); // Close CHECK(feature.geometry(43) == 15); } TEST_CASE("encoding pbf multi polygons with holes -- geometry type") { mapbox::geometry::multi_polygon mp; { mapbox::geometry::polygon p0; mapbox::geometry::linear_ring r0; r0.emplace_back(0,0); r0.emplace_back(0,10); r0.emplace_back(-10,10); r0.emplace_back(-10,0); r0.emplace_back(0,0); p0.push_back(std::move(r0)); mapbox::geometry::linear_ring hole; hole.emplace_back(-7,7); hole.emplace_back(-3,7); hole.emplace_back(-3,3); hole.emplace_back(-7,3); hole.emplace_back(-7,7); p0.push_back(std::move(hole)); mp.push_back(p0); } // yeah so its the same polygon -- haters gonna hate. { mapbox::geometry::polygon p0; mapbox::geometry::linear_ring r0; r0.emplace_back(0,0); r0.emplace_back(0,10); r0.emplace_back(-10,10); r0.emplace_back(-10,0); r0.emplace_back(0,0); p0.push_back(std::move(r0)); mapbox::geometry::linear_ring hole; hole.emplace_back(-7,7); hole.emplace_back(-3,7); hole.emplace_back(-3,3); hole.emplace_back(-7,3); hole.emplace_back(-7,7); p0.push_back(std::move(hole)); mp.push_back(p0); } mapbox::geometry::geometry geom(mp); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(geom, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.type() == vector_tile::Tile_GeomType_POLYGON); // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // Close // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // Close // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // Close // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // Close // 12 commands + 32 Params = 44 REQUIRE(feature.geometry_size() == 44); // MoveTo(0,0) CHECK(feature.geometry(0) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(1) == 0); CHECK(feature.geometry(2) == 0); // LineTo(0,10) CHECK(feature.geometry(3) == ((3 << 3) | 2u)); CHECK(feature.geometry(4) == 0); CHECK(feature.geometry(5) == 20); // LineTo(-10,10) CHECK(feature.geometry(6) == 19); CHECK(feature.geometry(7) == 0); // LineTo(-10,0) CHECK(feature.geometry(8) == 0); CHECK(feature.geometry(9) == 19); // Close CHECK(feature.geometry(10) == 15); // Remember the cursor didn't move after the close // so it is at -10,0 // MoveTo(-7,7) CHECK(feature.geometry(11) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(12) == 6); CHECK(feature.geometry(13) == 14); // LineTo(-3,7) CHECK(feature.geometry(14) == ((3 << 3) | 2u)); CHECK(feature.geometry(15) == 8); CHECK(feature.geometry(16) == 0); // LineTo(-3,3) CHECK(feature.geometry(17) == 0); CHECK(feature.geometry(18) == 7); // LineTo(-7,3) CHECK(feature.geometry(19) == 7); CHECK(feature.geometry(20) == 0); // Close CHECK(feature.geometry(21) == 15); // Remember the cursor didn't move after the close // so it is at -7,3 // MoveTo(0,0) CHECK(feature.geometry(22) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(23) == 14); CHECK(feature.geometry(24) == 5); // LineTo(0,10) CHECK(feature.geometry(25) == ((3 << 3) | 2u)); CHECK(feature.geometry(26) == 0); CHECK(feature.geometry(27) == 20); // LineTo(-10,10) CHECK(feature.geometry(28) == 19); CHECK(feature.geometry(29) == 0); // LineTo(-10,0) CHECK(feature.geometry(30) == 0); CHECK(feature.geometry(31) == 19); // Close CHECK(feature.geometry(32) == 15); // Remember the cursor didn't move after the close // so it is at -10,0 // MoveTo(-7,7) CHECK(feature.geometry(33) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(34) == 6); CHECK(feature.geometry(35) == 14); // LineTo(-3,7) CHECK(feature.geometry(36) == ((3 << 3) | 2u)); CHECK(feature.geometry(37) == 8); CHECK(feature.geometry(38) == 0); // LineTo(-3,3) CHECK(feature.geometry(39) == 0); CHECK(feature.geometry(40) == 7); // LineTo(-7,3) CHECK(feature.geometry(41) == 7); CHECK(feature.geometry(42) == 0); // Close CHECK(feature.geometry(43) == 15); } TEST_CASE("encoding pbf empty multi polygon") { mapbox::geometry::multi_polygon mp; std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE_FALSE(mapnik::vector_tile_impl::encode_geometry_pbf(mp, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.has_type()); CHECK(feature.type() == vector_tile::Tile_GeomType_POLYGON); REQUIRE(feature.geometry_size() == 0); } TEST_CASE("encoding pbf polygon with degenerate exterior ring full of repeated points") { mapbox::geometry::polygon p0; mapbox::geometry::linear_ring r0; // invalid exterior ring r0.emplace_back(0,0); r0.emplace_back(0,10); r0.emplace_back(0,10); r0.emplace_back(0,10); r0.emplace_back(0,10); r0.emplace_back(0,10); r0.emplace_back(0,10); r0.emplace_back(0,10); p0.push_back(std::move(r0)); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE_FALSE(mapnik::vector_tile_impl::encode_geometry_pbf(p0, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.has_type()); CHECK(feature.type() == vector_tile::Tile_GeomType_POLYGON); CHECK(feature.geometry_size() == 0); } TEST_CASE("encoding pbf polygon with degenerate exterior ring") { mapbox::geometry::polygon p0; mapbox::geometry::linear_ring r0; // invalid exterior ring r0.emplace_back(0,0); r0.emplace_back(0,10); p0.push_back(std::move(r0)); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE_FALSE(mapnik::vector_tile_impl::encode_geometry_pbf(p0, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.has_type()); CHECK(feature.type() == vector_tile::Tile_GeomType_POLYGON); CHECK(feature.geometry_size() == 0); } TEST_CASE("encoding pbf polygon with degenerate exterior ring and interior ring") { mapbox::geometry::polygon p0; mapbox::geometry::linear_ring r0; // invalid exterior ring r0.emplace_back(0,0); r0.emplace_back(0,10); p0.push_back(std::move(r0)); // invalid interior ring -- is counter clockwise mapbox::geometry::linear_ring hole; hole.emplace_back(-7,7); hole.emplace_back(-3,7); hole.emplace_back(-3,3); hole.emplace_back(-7,3); hole.emplace_back(-7,7); p0.push_back(std::move(hole)); // encoder should cull the exterior invalid ring, which triggers // the entire polygon to be culled. std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE_FALSE(mapnik::vector_tile_impl::encode_geometry_pbf(p0, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.has_type()); CHECK(feature.type() == vector_tile::Tile_GeomType_POLYGON); CHECK(feature.geometry_size() == 0); } TEST_CASE("encoding pbf polygon with valid exterior ring but degenerate interior ring") { mapbox::geometry::polygon p0; mapbox::geometry::linear_ring r0; r0.emplace_back(0,0); r0.emplace_back(0,10); r0.emplace_back(-10,10); r0.emplace_back(-10,0); r0.emplace_back(0,0); p0.push_back(std::move(r0)); // invalid interior ring mapbox::geometry::linear_ring hole; hole.emplace_back(-7,7); hole.emplace_back(-3,7); p0.push_back(std::move(hole)); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); vector_tile::Tile_Feature feature; REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(p0, feature_writer, x, y)); feature.ParseFromString(feature_str); REQUIRE(feature.type() == vector_tile::Tile_GeomType_POLYGON); // MoveTo, ParameterInteger, ParameterInteger // LineTo, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger, ParameterInteger // Close // 3 commands + 8 Params = 11 REQUIRE(feature.geometry_size() == 11); // MoveTo(0,0) CHECK(feature.geometry(0) == ((1 << 3) | 1u)); // 9 CHECK(feature.geometry(1) == 0); CHECK(feature.geometry(2) == 0); // LineTo(0,10) CHECK(feature.geometry(3) == ((3 << 3) | 2u)); CHECK(feature.geometry(4) == 0); CHECK(feature.geometry(5) == 20); // LineTo(-10,10) CHECK(feature.geometry(6) == 19); CHECK(feature.geometry(7) == 0); // LineTo(-10,0) CHECK(feature.geometry(8) == 0); CHECK(feature.geometry(9) == 19); // Close CHECK(feature.geometry(10) == 15); } mapnik-vector-tile-1.6.1/test/unit/is_valid/000077500000000000000000000000001324304754200207655ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/test/unit/is_valid/feature_is_valid.cpp000066400000000000000000000067011324304754200250020ustar00rootroot00000000000000#include "catch.hpp" // mvt #include "vector_tile_is_valid.hpp" // protozero #include #include "vector_tile.pb.h" typedef std::set error_set_T; TEST_CASE( "invalid empty feature" ) { std::string buffer; vector_tile::Tile_Feature feature; error_set_T errs; feature.SerializeToString(&buffer); protozero::pbf_reader pbf_feature(buffer); feature_is_valid(pbf_feature, errs); CHECK(errs.empty() == false); CHECK(errs.count(mapnik::vector_tile_impl::validity_error::FEATURE_IS_EMPTY) == 1); } TEST_CASE( "invalid geometry without type" ) { std::string buffer; vector_tile::Tile_Feature feature; error_set_T errs; feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(5)); feature.add_geometry(protozero::encode_zigzag32(5)); feature.SerializeToString(&buffer); protozero::pbf_reader pbf_feature(buffer); feature_is_valid(pbf_feature, errs); CHECK(errs.empty() == false); CHECK(errs.count(mapnik::vector_tile_impl::validity_error::FEATURE_NO_GEOM_TYPE) == 1); } TEST_CASE( "valid raster feature" ) { std::string buffer; vector_tile::Tile_Feature feature; error_set_T errs; feature.set_raster("raster-blaster"); feature.SerializeToString(&buffer); protozero::pbf_reader pbf_feature(buffer); feature_is_valid(pbf_feature, errs); CHECK(errs.empty() == true); } TEST_CASE( "valid geometry feature" ) { std::string buffer; vector_tile::Tile_Feature feature; error_set_T errs; feature.set_type(vector_tile::Tile_GeomType::Tile_GeomType_POINT); feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(5)); feature.add_geometry(protozero::encode_zigzag32(5)); feature.SerializeToString(&buffer); protozero::pbf_reader pbf_feature(buffer); feature_is_valid(pbf_feature, errs); CHECK(errs.empty() == true); } TEST_CASE( "geometry feature with invalid type" ) { std::string buffer; error_set_T errs; protozero::pbf_writer pbf_message(buffer); pbf_message.add_uint32(3, 4); protozero::pbf_reader pbf_feature(buffer); feature_is_valid(pbf_feature, errs); CHECK(errs.empty() == false); CHECK(errs.count(mapnik::vector_tile_impl::validity_error::FEATURE_HAS_INVALID_GEOM_TYPE) == 1); } TEST_CASE( "invalid feature with geometry and raster" ) { std::string buffer; vector_tile::Tile_Feature feature; error_set_T errs; feature.set_type(vector_tile::Tile_GeomType::Tile_GeomType_POINT); feature.add_geometry(9); // move_to | (1 << 3) feature.add_geometry(protozero::encode_zigzag32(5)); feature.add_geometry(protozero::encode_zigzag32(5)); feature.set_raster("raster-blaster"); feature.SerializeToString(&buffer); protozero::pbf_reader pbf_feature(buffer); feature_is_valid(pbf_feature, errs); CHECK(errs.empty() == false); CHECK(errs.count(mapnik::vector_tile_impl::validity_error::FEATURE_RASTER_AND_GEOM) == 1); } TEST_CASE( "invalid unknown tag in feature" ) { std::string buffer; error_set_T errs; protozero::pbf_writer pbf_message(buffer); pbf_message.add_string(8, "unknown field"); protozero::pbf_reader pbf_value(buffer); feature_is_valid(pbf_value, errs); CHECK(errs.empty() == false); CHECK(errs.count(mapnik::vector_tile_impl::validity_error::FEATURE_HAS_UNKNOWN_TAG) == 1); } mapnik-vector-tile-1.6.1/test/unit/is_valid/value_is_valid.cpp000066400000000000000000000106601324304754200244620ustar00rootroot00000000000000#include "catch.hpp" // mvt #include "vector_tile_is_valid.hpp" // protozero #include #include "vector_tile.pb.h" typedef std::set error_set_T; TEST_CASE( "invalid empty value" ) { std::string buffer; vector_tile::Tile_Value value; error_set_T errs; value.SerializeToString(&buffer); protozero::pbf_reader pbf_value(buffer); value_is_valid(pbf_value, errs); CHECK(errs.empty() == false); CHECK(errs.count(mapnik::vector_tile_impl::validity_error::VALUE_NO_VALUE) == 1); } TEST_CASE( "valid values" ) { SECTION("valid string") { std::string buffer; vector_tile::Tile_Value value; error_set_T errs; value.set_string_value("just another mapnik monday"); value.SerializeToString(&buffer); protozero::pbf_reader pbf_value(buffer); value_is_valid(pbf_value, errs); CHECK(errs.empty() == true); } SECTION("valid float") { std::string buffer; vector_tile::Tile_Value value; error_set_T errs; value.set_float_value(2015.0); value.SerializeToString(&buffer); protozero::pbf_reader pbf_value(buffer); value_is_valid(pbf_value, errs); CHECK(errs.empty() == true); } SECTION("valid double") { std::string buffer; vector_tile::Tile_Value value; error_set_T errs; value.set_double_value(2016.0); value.SerializeToString(&buffer); protozero::pbf_reader pbf_value(buffer); value_is_valid(pbf_value, errs); CHECK(errs.empty() == true); } SECTION("valid int") { std::string buffer; vector_tile::Tile_Value value; error_set_T errs; value.set_int_value(2017); value.SerializeToString(&buffer); protozero::pbf_reader pbf_value(buffer); value_is_valid(pbf_value, errs); CHECK(errs.empty() == true); } SECTION("valid uint") { std::string buffer; vector_tile::Tile_Value value; error_set_T errs; value.set_uint_value(2017); value.SerializeToString(&buffer); protozero::pbf_reader pbf_value(buffer); value_is_valid(pbf_value, errs); CHECK(errs.empty() == true); } SECTION("valid sint") { std::string buffer; vector_tile::Tile_Value value; error_set_T errs; value.set_sint_value(2017); value.SerializeToString(&buffer); protozero::pbf_reader pbf_value(buffer); value_is_valid(pbf_value, errs); CHECK(errs.empty() == true); } SECTION("valid bool") { std::string buffer; vector_tile::Tile_Value value; error_set_T errs; value.set_bool_value(false); value.SerializeToString(&buffer); protozero::pbf_reader pbf_value(buffer); value_is_valid(pbf_value, errs); CHECK(errs.empty() == true); } } TEST_CASE( "invalid multiple values" ) { std::string buffer; vector_tile::Tile_Value value; error_set_T errs; value.set_bool_value(false); value.set_string_value("false"); value.SerializeToString(&buffer); protozero::pbf_reader pbf_value(buffer); value_is_valid(pbf_value, errs); CHECK(errs.empty() == false); CHECK(errs.count(mapnik::vector_tile_impl::validity_error::VALUE_MULTIPLE_VALUES) == 1); } TEST_CASE( "invalid unknown values" ) { std::string buffer; vector_tile::Tile_Value value; error_set_T errs; value.set_bool_value(false); value.set_string_value("false"); value.SerializeToString(&buffer); protozero::pbf_reader pbf_value(buffer); value_is_valid(pbf_value, errs); CHECK(errs.empty() == false); CHECK(errs.count(mapnik::vector_tile_impl::validity_error::VALUE_MULTIPLE_VALUES) == 1); } TEST_CASE( "invalid garbage value throws" ) { std::string buffer = "garbage"; error_set_T errs; protozero::pbf_reader pbf_value(buffer); CHECK_THROWS(value_is_valid(pbf_value, errs)); } TEST_CASE( "invalid unknown tag" ) { std::string buffer; error_set_T errs; protozero::pbf_writer pbf_message(buffer); pbf_message.add_string(8, "unknown field"); protozero::pbf_reader pbf_value(buffer); value_is_valid(pbf_value, errs); CHECK(errs.empty() == false); CHECK(errs.count(mapnik::vector_tile_impl::validity_error::VALUE_HAS_UNKNOWN_TAG) == 1); } mapnik-vector-tile-1.6.1/test/unit/layer_impl/000077500000000000000000000000001324304754200213305ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/test/unit/layer_impl/layer.cpp000066400000000000000000000054721324304754200231600ustar00rootroot00000000000000#include "catch.hpp" // mapnik #include #include #include // mapnik vector tile layer class #include "vector_tile_layer.hpp" TEST_CASE("Vector tile layer class") { SECTION("The constructor can produce a valid tile_layer with empty vars") { mapnik::Map map(256, 256); // Create memory datasource mapnik::parameters params; params["type"] = "memory"; auto ds = std::make_shared(params); mapnik::layer layer("layer", "+init=epsg:3857"); layer.set_datasource(ds); mapnik::box2d extent(-20037508.342789,-20037508.342789,20037508.342789,20037508.342789); const mapnik::attributes empty_vars; mapnik::vector_tile_impl::tile_layer some_layer(map, layer, extent, 256, // tile_size 10, // buffer_size 1.0, // scale_factor 0, // scale_denom 0, // offset_x 0, // offset_y empty_vars); CHECK(some_layer.is_valid()); } SECTION("The query has the variables passed to the constructor") { mapnik::Map map(256, 256); // Create memory datasource mapnik::parameters params; params["type"] = "memory"; auto ds = std::make_shared(params); mapnik::layer layer("layer", "+init=epsg:3857"); layer.set_datasource(ds); mapnik::box2d extent(-20037508.342789,-20037508.342789,20037508.342789,20037508.342789); const mapnik::attributes vars { {"zoom_level", 20} }; mapnik::vector_tile_impl::tile_layer some_layer(map, layer, extent, 256, // tile_size 10, // buffer_size 1.0, // scale_factor 0, // scale_denom 0, // offset_x 0, // offset_y vars); CHECK(some_layer.is_valid()); CHECK( ( vars == some_layer.get_query().variables() ) ); } } mapnik-vector-tile-1.6.1/test/unit/load/000077500000000000000000000000001324304754200201125ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/test/unit/load/merge.cpp000066400000000000000000000101751324304754200217210ustar00rootroot00000000000000#include "catch.hpp" // mvt #include "vector_tile_load_tile.hpp" //protozero #include // std #include #include TEST_CASE( "merge_from_compressed_buffer - vector" ) { std::ifstream stream("./test/data/0.0.0.vector.mvt",std::ios_base::in|std::ios_base::binary); REQUIRE(stream.is_open()); std::string buffer(std::istreambuf_iterator(stream.rdbuf()),(std::istreambuf_iterator())); REQUIRE(buffer.size() == 3812); mapnik::vector_tile_impl::merc_tile tile(0,0,0); // not validating or upgrading mapnik::vector_tile_impl::merge_from_compressed_buffer(tile, buffer.data(), buffer.size()); CHECK(tile.get_layers().size() == 1); { protozero::pbf_reader tile_msg(tile.get_buffer()); while (tile_msg.next(mapnik::vector_tile_impl::Tile_Encoding::LAYERS)) { const auto layer_view = tile_msg.get_view(); protozero::pbf_reader layer_props_msg(layer_view); auto layer_info = mapnik::vector_tile_impl::get_layer_name_and_version(layer_props_msg); std::string const& layer_name = layer_info.first; std::uint32_t version = layer_info.second; CHECK(layer_name == "water"); CHECK(version == 1); std::set errors; protozero::pbf_reader layer_valid_msg(layer_view); layer_is_valid(layer_valid_msg, errors); CHECK(errors.size() == 0); } } // re-adding silently skips existing layer by the same name mapnik::vector_tile_impl::merge_from_compressed_buffer(tile, buffer.data(), buffer.size()); CHECK(tile.get_layers().size() == 1); // re-adding and validating throws on duplicate layer name REQUIRE_THROWS(mapnik::vector_tile_impl::merge_from_compressed_buffer(tile, buffer.data(), buffer.size(), true)); mapnik::vector_tile_impl::merc_tile tile2(0,0,0); mapnik::vector_tile_impl::merge_from_compressed_buffer(tile2, buffer.data(), buffer.size(), true, true); { protozero::pbf_reader tile_msg(tile2.get_buffer()); while (tile_msg.next(mapnik::vector_tile_impl::Tile_Encoding::LAYERS)) { const auto layer_view = tile_msg.get_view(); protozero::pbf_reader layer_props_msg(layer_view); auto layer_info = mapnik::vector_tile_impl::get_layer_name_and_version(layer_props_msg); std::string const& layer_name = layer_info.first; std::uint32_t version = layer_info.second; CHECK(layer_name == "water"); CHECK(version == 2); std::set errors; protozero::pbf_reader layer_valid_msg(layer_view); layer_is_valid(layer_valid_msg, errors); CHECK(errors.size() == 0); } } } TEST_CASE( "merge_from_compressed_buffer - raster" ) { std::ifstream stream("./test/data/image.mvt",std::ios_base::in|std::ios_base::binary); REQUIRE(stream.is_open()); std::string buffer(std::istreambuf_iterator(stream.rdbuf()),(std::istreambuf_iterator())); REQUIRE(buffer.size() == 146098); mapnik::vector_tile_impl::merc_tile tile(0,0,0); mapnik::vector_tile_impl::merge_from_compressed_buffer(tile, buffer.data(), buffer.size(), true, true); CHECK(tile.get_layers().size() == 1); { protozero::pbf_reader tile_msg(tile.get_buffer()); while (tile_msg.next(mapnik::vector_tile_impl::Tile_Encoding::LAYERS)) { const auto layer_view = tile_msg.get_view(); protozero::pbf_reader layer_props_msg(layer_view); auto layer_info = mapnik::vector_tile_impl::get_layer_name_and_version(layer_props_msg); std::string const& layer_name = layer_info.first; std::uint32_t version = layer_info.second; CHECK(layer_name == "layer"); CHECK(version == 2); std::set errors; protozero::pbf_reader layer_valid_msg(layer_view); layer_is_valid(layer_valid_msg, errors); CHECK(errors.size() == 0); } } } mapnik-vector-tile-1.6.1/test/unit/processor/000077500000000000000000000000001324304754200212125ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/test/unit/processor/reprojection_error.cpp000066400000000000000000000027431324304754200256400ustar00rootroot00000000000000#include "catch.hpp" // mapnik #include // mapnik-vector-tile #include "vector_tile_processor.hpp" // libprotobuf #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wsign-conversion" #include "vector_tile.pb.h" #pragma GCC diagnostic pop TEST_CASE("feature processor - handle strange projection issues") { mapnik::Map map(256, 256); mapnik::load_map(map, "test/data/singapore.xml"); mapnik::vector_tile_impl::processor ren(map); { mapnik::vector_tile_impl::tile out_tile = ren.create_tile(1, 0, 1); vector_tile::Tile tile; REQUIRE(tile.ParseFromString(out_tile.get_buffer())); // Should be empty due to simplification REQUIRE(0 == tile.layers_size()); } { mapnik::vector_tile_impl::tile out_tile = ren.create_tile(1, 0, 1, 4096 * 1024); vector_tile::Tile tile; REQUIRE(tile.ParseFromString(out_tile.get_buffer())); // Expanding the extent here we get some data as simplification doesn't occur REQUIRE(1 == tile.layers_size()); CHECK(1 == tile.layers(0).features_size()); } { mapnik::vector_tile_impl::tile out_tile = ren.create_tile(50, 31, 6); vector_tile::Tile tile; REQUIRE(tile.ParseFromString(out_tile.get_buffer())); // Slightly more zoomed in we get data. REQUIRE(1 == tile.layers_size()); CHECK(1 == tile.layers(0).features_size()); } } mapnik-vector-tile-1.6.1/test/unit/processor/scale_denom_filter.cpp000066400000000000000000000025251324304754200255400ustar00rootroot00000000000000#include "catch.hpp" // mapnik #include // mapnik-vector-tile #include "vector_tile_processor.hpp" // libprotobuf #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wsign-conversion" #include "vector_tile.pb.h" #pragma GCC diagnostic pop TEST_CASE("feature processor - filtering by scale denominator on layer level") { mapnik::Map map(256, 256); mapnik::load_map(map, "test/data/layer_scale_denom_style.xml"); mapnik::vector_tile_impl::processor ren(map); const double scale_denom = 200000; { mapnik::vector_tile_impl::tile out_tile = ren.create_tile( 2048, 2047, 12, 4096, 0, scale_denom); vector_tile::Tile tile; REQUIRE(tile.ParseFromString(out_tile.get_buffer())); REQUIRE(2 == tile.layers_size()); CHECK(1 == tile.layers(0).features_size()); CHECK(2 == tile.layers(1).features_size()); } { // One layer is filtered out after change of scale denominator. mapnik::vector_tile_impl::tile out_tile = ren.create_tile( 2048, 2047, 12, 4096, 0, scale_denom * 2.0); vector_tile::Tile tile; REQUIRE(tile.ParseFromString(out_tile.get_buffer())); REQUIRE(1 == tile.layers_size()); CHECK(1 == tile.layers(0).features_size()); } } mapnik-vector-tile-1.6.1/test/unit/processor/variables.cpp000066400000000000000000000015761324304754200236770ustar00rootroot00000000000000#include "catch.hpp" // mapnik #include #include #include #include // mapnik-vector-tile #include "vector_tile_processor.hpp" #include "vector_tile_tile.hpp" TEST_CASE("feature processor - can pass variables down to layers") { SECTION("variables are optional") { mapnik::Map map(256, 256); mapnik::attributes empty_vars; mapnik::vector_tile_impl::processor some_processor(map); CHECK( ( empty_vars == some_processor.get_variables() ) ); } SECTION("variables can be passed down to the processor") { mapnik::Map map(256, 256); const mapnik::attributes vars { {"zoom_level", 20} }; mapnik::vector_tile_impl::processor some_processor(map, vars); CHECK( ( vars == some_processor.get_variables() ) ); } } mapnik-vector-tile-1.6.1/test/unit/tile_impl/000077500000000000000000000000001324304754200211515ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/test/unit/tile_impl/tile.cpp000066400000000000000000000323301324304754200226130ustar00rootroot00000000000000#include "catch.hpp" #include // mapnik vector tile tile class #include "vector_tile_tile.hpp" #include "vector_tile_layer.hpp" // mapnik #include #include #include // libprotobuf #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wsign-conversion" #include "vector_tile.pb.h" #pragma GCC diagnostic pop TEST_CASE("Vector tile base class") { mapnik::box2d global_extent(-20037508.342789,-20037508.342789,20037508.342789,20037508.342789); SECTION("default constructed") { mapnik::vector_tile_impl::tile default_tile(global_extent); CHECK(default_tile.size() == 0); CHECK(default_tile.data()[0] == '\0'); CHECK(std::abs(default_tile.scale() - 9783.9396205024) < 0.00001); std::string str; default_tile.serialize_to_string(str); CHECK(str == ""); CHECK(default_tile.is_painted() == false); CHECK(default_tile.is_empty() == true); mapnik::box2d global_buffered_extent(-21289852.6142133139073849,-21289852.6142133139073849,21289852.6142133139073849,21289852.6142133139073849); CHECK(default_tile.extent() == global_extent); CHECK(default_tile.get_buffered_extent() == global_buffered_extent); CHECK(default_tile.tile_size() == 4096); CHECK(default_tile.get_painted_layers().empty() == true); CHECK(default_tile.get_empty_layers().empty() == true); CHECK(default_tile.get_layers().empty() == true); CHECK(default_tile.get_layers_set().empty() == true); CHECK(default_tile.has_layer("anything") == false); vector_tile::Tile t; t.ParseFromString(default_tile.get_buffer()); CHECK(t.layers_size() == 0); } SECTION("construction with zero tile_size") { mapnik::vector_tile_impl::tile zero_size_tile(global_extent, 0, 0); CHECK(zero_size_tile.tile_size() == 0); CHECK(std::abs(zero_size_tile.scale() - 40075016.6855780035) < 0.00001); CHECK(zero_size_tile.extent() == global_extent); CHECK(zero_size_tile.get_buffered_extent() == global_extent); } SECTION("construction with negative tile_size") { mapnik::vector_tile_impl::tile negative_size_tile(global_extent, -1, 0); CHECK(negative_size_tile.tile_size() == 4294967295); CHECK(std::abs(negative_size_tile.scale() - 0.0093306919) < 0.0000001); CHECK(negative_size_tile.get_buffered_extent() == global_extent); } SECTION("construction with positive buffer size") { mapnik::vector_tile_impl::tile positive_buffer_tile(global_extent, 4096, 10); mapnik::box2d buffered_extent(-20135347.7389940246939659,-20135347.7389940246939659,20135347.7389940246939659,20135347.7389940246939659); CHECK(positive_buffer_tile.get_buffered_extent() == buffered_extent); CHECK(positive_buffer_tile.buffer_size() == 10); } SECTION("construction with very negative buffer size") { mapnik::vector_tile_impl::tile negative_buffer_tile(global_extent, 4096, -4000); mapnik::box2d buffered_extent(0.0, 0.0, 0.0, 0.0); CHECK(negative_buffer_tile.get_buffered_extent() == buffered_extent); CHECK(negative_buffer_tile.buffer_size() == -4000); } SECTION("add bogus layer buffer") { mapnik::vector_tile_impl::tile tile(global_extent); std::string bogus_layer_buffer = "blahblah"; tile.append_layer_buffer(bogus_layer_buffer.data(), bogus_layer_buffer.length(), "bogus"); const std::set expected_set{"bogus"}; const std::set empty_set; const std::vector expected_vec{"bogus"}; CHECK(tile.get_painted_layers() == expected_set); CHECK(tile.get_empty_layers() == empty_set); CHECK(tile.get_layers() == expected_vec); CHECK(tile.get_layers_set() == expected_set); CHECK(tile.has_layer("bogus") == true); CHECK(tile.is_painted() == true); CHECK(tile.is_empty() == false); CHECK(tile.size() == 10); std::string str; tile.serialize_to_string(str); CHECK(str == "\32\10blahblah"); std::string buffer(tile.data()); // Check the buffer itself protozero::pbf_reader read_back(buffer); CHECK(read_back.next(3) == true); std::string blah_blah = read_back.get_string(); CHECK(blah_blah == "blahblah"); // Check the provided reader protozero::pbf_reader tile_reader = tile.get_reader(); CHECK(tile_reader.next(3) == true); blah_blah = tile_reader.get_string(); CHECK(blah_blah == "blahblah"); protozero::pbf_reader layer_reader; CHECK_THROWS_AS(tile.layer_reader("bogus", layer_reader), protozero::end_of_buffer_exception); protozero::pbf_reader layer_reader_by_index; bool status = tile.layer_reader(0, layer_reader_by_index); CHECK(status == true); CHECK_THROWS_AS(layer_reader_by_index.next(1), protozero::end_of_buffer_exception); vector_tile::Tile bogus_tile; bogus_tile.ParseFromString(tile.get_buffer()); CHECK(bogus_tile.layers_size() == 1); vector_tile::Tile_Layer bogus_layer = bogus_tile.layers(0); CHECK(bogus_layer.version() == 1); CHECK(bogus_layer.name() == ""); CHECK(bogus_layer.features_size() == 0); CHECK(bogus_layer.keys_size() == 0); CHECK(bogus_layer.values_size() == 0); CHECK(bogus_layer.extent() == 4096); } SECTION("Add valid layer with layer buffer") { mapnik::vector_tile_impl::tile tile(global_extent); // Create layer vector_tile::Tile_Layer layer; layer.set_version(2); layer.set_name("valid"); std::string layer_buffer; layer.SerializePartialToString(&layer_buffer); tile.append_layer_buffer(layer_buffer.data(), layer_buffer.length(), "valid"); const std::set expected_set{"valid"}; const std::set empty_set; const std::vector expected_vec{"valid"}; CHECK(tile.get_painted_layers() == expected_set); CHECK(tile.get_empty_layers() == empty_set); CHECK(tile.get_layers() == expected_vec); CHECK(tile.get_layers_set() == expected_set); CHECK(tile.has_layer("valid") == true); CHECK(tile.is_painted() == true); CHECK(tile.is_empty() == false); protozero::pbf_reader layer_reader_by_name; bool status_by_name = tile.layer_reader("valid", layer_reader_by_name); CHECK(status_by_name == true); CHECK(layer_reader_by_name.next(1) == true); CHECK(layer_reader_by_name.get_string() == "valid"); protozero::pbf_reader layer_reader_by_index; bool status_by_index = tile.layer_reader(0, layer_reader_by_index); CHECK(status_by_index == true); CHECK(layer_reader_by_index.next(1) == true); CHECK(layer_reader_by_index.get_string() == "valid"); vector_tile::Tile parsed_tile; parsed_tile.ParseFromString(tile.get_buffer()); CHECK(parsed_tile.layers_size() == 1); vector_tile::Tile_Layer parsed_layer = parsed_tile.layers(0); CHECK(parsed_layer.version() == 2); CHECK(parsed_layer.name() == "valid"); } SECTION("layer_reader by name works by name in buffer") { // Note - if the names of the layer are different // between the layer in the buffer and in the // tile object, `has_layer` will use the one // in the tile object, but `layer_reader` will // use the name in the buffer mapnik::vector_tile_impl::tile tile(global_extent); // Create layer vector_tile::Tile_Layer layer; layer.set_version(2); layer.set_name("buffer name"); // Add layer to tile std::string layer_buffer; layer.SerializePartialToString(&layer_buffer); tile.append_layer_buffer(layer_buffer.data(), layer_buffer.length(), "layer name"); const std::set expected_set{"layer name"}; const std::vector expected_vec{"layer name"}; // Confirm the use of "layer name" in these methods CHECK(tile.get_painted_layers() == expected_set); CHECK(tile.get_layers() == expected_vec); CHECK(tile.get_layers_set() == expected_set); CHECK(tile.has_layer("layer name") == true); CHECK(tile.has_layer("buffer name") == false); // Confirm the use of "buffer name" in this method protozero::pbf_reader layer_reader_by_buffer_name; bool status_by_buffer_name = tile.layer_reader("buffer name", layer_reader_by_buffer_name); CHECK(status_by_buffer_name == true); CHECK(layer_reader_by_buffer_name.next(1) == true); CHECK(layer_reader_by_buffer_name.get_string() == "buffer name"); protozero::pbf_reader layer_reader_by_name; bool status_by_layer_name = tile.layer_reader("layer name", layer_reader_by_name); CHECK(status_by_layer_name == false); } SECTION("layer ordering is deterministic") { // Newly added layers from buffers are added to the end of // the tile, and are read from the tile in the same order // as they are added mapnik::vector_tile_impl::tile tile(global_extent); // Create layers vector_tile::Tile_Layer layer1, layer2; layer1.set_version(2); layer1.set_name("layer1"); layer2.set_version(2); layer2.set_name("layer2"); std::string layer1_buffer, layer2_buffer; layer1.SerializePartialToString(&layer1_buffer); tile.append_layer_buffer(layer1_buffer.data(), layer1_buffer.length(), "layer1"); layer2.SerializePartialToString(&layer2_buffer); tile.append_layer_buffer(layer2_buffer.data(), layer2_buffer.length(), "layer2"); const std::vector expected_vec{"layer1", "layer2"}; // Both of the layers are here, in order CHECK(tile.get_layers() == expected_vec); CHECK(tile.has_layer("layer1") == true); CHECK(tile.has_layer("layer2") == true); // layer_reader reads them in the same order protozero::pbf_reader layer_reader1, layer_reader2; bool status1 = tile.layer_reader(0, layer_reader1); CHECK(status1 == true); CHECK(layer_reader1.next(1) == true); CHECK(layer_reader1.get_string() == "layer1"); bool status2 = tile.layer_reader(1, layer_reader2); CHECK(status2 == true); CHECK(layer_reader2.next(1) == true); CHECK(layer_reader2.get_string() == "layer2"); } SECTION("cannot add same layer buffer twice") { // Newly added layers from buffers are added to the end of // the tile, and are read from the tile in the same order // as they are added mapnik::vector_tile_impl::tile tile(global_extent); // Create layers vector_tile::Tile_Layer layer1, layer2; layer1.set_version(2); layer1.set_name("layer"); layer2.set_version(2); layer2.set_name("layer"); std::string layer1_buffer, layer2_buffer; layer1.SerializePartialToString(&layer1_buffer); bool status1 = tile.append_layer_buffer(layer1_buffer.data(), layer1_buffer.length(), "layer"); CHECK(status1 == true); layer2.SerializePartialToString(&layer2_buffer); bool status2 = tile.append_layer_buffer(layer2_buffer.data(), layer2_buffer.length(), "layer"); CHECK(status2 == false); } SECTION("index out of bounds for layer_reader method") { mapnik::vector_tile_impl::tile tile(global_extent); // Read a layer from an empty tile protozero::pbf_reader layer_reader; bool status = tile.layer_reader(0, layer_reader); CHECK(status == false); CHECK(layer_reader.next(1) == false); } SECTION("adding a valid layer takes name out of empty layers") { mapnik::vector_tile_impl::tile tile(global_extent); tile.add_empty_layer("layer"); const std::set expected_set{"layer"}; CHECK(tile.get_empty_layers() == expected_set); CHECK(tile.has_layer("layer") == false); CHECK(tile.is_painted() == false); CHECK(tile.is_empty() == true); // Create layers vector_tile::Tile_Layer layer; layer.set_version(2); layer.set_name("layer"); std::string layer_buffer; layer.SerializePartialToString(&layer_buffer); tile.append_layer_buffer(layer_buffer.data(), layer_buffer.length(), "layer"); const std::set empty_set; CHECK(tile.get_empty_layers() == empty_set); CHECK(tile.get_painted_layers() == expected_set); CHECK(tile.has_layer("layer") == true); CHECK(tile.is_painted() == true); CHECK(tile.is_empty() == false); } SECTION("has same extent works correctly") { mapnik::vector_tile_impl::tile tile1(global_extent); mapnik::vector_tile_impl::tile tile2(global_extent); CHECK(tile1.same_extent(tile2) == true); CHECK(tile2.same_extent(tile1) == true); } } mapnik-vector-tile-1.6.1/test/utils/000077500000000000000000000000001324304754200173545ustar00rootroot00000000000000mapnik-vector-tile-1.6.1/test/utils/decoding_util.cpp000066400000000000000000000005671324304754200227010ustar00rootroot00000000000000// test utils #include "decoding_util.hpp" // mapnik-vector-tile #include "vector_tile_geometry_decoder.hpp" mapnik::vector_tile_impl::GeometryPBF feature_to_pbf_geometry(std::string const& feature_string) { protozero::pbf_reader feature_pbf(feature_string); feature_pbf.next(4); return mapnik::vector_tile_impl::GeometryPBF(feature_pbf.get_packed_uint32()); } mapnik-vector-tile-1.6.1/test/utils/decoding_util.hpp000066400000000000000000000005051324304754200226760ustar00rootroot00000000000000#ifndef __MAPNIK_VECTOR_TILE_TEST_DECODING_UTIL_H__ #define __MAPNIK_VECTOR_TILE_TEST_DECODING_UTIL_H__ // mapnik vector tile #include "vector_tile_geometry_decoder.hpp" mapnik::vector_tile_impl::GeometryPBF feature_to_pbf_geometry(std::string const& feature_string); #endif // __MAPNIK_VECTOR_TILE_TEST_DECODING_UTIL_H__ mapnik-vector-tile-1.6.1/test/utils/encoding_util.cpp000066400000000000000000000050661324304754200227120ustar00rootroot00000000000000#include "catch.hpp" // mapnik vector tile #include "vector_tile_geometry_decoder.hpp" #include "vector_tile_geometry_encoder_pbf.hpp" // mapnik #include #include #include // test utils #include "encoding_util.hpp" #include "decoding_util.hpp" #include using namespace mapnik::geometry; struct show_path { std::string & str_; show_path(std::string & out) : str_(out) {} template void operator()(T & path) { unsigned cmd = -1; double x = 0; double y = 0; std::ostringstream s; path.rewind(0); while ((cmd = path.vertex(&x, &y)) != mapnik::SEG_END) { switch (cmd) { case mapnik::SEG_MOVETO: s << "move_to("; break; case mapnik::SEG_LINETO: s << "line_to("; break; case mapnik::SEG_CLOSE: s << "close_path("; break; default: std::clog << "unhandled cmd " << cmd << "\n"; break; } s << x << "," << y << ")\n"; } str_ += s.str(); } }; template std::string decode_to_path_string(mapnik::geometry::geometry const& g) { using decode_path_type = mapnik::geometry::vertex_processor; std::string out; show_path sp(out); mapnik::util::apply_visitor(decode_path_type(sp), g); return out; } std::string compare_pbf(mapbox::geometry::geometry const& g, unsigned version) { std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); REQUIRE(mapnik::vector_tile_impl::encode_geometry_pbf(g, feature_writer, x, y)); protozero::pbf_reader feature_reader(feature_str); int32_t geometry_type = mapnik::vector_tile_impl::Geometry_Type::UNKNOWN; mapnik::vector_tile_impl::GeometryPBF::pbf_itr geom_itr; while (feature_reader.next()) { if (feature_reader.tag() == mapnik::vector_tile_impl::Feature_Encoding::GEOMETRY) { geom_itr = feature_reader.get_packed_uint32(); } else if (feature_reader.tag() == mapnik::vector_tile_impl::Feature_Encoding::TYPE) { geometry_type = feature_reader.get_enum(); } else { feature_reader.skip(); } } mapnik::vector_tile_impl::GeometryPBF geoms(geom_itr); auto g2 = mapnik::vector_tile_impl::decode_geometry(geoms, geometry_type, version, 0.0, 0.0, 1.0, 1.0); return decode_to_path_string(g2); } mapnik-vector-tile-1.6.1/test/utils/encoding_util.hpp000066400000000000000000000007731324304754200227170ustar00rootroot00000000000000#ifndef __MAPNIK_VECTOR_TILE_TEST_ENCODING_UTIL_H__ #define __MAPNIK_VECTOR_TILE_TEST_ENCODING_UTIL_H__ // mapbox #include // libprotobuf #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wsign-conversion" #include "vector_tile.pb.h" #pragma GCC diagnostic pop std::string compare_pbf(mapbox::geometry::geometry const& g, unsigned version); #endif // __MAPNIK_VECTOR_TILE_TEST_ENCODING_UTIL_H__ mapnik-vector-tile-1.6.1/test/utils/geom_to_wkt.cpp000066400000000000000000000005551324304754200224030ustar00rootroot00000000000000// mapnik #include namespace test_utils { bool to_wkt(std::string & wkt, mapnik::geometry::geometry const& geom) { return mapnik::util::to_wkt(wkt, geom); } bool to_wkt(std::string & wkt, mapnik::geometry::geometry const& geom) { return mapnik::util::to_wkt(wkt, geom); } } // end ns test_utils mapnik-vector-tile-1.6.1/test/utils/geom_to_wkt.hpp000066400000000000000000000004021324304754200223770ustar00rootroot00000000000000// mapnik #include namespace test_utils { bool to_wkt(std::string & wkt, mapnik::geometry::geometry const& geom); bool to_wkt(std::string & wkt, mapnik::geometry::geometry const& geom); } // end ns test_utils mapnik-vector-tile-1.6.1/test/utils/geometry_equal.hpp000066400000000000000000000146661324304754200231240ustar00rootroot00000000000000#include "catch.hpp" // boost #include #include #pragma GCC diagnostic push #include #include #include #include #pragma GCC diagnostic pop // helper namespace to ensure correct functionality namespace aux{ namespace adl{ using std::begin; using std::end; template auto do_begin(T& v) -> decltype(begin(v)); template auto do_end(T& v) -> decltype(end(v)); } // adl:: template using zipper_it = boost::zip_iterator>; template T const& as_const(T const& v){ return v; } } // aux:: template auto zip_begin(Conts&... conts) -> aux::zipper_it { using std::begin; return {boost::make_tuple(begin(conts)...)}; } template auto zip_end(Conts&... conts) -> aux::zipper_it { using std::end; return {boost::make_tuple(end(conts)...)}; } template auto zip_range(Conts&... conts) -> boost::iterator_range { return {zip_begin(conts...), zip_end(conts...)}; } // for const access template auto zip_cbegin(Conts&... conts) -> decltype(zip_begin(aux::as_const(conts)...)) { using std::begin; return zip_begin(aux::as_const(conts)...); } template auto zip_cend(Conts&... conts) -> decltype(zip_end(aux::as_const(conts)...)) { using std::end; return zip_end(aux::as_const(conts)...); } template auto zip_crange(Conts&... conts) -> decltype(zip_range(aux::as_const(conts)...)) { return zip_range(aux::as_const(conts)...); } // mapnik #include #include #include #include #include template std::string type_name() { int status; std::string tname = typeid(T).name(); char *demangled_name = abi::__cxa_demangle(tname.c_str(), NULL, NULL, &status); if(status == 0) { tname = demangled_name; std::free(demangled_name); } return tname; } template void assert_g_equal(mapnik::geometry::geometry const& g1, mapnik::geometry::geometry const& g2); struct geometry_equal_visitor { template void operator() (T1 const&, T2 const&) { // comparing two different types! INFO(type_name()); INFO(type_name()); REQUIRE(false); } void operator() (mapnik::geometry::geometry_empty const&, mapnik::geometry::geometry_empty const&) { REQUIRE(true); } template void operator() (mapnik::geometry::point const& p1, mapnik::geometry::point const& p2) { REQUIRE(p1.x == Approx(p2.x)); REQUIRE(p1.y == Approx(p2.y)); } template void operator() (mapnik::geometry::line_string const& ls1, mapnik::geometry::line_string const& ls2) { if (ls1.size() != ls2.size()) { REQUIRE(false); } for(auto const& p : zip_crange(ls1, ls2)) { REQUIRE(p.template get<0>().x == Approx(p.template get<1>().x)); REQUIRE(p.template get<0>().y == Approx(p.template get<1>().y)); } } template void operator() (mapnik::geometry::polygon const& p1, mapnik::geometry::polygon const& p2) { (*this)(static_cast const&>(p1.exterior_ring), static_cast const&>(p2.exterior_ring)); if (p1.interior_rings.size() != p2.interior_rings.size()) { REQUIRE(false); } for (auto const& p : zip_crange(p1.interior_rings, p2.interior_rings)) { (*this)(static_cast const&>(p.template get<0>()),static_cast const&>(p.template get<1>())); } } template void operator() (mapnik::geometry::multi_point const& mp1, mapnik::geometry::multi_point const& mp2) { (*this)(static_cast const&>(mp1), static_cast const&>(mp2)); } template void operator() (mapnik::geometry::multi_line_string const& mls1, mapnik::geometry::multi_line_string const& mls2) { if (mls1.size() != mls2.size()) { REQUIRE(false); } for (auto const& ls : zip_crange(mls1, mls2)) { (*this)(ls.template get<0>(),ls.template get<1>()); } } template void operator() (mapnik::geometry::multi_polygon const& mpoly1, mapnik::geometry::multi_polygon const& mpoly2) { if (mpoly1.size() != mpoly2.size()) { REQUIRE(false); } for (auto const& poly : zip_crange(mpoly1, mpoly2)) { (*this)(poly.template get<0>(),poly.template get<1>()); } } template void operator() (mapnik::util::recursive_wrapper > const& c1_, mapnik::util::recursive_wrapper > const& c2_) { mapnik::geometry::geometry_collection const& c1 = static_cast const&>(c1_); mapnik::geometry::geometry_collection const& c2 = static_cast const&>(c2_); if (c1.size() != c2.size()) { REQUIRE(false); } for (auto const& g : zip_crange(c1, c2)) { assert_g_equal(g.template get<0>(),g.template get<1>()); } } template void operator() (mapnik::geometry::geometry_collection const& c1, mapnik::geometry::geometry_collection const& c2) { if (c1.size() != c2.size()) { REQUIRE(false); } for (auto const& g : zip_crange(c1, c2)) { assert_g_equal(g.template get<0>(),g.template get<1>()); } } }; template void assert_g_equal(mapnik::geometry::geometry const& g1, mapnik::geometry::geometry const& g2) { return mapnik::util::apply_visitor(geometry_equal_visitor(), g1, g2); } template void assert_g_equal(T const& g1, T const& g2) { return geometry_equal_visitor()(g1,g2); } mapnik-vector-tile-1.6.1/test/utils/round_trip.cpp000066400000000000000000000063031324304754200222470ustar00rootroot00000000000000// test utils #include "round_trip.hpp" // mapnik-vector-tile #include "vector_tile_processor.hpp" #include "vector_tile_strategy.hpp" #include "vector_tile_geometry_decoder.hpp" // mapnik #include #include // std #include // libprotobuf #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wsign-conversion" #include "vector_tile.pb.h" #pragma GCC diagnostic pop namespace test_utils { mapnik::geometry::geometry round_trip(mapnik::geometry::geometry const& geom, double simplify_distance, mapnik::vector_tile_impl::polygon_fill_type fill_type, bool mpu) { unsigned tile_size = 256 * 1000; // Create map note its not 3857 -- round trip as 4326 mapnik::Map map(tile_size,tile_size,"+init=epsg:4326"); // create layer mapnik::layer lyr("layer",map.srs()); // create feature with geometry mapnik::context_ptr ctx = std::make_shared(); mapnik::feature_ptr feature(mapnik::feature_factory::create(ctx,1)); mapnik::geometry::geometry g(geom); feature->set_geometry(std::move(g)); mapnik::parameters params; params["type"] = "memory"; std::shared_ptr ds = std::make_shared(params); ds->push(feature); lyr.set_datasource(ds); map.add_layer(lyr); // Build request mapnik::box2d bbox(-180,-90,180,90); // Build processor and create tile mapnik::vector_tile_impl::processor ren(map); ren.set_simplify_distance(simplify_distance); ren.set_fill_type(fill_type); ren.set_multi_polygon_union(mpu); mapnik::vector_tile_impl::tile out_tile = ren.create_tile(bbox, tile_size); if (out_tile.get_layers().size() != 1) { std::stringstream s; s << "expected 1 layer in `round_trip` found " << out_tile.get_layers().size(); throw std::runtime_error(s.str()); } protozero::pbf_reader layer_reader; out_tile.layer_reader(0, layer_reader); if (!layer_reader.next(mapnik::vector_tile_impl::Layer_Encoding::FEATURES)) { throw std::runtime_error("Expected at least one feature in layer"); } protozero::pbf_reader feature_reader = layer_reader.get_message(); int32_t geometry_type = mapnik::vector_tile_impl::Geometry_Type::UNKNOWN; mapnik::vector_tile_impl::GeometryPBF::pbf_itr geom_itr; while (feature_reader.next()) { if (feature_reader.tag() == mapnik::vector_tile_impl::Feature_Encoding::GEOMETRY) { geom_itr = feature_reader.get_packed_uint32(); } else if (feature_reader.tag() == mapnik::vector_tile_impl::Feature_Encoding::TYPE) { geometry_type = feature_reader.get_enum(); } else { feature_reader.skip(); } } mapnik::vector_tile_impl::GeometryPBF geoms(geom_itr); return mapnik::vector_tile_impl::decode_geometry(geoms, geometry_type, 2, 0.0, 0.0, 1000.0, -1000.0); } } // end ns mapnik-vector-tile-1.6.1/test/utils/round_trip.hpp000066400000000000000000000007551324304754200222610ustar00rootroot00000000000000// mapnik-vector-tile #include "vector_tile_processor.hpp" // mapnik #include namespace test_utils { mapnik::geometry::geometry round_trip(mapnik::geometry::geometry const& geom, double simplify_distance=0.0, mapnik::vector_tile_impl::polygon_fill_type fill_type = mapnik::vector_tile_impl::non_zero_fill, bool mpu = false); } // end ns mapnik-vector-tile-1.6.1/test/vector_tile.cpp000066400000000000000000000247431324304754200212510ustar00rootroot00000000000000#include "catch.hpp" // test utils #include "test_utils.hpp" // mapnik #include #include #include #include #include #if MAPNIK_VERSION >= 300100 #include #include #else #include #include #endif #include #include #include #include #include #include #include #include #include // boost #include // mapnik-vector-tile #include "vector_tile_processor.hpp" #include "vector_tile_geometry_decoder.hpp" #include "vector_tile_datasource_pbf.hpp" // libprotobuf #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wsign-conversion" #include "vector_tile.pb.h" #pragma GCC diagnostic pop // std #include TEST_CASE("vector tile from simplified geojson") { unsigned tile_size = 256 * 100; mapnik::Map map(256,256,"+init=epsg:3857"); mapnik::layer lyr("layer","+init=epsg:4326"); std::shared_ptr ds = testing::build_geojson_ds("./test/data/poly.geojson"); ds->set_envelope(mapnik::box2d(160.147311,11.047284,160.662858,11.423830)); lyr.set_datasource(ds); map.add_layer(lyr); mapnik::vector_tile_impl::processor ren(map); mapnik::vector_tile_impl::tile out_tile = ren.create_tile(0,0,0,tile_size); CHECK(out_tile.is_painted() == true); CHECK(out_tile.is_empty() == false); vector_tile::Tile tile; tile.ParseFromString(out_tile.get_buffer()); REQUIRE(1 == tile.layers_size()); vector_tile::Tile_Layer const& layer = tile.layers(0); CHECK(std::string("layer") == layer.name()); REQUIRE(1 == layer.features_size()); vector_tile::Tile_Feature const& f = layer.features(0); unsigned z = 0; unsigned x = 0; unsigned y = 0; double resolution = mapnik::EARTH_CIRCUMFERENCE/(1 << z); double tile_x = -0.5 * mapnik::EARTH_CIRCUMFERENCE + x * resolution; double tile_y = 0.5 * mapnik::EARTH_CIRCUMFERENCE - y * resolution; double scale = static_cast(layer.extent())/resolution; protozero::pbf_reader layer_reader; out_tile.layer_reader(0, layer_reader); REQUIRE(layer_reader.next(mapnik::vector_tile_impl::Layer_Encoding::FEATURES)); protozero::pbf_reader feature_reader = layer_reader.get_message(); int32_t geometry_type = mapnik::vector_tile_impl::Geometry_Type::UNKNOWN; mapnik::vector_tile_impl::GeometryPBF::pbf_itr geom_itr; while (feature_reader.next()) { if (feature_reader.tag() == mapnik::vector_tile_impl::Feature_Encoding::GEOMETRY) { geom_itr = feature_reader.get_packed_uint32(); } else if (feature_reader.tag() == mapnik::vector_tile_impl::Feature_Encoding::TYPE) { geometry_type = feature_reader.get_enum(); } else { feature_reader.skip(); } } mapnik::vector_tile_impl::GeometryPBF geoms(geom_itr); auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, geometry_type, 2, tile_x, tile_y, scale, -1.0 * scale); unsigned int n_err = 0; mapnik::projection wgs84("+init=epsg:4326",true); mapnik::projection merc("+init=epsg:3857",true); mapnik::proj_transform prj_trans(merc,wgs84); mapnik::geometry::geometry projected_geom = mapnik::geometry::reproject_copy(geom,prj_trans,n_err); CHECK( n_err == 0 ); std::string geojson_string; CHECK( mapnik::util::to_geojson(geojson_string,projected_geom) ); std::string geojson_file = "./test/data/simplified_geometry.geojson"; mapnik::util::file input(geojson_file); if (input.is_open()) { std::string json_string(input.data().get(), input.size()); CHECK (geojson_string == json_string); } if (!mapnik::util::exists(geojson_file) || (std::getenv("UPDATE") != nullptr)) { std::ofstream out(geojson_file); out << geojson_string; } } TEST_CASE("vector tile transform -- should not throw on coords outside merc range") { unsigned tile_size = 256 * 64; mapnik::Map map(256,256,"+init=epsg:3857"); // Note: 4269 is key. 4326 will trigger custom mapnik reprojection code // that does not hit proj4 and clamps values mapnik::layer lyr("layer","+init=epsg:4269"); mapnik::parameters params; params["type"] = "shape"; params["file"] = "./test/data/poly-lat-invalid-4269.shp"; std::shared_ptr ds = mapnik::datasource_cache::instance().create(params); lyr.set_datasource(ds); map.add_layer(lyr); mapnik::vector_tile_impl::processor ren(map); mapnik::vector_tile_impl::tile out_tile = ren.create_tile(0,0,0,tile_size); CHECK(out_tile.is_painted() == true); CHECK(out_tile.is_empty() == false); vector_tile::Tile tile; tile.ParseFromString(out_tile.get_buffer()); // serialize to message std::string buffer; CHECK(tile.SerializeToString(&buffer)); CHECK(71 == buffer.size()); // now create new objects mapnik::Map map2(256,256,"+init=epsg:3857"); vector_tile::Tile tile2; CHECK(tile2.ParseFromString(buffer)); CHECK(1 == tile2.layers_size()); vector_tile::Tile_Layer const& layer2 = tile2.layers(0); CHECK(std::string("layer") == layer2.name()); CHECK(1 == layer2.features_size()); CHECK(1 == layer2.features(0).id()); CHECK(3 == layer2.features(0).type()); mapnik::layer lyr2("layer",map.srs()); protozero::pbf_reader layer_reader; out_tile.layer_reader(0, layer_reader); std::shared_ptr ds2 = std::make_shared< mapnik::vector_tile_impl::tile_datasource_pbf>( layer_reader,0,0,0); //ds2->set_envelope(bbox); CHECK( ds2->type() == mapnik::datasource::Vector ); CHECK( ds2->get_geometry_type() == mapnik::datasource_geometry_t::Collection ); mapnik::layer_descriptor lay_desc = ds2->get_descriptor(); std::vector expected_names; expected_names.push_back("FID"); std::vector names; for (auto const& desc : lay_desc.get_descriptors()) { names.push_back(desc.get_name()); } CHECK(names == expected_names); lyr2.set_datasource(ds2); lyr2.add_style("style"); map2.add_layer(lyr2); mapnik::load_map(map2,"test/data/polygon-style.xml"); //std::clog << mapnik::save_map_to_string(map2) << "\n"; map2.zoom_all(); mapnik::image_rgba8 im(map2.width(),map2.height()); mapnik::agg_renderer ren2(map2,im); ren2.apply(); if (!mapnik::util::exists("test/fixtures/transform-expected-1.png")) { mapnik::save_to_file(im,"test/fixtures/transform-expected-1.png","png32"); } unsigned diff = testing::compare_images(im,"test/fixtures/transform-expected-1.png"); CHECK(0 == diff); if (diff > 0) { mapnik::save_to_file(im,"test/fixtures/transform-actual-1.png","png32"); } } TEST_CASE("vector tile transform2 -- should not throw reprojected data from local NZ projection") { unsigned tile_size = 256 * 64; mapnik::box2d bbox(-20037508.342789,-20037508.342789,20037508.342789,20037508.342789); mapnik::Map map(256,256,"+init=epsg:3857"); // Note: 4269 is key. 4326 will trigger custom mapnik reprojection code // that does not hit proj4 and clamps values mapnik::layer lyr("layer","+proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 +ellps=intl +units=m +no_defs"); mapnik::parameters params; params["type"] = "shape"; params["file"] = "./test/data/NZ_Coastline_NZMG.shp"; std::shared_ptr ds = mapnik::datasource_cache::instance().create(params); lyr.set_datasource(ds); map.add_layer(lyr); mapnik::vector_tile_impl::processor ren(map); mapnik::vector_tile_impl::tile out_tile = ren.create_tile(0,0,0,tile_size); CHECK(out_tile.is_painted() == true); CHECK(out_tile.is_empty() == false); vector_tile::Tile tile; tile.ParseFromString(out_tile.get_buffer()); // serialize to message std::string buffer; CHECK(tile.SerializeToString(&buffer)); CHECK(231 == buffer.size()); // now create new objects mapnik::Map map2(256,256,"+init=epsg:3857"); vector_tile::Tile tile2; CHECK(tile2.ParseFromString(buffer)); CHECK(1 == tile2.layers_size()); vector_tile::Tile_Layer const& layer2 = tile2.layers(0); CHECK(std::string("layer") == layer2.name()); CHECK(2 == layer2.features_size()); mapnik::layer lyr2("layer",map.srs()); protozero::pbf_reader layer_reader; out_tile.layer_reader(0, layer_reader); std::shared_ptr ds2 = std::make_shared< mapnik::vector_tile_impl::tile_datasource_pbf>( layer_reader,0,0,0); ds2->set_envelope(bbox); CHECK( ds2->type() == mapnik::datasource::Vector ); CHECK( ds2->get_geometry_type() == mapnik::datasource_geometry_t::Collection ); mapnik::layer_descriptor lay_desc = ds2->get_descriptor(); std::vector expected_names; expected_names.push_back("featurecla"); expected_names.push_back("scalerank"); std::vector names; for (auto const& desc : lay_desc.get_descriptors()) { names.push_back(desc.get_name()); } CHECK(names == expected_names); lyr2.set_datasource(ds2); lyr2.add_style("style"); map2.add_layer(lyr2); mapnik::load_map(map2,"test/data/polygon-style.xml"); //std::clog << mapnik::save_map_to_string(map2) << "\n"; map2.zoom_to_box(bbox); mapnik::image_rgba8 im(map2.width(),map2.height()); mapnik::agg_renderer ren2(map2,im); ren2.apply(); if (!mapnik::util::exists("test/fixtures/transform-expected-2.png")) { mapnik::save_to_file(im,"test/fixtures/transform-expected-2.png","png32"); } unsigned diff = testing::compare_images(im,"test/fixtures/transform-expected-2.png"); CHECK(0 == diff); if (diff > 0) { mapnik::save_to_file(im,"test/fixtures/transform-actual-2.png","png32"); } } mapnik-vector-tile-1.6.1/test/vector_tile_pbf.cpp000066400000000000000000000565321324304754200221010ustar00rootroot00000000000000#include "catch.hpp" // test utils #include "test_utils.hpp" // mapnik #include #include #include #include #include #include #include #include #include #include #include #include #if MAPNIK_VERSION >= 300100 #include #include #include #include #else #include #include #include #include #endif #include #include #include // mapbox #include // boost #include // mapnik-vector-tile #include "vector_tile_compression.hpp" #include "vector_tile_processor.hpp" #include "vector_tile_projection.hpp" #include "vector_tile_geometry_decoder.hpp" #include "vector_tile_geometry_encoder_pbf.hpp" #include "vector_tile_datasource_pbf.hpp" //protozero #include "protozero/pbf_reader.hpp" //std #include #include #include // libprotobuf #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wsign-conversion" #include "vector_tile.pb.h" #pragma GCC diagnostic pop TEST_CASE("pbf vector tile input") { unsigned tile_size = 4096; mapnik::Map map(256,256,"+init=epsg:3857"); mapnik::layer lyr("layer",map.srs()); lyr.set_datasource(testing::build_ds(0,0)); map.add_layer(lyr); mapnik::vector_tile_impl::processor ren(map); mapnik::vector_tile_impl::tile out_tile = ren.create_tile(0,0,0,tile_size); CHECK(out_tile.is_painted() == true); CHECK(out_tile.is_empty() == false); vector_tile::Tile tile; tile.ParseFromString(out_tile.get_buffer()); // serialize to message std::string buffer; CHECK(tile.SerializeToString(&buffer)); CHECK(147 == buffer.size()); // now create new objects mapnik::Map map2(256,256,"+init=epsg:3857"); vector_tile::Tile tile2; CHECK(tile2.ParseFromString(buffer)); CHECK(1 == tile2.layers_size()); vector_tile::Tile_Layer const& layer2 = tile2.layers(0); CHECK(std::string("layer") == layer2.name()); CHECK(1 == layer2.features_size()); mapnik::layer lyr2("layer",map.srs()); protozero::pbf_reader pbf_tile(buffer); pbf_tile.next(); protozero::pbf_reader layer3 = pbf_tile.get_message(); std::shared_ptr ds = std::make_shared< mapnik::vector_tile_impl::tile_datasource_pbf>( layer3,0,0,0); CHECK(ds->get_name() == "layer"); mapnik::box2d bbox(-20037508.342789,-20037508.342789,20037508.342789,20037508.342789); ds->set_envelope(bbox); CHECK( ds->type() == mapnik::datasource::Vector ); CHECK( ds->get_geometry_type() == mapnik::datasource_geometry_t::Collection ); mapnik::layer_descriptor lay_desc = ds->get_descriptor(); std::set expected_names; expected_names.insert("bool"); expected_names.insert("boolf"); expected_names.insert("double"); expected_names.insert("float"); expected_names.insert("int"); expected_names.insert("name"); expected_names.insert("uint"); std::size_t desc_count = 0; for (auto const& desc : lay_desc.get_descriptors()) { ++desc_count; CHECK(expected_names.count(desc.get_name()) == 1); } CHECK(desc_count == expected_names.size()); lyr2.set_datasource(ds); lyr2.add_style("style"); map2.add_layer(lyr2); mapnik::load_map(map2,"test/data/style.xml"); //std::clog << mapnik::save_map_to_string(map2) << "\n"; map2.zoom_all(); mapnik::image_rgba8 im(map2.width(),map2.height()); mapnik::agg_renderer ren2(map2,im); ren2.apply(); if (!mapnik::util::exists("test/fixtures/expected-1.png")) { mapnik::save_to_file(im,"test/fixtures/expected-1.png","png32"); } unsigned diff = testing::compare_images(im,"test/fixtures/expected-1.png"); CHECK(0 == diff); if (diff > 0) { mapnik::save_to_file(im,"test/fixtures/actual-1.png","png32"); } } TEST_CASE("pbf vector tile datasource") { unsigned tile_size = 4096; mapnik::Map map(tile_size,tile_size,"+init=epsg:3857"); mapnik::layer lyr("layer",map.srs()); lyr.set_datasource(testing::build_ds(0,0)); map.add_layer(lyr); mapnik::vector_tile_impl::processor ren(map); mapnik::vector_tile_impl::tile out_tile = ren.create_tile(0,0,0); // serialize to message std::string buffer; out_tile.serialize_to_string(buffer); CHECK(out_tile.is_painted() == true); CHECK(out_tile.is_empty() == false); // check that vector tile contains proper information vector_tile::Tile tile; tile.ParseFromString(out_tile.get_buffer()); REQUIRE(1 == tile.layers_size()); vector_tile::Tile_Layer const& layer = tile.layers(0); CHECK(std::string("layer") == layer.name()); REQUIRE(1 == layer.features_size()); vector_tile::Tile_Feature const& f = layer.features(0); CHECK(static_cast(1) == static_cast(f.id())); CHECK(3 == f.geometry_size()); CHECK(9 == f.geometry(0)); CHECK(4096 == f.geometry(1)); CHECK(4096 == f.geometry(2)); protozero::pbf_reader pbf_tile(buffer); pbf_tile.next(); protozero::pbf_reader layer2 = pbf_tile.get_message(); // now actually start the meat of the test mapnik::vector_tile_impl::tile_datasource_pbf ds(layer2,0,0,0); mapnik::featureset_ptr fs; // ensure we can query single feature mapnik::box2d bbox(-20037508.342789,-20037508.342789,20037508.342789,20037508.342789); fs = ds.features(mapnik::query(bbox)); mapnik::feature_ptr feat = fs->next(); REQUIRE(feat != mapnik::feature_ptr()); CHECK(feat->size() == 0); CHECK(fs->next() == mapnik::feature_ptr()); mapnik::query qq = mapnik::query(mapnik::box2d(-1,-1,1,1)); qq.add_property_name("name"); fs = ds.features(qq); feat = fs->next(); REQUIRE(feat != mapnik::feature_ptr()); CHECK(feat->size() == 1); CHECK(feat->get("name") == mapnik::value_unicode_string("null island")); // now check that datasource api throws out feature which is outside extent fs = ds.features(mapnik::query(mapnik::box2d(-10,-10,-10,-10))); CHECK(fs->next() == mapnik::feature_ptr()); // ensure same behavior for feature_at_point fs = ds.features_at_point(mapnik::coord2d(0.0,0.0),0.0001); REQUIRE(fs->next() != mapnik::feature_ptr()); fs = ds.features_at_point(mapnik::coord2d(1.0,1.0),1.0001); REQUIRE(fs->next() != mapnik::feature_ptr()); fs = ds.features_at_point(mapnik::coord2d(-10,-10),0); CHECK(fs->next() == mapnik::feature_ptr()); // finally, make sure attributes are also filtered mapnik::feature_ptr f_ptr; fs = ds.features(mapnik::query(bbox)); f_ptr = fs->next(); REQUIRE(f_ptr != mapnik::feature_ptr()); // no attributes CHECK(f_ptr->context()->size() == 0); mapnik::query q(bbox); q.add_property_name("name"); fs = ds.features(q); f_ptr = fs->next(); REQUIRE(f_ptr != mapnik::feature_ptr()); // one attribute CHECK(f_ptr->context()->size() == 1); } TEST_CASE("pbf encoding multi line") { mapbox::geometry::multi_line_string geom; { mapbox::geometry::line_string ring; ring.emplace_back(0,0); ring.emplace_back(2,2); geom.emplace_back(std::move(ring)); } { mapbox::geometry::line_string ring; ring.emplace_back(1,1); ring.emplace_back(2,2); geom.emplace_back(std::move(ring)); } vector_tile::Tile tile; vector_tile::Tile_Layer * t_layer = tile.add_layers(); t_layer->set_name("layer"); t_layer->set_version(2); t_layer->set_extent(4096); vector_tile::Tile_Feature * t_feature = t_layer->add_features(); std::int32_t x = 0; std::int32_t y = 0; std::string feature_str; protozero::pbf_writer feature_writer(feature_str); CHECK(mapnik::vector_tile_impl::encode_geometry_pbf(geom, feature_writer, x, y)); t_feature->ParseFromString(feature_str); std::string buffer; tile.SerializeToString(&buffer); REQUIRE(1 == tile.layers_size()); vector_tile::Tile_Layer const& layer = tile.layers(0); REQUIRE(1 == layer.features_size()); vector_tile::Tile_Feature const& f = layer.features(0); CHECK(12 == f.geometry_size()); CHECK(9 == f.geometry(0)); // 1 move_to CHECK(0 == f.geometry(1)); // x:0 CHECK(0 == f.geometry(2)); // y:0 CHECK(10 == f.geometry(3)); // 1 line_to CHECK(4 == f.geometry(4)); // x:2 CHECK(4 == f.geometry(5)); // y:2 CHECK(9 == f.geometry(6)); // 1 move_to CHECK(1 == f.geometry(7)); // x:1 CHECK(1 == f.geometry(8)); // y:1 CHECK(10 == f.geometry(9)); // 1 line_to CHECK(2 == f.geometry(10)); // x:2 CHECK(2 == f.geometry(11)); // y:2 mapnik::featureset_ptr fs; mapnik::feature_ptr f_ptr; protozero::pbf_reader pbf_tile(buffer); pbf_tile.next(); protozero::pbf_reader layer2 = pbf_tile.get_message(); unsigned tile_size = 4096; mapnik::vector_tile_impl::tile_datasource_pbf ds(layer2,0,0,0); mapnik::box2d bbox(-20037508.342789,-20037508.342789,20037508.342789,20037508.342789); fs = ds.features(mapnik::query(bbox)); f_ptr = fs->next(); REQUIRE(f_ptr != mapnik::feature_ptr()); // no attributes CHECK(f_ptr->context()->size() == 0); CHECK(f_ptr->get_geometry().is >()); } // NOTE: encoding multiple lines as one path is technically incorrect // because in Mapnik the protocol is to split geometry parts into separate paths. // However this case should still be supported because keeping a single flat array is an // important optimization in the case that lines do not need to be labeled in custom ways // or represented as GeoJSON TEST_CASE( "pbf decoding empty buffer", "should throw exception" ) { std::string buffer; protozero::pbf_reader pbf_tile(buffer); pbf_tile.next(); protozero::pbf_reader layer2; #if defined(DNDEBUG) // throws in release mode REQUIRE_THROWS(layer2 = pbf_tile.get_message()); #else // aborts in protozero in debug mode #endif } TEST_CASE( "pbf decoding garbage buffer", "should throw exception" ) { std::string buffer("daufyglwi3h7fseuhfas8w3h,dksufasdf"); protozero::pbf_reader pbf_tile(buffer); REQUIRE_THROWS_AS(pbf_tile.next(), protozero::unknown_pbf_wire_type_exception); protozero::pbf_reader layer2; #if defined(DNDEBUG) // throws in release mode REQUIRE_THROWS(layer2 = pbf_tile.get_message()); #else // aborts in protozero in debug mode #endif } TEST_CASE("pbf decoding some truncated buffers") { unsigned tile_size = 4096; mapnik::box2d bbox(-20037508.342789,-20037508.342789,20037508.342789,20037508.342789); mapnik::Map map(tile_size,tile_size,"+init=epsg:3857"); mapnik::layer lyr("layer",map.srs()); lyr.set_datasource(testing::build_ds(0,0)); map.add_layer(lyr); // Create processor mapnik::vector_tile_impl::processor ren(map); // Request Tile mapnik::vector_tile_impl::tile out_tile = ren.create_tile(0,0,0); CHECK(out_tile.is_painted() == true); CHECK(out_tile.is_empty() == false); // Now check that the tile is correct. vector_tile::Tile tile; tile.ParseFromString(out_tile.get_buffer()); REQUIRE(1 == tile.layers_size()); vector_tile::Tile_Layer const& layer = tile.layers(0); CHECK(std::string("layer") == layer.name()); REQUIRE(1 == layer.features_size()); vector_tile::Tile_Feature const& f = layer.features(0); CHECK(static_cast(1) == static_cast(f.id())); CHECK(3 == f.geometry_size()); CHECK(9 == f.geometry(0)); CHECK(4096 == f.geometry(1)); CHECK(4096 == f.geometry(2)); std::string buffer; out_tile.serialize_to_string(buffer); // We will test truncating the generated protobuf at every increment. // Most cases should fail, except for the lucky bites where we chop // it off at a point that would be valid anyway. for (std::size_t i=1; i< buffer.size(); ++i) { CHECK_THROWS( { protozero::pbf_reader pbf_tile(buffer.c_str(), i); pbf_tile.next(); protozero::pbf_reader layer2 = pbf_tile.get_message(); mapnik::vector_tile_impl::tile_datasource_pbf ds(layer2,0,0,0); mapnik::featureset_ptr fs; mapnik::feature_ptr f_ptr; fs = ds.features(mapnik::query(bbox)); f_ptr = fs->next(); while (f_ptr != mapnik::feature_ptr()) { f_ptr = fs->next(); } } ); } } TEST_CASE("pbf vector tile from simplified geojson") { unsigned tile_size = 256 * 100; mapnik::Map map(tile_size,tile_size,"+init=epsg:3857"); mapnik::layer lyr("layer","+init=epsg:4326"); std::shared_ptr ds = testing::build_geojson_ds("./test/data/poly.geojson"); ds->set_envelope(mapnik::box2d(160.147311,11.047284,160.662858,11.423830)); lyr.set_datasource(ds); map.add_layer(lyr); mapnik::vector_tile_impl::processor ren(map); mapnik::vector_tile_impl::tile out_tile = ren.create_tile(0,0,0,tile_size); CHECK(out_tile.is_painted() == true); CHECK(out_tile.is_empty() == false); vector_tile::Tile tile; tile.ParseFromString(out_tile.get_buffer()); REQUIRE(1 == tile.layers_size()); vector_tile::Tile_Layer const& layer = tile.layers(0); CHECK(std::string("layer") == layer.name()); REQUIRE(1 == layer.features_size()); vector_tile::Tile_Feature const& f = layer.features(0); unsigned z = 0; unsigned x = 0; unsigned y = 0; double resolution = mapnik::EARTH_CIRCUMFERENCE/(1 << z); double tile_x = -0.5 * mapnik::EARTH_CIRCUMFERENCE + x * resolution; double tile_y = 0.5 * mapnik::EARTH_CIRCUMFERENCE - y * resolution; double scale = (static_cast(layer.extent()) / tile_size) * tile_size/resolution; std::string buffer; tile.SerializeToString(&buffer); protozero::pbf_reader pbf_tile(buffer); pbf_tile.next(); protozero::pbf_reader pbf_layer = pbf_tile.get_message(); // Need to loop because they could be encoded in any order bool found = false; while (!found && pbf_layer.next(2)) { // But there will be only one in our tile, so we'll break out of loop once we find it protozero::pbf_reader pbf_feature = pbf_layer.get_message(); while (!found && pbf_feature.next(4)) { found = true; mapnik::vector_tile_impl::GeometryPBF::pbf_itr geom_itr = pbf_feature.get_packed_uint32(); mapnik::vector_tile_impl::GeometryPBF geoms(geom_itr); auto geom = mapnik::vector_tile_impl::decode_geometry(geoms, f.type(), 2, tile_x, tile_y, scale, -1.0 * scale); unsigned int n_err = 0; mapnik::projection wgs84("+init=epsg:4326",true); mapnik::projection merc("+init=epsg:3857",true); mapnik::proj_transform prj_trans(merc,wgs84); mapnik::geometry::geometry projected_geom = mapnik::geometry::reproject_copy(geom,prj_trans,n_err); CHECK( n_err == 0 ); std::string geojson_string; CHECK( mapnik::util::to_geojson(geojson_string,projected_geom) ); std::string geojson_file = "./test/data/simplified_geometry_pbf.geojson"; mapnik::util::file input(geojson_file); if (!mapnik::util::exists(geojson_file) || (std::getenv("UPDATE") != nullptr)) { std::ofstream out(geojson_file); out << geojson_string; } else if (input.is_open()) { std::string json_string(input.data().get(), input.size()); CHECK (geojson_string == json_string); } break; } } REQUIRE( found ); } TEST_CASE("pbf raster tile output -- should be able to overzoom raster") { unsigned tile_size = 4096; int buffer_size = 1024; mapnik::vector_tile_impl::merc_tile out_tile(0, 0, 0, tile_size, buffer_size); { mapnik::box2d const& bbox = out_tile.extent(); std::ostringstream s; s << std::fixed << std::setprecision(16) << bbox.minx() << ',' << bbox.miny() << ',' << bbox.maxx() << ',' << bbox.maxy(); // build map mapnik::Map map(tile_size,tile_size,"+init=epsg:3857"); map.set_buffer_size(buffer_size); mapnik::layer lyr("layer",map.srs()); mapnik::parameters params; params["type"] = "gdal"; params["extent"] = s.str(); params["file"] = "test/data/256x256.png"; std::shared_ptr ds = mapnik::datasource_cache::instance().create(params); lyr.set_datasource(ds); map.add_layer(lyr); // build processor mapnik::vector_tile_impl::processor ren(map); ren.set_image_format("jpeg"); ren.set_scaling_method(mapnik::SCALING_BILINEAR); // Update the tile ren.update_tile(out_tile); } vector_tile::Tile tile; tile.ParseFromString(out_tile.get_buffer()); // Done creating test data, now test created tile REQUIRE(1 == tile.layers_size()); vector_tile::Tile_Layer const& layer = tile.layers(0); CHECK(std::string("layer") == layer.name()); REQUIRE(1 == layer.features_size()); vector_tile::Tile_Feature const& f = layer.features(0); CHECK(static_cast(1) == static_cast(f.id())); CHECK(0 == f.geometry_size()); CHECK(f.has_raster()); std::string const& ras_buffer = f.raster(); CHECK(!ras_buffer.empty()); // confirm tile looks correct as encoded std::string buffer; CHECK(tile.SerializeToString(&buffer)); protozero::pbf_reader pbf_tile(buffer); pbf_tile.next(); protozero::pbf_reader layer2 = pbf_tile.get_message(); // now read back and render image at larger size // and zoomed in // 2/0/1.png mapnik::box2d bbox = mapnik::vector_tile_impl::tile_mercator_bbox(0,1,2); mapnik::Map map2(256,256,"+init=epsg:3857"); map2.set_buffer_size(1024); mapnik::layer lyr2("layer",map2.srs()); std::shared_ptr ds2 = std::make_shared< mapnik::vector_tile_impl::tile_datasource_pbf>( layer2,0,0,0); lyr2.set_datasource(ds2); lyr2.add_style("style"); map2.add_layer(lyr2); mapnik::load_map(map2,"test/data/raster_style.xml"); map2.zoom_to_box(bbox); mapnik::image_rgba8 im(map2.width(),map2.height()); mapnik::agg_renderer ren2(map2,im); ren2.apply(); if (!mapnik::util::exists("test/fixtures/expected-3.png")) { mapnik::save_to_file(im,"test/fixtures/expected-3.png","png32"); } unsigned diff = testing::compare_images(im,"test/fixtures/expected-3.png"); CHECK(0 == diff); if (diff > 0) { mapnik::save_to_file(im,"test/fixtures/actual-3.png","png32"); } } TEST_CASE("Check that we throw on various valid-but-we-don't-handle PBF encoded files") { std::vector filenames = {"test/data/tile_with_extra_feature_field.mvt", "test/data/tile_with_extra_layer_fields.mvt", "test/data/tile_with_invalid_layer_value_type.mvt", "test/data/tile_with_unexpected_geomtype.mvt"}; for (auto const& f : filenames) { std::ifstream t(f); REQUIRE(t.is_open()); std::string buffer((std::istreambuf_iterator(t)), std::istreambuf_iterator()); CHECK_THROWS({ mapnik::box2d bbox(-20037508.342789,-20037508.342789,20037508.342789,20037508.342789); unsigned tile_size = 4096; protozero::pbf_reader pbf_tile(buffer); pbf_tile.next(); protozero::pbf_reader layer2 = pbf_tile.get_message(); mapnik::vector_tile_impl::tile_datasource_pbf ds(layer2,0,0,0); mapnik::featureset_ptr fs; mapnik::feature_ptr f_ptr; fs = ds.features(mapnik::query(bbox)); f_ptr = fs->next(); while (f_ptr != mapnik::feature_ptr()) { f_ptr = fs->next(); } }); } } TEST_CASE("pbf vector tile from linestring geojson") { unsigned tile_size = 4096; mapnik::Map map(tile_size,tile_size,"+init=epsg:3857"); mapnik::layer lyr("layer","+init=epsg:4326"); auto ds = testing::build_geojson_fs_ds("./test/data/linestrings_and_point.geojson"); lyr.set_datasource(ds); map.add_layer(lyr); mapnik::vector_tile_impl::processor ren(map); // Request Tile mapnik::vector_tile_impl::tile out_tile = ren.create_tile(0,0,0); CHECK(out_tile.is_painted() == true); CHECK(out_tile.is_empty() == false); // Now check that the tile is correct. vector_tile::Tile tile; tile.ParseFromString(out_tile.get_buffer()); REQUIRE(1 == tile.layers_size()); vector_tile::Tile_Layer const& layer = tile.layers(0); CHECK(std::string("layer") == layer.name()); REQUIRE(3 == layer.features_size()); std::string buffer; tile.SerializeToString(&buffer); protozero::pbf_reader pbf_tile(buffer); pbf_tile.next(); protozero::pbf_reader layer3 = pbf_tile.get_message(); std::shared_ptr ds2 = std::make_shared< mapnik::vector_tile_impl::tile_datasource_pbf>( layer3,0,0,0); CHECK(ds2->get_name() == "layer"); mapnik::box2d bbox(-20037508.342789,-20037508.342789,20037508.342789,20037508.342789); mapnik::query q(bbox); // note: https://github.com/mapbox/mapnik-vector-tile/issues/132 does not occur // if we uncomment these lines //q.add_property_name("x"); //q.add_property_name("y"); std::size_t expected_num_attr_returned = q.property_names().size(); auto fs = ds2->features(q); auto f_ptr = fs->next(); REQUIRE(f_ptr != mapnik::feature_ptr()); // no attributes CHECK(f_ptr->context()->size() == expected_num_attr_returned); CHECK(f_ptr->get_geometry().is >()); // second feature f_ptr = fs->next(); REQUIRE(f_ptr != mapnik::feature_ptr()); CHECK(f_ptr->context()->size() == expected_num_attr_returned); CHECK(f_ptr->get_geometry().is >()); // third feature f_ptr = fs->next(); REQUIRE(f_ptr != mapnik::feature_ptr()); CHECK(f_ptr->context()->size() == expected_num_attr_returned); CHECK(f_ptr->get_geometry().is >()); // only three features f_ptr = fs->next(); CHECK(f_ptr == mapnik::feature_ptr()); } mapnik-vector-tile-1.6.1/test/vector_tile_projection.cpp000066400000000000000000000072401324304754200234760ustar00rootroot00000000000000#include "catch.hpp" #include #include #include #include #include "vector_tile_projection.hpp" std::vector pointToTile(double lon, double lat, unsigned z) { double s = std::sin(lat * M_PI / 180.0); double z2 = std::pow(2.0,z); double x = z2 * (lon / 360.0 + 0.5); double y = z2 * (0.5 - 0.25 * std::log((1 + s) / (1 - s)) / M_PI) - 1; return { x, y }; } int getBboxZoom(std::vector const& bbox) { int MAX_ZOOM = 32; for (int z = 0; z < MAX_ZOOM; z++) { int mask = (1 << (32 - (z + 1))); if (((static_cast(bbox[0]) & mask) != (static_cast(bbox[2]) & mask)) || ((static_cast(bbox[1]) & mask) != (static_cast(bbox[3]) & mask))) { return z; } } return MAX_ZOOM; } std::vector bboxToXYZ(mapnik::box2d const& bboxCoords) { double minx = bboxCoords.minx(); double miny = bboxCoords.miny(); double maxx = bboxCoords.maxx(); double maxy = bboxCoords.maxy(); mapnik::merc2lonlat(&minx,&miny,1); mapnik::merc2lonlat(&maxx,&maxy,1); std::vector ubbox = { minx, miny, maxx, maxy }; unsigned z = getBboxZoom(ubbox); if (z == 0) return {0, 0, 0}; minx = pointToTile(minx, miny, 32)[0]; miny = pointToTile(minx, miny, 32)[1]; unsigned x = static_cast(minx); unsigned y = static_cast(miny); return {x, y, z}; } TEST_CASE( "vector tile projection 1", "should support z/x/y to bbox conversion at 0/0/0" ) { mapnik::box2d map_extent = mapnik::vector_tile_impl::tile_mercator_bbox(0,0,0); mapnik::box2d e(-20037508.342789,-20037508.342789,20037508.342789,20037508.342789); double epsilon = 0.000001; CHECK(std::fabs(map_extent.minx() - e.minx()) < epsilon); CHECK(std::fabs(map_extent.miny() - e.miny()) < epsilon); CHECK(std::fabs(map_extent.maxx() - e.maxx()) < epsilon); CHECK(std::fabs(map_extent.maxy() - e.maxy()) < epsilon); auto xyz = bboxToXYZ(map_extent); /* CHECK(xyz[0] == 0); CHECK(xyz[1] == 0); CHECK(xyz[2] == 0); */ } TEST_CASE( "vector tile projection 2", "should support z/x/y to bbox conversion up to z33" ) { int x = 2145960701; int y = 1428172928; int z = 32; mapnik::box2d map_extent = mapnik::vector_tile_impl::tile_mercator_bbox(x,y,z); mapnik::box2d e(-14210.1492817168364127,6711666.7204630710184574,-14210.1399510249066225,6711666.7297937674447894); double epsilon = 0.00000001; CHECK(std::fabs(map_extent.minx() - e.minx()) < epsilon); CHECK(std::fabs(map_extent.miny() - e.miny()) < epsilon); CHECK(std::fabs(map_extent.maxx() - e.maxx()) < epsilon); CHECK(std::fabs(map_extent.maxy() - e.maxy()) < epsilon); auto xyz = bboxToXYZ(map_extent); /* CHECK(xyz[0] == x); CHECK(xyz[1] == y); CHECK(xyz[2] == z); */ } TEST_CASE( "vector tile projection 3", "should support z/x/y to bbox conversion for z3" ) { int x = 3; int y = 3; int z = 3; mapnik::box2d map_extent = mapnik::vector_tile_impl::tile_mercator_bbox(x,y,z); mapnik::box2d e(-5009377.085697311,0.0,0.0,5009377.085697311); double epsilon = 0.00000001; CHECK(std::fabs(map_extent.minx() - e.minx()) < epsilon); CHECK(std::fabs(map_extent.miny() - e.miny()) < epsilon); CHECK(std::fabs(map_extent.maxx() - e.maxx()) < epsilon); CHECK(std::fabs(map_extent.maxy() - e.maxy()) < epsilon); auto xyz = bboxToXYZ(map_extent); /* CHECK(xyz[0] == x); CHECK(xyz[1] == y); CHECK(xyz[2] == z); */ } mapnik-vector-tile-1.6.1/test/vector_tile_rasterize.cpp000066400000000000000000000160401324304754200233300ustar00rootroot00000000000000#include "catch.hpp" // test utils #include "test_utils.hpp" #include #include #include #include #include #include // vector output api #include "vector_tile_compression.hpp" #include "vector_tile_processor.hpp" #include "vector_tile_strategy.hpp" #include "vector_tile_projection.hpp" #include "vector_tile_geometry_decoder.hpp" #include "vector_tile_datasource_pbf.hpp" #include "protozero/pbf_reader.hpp" // boost #include // std #include // libprotobuf #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wsign-conversion" #include "vector_tile.pb.h" #pragma GCC diagnostic pop TEST_CASE("vector tile rasterize -- should try to decode windfail tile") { // open vtile std::ifstream stream("./test/data/0.0.0.vector.mvt",std::ios_base::in|std::ios_base::binary); REQUIRE(stream.is_open()); std::string buffer(std::istreambuf_iterator(stream.rdbuf()),(std::istreambuf_iterator())); REQUIRE(buffer.size() == 3812); // uncompress gzip data std::string uncompressed; mapnik::vector_tile_impl::zlib_decompress(buffer,uncompressed); REQUIRE(uncompressed.size() == 4934); mapnik::box2d bbox(-20037508.342789,-20037508.342789,20037508.342789,20037508.342789); // first we render the raw tile directly to an image { mapnik::Map map(256,256,"+init=epsg:3857"); vector_tile::Tile tile2; CHECK(tile2.ParseFromString(uncompressed)); CHECK(1 == tile2.layers_size()); vector_tile::Tile_Layer const& layer2 = tile2.layers(0); CHECK(std::string("water") == layer2.name()); CHECK(1 == layer2.version()); CHECK(23 == layer2.features_size()); protozero::pbf_reader tile_reader(uncompressed); REQUIRE(tile_reader.next(mapnik::vector_tile_impl::Tile_Encoding::LAYERS)); protozero::pbf_reader layer_reader = tile_reader.get_message(); mapnik::layer lyr2("water",map.srs()); std::shared_ptr ds = std::make_shared< mapnik::vector_tile_impl::tile_datasource_pbf>( layer_reader,0,0,0); ds->set_envelope(bbox); CHECK( ds->type() == mapnik::datasource::Vector ); CHECK( ds->get_geometry_type() == mapnik::datasource_geometry_t::Collection ); mapnik::layer_descriptor lay_desc = ds->get_descriptor(); std::vector expected_names; expected_names.push_back("osm_id"); std::vector names; for (auto const& desc : lay_desc.get_descriptors()) { names.push_back(desc.get_name()); } CHECK(names == expected_names); lyr2.set_datasource(ds); lyr2.add_style("style"); map.add_layer(lyr2); mapnik::load_map(map,"test/data/polygon-style.xml"); //std::clog << mapnik::save_map_to_string(map) << "\n"; map.zoom_to_box(bbox); mapnik::image_rgba8 im(map.width(),map.height()); mapnik::agg_renderer ren(map,im); ren.apply(); if (!mapnik::util::exists("test/fixtures/rasterize-expected-1.png")) { mapnik::save_to_file(im,"test/fixtures/rasterize-expected-1.png","png32"); } } // set up to "re-render" it // the goal here is to trigger the geometries to pass through // the decoder and encoder again mapnik::vector_tile_impl::tile out_tile(bbox); { std::string merc_srs("+init=epsg:3857"); mapnik::Map map(256, 256, merc_srs); protozero::pbf_reader message(uncompressed.data(), uncompressed.size()); while (message.next(3)) { protozero::pbf_reader layer_msg = message.get_message(); auto ds = std::make_shared( layer_msg, 0, 0, 0); mapnik::layer lyr(ds->get_name(),merc_srs); ds->set_envelope(out_tile.get_buffered_extent()); lyr.set_datasource(ds); map.add_layer(lyr); } mapnik::vector_tile_impl::processor ren(map); ren.set_process_all_rings(true); ren.set_fill_type(mapnik::vector_tile_impl::non_zero_fill); ren.update_tile(out_tile); } // now `tile` should contain all the data std::string buffer2; out_tile.serialize_to_string(buffer2); CHECK(2949 == buffer2.size()); std::ofstream stream_out("./test/data/0.0.0.vector-b.mvt",std::ios_base::out|std::ios_base::binary); stream_out << buffer2; stream_out.close(); // let's now render this to a image and make sure it looks right { mapnik::Map map(256,256,"+init=epsg:3857"); vector_tile::Tile tile2; CHECK(tile2.ParseFromString(buffer2)); REQUIRE(1 == tile2.layers_size()); vector_tile::Tile_Layer const& layer2 = tile2.layers(0); CHECK(std::string("water") == layer2.name()); CHECK(8 == layer2.features_size()); CHECK(2 == layer2.version()); mapnik::layer lyr2("water",map.srs()); protozero::pbf_reader tile_reader(buffer2); REQUIRE(tile_reader.next(mapnik::vector_tile_impl::Tile_Encoding::LAYERS)); protozero::pbf_reader layer_reader = tile_reader.get_message(); std::shared_ptr ds = std::make_shared< mapnik::vector_tile_impl::tile_datasource_pbf>( layer_reader,0,0,0); ds->set_envelope(bbox); CHECK( ds->type() == mapnik::datasource::Vector ); CHECK( ds->get_geometry_type() == mapnik::datasource_geometry_t::Collection ); mapnik::layer_descriptor lay_desc = ds->get_descriptor(); std::vector expected_names; expected_names.push_back("osm_id"); std::vector names; for (auto const& desc : lay_desc.get_descriptors()) { names.push_back(desc.get_name()); } CHECK(names == expected_names); lyr2.set_datasource(ds); lyr2.add_style("style"); map.add_layer(lyr2); mapnik::load_map(map,"test/data/polygon-style.xml"); //std::clog << mapnik::save_map_to_string(map) << "\n"; map.zoom_to_box(bbox); mapnik::image_rgba8 im(map.width(),map.height()); mapnik::agg_renderer ren(map,im); ren.apply(); unsigned diff = testing::compare_images(im,"test/fixtures/rasterize-expected-1.png"); // should be almost equal (111 is good enough since re-rendering filters a few small degenerates) CHECK(84 >= diff); if (diff > 125) { mapnik::save_to_file(im,"test/fixtures/rasterize-actual-1.png","png32"); } } }