From b5140cb3426595646f39aee298ca8306d3bd0a6f Mon Sep 17 00:00:00 2001 From: Pablo Guardiola Date: Fri, 10 Nov 2017 12:56:06 +0100 Subject: [android] Cherry picks to agua (#10442) * [android] fix map snapshotter marker example The reference to the MapSnapshotter needs to be held for the duration of the snapshot, otherwise it might be GC'd * [android] MapRendererRunnable - avoid weak reference table overflow Apparently on some devices the weak reference table is limited (numbers around 52000). Even though we don't use that many weak references, when GC is not called for a while they can stack up and a crash will occur before the GC has had the time to clear the references. The C++ peer now holds on to a global ref (strong) which can be obtained to queue the java peer and then release automatically so that the GC can take over after the runnable has been executed. --- .../activity/snapshot/MapSnapshotterMarkerActivity.java | 4 +++- platform/android/src/map_renderer.cpp | 10 +++++++--- platform/android/src/map_renderer_runnable.cpp | 10 ++++++---- platform/android/src/map_renderer_runnable.hpp | 7 +++---- 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterMarkerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterMarkerActivity.java index 582d4a29c5..781e7b6334 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterMarkerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterMarkerActivity.java @@ -25,6 +25,8 @@ import timber.log.Timber; */ public class MapSnapshotterMarkerActivity extends AppCompatActivity implements MapSnapshotter.SnapshotReadyCallback { + private MapSnapshotter mapSnapshotter; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -40,7 +42,7 @@ public class MapSnapshotterMarkerActivity extends AppCompatActivity implements M Timber.i("Starting snapshot"); - MapSnapshotter mapSnapshotter = new MapSnapshotter( + mapSnapshotter = new MapSnapshotter( getApplicationContext(), new MapSnapshotter .Options(Math.min(container.getMeasuredWidth(), 1024), Math.min(container.getMeasuredHeight(), 1024)) diff --git a/platform/android/src/map_renderer.cpp b/platform/android/src/map_renderer.cpp index 7655455210..36e8142bfa 100644 --- a/platform/android/src/map_renderer.cpp +++ b/platform/android/src/map_renderer.cpp @@ -41,15 +41,19 @@ ActorRef MapRenderer::actor() const { } void MapRenderer::schedule(std::weak_ptr scheduled) { - // Create a runnable and schedule it on the gl thread + // Create a runnable android::UniqueEnv _env = android::AttachEnv(); auto runnable = std::make_unique(*_env, std::move(scheduled)); + // Obtain ownership of the peer (gets transferred to the MapRenderer on the JVM for later GC) + auto peer = runnable->peer(); + + // Queue the event on the Java Peer static auto queueEvent = javaClass.GetMethod)>(*_env, "queueEvent"); - javaPeer->Call(*_env, queueEvent, runnable->getPeer()); + javaPeer->Call(*_env, queueEvent, *peer); - // Release the object as it will be destroyed on GC of the Java Peer + // Release the c++ peer as it will be destroyed on GC of the Java Peer runnable.release(); } diff --git a/platform/android/src/map_renderer_runnable.cpp b/platform/android/src/map_renderer_runnable.cpp index df8cba5e55..4dc6611c40 100644 --- a/platform/android/src/map_renderer_runnable.cpp +++ b/platform/android/src/map_renderer_runnable.cpp @@ -8,11 +8,13 @@ namespace android { MapRendererRunnable::MapRendererRunnable(jni::JNIEnv& env, std::weak_ptr mailbox_) : mailbox(std::move(mailbox_)) { - // Create the Java peer + // Create the Java peer and hold on to a global reference + // Not using a weak reference here as this might oerflow + // the weak reference table on some devices jni::UniqueLocalFrame frame = jni::PushLocalFrame(env, 5); static auto constructor = javaClass.GetConstructor(env); auto instance = javaClass.New(env, constructor, reinterpret_cast(this)); - javaPeer = SeizeGenericWeakRef(env, jni::Object(jni::NewWeakGlobalRef(env, instance.Get()).release())); + javaPeer = instance.NewGlobalRef(env); } MapRendererRunnable::~MapRendererRunnable() = default; @@ -21,8 +23,8 @@ void MapRendererRunnable::run(jni::JNIEnv&) { Mailbox::maybeReceive(mailbox); } -jni::Object MapRendererRunnable::getPeer() { - return *javaPeer; +jni::UniqueObject MapRendererRunnable::peer() { + return std::move(javaPeer); } // Static methods // diff --git a/platform/android/src/map_renderer_runnable.hpp b/platform/android/src/map_renderer_runnable.hpp index 75646a442d..46fb028d26 100644 --- a/platform/android/src/map_renderer_runnable.hpp +++ b/platform/android/src/map_renderer_runnable.hpp @@ -8,8 +8,6 @@ #include -#include "jni/generic_global_ref_deleter.hpp" - namespace mbgl { namespace android { @@ -39,10 +37,11 @@ public: void run(jni::JNIEnv&); - jni::Object getPeer(); + // Transfers ownership of the Peer object to the caller + jni::UniqueObject peer(); private: - GenericUniqueWeakObject javaPeer; + jni::UniqueObject javaPeer; std::weak_ptr mailbox; }; -- cgit v1.2.1 From 199c0cac2573d58483e52abac9e1c6621b0df603 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Fri, 10 Nov 2017 16:34:09 +0100 Subject: [android] - harden deselection mechanism for markers (#10403) --- .../java/com/mapbox/mapboxsdk/maps/AnnotationManager.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java index 9f256c341b..64b33ad598 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java @@ -302,12 +302,14 @@ class AnnotationManager { } for (Marker marker : selectedMarkers) { - if (marker.isInfoWindowShown()) { - marker.hideInfoWindow(); - } + if (marker != null) { + if (marker.isInfoWindowShown()) { + marker.hideInfoWindow(); + } - if (marker instanceof MarkerView) { - markerViewManager.deselect((MarkerView) marker, false); + if (marker instanceof MarkerView) { + markerViewManager.deselect((MarkerView) marker, false); + } } } -- cgit v1.2.1 From a0cfac4c1a0785fae57ef80839e3e28124c6a541 Mon Sep 17 00:00:00 2001 From: Jordan Kiley Date: Fri, 10 Nov 2017 10:02:45 -0800 Subject: Update MGLMapSnapshotter docs (#10438) --- platform/darwin/src/MGLMapSnapshotter.h | 81 +++++++++++++++++++++++---------- 1 file changed, 57 insertions(+), 24 deletions(-) diff --git a/platform/darwin/src/MGLMapSnapshotter.h b/platform/darwin/src/MGLMapSnapshotter.h index 541bc68b93..978e19dc20 100644 --- a/platform/darwin/src/MGLMapSnapshotter.h +++ b/platform/darwin/src/MGLMapSnapshotter.h @@ -14,9 +14,10 @@ MGL_EXPORT /** Creates a set of options with the minimum required information. - @param styleURL URL of the map style to snapshot. The URL may be a full HTTP or HTTPS URL, - a Mapbox URL indicating the style’s map ID (`mapbox://styles/{user}/{style`}), or a path - to a local file relative to the application’s resource path. Specify `nil` for the default style. + @param styleURL URL of the map style to snapshot. The URL may be a full HTTP or + HTTPS URL, a Mapbox URL indicating the style’s map ID + (`mapbox://styles/{user}/{style}`), or a path to a local file relative to + the application’s resource path. Specify `nil` for the default style. @param size The image size. */ - (instancetype)initWithStyleURL:(nullable NSURL *)styleURL camera:(MGLMapCamera *)camera size:(CGSize)size; @@ -31,17 +32,18 @@ MGL_EXPORT /** The zoom level. - The default zoom level is 0. If this property is non-zero and the camera property - is non-nil, the camera’s altitude is ignored in favor of this property’s value. + The default zoom level is 0. If this property is non-zero and the camera + property is non-nil, the camera’s altitude is ignored in favor of this + property’s value. */ @property (nonatomic) double zoomLevel; /** A camera representing the viewport visible in the snapshot. - If this property is non-nil and the `coordinateBounds` property is set to a non-empty - coordinate bounds, the camera’s center coordinate and altitude are ignored in favor - of the `coordinateBounds` property. + If this property is non-nil and the `coordinateBounds` property is set to a + non-empty coordinate bounds, the camera’s center coordinate and altitude are + ignored in favor of the `coordinateBounds` property. */ @property (nonatomic) MGLMapCamera *camera; @@ -78,24 +80,26 @@ MGL_EXPORT #if TARGET_OS_IPHONE /** - Converts the specified map coordinate to a point in the coordinate space of the image. + Converts the specified map coordinate to a point in the coordinate space of the + image. */ - (CGPoint)pointForCoordinate:(CLLocationCoordinate2D)coordinate; /** The image of the map’s content. */ -@property(nonatomic, readonly) UIImage *image; +@property (nonatomic, readonly) UIImage *image; #else /** - Converts the specified map coordinate to a point in the coordinate space of the image. + Converts the specified map coordinate to a point in the coordinate space of the + image. */ - (NSPoint)pointForCoordinate:(CLLocationCoordinate2D)coordinate; /** The image of the map’s content. */ -@property(nonatomic, readonly) NSImage *image; +@property (nonatomic, readonly) NSImage *image; #endif @end @@ -103,13 +107,33 @@ MGL_EXPORT /** A block to processes the result or error of a snapshot request. - @param snapshot The `MGLMapSnapshot` that was generated or `nil` if an error occurred. + @param snapshot The `MGLMapSnapshot` that was generated or `nil` if an error + occurred. @param error The error that occured or `nil` when successful. */ typedef void (^MGLMapSnapshotCompletionHandler)(MGLMapSnapshot* _Nullable snapshot, NSError* _Nullable error); /** - An immutable utility object for capturing map-based images. + An `MGLMapSnapshotter` generates static raster images of the map. Each snapshot + image depicts a portion of a map defined by an `MGLMapSnapshotOptions` object + you provide. The snapshotter generates an `MGLMapSnapshot` object + asynchronously, passing it into a completion handler once tiles and other + resources needed for the snapshot are finished loading. + + You can change the snapshotter’s options at any time and reuse the snapshotter + for multiple distinct snapshots; however, the snapshotter can only generate one + snapshot at a time. If you need to generate multiple snapshots concurrently, + create multiple snapshotter objects. + + For an interactive map, use the `MGLMapView` class. Both `MGLMapSnapshotter` + and `MGLMapView` are compatible with offline packs managed by the + `MGLOfflineStorage` class. + + From a snapshot, you can obtain an image and convert geographic coordinates to + the image’s coordinate space in order to superimpose markers and overlays. If + you do not need offline map functionality, you can use the `Snapshot` class in + [MapboxStatic.swift](https://github.com/mapbox/MapboxStatic.swift/) to generate + static map images with overlays. ### Example @@ -132,7 +156,14 @@ typedef void (^MGLMapSnapshotCompletionHandler)(MGLMapSnapshot* _Nullable snapsh MGL_EXPORT @interface MGLMapSnapshotter : NSObject -- (instancetype)initWithOptions:(MGLMapSnapshotOptions*)options; +/** + Initializes and returns a map snapshotter object that produces snapshots + according to the given options. + + @param options The options to use when generating a map snapshot. + @return An initialized map snapshotter. + */ +- (instancetype)initWithOptions:(MGLMapSnapshotOptions *)options; /** Starts the snapshot creation and executes the specified block with the result. @@ -142,7 +173,8 @@ MGL_EXPORT - (void)startWithCompletionHandler:(MGLMapSnapshotCompletionHandler)completionHandler; /** - Starts the snapshot creation and executes the specified block with the result on the specified queue. + Starts the snapshot creation and executes the specified block with the result + on the specified queue. @param queue The queue to handle the result on. @param completionHandler The block to handle the result in. @@ -152,25 +184,26 @@ MGL_EXPORT /** Cancels the snapshot creation request, if any. - Once you call this method, you cannot resume the snapshot. In order to obtain the - snapshot, create a new `MGLMapSnapshotter` object. + Once you call this method, you cannot resume the snapshot. In order to obtain + the snapshot, create a new `MGLMapSnapshotter` object. */ - (void)cancel; /** The zoom level. - The default zoom level is 0. If this property is non-zero and the camera property - is non-nil, the camera’s altitude is ignored in favor of this property’s value. + The default zoom level is 0. If this property is non-zero and the camera + property is non-nil, the camera’s altitude is ignored in favor of this + property’s value. */ @property (nonatomic) double zoomLevel; /** A camera representing the viewport visible in the snapshot. - If this property is non-nil and the `coordinateBounds` property is set to a non-empty - coordinate bounds, the camera’s center coordinate and altitude are ignored in favor - of the `coordinateBounds` property. + If this property is non-nil and the `coordinateBounds` property is set to a + non-empty coordinate bounds, the camera’s center coordinate and altitude are + ignored in favor of the `coordinateBounds` property. */ @property (nonatomic) MGLMapCamera *camera; @@ -186,7 +219,7 @@ MGL_EXPORT URL of the map style to snapshot. The URL may be a full HTTP or HTTPS URL, a Mapbox URL indicating the style’s - map ID (`mapbox://styles/{user}/{style`}), or a path to a local file relative + map ID (`mapbox://styles/{user}/{style}`), or a path to a local file relative to the application’s resource path. Specify `nil` for the default style. */ @property (nonatomic, nullable) NSURL *styleURL; -- cgit v1.2.1 From a9bd09c015f36174abdc5aee0de775500597617d Mon Sep 17 00:00:00 2001 From: Tobrun Date: Mon, 13 Nov 2017 13:20:41 +0100 Subject: Downgrade min sdk to 14 (#10355) * [android] - downgrade minimum sdk version to 14 * [android] bump MAS version to the one which includes min sdk version 14 * bump lost version to 3.0.4 --- platform/android/MapboxGLAndroidSDK/build.gradle | 1 - .../src/main/AndroidManifest.xml | 9 ++-- .../mapbox/mapboxsdk/location/LocationSource.java | 49 ++++++++++++++++------ platform/android/dependencies.gradle | 6 +-- 4 files changed, 46 insertions(+), 19 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/build.gradle b/platform/android/MapboxGLAndroidSDK/build.gradle index f3e9433a0b..bf0af3052b 100644 --- a/platform/android/MapboxGLAndroidSDK/build.gradle +++ b/platform/android/MapboxGLAndroidSDK/build.gradle @@ -6,7 +6,6 @@ dependencies { compile rootProject.ext.dep.timber compile rootProject.ext.dep.okhttp3 provided(rootProject.ext.dep.lost) { - exclude group: 'com.google.guava' exclude group: 'com.android.support' } testCompile rootProject.ext.dep.junit diff --git a/platform/android/MapboxGLAndroidSDK/src/main/AndroidManifest.xml b/platform/android/MapboxGLAndroidSDK/src/main/AndroidManifest.xml index b61035a008..f59585bfe5 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/AndroidManifest.xml +++ b/platform/android/MapboxGLAndroidSDK/src/main/AndroidManifest.xml @@ -1,14 +1,17 @@ + xmlns:tools="http://schemas.android.com/tools" + package="com.mapbox.mapboxsdk"> - - + + + + diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationSource.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationSource.java index c6bc13f538..1313587158 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationSource.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationSource.java @@ -32,7 +32,7 @@ import com.mapzen.android.lost.api.LostApiClient; * @deprecated Use a {@link Mapbox#getLocationEngine()} instead. */ @Deprecated -public class LocationSource extends LocationEngine implements LocationListener { +public class LocationSource extends LocationEngine implements LostApiClient.ConnectionCallbacks, LocationListener { private Context context; private LostApiClient lostApiClient; @@ -45,7 +45,9 @@ public class LocationSource extends LocationEngine implements LocationListener { public LocationSource(Context context) { super(); this.context = context.getApplicationContext(); - lostApiClient = new LostApiClient.Builder(this.context).build(); + lostApiClient = new LostApiClient.Builder(this.context) + .addConnectionCallbacks(this) + .build(); } /** @@ -61,12 +63,7 @@ public class LocationSource extends LocationEngine implements LocationListener { */ @Override public void activate() { - if (!lostApiClient.isConnected()) { - lostApiClient.connect(); - } - for (LocationEngineListener listener : locationListeners) { - listener.onConnected(); - } + connect(); } /** @@ -76,7 +73,7 @@ public class LocationSource extends LocationEngine implements LocationListener { */ @Override public void deactivate() { - if (lostApiClient.isConnected()) { + if (lostApiClient != null && lostApiClient.isConnected()) { lostApiClient.disconnect(); } } @@ -92,6 +89,24 @@ public class LocationSource extends LocationEngine implements LocationListener { return lostApiClient.isConnected(); } + /** + * Invoked when the location provider has connected. + */ + @Override + public void onConnected() { + for (LocationEngineListener listener : locationListeners) { + listener.onConnected(); + } + } + + /** + * Invoked when the location provider connection has been suspended. + */ + @Override + public void onConnectionSuspended() { + // Empty + } + /** * Returns the Last known location is the location provider is connected and location permissions are granted. * @@ -102,7 +117,7 @@ public class LocationSource extends LocationEngine implements LocationListener { public Location getLastLocation() { if (lostApiClient.isConnected()) { //noinspection MissingPermission - return LocationServices.FusedLocationApi.getLastLocation(); + return LocationServices.FusedLocationApi.getLastLocation(lostApiClient); } return null; } @@ -136,7 +151,7 @@ public class LocationSource extends LocationEngine implements LocationListener { if (lostApiClient.isConnected()) { //noinspection MissingPermission - LocationServices.FusedLocationApi.requestLocationUpdates(request, this); + LocationServices.FusedLocationApi.requestLocationUpdates(lostApiClient, request, this); } } @@ -146,7 +161,7 @@ public class LocationSource extends LocationEngine implements LocationListener { @Override public void removeLocationUpdates() { if (lostApiClient.isConnected()) { - LocationServices.FusedLocationApi.removeLocationUpdates(this); + LocationServices.FusedLocationApi.removeLocationUpdates(lostApiClient, this); } } @@ -171,4 +186,14 @@ public class LocationSource extends LocationEngine implements LocationListener { listener.onLocationChanged(location); } } + + private void connect() { + if (lostApiClient != null) { + if (lostApiClient.isConnected()) { + onConnected(); + } else { + lostApiClient.connect(); + } + } + } } \ No newline at end of file diff --git a/platform/android/dependencies.gradle b/platform/android/dependencies.gradle index 8d4c32045c..eadf7aea56 100644 --- a/platform/android/dependencies.gradle +++ b/platform/android/dependencies.gradle @@ -1,5 +1,5 @@ ext { - minSdkVersion = 15 + minSdkVersion = 14 targetSdkVersion = 25 compileSdkVersion = 25 buildToolsVersion = "25.0.2" @@ -7,7 +7,7 @@ ext { versionCode = 11 versionName = "5.0.0" - mapboxServicesVersion = "2.2.8" + mapboxServicesVersion = "2.2.9" supportLibVersion = "25.4.0" espressoVersion = '3.0.1' testRunnerVersion = '1.0.1' @@ -20,7 +20,7 @@ ext { mapboxAndroidTelemetry : "com.mapbox.mapboxsdk:mapbox-android-telemetry:${mapboxServicesVersion}@aar", // mapzen lost - lost : 'com.mapzen.android:lost:1.1.1', + lost : 'com.mapzen.android:lost:3.0.4', // unit test junit : 'junit:junit:4.12', -- cgit v1.2.1 From f0f113bafc49a735a596357a0982e298648f4d48 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Tue, 14 Nov 2017 11:13:34 +0100 Subject: MapSnapshot attribution (#10362) * [android] - add attribution * [android] - optimise attribution sources * [android] - rework datamodel to attribution class * [android] - refactor Attribution, add tests * [android] - add getter for attribution string * [android] - rework attribution to include small logo, add layout placement * [android] - finalise integration and layout logic --- platform/android/MapboxGLAndroidSDK/build.gradle | 5 +- .../mapbox/mapboxsdk/attribution/Attribution.java | 59 ++++ .../mapboxsdk/attribution/AttributionLayout.java | 62 +++++ .../mapboxsdk/attribution/AttributionMeasure.java | 230 +++++++++++++++ .../mapboxsdk/attribution/AttributionParser.java | 257 +++++++++++++++++ .../com/mapbox/mapboxsdk/http/HTTPRequest.java | 1 + .../mapboxsdk/maps/AttributionDialogManager.java | 77 +++-- .../mapbox/mapboxsdk/snapshotter/MapSnapshot.java | 2 +- .../mapboxsdk/snapshotter/MapSnapshotter.java | 179 ++++++++++-- .../main/res/drawable-hdpi/mapbox_logo_helmet.png | Bin 0 -> 1650 bytes .../main/res/drawable-mdpi/mapbox_logo_helmet.png | Bin 0 -> 950 bytes .../main/res/drawable-xhdpi/mapbox_logo_helmet.png | Bin 0 -> 2184 bytes .../res/drawable-xxhdpi/mapbox_logo_helmet.png | Bin 0 -> 3389 bytes .../res/drawable-xxxhdpi/mapbox_logo_helmet.png | Bin 0 -> 4468 bytes .../main/res/drawable/mapbox_rounded_corner.xml | 10 + .../src/main/res/values/colors.xml | 1 + .../attribution/AttributionParseTest.java | 309 +++++++++++++++++++++ .../activity/snapshot/MapSnapshotterActivity.java | 2 +- .../snapshot/MapSnapshotterMarkerActivity.java | 10 +- platform/android/dependencies.gradle | 1 + 20 files changed, 1128 insertions(+), 77 deletions(-) create mode 100644 platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/attribution/Attribution.java create mode 100644 platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/attribution/AttributionLayout.java create mode 100644 platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/attribution/AttributionMeasure.java create mode 100644 platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/attribution/AttributionParser.java create mode 100644 platform/android/MapboxGLAndroidSDK/src/main/res/drawable-hdpi/mapbox_logo_helmet.png create mode 100644 platform/android/MapboxGLAndroidSDK/src/main/res/drawable-mdpi/mapbox_logo_helmet.png create mode 100644 platform/android/MapboxGLAndroidSDK/src/main/res/drawable-xhdpi/mapbox_logo_helmet.png create mode 100644 platform/android/MapboxGLAndroidSDK/src/main/res/drawable-xxhdpi/mapbox_logo_helmet.png create mode 100644 platform/android/MapboxGLAndroidSDK/src/main/res/drawable-xxxhdpi/mapbox_logo_helmet.png create mode 100644 platform/android/MapboxGLAndroidSDK/src/main/res/drawable/mapbox_rounded_corner.xml create mode 100644 platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/attribution/AttributionParseTest.java diff --git a/platform/android/MapboxGLAndroidSDK/build.gradle b/platform/android/MapboxGLAndroidSDK/build.gradle index bf0af3052b..ce886b1001 100644 --- a/platform/android/MapboxGLAndroidSDK/build.gradle +++ b/platform/android/MapboxGLAndroidSDK/build.gradle @@ -10,6 +10,7 @@ dependencies { } testCompile rootProject.ext.dep.junit testCompile rootProject.ext.dep.mockito + testCompile rootProject.ext.dep.robolectric // Mapbox Android Services (GeoJSON support) compile(rootProject.ext.dep.mapboxJavaGeoJSON) { @@ -126,7 +127,9 @@ android { } testOptions { - unitTests.returnDefaultValues = true + unitTests{ + returnDefaultValues = true + } } buildTypes { diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/attribution/Attribution.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/attribution/Attribution.java new file mode 100644 index 0000000000..0877b3ab97 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/attribution/Attribution.java @@ -0,0 +1,59 @@ +package com.mapbox.mapboxsdk.attribution; + +public class Attribution { + + private static final String OPENSTREETMAP = "OpenStreetMap"; + private static final String OPENSTREETMAP_ABBR = "OSM"; + static final String TELEMETRY = "Telemetry Settings"; + + static final String IMPROVE_MAP_URL = "https://www.mapbox.com/map-feedback/"; + static final String MAPBOX_URL = "https://www.mapbox.com/about/maps/"; + static final String TELEMETRY_URL = "https://www.mapbox.com/telemetry/"; + + private String title; + private String url; + + Attribution(String title, String url) { + this.title = title; + this.url = url; + } + + public String getTitle() { + return title; + } + + public String getTitleAbbreviated() { + if (title.equals(OPENSTREETMAP)) { + return OPENSTREETMAP_ABBR; + } + return title; + } + + public String getUrl() { + return url; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + Attribution that = (Attribution) o; + + if (title != null ? !title.equals(that.title) : that.title != null) { + return false; + } + return url != null ? url.equals(that.url) : that.url == null; + } + + @Override + public int hashCode() { + int result = title != null ? title.hashCode() : 0; + result = 31 * result + (url != null ? url.hashCode() : 0); + return result; + } +} diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/attribution/AttributionLayout.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/attribution/AttributionLayout.java new file mode 100644 index 0000000000..b08a8353be --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/attribution/AttributionLayout.java @@ -0,0 +1,62 @@ +package com.mapbox.mapboxsdk.attribution; + +import android.graphics.Bitmap; +import android.graphics.PointF; +import android.support.annotation.Nullable; + +public class AttributionLayout { + + private Bitmap logo; + private PointF anchorPoint; + private boolean shortText; + + public AttributionLayout(@Nullable Bitmap logo, @Nullable PointF anchorPoint, boolean shortText) { + this.logo = logo; + this.anchorPoint = anchorPoint; + this.shortText = shortText; + } + + public Bitmap getLogo() { + return logo; + } + + public PointF getAnchorPoint() { + return anchorPoint; + } + + public boolean isShortText() { + return shortText; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + AttributionLayout that = (AttributionLayout) o; + + if (logo != null ? !logo.equals(that.logo) : that.logo != null) { + return false; + } + return anchorPoint != null ? anchorPoint.equals(that.anchorPoint) : that.anchorPoint == null; + } + + @Override + public int hashCode() { + int result = logo != null ? logo.hashCode() : 0; + result = 31 * result + (anchorPoint != null ? anchorPoint.hashCode() : 0); + return result; + } + + @Override + public String toString() { + return "AttributionLayout{" + + "logo=" + logo + + ", anchorPoint=" + anchorPoint + + '}'; + } +} diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/attribution/AttributionMeasure.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/attribution/AttributionMeasure.java new file mode 100644 index 0000000000..667060168b --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/attribution/AttributionMeasure.java @@ -0,0 +1,230 @@ +package com.mapbox.mapboxsdk.attribution; + +import android.graphics.Bitmap; +import android.graphics.PointF; +import android.widget.TextView; + +import java.util.Arrays; +import java.util.List; + +public class AttributionMeasure { + + private Bitmap logo; + private Bitmap logoSmall; + private Bitmap snapshot; + private TextView textView; + private TextView textViewShort; + private float margin; + + private boolean shorterText; + + AttributionMeasure(Bitmap snapshot, Bitmap logo, Bitmap logoSmall, TextView tv, TextView tvShort, float margin) { + this.snapshot = snapshot; + this.logo = logo; + this.logoSmall = logoSmall; + this.textView = tv; + this.textViewShort = tvShort; + this.margin = margin; + } + + public AttributionLayout measure() { + Chain chain = new Chain( + new FullLogoLongTextCommand(), + new FullLogoShortTextCommand(), + new SmallLogoLongTextCommand(), + new SmallLogoShortTextCommand(), + new LongTextCommand(), + new ShortTextCommand(), + new NoTextCommand() + ); + + AttributionLayout attributionLayout = chain.start(this); + shorterText = attributionLayout.isShortText(); + return attributionLayout; + } + + + private static class FullLogoLongTextCommand implements Command { + public AttributionLayout execute(AttributionMeasure measure) { + float width = measure.getLogoContainerWidth() + measure.getTextViewContainerWidth(); + boolean fitBounds = width <= measure.getMaxSize(); + if (fitBounds) { + PointF anchor = calculateAnchor(measure.snapshot, measure.textView, measure.margin); + return new AttributionLayout(measure.logo, anchor, false); + } + return null; + } + } + + private static class FullLogoShortTextCommand implements Command { + @Override + public AttributionLayout execute(AttributionMeasure measure) { + float width = measure.getLogoContainerWidth() + measure.getTextViewShortContainerWidth(); + boolean fitBounds = width <= measure.getMaxSizeShort(); + if (fitBounds) { + PointF anchor = calculateAnchor(measure.snapshot, measure.textView, measure.margin); + return new AttributionLayout(measure.logo, anchor, true); + } + return null; + } + } + + private static class SmallLogoLongTextCommand implements Command { + @Override + public AttributionLayout execute(AttributionMeasure measure) { + float width = measure.getLogoSmallContainerWidth() + measure.getTextViewContainerWidth(); + boolean fitBounds = width <= measure.getMaxSize(); + if (fitBounds) { + PointF anchor = calculateAnchor(measure.snapshot, measure.textView, measure.margin); + return new AttributionLayout(measure.logoSmall, anchor, false); + } + return null; + } + } + + private static class SmallLogoShortTextCommand implements Command { + @Override + public AttributionLayout execute(AttributionMeasure measure) { + float width = measure.getLogoContainerWidth() + measure.getTextViewShortContainerWidth(); + boolean fitBounds = width <= measure.getMaxSizeShort(); + if (fitBounds) { + PointF anchor = calculateAnchor(measure.snapshot, measure.textViewShort, measure.margin); + return new AttributionLayout(measure.logoSmall, anchor, true); + } + return null; + } + } + + private static class LongTextCommand implements Command { + @Override + public AttributionLayout execute(AttributionMeasure measure) { + float width = measure.getTextViewContainerWidth() + measure.margin; + boolean fitBounds = width <= measure.getMaxSize(); + if (fitBounds) { + return new AttributionLayout(null, calculateAnchor(measure.snapshot, measure.textView, measure.margin), false); + } + return null; + } + } + + private static class ShortTextCommand implements Command { + @Override + public AttributionLayout execute(AttributionMeasure measure) { + float width = measure.getTextViewShortContainerWidth() + measure.margin; + boolean fitBounds = width <= measure.getMaxSizeShort(); + if (fitBounds) { + PointF anchor = calculateAnchor(measure.snapshot, measure.textViewShort, measure.margin); + return new AttributionLayout(null, anchor, true); + } + return null; + } + } + + private static class NoTextCommand implements Command { + @Override + public AttributionLayout execute(AttributionMeasure measure) { + return new AttributionLayout(null, null, false); + } + } + + private static PointF calculateAnchor(Bitmap snapshot, TextView textView, float margin) { + return new PointF( + snapshot.getWidth() - textView.getMeasuredWidth() - margin, + snapshot.getHeight() - margin - textView.getMeasuredHeight() + ); + } + + public TextView getTextView() { + return shorterText ? textViewShort : textView; + } + + private class Chain { + public List commands; + + Chain(Command... commands) { + this.commands = Arrays.asList(commands); + } + + public AttributionLayout start(AttributionMeasure measure) { + AttributionLayout attributionLayout = null; + for (Command command : commands) { + attributionLayout = command.execute(measure); + if (attributionLayout != null) { + break; + } + } + return attributionLayout; + } + } + + public interface Command { + AttributionLayout execute(AttributionMeasure measure); + } + + private float getTextViewContainerWidth() { + return textView.getMeasuredWidth() + margin; + } + + private float getLogoContainerWidth() { + return logo.getWidth() + (2 * margin); + } + + private float getTextViewShortContainerWidth() { + return textViewShort.getMeasuredWidth() + margin; + } + + private float getLogoSmallContainerWidth() { + return logoSmall.getWidth() + (2 * margin); + } + + private float getMaxSize() { + return snapshot.getWidth() * 8 / 10; + } + + private float getMaxSizeShort() { + return snapshot.getWidth(); + } + + public static class Builder { + private Bitmap snapshot; + private Bitmap logo; + private Bitmap logoSmall; + private TextView textView; + private TextView textViewShort; + private float marginPadding; + + public Builder setSnapshot(Bitmap snapshot) { + this.snapshot = snapshot; + return this; + } + + public Builder setLogo(Bitmap logo) { + this.logo = logo; + return this; + } + + public Builder setLogoSmall(Bitmap logoSmall) { + this.logoSmall = logoSmall; + return this; + } + + public Builder setTextView(TextView textView) { + this.textView = textView; + return this; + } + + public Builder setTextViewShort(TextView textViewShort) { + this.textViewShort = textViewShort; + return this; + } + + public Builder setMarginPadding(float marginPadding) { + this.marginPadding = marginPadding; + return this; + } + + public AttributionMeasure build() { + return new AttributionMeasure(snapshot, logo, logoSmall, textView, textViewShort, marginPadding); + } + } +} diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/attribution/AttributionParser.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/attribution/AttributionParser.java new file mode 100644 index 0000000000..90bb23429f --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/attribution/AttributionParser.java @@ -0,0 +1,257 @@ +package com.mapbox.mapboxsdk.attribution; + +import android.text.Html; +import android.text.SpannableStringBuilder; +import android.text.Spanned; +import android.text.style.URLSpan; + +import java.util.LinkedHashSet; +import java.util.Set; + +/** + * Responsible for parsing attribution data coming from Sources and MapSnapshot. + *

+ * Exposes multiple configuration options to manipulate data being parsed. + * Use the Options object to build these configurations. + *

+ */ +public class AttributionParser { + + private final Set attributions = new LinkedHashSet<>(); + private final String attributionData; + private final boolean withImproveMap; + private final boolean withCopyrightSign; + private final boolean withTelemetryAttribution; + private final boolean withMapboxAttribution; + + AttributionParser(String attributionData, boolean withImproveMap, boolean withCopyrightSign, + boolean withTelemetryAttribution, boolean withMapboxAttribution) { + this.attributionData = attributionData; + this.withImproveMap = withImproveMap; + this.withCopyrightSign = withCopyrightSign; + this.withTelemetryAttribution = withTelemetryAttribution; + this.withMapboxAttribution = withMapboxAttribution; + } + + /** + * Get parsed attributions. + * + * @return the attributions + */ + public Set getAttributions() { + return attributions; + } + + /** + * Get parsed attribution string. + * + * @return the parsed attribution string + */ + public String createAttributionString() { + return createAttributionString(false); + } + + /** + * Get parsed attribution string. + * + * @param shortenedOutput if attribution string should contain shortened output + * @return the parsed attribution string + */ + public String createAttributionString(boolean shortenedOutput) { + StringBuilder stringBuilder = new StringBuilder(withCopyrightSign ? "" : "© "); + int counter = 0; + for (Attribution attribution : attributions) { + counter++; + stringBuilder.append(!shortenedOutput ? attribution.getTitle() : attribution.getTitleAbbreviated()); + if (counter != attributions.size()) { + stringBuilder.append(" / "); + } + } + return stringBuilder.toString(); + } + + /** + * Main attribution for configuration + */ + protected void parse() { + parseAttributions(); + addAdditionalAttributions(); + } + + /** + * Parse attributions + */ + private void parseAttributions() { + SpannableStringBuilder htmlBuilder = (SpannableStringBuilder) fromHtml(attributionData); + URLSpan[] urlSpans = htmlBuilder.getSpans(0, htmlBuilder.length(), URLSpan.class); + for (URLSpan urlSpan : urlSpans) { + parseUrlSpan(htmlBuilder, urlSpan); + } + } + + /** + * Parse an URLSpan containing an attribution. + * + * @param htmlBuilder the html builder + * @param urlSpan the url span to be parsed + */ + private void parseUrlSpan(SpannableStringBuilder htmlBuilder, URLSpan urlSpan) { + String url = urlSpan.getURL(); + if (isUrlValid(url)) { + String anchor = parseAnchorValue(htmlBuilder, urlSpan); + attributions.add(new Attribution(anchor, url)); + } + } + + /** + * Invoked to validate if an url is valid to be included in the final attribution. + * + * @param url the url to be validated + * @return if the url is valid + */ + private boolean isUrlValid(String url) { + return isValidForImproveThisMap(url) && isValidForMapbox(url); + } + + /** + * Invoked to validate if an url is valid for the improve map configuration. + * + * @param url the url to be validated + * @return if the url is valid for improve this map + */ + private boolean isValidForImproveThisMap(String url) { + return withImproveMap || !url.equals(Attribution.IMPROVE_MAP_URL); + } + + /** + * Invoked to validate if an url is valid for the Mapbox configuration. + * + * @param url the url to be validated + * @return if the url is valid for Mapbox + */ + private boolean isValidForMapbox(String url) { + return withMapboxAttribution || !url.equals(Attribution.MAPBOX_URL); + } + + /** + * Parse the attribution by parsing the anchor value of html href tag. + * + * @param htmlBuilder the html builder + * @param urlSpan the current urlSpan + * @return the parsed anchor value + */ + private String parseAnchorValue(SpannableStringBuilder htmlBuilder, URLSpan urlSpan) { + int start = htmlBuilder.getSpanStart(urlSpan); + int end = htmlBuilder.getSpanEnd(urlSpan); + int length = end - start; + char[] charKey = new char[length]; + htmlBuilder.getChars(start, end, charKey, 0); + return stripCopyright(String.valueOf(charKey)); + } + + /** + * Utility to strip the copyright sign from an attribution + * + * @param anchor the attribution string to strip + * @return the stripped attribution string without the copyright sign + */ + private String stripCopyright(String anchor) { + if (!withCopyrightSign && anchor.startsWith("© ")) { + anchor = anchor.substring(2, anchor.length()); + } + return anchor; + } + + /** + * Invoked to manually add attributions + */ + private void addAdditionalAttributions() { + if (withTelemetryAttribution) { + attributions.add(new Attribution(Attribution.TELEMETRY, Attribution.TELEMETRY_URL)); + } + } + + /** + * Convert a string to a spanned html representation. + * + * @param html the string to convert + * @return the spanned html representation + */ + private static Spanned fromHtml(String html) { + Spanned result; + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { + result = Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY); + } else { + result = Html.fromHtml(html); + } + return result; + } + + /** + * Builder to configure using an AttributionParser. + *

+ * AttributionData, set with {@link #withAttributionData(String...)}, is the only required property to build + * the underlying AttributionParser. Other properties include trimming the copyright sign, adding telemetry + * attribution or hiding attribution as improve this map and Mapbox. + *

+ */ + public static class Options { + private boolean withImproveMap = true; + private boolean withCopyrightSign = true; + private boolean withTelemetryAttribution = false; + private boolean withMapboxAttribution = true; + private String[] attributionDataStringArray; + + public Options withAttributionData(String... attributionData) { + this.attributionDataStringArray = attributionData; + return this; + } + + public Options withImproveMap(boolean withImproveMap) { + this.withImproveMap = withImproveMap; + return this; + } + + public Options withCopyrightSign(boolean withCopyrightSign) { + this.withCopyrightSign = withCopyrightSign; + return this; + } + + public Options withTelemetryAttribution(boolean withTelemetryAttribution) { + this.withTelemetryAttribution = withTelemetryAttribution; + return this; + } + + public Options withMapboxAttribution(boolean withMapboxAttribution) { + this.withMapboxAttribution = withMapboxAttribution; + return this; + } + + public AttributionParser build() { + if (attributionDataStringArray == null) { + throw new IllegalStateException("Using builder without providing attribution data"); + } + + String fullAttributionString = parseAttribution(attributionDataStringArray); + AttributionParser attributionParser = new AttributionParser( + fullAttributionString, + withImproveMap, + withCopyrightSign, + withTelemetryAttribution, + withMapboxAttribution + ); + attributionParser.parse(); + return attributionParser; + } + + private String parseAttribution(String[] attribution) { + StringBuilder builder = new StringBuilder(); + for (String attr : attribution) { + if (!attr.isEmpty()) { + builder.append(attr); + } + } + return builder.toString(); + } + } +} diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java index 32aa250997..9f887ab7cc 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java @@ -55,6 +55,7 @@ class HTTPRequest implements Callback { private HTTPRequest(long nativePtr, String resourceUrl, String etag, String modified) { mNativePtr = nativePtr; + Timber.e("requesting: %s",resourceUrl); try { HttpUrl httpUrl = HttpUrl.parse(resourceUrl); final String host = httpUrl.host().toLowerCase(MapboxConstants.MAPBOX_LOCALE); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java index 9ccff387f5..2956d864e6 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java @@ -7,22 +7,20 @@ import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.support.annotation.NonNull; -import android.text.Html; -import android.text.SpannableStringBuilder; -import android.text.TextUtils; -import android.text.style.URLSpan; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Toast; - import com.mapbox.mapboxsdk.R; +import com.mapbox.mapboxsdk.attribution.Attribution; +import com.mapbox.mapboxsdk.attribution.AttributionParser; import com.mapbox.mapboxsdk.camera.CameraPosition; import com.mapbox.mapboxsdk.style.sources.Source; import com.mapbox.services.android.telemetry.MapboxTelemetry; -import java.util.HashMap; -import java.util.LinkedHashMap; +import java.util.ArrayList; +import java.util.List; import java.util.Locale; +import java.util.Set; /** * Responsible for managing attribution interactions on the map. @@ -39,8 +37,8 @@ class AttributionDialogManager implements View.OnClickListener, DialogInterface. private final Context context; private final MapboxMap mapboxMap; - private String[] attributionKeys; - private HashMap attributionMap; + private String[] attributionTitles; + private Set attributionSet; AttributionDialogManager(@NonNull Context context, @NonNull MapboxMap mapboxMap) { this.context = context; @@ -50,18 +48,26 @@ class AttributionDialogManager implements View.OnClickListener, DialogInterface. // Called when someone presses the attribution icon on the map @Override public void onClick(View view) { - attributionMap = new AttributionBuilder(context, mapboxMap).build(); + attributionSet = new AttributionBuilder(mapboxMap).build(); showAttributionDialog(); } private void showAttributionDialog() { - attributionKeys = attributionMap.keySet().toArray(new String[attributionMap.size()]); + attributionTitles = getAttributionTitles(); AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle(R.string.mapbox_attributionsDialogTitle); - builder.setAdapter(new ArrayAdapter<>(context, R.layout.mapbox_attribution_list_item, attributionKeys), this); + builder.setAdapter(new ArrayAdapter<>(context, R.layout.mapbox_attribution_list_item, attributionTitles), this); builder.show(); } + private String[] getAttributionTitles() { + List titles = new ArrayList<>(); + for (Attribution attribution : attributionSet) { + titles.add(attribution.getTitle()); + } + return titles.toArray(new String[titles.size()]); + } + // Called when someone selects an attribution or telemetry settings from the dialog @Override public void onClick(DialogInterface dialog, int which) { @@ -73,7 +79,7 @@ class AttributionDialogManager implements View.OnClickListener, DialogInterface. } private boolean isLatestEntry(int attributionKeyIndex) { - return attributionKeyIndex == attributionKeys.length - 1; + return attributionKeyIndex == attributionTitles.length - 1; } private void showTelemetryDialog() { @@ -105,7 +111,8 @@ class AttributionDialogManager implements View.OnClickListener, DialogInterface. } private void showMapFeedbackWebPage(int which) { - String url = attributionMap.get(attributionKeys[which]); + Attribution[] attributions = attributionSet.toArray(new Attribution[attributionSet.size()]); + String url = attributions[which].getUrl(); if (url.contains(MAP_FEEDBACK_URL)) { url = buildMapFeedbackMapUrl(mapboxMap.getCameraPosition()); } @@ -132,46 +139,24 @@ class AttributionDialogManager implements View.OnClickListener, DialogInterface. private static class AttributionBuilder { - private final HashMap map = new LinkedHashMap<>(); - private final Context context; private final MapboxMap mapboxMap; - AttributionBuilder(Context context, MapboxMap mapboxMap) { - this.context = context.getApplicationContext(); + AttributionBuilder(MapboxMap mapboxMap) { this.mapboxMap = mapboxMap; } - private HashMap build() { + private Set build() { + List attributions = new ArrayList<>(); for (Source source : mapboxMap.getSources()) { - parseAttribution(source.getAttribution()); - } - addTelemetryEntryToAttributionMap(); - return map; - } - - private void parseAttribution(String attributionSource) { - if (!TextUtils.isEmpty(attributionSource)) { - SpannableStringBuilder htmlBuilder = (SpannableStringBuilder) Html.fromHtml(attributionSource); - URLSpan[] urlSpans = htmlBuilder.getSpans(0, htmlBuilder.length(), URLSpan.class); - for (URLSpan urlSpan : urlSpans) { - map.put(resolveAnchorValue(htmlBuilder, urlSpan), urlSpan.getURL()); - } + attributions.add(source.getAttribution()); } - } - - private String resolveAnchorValue(SpannableStringBuilder htmlBuilder, URLSpan urlSpan) { - int start = htmlBuilder.getSpanStart(urlSpan); - int end = htmlBuilder.getSpanEnd(urlSpan); - int length = end - start; - char[] charKey = new char[length]; - htmlBuilder.getChars(start, end, charKey, 0); - return String.valueOf(charKey); - } - private void addTelemetryEntryToAttributionMap() { - String telemetryKey = context.getString(R.string.mapbox_telemetrySettings); - String telemetryLink = context.getString(R.string.mapbox_telemetryLink); - map.put(telemetryKey, telemetryLink); + return new AttributionParser.Options() + .withCopyrightSign(true) + .withImproveMap(true) + .withTelemetryAttribution(true) + .withAttributionData(attributions.toArray(new String[attributions.size()])) + .build().getAttributions(); } } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/snapshotter/MapSnapshot.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/snapshotter/MapSnapshot.java index eb4f94c428..38c1491461 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/snapshotter/MapSnapshot.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/snapshotter/MapSnapshot.java @@ -28,7 +28,7 @@ public class MapSnapshot { } /** - * @return the bitmap + * @return the large */ public Bitmap getBitmap() { return bitmap; diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/snapshotter/MapSnapshotter.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/snapshotter/MapSnapshotter.java index 5deedc3e63..1c59bb468e 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/snapshotter/MapSnapshotter.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/snapshotter/MapSnapshotter.java @@ -5,19 +5,31 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Matrix; +import android.graphics.PointF; +import android.os.Handler; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.UiThread; +import android.support.v4.content.res.ResourcesCompat; +import android.text.Html; import android.util.DisplayMetrics; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; import com.mapbox.mapboxsdk.R; +import com.mapbox.mapboxsdk.attribution.AttributionLayout; +import com.mapbox.mapboxsdk.attribution.AttributionMeasure; +import com.mapbox.mapboxsdk.attribution.AttributionParser; import com.mapbox.mapboxsdk.camera.CameraPosition; import com.mapbox.mapboxsdk.constants.Style; import com.mapbox.mapboxsdk.geometry.LatLngBounds; import com.mapbox.mapboxsdk.storage.FileSource; +import timber.log.Timber; + /** - * The map snapshotter creates a bitmap of the map, rendered + * The map snapshotter creates a large of the map, rendered * off the UI thread. The snapshotter itself must be used on * the UI thread (for access to the main looper) */ @@ -269,43 +281,126 @@ public class MapSnapshotter { * @param mapSnapshot the map snapshot to draw the overlay on */ protected void addOverlay(MapSnapshot mapSnapshot) { - Bitmap original = mapSnapshot.getBitmap(); - Canvas canvas = new Canvas(original); - addLogo(canvas, original); + Bitmap snapshot = mapSnapshot.getBitmap(); + Canvas canvas = new Canvas(snapshot); + int margin = (int) context.getResources().getDisplayMetrics().density * LOGO_MARGIN_DP; + drawOverlay(mapSnapshot, snapshot, canvas, margin); + } + + private void drawOverlay(MapSnapshot mapSnapshot, Bitmap snapshot, Canvas canvas, int margin) { + AttributionMeasure measure = getAttributionMeasure(mapSnapshot, snapshot, margin); + AttributionLayout layout = measure.measure(); + drawLogo(mapSnapshot, canvas, margin, layout); + drawAttribution(mapSnapshot, canvas, measure, layout); + } + + private AttributionMeasure getAttributionMeasure(MapSnapshot mapSnapshot, Bitmap snapshot, int margin) { + Logo logo = createScaledLogo(snapshot); + TextView longText = createTextView(mapSnapshot, false, logo.getScale()); + TextView shortText = createTextView(mapSnapshot, true, logo.getScale()); + + return new AttributionMeasure.Builder() + .setSnapshot(snapshot) + .setLogo(logo.getLarge()) + .setLogoSmall(logo.getSmall()) + .setTextView(longText) + .setTextViewShort(shortText) + .setMarginPadding(margin) + .build(); + } + + private void drawLogo(MapSnapshot mapSnapshot, Canvas canvas, int margin, AttributionLayout layout) { + if (mapSnapshot.isShowLogo()) { + drawLogo(mapSnapshot.getBitmap(), canvas, margin, layout); + } + } + + private void drawLogo(Bitmap snapshot, Canvas canvas, int margin, AttributionLayout placement) { + Bitmap selectedLogo = placement.getLogo(); + if (selectedLogo != null) { + canvas.drawBitmap(selectedLogo, margin, snapshot.getHeight() - selectedLogo.getHeight() - margin, null); + } + } + + private void drawAttribution(MapSnapshot mapSnapshot, Canvas canvas, + AttributionMeasure measure, AttributionLayout layout) { + // draw attribution + PointF anchorPoint = layout.getAnchorPoint(); + if (anchorPoint != null) { + drawAttribution(canvas, measure, anchorPoint); + } else { + Bitmap snapshot = mapSnapshot.getBitmap(); + Timber.e("Could not generate attribution for snapshot size: %s x %s." + + " You are required to provide your own attribution for the used sources: %s", + snapshot.getWidth(), snapshot.getHeight(), mapSnapshot.getAttributions()); + } + } + + private void drawAttribution(Canvas canvas, AttributionMeasure measure, PointF anchorPoint) { + canvas.save(); + canvas.translate(anchorPoint.x, anchorPoint.y); + measure.getTextView().draw(canvas); + canvas.restore(); + } + + private TextView createTextView(MapSnapshot mapSnapshot, boolean shortText, float scale) { + int textColor = ResourcesCompat.getColor(context.getResources(), R.color.mapbox_gray_dark, context.getTheme()); + int widthMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); + int heightMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); + TextView textView = new TextView(context); + textView.setLayoutParams(new ViewGroup.LayoutParams( + ViewGroup.LayoutParams.WRAP_CONTENT, + ViewGroup.LayoutParams.WRAP_CONTENT) + ); + textView.setSingleLine(true); + textView.setTextSize(10 * scale); + textView.setTextColor(textColor); + textView.setBackgroundResource(R.drawable.mapbox_rounded_corner); + textView.setText(Html.fromHtml(createAttributionString(mapSnapshot, shortText))); + textView.measure(widthMeasureSpec, heightMeasureSpec); + textView.layout(0, 0, textView.getMeasuredWidth(), textView.getMeasuredHeight()); + return textView; } /** - * Draw a logo on the canvas created from the map snapshot. + * Create the attribution string. * - * @param canvas the canvas to draw the bitmap on - * @param original the map snapshot image + * @param mapSnapshot the map snapshot to create the attribution for + * @param shortText indicates if the short variant of the string should be parsed + * @return the parsed attribution string */ - private void addLogo(Canvas canvas, Bitmap original) { - DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); - float margin = displayMetrics.density * LOGO_MARGIN_DP; - Bitmap logo = createScaledLogo(original); - canvas.drawBitmap(logo, margin, original.getHeight() - logo.getHeight() - margin, null); + private String createAttributionString(MapSnapshot mapSnapshot, boolean shortText) { + AttributionParser attributionParser = new AttributionParser.Options() + .withAttributionData(mapSnapshot.getAttributions()) + .withCopyrightSign(false) + .withImproveMap(false) + .build(); + + return attributionParser.createAttributionString(shortText); } /** * Create a scaled logo for a map snapshot. * * @param snapshot the map snapshot where the logo should be placed on - * @return the scaled bitmap logo + * @return the scaled large logo */ - private Bitmap createScaledLogo(Bitmap snapshot) { + private Logo createScaledLogo(@NonNull Bitmap snapshot) { Bitmap logo = BitmapFactory.decodeResource(context.getResources(), R.drawable.mapbox_logo_icon, null); float scale = calculateLogoScale(snapshot, logo); Matrix matrix = new Matrix(); matrix.postScale(scale, scale); - return Bitmap.createBitmap(logo, 0, 0, logo.getWidth(), logo.getHeight(), matrix, true); + Bitmap helmet = BitmapFactory.decodeResource(context.getResources(), R.drawable.mapbox_logo_helmet, null); + Bitmap large = Bitmap.createBitmap(logo, 0, 0, logo.getWidth(), logo.getHeight(), matrix, true); + Bitmap small = Bitmap.createBitmap(helmet, 0, 0, helmet.getWidth(), helmet.getHeight(), matrix, true); + return new Logo(large, small, scale); } /** * Calculates the scale of the logo, only allow downscaling. * - * @param snapshot the bitmap of the map snapshot - * @param logo the bitmap of the mapbox logo + * @param snapshot the large of the map snapshot + * @param logo the large of the mapbox logo * @return the scale value */ private float calculateLogoScale(Bitmap snapshot, Bitmap logo) { @@ -315,7 +410,14 @@ public class MapSnapshotter { float prefWidth = logo.getWidth() / widthRatio; float prefHeight = logo.getHeight() / heightRatio; float calculatedScale = Math.min(prefWidth / logo.getWidth(), prefHeight / logo.getHeight()) * 2; - return calculatedScale < 1 ? calculatedScale : 1.0f; + if (calculatedScale > 1) { + // don't allow over-scaling + calculatedScale = 1.0f; + } else if (calculatedScale < 0.60f) { + // don't scale to low either + calculatedScale = 0.60f; + } + return calculatedScale; } /** @@ -324,14 +426,17 @@ public class MapSnapshotter { * * @param snapshot the generated snapshot */ - protected void onSnapshotReady(MapSnapshot snapshot) { - if (callback != null) { - if (snapshot.isShowLogo()) { - addOverlay(snapshot); + protected void onSnapshotReady(final MapSnapshot snapshot) { + new Handler().post(new Runnable() { + @Override + public void run() { + if (callback != null) { + addOverlay(snapshot); + callback.onSnapshotReady(snapshot); + reset(); + } } - callback.onSnapshotReady(snapshot); - reset(); - } + }); } /** @@ -364,4 +469,28 @@ public class MapSnapshotter { @Override protected native void finalize() throws Throwable; + + private class Logo { + private Bitmap large; + private Bitmap small; + private float scale; + + public Logo(Bitmap large, Bitmap small, float scale) { + this.large = large; + this.small = small; + this.scale = scale; + } + + public Bitmap getLarge() { + return large; + } + + public Bitmap getSmall() { + return small; + } + + public float getScale() { + return scale; + } + } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-hdpi/mapbox_logo_helmet.png b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-hdpi/mapbox_logo_helmet.png new file mode 100644 index 0000000000..2629afe6a3 Binary files /dev/null and b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-hdpi/mapbox_logo_helmet.png differ diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-mdpi/mapbox_logo_helmet.png b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-mdpi/mapbox_logo_helmet.png new file mode 100644 index 0000000000..34bab3bf6d Binary files /dev/null and b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-mdpi/mapbox_logo_helmet.png differ diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-xhdpi/mapbox_logo_helmet.png b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-xhdpi/mapbox_logo_helmet.png new file mode 100644 index 0000000000..942d78ec58 Binary files /dev/null and b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-xhdpi/mapbox_logo_helmet.png differ diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-xxhdpi/mapbox_logo_helmet.png b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-xxhdpi/mapbox_logo_helmet.png new file mode 100644 index 0000000000..947d5a2a30 Binary files /dev/null and b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-xxhdpi/mapbox_logo_helmet.png differ diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-xxxhdpi/mapbox_logo_helmet.png b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-xxxhdpi/mapbox_logo_helmet.png new file mode 100644 index 0000000000..bec38cedc7 Binary files /dev/null and b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable-xxxhdpi/mapbox_logo_helmet.png differ diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/drawable/mapbox_rounded_corner.xml b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable/mapbox_rounded_corner.xml new file mode 100644 index 0000000000..c4dbfb3d80 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/res/drawable/mapbox_rounded_corner.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/values/colors.xml b/platform/android/MapboxGLAndroidSDK/src/main/res/values/colors.xml index b51c890e5c..19007f503f 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/res/values/colors.xml +++ b/platform/android/MapboxGLAndroidSDK/src/main/res/values/colors.xml @@ -1,5 +1,6 @@ + #5F5F5F #7D7F80 #1E8CAB diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/attribution/AttributionParseTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/attribution/AttributionParseTest.java new file mode 100644 index 0000000000..f25cf1b7d8 --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/attribution/AttributionParseTest.java @@ -0,0 +1,309 @@ +package com.mapbox.mapboxsdk.attribution; + +import com.mapbox.mapboxsdk.BuildConfig; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.annotation.Config; + +import java.util.Set; + +import static junit.framework.Assert.assertEquals; + +@RunWith(RobolectricTestRunner.class) +@Config(constants = BuildConfig.class) +public class AttributionParseTest { + + private static final String STREETS_ATTRIBUTION = "© Mapbox © OpenStreetMap Improve this map\n"; + private static final String SATELLITE_ATTRIBUTION = "© Mapbox © OpenStreetMap Improve this map © DigitalGlobe\n"; + + @Test + public void testParseAttributionStringSatellite() throws Exception { + AttributionParser attributionParser = new AttributionParser.Options() + .withAttributionData(SATELLITE_ATTRIBUTION) + .build(); + + Set attributionList = attributionParser.getAttributions(); + assertEquals("Size of list should match", 4, attributionList.size()); + + int counter = 0; + for (Attribution attribution : attributionList) { + switch (counter) { + case 0: + assertEquals("URL mapbox should match", "https://www.mapbox.com/about/maps/", attribution.getUrl()); + assertEquals("Title mapbox should match", "© Mapbox", attribution.getTitle()); + break; + case 1: + assertEquals("URL openstreetmap should match", "http://www.openstreetmap.org/about/", attribution.getUrl()); + assertEquals("Title openstreetmap should match", "© OpenStreetMap", attribution.getTitle()); + break; + case 2: + assertEquals("URL improve map should match", "https://www.mapbox.com/map-feedback/", attribution.getUrl()); + assertEquals("Title improve map should match", "Improve this map", attribution.getTitle()); + break; + case 3: + assertEquals("URL digital globe should match", "https://www.digitalglobe.com/", attribution.getUrl()); + assertEquals("Title digital globe should match", "© DigitalGlobe", attribution.getTitle()); + break; + } + counter++; + } + } + + @Test + public void testParseAttributionStringStreets() throws Exception { + AttributionParser attributionParser = new AttributionParser.Options() + .withAttributionData(STREETS_ATTRIBUTION) + .build(); + + Set attributionList = attributionParser.getAttributions(); + assertEquals("Size of list should match", 3, attributionList.size()); + + int counter = 0; + for (Attribution attribution : attributionList) { + switch (counter) { + case 0: + assertEquals("URL mapbox should match", "https://www.mapbox.com/about/maps/", attribution.getUrl()); + assertEquals("Title mapbox should match", "© Mapbox", attribution.getTitle()); + break; + case 1: + assertEquals("URL openstreetmap should match", "http://www.openstreetmap.org/about/", attribution.getUrl()); + assertEquals("Title openstreetmap should match", "© OpenStreetMap", attribution.getTitle()); + break; + case 2: + assertEquals("URL improve map should match", "https://www.mapbox.com/map-feedback/", attribution.getUrl()); + assertEquals("Title improve map should match", "Improve this map", attribution.getTitle()); + break; + } + counter++; + } + } + + @Test + public void testParseAttributionWithoutMapbox() throws Exception { + AttributionParser attributionParser = new AttributionParser.Options() + .withAttributionData(STREETS_ATTRIBUTION) + .withMapboxAttribution(false) + .build(); + + Set attributionList = attributionParser.getAttributions(); + assertEquals("Size of list should match", 2, attributionList.size()); + + int counter = 0; + for (Attribution attribution : attributionList) { + switch (counter) { + case 0: + assertEquals("URL openstreetmap should match", "http://www.openstreetmap.org/about/", attribution.getUrl()); + assertEquals("Title openstreetmap should match", "© OpenStreetMap", attribution.getTitle()); + break; + case 1: + assertEquals("URL improve map should match", "https://www.mapbox.com/map-feedback/", attribution.getUrl()); + assertEquals("Title improve map should match", "Improve this map", attribution.getTitle()); + break; + } + counter++; + } + } + + @Test + public void testParseAttributionArrayString() throws Exception { + AttributionParser attributionParser = new AttributionParser.Options() + .withAttributionData(new String[] {STREETS_ATTRIBUTION, "", SATELLITE_ATTRIBUTION}) + .build(); + Set attributionList = attributionParser.getAttributions(); + assertEquals("Size of list should match", 4, attributionList.size()); + + int counter = 0; + for (Attribution attribution : attributionList) { + switch (counter) { + case 0: + assertEquals("URL mapbox should match", "https://www.mapbox.com/about/maps/", attribution.getUrl()); + assertEquals("Title mapbox should match", "© Mapbox", attribution.getTitle()); + break; + case 1: + assertEquals("URL openstreetmap should match", "http://www.openstreetmap.org/about/", attribution.getUrl()); + assertEquals("Title openstreetmap should match", "© OpenStreetMap", attribution.getTitle()); + break; + case 2: + assertEquals("URL improve map should match", "https://www.mapbox.com/map-feedback/", attribution.getUrl()); + assertEquals("Title improve map should match", "Improve this map", attribution.getTitle()); + break; + case 3: + assertEquals("URL digital globe should match", "https://www.digitalglobe.com/", attribution.getUrl()); + assertEquals("Title digital globe should match", "© DigitalGlobe", attribution.getTitle()); + break; + } + counter++; + } + } + + @Test + public void testHideImproveThisMapAttributionArrayString() throws Exception { + AttributionParser attributionParser = new AttributionParser.Options() + .withAttributionData(SATELLITE_ATTRIBUTION) + .withImproveMap(false) + .build(); + Set attributionList = attributionParser.getAttributions(); + assertEquals("Size of list should match", 3, attributionList.size()); + + int counter = 0; + for (Attribution attribution : attributionList) { + switch (counter) { + case 0: + assertEquals("URL mapbox should match", "https://www.mapbox.com/about/maps/", attribution.getUrl()); + assertEquals("Title mapbox should match", "© Mapbox", attribution.getTitle()); + break; + case 1: + assertEquals("URL openstreetmap should match", "http://www.openstreetmap.org/about/", attribution.getUrl()); + assertEquals("Title openstreetmap should match", "© OpenStreetMap", attribution.getTitle()); + break; + case 2: + assertEquals("URL digital globe should match", "https://www.digitalglobe.com/", attribution.getUrl()); + assertEquals("Title digital globe should match", "© DigitalGlobe", attribution.getTitle()); + break; + } + counter++; + } + } + + @Test + public void testParseHideCopyrightAttributionArrayString() throws Exception { + AttributionParser attributionParser = new AttributionParser.Options() + .withAttributionData(STREETS_ATTRIBUTION, "", SATELLITE_ATTRIBUTION) + .withCopyrightSign(false) + .build(); + Set attributionList = attributionParser.getAttributions(); + assertEquals("Size of list should match", 4, attributionList.size()); + + int counter = 0; + for (Attribution attribution : attributionList) { + switch (counter) { + case 0: + assertEquals("URL mapbox should match", "https://www.mapbox.com/about/maps/", attribution.getUrl()); + assertEquals("Title mapbox should match", "Mapbox", attribution.getTitle()); + break; + case 1: + assertEquals("URL openstreetmap should match", "http://www.openstreetmap.org/about/", attribution.getUrl()); + assertEquals("Title openstreetmap should match", "OpenStreetMap", attribution.getTitle()); + break; + case 2: + assertEquals("URL improve map should match", "https://www.mapbox.com/map-feedback/", attribution.getUrl()); + assertEquals("Title improve map should match", "Improve this map", attribution.getTitle()); + break; + case 3: + assertEquals("URL digital globe should match", "https://www.digitalglobe.com/", attribution.getUrl()); + assertEquals("Title digital globe should match", "DigitalGlobe", attribution.getTitle()); + break; + } + counter++; + } + } + + @Test + public void testOutputWithoutCopyRightString() throws Exception { + AttributionParser attributionParser = new AttributionParser.Options() + .withAttributionData(STREETS_ATTRIBUTION) + .withCopyrightSign(false) + .withImproveMap(false) + .build(); + + assertEquals( + "Attribution string should match", + "© Mapbox / OpenStreetMap", + attributionParser.createAttributionString() + ); + } + + + @Test + public void testOutputWithCopyRightString() throws Exception { + AttributionParser attributionParser = new AttributionParser.Options() + .withAttributionData(STREETS_ATTRIBUTION) + .withImproveMap(false) + .build(); + + assertEquals( + "Attribution string should match", + "© Mapbox / © OpenStreetMap", + attributionParser.createAttributionString() + ); + } + + @Test + public void testOutputWithoutCopyRightWithoutMapboxString() throws Exception { + AttributionParser attributionParser = new AttributionParser.Options() + .withAttributionData(STREETS_ATTRIBUTION) + .withCopyrightSign(false) + .withImproveMap(false) + .withMapboxAttribution(false) + .build(); + + assertEquals( + "Attribution string should match", + "© OpenStreetMap", + attributionParser.createAttributionString() + ); + } + + @Test + public void testOutputWithCopyRightWithoutMapboxString() throws Exception { + AttributionParser attributionParser = new AttributionParser.Options() + .withAttributionData(STREETS_ATTRIBUTION) + .withImproveMap(false) + .withMapboxAttribution(false) + .build(); + + assertEquals( + "Attribution string should match", + "© OpenStreetMap", + attributionParser.createAttributionString() + ); + } + + @Test + public void testOutputSatelliteString() throws Exception { + AttributionParser attributionParser = new AttributionParser.Options() + .withAttributionData(STREETS_ATTRIBUTION, SATELLITE_ATTRIBUTION, "blabla", "") + .withImproveMap(false) + .withCopyrightSign(false) + .withMapboxAttribution(false) + .build(); + + assertEquals( + "Attribution string should match", + "© OpenStreetMap / DigitalGlobe", + attributionParser.createAttributionString() + ); + } + + @Test + public void testShortOpenStreetMapString() throws Exception { + AttributionParser attributionParser = new AttributionParser.Options() + .withAttributionData(STREETS_ATTRIBUTION, SATELLITE_ATTRIBUTION, "blabla", "") + .withImproveMap(false) + .withCopyrightSign(false) + .withMapboxAttribution(false) + .build(); + + assertEquals( + "Attribution string should match", + "© OSM / DigitalGlobe", + attributionParser.createAttributionString(true) + ); + } + + @Test + public void testShortOpenStreetMapWithoutCopyrightString() throws Exception { + AttributionParser attributionParser = new AttributionParser.Options() + .withAttributionData(STREETS_ATTRIBUTION, SATELLITE_ATTRIBUTION, "blabla", "") + .withImproveMap(false) + .withCopyrightSign(false) + .build(); + + assertEquals( + "Attribution string should match", + "© Mapbox / OSM / DigitalGlobe", + attributionParser.createAttributionString(true) + ); + } +} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterActivity.java index 245786e1d0..c4fe93d200 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterActivity.java @@ -69,7 +69,7 @@ public class MapSnapshotterActivity extends AppCompatActivity { .withPixelRatio(1) // Optionally the style - .withStyle((column + row) % 2 == 0 ? Style.TRAFFIC_DAY : Style.DARK); + .withStyle((column + row) % 2 == 0 ? Style.MAPBOX_STREETS : Style.DARK); // Optionally the visible region if (row % 2 == 0) { diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterMarkerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterMarkerActivity.java index 781e7b6334..b690f18b6a 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterMarkerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/snapshot/MapSnapshotterMarkerActivity.java @@ -9,14 +9,12 @@ import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.ViewTreeObserver; import android.widget.ImageView; - import com.mapbox.mapboxsdk.camera.CameraPosition; import com.mapbox.mapboxsdk.constants.Style; import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.snapshotter.MapSnapshot; import com.mapbox.mapboxsdk.snapshotter.MapSnapshotter; import com.mapbox.mapboxsdk.testapp.R; - import timber.log.Timber; /** @@ -46,7 +44,7 @@ public class MapSnapshotterMarkerActivity extends AppCompatActivity implements M getApplicationContext(), new MapSnapshotter .Options(Math.min(container.getMeasuredWidth(), 1024), Math.min(container.getMeasuredHeight(), 1024)) - .withStyle(Style.TRAFFIC_DAY) + .withStyle(Style.OUTDOORS) .withCameraPosition(new CameraPosition.Builder().target(new LatLng(52.090737, 5.121420)).zoom(15).build()) ); mapSnapshotter.start(MapSnapshotterMarkerActivity.this); @@ -54,6 +52,12 @@ public class MapSnapshotterMarkerActivity extends AppCompatActivity implements M }); } + @Override + protected void onStop() { + super.onStop(); + mapSnapshotter.cancel(); + } + @Override public void onSnapshotReady(MapSnapshot snapshot) { Timber.i("Snapshot ready"); diff --git a/platform/android/dependencies.gradle b/platform/android/dependencies.gradle index eadf7aea56..0094b79281 100644 --- a/platform/android/dependencies.gradle +++ b/platform/android/dependencies.gradle @@ -25,6 +25,7 @@ ext { // unit test junit : 'junit:junit:4.12', mockito : 'org.mockito:mockito-core:2.10.0', + robolectric : 'org.robolectric:robolectric:3.5.1', // instrumentation test testRunner : "com.android.support.test:runner:${testRunnerVersion}", -- cgit v1.2.1 From addefe539ac6ad94e4d8526f3cc1da2114ac0585 Mon Sep 17 00:00:00 2001 From: Fabian Guerra Soto Date: Tue, 14 Nov 2017 13:37:45 -0500 Subject: [ios] Fix toCamera.centerCoordinate in shouldChangeFromCamera (#10433) * [ios] Fix toCamera.centerCoordinate in shouldChangeFromCamera has same center as oldCamera. * [ios] Update changelog. * [ios] Remove unnecessary variables. * [ios] Clarify changelog doc. --- platform/ios/CHANGELOG.md | 1 + platform/ios/src/MGLMapView.mm | 13 ++++++------- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/platform/ios/CHANGELOG.md b/platform/ios/CHANGELOG.md index d449379ea6..147567da19 100644 --- a/platform/ios/CHANGELOG.md +++ b/platform/ios/CHANGELOG.md @@ -37,6 +37,7 @@ Mapbox welcomes participation and contributions from everyone. Please read [CONT * Users of VoiceOver can now swipe left and right to navigate among visible places, points of interest, and roads. ([#9950](https://github.com/mapbox/mapbox-gl-native/pull/9950)) * Increased the default maximum zoom level from 20 to 22. ([#9835](https://github.com/mapbox/mapbox-gl-native/pull/9835)) +* Fixed an issue where the same value was passed in as the `oldCamera` and `newCamera` parameters to the `-[MGLMapViewDelegate mapView:shouldChangeFromCamera:toCamera:]` method. ([#10433](https://github.com/mapbox/mapbox-gl-native/pull/10433)) ### Other changes diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index c002da5f18..41d900702b 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -1801,18 +1801,17 @@ public: return panCamera; } -- (MGLMapCamera *)cameraByZoomingToZoomLevel:(double)zoom aroundAnchorPoint:(CGPoint)anchorPoint +- (MGLMapCamera *)cameraByZoomingToZoomLevel:(double)zoom aroundAnchorPoint:(CGPoint)anchorPoint { - mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(self.contentInset); - mbgl::CameraOptions currentCameraOptions = _mbglMap->getCameraOptions(padding); - MGLMapCamera *camera; - mbgl::ScreenCoordinate anchor = mbgl::ScreenCoordinate { anchorPoint.x, anchorPoint.y }; + mbgl::EdgeInsets padding = mbgl::EdgeInsets(anchor.y, anchor.x, self.size.height - anchor.y, self.size.width - anchor.x); + mbgl::CameraOptions currentCameraOptions = _mbglMap->getCameraOptions(padding); + currentCameraOptions.zoom = mbgl::util::clamp(zoom, self.minimumZoomLevel, self.maximumZoomLevel); currentCameraOptions.anchor = anchor; - camera = [self cameraForCameraOptions:currentCameraOptions]; + MGLCoordinateBounds bounds = MGLCoordinateBoundsFromLatLngBounds(_mbglMap->latLngBoundsForCamera(currentCameraOptions)); - return camera; + return [self cameraThatFitsCoordinateBounds:bounds]; } - (MGLMapCamera *)cameraByRotatingToDirection:(CLLocationDirection)degrees aroundAnchorPoint:(CGPoint)anchorPoint -- cgit v1.2.1 From 43c6f6b3b0ead73d0c94aa7646e3d47568b924d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguy=E1=BB=85n?= Date: Fri, 10 Nov 2017 18:27:36 -0800 Subject: [ios] Updated Spanish, Vietnamese translations --- .../ios/resources/es.lproj/Localizable.strings | 25 ++++++++++++-- .../ios/resources/es.lproj/Localizable.stringsdict | 38 +++++++++++++++++----- .../ios/resources/vi.lproj/Localizable.strings | 27 +++++++++++++-- .../ios/resources/vi.lproj/Localizable.stringsdict | 32 ++++++++++++++---- 4 files changed, 101 insertions(+), 21 deletions(-) diff --git a/platform/ios/resources/es.lproj/Localizable.strings b/platform/ios/resources/es.lproj/Localizable.strings index 75f799fcd9..d1d5084dc7 100644 --- a/platform/ios/resources/es.lproj/Localizable.strings +++ b/platform/ios/resources/es.lproj/Localizable.strings @@ -34,6 +34,9 @@ /* Accessibility label */ "INFO_A11Y_LABEL" = "Acerca de este mapa"; +/* List separator */ +"LIST_SEPARATOR" = ", "; + /* User-friendly error description */ "LOAD_MAP_FAILED_DESC" = "No se pudo cargar el mapa debido a un error desconocido."; @@ -46,12 +49,30 @@ /* Accessibility label */ "MAP_A11Y_LABEL" = "Mapa"; -/* Map accessibility value */ -"MAP_A11Y_VALUE" = "Zoom x%1$d\nAnotaciones visibles: %2$ld"; +/* Map accessibility value; {number of visible annotations} */ +"MAP_A11Y_VALUE_ANNOTATIONS" = "%ld anotacion(es) visible(s)."; + +/* Map accessibility value; {list of visible places} */ +"MAP_A11Y_VALUE_PLACES" = "Lugares visibles: %@."; + +/* Map accessibility value; {number of visible roads} */ +"MAP_A11Y_VALUE_ROADS" = "%ld camino(s) visible(s)."; + +/* Map accessibility value; {zoom level} */ +"MAP_A11Y_VALUE_ZOOM" = "Zoom %dx."; /* User-friendly error description */ "PARSE_STYLE_FAILED_DESC" = "No se pudo cargar el mapa debido a que el estilo está dañado."; +/* Accessibility value indicating that a road is a divided road (dual carriageway) */ +"ROAD_DIVIDED_A11Y_VALUE" = "Vía de doble carril"; + +/* Accessibility value indicating that a road is a one-way road */ +"ROAD_ONEWAY_A11Y_VALUE" = "Unidireccional"; + +/* String format for accessibility value for road feature; {route number} */ +"ROAD_REF_A11Y_FMT" = "Ruta %@"; + /* Action sheet title */ "SDK_NAME" = "Mapbox iOS SDK"; diff --git a/platform/ios/resources/es.lproj/Localizable.stringsdict b/platform/ios/resources/es.lproj/Localizable.stringsdict index 9532801ffa..91a49b067f 100644 --- a/platform/ios/resources/es.lproj/Localizable.stringsdict +++ b/platform/ios/resources/es.lproj/Localizable.stringsdict @@ -2,22 +2,26 @@ - MAP_A11Y_VALUE + MAP_A11Y_VALUE_ANNOTATIONS NSStringLocalizedFormatKey - %#@level@ -%#@count@ - level + %#@count@ + count NSStringFormatSpecTypeKey NSStringPluralRuleType NSStringFormatValueTypeKey - d + ld one - Zoom %dx + %d anotación visible other - Zoom %dx + %d anotaciones visibles + + MAP_A11Y_VALUE_ROADS + + NSStringLocalizedFormatKey + %#@count@ count NSStringFormatSpecTypeKey @@ -25,9 +29,25 @@ NSStringFormatValueTypeKey ld one - %d anotación visible + %d camino visible other - %d anotaciones visibles + %d caminos visibles + + + MAP_A11Y_VALUE_ZOOM + + NSStringLocalizedFormatKey + %#@level@ + level + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Zoom %dx + other + Zoom %dx diff --git a/platform/ios/resources/vi.lproj/Localizable.strings b/platform/ios/resources/vi.lproj/Localizable.strings index 8a35d5d5d6..4d08b67299 100644 --- a/platform/ios/resources/vi.lproj/Localizable.strings +++ b/platform/ios/resources/vi.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Accessibility hint */ +/* Accessibility hint */ "ANNOTATION_A11Y_HINT" = "Hiển thị thêm thông tin"; /* No comment provided by engineer. */ @@ -34,6 +34,9 @@ /* Accessibility label */ "INFO_A11Y_LABEL" = "Giới thiệu về bản đồ này"; +/* List separator */ +"LIST_SEPARATOR" = ", "; + /* User-friendly error description */ "LOAD_MAP_FAILED_DESC" = "Bản đồ bị thất bại khi tải vì lỗi không rõ."; @@ -46,12 +49,30 @@ /* Accessibility label */ "MAP_A11Y_LABEL" = "Bản đồ"; -/* Map accessibility value */ -"MAP_A11Y_VALUE" = "Thu phóng gấp %1$d lần\n%2$ld chú thích đang xuất hiện"; +/* Map accessibility value; {number of visible annotations} */ +"MAP_A11Y_VALUE_ANNOTATIONS" = "%ld chú thích đang xuất hiện."; + +/* Map accessibility value; {list of visible places} */ +"MAP_A11Y_VALUE_PLACES" = "Địa điểm đang xuất hiện: %@."; + +/* Map accessibility value; {number of visible roads} */ +"MAP_A11Y_VALUE_ROADS" = "%ld con đường đang xuất hiện."; + +/* Map accessibility value; {zoom level} */ +"MAP_A11Y_VALUE_ZOOM" = "Thu phóng gấp %d lần."; /* User-friendly error description */ "PARSE_STYLE_FAILED_DESC" = "Bản đồ bị thất bại khi tải vì bảng kiểu bị hỏng."; +/* Accessibility value indicating that a road is a divided road (dual carriageway) */ +"ROAD_DIVIDED_A11Y_VALUE" = "Đường phân làn"; + +/* Accessibility value indicating that a road is a one-way road */ +"ROAD_ONEWAY_A11Y_VALUE" = "Một chiều"; + +/* String format for accessibility value for road feature; {route number} */ +"ROAD_REF_A11Y_FMT" = "Đường số %@"; + /* Action sheet title */ "SDK_NAME" = "Mapbox iOS SDK"; diff --git a/platform/ios/resources/vi.lproj/Localizable.stringsdict b/platform/ios/resources/vi.lproj/Localizable.stringsdict index 9044588f50..f4f7c40045 100644 --- a/platform/ios/resources/vi.lproj/Localizable.stringsdict +++ b/platform/ios/resources/vi.lproj/Localizable.stringsdict @@ -2,20 +2,24 @@ - MAP_A11Y_VALUE + MAP_A11Y_VALUE_ANNOTATIONS NSStringLocalizedFormatKey - %#@level@ -%#@count@ - level + %#@count@ + count NSStringFormatSpecTypeKey NSStringPluralRuleType NSStringFormatValueTypeKey - d + ld other - Thu phóng gấp %d lần + %d chú thích đang xuất hiện + + MAP_A11Y_VALUE_ROADS + + NSStringLocalizedFormatKey + %#@count@ count NSStringFormatSpecTypeKey @@ -23,7 +27,21 @@ NSStringFormatValueTypeKey ld other - %d chú thích đang xuất hiện + %d con đường đang xuất hiện + + + MAP_A11Y_VALUE_ZOOM + + NSStringLocalizedFormatKey + %#@level@ + level + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + other + Thu phóng gấp %d lần -- cgit v1.2.1 From 739f88e61f3e004d372ee12a15b3ef4d2ca2c6e3 Mon Sep 17 00:00:00 2001 From: Fabian Guerra Date: Tue, 14 Nov 2017 15:30:28 -0500 Subject: [ios] Update podspecs to v3.7.0-rc.1 --- platform/ios/Mapbox-iOS-SDK-nightly-dynamic.podspec | 2 +- platform/ios/Mapbox-iOS-SDK-symbols.podspec | 2 +- platform/ios/Mapbox-iOS-SDK.podspec | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/platform/ios/Mapbox-iOS-SDK-nightly-dynamic.podspec b/platform/ios/Mapbox-iOS-SDK-nightly-dynamic.podspec index b8b6687f0c..a522c8acb5 100644 --- a/platform/ios/Mapbox-iOS-SDK-nightly-dynamic.podspec +++ b/platform/ios/Mapbox-iOS-SDK-nightly-dynamic.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |m| - version = '3.7.0-beta.4' + version = '3.7.0-rc.1' m.name = 'Mapbox-iOS-SDK-nightly-dynamic' m.version = "#{version}-nightly" diff --git a/platform/ios/Mapbox-iOS-SDK-symbols.podspec b/platform/ios/Mapbox-iOS-SDK-symbols.podspec index e84255715d..d6d52a59c8 100644 --- a/platform/ios/Mapbox-iOS-SDK-symbols.podspec +++ b/platform/ios/Mapbox-iOS-SDK-symbols.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |m| - version = '3.7.0-beta.4' + version = '3.7.0-rc.1' m.name = 'Mapbox-iOS-SDK-symbols' m.version = "#{version}-symbols" diff --git a/platform/ios/Mapbox-iOS-SDK.podspec b/platform/ios/Mapbox-iOS-SDK.podspec index bb6c5e0123..9e06e6a484 100644 --- a/platform/ios/Mapbox-iOS-SDK.podspec +++ b/platform/ios/Mapbox-iOS-SDK.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |m| - version = '3.7.0-beta.4' + version = '3.7.0-rc.1' m.name = 'Mapbox-iOS-SDK' m.version = version -- cgit v1.2.1 From 1049c012255520606ee349a16f6b430db74a520f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguy=E1=BB=85n?= Date: Tue, 14 Nov 2017 19:14:12 -0800 Subject: Deploy macosapp as part of releases (#10191) * [macos] Deploy macosapp as part of releases Added steps to the packaging script to archive and export macosapp. Upload the exported, compressed application bundle to the GitHub release when deploying a release. * [macos] Explicitly named function argument * [macos] Consolidated xcodebuild invocations --- platform/macos/ExportOptions.plist | 10 ++++++++++ platform/macos/scripts/deploy-packages.sh | 15 ++++++++++++++- platform/macos/scripts/package.sh | 24 +++++++++++++++++++++--- 3 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 platform/macos/ExportOptions.plist diff --git a/platform/macos/ExportOptions.plist b/platform/macos/ExportOptions.plist new file mode 100644 index 0000000000..21af10c08a --- /dev/null +++ b/platform/macos/ExportOptions.plist @@ -0,0 +1,10 @@ + + + + + method + developer-id + teamID + GJZR2MEM28 + + diff --git a/platform/macos/scripts/deploy-packages.sh b/platform/macos/scripts/deploy-packages.sh index d9d74b2867..90c3c29308 100755 --- a/platform/macos/scripts/deploy-packages.sh +++ b/platform/macos/scripts/deploy-packages.sh @@ -46,6 +46,19 @@ buildPackageStyle() { --name ${file_name} \ --file "${BINARY_DIRECTORY}/${file_name}" > /dev/null fi + if [[ ${DEPLOY_APP} == true ]]; then + cd build/macos/app + rm -f 'Mapbox GL.app.zip' + zip -yr '../deploy/Mapbox GL.app.zip' 'Mapbox GL.app' + cd - + if [[ "${GITHUB_RELEASE}" == true ]]; then + echo "Uploading ${file_name} to GitHub" + github-release upload \ + --tag "macos-v${PUBLISH_VERSION}" \ + --name ${file_name} \ + --file "${BINARY_DIRECTORY}/${file_name}" > /dev/null + fi + fi } export TRAVIS_REPO_SLUG=mapbox-gl-native @@ -114,6 +127,6 @@ if [[ "${GITHUB_RELEASE}" == true ]]; then fi buildPackageStyle "xpackage" "symbols" -buildPackageStyle "xpackage SYMBOLS=NO" +DEPLOY_APP=true buildPackageStyle "xpackage SYMBOLS=NO" step "Finished deploying ${PUBLISH_VERSION} in $(($SECONDS / 60)) minutes and $(($SECONDS % 60)) seconds" diff --git a/platform/macos/scripts/package.sh b/platform/macos/scripts/package.sh index 6ae0cc65cc..a5aae24e0c 100755 --- a/platform/macos/scripts/package.sh +++ b/platform/macos/scripts/package.sh @@ -6,6 +6,7 @@ set -u NAME=Mapbox OUTPUT=build/macos/pkg +APP_OUTPUT=build/macos/app DERIVED_DATA=build/macos PRODUCTS=${DERIVED_DATA} @@ -16,13 +17,21 @@ function step { >&2 echo -e "\033[1m\033[36m* $@\033[0m"; } function finish { >&2 echo -en "\033[0m"; } trap finish EXIT -rm -rf ${OUTPUT} +rm -rf ${OUTPUT} ${APP_OUTPUT} HASH=`git log | head -1 | awk '{ print $2 }' | cut -c 1-10` && true PROJ_VERSION=$(git rev-list --count HEAD) SEM_VERSION=$( git describe --tags --match=macos-v*.*.* --abbrev=0 | sed 's/^macos-v//' ) SHORT_VERSION=${SEM_VERSION%-*} +XCODEBUILD_SCHEME=dynamic +XCODEBUILD_ACTION=build +if [[ ${BUILDTYPE} == Release ]]; then + XCODEBUILD_SCHEME=macosapp + XCODEBUILD_ACTION=archive + mkdir -p ${APP_OUTPUT} +fi + step "Building targets (build ${PROJ_VERSION}, version ${SEM_VERSION})…" xcodebuild \ CURRENT_PROJECT_VERSION=${PROJ_VERSION} \ @@ -30,10 +39,12 @@ xcodebuild \ CURRENT_SEMANTIC_VERSION=${SEM_VERSION} \ CURRENT_COMMIT_HASH=${HASH} \ -derivedDataPath ${DERIVED_DATA} \ + -archivePath "${APP_OUTPUT}/macosapp.xcarchive" \ -workspace ./platform/macos/macos.xcworkspace \ - -scheme dynamic \ + -scheme ${XCODEBUILD_SCHEME} \ -configuration ${BUILDTYPE} \ - -jobs ${JOBS} | xcpretty + -jobs ${JOBS} \ + ${XCODEBUILD_ACTION} | xcpretty step "Copying dynamic framework into place" mkdir -p "${OUTPUT}/${NAME}.framework" @@ -66,6 +77,13 @@ if [[ ${BUILDTYPE} == Release ]]; then validate_dsym \ "${OUTPUT}/${NAME}.framework.dSYM/Contents/Resources/DWARF/${NAME}" \ "${OUTPUT}/${NAME}.framework/${NAME}" + + step "Exporting Mapbox GL.app" + xcodebuild \ + -exportArchive \ + -archivePath "${APP_OUTPUT}/macosapp.xcarchive" \ + -exportPath "${APP_OUTPUT}" \ + -exportOptionsPlist platform/macos/ExportOptions.plist fi function create_podspec { -- cgit v1.2.1 From 30e59ce738c05e128398ef5109fdc08d208c2cf1 Mon Sep 17 00:00:00 2001 From: Pablo Guardiola Date: Thu, 16 Nov 2017 16:06:22 +0100 Subject: Monkey crashes (#10440) (#10472) * [android] - avoid null map from trackballevent * [android] - fixup animated marker test activity from monkey runs * [android] - harden NativeMapView OnMapChangeListener * [android] - harden against destroyed wrapper activity while moving touch pointers * [android] - harden bulk marker activity for monkey runner * [android] - harden scale end gesture event for null velocity tracker * [android] - invalid mapboxMap invocation * [android] - reset test setup --- .../mapbox/mapboxsdk/maps/MapGestureDetector.java | 11 +++++++++-- .../com/mapbox/mapboxsdk/maps/NativeMapView.java | 4 +++- .../java/com/mapbox/mapboxsdk/maps/Transform.java | 20 +++++++++++--------- .../activity/annotation/AnimatedMarkerActivity.java | 14 ++++++++------ .../activity/annotation/BulkMarkerActivity.java | 4 ++++ 5 files changed, 35 insertions(+), 18 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java index 4120e164a4..9d7d980ae3 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java @@ -235,8 +235,10 @@ final class MapGestureDetector { velocityTracker = null; break; case MotionEvent.ACTION_MOVE: - velocityTracker.addMovement(event); - velocityTracker.computeCurrentVelocity(1000); + if (velocityTracker != null) { + velocityTracker.addMovement(event); + velocityTracker.computeCurrentVelocity(1000); + } break; } @@ -551,6 +553,11 @@ final class MapGestureDetector { // Called when fingers leave screen @Override public void onScaleEnd(final ScaleGestureDetector detector) { + if (velocityTracker == null) { + return; + } + + if (rotateGestureOccurred || quickZoom) { reset(); return; diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java index 8b6bce69e2..e8eb7e8718 100755 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java @@ -1082,7 +1082,9 @@ final class NativeMapView { // void addOnMapChangedListener(@NonNull MapView.OnMapChangedListener listener) { - mapView.addOnMapChangedListener(listener); + if (mapView != null) { + mapView.addOnMapChangedListener(listener); + } } void removeOnMapChangedListener(@NonNull MapView.OnMapChangedListener listener) { diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java index 0366e50627..16c45ebea2 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java @@ -238,16 +238,18 @@ final class Transform implements MapView.OnMapChangedListener { } void setZoom(double zoom, @NonNull PointF focalPoint, long duration) { - mapView.addOnMapChangedListener(new MapView.OnMapChangedListener() { - @Override - public void onMapChanged(int change) { - if (change == MapView.REGION_DID_CHANGE_ANIMATED) { - cameraChangeDispatcher.onCameraIdle(); - mapView.removeOnMapChangedListener(this); + if (mapView != null) { + mapView.addOnMapChangedListener(new MapView.OnMapChangedListener() { + @Override + public void onMapChanged(int change) { + if (change == MapView.REGION_DID_CHANGE_ANIMATED) { + cameraChangeDispatcher.onCameraIdle(); + mapView.removeOnMapChangedListener(this); + } } - } - }); - mapView.setZoom(zoom, focalPoint, duration); + }); + mapView.setZoom(zoom, focalPoint, duration); + } } // Direction diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java index 52181cee0c..d8752bbea2 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java @@ -236,12 +236,14 @@ public class AnimatedMarkerActivity extends AppCompatActivity { stopped = true; - // Stop ongoing animations, prevent memory lekas - MarkerViewManager markerViewManager = mapboxMap.getMarkerViewManager(); - for (MarkerView markerView : markerViews) { - View view = markerViewManager.getView(markerView); - if (view != null) { - view.animate().cancel(); + // Stop ongoing animations, prevent memory leaks + if (mapboxMap != null) { + MarkerViewManager markerViewManager = mapboxMap.getMarkerViewManager(); + for (MarkerView markerView : markerViews) { + View view = markerViewManager.getView(markerView); + if (view != null) { + view.animate().cancel(); + } } } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java index 50adeb2d74..666fd2eee6 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java @@ -100,6 +100,10 @@ public class BulkMarkerActivity extends AppCompatActivity implements AdapterView } private void showMarkers(int amount) { + if (mapboxMap == null || locations == null) { + return; + } + mapboxMap.clear(); if (locations.size() < amount) { -- cgit v1.2.1 From f6c9dd6b2552a1044f87ae4620ead3da9fcbb54b Mon Sep 17 00:00:00 2001 From: Jason Wray Date: Thu, 16 Nov 2017 11:31:32 -0500 Subject: [ios] Update puck arrow stroke color when tint changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤤 --- platform/ios/src/MGLFaux3DUserLocationAnnotationView.m | 1 + 1 file changed, 1 insertion(+) diff --git a/platform/ios/src/MGLFaux3DUserLocationAnnotationView.m b/platform/ios/src/MGLFaux3DUserLocationAnnotationView.m index 1ed3d86ad1..a1d9fb1d48 100644 --- a/platform/ios/src/MGLFaux3DUserLocationAnnotationView.m +++ b/platform/ios/src/MGLFaux3DUserLocationAnnotationView.m @@ -63,6 +63,7 @@ const CGFloat MGLUserLocationHeadingUpdateThreshold = 0.01; if (_puckModeActivated) { _puckArrow.fillColor = newTintColor; + _puckArrow.strokeColor = newTintColor; } else { -- cgit v1.2.1 From 84fbb7c5767c6ba18992bcfff0f9a76e202a3ea3 Mon Sep 17 00:00:00 2001 From: Pablo Guardiola Date: Fri, 17 Nov 2017 16:39:36 +0100 Subject: release v5.2.0-beta.5 (#10464) --- platform/android/CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/platform/android/CHANGELOG.md b/platform/android/CHANGELOG.md index d61c2ec8b9..924a05aa85 100644 --- a/platform/android/CHANGELOG.md +++ b/platform/android/CHANGELOG.md @@ -6,6 +6,16 @@ Mapbox welcomes participation and contributions from everyone. If you'd like to * TBA +## 5.2.0-beta.5 - November 14, 2017 + +- MapSnapshot attribution [#10362](https://github.com/mapbox/mapbox-gl-native/pull/10362) +- Downgrade min sdk to 14 [#10355](https://github.com/mapbox/mapbox-gl-native/pull/10355) +- Harden deselection mechanism for markers [#10403](https://github.com/mapbox/mapbox-gl-native/pull/10403) +- Cherry picks to agua [#10442](https://github.com/mapbox/mapbox-gl-native/pull/10442) +- Rework test activity gen script setup [#10365](https://github.com/mapbox/mapbox-gl-native/pull/10365) +- Fix broken android unit tests, update test make target to SDK [#10387](https://github.com/mapbox/mapbox-gl-native/pull/10387) +- Check for null value when calling mapboxMap.clear [#10388](https://github.com/mapbox/mapbox-gl-native/pull/10388) + ## 5.2.0-beta.4 - November 3, 2017 - Revert adding mapbox-android-core dependency (#10354) [#10380](https://github.com/mapbox/mapbox-gl-native/pull/10380) -- cgit v1.2.1 From 5eb050dc35d3d780136806aee0f72bae592011a4 Mon Sep 17 00:00:00 2001 From: Fabian Guerra Date: Mon, 13 Nov 2017 17:29:54 -0500 Subject: [ios, macos] Update the attribution format for small snapshots. --- platform/darwin/src/MGLAttributionInfo.mm | 9 + platform/darwin/src/MGLMapSnapshotter.mm | 150 +++++++-- .../ios/resources/Base.lproj/Localizable.strings | Bin 3780 -> 298 bytes .../mapbox_helmet.imageset/Contents.json | 12 + .../mapbox_helmet.imageset/mapbox_helmet.pdf | 355 +++++++++++++++++++++ platform/macos/macos.xcodeproj/project.pbxproj | 4 + platform/macos/sdk/Base.lproj/Localizable.strings | Bin 840 -> 298 bytes platform/macos/sdk/mapbox_helmet.pdf | 355 +++++++++++++++++++++ 8 files changed, 856 insertions(+), 29 deletions(-) create mode 100644 platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/Contents.json create mode 100644 platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/mapbox_helmet.pdf create mode 100644 platform/macos/sdk/mapbox_helmet.pdf diff --git a/platform/darwin/src/MGLAttributionInfo.mm b/platform/darwin/src/MGLAttributionInfo.mm index 770aeb25e7..92fb9b689f 100644 --- a/platform/darwin/src/MGLAttributionInfo.mm +++ b/platform/darwin/src/MGLAttributionInfo.mm @@ -127,6 +127,15 @@ return self; } +- (id)copyWithZone:(nullable NSZone *)zone +{ + MGLAttributionInfo *info = [[[self class] allocWithZone:zone] initWithTitle:_title + URL:_URL]; + info.feedbackLink = _feedbackLink; + + return info; +} + - (nullable NSURL *)feedbackURLAtCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate zoomLevel:(double)zoomLevel { return [self feedbackURLForStyleURL:nil atCenterCoordinate:centerCoordinate zoomLevel:zoomLevel direction:0 pitch:0]; } diff --git a/platform/darwin/src/MGLMapSnapshotter.mm b/platform/darwin/src/MGLMapSnapshotter.mm index dea93eba34..31b3ed41d6 100644 --- a/platform/darwin/src/MGLMapSnapshotter.mm +++ b/platform/darwin/src/MGLMapSnapshotter.mm @@ -27,6 +27,24 @@ const CGPoint MGLLogoImagePosition = CGPointMake(8, 8); const CGFloat MGLSnapshotterMinimumPixelSize = 64; +@interface MGLSnapshotAttributionOptions : NSObject +#if TARGET_OS_IPHONE +@property (nonatomic) UIImage *logoImage; +#else +@property (nonatomic) NSImage *logoImage; +#endif + +@property (nonatomic) CGSize attributionBackgroundSize; + +@property (nonatomic) NS_ARRAY_OF(MGLAttributionInfo *) *attributionInfo; + +@end + +@implementation MGLSnapshotAttributionOptions +@end + + + @implementation MGLMapSnapshotOptions - (instancetype _Nonnull)initWithStyleURL:(nullable NSURL *)styleURL camera:(MGLMapCamera *)camera size:(CGSize) size @@ -61,6 +79,7 @@ const CGFloat MGLSnapshotterMinimumPixelSize = 64; @implementation MGLMapSnapshot { mbgl::MapSnapshotter::PointForFn _pointForFn; } + - (instancetype)initWithImage:(nullable MGLImage *)image scale:(CGFloat)scale pointForFn:(mbgl::MapSnapshotter::PointForFn)pointForFn { self = [super init]; @@ -88,6 +107,7 @@ const CGFloat MGLSnapshotterMinimumPixelSize = 64; std::shared_ptr _mbglThreadPool; std::unique_ptr _mbglMapSnapshotter; std::unique_ptr> _snapshotCallback; + CGFloat _defaultLogoHeight; } - (instancetype)initWithOptions:(MGLMapSnapshotOptions *)options @@ -167,15 +187,6 @@ const CGFloat MGLSnapshotterMinimumPixelSize = 64; [infos growArrayByAddingAttributionInfosFromArray:tileSetInfos]; } - CGSize attributionBackgroundSize = CGSizeMake(10, 0); - for (MGLAttributionInfo *info in infos) { - if (info.isFeedbackLink) { - continue; - } - attributionBackgroundSize.width += [info.title size].width + 10; - attributionBackgroundSize.height = MAX([info.title size].height, attributionBackgroundSize.height); - } - if (mbglError) { NSString *description = @(mbgl::util::toString(mbglError).c_str()); NSDictionary *userInfo = @{NSLocalizedDescriptionKey: description}; @@ -198,20 +209,28 @@ const CGFloat MGLSnapshotterMinimumPixelSize = 64; dispatch_queue_t workQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_async(workQueue, ^{ #if TARGET_OS_IPHONE - UIImage *logoImage = [UIImage imageNamed:@"mapbox" inBundle:[NSBundle mgl_frameworkBundle] compatibleWithTraitCollection:nil]; + MGLSnapshotAttributionOptions *option = [self attributionOptionsForSize:mglImage.size attributionInfo:infos]; + UIImage *logoImage = option.logoImage; CGRect logoImageRect = CGRectMake(MGLLogoImagePosition.x, mglImage.size.height - (MGLLogoImagePosition.y + logoImage.size.height), logoImage.size.width, logoImage.size.height); - CGRect attributionBackgroundFrame = CGRectMake(mglImage.size.width - 10 - attributionBackgroundSize.width, - logoImageRect.origin.y + (logoImageRect.size.height / 2) - (attributionBackgroundSize.height / 2) + 1, - attributionBackgroundSize.width, - attributionBackgroundSize.height); + CGPoint attributionOrigin = CGPointMake(mglImage.size.width - 10 - option.attributionBackgroundSize.width, + logoImageRect.origin.y + (logoImageRect.size.height / 2) - (option.attributionBackgroundSize.height / 2) + 1); + if (!logoImage) { + logoImageRect = CGRectMake(0, mglImage.size.height - (MGLLogoImagePosition.y + _defaultLogoHeight), 0, _defaultLogoHeight); + attributionOrigin = CGPointMake(10, logoImageRect.origin.y + (logoImageRect.size.height / 2) - (option.attributionBackgroundSize.height / 2) + 1); + } + + CGRect attributionBackgroundFrame = CGRectMake(attributionOrigin.x, + attributionOrigin.y, + option.attributionBackgroundSize.width, + option.attributionBackgroundSize.height); CGPoint attributionTextPosition = CGPointMake(attributionBackgroundFrame.origin.x + 10, attributionBackgroundFrame.origin.y - 1); CGRect cropRect = CGRectMake(attributionBackgroundFrame.origin.x * mglImage.scale, attributionBackgroundFrame.origin.y * mglImage.scale, - attributionBackgroundSize.width * mglImage.scale, - attributionBackgroundSize.height * mglImage.scale); + option.attributionBackgroundSize.width * mglImage.scale, + option.attributionBackgroundSize.height * mglImage.scale); UIGraphicsBeginImageContextWithOptions(mglImage.size, NO, self.options.scale); @@ -231,24 +250,32 @@ const CGFloat MGLSnapshotterMinimumPixelSize = 64; [blurredAttributionBackground drawInRect:attributionBackgroundFrame]; - [self drawAttributionText:infos origin:attributionTextPosition]; + [self drawAttributionText:option.attributionInfo origin:attributionTextPosition]; UIImage *compositedImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); #else - NSImage *logoImage = [[NSImage alloc] initWithContentsOfFile:[[NSBundle mgl_frameworkBundle] pathForResource:@"mapbox" ofType:@"pdf"]]; - NSImage *sourceImage = mglImage; - NSSize targetSize = NSMakeSize(self.options.size.width, self.options.size.height); NSRect targetFrame = NSMakeRect(0, 0, targetSize.width, targetSize.height); + MGLSnapshotAttributionOptions *option = [self attributionOptionsForSize:targetSize attributionInfo:infos]; + NSImage *logoImage = option.logoImage; + NSImage *sourceImage = mglImage; + CGRect logoImageRect = CGRectMake(MGLLogoImagePosition.x, MGLLogoImagePosition.y, logoImage.size.width, logoImage.size.height); - CGRect attributionBackgroundFrame = CGRectMake(targetFrame.size.width - 10 - attributionBackgroundSize.width, - MGLLogoImagePosition.y + 1, - attributionBackgroundSize.width, - attributionBackgroundSize.height); + CGPoint attributionOrigin = CGPointMake(targetFrame.size.width - 10 - option.attributionBackgroundSize.width, + MGLLogoImagePosition.y + 1); + if (!logoImage) { + logoImageRect = CGRectMake(0, MGLLogoImagePosition.y, 0, _defaultLogoHeight); + attributionOrigin = CGPointMake(10, attributionOrigin.y); + } + + CGRect attributionBackgroundFrame = CGRectMake(attributionOrigin.x, + attributionOrigin.y, + option.attributionBackgroundSize.width, + option.attributionBackgroundSize.height); CGPoint attributionTextPosition = CGPointMake(attributionBackgroundFrame.origin.x + 10, - logoImageRect.origin.y + (logoImageRect.size.height / 2) - (attributionBackgroundSize.height / 2)); + logoImageRect.origin.y + (logoImageRect.size.height / 2) - (option.attributionBackgroundSize.height / 2)); NSImage *compositedImage = nil; @@ -261,7 +288,9 @@ const CGFloat MGLSnapshotterMinimumPixelSize = 64; [sourceImageRep drawInRect: targetFrame]; - [logoImage drawInRect:logoImageRect]; + if (logoImage) { + [logoImage drawInRect:logoImageRect]; + } NSBitmapImageRep *attributionBackground = [[NSBitmapImageRep alloc] initWithFocusedViewRect:attributionBackgroundFrame]; @@ -271,7 +300,7 @@ const CGFloat MGLSnapshotterMinimumPixelSize = 64; [blurredAttributionBackground drawInRect:attributionBackgroundFrame]; - [self drawAttributionText:infos origin:attributionTextPosition]; + [self drawAttributionText:option.attributionInfo origin:attributionTextPosition]; [compositedImage unlockFocus]; @@ -323,14 +352,77 @@ const CGFloat MGLSnapshotterMinimumPixelSize = 64; CGImageRef cgimg = [ctx createCGImage:blurredImage fromRect:[backgroundImage extent]]; #if TARGET_OS_IPHONE - return [UIImage imageWithCGImage:cgimg]; #else - return [[NSImage alloc] initWithCGImage:cgimg size:[backgroundImage extent].size]; #endif } +- (MGLSnapshotAttributionOptions *)attributionOptionsForSize:(CGSize)snapshotSize attributionInfo:(NSArray *)attributionInfo +{ + NSMutableArray *options = [NSMutableArray array]; + MGLSnapshotAttributionOptions *largeLogoAttribution = [self attributionOptionsForAttributionInfo:attributionInfo abbreviated:NO]; +#if TARGET_OS_IPHONE + largeLogoAttribution.logoImage = [UIImage imageNamed:@"mapbox" inBundle:[NSBundle mgl_frameworkBundle] compatibleWithTraitCollection:nil]; +#else + largeLogoAttribution.logoImage = [[NSImage alloc] initWithContentsOfFile:[[NSBundle mgl_frameworkBundle] pathForResource:@"mapbox" ofType:@"pdf"]]; +#endif + _defaultLogoHeight = largeLogoAttribution.logoImage.size.height; + + MGLSnapshotAttributionOptions *smallLogoAttribution = [self attributionOptionsForAttributionInfo:attributionInfo abbreviated:NO]; +#if TARGET_OS_IPHONE + smallLogoAttribution.logoImage = [UIImage imageNamed:@"mapbox_helmet" inBundle:[NSBundle mgl_frameworkBundle] compatibleWithTraitCollection:nil]; +#else + smallLogoAttribution.logoImage = [[NSImage alloc] initWithContentsOfFile:[[NSBundle mgl_frameworkBundle] pathForResource:@"mapbox_helmet" ofType:@"pdf"]]; +#endif + + MGLSnapshotAttributionOptions *noLogoAttribution = [self attributionOptionsForAttributionInfo:attributionInfo abbreviated:YES]; + + [options addObject:largeLogoAttribution]; + [options addObject:smallLogoAttribution]; + [options addObject:noLogoAttribution]; + + for (MGLSnapshotAttributionOptions *attributionOptions in options) { + // -[Mapbox Logo]-[Attribution Background]- + CGFloat origin = attributionOptions.logoImage ? MGLLogoImagePosition.x : 0; + CGFloat width = origin + attributionOptions.logoImage.size.width + 10 + attributionOptions.attributionBackgroundSize.width + 10; + if (width <= snapshotSize.width) { + return attributionOptions; + } + } + + return noLogoAttribution; +} + +- (MGLSnapshotAttributionOptions *)attributionOptionsForAttributionInfo:(NSArray *)attributionInfo abbreviated:(BOOL)isAbbreviated +{ + NSString *openStreetMap = NSLocalizedStringWithDefaultValue(@"OSM_FULL_NAME", nil, nil, @"OpenStreetMap", @"OpenStreetMap full name attribution"); + NSString *OSM = NSLocalizedStringWithDefaultValue(@"OSM_SHORT_NAME", nil, nil, @"OSM", @"OpenStreetMap short name attribution"); + NSMutableArray *infos = [NSMutableArray array]; + CGSize attributionBackgroundSize = CGSizeMake(10, 0); + for (MGLAttributionInfo *info in attributionInfo) { + if (info.isFeedbackLink) { + continue; + } + MGLAttributionInfo *attribution = [info copy]; + NSMutableAttributedString *title = [[NSMutableAttributedString alloc] initWithAttributedString:info.title]; + [title removeAttribute:NSUnderlineStyleAttributeName range:NSMakeRange(0, [title.string length])]; + if ([title.string rangeOfString:@"OpenStreetMap"].location != NSNotFound) { + [title.mutableString replaceOccurrencesOfString:@"OpenStreetMap" withString:isAbbreviated ? OSM : openStreetMap options:NSCaseInsensitiveSearch range:NSMakeRange(0, [title.mutableString length])]; + } + attribution.title = title; + attributionBackgroundSize.width += [attribution.title size].width + 10; + attributionBackgroundSize.height = MAX([attribution.title size].height, attributionBackgroundSize.height); + [infos addObject:attribution]; + } + + MGLSnapshotAttributionOptions *attributionOptions = [[MGLSnapshotAttributionOptions alloc] init]; + attributionOptions.attributionBackgroundSize = attributionBackgroundSize; + attributionOptions.attributionInfo = infos; + + return attributionOptions; +} + - (void)cancel { _snapshotCallback.reset(); diff --git a/platform/ios/resources/Base.lproj/Localizable.strings b/platform/ios/resources/Base.lproj/Localizable.strings index 039ef4c4b1..cb085add6a 100644 Binary files a/platform/ios/resources/Base.lproj/Localizable.strings and b/platform/ios/resources/Base.lproj/Localizable.strings differ diff --git a/platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/Contents.json b/platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/Contents.json new file mode 100644 index 0000000000..86d3b9b169 --- /dev/null +++ b/platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "mapbox_helmet.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/mapbox_helmet.pdf b/platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/mapbox_helmet.pdf new file mode 100644 index 0000000000..699b2ff293 --- /dev/null +++ b/platform/ios/resources/Images.xcassets/mapbox_helmet.imageset/mapbox_helmet.pdf @@ -0,0 +1,355 @@ +%PDF-1.5 % +1 0 obj <>/OCGs[5 0 R 33 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + Adobe Illustrator CC 2017 (Macintosh) + 2017-11-16T09:51:51-08:00 + 2017-11-16T10:04:52-08:00 + 2017-11-16T10:04:52-08:00 + + + + 256 + 256 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FUPe6jYWMfqXdwkC9ubAE/IdT9GKsbv/wAx9HhqtpFJdMOjf3aH6W+L/hcVSC7/ADH1uUkW 8cNuvY0Lt97Gn/C4qlNx5q8xT19S/lFf99n0/wDiHHFUBJfXsprJcSOfFnY/rOKqOKuxVWjvr2I1 iuJIz/kuw/UcVR9v5q8xQU9O/lNP9+H1P+J8sVTa0/MfWoqC4jhuF7mhRvvU0/DFU/sPzH0eai3c Ulqx6t/eIPpX4v8AhcVZJZajYX0fqWlwk69+DAkfMdR9OKojFXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYqlmr+ZNI0lT9amHrUqIE+KQ/R2+nFWDav+YWrXRaOyAs4ezD4pCP9Y7D6B9OK sYmmmmkMk0jSSN9p3JZj8ycVWYq7FXYqujilkNI0Zz4KCf1YqiF0rVGFVs52HiI3P8MVc2laooq1 nOo8TG4/hiqHkiljNJEZD4MCP14qtxV2KuxVfDNNDIJIZGjkX7LoSrD5EYqyfSPzC1W1Kx3oF5D/ ADH4ZAP9YbH6R9OKs50fzJpOrKPqsw9alWgf4ZB9Hf6MVTPFXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYqpXV3bWkD3FzIsUKCrOxoMVYB5g/MG4nLW+lVgh6G5P943+qP2R+PyxVhzu7uXdizsaszGpJ Pck4q1iqpb21xcyiK3ieaU9ERSx+4YqyXTvy71q5o10yWcZ7Meb/APArt95xVkdl+XWhw0Nw0t03 cM3BfuSh/wCGxVOrby/odsB6NjCpHRigZv8AgmqcVR6qqiigADoBsMVbxV2KtMqsKMAQeoO4xVAX Pl/Q7kH1rGFierBArf8ABLQ4qk17+XWhzAm3aW1bsFbmv3PU/jirG9R/LvWrYFrVkvEHZfgf/gW2 +5sVY1cW1xbSmK4ieGUdUdSp+44qp4q2jujh0Yq6mqspoQR3BGKsx8v/AJg3MBW31as8PQXI/vF/ 1h+1+v54qz+1u7a7gS4tpFlhcVV1NRiqrirsVdirsVdirsVdirsVdirsVdiqWa75gsNGtvVuG5St /cwKfjc/wHicVeXa3r+oaxcepcvSNT+6gX7CD2Hj74qluKqtta3F1MsFvG0sz7KiCpOKs10T8uCQ s2rSU7/VYj/xJ/8Amn78VZpZadY2MXpWcCQR9wgoT8z1P04qiMVdirsVdirsVdirsVdirsVdiqHv dPsb6L0ruBJ4+wcVp8j1H0YqwzWvy4oGm0mSvf6rKf8AiL/81ffirCbq1ubWZoLmNopU+0jihxVS xVMtE8waho9x6ls9Y2P72BvsOPcePvir1HQvMFhrNt6tu3GVf72Bvtof4jwOKpnirsVdirsVdirs VdirsVdiqT+ZPMlrotryakl3ID6EFev+U3goxV5Tf393f3T3N1IZJn6k9APADsB4Yqh8VTzy75Tv 9Zf1B+4slPx3DDr7IP2jir0vSND07SoPSs4gpI+OU7u/+s2Ko/FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYqgdX0TTtVg9G8iDEfYlGzofFWxV5n5i8p3+juZN57In4LhR0r2cdj+GKpHiqIsNQu7C6S 6tJDHMnQjoR4EdwcVereW/MlrrVryWkd3GB68Fen+UvipxVOMVdirsVdirsVdirsVSzzBrtto1g1 xL8UrVWCHu7/ANB3OKvJL+/ur+7kurl+c0hqT2A7AeAHbFUPirLfKPkttQ432oApZdY4ujS+/sv6 8VejxRRxRrHEoSNAFRFFAAOgAGKrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiq2SOOSNo5 FDxuKMjCoIPYg4q8582+Snsed9pyl7PdpYerRe47lf1YqxHFURp9/dWF3Hd2r8JozUHsR3BHcHFX rmga5baxYLcxfDIvwzw90f8AoexxVMsVdirsVdirsVUru6gtLaS5uHCQxKWdj4DFXkGv63caxqD3 MlVjHwwRdkTsPn44qluKst8l+URqDDUL5T9SQ/uoz/u1h4/5I/HFXpIAAAAoB0GKuxV2KuxV2Kux V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuIBFDuD1GKvN/OvlL6i7ajYp/oTn99EB/dMe4/ySfux ViOKpl5f1y40fUEuY6tEfhni7On9R2xV6/a3UF3bR3MDB4ZVDIw7g4qq4q7FXYq7FXnf5g+YDPcf oq3b9zAa3JH7UnZfkv6/lirDcVTvyp5dfWb+jgizho1w42r4ID4tir1mKKOKNYo1CRoAqIooABsA Biq7FXYq7FXYq7FXYq7FXYqhb/VNO0+P1Ly4SBT0DHc/JRufoxVjN7+ZWmREraW0lwR+0xEa/wDG x/DFUpl/MzVi37m1gRfB+bn7wyYqor+ZGvAmsVs1exR9vucYqjbf8zrgH/SbFGHcxuV/Bg2Kp7p/ n3y/dkLJI1pIdqTCi/8ABLVfvpirII5I5UEkbB0bdXUggj2IxVdirsVdirsVdiq2SOOWNo5FDxuC rqdwQdiDiryfzZ5dfRr+kYJsp6tbue3ih91xVI8VZn+XvmD0Lg6TcN+5nPK2JP2ZO6/7L9fzxV6H irsVdiqWeZNXXSdImuqj1qcIAe8jdPu64q8dd3d2dyWdiWZjuSTuScVX21vNc3EdvCvOWVgiL4km mKvY9C0iDSdNis4qFlHKZ/55D9pv6e2Ko/FXYq7FXYq7FXYq7FWndEUu7BVUVZiaAAdycVYL5i/M IhmttHpts14wr/yLU/rOKsIuLm4uZWmuJGllb7TuSxP0nFVPFXYq7FXYq7FUfpWu6ppUnOznKLWr RHeNvmp2+nrir0Ty550sdVK28wFtfHYRk/C5/wAgn9R/HFWR4q7FXYq7FXYqgNc0iDVtNls5diwr FJ14OPst/X2xV47dW01rcSW868JomKOp7EYqpo7xuroxV0IZWGxBG4IxV7F5c1hdW0mG629X7E6j tIvX7+uKpnirsVeZ/mFq5utWFlG37mzFGHYyNu33Cg+/FWK4qzn8uNFDPJq0y7JWK2r40+Nvu2+/ FWe4q7FXYq7FXYq7FXYq0zKqlmIVVFSTsABirzPzh5ufUpGsrNiunoaMw2MpHc/5PgPpxVi2KuxV 2KuxV2KuxV2KuxVwJBBBoRuCMVeheTfObXLJpupPWc/Db3B/b/yX/wArwPf59VWaYq7FXYq7FXYq wP8AMfRADHq8K/apFcgeP7D/APGv3YqwXFWV/l5q/wBV1VrGQ0hvBRa9BIu6/eKj7sVel4qh9RvY 7GwuLuT7MCM9PEgbD6TtirxSaaSaaSaQ8pJGLu3izGpOKt28EtxPHBEOUsrBEHiWNBir2nTbGKws ILOL7ECBa9KnufpO+KonFXYq7FXYq7FXYq7FWC+f/MpFdHtHoSK3jjwO4j/5qxVgeKuxV2KuxV2K ss0Lygb7y1d3jJ/pcu9j8ozv/wAGarirE8VdirsVdirgSCCDQjocVep+S/MZ1WxMFw1b62AEhPV0 6B/n2P8AbirI8VdirsVdiqG1Kxiv7Cezl+xOhWvgezfQd8VeLXNvLb3EtvKKSwsyOP8AKU0OKtQT SQTRzRHjJEwdG8GU1GKva9PvI72xgu4/szorgeFRuPo6Yqxv8x7/ANHR4rRTRrqT4h4pH8R/4bji rzXFWUfl7p31nWzcsKx2aF/bm3wr/E/Rir07FXYq7FXYq7FXYq7FUt8xawmk6VLdmhk+xAp7yN9n 7upxV47LLJNK8srF5JGLOx6kk1JOKrcVdirsVdiqK0rT5tR1CCyi+3MwUnwXqzfQN8Ve0W1vFb28 dvCvGKJQiL4BRQYq8v8APOj/AKP1lpY1pb3lZY/AN+2Pv3+nFWO4q7FXYq7FUdomqy6XqcN5HWiG kqj9pDsy/dir2aKSOWNJY2DRuAyMOhBFQcVXYq7FXYq7FXmP5h6cLbWxcoKR3iBz4c1+Fv4H6cVY vir0v8ub8z6NJasataSEKPBJPiH/AA3LFWP/AJj3Zl1uO3B+G3hFR/lOSx/DjirFMVel/lxZCHRZ Lkj4rqUkH/Jj+Ef8NyxVleKuxV2KuxV2KuxV2KvM/wAwtWN1qoso2/c2Yo1OhkbdvuFB9+KsVxV2 KuxV2KuxVn/5b6Pwil1WUbyVit/9UH42+kin0YqzfFUl836ONU0WVEWtxB+9gp1LKN1/2Q2xV5Hi rsVdirsVdir1PyDqBu9ASJzWS0YwmvXj9pfwNPoxVkeKuxV2KuxVin5jWXraIlyB8VrKCT/kP8J/ 4bjirzTFWWflvdmLWZbcn4biI0H+UhBH4csVSjzVcev5iv5K1pKY/wDkX8H/ABriqVYq9l8uW31b QrCGlCIUZh/lOOR/E4qmOKuxV2KuxV2KuxVQ1C8SysZ7t91gjaQjx4itPpxV4nPNJPNJNIeUkrF3 bxZjUnFVmKuxV2KpppHlnWNVINtARCTQ3Enwxj6T1+iuKs50f8v9Ks+Ml6frs43o20QP+r3+n7sV ZQiIihEUKiiiqBQADwGKt4q7FUk1nyfouqEyPH6Fyd/XhopJ/wAodG/XirBtY8jazp5LxJ9ctx/u yIHkB/lJ1+6uKsdxV2KuxVm35Y3JF3e21dnjWQD/AFDxP/E8VegYq7FXYq7FUu8x231nQr6GlSYX ZR/lIOS/iMVeNYqmvlS49DzHp79KyiP/AJGAp/xtiqAvpDLe3Ep6ySO33sTiqkilmCjqxAH04q9z jRY41RfsoAo+QFMVXYq7FXYq7FXYq7FWLfmLe+hoa26n4rqVVI/yU+I/iBirzLFXYq7FU38uahol ndc9UsjdKSOD1qE+cZ+FvpxV6npuq6bqEIexnSVFAqq7FfmpoR92KozFXYq7FXYq7FVO4uLe3iaa 4kWKJftO5CgfScVedeb9c8s3xYWdr6t2f+P0ViH3dX+kYqxLFXYqyr8uGI1+QDo1u4P/AASH+GKv TMVdirsVdirToroyN9lgQfkdsVeFupVip6qSD9GKq1jIYr63lHVJUb7mBxVQxVEacpbULZQKkyoA PmwxV7dirsVdirsVdirsVdirzr8y7rnqdrag7QxFz/rSN/RBirDsVdirsVdiqpb3FxbyrNbyNFKv 2XQlSPpGKsv0f8x7uHjFqcX1hOnrx0WQfNdlb8MVZ3p+oWmoWiXVq/qQyV4tQg1BoQQcVRGKtMyq pZiAqipJ6ADFWF6z+Y9vHWLSovWb/lolBCfQuzH6aYqwnUtX1HUpfVvZ2mYfZU7Kv+qo2GKoTFXY q7FWX/lpCW1i5lpsluV+lnWn/ETir0fFXYq7FXYq7FXiOoqV1C6UihWWQEfJjiqHxV2KojTmK6hb MDQiVCD8mGKvbsVdirsVdirsVdirsVeS+dZ/W8y3h7IVjH+xQA/jXFUjxV2KuxV2KuxV2Ksz/LjW PRu5dMlb93cfvIK/78UfEP8AZKPwxV6HirGPP2s/UdJ+qxtS4vapt1EY+2fp+z9OKvMMVdirsVdi rsVei/lpYmPTrm8YUNxIEX/VjHX72OKsxxV2KuxV2KuxV4jqLFtQuWJqWlck/NjiqHxVWvozFe3E R6xyOv3MRiqkjFWDDqpBH0Yq9zjdZI1dfsuAw+RFcVXYq7FXYq7FXYq7FXi+uyGXWr+T+a4lp8uZ piqBxV2KuxV2KuxV2KqlvcS29xHcQtxliYOjeBU1GKvZ9L1GHUNOgvYjRJU5EfykbMD8jtiryrzT rH6V1ma4U1gT91b/AOovf/ZGpxVKcVdirsVdiq+CCWeeOCJeUsrBEUd2Y0AxV7RpOnpp+m29km4h QKSO7dWP0sScVReKuxV2KuxVbI6xxs7fZQFj8gK4q8MdizFj1Ykn6cVVbGMy3tvEOskiL97AYqj/ ADVb+h5iv46UrKZP+Rnx/wDG2KpVir2Xy5c/WdCsJq1JhRWP+Ug4n8RiqY4q7FXYq7FXYq7FXh12 3O7melOUjGnzJxVSxV2KuxV2KuxV2KuxVOdN8y3Flod7pign6yR6T/yBtpP+CUbYqk2KuxV2KuxV 2Ks5/L3y6xf9MXK0Aqtop7k7NJ/AYqz3FXYq7FXYq7FUu8x3P1bQb+WtCIXVT/lOOI/E4q8axVNf Ktv6/mKwjpWkok/5F/H/AMa4qm35j2hi1uO4A+G4hFT/AJSEqfw44qxTFXpf5cXom0WS2J+K1lIA /wAmT4h/w3LFWV4q7FXYq7FXYq7FXhlx/fyf6zfrxVZirsVdirsVdirsVdirsVdirsVdirsVZN5S 8oS6rIt1dqY9OQ/Iykdl/wAnxP8AmFXp8caRoscahEQBVVRQADoAMVbxV2KuxV2KuxVin5j3oh0W O2B+K6lAI/yY/iP/AA3HFXmmKsr/AC4tDLrclwR8NtESD/lOQo/Dliqf/mPYeto8V2oq1rJ8R8Ek +E/8NxxV5rirKPy91H6trZtmNI7xCntzX4l/iPpxV6dirsVdirsVdirsVeHXa8LuZK14yMK/InFV LFXYq7FXYq7FXYq7FXYq7FXYq2kbyOqRqXdjRVUVJJ7ADFWceW/y/YlbrWBReqWYO5/4yEfqGKs8 RERAiKFRRRVAoAB2AGKt4q7FXYq7FXYq7FXmP5haj9Z1sWymsdmgT25t8TfwH0YqxfFXpX5cWHo6 PLdsKNdyfCfFI/hH/DFsVZJqNlHfWFxaSfZnRkr4EjY/Qd8VeKTQyQzSQyDjJGxR18GU0IxVu3nl t5454jxliYOh8CpqMVe06ZfRX9hBeRfYnQNTwPcfQdsVROKuxV2KuxV2KvFtci9LWr+P+W4lA+XM 0xVBYq7FXYq7FXYq7FXYq7FV0cUkriOJGeRtlRQSSfYDFWTaR+X+r3hV7yllAevPeQj2QdPpOKs6 0by1pOkr/osVZqUa4k+KQ/T2+jFU0xV2KuxV2KuxV2KuxVDalfRWFhPeS/YgQtTxPYfSdsVeLXE8 txPJPKeUsrF3PiWNTirUMUk0yQxjlJIwRF8WY0AxV7XptkljYW9om6wIqV8SBufpO+KojFXmf5ha QbXVhexr+5vBVj2Ei7N94ofvxViuKs5/LjWgryaTM2z1ltq+NPjX7t/vxVnuKuxV2KuxV2KvNPNX lfWpNbu7m2tHlt5WDo6UNaqC2wNftV7Yqx+XR9Xi/vbKdP8AWicfrGKqBtrlTQxOCOoKnFVPFVRb a5YgLE5J6AKTiqIi0bV5aelY3D17rE5H6sVR0Hk3zLN9mxZR4yFU/wCJEHFU0tfy11aQg3NxDAv+ Tykb7qKPxxVPbH8uNGhIa6kkumHVSfTQ/Qvxf8NirIrLTNPsU4WdvHAD14KAT8z1P04qicVdirsV dirsVdirsVdirsVYF+Y+tBni0mFtkpLc08f2F+7f7sVYNirKvy90k3WrG9cVhshUe8jVC/ducVem Yq7FUs8yaQuraRNa0HrU5wE9pF6ff0xV466Ojsjgq6kqynYgjYg4qvtria2uI7iFuEsTB0YdiDXF XsehavDq2mxXkdAzfDLGP2HH2l/p7Yqj8VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi rsVdirsVdiqA1zV4NJ02W8l3Zfhij/nc/ZX+vtirxy5uZrm4kuJm5yysXdj3JNcVWIjO6ogLOxAV R1JOwGKvYfLWjrpOkw21P3x/eXDeMjDf7umKppirsVdirzv8wfL5guP0rbr+5nNLkD9mTs3yb9fz xVhuKp35U8xPo2ocnq1nNRbhB2HZx7rir1mKWOWJJYmDxuAyOpqCDuCMVXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVssscUbSyMEjQFndjQADcknFXk3mvzE+s39UJFlDVbdDt Xxc+7YqkmKsx/L7y/wDWLk6rcL+5tzS3B/ak/m/2P6/lir0XFXYq7FXYqpXdrBd20ltcIHhlUq6n wOKvINf0S40fUHtpKtGfigl7OnY/PxxVLcVZZ5L82/o9xYXz/wChOf3Uh/3Ux/41P4Yq9KBDAMpq DuCOhGKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuJAFTsB1OKvNvOnm36+7afYt /oSH97IP92sD2/yR+OKsSxVMdA0W41fUEtYqiP7U8vZEHU/PwxV7BaWkFpbRW1uoSGJQqKPAYqq4 q7FXYq7FXYqlnmDQrbWbBreX4ZVq0E3dH/oe4xV5Jf2F1YXclrcpwmjNCOxHYjxB7Yqh8VZZ5S86 Pp/CxvyXsukcvVov6r+rFXpEUsUsayxOHjcBkdTUEHuCMVXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FVssscUbSSsEjQFndjQADqSTirzjzb50e/5WOnMUsuksu4aX29l/XirEsVRFhYXV/dx 2tqhkmkNAOw8SfADFXrfl/QrbRrAW8XxStRp5u7t/QdhiqZ4q7FXYq7FXYq7FXYqk/mTy3a61a8W pHdxg+hPTp/kt4qcVeU39hd2F09rdRmOZDuD3HiD3BxVD4qnfl3zXqGjOEX99Zk1e3Y7CvdD+ycV emaRrum6tB6tnKGYD44W2kT/AFl/j0xVH4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUBq+uabpM Hq3kvFj/AHcS7u/+qv8AHpirzTzF5sv9Zf0z+4slPwW6nr7uf2jiqR4qiLCwu7+6S1tYzJNIdgOw 8SewGKvVPLPlm20W2IBEt3KP303/ABqvgo/HFU6xV2KuxV2KuxV2KuxV2KuxVLNd8v2Gs23pXC8Z V/uZ1Hxof4jxGKvLtb0DUNHuPTuUrGx/dTr9hx7Hx9sVS3FVS3ubi2mWa3kaKVPsuhII+7FWa6L+ Y7qFh1aPmOn1mICv+yTp933YqzSx1Kwv4vVs50nTvxO4r4jqPpxVE4q7FXYq7FXYq7FXYq7FXYq7 FUNfalYWEXq3k6QJ25Hc/wCqOp+jFWF63+Y7MGh0mPj2NzKN/wDYp/X7sVYVc3VxdTNPcSNLK/2n ckk/fiqniqY6LoGoavcelap+7B/eztsiD3Pj7Yq9S0Ly/YaNbelbjlK399Ow+Jz/AAHgMVTPFXYq 7FXYq7FXYq7FXYq7FXYq7FVK6tLa7ga3uYllhfZkYVGKsA8wfl9cwFrjSazw9TbH+8X/AFT+0Px+ eKsOdHRijqVdTRlIoQfcHFWsVVILie3lEsEjRSr0dCVI+kYqyTTvzC1u2otyEvIx/OOL0/1l/iDi rI7L8x9FmoLmOW1buSPUX71+L/hcVTq28x6Fc09G/hJPRWcI33NQ4qj0kjkXkjB18VII/DFV2Kux Vp5EjXk7BVHVmNB+OKpfc+Y9Cth++v4QR1VXDt/wK1OKpLe/mPosIIto5bpuxA9NPvb4v+FxVjmo /mFrdzVbYJZxn+Qcnp/rN/ADFWN3FzcXEpluJWmlPV3Ys33nFVPFW0R3YIilnY0VQKkn2AxVmHl/ 8vrm443Gqk28PUW4/vG/1v5f1/LFXoFpaW1pAtvbRLFCgoqKKDFVXFXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYqlmseW9J1ZT9ahAmpQXCfDIPp7/TirBtX/AC91a1LSWRF5D2UfDIB/qnY/QfoxVjE0 M0MhjmjaORftI4KsPmDiqzFXYq7FW1dlNVJU+INMVV11HUFIK3UqkdCJGH8cVc2o6gxJa6lYnqTI x/jiqgzsxqxLHxJrirWKuxV2Kr4oZppBHCjSSN9lEBZj8gMVZPpP5e6tdEPekWUJ7H4pD/sQdvpO Ks40fy1pOkqPq0NZv2riSjSH6e30YqmmKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV D3um2F8nC7t0nUdOagkfI9R9GKsbv/y40earWkslox6L/eIPoajf8NiqQXf5ca3ESbeSK5XsASjf cwp/w2KpTceVfMUFfUsJTT/fY9T/AIhyxVASWN7EaS28kZ/ykYfrGKqOKuxVWjsb2U0it5JD/kox /UMVR9v5V8xT09OwlFf9+D0/+J8cVTa0/LjW5SDcSRWy9wSXb7lFP+GxVP7D8uNHho13LJdMOq/3 aH6Fq3/DYqySy02wsU4WlukCnrwUAn5nqfpxVEYq7FXYq7FXYq7FXYq7FXYq7FX/2Q== + + + + 1 + True + False + + 0.222222 + 0.221944 + Inches + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + application/pdf + proof:pdf + uuid:ad04dd96-0b1b-0043-88c6-2612e9f199e0 + uuid:fd70734a-8143-0b42-928a-90f58b786320 + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj 3 0 obj <> endobj 7 0 obj <>/Resources<>/Properties<>/XObject<>>>/Thumb 44 0 R/TrimBox[0.0 0.0 16.0 15.98]/Type/Page>> endobj 35 0 obj <>stream +HwVu6PprqV*2P04ճP04SЅRR +@%!>n +.\qC$qCFHC]}r1 endstream endobj 36 0 obj <> endobj 44 0 obj <>stream +8;Xp,*?`,t!f$f[~> endstream endobj 45 0 obj [/Indexed/DeviceRGB 255 46 0 R] endobj 46 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 40 0 obj <>>>/Subtype/Form>>stream +1 1 1 rg +/GS0 gs +q 1 0 0 1 11.3447 6.2625 cm +0 0 m +-1.47 -1.47 -3.642 -1.76 -5.104 -1.76 c +-5.638 -1.76 -6.179 -1.722 -6.705 -1.638 c +-7.482 2.66 -5.074 5.075 v +-4.442 5.707 -3.588 6.05 -2.689 6.05 c +-1.722 6.05 -0.792 5.661 -0.106 4.968 c +1.295 3.566 1.333 1.349 0 0 c +-3.345 8.785 m +-7.238 8.785 -10.393 5.623 -10.393 1.737 c +-10.393 -2.148 -7.23 -5.311 -3.345 -5.311 c +0.541 -5.311 3.703 -2.148 3.703 1.737 c +3.703 5.631 0.549 8.785 -3.345 8.785 c +f +Q + endstream endobj 41 0 obj <>>>/Subtype/Form>>stream +0 0 0 rg +/GS0 gs +q 1 0 0 1 8 0.9519 cm +0 0 m +-3.894 0 -7.048 3.162 -7.048 7.048 c +-7.048 10.934 -3.894 14.104 0 14.104 c +3.894 14.104 7.048 10.941 7.048 7.056 c +7.048 3.147 3.894 0 0 0 c +0 15.048 m +-4.419 15.048 -8 11.459 -8 7.048 c +-8 2.637 -4.419 -0.952 0 -0.952 c +4.419 -0.952 8 2.629 8 7.048 c +7.992 11.459 4.419 15.048 0 15.048 c +f +Q + endstream endobj 42 0 obj <>>>/Subtype/Form>>stream +0 0 0 rg +/GS0 gs +q 1 0 0 1 9.501 8.1145 cm +0 0 m +-0.693 -1.425 l +-1.379 0 l +-2.796 0.693 l +-1.379 1.379 l +-0.693 2.804 l +0 1.379 l +1.417 0.693 l +h +1.729 3.116 m +0.328 4.518 -1.897 4.563 -3.23 3.23 c +-5.638 0.815 -4.861 -3.482 y +-0.564 -4.259 1.852 -1.852 v +3.177 -0.503 3.139 1.714 1.729 3.116 c +f +Q + endstream endobj 43 0 obj <>>>/Subtype/Form>>stream +1 1 1 rg +/GS0 gs +q 1 0 0 1 10.918 8.8074 cm +0 0 m +-1.417 -0.693 l +-2.11 -2.118 l +-2.796 -0.693 l +-4.213 0 l +-2.796 0.686 l +-2.11 2.111 l +-1.417 0.686 l +h +f +Q + endstream endobj 51 0 obj <> endobj 48 0 obj <> endobj 50 0 obj <> endobj 49 0 obj <> endobj 47 0 obj <> endobj 33 0 obj <> endobj 52 0 obj [/View/Design] endobj 53 0 obj <>>> endobj 38 0 obj <> endobj 39 0 obj <> endobj 37 0 obj <> endobj 54 0 obj <> endobj 55 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 17.0 %%AI8_CreatorVersion: 21.1.0 %%For: (Angel) () %%Title: (mapboxgl-logo.pdf) %%CreationDate: 11/16/17 10:04 AM %%Canvassize: 16383 %%BoundingBox: 2 2 19 19 %%HiResBoundingBox: 2.5 2.51000020160791 18.5 18.5100000270513 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 13.0 %AI12_BuildNumber: 326 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 2.5 2.51000020160791 18.5 18.4899997983921 %AI3_TemplateBox: 42.5 10.5 42.5 10.5 %AI3_TileBox: -367.5 -277.5 366.5 298.5 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 0 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:17 1 %AI9_OpenToView: -11.1249999999991 25 24 1668 982 26 0 0 6 43 0 0 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -11.1249999999991 25 24 1668 982 26 0 0 6 43 0 0 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %%PageOrigin:-65 -26 %AI7_GridSettings: 18 8 18 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 56 0 obj <>stream +%%BoundingBox: 2 2 19 19 %%HiResBoundingBox: 2.5 2.51000020160791 18.5 18.5100000270513 %AI7_Thumbnail: 128 128 8 %%BeginData: 11078 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD37FFFD04A87DA87DA87DA87DA87DA87DA8A8FFA8FD66FFFD04A8 %FD197DA8A8FD5EFFA8A8FD077DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA8FD057DA8A8FD58FFA8A8FD297DA8A8FD51FFA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87D7D7DA8A8FD4DFFA8FD337DA8A8FD48FFA8A87D7D7DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87D7D7DA8FD077DA87D7D7DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87D7D7DFD45FFA8FD197DA87DA8A8A87DA8A8 %A87DA8FD177DA8A8FD40FFA8A87D7D7DA87DA87DA87DA87DA87DA87DA87D %A87DA8A8FFA8FD11FFA8A87DA87D7D7DA87DA87DA87DA87DA87DA87DA87D %7D7DFD3EFFA8FD127DA8A8FD19FFA8FFA8A8FD117DA8FD3BFF7D7D7DA87D %A87DA87DA87DA87DA87DA87DFD23FFA8A87D7D7DA87DA87DA87DA87DA87D %7D7DA8A8FD36FFA8A8FD0F7DA8A8FD27FFA8A8FD0F7DFD34FFA8A87DA87D %A87DA87DA87DA87DA87DA8A8FD2DFFA8A87DA87DA87DA87DA87DA87D7D7D %FD32FFA8FD0E7DFD31FFA8A8FD0D7DA8FD2FFFA87D7DA87DA87DA87DA87D %7D7DA8A8FD35FF7D7D7DA87DA87DA87DA87D7D7DA8FD2DFFFD0D7DA8FD38 %FFA8A8FD0B7DA8FD2BFF7D7D7DA87DA87DA87DA87DA8A8FD3CFFA87DA87D %A87DA87DA87DA87DA8FD29FFFD0C7DA8FD3FFFFD0C7DA8FD26FF7D7D7DA8 %7DA87DA87D7D7DA8FD42FFA87D7DA87DA87DA87DA87DA8FD25FFFD0B7DA8 %FD44FFA8FD0B7DA8FD22FF7DA87DA87DA87DA87DA87DFD47FFA8A87DA87D %A87DA87DA87DA8FD21FFFD0B7DFD49FFA8A8FD097DA8FD1FFF7D7D7DA87D %A87DA87D7D7DFD4CFFA87DA87DA87DA87DA87DA8FD1DFFA8FD0A7DFD4EFF %A8FD097DA8FD1BFFA87D7DA87DA87DA87D7D7DFD50FFA87DA87DA87DA87D %A87DFD1AFFA8FD0A7DFD52FFA8FD097DFD19FFA87DA87DA87DA87D7D7DFD %54FFA87DA87DA87DA87DA87DFD17FFA8FD097DFD55FFA8FD097DA8FD16FF %7DA87DA87DA87DA87DFD57FFA8A87DA87DA87DA87D7DA8FD14FFFD097DA8 %FD2CFFFD09A8FFA8FD21FFA8FD097DFD13FFA87D7DA87DA87DA87DA8FD2A %FFA8A87DA8FD077DA87DA87DA8A8FD1FFFA87D7DA87DA87DA87DA8FD11FF %A8FD097DA8FD27FFA8A8FD137DA8A8FD1DFFFD097DFD11FFA87DA87DA87D %A87DA8A8FD27FF7D7D7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A8A8FD1DFF7DA87DA87DA87D7D7DFD0FFFA8FD097DFD25FFA8FD1C7DA8A8 %FD1AFFA8FD087DA8FD0EFF7D7D7DA87DA87DA87DFD25FFA87D7DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D7DA8FD1AFFA8 %7DA87DA87DA87DA8FD0DFFA8FD087DA8FD24FFFD237DFD19FFA8FD087DA8 %FD0CFFA87DA87DA87DA87DA8FD24FF7D7D7DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DFD19FF7DA87DA87D %A87D7D7DFD0BFFA8FD087DA8FD23FFFD277DA8FD18FFFD087DA8FD0AFFA8 %7D7DA87DA87DA8A8FD23FF7D7D7DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DFD18FFA87DA87DA8 %7DA87DA8FD09FFA8FD087DFD23FFFD2B7DFD17FFA8FD087DFD09FFA87DA8 %7DA87DA87DA8FD22FF7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D7D7DFD17FF7DA87D %A87DA87D7DA8FD08FFFD087DA8FD21FFA8FD167DA8A8FD167DFD16FFA8FD %087DFD07FFA87D7DA87DA87DA87DFD21FFA87D7DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87D7DA8FFA87D7DA87DA87DA87DA87DA87DA87DA87D %A87DA87D7DA8FD16FFA87DA87DA87DA87DFD07FFA8FD077DA8FD20FFA8FD %187DFFFFFFFD167DA8FD15FFA8FD087DFD06FF7DA87DA87DA87DA8FD21FF %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FFFFFFA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FD16FF7DA87DA87DA8 %7DA8FD05FFA8FD087DFD21FFFD177DA8FD05FFFD167DFD16FFA8FD077DA8 %FD04FFA87DA87DA87DA87DA8FD20FF7DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87D7DA8FD05FFA87D7DA87DA87DA87DA87DA87DA87DA87D %A87DA87D7D7DFD15FFA87D7DA87DA87D7DA8FD04FFFD087DA8FD1FFFA8FD %187DFD07FFFD167DA8FD15FFFD077DA8FD04FFA87DA87DA87DA87DFD20FF %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FD07FFA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FD15FFA87DA87DA87D %A87DFFFFFFA8FD077DA8FD20FFFD187DA8FD07FFA8FD167DFD15FFA8FD07 %7DA8FFFFA87D7DA87DA87D7DA8FD1FFF7DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87D7DA8FD09FFA87D7DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87D7DA8FD15FF7D7D7DA87DA87DA8FFFFA8FD077DFD1FFFA8FD18 %7DFD0BFFFD157DA8FD14FFA8FD087DFFFF7DA87DA87DA87DA8FD1FFFA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8A8FD0DFFA8A87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DFD15FF7DA87DA87DA87DA8FFA8FD %077DA8FD1FFFFD157DA8A8FD0FFFA8A8FD127DA8FD14FFA8FD077DFFFF7D %7D7DA87DA87DFD1FFFA8A87DA87DA87DA87DA87DA87DA87DA87DA87DA8A8 %FD15FFA8A87DA87DA87DA87DA87DA87DA87DA87DFD15FFA87D7DA87DA87D %7DA8A8FD077DA8FD1EFFA8FD117DA8A8FD17FFA8A8FD0E7DA8FD14FFA8FD %077DA8A87DA87DA87DA87DFD1FFF7DA87DA87DA87DA87DA87DA87DA87DA8 %A8FD1DFFA8A87DA87DA87DA87DA87DA87DA8FD14FFA8A87DA87DA87D7DA8 %FD087DA8FD1DFFA8FD0E7DA8A8FD1FFFA8A8FD0A7DA8FD15FFFD077DA8A8 %7DA87DA87DA87DFD1EFFA87DA87DA87DA87DA87DA87DA87DA87DA8A8FD1D %FFA8A87DA87DA87DA87DA87DA87DA8FD15FFA87DA87DA87DA8FD087DA8FD %1EFFFD137DA8A8FD17FFA8A8FD0F7DFD15FFFD077DA8A87DA87DA87DA8A8 %FD1EFFA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8A8FD15FFA8A8 %7DA87DA87DA87DA87DA87DA87DA87DA8FD15FFA87DA87DA87DA8FD087DA8 %FD1EFFFD177DA8A8FD0FFFA8A8FD127DA8FD15FFFD087DA87DA87DA87D7D %7DFD1DFFA87D7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %A8FD0DFFA8A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DFD16FFA87D %A87DA87DA8FD087DA8FD1DFFA8FD1B7DFD0BFFFD167DA8FD15FFFD087DA8 %7DA87DA87D7DA8FD1DFFA87D7DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA8A8FD09FFA8A87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DFD16FFA87DA87DA87DA8FD087DA8FD1DFFA8FD1B7DA8FD09FF %FD167DA8FD16FFFD087DA87DA87DA87DA8A8FD1DFF7DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FD07FFA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87D7DA8FD16FFA87DA87DA87DA8FD08 %7DA8FD1CFFA8FD1E7DFD07FFFD177DFD17FFFD087DA87DA87DA87DA87DFD %1DFF7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA8A8FD05FFA8A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %FD17FFA87DA87DA87DA8FD087DA8FD1CFFA8FD1E7DA8FD05FFFD177DA8FD %17FFFD077DA8A87DA87DA87D7D7DFD1CFFA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DFD05FF7DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87D7D7DFD18FFA87DA87DA8FD0B7DA8FD1BFF %FD217DFFFFFFFD177DA8FD18FFFD077DA8FF7DA87DA87DA87DFD1CFFA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A8A8FFA8A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FD18FF %A8A87DA87DA87D7DA8A8FD077DA8FD1BFFFD217DA8FFA8FD167DA8FD18FF %A8FD077DA8FF7DA87DA87DA87DA8FD1BFFA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87D7D7DFD19FFA87D7DA87DA87DA8FFA8FD08 %7DFD1BFFFD397DFD1AFFA8FD077DFFFF7DA87DA87DA87DA8FD1BFFA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DFD1BFF7DA87DA8 %7DA87DA8FFFFA8FD077DA8FD1AFFFD377DFD1BFFA8FD087DFFFFA87D7DA8 %7DA87D7DA8FD1AFFA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DFD1CFFA87DA87DA87DA87DA8FFFFFFFD077DA8FD1AFFFD357DFD1DFF %FD087DA8FFFFFFA87DA87DA87DA87DFD1AFFA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87D7D7DFD1EFFA87DA87DA87DA87DFD04FFA8FD077DA8FD %19FFFD337DFD1EFFA8FD077DA8FD05FF7DA87DA87DA87DA8FD19FFA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA8A8FD1FFF7DA87DA87DA87D7DA8FD %04FFA8FD087DFD19FFFD2F7DA8A8FD1FFFA8FD087DFD06FFA87D7DA87DA8 %7DA8A8FD18FFA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87D7D7DFD22FFA87DA87DA8 %7DA87DA8FD07FFFD077DA8FD18FFA8FD2A7DA8A8FD23FFFD087DA8FD07FF %A87DA87DA87DA87DFD19FF7DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87D7D7DA87DFD25FFA87D7DA87D %A87D7D7DFD08FFFD097DFD17FFA8FD267DA8A8FD26FFA8FD077DA8FD09FF %7DA87DA87DA87DA8A8FD17FF7DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87D7D7DA8A8FD29FF7DA87DA87DA87DA8 %A8FD09FFA8FD077DA8FD16FFA8FD207DA8A8FD2BFFFD097DFD0AFFA87D7D %A87DA87D7D7DFD17FF7DA8FD077DA87D7D7DA87D7D7DA8FD077DA87DA8A8 %FD2FFFA8A87DA87DA87DA87DFD0CFFFD097DFD17FFA8FFA8A87DA87DA87D %A8FD057DA87DA87DFD04A8FFA8FD32FFA8FD087DFD0DFF7DA87DA87DA87D %A8A8FD61FF7DA87DA87DA87D7DA8FD0DFFA8FD077DA8FD60FFFD097DFD0E %FFA87D7DA87DA87DA87DA8FD5EFFA87D7DA87DA87DA87DFD10FFFD097DFD %5DFFA8FD087DA8FD11FF7DA87DA87DA87DA87DFD5CFFA87DA87DA87DA87D %7DA8FD11FFA8FD097DFD5AFFA8FD087DA8FD13FFA87DA87DA87DA87D7DA8 %FD58FFA87DA87DA87DA87D7D7DFD14FFA8FD097DA8FD57FFFD097DA8FD15 %FFA87D7DA87DA87DA87DA8A8FD55FF7DA87DA87DA87DA87DA8FD17FFFD0A %7DA8FD53FFFD097DA8FD19FF7D7D7DA87DA87DA87DA8FD52FF7D7D7DA87D %A87DA87D7DA8FD19FFA8FD097DA8A8FD4FFFFD0A7DA8FD1BFFA87DA87DA8 %7DA87DA87DA8FD4EFF7DA87DA87DA87DA87DA8A8FD1DFFA8FD097DA8FD4C %FFFD0B7DFD1FFFA87DA87DA87DA87DA87DA8FD4AFF7D7D7DA87DA87DA87D %7D7DFD20FFA8FD0B7DA8FD47FFFD0B7DFD23FFA87DA87DA87DA87DA87D7D %A8FD45FF7DA87DA87DA87DA87D7D7DFD24FFA8A8FD0B7DFD42FFA8FD0B7D %FD27FFA87DA87DA87DA87DA87D7D7DFD3FFFA8A87DA87DA87DA87DA87D7D %7DFD28FFA8A8FD0B7DA8A8FD3BFFFD0D7DFD2BFFA87DA87DA87DA87DA87D %A87DA8A8FD39FF7D7D7DA87DA87DA87DA87DA8A8FD2DFFA8FD0D7DFD35FF %A8A8FD0D7DFD2FFFA87DA87DA87DA87DA87DA87D7D7DA8A8FD31FF7D7D7D %A87DA87DA87DA87DA87DA8A8FD32FFFD0F7DA8A8FD2BFFA8A8FD0E7DA8FD %34FFA87D7DA87DA87DA87DA87DA87D7D7DA8A8FD28FFA87DA87DA87DA87D %A87DA87DA87DA87DA8FD37FFA8FD107DA8A8FD21FFA8A8FD117DFD3BFFA8 %7DA87DA87DA87DA87DA87DA87DA87D7D7DA8A8FD1BFFA8A87DA87D7D7DA8 %7DA87DA87DA87DA87DA87DA8A8FD3EFFFD157DFD04A8FD0DFFA8FFA8A87D %A8FD137DA8A8FD40FFA8A87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %7D7DA87DA87DFD09A87DA87DA87D7D7DA87DA87DA87DA87DA87DA87DA87D %A87DA87DFD45FFA8FD377DA8A8FD48FFA8A87D7D7DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87D7D7DFD4EFFA8FD2E7DA8A8FD52FFA8A87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA8A8FD57FFA87DA8FD217DA8A8FD5EFFA8A87DA8FD077DA87DA87DA8 %7DA87DA8FD077DFD04A8FD64FFA8FFA8A87DA8FD0B7DA87DFD04A8FD34FF %FF %%EndData endstream endobj 57 0 obj <>stream +HWn8;pLQ/;x'a4-1'(PTo:8^[6Ūs8bJZIJPрRı}Mv&F tZ[(c j G'@4O#:c&(RȻln§Nhb%7hz7Q*G#]]>. *%чCt.Zԓj\Du-xQΩ0UNg"ǜx^> K"gTA+Au,ц>9s'fr_duv\4Wƕ} Ina]J?@ay|:x,qEeW>$P7Oi +.drB2p!<,^&PP>qh[J) kB)`PFG{rt֨s6O#1yn# }տ iJCun8ds`HFEuqlRuUpX?o =܉Ч|=j#Aoۭ qpnz6ְ_[5=uh>|Ka`ť$奭ֻܑA$+i4\yn=L1(inJ| )ԖD܀_xkLR;=w~%f從*~Ttx,WZ%'whcО̞ޓ:K(JK'_D$t`8.T?(1կ)3- +$ֹqbMDoDb'KoT;}Eyu;Ì\NPbO P_ 2΢_C:'BA#;7B2xo%nG;0d;ep[-[ojW +{|s]-e]:}- `g7/7"vsCPfTzHd_>qZñU-{#)Ҟ%~O+__'T7$w{.Nw(Xt`ڣSټ*޳,dqF] sumW0JJv|;F_Qai(25\{y!"7]NhpAD{n ujd +$+1qKHp"D8+{S7ӔBՉ^D4%TR$ɉd ,)*pu#}/;v.("iU0Oؤ !u{ձkG?@Aa*Duc."qձQ(tsJFROW-t5YPD#xqsݾlk6.ոzW'ݓ@ܢ/w9봫#e:tҜL9e`{']lpIBXƦCqͻ <~6qdok," nq+ >3Jxcqo^FtChc5QΛ%+Jc$^cD7:.EWZ:ރ  iP(Я=TX$C#<}yUշw^ƔU?.NѼs2̘ԹԱG#a.7~c76i6+VP''11|Σ:|ӮIhR_NБ5w(&9@XV.9q^T _hK"hT\2r.3=PvbX=10baEoe h1?wA/^)בsP}hXvhJЭ'3%OqԶ"FMi+^sl'7,!G Os׾8s1#U0,d-,1t 9Y qϜ;Z +1aFGl7;زWL1t$a95.fwq'2֓@:QcjeЅiRB}aY +ngeQV{s{(FXU3 (HK9dkfdn+ÑdQvư/a0e^?D<뷟jC[3N|LR ;1cFꅉЫB.R R?됁PnV_6GWh^>y8At5*:U1C ' SCE]X +w +w*$ ),OQتDLjttV/ura* PbgU%B/!u#+qSڵ 1噣1<&1v1婼r &yd|cp2SiJY ˉCOr(UyeCpn9z7o:P79CO *UYB +cdc&?[SBbMDM`́;j&-<&U&G:ܹ*o`|a +N^GʥPHI%#z{ugTxvZzFdIƻoǷ/g+6;M'덵՞k|IaƻΎmrx͵{m>^}6j}4|"3ѝ4l7ȨgVjɂ?ˇB6nntft;mZc{o޾ZqցٺuvoT;k?ڇ6[6کaZkV3n[]m94SћcEßwpOSm60K' 6Wki7mwtY]Y~~ۛ7#]7kN-bҏCѵ߭npSWljyts8Wz\Q, JG5Qcg47gίkNL-X6t2"qU69©`cߦl;BM 9 KS*[)mN/LOI/9Ǵ┖V^&p ֤D_βݚDBP|ime:pEӪ?df+vON}ISa"ŮRT0=)M_!)5(n(ec,IKbFW%>bEQ_WbBHNc2:ɖ+lŒ % 1dGC';K^~JW龜cxL J3o!8Ӵdm8qtXAT v',<3 +} +>?);9Pq*@}rybPF7uy=E禚ǽsF_d)Y +N` + 6n`+MvGTs׬g.VӢB&)Rz-e;F Sl3rU[]'5% 0BXvƆ*1Vb*8A:#JhId#ؘ"i2ث{Xs؞7p-1diW1r v7UPm}n%(~5"0K}?TFy[l=[u|YHwVB㳴Vۻێ %bMSIVy893޴<>$*˺'ևzʉCA@2l*PrKt2F:EĠ8N𙊼eucGq;\*i%BNQQ"C=rn% ?%X +et}2ROSM I46PW! BI⃥@y,Sy#H6Uiy!`[͕_1 T~>M~6Ȍ%"Gad̈́4޿wxpU +x#3NpU'bfJ>AxjK]UFo&G,ƯaKUV< H V +ۊ2GʲW&)؃=̽6)PDled[w^M[Q!TIV⁃\sPxA#k=+435Yb9%Qgⴷ0 <|tG?h6mI'nAa bЮ\`rQVBٜɋ@Pǫ28;W_gcF 2 x3x潟V۶(zpwb SQ*?6wj=Cmxzګc#$1p7hL}jΚTp0)3^n!pQp- O&%0Ǻf9NJr9:b9mzbC %sW4u>(HhpXmqܧR7 ;jB'Ո3a`dEPاbP/o 6Y@ZbYoK30>3ҚBXOE%" j`c?g##{_ WX_ $=;c=S MwT)k{^+Hf IM8h I*N NxWRN^$7O;",̃F\hS|^6o-N 94"VhHwbNqK\)д"4 (ocg844ٟeoݨ(UA V!/N TA=մ(-a `hm:-{#`|)I;̯y;ճXT}L6|WxPsf9 kQӡ{z)W IN-;^,R}9knHpysf(]0b LJlnLu+M^uLRb@k,pq +|VEO>bWzE~Ҋ +n(|p |UNwG1^:+׃3$1#V &פϟ&T}H}:M%♃94Dr 9|/_Y(/5UC9"8jYj8V9 +x'cݾaeF7k Œ ʡWO{K"ov~}Q7D<n5gꫬ‡a1eIaT!i1(0Kj닐)R^~`dN)@6ZPddSWWx;:*ASvɇqqqT-*$;` +Cf]L51][bQt=ڕfTd!GR[? ߏ|7_?0=.~?.*Tl(+ /2de l0/Tqm#J(ҫV-0il˼6aB+Vf{t'Q׉I(ЅZ>*j{$O0_N^8%3"tl|tw)m$7[8D-Gw1Wv)[=ƙ+u  +y;7?tM^j"-E =|u`EMK^U5y4LUX<},s_Lq@Bg}]$(x,]sW&!! Ewf@E}NpF eP Jj҆iD8#v [=^ %a,zxH; IզI?XFEBL|9ǁ_$_$ϐ5|2* ~s25$TQ>R߀pՑh܀& +M-fVMAG\T;ɽmف3bw$f&htA KA&eG8ۿ˜ml9N +ꑸ0̴klinRڞﷶ+_l2.MSOq*>`e{⡅^(06 QFSd{<#1wva " W{M턠]t>|zj $r4 4sCc'C]H08d3nhj +w[vzVV9[*B~f3W`9+S,k?W q/.8EmmAWY?~ k`5O/z10 uY(8=aRhm +B`d6$uSdX.$ais*,?' 0tvI6<>-[#%{O$*RoF!,&B؋3xU%s;=y (wy g]3$pZkCܥ^D%#38U?>Z,O\HTxPeTb)WߊsUx<)v4LCJM7 +;^1~^ONkseWBȪ&Z0J6 61D,a?mȣԊM⨭8bDN꬐,WT9K(2lsHxl@!f7fqMK(W{?F>k~{@MA]>a~Ɩ &'yh +ԃ]It^%;r~6݄C)L ܻk?w=g+r;sx,\%"@ +2/Q[gDd#RHwN!IL_mQ"LM'_CuHzHE :[W=ᅛ&Îq0;7NSƜ8zН̘a8:1VUwGya(%M&x1!I2*ㅣb`$u.;?9ɺlD6\XДꅇlz"4k睡w2suI*ђ&S|04 +(۸903ĘvRI%9+ɦW$H;p Ham_/ / J-{Z1$"֮`srô+Vhs + k1 Vl&6m4gS~HSAp8jZ>7g;]MTEbLA#B4N+OK[M&!OL2׽/+rv.xIW&MH9Q(;)R'L߽-I?b ZS%Ԫ1M7 +2zFj$#JU J{jlϲ9kxۇlR?`agOjTww |\K6j'% ,l~do8J{ѝS6m_t"-K8x \[NB: Z|}<4N n)X] {2pPw읋!; P\r| 5Vao VAA@X/ xMsi%r %NvEūDPsAա8vyJܘ;x;+0,&m Z-&\.EaWQB豭jFfAL"xhci/ ++Lwu:- ZO +tX 6:`"tenWxtٛ1fuQ` Xђ[Ǣ7\-Ÿ́ђWa9CUPS~:;3v꩏@{@.{3WvZ[7[& 4dKҏtCn_;!{G?Wbh늵hf퉺Tu}_žO6x(g.vƂ\op0~Hз+м' ͢B}Խ?C:h>+43١r-V%BQpC%i:D(PisXP$CõF yM4LI6.j2 +y{RQތu#7.'U 4WBo؋>(?khɲjƧLϜC/L-uͧ7tE,C.{$4˷$KAFɝ]LJctRd$ߩ?m/P<>/嬰F@+#rj#03sa$0$Sx]+=-P.u{~W )U?+/4nwC +ӻ3'pvWrX\>M#$5+"Jӆ}@GvPllX !+Q-/WPDө\WM~,^[ro6L4Zd>r~ -Cq!|fյ1a. uY:>%vΑ,7{eī4YwE:N7Cy`_GW|9=We5AY2RdC"<O_uW16 dnd#|i0ջ.v.Y=zv1UoOjLؙQ?1*J}cۿfB;?n+1w\ 1I(DJxiӋd+U<=̯֫Iul6e`ZvqW!<|ܖKS-/.zfs#J~D?=j1ij-yH +&"dXzi@ouL;`cgGYYpBָ$x_Dr?Ygm%M)ȺnbU=ܪ76!=D_E+SHƃJF +IUVp?nfz|dU4P:{ \SP_/;8.֤`YnsM9_@'Ζ7繀_2?D?f)3 XX*]L?%}48pXfM;uLfM~JWY'WV\켕ag@0 ] uttIQ'+њ i@eNh໢I[3 @(04hi(F;d`j;>1eG1LG>ȩXy<ȿJ)K"G>Uc9oebA< k/]ͷtf^@VY"d ]4c^ޠ0S32 Z sΉ.r84焖 +L uB1_ 'ɪ8rqDZ.]n\[ A0i!ct =9S;r GZ;Q1g{*87u6Ya4B5k!aax5ha1g԰yE@5U.QU>ILNLh1>T$TQJH~CNt慰M/`j:v,!Yt\Jx<Z)^Y d\?8dd |ksW* V?ͭ)x gj\tVFk=wd.y)oƔ+H7iqOF;!LJ^hXp͚e3w F|~qGӪV?޹h׾d1NӠ>TlRN[3$m=1 /]-Y|vgA"Dy5 g~J#b\<8}<;~N{"|<ۛB槞ŏ}SFh)2gɣ eEGbrzW_קޣ_ѳH|m?xtẓI4Nq4q?Z (DךO;Iyeoŏ־a{#ѣ]MW{^)wQ,_kE,$ﰙ>E./k0󹐤 A(2n-w$t.%a>(Qⳗuf|o[)A.'g x="Q^Sb)Ņ)7; 5:}^RRڦOK@ \XrX㉓KSqMjr`~l7)‹vGs >?N R3m_5k?su YJ-iԽ,̠,kM2Ǹ_O%HC7향GҼ?]Nƣka +̜fUzWҤKΎIٶ4w1C4U!p68X!uGzܔf9y}ӵ81>{ARzkyq9FK.1ʡ"\8efsQ :2t)>9-59` ē#Q6/M"[?KMׯ$k%$Mjuef aHiZi0'SãSN{2&߉ɛfC-$Xz +~ =y/`0Tvwٱ.;&Sh)'/l)s^؅CGxf`k%K饦:m%;{-s-K\tsz2>b;XOZԓe ?!:urą+}e;#Nt3x`̤BT` +"s^I|d)^3>2sgk9# sOw Su}*\i4o^nh!IIUv'Ƭ{Wj@u)),L +)WvOABdʕ4§eFƹ#ޱᎽ5υ'->hLrr~q$h ֡ˆ~L,7+\܋WHv2uU%,íT`46*|w܏I;mVryC1r'\`zyr6,o֤ZfɚeBu,CV1DmBD)&q'e&CRdѦKKK'`Ckp'-UЕA +y-pZ&ݝߕP"z!G +/ajHmwIҷX*) R~!0o:]?&,3P;Վ~X@}oF9PM_3NrlvR!ek8tD)P`L$9ԙY|h`/b%l哕h}MD Q+Nاi(^"~V$8l=oI4v}o m@p%(JO5}8YlܻGe $2,EJF;R }Eap0 Cfw##P,r<&!ލ~G]a" _(NHrUZڣ` 2hn(|W`>; +9໧ظ&ҭ)A: +^b~lz|װ9G(c^^!Sa>#~DqK=T6xl-2ޏ]o1ey*a RC - +!ɺ7[;յS胏hBW}0߅!Ba*RC*F)7bDICFd.n8T0]T +S!*GiZLuGW_!c=v'e s1r\K4Dž%@_X˥@H*9/ۦT(>p/J\SS{0K&ɱF t8bw߰v^M} .+V_S}q %?>stream +HWBN}<pI*X!R zU nl-9sfJlj:mJlt3,Q8O*GuLOsIv_mȲ~1. =^R$YP%έu 7K|yiM vo`{**~H JR!$ + +IA]pJ~_8-襓*XT WD`=6WBR4d11CExX_;Tc]μNMj +|P ~UnRhb 95dW$3lymu2\#d$G: Y%c(+ TKyV;0j9M)tKLEq) 4ܴQNN1~<@ ),XP' +(|Mxq:]_2;OZF + +zl2CǨaB ]րJY.馛ًlM2j$|.,,1Ĭ& {@~:!ɯaIܚ' 419ajȊSٯ/ E}@ WJ}Xyq7$;)rxH1CAycN~#ˢ ;6+;ӖAj i_ueC^v)ztkusFH=ePߚ` l=x% -h5[ן&]X!$O;;2s|Dq(XFB:c:ً:M{U}GP^{W2Fx]6t2 L('$Rԁ aa힀&DWb J]8[6DXBD`⊧.]+u!Sn u5^ -?] lR4(E d%8 07qa^Dh~!/"r#'we6Z ܕ1뮤#p@ZS$/iD1> 5-~Hj@䲥ޯcZqSW'Refeb=tK|y-1Ė25"R0'vޘR"щзyN`J T} +m+\ :]б+#nΨ.}h[DInFD7Srú Ydj,ԡvT׾+aͳ'T4 ZivJ%4 ƥk0bs*ɞ_w}Gg<Ř: RϨe[Y[]S,j ބq]l17wzh޾A- +!X)d屮WdSgļPƶ۩U.[RSΦ ރ#chb1MZCؑa ;ҿ.!Pt/I|dX2yam\w⻁MG+%fYg45G N |(qc1_e{ݸ(c>\`*#" +ܕ: w%c'iڦ8A* t00xRapa'[w07r%3wKh#FxM +vJW\S;.Ӷ۾>qekL0 hJT`kgbPAZe2 ']z 1]OZTv׫Jr+q#)_ K7BJSt:uJ fm +Ít|{]5y:o 논huW3{8|wE Iac /m0"it4~!ܪwL11t;E]>Yrb::u 0끷9ɾ(tOohM9d3W:vj*i|8}EN]IR(szg:]ͩ$#˧_DU{7ʟɛo80-|6o|-}g2Gt: 3L剳smb(g1'WKD1_v;JTh7WU#R}()%Cv=TI I +¨pÙԭf J|0S Ow2y^9<(%v ٴG N߁/>Ώ(?": )I +T%5r1/`'l/9%  1^tmW6|gg1YӱR;1650ԛ'㈀8W_h(oYŬ]lӻC3 ) r0 dO_efÀe<WN<)P}_c <ɡS!c}YaF5+Exlڻ[NcXPٰH!cmE)1[..C #`#*)7t0X"'&_y~-ȕk, +bKfP0gq\)VPP)Ji+/[j$*rͰiGYfJ?a,psFx# c$-7q9Vv:gRCYJ4" +*ŗS9s@#}9, 4Te>4V_6\=SijbsHo_E3. WXLPX&;Sp*u* h_[U'+)ǍW%kL4VJӱHx~PV:>ѡZ)IO?*zxoZ{5US̾VC[~O%c]VL_\_@a~Ӑa'Odcˊ@'b +R +7ĺrjmU{ ;GKpʏd(" ]R̋کv~e,xs -7[P}1Tݟ^)mU&NQm料AgTyHz, ): +K3 -L8rhQ\ⶑ?CW|:Fs*nsW7ӝмtɉ*2XHaZh\71EgְU@NZǂKCvjZnTJ)h`E Du;"ӻEbVumFXzj>߭Nd3D҃ r]Eb4JMTBvϧWRBEL4z)kMu8JR`wؘJ`M]0FcyE_ŖDN72O|XGԦRS11q]˛%o SV_ȡOnȧXV-)W6g +7(J36t CgGUcEqOOW_kP}_D%֎z U[.=%+ۚNISaakǰ0̟Nv 5Cx,³AzNtOY!3-Pd{8[s}1XY1^ǰ/ 1CيV" 66ܘh*t-ʎ‰ɁW@Fa*ٝcVee.tΖ9x*ecZed;M8fBexrl'-&r@_mg-x#bv bXiyEF`x@u'ՌTf;B XV3x'cQ=8JSq2 Tɀ#+Xd u Ri L ƞYh,6+LSivjٷ` Gx֘Ua* KyTja8 aF;CJ,HC a2R6%˓I*sncpi1y~MwoX Þ$.t5R!<ߨ`jMNvt}F’Ee v~R;@JcꟋWHu+}۽-P?JCELχg&w"xnP1Wˡ_ϝct9 FqJἅgCy)⋄7c=* V8b/*(ﲵg@>.H҇4uSҧ|@=2҇ ++>4C#(S[٥<#\yr|3~! vnydz,.1p8x􊸹O0K3]_!8-I,Yj  MKFN\2şL7[q'1/fڞOo0Z"Zܟjض'칡Ip{B¾sA}! 4|>!NZtR09Q9zi &-BBy_Ѹ%=NA~wꝩ7~;>|;keݓ x9^ G2"˙;oyeOn矵ᢙp-EFSBv]aܳJy3d]+3AM5xgs=gK>^ +OFO'fFc(J&]OiM%Ԗ6Yl<3w?DMb )HY l5T+3WF Mf6zQXc%- c7t@#(Go <.NIE ӹ3~1zr(~ c,p|I,&) OZRVutwa07Z}n6~hf +ǰeY [ +{ +@m6FP61\؇fb_7nZ0 #K-r5v1flq瞱}bc"-[مT; ;~ j[g7FPH9kXYrK! X@ G"^o!'#-I2Rw%xk\' 9t̊/>o@D|9IFEht JUhkJ2orv:j$xnO +pop +Em֨{? T{6H҉;NnHȶ޺ +[MMZHcDPyz͞dȷݘm1'L5ν)`?LPuJP8Pg0^K3*~m#- տhԒܘ~jsm8ކoRրMrG h tу(LƷhQ+Om +LdƵQ3?2괓+sAoE߇#^##=4ݔ#(΍gdJ(&_ۆ)CRښL"h]H"*w9f w>m$e@3Aq7)-uߖ5O0(ןĬ4g t]GV@?ڥ~KYhTmՑVˍlXy.m[AWoyv.g r#n|-o}tl6|uITDF5+^p!AuE9iaK%+fdK-,1t ϲT/5s,eO NP\x\v0Sx\vʿ-<.;?-<.;0Yx\l@Yx.7nL;`Lf򓿩3F"`GPzBt1,GB5]ΠD[4ŽOLL[n&llirm6G5heX=IbѨk2>h!%1] ++tXqgP:SjϺqwk@$ٝ[`7pr*iE %jݐp8=t;卞64Q13U]$rJK 6 /`L?&p1)X“z>,du>;^@]#LBk3 : s몾U +2wOU +X<-7p4ݛ'A?M^lvSVz +NOBܗt2"fX%]pS$L潑Wk EYN&[`jWGg 0p~0 #9-U*3w@bdg&Oj0mpL<kqኦ +6@PknAD4TMlW&R^fBI6Bwa<[]~}َ]QqL Ƹqsn+@c;; Ƹ0~:v1n΀1w[1qz!u\2n:g,ˮL3DLj DԮjvͶ6=x#cJE)c HV]giˢ= $+'y_^~s1)2I 29ŧFXzz5ȊjZ(q]s:Y,I +` b4!#`ɣoAGzun=+N t R$ H[wf4=K&fOy晙=5S[Q +ET)r(] CoX z]P LMg.D@nO&(ew5]ǧׂv"<3ȖiR\W]!+bBtS-ٴl3H?.c rI,&y柦˸5ufY H۷Hl*] 1}oL\IČ1=P-Zb*zpz'{~la?ȴOB YXѕ}u$('aG%9,;O[xLZœlTA!r?񔤸/-}<ِ%=H',}.ȯ\jK"늈Һ.ᾊ] Q@r>Ȯ&c[ACl2O8)پ.6=CWX,TU`sq.0J$cuIBљ_gESd|GdYdDLRN?ϱ)^/wG^C򔐼Ws|P&AU,<80*$EG+G$Tk֨Ϫ#q Ao+(0Wp%JyJ,R%5ct -=ݥ"g&(UJupp]ї#HDer +`O:c4ʜO~T|`xlDixBU QųpƎhN2t<5sܑj~hg[ٚ!*A3agyhZNА,=M] m2ƀe9_% jsR/0ED`6; +.ԭYM$-pnNQABE 'x;D!l־~*Z5Rc<.dNʪ;k./:>H™xs9I~Q-G6"&i5zBw! aMHyƕ$LL ^(H#ΰ9(w[] Eƚyؙ0bՍ^l(%*r0|2uI2-)ؤ9#Y 9P": =F~AP>"{*\m{b2.[ݳH +V|ǪP5.8Wyi.Iv"ٔ*NxH[%3"jKhMxvAq +B=Q]T,4C!m-:![=v^ e ;L +ls`M ;\7ř{r]E"&* ȿULu:t!:y+<}ݭ[SXHԩ +MLţ++ t>\M|JON0A^{҈>O<?=$%RHD\em:f80@").QQ|ݩC +%Hp)ol5/}NɗL3:K*&U-{Y3B Y!`sوO!30AZ4 !k!%mt$ۃ0IԬ P +V%o@O!pXS(ol > W'' +>*fJ JϠDr +P~k*+FWn?PeU/ݘMW7*OU|N] R#Z u|Kw (#b?FCl]A:*owTsG_~b|jw +KTۈ;Z8TZo {g~:=@L{eû>pcs(W11Y: ,lUhگX;6}olX~: | mu"H\^mi$K$}hD#jp5](*ٜ|93!ٳO&3u~uvA:%rqO扙y5S\gLy\mLZ/4667eKUbXsfڋYQ|_JF3vGSUoGWq8&Jdnk~ӧ F1wYx(g)\[HM>hrpq ,&s,}fbzl=\z}S[m&bÕfe!,]mgRNqbdflf oZRpkAZ4x vW';8ve"0_ wrFÕ|US]! >$8Y޿a;_}M%q>nMs6rūa 04T}feۮS~ =t' +W`KXrk6V Lm>1QyqW >O9ía%M^^kζt;U)^W.T`v/p\Jzc)V5B>8Fx^m?S[n?05'RxYh;kkGo|. +'ĠɃtox,)BSuHyo5ɛw.Ͽ|SWce?2 Y_]ߵ9% >EBk|hZmrs6Ũucѻ\Sy8_ﺏߢEZjo7bR4X*F(k~n 4}'"jC.-·5\;Dp6rgvt.^XGZgj+]9gb ~(Y+-c><ז+N0f\rH͝vBq:㕑sw6]=ϑ>R[;$lR#-4YY+&VJMZ`[-m֕ӃpD9.c\pcb.r\24E,mpRyX2r),!X,Ck- A&,Sxf)sLVp眇#gsǜBs^99b'rIs0Z+O4sx$X!?</H.< $/A0^ <\pM9@P0{R[kLX9A9¤`LԆ x✜ A.^e&^t ua*,(n^:uRS"!% +OWdF"ԏw^Nnp:z٨y7A۠=`Mp +{d2_y ++ {F =$*1 iRK1r~0Xl&K K.$YAU샛P>r,fjVSN 棌1ϓά7(MHBK%B(h7E;0j}֪3qDSvJHq!!<ڴ |߭&"`^[L9CH4 zU,ܴnA* ȡ"T[tw6iGnwfq kxUCv+Qֺ~k815(q0Z~%zgj\8A9iCJ+ PDCF-bxZr?/c󋎭L`;tI(O!BJ1ieMrD,z*IA*tZII< A\PYhAAMA:HyQhRpCMc) +ASy?T n=Ǧ;_':r:EQ<5 -a +C(BZkɤ-R vW'mWO?Q~؉O~+ȈN#?VK endstream endobj 5 0 obj <> endobj 25 0 obj [/View/Design] endobj 26 0 obj <>>> endobj 34 0 obj [33 0 R] endobj 59 0 obj <> endobj xref 0 60 0000000004 65535 f +0000000016 00000 n +0000000159 00000 n +0000016706 00000 n +0000000000 00000 f +0000063411 00000 n +0000000000 00000 f +0000016757 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000063481 00000 n +0000063512 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000020437 00000 n +0000063597 00000 n +0000017158 00000 n +0000017316 00000 n +0000020870 00000 n +0000020624 00000 n +0000020747 00000 n +0000018097 00000 n +0000018739 00000 n +0000019249 00000 n +0000019733 00000 n +0000017381 00000 n +0000017536 00000 n +0000017584 00000 n +0000020375 00000 n +0000020138 00000 n +0000020313 00000 n +0000020251 00000 n +0000020076 00000 n +0000020508 00000 n +0000020539 00000 n +0000020944 00000 n +0000021127 00000 n +0000022431 00000 n +0000033714 00000 n +0000050016 00000 n +0000063622 00000 n +trailer <<4EB2C399D71C4705888A21443A38AEB3>]>> startxref 63763 %%EOF \ No newline at end of file diff --git a/platform/macos/macos.xcodeproj/project.pbxproj b/platform/macos/macos.xcodeproj/project.pbxproj index c839bfadd3..e243658e9d 100644 --- a/platform/macos/macos.xcodeproj/project.pbxproj +++ b/platform/macos/macos.xcodeproj/project.pbxproj @@ -16,6 +16,7 @@ 1F7454A51ECFB00300021D39 /* MGLLight.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F7454A21ECFB00300021D39 /* MGLLight.mm */; }; 1F7454AB1ED1DDBD00021D39 /* MGLLightTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F7454AA1ED1DDBD00021D39 /* MGLLightTest.mm */; }; 1F95931B1E6DE2B600D5B294 /* MGLNSDateAdditionsTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1F95931A1E6DE2B600D5B294 /* MGLNSDateAdditionsTests.mm */; }; + 1F9EF4061FBA1B0E0063FBB0 /* mapbox_helmet.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 1F9EF4051FBA1B0D0063FBB0 /* mapbox_helmet.pdf */; }; 1FCDF1421F2A4F3600A46694 /* MGLVectorSource+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FCDF1401F2A4F3600A46694 /* MGLVectorSource+MGLAdditions.h */; }; 1FCDF1431F2A4F3600A46694 /* MGLVectorSource+MGLAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FCDF1411F2A4F3600A46694 /* MGLVectorSource+MGLAdditions.m */; }; 30E5781B1DAA857E0050F07E /* NSImage+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 30E578141DAA7D920050F07E /* NSImage+MGLAdditions.h */; }; @@ -289,6 +290,7 @@ 1F7454A21ECFB00300021D39 /* MGLLight.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLLight.mm; sourceTree = ""; }; 1F7454AA1ED1DDBD00021D39 /* MGLLightTest.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLLightTest.mm; sourceTree = ""; }; 1F95931A1E6DE2B600D5B294 /* MGLNSDateAdditionsTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLNSDateAdditionsTests.mm; path = ../../darwin/test/MGLNSDateAdditionsTests.mm; sourceTree = ""; }; + 1F9EF4051FBA1B0D0063FBB0 /* mapbox_helmet.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = mapbox_helmet.pdf; sourceTree = ""; }; 1FCDF1401F2A4F3600A46694 /* MGLVectorSource+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MGLVectorSource+MGLAdditions.h"; sourceTree = ""; }; 1FCDF1411F2A4F3600A46694 /* MGLVectorSource+MGLAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "MGLVectorSource+MGLAdditions.m"; sourceTree = ""; }; 30E578141DAA7D920050F07E /* NSImage+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSImage+MGLAdditions.h"; path = "src/NSImage+MGLAdditions.h"; sourceTree = SOURCE_ROOT; }; @@ -826,6 +828,7 @@ DA8933AB1CCD290700E68420 /* Localizable.strings */, DAE6C3BB1CC31F2E00DB3429 /* default_marker.pdf */, DAE6C3BC1CC31F2E00DB3429 /* mapbox.pdf */, + 1F9EF4051FBA1B0D0063FBB0 /* mapbox_helmet.pdf */, DA8933A71CCD287300E68420 /* MGLAnnotationCallout.xib */, ); name = "Kit Resources"; @@ -1400,6 +1403,7 @@ DA8933A51CCD287300E68420 /* MGLAnnotationCallout.xib in Resources */, DA8933B51CCD2C2500E68420 /* Foundation.strings in Resources */, DA8933B81CCD2C2D00E68420 /* Foundation.stringsdict in Resources */, + 1F9EF4061FBA1B0E0063FBB0 /* mapbox_helmet.pdf in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/platform/macos/sdk/Base.lproj/Localizable.strings b/platform/macos/sdk/Base.lproj/Localizable.strings index 68360320eb..cb085add6a 100644 Binary files a/platform/macos/sdk/Base.lproj/Localizable.strings and b/platform/macos/sdk/Base.lproj/Localizable.strings differ diff --git a/platform/macos/sdk/mapbox_helmet.pdf b/platform/macos/sdk/mapbox_helmet.pdf new file mode 100644 index 0000000000..699b2ff293 --- /dev/null +++ b/platform/macos/sdk/mapbox_helmet.pdf @@ -0,0 +1,355 @@ +%PDF-1.5 % +1 0 obj <>/OCGs[5 0 R 33 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + Adobe Illustrator CC 2017 (Macintosh) + 2017-11-16T09:51:51-08:00 + 2017-11-16T10:04:52-08:00 + 2017-11-16T10:04:52-08:00 + + + + 256 + 256 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FUPe6jYWMfqXdwkC9ubAE/IdT9GKsbv/wAx9HhqtpFJdMOjf3aH6W+L/hcVSC7/ADH1uUkW 8cNuvY0Lt97Gn/C4qlNx5q8xT19S/lFf99n0/wDiHHFUBJfXsprJcSOfFnY/rOKqOKuxVWjvr2I1 iuJIz/kuw/UcVR9v5q8xQU9O/lNP9+H1P+J8sVTa0/MfWoqC4jhuF7mhRvvU0/DFU/sPzH0eai3c Ulqx6t/eIPpX4v8AhcVZJZajYX0fqWlwk69+DAkfMdR9OKojFXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXYqlmr+ZNI0lT9amHrUqIE+KQ/R2+nFWDav+YWrXRaOyAs4ezD4pCP9Y7D6B9OK sYmmmmkMk0jSSN9p3JZj8ycVWYq7FXYqujilkNI0Zz4KCf1YqiF0rVGFVs52HiI3P8MVc2laooq1 nOo8TG4/hiqHkiljNJEZD4MCP14qtxV2KuxVfDNNDIJIZGjkX7LoSrD5EYqyfSPzC1W1Kx3oF5D/ ADH4ZAP9YbH6R9OKs50fzJpOrKPqsw9alWgf4ZB9Hf6MVTPFXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYqpXV3bWkD3FzIsUKCrOxoMVYB5g/MG4nLW+lVgh6G5P943+qP2R+PyxVhzu7uXdizsaszGpJ Pck4q1iqpb21xcyiK3ieaU9ERSx+4YqyXTvy71q5o10yWcZ7Meb/APArt95xVkdl+XWhw0Nw0t03 cM3BfuSh/wCGxVOrby/odsB6NjCpHRigZv8AgmqcVR6qqiigADoBsMVbxV2KtMqsKMAQeoO4xVAX Pl/Q7kH1rGFierBArf8ABLQ4qk17+XWhzAm3aW1bsFbmv3PU/jirG9R/LvWrYFrVkvEHZfgf/gW2 +5sVY1cW1xbSmK4ieGUdUdSp+44qp4q2jujh0Yq6mqspoQR3BGKsx8v/AJg3MBW31as8PQXI/vF/ 1h+1+v54qz+1u7a7gS4tpFlhcVV1NRiqrirsVdirsVdirsVdirsVdirsVdiqWa75gsNGtvVuG5St /cwKfjc/wHicVeXa3r+oaxcepcvSNT+6gX7CD2Hj74qluKqtta3F1MsFvG0sz7KiCpOKs10T8uCQ s2rSU7/VYj/xJ/8Amn78VZpZadY2MXpWcCQR9wgoT8z1P04qiMVdirsVdirsVdirsVdirsVdiqHv dPsb6L0ruBJ4+wcVp8j1H0YqwzWvy4oGm0mSvf6rKf8AiL/81ffirCbq1ubWZoLmNopU+0jihxVS xVMtE8waho9x6ls9Y2P72BvsOPcePvir1HQvMFhrNt6tu3GVf72Bvtof4jwOKpnirsVdirsVdirs VdirsVdiqT+ZPMlrotryakl3ID6EFev+U3goxV5Tf393f3T3N1IZJn6k9APADsB4Yqh8VTzy75Tv 9Zf1B+4slPx3DDr7IP2jir0vSND07SoPSs4gpI+OU7u/+s2Ko/FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYqgdX0TTtVg9G8iDEfYlGzofFWxV5n5i8p3+juZN57In4LhR0r2cdj+GKpHiqIsNQu7C6S 6tJDHMnQjoR4EdwcVereW/MlrrVryWkd3GB68Fen+UvipxVOMVdirsVdirsVdirsVSzzBrtto1g1 xL8UrVWCHu7/ANB3OKvJL+/ur+7kurl+c0hqT2A7AeAHbFUPirLfKPkttQ432oApZdY4ujS+/sv6 8VejxRRxRrHEoSNAFRFFAAOgAGKrsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiq2SOOSNo5 FDxuKMjCoIPYg4q8582+Snsed9pyl7PdpYerRe47lf1YqxHFURp9/dWF3Hd2r8JozUHsR3BHcHFX rmga5baxYLcxfDIvwzw90f8AoexxVMsVdirsVdirsVUru6gtLaS5uHCQxKWdj4DFXkGv63caxqD3 MlVjHwwRdkTsPn44qluKst8l+URqDDUL5T9SQ/uoz/u1h4/5I/HFXpIAAAAoB0GKuxV2KuxV2Kux V2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuIBFDuD1GKvN/OvlL6i7ajYp/oTn99EB/dMe4/ySfux ViOKpl5f1y40fUEuY6tEfhni7On9R2xV6/a3UF3bR3MDB4ZVDIw7g4qq4q7FXYq7FXnf5g+YDPcf oq3b9zAa3JH7UnZfkv6/lirDcVTvyp5dfWb+jgizho1w42r4ID4tir1mKKOKNYo1CRoAqIooABsA Biq7FXYq7FXYq7FXYq7FXYqhb/VNO0+P1Ly4SBT0DHc/JRufoxVjN7+ZWmREraW0lwR+0xEa/wDG x/DFUpl/MzVi37m1gRfB+bn7wyYqor+ZGvAmsVs1exR9vucYqjbf8zrgH/SbFGHcxuV/Bg2Kp7p/ n3y/dkLJI1pIdqTCi/8ABLVfvpirII5I5UEkbB0bdXUggj2IxVdirsVdirsVdiq2SOOWNo5FDxuC rqdwQdiDiryfzZ5dfRr+kYJsp6tbue3ih91xVI8VZn+XvmD0Lg6TcN+5nPK2JP2ZO6/7L9fzxV6H irsVdiqWeZNXXSdImuqj1qcIAe8jdPu64q8dd3d2dyWdiWZjuSTuScVX21vNc3EdvCvOWVgiL4km mKvY9C0iDSdNis4qFlHKZ/55D9pv6e2Ko/FXYq7FXYq7FXYq7FWndEUu7BVUVZiaAAdycVYL5i/M IhmttHpts14wr/yLU/rOKsIuLm4uZWmuJGllb7TuSxP0nFVPFXYq7FXYq7FUfpWu6ppUnOznKLWr RHeNvmp2+nrir0Ty550sdVK28wFtfHYRk/C5/wAgn9R/HFWR4q7FXYq7FXYqgNc0iDVtNls5diwr FJ14OPst/X2xV47dW01rcSW868JomKOp7EYqpo7xuroxV0IZWGxBG4IxV7F5c1hdW0mG629X7E6j tIvX7+uKpnirsVeZ/mFq5utWFlG37mzFGHYyNu33Cg+/FWK4qzn8uNFDPJq0y7JWK2r40+Nvu2+/ FWe4q7FXYq7FXYq7FXYq0zKqlmIVVFSTsABirzPzh5ufUpGsrNiunoaMw2MpHc/5PgPpxVi2KuxV 2KuxV2KuxV2KuxVwJBBBoRuCMVeheTfObXLJpupPWc/Db3B/b/yX/wArwPf59VWaYq7FXYq7FXYq wP8AMfRADHq8K/apFcgeP7D/APGv3YqwXFWV/l5q/wBV1VrGQ0hvBRa9BIu6/eKj7sVel4qh9RvY 7GwuLuT7MCM9PEgbD6TtirxSaaSaaSaQ8pJGLu3izGpOKt28EtxPHBEOUsrBEHiWNBir2nTbGKws ILOL7ECBa9KnufpO+KonFXYq7FXYq7FXYq7FWC+f/MpFdHtHoSK3jjwO4j/5qxVgeKuxV2KuxV2K ss0Lygb7y1d3jJ/pcu9j8ozv/wAGarirE8VdirsVdirgSCCDQjocVep+S/MZ1WxMFw1b62AEhPV0 6B/n2P8AbirI8VdirsVdiqG1Kxiv7Cezl+xOhWvgezfQd8VeLXNvLb3EtvKKSwsyOP8AKU0OKtQT SQTRzRHjJEwdG8GU1GKva9PvI72xgu4/szorgeFRuPo6Yqxv8x7/ANHR4rRTRrqT4h4pH8R/4bji rzXFWUfl7p31nWzcsKx2aF/bm3wr/E/Rir07FXYq7FXYq7FXYq7FUt8xawmk6VLdmhk+xAp7yN9n 7upxV47LLJNK8srF5JGLOx6kk1JOKrcVdirsVdiqK0rT5tR1CCyi+3MwUnwXqzfQN8Ve0W1vFb28 dvCvGKJQiL4BRQYq8v8APOj/AKP1lpY1pb3lZY/AN+2Pv3+nFWO4q7FXYq7FUdomqy6XqcN5HWiG kqj9pDsy/dir2aKSOWNJY2DRuAyMOhBFQcVXYq7FXYq7FXmP5h6cLbWxcoKR3iBz4c1+Fv4H6cVY vir0v8ub8z6NJasataSEKPBJPiH/AA3LFWP/AJj3Zl1uO3B+G3hFR/lOSx/DjirFMVel/lxZCHRZ Lkj4rqUkH/Jj+Ef8NyxVleKuxV2KuxV2KuxV2KvM/wAwtWN1qoso2/c2Yo1OhkbdvuFB9+KsVxV2 KuxV2KuxVn/5b6Pwil1WUbyVit/9UH42+kin0YqzfFUl836ONU0WVEWtxB+9gp1LKN1/2Q2xV5Hi rsVdirsVdir1PyDqBu9ASJzWS0YwmvXj9pfwNPoxVkeKuxV2KuxVin5jWXraIlyB8VrKCT/kP8J/ 4bjirzTFWWflvdmLWZbcn4biI0H+UhBH4csVSjzVcev5iv5K1pKY/wDkX8H/ABriqVYq9l8uW31b QrCGlCIUZh/lOOR/E4qmOKuxV2KuxV2KuxVQ1C8SysZ7t91gjaQjx4itPpxV4nPNJPNJNIeUkrF3 bxZjUnFVmKuxV2KpppHlnWNVINtARCTQ3Enwxj6T1+iuKs50f8v9Ks+Ml6frs43o20QP+r3+n7sV ZQiIihEUKiiiqBQADwGKt4q7FUk1nyfouqEyPH6Fyd/XhopJ/wAodG/XirBtY8jazp5LxJ9ctx/u yIHkB/lJ1+6uKsdxV2KuxVm35Y3JF3e21dnjWQD/AFDxP/E8VegYq7FXYq7FUu8x231nQr6GlSYX ZR/lIOS/iMVeNYqmvlS49DzHp79KyiP/AJGAp/xtiqAvpDLe3Ep6ySO33sTiqkilmCjqxAH04q9z jRY41RfsoAo+QFMVXYq7FXYq7FXYq7FWLfmLe+hoa26n4rqVVI/yU+I/iBirzLFXYq7FU38uahol ndc9UsjdKSOD1qE+cZ+FvpxV6npuq6bqEIexnSVFAqq7FfmpoR92KozFXYq7FXYq7FVO4uLe3iaa 4kWKJftO5CgfScVedeb9c8s3xYWdr6t2f+P0ViH3dX+kYqxLFXYqyr8uGI1+QDo1u4P/AASH+GKv TMVdirsVdirToroyN9lgQfkdsVeFupVip6qSD9GKq1jIYr63lHVJUb7mBxVQxVEacpbULZQKkyoA PmwxV7dirsVdirsVdirsVdirzr8y7rnqdrag7QxFz/rSN/RBirDsVdirsVdiqpb3FxbyrNbyNFKv 2XQlSPpGKsv0f8x7uHjFqcX1hOnrx0WQfNdlb8MVZ3p+oWmoWiXVq/qQyV4tQg1BoQQcVRGKtMyq pZiAqipJ6ADFWF6z+Y9vHWLSovWb/lolBCfQuzH6aYqwnUtX1HUpfVvZ2mYfZU7Kv+qo2GKoTFXY q7FWX/lpCW1i5lpsluV+lnWn/ETir0fFXYq7FXYq7FXiOoqV1C6UihWWQEfJjiqHxV2KojTmK6hb MDQiVCD8mGKvbsVdirsVdirsVdirsVeS+dZ/W8y3h7IVjH+xQA/jXFUjxV2KuxV2KuxV2Ksz/LjW PRu5dMlb93cfvIK/78UfEP8AZKPwxV6HirGPP2s/UdJ+qxtS4vapt1EY+2fp+z9OKvMMVdirsVdi rsVei/lpYmPTrm8YUNxIEX/VjHX72OKsxxV2KuxV2KuxV4jqLFtQuWJqWlck/NjiqHxVWvozFe3E R6xyOv3MRiqkjFWDDqpBH0Yq9zjdZI1dfsuAw+RFcVXYq7FXYq7FXYq7FXi+uyGXWr+T+a4lp8uZ piqBxV2KuxV2KuxV2KqlvcS29xHcQtxliYOjeBU1GKvZ9L1GHUNOgvYjRJU5EfykbMD8jtiryrzT rH6V1ma4U1gT91b/AOovf/ZGpxVKcVdirsVdiq+CCWeeOCJeUsrBEUd2Y0AxV7RpOnpp+m29km4h QKSO7dWP0sScVReKuxV2KuxVbI6xxs7fZQFj8gK4q8MdizFj1Ykn6cVVbGMy3tvEOskiL97AYqj/ ADVb+h5iv46UrKZP+Rnx/wDG2KpVir2Xy5c/WdCsJq1JhRWP+Ug4n8RiqY4q7FXYq7FXYq7FXh12 3O7melOUjGnzJxVSxV2KuxV2KuxV2KuxVOdN8y3Flod7pign6yR6T/yBtpP+CUbYqk2KuxV2KuxV 2Ks5/L3y6xf9MXK0Aqtop7k7NJ/AYqz3FXYq7FXYq7FUu8x3P1bQb+WtCIXVT/lOOI/E4q8axVNf Ktv6/mKwjpWkok/5F/H/AMa4qm35j2hi1uO4A+G4hFT/AJSEqfw44qxTFXpf5cXom0WS2J+K1lIA /wAmT4h/w3LFWV4q7FXYq7FXYq7FXhlx/fyf6zfrxVZirsVdirsVdirsVdirsVdirsVdirsVZN5S 8oS6rIt1dqY9OQ/Iykdl/wAnxP8AmFXp8caRoscahEQBVVRQADoAMVbxV2KuxV2KuxVin5j3oh0W O2B+K6lAI/yY/iP/AA3HFXmmKsr/AC4tDLrclwR8NtESD/lOQo/Dliqf/mPYeto8V2oq1rJ8R8Ek +E/8NxxV5rirKPy91H6trZtmNI7xCntzX4l/iPpxV6dirsVdirsVdirsVeHXa8LuZK14yMK/InFV LFXYq7FXYq7FXYq7FXYq7FXYq2kbyOqRqXdjRVUVJJ7ADFWceW/y/YlbrWBReqWYO5/4yEfqGKs8 RERAiKFRRRVAoAB2AGKt4q7FXYq7FXYq7FXmP5haj9Z1sWymsdmgT25t8TfwH0YqxfFXpX5cWHo6 PLdsKNdyfCfFI/hH/DFsVZJqNlHfWFxaSfZnRkr4EjY/Qd8VeKTQyQzSQyDjJGxR18GU0IxVu3nl t5454jxliYOh8CpqMVe06ZfRX9hBeRfYnQNTwPcfQdsVROKuxV2KuxV2KvFtci9LWr+P+W4lA+XM 0xVBYq7FXYq7FXYq7FXYq7FV0cUkriOJGeRtlRQSSfYDFWTaR+X+r3hV7yllAevPeQj2QdPpOKs6 0by1pOkr/osVZqUa4k+KQ/T2+jFU0xV2KuxV2KuxV2KuxVDalfRWFhPeS/YgQtTxPYfSdsVeLXE8 txPJPKeUsrF3PiWNTirUMUk0yQxjlJIwRF8WY0AxV7XptkljYW9om6wIqV8SBufpO+KojFXmf5ha QbXVhexr+5vBVj2Ei7N94ofvxViuKs5/LjWgryaTM2z1ltq+NPjX7t/vxVnuKuxV2KuxV2KvNPNX lfWpNbu7m2tHlt5WDo6UNaqC2wNftV7Yqx+XR9Xi/vbKdP8AWicfrGKqBtrlTQxOCOoKnFVPFVRb a5YgLE5J6AKTiqIi0bV5aelY3D17rE5H6sVR0Hk3zLN9mxZR4yFU/wCJEHFU0tfy11aQg3NxDAv+ Tykb7qKPxxVPbH8uNGhIa6kkumHVSfTQ/Qvxf8NirIrLTNPsU4WdvHAD14KAT8z1P04qicVdirsV dirsVdirsVdirsVYF+Y+tBni0mFtkpLc08f2F+7f7sVYNirKvy90k3WrG9cVhshUe8jVC/ducVem Yq7FUs8yaQuraRNa0HrU5wE9pF6ff0xV466Ojsjgq6kqynYgjYg4qvtria2uI7iFuEsTB0YdiDXF XsehavDq2mxXkdAzfDLGP2HH2l/p7Yqj8VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi rsVdirsVdiqA1zV4NJ02W8l3Zfhij/nc/ZX+vtirxy5uZrm4kuJm5yysXdj3JNcVWIjO6ogLOxAV R1JOwGKvYfLWjrpOkw21P3x/eXDeMjDf7umKppirsVdirzv8wfL5guP0rbr+5nNLkD9mTs3yb9fz xVhuKp35U8xPo2ocnq1nNRbhB2HZx7rir1mKWOWJJYmDxuAyOpqCDuCMVXYq7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FVssscUbSyMEjQFndjQADcknFXk3mvzE+s39UJFlDVbdDt Xxc+7YqkmKsx/L7y/wDWLk6rcL+5tzS3B/ak/m/2P6/lir0XFXYq7FXYqpXdrBd20ltcIHhlUq6n wOKvINf0S40fUHtpKtGfigl7OnY/PxxVLcVZZ5L82/o9xYXz/wChOf3Uh/3Ux/41P4Yq9KBDAMpq DuCOhGKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuJAFTsB1OKvNvOnm36+7afYt /oSH97IP92sD2/yR+OKsSxVMdA0W41fUEtYqiP7U8vZEHU/PwxV7BaWkFpbRW1uoSGJQqKPAYqq4 q7FXYq7FXYqlnmDQrbWbBreX4ZVq0E3dH/oe4xV5Jf2F1YXclrcpwmjNCOxHYjxB7Yqh8VZZ5S86 Pp/CxvyXsukcvVov6r+rFXpEUsUsayxOHjcBkdTUEHuCMVXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FVssscUbSSsEjQFndjQADqSTirzjzb50e/5WOnMUsuksu4aX29l/XirEsVRFhYXV/dx 2tqhkmkNAOw8SfADFXrfl/QrbRrAW8XxStRp5u7t/QdhiqZ4q7FXYq7FXYq7FXYqk/mTy3a61a8W pHdxg+hPTp/kt4qcVeU39hd2F09rdRmOZDuD3HiD3BxVD4qnfl3zXqGjOEX99Zk1e3Y7CvdD+ycV emaRrum6tB6tnKGYD44W2kT/AFl/j0xVH4q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FUBq+uabpM Hq3kvFj/AHcS7u/+qv8AHpirzTzF5sv9Zf0z+4slPwW6nr7uf2jiqR4qiLCwu7+6S1tYzJNIdgOw 8SewGKvVPLPlm20W2IBEt3KP303/ABqvgo/HFU6xV2KuxV2KuxV2KuxV2KuxVLNd8v2Gs23pXC8Z V/uZ1Hxof4jxGKvLtb0DUNHuPTuUrGx/dTr9hx7Hx9sVS3FVS3ubi2mWa3kaKVPsuhII+7FWa6L+ Y7qFh1aPmOn1mICv+yTp933YqzSx1Kwv4vVs50nTvxO4r4jqPpxVE4q7FXYq7FXYq7FXYq7FXYq7 FUNfalYWEXq3k6QJ25Hc/wCqOp+jFWF63+Y7MGh0mPj2NzKN/wDYp/X7sVYVc3VxdTNPcSNLK/2n ckk/fiqniqY6LoGoavcelap+7B/eztsiD3Pj7Yq9S0Ly/YaNbelbjlK399Ow+Jz/AAHgMVTPFXYq 7FXYq7FXYq7FXYq7FXYq7FVK6tLa7ga3uYllhfZkYVGKsA8wfl9cwFrjSazw9TbH+8X/AFT+0Px+ eKsOdHRijqVdTRlIoQfcHFWsVVILie3lEsEjRSr0dCVI+kYqyTTvzC1u2otyEvIx/OOL0/1l/iDi rI7L8x9FmoLmOW1buSPUX71+L/hcVTq28x6Fc09G/hJPRWcI33NQ4qj0kjkXkjB18VII/DFV2Kux Vp5EjXk7BVHVmNB+OKpfc+Y9Cth++v4QR1VXDt/wK1OKpLe/mPosIIto5bpuxA9NPvb4v+FxVjmo /mFrdzVbYJZxn+Qcnp/rN/ADFWN3FzcXEpluJWmlPV3Ys33nFVPFW0R3YIilnY0VQKkn2AxVmHl/ 8vrm443Gqk28PUW4/vG/1v5f1/LFXoFpaW1pAtvbRLFCgoqKKDFVXFXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYqlmseW9J1ZT9ahAmpQXCfDIPp7/TirBtX/AC91a1LSWRF5D2UfDIB/qnY/QfoxVjE0 M0MhjmjaORftI4KsPmDiqzFXYq7FW1dlNVJU+INMVV11HUFIK3UqkdCJGH8cVc2o6gxJa6lYnqTI x/jiqgzsxqxLHxJrirWKuxV2Kr4oZppBHCjSSN9lEBZj8gMVZPpP5e6tdEPekWUJ7H4pD/sQdvpO Ks40fy1pOkqPq0NZv2riSjSH6e30YqmmKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV D3um2F8nC7t0nUdOagkfI9R9GKsbv/y40earWkslox6L/eIPoajf8NiqQXf5ca3ESbeSK5XsASjf cwp/w2KpTceVfMUFfUsJTT/fY9T/AIhyxVASWN7EaS28kZ/ykYfrGKqOKuxVWjsb2U0it5JD/kox /UMVR9v5V8xT09OwlFf9+D0/+J8cVTa0/LjW5SDcSRWy9wSXb7lFP+GxVP7D8uNHho13LJdMOq/3 aH6Fq3/DYqySy02wsU4WlukCnrwUAn5nqfpxVEYq7FXYq7FXYq7FXYq7FXYq7FX/2Q== + + + + 1 + True + False + + 0.222222 + 0.221944 + Inches + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + application/pdf + proof:pdf + uuid:ad04dd96-0b1b-0043-88c6-2612e9f199e0 + uuid:fd70734a-8143-0b42-928a-90f58b786320 + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj 3 0 obj <> endobj 7 0 obj <>/Resources<>/Properties<>/XObject<>>>/Thumb 44 0 R/TrimBox[0.0 0.0 16.0 15.98]/Type/Page>> endobj 35 0 obj <>stream +HwVu6PprqV*2P04ճP04SЅRR +@%!>n +.\qC$qCFHC]}r1 endstream endobj 36 0 obj <> endobj 44 0 obj <>stream +8;Xp,*?`,t!f$f[~> endstream endobj 45 0 obj [/Indexed/DeviceRGB 255 46 0 R] endobj 46 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 40 0 obj <>>>/Subtype/Form>>stream +1 1 1 rg +/GS0 gs +q 1 0 0 1 11.3447 6.2625 cm +0 0 m +-1.47 -1.47 -3.642 -1.76 -5.104 -1.76 c +-5.638 -1.76 -6.179 -1.722 -6.705 -1.638 c +-7.482 2.66 -5.074 5.075 v +-4.442 5.707 -3.588 6.05 -2.689 6.05 c +-1.722 6.05 -0.792 5.661 -0.106 4.968 c +1.295 3.566 1.333 1.349 0 0 c +-3.345 8.785 m +-7.238 8.785 -10.393 5.623 -10.393 1.737 c +-10.393 -2.148 -7.23 -5.311 -3.345 -5.311 c +0.541 -5.311 3.703 -2.148 3.703 1.737 c +3.703 5.631 0.549 8.785 -3.345 8.785 c +f +Q + endstream endobj 41 0 obj <>>>/Subtype/Form>>stream +0 0 0 rg +/GS0 gs +q 1 0 0 1 8 0.9519 cm +0 0 m +-3.894 0 -7.048 3.162 -7.048 7.048 c +-7.048 10.934 -3.894 14.104 0 14.104 c +3.894 14.104 7.048 10.941 7.048 7.056 c +7.048 3.147 3.894 0 0 0 c +0 15.048 m +-4.419 15.048 -8 11.459 -8 7.048 c +-8 2.637 -4.419 -0.952 0 -0.952 c +4.419 -0.952 8 2.629 8 7.048 c +7.992 11.459 4.419 15.048 0 15.048 c +f +Q + endstream endobj 42 0 obj <>>>/Subtype/Form>>stream +0 0 0 rg +/GS0 gs +q 1 0 0 1 9.501 8.1145 cm +0 0 m +-0.693 -1.425 l +-1.379 0 l +-2.796 0.693 l +-1.379 1.379 l +-0.693 2.804 l +0 1.379 l +1.417 0.693 l +h +1.729 3.116 m +0.328 4.518 -1.897 4.563 -3.23 3.23 c +-5.638 0.815 -4.861 -3.482 y +-0.564 -4.259 1.852 -1.852 v +3.177 -0.503 3.139 1.714 1.729 3.116 c +f +Q + endstream endobj 43 0 obj <>>>/Subtype/Form>>stream +1 1 1 rg +/GS0 gs +q 1 0 0 1 10.918 8.8074 cm +0 0 m +-1.417 -0.693 l +-2.11 -2.118 l +-2.796 -0.693 l +-4.213 0 l +-2.796 0.686 l +-2.11 2.111 l +-1.417 0.686 l +h +f +Q + endstream endobj 51 0 obj <> endobj 48 0 obj <> endobj 50 0 obj <> endobj 49 0 obj <> endobj 47 0 obj <> endobj 33 0 obj <> endobj 52 0 obj [/View/Design] endobj 53 0 obj <>>> endobj 38 0 obj <> endobj 39 0 obj <> endobj 37 0 obj <> endobj 54 0 obj <> endobj 55 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 17.0 %%AI8_CreatorVersion: 21.1.0 %%For: (Angel) () %%Title: (mapboxgl-logo.pdf) %%CreationDate: 11/16/17 10:04 AM %%Canvassize: 16383 %%BoundingBox: 2 2 19 19 %%HiResBoundingBox: 2.5 2.51000020160791 18.5 18.5100000270513 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 13.0 %AI12_BuildNumber: 326 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 2.5 2.51000020160791 18.5 18.4899997983921 %AI3_TemplateBox: 42.5 10.5 42.5 10.5 %AI3_TileBox: -367.5 -277.5 366.5 298.5 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 0 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:17 1 %AI9_OpenToView: -11.1249999999991 25 24 1668 982 26 0 0 6 43 0 0 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -11.1249999999991 25 24 1668 982 26 0 0 6 43 0 0 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %%PageOrigin:-65 -26 %AI7_GridSettings: 18 8 18 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 56 0 obj <>stream +%%BoundingBox: 2 2 19 19 %%HiResBoundingBox: 2.5 2.51000020160791 18.5 18.5100000270513 %AI7_Thumbnail: 128 128 8 %%BeginData: 11078 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD37FFFD04A87DA87DA87DA87DA87DA87DA8A8FFA8FD66FFFD04A8 %FD197DA8A8FD5EFFA8A8FD077DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA8FD057DA8A8FD58FFA8A8FD297DA8A8FD51FFA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87D7D7DA8A8FD4DFFA8FD337DA8A8FD48FFA8A87D7D7DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87D7D7DA8FD077DA87D7D7DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87D7D7DFD45FFA8FD197DA87DA8A8A87DA8A8 %A87DA8FD177DA8A8FD40FFA8A87D7D7DA87DA87DA87DA87DA87DA87DA87D %A87DA8A8FFA8FD11FFA8A87DA87D7D7DA87DA87DA87DA87DA87DA87DA87D %7D7DFD3EFFA8FD127DA8A8FD19FFA8FFA8A8FD117DA8FD3BFF7D7D7DA87D %A87DA87DA87DA87DA87DA87DFD23FFA8A87D7D7DA87DA87DA87DA87DA87D %7D7DA8A8FD36FFA8A8FD0F7DA8A8FD27FFA8A8FD0F7DFD34FFA8A87DA87D %A87DA87DA87DA87DA87DA8A8FD2DFFA8A87DA87DA87DA87DA87DA87D7D7D %FD32FFA8FD0E7DFD31FFA8A8FD0D7DA8FD2FFFA87D7DA87DA87DA87DA87D %7D7DA8A8FD35FF7D7D7DA87DA87DA87DA87D7D7DA8FD2DFFFD0D7DA8FD38 %FFA8A8FD0B7DA8FD2BFF7D7D7DA87DA87DA87DA87DA8A8FD3CFFA87DA87D %A87DA87DA87DA87DA8FD29FFFD0C7DA8FD3FFFFD0C7DA8FD26FF7D7D7DA8 %7DA87DA87D7D7DA8FD42FFA87D7DA87DA87DA87DA87DA8FD25FFFD0B7DA8 %FD44FFA8FD0B7DA8FD22FF7DA87DA87DA87DA87DA87DFD47FFA8A87DA87D %A87DA87DA87DA8FD21FFFD0B7DFD49FFA8A8FD097DA8FD1FFF7D7D7DA87D %A87DA87D7D7DFD4CFFA87DA87DA87DA87DA87DA8FD1DFFA8FD0A7DFD4EFF %A8FD097DA8FD1BFFA87D7DA87DA87DA87D7D7DFD50FFA87DA87DA87DA87D %A87DFD1AFFA8FD0A7DFD52FFA8FD097DFD19FFA87DA87DA87DA87D7D7DFD %54FFA87DA87DA87DA87DA87DFD17FFA8FD097DFD55FFA8FD097DA8FD16FF %7DA87DA87DA87DA87DFD57FFA8A87DA87DA87DA87D7DA8FD14FFFD097DA8 %FD2CFFFD09A8FFA8FD21FFA8FD097DFD13FFA87D7DA87DA87DA87DA8FD2A %FFA8A87DA8FD077DA87DA87DA8A8FD1FFFA87D7DA87DA87DA87DA8FD11FF %A8FD097DA8FD27FFA8A8FD137DA8A8FD1DFFFD097DFD11FFA87DA87DA87D %A87DA8A8FD27FF7D7D7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A8A8FD1DFF7DA87DA87DA87D7D7DFD0FFFA8FD097DFD25FFA8FD1C7DA8A8 %FD1AFFA8FD087DA8FD0EFF7D7D7DA87DA87DA87DFD25FFA87D7DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D7DA8FD1AFFA8 %7DA87DA87DA87DA8FD0DFFA8FD087DA8FD24FFFD237DFD19FFA8FD087DA8 %FD0CFFA87DA87DA87DA87DA8FD24FF7D7D7DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DFD19FF7DA87DA87D %A87D7D7DFD0BFFA8FD087DA8FD23FFFD277DA8FD18FFFD087DA8FD0AFFA8 %7D7DA87DA87DA8A8FD23FF7D7D7DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DFD18FFA87DA87DA8 %7DA87DA8FD09FFA8FD087DFD23FFFD2B7DFD17FFA8FD087DFD09FFA87DA8 %7DA87DA87DA8FD22FF7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D7D7DFD17FF7DA87D %A87DA87D7DA8FD08FFFD087DA8FD21FFA8FD167DA8A8FD167DFD16FFA8FD %087DFD07FFA87D7DA87DA87DA87DFD21FFA87D7DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87D7DA8FFA87D7DA87DA87DA87DA87DA87DA87DA87D %A87DA87D7DA8FD16FFA87DA87DA87DA87DFD07FFA8FD077DA8FD20FFA8FD %187DFFFFFFFD167DA8FD15FFA8FD087DFD06FF7DA87DA87DA87DA8FD21FF %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FFFFFFA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FD16FF7DA87DA87DA8 %7DA8FD05FFA8FD087DFD21FFFD177DA8FD05FFFD167DFD16FFA8FD077DA8 %FD04FFA87DA87DA87DA87DA8FD20FF7DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87D7DA8FD05FFA87D7DA87DA87DA87DA87DA87DA87DA87D %A87DA87D7D7DFD15FFA87D7DA87DA87D7DA8FD04FFFD087DA8FD1FFFA8FD %187DFD07FFFD167DA8FD15FFFD077DA8FD04FFA87DA87DA87DA87DFD20FF %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FD07FFA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FD15FFA87DA87DA87D %A87DFFFFFFA8FD077DA8FD20FFFD187DA8FD07FFA8FD167DFD15FFA8FD07 %7DA8FFFFA87D7DA87DA87D7DA8FD1FFF7DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87D7DA8FD09FFA87D7DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87D7DA8FD15FF7D7D7DA87DA87DA8FFFFA8FD077DFD1FFFA8FD18 %7DFD0BFFFD157DA8FD14FFA8FD087DFFFF7DA87DA87DA87DA8FD1FFFA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8A8FD0DFFA8A87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DFD15FF7DA87DA87DA87DA8FFA8FD %077DA8FD1FFFFD157DA8A8FD0FFFA8A8FD127DA8FD14FFA8FD077DFFFF7D %7D7DA87DA87DFD1FFFA8A87DA87DA87DA87DA87DA87DA87DA87DA87DA8A8 %FD15FFA8A87DA87DA87DA87DA87DA87DA87DA87DFD15FFA87D7DA87DA87D %7DA8A8FD077DA8FD1EFFA8FD117DA8A8FD17FFA8A8FD0E7DA8FD14FFA8FD %077DA8A87DA87DA87DA87DFD1FFF7DA87DA87DA87DA87DA87DA87DA87DA8 %A8FD1DFFA8A87DA87DA87DA87DA87DA87DA8FD14FFA8A87DA87DA87D7DA8 %FD087DA8FD1DFFA8FD0E7DA8A8FD1FFFA8A8FD0A7DA8FD15FFFD077DA8A8 %7DA87DA87DA87DFD1EFFA87DA87DA87DA87DA87DA87DA87DA87DA8A8FD1D %FFA8A87DA87DA87DA87DA87DA87DA8FD15FFA87DA87DA87DA8FD087DA8FD %1EFFFD137DA8A8FD17FFA8A8FD0F7DFD15FFFD077DA8A87DA87DA87DA8A8 %FD1EFFA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8A8FD15FFA8A8 %7DA87DA87DA87DA87DA87DA87DA87DA8FD15FFA87DA87DA87DA8FD087DA8 %FD1EFFFD177DA8A8FD0FFFA8A8FD127DA8FD15FFFD087DA87DA87DA87D7D %7DFD1DFFA87D7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %A8FD0DFFA8A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DFD16FFA87D %A87DA87DA8FD087DA8FD1DFFA8FD1B7DFD0BFFFD167DA8FD15FFFD087DA8 %7DA87DA87D7DA8FD1DFFA87D7DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA8A8FD09FFA8A87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DFD16FFA87DA87DA87DA8FD087DA8FD1DFFA8FD1B7DA8FD09FF %FD167DA8FD16FFFD087DA87DA87DA87DA8A8FD1DFF7DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FD07FFA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87D7DA8FD16FFA87DA87DA87DA8FD08 %7DA8FD1CFFA8FD1E7DFD07FFFD177DFD17FFFD087DA87DA87DA87DA87DFD %1DFF7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA8A8FD05FFA8A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %FD17FFA87DA87DA87DA8FD087DA8FD1CFFA8FD1E7DA8FD05FFFD177DA8FD %17FFFD077DA8A87DA87DA87D7D7DFD1CFFA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DFD05FF7DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87D7D7DFD18FFA87DA87DA8FD0B7DA8FD1BFF %FD217DFFFFFFFD177DA8FD18FFFD077DA8FF7DA87DA87DA87DFD1CFFA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A8A8FFA8A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8FD18FF %A8A87DA87DA87D7DA8A8FD077DA8FD1BFFFD217DA8FFA8FD167DA8FD18FF %A8FD077DA8FF7DA87DA87DA87DA8FD1BFFA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87D7D7DFD19FFA87D7DA87DA87DA8FFA8FD08 %7DFD1BFFFD397DFD1AFFA8FD077DFFFF7DA87DA87DA87DA8FD1BFFA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DFD1BFF7DA87DA8 %7DA87DA8FFFFA8FD077DA8FD1AFFFD377DFD1BFFA8FD087DFFFFA87D7DA8 %7DA87D7DA8FD1AFFA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DFD1CFFA87DA87DA87DA87DA8FFFFFFFD077DA8FD1AFFFD357DFD1DFF %FD087DA8FFFFFFA87DA87DA87DA87DFD1AFFA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87D7D7DFD1EFFA87DA87DA87DA87DFD04FFA8FD077DA8FD %19FFFD337DFD1EFFA8FD077DA8FD05FF7DA87DA87DA87DA8FD19FFA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA8A8FD1FFF7DA87DA87DA87D7DA8FD %04FFA8FD087DFD19FFFD2F7DA8A8FD1FFFA8FD087DFD06FFA87D7DA87DA8 %7DA8A8FD18FFA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87D7D7DFD22FFA87DA87DA8 %7DA87DA8FD07FFFD077DA8FD18FFA8FD2A7DA8A8FD23FFFD087DA8FD07FF %A87DA87DA87DA87DFD19FF7DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87D7D7DA87DFD25FFA87D7DA87D %A87D7D7DFD08FFFD097DFD17FFA8FD267DA8A8FD26FFA8FD077DA8FD09FF %7DA87DA87DA87DA8A8FD17FF7DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87D7D7DA8A8FD29FF7DA87DA87DA87DA8 %A8FD09FFA8FD077DA8FD16FFA8FD207DA8A8FD2BFFFD097DFD0AFFA87D7D %A87DA87D7D7DFD17FF7DA8FD077DA87D7D7DA87D7D7DA8FD077DA87DA8A8 %FD2FFFA8A87DA87DA87DA87DFD0CFFFD097DFD17FFA8FFA8A87DA87DA87D %A8FD057DA87DA87DFD04A8FFA8FD32FFA8FD087DFD0DFF7DA87DA87DA87D %A8A8FD61FF7DA87DA87DA87D7DA8FD0DFFA8FD077DA8FD60FFFD097DFD0E %FFA87D7DA87DA87DA87DA8FD5EFFA87D7DA87DA87DA87DFD10FFFD097DFD %5DFFA8FD087DA8FD11FF7DA87DA87DA87DA87DFD5CFFA87DA87DA87DA87D %7DA8FD11FFA8FD097DFD5AFFA8FD087DA8FD13FFA87DA87DA87DA87D7DA8 %FD58FFA87DA87DA87DA87D7D7DFD14FFA8FD097DA8FD57FFFD097DA8FD15 %FFA87D7DA87DA87DA87DA8A8FD55FF7DA87DA87DA87DA87DA8FD17FFFD0A %7DA8FD53FFFD097DA8FD19FF7D7D7DA87DA87DA87DA8FD52FF7D7D7DA87D %A87DA87D7DA8FD19FFA8FD097DA8A8FD4FFFFD0A7DA8FD1BFFA87DA87DA8 %7DA87DA87DA8FD4EFF7DA87DA87DA87DA87DA8A8FD1DFFA8FD097DA8FD4C %FFFD0B7DFD1FFFA87DA87DA87DA87DA87DA8FD4AFF7D7D7DA87DA87DA87D %7D7DFD20FFA8FD0B7DA8FD47FFFD0B7DFD23FFA87DA87DA87DA87DA87D7D %A8FD45FF7DA87DA87DA87DA87D7D7DFD24FFA8A8FD0B7DFD42FFA8FD0B7D %FD27FFA87DA87DA87DA87DA87D7D7DFD3FFFA8A87DA87DA87DA87DA87D7D %7DFD28FFA8A8FD0B7DA8A8FD3BFFFD0D7DFD2BFFA87DA87DA87DA87DA87D %A87DA8A8FD39FF7D7D7DA87DA87DA87DA87DA8A8FD2DFFA8FD0D7DFD35FF %A8A8FD0D7DFD2FFFA87DA87DA87DA87DA87DA87D7D7DA8A8FD31FF7D7D7D %A87DA87DA87DA87DA87DA8A8FD32FFFD0F7DA8A8FD2BFFA8A8FD0E7DA8FD %34FFA87D7DA87DA87DA87DA87DA87D7D7DA8A8FD28FFA87DA87DA87DA87D %A87DA87DA87DA87DA8FD37FFA8FD107DA8A8FD21FFA8A8FD117DFD3BFFA8 %7DA87DA87DA87DA87DA87DA87DA87D7D7DA8A8FD1BFFA8A87DA87D7D7DA8 %7DA87DA87DA87DA87DA87DA8A8FD3EFFFD157DFD04A8FD0DFFA8FFA8A87D %A8FD137DA8A8FD40FFA8A87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %7D7DA87DA87DFD09A87DA87DA87D7D7DA87DA87DA87DA87DA87DA87DA87D %A87DA87DFD45FFA8FD377DA8A8FD48FFA8A87D7D7DA87DA87DA87DA87DA8 %7DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA8 %7DA87DA87DA87D7D7DFD4EFFA8FD2E7DA8A8FD52FFA8A87DA87DA87DA87D %A87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87DA87D %A87DA8A8FD57FFA87DA8FD217DA8A8FD5EFFA8A87DA8FD077DA87DA87DA8 %7DA87DA8FD077DFD04A8FD64FFA8FFA8A87DA8FD0B7DA87DFD04A8FD34FF %FF %%EndData endstream endobj 57 0 obj <>stream +HWn8;pLQ/;x'a4-1'(PTo:8^[6Ūs8bJZIJPрRı}Mv&F tZ[(c j G'@4O#:c&(RȻln§Nhb%7hz7Q*G#]]>. *%чCt.Zԓj\Du-xQΩ0UNg"ǜx^> K"gTA+Au,ц>9s'fr_duv\4Wƕ} Ina]J?@ay|:x,qEeW>$P7Oi +.drB2p!<,^&PP>qh[J) kB)`PFG{rt֨s6O#1yn# }տ iJCun8ds`HFEuqlRuUpX?o =܉Ч|=j#Aoۭ qpnz6ְ_[5=uh>|Ka`ť$奭ֻܑA$+i4\yn=L1(inJ| )ԖD܀_xkLR;=w~%f從*~Ttx,WZ%'whcО̞ޓ:K(JK'_D$t`8.T?(1կ)3- +$ֹqbMDoDb'KoT;}Eyu;Ì\NPbO P_ 2΢_C:'BA#;7B2xo%nG;0d;ep[-[ojW +{|s]-e]:}- `g7/7"vsCPfTzHd_>qZñU-{#)Ҟ%~O+__'T7$w{.Nw(Xt`ڣSټ*޳,dqF] sumW0JJv|;F_Qai(25\{y!"7]NhpAD{n ujd +$+1qKHp"D8+{S7ӔBՉ^D4%TR$ɉd ,)*pu#}/;v.("iU0Oؤ !u{ձkG?@Aa*Duc."qձQ(tsJFROW-t5YPD#xqsݾlk6.ոzW'ݓ@ܢ/w9봫#e:tҜL9e`{']lpIBXƦCqͻ <~6qdok," nq+ >3Jxcqo^FtChc5QΛ%+Jc$^cD7:.EWZ:ރ  iP(Я=TX$C#<}yUշw^ƔU?.NѼs2̘ԹԱG#a.7~c76i6+VP''11|Σ:|ӮIhR_NБ5w(&9@XV.9q^T _hK"hT\2r.3=PvbX=10baEoe h1?wA/^)בsP}hXvhJЭ'3%OqԶ"FMi+^sl'7,!G Os׾8s1#U0,d-,1t 9Y qϜ;Z +1aFGl7;زWL1t$a95.fwq'2֓@:QcjeЅiRB}aY +ngeQV{s{(FXU3 (HK9dkfdn+ÑdQvư/a0e^?D<뷟jC[3N|LR ;1cFꅉЫB.R R?됁PnV_6GWh^>y8At5*:U1C ' SCE]X +w +w*$ ),OQتDLjttV/ura* PbgU%B/!u#+qSڵ 1噣1<&1v1婼r &yd|cp2SiJY ˉCOr(UyeCpn9z7o:P79CO *UYB +cdc&?[SBbMDM`́;j&-<&U&G:ܹ*o`|a +N^GʥPHI%#z{ugTxvZzFdIƻoǷ/g+6;M'덵՞k|IaƻΎmrx͵{m>^}6j}4|"3ѝ4l7ȨgVjɂ?ˇB6nntft;mZc{o޾ZqցٺuvoT;k?ڇ6[6کaZkV3n[]m94SћcEßwpOSm60K' 6Wki7mwtY]Y~~ۛ7#]7kN-bҏCѵ߭npSWljyts8Wz\Q, JG5Qcg47gίkNL-X6t2"qU69©`cߦl;BM 9 KS*[)mN/LOI/9Ǵ┖V^&p ֤D_βݚDBP|ime:pEӪ?df+vON}ISa"ŮRT0=)M_!)5(n(ec,IKbFW%>bEQ_WbBHNc2:ɖ+lŒ % 1dGC';K^~JW龜cxL J3o!8Ӵdm8qtXAT v',<3 +} +>?);9Pq*@}rybPF7uy=E禚ǽsF_d)Y +N` + 6n`+MvGTs׬g.VӢB&)Rz-e;F Sl3rU[]'5% 0BXvƆ*1Vb*8A:#JhId#ؘ"i2ث{Xs؞7p-1diW1r v7UPm}n%(~5"0K}?TFy[l=[u|YHwVB㳴Vۻێ %bMSIVy893޴<>$*˺'ևzʉCA@2l*PrKt2F:EĠ8N𙊼eucGq;\*i%BNQQ"C=rn% ?%X +et}2ROSM I46PW! BI⃥@y,Sy#H6Uiy!`[͕_1 T~>M~6Ȍ%"Gad̈́4޿wxpU +x#3NpU'bfJ>AxjK]UFo&G,ƯaKUV< H V +ۊ2GʲW&)؃=̽6)PDled[w^M[Q!TIV⁃\sPxA#k=+435Yb9%Qgⴷ0 <|tG?h6mI'nAa bЮ\`rQVBٜɋ@Pǫ28;W_gcF 2 x3x潟V۶(zpwb SQ*?6wj=Cmxzګc#$1p7hL}jΚTp0)3^n!pQp- O&%0Ǻf9NJr9:b9mzbC %sW4u>(HhpXmqܧR7 ;jB'Ո3a`dEPاbP/o 6Y@ZbYoK30>3ҚBXOE%" j`c?g##{_ WX_ $=;c=S MwT)k{^+Hf IM8h I*N NxWRN^$7O;",̃F\hS|^6o-N 94"VhHwbNqK\)д"4 (ocg844ٟeoݨ(UA V!/N TA=մ(-a `hm:-{#`|)I;̯y;ճXT}L6|WxPsf9 kQӡ{z)W IN-;^,R}9knHpysf(]0b LJlnLu+M^uLRb@k,pq +|VEO>bWzE~Ҋ +n(|p |UNwG1^:+׃3$1#V &פϟ&T}H}:M%♃94Dr 9|/_Y(/5UC9"8jYj8V9 +x'cݾaeF7k Œ ʡWO{K"ov~}Q7D<n5gꫬ‡a1eIaT!i1(0Kj닐)R^~`dN)@6ZPddSWWx;:*ASvɇqqqT-*$;` +Cf]L51][bQt=ڕfTd!GR[? ߏ|7_?0=.~?.*Tl(+ /2de l0/Tqm#J(ҫV-0il˼6aB+Vf{t'Q׉I(ЅZ>*j{$O0_N^8%3"tl|tw)m$7[8D-Gw1Wv)[=ƙ+u  +y;7?tM^j"-E =|u`EMK^U5y4LUX<},s_Lq@Bg}]$(x,]sW&!! Ewf@E}NpF eP Jj҆iD8#v [=^ %a,zxH; IզI?XFEBL|9ǁ_$_$ϐ5|2* ~s25$TQ>R߀pՑh܀& +M-fVMAG\T;ɽmف3bw$f&htA KA&eG8ۿ˜ml9N +ꑸ0̴klinRڞﷶ+_l2.MSOq*>`e{⡅^(06 QFSd{<#1wva " W{M턠]t>|zj $r4 4sCc'C]H08d3nhj +w[vzVV9[*B~f3W`9+S,k?W q/.8EmmAWY?~ k`5O/z10 uY(8=aRhm +B`d6$uSdX.$ais*,?' 0tvI6<>-[#%{O$*RoF!,&B؋3xU%s;=y (wy g]3$pZkCܥ^D%#38U?>Z,O\HTxPeTb)WߊsUx<)v4LCJM7 +;^1~^ONkseWBȪ&Z0J6 61D,a?mȣԊM⨭8bDN꬐,WT9K(2lsHxl@!f7fqMK(W{?F>k~{@MA]>a~Ɩ &'yh +ԃ]It^%;r~6݄C)L ܻk?w=g+r;sx,\%"@ +2/Q[gDd#RHwN!IL_mQ"LM'_CuHzHE :[W=ᅛ&Îq0;7NSƜ8zН̘a8:1VUwGya(%M&x1!I2*ㅣb`$u.;?9ɺlD6\XДꅇlz"4k睡w2suI*ђ&S|04 +(۸903ĘvRI%9+ɦW$H;p Ham_/ / J-{Z1$"֮`srô+Vhs + k1 Vl&6m4gS~HSAp8jZ>7g;]MTEbLA#B4N+OK[M&!OL2׽/+rv.xIW&MH9Q(;)R'L߽-I?b ZS%Ԫ1M7 +2zFj$#JU J{jlϲ9kxۇlR?`agOjTww |\K6j'% ,l~do8J{ѝS6m_t"-K8x \[NB: Z|}<4N n)X] {2pPw읋!; P\r| 5Vao VAA@X/ xMsi%r %NvEūDPsAա8vyJܘ;x;+0,&m Z-&\.EaWQB豭jFfAL"xhci/ ++Lwu:- ZO +tX 6:`"tenWxtٛ1fuQ` Xђ[Ǣ7\-Ÿ́ђWa9CUPS~:;3v꩏@{@.{3WvZ[7[& 4dKҏtCn_;!{G?Wbh늵hf퉺Tu}_žO6x(g.vƂ\op0~Hз+м' ͢B}Խ?C:h>+43١r-V%BQpC%i:D(PisXP$CõF yM4LI6.j2 +y{RQތu#7.'U 4WBo؋>(?khɲjƧLϜC/L-uͧ7tE,C.{$4˷$KAFɝ]LJctRd$ߩ?m/P<>/嬰F@+#rj#03sa$0$Sx]+=-P.u{~W )U?+/4nwC +ӻ3'pvWrX\>M#$5+"Jӆ}@GvPllX !+Q-/WPDө\WM~,^[ro6L4Zd>r~ -Cq!|fյ1a. uY:>%vΑ,7{eī4YwE:N7Cy`_GW|9=We5AY2RdC"<O_uW16 dnd#|i0ջ.v.Y=zv1UoOjLؙQ?1*J}cۿfB;?n+1w\ 1I(DJxiӋd+U<=̯֫Iul6e`ZvqW!<|ܖKS-/.zfs#J~D?=j1ij-yH +&"dXzi@ouL;`cgGYYpBָ$x_Dr?Ygm%M)ȺnbU=ܪ76!=D_E+SHƃJF +IUVp?nfz|dU4P:{ \SP_/;8.֤`YnsM9_@'Ζ7繀_2?D?f)3 XX*]L?%}48pXfM;uLfM~JWY'WV\켕ag@0 ] uttIQ'+њ i@eNh໢I[3 @(04hi(F;d`j;>1eG1LG>ȩXy<ȿJ)K"G>Uc9oebA< k/]ͷtf^@VY"d ]4c^ޠ0S32 Z sΉ.r84焖 +L uB1_ 'ɪ8rqDZ.]n\[ A0i!ct =9S;r GZ;Q1g{*87u6Ya4B5k!aax5ha1g԰yE@5U.QU>ILNLh1>T$TQJH~CNt慰M/`j:v,!Yt\Jx<Z)^Y d\?8dd |ksW* V?ͭ)x gj\tVFk=wd.y)oƔ+H7iqOF;!LJ^hXp͚e3w F|~qGӪV?޹h׾d1NӠ>TlRN[3$m=1 /]-Y|vgA"Dy5 g~J#b\<8}<;~N{"|<ۛB槞ŏ}SFh)2gɣ eEGbrzW_קޣ_ѳH|m?xtẓI4Nq4q?Z (DךO;Iyeoŏ־a{#ѣ]MW{^)wQ,_kE,$ﰙ>E./k0󹐤 A(2n-w$t.%a>(Qⳗuf|o[)A.'g x="Q^Sb)Ņ)7; 5:}^RRڦOK@ \XrX㉓KSqMjr`~l7)‹vGs >?N R3m_5k?su YJ-iԽ,̠,kM2Ǹ_O%HC7향GҼ?]Nƣka +̜fUzWҤKΎIٶ4w1C4U!p68X!uGzܔf9y}ӵ81>{ARzkyq9FK.1ʡ"\8efsQ :2t)>9-59` ē#Q6/M"[?KMׯ$k%$Mjuef aHiZi0'SãSN{2&߉ɛfC-$Xz +~ =y/`0Tvwٱ.;&Sh)'/l)s^؅CGxf`k%K饦:m%;{-s-K\tsz2>b;XOZԓe ?!:urą+}e;#Nt3x`̤BT` +"s^I|d)^3>2sgk9# sOw Su}*\i4o^nh!IIUv'Ƭ{Wj@u)),L +)WvOABdʕ4§eFƹ#ޱᎽ5υ'->hLrr~q$h ֡ˆ~L,7+\܋WHv2uU%,íT`46*|w܏I;mVryC1r'\`zyr6,o֤ZfɚeBu,CV1DmBD)&q'e&CRdѦKKK'`Ckp'-UЕA +y-pZ&ݝߕP"z!G +/ajHmwIҷX*) R~!0o:]?&,3P;Վ~X@}oF9PM_3NrlvR!ek8tD)P`L$9ԙY|h`/b%l哕h}MD Q+Nاi(^"~V$8l=oI4v}o m@p%(JO5}8YlܻGe $2,EJF;R }Eap0 Cfw##P,r<&!ލ~G]a" _(NHrUZڣ` 2hn(|W`>; +9໧ظ&ҭ)A: +^b~lz|װ9G(c^^!Sa>#~DqK=T6xl-2ޏ]o1ey*a RC - +!ɺ7[;յS胏hBW}0߅!Ba*RC*F)7bDICFd.n8T0]T +S!*GiZLuGW_!c=v'e s1r\K4Dž%@_X˥@H*9/ۦT(>p/J\SS{0K&ɱF t8bw߰v^M} .+V_S}q %?>stream +HWBN}<pI*X!R zU nl-9sfJlj:mJlt3,Q8O*GuLOsIv_mȲ~1. =^R$YP%έu 7K|yiM vo`{**~H JR!$ + +IA]pJ~_8-襓*XT WD`=6WBR4d11CExX_;Tc]μNMj +|P ~UnRhb 95dW$3lymu2\#d$G: Y%c(+ TKyV;0j9M)tKLEq) 4ܴQNN1~<@ ),XP' +(|Mxq:]_2;OZF + +zl2CǨaB ]րJY.馛ًlM2j$|.,,1Ĭ& {@~:!ɯaIܚ' 419ajȊSٯ/ E}@ WJ}Xyq7$;)rxH1CAycN~#ˢ ;6+;ӖAj i_ueC^v)ztkusFH=ePߚ` l=x% -h5[ן&]X!$O;;2s|Dq(XFB:c:ً:M{U}GP^{W2Fx]6t2 L('$Rԁ aa힀&DWb J]8[6DXBD`⊧.]+u!Sn u5^ -?] lR4(E d%8 07qa^Dh~!/"r#'we6Z ܕ1뮤#p@ZS$/iD1> 5-~Hj@䲥ޯcZqSW'Refeb=tK|y-1Ė25"R0'vޘR"щзyN`J T} +m+\ :]б+#nΨ.}h[DInFD7Srú Ydj,ԡvT׾+aͳ'T4 ZivJ%4 ƥk0bs*ɞ_w}Gg<Ř: RϨe[Y[]S,j ބq]l17wzh޾A- +!X)d屮WdSgļPƶ۩U.[RSΦ ރ#chb1MZCؑa ;ҿ.!Pt/I|dX2yam\w⻁MG+%fYg45G N |(qc1_e{ݸ(c>\`*#" +ܕ: w%c'iڦ8A* t00xRapa'[w07r%3wKh#FxM +vJW\S;.Ӷ۾>qekL0 hJT`kgbPAZe2 ']z 1]OZTv׫Jr+q#)_ K7BJSt:uJ fm +Ít|{]5y:o 논huW3{8|wE Iac /m0"it4~!ܪwL11t;E]>Yrb::u 0끷9ɾ(tOohM9d3W:vj*i|8}EN]IR(szg:]ͩ$#˧_DU{7ʟɛo80-|6o|-}g2Gt: 3L剳smb(g1'WKD1_v;JTh7WU#R}()%Cv=TI I +¨pÙԭf J|0S Ow2y^9<(%v ٴG N߁/>Ώ(?": )I +T%5r1/`'l/9%  1^tmW6|gg1YӱR;1650ԛ'㈀8W_h(oYŬ]lӻC3 ) r0 dO_efÀe<WN<)P}_c <ɡS!c}YaF5+Exlڻ[NcXPٰH!cmE)1[..C #`#*)7t0X"'&_y~-ȕk, +bKfP0gq\)VPP)Ji+/[j$*rͰiGYfJ?a,psFx# c$-7q9Vv:gRCYJ4" +*ŗS9s@#}9, 4Te>4V_6\=SijbsHo_E3. WXLPX&;Sp*u* h_[U'+)ǍW%kL4VJӱHx~PV:>ѡZ)IO?*zxoZ{5US̾VC[~O%c]VL_\_@a~Ӑa'Odcˊ@'b +R +7ĺrjmU{ ;GKpʏd(" ]R̋کv~e,xs -7[P}1Tݟ^)mU&NQm料AgTyHz, ): +K3 -L8rhQ\ⶑ?CW|:Fs*nsW7ӝмtɉ*2XHaZh\71EgְU@NZǂKCvjZnTJ)h`E Du;"ӻEbVumFXzj>߭Nd3D҃ r]Eb4JMTBvϧWRBEL4z)kMu8JR`wؘJ`M]0FcyE_ŖDN72O|XGԦRS11q]˛%o SV_ȡOnȧXV-)W6g +7(J36t CgGUcEqOOW_kP}_D%֎z U[.=%+ۚNISaakǰ0̟Nv 5Cx,³AzNtOY!3-Pd{8[s}1XY1^ǰ/ 1CيV" 66ܘh*t-ʎ‰ɁW@Fa*ٝcVee.tΖ9x*ecZed;M8fBexrl'-&r@_mg-x#bv bXiyEF`x@u'ՌTf;B XV3x'cQ=8JSq2 Tɀ#+Xd u Ri L ƞYh,6+LSivjٷ` Gx֘Ua* KyTja8 aF;CJ,HC a2R6%˓I*sncpi1y~MwoX Þ$.t5R!<ߨ`jMNvt}F’Ee v~R;@JcꟋWHu+}۽-P?JCELχg&w"xnP1Wˡ_ϝct9 FqJἅgCy)⋄7c=* V8b/*(ﲵg@>.H҇4uSҧ|@=2҇ ++>4C#(S[٥<#\yr|3~! vnydz,.1p8x􊸹O0K3]_!8-I,Yj  MKFN\2şL7[q'1/fڞOo0Z"Zܟjض'칡Ip{B¾sA}! 4|>!NZtR09Q9zi &-BBy_Ѹ%=NA~wꝩ7~;>|;keݓ x9^ G2"˙;oyeOn矵ᢙp-EFSBv]aܳJy3d]+3AM5xgs=gK>^ +OFO'fFc(J&]OiM%Ԗ6Yl<3w?DMb )HY l5T+3WF Mf6zQXc%- c7t@#(Go <.NIE ӹ3~1zr(~ c,p|I,&) OZRVutwa07Z}n6~hf +ǰeY [ +{ +@m6FP61\؇fb_7nZ0 #K-r5v1flq瞱}bc"-[مT; ;~ j[g7FPH9kXYrK! X@ G"^o!'#-I2Rw%xk\' 9t̊/>o@D|9IFEht JUhkJ2orv:j$xnO +pop +Em֨{? T{6H҉;NnHȶ޺ +[MMZHcDPyz͞dȷݘm1'L5ν)`?LPuJP8Pg0^K3*~m#- տhԒܘ~jsm8ކoRրMrG h tу(LƷhQ+Om +LdƵQ3?2괓+sAoE߇#^##=4ݔ#(΍gdJ(&_ۆ)CRښL"h]H"*w9f w>m$e@3Aq7)-uߖ5O0(ןĬ4g t]GV@?ڥ~KYhTmՑVˍlXy.m[AWoyv.g r#n|-o}tl6|uITDF5+^p!AuE9iaK%+fdK-,1t ϲT/5s,eO NP\x\v0Sx\vʿ-<.;?-<.;0Yx\l@Yx.7nL;`Lf򓿩3F"`GPzBt1,GB5]ΠD[4ŽOLL[n&llirm6G5heX=IbѨk2>h!%1] ++tXqgP:SjϺqwk@$ٝ[`7pr*iE %jݐp8=t;卞64Q13U]$rJK 6 /`L?&p1)X“z>,du>;^@]#LBk3 : s몾U +2wOU +X<-7p4ݛ'A?M^lvSVz +NOBܗt2"fX%]pS$L潑Wk EYN&[`jWGg 0p~0 #9-U*3w@bdg&Oj0mpL<kqኦ +6@PknAD4TMlW&R^fBI6Bwa<[]~}َ]QqL Ƹqsn+@c;; Ƹ0~:v1n΀1w[1qz!u\2n:g,ˮL3DLj DԮjvͶ6=x#cJE)c HV]giˢ= $+'y_^~s1)2I 29ŧFXzz5ȊjZ(q]s:Y,I +` b4!#`ɣoAGzun=+N t R$ H[wf4=K&fOy晙=5S[Q +ET)r(] CoX z]P LMg.D@nO&(ew5]ǧׂv"<3ȖiR\W]!+bBtS-ٴl3H?.c rI,&y柦˸5ufY H۷Hl*] 1}oL\IČ1=P-Zb*zpz'{~la?ȴOB YXѕ}u$('aG%9,;O[xLZœlTA!r?񔤸/-}<ِ%=H',}.ȯ\jK"늈Һ.ᾊ] Q@r>Ȯ&c[ACl2O8)پ.6=CWX,TU`sq.0J$cuIBљ_gESd|GdYdDLRN?ϱ)^/wG^C򔐼Ws|P&AU,<80*$EG+G$Tk֨Ϫ#q Ao+(0Wp%JyJ,R%5ct -=ݥ"g&(UJupp]ї#HDer +`O:c4ʜO~T|`xlDixBU QųpƎhN2t<5sܑj~hg[ٚ!*A3agyhZNА,=M] m2ƀe9_% jsR/0ED`6; +.ԭYM$-pnNQABE 'x;D!l־~*Z5Rc<.dNʪ;k./:>H™xs9I~Q-G6"&i5zBw! aMHyƕ$LL ^(H#ΰ9(w[] Eƚyؙ0bՍ^l(%*r0|2uI2-)ؤ9#Y 9P": =F~AP>"{*\m{b2.[ݳH +V|ǪP5.8Wyi.Iv"ٔ*NxH[%3"jKhMxvAq +B=Q]T,4C!m-:![=v^ e ;L +ls`M ;\7ř{r]E"&* ȿULu:t!:y+<}ݭ[SXHԩ +MLţ++ t>\M|JON0A^{҈>O<?=$%RHD\em:f80@").QQ|ݩC +%Hp)ol5/}NɗL3:K*&U-{Y3B Y!`sوO!30AZ4 !k!%mt$ۃ0IԬ P +V%o@O!pXS(ol > W'' +>*fJ JϠDr +P~k*+FWn?PeU/ݘMW7*OU|N] R#Z u|Kw (#b?FCl]A:*owTsG_~b|jw +KTۈ;Z8TZo {g~:=@L{eû>pcs(W11Y: ,lUhگX;6}olX~: | mu"H\^mi$K$}hD#jp5](*ٜ|93!ٳO&3u~uvA:%rqO扙y5S\gLy\mLZ/4667eKUbXsfڋYQ|_JF3vGSUoGWq8&Jdnk~ӧ F1wYx(g)\[HM>hrpq ,&s,}fbzl=\z}S[m&bÕfe!,]mgRNqbdflf oZRpkAZ4x vW';8ve"0_ wrFÕ|US]! >$8Y޿a;_}M%q>nMs6rūa 04T}feۮS~ =t' +W`KXrk6V Lm>1QyqW >O9ía%M^^kζt;U)^W.T`v/p\Jzc)V5B>8Fx^m?S[n?05'RxYh;kkGo|. +'ĠɃtox,)BSuHyo5ɛw.Ͽ|SWce?2 Y_]ߵ9% >EBk|hZmrs6Ũucѻ\Sy8_ﺏߢEZjo7bR4X*F(k~n 4}'"jC.-·5\;Dp6rgvt.^XGZgj+]9gb ~(Y+-c><ז+N0f\rH͝vBq:㕑sw6]=ϑ>R[;$lR#-4YY+&VJMZ`[-m֕ӃpD9.c\pcb.r\24E,mpRyX2r),!X,Ck- A&,Sxf)sLVp眇#gsǜBs^99b'rIs0Z+O4sx$X!?</H.< $/A0^ <\pM9@P0{R[kLX9A9¤`LԆ x✜ A.^e&^t ua*,(n^:uRS"!% +OWdF"ԏw^Nnp:z٨y7A۠=`Mp +{d2_y ++ {F =$*1 iRK1r~0Xl&K K.$YAU샛P>r,fjVSN 棌1ϓά7(MHBK%B(h7E;0j}֪3qDSvJHq!!<ڴ |߭&"`^[L9CH4 zU,ܴnA* ȡ"T[tw6iGnwfq kxUCv+Qֺ~k815(q0Z~%zgj\8A9iCJ+ PDCF-bxZr?/c󋎭L`;tI(O!BJ1ieMrD,z*IA*tZII< A\PYhAAMA:HyQhRpCMc) +ASy?T n=Ǧ;_':r:EQ<5 -a +C(BZkɤ-R vW'mWO?Q~؉O~+ȈN#?VK endstream endobj 5 0 obj <> endobj 25 0 obj [/View/Design] endobj 26 0 obj <>>> endobj 34 0 obj [33 0 R] endobj 59 0 obj <> endobj xref 0 60 0000000004 65535 f +0000000016 00000 n +0000000159 00000 n +0000016706 00000 n +0000000000 00000 f +0000063411 00000 n +0000000000 00000 f +0000016757 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000063481 00000 n +0000063512 00000 n +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000000000 00000 f +0000020437 00000 n +0000063597 00000 n +0000017158 00000 n +0000017316 00000 n +0000020870 00000 n +0000020624 00000 n +0000020747 00000 n +0000018097 00000 n +0000018739 00000 n +0000019249 00000 n +0000019733 00000 n +0000017381 00000 n +0000017536 00000 n +0000017584 00000 n +0000020375 00000 n +0000020138 00000 n +0000020313 00000 n +0000020251 00000 n +0000020076 00000 n +0000020508 00000 n +0000020539 00000 n +0000020944 00000 n +0000021127 00000 n +0000022431 00000 n +0000033714 00000 n +0000050016 00000 n +0000063622 00000 n +trailer <<4EB2C399D71C4705888A21443A38AEB3>]>> startxref 63763 %%EOF \ No newline at end of file -- cgit v1.2.1 From 131167e1d336bcffe3a8ac90e271fa6801fb314f Mon Sep 17 00:00:00 2001 From: Fabian Guerra Date: Fri, 17 Nov 2017 16:43:48 -0500 Subject: [ios] Update changelog and bump podspec to 3.7.0 --- platform/ios/CHANGELOG.md | 1 + platform/ios/Mapbox-iOS-SDK-nightly-dynamic.podspec | 2 +- platform/ios/Mapbox-iOS-SDK-symbols.podspec | 2 +- platform/ios/Mapbox-iOS-SDK.podspec | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/platform/ios/CHANGELOG.md b/platform/ios/CHANGELOG.md index 147567da19..507f5eb079 100644 --- a/platform/ios/CHANGELOG.md +++ b/platform/ios/CHANGELOG.md @@ -18,6 +18,7 @@ Mapbox welcomes participation and contributions from everyone. Please read [CONT * Added `MGLCircleStyleLayer.circlePitchAlignment` and `MGLSymbolStyleLayer.iconPitchAlignment` properties to control whether circles and symbols lie flat against a tilted map. ([#9426](https://github.com/mapbox/mapbox-gl-native/pull/9426), [#9479](https://github.com/mapbox/mapbox-gl-native/pull/9479)) * Added an `MGLSymbolStyleLayer.iconAnchor` property to control where an icon is anchored. ([#9849](https://github.com/mapbox/mapbox-gl-native/pull/9849)) * The `maximumTextWidth` and `textLetterSpacing` properties of `MGLSymbolStyleLayer` are now compatible with `MGLSourceStyleFunction`s and `MGLCompositeStyleFunction`s, allowing data-driven styling of these properties. ([#9870](https://github.com/mapbox/mapbox-gl-native/pull/9870)) +* The `MGLSymbolStyleLayer.textAnchor`, `MGLSymbolStyleLayer.textJustification` and `MGLLineStyleLayer.lineJoin` properties are now compatible with `MGLSourceStyleFunction`s and `MGLCompositeStyleFunction`s, allowing data-driven styling of these properties. ([#9583](https://github.com/mapbox/mapbox-gl-native/pull/9583)) * Improved the legibility of labels that follow lines when the map is tilted. ([#9009](https://github.com/mapbox/mapbox-gl-native/pull/9009)) * Fixed an issue that could cause flickering when a translucent raster style layer was present. ([#9468](https://github.com/mapbox/mapbox-gl-native/pull/9468)) * Fixed an issue that could cause antialiasing between polygons on the same layer to fail if the fill layers used data-driven styling for the fill color. ([#9699](https://github.com/mapbox/mapbox-gl-native/pull/9699)) diff --git a/platform/ios/Mapbox-iOS-SDK-nightly-dynamic.podspec b/platform/ios/Mapbox-iOS-SDK-nightly-dynamic.podspec index a522c8acb5..ac60bc3300 100644 --- a/platform/ios/Mapbox-iOS-SDK-nightly-dynamic.podspec +++ b/platform/ios/Mapbox-iOS-SDK-nightly-dynamic.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |m| - version = '3.7.0-rc.1' + version = '3.7.0' m.name = 'Mapbox-iOS-SDK-nightly-dynamic' m.version = "#{version}-nightly" diff --git a/platform/ios/Mapbox-iOS-SDK-symbols.podspec b/platform/ios/Mapbox-iOS-SDK-symbols.podspec index d6d52a59c8..9151c9b97f 100644 --- a/platform/ios/Mapbox-iOS-SDK-symbols.podspec +++ b/platform/ios/Mapbox-iOS-SDK-symbols.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |m| - version = '3.7.0-rc.1' + version = '3.7.0' m.name = 'Mapbox-iOS-SDK-symbols' m.version = "#{version}-symbols" diff --git a/platform/ios/Mapbox-iOS-SDK.podspec b/platform/ios/Mapbox-iOS-SDK.podspec index 9e06e6a484..fe4f24ad50 100644 --- a/platform/ios/Mapbox-iOS-SDK.podspec +++ b/platform/ios/Mapbox-iOS-SDK.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |m| - version = '3.7.0-rc.1' + version = '3.7.0' m.name = 'Mapbox-iOS-SDK' m.version = version -- cgit v1.2.1 From 1d78c044847ceaf688f615bf7b6e066dac805171 Mon Sep 17 00:00:00 2001 From: Victor Akap Oben Date: Mon, 20 Nov 2017 09:00:05 -0600 Subject: Update comment from onDestroy to onDestroyView (#10501) Updated comment to reflect that MapView's lifecycle callback in a fragment should be called from onDestroyView rather than on onDestroy. This is consistent with that MapFragment is doing. --- .../src/main/java/com/mapbox/mapboxsdk/maps/MapView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java index c025a119b7..de917979ae 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java @@ -401,7 +401,7 @@ public class MapView extends FrameLayout { } /** - * You must call this method from the parent's Activity#onDestroy() or Fragment#onDestroy(). + * You must call this method from the parent's Activity#onDestroy() or Fragment#onDestroyView(). */ @UiThread public void onDestroy() { -- cgit v1.2.1 From a8ad619104a8eba25e7d78604fd08141913d53a7 Mon Sep 17 00:00:00 2001 From: Jason Wray Date: Fri, 17 Nov 2017 16:58:29 -0500 Subject: [build] Set clang-tidy timeout to 20 minutes Default is 10 minutes, but suddenly we're exceeding that. --- circle.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/circle.yml b/circle.yml index 0d1651e01d..75b10850e6 100644 --- a/circle.yml +++ b/circle.yml @@ -187,6 +187,7 @@ jobs: - run: name: Run Clang checks command: make check + no_output_timeout: 20m # ------------------------------------------------------------------------------ android-debug-arm-v7: -- cgit v1.2.1 From 34fe323924896ba7d3a1fc07174c8b528b013f55 Mon Sep 17 00:00:00 2001 From: Jason Wray Date: Fri, 17 Nov 2017 14:07:59 -0500 Subject: [node, build] Don't fail on non-node tags --- platform/node/bitrise.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/platform/node/bitrise.yml b/platform/node/bitrise.yml index fab3093d6e..3cc27008e4 100644 --- a/platform/node/bitrise.yml +++ b/platform/node/bitrise.yml @@ -4,6 +4,8 @@ default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git trigger_map: - tag: "node-v*" workflow: publish +- tag: "*" + workflow: primary - push_branch: "*" workflow: primary - pull_request_target_branch: "*" -- cgit v1.2.1 From 9206e46154f4d3c79ebe3da405fc6b641d336cb9 Mon Sep 17 00:00:00 2001 From: Pablo Guardiola Date: Mon, 20 Nov 2017 20:10:04 +0100 Subject: release android v5.2.0 (#10487) --- platform/android/CHANGELOG.md | 6 +++++- platform/android/MapboxGLAndroidSDK/gradle.properties | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/platform/android/CHANGELOG.md b/platform/android/CHANGELOG.md index 924a05aa85..4d3a82957c 100644 --- a/platform/android/CHANGELOG.md +++ b/platform/android/CHANGELOG.md @@ -2,10 +2,14 @@ Mapbox welcomes participation and contributions from everyone. If you'd like to do so please see the [`Contributing Guide`](https://github.com/mapbox/mapbox-gl-native/blob/master/CONTRIBUTING.md) first to get started. -## 5.2.0 - TBA +## 5.3.0 - TBA * TBA +## 5.2.0 - November 17, 2017 + +- Monkey crashes [#10472](https://github.com/mapbox/mapbox-gl-native/pull/10472) + ## 5.2.0-beta.5 - November 14, 2017 - MapSnapshot attribution [#10362](https://github.com/mapbox/mapbox-gl-native/pull/10362) diff --git a/platform/android/MapboxGLAndroidSDK/gradle.properties b/platform/android/MapboxGLAndroidSDK/gradle.properties index a3dab0eff6..478475766f 100644 --- a/platform/android/MapboxGLAndroidSDK/gradle.properties +++ b/platform/android/MapboxGLAndroidSDK/gradle.properties @@ -1,5 +1,5 @@ GROUP=com.mapbox.mapboxsdk -VERSION_NAME=5.2.0-SNAPSHOT +VERSION_NAME=5.3.0-SNAPSHOT POM_DESCRIPTION=Mapbox GL Android SDK POM_URL=https://github.com/mapbox/mapbox-gl-native -- cgit v1.2.1 From 8f4c07c5b8a0eff9d8047ce6ae030f155359db81 Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Mon, 20 Nov 2017 12:29:51 +0200 Subject: [build] Added CircleCI macos-debug-qt5 job --- circle.yml | 40 +++++++++++++++++++++++++++++++++++++- platform/qt/bitrise-qt4.yml | 36 +++++----------------------------- platform/qt/bitrise-qt5.yml | 47 +++++---------------------------------------- 3 files changed, 49 insertions(+), 74 deletions(-) diff --git a/circle.yml b/circle.yml index 75b10850e6..09421bec9b 100644 --- a/circle.yml +++ b/circle.yml @@ -34,6 +34,7 @@ workflows: #- ios-sanitize-address - ios-sanitize-thread - macos-debug + - macos-debug-qt5 step-library: - &generate-cache-key @@ -119,11 +120,23 @@ step-library: - &install-macos-dependencies run: - name: Install dependencies + name: Install macOS dependencies command: | brew install cmake brew install ccache + - &install-macos-qt-dependencies + run: + name: Install macOS Qt dependencies + command: | + sudo chown -R $USER /usr/local + brew install qt + brew link qt --force + brew linkapps qt + export HOMEBREW_QT5_CELLAR=$(brew --cellar qt) + export HOMEBREW_QT5_VERSION=$(brew list --versions qt | rev | cut -d' ' -f1 | rev) + ln -s $HOMEBREW_QT5_CELLAR/$HOMEBREW_QT5_VERSION/mkspecs /usr/local/mkspecs + ln -s $HOMEBREW_QT5_CELLAR/$HOMEBREW_QT5_VERSION/plugins /usr/local/plugins - &run-node-tests run: @@ -693,3 +706,28 @@ jobs: - store_artifacts: path: test/fixtures destination: test/fixtures + +# ------------------------------------------------------------------------------ + macos-debug-qt5: + macos: + xcode: "9.0" + environment: + BUILDTYPE: Debug + HOMEBREW_NO_AUTO_UPDATE: 1 + steps: + - checkout + - *install-macos-dependencies + - *install-macos-qt-dependencies + - *generate-cache-key + - *restore-cache + - *reset-ccache-stats + - *build-qt-app + - *build-qt-test + - run: + name: Run qt-test + command: make run-qt-test + - *show-ccache-stats + - *save-cache + - store_artifacts: + path: test/fixtures + destination: test/fixtures diff --git a/platform/qt/bitrise-qt4.yml b/platform/qt/bitrise-qt4.yml index d8c7e0788e..4a013ea8b0 100644 --- a/platform/qt/bitrise-qt4.yml +++ b/platform/qt/bitrise-qt4.yml @@ -1,41 +1,15 @@ ---- -format_version: 1.0.0 +format_version: 1.1.0 default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git + trigger_map: - pattern: "*" is_pull_request_allowed: true workflow: primary + workflows: primary: steps: - script: - title: Run build + title: Skip Workflow inputs: - - content: |- - #!/bin/bash - set -eu -o pipefail - brew install cmake - brew install qt - brew link qt - brew linkapps qt - export BUILDTYPE=Debug - make qt-app - make run-qt-test - - is_debug: 'yes' - - slack: - title: Post to Slack - inputs: - - webhook_url: "$SLACK_HOOK_URL" - - channel: "#gl-bots" - - from_username: 'Bitrise Qt4 macOS' - - from_username_on_error: 'Bitrise Qt4 macOS' - - message: '<${BITRISE_BUILD_URL}|Build #${BITRISE_BUILD_NUMBER}> - for - by ${GIT_CLONE_COMMIT_COMMITER_NAME} - passed' - - message_on_error: '<${BITRISE_BUILD_URL}|Build #${BITRISE_BUILD_NUMBER}> - for - by ${GIT_CLONE_COMMIT_COMMITER_NAME} - failed' - - icon_url: https://bitrise-public-content-production.s3.amazonaws.com/slack/bitrise-slack-icon-128.png - - icon_url_on_error: https://bitrise-public-content-production.s3.amazonaws.com/slack/bitrise-slack-error-icon-128.png + - content: echo "This workflow is obsolete — see CircleCi." diff --git a/platform/qt/bitrise-qt5.yml b/platform/qt/bitrise-qt5.yml index 0ce964e43f..4a013ea8b0 100644 --- a/platform/qt/bitrise-qt5.yml +++ b/platform/qt/bitrise-qt5.yml @@ -1,52 +1,15 @@ ---- -format_version: 1.0.0 +format_version: 1.1.0 default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git + trigger_map: - pattern: "*" is_pull_request_allowed: true workflow: primary + workflows: primary: steps: - script: - title: Run build + title: Skip Workflow inputs: - - content: |- - #!/bin/bash - set -eu -o pipefail - sudo chown -R $USER /usr/local - brew install cmake - brew install qt - brew link qt --force - brew linkapps qt - export HOMEBREW_QT5_CELLAR=$(brew --cellar qt) - export HOMEBREW_QT5_VERSION=$(brew list --versions qt | rev | cut -d' ' -f1 | rev) - ln -s $HOMEBREW_QT5_CELLAR/$HOMEBREW_QT5_VERSION/mkspecs /usr/local/mkspecs - ln -s $HOMEBREW_QT5_CELLAR/$HOMEBREW_QT5_VERSION/plugins /usr/local/plugins - export BUILDTYPE=Debug - make qt-app - make run-qt-test - - is_debug: 'yes' - - deploy-to-bitrise-io: - title: Deploy to Bitrise.io - inputs: - - deploy_path: "test/fixtures" - - notify_user_groups: none - - is_compress: 'true' - - slack: - title: Post to Slack - inputs: - - webhook_url: "$SLACK_HOOK_URL" - - channel: "#gl-bots" - - from_username: 'Bitrise Qt5 macOS' - - from_username_on_error: 'Bitrise Qt5 macOS' - - message: '<${BITRISE_BUILD_URL}|Build #${BITRISE_BUILD_NUMBER}> - for - by ${GIT_CLONE_COMMIT_COMMITER_NAME} - passed' - - message_on_error: '<${BITRISE_BUILD_URL}|Build #${BITRISE_BUILD_NUMBER}> - for - by ${GIT_CLONE_COMMIT_COMMITER_NAME} - failed' - - icon_url: https://bitrise-public-content-production.s3.amazonaws.com/slack/bitrise-slack-icon-128.png - - icon_url_on_error: https://bitrise-public-content-production.s3.amazonaws.com/slack/bitrise-slack-error-icon-128.png + - content: echo "This workflow is obsolete — see CircleCi." -- cgit v1.2.1 From bcfe51c16c595e1aef691a34acea7636d82cc7bd Mon Sep 17 00:00:00 2001 From: Jesse Bounds Date: Wed, 22 Nov 2017 10:28:43 -0800 Subject: [ios] Add easy to use demo app for developers (#10524) This updates the package script to include a pre-built iOS app in the published assets of the dynamic SDK. It symlinks the Mapbox.framework in that dynamic build to the demo app so the only real increase in size is the demo Xcode project itself. The addtional step in the publish script checks that the Mapbox.framework that is symlinked in for building in the demo project can actually be built. If it cannot, then the step is skipped and the build will continue as it normally would. Since the demo app is currently not required for publishing it should not block publishing a build. --- platform/ios/scripts/package.sh | 17 + .../MapboxDemo.xcodeproj/project.pbxproj | 366 +++++++++++++++++++++ .../MapboxDemo/MapboxDemo/AppDelegate.swift | 12 + .../AppIcon.appiconset/Contents.json | 98 ++++++ .../MapboxDemo/Assets.xcassets/Contents.json | 6 + .../Assets.xcassets/yose.imageset/Contents.json | 21 ++ .../Screen Shot 2017-11-20 at 1.43.33 PM.png | Bin 0 -> 298453 bytes .../MapboxDemo/Base.lproj/Main.storyboard | 189 +++++++++++ .../MapboxDemo/MapboxDemo/Info.plist | 47 +++ .../MapboxDemo/MapboxDemo/ViewController.swift | 239 ++++++++++++++ .../MapboxDemo/MapboxDemo/data/yose.geojson | 1 + 11 files changed, 996 insertions(+) create mode 100644 platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo.xcodeproj/project.pbxproj create mode 100644 platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/AppDelegate.swift create mode 100644 platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Assets.xcassets/Contents.json create mode 100644 platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Assets.xcassets/yose.imageset/Contents.json create mode 100644 platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Assets.xcassets/yose.imageset/Screen Shot 2017-11-20 at 1.43.33 PM.png create mode 100644 platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Base.lproj/Main.storyboard create mode 100644 platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Info.plist create mode 100644 platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/ViewController.swift create mode 100644 platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/data/yose.geojson diff --git a/platform/ios/scripts/package.sh b/platform/ios/scripts/package.sh index 3a7342034a..0acce9a57f 100755 --- a/platform/ios/scripts/package.sh +++ b/platform/ios/scripts/package.sh @@ -242,6 +242,23 @@ fi if [[ ${BUILD_DYNAMIC} == true && ${BUILD_FOR_DEVICE} == true ]]; then step "Copying bitcode symbol maps…" find "${PRODUCTS}/${BUILDTYPE}-iphoneos" -name '*.bcsymbolmap' -type f -exec cp -pv {} "${OUTPUT}/dynamic/" \; + + step "Copying demo project and sym linking to published framework…" + cp -rv platform/ios/scripts/script_resources/MapboxDemo "${OUTPUT}" + cd "${OUTPUT}/MapboxDemo" + ln -sv "../dynamic/${NAME}.framework" + cd - + + step "Building demo project…" + xcodebuild -quiet -project build/ios/pkg/MapboxDemo/MapboxDemo.xcodeproj -scheme MapboxDemo build ONLY_ACTIVE_ARCH=YES -destination 'platform=iOS Simulator,name=iPhone 7' clean build &> /tmp/iosdemobuildoutput || true + if grep -Fxq "** BUILD FAILED **" /tmp/iosdemobuildoutput + then + echo "Could not build demo project with this version of the SDK." + rm -rf "${OUTPUT}/MapboxDemo" + else + echo "Built and packaged demo project." + fi + rm /tmp/iosdemobuildoutput fi sed -n -e '/^## /,$p' platform/ios/CHANGELOG.md > "${OUTPUT}/CHANGELOG.md" diff --git a/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo.xcodeproj/project.pbxproj b/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo.xcodeproj/project.pbxproj new file mode 100644 index 0000000000..16e059ace7 --- /dev/null +++ b/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo.xcodeproj/project.pbxproj @@ -0,0 +1,366 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 48; + objects = { + +/* Begin PBXBuildFile section */ + 40625C791FB5340B00B90D3E /* Mapbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 40625C781FB5340B00B90D3E /* Mapbox.framework */; }; + 40625C7A1FB5340B00B90D3E /* Mapbox.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 40625C781FB5340B00B90D3E /* Mapbox.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 40625C9B1FBA59B800B90D3E /* yose.geojson in Resources */ = {isa = PBXBuildFile; fileRef = 40625C9A1FBA59B800B90D3E /* yose.geojson */; }; + 40B9C65E1FB380E3002B6532 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40B9C65D1FB380E3002B6532 /* AppDelegate.swift */; }; + 40B9C6601FB380E3002B6532 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40B9C65F1FB380E3002B6532 /* ViewController.swift */; }; + 40B9C6631FB380E3002B6532 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 40B9C6611FB380E3002B6532 /* Main.storyboard */; }; + 40B9C6651FB380E3002B6532 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 40B9C6641FB380E3002B6532 /* Assets.xcassets */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 40B9C6721FB3810B002B6532 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 40625C7A1FB5340B00B90D3E /* Mapbox.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 40625C6F1FB5336D00B90D3E /* MapboxDemo.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = MapboxDemo.xcodeproj; sourceTree = ""; }; + 40625C781FB5340B00B90D3E /* Mapbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Mapbox.framework; path = ../dynamic/Mapbox.framework; sourceTree = ""; }; + 40625C9A1FBA59B800B90D3E /* yose.geojson */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = yose.geojson; path = MapboxDemo/data/yose.geojson; sourceTree = SOURCE_ROOT; }; + 40B9C65A1FB380E3002B6532 /* MapboxDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MapboxDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 40B9C65D1FB380E3002B6532 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 40B9C65F1FB380E3002B6532 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 40B9C6621FB380E3002B6532 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 40B9C6641FB380E3002B6532 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 40B9C6691FB380E3002B6532 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 40B9C6571FB380E3002B6532 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 40625C791FB5340B00B90D3E /* Mapbox.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 40625C701FB5336D00B90D3E /* Products */ = { + isa = PBXGroup; + name = Products; + sourceTree = ""; + }; + 40625C9C1FBA59C300B90D3E /* data */ = { + isa = PBXGroup; + children = ( + 40625C9A1FBA59B800B90D3E /* yose.geojson */, + ); + path = data; + sourceTree = ""; + }; + 40B9C6511FB380E3002B6532 = { + isa = PBXGroup; + children = ( + 40625C781FB5340B00B90D3E /* Mapbox.framework */, + 40625C6F1FB5336D00B90D3E /* MapboxDemo.xcodeproj */, + 40B9C65C1FB380E3002B6532 /* MapboxDemo */, + 40B9C65B1FB380E3002B6532 /* Products */, + ); + sourceTree = ""; + }; + 40B9C65B1FB380E3002B6532 /* Products */ = { + isa = PBXGroup; + children = ( + 40B9C65A1FB380E3002B6532 /* MapboxDemo.app */, + ); + name = Products; + sourceTree = ""; + }; + 40B9C65C1FB380E3002B6532 /* MapboxDemo */ = { + isa = PBXGroup; + children = ( + 40625C9C1FBA59C300B90D3E /* data */, + 40B9C65D1FB380E3002B6532 /* AppDelegate.swift */, + 40B9C65F1FB380E3002B6532 /* ViewController.swift */, + 40B9C6611FB380E3002B6532 /* Main.storyboard */, + 40B9C6641FB380E3002B6532 /* Assets.xcassets */, + 40B9C6691FB380E3002B6532 /* Info.plist */, + ); + path = MapboxDemo; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 40B9C6591FB380E3002B6532 /* MapboxDemo */ = { + isa = PBXNativeTarget; + buildConfigurationList = 40B9C66C1FB380E3002B6532 /* Build configuration list for PBXNativeTarget "MapboxDemo" */; + buildPhases = ( + 40B9C6561FB380E3002B6532 /* Sources */, + 40B9C6571FB380E3002B6532 /* Frameworks */, + 40B9C6581FB380E3002B6532 /* Resources */, + 40B9C6721FB3810B002B6532 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = MapboxDemo; + productName = MapboxDemo; + productReference = 40B9C65A1FB380E3002B6532 /* MapboxDemo.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 40B9C6521FB380E3002B6532 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0910; + LastUpgradeCheck = 0910; + ORGANIZATIONNAME = Mapbox; + TargetAttributes = { + 40B9C6591FB380E3002B6532 = { + CreatedOnToolsVersion = 9.1; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 40B9C6551FB380E3002B6532 /* Build configuration list for PBXProject "MapboxDemo" */; + compatibilityVersion = "Xcode 8.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 40B9C6511FB380E3002B6532; + productRefGroup = 40B9C65B1FB380E3002B6532 /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 40625C701FB5336D00B90D3E /* Products */; + ProjectRef = 40625C6F1FB5336D00B90D3E /* MapboxDemo.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 40B9C6591FB380E3002B6532 /* MapboxDemo */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 40B9C6581FB380E3002B6532 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 40B9C6651FB380E3002B6532 /* Assets.xcassets in Resources */, + 40B9C6631FB380E3002B6532 /* Main.storyboard in Resources */, + 40625C9B1FBA59B800B90D3E /* yose.geojson in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 40B9C6561FB380E3002B6532 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 40B9C6601FB380E3002B6532 /* ViewController.swift in Sources */, + 40B9C65E1FB380E3002B6532 /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 40B9C6611FB380E3002B6532 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 40B9C6621FB380E3002B6532 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 40B9C66A1FB380E3002B6532 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.1; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 40B9C66B1FB380E3002B6532 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.1; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 40B9C66D1FB380E3002B6532 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Manual; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)", + ); + INFOPLIST_FILE = MapboxDemo/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.MapboxMapsSDKDemoiOS; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 40B9C66E1FB380E3002B6532 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Manual; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)", + ); + INFOPLIST_FILE = MapboxDemo/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.mapbox.MapboxMapsSDKDemoiOS; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 40B9C6551FB380E3002B6532 /* Build configuration list for PBXProject "MapboxDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 40B9C66A1FB380E3002B6532 /* Debug */, + 40B9C66B1FB380E3002B6532 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 40B9C66C1FB380E3002B6532 /* Build configuration list for PBXNativeTarget "MapboxDemo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 40B9C66D1FB380E3002B6532 /* Debug */, + 40B9C66E1FB380E3002B6532 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 40B9C6521FB380E3002B6532 /* Project object */; +} diff --git a/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/AppDelegate.swift b/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/AppDelegate.swift new file mode 100644 index 0000000000..aa67cf5cf8 --- /dev/null +++ b/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/AppDelegate.swift @@ -0,0 +1,12 @@ +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { + return true + } + +} diff --git a/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Assets.xcassets/AppIcon.appiconset/Contents.json b/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000000..d8db8d65fd --- /dev/null +++ b/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Assets.xcassets/Contents.json b/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Assets.xcassets/Contents.json new file mode 100644 index 0000000000..da4a164c91 --- /dev/null +++ b/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Assets.xcassets/yose.imageset/Contents.json b/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Assets.xcassets/yose.imageset/Contents.json new file mode 100644 index 0000000000..6e793ce10f --- /dev/null +++ b/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Assets.xcassets/yose.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "Screen Shot 2017-11-20 at 1.43.33 PM.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Assets.xcassets/yose.imageset/Screen Shot 2017-11-20 at 1.43.33 PM.png b/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Assets.xcassets/yose.imageset/Screen Shot 2017-11-20 at 1.43.33 PM.png new file mode 100644 index 0000000000..e5badda22c Binary files /dev/null and b/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Assets.xcassets/yose.imageset/Screen Shot 2017-11-20 at 1.43.33 PM.png differ diff --git a/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Base.lproj/Main.storyboard b/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Base.lproj/Main.storyboard new file mode 100644 index 0000000000..9caacf9d02 --- /dev/null +++ b/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Base.lproj/Main.storyboard @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Info.plist b/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Info.plist new file mode 100644 index 0000000000..46d889c341 --- /dev/null +++ b/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/Info.plist @@ -0,0 +1,47 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + MGLMapboxAccessToken + pk.eyJ1IjoibWFwYm94IiwiYSI6ImNqYThuNnZ3NTA5MGMyd3F1cmF1eW1xaGEifQ.TdBTSHHPeT1pfLZ_6x_1vA + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/ViewController.swift b/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/ViewController.swift new file mode 100644 index 0000000000..34bbcb7666 --- /dev/null +++ b/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/ViewController.swift @@ -0,0 +1,239 @@ +import UIKit +import Mapbox + +/* + A simple example that uses the Mapbox Outdoors style to view + Yosemite National Park, USA with a polygon visualization of the + park boundary that can be interacted with. + + A demo access token has been provided for convenience and it may + stop working in the future. + + You can obtain your own access token from the + [Mapbox account page](https://www.mapbox.com/studio/account/tokens/) + and add it to this application's Info.plist as the value for + MGLMapboxAccessToken + */ +class ViewController: UIViewController { + + @IBOutlet weak var mapViewContainer: UIView! + @IBOutlet weak var annotationContextView: UIView! + @IBOutlet weak var accessTokenWarningView: UIView! + + var mapView: MGLMapView! + + // Define a name for our annotation + let annotationIdentifier = "yosemite-fill-layer" + + // Define the name of the map label layer we will want our annotation to be placed under + let styleLabelLayer = "mountain-peak-label" + + // The initial center geometric coordinate for the map to display - this is Yosemite National Park, USA + let centerCoordinate = CLLocationCoordinate2DMake(37.742241, -119.576923) + + // MARK: - View controller life cycle + + override func viewDidLoad() { + super.viewDidLoad() + + setupAnnotationContextView() + setupAndAddMapView() + setupGestureHandling() + } + + // MARK: - Map object interaction + + @objc func didTapMap(sender: UITapGestureRecognizer) { + + // Search for annotation at tap point + // If the annotation is found at the tap point then modify some of its properties + // If the annotation is not found at the tap point, reset the annotation back to the way it was when originally added + if let layer = mapView.style?.layer(withIdentifier: annotationIdentifier) as? MGLFillExtrusionStyleLayer { + let point = sender.location(in: mapView) + let features = mapView.visibleFeatures(at: point, styleLayerIdentifiers: [annotationIdentifier]) + if features.count > 0 { + layer.fillExtrusionOpacity = MGLStyleValue(rawValue: 0.9) + layer.fillExtrusionHeight = MGLStyleValue(rawValue: 5000) + let camera = MGLMapCamera(lookingAtCenter: centerCoordinate, fromDistance: 100000, pitch: 60, heading: 180) + mapView.fly(to: camera, withDuration: 8, completionHandler: nil) + annotationContextView.alpha = 1.0 + } else { + layer.fillExtrusionOpacity = MGLStyleValue(rawValue: 0.5) + layer.fillExtrusionHeight = MGLStyleValue(rawValue: 0) + let camera = MGLMapCamera(lookingAtCenter: centerCoordinate, fromDistance: 100000, pitch: 60, heading: 0) + mapView.fly(to: camera, withDuration: 1, completionHandler: nil) + annotationContextView.alpha = 0 + } + } + } + + // MARK: - Initialization and setup + + /* + Simple (but somewhat styled) stub of a view to present + contextual information about tapped objects on the map. + */ + fileprivate func setupAnnotationContextView() { + annotationContextView.alpha = 0 + let blurView = UIVisualEffectView(effect: UIBlurEffect(style: .light)) + blurView.frame = annotationContextView.bounds + blurView.layer.cornerRadius = 5 + blurView.clipsToBounds = true + blurView.translatesAutoresizingMaskIntoConstraints = false + annotationContextView.insertSubview(blurView, at: 0) + blurView.topAnchor.constraint(equalTo: annotationContextView.topAnchor).isActive = true + blurView.leftAnchor.constraint(equalTo: annotationContextView.leftAnchor).isActive = true + blurView.rightAnchor.constraint(equalTo: annotationContextView.rightAnchor).isActive = true + blurView.bottomAnchor.constraint(equalTo: annotationContextView.bottomAnchor).isActive = true + } + + /* + Create and add a Mapbox map view to the the view + intended to contain it. Setup with the style, initial + location in the world, and make this object the delegate + of the map. Finally, set up a camera to control how the + user will view the map initially. + */ + fileprivate func setupAndAddMapView() { + mapView = MGLMapView(frame: mapViewContainer.bounds) + mapView.autoresizingMask = [.flexibleHeight, .flexibleWidth] + mapView.styleURL = MGLStyle.outdoorsStyleURL(withVersion: 10) + mapView.setCenter(centerCoordinate, zoomLevel: 10, animated: false) + mapView.delegate = self + mapViewContainer.addSubview(mapView) + + accessTokenWarningView.layer.cornerRadius = 5 + accessTokenWarningView.isHidden = true + + // This demo access token has been provided for convenience and it may + // stop working in the future. + // You can obtain your own access token from the + // [Mapbox account page](https://www.mapbox.com/studio/account/tokens/) + // and add it to this application's Info.plist as the value for MGLMapboxAccessToken + if MGLAccountManager.accessToken() == "pk.eyJ1IjoibWFwYm94IiwiYSI6ImNqYThuNnZ3NTA5MGMyd3F1cmF1eW1xaGEifQ.TdBTSHHPeT1pfLZ_6x_1vA" { + accessTokenWarningView.isHidden = false + } + + let camera = MGLMapCamera(lookingAtCenter: centerCoordinate, fromDistance: 100000, pitch: 60, heading: 0) + mapView.setCamera(camera, animated: false) + } + + /* + Add a gesture recognizer that will be used to handle user + interactions with the map. + */ + fileprivate func setupGestureHandling() { + let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(didTapMap)) + mapView.addGestureRecognizer(tapGestureRecognizer) + } +} + +/* + Implementation of Mapbox map view delegate methods relevant to this application + */ +extension ViewController: MGLMapViewDelegate { + + /* + When the map has finished loading the style it's a great time + to do work like adding annotations. + */ + func mapView(_ mapView: MGLMapView, didFinishLoading style: MGLStyle) { + // This project's bundle contains a geojson file that represents the park boundary of Yosemite National Park in the USA + let url = URL(fileURLWithPath: Bundle.main.path(forResource: "yose", ofType: "geojson")!) + + // Create an instance of a structure to represent a polygon + // fill visualization that can be injeced into the map's style layers + var annotation = StyledAnnotation(identifier: annotationIdentifier, resource: url, type: .extrusion) + annotation.color = UIColor(red:1.00, green:0.95, blue:0.75, alpha:1.0) + annotation.opacity = 0.75 + annotation.transitionDuration = 0.35 + + // Inject the annotation below the label layer so some map labels + // are still visible + mapView.addStyledAnnotation(annotation, belowLayer: styleLabelLayer) + + // Alternatively, a more traditional annotation / marker API + let pointFeatureAnnotation = MGLPointFeature() + let offsetCoordinate = CLLocationCoordinate2D(latitude: centerCoordinate.latitude+0.1, longitude: centerCoordinate.longitude-0.01) + pointFeatureAnnotation.coordinate = offsetCoordinate + mapView.addAnnotation(pointFeatureAnnotation) + } + +} + +/* + An extention of the Mapbox map view class that offers a simplified + API for a small subset of the runtime styling APIs used in this application. + This could be extended. + */ +extension MGLMapView { + + func addStyledAnnotation(_ annotation: StyledAnnotation, belowLayer layerName: String) { + if let labelsLayer = self.style?.layer(withIdentifier: "mountain-peak-label") { + let source = addSource(for: annotation) + let layer = addLayer(for: annotation, source: source) + self.style?.insertLayer(layer, below: labelsLayer) + } + } + + func addStyledAnnotation(_ annotation: StyledAnnotation) { + let source = addSource(for: annotation) + let layer = addLayer(for: annotation, source: source) + self.style?.addLayer(layer) + } + + func addSource(for styledAnnotation: StyledAnnotation) -> MGLSource { + let source = MGLShapeSource(identifier: UUID().uuidString, url: styledAnnotation.resource, options: nil) + self.style?.addSource(source) + return source + } + + func addLayer(for styledAnnotation: StyledAnnotation, source: MGLSource) -> MGLStyleLayer { + switch styledAnnotation.type { + case .extrusion: + let layer = MGLFillExtrusionStyleLayer(identifier: styledAnnotation.identifier, source: source) + if let height = styledAnnotation.height { + layer.fillExtrusionHeight = MGLStyleValue(rawValue: NSNumber(floatLiteral: Double(height))) + } + if let color = styledAnnotation.color { + layer.fillExtrusionColor = MGLStyleValue(rawValue: color) + } + if let opacity = styledAnnotation.opacity { + layer.fillExtrusionOpacity = MGLStyleValue(rawValue: NSNumber(floatLiteral: Double(opacity))) + } + if let duration = styledAnnotation.transitionDuration { + layer.fillExtrusionHeightTransition = MGLTransitionMake(Double(duration), 0) + layer.fillExtrusionOpacityTransition = MGLTransitionMake(Double(duration), 0) + } + return layer + } + } + +} + +/* + A struct to represent a small subset of the annotations that + are possible to add to a Mapbox map. This could be extended. + */ +struct StyledAnnotation { + + enum StyledAnnotationType { + case extrusion + } + + init(identifier: String, resource: URL, type: StyledAnnotationType) { + self.identifier = identifier + self.resource = resource + self.type = type + } + + var identifier: String + var resource: URL + var type: StyledAnnotationType + + var height: Float? + var color: UIColor? + var opacity: Float? + var transitionDuration: Float? + +} diff --git a/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/data/yose.geojson b/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/data/yose.geojson new file mode 100644 index 0000000000..f016ca240f --- /dev/null +++ b/platform/ios/scripts/script_resources/MapboxDemo/MapboxDemo/data/yose.geojson @@ -0,0 +1 @@ +{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[-119.6958770217986,37.60988100501796],[-119.69620637800108,37.61387534285646],[-119.70435119817648,37.61393205716475],[-119.70453536276064,37.62191732074585],[-119.704557157325,37.62286220578499],[-119.6961213772083,37.622814992565075],[-119.6960915703477,37.62908790725655],[-119.70450547277761,37.62916691269313],[-119.72302281936393,37.629338668491016],[-119.72293001552805,37.633494099311946],[-119.72285035772099,37.63706052504478],[-119.7227001306213,37.64395640546974],[-119.71378097003503,37.643931842828664],[-119.71377343578911,37.654746459710736],[-119.71588791979882,37.65479709633237],[-119.71603140668772,37.658633873853724],[-119.71812533680372,37.6586361820479],[-119.75904086620407,37.658673809697675],[-119.75912954388988,37.65990581751325],[-119.7592706531156,37.66186617717078],[-119.7595348185152,37.66553581485243],[-119.75969045987938,37.67006069189628],[-119.76000127225676,37.679095115226545],[-119.76002099100232,37.68770197359184],[-119.7616413475007,37.68774529276704],[-119.76179033137457,37.68964577744604],[-119.76304947996348,37.689620338084204],[-119.76306390615937,37.69036193031185],[-119.76543465166267,37.690301748467135],[-119.76553864898509,37.69676752627665],[-119.76658776406676,37.69677406406548],[-119.76673886408311,37.69847459930377],[-119.76980169921183,37.698560278906285],[-119.7699748860843,37.70229379304012],[-119.76376300116465,37.70232177843931],[-119.76384060022963,37.69872312254282],[-119.76002557215182,37.698565834152085],[-119.76002572551185,37.702454521562274],[-119.76002596388842,37.70849812625453],[-119.77823713483696,37.708478779575096],[-119.77815847630816,37.72352597717673],[-119.77807819456663,37.738382712190834],[-119.79667905250412,37.738414291399025],[-119.80635423548478,37.73848427008996],[-119.81500893103065,37.7385461945924],[-119.8246281899394,37.73831803599111],[-119.82463168804544,37.73831795287667],[-119.83428097684931,37.738088291413916],[-119.85283037293061,37.73906804026692],[-119.85280798193749,37.74244667711781],[-119.85273200945365,37.75390806503102],[-119.85267388601211,37.757479350593144],[-119.85267226979104,37.757578651321495],[-119.85255959721658,37.75839755836345],[-119.85247078881096,37.76064973746678],[-119.85695203161589,37.76068553285457],[-119.86142729649603,37.76072111044132],[-119.86143216972096,37.764394895449655],[-119.86143213104512,37.76452759207086],[-119.86143739552499,37.76833407350216],[-119.8613780913359,37.76878609452542],[-119.86137654829378,37.768965590030774],[-119.86139241572161,37.769231195114976],[-119.86146418101548,37.769534927021844],[-119.86150143219108,37.769842537204184],[-119.86154598649675,37.77165069990197],[-119.86152776515902,37.77220053536986],[-119.86152749156076,37.77275056094873],[-119.86154516628413,37.77330040755764],[-119.86152876344379,37.77352989699091],[-119.86150340990099,37.77375887277847],[-119.86146912992206,37.77398711501744],[-119.86142595634688,37.774214404507376],[-119.86136212126411,37.7744827579244],[-119.8612877837902,37.774749402408666],[-119.86120301598982,37.77501407906426],[-119.86119230446722,37.77506340606285],[-119.86118367165447,37.77511298919988],[-119.86117712716226,37.77516277329965],[-119.86117267827748,37.77521270296258],[-119.86117032995506,37.77526272262709],[-119.86117008481249,37.77531277663131],[-119.86117194312675,37.77536280927507],[-119.8611759028342,37.775412764881786],[-119.86118195953264,37.77546258786055],[-119.86119010648639,37.77551222276792],[-119.8612003346336,37.775561614369664],[-119.86121263259635,37.77561070770216],[-119.8612269866934,37.775659448133545],[-119.86124338095527,37.77570778142467],[-119.86126179714206,37.7757556537893],[-119.86128221476375,37.775803011954],[-119.86130461110294,37.77584980321751],[-119.86132896124005,37.775895975509314],[-119.8613552380812,37.77594147744754],[-119.86138073531171,37.77598197323246],[-119.86140794991,37.77602175860459],[-119.86143685050338,37.776060787695876],[-119.86146740377525,37.77609901551001],[-119.86149957450357,37.77613639797451],[-119.86153332560124,37.77617289199133],[-119.86156861815911,37.77620845548673],[-119.86160541149063,37.77624304745966],[-119.8616436631789,37.77627662802906],[-119.86168332912547,37.776309158479926],[-119.86172436360118,37.77634060130782],[-119.86176671929898,37.77637092026223],[-119.86181034738833,37.77640008038828],[-119.86185519757164,37.7764280480671],[-119.86190121814207,37.77645479105457],[-119.86194835604334,37.77648027851842],[-119.86199655693085,37.77650448107398],[-119.8620457652342,37.77652737081782],[-119.86209592422145,37.776548921360096],[-119.86214697606441,37.77656910785491],[-119.8621988619054,37.77658790702896],[-119.862251521925,37.77660529720841],[-119.862574847549,37.776691508354965],[-119.86290160745749,37.77676913540925],[-119.86323143998929,37.77683809245083],[-119.86356398007906,37.77689830315527],[-119.86366123581294,37.77690727614567],[-119.86375806322884,37.77691880386198],[-119.86385435584047,37.77693287362648],[-119.86395000774954,37.77694946996593],[-119.86404491376203,37.776968574628434],[-119.86413896950415,37.77699016660355],[-119.8642320715369,37.77701422214537],[-119.86432411746982,37.777040714798645],[-119.86441500607356,37.77706961542787],[-119.86450463739132,37.77710089224934],[-119.86459291284852,37.77713451086599],[-119.86467973536145,37.77717043430541],[-119.86476500944374,37.777208623060275],[-119.86484864131164,37.77724903513193],[-119.8649305389869,37.77729162607652],[-119.86501061239811,37.77733634905388],[-119.86505543814066,37.777367295249974],[-119.86509892655727,37.77739942115891],[-119.86514102839041,37.77743269039434],[-119.86518169595293,37.777467065274855],[-119.86522088318182,37.77750250686674],[-119.86525854569062,37.77753897502804],[-119.86529464081966,37.777576428454054],[-119.86532912768419,37.77761482472401],[-119.86536196722095,37.777654120349304],[-119.86539312223233,37.77769427082249],[-119.8654225574284,37.77773523066791],[-119.86545023946707,37.777776953493074],[-119.86547613699166,37.777819392041295],[-119.86550022066668,37.77786249824506],[-119.8655224632108,37.77790622328064],[-119.86554283942797,37.777950517623275],[-119.86556132623586,37.777995331103284],[-119.86557790269204,37.77804061296296],[-119.86559255001775,37.77808631191391],[-119.86560525161916,37.77813237619527],[-119.8656159931061,37.77817875363234],[-119.86562476230857,37.77822539169551],[-119.86563154929037,37.77827223756002],[-119.86563634636039,37.77831923816548],[-119.86591562891591,37.779462248231596],[-119.86593683248155,37.77951125264185],[-119.86596018508007,37.77955963768106],[-119.86598565807142,37.77960734400041],[-119.8660132202146,37.77965431308345],[-119.86604283770579,37.77970048731793],[-119.86607447421991,37.779745810066515],[-119.8661080909552,37.779790225736114],[-119.8661436466806,37.77983367984619],[-119.8661810977865,37.779876119095604],[-119.86622039833826,37.77991749142792],[-119.8662615001323,37.779957746095334],[-119.86630435275544,37.77999683372091],[-119.86634890364667,37.780034706359096],[-119.86639509816158,37.780071317554665],[-119.86644287963942,37.780106622399586],[-119.86649218947258,37.78014057758815],[-119.86654296717848,37.78017314147018],[-119.86659515047377,37.78020427410195],[-119.86664867535072,37.78023393729537],[-119.86670347615572,37.78026209466474],[-119.86675948566989,37.78028871167142],[-119.86681663519143,37.78031375566612],[-119.86687485461998,37.78033719592911],[-119.86693407254262,37.78035900370778],[-119.86699421632133,37.78037915225197],[-119.86705521218236,37.78039761684674],[-119.8671169853065,37.780414374842785],[-119.86722773933617,37.78044783816142],[-119.86733694929987,37.780484358773805],[-119.86744448127611,37.780523891896316],[-119.86755020340043,37.780566389051195],[-119.86765398602707,37.78061179812592],[-119.86775570188794,37.7806600634371],[-119.86785522624857,37.78071112579878],[-119.86795243706118,37.780764922594884],[-119.86804721511416,37.78082138785613],[-119.86813944417837,37.780880452340774],[-119.86822901114965,37.78094204361958],[-119.86831580618747,37.7810060861646],[-119.86839972284957,37.78107250144173],[-119.86846958230811,37.781137062451016],[-119.86853667135094,37.78120344866079],[-119.86860091432348,37.78127158521643],[-119.86866223877969,37.78134139528952],[-119.86872057556378,37.78141280016442],[-119.86877585888817,37.78148571932699],[-119.86882802640775,37.781560070555386],[-119.8688770192901,37.7816357700128],[-119.86892278228204,37.781712732341866],[-119.86896526377177,37.78179087076107],[-119.86900441584724,37.78187009716235],[-119.86904019435023,37.78195032221065],[-119.86907255892602,37.78203145544456],[-119.86910147306915,37.78211340537829],[-119.86912690416445,37.78219607960484],[-119.86914023058777,37.782245304102034],[-119.8691557157695,37.782294129015966],[-119.86917334080594,37.78234249473003],[-119.86919308418054,37.782390342188116],[-119.86921492179003,37.782437612966866],[-119.86923882697384,37.78248424934689],[-119.8692647705467,37.782530194383426],[-119.86929272083417,37.78257539197566],[-119.86932264371136,37.782619786935385],[-119.86935450264457,37.782663325054344],[-119.86938825873588,37.78270595317041],[-119.86942387077065,37.78274761923256],[-119.8694612952678,37.782788272364364],[-119.86950048653291,37.78282786292617],[-119.86954139671406,37.78286634257571],[-119.86958397586018,37.78290366432709],[-119.86962817198201,37.78293978260826],[-119.86967393111571,37.78297465331657],[-119.8697211973886,37.78300823387273],[-119.86976991308748,37.78304048327266],[-119.86982001872911,37.78307136213777],[-119.86987145313273,37.78310083276281],[-119.86992415349489,37.78312885916216],[-119.86997805546612,37.7831554071136],[-119.8700330932294,37.783180444200134],[-119.8704566902497,37.783369592387636],[-119.87088719754918,37.78354864515846],[-119.8710913097609,37.783669378516535],[-119.87128993275908,37.78379574753],[-119.87148281961923,37.783927595117],[-119.87166973054319,37.78406475738474],[-119.87185043315742,37.78420706383313],[-119.87202470280174,37.78435433756661],[-119.8721923228087,37.78450639551388],[-119.87235308477297,37.78466304865547],[-119.87382098567396,37.7858865329194],[-119.87416722094682,37.786195271400395],[-119.87450288280357,37.786511279697066],[-119.87482772889153,37.78683432977407],[-119.87544823563206,37.787487524905764],[-119.87605173858292,37.788150681288116],[-119.87609753335855,37.788192631448446],[-119.87614150644215,37.78823579173508],[-119.87618360709358,37.7882801123489],[-119.87622378673292,37.78832554215187],[-119.87626199899643,37.78837202872611],[-119.8762981997902,37.78841951843424],[-119.87633234734086,37.78846795648139],[-119.87636440224401,37.78851728697837],[-119.87639432750952,37.788567453006124],[-119.87642208860422,37.7886183966814],[-119.87644765349198,37.7886700592236],[-119.8764709926704,37.788722381022524],[-119.87649207920515,37.788775301707176],[-119.87651088876078,37.78882876021539],[-119.87652739962907,37.78888269486433],[-119.87654159275395,37.78893704342164],[-119.87655345175361,37.78899174317725],[-119.87656296293933,37.78904673101567],[-119.87657011533136,37.789101943488916],[-119.8765749006716,37.78915731688964],[-119.87657731343313,37.78921278732472],[-119.87657735082664,37.789268290788876],[-119.87657501280363,37.789323763238535],[-119.87657030205659,37.78937914066588],[-119.8765632240158,37.7894343591725],[-119.87655378684313,37.789489355043294],[-119.87654200142272,37.78954406481986],[-119.87652788134832,37.789598425373754],[-119.87651144290768,37.789652373979436],[-119.87649270506382,37.789705848386504],[-119.87646339803167,37.78975257721216],[-119.8764320730343,37.78979847413335],[-119.87639876751133,37.789843484288724],[-119.87636352127001,37.78988755387668],[-119.87632637643758,37.78993063021986],[-119.87628737741088,37.789972661828074],[-119.87624657080343,37.790013598459794],[-119.8762040053896,37.790053391182354],[-119.87615973204636,37.790091992430234],[-119.8761138036925,37.790129356062174],[-119.8760662752253,37.7901654374161],[-119.87601720345496,37.79020019336273],[-119.87596664703678,37.79023358235693],[-119.87591466640086,37.790265564487534],[-119.87586132368003,37.79029610152502],[-119.87580668263551,37.79032515696717],[-119.87575080858065,37.79035269608274],[-119.87569376830292,37.790378685953016],[-119.87563562998413,37.79040309551106],[-119.87557646311872,37.79042589557899],[-119.87551633843087,37.79044705890279],[-119.87545532778987,37.79046656018486],[-119.8753935041242,37.79048437611434],[-119.87533094133437,37.79050048539497],[-119.87526771420458,37.79051486877045],[-119.87520389831323,37.79052750904757],[-119.87513956994269,37.79053839111674],[-119.87507480598799,37.79054750197002],[-119.87500968386493,37.7905548307167],[-119.87494428141754,37.790560368596374],[-119.87487867682503,37.79056410898926],[-119.87481294850822,37.79056604742427],[-119.87474717503592,37.7905661815843],[-119.8746647974209,37.790561185834946],[-119.87458225323917,37.790558418722284],[-119.87449963819873,37.790557883454696],[-119.87441704808967,37.79055958065282],[-119.87433457867321,37.790563508348804],[-119.87425232557065,37.79056966198854],[-119.87417038415258,37.790578034437054],[-119.8740888494282,37.790588615986664],[-119.87400781593537,37.79060139436831],[-119.87392737763079,37.79061635476574],[-119.87384762778134,37.79063347983267],[-119.87376865885578,37.790652749712926],[-119.87369056241755,37.790674142063466],[-119.87361342901877,37.79069763208025],[-119.87353734809514,37.79072319252704],[-119.87346240786229,37.790750793766875],[-119.87338869521354,37.79078040379655],[-119.87333959509729,37.79080677882827],[-119.87329165629617,37.79083446661785],[-119.87324493451872,37.79086343499074],[-119.87319948405941,37.79089365028421],[-119.87315535773557,37.790925077386525],[-119.87311260682603,37.79095767977777],[-119.87307128101148,37.79099141957213],[-119.87303142831679,37.79102625756208],[-119.87299309505518,37.791062153263915],[-119.87295632577435,37.79109906496466],[-119.87292116320484,37.791136949770674],[-119.8728876482102,37.79117576365745],[-119.87285581973961,37.79121546152074],[-119.87282571478259,37.79125599722898],[-119.872797368326,37.79129732367692],[-119.87277081331334,37.791339392840364],[-119.87274608060649,37.79138215583188],[-119.87272319894988,37.79142556295772],[-119.872702194937,37.79146956377551],[-119.87268309297947,37.79151410715286],[-119.87266591527873,37.79155914132683],[-119.87265068180021,37.79160461396397],[-119.87263741025008,37.79165047222127],[-119.87262611605465,37.791696662807475],[-119.87261681234249,37.79174313204504],[-119.87260950992908,37.791789825932504],[-119.87260421730429,37.79183669020724],[-119.87260087438678,37.79188457978418],[-119.87259958471014,37.79193253186043],[-119.87260034976899,37.79198049101406],[-119.87260316868304,37.79202840181481],[-119.87260803819821,37.79207620888823],[-119.87261495269036,37.79212385697963],[-119.87262390417169,37.79217129101798],[-119.8726348823001,37.79221845617954],[-119.87264787439102,37.792265297951225],[-119.87266286543208,37.79231176219364],[-119.87267983810038,37.79235779520359],[-119.87269877278266,37.7924033437763],[-119.87271964759779,37.792448355266686],[-119.87274243842214,37.792492777650374],[-119.87276711891732,37.79253655958385],[-119.87279366056086,37.79257965046366],[-119.87282203267887,37.792622000485046],[-119.87285220248167,37.79266356069943],[-119.87288413510164,37.79270428307102],[-119.87291779363346,37.79274412053233],[-119.87295313917681,37.792783027038624],[-119.87299013088129,37.79282095762108],[-119.87302872599365,37.7928578684388],[-119.87306887990721,37.7928937168295],[-119.87311054621333,37.7929284613588],[-119.8731536767552,37.79296206186812],[-119.87319822168328,37.79299447952115],[-119.87324412951321,37.793025676848636],[-119.87334954048531,37.79309517302963],[-119.87345184264349,37.793167535824416],[-119.8735509122535,37.79324267771684],[-119.8736466294895,37.79332050782934],[-119.87373887857889,37.79340093203294],[-119.87382754794254,37.79348385306099],[-119.87391253032955,37.793569170626846],[-119.87399372294703,37.79365678154506],[-119.87407102758463,37.793746579856176],[-119.87414435073308,37.793838456954845],[-119.87421360369751,37.793932301721185],[-119.8742787027048,37.79402800065508],[-119.87431244781075,37.79409885578734],[-119.87434306877417,37.794170598932176],[-119.87437052857527,37.79424314337561],[-119.8743947940147,37.794316401434926],[-119.87441583575387,37.79439028456459],[-119.87443362835033,37.79446470346333],[-119.87444815028861,37.79453956818201],[-119.87445938400627,37.79461478823234],[-119.87446731591518,37.79469027269634],[-119.87447193641802,37.7947659303361],[-119.87447323991978,37.79484166970417],[-119.87447122483483,37.794917399254],[-119.87446589358863,37.79499302745064],[-119.87445725261506,37.79506846288136],[-119.87444531234847,37.7951436143662],[-119.87443008721138,37.79521839106808],[-119.87441159559681,37.795292702602715],[-119.87438985984632,37.795366459147736],[-119.87436490622295,37.79543957155141],[-119.87434643775751,37.79552159824347],[-119.87433150486997,37.795604076968594],[-119.87432012494077,37.79568691179473],[-119.87431231121803,37.795770006375214],[-119.87430807280202,37.79585326406102],[-119.87430741463454,37.79593658801306],[-119.8743103374932,37.79601988131484],[-119.8743168379904,37.796103047085246],[-119.87432690857713,37.796185988591105],[-119.87434053755184,37.79626860935981],[-119.87435770907393,37.796350813291525],[-119.87437840318205,37.796432504770884],[-119.87440259581743,37.796513588778325],[-119.87443025885166,37.79659397100053],[-119.87446136011945,37.79667355794017],[-119.87449586345588,37.79675225702468],[-119.8745337287386,37.79682997671391],[-119.8745749119343,37.7969066266066],[-119.87461936514991,37.796982117545646],[-119.8747009642482,37.79708636382616],[-119.87477799170648,37.797192777721236],[-119.87485035616217,37.79730123304025],[-119.87491797178123,37.797411601171255],[-119.87498075835988,37.79752375123333],[-119.87503864141986,37.79763755023194],[-119.87509155229687,37.7977528632165],[-119.87513942822206,37.797869553440364],[-119.87518221239655,37.797987482523084],[-119.8752198540589,37.79810651061438],[-119.87525230854546,37.798226496560005],[-119.87527953734335,37.798347298069196],[-119.87530150813637,37.79846877188322],[-119.87531819484333,37.798590773945456],[-119.87532957764917,37.79871315957206],[-119.87533564302856,37.798835783623645],[-119.87532308694024,37.79896477800143],[-119.87530512265532,37.79909336891372],[-119.87528177008444,37.79922141363702],[-119.87525305511897,37.799348770053335],[-119.87521900960266,37.799475296807856],[-119.87517967129614,37.79960085346598],[-119.87513508383537,37.799725300669095],[-119.87508529668311,37.79984850028931],[-119.87503036507428,37.79997031558283],[-119.87497034995471,37.80009061134167],[-119.87490531791354,37.80020925404387],[-119.87476059049254,37.80042601770702],[-119.87462502661396,37.80064648009661],[-119.8744987762895,37.80087039738768],[-119.87438197923416,37.80109752193208],[-119.87427476471143,37.80132760253229],[-119.87417725139002,37.801560384719075],[-119.87408954721234,37.801795611032816],[-119.87386314059938,37.80247323292051],[-119.87365705253849,37.8031549251357],[-119.87362811570429,37.80323633133803],[-119.87359561842666,37.80331688732305],[-119.8735596002294,37.803396495088435],[-119.87352010492029,37.80347505778509],[-119.87347718053765,37.80355247983505],[-119.87343087929204,37.80362866704779],[-119.87338125750286,37.80370352673471],[-119.87332837552965,37.80377696782205],[-119.87327229769896,37.80384890096163],[-119.87321309222597,37.80391923863959],[-119.87316252858128,37.80397157909476],[-119.87311422652543,37.80402524739931],[-119.87306824140823,37.8040801820597],[-119.87302462592501,37.80413632013125],[-119.87298343005635,37.80419359729031],[-119.8729447010107,37.80425194790783],[-119.87290848317029,37.80431130512468],[-119.87287481804036,37.804371600928135],[-119.87284374420139,37.80443276622989],[-119.872815297265,37.8044947309452],[-119.87278950983313,37.80455742407312],[-119.87276641146059,37.8046207737779],[-119.87274602862117,37.804684707471274],[-119.87272838467732,37.804749151895635],[-119.87271349985336,37.80481403320805],[-119.87270139121216,37.80487927706464],[-119.87269207263573,37.80494480870606],[-119.87268555480912,37.80501055304291],[-119.87268184520825,37.80507643474195],[-119.87268094809127,37.80514237831231],[-119.87268286449364,37.80520830819198],[-119.87268759222688,37.80527414883454],[-119.87269512588115,37.80533982479555],[-119.87270545683134,37.8054052608191],[-119.87271857324687,37.80547038192403],[-119.87273446010532,37.805535113489825],[-119.87275309920949,37.80559938134215],[-119.87278988230669,37.80570913085251],[-119.87283129295582,37.80581783766552],[-119.87287728440113,37.80592537899016],[-119.87292780471198,37.80603163335122],[-119.87298279684131,37.80613648072684],[-119.87304219869013,37.80623980268391],[-119.87310594317736,37.80634148251187],[-119.87317395831586,37.80644140535467],[-119.87319645367963,37.80649132913115],[-119.87321677029388,37.80654183755894],[-119.87323488408565,37.80659287080205],[-119.87325077359144,37.806644368402786],[-119.87326441998263,37.806696269353075],[-119.87327580708796,37.80674851216692],[-119.87328492141255,37.806801034953224],[-119.87329175215392,37.806853775489095],[-119.87329629121496,37.80690667129349],[-119.87329853321336,37.80695965970129],[-119.87329847548816,37.807012677937614],[-119.87329611810277,37.80706566319202],[-119.87329146384513,37.80711855269306],[-119.87328451822417,37.80717128378258],[-119.87327528946352,37.80722379398998],[-119.87326378849174,37.80727602110616],[-119.8732500289293,37.80732790325733],[-119.87323402707258,37.80737937897822],[-119.87321580187451,37.80743038728494],[-119.87319537492222,37.80748086774724],[-119.87317277041139,37.80753076056008],[-119.87314801511761,37.80758000661452],[-119.87312113836481,37.8076285475677],[-119.8730921719904,37.807676325912034],[-119.87306115030754,37.80772328504326],[-119.87302811006468,37.8077693693276],[-119.8729930904019,37.8078145241676],[-119.87295613280457,37.807858696066894],[-119.8729172810542,37.807901832693474],[-119.87287658117667,37.80794388294183],[-119.87283408138761,37.8079847969934],[-119.87278983203531,37.80802452637567],[-119.87274388554115,37.80806302401954],[-119.8726962963374,37.80810024431514],[-119.87263714442308,37.80814653062297],[-119.87258006480769,37.80819442679407],[-119.87252512705483,37.80824387446022],[-119.87247239811835,37.808294813362295],[-119.8724219422607,37.80834718142385],[-119.87237382097466,37.80840091482662],[-119.8723280929084,37.808455948088316],[-119.87228481379394,37.80851221414247],[-119.87224403637923,37.808569644420125],[-119.8722058103639,37.80862816893331],[-119.87217018233856,37.808687716360446],[-119.87213719572813,37.80874821413317],[-119.87210689073882,37.80880958852481],[-119.87207930430911,37.80887176474019],[-119.87205447006468,37.8089346670068],[-119.87203241827754,37.80899821866711],[-119.87201317582887,37.809062342271986],[-119.8719967661764,37.80912695967512],[-119.87198320932579,37.809191992128156],[-119.87197252180614,37.80925736037676],[-119.87196471664981,37.809322984757166],[-119.8719598033766,37.80938878529321],[-119.87195778798194,37.80945468179388],[-119.87195867292978,37.80952059395102],[-119.87196245714934,37.8095864414371],[-119.87196913603641,37.80965214400327],[-119.87191317362615,37.80965372038993],[-119.85969723192136,37.80999719016264],[-119.85971399078119,37.813599348698155],[-119.85517017579467,37.81365043092331],[-119.85513048422938,37.818220058676864],[-119.84548070593988,37.81821408470569],[-119.84549774623429,37.818631102164815],[-119.84548039599905,37.81863109405307],[-119.8454725140837,37.82923683755527],[-119.84547001130208,37.83260389071595],[-119.83114880524018,37.83282666373982],[-119.82680997341869,37.832893812947],[-119.82687032936859,37.847634677276],[-119.82694050493264,37.862420509337895],[-119.82693049328714,37.86601588121162],[-119.82693049306761,37.86601596004159],[-119.82700064026143,37.876872832908035],[-119.82703271998157,37.885230512270205],[-119.82704653701607,37.888829657909795],[-119.82706033611822,37.89242378108221],[-119.84674289655918,37.89214556738538],[-119.86523214752445,37.89197536149072],[-119.88354341362906,37.8917934430759],[-119.88495332336727,37.89177160682513],[-119.88510254551822,37.906651293465885],[-119.8852537527654,37.921241335386775],[-119.88540242028614,37.93593615381663],[-119.88554225691709,37.950448458223214],[-119.885702578222,37.96526481128146],[-119.88584354717649,37.97937814516028],[-119.88578342447175,37.98371924221693],[-119.88590849115705,37.98403465448162],[-119.88602011781185,37.984353210252536],[-119.88611817858005,37.984674550862756],[-119.88620256287504,37.98499831450526],[-119.88627317550504,37.985324136640216],[-119.88632993678107,37.985651650405245],[-119.88637278260734,37.98598048702851],[-119.88640166455447,37.986310276243856],[-119.8864165499146,37.98664064670762],[-119.88641742173921,37.986971226416806],[-119.88636215256453,37.98726923529914],[-119.8863194903144,37.98756853889303],[-119.88628948274679,37.98786880321932],[-119.8862721635001,37.98816969322282],[-119.88626755205529,37.98847087314614],[-119.8862756537132,37.98877200690438],[-119.88629645958815,37.98907275846008],[-119.88630690834863,37.989225678600995],[-119.88631063756479,37.98937879372253],[-119.88630764269196,37.989531918937715],[-119.8862979273048,37.98968486934624],[-119.88628150309322,37.98983746025776],[-119.88625838984849,37.989989507414926],[-119.88622861543949,37.99014082721587],[-119.88619221577937,37.990291236935875],[-119.88614923478222,37.990440554948165],[-119.8860997243103,37.99058860094315],[-119.88604374411169,37.990735196146204],[-119.88598136174814,37.9908801635336],[-119.88591265251374,37.991023328046296],[-119.88583769934425,37.99116451680132],[-119.88575659271699,37.99130355930072],[-119.88566943054171,37.99144028763732],[-119.88557631804261,37.991574536697634],[-119.88547736763134,37.99170614436131],[-119.88537269877129,37.99183495169689],[-119.88451863820417,37.99280056732326],[-119.88362193496373,37.993741666756684],[-119.88268371039861,37.99465707146411],[-119.88170513798553,37.995545635047506],[-119.88068744186359,37.99640624468318],[-119.8796318953042,37.99723782251903],[-119.87902961667925,37.997677084461785],[-119.87844434032131,37.9981305131124],[-119.87787659834814,37.998597696466504],[-119.87732690697426,37.999078210013884],[-119.87679576604175,37.999571617123536],[-119.87628365856536,38.00007746943959],[-119.8762331122638,38.00012350770088],[-119.87618462293462,38.000170911098564],[-119.8761382494184,38.00021962211374],[-119.87609404798874,38.0002695816406],[-119.87605207228404,38.00032072905838],[-119.87601237324222,38.000373002304734],[-119.87597499903907,38.00042633795118],[-119.87593999502971,38.00048067127991],[-119.87590740369356,38.00053593636245],[-119.87587726458267,38.00059206613951],[-119.87584961427387,38.00064899250248],[-119.87582448632426,38.00070664637596],[-119.87580191123051,38.00076495780164],[-119.87578191639173,38.00082385602316],[-119.87576452607635,38.000883269571986],[-119.87574976139256,38.000943126354045],[-119.87573764026264,38.00100335373731],[-119.87572817740124,38.001063878639854],[-119.87572138429749,38.0011246276186],[-119.87571726920096,38.00118552695831],[-119.87571583711168,38.001246502761184],[-119.87571708977407,38.00130748103643],[-119.87572102567468,38.00136838779009],[-119.87572764004413,38.0014291491148],[-119.87573692486276,38.00148969127947],[-119.87574886887039,38.001549940818826],[-119.87576345757988,38.00160982462248],[-119.87578067329478,38.00166927002367],[-119.87580049513072,38.00172820488743],[-119.8758228990407,38.0017865576982],[-119.87584785784429,38.001844257646496],[-119.87587534126054,38.00190123471498],[-119.87590531594472,38.001957419763244],[-119.8759377455288,38.00201274461192],[-119.8759725906655,38.002067142125284],[-119.87600980907598,38.0021205462928],[-119.87604935560128,38.00217289230912],[-119.87609118225691,38.00222411665294],[-119.87613523829118,38.002274157163875],[-119.87618147024675,38.00232295311803],[-119.87622982202545,38.002370445301636],[-119.87685431515403,38.003152236611356],[-119.8774452913689,38.003950177399965],[-119.87800208336219,38.004763368130526],[-119.87852406229955,38.00559089204514],[-119.87901063853299,38.00643181619678],[-119.87946126227013,38.007285192499666],[-119.87987542419835,38.00815005879662],[-119.8799441778298,38.00841649103679],[-119.8800017673978,38.008684575271175],[-119.88004812988666,38.00895401872212],[-119.88008321454014,38.00922452712436],[-119.88010698291733,38.00949580504649],[-119.88011940893523,38.009767556213426],[-119.8801204788978,38.01003948383006],[-119.88011019151132,38.01031129090536],[-119.88008855788655,38.01058268057671],[-119.88005560152705,38.010853356434225],[-119.88001135830393,38.01112302284441],[-119.87995587641741,38.011391385273136],[-119.87992602228985,38.01187450549371],[-119.87991590759414,38.01235813650745],[-119.87992554327299,38.01284177358599],[-119.879954919657,38.013324911984895],[-119.88000400647307,38.01380704747048],[-119.88007275287455,38.014287676846095],[-119.88016108749252,38.01476629847745],[-119.88026891850886,38.01524241281618],[-119.88028824837437,38.01532812466392],[-119.88030390812335,38.015414304111594],[-119.88031587987464,38.015500852825234],[-119.88032414995502,38.015587672049136],[-119.88032870891493,38.01567466271867],[-119.88032955153928,38.015761725573185],[-119.88032667685347,38.01584876126932],[-119.88032008812459,38.015935670494386],[-119.88030979285773,38.016022354079645],[-119.88029580278747,38.01610871311348],[-119.88027813386454,38.0161946490543],[-119.88025680623771,38.016280063842885],[-119.88023184423083,38.01636486001447],[-119.88020327631516,38.016448940809745],[-119.88017113507688,38.016532210285426],[-119.88013545718,38.0166145734237],[-119.88009628332458,38.01669593624065],[-119.88005365820035,38.01677620589353],[-119.88000763043566,38.016855290786665],[-119.87995825254221,38.01693310067605],[-119.87990558085497,38.017009546772314],[-119.8798496754681,38.01708454184207],[-119.87979060016633,38.017158000307404],[-119.87972842235223,38.01722983834364],[-119.87966321296929,38.01729997397493],[-119.87959504642106,38.01736832716789],[-119.879194788172,38.01797619710426],[-119.87877000464661,38.018573560982595],[-119.87832113542952,38.019159799802324],[-119.87784864509642,38.019734306076586],[-119.87772619408517,38.01994604705031],[-119.8776130076153,38.02016099008593],[-119.8775092193146,38.02037888157574],[-119.87741495172554,38.020599464430994],[-119.87733031616011,38.02082247838518],[-119.87725541256839,38.021047660300944],[-119.87719032941995,38.021274744480586],[-119.87713514359936,38.021503462979496],[-119.8770899203148,38.021733545922174],[-119.8770547130209,38.02196472182072],[-119.87702956335502,38.02219671789508],[-119.87701450108788,38.02242926039489],[-119.87700954408793,38.02266207492247],[-119.87701469829973,38.02289488675666],[-119.87702995773657,38.02312742117689],[-119.8770553044871,38.023359403787396],[-119.87709070873592,38.02359056084109],[-119.87713612879847,38.02382061956249],[-119.8771915111696,38.02404930846977],[-119.87725679058644,38.02427635769506],[-119.8773318901049,38.02450149930298],[-119.87741672119004,38.02472446760694],[-119.87751118382029,38.024944999482656],[-119.87761516660491,38.02516283467882],[-119.87772854691521,38.0253777161242],[-119.87786371028676,38.025693721425554],[-119.87801173678986,38.02600609956364],[-119.87817247138449,38.02631452301928],[-119.87834574570037,38.02661866841569],[-119.87853137821293,38.02691821685767],[-119.87872917443295,38.02721285426609],[-119.87893892711021,38.02750227170748],[-119.87916041645009,38.027786165718105],[-119.87939341034378,38.0280642386223],[-119.87963766461114,38.028336198844855],[-119.87968092388493,38.02838195156408],[-119.87972217191894,38.02842885205558],[-119.87976136007975,38.02847684502572],[-119.87979844216207,38.02852587389276],[-119.87983337444342,38.02857588085359],[-119.87986611573552,38.02862680695185],[-119.879896627433,38.02867859214743],[-119.87992487355886,38.028731175387215],[-119.87995082080687,38.028784494677154],[-119.87997443858099,38.02883848715524],[-119.87999569903127,38.02889308916567],[-119.88001457708694,38.02894823633387],[-119.88003105048575,38.0290038636424],[-119.88004509980045,38.02905990550764],[-119.88005670846155,38.02911629585696],[-119.880065862777,38.02917296820686],[-119.88007255194827,38.029229855741114],[-119.88007676808324,38.029286891389695],[-119.88007850620532,38.029344007907774],[-119.88007776425955,38.02940113795502],[-119.88007454311496,38.02945821417503],[-119.88006884656357,38.02951516927469],[-119.88006068131594,38.02957193610352],[-119.8800500569933,38.0296284477329],[-119.88003698611624,38.02968463753491],[-119.88002148409,38.02974043926091],[-119.88000356918627,38.029795787119724],[-119.87998326252166,38.02985061585506],[-119.87996058803297,38.02990486082263],[-119.87993557244883,38.02995845806623],[-119.87990824525824,38.03001134439319],[-119.87987863867586,38.030063457448925],[-119.87984678760414,38.03011473579048],[-119.87981272959199,38.030165118958806],[-119.87977650479063,38.03021454755032],[-119.87973815590627,38.03026296328671],[-119.87969772814982,38.03031030908375],[-119.87965526918346,38.030356529118684],[-119.87656414750204,38.03332808157589],[-119.87359758053879,38.03637809748194],[-119.87296468061278,38.03716425899176],[-119.87236486494746,38.03796648465918],[-119.87179878570437,38.03878390369077],[-119.87126705848732,38.039615628772665],[-119.87077026167033,38.04046075703202],[-119.87030893576565,38.041318371015706],[-119.86988358283261,38.04218753968486],[-119.86949466592806,38.04306731942428],[-119.86914260859854,38.0439567550656],[-119.86856926533896,38.045271151909525],[-119.86794582458688,38.04657120961735],[-119.86789783935212,38.04667191193902],[-119.8678542770467,38.04677386377218],[-119.86781518957993,38.04687694367291],[-119.86778062353133,38.04698102885301],[-119.86775062009507,38.04708599532628],[-119.86772521503084,38.047191718056204],[-119.86770443862115,38.047298071104905],[-119.86768831563514,38.0474049277831],[-119.86767686529898,38.04751216080108],[-119.86767010127295,38.04761964242024],[-119.86766803163498,38.04772724460533],[-119.86767065887096,38.04783483917691],[-119.8676779798717,38.047942297964056],[-119.86768998593651,38.04804949295706],[-119.86770666278349,38.048156296459915],[-119.86772799056642,38.048262581242426],[-119.86775394389835,38.04836822069179],[-119.86778449188168,38.04847308896345],[-119.86781959814499,38.04857706113097],[-119.86785922088609,38.04868001333495],[-119.86790331292201,38.0487818229305],[-119.86795182174481,38.04888236863344],[-119.8680046895843,38.04898153066471],[-119.86806185347665,38.049079190893174],[-119.86812324533939,38.049175232976346],[-119.86818879205245,38.049269542498976],[-119.8682584155451,38.04936200710936],[-119.86833203288907,38.04945251665329],[-119.86871632117472,38.049704144284384],[-119.86908974564442,38.049965801385554],[-119.86945188782903,38.050237194817306],[-119.86980234188582,38.05051802052914],[-119.87014071505314,38.05080796389973],[-119.87046662809071,38.051106700089264],[-119.87077971570477,38.05141389440288],[-119.87107962695752,38.05172920266531],[-119.87136602566078,38.05205227160626],[-119.87163859075298,38.05238273925576],[-119.87189701665959,38.05272023534947],[-119.87195659957035,38.0528079053107],[-119.87201238144574,38.05289712530074],[-119.87206429787064,38.05298779231326],[-119.872112288892,38.053079801670954],[-119.87215629908812,38.05317304714639],[-119.87219627763265,38.05326742108455],[-119.87223217835341,38.05336281452718],[-119.87226395978573,38.053459117338605],[-119.87229158522028,38.05355621833274],[-119.87231502274574,38.05365400540162],[-119.87233424528556,38.053752365644655],[-119.87234923062935,38.05385118549908],[-119.87235996145851,38.05395035087104],[-119.87236642536651,38.05404974726735],[-119.87236861487305,38.05414925992751],[-119.87236652743297,38.05424877395649],[-119.87236016543912,38.05434817445711],[-119.87234953621974,38.05444734666288],[-119.87233465203019,38.0545461760704],[-119.87231553003865,38.05464454857162],[-119.87229219230652,38.054742350585634],[-119.87226466576304,38.05483946918975],[-119.87223298217421,38.05493579224987],[-119.87219717810623,38.05503120855006],[-119.87215729488328,38.0551256079209],[-119.87211337853994,38.05521888136678],[-119.8720654797681,38.05531092119161],[-119.8720136538585,38.05540162112336],[-119.8719579606369,38.055490876436664],[-119.87189846439507,38.05557858407383],[-119.87183523381667,38.05566464276375],[-119.87176834189789,38.055748953139016],[-119.87169786586334,38.05583141785049],[-119.87058482599917,38.05793877572646],[-119.86954151384195,38.060068328033225],[-119.86856864228415,38.0622186319619],[-119.86829888289569,38.062806658173805],[-119.86800335654918,38.06338689146929],[-119.86768242196192,38.063958626369015],[-119.86733646877056,38.064521167710566],[-119.86702791962617,38.06509582798886],[-119.86673897426682,38.065676824106205],[-119.86646984102586,38.06626373808723],[-119.86639485478887,38.06641717652404],[-119.86631319663665,38.06656847141032],[-119.86622496436011,38.066717441485636],[-119.86613026362838,38.06686390827374],[-119.86602920786207,38.06700769629644],[-119.86592191809785,38.06714863328396],[-119.86580852284331,38.0672865503813],[-119.86568915792331,38.06742128235066],[-119.86556396631725,38.067552667769405],[-119.8654330979879,38.067680549223724],[-119.86529670970182,38.06780477349694],[-119.8651549648416,38.067925191753496],[-119.86500803321009,38.06804165971714],[-119.86485609082716,38.06815403784394],[-119.8646993197187,38.06826219148949],[-119.8645379076986,38.06836599107031],[-119.86437204814366,38.06846531221925],[-119.86420193976197,38.068560035934446],[-119.86402778635477,38.06865004872202],[-119.86384979657218,38.06873524273215],[-119.86366818366322,38.06881551588837],[-119.86348316522017,38.06889077200978],[-119.86329496291786,38.068960920926564],[-119.86310380224788,38.069025878587944],[-119.86290991224836,38.06908556716296],[-119.86271352522944,38.06913991513381],[-119.86251487649479,38.06918885738152],[-119.86231420405947,38.06923233526414],[-119.86211174836477,38.06927029668685],[-119.86190775198978,38.06930269616463],[-119.8617024593607,38.06932949487661],[-119.8614961164578,38.06935066071267],[-119.86128897052049,38.069366168312044],[-119.86108126975094,38.06937599909353],[-119.8608732630165,38.06938014127796],[-119.86066519955129,38.06937858990211],[-119.86045732865756,38.069371346824866],[-119.86024989940655,38.06935842072488],[-119.85998582855906,38.06934198683563],[-119.8597211940935,38.069332831361905],[-119.8594563168757,38.06933096540462],[-119.8591915180656,38.06933639122626],[-119.85892711872813,38.06934910224805],[-119.8586634394442,38.06936908305798],[-119.85840079992236,38.06939630942942],[-119.8581395186113,38.069430748350605],[-119.8578799123141,38.06947235806445],[-119.85762229580448,38.06952108811928],[-119.85736698144507,38.069576879429924],[-119.85711427880932,38.06963966434927],[-119.85686449430608,38.06970936675029],[-119.85661793080844,38.069785902118234],[-119.8563748872867,38.06986917765306],[-119.85613565844605,38.06995909238186],[-119.85590053436937,38.07005553728127],[-119.85566980016573,38.070158395409436],[-119.85544373562479,38.07026754204792],[-119.85522261487769,38.07038284485266],[-119.85500670606481,38.07050416401442],[-119.85479627101061,38.070631352428215],[-119.85459156490634,38.070764255871545],[-119.85439283600051,38.07090271319132],[-119.84840236303374,38.07780237271938],[-119.84308904746703,38.08221983087201],[-119.84192014846364,38.08542180398451],[-119.83229943939634,38.091909959745145],[-119.83182504724795,38.09185022728154],[-119.8313483347039,38.091803436915306],[-119.83086986681323,38.091769644107345],[-119.8303902107028,38.091748888912406],[-119.82990993490598,38.09174119593169],[-119.82942960868961,38.091746574283654],[-119.82894980138029,38.09176501759342],[-119.82847108169034,38.09179650400001],[-119.82799401704467,38.09184099618246],[-119.82751917290909,38.091898441403984],[-119.82704711212097,38.091968771574265],[-119.82657839422292,38.09205190333018],[-119.8261135748004,38.09214773813446],[-119.82565320482402,38.09225616239227],[-119.82519782999726,38.09237704758577],[-119.82474799011031,38.09251025042622],[-119.82430421840093,38.09265561302365],[-119.8238670409231,38.09281296307368],[-119.82343697592407,38.09298211406166],[-119.82301453323053,38.09316286548335],[-119.82260021364483,38.09335500308239],[-119.82219450835174,38.09355829910396],[-119.82179789833664,38.09377251256447],[-119.8214108538156,38.093997389536874],[-119.8210338336783,38.094232663451294],[-119.82066728494421,38.09447805541083],[-119.82031164223265,38.09473327452168],[-119.82019258952161,38.094822506822936],[-119.82006971665234,38.094908444199014],[-119.81994316955158,38.09499098457973],[-119.81981309851157,38.09507002992932],[-119.81967965801158,38.09514548636285],[-119.81954300653432,38.09521726425783],[-119.81940330637782,38.09528527836064],[-119.8192607234626,38.09534944788782],[-119.8191154271344,38.095409696622106],[-119.81896758996324,38.095465953003014],[-119.81881738753823,38.09551815021177],[-119.81866499825895,38.09556622625079],[-119.81851060312364,38.095610124017334],[-119.81835438551393,38.09564979137135],[-119.81819653097713,38.09568518119737],[-119.8180372270057,38.09571625146066],[-119.81787666281441,38.09574296525694],[-119.81771502911559,38.095765290856434],[-119.81755251789241,38.09578320174153],[-119.81738932217091,38.09579667663818],[-119.8097614968878,38.09581661336607],[-119.80965780287084,38.09576246362736],[-119.80955655056547,38.09570550130263],[-119.80945786207059,38.09564579508513],[-119.80936185639236,38.09558341697693],[-119.8092686493008,38.095518442202035],[-119.80917835319012,38.09545094911572],[-119.80909107694319,38.095381019109894],[-119.80900692580022,38.095308736515044],[-119.8089260012319,38.095234188498424],[-119.80884840081698,38.09515746495897],[-119.8087742181248,38.09507865841885],[-119.80870354260219,38.09499786391186],[-119.80863645946583,38.09491517886879],[-119.80857304959962,38.09483070299993],[-119.80851338945683,38.0947445381748],[-119.80845755096836,38.09465678829927],[-119.80840560145575,38.094567559190274],[-119.80835760355019,38.094476958448084],[-119.80831361511702,38.09438509532677],[-119.80827368918597,38.09429208060214],[-119.8082378738874,38.09419802643837],[-119.80820621239417,38.0941030462526],[-119.80817874286977,38.09400725457824],[-119.8081554984223,38.09391076692675],[-119.80813650706467,38.093813699648486],[-119.8081217916809,38.09371616979224],[-119.80811136999854,38.09361829496414],[-119.80810525456744,38.09352019318589],[-119.80810345274469,38.09342198275239],[-119.8081059666858,38.09332378208902],[-119.8081127933422,38.09322570960902],[-119.80812392446502,38.09312788357058],[-119.80813934661512,38.09303042193422],[-119.80815904117928,38.09293344222062],[-119.80818298439286,38.09283706136892],[-119.80821114736848,38.092741395595695],[-119.80824349613091,38.09264656025479],[-119.80827999165814,38.09255266969837],[-119.80832058992847,38.092459837138875],[-119.80836524197373,38.092368174512636],[-119.8084138939383,38.092277792344866],[-119.80842391178096,38.09225918936173],[-119.80843311322587,38.092240324818796],[-119.8084414873626,38.09222122108562],[-119.80844902426173,38.0922019008154],[-119.80845571498668,38.09218238691806],[-119.80846155160425,38.09216270253314],[-119.80846652719416,38.09214287100229],[-119.80847063585698,38.09212291584162],[-119.80847387272148,38.0921028607139],[-119.80847623395003,38.0920827294003],[-119.80847771674348,38.092062545772436],[-119.80847831934425,38.09204233376382],[-119.80847804103851,38.09202211734169],[-119.80847688215695,38.0920019204785],[-119.80847484407452,38.09198176712338],[-119.80847192920871,38.09196168117399],[-119.80846814101656,38.091941686447974],[-119.80846348399079,38.09192180665476],[-119.80845796365432,38.09190206536749],[-119.80845158655379,38.09188248599511],[-119.80844436025171,38.09186309175448],[-119.80843629331757,38.091843905642946],[-119.80842739531765,38.09182495041104],[-119.80841767680361,38.09180624853548],[-119.80840714930014,38.09178782219256],[-119.80839582529109,38.09176969323187],[-119.80838371820477,38.09175188315027],[-119.80837084239808,38.09173441306661],[-119.80835721313932,38.09171730369643],[-119.80834284659029,38.09170057532763],[-119.80832775978693,38.09168424779625],[-119.80831197061927,38.09166834046307],[-119.8082954978101,38.09165287219057],[-119.80827836089281,38.091637861320564],[-119.8082605801883,38.091623325652535],[-119.80824217678072,38.091609282422446],[-119.80822317249265,38.09159574828233],[-119.80820358985908,38.091582739280554],[-119.80818345210078,38.091570270842794],[-119.80816278309675,38.0915583577537],[-119.80814160735582,38.091547014139444],[-119.80811994998774,38.091536253450904],[-119.80809783667327,38.091526088447736],[-119.80807529363375,38.09151653118327],[-119.80805234760014,38.09150759299014],[-119.80802902578117,38.091499284467],[-119.8080053558311,38.091491615465756],[-119.807981365817,38.091484595080054],[-119.80795708418546,38.09147823163443],[-119.80793253972882,38.09147253267436],[-119.807907761551,38.09146750495754],[-119.80788277903311,38.091463154445606],[-119.80785762179846,38.09145948629725],[-119.80783231967763,38.09145650486201],[-119.8078069026729,38.09145421367516],[-119.80778140092276,38.09145261545352],[-119.8046617663196,38.09130795708001],[-119.80444071744029,38.089284550899805],[-119.80443439791568,38.08923641393007],[-119.80442597981963,38.089188478042836],[-119.80441547318885,38.0891408003679],[-119.80440289054911,38.08909343772718],[-119.80438824690023,38.08904644656702],[-119.80437155969823,38.08899988289092],[-119.80435284883455,38.08895380219284],[-119.80433213661226,38.088908259391],[-119.80430944771942,38.08886330876251],[-119.8042848091998,38.08881900387859],[-119.80425825042049,38.0887753975408],[-119.80422980303693,38.08873254171814],[-119.80419950095522,38.088690487485],[-119.80416738029156,38.08864928496042],[-119.80413347932942,38.08860898324833],[-119.8040978384737,38.08856963037896],[-119.80406050020265,38.08853127325175],[-119.80402150901725,38.08849395757932],[-119.80398091138811,38.088457727833074],[-119.80393875570023,38.08842262719015],[-119.80389509219508,38.088388697482074],[-119.80384997291097,38.08835597914479],[-119.80380345162091,38.088324511170576],[-119.80375558376849,38.088294331061476],[-119.80370642640193,38.08826547478473],[-119.803656038106,38.08823797672983],[-119.80360447893217,38.088211869667575],[-119.80355181032719,38.08818718471101],[-119.80349809505975,38.08816395127835],[-119.80344339714564,38.088142197057955],[-119.8033877817716,38.08812194797531],[-119.80333131521762,38.08810322816215],[-119.80327406477785,38.088086059927655],[-119.8032160986805,38.08807046373194],[-119.80315748600654,38.08805645816167],[-119.8030982966073,38.08804405990779],[-119.80303860102141,38.08803328374585],[-119.80297847039056,38.08802414251822],[-119.80291797637483,38.08801664711884],[-119.80285719106732,38.088010806480284],[-119.80279618690817,38.08800662756304],[-119.80273503659832,38.08800411534731],[-119.80267381301285,38.088003272826995],[-119.80261258911412,38.08800410100615],[-119.80255143786489,38.088006598897785],[-119.80249043214138,38.088010763525105],[-119.80242964464637,38.08801658992493],[-119.80236914782262,38.08802407115374],[-119.80230901376653,38.08803319829586],[-119.80224931414233,38.08804396047411],[-119.80219012009651,38.08805634486278],[-119.80213150217315,38.08807033670292],[-119.80157512794331,38.08820333041807],[-119.80101339407128,38.08832141799405],[-119.80044693978296,38.088424465049314],[-119.79987640968473,38.0885123543176],[-119.79930245302873,38.08858498578171],[-119.79872572297297,38.088642276787304],[-119.7981468758367,38.088684162137405],[-119.79756657035246,38.088710594166415],[-119.79698546691509,38.088721542794666],[-119.79640422682908,38.08871699556259],[-119.79582351155464,38.08869695764494],[-119.79524398195379,38.088661451844914],[-119.79516072522547,38.088656365202205],[-119.7950772972538,38.08865352902464],[-119.79499379539311,38.08865294662182],[-119.79491031708406,38.08865461867342],[-119.79482695973971,38.08865854322822],[-119.79474382063206,38.08866471570657],[-119.79466099677855,38.08867312890558],[-119.79457858482876,38.08868377300771],[-119.7944966809517,38.088696635591994],[-119.7944153807237,38.08871170164866],[-119.79433477901681,38.088728953596714],[-119.79425496988812,38.088748371304256],[-119.79417604647007,38.088769932112136],[-119.79409810086175,38.088793610860314],[-119.79402122402148,38.08881937991723],[-119.79394550566064,38.08884720921202],[-119.7938710341391,38.08887706626968],[-119.79379789636194,38.08890891624879],[-119.79372617767828,38.088942721982384],[-119.79365596178152,38.08897844402113],[-119.79358733061176,38.0890160406794],[-119.79352036426017,38.089055468083984],[-119.79345514087557,38.089096680225204],[-119.79339173657316,38.089139629010596],[-119.79333022534577,38.08918426432104],[-119.79327067897752,38.08923053406927],[-119.79321316696,38.089278384260524],[-119.79315775641119,38.089327759055756],[-119.79310451199713,38.08937860083655],[-119.79305349585651,38.0894308502725],[-119.79300476752802,38.08948444639042],[-119.79295838388099,38.089539326645436],[-119.79291439904888,38.089595426993995],[-119.79266920627573,38.089908456048086],[-119.79241095905124,38.09021485842242],[-119.79213994369209,38.09051429422249],[-119.79185646068964,38.09080643127784],[-119.79156082437717,38.09109094551091],[-119.79125336258147,38.091367521296746],[-119.79093441625938,38.0916358518135],[-119.79060433911992,38.09189563938302],[-119.79026349723202,38.09214659580146],[-119.7899122686185,38.09238844265926],[-119.78955104283682,38.09262091165036],[-119.78918022054685,38.092843744870095],[-119.7888002130664,38.09305669510162],[-119.78841144191465,38.09325952609053],[-119.78801433834442,38.09345201280717],[-119.78760934286348,38.093633941696616],[-119.78719690474556,38.09380511091583],[-119.7867774815315,38.09396533055791],[-119.78635153852127,38.09411442286299],[-119.78585551826424,38.09427238449523],[-119.78535290475966,38.09441674638648],[-119.78484429489338,38.094547337088684],[-119.78433029268278,38.09466400150803],[-119.78381150855867,38.094766601089425],[-119.78328855863917,38.09485501398103],[-119.7827620639972,38.09492913517946],[-119.78223264992177,38.09498887665452],[-119.7817009451743,38.09503416745388],[-119.78163664238885,38.09503787409555],[-119.7815722156952,38.09503981772722],[-119.78150774246875,38.095039996014606],[-119.78144330014068,38.09503840874361],[-119.78137896610525,38.0950350578205],[-119.7813148176265,38.09502994726967],[-119.78125093174559,38.095023083228824],[-119.78118738518829,38.09501447394152],[-119.78112425427277,38.095004129747366],[-119.78106161481794,38.09499206306951],[-119.7809995420523,38.09497828839982],[-119.78093811052373,38.094962822281396],[-119.78087739400988,38.09494568328866],[-119.78081746542945,38.094926892005205],[-119.78075839675476,38.094906470998936],[-119.78070025892517,38.094884444794964],[-119.78064312176201,38.09486083984623],[-119.78058705388463,38.094835684501646],[-119.78053212262792,38.09480900897209],[-119.78047839396157,38.09478084529417],[-119.78042593241078,38.094751227291546],[-119.7803748009787,38.094720190534545],[-119.78032506107091,38.09468777229732],[-119.78027677242152,38.09465401151306],[-119.78022999302145,38.09461894872722],[-119.78018477904895,38.09458262604895],[-119.78014188218567,38.09454817075938],[-119.78009749315225,38.094514916851715],[-119.78005166579152,38.09448290466064],[-119.78000445569059,38.09445217301471],[-119.77995592011351,38.094422759189214],[-119.77990611793193,38.0943946988609],[-119.77985510955348,38.09436802606495],[-119.7798029568487,38.09434277315333],[-119.77974972307578,38.094318970755936],[-119.77969547280414,38.09429664774318],[-119.77964027183583,38.0942758311911],[-119.77958418712586,38.094256546348504],[-119.77952728670101,38.094238816606314],[-119.77946963957727,38.094222663469274],[-119.77941131567626,38.09420810652977],[-119.77935238574015,38.09419516344413],[-119.77929292124627,38.09418384991126],[-119.77923299432007,38.094174179653486],[-119.77917267764789,38.09416616439999],[-119.77911204438867,38.09415981387262],[-119.77905116808529,38.09415513577396],[-119.77899012257535,38.094152135778195],[-119.77892898190167,38.09415081752402],[-119.77886782022254,38.094151182610375],[-119.77880671172157,38.09415323059444],[-119.77874573051803,38.094156958992215],[-119.77868495057672,38.094162363281434],[-119.77862444561842,38.09416943690718],[-119.77856428903041,38.09417817128976],[-119.77850455377751,38.09418855583513],[-119.7784453123136,38.09420057794771],[-119.77838663649365,38.09421422304571],[-119.7783285974868,38.094229474578775],[-119.77827126568978,38.09424631404807],[-119.77821471064178,38.09426472102871],[-119.77815900093995,38.09428467319458],[-119.77810420415624,38.09430614634527],[-119.77805038675552,38.0943291144356],[-119.77799761401494,38.094353549607085],[-119.77794594994468,38.09437942222177],[-119.77790104322511,38.094408732936124],[-119.77785488419127,38.09443680239017],[-119.77780752775118,38.09446359719339],[-119.7777590302375,38.09448908547141],[-119.77770944934042,38.094513236904106],[-119.7776588440391,38.09453602276157],[-119.77760727453139,38.09455741593834],[-119.77755480216243,38.09457739098561],[-119.77750148935147,38.0945959241415],[-119.77744739951763,38.09461299335944],[-119.77739259700462,38.094628578334245],[-119.77733714700395,38.094642660526326],[-119.77728111547754,38.09465522318383],[-119.77722456907921,38.09466625136242],[-119.77716757507532,38.09467573194321],[-119.77711020126482,38.09468365364831],[-119.77705251589849,38.094690007054155],[-119.77699458759781,38.094694784602865],[-119.77693648527331,38.094697980611166],[-119.77687827804256,38.09469959127712],[-119.77682003514798,38.09469961468471],[-119.77676182587435,38.094698050806095],[-119.77670371946652,38.09469490150164],[-119.7766457850469,38.09469017051769],[-119.77658809153331,38.09468386348216],[-119.7765307075569,38.09467598789779],[-119.77647370138062,38.09466655313319],[-119.77641714081784,38.09465557041184],[-119.77636109315179,38.09464305279853],[-119.7763056250555,38.09462901518399],[-119.77625080251235,38.09461347426709],[-119.7761966907378,38.09459644853494],[-119.77614335410155,38.09457795824103],[-119.77609085605117,38.09455802538096],[-119.7760392590364,38.09453667366644],[-119.77324439348664,38.09232854967919],[-119.77312339909037,38.09223712412765],[-119.77299851767273,38.09214902371799],[-119.77286989546982,38.092064351606474],[-119.7727376830963,38.09198320693474],[-119.77260203536888,38.09190568471396],[-119.77246311112518,38.09183187571348],[-119.77232107303774,38.091761866354695],[-119.77217608742362,38.09169573860982],[-119.77202832404957,38.09163356990596],[-119.77187795593349,38.09157543303453],[-119.77172515914174,38.091521396066064],[-119.77157011258309,38.091471522270446],[-119.77141299779943,38.091425870042954],[-119.7712539987531,38.09138449283597],[-119.77109330161167,38.091347439096225],[-119.77093109453006,38.09131475220828],[-119.77076756743023,38.09128647044373],[-119.77060291177912,38.09126262691631],[-119.77043732036428,38.09124324954324],[-119.77027098706846,38.09122836101252],[-119.77010410664263,38.091217978756376],[-119.76993687447802,38.09121211493083],[-119.76976948637758,38.09121077640158],[-119.76960213832663,38.09121396473579],[-119.76943502626376,38.09122167620044],[-119.76926834585126,38.09123390176655],[-119.76910229224636,38.09125062711984],[-119.76893705987267,38.09127183267745],[-119.76877284219272,38.09129749361087],[-119.76860983148163,38.091327579874886],[-119.76844821860182,38.09136205624298],[-119.76828819277996,38.09140088234835],[-119.7681299413853,38.09144401273122],[-119.76797364971038,38.09149139689202],[-119.7678195007543,38.091542979350564],[-119.76766767500833,38.0915986997109],[-119.76751835024481,38.091658492732044],[-119.76737170130902,38.09172228840427],[-119.76722789991447,38.09179001203112],[-119.76708711444199,38.09186158431685],[-119.76694950974255,38.09193692145913],[-119.76681524694423,38.09201593524721],[-119.76668448326367,38.09209853316514],[-119.76640066006992,38.09227778539193],[-119.7661092107254,38.09244922488522],[-119.76581047937371,38.09261264917979],[-119.76550481876555,38.09276786527475],[-119.76519258984186,38.09291468986189],[-119.76487416130742,38.09305294954215],[-119.76454990919535,38.09318248103069],[-119.76422021642257,38.09330313134982],[-119.7638854723374,38.09341475800993],[-119.76354607225946,38.09351722917783],[-119.76320241701242,38.093610423832615],[-119.76285491245017,38.09369423190874],[-119.76250396897728,38.093768554426156],[-119.76215000106372,38.09383330360726],[-119.76179342675502,38.093888402980724],[-119.76143466717801,38.093933787471826],[-119.76107414604309,38.09396940347947],[-119.76071228914316,38.093995208939475],[-119.76034952385035,38.09401117337438],[-119.7599862786108,38.09401727792937],[-119.75962298243799,38.09401351539469],[-119.75938875672992,38.09400477506502],[-119.75915503843002,38.093989785913394],[-119.75892209440934,38.09396856505512],[-119.75869019065419,38.0939411367211],[-119.75845959196229,38.09390753223024],[-119.75823056164019,38.093867789953535],[-119.75800336120247,38.09382195527034],[-119.75794162306882,38.09380953167717],[-119.75787937272452,38.09379882277187],[-119.75781668639496,38.09378984166747],[-119.75775364083933,38.093782599361276],[-119.75769031325657,38.09377710472147],[-119.75762678119092,38.0937733644762],[-119.75756312243696,38.09377138320537],[-119.75749941494439,38.093771163335056],[-119.75743573672253,38.09377270513445],[-119.75737216574491,38.093776006715665],[-119.75730877985376,38.093781064035916],[-119.75724565666472,38.093787870902524],[-119.75718287347178,38.09379641898055],[-119.75712050715264,38.09380669780292],[-119.75705863407477,38.09381869478322],[-119.75699733000162,38.09383239523122],[-119.7569366700001,38.09384778237076],[-119.75687672834857,38.09386483736035],[-119.75681757844589,38.09388353931615],[-119.75675929272163,38.09390386533767],[-119.75670194254732,38.093925790535664],[-119.75664559814908,38.093949288062724],[-119.7565903285217,38.09397432914608],[-119.75653620134405,38.09400088312281],[-119.75648328289631,38.0940289174775],[-119.75643163797878,38.094058397881874],[-119.75638132983252,38.09408928823699],[-119.75633242006202,38.09412155071729],[-119.75628496855953,38.094155145817076],[-119.756239033432,38.09419003239874],[-119.75598319558844,38.094384409115385],[-119.75571899894288,38.094571672876015],[-119.75544675992732,38.09475159934926],[-119.7551668046153,38.09492397299176],[-119.7548794683313,38.09508858730667],[-119.75458509524896,38.095245245091164],[-119.75428403797862,38.09539375867293],[-119.75397665714492,38.09553395013512],[-119.75366332095435,38.09566565152967],[-119.75334440475413,38.095788705078746],[-119.75302029058231,38.095902963363784],[-119.75269136670963,38.096008289502386],[-119.7523580271742,38.09610455731236],[-119.75202067130913,38.09619165146307],[-119.75167970326355,38.09626946761372],[-119.75133553151831,38.09633791253846],[-119.75079189917265,38.096430395461866],[-119.75024456509084,38.09650805794227],[-119.74969417613639,38.09657080819418],[-119.74914138278884,38.09661857205589],[-119.74858683837374,38.09665129307736],[-119.74803119828948,38.096668932586915],[-119.74747511923123,38.096671469737196],[-119.74691925841395,38.09665890152958],[-119.74636427279414,38.09663124281796],[-119.74581081829243,38.096588526291065],[-119.74568820575925,38.09657904126773],[-119.74556525660007,38.096572849295846],[-119.74544211238887,38.0965699575054],[-119.7453189149241,38.09657036922622],[-119.7451958060656,38.09657408398424],[-119.7450729275711,38.09658109750194],[-119.74495042093326,38.0965914017034],[-119.74482842721665,38.09660498472342],[-119.74470708689545,38.096621830921364],[-119.74458653969171,38.096641920899025],[-119.74446692441451,38.09666523152303],[-119.74434837880027,38.09669173595145],[-119.74423103935402,38.09672140366467],[-119.7441150411924,38.096754200500555],[-119.74400051788817,38.09679008869376],[-119.74388760131622,38.096829026919245],[-119.74363849908387,38.09691488330738],[-119.74338581607795,38.09699393593806],[-119.74312984977728,38.097066091741205],[-119.74287090152895,38.097131265766116],[-119.74260927619338,38.09718938128182],[-119.74234528178505,38.09724036986723],[-119.74207922910972,38.09728417149196],[-119.74181143139819,38.09732073458686],[-119.74154220393731,38.09735001610493],[-119.74127186369857,38.097371981571996],[-119.74100072896445,38.09738660512727],[-119.7407291189536,38.09739386955385],[-119.74045735344467,38.09739376629909],[-119.74018575239953,38.097386295484526],[-119.73991463558619,38.097371465905866],[-119.73964432220222,38.09734929502249],[-119.73937513049852,38.09731980893706],[-119.73910737740438,38.09728304236464],[-119.73884137815406,38.09723903859174],[-119.73879212575464,38.09722950448729],[-119.73874330406468,38.097218674977796],[-119.73869496762616,38.097206562161674],[-119.73864717043885,38.09719317957097],[-119.7385999659,38.097178542156314],[-119.73855340674466,38.09716266627013],[-119.7385075449868,38.09714556964848],[-119.7384624318612,38.09712727139108],[-119.73841811776613,38.09710779194013],[-119.73837465220716,38.09708715305741],[-119.7383320837417,38.09706537779988],[-119.73829045992491,38.0970424904941],[-119.73824982725648,38.097018516708864],[-119.73821023112868,38.09699348322676],[-119.73817171577566,38.09696741801418],[-119.73813432422405,38.096940350190096],[-119.73809809824489,38.09691230999357],[-119.73806307830692,38.096883328749826],[-119.73802930353143,38.09685343883543],[-119.7379968116485,38.09682267364198],[-119.73796563895493,38.096791067538916],[-119.7379167576389,38.09674155771559],[-119.7378657489098,38.09669340681561],[-119.73781267321954,38.0966466719001],[-119.73775759346906,38.09660140835215],[-119.73770057493385,38.09655766981103],[-119.73764168518656,38.09651550810875],[-119.73758099401695,38.096474973208636],[-119.73751857334922,38.09643611314607],[-119.73745449715669,38.096398973971645],[-119.73738884137417,38.09636359969655],[-119.73732168380806,38.096330032240466],[-119.73725310404402,38.09629831138185],[-119.73718318335278,38.096268474710904],[-119.7371120045938,38.09624055758486],[-119.73703965211706,38.096214593086316],[-119.73696621166316,38.096190611983815],[-119.73689177026175,38.096168642695595],[-119.73681641612829,38.09614871125572],[-119.7367402385597,38.09613084128345],[-119.7366633278285,38.09611505395503],[-119.73658577507572,38.0961013679788],[-119.73650767220317,38.09608979957289],[-119.73642911176432,38.0960803624461],[-119.73635018685479,38.09607306778161],[-119.736270991002,38.0960679242237],[-119.7361916180544,38.09606493786762],[-119.7361121620702,38.096064112252236],[-119.73603271720604,38.096065448355915],[-119.73595337760531,38.09606894459533],[-119.73587423728678,38.096074596827414],[-119.73579539003309,38.09608239835415],[-119.73571692927962,38.0960923399306],[-119.7356389480039,38.09610440977577],[-119.7355615386154,38.09611859358669],[-119.73548479284597,38.096134874555254],[-119.73540880164127,38.09615323338817],[-119.735333655053,38.096173648329845],[-119.73525944213218,38.09619609518812],[-119.73518625082362,38.09622054736289],[-119.73511416786174,38.09624697587778],[-119.73504327866783,38.096275349414285],[-119.73497366724882,38.09630563434904],[-119.7349054160977,38.09633779479347],[-119.73483860609589,38.09637179263654],[-119.73477331641728,38.09640758758973],[-119.73470962443443,38.09644513723481],[-119.73464760562699,38.09648439707415],[-119.73458733349213,38.096525320583424],[-119.73452887945757,38.096567859266706],[-119.73447231279677,38.09661196271388],[-119.73441770054703,38.09665757866052],[-119.73436510742992,38.096704653049706],[-119.73337808151946,38.097592269278124],[-119.7323580604639,38.09845628417244],[-119.73130594669567,38.099295932372875],[-119.73022267117163,38.10011047007897],[-119.72910919254947,38.10089917571062],[-119.72796649633908,38.10166135054956],[-119.72774295861065,38.101811226837505],[-119.7275261735634,38.10196717438029],[-119.72731640516018,38.102129003322915],[-119.72711390882665,38.10229651664883],[-119.72691893114013,38.10246951041989],[-119.72673170952949,38.10264777402429],[-119.72655247198591,38.10283109043302],[-119.72638143678509,38.1030192364638],[-119.7262188122216,38.103211983052795],[-119.72606479635478,38.10340909553328],[-119.72591957676764,38.10361033392128],[-119.7257833303381,38.10381545320753],[-119.72565622302345,38.10402420365583],[-119.72553840965793,38.104236331106804],[-119.7253327379881,38.104607284258776],[-119.72511139400375,38.10497256227548],[-119.72487462788736,38.10533175190908],[-119.72462270728055,38.105684446793916],[-119.72435591698198,38.10603024790637],[-119.72407455862582,38.10636876401676],[-119.72377895034136,38.10669961213223],[-119.72346942639342,38.10702241793046],[-119.72314633680497,38.10733681618344],[-119.72281004696134,38.1076424511711],[-119.7224609371974,38.107938977084174],[-119.72209940236733,38.108226058415774],[-119.72172585139829,38.108503370341474],[-119.72134070682779,38.10877059908701],[-119.72094440432568,38.10902744228397],[-119.7205373922013,38.10927360931199],[-119.72012013089603,38.10950882162821],[-119.71959981203979,38.10980172186235],[-119.71909174636326,38.11010775842762],[-119.71859646497506,38.11042661149769],[-119.7181144856434,38.11075794784804],[-119.71764631225517,38.11110142120376],[-119.71719243428925,38.11145667260094],[-119.71675332630493,38.11182333076127],[-119.71632944744574,38.11220101247955],[-119.7161731898903,38.112350003821646],[-119.71602355687561,38.11250318154647],[-119.71588072797373,38.112660361870226],[-119.71574487459633,38.112821356205615],[-119.71561615978898,38.11298597138803],[-119.71549473803543,38.11315400990719],[-119.71538075507199,38.11332527014407],[-119.71527434771248,38.11349954661272],[-119.71517564368405,38.11367663020671],[-119.71508476147348,38.113856308450046],[-119.71500181018497,38.11403836575194],[-119.71492688940883,38.11422258366548],[-119.71486008910193,38.11440874114969],[-119.71480148947926,38.11459661483463],[-119.71475116091756,38.11478597928948],[-119.71470916387052,38.114976607292895],[-119.71467554879608,38.11516827010569],[-119.71465035609528,38.1153607377452],[-119.71463361606386,38.115553779261276],[-119.71462534885525,38.115747163013374],[-119.7146255644563,38.115940656948524],[-119.71463426267485,38.11613402887972],[-119.7146514331397,38.11632704676462],[-119.71467705531275,38.116519478983896],[-119.71471109851323,38.11671109461931],[-119.71475352195436,38.1169016637307],[-119.7147693649141,38.11697280620515],[-119.71478209032578,38.117044338302264],[-119.71479168301578,38.11711617477899],[-119.71479813154355,38.11718823002922],[-119.71480142821528,38.117260418185985],[-119.71480156909315,38.11733265322362],[-119.71479855400003,38.11740484906041],[-119.71479238651976,38.11747691966103],[-119.71478307399288,38.117548779139256],[-119.71477062750796,38.117620341860125],[-119.71475506188848,38.117691522542096],[-119.71473639567513,38.11776223635865],[-119.71471465110373,38.11783239903949],[-119.71468985407893,38.117901926970774],[-119.71466203414312,38.11797073729489],[-119.71463122444156,38.11803874800922],[-119.7145974616827,38.11810587806383],[-119.71456078609452,38.11817204745804],[-119.71452124137672,38.11823717733584],[-119.71447887464849,38.11830119007983],[-119.71443373639264,38.11836400940373],[-119.71438588039517,38.11842556044332],[-119.71433536368141,38.118485769845655],[-119.71428224644802,38.11854456585655],[-119.71422659199125,38.11860187840593],[-119.71416846663158,38.118657639191646],[-119.71410793963459,38.118711781760595],[-119.71404508312861,38.11876424158808],[-119.71397997201855,38.11881495615467],[-119.71391268389677,38.11886386502077],[-119.71384329895065,38.11891090989864],[-119.71377189986691,38.118956034721805],[-119.71369857173315,38.118999185712006],[-119.7136234019364,38.11904031144321],[-119.71354648005897,38.11907936290295],[-119.71346789777176,38.11911629355076],[-119.71338774872488,38.11915105937361],[-119.71330612843609,38.119183618938415],[-119.71322313417697,38.11921393344138],[-119.71313886485689,38.119241966754295],[-119.71305342090524,38.11926768546761],[-119.71296690415157,38.11929105893021],[-119.71240638896795,38.119442440288594],[-119.71185277987666,38.119608931166844],[-119.71130672920611,38.119790335398086],[-119.71076888039272,38.11998643924239],[-119.71023986722385,38.12019701163823],[-119.70972031309174,38.1204218044744],[-119.70921083025985,38.12066055288183],[-119.70871201914188,38.12091297554531],[-119.708224467595,38.12117877503442],[-119.70774875022762,38.12145763815362],[-119.70728542772252,38.121749236310734],[-119.70683504617665,38.12205322590358],[-119.70639813645752,38.12236924872448],[-119.7059752135779,38.12269693238172],[-119.70556677608876,38.12303589073787],[-119.70517330549157,38.123385724364255],[-119.70479526567063,38.12374602101119],[-119.70443310234606,38.12411635609317],[-119.70408724254797,38.124496293188756],[-119.7040026103356,38.12458925269725],[-119.7039139755101,38.12467985462076],[-119.70382144321671,38.12476799146592],[-119.70372512322592,38.12485355866361],[-119.70362512980331,38.12493645469313],[-119.70352158157401,38.12501658120258],[-119.70341460138192,38.12509384312571],[-119.70330431614406,38.125168148794664],[-119.70319085669986,38.12523941004878],[-119.70307435765609,38.125307542339186],[-119.70295495722705,38.12537246482927],[-119.70283279707053,38.12543410049046],[-119.7027080221198,38.12549237619375],[-119.70258078041162,38.12554722279649],[-119.70245122291048,38.12559857522437],[-119.70231950332953,38.12564637254877],[-119.70218577794815,38.12569055805901],[-119.7020502054264,38.12573107932961],[-119.70191294661684,38.125767888282674],[-119.7017741643735,38.12580094124474],[-119.70163402335871,38.12583019899881],[-119.70149268984756,38.12585562683082],[-119.70135033153053,38.12587719457081],[-119.70120711731468,38.12589487662878],[-119.70106321712282,38.12590865202505],[-119.70091880169207,38.12591850441521],[-119.70077404237114,38.12592442210937],[-119.7006291109169,38.12592639808627],[-119.7003150890051,38.1259305520643],[-119.70000141811741,38.12594299226016],[-119.69968844852457,38.125963704782],[-119.69937652971485,38.12599266650043],[-119.69906601000433,38.12602984507412],[-119.69875723614797,38.12607519898608],[-119.698450552953,38.12612867758988],[-119.6981463028941,38.126190221166176],[-119.69784482573124,38.126259760989356],[-119.69754645813063,38.1263372194042],[-119.697251533289,38.126422509912544],[-119.69696038056195,38.126515537269746],[-119.6966733250961,38.126616197591076],[-119.69639068746665,38.12672437846745],[-119.69611278331922,38.126839959091015],[-119.69583992301783,38.12696281038986],[-119.69557241129834,38.1270927951721],[-119.69532163108163,38.12722415659336],[-119.69507677527619,38.127362316566796],[-119.69483813913665,38.1275071085133],[-119.69460601042354,38.12765835785667],[-119.69438066905654,38.127815882233946],[-119.69416238677685,38.127979491715074],[-119.69395142681977,38.12814898903186],[-119.693748043597,38.12832416981559],[-119.69355248239007,38.12850482284343],[-119.69336497905435,38.12869073029283],[-119.69318575973455,38.128881668004134],[-119.69301504059194,38.129077405750614],[-119.69285302754352,38.12927770751607],[-119.69269991601345,38.12948233177911],[-119.6925558906973,38.129691031804484],[-119.69242112533894,38.12990355594022],[-119.69229578252083,38.13011964792112],[-119.69218001346766,38.13033904717757],[-119.69207395786364,38.1305614891497],[-119.69202620513158,38.13067296639695],[-119.69198314749859,38.130785630480375],[-119.6919448321243,38.13089935805895],[-119.69191130097727,38.131014024626865],[-119.69188259078896,38.13112950464971],[-119.69185873301343,38.13124567170201],[-119.6918397537928,38.13136239860551],[-119.69182567392852,38.13147955756845],[-119.69181650885851,38.13159702032546],[-119.69181226864016,38.131714658278014],[-119.69181295793918,38.131832342635114],[-119.6918185760245,38.13194994455443],[-119.69182155501443,38.1320138399295],[-119.6918217093852,38.13207777849866],[-119.69181903894139,38.132141682381096],[-119.69181354692847,38.132205473738125],[-119.69180524002877,38.13226907486788],[-119.69179412835335,38.132332408300044],[-119.69178022542985,38.132395396890175],[-119.69176354818589,38.132457963913616],[-119.6917441169286,38.132520033159096],[-119.69172195531985,38.13258152902148],[-119.6916970903475,38.132642376593786],[-119.69166955229258,38.132702501758665],[-119.6916393746923,38.132761831278415],[-119.69160659429942,38.1328202928844],[-119.69157125103737,38.132877815364985],[-119.69153338795174,38.132934328652354],[-119.6914930511577,38.132989763907766],[-119.69145028978411,38.13304405360551],[-119.6914051559135,38.13309713161517],[-119.69135770451864,38.13314893328209],[-119.69130799339577,38.13319939550624],[-119.69125608309399,38.13324845681903],[-119.69120203684167,38.13329605745825],[-119.69114592046942,38.133342139440835],[-119.69108780232986,38.133386646633475],[-119.69102775321436,38.13342952482108],[-119.69096584626686,38.1334707217728],[-119.69090215689477,38.13351018730563],[-119.69083676267707,38.13354787334559],[-119.69076974326983,38.13358373398622],[-119.69070118030916,38.13361772554466],[-119.69063115731186,38.133649806614706],[-119.69055975957343,38.13367993811733],[-119.69048707406448,38.13370808334834],[-119.69041318932452,38.133734208023],[-119.6903381953542,38.13375828031792],[-119.69026218350564,38.13378027090964],[-119.69018524637116,38.13380015301061],[-119.69010747767044,38.13381790240161],[-119.6900289721363,38.13383349746137],[-119.6899498253994,38.13384691919289],[-119.6898701338716,38.1338581512466],[-119.6897899946285,38.13386717994023],[-119.68970950529126,38.13387399427555],[-119.68962876390762,38.133878585951685],[-119.68954786883238,38.13388094937533],[-119.68946691860758,38.13388108166749],[-119.68938601184247,38.133878982667],[-119.68930524709342,38.133874654930786],[-119.68922472274362,38.13386810373062],[-119.68914453688346,38.1338593370468],[-119.68906478719092,38.13384836555844],[-119.6889855708125,38.133835202630394],[-119.68890698424492,38.13381986429697],[-119.6888291232175,38.13380236924243],[-119.68875208257558,38.13378273877826],[-119.688675956165,38.13376099681709],[-119.68857742784046,38.13373283209203],[-119.68847773330805,38.13370735604485],[-119.68837699013146,38.13368459871773],[-119.6882753171107,38.13366458694674],[-119.68817283414187,38.13364734433032],[-119.68806966207597,38.13363289120147],[-119.68796592257638,38.133621244603674],[-119.68786173797535,38.133612418270864],[-119.68775723112991,38.133606422611365],[-119.68765252527699,38.133603264695324],[-119.68754774388803,38.133602948246704],[-119.6874430105236,38.13360547363863],[-119.68733844868765,38.13361083789309],[-119.68723418168193,38.13361903468444],[-119.68713033246051,38.1336300543468],[-119.68702702348513,38.133643883885526],[-119.68692437658048,38.13366050699244],[-119.68682251279083,38.13367990406513],[-119.68672155223722,38.133702052230014],[-119.68662161397583,38.13372692536937],[-119.6865228158578,38.13375449415201],[-119.68642527438999,38.13378472606801],[-119.6863291045979,38.13381758546687],[-119.68623441988989,38.13385303359967],[-119.68614133192355,38.13389102866473],[-119.68604995047404,38.13393152585684],[-119.68596038330463,38.13397447742012],[-119.68587273603968,38.13401983270435],[-119.68578711204009,38.13406753822458],[-119.6857036122814,38.13411753772432],[-119.68562233523474,38.13416977224176],[-119.68554337675074,38.13422418017936],[-119.68546682994648,38.1342806973764],[-119.68539278509566,38.13433925718473],[-119.68532132952217,38.13439979054717],[-119.68525254749709,38.134462226079144],[-119.6851865201393,38.1345264901527],[-119.68512332531986,38.13459250698339],[-119.68506303757012,38.134660198719544],[-119.68500572799371,38.13472948553419],[-119.68495146418284,38.13480028571899],[-119.68490031013847,38.134872515780835],[-119.68473005632944,38.13505886987914],[-119.6845516906178,38.13524042905636],[-119.68436542924007,38.1354169731452],[-119.6841714980123,38.13558828805839],[-119.68397013205643,38.135754166048436],[-119.68376157551516,38.135914405959674],[-119.68354608125604,38.13606881347224],[-119.68332391056484,38.13621720133805],[-119.68309533282867,38.13635938960781],[-119.68286062520937,38.13649520584949],[-119.68262007230727,38.1366244853575],[-119.68237396581613,38.136747071352616],[-119.68212260416901,38.13686281517216],[-119.68186629217661,38.136971576450456],[-119.68160534065723,38.13707322328917],[-119.68134006605968,38.13716763241734],[-119.68107079007949,38.137254689341034],[-119.68079783926837,38.13733428848227],[-119.68052154463804,38.13740633330706],[-119.68024224125855,38.137470736442815],[-119.67996026785167,38.137527419784085],[-119.67967596637976,38.13757631458755],[-119.6793896816308,38.1376173615554],[-119.67910176079992,38.13765051090731],[-119.67881255306804,38.13767572244081],[-119.67852240917804,38.13769296558019],[-119.66969561382916,38.13908513508714],[-119.66608693848666,38.139079992283165],[-119.66479296310798,38.13924430277057],[-119.66350710576333,38.13944446963142],[-119.66223095827692,38.13968024507468],[-119.66096610049537,38.139951337226016],[-119.65971409833804,38.14025741048805],[-119.65847650186488,38.1405980859543],[-119.65725484336308,38.140972941876754],[-119.6560506354556,38.14138151418618],[-119.65555505256374,38.14155021788659],[-119.65505273362339,38.141706002848785],[-119.65454421842972,38.14184870165433],[-119.6540300534469,38.14197816094718],[-119.65351079122003,38.14209424159892],[-119.65298698978046,38.142196818858345],[-119.65245921204541,38.1422857824858],[-119.651928025212,38.14236103687185],[-119.65139400014692,38.14242250114008],[-119.65124801976215,38.142439429624375],[-119.65110287705464,38.1424603744089],[-119.65095874912433,38.1424853099373],[-119.65081581183335,38.142514205783854],[-119.65067423959172,38.14254702669048],[-119.65053420514444,38.14258373260973],[-119.65039587936087,38.14262427875381],[-119.65025943102633,38.142668615648915],[-119.65012502663608,38.14271668919586],[-119.64999283019243,38.14276844073591],[-119.64986300300455,38.14282380712233],[-119.64973570349171,38.142882720797466],[-119.64961108698995,38.14294510987517],[-119.64948930556278,38.143010898228376],[-119.64937050781546,38.14308000558203],[-119.64925483871376,38.14315234761106],[-119.6491424394071,38.14322783604312],[-119.64887024264131,38.143410664111826],[-119.64859014778494,38.14358589460795],[-119.64830249464985,38.143753314908096],[-119.64800763222645,38.14391272186435],[-119.64770591825992,38.14406392205095],[-119.64739771881612,38.14420673199911],[-119.64708340783719,38.144340978419976],[-119.64676336668751,38.144466498414936],[-119.64643798369087,38.14458313967345],[-119.64610765365883,38.14469076065815],[-119.64577277741134,38.144789230776645],[-119.6454337612901,38.144878430540125],[-119.64509101666505,38.14495825170852],[-119.64474495943482,38.14502859742201],[-119.64439600952159,38.1450893823185],[-119.64408299280637,38.145143780672065],[-119.64377248667931,38.145206514817865],[-119.64346484694153,38.14527751287135],[-119.64316042611252,38.145356693478526],[-119.64285957302657,38.14544396590899],[-119.64256263243334,38.145539230159855],[-119.64226994460319,38.14564237707031],[-119.64198184493733,38.14575328844648],[-119.64169866358394,38.14587183719682],[-119.64142072505992,38.14599788747769],[-119.64114834787927,38.14613129484873],[-119.64088184418833,38.14627190643841],[-119.64062151940811,38.14641956111898],[-119.64036767188458,38.146574089691036],[-119.64012059254665,38.146735315077166],[-119.63988056457303,38.146903052524884],[-119.63964786306768,38.14707710981793],[-119.63951946161413,38.14717303797195],[-119.63938688312584,38.14726535482049],[-119.63925029036785,38.14735394701693],[-119.63910985103573,38.14743870578732],[-119.63896573754968,38.1475195270641],[-119.63881812684286,38.147596311613825],[-119.6386672001441,38.14766896515913],[-119.63851314275537,38.14773739849452],[-119.63835614382413,38.14780152759589],[-119.63819639611117,38.14786127372381],[-119.63803409575372,38.14791656352015],[-119.63786944202467,38.147967329098286],[-119.63770263708773,38.148013508126404],[-119.63753388574916,38.14805504390421],[-119.63736339520625,38.148091885432336],[-119.63719137479266,38.14812398747524],[-119.63701803572147,38.148151310616626],[-119.63684359082559,38.14817382130791],[-119.63666825429635,38.14819149190941],[-119.63649224142047,38.148204300724345],[-119.63631576831543,38.14821223202542],[-119.63613905166413,38.14821527607421],[-119.63596230844867,38.148213429133065],[-119.63578575568373,38.14820669346979],[-119.63560961015006,38.1481950773547],[-119.63503772766558,38.148157033985335],[-119.63446455010256,38.148134179181305],[-119.63389072401893,38.148126538723645],[-119.63331689670291,38.14813412123108],[-119.63274371544412,38.14815691815024],[-119.63217182680465,38.1481949037654],[-119.63160187589082,38.148248035227404],[-119.63103450562676,38.1483162526019],[-119.63047035603026,38.14839947893683],[-119.62991006349203,38.14849762034913],[-119.62935426005882,38.14861056613051],[-119.62880357272168,38.14873818887204],[-119.62825862270952,38.148880344607704],[-119.62772002478945,38.14903687297656],[-119.62718838657422,38.14920759740337],[-119.62701885373731,38.149267453455984],[-119.6268520624657,38.1493319342075],[-119.626688214988,38.14940096147986],[-119.62652750996533,38.14947445158247],[-119.62637014225058,38.14955231541361],[-119.62621630265213,38.14963445856844],[-119.62606617770261,38.149720781453446],[-119.62591994943273,38.149811179406974],[-119.62577779515064,38.14990554282634],[-119.625639887227,38.15000375730045],[-119.62550639288591,38.15010570374852],[-119.62537747400226,38.15021125856446],[-119.62525328690535,38.150320293766654],[-119.62513398218937,38.15043267715301],[-119.62501970453071,38.150548272461336],[-119.62491059251265,38.15066693953439],[-119.624806778457,38.15078853448975],[-119.62470838826385,38.15091290989441],[-119.62461554125872,38.151039914943176],[-119.62452835004775,38.15116939564179],[-119.62444692038109,38.15130119499336],[-119.6243713510246,38.151435153188814],[-119.62430173363995,38.151571107800606],[-119.6242381526733,38.15170889397953],[-119.62418068525282,38.1518483446547],[-119.62412940109502,38.151989290736054],[-119.62408436241999,38.152131561319266],[-119.62404562387593,38.15227498389306],[-119.62401323247258,38.1524193845483],[-119.62398722752411,38.152564588188895],[-119.62396764060126,38.15271041874402],[-119.6239544954929,38.152856699381644],[-119.62394780817696,38.15300325272301],[-119.62394758680091,38.153149901057574],[-119.62395383167168,38.1532964665586],[-119.6239665352551,38.15344277149878],[-119.62398568218481,38.153588638465706],[-119.62401124928078,38.15373389057703],[-119.62410251269964,38.154251016841194],[-119.62417139037133,38.15477029977088],[-119.62421780170106,38.15529113530768],[-119.62424169222417,38.15581291757457],[-119.62424303367159,38.156335039580696],[-119.62422182400493,38.15685689392736],[-119.62417808742119,38.157377873514676],[-119.62411187432669,38.15789737224783],[-119.62402326128073,38.15841478574238],[-119.62391235090872,38.15892951202743],[-119.62377927178488,38.159440952246136],[-119.62376757857147,38.15948592585294],[-119.62375785242561,38.15953119054287],[-119.62375010487249,38.15957669269533],[-119.62374434509353,38.15962237840841],[-119.62374057991549,38.159668193562666],[-119.6237388138023,38.15971408388513],[-119.6237390488499,38.1597599950138],[-119.62374128478353,38.15980587256182],[-119.62374551895822,38.15985166218212],[-119.62375174636179,38.159897309631596],[-119.62375995962087,38.15994276083555],[-119.6237701490095,38.15998796195159],[-119.62378230246074,38.16003285943355],[-119.62379640558089,38.16007740009479],[-119.62381244166653,38.16012153117132],[-119.62383039172434,38.16016520038426],[-119.62385023449349,38.160208356001775],[-119.62387194647089,38.160250946900355],[-119.623895501939,38.160292922625395],[-119.62392087299631,38.16033423345096],[-119.62394802959028,38.160374830438684],[-119.62397693955305,38.16041466549575],[-119.62400756863947,38.160453691431954],[-119.62404104214215,38.16049305194571],[-119.62407275391024,38.16053331162636],[-119.62410266523678,38.1605744213371],[-119.62413073961197,38.1606163309036],[-119.62415694276797,38.16065898917526],[-119.6241812427205,38.16070234408757],[-119.62420360980799,38.16074634272564],[-119.62422401672784,38.16079093138886],[-119.62424243856962,38.16083605565643],[-119.62425885284567,38.16088166045369],[-119.62427323951843,38.160927690119344],[-119.6242855810249,38.16097408847358],[-119.62429586229827,38.161020798886355],[-119.62430407078608,38.16106776434669],[-119.62431019646574,38.16111492753224],[-119.62431423185673,38.161162230879185],[-119.62431617202975,38.16120961665254],[-119.62431601461267,38.161257027016646],[-119.62431375979365,38.16130440410563],[-119.62430941032069,38.16135169009421],[-119.6243029714985,38.16139882726816],[-119.62429445118191,38.161445758094764],[-119.62428385976635,38.161492425293055],[-119.62427121017518,38.16153877190376],[-119.62425651784395,38.161584741358766],[-119.62423980070152,38.16163027755019],[-119.62422107914831,38.16167532489888],[-119.62420037603128,38.16171982842222],[-119.62417771661613,38.16176373380132],[-119.62415312855651,38.16180698744717],[-119.62412664186023,38.16184953656625],[-119.62409828885264,38.16189132922479],[-119.62406810413721,38.161932314412255],[-119.62403612455331,38.16197244210365],[-119.6240023891313,38.16201166332043],[-119.62396693904479,38.16204993019045],[-119.6239298175605,38.1620871960064],[-119.62389106998536,38.162123415282615],[-119.62385074361131,38.16215854381084],[-119.62380888765756,38.16219253871409],[-119.62376555321046,38.162225358498965],[-119.6237207931612,38.16225696310633],[-119.62367466214127,38.16228731396028],[-119.6236272164557,38.162316374015106],[-119.62357851401444,38.162344107800614],[-119.62352861426156,38.16237048146538],[-119.62347757810284,38.16239546281809],[-119.62342546783121,38.16241902136685],[-119.62337234705095,38.16244112835636],[-119.62331828059989,38.16246175680311],[-119.62326333447028,38.1624808815282],[-119.62320757572829,38.16249847918815],[-119.62315107243212,38.16251452830343],[-119.62309389354891,38.162529009284604],[-119.62303610887047,38.162541904456255],[-119.6229777889283,38.162553198078626],[-119.62291900490719,38.16256287636679],[-119.62285982855862,38.16257092750748],[-119.62280033211287,38.16257734167348],[-119.62274058819114,38.16258211103572],[-119.62268066971663,38.16258522977271],[-119.62248240104378,38.16256367985598],[-119.62228330366791,38.16254758289248],[-119.62208361808406,38.162536958326164],[-119.62188358549727,38.162531818990786],[-119.62168344753152,38.162532171094234],[-119.62148344593807,38.16253801421122],[-119.62128382230348,38.16254934128369],[-119.62108481775806,38.162566138629366],[-119.6208866726847,38.16258838595821],[-119.62068962642869,38.16261605639702],[-119.62049391700873,38.162649116521834],[-119.62029978082965,38.162687526398216],[-119.62010745239691,38.1627312396296],[-119.61991716403348,38.16278020341317],[-119.6197291455994,38.16283435860368],[-119.61954362421423,38.16289363978487],[-119.61936082398275,38.16295797534839],[-119.6191809657245,38.16302728758037],[-119.61900426670701,38.16310149275505],[-119.61883094038348,38.16318050123608],[-119.61866119613512,38.163264217584604],[-119.61849523901809,38.163352540674566],[-119.6183332695161,38.16344536381472],[-119.61817548329803,38.16354257487764],[-119.6180220709818,38.16364405643486],[-119.61787321790405,38.163749685898836],[-119.61772910389622,38.1638593356709],[-119.61758990306741,38.16397287329534],[-119.61745578359393,38.16409016161942],[-119.61732690751619,38.16421105895885],[-119.6172034305429,38.164335419269015],[-119.61708550186289,38.16446309232126],[-119.6169732639648,38.164593923884325],[-119.61686685246495,38.16472775591061],[-119.61676639594332,38.16486442672705],[-119.61667201578811,38.16500377123033],[-119.61658382604912,38.165145621086296],[-119.61650193329967,38.16528980493328],[-119.61642643650782,38.16543614858902],[-119.61635742691658,38.165584475261156],[-119.61629498793363,38.16573460576055],[-119.61623919503027,38.1658863587179],[-119.61619011565013,38.166039550802736],[-119.61614780912748,38.16619399694488],[-119.61611232661542,38.166349510558014],[-119.6160837110238,38.16650590376506],[-119.61606199696719,38.16666298762505],[-119.6160472107229,38.166820572361566],[-119.61603937019899,38.16697846759176],[-119.61603848491245,38.1671364825566],[-119.61604455597741,38.16729442635107],[-119.61605757610371,38.16745210815504],[-119.61607752960533,38.16760933746369],[-119.6161043924193,38.167765924317635],[-119.6161381321344,38.16792167953259],[-119.61617870803025,38.16807641492783],[-119.61622607112616,38.168229943553634],[-119.61628016424024,38.16838207991707],[-119.61629355780845,38.168418917489774],[-119.616305310132,38.1684561025596],[-119.61631540680908,38.168493589565934],[-119.61632383546622,38.168531332578176],[-119.61633058577378,38.168569285352],[-119.61633564945835,38.168607401385955],[-119.6163390203131,38.168645633978535],[-119.6163406942052,38.16868393628532],[-119.61634066908114,38.168722261376445],[-119.61633894496904,38.168760562293976],[-119.61633552397872,38.16879879210961],[-119.61633041029917,38.16883690398204],[-119.61632361019329,38.16887485121442],[-119.61631513199045,38.168912587311546],[-119.61630498607605,38.16895006603686],[-119.61629318487901,38.16898724146904],[-119.61627974285642,38.16902406805842],[-119.61626467647592,38.169060500682534],[-119.61624800419547,38.169096494701655],[-119.61622974644081,38.16913200601343],[-119.61620992558035,38.16916699110683],[-119.6161885658979,38.1692014071155],[-119.61616569356283,38.16923521187046],[-119.61614133659805,38.16926836395144],[-119.61611552484564,38.16930082273797],[-119.61608828993035,38.16933254845891],[-119.61605966522083,38.16936350224132],[-119.61602968578875,38.16939364615806],[-119.61599838836582,38.16942294327427],[-119.61596581129885,38.16945135769254],[-119.61593199450266,38.1694788545971],[-119.61589697941125,38.16950540029631],[-119.61586080892707,38.16953096226393],[-119.61582352736832,38.169555509179126],[-119.61578518041479,38.16957901096476],[-119.61536401194866,38.16981936762379],[-119.61493290542,38.1700484815469],[-119.61449234214332,38.17026609689125],[-119.61404281400652,38.17047197065189],[-119.61358482292128,38.17066587293338],[-119.61311888026209,38.17084758720696],[-119.61264550629488,38.171016910552524],[-119.61216522959536,38.17117365388563],[-119.61167858645828,38.17131764216888],[-119.60981672778261,38.17241469913454],[-119.6079982895382,38.17355627007108],[-119.60622497984367,38.17474128390567],[-119.60449846471569,38.17596862875391],[-119.60282036650621,38.17723715295765],[-119.60119226237956,38.178545666159664],[-119.59961568283094,38.17989294041504],[-119.59905089836222,38.18037410855933],[-119.59846590658424,38.1808399939857],[-119.59786137057378,38.18129006832921],[-119.5972379756112,38.18172382114703],[-119.5965964284031,38.1821407604985],[-119.5959374562812,38.182540413503965],[-119.59526180637705,38.182922326882014],[-119.59457024477433,38.183286067464664],[-119.59386355563954,38.183631222689435],[-119.59314254033168,38.18395740106827],[-119.5924080164925,38.184264232632465],[-119.591660817118,38.18455136935311],[-119.59090178961233,38.184818485536645],[-119.59073499482923,38.18487186490928],[-119.59056595242828,38.18492064126361],[-119.59039486624961,38.18496475578151],[-119.59022194259903,38.18500415526637],[-119.59004738999923,38.18503879220726],[-119.58987141893815,38.18506862483621],[-119.58969424161499,38.185093617178666],[-119.58951607168437,38.18511373909678],[-119.58933712399842,38.185128966325884],[-119.58915761434764,38.18513928050371],[-119.58897775920053,38.185144669192574],[-119.5887977754424,38.18514512589431],[-119.58861788011377,38.1851406500582],[-119.58843829014845,38.18513124708157],[-119.58825922211183,38.185116928303344],[-119.58808089193957,38.18509771099031],[-119.5879035146772,38.185073618316295],[-119.5877273042205,38.185044679334226],[-119.58755247305751,38.18501092894103],[-119.58737923201228,38.18497240783565],[-119.58720778999042,38.18492916246982],[-119.587038353727,38.184881244992056],[-119.58687112753738,38.18482871318476],[-119.58670631307052,38.18477163039454],[-119.58654410906578,38.184710065455704],[-119.58638471111337,38.18464409260732],[-119.5862283114181,38.184573791403565],[-119.58607509856778,38.18449924661778],[-119.58592525730566,38.18442054814023],[-119.58577896830768,38.184337790869655],[-119.58563640796439,38.184251074598755],[-119.58549774816852,38.18416050389382],[-119.58536315610735,38.18406618796866],[-119.5852327940614,38.18396824055275],[-119.58510681920848,38.183866779754126],[-119.5849853834344,38.18376192791685],[-119.58410969797164,38.18295222080383],[-119.58326859200264,38.18211999390898],[-119.58246299350036,38.18126616656432],[-119.5816937911206,38.180391681931624],[-119.58096183322353,38.17949750595819],[-119.5802679269402,38.178584626307455],[-119.57961283728525,38.177654051265954],[-119.57955728896479,38.17756839522615],[-119.57950556075127,38.17748126137245],[-119.57945771562899,38.177392755821806],[-119.57941381185245,38.17730298636147],[-119.57937390287567,38.17721206231742],[-119.57933803728692,38.17712009442144],[-119.57930625874975,38.17702719467613],[-119.57927860594995,38.17693347621853],[-119.57925511254828,38.176839053182334],[-119.57923580713978,38.17674404055883],[-119.57922071321892,38.17664855405697],[-119.579209849151,38.17655270996224],[-119.57920322815004,38.176456624995254],[-119.57920085826257,38.176360416169516],[-119.57920274235809,38.1762642006489],[-119.57920887812551,38.176168095605014],[-119.57921925807614,38.1760722180744],[-119.57923386955285,38.17597668481622],[-119.57925269474556,38.17588161216979],[-119.57927571071303,38.1757871159132],[-119.57930288941088,38.175693311122124],[-119.57933419772573,38.1756003120297],[-119.57936959751576,38.17550823188762],[-119.57940904565709,38.17541718282796],[-119.57945249409646,38.175327275726836],[-119.57949988990968,38.175238620069365],[-119.57955117536632,38.1751513238163],[-119.57960628799992,38.175065493272534],[-119.57966516068421,38.174981232957876],[-119.57972772171486,38.174898645479516],[-119.57979389489681,38.17481783140729],[-119.5798635996372,38.1747388891512],[-119.57993675104348,38.17466191484151],[-119.58001326002683,38.17458700221181],[-119.58009303341063,38.17451424248482],[-119.58017597404408,38.17444372426141],[-119.5802619809204,38.17437553341264],[-119.58035094929983,38.17430975297528],[-119.58044277083731,38.17424646305074],[-119.58053733371433,38.17418574070744],[-119.5805901488366,38.17415185601317],[-119.58064147271674,38.17411657220965],[-119.5806912459097,38.17407993016519],[-119.58073941076687,38.17404197232128],[-119.58078591150274,38.17400274264336],[-119.58083069425959,38.173962286569974],[-119.58087370716986,38.17392065096004],[-119.58091490041615,38.17387788403866],[-119.58095422628901,38.17383403534117],[-119.58099163924211,38.17378915565587],[-119.58102709594505,38.17374329696504],[-119.58106055533351,38.17369651238484],[-119.58109197865676,38.17364885610376],[-119.58112132952262,38.173600383319844],[-119.58114857393946,38.17355115017669],[-119.58117368035579,38.173501213698565],[-119.58119661969644,38.17345063172415],[-119.5812173653966,38.17339946283976],[-119.58123589343231,38.173347766311274],[-119.58125218234828,38.17329560201569],[-119.58126621328287,38.173243030371594],[-119.58127796998981,38.173190112269246],[-119.58128743885702,38.17313690900012],[-119.5812946089223,38.173083482185824],[-119.58129947188608,38.17302989370672],[-119.58130202212101,38.17297620563031],[-119.58130225667834,38.1729224801393],[-119.5813001752915,38.172868779459634],[-119.58129578037624,38.17281516578835],[-119.58128907702779,38.17276170122161],[-119.5812800730151,38.172708447682744],[-119.5812687787716,38.17265546685047],[-119.58053748136054,38.17065405884449],[-119.57988381915953,38.168635982258365],[-119.57930839337803,38.16660311291459],[-119.57800160806666,38.16201569393704],[-119.57776076146806,38.16122546552558],[-119.57749013861248,38.16044126763478],[-119.57718998177684,38.159663799592245],[-119.57691718767518,38.158963323248535],[-119.5766666503553,38.15825768310586],[-119.57665723900189,38.15823167615702],[-119.57664668155604,38.158205944985546],[-119.5766349909341,38.158180521069106],[-119.57662218143871,38.158155435509464],[-119.57660826874121,38.158130718994435],[-119.57659326986239,38.1581064017603],[-119.57657720315181,38.15808251355496],[-119.57656008826528,38.158059083601344],[-119.57654194614072,38.15803614056183],[-119.57652279897275,38.15801371250309],[-119.57650267018532,38.157991826861775],[-119.57648158440318,38.15797051041099],[-119.57645956742175,38.15794978922752],[-119.57643664617551,38.15792968865986],[-119.57641284870502,38.1579102332974],[-119.5763882041228,38.15789144694011],[-119.57636274257742,38.15787335256958],[-119.5763364952169,38.157855972320895],[-119.57630949415046,38.15783932745546],[-119.57628177240927,38.15782343833517],[-119.576253363906,38.15780832439727],[-119.57622430339342,38.157794004130814],[-119.57619462642182,38.1577804950539],[-119.57616436929561,38.15776781369226],[-119.57613356902876,38.157755975559084],[-119.57610226329965,38.15774499513605],[-119.57607049040497,38.157734885855554],[-119.57603828921278,38.15772566008434],[-119.5760056991151,38.15771732910832],[-119.57597275997962,38.157709903118835],[-119.57593951210097,38.15770339120012],[-119.57587578008308,38.15769273862447],[-119.57581162520526,38.157683807695115],[-119.57574712204166,38.157676608793466],[-119.5756823455712,38.15767115028758],[-119.57561737109037,38.15766743852244],[-119.57555227412587,38.15766547781259],[-119.57548713034667,38.157665270437235],[-119.57542201547625,38.15766681663741],[-119.57535700520441,38.157670114615776],[-119.57529217509938,38.15767516053877],[-119.5752276005201,38.157681948540976],[-119.57516335652839,38.157690470731964],[-119.57509951780202,38.1577007172055],[-119.57503615854763,38.15771267605098],[-119.5749733524147,38.15772633336735],[-119.57407898009262,38.15777688890122],[-119.57318290065739,38.15780239961843],[-119.57228623896125,38.15780283349577],[-119.57139012058914,38.15777818998865],[-119.57049567044227,38.157728500031595],[-119.56960401132262,38.15765382599954],[-119.56934737368375,38.157625088915786],[-119.56909216618351,38.157589281680494],[-119.56883870116171,38.157546448116975],[-119.56858728882396,38.15749664064784],[-119.56833823686202,38.15743992023065],[-119.56809185007683,38.15737635628338],[-119.56784843000527,38.157306026599336],[-119.56760827455095,38.15722901725193],[-119.56737167761936,38.15714542248917],[-119.5671389287581,38.1570553446184],[-119.56705715082725,38.15702085390829],[-119.56697693899312,38.15698414188444],[-119.56689838999436,38.1569452528241],[-119.56682159856388,38.156904233630044],[-119.56674665731423,38.156861133774115],[-119.56667365662616,38.15681600523749],[-119.56660268453943,38.156768902447915],[-119.56653382664678,38.156719882214134],[-119.56646716599047,38.15666900365732],[-119.56640278296243,38.156616328139805],[-119.56634075520701,38.15656191919098],[-119.5662811575276,38.15650584243068],[-119.56622406179622,38.15644816549012],[-119.56616953686698,38.15638895793022],[-119.56611764849299,38.15632829115771],[-119.56606845924712,38.15626623833905],[-119.56602202844648,38.15620287431211],[-119.56598703902989,38.15615102744737],[-119.56595437759802,38.15609824214443],[-119.56592408445533,38.156044583548926],[-119.56589619698327,38.155990117884095],[-119.56587074959401,38.15593491236912],[-119.56584777368802,38.155879035136124],[-119.56582729761547,38.15582255514605],[-119.56580934664109,38.15576554210362],[-119.56579394291317,38.15570806637124],[-119.56578537535707,38.15567600067697],[-119.56577543640638,38.15564418268214],[-119.56576413748239,38.155612648944604],[-119.56575149156896,38.15558143569566],[-119.56573751319752,38.155550578798255],[-119.56572221843037,38.15552011370593],[-119.56570562484224,38.15549007542195],[-119.56568775150012,38.15546049845917],[-119.56566861894132,38.155431416800404],[-119.56564824914983,38.15540286385929],[-119.56562666553111,38.15537487244196],[-119.56560389288516,38.155347474709366],[-119.56557995737805,38.15532070214027],[-119.56555488651183,38.15529458549522],[-119.5655287090929,38.15526915478092],[-119.56550145519901,38.15524443921612],[-119.5654731561446,38.15522046719776],[-119.56544384444484,38.1551972662685],[-119.56541355377828,38.15517486308504],[-119.56538231894818,38.15515328338746],[-119.56535017584254,38.155132551969686],[-119.5653171613927,38.15511269265101],[-119.5651563864123,38.15502251749349],[-119.56499194239936,38.154936566706525],[-119.56482400730664,38.15485493329531],[-119.56465276286272,38.15477770559318],[-119.56447839437534,38.15470496716583],[-119.56430109053093,38.15463679672103],[-119.56412104319051,38.15457326802348],[-119.5640828752965,38.15456098771154],[-119.56404420483436,38.154549730352215],[-119.56400507576095,38.154539508741685],[-119.56396553255443,38.15453033449889],[-119.5639256201636,38.15452221805218],[-119.5638853839569,38.154515168627476],[-119.5638448696708,38.154509194237875],[-119.56380412335781,38.15450430167443],[-119.56376319133415,38.154500496498514],[-119.56372212012711,38.15449778303548],[-119.56368095642222,38.15449616436966],[-119.56363974701009,38.15449564234105],[-119.56359853873332,38.154496217542984],[-119.56355737843315,38.15449788932166],[-119.56351631289633,38.15450065577679],[-119.56347538880196,38.15450451376371],[-119.56158258301679,38.15469906984412],[-119.56152291592409,38.154704113578006],[-119.56146307004904,38.15470759455859],[-119.56140311102061,38.1547095089685],[-119.56134310459174,38.154709854708365],[-119.56128311656748,38.15470863139904],[-119.56122321273264,38.15470584038203],[-119.56116345877967,38.154701484718025],[-119.56110392023673,38.15469556918359],[-119.56104466239557,38.154688100265936],[-119.56098575024018,38.15467908615564],[-119.56092724837531,38.1546685367379],[-119.56086922095575,38.15465646358146],[-119.56081173161586,38.15464287992614],[-119.5607938807475,38.15463866904477],[-119.56077585881735,38.15463494005225],[-119.56075768668268,38.15463169726419],[-119.56073938537455,38.15462894443359],[-119.56072097607354,38.15462668474636],[-119.56070248008518,38.15462492081769],[-119.56068391881534,38.154623654689026],[-119.56066531374546,38.15462288782567],[-119.5606466864076,38.15462262111515],[-119.56062805835963,38.15462285486614],[-119.56060945116026,38.154623588808086],[-119.56059088634404,38.154624822091606],[-119.56057238539648,38.154626553289404],[-119.56055396972918,38.15462878039788],[-119.56053566065506,38.15463150083956],[-119.56051747936368,38.15463471146604],[-119.56049944689671,38.15463840856154],[-119.56048158412358,38.15464258784734],[-119.56046391171736,38.154647244486654],[-119.56044645013083,38.154652373090215],[-119.56042921957275,38.154657967722535],[-119.56041223998454,38.15466402190887],[-119.56039553101722,38.1546705286425],[-119.56037911200855,38.15467748039301],[-119.56036300196078,38.15468486911497],[-119.56034721951859,38.15469268625718],[-119.56033178294756,38.1547009227727],[-119.56031671011297,38.15470956912913],[-119.5602643658376,38.15473960392484],[-119.56021076733485,38.15476822632046],[-119.5601559757018,38.15479540368853],[-119.56010005339581,38.15482110504877],[-119.56004306416332,38.15484530110343],[-119.5599850729672,38.154867964270665],[-119.55992614591268,38.15488906871599],[-119.55986635017197,38.15490859038176],[-119.55980575390772,38.154926507014565],[-119.55974442619527,38.154942798190596],[-119.55968243694387,38.15495744533897],[-119.55961985681706,38.154970431762834],[-119.55955675715211,38.15498174265852],[-119.55949320987851,38.15499136513228],[-119.55942928743619,38.154999288215116],[-119.55936506269278,38.15500550287518],[-119.55930060886062,38.15501000202817],[-119.5592359994132,38.15501278054527],[-119.55917130800145,38.15501383525919],[-119.55910660836977,38.15501316496762],[-119.5590419742719,38.15501077043461],[-119.55897747938691,38.1550066543898],[-119.55891319723507,38.155000821525256],[-119.55884920109418,38.15499327849006],[-119.55878556391593,38.15498403388281],[-119.55872235824268,38.1549730982418],[-119.55865965612487,38.154960484032976],[-119.55838130416713,38.15489728983054],[-119.55810523458523,38.154828134947365],[-119.55783165207313,38.15475307066021],[-119.55756075947899,38.15467215262739],[-119.5575260656228,38.15466190848679],[-119.55749094074262,38.15465262523543],[-119.55745542750653,38.15464431415007],[-119.5574195690543,38.15463698532661],[-119.55738340894501,38.154630647667766],[-119.55734699110415,38.15462530887219],[-119.55731035977024,38.15462097542515],[-119.55727355944114,38.15461765259072],[-119.55723663481997,38.15461534440529],[-119.55719963076079,38.15461405367273],[-119.55716259221415,38.15461378196096],[-119.55712556417257,38.154614529600025],[-119.5570885916157,38.15461629568174],[-119.55705171945583,38.15461907806077],[-119.55701499248336,38.15462287335722],[-119.55697845531228,38.15462767696075],[-119.55694215232606,38.15463348303622],[-119.55690612762375,38.154640284530686],[-119.55687042496633,38.154648073182024],[-119.55683508772368,38.154656839529004],[-119.5568001588218,38.15466657292271],[-119.55676568069072,38.15467726153949],[-119.55673169521292,38.15468889239535],[-119.55669824367254,38.15470145136169],[-119.55666536670512,38.15471492318247],[-119.55663310424833,38.15472929149279],[-119.55660149549347,38.15474453883869],[-119.55657057883771,38.15476064669844],[-119.5565403918377,38.15477759550488],[-119.55651097116373,38.1547953646694],[-119.55648235255528,38.15481393260679],[-119.5564545707776,38.15483327676151],[-119.55642765957947,38.15485337363513],[-119.55640165165221,38.15487419881476],[-119.55637657858996,38.15489572700283],[-119.55636042535993,38.15490959897238],[-119.55634367279865,38.15492302042025],[-119.55632634104599,38.15493597521095],[-119.55630845093813,38.15494844777007],[-119.55629002398256,38.154960423102885],[-119.55627108233223,38.15497188681249],[-119.55625164875886,38.15498282511701],[-119.5562317466256,38.154993224866246],[-119.55621139985895,38.155003073557424],[-119.55619063292004,38.15501235935027],[-119.55616947077507,38.155021071081265],[-119.55614793886546,38.15502919827695],[-119.55612606307719,38.15503673116672],[-119.55610386970963,38.155043660694346],[-119.55608138544406,38.15504997852901],[-119.55605863731141,38.15505567707532],[-119.55603565265994,38.15506074948233],[-119.55601245912223,38.15506518965187],[-119.55598908458201,38.15506899224595],[-119.55596555714061,38.15507215269297],[-119.55594190508324,38.15507466719336],[-119.5559181568449,38.155076532724145],[-119.55589434097627,38.15507774704254],[-119.55587048610926,38.15507830868869],[-119.55584662092275,38.15507821698731],[-119.555822774108,38.15507747204875],[-119.55579897433417,38.155076074768466],[-119.55577525021388,38.15507402682639],[-119.55575163026876,38.15507133068457],[-119.55572814289522,38.15506798958438],[-119.5557048163303,38.15506400754254],[-119.55568167861765,38.15505938934636],[-119.55565875757385,38.15505414054792],[-119.55563608075506,38.15504826745744],[-119.55561367542376,38.155041777135665],[-119.55559156851602,38.15503467738539],[-119.55556978660908,38.15502697674208],[-119.55554835588956,38.15501868446358],[-119.55552730212169,38.15500981051907],[-119.55550665061662,38.15500036557691],[-119.55548642620177,38.15499036099203],[-119.55546665319116,38.15497980879208],[-119.55544735535602,38.15496872166314],[-119.55542855589634,38.15495711293428],[-119.5554102774129,38.15494499656177],[-119.55539254188012,38.15493238711205],[-119.55537537061966,38.154919299744385],[-119.55535878427472,38.15490575019265],[-119.55534280278533,38.15489175474625],[-119.55532465155348,38.15487584447199],[-119.55530583067527,38.15486042695075],[-119.55528636159222,38.15484551974648],[-119.55526626648428,38.154831139841725],[-119.55524556824443,38.15481730361833],[-119.55522429045283,38.15480402683875],[-119.55520245734975,38.15479132462811],[-119.55518009380809,38.154779211456955],[-119.55515722530492,38.1547677011248],[-119.55513387789264,38.15475680674438],[-119.55511007816915,38.154746540726705],[-119.55508585324753,38.154736914767],[-119.5550612307253,38.15472793983125],[-119.55503623865287,38.15471962614383],[-119.55501090550163,38.154711983175794],[-119.55498526013147,38.154705019634086],[-119.554959331758,38.154698743451675],[-119.55493314991912,38.15469316177845],[-119.5549067444415,38.1546882809731],[-119.55488014540661,38.154684106595916],[-119.55485338311634,38.15468064340237],[-119.55482648805858,38.15467789533776],[-119.55464981406193,38.1546646976925],[-119.5544726637216,38.15465638592308],[-119.55429525366628,38.15465297019361],[-119.55411780084205,38.15465445468097],[-119.55394052224723,38.15466083756992],[-119.55385535491949,38.15466396896652],[-119.55377010306398,38.15466487683215],[-119.55368485976307,38.1546635601755],[-119.55359971808971,38.154660020434235],[-119.55351477100587,38.15465426147315],[-119.55343011126101,38.154646289580214],[-119.5533458312908,38.15463611345949],[-119.55318690667869,38.15461275065091],[-119.55302899675121,38.154585432909165],[-119.55287225932531,38.15455418753602],[-119.55271685104555,38.15451904575855],[-119.55256292722754,38.15448004269791],[-119.55241570760437,38.15444293858704],[-119.55226694487438,38.154409894287205],[-119.55211681852984,38.154380949668294],[-119.5519655097076,38.15435613965362],[-119.55181320097068,38.154335494177836],[-119.55166007608797,38.15431903815083],[-119.5515063198127,38.15430679142764],[-119.55135211765958,38.15429876878463],[-119.55119765568104,38.15429497990149],[-119.55104312024292,38.15429542934972],[-119.55088869779962,38.154300116587045],[-119.55073457466925,38.15430903595807],[-119.55058093680897,38.1543221767011],[-119.5504279695907,38.15433952296115],[-119.55027585757747,38.15436105380904],[-119.55012478430099,38.15438674326661],[-119.54997493204014,38.15441656033809],[-119.54982648160119,38.154450469047546],[-119.54967961209981,38.15448842848211],[-119.54953450074485,38.15453039284145],[-119.54939132262483,38.154576311492995],[-119.54925025049654,38.15462612903292],[-119.54911145457682,38.15467978535308],[-119.54907617646487,38.15469464322344],[-119.54904157206705,38.1547104581438],[-119.5490076830084,38.1547272110909],[-119.54897455005349,38.154744881913125],[-119.5489422130575,38.154763449354746],[-119.54891071091828,38.15478289108153],[-119.54888008152957,38.15480318370757],[-119.5488503617353,38.154824302823364],[-119.54882158728546,38.1548462230253],[-119.54879379279298,38.154868917946104],[-119.54876701169205,38.15489236028658],[-119.54874127619807,38.154916521848456],[-119.54872736238568,38.15492958282308],[-119.54871288105369,38.15494225332132],[-119.54869784976503,38.15495451797622],[-119.54868228674965,38.154966361913],[-119.54866621088239,38.154977770767104],[-119.54864964166013,38.15498873070168],[-119.5486325991781,38.15499922842427],[-119.54861510410562,38.1550092512031],[-119.54859717766087,38.155018786882316],[-119.54857884158523,38.155027823896845],[-119.5485601181169,38.155036351286405],[-119.54854102996406,38.155044358708814],[-119.54852160027707,38.15505183645249],[-119.5485018526206,38.155058775448296],[-119.54848181094498,38.155065167280384],[-119.54846149955715,38.15507100419667],[-119.54844094309114,38.15507627911797],[-119.54842016647831,38.15508098564675],[-119.54839919491695,38.15508511807484],[-119.5483780538419,38.15508867139027],[-119.54835676889348,38.15509164128356],[-119.54833536588663,38.15509402415275],[-119.54831387077942,38.155095817107785],[-119.54829230964164,38.1550970179742],[-119.54827070862318,38.15509762529548],[-119.54824909392225,38.15509763833511],[-119.54822749175374,38.15509705707724],[-119.54820592831727,38.15509588222683],[-119.54818442976551,38.15509411520882],[-119.54816302217247,38.15509175816623],[-119.54814173150172,38.155088813957775],[-119.54812058357516,38.15508528615423],[-119.54809960404144,38.15508117903425],[-119.54807881834502,38.15507649757898],[-119.54805825169528,38.155071247466246],[-119.54803792903587,38.1550654350635],[-119.54801787501452,38.15505906742015],[-119.54799811395316,38.155052152259],[-119.54797866981833,38.15504469796696],[-119.54795956619229,38.155036713584714],[-119.54794082624413,38.1550282087959],[-119.54792247270197,38.15501919391532],[-119.54790452782524,38.1550096798764],[-119.54780666433527,38.15495390608022],[-119.54771117979314,38.15489561804316],[-119.54761817775177,38.15483487898193],[-119.54752775907092,38.15477175477133],[-119.54744002180769,38.154706313872865],[-119.54741821107962,38.154690064199436],[-119.54739571217804,38.154674410464025],[-119.54737255120456,38.15465937082665],[-119.54734875502871,38.154644962734864],[-119.54732435125689,38.154631202903566],[-119.5472993682004,38.154618107295626],[-119.54727383484244,38.15460569110329],[-119.5472477808046,38.15459396873064],[-119.54722123631248,38.154582953776824],[-119.5471942321606,38.15457265902032],[-119.54716679967669,38.1545630964041],[-119.5471389706854,38.15455427702177],[-119.54711077747122,38.15454621110469],[-119.54708225274123,38.154538908010146],[-119.54705342958708,38.154532376210476],[-119.54702434144654,38.154526623283196],[-119.54699502206482,38.15452165590228],[-119.54696550545533,38.15451747983039],[-119.54693582586027,38.15451409991218],[-119.54690601771088,38.15451152006871],[-119.5468761155876,38.15450974329281],[-119.54684615417982,38.154508771645745],[-119.5468161682457,38.15450860625473],[-119.54678619257186,38.15450924731162],[-119.54675626193304,38.15451069407272],[-119.54672641105171,38.154512944859626],[-119.54669667455785,38.15451599706127],[-119.54666708694867,38.15451984713675],[-119.54663768254882,38.15452449061959],[-119.54660849547028,38.1545299221229],[-119.54657955957303,38.1545361353456],[-119.54655090842564,38.154543123079705],[-119.5465225752664,38.15455087721879],[-119.54649459296465,38.154559388767254],[-119.54646699398285,38.154568647850816],[-119.54618475185826,38.15467246796009],[-119.54590718714968,38.15478387429186],[-119.54589936642452,38.15478701194583],[-119.54589141266494,38.154789933662045],[-119.54588333542999,38.154792635929205],[-119.54587514442697,38.15479511549962],[-119.54586684950003,38.154797369393286],[-119.54585846061813,38.15479939490144],[-119.54584998786324,38.15480118958982],[-119.545841441418,38.154802751301474],[-119.54583283155375,38.15480407815954],[-119.54582416861801,38.15480516856939],[-119.54581546302204,38.154806021220516],[-119.5458067252284,38.15480663508821],[-119.54579796573834,38.15480700943468],[-119.54578919507921,38.154807143810054],[-119.54578042379175,38.154807038052844],[-119.54577166241752,38.15480669229012],[-119.54576292148609,38.154806106937464],[-119.54575421150246,38.15480528269834],[-119.54574554293447,38.15480422056335],[-119.54573692620022,38.15480292180896],[-119.54572837165541,38.15480138799608],[-119.54571988958114,38.15479962096805],[-119.54571149017127,38.15479762284853],[-119.5457031835204,38.15479539603888],[-119.5456949796116,38.154792943215355],[-119.54568688830447,38.15479026732579],[-119.54567891932334,38.154787371586124],[-119.5456710822454,38.154784259476465],[-119.54566338648945,38.15478093473711],[-119.54565584130434,38.154777401363724],[-119.545648455758,38.15477366360277],[-119.54564123872649,38.154769725946394],[-119.54563419888338,38.15476559312694],[-119.54562734468918,38.15476127011127],[-119.54562068438145,38.15475676209491],[-119.54561422596454,38.15475207449564],[-119.54560797720032,38.15474721294714],[-119.54560194559858,38.154742183292065],[-119.54559613840819,38.15473699157515],[-119.54559056260823,38.1547316440359],[-119.54558522489978,38.154726147101066],[-119.54558013169776,38.15472050737694],[-119.54557528912316,38.154714731641484],[-119.54557070299579,38.154708826836014],[-119.54556637882733,38.15470280005703],[-119.5455623218145,38.154696658547635],[-119.54555853683307,38.154690409688754],[-119.54555502843179,38.154684060990384],[-119.54555180082704,38.15467762008246],[-119.5455488578977,38.15467109470578],[-119.54554620318059,38.1546644927026],[-119.5455438398661,38.15465782200733],[-119.5455417707944,38.15465109063688],[-119.54553499892097,38.15462902045315],[-119.54552728477887,38.15460714392853],[-119.54551863721116,38.15458548613864],[-119.54550906613075,38.15456407190831],[-119.54549858250913,38.154542925783204],[-119.5454871983637,38.154522072001676],[-119.54547492674408,38.15450153446697],[-119.5454617817171,38.15448133671974],[-119.54544777835062,38.154461501911236],[-119.54543293269636,38.15444205277663],[-119.54541726177145,38.154423011609055],[-119.54540078353894,38.15440440023395],[-119.54538351688717,38.15438623998412],[-119.54536548160813,38.1543685516753],[-119.54534669837479,38.154351355582165],[-119.54532718871744,38.15433467141532],[-119.5453069749989,38.15431851829847],[-119.545286080389,38.15430291474662],[-119.54526452883799,38.154287878644915],[-119.54516861368602,38.154220982854376],[-119.54507559218888,38.15415158601297],[-119.54498556888285,38.154079766113846],[-119.54489864493357,38.15400560387317],[-119.54481491802261,38.15392918263937],[-119.54473448223762,38.15385058829936],[-119.5446574279666,38.15376990918217],[-119.54458384179631,38.15368723595938],[-119.54451380641508,38.15360266154351],[-119.54446728253376,38.15354208285146],[-119.54442342576345,38.15348027605896],[-119.54438228802955,38.15341731435332],[-119.54434391803746,38.15335327228929],[-119.54430836121479,38.15328822570066],[-119.54427565965776,38.15322225161051],[-119.54424585208118,38.15315542814],[-119.5442189737728,38.15308783441584],[-119.54419505655153,38.15301955047666],[-119.54417412872971,38.15295065717805],[-119.54415621507974,38.152881236097016],[-119.54414133680471,38.152811369435234],[-119.54412951151335,38.15274113992182],[-119.54412075319921,38.15267063071527],[-119.54411845041264,38.15264189794137],[-119.54411741249099,38.15261311935382],[-119.54411764068453,38.15258432966169],[-119.54411913471661,38.15255556358738],[-119.54412189278383,38.15252685582475],[-119.54412591155834,38.152498240997325],[-119.54413118619175,38.15246975361651],[-119.54413771032102,38.15244142803993],[-119.54414547607627,38.15241329843004],[-119.54415447409002,38.15238539871292],[-119.5441646935088,38.152357762537335],[-119.544176122006,38.15233042323415],[-119.54418874579686,38.15230341377619],[-119.54420254965503,38.15227676673839],[-119.54421751693106,38.152250514258576],[-119.54423362957235,38.15222468799868],[-119.544250868145,38.15219931910655],[-119.54426921185728,38.15217443817839],[-119.54428863858462,38.15215007522187],[-119.5443091248964,38.15212625961994],[-119.54433064608408,38.15210302009536],[-119.54458898964134,38.15184205916346],[-119.54485695823689,38.15158722286749],[-119.5451343190656,38.15133873251145],[-119.54542083117333,38.15109680388623],[-119.54571624566627,38.150861647082415],[-119.54590920728235,38.15070733635281],[-119.54609539970552,38.15054792446787],[-119.54627460683896,38.150383596480125],[-119.54644662069879,38.1502145431476],[-119.54661124165554,38.1500409607125],[-119.54676827866571,38.149863050673076],[-119.54691754949343,38.14968101954979],[-119.54705888092172,38.14949507864534],[-119.54719210895362,38.1493054437994],[-119.54726595272314,38.14919157911084],[-119.5473350936091,38.149075887749454],[-119.54739945926913,38.14895849080062],[-119.54745898235976,38.14883951113415],[-119.54751360060669,38.14871907327585],[-119.54756325687005,38.14859730327709],[-119.54760789920397,38.14847432858281],[-119.54764748091094,38.14835027789821],[-119.54780402603224,38.14785288271226],[-119.54797682477036,38.14735885482911],[-119.5480069436849,38.14727159211778],[-119.54803343579151,38.14718359880902],[-119.5480562728097,38.14709496887952],[-119.54807543036283,38.14700579698554],[-119.54809088800413,38.14691617836179],[-119.54810262923857,38.14682620871981],[-119.54811064154025,38.146735984145586],[-119.54811805928489,38.146580586122624],[-119.54811917900359,38.14642508023705],[-119.54811399959021,38.146269625631554],[-119.548102526385,38.14611438139538],[-119.54808477116892,38.14595950640154],[-119.54806075215153,38.14580515914415],[-119.54803049395211,38.145651497576324],[-119.54799402757435,38.14549867894848],[-119.54795139037442,38.145346859647454],[-119.54790262602269,38.14519619503652],[-119.54785133710172,38.14505675310496],[-119.54779426687836,38.144918719252104],[-119.54773147717427,38.1447822429263],[-119.54766303600245,38.14464747188867],[-119.54758901749351,38.144514552053344],[-119.54750950181521,38.14438362732941],[-119.54742457508561,38.144254839465106],[-119.54733432927976,38.1441283278945],[-119.54723886212994,38.14400422958648],[-119.54713827701985,38.14388267889648],[-119.54703268287248,38.143763807421166],[-119.54692219403229,38.14364774385594],[-119.54691104508522,38.143636813805784],[-119.5468994318314,38.14362618957079],[-119.54688736771121,38.14361588344649],[-119.54687486668675,38.143605907360325],[-119.54686194322575,38.1435962728577],[-119.54684861228489,38.143586991088725],[-119.54683488929227,38.14357807279531],[-119.54682079012984,38.14356952829865],[-119.54680633111478,38.14356136748741],[-119.5467915289808,38.14355359980615],[-119.54677640085858,38.14354623424447],[-119.54676096425615,38.143539279326625],[-119.54674523703846,38.14353274310155],[-119.54672923740686,38.14352663313371],[-119.54671298387787,38.14352095649419],[-119.54669649526186,38.14351571975263],[-119.54667979064125,38.14351092896954],[-119.54647368478341,38.14345787525032],[-119.54626550544745,38.14341013745088],[-119.54605547239134,38.143367765963404],[-119.54584380732858,38.143330805515426],[-119.54582415013427,38.14332790999008],[-119.54580437990369,38.143325542631025],[-119.54578451938328,38.143323706161986],[-119.54576459142332,38.143322402695894],[-119.5457446189517,38.143321633732455],[-119.54572462494755,38.14332140015637],[-119.54570463241473,38.143321702236385],[-119.54568466435543,38.143322539624954],[-119.54566474374366,38.14332391135862],[-119.54564489349882,38.14332581585915],[-119.54562513645948,38.14332825093534],[-119.54560549535681,38.14333121378555],[-119.54558599278873,38.14333470100091],[-119.54556665119371,38.143338708569175],[-119.54554749282504,38.14334323187958],[-119.54552853972518,38.143348265727816],[-119.54550981370056,38.143353804322246],[-119.54545013979507,38.14337516825762],[-119.5453895761566,38.14339490897947],[-119.54532819355448,38.1434130034203],[-119.54526606371522,38.14342943043633],[-119.54520325923862,38.14344417083222],[-119.54513985351298,38.14345720738344],[-119.54507592062927,38.14346852485647],[-119.54501153529462,38.14347811002653],[-119.54494677274485,38.14348595169313],[-119.54488170865677,38.143492040693054],[-119.54481641905953,38.14349636991112],[-119.54475098024585,38.14349893428855],[-119.54468546868291,38.14349973082879],[-119.53689243212791,38.143502560359515],[-119.53494699138858,38.14350355009535],[-119.53009317265794,38.143504738901456],[-119.529670014142,38.14338327381478],[-119.52884633852976,38.142840014789286],[-119.52804613622153,38.14227530364438],[-119.52727030222879,38.14168977237553],[-119.52651970422943,38.14108407626413],[-119.5263924331287,38.14097634819185],[-119.5262606212457,38.140872081631834],[-119.52612441944142,38.14077139590434],[-119.52598398359864,38.14067440623137],[-119.5258394744435,38.14058122360475],[-119.52569105736167,38.14049195465935],[-119.52553890220898,38.140406701550894],[-119.52538318311709,38.14032556183927],[-119.5252240782943,38.140248628376824],[-119.52506176982165,38.14017598920227],[-119.5248964434445,38.14010772743981],[-119.5247282883602,38.14004392120426],[-119.52455749700151,38.139984643511546],[-119.52438426481649,38.139929962195254],[-119.52420879004504,38.139879939829],[-119.52403127349191,38.13983463365496],[-119.52385191829725,38.13979409551826],[-119.52367092970412,38.1397583718078],[-119.52348851482374,38.13972750340308],[-119.52330488239856,38.13970152562754],[-119.52312024256369,38.13968046820815],[-119.52293480660634,38.13966435524136],[-119.52239800526904,38.13961753758189],[-119.52186357935761,38.13955606503858],[-119.52133217017786,38.13948001137787],[-119.5208044154101,38.139389467863126],[-119.520280948343,38.13928454314502],[-119.51976239711244,38.13916536313087],[-119.51924938394687,38.13903207083352],[-119.51874252441961,38.138884826199245],[-119.51824242670939,38.13872380591576],[-119.51774969086958,38.138549203199794],[-119.51726490810744,38.138361227564936],[-119.51678866007398,38.138160104569955],[-119.51644947909072,38.138016759411336],[-119.51610432131314,38.13788260964193],[-119.51575358622355,38.13775781051427],[-119.51539767975244,38.13764250645852],[-119.51503701380909,38.13753683091557],[-119.51467200580538,38.13744090618274],[-119.51430307817286,38.13735484327237],[-119.51393065787457,38.13727874178354],[-119.51355517591129,38.13721268978681],[-119.51317706682316,38.13715676372246],[-119.51279676818737,38.137111028312226],[-119.51241472011233,38.137075536484275],[-119.5120313647288,38.137050329312146],[-119.51164714567874,38.13703543596728],[-119.51126250760261,38.13703087368521],[-119.51087789562517,38.1370366477457],[-119.5106260433755,38.1370403773895],[-119.51037417826235,38.13703723596184],[-119.51012260072477,38.13702722720996],[-119.5098716108584,38.137010363072804],[-119.50962150805748,38.13698666366679],[-119.50937259065728,38.136956157261714],[-119.50912515557818,38.13691888024702],[-119.50887949797104,38.13687487708853],[-119.50863591086512,38.1368242002751],[-119.50839468481814,38.13676691025616],[-119.50815610756952,38.13670307536948],[-119.507920463697,38.136632771759665],[-119.5078313347378,38.13660618333711],[-119.50774109427817,38.13658204682605],[-119.50764985040672,38.136560391136584],[-119.50755771241354,38.13654124220733],[-119.50746479065943,38.13652462297431],[-119.50737119644369,38.13651055334362],[-119.5072770418709,38.1364990501674],[-119.50718243971664,38.136490127223844],[-119.50708750329242,38.1364837952006],[-119.50699234631003,38.136480061681915],[-119.5068970827454,38.136478931139756],[-119.50680182670206,38.13648040492819],[-119.50670669227449,38.136484481281975],[-119.50661179341164,38.1364911553186],[-119.50651724378032,38.13650041904408],[-119.50642315662914,38.13651226136262],[-119.50632964465295,38.13652666808986],[-119.50623681985783,38.136543621969814],[-119.50614479342701,38.13656310269562],[-119.5060536755877,38.13658508693377],[-119.50596357547902,38.136609548352176],[-119.50587460102157,38.13663645765154],[-119.50578685878783,38.13666578260056],[-119.50570045387481,38.13669748807448],[-119.50561548977811,38.136731536097166],[-119.50553206826787,38.13676788588658],[-119.50545028926712,38.13680649390359],[-119.50537025073181,38.13684731390411],[-119.50529204853382,38.136890296994636],[-119.50521577634589,38.13693539169046],[-119.50514152552954,38.13698254397765],[-119.50506938502555,38.13703169737763],[-119.50499944124763,38.137082793014685],[-119.5049317779787,38.13713576968669],[-119.5048664762706,38.1371905639382],[-119.5048036143471,38.137247110136606],[-119.50474326751001,38.13730534055061],[-119.5046855080492,38.13736518543146],[-119.50463040515574,38.13742657309634],[-119.50457802483919,38.13748943001436],[-119.50452842984852,38.13755368089452],[-119.50448167959675,38.137619248775906],[-119.50443783009,38.13768605511989],[-119.50439693386012,38.137754019904214],[-119.50435903990197,38.13782306171873],[-119.50432419361454,38.13789309786299],[-119.5042924367466,38.13796404444528],[-119.50426380734666,38.13803581648313],[-119.50423833971738,38.138108328004954],[-119.5042160643743,38.13818149215328],[-119.5040154221194,38.138851123902356],[-119.50379162800022,38.13951616335708],[-119.50354484937114,38.14017611135011],[-119.50327527085302,38.140830472522616],[-119.50321474748563,38.14097905302166],[-119.503160657598,38.14112917328503],[-119.50311306381627,38.14128065961016],[-119.5030720212511,38.14143333671274],[-119.50303757743367,38.141587027929596],[-119.50300977226054,38.14174155542301],[-119.50298863794724,38.14189674038648],[-119.50297419899093,38.142052403251704],[-119.50296647214164,38.142208363896195],[-119.50296546638296,38.142364441851825],[-119.50297118292127,38.14252045651361],[-119.50298361518416,38.142676227348645],[-119.50300274882795,38.1428315741051],[-119.50302856175394,38.14298631702073],[-119.50306102413388,38.14314027703095],[-119.50310009844432,38.14329327597602],[-119.50314573950975,38.143445136807266],[-119.50319789455479,38.14359568379199],[-119.50325650326499,38.14374474271675],[-119.50332149785655,38.14389214108916],[-119.50339280315453,38.14403770833736],[-119.50347033667968,38.144181276007544],[-119.50350862995813,38.144252124020575],[-119.50354390442799,38.144323942920714],[-119.5035761206896,38.144396652508256],[-119.50360524275816,38.144470171588665],[-119.50363123810378,38.1445444180632],[-119.50365407768794,38.1446193090206],[-119.50367373599592,38.14469476082963],[-119.50369019106535,38.14477068923259],[-119.5037034245107,38.14484700943919],[-119.50371342154402,38.144923636221414],[-119.50372017099133,38.14500048400864],[-119.5037236653052,38.14507746698312],[-119.5037239005733,38.14515449917595],[-119.5037208765227,38.14523149456295],[-119.50371459652028,38.14530836716081],[-119.50370506756899,38.14538503112306],[-119.50369230030014,38.145461400835984],[-119.50367630896147,38.14553739101416],[-119.50365711140135,38.1456129167958],[-119.50363472904884,38.14568789383746],[-119.50360918688997,38.145762238408246],[-119.5035491019547,38.145937467837015],[-119.50349668577596,38.146114225901],[-119.50345200045956,38.146292303352865],[-119.50341509896063,38.14647148938183],[-119.50338602502076,38.14665157186332],[-119.5033648131159,38.14683233760999],[-119.50335148841528,38.14701357262408],[-119.50334606675142,38.14719506235075],[-119.50334855460098,38.147376591932044],[-119.50335894907697,38.14755794646133],[-119.50337723793174,38.14773891123764],[-119.50340339957134,38.14791927201988],[-119.5034374030807,38.14809881528047],[-119.50347920826003,38.14827732845822],[-119.50352876567216,38.148454600209874],[-119.5035860167007,38.14863042066049],[-119.50365089361934,38.148804581651895],[-119.50372331967164,38.148976876989096],[-119.50380320916177,38.14914710268454],[-119.50389046755575,38.14931505719967],[-119.50398499159301,38.149480541683495],[-119.50408666940862,38.14964336020819],[-119.50419538066545,38.14980332000106],[-119.50431099669642,38.149960231672836],[-119.50443338065679,38.15011390944203],[-119.504562387686,38.15026417135489],[-119.50469786507888,38.150410839501],[-119.50483965246659,38.15055374022393],[-119.50498758200624,38.15069270432688],[-119.50514147857946,38.15082756727328],[-119.50530115999986,38.15095816938144],[-119.50534026053475,38.150990159299226],[-119.50537793119882,38.15102320179399],[-119.50541412657972,38.15105725703434],[-119.50544880304332,38.15109228396806],[-119.50548191878633,38.1511282403715],[-119.50551343388665,38.15116508290054],[-119.50554331035148,38.15120276714279],[-119.50557151216323,38.15124124767113],[-119.5055980053229,38.15128047809847],[-119.50562275789098,38.15132041113367],[-119.50564574002613,38.151360998638566],[-119.50566692402104,38.151402191685975],[-119.50568628433588,38.15144394061858],[-119.5057037976291,38.15148619510897],[-119.50571944278559,38.15152890422019],[-119.50573320094215,38.151572016467135],[-119.50574505551019,38.151615479878664],[-119.50575499219586,38.15165924206019],[-119.50576299901716,38.15170325025692],[-119.50576906631849,38.15174745141735],[-119.50577318678229,38.15179179225733],[-119.50577535543783,38.15183621932412],[-119.50577556966729,38.15188067906107],[-119.5057738292089,38.151925117872],[-119.50577013615727,38.15196948218582],[-119.50576449496083,38.15201371852118],[-119.50575691241662,38.15205777355099],[-119.505747397662,38.15210159416649],[-119.50573596216367,38.15214512754152],[-119.50572261970387,38.1521883211961],[-119.50570738636382,38.15223112305961],[-119.50569028050428,38.152273481533776],[-119.50567132274351,38.152315345554626],[-119.50565053593235,38.15235666465426],[-119.50562794512666,38.15239738902157],[-119.50560357755735,38.152437469562386],[-119.50557746259726,38.15247685795851],[-119.50554963172597,38.152515506726175],[-119.50552011849176,38.152553369273114],[-119.50548895847126,38.152590399954825],[-119.5054561892265,38.152626554129576],[-119.50542185025965,38.15266178821225],[-119.50538598296541,38.152696059726836],[-119.50534863058112,38.15272932735771],[-119.50530983813465,38.152761550999394],[-119.5052696523901,38.152792691804954],[-119.50522812179143,38.15282271223278],[-119.5051852964041,38.15285157609193],[-119.50514122785462,38.15287924858568],[-119.50509596926844,38.152905696353486],[-119.50504957520575,38.15293088751129],[-119.50500210159585,38.15295479168991],[-119.50495360566968,38.15297738007162],[-119.50478712431027,38.153054938473176],[-119.5046241704166,38.15313703555471],[-119.50446494235065,38.15322357138608],[-119.50430963394122,38.15331444063395],[-119.5041584342481,38.15340953268981],[-119.504011527332,38.153508731804614],[-119.50386909203044,38.153611917229625],[-119.50373130174007,38.153718963363296],[-119.50359832420573,38.15382973990414],[-119.50347032131602,38.15394411200926],[-119.50334744890641,38.15406194045843],[-119.50322985656939,38.15418308182352],[-119.50311768747234,38.15430738864296],[-119.50301107818319,38.15443470960132],[-119.50291015850414,38.154564889713285],[-119.50281505131345,38.1546977705124],[-119.50272587241585,38.15483319024377],[-119.50264273040145,38.154970984061116],[-119.50256572651335,38.155110984227164],[-119.5024949545244,38.155253020317964],[-119.50243050062272,38.15539691943026],[-119.5023724433068,38.155542506391825],[-119.50232085328963,38.1556896039748],[-119.50227579341258,38.15583803311141],[-119.50223731856859,38.15598761311175],[-119.50220547563532,38.15613816188395],[-119.5021803034177,38.15628949615561],[-119.50216183260073,38.15644143169708],[-119.50215008571168,38.156593783545546],[-119.50214507709265,38.15674636623035],[-119.50214681288284,38.15689899399862],[-119.50215529101085,38.15705148104153],[-119.50217050119707,38.15720364172042],[-119.50217312980215,38.157229876174085],[-119.50217461000166,38.1572561666361],[-119.50217494003033,38.15728248177376],[-119.50217411949363,38.15730879022495],[-119.50217214936822,38.15733506063544],[-119.50216903200088,38.157361261696344],[-119.50216477110561,38.15738736218138],[-119.50215937175932,38.1574133309841],[-119.50215284039581,38.157439137154945],[-119.5021451847979,38.15746474993818],[-119.50213641408834,38.1574901388085],[-119.50212653871903,38.157515273507464],[-119.50211557045822,38.15754012407945],[-119.50210352237691,38.15756466090749],[-119.50209040883297,38.15758885474846],[-119.5020762454541,38.15761267676805],[-119.50206104911939,38.15763609857502],[-119.50204483793893,38.15765909225507],[-119.5020276312324,38.15768163040412],[-119.50200944950606,38.15770368616101],[-119.50199031442824,38.15772523323941],[-119.50197024880352,38.15774624595928],[-119.50194927654559,38.1577666992774],[-119.50192742264875,38.15778656881721],[-119.50190471315814,38.157805830897914],[-119.50188117513856,38.15782446256263],[-119.50185683664253,38.15784244160586],[-119.50183172667646,38.15785974659985],[-119.50180587516634,38.1578763569202],[-119.50177931292207,38.15789225277039],[-119.5017520716006,38.15790741520544],[-119.5017241836683,38.15792182615449],[-119.5016956823623,38.157935468442176],[-119.50166660165071,38.1579483258094],[-119.50163697619236,38.15796038293241],[-119.5016068412953,38.15797162544128],[-119.50157623287484,38.1579820399369],[-119.50154518741063,38.15799161400704],[-119.50151374190328,38.15800033624105],[-119.50148193383026,38.1580081962436],[-119.50144980110115,38.15801518464691],[-119.5014173820125,38.15802129312199],[-119.50138471520219,38.15802651438869],[-119.50135183960337,38.158030842224065],[-119.50131879439807,38.15803427147013],[-119.50128561897046,38.15803679803983],[-119.50125235285988,38.158038418921905],[-119.50121903571385,38.15803913218456],[-119.50118570724065,38.158038936977725],[-119.50115240716214,38.15803783353401],[-119.50111917516622,38.158035823168554],[-119.50108605085973,38.15803290827735],[-119.50105307372115,38.15802909233448],[-119.50102028305348,38.158024379887834],[-119.5009877179375,38.158018776553895],[-119.50095541718517,38.158012289010806],[-119.50092341929331,38.15800492499062],[-119.50089176239777,38.15799669326996],[-119.50086048422794,38.157987603659635],[-119.5008296220618,38.157977666992785],[-119.50079921268149,38.15796689511225],[-119.50076929232942,38.15795530085617],[-119.5007398966652,38.1579428980429],[-119.500711060723,38.15792970145436],[-119.50068281886985,38.15791572681855],[-119.50065520476466,38.157900990790736],[-119.50062825131816,38.15788551093366],[-119.50060199065358,38.15786930569649],[-119.50057645406847,38.15785239439295],[-119.5005516719973,38.15783479717828],[-119.50052767397528,38.15781653502513],[-119.50050448860304,38.15779762969865],[-119.5004821435127,38.157778103730514],[-119.50046066533483,38.157757980392084],[-119.50044007966669,38.15773728366665],[-119.50042041104184,38.15771603822081],[-119.50040168290074,38.157694269375206],[-119.50032932011514,38.15761012650629],[-119.50025335802836,38.157527985320364],[-119.5001738853839,38.15744794176704],[-119.50009099502505,38.157370089345434],[-119.5000047837865,38.15729451899484],[-119.49991535238102,38.157221318988725],[-119.49982280528195,38.157150574831356],[-119.49972725060111,38.15708236915822],[-119.49962879996245,38.157016781639356],[-119.4995275683718,38.15695388888642],[-119.49942367408237,38.15689376436308],[-119.49931723845671,38.156836478299454],[-119.49920838582501,38.156782097609856],[-119.49909724333982,38.15673068581481],[-119.49898394082756,38.1566823029668],[-119.49886861063686,38.15663700558025],[-119.49875138748409,38.15659484656541],[-119.49863240829603,38.15655587516662],[-119.49851181204984,38.156520136904824],[-119.49838973961093,38.156487673524445],[-119.49826633356834,38.15645852294451],[-119.49814173806837,38.156432719214536],[-119.49801609864609,38.15641029247474],[-119.49793186319306,38.15639523840926],[-119.49784833974655,38.15637788634456],[-119.49776562882751,38.15635825716405],[-119.49768382997864,38.15633637449163],[-119.49760304164487,38.156312264663235],[-119.49752336105453,38.156285956695186],[-119.49744488410262,38.15625748224934],[-119.49736770523512,38.156226875594704],[-119.4972919173355,38.15619417356654],[-119.49721761161278,38.156159415521735],[-119.49714487749188,38.15612264329159],[-119.49707380250585,38.156083901131424],[-119.4970044721906,38.15604323566721],[-119.4969369699819,38.15600069583967],[-119.49687137711503,38.15595633284511],[-119.49680777252694,38.15591020007392],[-119.49674623276127,38.1558623530464],[-119.49668683187623,38.15581284934569],[-119.49662964135557,38.15576174854872],[-119.49657473002237,38.155709112154256],[-119.49652216395639,38.15565500350914],[-119.49647200641444,38.155599487731756],[-119.49642431775433,38.155542631633885],[-119.49637915536232,38.155484503640174],[-119.49633657358383,38.155425173705765],[-119.49629662365838,38.15536471323217],[-119.49625935365769,38.15530319498127],[-119.49622480842794,38.155240692987775],[-119.49619302953593,38.155177282470106],[-119.49616405521887,38.155113039739845],[-119.4961379203386,38.15504804210992],[-119.49611465633954,38.15498236780154],[-119.49609429121095,38.15491609585006],[-119.49607684945323,38.15484930600986],[-119.4960623520485,38.15478207865832],[-119.49605081643536,38.15471449469919],[-119.49604225648804,38.15464663546508],[-119.49603668249958,38.1545785826197],[-119.49603410116958,38.15451041805955],[-119.49603451559625,38.1544422238153],[-119.49603792527252,38.15437408195315],[-119.49604432608687,38.154306074476054],[-119.49605371032825,38.154238283225],[-119.49606606669538,38.15417078978054],[-119.49608138031044,38.15410367536467],[-119.49609963273697,38.154037020742976],[-119.4961208020021,38.15397090612757],[-119.49614486262305,38.15390541108049],[-119.49617178563784,38.153840614418],[-119.49620153864011,38.1537765941157],[-119.4962340858182,38.15371342721474],[-119.49626938799834,38.153651189729125],[-119.49630740269168,38.15358995655425],[-119.49634808414555,38.15352980137669],[-119.49639138339852,38.15347079658564],[-119.49643724833935,38.15341301318581],[-119.49648562376966,38.15335652071195],[-119.49653645147055,38.15330138714517],[-119.49662789151354,38.15320223541523],[-119.49671496413086,38.153100661886675],[-119.49679756656165,38.1529967864549],[-119.49687560132287,38.152890731731986],[-119.4969489763243,38.152782622901874],[-119.497017604977,38.15267258757255],[-119.49708140629573,38.152560755625416],[-119.49714030499419,38.15244725906199],[-119.49719423157389,38.152332231847936],[-119.4972431224062,38.1522158097551],[-119.49728691980718,38.15209813020108],[-119.49732557210564,38.15197933208713],[-119.49735903370407,38.15185955563402],[-119.49738726513228,38.151738942216674],[-119.49741023309383,38.15161763419724],[-119.49742791050538,38.15149577475698],[-119.49744027652837,38.15137350772733],[-119.49744731659354,38.151250977420126],[-119.49744902241807,38.15112832845721],[-119.49744539201511,38.151005705599836],[-119.49743642969612,38.150883253577646],[-119.49742214606563,38.15076111691801],[-119.49740255800847,38.15063943977538],[-119.49737768866994,38.15051836576113],[-119.49734756742815,38.150398037774124],[-119.49731222985938,38.150278597832],[-119.4972717176959,38.15016018690366],[-119.49722607877666,38.15004294474281],[-119.49717536699065,38.14992700972308],[-119.49711964221318,38.14981251867477],[-119.49705897023527,38.14969960672328],[-119.4969934226857,38.14958840712978],[-119.49692307694646,38.14947905113382],[-119.49684801606142,38.1493716677986],[-119.49676832863811,38.14926638385863],[-119.4966841087431,38.14916332357009],[-119.49659545579101,38.14906260856439],[-119.49650247442703,38.14896435770454],[-119.4964052744034,38.1488686869449],[-119.49630397044976,38.14877570919441],[-119.49619868213784,38.148685534183414],[-119.49540130442631,38.148044517776675],[-119.49458082326807,38.14742195410787],[-119.49373792351119,38.146818362399145],[-119.4928733086487,38.1462342460377],[-119.49198770023162,38.14567009215702],[-119.49186179762187,38.145594859894885],[-119.4917328031628,38.145522968558346],[-119.49160085894844,38.14545449733474],[-119.49146611032072,38.145389521643956],[-119.49132870570936,38.14532811305542],[-119.49118879646846,38.145270339209326],[-119.49104653670976,38.14521626374209],[-119.49090208313295,38.14516594621637],[-119.49075559485321,38.14511944205542],[-119.4906072332259,38.14507680248205],[-119.49045716166889,38.14503807446233],[-119.49030554548264,38.1450033006538],[-119.49024541097165,38.14498947271007],[-119.49018591783049,38.144974011058615],[-119.49012713720215,38.144956934188826],[-119.49006913937744,38.14493826252167],[-119.490011993711,38.14491801838512],[-119.48995576853814,38.14489622598756],[-119.48990053109338,38.1448729113888],[-119.48984634742985,38.14484810246889],[-119.48979328234033,38.144821828894784],[-119.48974139927982,38.144794122084924],[-119.48969076028968,38.14476501517152],[-119.48964142592327,38.14473454296107],[-119.4895934551737,38.144702741892644],[-119.48954690540322,38.14466964999433],[-119.48950183227463,38.14463530683777],[-119.48945828968473,38.14459975349082],[-119.48941632969986,38.14456303246843],[-119.48937600249366,38.14452518768178],[-119.48933735628701,38.14448626438578],[-119.48930043729047,38.144446309125016],[-119.48926528964898,38.14440536967797],[-119.48923195538904,38.14436349499995],[-119.48920047436857,38.14432073516454],[-119.48917088422915,38.144277141303675],[-119.48914322035111,38.14423276554656],[-119.48911751581107,38.14418766095729],[-119.48909380134269,38.14414188147135],[-119.48907210529963,38.144095481831194],[-119.4890524536219,38.14404851752076],[-119.48903486980463,38.14400104469907],[-119.48901937487021,38.14395312013314],[-119.48900598734306,38.143904801130034],[-119.48899472322749,38.14385614546839],[-119.4889855959886,38.14380721132929],[-119.48897861653623,38.14375805722668],[-119.4889737932119,38.14370874193748],[-119.48897113177883,38.14365932443114],[-119.48897063541516,38.14360986379932],[-119.48897230471002,38.14356041918506],[-119.48897613766306,38.14351104971215],[-119.48898212968663,38.14346181441444],[-119.48899027361144,38.143412772165206],[-119.48900055969514,38.143363981606754],[-119.48901297563394,38.14331550108032],[-119.48902750657729,38.14326738855637],[-119.48904413514587,38.14321970156512],[-119.48906284145212,38.14317249712795],[-119.48908360312427,38.143125831689005],[-119.4891063953329,38.14307976104798],[-119.48913119082083,38.1430343402931],[-119.4891769208719,38.14295063696927],[-119.48921902050077,38.14286575400117],[-119.48925744102819,38.142779789563114],[-119.48929213803068,38.14269284307983],[-119.48932307139161,38.14260501511155],[-119.48935020534785,38.14251640723763],[-119.4893735085308,38.14242712193916],[-119.48939295400275,38.142337262480225],[-119.48940851928796,38.14224693278871],[-119.48942018639856,38.14215623733592],[-119.48942794185528,38.14206528101581],[-119.48943177670304,38.14197416902368],[-119.48943168652119,38.14188300673449],[-119.4894276714285,38.14179189958096],[-119.4894197360831,38.1417009529317],[-119.48940788967688,38.141610271969284],[-119.4893921459249,38.141519961568626],[-119.48922160101982,38.14054195469546],[-119.48909316300814,38.139559941394396],[-119.48900697804994,38.13857505202502],[-119.48896314365544,38.13758842021316],[-119.48896170858065,38.136601181545814],[-119.48900267277898,38.1356144722639],[-119.48908598740914,38.134629427954565],[-119.48909619585366,38.13450845051485],[-119.48910115581508,38.13438726797753],[-119.48910086150683,38.13426602235131],[-119.48909531329963,38.134144855718134],[-119.48908451772095,38.13402391006672],[-119.48906848744723,38.13390332712608],[-119.48904724128883,38.13378324819962],[-119.48902080416798,38.133663813999355],[-119.48898920708939,38.13354516448116],[-119.48895248710386,38.13342743868075],[-119.48891068726462,38.13331077455077],[-119.488863856577,38.133195308799145],[-119.48881204994062,38.13308117672884],[-119.48875532808522,38.132968512079486],[-119.48869375749922,38.13285744687061],[-119.4886274103518,38.132748111246876],[-119.48855636440817,38.13264063332573],[-119.48848070293853,38.132535139047235],[-119.4884005146202,38.132431752026555],[-119.48831589343382,38.132330593409165],[-119.48822693855304,38.1322317817288],[-119.48813375422841,38.13213543276874],[-119.48803644966496,38.132041659426164],[-119.48793513889434,38.13195057157976],[-119.48782994064119,38.13186227596115],[-119.4877209781839,38.13177687602981],[-119.48760837921019,38.13169447185189],[-119.4874922756675,38.13161515998291],[-119.4873728036083,38.13153903335485],[-119.48725010303077,38.13146618116711],[-119.48712431771469,38.13139668878212],[-119.48699559505305,38.13133063762529],[-119.48686408587929,38.131268105089724],[-119.4867299442907,38.13120916444553],[-119.48659332746779,38.13115388475389],[-119.48645439549021,38.13110233078642],[-119.48631331114926,38.131054562949025],[-119.48617023975716,38.13101063721134],[-119.48602534895342,38.13097060504112],[-119.48587880850846,38.13093451334391],[-119.4857307901248,38.13090240440819],[-119.48558146723597,38.1308743158558],[-119.4854310148033,38.13085028059786],[-119.48527960911099,38.13083032679628],[-119.48512742755977,38.13081447783075],[-119.48497464845899,38.130802752271265],[-119.48376626473541,38.130738934248036],[-119.4825561916251,38.130699917212795],[-119.48204444363292,38.13068192458701],[-119.48153373922928,38.13065047052446],[-119.48102464589046,38.13060558997545],[-119.4805177293,38.13054733280926],[-119.48001355271916,38.1304757637584],[-119.47951267636022,38.13039096234674],[-119.47901565676298,38.13029302280102],[-119.47852304617568,38.1301820539459],[-119.47803539194051,38.13005817908297],[-119.47755323588459,38.12992153585353],[-119.47707711371731,38.129772276085426],[-119.47660755443434,38.129610565624105],[-119.47614507972912,38.12943658414811],[-119.47569020341287,38.129250524969194],[-119.47537324746051,38.12912081845301],[-119.47505105473498,38.12899942992613],[-119.47472397496405,38.128886491142595],[-119.47439236317467,38.128782124684584],[-119.47405657930811,38.12868644382952],[-119.47371698782943,38.12859955242719],[-119.4733739573323,38.128521544787176],[-119.47302786013927,38.12845250557663],[-119.47267907189794,38.12839250972838],[-119.47232797117381,38.12834162235973],[-119.4719749390396,38.12829989870185],[-119.47162035866214,38.1282673840399],[-119.4715524447516,38.128261107214726],[-119.47148484799919,38.12825296997293],[-119.47141765005951,38.12824298214398],[-119.4713509321051,38.12823115579284],[-119.47128477472876,38.12821750520531],[-119.4712192578459,38.128202046870804],[-119.47115446059817,38.12818479946241],[-119.47109046125772,38.12816578381434],[-119.4710273371327,38.12814502289674],[-119.47096516447385,38.12812254178798],[-119.47090401838243,38.1280983676443],[-119.47084397271932,38.12807252966708],[-119.47078510001595,38.128045059067446],[-119.47072747138672,38.12801598902866],[-119.47067115644292,38.12798535466599],[-119.47061622320868,38.12795319298431],[-119.47056273803892,38.12791954283334],[-119.47051076553906,38.127884444860776],[-119.47046036848704,38.127847941463095],[-119.47041160775743,38.127810076734505],[-119.47036454224802,38.12777089641342],[-119.47031922880856,38.12773044782745],[-119.47027572217206,38.12768877983609],[-119.47023407488884,38.127645942771686],[-119.47019433726294,38.12760198837872],[-119.4701565572914,38.12755696975121],[-119.4701207806063,38.12751094126859],[-119.4700870504196,38.12746395853009],[-119.47005540747105,38.127416078287446],[-119.47002588997888,38.12736735837644],[-119.46999853359377,38.127317857647],[-119.46997337135568,38.127267635892075],[-119.4699504336541,38.12721675377547],[-119.46992974819123,38.12716527275851],[-119.46991133994862,38.12711325502582],[-119.46989523115693,38.127060763410206],[-119.46988144126922,38.12700786131675],[-119.46986998693741,38.12695461264623],[-119.46986088199216,38.126901081717875],[-119.4698541374262,38.12684733319179],[-119.4698497613812,38.126793431990734],[-119.46984775913769,38.12673944322171],[-119.46984813310904,38.126685432097425],[-119.46985088283829,38.12663146385743],[-119.46985600499887,38.12657760368929],[-119.46986349339868,38.12652391664995],[-119.46987333898738,38.12647046758707],[-119.46988552986767,38.126417321060714],[-119.46990005130935,38.12636454126538],[-119.46991688576738,38.12631219195254],[-119.46993601290303,38.12626033635344],[-119.46995740960836,38.12620903710297],[-119.46998105003429,38.126158356163785],[-119.47000690562184,38.1261083547517],[-119.47003494513656,38.126059093261546],[-119.47006513470626,38.12601063119432],[-119.47009743786211,38.125963027085355],[-119.47013181558246,38.125916338433534],[-119.47063955745979,38.12522747025776],[-119.47111747431896,38.1245254154466],[-119.47156501878794,38.12381097933534],[-119.47198167838076,38.123084981439156],[-119.47236697608201,38.122348254511536],[-119.47272047089061,38.121601643588285],[-119.47304175832163,38.12084600501692],[-119.47333047086644,38.12008220547372],[-119.47358627840998,38.11931112096875],[-119.47361378339788,38.119214854055755],[-119.47363703482173,38.119117889826285],[-119.4736560045799,38.11902034554104],[-119.473670669749,38.11892233916169],[-119.47368101261141,38.11882398920833],[-119.47368702067676,38.11872541461601],[-119.47368868669678,38.118626734591025],[-119.47368600867418,38.11852806846667],[-119.47367898986487,38.11842953555896],[-119.47366763877388,38.118331255022355],[-119.4736519691451,38.1182333457057],[-119.47363199994462,38.118135926008385],[-119.4736077553375,38.11803911373735],[-119.47357926465871,38.117943025964465],[-119.47354656237741,38.11784777888508],[-119.47350968805523,38.11775348767749],[-119.47346868629843,38.117660266363664],[-119.47342360670383,38.11756822767135],[-119.47337450379872,38.11747748289785],[-119.47332143697498,38.117388141775365],[-119.47326447041706,38.117300312338365],[-119.47320367302441,38.117214100792964],[-119.47313911832813,38.117129611388556],[-119.4730708844018,38.11704694629166],[-119.47299905376738,38.11696620546249],[-119.47292371329503,38.11688748653409],[-119.47284495409826,38.1168108846943],[-119.47276287142361,38.11673649257066],[-119.47267756453553,38.11666440011842],[-119.47258913659626,38.11659469451179],[-119.47249769454109,38.11652746003865],[-119.47240334894904,38.11646277799846],[-119.47230621390925,38.11640072660415],[-119.4722064068828,38.116341380887505],[-119.47210404856094,38.11628481260847],[-119.47199926271892,38.11623109016837],[-119.47189217606652,38.116180278527295],[-119.47178291809479,38.11613243912547],[-119.47167162091948,38.11608762980911],[-119.47155841912134,38.11604590476034],[-119.47144344958339,38.1160073144319],[-119.47132685132553,38.11597190548596],[-119.47120876533636,38.11593972073784],[-119.4710893344028,38.1159107991042],[-119.47096870293755,38.11588517555599],[-119.47084701680444,38.11586288107628],[-119.47072442314207,38.115843942622654],[-119.47060107018612,38.11582838309474],[-119.47047710708999,38.115816221306474],[-119.47035268374462,38.11580747196341],[-119.46997950851697,38.11570042613434],[-119.46961110071953,38.11558352750027],[-119.4692478770147,38.1154569082779],[-119.46889024819536,38.11532071167762],[-119.4685386187198,38.1151750917413],[-119.46819338625404,38.11502021316799],[-119.46785494122172,38.114856251127314],[-119.46752366636224,38.11468339106129],[-119.4671999362977,38.11450182847435],[-119.46688411710916,38.11431176871202],[-119.4665765659222,38.11411342672841],[-119.46627763050314,38.11390702684299],[-119.4659876488657,38.11369280248663],[-119.46570694888861,38.11347099593732],[-119.46543584794482,38.11324185804606],[-119.46517465254286,38.11300564795285],[-119.46492365798012,38.1127626327934],[-119.46468314800921,38.112513087396785],[-119.46445339451722,38.112257293974594],[-119.4642346572186,38.11199554180125],[-119.46402718336164,38.11172812688696],[-119.46383120744932,38.11145535164255],[-119.46364695097449,38.11117752453741],[-119.46358642185501,38.11109619801443],[-119.46352238334468,38.11101656698362],[-119.46345491144933,38.11093872594344],[-119.46338408624855,38.11086276726782],[-119.46330999180039,38.1107887810967],[-119.46323271604182,38.11071685522893],[-119.46315235068414,38.110647075018214],[-119.46306899110432,38.11057952327176],[-119.46298273623162,38.110514280152074],[-119.46289368843038,38.11045142308187],[-119.46280195337835,38.11039102665217],[-119.46270763994139,38.110333162533855],[-119.46261086004421,38.1102778993926],[-119.46251172853773,38.11022530280744],[-119.46241036306255,38.11017543519297],[-119.46230688390956,38.110128355725244],[-119.46220141387714,38.11008412027165],[-119.46209407812547,38.1100427813246],[-119.46198500402807,38.11000438793926],[-119.46187432102062,38.109968985675344],[-119.4617621604474,38.10993661654304],[-119.46164865540555,38.10990731895325],[-119.46153394058712,38.109881127672],[-119.46141815211925,38.109858073779144],[-119.46130142740274,38.10983818463151],[-119.46118390494897,38.109821483830515],[-119.46106572421573,38.10980799119411],[-119.46094702544161,38.10979772273327],[-119.4608279494798,38.10979069063298],[-119.46070863763086,38.10978690323787],[-119.46058923147521,38.10978636504221],[-119.46046987270515,38.10978907668469],[-119.46035070295675,38.10979503494752],[-119.46023186364181,38.10980423276034],[-119.46011349578025,38.10981665920866],[-119.45999573983265,38.10983229954665],[-119.45987873553372,38.10985113521483],[-119.45976262172661,38.10987314386187],[-119.45964753619796,38.10989829937127],[-119.45953361551474,38.10992657189227],[-119.45942099486203,38.10995792787528],[-119.45930980788273,38.10999233011171],[-119.45920018651898,38.110029737778014],[-119.45909226085575,38.11007010648422],[-119.4589861589663,38.110113388326525],[-119.45888200676039,38.11015953194419],[-119.45877992783485,38.11020848258041],[-119.45868004332696,38.11026018214725],[-119.45858247177067,38.110314569294644],[-119.45848732895601,38.11037157948314],[-119.45846555485757,38.110381519792526],[-119.45844335535574,38.11039085424243],[-119.45842075744415,38.11039957148251],[-119.45839778860088,38.110407660912905],[-119.45837447675498,38.110415112697225],[-119.45835085025278,38.11042191777434],[-119.4583269378231,38.110428067869584],[-119.45830276854254,38.110433555504606],[-119.45827837180003,38.11043837400668],[-119.45825377726106,38.110442517516674],[-119.45822901483169,38.110445980996225],[-119.45820411462212,38.110448760233886],[-119.45817910691015,38.11045085185017],[-119.45815402210425,38.1104522533018],[-119.45812889070663,38.1104529628846],[-119.45810374327623,38.110452979735776],[-119.4580786103914,38.11045230383484],[-119.4580535226129,38.110450936003645],[-119.45802851044652,38.11044887790544],[-119.45800360430621,38.110446132042796],[-119.45797883447693,38.11044270175459],[-119.4579542310779,38.11043859121192],[-119.45792982402592,38.11043380541304],[-119.45790564299907,38.110428350177344],[-119.45788171740054,38.110422232138156],[-119.45785807632294,38.110415458734835],[-119.45783474851284,38.110408038203545],[-119.4578117623359,38.110399979567376],[-119.45778914574234,38.110391292625344],[-119.45776692623294,38.110381987940436],[-119.45774513082561,38.11037207682676],[-119.4577237860226,38.110361571335865],[-119.45770291777805,38.11035048424199],[-119.45768255146677,38.110338829026645],[-119.45766271185312,38.11032661986202],[-119.45764342306096,38.11031387159401],[-119.4576247085444,38.11030059972393],[-119.45760659105915,38.110286820389845],[-119.45758909263499,38.11027255034681],[-119.45757223454885,38.110257806946585],[-119.45755603729906,38.110242608116465],[-119.45754052058028,38.110226972337514],[-119.45752570325973,38.110210918622165],[-119.4575116033541,38.11019446649098],[-119.45749823800776,38.11017763594891],[-119.45748562347177,38.110160447461155],[-119.45747377508427,38.11014292192799],[-119.45746270725179,38.110125080659635],[-119.45745243343164,38.110106945350154],[-119.45744296611568,38.11008853805114],[-119.45743431681508,38.11006988114485],[-119.45742649604631,38.11005099731717],[-119.45741951331831,38.11003190952972],[-119.45741337712107,38.110012640992224],[-119.45740809491521,38.10999321513414],[-119.45740367312288,38.109973655576184],[-119.45740011712009,38.10995398610166],[-119.45739743122998,38.10993423062744],[-119.45739561871774,38.10991441317503],[-119.4573946817866,38.10989455784122],[-119.45739462157512,38.10987468876887],[-119.45739543815574,38.109854830117506],[-119.45739713053489,38.109835006034004],[-119.45739969665406,38.10981524062313],[-119.45740313339228,38.10979555791834],[-119.45740743657001,38.109775981852465],[-119.45741260095423,38.1097565362287],[-119.45741862026472,38.10973724469154],[-119.45742548718174,38.109718130698205],[-119.45743319335496,38.10969921748992],[-119.45744172941356,38.10968052806379],[-119.4574510849777,38.10966208514483],[-119.45746124867114,38.10964391115826],[-119.45747220813494,38.10962602820229],[-119.45748395004267,38.10960845802126],[-119.45749646011652,38.10959122197917],[-119.45750972314465,38.10957434103375],[-119.45752372299975,38.10955783571086],[-119.45753844265862,38.10954172607973],[-119.45768184641274,38.10939569227852],[-119.4578314953198,38.1092536244055],[-119.45798721379384,38.10911568911844],[-119.45814881913186,38.10898204822634],[-119.4583161217283,38.1088528584997],[-119.4584889252973,38.10872827148667],[-119.4586670271032,38.108608433335405],[-119.45885021819826,38.10849348462262],[-119.45903828366778,38.10838356018886],[-119.4592310028822,38.1082787889804],[-119.45942814975584,38.10817929389793],[-119.45962949301206,38.108085191652684],[-119.45983479645456,38.107996592629355],[-119.46004381924423,38.10791360075693],[-119.46025631618171,38.10783631338669],[-119.46047203799473,38.107764821178094],[-119.46069073163055,38.107699207992574],[-119.46091214055257,38.107639550795106],[-119.46113600504107,38.10758591956414],[-119.46136206249776,38.10753837720936],[-119.46159004775369,38.10749697949817],[-119.46181969337994,38.10746177499013],[-119.46205073000135,38.10743280498009],[-119.46227755334071,38.10731112744739],[-119.46249888913252,38.1071832966782],[-119.46271447013987,38.10704946702929],[-119.46292403607907,38.10690980010026],[-119.46312733393388,38.10676446453838],[-119.4633241182611,38.10661363583471],[-119.46351415148686,38.10645749611224],[-119.46369720419358,38.10629623390569],[-119.4638730553967,38.10613004393383],[-119.46404149281167,38.105959126864285],[-119.46420231311001,38.10578368907102],[-119.46435532216469,38.10560394238514],[-119.46450033528438,38.105420103838945],[-119.46463717743642,38.105232395403775],[-119.46476568345763,38.105041043721904],[-119.46488569825387,38.10484627983282],[-119.46499707698672,38.104648338894044],[-119.46509968524838,38.104447459897294],[-119.46519339922345,38.104243885379724],[-119.46527810583821,38.10403786113094],[-119.46535370289685,38.1038296358964],[-119.46542009920444,38.10361946107676],[-119.46547721467671,38.10340759042447],[-119.46552498043647,38.103194279737224],[-119.4655633388962,38.10297978654919],[-119.46559224382743,38.10276436981995],[-119.46561166041595,38.102548289621915],[-119.46562156530358,38.10233180682618],[-119.46562194661591,38.10211518278776],[-119.46561280397626,38.10189867902987],[-119.4655941485057,38.10168255692826],[-119.4655660028093,38.10146707739572],[-119.46552840094829,38.101252500567014],[-119.46548138839864,38.101039085484985],[-119.4654250219959,38.10082708978775],[-119.46536839364667,38.10064545591768],[-119.46530394383912,38.100465457279995],[-119.46523174791173,38.1002873041255],[-119.46515189024927,38.10011120454787],[-119.46506446418391,38.0999373642406],[-119.46496957188597,38.09976598625688],[-119.46486732424438,38.09959727077235],[-119.46475784073697,38.09943141485152],[-119.46464124929068,38.09926861221745],[-119.46451768613197,38.09910905302578],[-119.46438729562762,38.09895292364244],[-119.46425023011581,38.09880040642631],[-119.46410664972821,38.098651679516095],[-119.46395672220272,38.098506916622426],[-119.4638006226875,38.09836628682504],[-119.4636385335363,38.09822995437546],[-119.46347064409544,38.09809807850503],[-119.46329715048256,38.09797081323921],[-119.46311825535759,38.09784830721775],[-119.46293416768596,38.09773070352103],[-119.46274510249464,38.09761813950318],[-119.46244837866449,38.09745382197343],[-119.46214462031487,38.097297738352765],[-119.46183419317047,38.09715007654442],[-119.46151747097744,38.09701101431196],[-119.46119483505358,38.09688071906528],[-119.46086667382949,38.09675934765931],[-119.4605333823814,38.096647046205376],[-119.46019536195575,38.09654394989546],[-119.45985301948654,38.09645018283951],[-119.45950676710582,38.09636585791628],[-119.45915702164787,38.096291076637534],[-119.458804204148,38.096225929025906],[-119.45844873933599,38.09617049350676],[-119.45809105512534,38.09612483681371],[-119.45773158209866,38.0960890139085],[-119.45737075298976,38.096063067914784],[-119.45700900216323,38.09604703006643],[-119.45664676509217,38.09604091966976],[-119.45628447783436,38.09604474408046],[-119.4560856061553,38.09605222914357],[-119.4558871675985,38.09606501592773],[-119.45568938840296,38.096083089854844],[-119.45549249405616,38.09610643031879],[-119.4552967090375,38.09613501070913],[-119.45510225656227,38.09616879844131],[-119.45490935832734,38.09620775499384],[-119.45471823425869,38.096251835952216],[-119.45452910226055,38.09630099105946],[-119.45434217796729,38.09635516427341],[-119.45415767449757,38.09641429383063],[-119.45397580221153,38.096478312316734],[-119.45379676847104,38.09654714674319],[-119.45362077740334,38.09662071863064],[-119.45344802966846,38.096698944098065],[-119.45327872223046,38.09678173395868],[-119.45311304813293,38.09686899382126],[-119.45295119627899,38.09696062419801],[-119.4527933512159,38.09705652061771],[-119.45263969292475,38.09715657374489],[-119.45249039661519,38.09726066950437],[-119.4523456325258,38.09736868921136],[-119.45220556572983,38.097480509706564],[-119.45207035594714,38.09759600349678],[-119.4519401573619,38.09771503889992],[-119.45181511844693,38.097837480195345],[-119.45169538179422,38.097963187778376],[-119.45164376890953,38.098021411967906],[-119.45159473244492,38.09808101059093],[-119.45154833095981,38.09814191248223],[-119.45150461986779,38.09820404492017],[-119.45146365137015,38.09826733371366],[-119.45142547439384,38.09833170329054],[-119.45139013453279,38.09839707678796],[-119.45135767399346,38.098463376144096],[-119.45132813154457,38.09853052219133],[-119.4513015424706,38.09859843475086],[-119.45127793852971,38.09866703272832],[-119.45125734791574,38.098736234210705],[-119.45123979522458,38.09880595656409],[-119.45122530142466,38.09887611653244],[-119.45121388383191,38.09894663033679],[-119.45120555608908,38.09901741377554],[-119.45120032814937,38.09908838232482],[-119.4511982062645,38.09915945123947],[-119.45119728275067,38.09919030779378],[-119.45119500618645,38.0992211205038],[-119.45119137930662,38.09925185233087],[-119.45118640646928,38.099282466333584],[-119.45118009365035,38.099312925712084],[-119.45117244843664,38.099343193852334],[-119.4511634800165,38.09937323437011],[-119.45115319916898,38.099403011154834],[-119.4511416182507,38.0994324884128],[-119.45112875118123,38.09946163071044],[-119.4511146134261,38.0994904030167],[-119.45109922197844,38.09951877074525],[-119.45108259533839,38.09954669979609],[-119.45106475349104,38.09957415659647],[-119.45104571788224,38.09960110814131],[-119.45102551139297,38.0996275220328],[-119.4510041583117,38.09965336651947],[-119.45098168430533,38.09967861053421],[-119.45095811638825,38.09970322373175],[-119.45093348288992,38.099727176525086],[-119.4509078134208,38.099750440120964],[-119.45088113883673,38.09977298655467],[-119.45085349120193,38.09979478872352],[-119.45082490375032,38.09981582041944],[-119.45079541084567,38.099836056360544],[-119.45076504794037,38.0998554722215],[-119.45073385153255,38.09987404466274],[-119.4507018591225,38.099891751358555],[-119.45066910916738,38.09990857102391],[-119.45063564103512,38.09992448344007],[-119.45060149495698,38.099939469478876],[-119.45056671197935,38.09995351112572],[-119.45053133391424,38.09996659150125],[-119.45049540328904,38.099978694881656],[-119.45045896329555,38.099989806717545],[-119.4504220577378,38.099999913651445],[-119.45038473097965,38.10000900353386],[-119.45034702789127,38.100017065437896],[-119.4503089937953,38.10002408967238],[-119.45027067441227,38.100030067793504],[-119.45023211580575,38.100034992614994],[-119.45019336432686,38.10003885821675],[-119.45015446655864,38.10004165995193],[-119.45011546925997,38.100043394452584],[-119.45007641930944,38.100044059633696],[-119.45003736364885,38.10004365469562],[-119.4499983492269,38.100042180125165],[-119.44995942294277,38.10003963769485],[-119.44992063158962,38.100036030461],[-119.44988202179844,38.1000313627598],[-119.44984363998186,38.1000256402023],[-119.44980553227849,38.10001886966756],[-119.44976774449742,38.10001105929438],[-119.44973032206305,38.100002218471616],[-119.44969330996058,38.09999235782677],[-119.44965675268197,38.099981489213256],[-119.4496206941723,38.09996962569618],[-119.44958517777701,38.09995678153658],[-119.4495502461899,38.09994297217434],[-119.44951594140161,38.09992821420958],[-119.44948230464927,38.099912525382734],[-119.4494493763669,38.09989592455319],[-119.44941719613682,38.09987843167665],[-119.44938580264198,38.099860067781094],[-119.44935523361963,38.09984085494156],[-119.44932552581567,38.099820816253576],[-119.44929671494081,38.09979997580534],[-119.44926883562745,38.09977835864886],[-119.44924192138804,38.09975599076983],[-119.4492160045749,38.099732899056264],[-119.44919111634115,38.09970911126633],[-119.44916728660361,38.09968465599486],[-119.4491445440064,38.09965956263906],[-119.44912291588682,38.099633861363145],[-119.44910242824241,38.09960758306203],[-119.44908310569964,38.099580759324226],[-119.44906497148439,38.09955342239391],[-119.44904804739403,38.09952560513208],[-119.44903235377116,38.099497340977116],[-119.44901790947921,38.09946866390454],[-119.44900473187975,38.099439608386184],[-119.44899283681173,38.09941020934878],[-119.44898223857223,38.09938050213198],[-119.44897294989948,38.099350522445754],[-119.44896498195747,38.099320306327655],[-119.44895834432252,38.099289890099335],[-119.44895304497189,38.099259310322985],[-119.44894909027396,38.099228603757304],[-119.44894648498091,38.09919780731341],[-119.44894523222273,38.099166958010365],[-119.44894533350363,38.099136092930756],[-119.44894678870014,38.09910524917607],[-119.44894959606138,38.099074463822134],[-119.44895375221107,38.09904377387453],[-119.44895925215161,38.09901321622406],[-119.44899606818478,38.098808706536445],[-119.44902390503343,38.098603312438705],[-119.44904272941724,38.09839728004177],[-119.44905251885574,38.09819085621945],[-119.44905326169466,38.09798428831257],[-119.44904495711975,38.09777782383246],[-119.4490276151572,38.09757171016459],[-119.44900125666145,38.09736619427206],[-119.44896591328964,38.097161522399674],[-119.44892162746348,38.096957939778974],[-119.44886845231801,38.096755690334376],[-119.44880645163761,38.096555016391044],[-119.44873569977919,38.09635615838449],[-119.44865628158283,38.09615935457263],[-119.44856829226983,38.09596484075027],[-119.4484718373282,38.09577284996676],[-119.4483670323862,38.09558361224679],[-119.44825400307322,38.09539735431491],[-119.44813288486931,38.095214299323914],[-119.44807732658231,38.09513694790719],[-119.4480184392751,38.0950611501712],[-119.44795629244713,38.09498699556022],[-119.44789095944351,38.0949145715794],[-119.44782251736845,38.09484396369142],[-119.44775104699431,38.094775255215644],[-119.44767663266622,38.09470852722991],[-119.44759936220251,38.09464385847474],[-119.4475193267911,38.09458132526059],[-119.44743662088185,38.094521001377665],[-119.44735134207521,38.09446295800903],[-119.44726359100687,38.0944072636465],[-119.44717347122916,38.094353984009906],[-119.44708108908877,38.09430318196955],[-119.44698655360133,38.094254917472014],[-119.44688997632275,38.094209247469486],[-119.44679147121758,38.09416622585248],[-119.4466911545246,38.09412590338645],[-119.44658914461967,38.09408832765165],[-119.44648556187599,38.09405354298721],[-119.4463805285223,38.094021590438736],[-119.44627416849838,38.09399250770994],[-119.44616660730914,38.093966329118075],[-119.44605797187633,38.09394308555356],[-119.44594839038892,38.093922804443494],[-119.4458379921519,38.09390550971924],[-119.44572690743372,38.093891221788354],[-119.44561526731258,38.093879957510325],[-119.44550320352187,38.09387173017682],[-119.4453908482947,38.093866549495914],[-119.44527833420801,38.093864421580776],[-119.44516579402611,38.09386534894228],[-119.44505336054407,38.09386933048613],[-119.44494116643116,38.09387636151422],[-119.44482934407422,38.09388643373005],[-119.44471802542162,38.09389953524856],[-119.44460734182752,38.093915650610185],[-119.44449742389692,38.09393476079907],[-119.44438840133172,38.09395684326546],[-119.44428040277757,38.093981871952415],[-119.44417355567215,38.094009817326345],[-119.44406798609492,38.09404064641209],[-119.44308658884506,38.094358236197046],[-119.44211987067614,38.09470280599906],[-119.44116901864604,38.095073932780515],[-119.4402352003847,38.095471160892586],[-119.43931956266326,38.09589400263324],[-119.43924703360487,38.0959302379717],[-119.43917614280568,38.09596844449887],[-119.43910697601221,38.096008576003136],[-119.43903961688613,38.09605058394445],[-119.43897414690312,38.09609441751308],[-119.43891064525431,38.09614002369111],[-119.43884918875051,38.09618734731649],[-119.43878985172928,38.09623633114966],[-119.43873270596502,38.096286915943075],[-119.43867782058217,38.09633904051246],[-119.43862526197158,38.096392641811065],[-119.43857509371017,38.09644765500589],[-119.43852737648409,38.09650401355594],[-119.43848216801517,38.0965616492929],[-119.43843952299123,38.09662049250342],[-119.43839949299988,38.0966804720135],[-119.43836212646595,38.09674151527456],[-119.43832746859313,38.09680354845117],[-119.4382955613091,38.096866496510366],[-119.43826644321486,38.09693028331235],[-119.43824014953793,38.096994831702666],[-119.43821671208983,38.09706006360544],[-119.43819615922745,38.09712590011784],[-119.43817851581879,38.097192261605514],[-119.43816380321286,38.09725906779889],[-119.43815203921372,38.0973262378903],[-119.43814323805901,38.09739369063164],[-119.43813741040263,38.09746134443275],[-119.43813456330183,38.09752911746004],[-119.43813470020865,38.09759692773547],[-119.43813782096574,38.09766469323573],[-119.43814392180636,38.097732331991466],[-119.43815299535906,38.09779976218639],[-119.43816503065652,38.09786690225626],[-119.43818001314875,38.09793367098762],[-119.43819792472057,38.097999987615886],[-119.43821874371366,38.09806577192323],[-119.43824244495262,38.09813094433544],[-119.4382689997754,38.098195426018265],[-119.43829837606788,38.09825913897285],[-119.43833053830284,38.09832200612993],[-119.43836544758271,38.09838395144323],[-119.43840306168673,38.098444899981345],[-119.43844333512192,38.09850477801844],[-119.43848621917815,38.09856351312337],[-119.43853166198699,38.09862103424748],[-119.43857960858439,38.09867727181029],[-119.43863000097724,38.098732157784],[-119.43868277821352,38.098785625775456],[-119.43873787645583,38.09883761110675],[-119.43879522905881,38.098888050893294],[-119.4388547666496,38.098936884119965],[-119.4389164172119,38.098984051714915],[-119.43898010617288,38.09902949662109],[-119.4390457564936,38.09907316386516],[-119.439113288762,38.09911500062411],[-119.43921264155092,38.09917653894412],[-119.43930924096291,38.09924075646805],[-119.43940297135319,38.09930757632211],[-119.4394937205106,38.09937691851713],[-119.43958137979186,38.099448700044206],[-119.43966584425162,38.09952283497413],[-119.43974701276808,38.099599234560195],[-119.43982478816416,38.099677807344364],[-119.43989907732377,38.099758459266816],[-119.43996979130326,38.099841093778466],[-119.44003684543812,38.09992561195654],[-119.44010015944414,38.10001191262294],[-119.44015965751372,38.10009989246538],[-119.44021526840663,38.1001894461611],[-119.44026692553528,38.100280466502774],[-119.44031456704462,38.10037284452695],[-119.44035813588609,38.1004664696445],[-119.44039757988612,38.10056122977282],[-119.44043285180855,38.10065701147026],[-119.44046390941135,38.10075370007166],[-119.44049071549713,38.100851179825746],[-119.44051323795787,38.100949334033714],[-119.44053144981345,38.101048045188755],[-119.44054532924383,38.10114719511698],[-119.44055485961552,38.101246665118644],[-119.44056002950136,38.10134633611039],[-119.44056083269446,38.10144608876779],[-119.44055726821553,38.10154580366813],[-119.44054934031432,38.10164536143343],[-119.44053705846451,38.101744642873406],[-119.44052043735242,38.10184352912806],[-119.44049949685963,38.10194190181011],[-119.4404742620392,38.10203964314658],[-119.44044476308568,38.10213663611997],[-119.44041103529916,38.10223276460826],[-119.44037311904304,38.10232791352394],[-119.4403310596958,38.10242196895189],[-119.44028490759662,38.102514818285655],[-119.44023471798539,38.102606350362414],[-119.44018055093645,38.102696455595954],[-119.44012247128681,38.10278502610803],[-119.44006054855865,38.10287195585738],[-119.43999485687596,38.102957140766826],[-119.43992547487606,38.103040478847866],[-119.43985248561526,38.10312187032279],[-119.43977597646965,38.10320121774416],[-119.4396960390305,38.10327842611152],[-119.43961276899448,38.10335340298518],[-119.43819527275942,38.10450114966775],[-119.43682775989927,38.10568617055705],[-119.43551180111201,38.10690710663902],[-119.43424890819755,38.108162557644114],[-119.43304053231849,38.10945108364733],[-119.43188806232926,38.110771206714006],[-119.43079282317531,38.11212141258928],[-119.42975607436455,38.1135001524294],[-119.42877900851249,38.11490584457312],[-119.42875187588855,38.114944846905374],[-119.42872305254886,38.114983084721786],[-119.42869257296088,38.11502051229347],[-119.42866047357303,38.115057084860446],[-119.42862679277096,38.115092758685165],[-119.42859157083168,38.11512749110488],[-119.42855484987554,38.11516124058255],[-119.42851667381574,38.115193966756664],[-119.42847708830583,38.11522563048939],[-119.42843614068512,38.11525619391347],[-119.42839387992211,38.11528562047746],[-119.4283503565559,38.11531387498953],[-119.42830562263568,38.11534092365939],[-119.42825973165866,38.11536673413888],[-119.42821273850588,38.11539127556061],[-119.42816469937672,38.1154145185748],[-119.42811567172163,38.115436435384474],[-119.42806571417344,38.115456999778665],[-119.42801488647719,38.1154761871638],[-119.42796324941875,38.11549397459308],[-119.42791086475201,38.11551034079394],[-119.42785779512513,38.11552526619352],[-119.42780410400553,38.115538732942],[-119.42774985560405,38.115550724934046],[-119.42769511479803,38.115561227828024],[-119.42763994705382,38.115570229063124],[-119.42758441834845,38.11557771787446],[-119.4275285950907,38.11558368530591],[-119.42747254404169,38.115588124220764],[-119.42741633223496,38.11559102931037],[-119.42736002689634,38.11559239710044],[-119.4273036953636,38.1155922259552],[-119.42724740500576,38.11559051607926],[-119.42719122314261,38.11558726951759],[-119.42713521696426,38.11558249015285],[-119.42707945345052,38.11557618370084],[-119.42702399929105,38.115568357703715],[-119.42696892080546,38.11555902152084],[-119.42691428386404,38.11554818631771],[-119.42686015380887,38.11553586505251],[-119.42680659537578,38.115522072460706],[-119.42675367261687,38.11550682503729],[-119.42670144882393,38.115490141017204],[-119.42664998645263,38.1154720403534],[-119.42659934704797,38.11545254469304],[-119.42654959117056,38.115431677351594],[-119.42650077832428,38.115409463284934],[-119.42645296688501,38.11538592905954],[-119.4264062140308,38.11536110282065],[-119.42636057567368,38.115335014258584],[-119.42631610639255,38.1153076945734],[-119.42627285936803,38.115279176437305],[-119.42623088631882,38.11524949395586],[-119.42619023743991,38.11521868262692],[-119.42615096134244,38.11518677929846],[-119.42611310499571,38.1151538221242],[-119.42607671367082,38.11511985051826],[-119.4260418308868,38.11508490510777],[-119.42600849835823,38.115049027684435],[-119.42597675594568,38.11501226115456],[-119.42594664160788,38.11497464948756],[-119.42591819135629,38.114936237663635],[-119.42589143921222,38.11489707161971],[-119.42586641716595,38.114857198194656],[-119.42584315513865,38.11481666507327],[-119.42582168094651,38.11477552072916],[-119.4258020202675,38.11473381436681],[-119.42578419661072,38.11469159586277],[-119.42576823128822,38.11464891570598],[-119.42575414338958,38.114605824937335],[-119.42574194975919,38.11456237508874],[-119.42564739458271,38.114001990350864],[-119.42552907243429,38.113444430569864],[-119.42538711733965,38.11289032478014],[-119.42522168997664,38.11234029810556],[-119.42503297749181,38.11179497105441],[-119.42482119328685,38.11125495881976],[-119.42458657677577,38.11072087058585],[-119.42441338646222,38.110471852386475],[-119.42422944071825,38.11022769662034],[-119.42403495805685,38.109988693186295],[-119.4238301694954,38.10975512586289],[-119.42361531828092,38.10952727197152],[-119.42339065960105,38.10930540204738],[-119.42315646028075,38.10908977951847],[-119.42291299846534,38.1088806603929],[-119.42266056329004,38.108678292955304],[-119.42239945453653,38.10848291747212],[-119.42212998227706,38.1082947659065],[-119.4218524665061,38.108114061643256],[-119.42156723676048,38.10794101922371],[-119.42127463172824,38.107775844091165],[-119.42097499884649,38.10761873234731],[-119.42066869388911,38.10746987051945],[-119.42035608054445,38.1073294353393],[-119.42003752998382,38.10719759353332],[-119.41971342042095,38.10707450162502],[-119.41938413666328,38.10696030574914],[-119.41905006965548,38.10685514147848],[-119.41892232852861,38.10681249427526],[-119.41879278268462,38.10677339340994],[-119.41866158975847,38.106737886460806],[-119.4185289093886,38.106706016633005],[-119.41839490302269,38.10667782270593],[-119.41825973372133,38.106653338986085],[-119.41812356595959,38.106632595265346],[-119.4179865654271,38.10661561678472],[-119.41784889882635,38.106602424203636],[-119.41771073367,38.10659303357484],[-119.41757223807718,38.10658745632485],[-119.41743358056887,38.10658569924005],[-119.41729492986303,38.10658776445848],[-119.41715645466935,38.10659364946717],[-119.417018323484,38.10660334710525],[-119.41688070438478,38.106616845572624],[-119.41674376482656,38.10663412844435],[-119.41660767143773,38.10665517469062],[-119.41647258981737,38.10667995870229],[-119.41633868433395,38.10670845032211],[-119.41620611792534,38.10674061488135],[-119.41607505190062,38.106776413241924],[-119.41594564574385,38.10681580184415],[-119.41581805692005,38.106858732759584],[-119.41569244068376,38.10690515374942],[-119.41556894989002,38.10695500832791],[-119.4154477348085,38.10700823583121],[-119.41532894294073,38.107064771491125],[-119.41521271884058,38.10712454651383],[-119.41509920393837,38.107187488163675],[-119.41498853636895,38.107253519851525],[-119.41488085080346,38.10732256122803],[-119.41476214870843,38.10738453114211],[-119.41464077545298,38.10744318198548],[-119.41451687962346,38.10749844195434],[-119.41439061289574,38.10755024339599],[-119.4142621298492,38.10759852289178],[-119.41413158777758,38.107643221334754],[-119.41399914649628,38.10768428400196],[-119.41386496814674,38.10772166062157],[-119.41372921699778,38.1077553054344],[-119.41359205924451,38.10778517724995],[-119.41345366280477,38.10781123949688],[-119.41331419711342,38.107833460267734],[-119.41317383291496,38.10785181235812],[-119.41303274205428,38.10786627329992],[-119.41289109726628,38.1078768253889],[-119.41274907196426,38.10788345570633],[-119.41260684002759,38.10788615613482],[-119.41246457558871,38.10788492336829],[-119.41232245281986,38.107879758916035],[-119.4121806457198,38.10787066910075],[-119.41206018460757,38.107867104537114],[-119.41193994376361,38.10786033658343],[-119.41182005960361,38.10785037291808],[-119.41170066813856,38.10783722484503],[-119.41158190482022,38.10782090728098],[-119.41146390438745,38.107801438738484],[-119.41134680071335,38.107778841304984],[-119.41123072665324,38.10775314061755],[-119.411115813894,38.10772436583401],[-119.4110021928045,38.10769254959971],[-119.4108899922878,38.10765772801059],[-119.41077933963464,38.10761994057205],[-119.41067036037927,38.10757923015429],[-119.41057628643814,38.1075409073048],[-119.41048397221132,38.10750000003671],[-119.41039353137751,38.107456558725794],[-119.41030507530792,38.107410636868345],[-119.41021871292891,38.10736229101527],[-119.41013455058803,38.10731158070238],[-119.41005269192286,38.10725856837709],[-119.40999658508709,38.10722223153798],[-119.40993890116316,38.107187470578296],[-119.40987971101255,38.107154328198604],[-119.4098190873467,38.107122845111284],[-119.40975710463773,38.10709305999029],[-119.4096938390269,38.10706500942373],[-119.40962936823115,38.10703872786901],[-119.40956377144757,38.10701424761041],[-119.4094971292562,38.10699159871945],[-119.40942952352098,38.106970809017994],[-119.40936103728933,38.10695190404404],[-119.40929175468995,38.10693490702041],[-119.4092217608297,38.106919838826116],[-119.40915114168895,38.10690671797094],[-119.40907998401602,38.106895560572354],[-119.40900837522057,38.10688638033609],[-119.40893640326641,38.10687918853909],[-119.40886415656333,38.10687399401568],[-119.40879172385846,38.106870803146755],[-119.4087191941275,38.10686961985201],[-119.40864665646521,38.10687044558493],[-119.40857419997619,38.10687327933124],[-119.40854143970925,38.10687456095909],[-119.4085086427367,38.10687493546046],[-119.40847584927889,38.106874402376036],[-119.40844309955193,38.10687296235963],[-119.40841043371827,38.10687061717712],[-119.4083778918375,38.10686736970459],[-119.40834551381712,38.1068632239245],[-119.40831333936379,38.106858184921016],[-119.40828140793433,38.106852258873694],[-119.40824975868763,38.10684545304989],[-119.40821843043648,38.106837775795896],[-119.40818746159991,38.106829236526636],[-119.40815689015628,38.10681984571419],[-119.40812675359645,38.106809614874905],[-119.40809708887794,38.106798556555276],[-119.40806793237965,38.106786684316575],[-119.4080393198571,38.10677401271818],[-119.40801128639872,38.106760557299815],[-119.40798386638268,38.106746334562374],[-119.40795709343489,38.10673136194773],[-119.40793100038763,38.10671565781737],[-119.40790561923936,38.106699241429844],[-119.40788098111537,38.10668213291718],[-119.40785711622979,38.10666435326013],[-119.40783405384838,38.106645924262494],[-119.40781182225273,38.10662686852439],[-119.40779739902712,38.106614498149035],[-119.40778244570257,38.10660252719511],[-119.40776697998503,38.10659096983698],[-119.40775102018708,38.10657983975933],[-119.40773458520631,38.10656915014076],[-119.40771769450295,38.10655891363851],[-119.40770036807677,38.10654914237317],[-119.40768262644352,38.10653984791454],[-119.40766449061046,38.10653104126781],[-119.4076459820516,38.10652273286054],[-119.40762712268233,38.10651493253043],[-119.4076079348333,38.10650764951345],[-119.4075884412241,38.106500892433196],[-119.40756866493646,38.10649466929038],[-119.40754862938661,38.106488987453595],[-119.40752835829788,38.106483853650445],[-119.4075078756724,38.10647927395964],[-119.40748720576282,38.10647525380382],[-119.40746637304348,38.106471797943044],[-119.4074454021815,38.106468910469275],[-119.40742431800757,38.10646659480142],[-119.40740314548655,38.106464853681395],[-119.40738190968787,38.106463689170745],[-119.40736063575591,38.10646310264834],[-119.40733934888014,38.106463094808646],[-119.40731807426545,38.106463665660925],[-119.40729683710214,38.106464814529296],[-119.4072756625362,38.106466540053404],[-119.4072545756395,38.106468840190146],[-119.40723360138007,38.10647171221602],[-119.40721276459267,38.1064751527304],[-119.4071920899492,38.10647915765953],[-119.40717160192965,38.10648372226133],[-119.407151324793,38.10648884113105],[-119.4071312825486,38.10649450820766],[-119.40711149892766,38.10650071678102],[-119.40709004582263,38.10650744394429],[-119.40706830827729,38.106513574582635],[-119.40704631284994,38.10651910120578],[-119.40702408641393,38.106524017061496],[-119.40700165612495,38.10652831614367],[-119.40697904938764,38.10653199319982],[-119.40695629382236,38.10653504373745],[-119.40693341723123,38.106537464029465],[-119.40691044756431,38.10653925111879],[-119.40688741288531,38.10654040282203],[-119.40686434133748,38.10654091773206],[-119.406841261109,38.10654079521978],[-119.4068182003987,38.10654003543486],[-119.40679518738162,38.10653863930562],[-119.40677225017446,38.106536608537745],[-119.40674941680128,38.10653394561246],[-119.40672671515935,38.1065306537832],[-119.40670417298492,38.10652673707188],[-119.40668181781942,38.106522200263775],[-119.40665967697572,38.106517048901885],[-119.40663777750495,38.106511289279986],[-119.40661614616319,38.10650492843504],[-119.40659480937897,38.106497974138534],[-119.40657379322091,38.10649043488706],[-119.4065531233659,38.106482319891846],[-119.40653282506764,38.10647363906756],[-119.4065129231259,38.106464403020205],[-119.40649344185611,38.1064546230341],[-119.4064744050598,38.10644431105815],[-119.40645583599532,38.10643347969119],[-119.40643775734962,38.1064221421667],[-119.40641883769321,38.106410268564254],[-119.4063994146332,38.10639891376283],[-119.4063795109452,38.106388091077],[-119.40635914996832,38.10637781319742],[-119.40633835557793,38.1063680921758],[-119.40631715215746,38.10635893941095],[-119.40629556457004,38.10635036563536],[-119.40627361812919,38.10634238090254],[-119.40625133856928,38.10633499457529],[-119.40622875201511,38.10632821531481],[-119.40620588495159,38.106322051070364],[-119.40618276419245,38.106316509070076],[-119.40615941684892,38.10631159581246],[-119.40613587029786,38.10630731705875],[-119.40611215214972,38.10630367782616],[-119.4060882902162,38.10630068238199],[-119.40606431247753,38.10629833423872],[-119.4060402470497,38.10629663614972],[-119.4060161221516,38.106295590106164],[-119.40599196607181,38.10629519733461],[-119.40596780713543,38.106295458295634],[-119.40594367367096,38.106296372683246],[-119.40591959397703,38.10629793942522],[-119.40589559628923,38.106300156684455],[-119.40587170874693,38.106303021860974],[-119.40584795936044,38.1063065315951],[-119.40582437597806,38.1063106817714],[-119.40580098625338,38.10631546752336],[-119.40578918414808,38.106317884835825],[-119.40577728554815,38.106319986157],[-119.40576530400057,38.10632176909443],[-119.40575325314674,38.106323231618184],[-119.40574114670699,38.10632437206316],[-119.40572899846487,38.10632518913091],[-119.4057168222516,38.10632568189115],[-119.40570463193022,38.10632584978288],[-119.40569244137987,38.106325692614924],[-119.40568026447986,38.10632521056627],[-119.40566811509402,38.1063244041857],[-119.40565600705486,38.10632327439133],[-119.4056439541478,38.10632182246944],[-119.40563197009548,38.10632005007316],[-119.40562006854219,38.106317959220355],[-119.4056082630382,38.10631555229155],[-119.40559656702447,38.106312832027136],[-119.40558499381736,38.10630980152421],[-119.40557355659325,38.10630646423313],[-119.40556226837387,38.10630282395345],[-119.40555114201118,38.10629888482982],[-119.4055401901729,38.10629465134702],[-119.40552942532803,38.10629012832502],[-119.40551885973265,38.106285320913436],[-119.40550850541602,38.106280234585675],[-119.40549837416683,38.10627487513264],[-119.40548868232595,38.10626975344629],[-119.40547877142329,38.106264900548084],[-119.40546865339346,38.10626032228184],[-119.40545834042052,38.10625602416063],[-119.40544784492324,38.10625201136026],[-119.4054371795402,38.10624828871282],[-119.40542635711455,38.10624486070111],[-119.40541539067851,38.10624173145311],[-119.40540429343777,38.106238904737],[-119.40539307875545,38.106236383956684],[-119.4053817601362,38.10623417214764],[-119.40537035120968,38.10623227197332],[-119.40535886571443,38.106230685721854],[-119.40534731748109,38.10622941530343],[-119.40533572041589,38.106228462247856],[-119.40532408848388,38.106227827702746],[-119.40531243569207,38.10622751243226],[-119.40530077607256,38.10622751681604],[-119.40528912366574,38.106227840848774],[-119.40527749250325,38.10622848414028],[-119.40526589659117,38.10622944591595],[-119.40525434989317,38.10623072501756],[-119.40524286631357,38.10623231990489],[-119.4052314596808,38.10623422865738],[-119.40522014373057,38.10623644897652],[-119.40520893208937,38.10623897818865],[-119.40519783825816,38.10624181324813],[-119.40518687559597,38.106244950741],[-119.40517605730392,38.10624838688914],[-119.40516539640925,38.1062521175548],[-119.40515490574974,38.10625613824552],[-119.40514459795813,38.10626044411969],[-119.40513448544694,38.10626502999217],[-119.4051245803936,38.106269890340755],[-119.4051148947257,38.10627501931263],[-119.40510544010662,38.10628041073159],[-119.4050962279216,38.10628605810531],[-119.40508726926387,38.1062919546333],[-119.40507857492142,38.10629809321505],[-119.40507015536396,38.106304466458504],[-119.40506202073031,38.106311066689074],[-119.40505418081618,38.10631788595884],[-119.4050466450624,38.10632491605609],[-119.40503942254357,38.10633214851525],[-119.40503252195701,38.10633957462708],[-119.40502595161252,38.106347185449074],[-119.40501971942211,38.10635497181638],[-119.40501383289066,38.106362924352695],[-119.4050082991068,38.10637103348164],[-119.40500312473439,38.106379289438266],[-119.4049983160045,38.10638768228079],[-119.40499387870787,38.1063962019026],[-119.40498928760357,38.1064050151595],[-119.40498431079376,38.106413696717624],[-119.40497895431761,38.106422236041894],[-119.40497322467506,38.106430622769885],[-119.40496712881895,38.10643884672428],[-119.40496067414645,38.10644689792533],[-119.4049538684902,38.1064547666029],[-119.40494672010871,38.106462443208365],[-119.4049392376765,38.10646991842612],[-119.40493143027341,38.106477183185014],[-119.40492330737362,38.10648422866923],[-119.40491487883419,38.106491046329076],[-119.40490615488311,38.106497627891315],[-119.40489714610679,38.10650396536917],[-119.40488786343741,38.10651005107212],[-119.40487831813941,38.106515877615145],[-119.40486852179599,38.10652143792771],[-119.40485848629501,38.106526725262356],[-119.4048482238145,38.10653173320288],[-119.40483774680803,38.10653645567214],[-119.4048270679894,38.10654088693938],[-119.40481620031743,38.106545021627255],[-119.40480515698003,38.10654885471826],[-119.40479395137832,38.106552381560995],[-119.40478259711037,38.106555597875534],[-119.40477110795457,38.10655849975892],[-119.40475949785314,38.10656108368969],[-119.40474778089492,38.10656334653222],[-119.40473597129855,38.10656528554055],[-119.40472408339501,38.10656689836164],[-119.40471213161034,38.1065681830384],[-119.40470013044815,38.106569138011814],[-119.40468809447185,38.10656976212301],[-119.40468000047952,38.10656996298923],[-119.40467190251275,38.10656994997581],[-119.40466380962138,38.106569723097245],[-119.40465573084957,38.10656928260711],[-119.40464767522566,38.10656862899767],[-119.40463965175212,38.106567762999354],[-119.40463166939554,38.10656668557992],[-119.40462373707649,38.10656539794346],[-119.40461586365969,38.106563901528965],[-119.40460805794396,38.106562198008724],[-119.40460032865253,38.10656028928651],[-119.40459268442322,38.10655817749537],[-119.4045851337987,38.10655586499531],[-119.4045776852171,38.106553354370696],[-119.40457034700252,38.10655064842719],[-119.40456312735567,38.106547750188845],[-119.40455603434481,38.106544662894485],[-119.40454907589664,38.10654138999435],[-119.40454225978745,38.106537935146015],[-119.40453559363452,38.10653430221041],[-119.40452908488753,38.106530495247476],[-119.40449689116315,38.106511681677375],[-119.40446390051657,38.10649375075778],[-119.4044301516913,38.1064767235461],[-119.40439568432107,38.1064606200384],[-119.40436053888341,38.10644545914599],[-119.404324756652,38.106431258673176],[-119.40428837964838,38.10641803529644],[-119.40425145059241,38.10640580454473],[-119.4042140128522,38.10639458078129],[-119.40417611039317,38.106384377186856],[-119.40413778772648,38.10637520574404],[-119.40409908985663,38.10636707722341],[-119.40406006222878,38.1063600011707],[-119.40402075067523,38.106353985895716],[-119.4039812013617,38.10634903846256],[-119.40397243934997,38.106347941335535],[-119.40396373055438,38.10634660561465],[-119.40395508537799,38.106345032895526],[-119.40394651414792,38.10634322505685],[-119.40393802710291,38.106341184258156],[-119.40392963438119,38.106338912937304],[-119.40392134600827,38.10633641380749],[-119.40391317188504,38.10633368985407],[-119.40390512177585,38.1063307443309],[-119.40389720529699,38.106327580756606],[-119.40388943190501,38.1063242029102],[-119.40388181088565,38.10632061482671],[-119.40387435134257,38.10631682079225],[-119.4038670621865,38.10631282533902],[-119.40385995212473,38.10630863323976],[-119.4038530296505,38.10630424950216],[-119.40384630303303,38.1062996793628],[-119.40383978030756,38.10629492828094],[-119.40383346926575,38.106290001931924],[-119.40382737744642,38.106284906200585],[-119.40382151212647,38.106279647174],[-119.40381588031227,38.1062742311343],[-119.40381048873127,38.106268664551244],[-119.40380534382385,38.10626295407433],[-119.40380045173582,38.106257106525035],[-119.40379581831097,38.1062511288885],[-119.40379144908405,38.106245028305324],[-119.40378734927422,38.10623881206291],[-119.40378352377886,38.10623248758683],[-119.40377997716763,38.10622606243198],[-119.403776713677,38.10621954427349],[-119.40377373720534,38.10621294089763],[-119.40377105130806,38.106206260192366],[-119.40376865919352,38.10619951013812],[-119.4037665637191,38.10619269879815],[-119.4037647673879,38.10618583430888],[-119.4037632723456,38.10617892487026],[-119.40376208037803,38.10617197873587],[-119.40376119290893,38.106165004203206],[-119.40376061099833,38.10615800960363],[-119.40375947926141,38.106144388753],[-119.4037577553571,38.106130806713324],[-119.40375544132529,38.10611727955318],[-119.40375253990389,38.10610382327615],[-119.40374905452589,38.10609045380207],[-119.40374498931502,38.10607718694795],[-119.40374034908102,38.10606403840945],[-119.40373513931395,38.1060510237422],[-119.40372936617763,38.10603815834352],[-119.40372303650238,38.10602545743406],[-119.4037161577769,38.10601293603986],[-119.4037087381395,38.106000608974604],[-119.40370078636836,38.10598849082207],[-119.40369231187124,38.10597659591883],[-119.40368332467432,38.10596493833737],[-119.40367383541022,38.10595353186938],[-119.40366385530564,38.105942390009496],[-119.4036533961679,38.10593152593919],[-119.40364247037107,38.105920952511454],[-119.40363109084126,38.10591068223529],[-119.40361927104134,38.10590072726109],[-119.40360702495505,38.10589109936624],[-119.4035943670705,38.10588180994112],[-119.4035813123629,38.10587286997574],[-119.40348123328705,38.10580820710282],[-119.40337930663836,38.105745371941346],[-119.40337225944386,38.105741280985846],[-119.40336503563776,38.105737387107006],[-119.40335764404331,38.10573369506086],[-119.40335009368867,38.1057302093569],[-119.40334239379598,38.10572693425258],[-119.40333455376997,38.10572387374819],[-119.40332658318651,38.10572103158181],[-119.403318491781,38.10571841122489],[-119.40331028943632,38.10571601587798],[-119.4033019861709,38.1057138484668],[-119.40329359212649,38.1057119116386],[-119.40328511755558,38.10571020775905],[-119.40327657280915,38.1057087389093],[-119.40326796832379,38.10570750688339],[-119.40325931460909,38.10570651318616],[-119.4032506222348,38.10570575903131],[-119.40324190181782,38.10570524533995],[-119.4032331640094,38.105704972739524],[-119.40322441948192,38.105704941562976],[-119.40321567891603,38.105705151848426],[-119.40320695298752,38.10570560333898],[-119.40319825235434,38.10570629548321],[-119.4031895876435,38.105707227435715],[-119.40318096943817,38.10570839805819],[-119.40317240826465,38.10570980592084],[-119.40316391457966,38.1057114493041],[-119.4031554987575,38.105713326200714],[-119.40314717107728,38.10571543431822],[-119.40313894171054,38.105717771081785],[-119.40313082070871,38.105720333637194],[-119.40312281799083,38.10572311885456],[-119.40311494333157,38.10572612333201],[-119.40310720634906,38.1057293433998],[-119.40309961649339,38.10573277512495],[-119.4030921830349,38.10573641431588],[-119.40308791491354,38.105738669925834],[-119.40308374825356,38.10574104102186],[-119.4030796880576,38.10574352475712],[-119.40307573920055,38.1057461181496],[-119.40307190642362,38.10574881808544],[-119.40306819432858,38.10575162132309],[-119.40306460737237,38.1057545244968],[-119.40306114986167,38.10575752412088],[-119.40305782594774,38.105760616593884],[-119.40305463962142,38.10576379820282],[-119.40305159470839,38.10576706512771],[-119.40304869486452,38.105770413446166],[-119.40304594357153,38.105773839137996],[-119.40304334413275,38.10577733809019],[-119.40304089966924,38.105780906101735],[-119.40303861311591,38.10578453888873],[-119.40303648721815,38.105788232089445],[-119.40303452452844,38.10579198126968],[-119.4030327274033,38.10579578192799],[-119.40303109800045,38.10579962950111],[-119.40302963827631,38.105803519369495],[-119.40302834998344,38.10580744686276],[-119.40302723466868,38.10581140726539],[-119.40302642720471,38.105814273041],[-119.40302549378993,38.10581711483136],[-119.4030244355591,38.10581992918151],[-119.40302325379882,38.105822712669806],[-119.4030219499458,38.10582546191213],[-119.40302052558528,38.10582817356606],[-119.4030189824489,38.10583084433483],[-119.40301732241275,38.10583347097137],[-119.4030155474951,38.105836050282264],[-119.40301365985378,38.10583857913163],[-119.40301166178381,38.10584105444499],[-119.40300955571432,38.10584347321291],[-119.40300734420585,38.105845832494666],[-119.40300502994704,38.10584812942193],[-119.40300261575156,38.105850361202144],[-119.40300010455451,38.10585252512196],[-119.40299749940897,38.105854618550524],[-119.40299480348214,38.1058566389427],[-119.4029920200517,38.105858583842135],[-119.40298915250169,38.10586045088426],[-119.40298620431841,38.10586223779916],[-119.40298317908614,38.10586394241436],[-119.40298008048298,38.10586556265742],[-119.40297691227605,38.10586709655847],[-119.40297367831722,38.105868542252644],[-119.40297038253829,38.10586989798229],[-119.40296702894615,38.10587116209914],[-119.40296362161808,38.1058723330663],[-119.40296016469655,38.10587340946013],[-119.40295666238451,38.105874389972],[-119.40295311893992,38.10587527340981],[-119.40294953867088,38.10587605869949],[-119.40294592593017,38.1058767448863],[-119.40294228511007,38.10587733113598],[-119.40293862063704,38.105877816735806],[-119.4029349369663,38.10587820109539],[-119.40293123857633,38.10587848374741],[-119.40292752996356,38.10587866434824],[-119.40292381563687,38.10587874267832],[-119.40292010011206,38.105878718642415],[-119.40291638790633,38.10587859226972],[-119.402912683533,38.10587836371389],[-119.40290899149568,38.10587803325282],[-119.40290531628315,38.10587760128828],[-119.40290166236362,38.1058770683454],[-119.40289803417943,38.10587643507216],[-119.40289443614168,38.10587570223844],[-119.40289087262478,38.10587487073527],[-119.40288734796115,38.10587394157352],[-119.40288386643604,38.10587291588286],[-119.4028804322822,38.1058717949103],[-119.40287704967483,38.105870580018696],[-119.40287372272638,38.10586927268511],[-119.40287045548169,38.10586787449894],[-119.40286725191305,38.10586638716007],[-119.40286411591522,38.1058648124768],[-119.40286105130092,38.105863152363575],[-119.40285806179602,38.105861408838734],[-119.40285515103513,38.10585958402203],[-119.40285232255701,38.10585768013201],[-119.4028495798005,38.105855699483385],[-119.40284692610018,38.105853644484206],[-119.40284436468235,38.10585151763289],[-119.40284189866111,38.1058493215152],[-119.40283953103457,38.10584705880114],[-119.40283726468128,38.105844732241664],[-119.40283510235655,38.10584234466535],[-119.40283304668932,38.105839898974956],[-119.40283110017882,38.10583739814391],[-119.40282926519151,38.105834845212655],[-119.40282754395837,38.105832243285],[-119.40282593857197,38.105829595524284],[-119.40282445098416,38.105826905149605],[-119.40282308300344,38.105824175431884],[-119.40282183629294,38.10582140968981],[-119.40282071236845,38.105818611285905],[-119.40281971259635,38.10581578362246],[-119.40281451025436,38.105798933735514],[-119.40280998037025,38.105781963033415],[-119.40280612741483,38.105764888267316],[-119.40280295519077,38.10574772629111],[-119.40280046682874,38.10573049404477],[-119.40279866478447,38.10571320853758],[-119.40279755083618,38.10569588683138],[-119.40279719000061,38.1056904552754],[-119.40279659044796,38.105685036912014],[-119.40279575290288,38.10567963828968],[-119.40279467837762,38.10567426593299],[-119.40279336817092,38.10566892633476],[-119.40279182386622,38.10566362594825],[-119.40279004733003,38.1056583711793],[-119.40278804070945,38.10565316837865],[-119.4027858064296,38.105648023834206],[-119.40278334719086,38.10564294376348],[-119.40278066596541,38.105637934306024],[-119.40277776599369,38.1056330015161],[-119.40277465078053,38.10562815135528],[-119.40277132409096,38.10562338968532],[-119.40276778994546,38.10561872226096],[-119.40276405261535,38.10561415472307],[-119.40276011661743,38.1056096925918],[-119.40275598670866,38.10560534125992],[-119.4027516678803,38.10560110598626],[-119.40274716535193,38.10559699188941],[-119.40274248456514,38.1055930039415],[-119.40273763117706,38.105589146962224],[-119.40273261105324,38.105585425612965],[-119.40272743026085,38.10558184439117],[-119.40271461703959,38.10557357779664],[-119.4027014630355,38.105565652421625],[-119.40268798279602,38.10555807703099],[-119.40267419122942,38.105550860002595],[-119.40266010358823,38.10554400931792],[-119.40264573545241,38.10553753255331],[-119.40263110271209,38.105531436871594],[-119.4026162215501,38.10552572901414],[-119.4026011084239,38.105520415293405],[-119.40258578004749,38.10551550158597],[-119.40257025337297,38.105510993326],[-119.40255454557166,38.10550689549932],[-119.40253867401528,38.1055032126378],[-119.4025226562565,38.10549994881439],[-119.4025065100098,38.10549710763865],[-119.4024902531317,38.105494692252684],[-119.40247390360103,38.10549270532776],[-119.40245747949918,38.105491149061244],[-119.40209908792339,38.10546545586557],[-119.40174000794636,38.10544670168774],[-119.4017311614215,38.105446443818714],[-119.40172230892152,38.10544642217582],[-119.40171346054656,38.105446636783725],[-119.40170462639205,38.105447087397565],[-119.40169581653726,38.10544777350325],[-119.40168704103361,38.10544869431795],[-119.40167830989347,38.105449848791096],[-119.40166963307853,38.10545123560549],[-119.40166102048845,38.105452853178846],[-119.40165248194972,38.10545469966566],[-119.4016440272043,38.10545677295915],[-119.4016356658985,38.10545907069385],[-119.40162740757205,38.10546159024818],[-119.40161926164726,38.10546432874747],[-119.4016112374181,38.10546728306728],[-119.40160334403974,38.10547044983689],[-119.40159559051811,38.10547382544325],[-119.40158798569946,38.105477406034936],[-119.4015805382605,38.105481187526756],[-119.40157325669831,38.10548516560423],[-119.40156614932071,38.10548933572866],[-119.40155922423688,38.10549369314211],[-119.4015524893479,38.105498232873074],[-119.40154595233797,38.105502949742004],[-119.40153962066543,38.105507838367195],[-119.40152621263034,38.10551818078892],[-119.40151235823984,38.10552814914648],[-119.40149807419895,38.105537731420355],[-119.40148337773083,38.10554691605644],[-119.40146828655593,38.10555569198026],[-119.40145281887057,38.10556404860998],[-119.40143699332519,38.105571975869395],[-119.40142082900172,38.10557946420009],[-119.40140434539056,38.10558650457276],[-119.40138756236712,38.10559308849838],[-119.4013705001679,38.10559920803816],[-119.40135317936597,38.10560485581335],[-119.4013356208463,38.105610025014],[-119.40131784578043,38.105614709407206],[-119.40129987560111,38.10561890334467],[-119.40128173197627,38.10562260176942],[-119.40126343678307,38.105625800221986],[-119.40124501208139,38.10562849484577],[-119.40122648008726,38.105630682391634],[-119.40120786314617,38.105632360221904],[-119.40118918370597,38.10563352631349],[-119.40117046428986,38.10563417926031],[-119.40115172746928,38.105634318275136],[-119.4011329958367,38.10563394319028],[-119.40111429197823,38.105633054458046],[-119.40109563844656,38.10563165315003],[-119.40107705773372,38.10562974095591],[-119.40105857224384,38.105627320181334],[-119.40104020426631,38.105624393745245],[-119.40102197594875,38.105620965176236],[-119.40100390927043,38.10561703860842],[-119.40098602601573,38.105612618776355],[-119.40096834774774,38.10560771100937],[-119.40095089578249,38.10560232122512],[-119.40093369116306,38.10559645592244],[-119.4009167546343,38.10559012217362],[-119.40090010661774,38.10558332761571],[-119.40088376718707,38.10557608044138],[-119.4008677560439,38.10556838938914],[-119.4008520924939,38.105560263732606],[-119.40083679542363,38.105551713269506],[-119.40082530051767,38.105545287607896],[-119.40081353072488,38.105539180539196],[-119.40080150018186,38.105533399398524],[-119.40078922333855,38.1055279511296],[-119.40077671494056,38.105522842276294],[-119.40076399001171,38.10551807897478],[-119.40075106383581,38.10551366694625],[-119.40073795193842,38.10550961148995],[-119.40072467006819,38.10550591747682],[-119.40071123417782,38.105502589343736],[-119.40069766040507,38.105499631088094],[-119.4006839650533,38.105497046263025],[-119.40067016457188,38.105494837973126],[-119.40065627553642,38.10549300887075],[-119.40064231462888,38.10549156115282],[-119.40062829861766,38.10549049655819],[-119.40061424433719,38.10548981636552],[-119.40060016866795,38.10548952139178],[-119.40058608851606,38.10548961199128],[-119.40057202079306,38.10549008805517],[-119.40055798239555,38.10549094901169],[-119.40054399018493,38.10549219382673],[-119.4005300609671,38.105493821005126],[-119.40051621147227,38.10549582859256],[-119.40050245833498,38.105498214177715],[-119.40049147943444,38.105500120048625],[-119.40048042421647,38.1055017270476],[-119.40046930570827,38.10550303328101],[-119.40045813701158,38.10550403720964],[-119.40044693128733,38.10550473765043],[-119.40043570174002,38.10550513377805],[-119.40042446160224,38.10550522512569],[-119.40041322411915,38.1055050115857],[-119.40040200253263,38.10550449340974],[-119.40039081006593,38.10550367120841],[-119.40037965990795,38.105502545950536],[-119.40036856519775,38.1055011189621],[-119.40035753900905,38.10549939192467],[-119.40034659433483,38.105497366873294],[-119.40033574407197,38.10549504619427],[-119.40032500100611,38.10549243262221],[-119.40031437779663,38.105489529236905],[-119.40030388696157,38.10548633945958],[-119.40029354086309,38.105482867049],[-119.40028335169266,38.105479116096944],[-119.40027333145694,38.10547509102346],[-119.40026349196344,38.10547079657158],[-119.40025897387038,38.105468824805946],[-119.40025437263238,38.10546697698056],[-119.40024969369288,38.105465255281445],[-119.4002449425873,38.10546366174546],[-119.4002401249364,38.10546219825781],[-119.40023524643959,38.105460866549876],[-119.40023031286842,38.105459668197106],[-119.40022533005947,38.10545860461722],[-119.40022030390757,38.10545767706845],[-119.40021524035893,38.10545688664814],[-119.40021014540392,38.10545623429139],[-119.40020502507002,38.10545572076995],[-119.40019988541485,38.105455346691365],[-119.40019473251883,38.10545511249816],[-119.400189572478,38.10545501846741],[-119.40018441139695,38.10545506471034],[-119.40017925538142,38.105455251172266],[-119.40017411053117,38.10545557763257],[-119.4001689829328,38.10545604370507],[-119.40016387865242,38.10545664883834],[-119.40015880372866,38.1054573923165],[-119.40015376416531,38.10545827326001],[-119.40014876592438,38.105459290626655],[-119.40014381491903,38.10546044321286],[-119.4001389170065,38.10546172965505],[-119.40013407798119,38.105463148431326],[-119.4001293035679,38.10546469786321],[-119.40012459941492,38.10546637611767],[-119.4001199710875,38.10546818120926],[-119.40011542406111,38.105470111002475],[-119.40011096371512,38.1054721632143],[-119.40010659532626,38.10547433541688],[-119.40010232406257,38.10547662504041],[-119.40009815497712,38.105479029376156],[-119.40009409300211,38.105481545579735],[-119.40009014294303,38.105484170674295],[-119.40008630947302,38.105486901554336],[-119.40008259712721,38.10548973498903],[-119.40007901029747,38.10549266762633],[-119.40007555322723,38.105495695996815],[-119.4000722300063,38.10549881651781],[-119.40006904456628,38.10550202549757],[-119.40006600067566,38.10550531913975],[-119.4000631019355,38.10550869354785],[-119.40006035177518,38.105512144729765],[-119.40005775344827,38.10551566860259],[-119.40005531002873,38.1055192609975],[-119.40004341159249,38.105538311914515],[-119.40003236480462,38.10555768039632],[-119.40002218321803,38.10557734268148],[-119.40001287932434,38.10559727464811],[-119.40000446453833,38.10561745184346],[-119.39999694918414,38.1056378495139],[-119.39999034248243,38.10565844263531],[-119.39998465253913,38.10567920594378],[-119.39997988633554,38.10570011396655],[-119.39997604971974,38.10572114105334],[-119.39997314739927,38.10574226140775],[-119.39997118293562,38.10576344911895],[-119.39997015873959,38.10578467819347],[-119.39997007606853,38.10580592258705],[-119.39997093502464,38.10582715623663],[-119.39997185550592,38.10584948021266],[-119.39997182081599,38.105871816016816],[-119.39997083099364,38.105894138140165],[-119.39996888716838,38.10591642108939],[-119.39996599155938,38.10593863941588],[-119.39996214747276,38.1059607677448],[-119.39995735929786,38.10598278080407],[-119.3999516325023,38.106004653453226],[-119.39994497362561,38.10602636071221],[-119.39993739027193,38.10604787778971],[-119.3999288911012,38.1060691801117],[-119.39991948581928,38.106090243349364],[-119.39990918516696,38.10611104344688],[-119.39989800090761,38.106131556649],[-119.39988594581379,38.10615175952804],[-119.39987303365264,38.106171629010795],[-119.39985927917019,38.106191142404725],[-119.39984469807447,38.106210277424005],[-119.39982930701764,38.10622901221488],[-119.39982761582264,38.10623092461028],[-119.39982584223688,38.106232789825725],[-119.39982398836668,38.106234605646044],[-119.39982205641368,38.10623636991478],[-119.39982004867231,38.10623808053668],[-119.39981796752699,38.10623973548015],[-119.39981581544927,38.10624133277978],[-119.39981359499501,38.106242870538615],[-119.39981130880125,38.10624434693039],[-119.39980895958305,38.1062457602017],[-119.39980655013042,38.10624710867415],[-119.3998040833048,38.106248390746266],[-119.39980156203585,38.10624960489547],[-119.39979898931783,38.10625074967979],[-119.39979636820618,38.10625182373969],[-119.39979370181372,38.10625282579958],[-119.39979099330706,38.10625375466943],[-119.39978824590291,38.10625460924609],[-119.39978546286407,38.10625538851467],[-119.39978264749577,38.10625609154968],[-119.3997798031415,38.10625671751621],[-119.39977693317931,38.106257265670806],[-119.39977404101758,38.10625773536254],[-119.39977113009107,38.106258126033545],[-119.39976820385681,38.106258437219886],[-119.39976526579007,38.106258668551995],[-119.3997623193801,38.10625881975511],[-119.39975936812614,38.10625889064971],[-119.39975641553309,38.106258881151554],[-119.3997534651075,38.10625879127195],[-119.39975052035334,38.10625862111759],[-119.39974758476782,38.106258370890636],[-119.39974466183727,38.10625804088819],[-119.39974175503305,38.1062576315022],[-119.39973886780723,38.106257143218855],[-119.39973600358879,38.10625657661803],[-119.39973316577925,38.10625593237265],[-119.3997303577489,38.1062552112478],[-119.39972758283251,38.106254414099915],[-119.39972484432565,38.10625354187571],[-119.39972214548058,38.106252595611025],[-119.39971948950249,38.106251576429656],[-119.39971687954565,38.10625048554202],[-119.39971431870968,38.10624932424363],[-119.39971181003584,38.106248093913685],[-119.39970935650346,38.10624679601334],[-119.39970111273401,38.10624243304828],[-119.39969268590191,38.106238294192956],[-119.39968408576145,38.1062343842382],[-119.39967532226761,38.1062307077099],[-119.39966640556436,38.106227268863755],[-119.39965734597307,38.10622407168029],[-119.39964815398046,38.10622111986038],[-119.39963884022657,38.10621841682079],[-119.39962941549231,38.106215965690396],[-119.39961989068709,38.10621376930643],[-119.3996102768361,38.10621183021126],[-119.39960058506769,38.10621015064947],[-119.39959082660029,38.10620873256517],[-119.39958101272966,38.10620757759985],[-119.39957115481552,38.106206687090406],[-119.39956126426877,38.10620606206763],[-119.39955135253793,38.10620570325498],[-119.3995414310961,38.10620561106783],[-119.3995315114276,38.106205785612865],[-119.39952160501473,38.106206226688045],[-119.39951172332442,38.10620693378281],[-119.39950187779496,38.106207906078716],[-119.39949207982286,38.10620914245023],[-119.39948234074953,38.10621064146629],[-119.39947267184819,38.10621240139171],[-119.39946308431085,38.106214420189346],[-119.39945358923539,38.10621669552236],[-119.39944419761257,38.10621922475703],[-119.3994349203135,38.10622200496564],[-119.39942576807692,38.1062250329301],[-119.39941675149679,38.10622830514539],[-119.39940788101008,38.106231817823854],[-119.39939916688463,38.10623556689948],[-119.39939061920734,38.1062395480326],[-119.39938224787238,38.10624375661494],[-119.39926706104617,38.106305904519225],[-119.39915435858099,38.10637083410023],[-119.3990442480357,38.106438483395344],[-119.39893683449655,38.106508787846366],[-119.39883222047698,38.10658168036107],[-119.39876800307098,38.10662624542104],[-119.39870185712998,38.106669013213505],[-119.39863386317707,38.10670993167279],[-119.39856410398559,38.10674895098451],[-119.3984926644783,38.10678602364627],[-119.398419631624,38.106821104525466],[-119.39834509433163,38.106854150914224],[-119.398269143342,38.10688512258148],[-119.39823985800388,38.10689704259137],[-119.39821109250376,38.10690972829861],[-119.39818287889666,38.10692316556694],[-119.3981552486226,38.10693733942259],[-119.3981282324716,38.10695223407096],[-119.39810186054945,38.106967832914236],[-119.39807616224401,38.10698411856988],[-119.39807213131662,38.10698666967405],[-119.39806799086115,38.10698910880585],[-119.39806374585717,38.10699143303175],[-119.39805940141014,38.1069936395565],[-119.39805496274496,38.10699572572627],[-119.3980504351999,38.10699768903218],[-119.39804582422016,38.106999527112954],[-119.39804113535126,38.10700123775795],[-119.3980363742324,38.107002818909855],[-119.39803154658965,38.10700426866702],[-119.39802665822909,38.107005585285876],[-119.39802171502987,38.107006767182924],[-119.39801672293707,38.10700781293678],[-119.3980116879546,38.107008721289695],[-119.39800661613782,38.1070094911492],[-119.39800151358662,38.10701012158943],[-119.39799638643764,38.10701061185217],[-119.39799124085725,38.10701096134777],[-119.39798608303389,38.107011169655905],[-119.39798091917076,38.107011236526056],[-119.39797575547838,38.107011161877814],[-119.39797059816696,38.107010945800916],[-119.39796545343913,38.10701058855525],[-119.39796032748231,38.107010090570505],[-119.39795522646138,38.10700945244552],[-119.39795015651127,38.10700867494783],[-119.39794512372944,38.10700775901248],[-119.39794013416878,38.10700670574104],[-119.39793519383005,38.107005516400285],[-119.39793030865494,38.107004192420575],[-119.39792548451872,38.10700273539427],[-119.39792072722327,38.107001147073646],[-119.39791604249008,38.10699942936899],[-119.39791143595338,38.10699758434616],[-119.39790691315332,38.10699561422407],[-119.3979024795294,38.106993521372175],[-119.39789814041384,38.1069913083075],[-119.39789390102516,38.10698897769165],[-119.39788976646197,38.10698653232762],[-119.39788574169684,38.10698397515636],[-119.39788183157019,38.106981309253335],[-119.39787804078469,38.106978537824766],[-119.39787437389938,38.10697566420378],[-119.39787083532434,38.10697269184645],[-119.39786742931533,38.10696962432752],[-119.39786415996865,38.106966465336264],[-119.39786103121622,38.10696321867187],[-119.39776267585846,38.10686079178531],[-119.39766031915038,38.10676084259662],[-119.39755406101419,38.10666346866229],[-119.39744400517878,38.10656876502481],[-119.39735520265522,38.1064972385437],[-119.3972633072839,38.10642819431556],[-119.39716843013859,38.106361715787855],[-119.39707068589613,38.10629788330691],[-119.39697019269742,38.10623677402084],[-119.3951895256568,38.10499341015011],[-119.39429714070234,38.104374024370905],[-119.39426866217566,38.1043539416157],[-119.39424106501194,38.10433310474623],[-119.39421438117611,38.10431153789781],[-119.39418864157516,38.104289266051126],[-119.39416387602219,38.10426631500357],[-119.39414011320208,38.10424271133916],[-119.39411738063815,38.10421848239782],[-119.39409570466027,38.104193656243694],[-119.39407511037444,38.10416826163265],[-119.3940556216337,38.10414232797896],[-119.39403726101035,38.10411588532124],[-119.3940200497701,38.10408896428765],[-119.39400400784717,38.1040615960604],[-119.39398915382135,38.10403381233964],[-119.39397550489646,38.10400564530675],[-119.39392818666146,38.103908048858365],[-119.39387664844686,38.10381179612035],[-119.39382095125194,38.10371700098434],[-119.39376116099626,38.10362377561692],[-119.39369734844182,38.10353223032678],[-119.39362958910903,38.103442473434285],[-119.39355796318755,38.1033546111433],[-119.39348255544118,38.103268747415555],[-119.39340345510756,38.10318498384765],[-119.39326742283973,38.103041827641746],[-119.39313659286148,38.102895675321946],[-119.39301107077037,38.10274664488743],[-119.39287949818322,38.10259144535116],[-119.39274124197698,38.10243991718891],[-119.3925964661056,38.1022922400495],[-119.39244534224942,38.102148589014895],[-119.39228804961176,38.102009134392915],[-119.39219962293186,38.101930691566075],[-119.39211472364568,38.101849852054386],[-119.39203345570087,38.10176671484585],[-119.39195591859747,38.10168138174166],[-119.39193864213578,38.10166234648561],[-119.39192055883512,38.1016437850616],[-119.39190168949138,38.101625718814745],[-119.39188205580432,38.10160816852075],[-119.39186168035269,38.10159115436195],[-119.39184058656812,38.101574695904084],[-119.39181879870834,38.10155881207392],[-119.39179634182908,38.10154352113736],[-119.39177324175546,38.101528840678526],[-119.39174952505215,38.10151478757942],[-119.39172521899297,38.101501378000656],[-119.39170035152934,38.10148862736283],[-119.39167495125824,38.10147655032871],[-119.39164904738936,38.10146516078646],[-119.39162266971144,38.101454471833684],[-119.39159584855807,38.10144449576225],[-119.39156861477272,38.10143524404433],[-119.39154099967338,38.101426727319016],[-119.39151303501654,38.10141895538025],[-119.39145983299045,38.10140569503335],[-119.39140613047464,38.10139376076719],[-119.391351980388,38.10138316434185],[-119.39129743609033,38.101373916199094],[-119.39124255132995,38.1013660254521],[-119.39122543015296,38.10136354096906],[-119.39120842828802,38.10136058887667],[-119.39119156618162,38.1013571727251],[-119.39117486411222,38.10135329662268],[-119.39115834216585,38.10134896523081],[-119.39114202021186,38.10134418375845],[-119.39112591787905,38.10133895795582],[-119.39111005453218,38.10133329410749],[-119.3910944492485,38.101327199024865],[-119.39107912079494,38.101320680037894],[-119.39106408760551,38.10131374498634],[-119.39104936775912,38.101306402210334],[-119.3910349789578,38.10129866054033],[-119.39102093850548,38.10129052928646],[-119.39100726328712,38.10128201822742],[-119.39099396974846,38.101273137598646],[-119.39098107387623,38.10126389807999],[-119.39096859117885,38.10125431078289],[-119.39095653666786,38.10124438723705],[-119.39094492483989,38.10123413937654],[-119.3909337696591,38.101223579525474],[-119.39092308454056,38.10121272038309],[-119.39091288233395,38.1012015750086],[-119.39090317530821,38.10119015680541],[-119.39089397513682,38.10117847950503],[-119.39088529288355,38.10116655715059],[-119.39087713898951,38.10115440407985],[-119.39086952326018,38.10114203490804],[-119.390862454854,38.10112946451029],[-119.39085594227113,38.10111670800371],[-119.39084999334324,38.10110378072922],[-119.3908446152242,38.10109069823306],[-119.39083981438137,38.10107747624818],[-119.39083559658796,38.10106413067522],[-119.39083196691588,38.10105067756351],[-119.39082892972986,38.10103713309158],[-119.39082648868207,38.10102351354796],[-119.39082464670771,38.101009835311345],[-119.39082340602165,38.10099611483106],[-119.39082276811553,38.10098236860721],[-119.3908227337562,38.10096861317083],[-119.39082330298463,38.10095486506403],[-119.39082447511592,38.10094114082013],[-119.39082624874018,38.10092745694371],[-119.39082870107771,38.10091332208602],[-119.39083175443592,38.100899260509415],[-119.39083540535042,38.100885288167014],[-119.39083964967881,38.100871420910714],[-119.39084448260552,38.100857674473154],[-119.39084989864713,38.10084406444992],[-119.39085589165879,38.100830606281825],[-119.390862454841,38.10081731523735],[-119.3908695807474,38.10080420639541],[-119.39087726129327,38.10079129462815],[-119.39088548776462,38.10077859458422],[-119.39089425082814,38.10076612067195],[-119.39090354054174,38.10075388704318],[-119.39091334636586,38.10074190757711],[-119.39092365717543,38.100730195864585],[-119.39094601020803,38.10070477012059],[-119.39096722363054,38.10067874185396],[-119.39098727146079,38.100652142945535],[-119.39100612914443,38.10062500597509],[-119.39102377358486,38.100597364181425],[-119.39104018317167,38.100569251421575],[-119.39105533780695,38.100540702129486],[-119.39106921893006,38.10051175127368],[-119.39108180954025,38.10048243431454],[-119.3910930942175,38.10045278716079],[-119.39110305914141,38.100422846125596],[-119.39111169210813,38.10039264788199],[-119.3911189825453,38.10036222941802],[-119.39112492152495,38.10033162799146],[-119.39112950177447,38.10030088108407],[-119.3911327176855,38.10027002635579],[-119.39113456532081,38.10023910159858],[-119.39113504241902,38.100208144690136],[-119.39113414839754,38.10017719354746],[-119.39113188435307,38.10014628608047],[-119.39113110672389,38.1001396495796],[-119.39113004389374,38.10013303781942],[-119.39112869709261,38.10012645845113],[-119.3911270678791,38.100119919088456],[-119.39112515813862,38.10011342729877],[-119.39112297008126,38.1001069905945],[-119.39112050623908,38.10010061642421],[-119.39111776946335,38.100094312164124],[-119.39111476292116,38.10008808510965],[-119.39111149009175,38.10008194246673],[-119.39110795476257,38.10007589134373],[-119.39110416102476,38.10006993874302],[-119.39110011326856,38.10006409155299],[-119.39109581617807,38.10005835654005],[-119.39109127472602,38.100052740340836],[-119.39108649416784,38.10004724945442],[-119.39108148003565,38.100041890234884],[-119.39107623813193,38.100036668883966],[-119.39107077452269,38.100031591443845],[-119.39106509553042,38.100026663790146],[-119.39105920772701,38.10002189162516],[-119.39105311792585,38.10001728047131],[-119.39104683317413,38.10001283566463],[-119.39104036074461,38.10000856234865],[-119.39103370812731,38.10000446546849],[-119.39102688302061,38.100000549765085],[-119.39101989332266,38.09999681976967],[-119.39101274712192,38.09999327979864],[-119.39100545268805,38.09998993394845],[-119.39099801846224,38.09998678609092],[-119.39099045304737,38.09998383986879],[-119.39098276519822,38.09998109869143],[-119.39095425204447,38.09997094123903],[-119.39092618323201,38.09996003833291],[-119.39089858996083,38.09994840209226],[-119.3908715029022,38.099936045451486],[-119.39084495216477,38.099922982145664],[-119.39081896726091,38.09990922669548],[-119.39079357707398,38.09989479439081],[-119.39076880982628,38.099879701274034],[-119.39074469304762,38.099863964121965],[-119.39072125354468,38.09984760042731],[-119.39069851737133,38.099830628379216],[-119.39067650979953,38.099813066843005],[-119.39065525529134,38.09979493533926],[-119.39063477747172,38.09977625402209],[-119.3905966764267,38.099741367557655],[-119.39055728100828,38.0997073907087],[-119.39051662597643,38.09967435345269],[-119.39051022438346,38.099669472756176],[-119.39050361619864,38.099664767137625],[-119.39049680908572,38.09966024205431],[-119.39048981093913,38.099655902754066],[-119.39048262987491,38.09965175426936],[-119.39047527422116,38.09964780141127],[-119.3904677525085,38.099644048764105],[-119.39046007346006,38.09964050067986],[-119.39045224598154,38.0996371612734],[-119.39044427915067,38.09963403441749],[-119.39043618220686,38.09963112373847],[-119.39042796454036,38.099628432611915],[-119.39041963568147,38.09962596415884],[-119.39041120528944,38.099623721241954],[-119.39040268314118,38.099621706462415],[-119.39039407912014,38.099619922156855],[-119.39038540320462,38.099618370394566],[-119.39037666545636,38.09961705297519],[-119.39036787600872,38.099615971426545],[-119.39035904505515,38.099615127002984],[-119.3903501828371,38.09961452068373],[-119.39034129963235,38.09961415317204],[-119.390332405743,38.09961402489406],[-119.39032351148356,38.099614135998586],[-119.39031462716895,38.099614486356764],[-119.39030576310256,38.099615075562255],[-119.39029692956429,38.09961590293177],[-119.39028813679863,38.099616967505774],[-119.39027939500282,38.099618268049646],[-119.39027071431501,38.09961980305511],[-119.39026210480235,38.09962157074197],[-119.39025244440448,38.09962355162433],[-119.39024270288314,38.09962526657005],[-119.39023289195816,38.09962671351592],[-119.39022302343302,38.09962789072109],[-119.39021310918041,38.09962879676934],[-119.39020316112806,38.09962943057056],[-119.39019319124436,38.09962979136225],[-119.390183211524,38.09962987871036],[-119.39017323397343,38.09962969250979],[-119.39016327059659,38.09962923298453],[-119.39015333338027,38.099628500687466],[-119.39014343427984,38.09962749649961],[-119.39013358520478,38.09962622162908],[-119.39012379800444,38.09962467760966],[-119.39011408445367,38.09962286629895],[-119.39010445623875,38.099620789876134],[-119.39009492494323,38.099618450839294],[-119.39008550203413,38.0996158520025],[-119.39007619884802,38.09961299649242],[-119.39006702657747,38.09960988774446],[-119.39005799625748,38.09960652949873],[-119.39004911875232,38.09960292579549],[-119.39004040474238,38.099599080970286],[-119.39003186471137,38.099594999648836],[-119.39002350893365,38.099590686741266],[-119.39001534746193,38.09958614743644],[-119.39000739011512,38.0995813871955],[-119.38994863081953,38.09954363235312],[-119.38989156487031,38.09950428897209],[-119.38983626100341,38.099463404443384],[-119.38978278583201,38.099421028014376],[-119.38973120376622,38.09937721072933],[-119.38971853316649,38.09936567070067],[-119.38970637477507,38.09935379156592],[-119.38969474311476,38.09934158751455],[-119.3896836520792,38.09932907312414],[-119.38967311491618,38.09931626334299],[-119.38966314421191,38.09930317347219],[-119.38965375187598,38.09928981914741],[-119.38964494912705,38.09927621632018],[-119.38963674647958,38.09926238123888],[-119.38962915373111,38.099248330429255],[-119.38962217995073,38.09923408067482],[-119.38961583346813,38.09921964899661],[-119.3896101218637,38.099205052632996],[-119.38960505195946,38.099190309019086],[-119.38960062981094,38.09917543576584],[-119.38959686069994,38.099160450639026],[-119.38959374912812,38.09914537153808],[-119.38959129881182,38.09913021647466],[-119.38956843024437,38.09897062766827],[-119.38956778870764,38.098966841636624],[-119.38956698092282,38.098963075528154],[-119.38956600786744,38.09895933390013],[-119.38956487071898,38.09895562128019],[-119.38956357085351,38.09895194216081],[-119.38956210984396,38.09894830099399],[-119.3895604894583,38.09894470218577],[-119.38955871165729,38.09894115009096],[-119.38955677859221,38.09893764900784],[-119.38955469260225,38.098934203172924],[-119.38955245621155,38.098930816755896],[-119.38955007212638,38.098927493854575],[-119.38954754323166,38.098924238489865],[-119.38954487258748,38.09892105460098],[-119.38954206342555,38.09891794604062],[-119.38953911914514,38.09891491657036],[-119.38953604330905,38.09891196985606],[-119.38953283963924,38.09890910946339],[-119.38952951201239,38.098906338853666],[-119.38952606445513,38.09890366137947],[-119.38952250113925,38.09890108028074],[-119.38951882637663,38.09889859868076],[-119.38951504461394,38.09889621958241],[-119.38951116042739,38.098893945864546],[-119.38950717851706,38.098891780278564],[-119.38950310370137,38.098889725444906],[-119.3894989409111,38.09888778385008],[-119.38949469518347,38.09888595784353],[-119.38949037165614,38.09888424963482],[-119.3894859755608,38.09888266129104],[-119.38948151221702,38.09888119473413],[-119.38947698702574,38.09887985173876],[-119.38947240546277,38.09887863393002],[-119.38946777307201,38.09887754278152],[-119.38946309545902,38.098876579613645],[-119.38945837828395,38.098875745591876],[-119.3894536272549,38.09887504172546],[-119.38944884812095,38.09887446886605],[-119.38944404666506,38.09887402770692],[-119.3894392286974,38.09887371878186],[-119.38943440004796,38.09887354246468],[-119.3894295665597,38.098873498968764],[-119.38942473408144,38.09887358834673],[-119.38941990846081,38.09887381049041],[-119.3894150955371,38.098874165131036],[-119.38941030113425,38.09887465183941],[-119.38939265386293,38.098876443575456],[-119.38937493846792,38.098877749701764],[-119.38935717634159,38.09887856864113],[-119.38933938893264,38.09887889940464],[-119.38932159772038,38.09887874159287],[-119.38930382418873,38.0988780953964],[-119.38928608980017,38.09887696159553],[-119.38926841596998,38.0988753415594],[-119.3892508240403,38.09887323724431],[-119.38923333525436,38.0988706511913],[-119.38921597073082,38.09886758652319],[-119.38919875143827,38.09886404694075],[-119.38918169816996,38.09886003671819],[-119.38916483151863,38.098855560698105],[-119.3891481718516,38.09885062428552],[-119.38913173928636,38.09884523344139],[-119.38911555366599,38.09883939467551],[-119.3890996345355,38.09883311503845],[-119.38908400111802,38.09882640211322],[-119.38906867229164,38.098819264006075],[-119.38905366656665,38.0988117093366],[-119.38903900206316,38.098803747227485],[-119.3890246964892,38.098795387293386],[-119.38901076711939,38.098786639629346],[-119.38899723077401,38.098777514798634],[-119.38898410379873,38.09876802381995],[-119.38897140204489,38.09875817815411],[-119.38895914085033,38.098747989690246],[-119.38894733502086,38.09873747073146],[-119.3889359988124,38.09872663397988],[-119.38892514591377,38.09871549252141],[-119.38891478943017,38.09870405980992],[-119.38890494186725,38.098692349650925],[-119.38889561511621,38.098680376185],[-119.3888868204393,38.09866815387066],[-119.38887916834973,38.09865752176242],[-119.38887105095723,38.09864710736785],[-119.38886247816953,38.09863692339809],[-119.38885346045025,38.09862698228311],[-119.38884400880603,38.09861729615641],[-119.38883413477313,38.09860787684027],[-119.38882385040331,38.098598735831274],[-119.38881316824917,38.09858988428642],[-119.38880210134883,38.09858133300928],[-119.38879066320995,38.09857309243704],[-119.38877886779328,38.0985651726276],[-119.38876672949567,38.09855758324735],[-119.38875426313241,38.098550333559366],[-119.38874148391925,38.09854343241217],[-119.3887284074537,38.09853688822886],[-119.38871504969613,38.09853070899681],[-119.38870142695013,38.098524902258],[-119.38868755584282,38.0985194750997],[-119.38867345330435,38.098514434145976],[-119.38865913654742,38.09850978554944],[-119.38864462304606,38.09850553498389],[-119.38862993051453,38.098501687637246],[-119.38861507688553,38.098498248205345],[-119.38860008028844,38.09849522088609],[-119.38858495902703,38.09849260937445],[-119.38856973155731,38.09849041685785],[-119.3885544164649,38.09848864601229],[-119.38853362108799,38.09848624386452],[-119.388512943523,38.098483273768366],[-119.38849240860154,38.09847973929057],[-119.38847204098404,38.09847564467572],[-119.3884518651299,38.09847099484102],[-119.38843190526823,38.09846579537048],[-119.38841218536886,38.098460052508116],[-119.38839272911329,38.09845377315052],[-119.38837355986645,38.098446964838594],[-119.38835470064859,38.09843963574841],[-119.38833617410762,38.098431794681446],[-119.3883180024919,38.098423451054025],[-119.38830020762356,38.09841461488599],[-119.38828281087227,38.098405296788684],[-119.38826583312957,38.09839550795214],[-119.3882492947838,38.09838526013174],[-119.38823321569564,38.09837456563409],[-119.38821761517414,38.09836343730208],[-119.38820251195365,38.09835188849973],[-119.38818792417136,38.098339933095886],[-119.38817386934534,38.09832758544771],[-119.38809863021316,38.09826113232023],[-119.38802095483021,38.09819645333972],[-119.3879409101609,38.09813360426115],[-119.38785856521157,38.098072639261986],[-119.38784416143373,38.09806264372889],[-119.38782932318611,38.09805305327692],[-119.38781406870184,38.09804387969072],[-119.38779841672553,38.09803513424263],[-119.3877823864902,38.098026827678865],[-119.38776599769362,38.09801897020643],[-119.38774927047415,38.098011571480406],[-119.38773222538597,38.098004640592244],[-119.38771488337389,38.09799818605848],[-119.38769726574746,38.0979922158103],[-119.38767939415493,38.09798673718384],[-119.38766129055664,38.097981756911146],[-119.38764297719794,38.09797728111186],[-119.38762447658198,38.09797331528574],[-119.38760581144189,38.097969864305945],[-119.38758700471308,38.09796693241292],[-119.38756807950485,38.09796452320938],[-119.38754905907209,38.09796263965566],[-119.38753040083783,38.09796131469096],[-119.38751169532934,38.097960506930214],[-119.3874929654974,38.09796021736455],[-119.38747423432265,38.09796044634923],[-119.38745552478727,38.09796119360327],[-119.387436859847,38.09796245820985],[-119.38741826240283,38.09796423861739],[-119.38739975527291,38.09796653264136],[-119.38738136116463,38.097969337467134],[-119.38736310264669,38.09797264965331],[-119.38734500212142,38.097976465136014],[-119.38732708179737,38.097980779233794],[-119.38730936366196,38.09798558665348],[-119.38722594951332,38.098010771765864],[-119.3871436464394,38.09803814465337],[-119.38706254629469,38.098067674766774],[-119.38698273959159,38.09809932914927],[-119.38690431539919,38.098133072473324],[-119.38682736124414,38.09816886707989],[-119.38675196301268,38.098206673020606],[-119.38667820485504,38.09824644810232],[-119.38660616909146,38.098288147934184],[-119.38653593612024,38.09833172597707],[-119.38646758432813,38.098377133595655],[-119.38640119000283,38.09842432011263],[-119.3863915481668,38.0984311633188],[-119.38638161126164,38.09843773765111],[-119.3863713912876,38.09844403517004],[-119.38636090058682,38.09845004827034],[-119.38635015182845,38.09845576969025],[-119.38633915799325,38.09846119252022],[-119.38632793235796,38.09846631021135],[-119.38631648847927,38.09847111658323],[-119.38630484017746,38.09847560583138],[-119.38629300151962,38.09847977253433],[-119.38628098680284,38.09848361166013],[-119.38626881053673,38.09848711857242],[-119.3862564874261,38.09849028903603],[-119.38624403235305,38.09849311922213],[-119.38623146035901,38.098495605712834],[-119.38621878662673,38.09849774550528],[-119.38620602646175,38.09849953601533],[-119.38619319527396,38.098500975080704],[-119.38618030855913,38.098502060963426],[-119.38616738188003,38.09850279235216],[-119.38615443084764,38.098503168363635],[-119.3861414711025,38.09850318854374],[-119.38612851829552,38.098502852868116],[-119.3861155880693,38.098502161742175],[-119.38610269603919,38.09850111600051],[-119.38608985777438,38.09849971690605],[-119.38607708877909,38.09849796614843],[-119.38606440447397,38.09849586584194],[-119.38605182017733,38.09849341852307],[-119.3860393510867,38.09849062714733],[-119.3860270122605,38.09848749508575],[-119.3860148185998,38.098484026120815],[-119.38600278483041,38.098480224441836],[-119.38599092548498,38.098476094639956],[-119.38597925488551,38.09847164170255],[-119.3859677871261,38.09846687100727],[-119.38595653605582,38.09846178831548],[-119.3859455152621,38.09845639976531],[-119.38593473805426,38.098450711864324],[-119.38570463675828,38.098329023932365],[-119.38546959858144,38.09821337861819],[-119.38522987753602,38.09810390089249],[-119.3851964907807,38.09808980384927],[-119.3851625215105,38.098076604441644],[-119.38512800835774,38.09806431768083],[-119.38509299057318,38.09805295754011],[-119.38505750798146,38.098042536938955],[-119.38502160093569,38.0980330677283],[-119.38498531027173,38.09802456067712],[-119.38494867726162,38.09801702546015],[-119.38491174356675,38.09801047064691],[-119.38487455119035,38.09800490369192],[-119.38483714242986,38.09800033092627],[-119.38479955982882,38.09799675755036],[-119.38476184612833,38.09799418762807],[-119.38472404421867,38.097992624082046],[-119.3846861970904,38.09799206869046],[-119.3846483477855,38.09799252208492],[-119.3846105393484,38.09799398374983],[-119.38457281477709,38.09799645202287],[-119.38453521697416,38.09799992409698],[-119.3845264870527,38.098000727789],[-119.38451772728928,38.0980012934641],[-119.38450894807245,38.09800162045136],[-119.38450015981392,38.09800170836303],[-119.3844913729361,38.09800155709486],[-119.38448259785974,38.09800116682618],[-119.3844738449916,38.09800053801992],[-119.38446512471215,38.09799967142174],[-119.38445644736309,38.0979985680594],[-119.38444782323536,38.097997229241436],[-119.3844392625567,38.09799565655561],[-119.38443077547954,38.09799385186704],[-119.38442237206918,38.09799181731599],[-119.38441406229153,38.09798955531534],[-119.38440585600155,38.09798706854765],[-119.38439776293144,38.09798435996215],[-119.38438979267914,38.09798143277102],[-119.38438195469689,38.097978290445795],[-119.38437425828009,38.09797493671308],[-119.38436671255627,38.09797137555025],[-119.38435932647423,38.09796761118058],[-119.38435210879338,38.09796364806843],[-119.3843450680735,38.097959490913844],[-119.38433821266443,38.09795514464695],[-119.3843315506963,38.09795061442223],[-119.38432509006978,38.09794590561221],[-119.38431883844676,38.09794102380132],[-119.38431280324126,38.09793597477908],[-119.38430699161067,38.09793076453335],[-119.38430141044721,38.09792539924319],[-119.38429606636974,38.09791988527152],[-119.38429096571599,38.0979142291576],[-119.38428611453496,38.09790843760924],[-119.38428151857984,38.097902517494894],[-119.38427718330108,38.09789647583544],[-119.38427311384005,38.097890319795965],[-119.38426931502273,38.097884056677145],[-119.38426579135432,38.097877693906675],[-119.38423285873974,38.0978121468187],[-119.38420282366494,38.09774573629378],[-119.38417572228504,38.097678542291895],[-119.38415158722272,38.097610645716124],[-119.38413044752882,38.09754212831518],[-119.38411232864753,38.097473072585146],[-119.38410325748531,38.097438404117625],[-119.38409271765673,38.09740399603685],[-119.384080721062,38.09736988718559],[-119.38406728124598,38.097336116068746],[-119.38405241338253,38.09730272080992],[-119.38403613425761,38.09726973910831],[-119.38401846225028,38.09723720819633],[-119.38399941731184,38.09720516479733],[-119.38397902094346,38.097173645084354],[-119.38395729617176,38.09714268463918],[-119.38393426752287,38.097112318412236],[-119.38361910301128,38.09662111077869],[-119.38332442001834,38.096122026948],[-119.38305053289065,38.09561560001119],[-119.38279773374344,38.095102370891915],[-119.38256629215026,38.09458288776828],[-119.38235645485652,38.09405770548687],[-119.3822997537302,38.09391581309545],[-119.38223720167616,38.09377546471392],[-119.38216886586584,38.0936368109811],[-119.38209481967725,38.09350000071601],[-119.38201514261613,38.09336518075828],[-119.38192992023049,38.09323249581053],[-119.38183924401875,38.09310208828312],[-119.38182304998217,38.09308055775351],[-119.38180591517957,38.09305948690697],[-119.38178786048083,38.0930389014064],[-119.38176890787608,38.09301882632362],[-119.38174908044905,38.09299928610873],[-119.38172840234891,38.09298030456036],[-119.3817068987608,38.09296190479674],[-119.38168459587511,38.0929441092275],[-119.38166152085581,38.09292693952639],[-119.38163770180714,38.092910416604866],[-119.3816131677394,38.092894560586664],[-119.38158794853379,38.09287939078329],[-119.38156207490577,38.092864925670376],[-119.38153557836793,38.092851182865395],[-119.38150849119131,38.09283817910603],[-119.38148084636637,38.09282593022989],[-119.38145267756265,38.092814451155164],[-119.38144065603667,38.09280996259072],[-119.38142844559907,38.0928058046942],[-119.38141606080727,38.09280198242272],[-119.38140351642669,38.09279850033324],[-119.38139082741286,38.09279536257714],[-119.38137800889388,38.09279257289533],[-119.38136507615214,38.092790134613686],[-119.38135204460625,38.09278805063914],[-119.38133892979259,38.0927863234563],[-119.38132574734685,38.092784955124266],[-119.38131251298528,38.092783947274434],[-119.3812992424861,38.09278330110833],[-119.38128595167055,38.09278301739638],[-119.38127265638414,38.09278309647676],[-119.38125937247766,38.092783538255254],[-119.38124611578837,38.0927843422051],[-119.38123290212107,38.09278550736788],[-119.38121974722928,38.09278703235447],[-119.38120666679643,38.09278891534671],[-119.38119367641718,38.092791154099714],[-119.38118079157886,38.09279374594439],[-119.38116802764299,38.09279668779072],[-119.38115539982685,38.09279997613135],[-119.38114292318558,38.09280360704592],[-119.38113061259403,38.09280757620561],[-119.38111848272906,38.092811878878315],[-119.38110654805212,38.092816509934295],[-119.38109482279192,38.09282146385237],[-119.38108332092757,38.0928267347264],[-119.38107205617179,38.09283231627235],[-119.38106104195467,38.09283820183583],[-119.38105029140756,38.09284438439997],[-119.38103981734756,38.09285085659383],[-119.38102963226203,38.09285761070114],[-119.38101974829392,38.09286463866953],[-119.38101017722713,38.09287193212016],[-119.38100093047254,38.09287948235767],[-119.38099201905437,38.09288728038045],[-119.38098345359717,38.092895316891635],[-119.38097524431288,38.09290358230993],[-119.38096740098888,38.092912066781125],[-119.38095993297628,38.09292076018988],[-119.38095284917871,38.09292965217174],[-119.3809461580418,38.0929387321255],[-119.38093986754296,38.092947989225884],[-119.38093398518201,38.092957412436334],[-119.3809285179722,38.09296699052233],[-119.3809234724318,38.09297671206466],[-119.38091809551658,38.0929870746851],[-119.38091227139917,38.09299728523695],[-119.38090600695232,38.09300733167088],[-119.38089930956848,38.09301720213112],[-119.38089218715106,38.09302688496966],[-119.38088464810498,38.093036368759805],[-119.38087670132687,38.09304564230978],[-119.38086835619451,38.09305469467596],[-119.38085962255586,38.093063515175686],[-119.38085051071727,38.09307209339992],[-119.38084103143143,38.093080419225515],[-119.38083119588475,38.09308848282725],[-119.38082101568395,38.093096274689245],[-119.38081050284256,38.0931037856164],[-119.38079966976669,38.09311100674505],[-119.38078852924029,38.09311792955358],[-119.3807770944102,38.09312454587238],[-119.3807653787706,38.09313084789359],[-119.38075339614701,38.09313682818017],[-119.38074116068006,38.09314247967478],[-119.38072868680871,38.09314779570813],[-119.38071598925335,38.09315277000675],[-119.38070308299834,38.09315739670049],[-119.38068998327428,38.093161670329366],[-119.38067670554015,38.09316558585011],[-119.38066326546497,38.09316913864197],[-119.38064967890936,38.09317232451231],[-119.3806359619068,38.0931751397015],[-119.38062213064471,38.093177580887314],[-119.3805528693015,38.093189799991066],[-119.38048417654934,38.09320388182388],[-119.38041613257272,38.09321980994828],[-119.38034881679891,38.09323756577148],[-119.38028230780533,38.09325712856733],[-119.38027500711375,38.09325927414173],[-119.38026761656484,38.09326121810581],[-119.38026014506984,38.093262958115645],[-119.38025260163768,38.09326449207316],[-119.3802449953639,38.09326581812878],[-119.38023733541988,38.093266934683584],[-119.38022963104171,38.0932678403913],[-119.38022189151908,38.093268534159826],[-119.38021412618401,38.09326901515264],[-119.38020634439968,38.09326928278981],[-119.38019855554909,38.093269336748584],[-119.38019076902374,38.09326917696394],[-119.38018299421238,38.09326880362852],[-119.38017524048959,38.093268217192474],[-119.38016751720453,38.09326741836293],[-119.38015983366967,38.09326640810305],[-119.38015219914953,38.093265187631005],[-119.38014462284958,38.093263758418374],[-119.38013711390501,38.09326212218849],[-119.38012994824442,38.09326056046753],[-119.38012271846168,38.09325919574854],[-119.38011543322577,38.0932580296679],[-119.38010810127221,38.09325706362384],[-119.38010073139253,38.09325629877467],[-119.38009333242368,38.09325573603755],[-119.38008591323754,38.09325537608719],[-119.3800784827302,38.09325521935523],[-119.38007104981133,38.093255266029594],[-119.38006362339358,38.09325551605431],[-119.38005621238163,38.09325596912957],[-119.38004882566186,38.09325662471213],[-119.38004147209139,38.09325748201589],[-119.3800341604877,38.09325854001291],[-119.38002689961786,38.09325979743451],[-119.38001969818816,38.09326125277303],[-119.3800125648336,38.09326290428341],[-119.38000550810763,38.09326474998534],[-119.37999853647166,38.093266787665705],[-119.37999165828519,38.09326901488121],[-119.37998488179568,38.09327142896126],[-119.37997821512856,38.093274027011184],[-119.37997166627767,38.093276805915785],[-119.37996524309554,38.09327976234296],[-119.379958953284,38.09328289274771],[-119.37995280438504,38.09328619337651],[-119.37994680377157,38.09328966027162],[-119.3799409586388,38.093293289276055],[-119.37993527599546,38.09329707603835],[-119.37992976265546,38.093301016017925],[-119.37992442522972,38.093305104490476],[-119.3799192701182,38.09330933655362],[-119.37991430350226,38.09331370713281],[-119.37990953133728,38.09331821098744],[-119.37990495934547,38.093322842717065],[-119.379900593009,38.093327596767885],[-119.37989643756343,38.09333246743949],[-119.37989249799152,38.09333744889157],[-119.3798887790171,38.09334253515104],[-119.37988528509956,38.09334772011905],[-119.37988202042843,38.09335299757851],[-119.37987898891826,38.093358361201346],[-119.37987619420419,38.09336380455619],[-119.37987363963727,38.09336932111604],[-119.3798713282807,38.09337490426614],[-119.37986926290601,38.09338054731192],[-119.3798539791837,38.09342773895442],[-119.37984033495498,38.0934752434],[-119.37982834043859,38.09352302508183],[-119.37981800461812,38.0935710482254],[-119.37981677633165,38.09357663228505],[-119.37981530410012,38.093582179381364],[-119.37981358968939,38.09358768286051],[-119.3798116351559,38.093593136121015],[-119.37980944284406,38.093598532621584],[-119.37980701538353,38.09360386588905],[-119.37980435568608,38.09360912952607],[-119.37980146694194,38.09361431721883],[-119.37979835261623,38.09361942274461],[-119.37979501644455,38.09362443997922],[-119.37979146242864,38.09362936290445],[-119.37978769483159,38.09363418561515],[-119.37978371817262,38.09363890232639],[-119.3797795372218,38.09364350738039],[-119.37977515699414,38.09364799525331],[-119.37977058274389,38.09365236056189],[-119.3797658199578,38.093656598069835],[-119.37976087434893,38.09366070269419],[-119.37975575184961,38.09366466951137],[-119.37975045860433,38.093668493763126],[-119.37974500096243,38.093672170862206],[-119.37973938547042,38.093675696397824],[-119.37973361886415,38.09367906614103],[-119.37972770806076,38.093682276049805],[-119.37972166015038,38.093685322273735],[-119.37971548238755,38.09368820115886],[-119.37970918218262,38.09369090925191],[-119.37970276709281,38.09369344330443],[-119.37969624481312,38.09369580027682],[-119.37968962316717,38.09369797734181],[-119.3796829100977,38.09369997188796],[-119.37967611365721,38.09370178152281],[-119.37966924199814,38.09370340407563],[-119.37966230336323,38.09370483760018],[-119.37965530607542,38.09370608037686],[-119.37964825852819,38.093707130914964],[-119.37964116917519,38.09370798795437],[-119.37963404652022,38.093708650467],[-119.37962689910707,38.093709117658186],[-119.3796197355092,38.09370938896751],[-119.3796125643195,38.09370946406953],[-119.37960539413999,38.09370934287418],[-119.3795982335714,38.09370902552679],[-119.37957109000124,38.093707821126856],[-119.37954391001433,38.0937073574242],[-119.37951672596341,38.09370763497079],[-119.37948957020605,38.093708653436266],[-119.37946247506608,38.09371041160835],[-119.37943547279527,38.093712907394185],[-119.3794085955348,38.09371613782308],[-119.37938187527705,38.09372009904978],[-119.37935534382758,38.09372478635917],[-119.37932903276719,38.0937301941719],[-119.37930297341437,38.093736316050936],[-119.37927719678807,38.09374314470933],[-119.37925173357063,38.09375067201883],[-119.37922661407144,38.09375888901951],[-119.37920186819079,38.09376778593058],[-119.37917752538421,38.09377735216191],[-119.37915361462755,38.09378757632659],[-119.37914459089768,38.093791433289915],[-119.37913540264181,38.093795039505814],[-119.37912606101187,38.09379839059738],[-119.37911657734595,38.09380148249728],[-119.37910696315456,38.093804311452864],[-119.3790972301066,38.093806874030534],[-119.37908739001521,38.09380916712008],[-119.37907745482356,38.09381118793831],[-119.37906743659013,38.09381293403252],[-119.37905734747427,38.093814403283446],[-119.37904719972133,38.09381559390783],[-119.37903700564785,38.09381650446059],[-119.3790267776265,38.093817133836545],[-119.37901652807135,38.09381748127185],[-119.37900626942242,38.0938175463448],[-119.37899601413085,38.09381732897641],[-119.3789857746437,38.093816829430494],[-119.37897556338879,38.093816048313386],[-119.37896539275981,38.09381498657309],[-119.378955275101,38.09381364549835],[-119.37894522269237,38.09381202671679],[-119.37893524773472,38.09381013219316],[-119.37892536233485,38.09380796422691],[-119.37891557849085,38.09380552544932],[-119.37890590807754,38.093802818820386],[-119.37889636283212,38.09379984762518],[-119.37888695433976,38.093796615469934],[-119.37887769401975,38.09379312627754],[-119.37886859311148,38.09378938428291],[-119.37885966266086,38.09378539402777],[-119.37885091350692,38.093781160355185],[-119.37884235626865,38.093776688403615],[-119.37883400133207,38.09377198360075],[-119.37882585883769,38.09376705165692],[-119.37881793866815,38.093761898558064],[-119.37881025043625,38.093756530558636],[-119.37880280347328,38.09375095417383],[-119.37879560681768,38.09374517617182],[-119.3787886692041,38.093739203565455],[-119.37878199905278,38.09373304360377],[-119.37877560445929,38.09372670376323],[-119.37877186692903,38.093722997500834],[-119.37876796918803,38.09371939578013],[-119.37876391591476,38.093715902924295],[-119.37875971197435,38.09371252312576],[-119.37875536241285,38.0937092604413],[-119.37875087245098,38.093706118787125],[-119.37874624747808,38.09370310193409],[-119.37874149304551,38.0937002135034],[-119.37873661486002,38.09369745696197],[-119.37873161877684,38.09369483561849],[-119.37872651079282,38.09369235261933],[-119.37872129703904,38.09369001094484],[-119.37871598377353,38.093687813405715],[-119.37871057737387,38.093685762639666],[-119.37870508432927,38.09368386110821],[-119.37869951123305,38.09368211109374],[-119.37869386477455,38.09368051469681],[-119.37868815173121,38.09367907383354],[-119.37868237896038,38.09367779023341],[-119.37867655339107,38.09367666543713],[-119.37867068201574,38.093675700794755],[-119.37866477188173,38.09367489746417],[-119.37865883008293,38.09367425640961],[-119.3786528637513,38.093673778400515],[-119.37864688004818,38.093673464010635],[-119.37864088615576,38.09367331361734],[-119.37863488926848,38.09367332740114],[-119.37862889658442,38.093673505345514],[-119.37862291529655,38.09367384723683],[-119.37861695258414,38.09367435266475],[-119.37861101560424,38.093675021022605],[-119.37836175938163,38.093703000780295],[-119.37811140494071,38.093723981980006],[-119.3778602668343,38.093737938260375],[-119.37782799920424,38.093739726523424],[-119.37779583073034,38.09374240763351],[-119.3777638009564,38.09374597829481],[-119.37773194925572,38.09375043411802],[-119.37770031478267,38.09375576962574],[-119.37766893642471,38.093761978259124],[-119.37763785275439,38.09376905238609],[-119.37760710198208,38.09377698331065],[-119.37757672190895,38.09378576128349],[-119.3775467498806,38.093795375514105],[-119.37751722274095,38.09380581418397],[-119.37748817678711,38.093817064461085],[-119.3774596477248,38.09382911251576],[-119.3774316706243,38.09384194353767],[-119.37740427987748,38.09385554175387],[-119.37737750915547,38.09386989044843],[-119.37735139136727,38.093884971982824],[-119.37732595861924,38.0939007678177],[-119.37730124217585,38.09391725853548],[-119.37727361251828,38.09393569198413],[-119.3772451810221,38.09395334750582],[-119.37721598273902,38.09397020333372],[-119.37718605366598,38.09398623868684],[-119.37715543070112,38.09400143379573],[-119.37712415159811,38.09401576992688],[-119.37709225491953,38.094029229405734],[-119.3770597799895,38.09404179563852],[-119.37702676684506,38.09405345313273],[-119.3769932561869,38.094064187516196],[-119.37695928932915,38.09407398555481],[-119.37692490814831,38.0940828351689],[-119.37689015503189,38.09409072544798],[-119.37685507282589,38.094097646664395],[-119.37654854706292,38.09415117606272],[-119.37624077689628,38.094200043780965],[-119.37611907068263,38.09421676125505],[-119.37599672994332,38.09423028028667],[-119.37587388923141,38.09424058600739],[-119.37575068364994,38.09424766708265],[-119.37562724870354,38.094251515724565],[-119.37560989813,38.09425159497658],[-119.37559255424506,38.094251206117804],[-119.37557523726478,38.09425034960149],[-119.37555796737374,38.094249026426],[-119.37554076470168,38.09424723813361],[-119.37552364929999,38.094244986808775],[-119.37550664111835,38.09424227507559],[-119.3754897599814,38.09423910609486],[-119.37547302556577,38.09423548356035],[-119.375456457377,38.09423141169447],[-119.37544007472687,38.09422689524337],[-119.37542389671093,38.094221939471396],[-119.37540794218616,38.09421655015501],[-119.37539222974907,38.09421073357595],[-119.3753767777139,38.09420449651398],[-119.37536160409147,38.09419784623902],[-119.37534672656794,38.09419079050259],[-119.37533216248443,38.0941833375288],[-119.37531792881666,38.09417549600483],[-119.37530404215518,38.09416727507067],[-119.37529051868611,38.0941586843086],[-119.37527737417214,38.09414973373199],[-119.37526462393433,38.09414043377351],[-119.3752522828341,38.09413079527316],[-119.37524036525598,38.09412082946548],[-119.3752288850908,38.09411054796655],[-119.37521785571955,38.09409996276039],[-119.37520728999782,38.09408908618496],[-119.37519720024066,38.09407793091796],[-119.3751875982084,38.094066509961834],[-119.37517849509283,38.094054836628686],[-119.37516990150417,38.09404292452486],[-119.37516182745875,38.09403078753494],[-119.37515428236738,38.094018439805645],[-119.37514727502419,38.09400589572933],[-119.37514081359663,38.0939931699272],[-119.3751349056157,38.09398027723227],[-119.37512955796738,38.09396723267206],[-119.37512477688453,38.09395405145113],[-119.37512056793959,38.09394074893325],[-119.37511059192833,38.09390915369301],[-119.37509929579079,38.0938778372348],[-119.37508669195105,38.093846833997695],[-119.37507279427136,38.0938161780762],[-119.37505761803664,38.09378590318286],[-119.37504117993791,38.09375604261122],[-119.3750234980537,38.09372662919904],[-119.3750045918303,38.09369769529239],[-119.37498448206041,38.09366927270997],[-119.37496319086006,38.09364139270811],[-119.37494074164454,38.09361408594645],[-119.37491715910247,38.093587382454196],[-119.37489246916871,38.09356131159714],[-119.37486669899586,38.09353590204529],[-119.37482393385334,38.09349371077412],[-119.37478299354122,38.093450403703145],[-119.37474392463463,38.093406030103374],[-119.37470677157933,38.09336064045918],[-119.37467157664115,38.0933142864108],[-119.37463837985797,38.09326702069556],[-119.37460721899409,38.09321889708791],[-119.37457812949732,38.0931699703382],[-119.37455114445869,38.093120296110484],[-119.37452629457479,38.093069930919015],[-119.37450360811287,38.093018932064105],[-119.37448311087866,38.09296735756688],[-119.37446482618714,38.09291526610315],[-119.37444877483593,38.09286271693688],[-119.37443497508164,38.092809769852536],[-119.37442344261919,38.09275648508724],[-119.37441419056398,38.0927029232621],[-119.3744072294369,38.09264914531334],[-119.37440256715244,38.09259521242288],[-119.37439942542096,38.092558908943545],[-119.37439472946319,38.092522710402925],[-119.37438848467121,38.092486658348],[-119.37438069821475,38.09245079415755],[-119.37437137903295,38.09241515899466],[-119.37436053782406,38.09237979375957],[-119.37434818703325,38.09234473904255],[-119.37433434083816,38.092310035077496],[-119.37431901513278,38.09227572169561],[-119.37430222750912,38.09224183827981],[-119.37428399723696,38.09220842371946],[-119.37426434524183,38.092175516365714],[-119.37424329408091,38.09214315398756],[-119.37422086791722,38.09211137372844],[-119.37419709249171,38.09208021206366],[-119.37417199509395,38.09204970475845],[-119.37414560453055,38.09201988682701],[-119.3741179510923,38.09199079249226],[-119.3740890665193,38.0919624551466],[-119.37405898396453,38.091934907313565],[-119.37389798228851,38.09178774100693],[-119.37374303421177,38.09163657067677],[-119.37359429903432,38.091481551775395],[-119.37345192966431,38.09132284371177],[-119.37331607246101,38.09116060968745],[-119.37318686708437,38.09099501652873],[-119.37302650994448,38.090788591769055],[-119.37285886757238,38.090585814635595],[-119.37268407276694,38.090386845688286],[-119.37250226398709,38.09019184247043],[-119.37244935299724,38.09013473878287],[-119.37239893264496,38.09007624450507],[-119.37235106138533,38.09001642745951],[-119.37230579471739,38.08995535700222],[-119.3722631851199,38.08989310394234],[-119.37222328199039,38.08982974046009],[-119.37218613158802,38.089765340022915],[-119.37215177697988,38.08969997730043],[-119.3721202579912,38.089633728077764],[-119.37209161115904,38.0895666691677],[-119.37206586969013,38.089498878321606],[-119.37204306342228,38.089430434139345],[-119.3720232187899,38.08936141597796],[-119.37200635879333,38.089291903859866],[-119.3719994411156,38.08926338330362],[-119.37199129869272,38.089235065448484],[-119.37198194096936,38.089206983136265],[-119.37197137879951,38.08917916893555],[-119.37195962443407,38.08915165510394],[-119.37194669150644,38.08912447355064],[-119.37193259501692,38.08909765579948],[-119.37191735131515,38.089071232952314],[-119.37190097808119,38.08904523565296],[-119.37188349430498,38.089019694051736],[-119.37186492026446,38.088994637770384],[-119.37184527750182,38.08897009586778],[-119.37182458879862,38.088946096806254],[-119.3718028781495,38.08892266841849],[-119.37178017073408,38.088899837875374],[-119.37175649288797,38.088877631654384],[-119.37173187207212,38.08885607550895],[-119.37170633684107,38.08883519443853],[-119.37167991680967,38.0888150126597],[-119.37165264261888,38.08879555357799],[-119.37162454590022,38.08877683976075],[-119.37159565923896,38.08875889291105],[-119.3715660161365,38.08874173384247],[-119.37153565097137,38.08872538245491],[-119.3715045989595,38.088709857711606],[-119.37147289611326,38.08869517761708],[-119.37144057919974,38.088681359196315],[-119.37140768569814,38.088668418474874],[-119.3713742537563,38.088656370460534],[-119.37134032214638,38.08864522912573],[-119.37130593022003,38.088635007391346],[-119.37125580598243,38.08862163992149],[-119.37120512868549,38.08860964553279],[-119.37115395852497,38.0885990384725],[-119.37110235628195,38.08858983133987],[-119.37105038325076,38.08858203507132],[-119.37099810116602,38.0885756589274],[-119.37094557212943,38.088570710481825],[-119.37089285853592,38.08856719561246],[-119.3708400229997,38.08856511849434],[-119.37078712827977,38.088564481594695],[-119.37073423720537,38.08856528567004],[-119.37068141260146,38.08856752976529],[-119.37062871721406,38.08857121121486],[-119.37057621363572,38.088576325645874],[-119.37052396423114,38.0885828669833],[-119.37047203106327,38.08859082745718],[-119.37042047581932,38.08860019761193],[-119.3703693597378,38.088610966317525],[-119.37031874353559,38.088623120782614],[-119.37026868733588,38.0886366465699],[-119.3702192505968,38.08865152761315],[-119.37017049204076,38.088667746236354],[-119.37012246958469,38.088685283174584],[-119.37007524027133,38.08870411759709],[-119.3700288602014,38.0887242271319],[-119.36998338446706,38.088745587892326],[-119.36992282986132,38.088776322508686],[-119.36986366491362,38.08880870366705],[-119.3698059612684,38.088842692157165],[-119.36974978880085,38.088878246822446],[-119.36969521553242,38.088915324609744],[-119.36964230754836,38.0889538806215],[-119.36959112891772,38.08899386817013],[-119.36954174161576,38.08903523883447],[-119.36949420544896,38.08907794251847],[-119.36944857798247,38.08912192751189],[-119.36940491447055,38.089167140552725],[-119.36930603622645,38.08927693231526],[-119.36921163677476,38.08938915958674],[-119.36912181209817,38.089503708282],[-119.36903665353003,38.089620461955505],[-119.36895624766163,38.08973930191969],[-119.36888067625402,38.08986010736557],[-119.36881001615484,38.08998275548552],[-119.3687833818591,38.09002889386082],[-119.36875481354735,38.09007430381836],[-119.36872434306203,38.0901189347384],[-119.36869200436608,38.09016273686943],[-119.36865783350534,38.09020566138378],[-119.36862186856803,38.090247660432006],[-119.36858414964266,38.09028868719622],[-119.3685447187731,38.09032869594229],[-119.36850361991182,38.09036764207088],[-119.36846089887091,38.090405482167085],[-119.36841660327097,38.09044217404888],[-119.36837078248803,38.09047767681415],[-119.36832348759859,38.09051195088631],[-119.3683068201676,38.09052322658716],[-119.3682896652018,38.09053403593117],[-119.3682720435814,38.09054436576155],[-119.36825397675462,38.090554203505235],[-119.3682354867116,38.09056353718807],[-119.36821659595763,38.09057235544939],[-119.36819732748579,38.09058064755592],[-119.36817770474886,38.0905884034148],[-119.36815775163089,38.090595613585855],[-119.36813749241807,38.09060226929311],[-119.36811695176922,38.09060836243542],[-119.36809615468565,38.090613885596426],[-119.36807512648089,38.09061883205353],[-119.36805389274976,38.09062319578606],[-119.36803247933723,38.09062697148261],[-119.36801091230707,38.090630154547526],[-119.36798921790995,38.09063274110646],[-119.36796742255163,38.090634728011125],[-119.36794555276073,38.0906361128432],[-119.36792363515656,38.09063689391704],[-119.36790169641644,38.09063707028195],[-119.36787976324365,38.09063664172328],[-119.36785786233453,38.09063560876267],[-119.3678360203462,38.09063397265736],[-119.36781426386409,38.090631735398816],[-119.3677926193695,38.09062889971014],[-119.36777111320741,38.090625469042855],[-119.36774977155446,38.090621447572666],[-119.36773119583091,38.09061794218056],[-119.36771247919388,38.09061494127398],[-119.36769364357183,38.09061244836886],[-119.3676747110326,38.09061046638587],[-119.36765570375763,38.09060899764709],[-119.36763664401586,38.09060804387332],[-119.36761755413774,38.090607606182],[-119.36759845648898,38.09060768508591],[-119.36757937344447,38.09060828049261],[-119.3675603273619,38.09060939170456],[-119.3675413405557,38.0906110174198],[-119.3675224352709,38.09061315573369],[-119.36750363365692,38.09061580414095],[-119.36748495774184,38.09061895953871],[-119.36746642940639,38.09062261823009],[-119.36744807035844,38.09062677592856],[-119.3674344484272,38.090630259726105],[-119.36742098207206,38.09063410278944],[-119.36740768645815,38.09063830079066],[-119.36739457655847,38.09064284900223],[-119.3673816671367,38.090647742302146],[-119.36736897273093,38.090652975179786],[-119.367356507637,38.09065854174216],[-119.36734428589259,38.09066443572045],[-119.36733232126133,38.090670650477136],[-119.36732062721725,38.09067717901344],[-119.36730921692975,38.09068401397722],[-119.36729810324867,38.090691147671286],[-119.36728729868977,38.09069857206195],[-119.36727681542078,38.09070627878824],[-119.36726666524757,38.09071425917114],[-119.36725685960096,38.09072250422354],[-119.3672474095237,38.0907310046602],[-119.36723832565822,38.09073975090831],[-119.36723555720714,38.09074241427244],[-119.36723267459725,38.09074500088494],[-119.36722968123284,38.090747507690985],[-119.36722658064902,38.09074993173015],[-119.36722337650747,38.09075227013966],[-119.36722007259219,38.09075452015794],[-119.36721667280506,38.09075667912777],[-119.36721318116112,38.09075874449941],[-119.36720960178394,38.09076071383374],[-119.36720593890063,38.090762584805006],[-119.36720219683706,38.09076435520364],[-119.36719838001244,38.09076602293883],[-119.3671944929344,38.09076758604099],[-119.36719054019346,38.09076904266417],[-119.36718652645777,38.09077039108814],[-119.36718245646742,38.090771629720386],[-119.36717833502898,38.090772757098144],[-119.36717416700981,38.09077377189002],[-119.36716995733221,38.09077467289753],[-119.36716571096777,38.090775459056616],[-119.36716143293133,38.090776129438844],[-119.36715712827517,38.09077668325251],[-119.36715280208298,38.090777119843544],[-119.36714845946392,38.0907774386964],[-119.36714410554654,38.090777639434464],[-119.36713974547273,38.09077772182068],[-119.36713538439162,38.09077768575778],[-119.36713102745357,38.09077753128831],[-119.36712667980403,38.090777258594734],[-119.36712234657752,38.09077686799907],[-119.36711803289143,38.09077635996262],[-119.36711374384018,38.09077573508536],[-119.36710948448903,38.09077499410526],[-119.3671052598682,38.09077413789739],[-119.36710107496684,38.09077316747293],[-119.36709693472729,38.09077208397792],[-119.36709284403902,38.09077088869195],[-119.3670888077331,38.09076958302661],[-119.36708483057629,38.09076816852389],[-119.36708091726554,38.09076664685428],[-119.36707707242238,38.09076501981484],[-119.36707330058744,38.09076328932705],[-119.36706960621524,38.0907614574346],[-119.36706599366872,38.09075952630093],[-119.36706246721421,38.09075749820663],[-119.36705903101637,38.09075537554685],[-119.36705568913327,38.090753160828406],[-119.36705244551159,38.09075085666684],[-119.36704930398196,38.09074846578331],[-119.36704626825447,38.0907459910014],[-119.36704334191423,38.09074343524377],[-119.36704052841714,38.09074080152871],[-119.36703783108591,38.090738092966596],[-119.36703525310598,38.090735312756124],[-119.3670327975219,38.09073246418074],[-119.3670304672336,38.09072955060449],[-119.36702399847374,38.090721460401014],[-119.36701718433395,38.09071354927514],[-119.3670100327436,38.090705826432696],[-119.36700255202479,38.090698300860325],[-119.36699475088255,38.0906909813152],[-119.36698663839478,38.09068387631472],[-119.36697822400164,38.090676994126596],[-119.3669695174947,38.09067034275931],[-119.36696052900527,38.090663929952726],[-119.36695126899293,38.090657763169105],[-119.36694174823312,38.09065184958438],[-119.36693197780473,38.09064619607995],[-119.36692196907717,38.09064080923446],[-119.36691173369712,38.09063569531634],[-119.36690128357502,38.09063086027636],[-119.36689063087115,38.09062630974083],[-119.36687978798156,38.09062204900495],[-119.36686876752358,38.090618083026726],[-119.36685758232113,38.09061441642117],[-119.3668462453899,38.0906110534549],[-119.36683476992206,38.0906079980412],[-119.36682316927107,38.09060525373553],[-119.36681145693593,38.09060282373132],[-119.36679964654572,38.09060071085616],[-119.36678775184353,38.09059891756871],[-119.36677578667062,38.09059744595579],[-119.36676376495019,38.090596297729746],[-119.36675170067132,38.090595474226774],[-119.36674322983663,38.090595125967596],[-119.36673474888038,38.09059500716348],[-119.36672626775045,38.090595117953754],[-119.366717796395,38.09059545820847],[-119.36670934475065,38.09059602752854],[-119.36670092273096,38.090596825246124],[-119.36669254021473,38.09059785042556],[-119.36668420703438,38.09059910186434],[-119.36667593296455,38.090600578094524],[-119.36666772771046,38.090602277384576],[-119.36665960089667,38.09060419774126],[-119.36665156205571,38.090606336912046],[-119.36664362061688,38.09060869238775],[-119.36663578589535,38.09061126140549],[-119.36662806708098,38.09061404095182],[-119.36662047322778,38.090617027766456],[-119.36661301324314,38.09062021834594],[-119.36660569587741,38.09062360894778],[-119.36659852971371,38.09062719559494],[-119.36659152315777,38.09063097408033],[-119.36658468442812,38.09063493997192],[-119.36651680428737,38.09067679676076],[-119.36645025895683,38.0907199716239],[-119.36638508940342,38.09076443798336],[-119.36638035710718,38.09076763661706],[-119.36637548945383,38.09077070575913],[-119.36637049211352,38.09077364183442],[-119.36636537090742,38.0907764414228],[-119.36636013180103,38.09077910126314],[-119.36635478089718,38.090781618257125],[-119.36634932442888,38.09078398947281],[-119.36634376875217,38.09078621214803],[-119.36633812033863,38.09078828369368],[-119.36633238576788,38.090790201696706],[-119.36632657171988,38.0907919639229],[-119.36632068496719,38.090793568319526],[-119.36631473236704,38.09079501301765],[-119.36630872085341,38.09079629633443],[-119.36630265742889,38.090797416774976],[-119.36629654915647,38.09079837303412],[-119.36629040315151,38.09079916399795],[-119.36628422657319,38.09079978874512],[-119.36627802661643,38.09080024654785],[-119.36627181050329,38.09080053687291],[-119.36626558547466,38.09080065938208],[-119.3662593587819,38.090800613932686],[-119.3662531376782,38.09080040057762],[-119.36624692941031,38.09080001956544],[-119.36624074120999,38.09079947133998],[-119.36623458028566,38.09079875653982],[-119.3662284538139,38.09079787599765],[-119.36622236893125,38.09079683073911],[-119.36621633272571,38.09079562198184],[-119.36621035222868,38.09079425113387],[-119.36620443440655,38.09079271979203],[-119.3661985861528,38.090791029740124],[-119.36619281427981,38.09078918294682],[-119.36618712551102,38.0907871815634],[-119.36618239175344,38.09078551757905],[-119.36617758767964,38.09078398462679],[-119.36617271909442,38.09078258455886],[-119.36616779188056,38.09078131906694],[-119.36616281199163,38.090780189680224],[-119.3661577854449,38.09077919776328],[-119.36615271831398,38.09077834451471],[-119.36614761672155,38.09077763096546],[-119.36614248683192,38.09077705797774],[-119.36613733484356,38.09077662624389],[-119.36613216698167,38.090776336285586],[-119.36612698949061,38.090776188453155],[-119.36612180862645,38.09077618292528],[-119.36611663064923,38.090776319708596],[-119.36611146181555,38.09077659863783],[-119.36610630837093,38.090777019375984],[-119.3661011765424,38.09077758141463],[-119.36609607253074,38.090778284074695],[-119.36609100250317,38.0907791265071],[-119.3660859725859,38.09078010769396],[-119.36608098885658,38.09078122644972],[-119.36607605733714,38.09078248142251],[-119.36607118398635,38.090783871096],[-119.36606637469275,38.09078539379098],[-119.36606163526746,38.09078704766761],[-119.36605697143716,38.09078883072744],[-119.36605238883723,38.09079074081605],[-119.36604789300488,38.09079277562541],[-119.36604348937242,38.09079493269684],[-119.36603918326088,38.09079720942396],[-119.36603497987338,38.090799603055764],[-119.36603088428889,38.09080211069998],[-119.36596152860275,38.090844722325194],[-119.36589051303663,38.09088559066955],[-119.36581790771562,38.09092467537572],[-119.36574378433505,38.090961937847545],[-119.36566821608963,38.090997341288364],[-119.36559127760128,38.091030850737184],[-119.36551304484531,38.09106243310334],[-119.3654335950754,38.09109205719908],[-119.36542869197312,38.09109373091605],[-119.36542371818418,38.09109526885484],[-119.36541867972635,38.091096669154666],[-119.3654135826956,38.09109793012136],[-119.36540843325879,38.09109905022925],[-119.36540323764618,38.091100028123144],[-119.3653980021439,38.0911008626199],[-119.36539273308638,38.09110155270985],[-119.36538743684858,38.09110209755806],[-119.3653821198384,38.091102496505336],[-119.36537678848883,38.091102749069],[-119.36537144925025,38.09110285494348],[-119.36536610858256,38.09110281400063],[-119.36536077294741,38.09110262629003],[-119.36535544880032,38.0911022920388],[-119.36535014258295,38.091101811651285],[-119.36534486071528,38.09110118570878],[-119.36533960958778,38.09110041496857],[-119.36533439555376,38.09109950036317],[-119.36532922492161,38.091098442999154],[-119.36532410394729,38.09109724415583],[-119.36531903882658,38.09109590528367],[-119.36531403568776,38.091094428002556],[-119.36530910058406,38.0910928140998],[-119.36530423948643,38.091091065528126],[-119.36529945827633,38.09108918440309],[-119.3652947627384,38.091087173000616],[-119.36529015855379,38.09108503375435],[-119.36528565129304,38.09108276925248],[-119.36528124640945,38.09108038223484],[-119.36527694923245,38.09107787558946],[-119.36527276496112,38.091075252349135],[-119.36526869865799,38.091072515687664],[-119.36526475524282,38.091069668916134],[-119.36526093948669,38.09106671547881],[-119.36525725600626,38.09106365894904],[-119.36525370925811,38.091060503024885],[-119.36525030353339,38.09105725152468],[-119.36524704295265,38.09105390838239],[-119.36524393146082,38.09105047764283],[-119.36524097282243,38.091046963456826],[-119.36523817061709,38.09104337007618],[-119.36523552823516,38.09103970184846],[-119.36523304887356,38.09103596321182],[-119.36523073553207,38.09103215868962],[-119.36522859100951,38.091028292884886],[-119.36522661790053,38.09102437047484],[-119.36489983783994,38.090366974334515],[-119.36474322277296,38.090076090740936],[-119.36457588965766,38.089788959377096],[-119.36456970440328,38.08977917803205],[-119.36456309749599,38.089769570452646],[-119.36455607674061,38.08976014798812],[-119.36454865043076,38.08975092176902],[-119.36454082733913,38.0897419026941],[-119.36453261670712,38.089733101417444],[-119.36452402823392,38.08972452833574],[-119.364515072065,38.08971619357626],[-119.36450575878025,38.089708106984624],[-119.36449609938134,38.08970027811334],[-119.36448610527881,38.08969271621053],[-119.36447578827854,38.089685430208824],[-119.36446516056786,38.08967842871504],[-119.36445423470113,38.08967171999987],[-119.3644430235849,38.089665311988156],[-119.36443154046259,38.08965921224954],[-119.36441979889908,38.08965342798947],[-119.36440781276438,38.08964796604076],[-119.36439559621748,38.089642832855475],[-119.3643831636895,38.08963803449729],[-119.36437052986673,38.08963357663441],[-119.36435770967317,38.08962946453279],[-119.36434471825307,38.08962570304995],[-119.3643315709528,38.08962229662921],[-119.36431828330295,38.08961924929449],[-119.36430487099992,38.08961656464555],[-119.36429134988727,38.089614245853674],[-119.36427773593715,38.08961229565799],[-119.36426404523135,38.08961071636219],[-119.36425029394232,38.089609509831895],[-119.36423649831409,38.089608677492315],[-119.36422267464306,38.08960822032668],[-119.36420883925874,38.089608138875036],[-119.3641950085045,38.08960843323359],[-119.36418119871823,38.08960910305461],[-119.36416742621304,38.08961014754689],[-119.36415370725803,38.08961156547658],[-119.36414005805901,38.08961335516871],[-119.36412649473941,38.0896155145092],[-119.3641130333212,38.089618040947215],[-119.36409968970607,38.0896209314984],[-119.36408647965641,38.08962418274819],[-119.36407341877693,38.089627790856],[-119.36406052249616,38.089631751559644],[-119.3640478060481,38.08963606018046],[-119.36400691901022,38.08965000247538],[-119.36396552562252,38.08966297800709],[-119.363923662472,38.08967497530668],[-119.36388136656085,38.089685983769826],[-119.36383867527388,38.089695993666275],[-119.36379562634541,38.08970499614838],[-119.36378959861622,38.089706093384095],[-119.3637835261576,38.08970702389946],[-119.36377741634978,38.08970778656358],[-119.36377127661832,38.089708380449494],[-119.36376511442512,38.089708804835475],[-119.36375893725952,38.08970905920573],[-119.36375275262891,38.089709143251085],[-119.36374656804985,38.089709056869424],[-119.36374039103877,38.089708800165724],[-119.36373422910297,38.08970837345197],[-119.36372808973137,38.08970777724676],[-119.36372198038548,38.08970701227471],[-119.36371590849032,38.08970607946552],[-119.36370988142541,38.08970497995289],[-119.36370390651578,38.089703715073114],[-119.36369799102305,38.089702286363476],[-119.36369214213664,38.089700695560374],[-119.36368636696504,38.08969894459718],[-119.3636806725271,38.08969703560194],[-119.36367506574358,38.08969497089477],[-119.3636695534287,38.089692752985016],[-119.3636641422819,38.089690384568215],[-119.36365883887959,38.089687868522844],[-119.3636536496673,38.089685207906776],[-119.36364858095172,38.089682405953624],[-119.36364363889314,38.08967946606874],[-119.36363882949792,38.0896763918251],[-119.36356598805524,38.089626496387716],[-119.36349528262339,38.08957471732346],[-119.36342679114217,38.08952111171256],[-119.36336058911036,38.089465738648656],[-119.36329674950235,38.089408659173735],[-119.36323534268777,38.08934993621069],[-119.3631739079389,38.08929100205929],[-119.36311025501335,38.08923355716216],[-119.36304444167988,38.089177653649415],[-119.36297652766747,38.089123342252336],[-119.36294225061049,38.08909580547219],[-119.36290920222649,38.08906734595535],[-119.36287742225647,38.089037997926],[-119.36284694891603,38.089007796676576],[-119.3628178188493,38.08897677852567],[-119.36279006708489,38.088944980774095],[-119.36260520809479,38.088793802861204],[-119.36242619684225,38.08863829145646],[-119.36225319585236,38.08847858778128],[-119.36208636218919,38.08831483686329],[-119.36192584731322,38.088147187404346],[-119.36177179694378,38.08797579164567],[-119.36175162145429,38.087951719510954],[-119.36173252593203,38.08792710325651],[-119.36171453384337,38.08790197313443],[-119.36169766729849,38.08787636002834],[-119.36168194702427,38.08785029541531],[-119.36166739233883,38.087823811327326],[-119.36165402112785,38.087796940311826],[-119.36164184982243,38.08776971539175],[-119.3616308933791,38.087742170024875],[-119.36162116526124,38.08771433806283],[-119.36161267742277,38.08768625370933],[-119.36160544029326,38.08765795147829],[-119.36125340816287,38.086944732182474],[-119.3608759727296,38.086239675697854],[-119.36047343725333,38.08554334717606],[-119.360324625894,38.085305542643674],[-119.3601659216447,38.08507176831766],[-119.35999749908325,38.08484228121823],[-119.3598195434669,38.08461733364976],[-119.35963225052858,38.084397172923445],[-119.3595691440069,38.0843280713948],[-119.35950315587975,38.08426067241756],[-119.35943435962271,38.084195051030356],[-119.35936283183709,38.084131280292574],[-119.3592886521648,38.084069431202956],[-119.35921190319955,38.08400957262065],[-119.35913267039491,38.08395177118856],[-119.3590510419692,38.08389609125902],[-119.35896710880722,38.08384259482242],[-119.35888096435912,38.08379134143796],[-119.35879270453631,38.08374238816751],[-119.35870242760473,38.083695789512056],[-119.3586102340754,38.08365159735101],[-119.3582258716757,38.083480919452214],[-119.35783455294258,38.08332042165835],[-119.3575818024409,38.083216517756206],[-119.35733381987956,38.08310566901678],[-119.357090910584,38.082988011930425],[-119.35705710822504,38.082970352842175],[-119.35702407118305,38.08295181098167],[-119.35699183634476,38.082932407051686],[-119.3569604397011,38.08291216271756],[-119.3569299163071,38.08289110058296],[-119.35690030024261,38.08286924416458],[-119.3568716245744,38.08284661786602],[-119.35684392131908,38.08282324695044],[-119.35681722140751,38.08279915751234],[-119.35679155465013,38.08277437644848],[-119.35676694970377,38.08274893142783],[-119.35674343403964,38.08272285086062],[-119.35672103391256,38.0826961638667],[-119.35671602239154,38.082690197778206],[-119.35671075633773,38.08268437026676],[-119.35670524187918,38.08267868811373],[-119.35669948543296,38.082673157931275],[-119.35669349369776,38.08266778615471],[-119.35668727364607,38.08266257903505],[-119.35668083251605,38.08265754263167],[-119.35667417780309,38.082652682805325],[-119.35666731725118,38.082648005211254],[-119.35666025884375,38.08264351529264],[-119.35665301079457,38.08263921827429],[-119.35664558153799,38.082635119156514],[-119.35663797971925,38.08263122270937],[-119.35663021418445,38.082627533467004],[-119.35662229397013,38.08262405572253],[-119.35661422829281,38.082620793522864],[-119.35660602653836,38.082617750664184],[-119.35659769825092,38.082614930687335],[-119.35658925312188,38.08261233687386],[-119.35658070097863,38.08260997224211],[-119.35657205177306,38.082607839543726],[-119.35656331557001,38.082605941260475],[-119.3565373953961,38.082601057866604],[-119.35651127775009,38.08259688323151],[-119.35648499364301,38.082593422312],[-119.35645857428362,38.08259067921749],[-119.35643205104121,38.08258865720496],[-119.35640545540839,38.082587358675276],[-119.3563788189638,38.08258678517027],[-119.35635217333444,38.082586937370934],[-119.35632555015827,38.08258781509648],[-119.35629898104656,38.082589417304796],[-119.35627249754643,38.08259174209345],[-119.35624613110332,38.08259478670208],[-119.35621991302371,38.082598547515644],[-119.35619387443793,38.082603020068724],[-119.35616804626319,38.08260819905075],[-119.35614245916688,38.082614078312425],[-119.35611714353021,38.08262065087292],[-119.35609212941203,38.08262790892822],[-119.35606744651326,38.082635843860416],[-119.35604312414154,38.08264444624784],[-119.35601919117642,38.08265370587639],[-119.35599567603519,38.08266361175145],[-119.35597260663906,38.082674152111196],[-119.35594898582258,38.08268581682158],[-119.3559258829964,38.0826981125892],[-119.35590332513553,38.082711025057584],[-119.35588133857863,38.08272453915022],[-119.3558599489974,38.08273863908816],[-119.35583918136665,38.08275330840833],[-119.35581905993484,38.0827685299829],[-119.35579960819614,38.0827842860392],[-119.35578084886278,38.08280055818054],[-119.35576280383857,38.082817327407504],[-119.35574549419339,38.08283457414046],[-119.35572991810722,38.082850077597435],[-119.35571366180857,38.08286513846844],[-119.3556967454114,38.08287973811824],[-119.35567918984638,38.08289385848232],[-119.35566101683516,38.08290748208924],[-119.35564224886335,38.082920592082054],[-119.35562290915277,38.08293317223944],[-119.35560302163276,38.08294520699562],[-119.35558261091043,38.08295668145966],[-119.35556170224035,38.08296758143383],[-119.35554032149325,38.08297789343126],[-119.35551849512402,38.08298760469261],[-119.35537063322924,38.0830530381798],[-119.35522536954487,38.08312201185301],[-119.35508283970364,38.08319446131483],[-119.35494317678702,38.08327031892252],[-119.35493820148487,38.083273008886394],[-119.3549331106763,38.0832755602639],[-119.35492791053771,38.08327796995959],[-119.35492260737819,38.083280235049905],[-119.35491720763176,38.083282352786696],[-119.35491171784967,38.08328432060064],[-119.35490614469245,38.08328613610427],[-119.35490049492168,38.08328779709493],[-119.35489477539197,38.0832893015574],[-119.35488899304255,38.08329064766642],[-119.35488315488887,38.08329183378883],[-119.35487726801405,38.08329285848552],[-119.3548713395604,38.08329372051331],[-119.35486537672058,38.08329441882631],[-119.35485938672905,38.08329495257732],[-119.35485337685317,38.08329532111874],[-119.35484735438442,38.083295524003475],[-119.3548413266296,38.083295560985334],[-119.35483530090188,38.08329543201948],[-119.35482928451201,38.08329513726235],[-119.35482328475935,38.083294677071585],[-119.35481730892315,38.08329405200548],[-119.35481136425358,38.08329326282245],[-119.35480545796302,38.083292310479926],[-119.35479959721734,38.08329119613337],[-119.35479378912704,38.08328992113476],[-119.35478804073881,38.08328848703096],[-119.35478235902693,38.08328689556193],[-119.35477675088467,38.083285148658504],[-119.35477122311619,38.083283248440154],[-119.35476578242799,38.08328119721228],[-119.35476043542104,38.08327899746356],[-119.35475518858257,38.08327665186281],[-119.3547500482783,38.08327416325588],[-119.35474502074472,38.08327153466205],[-119.35474011208147,38.083268769270454],[-119.35473532824396,38.083265870436236],[-119.35473067503618,38.0832628416764],[-119.35472615810363,38.08325968666556],[-119.35472178292648,38.08325640923157],[-119.35471755481286,38.08325301335075],[-119.35471347889252,38.0832495031432],[-119.35470956011056,38.08324588286762],[-119.35469058111299,38.08322829460721],[-119.35467090545266,38.0832111912996],[-119.3546505529534,38.08319459017646],[-119.35462954412084,38.08317850796352],[-119.35460790012189,38.08316296086361],[-119.3545856427633,38.08314796454051],[-119.35456279446974,38.08313353410304],[-119.35453937826125,38.08311968408987],[-119.35453724431254,38.08311850724225],[-119.35453505999307,38.0831173896194],[-119.35453282793277,38.0831163325669],[-119.35453055081895,38.083115337357434],[-119.35452823139322,38.083114405189185],[-119.35452587244812,38.08311353718448],[-119.35452347682377,38.08311273438838],[-119.35452104740449,38.083111997767425],[-119.35451858711517,38.08311132820851],[-119.354516098918,38.08311072651776],[-119.3545135858087,38.08311019341956],[-119.354511050813,38.083109729555815],[-119.35450849698299,38.08310933548496],[-119.35450592739342,38.08310901168146],[-119.35450334513801,38.083108758535175],[-119.35450075332577,38.08310857635089],[-119.35449815507717,38.08310846534793],[-119.3544955535204,38.08310842565995],[-119.35449295178773,38.083108457334745],[-119.3544903530116,38.083108560334175],[-119.35448776032085,38.083108734534214],[-119.35448517683702,38.083108979725154],[-119.35448260567055,38.08310929561177],[-119.35448004991711,38.08310968181375],[-119.35447751265376,38.08311013786612],[-119.35447499693531,38.08311066321979],[-119.35447250579064,38.08311125724225],[-119.354470042219,38.08311191921832],[-119.35446760918651,38.08311264835098],[-119.35446520962248,38.08311344376239],[-119.35446284641591,38.083114304494885],[-119.3544605224121,38.08311522951213],[-119.35445824040907,38.08311621770049],[-119.35445600315431,38.08311726787013],[-119.35445381334142,38.08311837875674],[-119.3544516736069,38.083119549022776],[-119.35444958652697,38.08312077725931],[-119.35444755461437,38.0831220619875],[-119.35444558031556,38.08312340166067],[-119.35444366600748,38.08312479466581],[-119.354441813995,38.08312623932575],[-119.35444002650785,38.08312773390121],[-119.35443830569812,38.08312927659274],[-119.35443665363769,38.08313086554294],[-119.35443507231557,38.08313249883875],[-119.35443356363567,38.08313417451376],[-119.35443212941438,38.08313589055045],[-119.35443077137849,38.083137644882754],[-119.35442087675096,38.083150439733714],[-119.35441044060263,38.0831629629189],[-119.35439947486057,38.083175200125766],[-119.35438799205707,38.08318713736859],[-119.3543760053154,38.083198761004525],[-119.35436352833479,38.08321005774905],[-119.35435057537481,38.08322101469129],[-119.35433716123899,38.08323161930872],[-119.35432330125799,38.083241859481454],[-119.35430901127204,38.08325172350612],[-119.35429430761278,38.083261200109284],[-119.3542792070847,38.083270278460205],[-119.35426372694594,38.083278948183384],[-119.35424788488838,38.083287199370254],[-119.35423169901765,38.08329502259065],[-119.35421518783232,38.08330240890347],[-119.35419837020277,38.083309349867015],[-119.35418126534961,38.083315837548476],[-119.35417733468373,38.083317329151875],[-119.35417347084048,38.08331892610946],[-119.35416967833822,38.08332062655379],[-119.354165961612,38.08332242849635],[-119.35416232500806,38.08332432982993],[-119.35415877277913,38.083326328331125],[-119.35415530907918,38.08332842166286],[-119.35415193795869,38.08333060737721],[-119.35414866335981,38.08333288291821],[-119.35414548911194,38.083335245624816],[-119.35414241892701,38.08333769273405],[-119.35413945639533,38.0833402213843],[-119.35413660498132,38.08334282861854],[-119.35413386801942,38.08334551138786],[-119.35413124871025,38.08334826655504],[-119.35412875011684,38.08335109089817],[-119.35412637516112,38.083353981114435],[-119.35412412662032,38.08335693382404],[-119.35412200712393,38.083359945574045],[-119.35412001915054,38.08336301284254],[-119.35411816502487,38.08336613204263],[-119.35411644691516,38.08336929952671],[-119.35411486683063,38.083372511590696],[-119.35411342661901,38.083375764478404],[-119.35411212796454,38.08337905438593],[-119.35411097238587,38.08338237746597],[-119.35410996123436,38.083385729832564],[-119.35410909569248,38.08338910756541],[-119.35410837677242,38.08339250671456],[-119.35410780531491,38.08339592330508],[-119.35410710005839,38.08340164044888],[-119.35410664320365,38.08340737334302],[-119.35410643528795,38.083413115246934],[-119.35410647655577,38.08341885940944],[-119.35410676695868,38.08342459907676],[-119.35410730615527,38.0834303275003],[-119.35410809351163,38.08343603794479],[-119.35410912810205,38.08344172369607],[-119.35411040871018,38.08344737806896],[-119.35411193383035,38.08345299441523],[-119.35411370166943,38.08345856613134],[-119.3541157101489,38.083464086666204],[-119.35411795690727,38.083469549528964],[-119.35412043930296,38.083474948296484],[-119.35412315441728,38.08348027662107],[-119.35412609905788,38.08348552823783],[-119.35412926976261,38.08349069697204],[-119.35413266280351,38.08349577674644],[-119.35413627419112,38.083500761588354],[-119.35413852490713,38.083503868957024],[-119.35414063875987,38.083507035804445],[-119.35414261323653,38.083510258366175],[-119.35414444599006,38.08351353281143],[-119.35414613484171,38.083516855247865],[-119.354147677784,38.08352022172605],[-119.35414907298271,38.083523628244144],[-119.35415031877935,38.083527070752766],[-119.35415141369297,38.083530545159746],[-119.35415235642205,38.08353404733499],[-119.35415314584587,38.083537573115386],[-119.35415378102606,38.08354111830977],[-119.3541542612075,38.083544678703895],[-119.35415458581939,38.08354825006545],[-119.35415475447583,38.08355182814908],[-119.35415476697632,38.08355540870147],[-119.35415462330596,38.083558987466304],[-119.35415432363556,38.08356256018945],[-119.35415386832123,38.08356612262392],[-119.35415325790427,38.083569670535006],[-119.35415249311026,38.083573199705185],[-119.35415157484827,38.0835767059393],[-119.35415050420988,38.083580185069366],[-119.3541492824677,38.08358363295971],[-119.35414791107411,38.08358704551173],[-119.35414639165919,38.083590418668855],[-119.35414472602916,38.08359374842131],[-119.35414291616397,38.083597030810964],[-119.35414096421499,38.08360026193596],[-119.35413887250256,38.08360343795542],[-119.3541366435131,38.08360655509389],[-119.35413427989629,38.08360960964597],[-119.35413178446176,38.083612597980625],[-119.35412916017589,38.0836155165456],[-119.35412641015819,38.08361836187148],[-119.35412353767771,38.083621130575985],[-119.35412054614899,38.083623819367865],[-119.35411743912812,38.083626425050916],[-119.35411422030849,38.08362894452768],[-119.35411089351635,38.08363137480318],[-119.35410746270637,38.08363371298854],[-119.35410393195681,38.083635956304256],[-119.35410030546473,38.08363810208365],[-119.3540965875411,38.083640147776],[-119.35409278260538,38.08364209094953],[-119.3540888951807,38.08364392929432],[-119.35408492988803,38.083645660625116],[-119.35408089144111,38.083647282883845],[-119.35407678464047,38.08364879414205],[-119.35407261436801,38.08365019260328],[-119.354068385581,38.08365147660514],[-119.35406410330631,38.083652644621324],[-119.35405977263439,38.08365369526337],[-119.35405539871326,38.08365462728235],[-119.35405098674222,38.083655439570336],[-119.35404654196599,38.08365613116181],[-119.3540420696681,38.08365670123456],[-119.35403757516495,38.08365714911096],[-119.35403306379928,38.08365747425866],[-119.35402854093384,38.08365767629108],[-119.35402401194503,38.08365775496812],[-119.35401948221666,38.08365771019619],[-119.35401495713327,38.08365754202855],[-119.35401044207401,38.08365725066512],[-119.354005942406,38.08365683645221],[-119.35400146347808,38.08365629988223],[-119.35399954462909,38.0836560700366],[-119.3539976168873,38.08365589266989],[-119.35399568254942,38.08365576799346],[-119.35399374392,38.08365569615578],[-119.35399180330876,38.0836556772425],[-119.35398986302772,38.0836557112761],[-119.35398792538851,38.08365579821609],[-119.35398599269965,38.08365593795885],[-119.35398406726378,38.08365613033791],[-119.35398215137478,38.08365637512405],[-119.35398024731532,38.08365667202565],[-119.35397835735385,38.08365702068896],[-119.35397648374209,38.0836574206986],[-119.35397462871225,38.083657871578005],[-119.3539727944744,38.08365837278998],[-119.35397098321388,38.083658923737396],[-119.35396919708859,38.08365952376384],[-119.35396743822653,38.08366017215448],[-119.35396570872321,38.08366086813675],[-119.35396401063916,38.083661610881514],[-119.3539623459975,38.08366239950387],[-119.35396071678144,38.08366323306423],[-119.35395912493208,38.083664110569494],[-119.3539575723459,38.0836650309742],[-119.35395606087269,38.08366599318181],[-119.35395459231319,38.083666996045906],[-119.35395316841705,38.08366803837167],[-119.3539517908807,38.083669118917335],[-119.35395046134539,38.0836702363955],[-119.35394918139505,38.083671389474816],[-119.35394795255465,38.08367257678147],[-119.35394677628824,38.08367379690093],[-119.35394565399722,38.083675048379554],[-119.3539445870187,38.08367632972632],[-119.35394357662385,38.08367763941466],[-119.35394262401648,38.08367897588417],[-119.35394173033156,38.08368033754257],[-119.35394089663374,38.083681722767636],[-119.3539401239164,38.083683129908955],[-119.3539394131001,38.08368455729011],[-119.3539387650317,38.08368600321047],[-119.35393818048335,38.083687465947406],[-119.35393766015146,38.083688943758176],[-119.35393720465598,38.083690434882115],[-119.35393681453954,38.08369193754276],[-119.35393649026697,38.08369344994974],[-119.35393623222464,38.08369497030125],[-119.35393604071996,38.083696496785926],[-119.35393591598104,38.08369802758511],[-119.35393585815658,38.08369956087497],[-119.35393586731543,38.0837010948288],[-119.35393594344669,38.08370262761901],[-119.35393608645964,38.083704157419454],[-119.35393629618396,38.08370568240749],[-119.35393657236975,38.08370720076628],[-119.35393691468794,38.08370871068682],[-119.35393732273073,38.083710210370235],[-119.35393779601198,38.08371169802974],[-119.35393833396783,38.08371317189299],[-119.35393893595733,38.08371463020399],[-119.3539396012633,38.0837160712253],[-119.3539403290931,38.08371749324009],[-119.3539424174034,38.08372157267113],[-119.35394432693093,38.08372570646819],[-119.35394605541529,38.083729889738045],[-119.35394760081053,38.08373411752892],[-119.35394896128723,38.083738384836316],[-119.35395013523497,38.083742686608986],[-119.3539511212641,38.08374701775486],[-119.35395191820741,38.08375137314712],[-119.35395252512154,38.08375574763023],[-119.35395294128801,38.08376013602606],[-119.3539531662142,38.083764533140005],[-119.35395319963379,38.08376893376716],[-119.3539530415072,38.083773332698435],[-119.35395269202158,38.08377772472676],[-119.35395215159059,38.08378210465323],[-119.3539514208539,38.083786467293265],[-119.35395050067648,38.083790807482764],[-119.35394939214748,38.08379512008417],[-119.35394809657912,38.08379939999258],[-119.35394661550487,38.08380364214183],[-119.3539449506779,38.083807841510435],[-119.35389395735918,38.0839363444575],[-119.35384849740687,38.084066138268035],[-119.35380862296982,38.084197074134046],[-119.35377437979388,38.08432900193734],[-119.35376982400024,38.0843501183605],[-119.35376615302899,38.084371342186216],[-119.35376337088593,38.084392650259005],[-119.35376148060722,38.08441401933142],[-119.35376048425596,38.08443542608948],[-119.35376038291992,38.08445684717804],[-119.35376117671049,38.084478259226266],[-119.35376286476236,38.08449963887324],[-119.35376544523466,38.08452096279333],[-119.35376650969673,38.08452980464772],[-119.35376719315963,38.08453866999719],[-119.35376749483278,38.08454754858859],[-119.35376741436708,38.08455643015335],[-119.35376695185553,38.08456530441956],[-119.35376610783288,38.08457416112368],[-119.35376488327513,38.084582990022504],[-119.35376327959841,38.084591780904965],[-119.35376129865736,38.08460052360397],[-119.35375894274284,38.08460920800819],[-119.3537562145795,38.08461782407361],[-119.35375311732246,38.08462636183536],[-119.35374965455372,38.08463481141906],[-119.35374583027803,38.084643163052334],[-119.35374164891823,38.08465140707609],[-119.3537371153102,38.08465953395569],[-119.35373223469713,38.084667534291924],[-119.35372701272362,38.08467539883202],[-119.35372145542911,38.08468311848023],[-119.35371556924073,38.08469068430831],[-119.3537093609661,38.08469808756601],[-119.35370283778535,38.084705319691054],[-119.35369600724277,38.08471237231908],[-119.35368887723824,38.084719237293356],[-119.35368145601787,38.08472590667413],[-119.35367375216464,38.08473237274791],[-119.35366577458844,38.0847386280363],[-119.35365571367572,38.084746518214565],[-119.35364599976074,38.08475467551619],[-119.35363664418968,38.08476309041325],[-119.35362765789026,38.08477175307692],[-119.35361905135878,38.084780653389],[-119.35361083464808,38.08478978095366],[-119.35360301735562,38.084799125109676],[-119.3535956086124,38.084808674942835],[-119.35358861707216,38.08481841929862],[-119.3535820509014,38.08482834679537],[-119.35357591776976,38.08483844583749],[-119.35357022484109,38.084848704629],[-119.35356497876512,38.08485911118735],[-119.35356018566958,38.084869653357295],[-119.35355585115315,38.08488031882533],[-119.3535519802789,38.08489109513381],[-119.35354857756829,38.08490196969571],[-119.35354564699604,38.084912929809136],[-119.35354319198538,38.084923962672356],[-119.35354121540402,38.0849350553986],[-119.35353971956089,38.08494619503121],[-119.35353870620344,38.084957368558705],[-119.3535381765155,38.084968562929994],[-119.353538131116,38.084979765069704],[-119.35353857005815,38.08499096189328],[-119.35353949282953,38.08500214032246],[-119.35354089835246,38.085013287300434],[-119.35354278498549,38.08502438980709],[-119.35354515052519,38.08503543487428],[-119.35354799220872,38.08504640960098],[-119.35355130671707,38.08505730116823],[-119.35355509017903,38.08506809685428],[-119.35355933817549,38.085078784049315],[-119.35356404574487,38.0850893502703],[-119.3535659957747,38.0850937319274],[-119.35356775139287,38.085098164643156],[-119.35356931046584,38.085102643030694],[-119.35357067109892,38.0851071616477],[-119.35357183163855,38.08511171500291],[-119.35357279067435,38.08511629756289],[-119.35357354704087,38.085120903758714],[-119.35357409981883,38.08512552799269],[-119.35357444833645,38.08513016464528],[-119.35357459217019,38.08513480808176],[-119.3535745311452,38.08513945265923],[-119.35357426533558,38.085144092733366],[-119.35357379506436,38.08514872266533],[-119.35357312090295,38.08515333682862],[-119.3535722436706,38.08515792961585],[-119.35357116443336,38.08516249544569],[-119.35356988450269,38.08516702876949],[-119.35356840543402,38.08517152407815],[-119.35356672902472,38.085175975908705],[-119.35356485731205,38.08518037885114],[-119.35356279257053,38.08518472755475],[-119.35356053730933,38.085189016734766],[-119.35355809426912,38.08519324117875],[-119.35355546641877,38.085197395753],[-119.35355265695175,38.085201475408596],[-119.35354966928223,38.085205475187784],[-119.35354650704093,38.085209390229814],[-119.35354317407078,38.08521321577694],[-119.35353967442215,38.085216947180164],[-119.35353601234793,38.08522057990485],[-119.35353219229843,38.08522410953637],[-119.35352821891598,38.08522753178532],[-119.35352409702925,38.0852308424928],[-119.35351983164729,38.08523403763546],[-119.35351542795364,38.08523711333043],[-119.35351089129986,38.085240065839926],[-119.3535062271991,38.085242891575916],[-119.35350144131945,38.085245587104446],[-119.35346052694814,38.085268500575516],[-119.35342048539212,38.08529235783575],[-119.35338135149019,38.08531713812827],[-119.35334315929141,38.08534281989317],[-119.35330594202564,38.08536938078611],[-119.35330392057162,38.08537081651905],[-119.35330183804697,38.085372196649274],[-119.35329969689872,38.08537351955507],[-119.3532974996427,38.085374783682006],[-119.35329524886075,38.08537598754471],[-119.3532929471976,38.08537712972861],[-119.3532905973577,38.08537820889164],[-119.35328820210216,38.08537922376576],[-119.3532857642455,38.08538017315848],[-119.35328328665219,38.08538105595423],[-119.35328077223343,38.08538187111572],[-119.35327822394376,38.08538261768513],[-119.35327564477741,38.08538329478522],[-119.353273037765,38.08538390162037],[-119.35327040596978,38.08538443747754],[-119.35326775248417,38.08538490172712],[-119.35326508042607,38.08538529382356],[-119.35326239293516,38.085385613306194],[-119.35325969316936,38.08538585979958],[-119.35325698430087,38.085386033014075],[-119.35325426951272,38.08538613274623],[-119.35325155199477,38.08538615887878],[-119.3532488349402,38.08538611138101],[-119.3532461215416,38.08538599030879],[-119.35324341498725,38.08538579580434],[-119.35324071845743,38.085385528096246],[-119.35323803512054,38.08538518749901],[-119.35323536812962,38.085384774412894],[-119.3532327206184,38.08538428932324],[-119.35323009569773,38.085383732800075],[-119.353227496452,38.085383105497286],[-119.35322492593532,38.085382408152014],[-119.35322238716813,38.08538164158361],[-119.35321988313349,38.085380806692825],[-119.3532174167737,38.08537990446066],[-119.35321499098679,38.085378935947254],[-119.3532126086231,38.08537790229064],[-119.35321027248192,38.08537680470537],[-119.35320798530825,38.08537564448114],[-119.35320574978962,38.08537442298123],[-119.35320356855273,38.0853731416409],[-119.35319611807512,38.0853687633678],[-119.35318848394772,38.08536458740348],[-119.35318067496046,38.08536061855611],[-119.35317270010462,38.08535686139544],[-119.35316456856243,38.08535332024741],[-119.35315628969657,38.08534999918928],[-119.35314787303923,38.08534690204496],[-119.35313932828142,38.085344032380426],[-119.3531306652615,38.08534139349983],[-119.35312189395403,38.08533898844156],[-119.35311302445828,38.0853368199748],[-119.35310406698657,38.085334890596265],[-119.35309503185245,38.085333202527494],[-119.35308592945896,38.08533175771209],[-119.35307677028653,38.08533055781361],[-119.35306756488103,38.085329604213605],[-119.35305832384147,38.085328898010054],[-119.35304905780795,38.08532844001607],[-119.35303977744933,38.08532823075899],[-119.35303049345094,38.08532827047976],[-119.35302121650238,38.08532855913263],[-119.35301195728503,38.08532909638524],[-119.35300272645993,38.08532988161901],[-119.35299353465537,38.08533091392985],[-119.3529843924548,38.0853321921291],[-119.35297531038444,38.08533371474513],[-119.3529662989014,38.08533548002476],[-119.35295736838142,38.08533748593544],[-119.35295217830782,38.08533880511446],[-119.35294704903464,38.0853402653141],[-119.35294198669348,38.08534186478879],[-119.35293699733599,38.08534360162654],[-119.35293208692646,38.08534547375109],[-119.35292726133495,38.08534747892444],[-119.35292252633008,38.0853496147496],[-119.35291788757209,38.085351878673364],[-119.3529133506063,38.08535426798937],[-119.35290892085625,38.08535677984144],[-119.35290460361739,38.08535941122683],[-119.35290040405062,38.085362158999914],[-119.35289632717618,38.085365019876],[-119.35289237786765,38.08536799043512],[-119.35288856084617,38.0853710671262],[-119.35288488067461,38.08537424627134],[-119.35288134175241,38.085377524070104],[-119.35287794831004,38.08538089660415],[-119.35287470440413,38.085384359841925],[-119.35287161391251,38.085387909643366],[-119.35286868052962,38.08539154176498],[-119.35286590776215,38.08539525186488],[-119.35286329892472,38.08539903550791],[-119.352860857136,38.08540288817108],[-119.35285858531499,38.085406805248766],[-119.3528564861775,38.08541078205847],[-119.3528545622329,38.08541481384623],[-119.35285281578116,38.08541889579232],[-119.35285124891007,38.085423023017135],[-119.35284986349265,38.08542719058691],[-119.35284866118518,38.08543139351963],[-119.35284764342488,38.08543562679102],[-119.35284681142849,38.085439885340556],[-119.35284616619063,38.08544416407743],[-119.3528457084826,38.08544845788679],[-119.35284543885167,38.085452761635715],[-119.35284535762013,38.08545707017938],[-119.35284546488518,38.08546137836729],[-119.35284576051855,38.08546568104934],[-119.35284624416693,38.085469973081956],[-119.35284691525213,38.08547424933441],[-119.3528493274655,38.08548961708131],[-119.35285106707964,38.08550504148143],[-119.35285213202074,38.08552050415074],[-119.35285252101906,38.085535986659565],[-119.35285223361056,38.08555147055452],[-119.35285127013736,38.08556693738068],[-119.35284963174742,38.085582368703335],[-119.35284732039301,38.08559774613014],[-119.35284433882867,38.08561305133297],[-119.35284069060765,38.08562826606974],[-119.35283638007776,38.08564337220624],[-119.3528314123763,38.08565835173764],[-119.35282579342382,38.08567318680998],[-119.35281952991708,38.085687859741526],[-119.35281672170728,38.08569375570533],[-119.35281365593514,38.08569957096808],[-119.35281033630473,38.085705298503555],[-119.35280676682699,38.08571093139148],[-119.35280295181462,38.08571646282592],[-119.35279889587707,38.08572188612357],[-119.35279460391486,38.08572719473172],[-119.35279008111368,38.08573238223626],[-119.35278533293815,38.08573744236942],[-119.35278036512521,38.08574236901729],[-119.35277518367715,38.08574715622728],[-119.35276979485437,38.085751798215234],[-119.35276420516793,38.0857562893725],[-119.3527584213715,38.08576062427262],[-119.35275245045331,38.085764797677975],[-119.35274629962768,38.08576880454604],[-119.35273997632632,38.085772640035536],[-119.3527288777772,38.085778903388],[-119.35271751448452,38.08578486281657],[-119.35270589976547,38.08579051133707],[-119.35269404723174,38.0857958423298],[-119.35268197077386,38.08580084954709],[-119.35266968454472,38.08580552712072],[-119.35265720294313,38.08580986956888],[-119.3526445405968,38.085813871802415],[-119.35263171234533,38.08581752913092],[-119.35261873322271,38.08582083726823],[-119.3526056184398,38.08582379233734],[-119.3525923833664,38.08582639087509],[-119.35257904351334,38.08582862983611],[-119.35256561451423,38.08583050659649],[-119.35255211210712,38.08583201895673],[-119.35253855211617,38.085833165144436],[-119.35252495043295,38.08583394381634],[-119.35251132299796,38.08583435405986],[-119.35249768578184,38.08583439539426],[-119.35248405476672,38.08583406777101],[-119.35247044592744,38.08583337157415],[-119.35245687521282,38.08583230761956],[-119.35244335852708,38.085830877154116],[-119.35242991171106,38.085829081854286],[-119.3524165505237,38.085826923824044],[-119.35240329062368,38.08582440559249],[-119.35239014755084,38.08582153011088],[-119.3523569728863,38.085814263007485],[-119.35232350811792,38.08580788069484],[-119.3522897910094,38.085802390375136],[-119.35225585960919,38.085797798244016],[-119.35222175220756,38.08579410948348],[-119.35218750729331,38.085791328256164],[-119.35215316351045,38.085789457700564],[-119.35211875961453,38.085788499927524],[-119.35208433442891,38.08578845601787],[-119.35204992680103,38.08578932602114],[-119.35201557555848,38.085791108955576],[-119.3519813194652,38.08579380280917],[-119.35196372389761,38.0857951769206],[-119.3519460783152,38.08579606411805],[-119.35192840428068,38.085796463317386],[-119.35191072339164,38.08579637403079],[-119.35189305725396,38.08579579636737],[-119.35187542745555,38.08579473103305],[-119.35185785553985,38.08579317932961],[-119.35184036297962,38.08579114315323],[-119.3518229711506,38.085788624992134],[-119.35180570130548,38.0857856279235],[-119.35178857454784,38.08578215560966],[-119.35177161180644,38.08577821229379],[-119.35175483380952,38.08577380279459],[-119.35173826105968,38.085768932500415],[-119.35172191380856,38.08576360736272],[-119.35170581203235,38.0857578338888],[-119.35168997540721,38.08575161913374],[-119.35167442328522,38.085744970691934],[-119.3516591746709,38.085737896687704],[-119.35164424819776,38.085730405765396],[-119.35162966210572,38.08572250707884],[-119.35161543421867,38.08571421028015],[-119.35160523240414,38.08570825994085],[-119.35159477517543,38.0857025933488],[-119.3515840751602,38.0856972173467],[-119.35157314527927,38.085692138426275],[-119.35156199873103,38.0856873627206],[-119.35155064897549,38.085682895996534],[-119.35153910971798,38.085678743647875],[-119.35152739489274,38.085674910688766],[-119.351515518646,38.08567140174764],[-119.35150349531887,38.08566822106177],[-119.35149133943004,38.08566537247193],[-119.35147906565832,38.085662859417916],[-119.35146668882487,38.085660684934396],[-119.35145422387522,38.08565885164711],[-119.35144168586143,38.08565736176985],[-119.35142908992366,38.08565621710172],[-119.35141645127204,38.08565541902494],[-119.35140378516834,38.08565496850324],[-119.35139110690746,38.08565486608064],[-119.3513784317989,38.0856551118808],[-119.35136577514844,38.08565570560695],[-119.35135315223955,38.085656646542084],[-119.35134057831493,38.08565793355001],[-119.35132806855815,38.08565956507663],[-119.35131563807533,38.08566153915175],[-119.3513033018768,38.085663853391644],[-119.3512910748591,38.085666505001726],[-119.3512789717869,38.08566949078007],[-119.35126700727523,38.085672807121206],[-119.35125954701087,38.08567510860594],[-119.35125219297605,38.08567761458367],[-119.35124495414057,38.08568032199789],[-119.3512378393336,38.08568322754631],[-119.35123085723319,38.08568632768505],[-119.35122401635542,38.085689618632856],[-119.35121732504417,38.08569309637575],[-119.35121079146086,38.08569675667188],[-119.3512044235746,38.08570059505677],[-119.3511982291523,38.08570460684876],[-119.35119221574942,38.08570878715464],[-119.35118639070055,38.08571313087564],[-119.35118076111054,38.085717632713695],[-119.3511753338459,38.08572228717793],[-119.35117011552632,38.08572708859121],[-119.35116511251665,38.08573203109725],[-119.3511603309192,38.08573710866768],[-119.35115577656609,38.08574231510927],[-119.35115145501234,38.085747644071766],[-119.35114737152908,38.08575308905535],[-119.35114353109701,38.085758643418735],[-119.35113993840035,38.08576430038723],[-119.35113659782125,38.085770053061005],[-119.35113351343428,38.08577589442342],[-119.35113068900152,38.08578181734979],[-119.35112812796808,38.085787814615784],[-119.35112583345771,38.08579387890654],[-119.35112380826911,38.08580000282537],[-119.35112205487249,38.08580617890288],[-119.35112057540657,38.08581239960602],[-119.3511193716759,38.08581865734737],[-119.35111783640944,38.08582664226246],[-119.35111595066478,38.08583458013817],[-119.35111371672406,38.08584246136769],[-119.3511111372908,38.08585027641268],[-119.35110821548669,38.08585801581496],[-119.35110495484773,38.08586567020785],[-119.35110135932001,38.08587323032753],[-119.35109743325499,38.08588068702437],[-119.35109318140411,38.08588803127382],[-119.35108860891307,38.08589525418744],[-119.35108372131575,38.08590234702361],[-119.35107852452725,38.085909301198186],[-119.35107302483698,38.08591610829482],[-119.3510672289009,38.08592276007516],[-119.35106114373355,38.085929248488796],[-119.35105477669944,38.08593556568307],[-119.3510481355043,38.085941704012555],[-119.35104122818564,38.08594765604825],[-119.35103406310307,38.08595341458663],[-119.35102664892811,38.08595897265838],[-119.35101899463386,38.08596432353675],[-119.35101110948393,38.0859694607458],[-119.35100300302138,38.08597437806813],[-119.35099468505715,38.08597906955254],[-119.35098616565806,38.08598352952106],[-119.35097745513484,38.08598775257597],[-119.35096856402946,38.08599173360625],[-119.35095950310249,38.085995467793815],[-119.35095028332002,38.08599895061932],[-119.35094091584037,38.08600217786762],[-119.35093141200068,38.086005145632896],[-119.35092178330305,38.086007850323355],[-119.35091204140078,38.08601028866563],[-119.35090219808411,38.08601245770868],[-119.35089226526607,38.08601435482735],[-119.35088225496796,38.08601597772567],[-119.35087217930491,38.08601732443949],[-119.35086205047114,38.08601839333893],[-119.35085188072522,38.08601918313035],[-119.35084168237523,38.08601969285786],[-119.35083146776385,38.08601992190458],[-119.35082124925353,38.086019869993294],[-119.35081103921131,38.086019537186836],[-119.35080084999409,38.08601892388799],[-119.35079069393352,38.08601803083901],[-119.3507805833211,38.086016859120704],[-119.35077053039335,38.086015410151184],[-119.35076054731695,38.08601368568409],[-119.35075064617413,38.08601168780647],[-119.35074083894784,38.086009418936264],[-119.35073113750741,38.086006881819436],[-119.35072155359413,38.086004079526575],[-119.35071209880705,38.08600101544915],[-119.35068817922159,38.085993258588545],[-119.35066393686989,38.08598615520839],[-119.35063940032119,38.085979713679826],[-119.35061459849145,38.085973941594155],[-119.35058956060925,38.085968845753634],[-119.35056431618123,38.08596443216363],[-119.35053889495752,38.08596070602546],[-119.35051332689659,38.08595767173033],[-119.35048764212989,38.08595533285408],[-119.3504618709264,38.08595369215303],[-119.35043604365703,38.085952751560725],[-119.35041019075865,38.08595251218565],[-119.35038434269838,38.085952974309876],[-119.35035852993768,38.0859541373888],[-119.35033278289636,38.08595600005176],[-119.35030713191681,38.085958560103656],[-119.35028160722818,38.085961814527515],[-119.35025623891087,38.08596575948803],[-119.35023105686096,38.0859703903362],[-119.35020609075505,38.0859757016146],[-119.35018137001526,38.085981687064006],[-119.35015692377462,38.08598833963066],[-119.35013278084259,38.08599565147466],[-119.3501089696713,38.086003613979116],[-119.35008551832193,38.08601221776036],[-119.35006245443157,38.08602145267896],[-119.35003980518081,38.08603130785173],[-119.35001759726158,38.086041771664505],[-119.34999585684577,38.086052831785835],[-119.34997460955428,38.086064475181566],[-119.34995388042702,38.08607668813008],[-119.34993369389322,38.08608945623864],[-119.34991407374271,38.08610276446012],[-119.34989504309789,38.08611659711102],[-119.34987662438647,38.08613093788971],[-119.34985883931505,38.08614576989576],[-119.34984548779191,38.08615689745474],[-119.34983165227902,38.08616764933094],[-119.34981734968771,38.08617801238207],[-119.34980259750023,38.08618797394107],[-119.34978741374833,38.08619752183174],[-119.3497718169914,38.086206644383374],[-119.34975582629366,38.08621533044529],[-119.34973946120076,38.08622356940023],[-119.34972274171614,38.086231351177496],[-119.34970568827639,38.08623866626524],[-119.34968832172633,38.086245505721976],[-119.34967066329354,38.08625186118768],[-119.34965273456228,38.08625772489384],[-119.34963455744743,38.08626308967309],[-119.34961615416731,38.086267948967944],[-119.34959754721676,38.08627229683867],[-119.34957875933961,38.08627612797079],[-119.34956548049492,38.08627883418682],[-119.34955232838612,38.08628190276089],[-119.34953931883722,38.08628533000105],[-119.34952646750054,38.086289111783834],[-119.34951378983817,38.08629324355921],[-119.3495013011032,38.08629772035604],[-119.34948901632148,38.08630253678809],[-119.34947695027337,38.0863076870605],[-119.34946511747619,38.08631316497671],[-119.34945353216655,38.086318963946],[-119.34944220828336,38.086325076991365],[-119.349431159451,38.08633149675787],[-119.34942039896288,38.08633821552164],[-119.34940993976555,38.086345225198954],[-119.34939979444307,38.0863525173562],[-119.34938997520186,38.086360083219766],[-119.34938049385602,38.08636791368683],[-119.34937136181317,38.08637599933611],[-119.34936259006061,38.086384330439444],[-119.3493541891522,38.0863928969732],[-119.3493461691956,38.086401688630545],[-119.34933853984022,38.086410694833845],[-119.34933131026543,38.08641990474723],[-119.3493244891697,38.08642930728976],[-119.34931808475996,38.0864388911488],[-119.34931210474188,38.086448644793464],[-119.3493065563105,38.086458556488616],[-119.34930144614158,38.086468614308984],[-119.3492967803837,38.08647880615345],[-119.3492925646506,38.08648911975966],[-119.34928880401465,38.08649954271872],[-119.34924658467173,38.08663181205749],[-119.34920884037095,38.08676492372163],[-119.34920824541481,38.08676698257528],[-119.34920756017128,38.08676902381872],[-119.34920678547032,38.0867710449794],[-119.34920592225032,38.08677304360911],[-119.3492049715569,38.08677501728693],[-119.34920393454163,38.08677696362216],[-119.34920281246059,38.086778880257185],[-119.34920160667298,38.08678076487048],[-119.34920031863933,38.08678261517915],[-119.34919894991984,38.08678442894198],[-119.34919750217242,38.08678620396194],[-119.3491959771507,38.086787938088996],[-119.34919437670192,38.08678962922259],[-119.34919270276467,38.086791275314255],[-119.34919095736662,38.086792874370126],[-119.34918914262191,38.08679442445324],[-119.34918726072874,38.086795923686026],[-119.34918531396661,38.08679737025249],[-119.34918330469365,38.08679876240034],[-119.34918123534364,38.08680009844337],[-119.34917910842321,38.08680137676317],[-119.34917692650863,38.08680259581136],[-119.34917469224287,38.0868037541113],[-119.34917240833225,38.086804850259966],[-119.34917007754328,38.08680588292956],[-119.34916770269923,38.08680685086926],[-119.3491652866767,38.08680775290658],[-119.3491628324022,38.08680858794893],[-119.34916034284859,38.086809354984766],[-119.34915782103147,38.08681005308503],[-119.34915527000548,38.08681068140412],[-119.34915269286064,38.0868112391809],[-119.34915009271867,38.08681172573981],[-119.34914747272907,38.08681214049143],[-119.34914483606545,38.08681248293342],[-119.34914218592151,38.086812752650964],[-119.34913952550744,38.08681294931732],[-119.34913685804574,38.08681307269432],[-119.34913418676749,38.086813122632506],[-119.3491315149084,38.086813099071364],[-119.34912884570485,38.08681300203944],[-119.34912618239007,38.086812831654285],[-119.34912352819008,38.086812588122285],[-119.34912088631992,38.0868122717384],[-119.34911825997966,38.08681188288591],[-119.34911565235059,38.08681142203579],[-119.34911306659126,38.08681088974628],[-119.34911050583383,38.086810286662136],[-119.3491079731801,38.08680961351386],[-119.3491054716979,38.08680887111687],[-119.3491030044172,38.08680806037039],[-119.34910057432664,38.08680718225646],[-119.34909818436974,38.08680623783877],[-119.34909583744147,38.086805228261284],[-119.34909353638463,38.086804154746844],[-119.34909128398645,38.086803018595866],[-119.3490890829753,38.08680182118452],[-119.34908693601717,38.0868005639632],[-119.34908484571272,38.086799248454845],[-119.34908281459388,38.08679787625284],[-119.34908084512094,38.08679644901936],[-119.34907893967952,38.08679496848319],[-119.3490771005776,38.086793436437716],[-119.34907533004294,38.086791854738664],[-119.34907363022015,38.08679022530197],[-119.34904272119275,38.08676057140179],[-119.34901055514263,38.08673176472107],[-119.34897716922053,38.08670383852932],[-119.34894260198584,38.08667682507903],[-119.34890689336227,38.086650755568634],[-119.34887008459145,38.086625660106264],[-119.3488322181856,38.086601567675096],[-119.34882305430747,38.08659573336116],[-119.34881415146208,38.08658965181576],[-119.3488055203215,38.08658333032905],[-119.34879717123219,38.08657677647885],[-119.34878911420238,38.08656999812147],[-119.34878135889022,38.08656300338237],[-119.34877391459223,38.086555800646416],[-119.34876679023205,38.08654839854775],[-119.34875999434978,38.08654080595953],[-119.34875353509177,38.08653303198323],[-119.34874742020088,38.086525085937815],[-119.3487416570071,38.086516977348445],[-119.34873625241882,38.08650871593517],[-119.3487312129146,38.086500311601206],[-119.34872654453534,38.08649177442107],[-119.34872225287701,38.086483114628614],[-119.34871834308407,38.08647434260454],[-119.34871481984314,38.086465468864176],[-119.34871168737749,38.08645650404473],[-119.348708949442,38.08644745889262],[-119.34870660931851,38.0864383442505],[-119.3487046698121,38.0864291710444],[-119.3487031332475,38.086419950270496],[-119.34870200146655,38.086410692981964],[-119.34870127582577,38.0864014102758],[-119.34870095719486,38.08639211327941],[-119.3487010459556,38.08638281313738],[-119.34870154200144,38.08637352099802],[-119.34870244473761,38.086364248000095],[-119.34870375308184,38.086355005259335],[-119.34870546546557,38.086345803855274],[-119.34870757983607,38.086336654817856],[-119.34871009365855,38.08632756911427],[-119.3487125975361,38.08631851147864],[-119.34871469900848,38.08630939016105],[-119.34871639550364,38.08630021632585],[-119.3487176849453,38.08629100120163],[-119.3487185657553,38.086281756067564],[-119.34871903685578,38.08627249223949],[-119.34871909767021,38.08626322105616],[-119.34871874812433,38.08625395386536],[-119.34871798864613,38.0862447020099],[-119.34871682016535,38.08623547681388],[-119.34871524411234,38.08622628956874],[-119.3487132624163,38.08621715151953],[-119.34871087750294,38.08620807385092],[-119.34870809229149,38.08619906767384],[-119.34870491019113,38.08619014401166],[-119.34870133509682,38.08618131378668],[-119.3486973713845,38.08617258780696],[-119.34869302390587,38.08616397675283],[-119.34868829798218,38.08615549116403],[-119.34868319939804,38.086147141426714],[-119.34867773439409,38.08613893776077],[-119.34867190965947,38.08613089020723],[-119.34866573232362,38.086123008616134],[-119.34865920994757,38.08611530263431],[-119.34865235051463,38.08610778169369],[-119.34864516242061,38.08610045499969],[-119.34863765446372,38.08609333151998],[-119.34862983583349,38.08608641997355],[-119.34862171609987,38.08607972881986],[-119.34861330520121,38.08607326624876],[-119.34860461343229,38.08606704017021],[-119.34857676550892,38.08604710749242],[-119.34854979680186,38.086026433387765],[-119.34852373889277,38.086005042067185],[-119.34849862229669,38.08598295858158],[-119.34847447642615,38.08596020879238],[-119.3484513295569,38.08593681934123],[-119.34842920879467,38.08591281761889],[-119.34840814004343,38.08588823173314],[-119.34838814797514,38.085863090475776],[-119.34836925600084,38.08583742328893],[-119.34836615671527,38.085833212451135],[-119.34836287701653,38.085829087863],[-119.34835942074271,38.085825054351346],[-119.34835579193854,38.085821116636424],[-119.34835199485069,38.08581727932631],[-119.34834803392269,38.08581354691163],[-119.34834391378986,38.08580992376027],[-119.34833963927382,38.085806414112206],[-119.34833521537685,38.0858030220746],[-119.34833064727603,38.085799751616996],[-119.3483259403172,38.08579660656665],[-119.3483211000087,38.08579359060407],[-119.34831613201492,38.085790707258674],[-119.34831104214967,38.08578795990467],[-119.34830583636936,38.0857853517572],[-119.34830052076609,38.08578288586841],[-119.34829510156044,38.08578056512404],[-119.34828958509424,38.08577839223989],[-119.34828397782316,38.085776369758825],[-119.34827828630904,38.08577450004764],[-119.34827251721248,38.08577278529432],[-119.34826667728468,38.085771227505624],[-119.34826077335988,38.0857698285045],[-119.348235748053,38.08576388918623],[-119.34821100163857,38.0857572599511],[-119.34818656455369,38.08574994895286],[-119.34816246685496,38.085741965183736],[-119.34813873818152,38.085733318463454],[-119.3481154077186,38.08572401942714],[-119.34809250416157,38.08571407951225],[-119.34807005568075,38.08570351094448],[-119.34804808988667,38.08569232672275],[-119.34802663379617,38.08568054060318],[-119.34800571379904,38.08566816708223],[-119.34798535562581,38.085655221378765],[-119.34796558431583,38.085641719415506],[-119.34794642418666,38.08562767779926],[-119.34792789880402,38.08561311380056],[-119.34791003095299,38.08559804533252],[-119.34789284260977,38.08558249092863],[-119.34787635491479,38.085566469720135],[-119.34781560083746,38.08550728686647],[-119.34775243647341,38.08544970194802],[-119.34768692906167,38.0853937762594],[-119.34761914833466,38.085339569328994],[-119.34754916644415,38.08528713885557],[-119.34747705788442,38.08523654064689],[-119.34746128009752,38.08522618721433],[-119.34744507094368,38.08521625877906],[-119.34742844873986,38.08520676656048],[-119.3474114322698,38.08519772128505],[-119.34739404076271,38.08518913317422],[-119.34737629387159,38.085181011932775],[-119.34735821165107,38.08517336673794],[-119.34733981453462,38.08516620622901],[-119.34732112331156,38.08515953849755],[-119.34730215910353,38.08515337107829],[-119.34728294334069,38.085147710940554],[-119.34726349773734,38.08514256448043],[-119.34724384426758,38.08513793751359],[-119.34722400514039,38.0851338352686],[-119.34720400277446,38.0851302623811],[-119.347183859773,38.085127222888566],[-119.34718086579947,38.085126854324095],[-119.34717785746695,38.08512656797067],[-119.34717483838786,38.085126364172076],[-119.34717181218761,38.085126243173114],[-119.34716878250015,38.08512620511906],[-119.34716575296356,38.0851262500556],[-119.34716272721582,38.08512637792877],[-119.34715970889032,38.08512658858505],[-119.34715670161154,38.08512688177141],[-119.34715370899065,38.08512725713587],[-119.34715073462132,38.08512771422762],[-119.34714778207521,38.0851282524978],[-119.34714485489782,38.08512887130002],[-119.34714195660416,38.08512956989124],[-119.3471390906746,38.08513034743257],[-119.34713626055061,38.085131202990304],[-119.34713346963068,38.08513213553705],[-119.3471307212662,38.085133143953016],[-119.34712801875746,38.085134227027254],[-119.34712536534974,38.0851353834592],[-119.3471227642293,38.08513661186016],[-119.34712021851965,38.085137910755044],[-119.34711773127772,38.08513927858413],[-119.34711530549026,38.08514071370486],[-119.34711294407025,38.08514221439393],[-119.34711064985328,38.08514377884925],[-119.34710842559437,38.08514540519223],[-119.34710627396444,38.085147091469864],[-119.34710419754725,38.08514883565726],[-119.34710219883621,38.085150635659936],[-119.34710028023142,38.08515248931641],[-119.34709844403679,38.08515439440076],[-119.34709669245728,38.085156348625326],[-119.34709502759624,38.0851583496434],[-119.3470934514529,38.08516039505213],[-119.34709196591993,38.085162482395326],[-119.34709057278121,38.08516460916647],[-119.34708927370966,38.08516677281163],[-119.34708807026522,38.08516897073272],[-119.34708696389309,38.085171200290354],[-119.34708595592177,38.08517345880726],[-119.34708504756172,38.08517574357131],[-119.3470842399037,38.085178051838945],[-119.3470835339176,38.085180380838324],[-119.3470829304512,38.08518272777269],[-119.34708243022912,38.08518508982381],[-119.34708203385212,38.08518746415525],[-119.34708174179613,38.08518984791588],[-119.34708155441189,38.085192238243174],[-119.34708147192445,38.08519463226679],[-119.34708149443284,38.085197027111924],[-119.34708162191005,38.08519941990277],[-119.34708180608354,38.08520288044436],[-119.34708183807017,38.085206343954],[-119.34708171783136,38.08520980625185],[-119.34708144551219,38.08521326315965],[-119.34708102144128,38.08521671050559],[-119.34708044613036,38.08522014412943],[-119.34707972027371,38.085223559887446],[-119.34707884474726,38.08522695365753],[-119.34707782060757,38.08523032134404],[-119.34707664909057,38.085233658882906],[-119.34707533161001,38.08523696224632],[-119.34707386975585,38.085240227447805],[-119.34707226529218,38.08524345054692],[-119.34707052015528,38.085246627654044],[-119.34706863645117,38.08524975493499],[-119.34706661645308,38.085252828615786],[-119.34706446259875,38.08525584498708],[-119.34706217748742,38.085258800408745],[-119.34705976387673,38.08526169131415],[-119.34705722467945,38.08526451421455],[-119.34705456295987,38.08526726570325],[-119.34705178193016,38.08526994245975],[-119.34704888494643,38.085272541253765],[-119.34704587550478,38.08527505894901],[-119.34704275723696,38.08527749250718],[-119.34703953390616,38.085279838991404],[-119.34703620940226,38.08528209556994],[-119.34703278773726,38.08528425951958],[-119.34702927304046,38.08528632822881],[-119.3470256695534,38.08528829920114],[-119.34702198162472,38.085290170058],[-119.3470182137051,38.085291938541594],[-119.34701437034163,38.08529360251775],[-119.3470104561725,38.08529515997837],[-119.3470064759213,38.08529660904388],[-119.34700243439148,38.08529794796556],[-119.34699833646035,38.085299175127574],[-119.34699418707326,38.085300289049],[-119.34698999123776,38.08530128838556],[-119.34698575401737,38.08530217193122],[-119.34698148052561,38.08530293861973],[-119.34697717591972,38.08530358752587],[-119.34697284539456,38.08530411786649],[-119.34696849417617,38.08530452900162],[-119.34696412751565,38.08530482043506],[-119.3469597506827,38.08530499181513],[-119.3469553689593,38.08530504293499],[-119.34695098763335,38.08530497373297],[-119.34694661199225,38.08530478429257],[-119.34694224731652,38.08530447484242],[-119.34693789887349,38.08530404575595],[-119.34693357191087,38.08530349755099],[-119.34692927165047,38.085302830889134],[-119.34692500328184,38.08530204657487],[-119.34692077195608,38.08530114555474],[-119.3469165827796,38.08530012891609],[-119.34691244080784,38.08529899788583],[-119.34690835103942,38.08529775382886],[-119.34690431840986,38.08529639824653],[-119.34690034778573,38.085294932774744],[-119.34689644395884,38.08529335918207],[-119.34689261164029,38.085291679367494],[-119.34688885545495,38.08528989535824],[-119.34688517993578,38.085288009307234],[-119.34688158951845,38.08528602349062],[-119.34687808853583,38.08528394030485],[-119.34684078043051,38.08526014097121],[-119.34680447782584,38.085235389297864],[-119.34676921961778,38.08520971180534],[-119.34673504358321,38.08518313600617],[-119.34670198633926,38.08515569037533],[-119.34667008330429,38.08512740431975],[-119.34663936865982,38.085098308146875],[-119.34660987531394,38.08506843303201],[-119.3465816348661,38.08503781098513],[-119.34655467757307,38.085006474816424],[-119.34652903231685,38.0849744581012],[-119.34651779136729,38.08496043989147],[-119.3465059586182,38.08494672931836],[-119.34649354753432,38.084933341983024],[-119.3464805722384,38.084920293118806],[-119.34646704749521,38.084907597573874],[-119.34645298869471,38.0848952697944],[-119.34643841183453,38.08488332380801],[-119.34642333350173,38.08487177320794],[-119.34640777085401,38.08486063113745],[-119.34639174160017,38.084849910275],[-119.34637526397985,38.0848396228197],[-119.34635835674293,38.08482978047754],[-119.34634103912809,38.08482039444799],[-119.34632333084093,38.08481147541127],[-119.34630525203163,38.08480303351624],[-119.34628682327187,38.08479507836881],[-119.34626806553162,38.08478761902101],[-119.34624900015507,38.08478066396072],[-119.34622964883651,38.08477422110201],[-119.3462100335956,38.0847682977761],[-119.3461901767522,38.08476290072304],[-119.34617010090116,38.08475803608406],[-119.34615559727946,38.084754942952145],[-119.34614096858361,38.08475224272968],[-119.34612623184674,38.08474993856069],[-119.34611140422776,38.08474803312809],[-119.3460965029914,38.084746528650484],[-119.34608154548813,38.08474542687961],[-119.34606654913388,38.084744729098375],[-119.34605153138989,38.084744436119216],[-119.34603650974223,38.084744548283254],[-119.34602150168156,38.08474506545993],[-119.34600652468269,38.084745987047015],[-119.34599159618432,38.08474731197152],[-119.3459767335686,38.08474903869068],[-119.34596195414103,38.08475116519401],[-119.34594727511023,38.084753689005446],[-119.34593271356795,38.0847566071864],[-119.34591828646913,38.08475991633902],[-119.34590401061216,38.084763612610246],[-119.34588990261935,38.0847676916963],[-119.34587597891756,38.08477214884763],[-119.3458622557191,38.08477697887445],[-119.34584874900281,38.08478217615291],[-119.34583547449546,38.08478773463144],[-119.34582244765348,38.08479364783797],[-119.34580968364493,38.08479990888734],[-119.34579719733185,38.084806510489415],[-119.34578500325296,38.08481344495753],[-119.34577311560666,38.084820704217414],[-119.34575810297545,38.08482986659446],[-119.34574269753377,38.08483861215564],[-119.34572691779776,38.08484693038944],[-119.34571078273343,38.08485481129787],[-119.34569431173395,38.084862245408615],[-119.34567752459623,38.084869223786384],[-119.34566044149719,38.08487573804367],[-119.3456430829695,38.08488178035077],[-119.3456254698769,38.08488734344518],[-119.34560762338906,38.0848924206405],[-119.34558956495627,38.084897005834264],[-119.34557131628351,38.084901093515356],[-119.34555289930448,38.084904678770634],[-119.34553433615513,38.08490775729092],[-119.34551564914715,38.084910325375986],[-119.34549686074108,38.0849123799392],[-119.34547799351934,38.08491391851107],[-119.34545907015914,38.08491493924237],[-119.34544011340509,38.08491544090622],[-119.34542114604199,38.08491542289967],[-119.34540219086735,38.08491488524436],[-119.3453832706641,38.08491382858652],[-119.34536440817304,38.08491225419615],[-119.34534562606572,38.08491016396562],[-119.34532694691693,38.08490756040721],[-119.3453083931778,38.08490444665023],[-119.3452899871487,38.08490082643722],[-119.34527175095248,38.084896704119444],[-119.34525370650775,38.08489208465165],[-119.34523587550271,38.08488697358612],[-119.34521827936904,38.08488137706602],[-119.34520093925605,38.08487530181799],[-119.34518387600534,38.084868755144086],[-119.34516711012567,38.084861744912935],[-119.34515066176846,38.08485427955039],[-119.3451345507034,38.084846368029304],[-119.34511879629478,38.08483801985877],[-119.34510341747821,38.08482924507272],[-119.3450884327378,38.08482005421783],[-119.34507386008403,38.08481045834089],[-119.34505971703207,38.08480046897544],[-119.34504602058067,38.08479009812801],[-119.34503278719181,38.08477935826363],[-119.34502003277086,38.0847682622908],[-119.34500777264752,38.08475682354613],[-119.34499602155736,38.084745055778136],[-119.34498479362401,38.084732973130805],[-119.34497410234242,38.08472059012663],[-119.34496396056241,38.084707921648985],[-119.34495438047337,38.084694982924525],[-119.34494537358957,38.08468178950453],[-119.34493695073627,38.0846683572465],[-119.34492912203677,38.08465470229501],[-119.34492189690022,38.08464084106225],[-119.34491528401033,38.08462679020833],[-119.34490929131495,38.084612566621246],[-119.34490392601644,38.08459818739663],[-119.34489919456307,38.08458366981716],[-119.34489510264133,38.0845690313318],[-119.34489165516901,38.08455428953481],[-119.34488885628923,38.084539462144605],[-119.3448867093657,38.08452456698249],[-119.3448852169784,38.08450962195117],[-119.34488438092063,38.08449464501336],[-119.34488420219695,38.08447965417003],[-119.34488562558822,38.08443323975013],[-119.34488896482684,38.08438688677578],[-119.3448942163512,38.0843406446365],[-119.3449013745622,38.08429456260361],[-119.34491043182913,38.08424868977776],[-119.34492137849799,38.08420307503659],[-119.34493420290158,38.08415776698268],[-119.34494889137206,38.084112813891714],[-119.34496542825555,38.084068263661116],[-119.34498379592871,38.08402416375894],[-119.34499849326158,38.083988753449525],[-119.34501162735167,38.08395296141281],[-119.34502318238584,38.083916830747555],[-119.34503314445259,38.083880404960205],[-119.34504150155848,38.08384372791253],[-119.34504824364285,38.083806843768805],[-119.34505336258968,38.08376979694255],[-119.34505685223753,38.08373263204316],[-119.34505870838689,38.08369539382216],[-119.34505892880513,38.083658127119236],[-119.34505751322929,38.083620876808325],[-119.34505446336645,38.08358368774362],[-119.34504978289145,38.083546604705404],[-119.34504347744257,38.08350967234628],[-119.34503555461484,38.08347293513735],[-119.34502602395068,38.08343643731465],[-119.34501489692849,38.083400222825894],[-119.34500218694888,38.08336433527761],[-119.34498790931838,38.083328817882524],[-119.34497208123116,38.08329371340764],[-119.34495989931527,38.08326668261147],[-119.34494892180113,38.08323933138144],[-119.34493916213854,38.08321169323182],[-119.34493063228489,38.08318380202841],[-119.34492334269065,38.08315569194701],[-119.34491730228652,38.08312739743168],[-119.34491251847248,38.083098953152344],[-119.34490899710887,38.083070393962416],[-119.34490674250898,38.0830417548561],[-119.34490575743395,38.08301307092544],[-119.34490604308934,38.08298437731739],[-119.34490759912364,38.08295570919073],[-119.34491042362875,38.08292710167295],[-119.34491451314231,38.0828985898173],[-119.34491986265192,38.08287020855963],[-119.34492646560129,38.08284199267592],[-119.34493431389835,38.082813976739295],[-119.34494339792514,38.082786195077986],[-119.34495370654949,38.08275868173308],[-119.34496522713887,38.082731470416796],[-119.34497794557569,38.08270459447132],[-119.34499184627474,38.08267808682784],[-119.34500691220217,38.082651979966215],[-119.34502312489651,38.08262630587521],[-119.34504046449116,38.082601096013285],[-119.3450589097388,38.08257638127002],[-119.34507843803742,38.08255219192835],[-119.34509902545807,38.08252855762737],[-119.34512064677406,38.08250550732606],[-119.345143275492,38.082483069267795],[-119.34516688388422,38.08246127094578],[-119.34519144302269,38.08244013906931],[-119.34521692281456,38.082419699531066],[-119.34524283325659,38.082398923590375],[-119.34526781972346,38.082377452216434],[-119.34529185235806,38.082355311066785],[-119.34531490244308,38.082332526599295],[-119.34533694243547,38.082309126040535],[-119.34535794599924,38.082285137353246],[-119.34537788803702,38.082260589203],[-119.3453967447199,38.082235510923795],[-119.34541449351607,38.082209932483124],[-119.34543111321763,38.08218388444613],[-119.34544658396598,38.08215739793904],[-119.34546088727554,38.08213050461202],[-119.3454740060558,38.082103236601306],[-119.34548592463176,38.082075626490884],[-119.34549662876266,38.08204770727344],[-119.34550610565898,38.08201951231103],[-119.34551434399775,38.08199107529515],[-119.34552133393603,38.08196243020648],[-119.34552706712269,38.08193361127438],[-119.34553153670834,38.08190465293582],[-119.34553473735359,38.081875589794315],[-119.34553666523534,38.08184645657864],[-119.34553731805141,38.0818172881012],[-119.34553669502321,38.08178811921651],[-119.34553479689679,38.081758984779576],[-119.3455316259417,38.08172991960413],[-119.34552718594858,38.08170095842115],[-119.34552148222438,38.0816721358373],[-119.34551452158617,38.08164348629358],[-119.34550631235284,38.08161504402416],[-119.34549686433526,38.08158684301556],[-119.34548618882457,38.08155891696589],[-119.34547429857857,38.08153129924472],[-119.34546120780655,38.081504022853146],[-119.3454469321523,38.08147712038438],[-119.34543148867539,38.08145062398471],[-119.3454148958308,38.08142456531529],[-119.34539717344678,38.081398975514084],[-119.34537834270138,38.08137388515884],[-119.3453584260968,38.08134932423043],[-119.34533744743281,38.0813253220771],[-119.34531543177809,38.08130190737938],[-119.34529240544046,38.081279108115766],[-119.34526839593524,38.08125695152946],[-119.34524343195253,38.08123546409552],[-119.34521754332286,38.081214671489576],[-119.34519076098154,38.081194598556884],[-119.3451631169317,38.08117526928276],[-119.34513464420608,38.08115670676387],[-119.3451053768275,38.0811389331807],[-119.3450753497683,38.081121969771026],[-119.345052936137,38.08110930761172],[-119.3450310893915,38.081096040883864],[-119.34500983562062,38.08108218543049],[-119.3449892002049,38.08106775779755],[-119.34496920778656,38.08105277521429],[-119.34494988223982,38.081037255572696],[-119.34493124664252,38.08102121740608],[-119.34491332324849,38.08100467986692],[-119.34489613346109,38.080987662704075],[-119.3448796978075,38.08097018623909],[-119.34486403591434,38.08095227134205],[-119.34484916648414,38.08093393940655],[-119.3448351072731,38.08091521232419],[-119.34482187506978,38.08089611245844],[-119.34480948567517,38.08087666261792],[-119.34479795388366,38.080856886029174],[-119.34478729346556,38.080836806308916],[-119.34477751715058,38.08081644743578],[-119.34476863661256,38.080795833721865],[-119.34476066245567,38.080774989783436],[-119.34475360420164,38.08075394051177],[-119.34474747027846,38.08073271104325],[-119.34474226801028,38.08071132672947],[-119.34473800360863,38.08068981310689],[-119.34473468216514,38.08066819586639],[-119.3447323076453,38.080646500822546],[-119.3447308828839,38.080624753882795],[-119.34473040958143,38.08060298101658],[-119.34473088830231,38.08058120822426],[-119.34473231847402,38.08055946150606],[-119.34473469838785,38.08053776683108],[-119.34473802520097,38.08051615010622],[-119.34476194518219,38.08039489854222],[-119.3447908692741,38.080274330201384],[-119.34482476650619,38.08015457408087],[-119.3448636005877,38.08003575830814],[-119.34490732994641,38.07991801000403],[-119.34495590777337,38.0798014551466],[-119.34496255894751,38.07978544110943],[-119.344968501726,38.07976925396988],[-119.34497372892369,38.079752913300325],[-119.3449782342207,38.079736438858774],[-119.34498201217001,38.07971985056496],[-119.34498505820412,38.07970316847626],[-119.34498736864045,38.079686412763486],[-119.3449889406859,38.0796696036864],[-119.34498977244016,38.07965276156931],[-119.34498986289803,38.079635906776446],[-119.3449892119507,38.07961905968737],[-119.3449878203857,38.0796022406723],[-119.34498568988613,38.079585470067485],[-119.34498282302849,38.079568768150665],[-119.3449792232797,38.07955215511647],[-119.34497489499275,38.079535651052055],[-119.34496984340159,38.079519275912844],[-119.34496407461464,38.07950304949833],[-119.3449575956075,38.07948699142813],[-119.34495041421454,38.07947112111841],[-119.34494253911934,38.079455457758186],[-119.34493397984424,38.07944002028628],[-119.34492474673883,38.07942482736838],[-119.3449148509674,38.079409897374475],[-119.34490430449544,38.07939524835664],[-119.34489312007524,38.07938089802717],[-119.34366121363051,38.07782654955939],[-119.3424683891193,38.07625328126003],[-119.34237384696968,38.07613032657692],[-119.34227434747795,38.07600984103568],[-119.34216999377207,38.07589194948689],[-119.34206089400858,38.07577677409256],[-119.3419471612604,38.075664434199666],[-119.34182891339954,38.07555504621639],[-119.34170627297509,38.075448723491604],[-119.34157936708603,38.0753455761975],[-119.34021394995622,38.07426385933099],[-119.339411809975,38.07364596075507],[-119.33858310070654,38.07305038146111],[-119.33850559676351,38.07299467838787],[-119.33843058111307,38.07293688574711],[-119.3383581438511,38.07287707295382],[-119.33828837197592,38.07281531184929],[-119.33822134928386,38.07275167661477],[-119.33815715626851,38.07268624368232],[-119.33809587002415,38.07261909164299],[-119.33803756415321,38.07255030115246],[-119.33798230867771,38.07247995483407],[-119.33793016995544,38.072408137179636],[-119.33788121060007,38.07233493444795],[-119.33783548940605,38.07226043456109],[-119.3377930612781,38.072184726998906],[-119.3377539771652,38.07210790269144],[-119.33771828399951,38.072030053909785],[-119.33768602464,38.07195127415517],[-119.33765723782108,38.071871658046696],[-119.337631958106,38.07179130120769],[-119.33761021584557,38.0717103001508],[-119.3375920371416,38.071628752162134],[-119.33757744381572,38.07154675518437],[-119.3375664533831,38.071464407699104],[-119.33755907903166,38.07138180860858],[-119.3375553296061,38.07129905711692],[-119.33755520959737,38.07121625261095],[-119.33757767822155,38.07067286326743],[-119.33762280393445,38.0701303552541],[-119.33769053714275,38.06958931880696],[-119.33778080366093,38.06905034254824],[-119.33778870321846,38.068931199310306],[-119.33779139450557,38.06881191148202],[-119.33778887433806,38.06869262131388],[-119.3377811457464,38.068573471058414],[-119.337768217972,38.068454602800735],[-119.33775010645596,38.068336158288936],[-119.33772683282066,38.06821827876514],[-119.33769842484378,38.06810110479714],[-119.33766491642508,38.06798477611059],[-119.3376263475459,38.0678694314227],[-119.33758276422135,38.06775520827657],[-119.33753421844528,38.06764224287727],[-119.33748076812827,38.067530669929546],[-119.33742247702847,38.067420622477066],[-119.33735941467529,38.067312231743884],[-119.33729165628672,38.06720562697801],[-119.33721928267933,38.067100935297205],[-119.33714238017185,38.06699828153754],[-119.33706104048227,38.06689778810455],[-119.33697536061824,38.066799574827236],[-119.33688544276154,38.06670375881533],[-119.33679139414606,38.066610454319544],[-119.33669332692989,38.06651977259552],[-119.3365913580616,38.0664318217711],[-119.33648560914072,38.06634670671742],[-119.33637620627276,38.06626452892404],[-119.33626327991875,38.06618538637773],[-119.33614696473977,38.06610937344591],[-119.33602739943635,38.06603658076404],[-119.33590472658301,38.065967095127526],[-119.3357790924584,38.06590099938843],[-119.33565064687086,38.06583837235654],[-119.33551954297977,38.065779288705556],[-119.33538593711296,38.06572381888402],[-119.33524998858046,38.06567202903134],[-119.33511185948448,38.06562398089907],[-119.33497171452623,38.065579731777106],[-119.33482972080961,38.06553933442561],[-119.33468604764192,38.06550283701198],[-119.3345408663322,38.065470283053486],[-119.33439434998697,38.06544171136544],[-119.33424667330391,38.065417156014895],[-119.33409801236364,38.06539664628006],[-119.33394854441984,38.06538020661535],[-119.33379844768803,38.06536785662234],[-119.3336479011331,38.06535961102632],[-119.33349708425612,38.06535547965874],[-119.33334617688027,38.06535546744559],[-119.3331953589366,38.06535957440144],[-119.33304481024965,38.06536779562942],[-119.33289471032295,38.0653801213271],[-119.33274523812523,38.06539653679818],[-119.33259657187703,38.06541702246992],[-119.33244888883844,38.065441553916585],[-119.3323023650976,38.06547010188849],[-119.33215717536103,38.06550263234685],[-119.33201349274528,38.0655391065044],[-119.33187148857063,38.065579480871556],[-119.33174647264033,38.06561090465698],[-119.33162016716649,38.06563892060461],[-119.33149272072868,38.06566349575764],[-119.33136428324914,38.065684601206826],[-119.33123500581642,38.06570221212452],[-119.33110504050752,38.065716307793906],[-119.33097454020883,38.06572687163334],[-119.33084365843642,38.06573389121589],[-119.33071254915525,38.065737358284],[-119.33058136659797,38.06573726875911],[-119.33045026508351,38.065733622746556],[-119.33031939883543,38.065726424535335],[-119.33018892180033,38.06571568259322],[-119.33005898746694,38.06570140955662],[-119.32992974868525,38.06568362221579],[-119.32980135748672,38.065662341495134],[-119.32967396490542,38.06563759242847],[-119.32954772080028,38.06560940412961],[-119.32942277367862,38.065577809758125],[-119.32929927052166,38.06554284648035],[-119.32917735661125,38.06550455542549],[-119.32905717535918,38.06546298163748],[-119.32893886813831,38.065418174021744],[-119.32882257411617,38.06537018528774],[-119.32870843009138,38.06531907188697],[-119.32859657033251,38.065264893946505],[-119.32848712642021,38.06520771519824],[-119.32838022709244,38.065147602903906],[-119.32827599809285,38.06508462777589],[-119.32817456202304,38.065018863894096],[-119.32807603819816,38.06495038861873],[-119.32798054250671,38.064879282499305],[-119.32788818727404,38.0648056291798],[-119.32779908113044,38.06472951530032],[-119.32771332888312,38.064651030395076],[-119.3276310313932,38.06457026678713],[-119.32707347583803,38.06362255418958],[-119.32655587498988,38.06266078155958],[-119.32607879363243,38.061686001246414],[-119.32564275215044,38.060699279791095],[-119.3252482259665,38.05970169675777],[-119.32489564502748,38.05869434355115],[-119.3245853933409,38.057678322221065],[-119.32431780856211,38.056654744255674],[-119.3240931816321,38.055624729364446],[-119.32396538566758,38.05503795737834],[-119.32381344306424,38.054454795254145],[-119.32363751622225,38.053875864109756],[-119.32343779307442,38.05330178054243],[-119.3232144868836,38.052733155972426],[-119.32296783601343,38.05217059599228],[-119.32269810367235,38.051614699722144],[-119.32240557763114,38.05106605917225],[-119.32209056991461,38.050525258612936],[-119.32195012006277,38.05030382661722],[-119.32180026409875,38.05008628449849],[-119.32164117415695,38.049872882021226],[-119.3214730329687,38.04966386419499],[-119.32129603365222,38.04945947099337],[-119.3211103794908,38.049259937078354],[-119.32091628369903,38.04906549153127],[-119.32071396917789,38.048876357589855],[-119.32050366825875,38.048692752392],[-119.32028562243634,38.048514886726736],[-119.32006008209163,38.04834296479233],[-119.31982730620405,38.04817718396194],[-119.31958756205432,38.048017734557284],[-119.31934112491756,38.047864799630176],[-119.31908827774717,38.04771855475252],[-119.31882931085018,38.04757916781504],[-119.31856452155388,38.04744679883445],[-119.31829421386483,38.04732159977008],[-119.3180186981197,38.04720371434943],[-119.31773829062934,38.04709327790338],[-119.31745331331584,38.046990417210864],[-119.31716409334304,38.04689525035356],[-119.31687096274128,38.04680788658029],[-119.31623920485683,38.04662002957754],[-119.31561546909325,38.046416099518694],[-119.31500040921597,38.046196310172036],[-119.31439466987928,38.04596089192828],[-119.31379888594945,38.045710091558696],[-119.3132136818387,38.045444171955886],[-119.31309482789497,38.04538586978165],[-119.31297862392577,38.04532431751129],[-119.31286521197923,38.04525959038999],[-119.31275473068935,38.04519176754385],[-119.31264731510637,38.04512093188313],[-119.31254309653173,38.04504717000092],[-119.3124422023576,38.04497057206713],[-119.31234475591103,38.044891231718424],[-119.3122508763033,38.04480924594352],[-119.3121606782843,38.04472471496473],[-119.3120742721023,38.04463774211533],[-119.31199176336915,38.0445484337133],[-119.31191325293123,38.044456898931266],[-119.31183883674633,38.044363249663014],[-119.31176860576616,38.04426760038673],[-119.31170264582552,38.04417006802494],[-119.31164103753711,38.04407077180168],[-119.31158385619342,38.043969833096604],[-119.31153117167433,38.0438673752967],[-119.31148304836223,38.04376352364532],[-119.31143954506302,38.04365840508921],[-119.31140071493449,38.04355214812314],[-119.31136660542147,38.04344488263294],[-119.31133725819777,38.0433367397367],[-119.31131270911546,38.04322785162445],[-119.31129298816111,38.043118351396515],[-119.3112781194193,38.043008372900985],[-119.31126812104307,38.04289805056983],[-119.3112630052321,38.04278751925483],[-119.31126277821778,38.04267691406254],[-119.31126744025565,38.04256637018931],[-119.31127698562531,38.04245602275588],[-119.31129140263747,38.042346006642305],[-119.31131067364828,38.04223645632304],[-119.31133477508106,38.042127505702695],[-119.3113636774553,38.04201928795217],[-119.31139734542265,38.04191193534608],[-119.31143573781027,38.04180557910103],[-119.31147880767138,38.04170034921509],[-119.31152650234247,38.041596374309236],[-119.31157876350802,38.04149378146985],[-119.31163552727178,38.04139269609358],[-119.31169672423486,38.04129324173399],[-119.31176227958073,38.041195539950664],[-119.31223854847737,38.04048520605795],[-119.31268257919051,38.03976192958366],[-119.31309381116498,38.039026625154975],[-119.31347172536917,38.038280222582216],[-119.3138158449472,38.037523665681775],[-119.31385680508748,38.037422665875944],[-119.31389335813225,38.03732061371775],[-119.31392546102879,38.03721762945655],[-119.31395307596866,38.037113834439594],[-119.31397617043201,38.03700935096882],[-119.31399471722584,38.03690430215697],[-119.314008694516,38.036798811782404],[-119.31401808585275,38.03669300414319],[-119.31402288019012,38.03658700391077],[-119.31402307189879,38.03648093598295],[-119.31401866077267,38.03637492533677],[-119.31400965202901,38.03626909688127],[-119.31399605630213,38.03616357531032],[-119.31397788963095,38.036058484955596],[-119.31395517343982,38.03595394964025],[-119.31392793451322,38.03585009253292],[-119.31389620496425,38.035747036002604],[-119.31386002219654,38.035644901474576],[-119.31381942886021,38.03554380928727],[-119.31377447280143,38.03544387855049],[-119.31372520700613,38.03534522700512],[-119.31367168953726,38.035247970884456],[-119.31361398346655,38.03515222477718],[-119.31355215679999,38.03505810149241],[-119.31348628239766,38.03496571192686],[-119.31341643788788,38.034875164934185],[-119.31334270557562,38.034786567196605],[-119.31326517234555,38.034700023099504],[-119.31318392955954,38.03461563460823],[-119.3130990729491,38.03453350114814],[-119.31301070250247,38.03445371948736],[-119.31291892234681,38.034376383622906],[-119.31282384062547,38.03430158466997],[-119.31272556937066,38.034229410754435],[-119.31262422437129,38.03415994690933],[-119.3125199250367,38.03409327497442],[-119.31241279425588,38.03402947350001],[-119.31230295825273,38.033968617654295],[-119.31219054643735,38.03391077913492],[-119.31207569125361,38.03385602608443],[-119.31195852802303,38.033804423010125],[-119.31183919478559,38.033756030708034],[-119.31171783213689,38.03371090619128],[-119.31147496868152,38.03362056353434],[-119.31123621269592,38.03352361370065],[-119.3110018514058,38.03342017332805],[-119.31077216674629,38.03331036686254],[-119.31054743502246,38.0331943264083],[-119.31032792657703,38.03307219156891],[-119.31011390546489,38.032944109279086],[-119.30990562913536,38.0328102336279],[-119.30970334812255,38.032670725673235],[-119.30950730574381,38.032525753248024],[-119.30931773780699,38.03237549075809],[-119.30913487232694,38.03222011897235],[-119.30895892925109,38.032059824805124],[-119.308790120195,38.03189480109124],[-119.30862864818789,38.03172524635394],[-119.30847470742842,38.03155136456586],[-119.30832848305138,38.03137336490366],[-119.30819015090498,38.03119146149621],[-119.30805987733955,38.031005873166926],[-119.30793781900763,38.0308168231704],[-119.30782412267581,38.0306245389238],[-119.30771892504829,38.03042925173316],[-119.30762235260285,38.03023119651505],[-119.30753452143887,38.03003061151394],[-119.307455537138,38.02982773801547],[-119.30738549463754,38.02962282005625],[-119.30724742498863,38.0291557387449],[-119.30712953175605,38.02868521129908],[-119.30703195113468,38.02821178282958],[-119.30695479578004,38.02773600179776],[-119.30689815467964,38.02725841938],[-119.30686209305159,38.026779588829044],[-119.3068466522709,38.02630006483298],[-119.30685184982347,38.02582040287265],[-119.30687767928762,38.02534115857806],[-119.30692411034335,38.024862887084915],[-119.30699108880945,38.02438614239141],[-119.30707853670795,38.023911476716826],[-119.3071836041195,38.023451088776],[-119.30730824606634,38.02299376692345],[-119.30745232028268,38.02254003181989],[-119.30761566238783,38.0220904000331],[-119.30779808607495,38.02164538345016],[-119.30799938332453,38.02120548869496],[-119.30821932464269,38.02077121655165],[-119.3084576593238,38.0203430613949],[-119.30871411573729,38.019921510627526],[-119.30898840163788,38.01950704412586],[-119.30907716132504,38.01937293562675],[-119.30916016671294,38.01923654045789],[-119.30923732383336,38.019098013081106],[-119.3093085453425,38.01895751037201],[-119.30937375061978,38.01881519144231],[-119.309432865859,38.018671217459534],[-119.30948582415172,38.01852575146461],[-119.30953256556302,38.01837895818703],[-119.309573037199,38.01823100385843],[-119.30960719326681,38.018082056024255],[-119.30963499512603,38.01793228335399],[-119.30965641133251,38.017781855450224],[-119.30967141767363,38.0176309426564],[-119.30967999719563,38.017479715864134],[-119.30968214022269,38.01732834631955],[-119.30967784436753,38.01717700542935],[-119.30966711453411,38.017025864566826],[-119.30963872869849,38.01677735007703],[-119.30959956319879,38.0165297542361],[-119.3095496644217,38.016283369609404],[-119.3094890914351,38.01603848732829],[-119.30941791591755,38.01579539674597],[-119.3093362220732,38.01555438509592],[-119.30924410653184,38.015315737152385],[-119.3091416782342,38.01507973489397],[-119.30902905830291,38.01484665717068],[-119.30890637989881,38.014616779374386],[-119.30879539256581,38.01440889377956],[-119.308693423193,38.01419813698655],[-119.30860059012622,38.0139847537597],[-119.30851700109783,38.01376899191151],[-119.308442753102,38.01355110201475],[-119.30837793228247,38.01333133711143],[-119.30832261383267,38.01310995241879],[-119.30827686190906,38.0128872050329],[-119.3082407295568,38.01266335363014],[-119.30821425864858,38.01243865816659],[-119.30819747983645,38.0122133795762],[-119.30819041251662,38.01198777946787],[-119.30819306480726,38.01176211982136],[-119.30820543353958,38.01153666268332],[-119.30822750426192,38.01131166986286],[-119.30825925125691,38.011087402627574],[-119.3083006375717,38.01086412140018],[-119.3083516150614,38.01064208545608],[-119.30841212444517,38.010421552622375],[-119.30848209537574,38.010202778978545],[-119.3085614465212,38.00998601855908],[-119.30865008565996,38.009771523058575],[-119.3087479097882,38.009559541539545],[-119.30930516617178,38.008360939688366],[-119.30981785280434,38.007149950524806],[-119.31028553283758,38.005927611083216],[-119.31070780802611,38.00469496806733],[-119.31108431906124,38.00345307695232],[-119.31116037439308,38.00320410703635],[-119.31124667961454,38.00295723858189],[-119.31134314228102,38.00271273572705],[-119.311449659083,38.00247086007619],[-119.31156611595681,38.00223187042028],[-119.31169238820716,38.00199602246007],[-119.31182834064086,38.00176356853239],[-119.31197382771182,38.001534757340586],[-119.31212869367712,38.00130983368834],[-119.31229277276388,38.00108903821788],[-119.31246588934701,38.00087260715269],[-119.31264785813721,38.00066077204487],[-119.31302485052723,38.000220800673375],[-119.31338213016407,37.9997706481631],[-119.31371925871363,37.99931086724528],[-119.31403582260826,37.99884202246334],[-119.3141242700045,37.99869945925427],[-119.31420661062833,37.998554623666976],[-119.3142827514267,37.9984076794433],[-119.31435260635719,37.99825879270797],[-119.31441609648527,37.9981081317809],[-119.31447315007328,37.997955866986636],[-119.3145237026615,37.99780217046196],[-119.31456769714062,37.99764721596113],[-119.31460508381639,37.99749117865954],[-119.31463582046547,37.997334234955495],[-119.314659872383,37.99717656227097],[-119.31467721242164,37.99701833885089],[-119.31468782102212,37.99685974356163],[-119.31469168623511,37.99670095568886],[-119.31468880373454,37.996542154734776],[-119.31467917682228,37.99638352021527],[-119.31466281642432,37.99622523145695],[-119.31463974107797,37.99606746739442],[-119.31462005755257,37.995932128884576],[-119.31460635566216,37.99579632913349],[-119.3145986520733,37.995660233650156],[-119.31459695614174,37.99552400830312],[-119.31460126990132,37.99538781911825],[-119.31461158806145,37.99525183207652],[-119.31462789801395,37.995116212911604],[-119.31465017984836,37.994981126907895],[-119.31467840637647,37.9948467386992],[-119.31471254316568,37.99471321206795],[-119.31475254858093,37.99458070974572],[-119.3147983738358,37.99444939321487],[-119.31484996305198,37.99431942251182],[-119.31490725332749,37.99419095603193],[-119.31497017481364,37.99406415033661],[-119.31503865080006,37.993939159962466],[-119.31511259780851,37.99381613723305],[-119.31519192569462,37.993695232073215],[-119.31527653775784,37.993576591826546],[-119.31536633085948,37.99346036107564],[-119.31546119554841,37.99334668146615],[-119.31556101619461,37.99323569153409],[-119.31566567113006,37.99312752653711],[-119.3157750327971,37.993022318289654],[-119.31588896790407,37.99292019500241],[-119.31623605818177,37.9925056266902],[-119.31656532952258,37.99208205345501],[-119.31687640954272,37.99164995472424],[-119.31716894646736,37.99120981956669],[-119.31744260952748,37.99076214613855],[-119.31769708933324,37.990307441119064],[-119.3179320982228,37.989846219136574],[-119.3181473705864,37.98937900218575],[-119.3181637575429,37.98934440205506],[-119.31817860895801,37.98930937044522],[-119.31819190674474,37.98927395002526],[-119.3182036347084,37.98923818393772],[-119.31821377856647,37.98920211574614],[-119.31822232596596,37.98916578938192],[-119.31822926649845,37.989129249090894],[-119.31823459171268,37.98909253937936],[-119.3182382951249,37.9890557049599],[-119.3182403722268,37.98901879069699],[-119.31824082049089,37.98898184155221],[-119.31823963937362,37.988944902529624],[-119.318236830316,37.988908018620876],[-119.31823239674192,37.988871234750384],[-119.31822634405383,37.988834595720675],[-119.31821867962628,37.98879814615787],[-119.31820941279682,37.98876193045713],[-119.31819855485466,37.9887259927288],[-119.318186119027,37.98869037674455],[-119.3181721204627,37.98865512588412],[-119.31815657621404,37.98862028308249],[-119.31807298724375,37.98850226797105],[-119.31799427426621,37.98838217113305],[-119.31792051993214,37.98826011870961],[-119.31785180168293,37.9881362388954],[-119.31778819166927,37.988010661803656],[-119.31772975667558,37.9878835193298],[-119.31767655804985,37.98775494501257],[-119.31762865163947,37.98762507389399],[-119.31758608773245,37.98749404237738],[-119.3175683111381,37.98743117039576],[-119.31755323482334,37.98736785804425],[-119.31754087607442,37.98730417794505],[-119.31753124906032,37.98724020314201],[-119.31752436481658,37.98717600701678],[-119.3175202312325,37.98711166320472],[-119.31751885304229,37.987047245510446],[-119.31752023181959,37.986982827823034],[-119.3175243659757,37.98691848403143],[-119.31753125076149,37.98685428793962],[-119.3175408782728,37.98679031318198],[-119.3175532374596,37.98672663313882],[-119.31756831413867,37.98666332085224],[-119.3175860910099,37.98660044894232],[-119.31760654767618,37.986538089523826],[-119.31762966066682,37.98647631412353],[-119.31765540346453,37.98641519359815],[-119.31768374653574,37.986354798053114],[-119.31772736478246,37.98623991585844],[-119.31776607430685,37.986123937145116],[-119.31779983129515,37.986006993254215],[-119.31782859754269,37.98588921661918],[-119.31785234049704,37.98577074061588],[-119.31787103329482,37.985651699411555],[-119.317884654792,37.98553222781288],[-119.31789318958775,37.985412461113285],[-119.3178966280417,37.985292534939724],[-119.31789496628485,37.985172585099065],[-119.31788820622376,37.98505274742438],[-119.31788355312976,37.98498992129323],[-119.31787615565155,37.98492726025274],[-119.317866022659,37.984864839376996],[-119.31785316629929,37.9848027334521],[-119.31783760198236,37.98474101688668],[-119.31781934836235,37.98467976362264],[-119.31779842731534,37.984619047046685],[-119.31777486391299,37.98455893990231],[-119.31774868639249,37.9844995142027],[-119.31771992612283,37.98444084114447],[-119.31768861756703,37.98438299102226],[-119.31765479824085,37.98432603314471],[-119.31761850866795,37.98427003575131],[-119.31757979233113,37.984215065930606],[-119.31753869562036,37.98416118953997],[-119.31749526777713,37.98410847112662],[-119.31744956083543,37.98405697385029],[-119.31740162955938,37.98400675940761],[-119.31737799653362,37.98398800864221],[-119.31735517446002,37.98396863879433],[-119.31733318921069,37.98394867182302],[-119.31731206570895,37.983928130364234],[-119.31729182790114,37.98390703770515],[-119.31727249872945,37.9838854177579],[-119.31725410010597,37.983863295032265],[-119.3172366528877,37.98384069460805],[-119.3172201768531,37.98381764210655],[-119.31720469067956,37.98379416366156],[-119.31719021192221,37.98377028588974],[-119.31717675699412,37.98374603586042],[-119.31716434114759,37.98372144106487],[-119.3171529784569,37.98369652938526],[-119.31713412343885,37.98365507712812],[-119.3171136071321,37.983614122091254],[-119.31709145042744,37.98357370597176],[-119.31706767588557,37.98353386991788],[-119.31704230771427,37.98349465448727],[-119.31701537174372,37.98345609960568],[-119.31698689540013,37.98341824452622],[-119.31698317357471,37.98341364842906],[-119.31697925658443,37.98340915508161],[-119.31697514895309,37.983404769673356],[-119.31697085542477,37.9834004972691],[-119.3169663809582,37.98339634280316],[-119.31696173072106,37.983392311073615],[-119.31695691008404,37.9833884067368],[-119.31695192461466,37.98338463430194],[-119.31694678007075,37.98338099812589],[-119.31694148239391,37.98337750240817],[-119.31693603770253,37.983374151186055],[-119.31693045228488,37.98337094832992],[-119.31692473259164,37.98336789753888],[-119.31691888522867,37.98336500233631],[-119.31691291694925,37.98336226606596],[-119.31690683464623,37.98335969188801],[-119.31690064534428,37.98335728277544],[-119.31689435619151,37.983355041510556],[-119.3168879744514,37.983352970681885],[-119.31688150749443,37.98335107268105],[-119.31687496278938,37.98334934970012],[-119.31686834789491,37.98334780372897],[-119.31686167045069,37.98334643655306],[-119.3168549381686,37.98334524975143],[-119.31684815882399,37.98334424469469],[-119.3168418824327,37.98334331444621],[-119.31683564947039,37.98334221640443],[-119.31682946709562,37.98334095183044],[-119.31682334240865,37.98333952217658],[-119.31681728244365,37.98333792908478],[-119.31681129416036,37.98333617438469],[-119.31680538443624,37.98333426009155],[-119.31679956005846,37.983332188403885],[-119.31679382771625,37.98332996170101],[-119.3167881939931,37.98332758254025],[-119.31678266535923,37.98332505365403],[-119.31677724816419,37.98332237794672],[-119.31677194862951,37.98331955849137],[-119.3167667728416,37.98331659852603],[-119.31676172674476,37.98331350145018],[-119.31675681613433,37.983310270820766],[-119.31675204665005,37.98330691034812],[-119.31674742376954,37.98330342389166],[-119.31674295280213,37.98329981545555],[-119.31673863888255,37.98329608918399],[-119.31673448696529,37.983292249356545],[-119.31673050181871,37.98328830038318],[-119.31672668801964,37.98328424679921],[-119.31668880580925,37.983243878677335],[-119.31664934021747,37.98320447231571],[-119.3166083301972,37.98316606660623],[-119.31656581622535,37.98312869945325],[-119.31652184026305,37.98309240773599],[-119.31647644571402,37.98305722727227],[-119.31642967738195,37.983023192783065],[-119.3163815814261,37.98299033785834],[-119.3163733434424,37.982985073662476],[-119.31636488267623,37.98298003568716],[-119.31635620903926,37.9829752298343],[-119.31634733269247,37.98297066173383],[-119.31633826403429,37.98296633673718],[-119.31632901368849,37.982962259910934],[-119.31631959249162,37.98295843603101],[-119.3163100114804,37.982954869577014],[-119.31630028187878,37.98295156472691],[-119.3162904150847,37.98294852535226],[-119.31628042265689,37.98294575501361],[-119.31627031630127,37.98294325695635],[-119.31626010785712,37.98294103410688],[-119.31624980928338,37.98293908906922],[-119.31623943264456,37.98293742412188],[-119.31622899009665,37.982936041215396],[-119.31621849387278,37.98293494196973],[-119.31620795626903,37.982934127672614],[-119.31619738962986,37.98293359927801],[-119.31618680633386,37.98293335740493],[-119.31617621877903,37.982933402336684],[-119.31616563936845,37.98293373402067],[-119.31615508049559,37.9829343520683],[-119.31614455452987,37.98293525575555],[-119.31613407380216,37.98293644402381],[-119.3161236505904,37.982937915480996],[-119.31611329710509,37.98293966840339],[-119.31610302547504,37.98294170073746],[-119.31609284773324,37.98294401010239],[-119.31608277580261,37.982946593792825],[-119.31607282148218,37.982949448782044],[-119.31606299643319,37.982952571725484],[-119.3160573527538,37.98295436655264],[-119.31605163553998,37.98295600912617],[-119.31604585134613,37.98295749756298],[-119.3160400068035,37.982958830156676],[-119.31603410861253,37.982960005379525],[-119.3160281635351,37.98296102188417],[-119.31602217838689,37.982961878505286],[-119.3160161600295,37.98296257426077],[-119.3160101153627,37.98296310835301],[-119.31600405131623,37.9829634801697],[-119.3159979748422,37.98296368928457],[-119.31599189290695,37.98296373545786],[-119.315985812483,37.98296361863668],[-119.31597974054125,37.982963338954924],[-119.31597368404277,37.98296289673324],[-119.31596764993103,37.98296229247862],[-119.31596164512374,37.98296152688378],[-119.31595567650504,37.98296060082645],[-119.31594975091761,37.98295951536828],[-119.31594387515479,37.98295827175371],[-119.31593805595276,37.98295687140844],[-119.3159322999829,37.9829553159379],[-119.31592661384408,37.98295360712533],[-119.31592100405511,37.982951746929835],[-119.31591547704728,37.982949737483935],[-119.31591003915695,37.982947581091366],[-119.31587704340723,37.982933403200136],[-119.31584463667096,37.982918398349554],[-119.31581285202077,37.982902581853025],[-119.31578172189433,37.98288596985211],[-119.31575127806128,37.98286857930037],[-119.31572155159078,37.982850427945806],[-119.31569257281983,37.98283153431288],[-119.3152277964889,37.982517275651624],[-119.31520244605515,37.98249945141675],[-119.31517789535955,37.98248093914396],[-119.31515417419337,37.982461761297614],[-119.31513131134123,37.98244194114973],[-119.31510933454614,37.98242150275173],[-119.31508827047583,37.98240047090522],[-119.31506814469033,37.982378871132006],[-119.3150489816111,37.98235672964291],[-119.31503080449126,37.982334073306234],[-119.31501363538743,37.98231092961491],[-119.31499749513297,37.98228732665331],[-119.31498240331274,37.982263293063035],[-119.31496837823923,37.982238858008216],[-119.31495543693042,37.9822140511402],[-119.31494359508918,37.9821889025614],[-119.31493286708408,37.98216344278889],[-119.3149232659321,37.982137702717345],[-119.31491480328275,37.98211171358156],[-119.31490748940398,37.982085506918466],[-119.31490133316971,37.98205911452899],[-119.3148963420491,37.98203256843937],[-119.31489252209741,37.98200590086229],[-119.31488987794874,37.981979144157904],[-119.3148884128104,37.98195233079441],[-119.31486806030507,37.98156563010436],[-119.31483225333943,37.98117963307177],[-119.31478102804031,37.98079472654109],[-119.31477512879107,37.980749863111974],[-119.31477116825658,37.98070486641153],[-119.31476915105178,37.98065978891184],[-119.3147690795254,37.98061468317911],[-119.31477095375737,37.980569601812384],[-119.3147747715585,37.98052459738214],[-119.31478052847324,37.98047972236912],[-119.31478821778481,37.980435029103035],[-119.31479783052308,37.98039056970151],[-119.31480935547499,37.98034639600944],[-119.31482277919777,37.98030255953841],[-119.31483808603447,37.980259111406696],[-119.31485525813234,37.980216102279634],[-119.31487427546358,37.98017358231054],[-119.31489511584886,37.98013160108224],[-119.31491775498296,37.98009020754929],[-119.31494216646342,37.980049449980775],[-119.31496832182103,37.9800093759041],[-119.31499619055329,37.97997003204968],[-119.31502574015987,37.97993146429626],[-119.3150569361805,37.97989371761751],[-119.3158169951363,37.9789975583064],[-119.31584429969081,37.978966136616144],[-119.31587289460383,37.978935442475155],[-119.315902748957,37.97890550906986],[-119.31593383047044,37.97887636876421],[-119.31596610553748,37.97884805306456],[-119.31599953926118,37.97882059258572],[-119.31603409549196,37.97879401701778],[-119.31606973686672,37.97876835509405],[-119.31610642484924,37.97874363455994],[-119.3161441197718,37.97871988214309],[-119.3166535337786,37.978400913186086],[-119.31715199761962,37.97807128522022],[-119.31723711236138,37.978015372813005],[-119.31732452892518,37.977961731731945],[-119.31741415061411,37.97791042130982],[-119.3175058782928,37.97786149830137],[-119.3175996104972,37.97781501682046],[-119.31769524354642,37.97777102828029],[-119.31779267165778,37.97772958133653],[-119.31789178706362,37.977690721833554],[-119.31799248013043,37.977654492753636],[-119.31809463948026,37.97762093416955],[-119.31819815211378,37.97759008320016],[-119.31830290353517,37.977561973969436],[-119.3183354714502,37.97755320756533],[-119.31836763013781,37.97754354082734],[-119.31839933988726,37.97753298569244],[-119.31843056154217,37.97752155519452],[-119.31846125654896,37.977509263448475],[-119.31849138700441,37.977496125632626],[-119.31852091570252,37.97748215797008],[-119.3185498061804,37.97746737770867],[-119.31857802276333,37.97745180309965],[-119.31860553060885,37.977435453375115],[-119.31863229574962,37.97741834872437],[-119.31865828513563,37.97740051026884],[-119.31868346667481,37.97738196003608],[-119.31870050063152,37.97736850530342],[-119.31871693731303,37.97735459288372],[-119.31873275710433,37.97734023937987],[-119.31874794112679,37.97732546192103],[-119.31876247126044,37.97731027814236],[-119.31877633016572,37.97729470616389],[-119.31878950130412,37.97727876456889],[-119.31880196895794,37.97726247238172],[-119.31881371824899,37.97724584904514],[-119.31882473515643,37.97722891439706],[-119.31883500653345,37.97721168864685],[-119.31884452012297,37.97719419235134],[-119.31885326457225,37.97717644639017],[-119.31886122944641,37.977158471940896],[-119.31886840524099,37.97714029045372],[-119.31887478339317,37.97712192362601],[-119.31888035629203,37.97710339337611],[-119.31888511728766,37.97708472181755],[-119.31888906069902,37.97706593123238],[-119.31889218182081,37.97704704404468],[-119.31895883570793,37.97652169681567],[-119.31897807919928,37.976307399903384],[-119.31898841607449,37.97609271816433],[-119.31898983524609,37.97587788347804],[-119.31898233525877,37.975663127887245],[-119.31896592429072,37.97544868334732],[-119.31894062014439,37.97523478147565],[-119.31893584588187,37.97519398469442],[-119.31893287093965,37.975153080975765],[-119.31893169893017,37.97511212002983],[-119.31893233127481,37.975071151636264],[-119.31893476720207,37.97503022558368],[-119.31893900374861,37.97498939160915],[-119.31894503576282,37.97494869933776],[-119.31895285591115,37.97490819822232],[-119.31896245468693,37.97486793748326],[-119.31897382042206,37.97482796604874],[-119.31898693930113,37.974788332495365],[-119.3190017953782,37.974749084988915],[-119.31901837059634,37.97471027122605],[-119.31903664480936,37.9746719383762],[-119.31905659580646,37.974634133024246],[-119.31907819933926,37.97459690111399],[-119.31910142915113,37.97456028789229],[-119.31912625700923,37.97452433785398],[-119.31920337657274,37.97441341290369],[-119.31927636632489,37.97430075064513],[-119.31934516388529,37.97418644739367],[-119.3194097104584,37.974070600867215],[-119.31946995088359,37.97395331010251],[-119.31954770875903,37.97380281175055],[-119.3196317735039,37.97365445335346],[-119.31972205126634,37.97350840047577],[-119.31981844126275,37.97336481610823],[-119.31992083589033,37.973223860485895],[-119.32002912084721,37.973085690909286],[-119.32014317526023,37.972950461569006],[-119.32026287181986,37.97281832337362],[-119.3203880769224,37.97268942378143],[-119.32051865081914,37.97256390663587],[-119.32065444777238,37.972441912005046],[-119.32079531621815,37.972323576025595],[-119.32094109893531,37.97220903075066],[-119.32109163322116,37.972098404002764],[-119.32124675107288,37.97199181923109],[-119.32140168409222,37.97186235238778],[-119.32156222469578,37.97173724030828],[-119.32172817766136,37.971616635111204],[-119.32189934118912,37.97150068343479],[-119.32207550714696,37.9713895262586],[-119.32225646132348,37.97128329873221],[-119.32244198368845,37.97118213001092],[-119.32263184866034,37.97108614309891],[-119.32282582538043,37.97099545469963],[-119.32286420393041,37.97097755614208],[-119.32290182252453,37.970958673587944],[-119.32293864091892,37.97093882723784],[-119.32297461972587,37.97091803832335],[-119.32300972045596,37.97089632908449],[-119.32304390555929,37.970873722745786],[-119.32307713846546,37.970850243491434],[-119.32309726284265,37.97083502651833],[-119.32311670293852,37.970819261931815],[-119.32313543498918,37.970802969003145],[-119.32315343609632,37.970786167649415],[-119.32317068425522,37.9707688784092],[-119.32318715838166,37.97075112241748],[-119.32320283833765,37.97073292137985],[-119.32321770495601,37.970714297545854],[-119.32323174006396,37.97069527368189],[-119.32324492650513,37.97067587304336],[-119.3232572481607,37.970656119346195],[-119.32326868996896,37.970636036737965],[-119.32327923794385,37.970615649768185],[-119.32328887919196,37.97059498335853],[-119.32329760192829,37.970574062772165],[-119.32330539549075,37.970552913582964],[-119.32331225035308,37.97053156164427],[-119.3233339130756,37.97045307470469],[-119.32335233628885,37.97037407104023],[-119.32336750046879,37.97029463441964],[-119.32337938954723,37.97021484907046],[-119.32338799092862,37.970134799589694],[-119.32339329550356,37.97005457085417],[-119.32339428533788,37.9700128908944],[-119.32339346230088,37.969971208661015],[-119.3233908273711,37.969929573554076],[-119.32338638367435,37.969888034917666],[-119.32338013648011,37.96984664198145],[-119.32337209319535,37.969805443802414],[-119.32336226335549,37.969764489206526],[-119.32335065861334,37.96972382673111],[-119.32333729272507,37.96968350456711],[-119.32332218153411,37.969643570502114],[-119.32330534295214,37.9696040718637],[-119.32328679693799,37.969565055463306],[-119.32326656547394,37.9695265675408],[-119.32324467253964,37.969488653709625],[-119.32322114408373,37.96945135890276],[-119.32319600799296,37.96941472731959],[-119.3231692940593,37.96937880237334],[-119.32314103394444,37.96934362663973],[-119.32311126114244,37.96930924180652],[-119.32308997551824,37.96928468130564],[-119.3230697433799,37.96925956898227],[-119.32305058753262,37.969233933143755],[-119.32303252956835,37.96920780268757],[-119.32301558984129,37.969181207068665],[-119.32299978744517,37.969154176266315],[-119.32298514019158,37.96912674075034],[-119.32297166458999,37.96909893144669],[-119.32295937582906,37.96907077970266],[-119.32294044181697,37.96902743096327],[-119.32291966003318,37.96898461598996],[-119.32289705443223,37.96894238412761],[-119.32287265107043,37.968900784048934],[-119.32284647807587,37.96885986369852],[-119.32281856561616,37.96881967023744],[-119.32278894586331,37.96878024998894],[-119.32275765295695,37.968741648385084],[-119.32272472296488,37.96870390991437],[-119.32269019384135,37.968667078070425],[-119.3226541053836,37.96863119530198],[-119.32261649918566,37.968596302963874],[-119.32257741859068,37.96856244126941],[-119.32253690864081,37.96852964924401],[-119.32249501602539,37.968497964680324],[-119.32236025191001,37.96840266844972],[-119.32222158000947,37.968310953232816],[-119.32207915209263,37.96822291939778],[-119.32193312403692,37.96813866328366],[-119.321783655658,37.96805827709512],[-119.32159105534953,37.9679552062319],[-119.32140224048915,37.96784783577281],[-119.3212173641769,37.96773625278809],[-119.32119766220862,37.96772358346138],[-119.32117850098814,37.96771040459583],[-119.32115990153196,37.96769673064658],[-119.32114188424045,37.9676825766118],[-119.32112446887535,37.9676679580162],[-119.32110767453823,37.96765289089404],[-119.32109151964936,37.96763739177154],[-119.32107602192762,37.96762147764873],[-119.32106119837113,37.967605165980814],[-119.32104706523842,37.96758847465906],[-119.32103363803081,37.96757142199111],[-119.32102093147523,37.967554026680965],[-119.32100895950816,37.967536307808366],[-119.32099773526036,37.96751828480801],[-119.32098727104238,37.967499977448135],[-119.3209775783312,37.96748140580885],[-119.32096866775747,37.96746259026009],[-119.32096360465158,37.9674506907223],[-119.32095906234692,37.96743866016885],[-119.32095504623508,37.967426512880465],[-119.32095156108313,37.9674142632765],[-119.32094861102783,37.967401925897725],[-119.32094619957068,37.96738951538909],[-119.32094432957399,37.967377046482376],[-119.32094300325717,37.96736453397861],[-119.32094222219438,37.96735199273061],[-119.32094198731245,37.96733943762533],[-119.32094229888997,37.96732688356612],[-119.32094315655677,37.9673143454551],[-119.32094455929449,37.96730183817549],[-119.32094650543777,37.96728937657379],[-119.32094899267622,37.96727697544239],[-119.32095201805708,37.967264649501836],[-119.32095557798891,37.967252413383434],[-119.32095966824566,37.96724028161187],[-119.3209642839718,37.96722826858791],[-119.32096941968811,37.967216388571416],[-119.32097506929804,37.96720465566431],[-119.32098122609511,37.967193083793916],[-119.32098788277081,37.96718168669637],[-119.3209950314232,37.96717047790038],[-119.32100266356643,37.9671594707111],[-119.32101077014069,37.96714867819434],[-119.32101934152311,37.96713811316119],[-119.3210230436244,37.967133550533184],[-119.32102654564893,37.96712888996074],[-119.32102984346659,37.9671241369403],[-119.32103293318812,37.96711929707741],[-119.32103581116964,37.96711437607998],[-119.32103847401709,37.96710937975162],[-119.32104091859001,37.96710431398479],[-119.32104314200546,37.96709918475381],[-119.32104514164126,37.967093998107906],[-119.32104691513922,37.96708876016395],[-119.32104846040774,37.96708347709935],[-119.3210497756245,37.96707815514472],[-119.32105085923841,37.96707280057652],[-119.3210517099716,37.96706741970969],[-119.32105232682073,37.9670620188902],[-119.32105270905845,37.96705660448752],[-119.32105285623396,37.96705118288712],[-119.32105276817377,37.96704576048301],[-119.32105244498176,37.96704034367011],[-119.32105188703916,37.96703493883677],[-119.32105109500402,37.967029552357175],[-119.3210500698105,37.96702419058393],[-119.32104881266768,37.96701885984039],[-119.32104732505826,37.9670135664134],[-119.32104560873668,37.967008316545815],[-119.32104366572715,37.96700311642904],[-119.3210414983212,37.966997972195834],[-119.321039109075,37.96699288991307],[-119.32103650080639,37.96698787557454],[-119.32103367659143,37.966982935093924],[-119.32103063976095,37.96697807429775],[-119.32102739389646,37.9669732989186],[-119.32102394282597,37.96696861458835],[-119.32102029061959,37.96696402683144],[-119.32101644158458,37.96695954105844],[-119.3210124002603,37.96695516255966],[-119.32100817141297,37.96695089649886],[-119.32100376002983,37.96694674790721],[-119.32099917131355,37.96694272167737],[-119.32099441067578,37.966938822557665],[-119.32098948373107,37.96693505514648],[-119.32098439628997,37.96693142388696],[-119.3209791543524,37.966927933061584],[-119.32097376410042,37.96692458678725],[-119.32094742326177,37.96690935345368],[-119.32092044593038,37.966894835021705],[-119.3208928630513,37.9668810481448],[-119.32086470626415,37.96686800863743],[-119.32083600786672,37.966855731456675],[-119.32080680077812,37.96684423068526],[-119.32077711850086,37.96683351951522],[-119.32074699508246,37.966823610232936],[-119.32071646507642,37.96681451420494],[-119.32068556350264,37.9668062418649],[-119.32065432580707,37.9667988027017],[-119.32062278782128,37.96679220524849],[-119.32059098572122,37.96678645707291],[-119.3205589559858,37.96678156476846],[-119.32052673535497,37.96677753394691],[-119.32049436078768,37.96677436923182],[-119.32046186941938,37.96677207425333],[-119.32042929851949,37.96677065164387],[-119.32030008390427,37.96676830285349],[-119.32017083885918,37.96676906923428],[-119.32004168318056,37.966772950075885],[-119.31991273658193,37.9667799417812],[-119.3197841185831,37.96679003786962],[-119.31977090849762,37.96679105457085],[-119.31975766215601,37.966791712224634],[-119.31974439512442,37.966792010058164],[-119.31973112299343,37.96679194772145],[-119.31971786135956,37.96679152528775],[-119.31970462580702,37.96679074325346],[-119.31969143188935,37.96678960253759],[-119.31967829511116,37.96678810448063],[-119.31966523090993,37.96678625084297],[-119.3196522546378,37.96678404380294],[-119.31963938154367,37.96678148595406],[-119.3196266267551,37.96677858030217],[-119.31961400526062,37.96677533026177],[-119.3196015318922,37.9667717396521],[-119.3195892213077,37.9667678126926],[-119.31957708797357,37.966763553998],[-119.31956514614816,37.96675896857279],[-119.3195534098646,37.96675406180548],[-119.31954189291454,37.966748839462134],[-119.31953060883188,37.96674330767973],[-119.31951957087686,37.966737472958805],[-119.31950879202043,37.96673134215596],[-119.31949828492914,37.966724922475656],[-119.31948806195007,37.96671822146188],[-119.31947813509653,37.966711246989185],[-119.31946851603377,37.96670400725348],[-119.31945921606531,37.966696510762404],[-119.31945024611974,37.96668876632531],[-119.3194416167378,37.966680783042875],[-119.31943333806004,37.96667257029652],[-119.31942541981482,37.96666413773726],[-119.31941787130697,37.966655495274445],[-119.3194107014068,37.966646653064025],[-119.31940391853978,37.96663762149678],[-119.31939753067643,37.96662841118591],[-119.31939154532317,37.966619032954675],[-119.31938596951339,37.96660949782373],[-119.31938080979921,37.96659981699802],[-119.31937607224378,37.9665900018537],[-119.31937176241414,37.96658006392484],[-119.31936788537469,37.966570014889676],[-119.31936444568129,37.966559866557105],[-119.3193614473758,37.96654963085268],[-119.31935889398139,37.96653931980457],[-119.31935678849847,37.96652894552953],[-119.31935513340102,37.96651852021859],[-119.31935393063378,37.966508056122755],[-119.31935225883679,37.9664935100489],[-119.31934995857924,37.96647901785335],[-119.31934703256181,37.96646459654881],[-119.31934348421979,37.966450263064765],[-119.31933931771898,37.966436034227534],[-119.3193345379509,37.966421926740665],[-119.31932915052695,37.966407957165146],[-119.31932316177185,37.96639414190016],[-119.31931657871625,37.96638049716365],[-119.31930940908843,37.96636703897342],[-119.31930166130525,37.96635378312824],[-119.31929334446222,37.96634074518933],[-119.31928446832296,37.96632794046216],[-119.31927504330754,37.96631538397833],[-119.3192650804804,37.96630309047813],[-119.31925459153727,37.96629107439299],[-119.31924358879155,37.966279349828774],[-119.31923208515968,37.96626793054909],[-119.31922009414617,37.96625682995913],[-119.31920762982759,37.966246061090025],[-119.31919470683611,37.96623563658345],[-119.31918134034238,37.966225568676826],[-119.3191675460376,37.966215869188986],[-119.31915334011521,37.9662065495062],[-119.31913873925176,37.96619762056895],[-119.31912376058749,37.96618909285897],[-119.3191084217061,37.96618097638704],[-119.3190927406141,37.966173280681105],[-119.31907673571972,37.96616601477521],[-119.31906042581132,37.96615918719886],[-119.31904383003524,37.96615280596699],[-119.31902696787346,37.96614687857056],[-119.3190098591206,37.96614141196775],[-119.31899252386076,37.96613641257586],[-119.31888313633954,37.96610527397806],[-119.3187748053914,37.966071900617386],[-119.318667603849,37.96603631493168],[-119.31862756707137,37.96602317442056],[-119.31858698952202,37.966011118301864],[-119.31854591804652,37.966000160493984],[-119.31850440006058,37.96599031364732],[-119.31846248349534,37.96598158912966],[-119.318420216742,37.96597399701317],[-119.31837764859607,37.96596754606265],[-119.31833482820085,37.965962243725485],[-119.31829180499095,37.96595809612304],[-119.31824862863496,37.96595510804351],[-119.31820534897832,37.965953282936574],[-119.31816201598573,37.96595262290925],[-119.31811867968344,37.96595312872348],[-119.31807539010147,37.96595479979532],[-119.31803219721596,37.96595763419559],[-119.31798915089144,37.9659616286521],[-119.31794630082322,37.96596677855339],[-119.31790369648012,37.965973077954104],[-119.31786138704727,37.96598051958179],[-119.31781942136938,37.96598909484542],[-119.31779339610728,37.965995162092284],[-119.31776764287746,37.96600191780544],[-119.31774219072925,37.966009354364594],[-119.31771706837232,37.96601746338136],[-119.31769230414447,37.96602623570895],[-119.31766792597948,37.966035661452246],[-119.31764396137575,37.96604572997917],[-119.3176204373652,37.966056429932564],[-119.31759738048278,37.966067749243],[-119.31757481673658,37.96607967514245],[-119.31755277157846,37.96609219417862],[-119.31753126987537,37.96610529223022],[-119.3175103358813,37.96611895452276],[-119.31748999320988,37.96613316564532],[-119.31747026480777,37.96614790956788],[-119.31745117292883,37.96616316965946],[-119.31743273910891,37.96617892870678],[-119.31739803189048,37.96620856370847],[-119.31736204316438,37.966237224691014],[-119.31732481651552,37.966264876942816],[-119.3172863970282,37.96629148697387],[-119.31724683123159,37.96631702255641],[-119.31720616704327,37.96634145276389],[-119.31716445371129,37.96636474800854],[-119.3171217417544,37.966386880077046],[-119.31707808290103,37.96640782216487],[-119.31706147991035,37.966415178964304],[-119.31704456914741,37.966422082433006],[-119.31702737035413,37.96642852451175],[-119.31700990360858,37.9664344976799],[-119.3169921893018,37.96643999496427],[-119.31697424811375,37.96644500994722],[-119.31695610098936,37.966449536774164],[-119.31693776911388,37.96645357016037],[-119.31691927388835,37.96645710539718],[-119.3169006369044,37.966460138357505],[-119.31688187991935,37.966462665500565],[-119.31686302483044,37.966464683876154],[-119.31684409364952,37.96646619112795],[-119.31682510847725,37.966467185496356],[-119.31680609147736,37.96646766582055],[-119.31678706485071,37.966467631539786],[-119.31676805080944,37.96646708269403],[-119.31674907155093,37.96646601992412],[-119.31673014923199,37.966464444470645],[-119.31671130594297,37.96646235817291],[-119.31669256368193,37.966459763466446],[-119.31667394432895,37.966456663380406],[-119.3166554696207,37.96645306153386],[-119.3166371611249,37.96644896213173],[-119.31661904021529,37.96644436995972],[-119.31660112804654,37.96643929037881],[-119.31658344552964,37.96643372931903],[-119.31656601330751,37.966427693272465],[-119.31654885173079,37.96642118928576],[-119.31653198083418,37.966414224951734],[-119.31651542031304,37.96640680840072],[-119.31649918950033,37.96639894829094],[-119.31648330734411,37.96639065379843],[-119.31646779238541,37.96638193460631],[-119.31645266273651,37.966372800893595],[-119.3164379360599,37.96636326332307],[-119.3164236295476,37.966353333029105],[-119.31640975990113,37.966343021604466],[-119.31640588254652,37.96634013985608],[-119.31640188203231,37.96633736562111],[-119.3163977631126,37.96633470219636],[-119.31639353068206,37.966332152746915],[-119.31638918977038,37.96632972030237],[-119.31638474553604,37.96632740775339],[-119.3163802032604,37.96632521784806],[-119.31637556834129,37.96632315318876],[-119.31637084628657,37.96632121622903],[-119.31636604270778,37.966319409270646],[-119.3163611633132,37.96631773446092],[-119.31635621390133,37.96631619379013],[-119.31635120035375,37.96631478908911],[-119.31634612862837,37.96631352202714],[-119.31634100475212,37.966312394109956],[-119.31633583481403,37.96631140667789],[-119.31633062495773,37.96631056090437],[-119.31632538137441,37.96630985779447],[-119.31632011029527,37.96630929818374],[-119.31631481798415,37.966308882737174],[-119.31630951073026,37.96630861194848],[-119.3163041948404,37.96630848613946],[-119.31629887663176,37.9663085054596],[-119.31629356242418,37.96630866988595],[-119.31628825853285,37.96630897922311],[-119.31628297126065,37.966309433103476],[-119.31627770689066,37.96631003098769],[-119.31627247167886,37.96631077216526],[-119.31626727184647,37.9663116557554],[-119.31626211357273,37.96631268070808],[-119.31625700298747,37.966313845805324],[-119.31625194616389,37.96631514966256],[-119.31624694911123,37.96631659073038],[-119.31624201776778,37.96631816729626],[-119.31623715799368,37.96631987748672],[-119.31623237556407,37.966321719269416],[-119.31622767616213,37.966323690455674],[-119.31622306537244,37.96632578870306],[-119.31621854867424,37.966328011518094],[-119.31621413143498,37.9663303562593],[-119.31620981890383,37.966332820140295],[-119.31620561620566,37.96633540023312],[-119.31620152833476,37.96633809347175],[-119.31619756014896,37.966340896655616],[-119.31619287990887,37.96634420143827],[-119.316188056873,37.966347374933875],[-119.31618309691423,37.966350413278136],[-119.31617800607222,37.96635331277135],[-119.3161727905459,37.966356069882856],[-119.31616745668612,37.96635868125538],[-119.31616201098777,37.96636114370912],[-119.31615646008194,37.96636345424564],[-119.31615081072786,37.966365610051376],[-119.3161450698046,37.966367608501294],[-119.31613924430273,37.9663694471619],[-119.31613334131586,37.96637112379434],[-119.31612736803191,37.96637263635701],[-119.31612133172442,37.966373983008054],[-119.31611523974364,37.96637516210772],[-119.31610909950767,37.96637617222023],[-119.31610291849329,37.966377012115586],[-119.31609670422706,37.96637768077109],[-119.31609046427594,37.966378177372505],[-119.31608420623813,37.96637850131517],[-119.31607793773397,37.96637865220459],[-119.31607166639643,37.966378629857054],[-119.31606539986203,37.96637843429975],[-119.31605914576136,37.966378065770826],[-119.31605291170992,37.966377524719],[-119.31604670529876,37.966376811803144],[-119.3160405340853,37.96637592789133],[-119.31603440558413,37.96637487405989],[-119.31602832725773,37.966373651592036],[-119.31602230650759,37.966372261976375],[-119.31601635066501,37.96637070690498],[-119.31601046698233,37.966368988271434],[-119.31600466262393,37.96636710816847],[-119.31599894465762,37.96636506888547],[-119.3159933200461,37.966362872905606],[-119.31598779563832,37.96636052290288],[-119.31598237816115,37.96635802173884],[-119.3159770742114,37.9663553724591],[-119.3159718902475,37.9663525782896],[-119.31596683258185,37.96634964263278],[-119.315271645844,37.96592298913207],[-119.31518350743251,37.96589053312974],[-119.315093988208,37.96586053917925],[-119.31500319786007,37.96583304403231],[-119.31491124763545,37.965808081378725],[-119.31481825020172,37.96578568180527],[-119.31472431950925,37.965765872758084],[-119.31462957065165,37.96574867850916],[-119.31462100362243,37.96574712573321],[-119.31461250928757,37.96574534010781],[-119.3146040977415,37.96574332375494],[-119.31459577898035,37.965741079070796],[-119.31458756288991,37.9657386087229],[-119.314579459234,37.96573591564698],[-119.31457147764282,37.96573300304341],[-119.31456362760149,37.96572987437347],[-119.31455591843878,37.96572653335518],[-119.31454835931606,37.965722983958955],[-119.31454095921643,37.965719230402804],[-119.31453372693396,37.96571527714735],[-119.31452667106326,37.96571112889057],[-119.31451979998936,37.96570679056214],[-119.31451312187765,37.96570226731761],[-119.31450664466418,37.96569756453231],[-119.31450037604625,37.96569268779492],[-119.31449432347334,37.965687642900825],[-119.31448849413812,37.96568243584525],[-119.31448289496795,37.96567707281615],[-119.31447753261673,37.96567156018678],[-119.31447241345685,37.9656659045082],[-119.31446754357174,37.96566011250152],[-119.3144629287486,37.96565419104974],[-119.31445857447149,37.96564814718982],[-119.31445448591482,37.96564198810408],[-119.31445066793732,37.9656357211118],[-119.31444712507603,37.965629353660574],[-119.31444386154119,37.96562289331721],[-119.31444088121096,37.96561634775907],[-119.31443818762703,37.96560972476466],[-119.31443578399028,37.965603032204605],[-119.31443367315707,37.96559627803209],[-119.31443185763578,37.9655894702736],[-119.3144303395838,37.9655826170193],[-119.31442912080506,37.96557572641337],[-119.31442820274788,37.96556880664438],[-119.31442758650311,37.96556186593561],[-119.31442727280306,37.965554912535154],[-119.31442726202036,37.96554795470621],[-119.31442755416779,37.96554100071726],[-119.31442814889806,37.96553405883219],[-119.31442904550434,37.96552713730053],[-119.31443184189926,37.965505573856944],[-119.31443370396602,37.965483947250455],[-119.31443462952141,37.96546228284724],[-119.31443461748066,37.96544060605783],[-119.31443366785871,37.96541894230723],[-119.31443178177018,37.96539731700514],[-119.31442896142813,37.965375755516156],[-119.31442521014138,37.965354283129955],[-119.31442053231069,37.96533292503174],[-119.31441493342346,37.9653117062726],[-119.31440842004751,37.965290651740204],[-119.31440099982319,37.96526978612955],[-119.31439268145448,37.96524913391408],[-119.31436618457458,37.96518369598587],[-119.31434227782866,37.96511763580223],[-119.3143209844576,37.96505101760268],[-119.3143023251608,37.964983906169195],[-119.31428631807606,37.96491636676327],[-119.31427297876186,37.96484846506233],[-119.31426232018244,37.964780267095975],[-119.31425435269506,37.96471183918171],[-119.3142400381897,37.964589558348095],[-119.31422076340313,37.96446770526672],[-119.31419654830364,37.96434640602053],[-119.31416741797099,37.964225786118824],[-119.31413340257032,37.96410597036736],[-119.31409453732086,37.963987082739216],[-119.31409268144364,37.96398137950563],[-119.31409107438037,37.96397562912019],[-119.31408971803187,37.96396983838459],[-119.31408861400239,37.963964014148196],[-119.31408776359768,37.963958163299964],[-119.3140871678236,37.96395229276038],[-119.3140868273848,37.96394640947321],[-119.31408674268383,37.96394052039727],[-119.31408691382087,37.96393463249825],[-119.3140873405934,37.96392875274043],[-119.31408802249659,37.963922888078464],[-119.31408895872383,37.963917045449165],[-119.31409014816761,37.96391123176321],[-119.31409158942105,37.963905453897176],[-119.31409328077935,37.963899718685134],[-119.31409522024188,37.963894032910794],[-119.31409740551456,37.96388840329932],[-119.31409905811347,37.963884142652326],[-119.31410052232114,37.96387983903161],[-119.31410179636175,37.963875497656645],[-119.3141028786902,37.96387112379265],[-119.31410376799388,37.96386672274431],[-119.31410446319425,37.96386229984924],[-119.31410496344823,37.963857860471556],[-119.3141052681491,37.963853409995345],[-119.31410537692739,37.9638489538182],[-119.31410528965117,37.96384449734458],[-119.31410500642636,37.963840045979346],[-119.31410452759647,37.96383560512109],[-119.3141038537423,37.963831180155736],[-119.31410298568106,37.96382677644992],[-119.31410192446566,37.96382239934446],[-119.31410067138314,37.96381805414796],[-119.31409922795329,37.96381374613023],[-119.31409759592671,37.96380948051609],[-119.3140957772828,37.96380526247892],[-119.31409377422722,37.963801097134336],[-119.31409158918933,37.963796989534075],[-119.31408922481921,37.96379294465988],[-119.31408668398433,37.96378896741736],[-119.3140839697663,37.96378506263015],[-119.31408108545699,37.96378123503397],[-119.31407803455444,37.96377748927096],[-119.31407482075889,37.963773829883955],[-119.31407144796802,37.963770261311105],[-119.31406792027241,37.96376678788036],[-119.31406424195043,37.9637634138043],[-119.31406041746325,37.963760143175016],[-119.31405645144918,37.96375697995916],[-119.31405234871823,37.96375392799306],[-119.31404811424622,37.963750990978106],[-119.31404375316872,37.963748172476386],[-119.3140392707749,37.963745475906144],[-119.314034672501,37.96374290453779],[-119.31396764720684,37.96370551333409],[-119.31390219563912,37.96366641378421],[-119.313838387237,37.96362564737128],[-119.31377628969604,37.963583257346905],[-119.31371596889623,37.963539288685126],[-119.31365748883223,37.96349378803486],[-119.31360091154541,37.9634468036702],[-119.31354629705797,37.963398385439405],[-119.31349370330936,37.96334858471189],[-119.31344318609484,37.96329745432362],[-119.31339479900622,37.963245048521294],[-119.31334859337495,37.96319142290459],[-119.31334573308628,37.963186411354144],[-119.31334309402304,37.963181324291746],[-119.3133406793596,37.96317616783631],[-119.31333849200031,37.963170948190225],[-119.31333653457618,37.96316567163186],[-119.31333480944164,37.96316034450803],[-119.31333331867167,37.96315497322644],[-119.31333206405938,37.96314956424781],[-119.31333104711378,37.963144124078276],[-119.3133302690581,37.96313865926148],[-119.3133297308281,37.96313317637066],[-119.31332943307116,37.96312768200085],[-119.31332937614536,37.96312218276087],[-119.31332956011916,37.963116685265376],[-119.31332998477114,37.96311119612695],[-119.31333064959053,37.96310572194812],[-119.3133315537776,37.96310026931341],[-119.31333269624467,37.96309484478142],[-119.31333407561755,37.96308945487698],[-119.31333569023697,37.9630841060832],[-119.31333753816081,37.96307880483383],[-119.31333961716626,37.96307355750533],[-119.31334192475258,37.96306837040942],[-119.31334445814407,37.96306324978525],[-119.31334721429347,37.96305820179208],[-119.31335018988555,37.963053232501814],[-119.31335338134109,37.963048347891636],[-119.31335678482132,37.963043553836926],[-119.31336039623237,37.963038856104134],[-119.31336421123025,37.96303426034379],[-119.31336822522621,37.96302977208386],[-119.31337243339198,37.963025396722905],[-119.31337683066587,37.963021139523796],[-119.31338141175867,37.963017005607156],[-119.31338617116006,37.96301299994544],[-119.31339110314526,37.96300912735674],[-119.31339620178194,37.96300539249912],[-119.3134014609373,37.96300179986499],[-119.31340687428542,37.962998353775646],[-119.31341243531494,37.96299505837616],[-119.31341813733692,37.96299191763031],[-119.31342397349279,37.962988935315906],[-119.31342993676262,37.96298611502014],[-119.31343601997361,37.96298346013534],[-119.31344221580873,37.96298097385487],[-119.31344851681541,37.96297865916932],[-119.31345984354778,37.96297450066097],[-119.31347098379659,37.96297003755346],[-119.31348192449825,37.96296527508046],[-119.3134926528232,37.96296021882663],[-119.3135031561909,37.96295487472125],[-119.31351342228464,37.96294924903104],[-119.31352343906595,37.96294334835298],[-119.31353319478873,37.962937179606485],[-119.31354267801298,37.962930750025336],[-119.31355187761832,37.96292406714915],[-119.31356078281688,37.96291713881461],[-119.31356938316615,37.962909973146196],[-119.31357766858099,37.96290257854671],[-119.31358562934565,37.96289496368742],[-119.31359325612507,37.96288713749786],[-119.31360053997584,37.96287910915537],[-119.31360747235667,37.96287088807437],[-119.31361404513848,37.96286248389524],[-119.31362025061384,37.96285390647315],[-119.31362608150606,37.962845165866334],[-119.31363153097772,37.96283627232441],[-119.31363659263867,37.96282723627637],[-119.31364126055351,37.96281806831824],[-119.31364552924859,37.96280877920077],[-119.31364939371844,37.96279937981679],[-119.31365284943155,37.96278988118841],[-119.31365589233575,37.96278029445411],[-119.313658518863,37.9627706308557],[-119.31366072593345,37.96276090172512],[-119.31366251095918,37.96275111847109],[-119.3136638718472,37.962741292565894],[-119.3136648070018,37.96273143553178],[-119.31366600088256,37.96271888215453],[-119.31366774273909,37.96270636900461],[-119.31367003048464,37.96269391107081],[-119.31367286137855,37.96268152327582],[-119.3136762320296,37.96266922045828],[-119.31368013839999,37.96265701735508],[-119.31368457581024,37.96264492858361],[-119.31368953894476,37.962632968624305],[-119.31369502185827,37.962621151803354],[-119.31370101798284,37.96260949227543],[-119.31370752013581,37.9625980040068],[-119.31371452052845,37.96258670075857],[-119.31372201077512,37.96257559607025],[-119.31372998190353,37.96256470324345],[-119.31373842436531,37.962554035326036],[-119.31375790376592,37.962531175195146],[-119.31377832376359,37.96250883550934],[-119.31379966219227,37.96248704051768],[-119.3138218958889,37.96246581387794],[-119.31384500071883,37.962445178630965],[-119.31386895160179,37.96242515717562],[-119.31389372253926,37.96240577124453],[-119.31391928664262,37.96238704188043],[-119.31394561616239,37.96236898941341],[-119.31397268251824,37.96235163343872],[-119.31400045633023,37.96233499279567],[-119.31410954882554,37.96226961611255],[-119.31421584402857,37.96220141231838],[-119.31431922511285,37.96213045637918],[-119.31441957845601,37.96205682628577],[-119.31451679376454,37.961980602968005],[-119.31461076419512,37.96190187020583],[-119.3147013864719,37.961820714537154],[-119.31478856100016,37.96173722516269],[-119.3147918534733,37.96173215622854],[-119.31479492142766,37.96172699975444],[-119.31479776115596,37.961721761971624],[-119.3148003692266,37.961716449209575],[-119.31480274248801,37.96171106788835],[-119.31480487807227,37.961705624510905],[-119.31480677339874,37.96170012565515],[-119.31480842617717,37.96169457796606],[-119.3148098344103,37.96168898814759],[-119.31481099639647,37.96168336295463],[-119.31481191073155,37.96167770918479],[-119.31481257631069,37.961672033670276],[-119.31481299232965,37.961666343269464],[-119.31481315828576,37.96166064485879],[-119.31481307397851,37.96165494532437],[-119.31481273950988,37.96164925155362],[-119.31481215528407,37.961643570427086],[-119.31481132200716,37.96163790880992],[-119.31481024068613,37.96163227354378],[-119.31480891262774,37.96162667143845],[-119.31480733943692,37.96162110926363],[-119.31480552301477,37.96161559374077],[-119.31480346555638,37.961610131534975],[-119.31480219909798,37.96160677112665],[-119.31480107965288,37.961603378161755],[-119.31480010855078,37.96159995667052],[-119.31479928694519,37.96159651071714],[-119.31479861581197,37.96159304439473],[-119.31479809594828,37.96158956182072],[-119.31479772797164,37.9615860671318],[-119.31479751231909,37.96158256447904],[-119.31479744924681,37.96157905802296],[-119.31479753882962,37.96157555192861],[-119.31479778096117,37.96157205036065],[-119.3147981753538,37.96156855747828],[-119.314798721539,37.96156507743046],[-119.31479941886799,37.96156161435086],[-119.31480026651245,37.96155817235302],[-119.31480126346551,37.96155475552539],[-119.31480240854295,37.96155136792661],[-119.31480370038457,37.96154801358051],[-119.31480513745592,37.961544696471464],[-119.31480671804994,37.96154142053961],[-119.31480844028918,37.961538189676155],[-119.31481030212791,37.961535007718865],[-119.31481230135458,37.96153187844723],[-119.3148144355944,37.96152880557833],[-119.31481670231234,37.961525792762195],[-119.31481909881587,37.96152284357748],[-119.31482162225836,37.961519961527316],[-119.31482426964241,37.96151715003504],[-119.31482703782338,37.96151441244022],[-119.31482992351316,37.96151175199462],[-119.31483292328404,37.96150917185838],[-119.31483603357283,37.961506675096246],[-119.31483925068507,37.961504264673906],[-119.31484257079939,37.9615019434545],[-119.31484598997206,37.96149971419527],[-119.3148495041417,37.96149757954411],[-119.31485310913416,37.96149554203664],[-119.31485680066729,37.961493604093064],[-119.31489399488673,37.96147413441521],[-119.31493038804766,37.96145373788857],[-119.31496594331796,37.96143243515603],[-119.31500062471359,37.961410247777636],[-119.31503439713512,37.961387198208726],[-119.3150672264031,37.96136330977723],[-119.3150990792927,37.961338606660064],[-119.31512992356744,37.96131311385861],[-119.31521452313193,37.96123836784318],[-119.31529579630225,37.96116134303977],[-119.31537364523241,37.96108213218957],[-119.31544797620026,37.961000830665554],[-119.31551869972024,37.96091753635767],[-119.31558573065122,37.96083234955493],[-119.31564898829885,37.96074537282456],[-119.31565750014516,37.960732671777265],[-119.3156654526386,37.960719745469135],[-119.31567283628311,37.960706609335894],[-119.31567964226194,37.960693279063904],[-119.31568586244818,37.96067977057126],[-119.31569148941436,37.96066609998894],[-119.3156965164415,37.96065228364139],[-119.315700937527,37.960638338027195],[-119.31570474739185,37.96062427979921],[-119.31570794148689,37.960610125744864],[-119.31571051599835,37.96059589276586],[-119.31571246785226,37.96058159785827],[-119.31571379471823,37.960567258092034],[-119.31571449501217,37.960552890590684],[-119.31571456789823,37.96053851251084],[-119.31571401328969,37.960524141021736],[-119.3157128318492,37.96050979328478],[-119.31571102498793,37.960495486432926],[-119.31570859486386,37.96048123755037],[-119.31570554437923,37.96046706365202],[-119.31570187717702,37.96045298166327],[-119.31569759763664,37.96043900839977],[-119.31569271086883,37.960425160547246],[-119.31568654190377,37.96040776270616],[-119.31568108076871,37.96039021718856],[-119.31567633308036,37.960372542041576],[-119.31567230372161,37.960354755445486],[-119.31566899683648,37.960336875695376],[-119.31566641582585,37.96031892118199],[-119.31566456334393,37.96030091037301],[-119.31566344129568,37.96028286179405],[-119.31566305083466,37.96026479400951],[-119.31566339236194,37.96024672560354],[-119.3156644354264,37.960229648325985],[-119.31566622489457,37.96021260989567],[-119.31566875861873,37.960195630756516],[-119.31567203355829,37.96017873128133],[-119.31567604578318,37.96016193174721],[-119.31568079047881,37.960145252311484],[-119.31568626195165,37.960128712987256],[-119.31569245363617,37.960112333619556],[-119.31569935810272,37.96009613386139],[-119.31570696706635,37.96008013315033],[-119.31571527139694,37.96006435068507],[-119.31572426112994,37.96004880540248],[-119.31573392547847,37.960033515954706],[-119.31574425284623,37.96001850068705],[-119.31575099962937,37.96000869050863],[-119.31575731233508,37.959998700856836],[-119.31576318335806,37.95998854376698],[-119.31576860562521,37.95997823147615],[-119.3157735726041,37.95996777640842],[-119.31577807831076,37.959957191159845],[-119.31578211731701,37.95994648848333],[-119.31578568475697,37.959935681273265],[-119.31578877633284,37.959924782549884],[-119.31579138832016,37.95991380544385],[-119.31579351757229,37.95990276318004],[-119.31579516152416,37.959891669062],[-119.31579631819541,37.95988053645566],[-119.31579698619271,37.95986937877329],[-119.3157971647115,37.95985820945743],[-119.31579685353694,37.959847041964615],[-119.31579605304412,37.95983588974912],[-119.31579476419769,37.959824766246896],[-119.31579298855065,37.959813684859235],[-119.31579072824245,37.95980265893669],[-119.31578798599647,37.959791701763024],[-119.3157847651167,37.95978082653911],[-119.31578106948382,37.95977004636712],[-119.31577690355037,37.95975937423472],[-119.31577227233556,37.95974882299935],[-119.31576718141916,37.95973840537288],[-119.31576163693471,37.9597281339061],[-119.31575564556229,37.95971802097378],[-119.31574921452021,37.95970807875968],[-119.31568245352405,37.95960578014199],[-119.31561926925276,37.95950206730031],[-119.31555970943728,37.9593970186065],[-119.31550381906905,37.95929071344151],[-119.31549786524091,37.95927835097832],[-119.31549242705185,37.95926584046949],[-119.31548751036038,37.95925319539315],[-119.31548312046324,37.959240429372414],[-119.31547926208958,37.95922755616075],[-119.31547593939594,37.95921458962707],[-119.31547315596175,37.95920154374079],[-119.3154709147854,37.95918843255682],[-119.31546921828114,37.95917527020048],[-119.3154680682764,37.959162070852095],[-119.31546746600986,37.95914884873194],[-119.31546741213002,37.95913561808473],[-119.31546790669469,37.959122393164456],[-119.31546882319333,37.959098187179634],[-119.31546875840486,37.95907397037493],[-119.31546771239697,37.95904976768116],[-119.31546568624746,37.95902560401466],[-119.31546268204313,37.95900150425151],[-119.31545870287776,37.95897749320203],[-119.31545375284877,37.958953595585136],[-119.315447837053,37.95892983600295],[-119.31544096158164,37.95890623891553],[-119.31543313351375,37.95888282861553],[-119.31541963177929,37.958847277440036],[-119.31540459038855,37.958812115858265],[-119.31538802721913,37.95877738565672],[-119.31536996195697,37.958743128109184],[-119.31535041607309,37.95870938392763],[-119.31532941279795,37.95867619321399],[-119.31530697709393,37.95864359541229],[-119.31528313562563,37.95861162926195],[-119.3152579167281,37.95858033275164],[-119.31523135037324,37.958549743074215],[-119.31520346813421,37.95851989658248],[-119.31517430314776,37.958490828746],[-119.31514389007498,37.9584625741089],[-119.31512283063863,37.95844306516519],[-119.31510256146467,37.958423038356216],[-119.3150831028542,37.95840251374098],[-119.3150644742965,37.95838151187712],[-119.3150466944493,37.95836005380024],[-119.31502978112029,37.958338161002864],[-119.31501375124918,37.95831585541298],[-119.31499862089076,37.95829315937194],[-119.3149770786943,37.9582609371219],[-119.31495416555376,37.95822931328633],[-119.31492990795478,37.95819832441731],[-119.31490433393695,37.95816800633305],[-119.3148774730613,37.958138394076315],[-119.31484935637611,37.95810952187405],[-119.31482001638106,37.958081423097774],[-119.31478948698972,37.95805413022504],[-119.31478093933872,37.95804648971114],[-119.31477272339968,37.958038624382844],[-119.31476484859826,37.95803054326371],[-119.31475732396866,37.95802225562473],[-119.31475015814348,37.95801377097391],[-119.31474335934348,37.95800509904528],[-119.3147369353685,37.957996249787705],[-119.31473089358828,37.95798723335344],[-119.31472524093411,37.957978060086596],[-119.31471998389084,37.95796874051116],[-119.31471512848942,37.95795928531901],[-119.3147106803001,37.9579497053576],[-119.31470664442581,37.95794001161743],[-119.31470302549658,37.95793021521964],[-119.314699827664,37.95792032740313],[-119.31469705459666,37.957910359511615],[-119.31469470947572,37.957900322980706],[-119.31469279499146,37.95789022932475],[-119.31469131334006,37.957880090123616],[-119.31469026622118,37.95786991700945],[-119.31468965483593,37.957859721653286],[-119.31468775621539,37.957828465480446],[-119.3146844734288,37.95779728131291],[-119.31467981052188,37.957766207565776],[-119.31467377324046,37.95773528251795],[-119.31466636902346,37.95770454426523],[-119.31465760699359,37.95767403067318],[-119.31464749794623,37.9576437793306],[-119.314636054336,37.9576138275032],[-119.31462329026158,37.95758421208761],[-119.31458672176312,37.95750740329575],[-119.31454743617213,37.95743144025876],[-119.31450546465236,37.957356383219214],[-119.3144608404973,37.957282291700935],[-119.31444196091998,37.95725068650356],[-119.3144244706055,37.95721858410194],[-119.31440839040238,37.95718602276564],[-119.31439373947809,37.957153041311265],[-119.31438053529618,37.957119679056206],[-119.31436879359545,37.95708597577175],[-119.31435852837119,37.95705197163565],[-119.31434975185856,37.95701770718429],[-119.31434247451797,37.9569832232643],[-119.31433670502261,37.956948560983896],[-119.31433245024819,37.95691376166383],[-119.31432971526462,37.95687886678818],[-119.3143285033301,37.95684391795489],[-119.31432881588725,37.95680895682614],[-119.31433065256132,37.956774025078744],[-119.31433401116067,37.956739164354396],[-119.31433717880685,37.956706623602166],[-119.31433899066703,37.95667401788245],[-119.31433944477563,37.95664138259855],[-119.3143385406414,37.956608753185854],[-119.31433627924784,37.95657616507335],[-119.31433266305216,37.956543653645085],[-119.31432769598258,37.95651125420181],[-119.31432138343408,37.95647900192266],[-119.31431373226253,37.95644693182695],[-119.31430475077724,37.9564150787361],[-119.3142944487319,37.956383477235846],[-119.3142828373141,37.95635216163878],[-119.31426992913293,37.95632116594696],[-119.31425618460173,37.95628825875848],[-119.31424374340651,37.95625502806391],[-119.31423261765825,37.956221506216394],[-119.31422281818705,37.95618772585256],[-119.31421435453176,37.95615371986065],[-119.31420723493068,37.956119521348505],[-119.31420146631352,37.956085163611434],[-119.31419705429462,37.956050680099594],[-119.31419479405163,37.95603320647191],[-119.31419179795823,37.95601580236917],[-119.31418806935841,37.95599848721321],[-119.31418361241353,37.955981280326576],[-119.31417843209773,37.95596420091094],[-119.3141725341924,37.95594726802578],[-119.31416592527965,37.95593050056698],[-119.31415861273504,37.95591391724584],[-119.31415060471934,37.95589753656815],[-119.31414191016935,37.9558813768136],[-119.31413253878802,37.95586545601524],[-119.31412250103351,37.95584979193954],[-119.31411180810768,37.95583440206643],[-119.31410047194339,37.955819303569854],[-119.31408850519134,37.95580451329857],[-119.31407592120584,37.95579004775741],[-119.31406273403005,37.95577592308879],[-119.31404895838017,37.955762155054735],[-119.31403460962903,37.95574875901931],[-119.31402671620474,37.95574138737526],[-119.31401914112128,37.95573380922908],[-119.31401189298967,37.955726033195326],[-119.31400498004919,37.955718068113505],[-119.31399841015809,37.955709923038015],[-119.31399219078465,37.955701607227866],[-119.31398632899871,37.95569313013614],[-119.3139808314636,37.95568450139929],[-119.31397570442854,37.955675730826066],[-119.31397095372166,37.95566682838655],[-119.31396658474318,37.955657804200676],[-119.3139626024595,37.95564866852677],[-119.31395901139732,37.95563943174986],[-119.31395581563866,37.95563010436996],[-119.3139530188162,37.95562069699004],[-119.3139412207914,37.955574543549204],[-119.31393113288726,37.955528136602794],[-119.3139227637342,37.95548151586747],[-119.31391612049154,37.95543472124278],[-119.31391474835216,37.955425265797416],[-119.31391296891137,37.95541585300376],[-119.3139107842481,37.95540649385807],[-119.31390819691467,37.955397199293955],[-119.31390520993381,37.95538798016947],[-119.31390182679515,37.95537884725465],[-119.31389805145109,37.95536981121876],[-119.3138938883122,37.955360882617896],[-119.31388934224205,37.95535207188263],[-119.31388441855165,37.95534338930584],[-119.31387912299307,37.955334845030684],[-119.31387346175278,37.95532644903877],[-119.31386744144451,37.95531821113847],[-119.3138610691014,37.95531014095342],[-119.3138543521679,37.95530224791139],[-119.31384729849088,37.955294541233194],[-119.31383991631073,37.955287029921884],[-119.31383221425152,37.95527972275228],[-119.31382420131106,37.95527262826082],[-119.31381588685025,37.95526575473535],[-119.31375585681802,37.95521621003669],[-119.31369789380143,37.95516514555888],[-119.31364205913361,37.955112615339154],[-119.31358841189505,37.95505867496567],[-119.3135370088511,37.95500338151881],[-119.31346807051743,37.95492425512671],[-119.31340203668829,37.95484359063865],[-119.31333896205504,37.954761454875175],[-119.31327889885722,37.95467791587537],[-119.3132218968392,37.95459304284056],[-119.31321041720108,37.95457607704178],[-119.31319819547723,37.95455943939784],[-119.31318524661113,37.95454315025082],[-119.31317158643513,37.95452722951668],[-119.31315723165135,37.95451169666095],[-119.31314219981108,37.954496570674834],[-119.31312650929343,37.95448187005211],[-119.31311017928272,37.95446761276652],[-119.3130932297452,37.95445381624969],[-119.31307568140453,37.95444049736988],[-119.3130575557164,37.954427672411384],[-119.31303887484242,37.95441535705461],[-119.31301966162295,37.954403566356824],[-119.31299993954914,37.9543923147339],[-119.3129683402373,37.95437436211094],[-119.31293745915616,37.95435564230391],[-119.31290732600324,37.954336173315475],[-119.31287796975668,37.95431597386874],[-119.3128494186474,37.954295063389296],[-119.312821700132,37.95427346198651],[-119.31281713506058,37.95426991601169],[-119.31281241913841,37.954266496045435],[-119.31280755791019,37.9542632061087],[-119.31280255709137,37.95426005006953],[-119.31279742256157,37.954257031638576],[-119.31279216035757,37.95425415436465],[-119.31278677666631,37.954251421630666],[-119.31278127781752,37.954248836649526],[-119.31277567027631,37.954246402460484],[-119.31276996063566,37.95424412192548],[-119.31276415560853,37.954241997725745],[-119.31275826202,37.95424003235878],[-119.31275228679932,37.95423822813534],[-119.3127462369717,37.95423658717664],[-119.31274011965007,37.95423511141205],[-119.31273394202671,37.9542338025766],[-119.31272771136477,37.954232662209144],[-119.31272143498981,37.95423169165044],[-119.31271512028113,37.95423089204161],[-119.31270877466302,37.95423026432277],[-119.3127024055962,37.95422980923191],[-119.31269602056894,37.954229527304115],[-119.31268962708822,37.95422941887085],[-119.31268323267105,37.95422948405961],[-119.31267684483542,37.954229722793734],[-119.31267047109174,37.95423013479256],[-119.31266411893367,37.954230719571676],[-119.31265779582967,37.95423147644354],[-119.31265150921391,37.954232404518294],[-119.31264526647772,37.954233502704774],[-119.31263907496083,37.954234769711796],[-119.31263294194275,37.95423620404976],[-119.3126268746342,37.95423780403224],[-119.3126208801687,37.95423956777811],[-119.31261496559402,37.954241493213715],[-119.31260913786414,37.95424357807523],[-119.3126034038308,37.95424581991148],[-119.31259782202436,37.954248000981806],[-119.31259214789844,37.95425002720288],[-119.31258638830235,37.954251896128795],[-119.31258055018854,37.95425360550356],[-119.31257464060425,37.95425515326378],[-119.31256866668302,37.954256537541085],[-119.31256263563603,37.95425775666457],[-119.31255655474342,37.95425880916257],[-119.31255043134554,37.954259693764605],[-119.31254427283397,37.95426040940288],[-119.31253808664276,37.954260955213535],[-119.31253188023933,37.9542613305377],[-119.31252566111549,37.95426153492233],[-119.31251943677842,37.95426156812071],[-119.31251321474159,37.954261430092764],[-119.31250700251572,37.95426112100509],[-119.31250080759965,37.95426064123082],[-119.31249463747132,37.954259991349076],[-119.3124884995788,37.954259172144354],[-119.31248240133117,37.95425818460551],[-119.31247635008974,37.9542570299246],[-119.31247035315903,37.954255709495506],[-119.31246441777795,37.95425422491209],[-119.31245855111123,37.95425257796642],[-119.31245276024056,37.95425077064653],[-119.31244705215614,37.954248805134114],[-119.31244143374832,37.95424668380167],[-119.31243591179907,37.95424440920996],[-119.31243049297402,37.95424198410463],[-119.31242518381428,37.95423941141308],[-119.31241999072857,37.954236694240805],[-119.31241491998553,37.954233835867754],[-119.31240997770608,37.954230839744305],[-119.31240516985612,37.95422770948708],[-119.31240050223919,37.95422444887468],[-119.3123959804896,37.954221061842986],[-119.31239161006563,37.95421755248055],[-119.31238739624277,37.95421392502355],[-119.31238334410762,37.95421018385073],[-119.31237945855146,37.954206333478076],[-119.31237574426461,37.954202378553454],[-119.31237220573057,37.95419832385085],[-119.3123688472207,37.95419417426471],[-119.31236567278904,37.95418993480409],[-119.31236268626748,37.95418561058646],[-119.31235989126104,37.95418120683162],[-119.31235729114354,37.95417672885536],[-119.31235488905355,37.95417218206311],[-119.3123526878907,37.95416757194333],[-119.31235069031187,37.954162904060944],[-119.31234889872843,37.95415818405054],[-119.31234731530289,37.95415341760971],[-119.3123459419466,37.95414861049207],[-119.31234478031735,37.9541437685003],[-119.31234383181724,37.95413889747922],[-119.31234309759121,37.95413400330865],[-119.3123425785255,37.95412909189639],[-119.3123422752466,37.95412416917101],[-119.31234218812061,37.95411924107478],[-119.31234231725263,37.95411431355645],[-119.31234266248674,37.95410939256402],[-119.31234322340616,37.95410448403764],[-119.3123439993338,37.95409959390243],[-119.31234498933293,37.9540947280613],[-119.3123461922085,37.95408989238782],[-119.3123476065085,37.954085092719126],[-119.31234923052564,37.95408033484895],[-119.31235106229956,37.95407562452054],[-119.31235309961905,37.954070967419725],[-119.31235534002481,37.954066369168096],[-119.31235778081245,37.954061835316224],[-119.31236041903561,37.954057371336965],[-119.31236325150968,37.954052982618755],[-119.3123662748155,37.954048674459244],[-119.31236948530365,37.954044452058845],[-119.31237287909867,37.954040320514366],[-119.3123764521039,37.95403628481304],[-119.31238020000632,37.95403234982637],[-119.3123841182818,37.95402852030428],[-119.3123882022006,37.954024800869355],[-119.31239035778187,37.954022837191],[-119.31239242529418,37.954020815010516],[-119.31239440220698,37.95401873680295],[-119.31239628610064,37.954016605112024],[-119.31239807466929,37.954014422546784],[-119.31239976572384,37.954012191778645],[-119.31240135719449,37.95400991553797],[-119.31240284713336,37.95400759661081],[-119.31240423371678,37.95400523783545],[-119.3124055152477,37.95400284209895],[-119.31240669015754,37.954000412333606],[-119.31240775700829,37.953997951513344],[-119.31240871449411,37.953995462650134],[-119.31240956144319,37.95399294879022],[-119.31241029681883,37.95399041301054],[-119.31241091972097,37.95398785841474],[-119.31241142938723,37.953985288129594],[-119.31241182519382,37.953982705300994],[-119.31241210665627,37.95398011309025],[-119.31241227343013,37.95397751467013],[-119.31241232531126,37.953974913221],[-119.31241226223618,37.95397231192694],[-119.31241208428209,37.95396971397183],[-119.31241179166683,37.95396712253547],[-119.31241138474854,37.95396454078968],[-119.31241086402534,37.95396197189444],[-119.3124102301345,37.95395941899395],[-119.31240948385198,37.95395688521287],[-119.31240862609113,37.95395437365246],[-119.31240765790189,37.95395188738678],[-119.31240658046927,37.95394942945888],[-119.31240539511201,37.95394700287724],[-119.31240410328098,37.953944610611856],[-119.31240270655731,37.95394225559077],[-119.31240120665058,37.95393994069642],[-119.31239960539658,37.95393766876219],[-119.31239790475522,37.95393544256881],[-119.31239610680802,37.95393326484106],[-119.31229274392624,37.95380972745142],[-119.31219295481947,37.953684361370634],[-119.31194769494186,37.95337723945543],[-119.31169255952291,37.95307520424162],[-119.31142771683858,37.952778454797574],[-119.31128348887609,37.952625660969176],[-119.31113398307642,37.95247608189628],[-119.31097931369102,37.95232983185509],[-119.31081959891416,37.95218702257782],[-119.31062722513731,37.95201473413844],[-119.31044129458243,37.951838066361155],[-119.31026196613625,37.95165717026096],[-119.31023639771696,37.95162959551962],[-119.31021206821721,37.951601326684745],[-119.31018900765923,37.951572398641304],[-119.31016724449924,37.95154284708775],[-119.3101468055924,37.95151270849197],[-119.31012771615947,37.95148202004621],[-119.31010999975587,37.95145081962118],[-119.3100936782426,37.9514191457194],[-119.31007877175914,37.95138703742756],[-119.31006529869883,37.95135453436845],[-119.31005327568592,37.95132167665189],[-119.31004271755526,37.951288504825285],[-119.30999771748326,37.95112363662831],[-119.30995959861497,37.95095768439541],[-119.30992840225588,37.95079082815329],[-119.30992610126467,37.95077858537433],[-119.30992326897685,37.95076641263522],[-119.30991990875543,37.950754324388335],[-119.3099160245902,37.950742334985875],[-119.30991162109294,37.95073045866251],[-119.3099067034921,37.95071870951876],[-119.30990127762644,37.950707101504065],[-119.30989534993824,37.95069564840036],[-119.3098889274655,37.950684363805614],[-119.3098820178337,37.95067326111775],[-119.30987462924664,37.95066235351872],[-119.30986677047684,37.95065165395877],[-119.309858450855,37.95064117514123],[-119.30984968025894,37.95063092950733],[-119.30984046910199,37.95062092922139],[-119.30983082832037,37.950611186156465],[-119.30982076936054,37.95060171188022],[-119.30981030416534,37.950592517641205],[-119.30979944515992,37.95058361435544],[-119.309788205237,37.9505750125935],[-119.30977659774153,37.95056672256805],[-119.30976463645483,37.95055875412154],[-119.30975233557825,37.95055111671466],[-119.30973970971634,37.950543819415074],[-119.30972677385951,37.950536870886616],[-119.30971354336609,37.95053027937904],[-119.30970003394432,37.95052405271826],[-119.30968626163356,37.95051819829694],[-119.30967224278524,37.95051272306585],[-119.30965799404353,37.950507633525554],[-119.30964353232554,37.95050293571871],[-119.30962753441322,37.95049774314469],[-119.30961176783225,37.950492124405244],[-119.30959625068205,37.95048608595047],[-119.30958100077562,37.95047963471231],[-119.30956603561921,37.95047277809652],[-119.30955137239215,37.950465523974195],[-119.30953702792719,37.950457880672865],[-119.30952301869108,37.95044985696662],[-119.30950936076576,37.950441462066465],[-119.30949606982986,37.95043270560935],[-119.30948316114075,37.95042359764736],[-119.30947064951684,37.950414148636014],[-119.30945854932088,37.95040436942242],[-119.30944983716937,37.95039682724389],[-119.3094414612482,37.95038904990326],[-119.3094334316737,37.95038104679399],[-119.30942575814386,37.950372827582214],[-119.30941844992662,37.95036440219511],[-119.30941151584877,37.950355780808835],[-119.30940496428506,37.95034697383628],[-119.3093988031484,37.95033799191447],[-119.30939303987996,37.95032884589174],[-119.30938768144048,37.95031954681464],[-119.30938273430174,37.95031010591453],[-119.30937820443867,37.9503005345941],[-119.30937409732228,37.95029084441355],[-119.30937041791293,37.95028104707663],[-119.30936717065447,37.95027115441647],[-119.30936435946867,37.95026117838138],[-119.30936198775075,37.95025113102037],[-119.30936005836503,37.950241024468525],[-119.30935857364163,37.95023087093249],[-119.30935753537365,37.95022068267561],[-119.30935694481484,37.95021047200315],[-119.30935680267835,37.9502002512475],[-119.30935710913563,37.95019003275318],[-119.3093578638164,37.95017982886194],[-119.30935906580892,37.950169651897994],[-119.3093607136613,37.950159514152915],[-119.30936280538309,37.95014942787097],[-119.30936533844772,37.950139405234225],[-119.30936830979567,37.950129458347945],[-119.30937171583797,37.95011959922578],[-119.3093755524607,37.9501098397755],[-119.30937981502983,37.95010019178437],[-119.30938449839698,37.95009066690516],[-119.30938959690545,37.950081276641825],[-119.30939510439718,37.950072032335775],[-119.30940101422021,37.95006294515217],[-119.30940731923658,37.95005402606633],[-119.30941401183104,37.9500452858506],[-119.30942108392027,37.95003673506126],[-119.30942852696258,37.95002838402575],[-119.3094363319683,37.95002024283037],[-119.3094444895106,37.95001232130785],[-119.30945298973677,37.9500046290257],[-119.30946182238037,37.949997175274476],[-119.30947097677335,37.94998996905667],[-119.30948044185915,37.94998301907583],[-119.309490206206,37.94997633372599],[-119.30950025802055,37.94996992108156],[-119.30951058516246,37.94996378888765],[-119.3095211751587,37.949957944550526],[-119.30953201521885,37.94995239512888],[-119.30954309225046,37.94994714732521],[-119.3095480148877,37.9499448152089],[-119.30955283222622,37.94994234906767],[-119.30955753844901,37.94993975187939],[-119.30956212787322,37.949937026780276],[-119.30956659495695,37.9499341770609],[-119.30957093430617,37.94993120616245],[-119.309575140681,37.94992811767228],[-119.30957920900217,37.949924915319855],[-119.30958313435706,37.94992160297206],[-119.30958691200578,37.949918184628665],[-119.30959053738674,37.9499146644174],[-119.30959400612221,37.949911046588994],[-119.30959731402366,37.94990733551204],[-119.30960045709674,37.94990353566776],[-119.3096034315461,37.94989965164458],[-119.30960623378013,37.949895688132514],[-119.30960886041504,37.94989164991762],[-119.30961130827916,37.94988754187607],[-119.30961357441666,37.94988336896849],[-119.30961565609117,37.94987913623372],[-119.30961755078904,37.94987484878289],[-119.30961925622243,37.949870511793186],[-119.30962077033203,37.94986613050161],[-119.30962209128951,37.94986171019866],[-119.30962321749989,37.94985725622196],[-119.30962414760326,37.94985277394977],[-119.30962488047649,37.94984826879451],[-119.30962541523472,37.94984374619628],[-119.3096257512322,37.94983921161619],[-119.30962588806328,37.949834670529825],[-119.30962582556279,37.94983012842065],[-119.3096255638062,37.94982559077334],[-119.3096251031096,37.949821063067205],[-119.30962444402937,37.949816550769505],[-119.3096235873614,37.949812059328956],[-119.30962253414013,37.94980759416905],[-119.3096212856374,37.94980316068154],[-119.30961984336086,37.94979876421993],[-119.3096182090521,37.94979441009306],[-119.30961638468459,37.94979010355859],[-119.30948580623925,37.94950885408692],[-119.30948257480213,37.949502467719995],[-119.30947906301554,37.94949617484381],[-119.30947527518445,37.94948998317246],[-119.30947121595224,37.949483900295924],[-119.30946689029487,37.94947793367084],[-119.30946230351506,37.94947209061135],[-119.30945746123547,37.94946637828013],[-119.30945236939202,37.94946080367954],[-119.30944703422657,37.94945537364321],[-119.30944146227925,37.94945009482743],[-119.30943566038039,37.949444973703216],[-119.30942963564222,37.94944001654824],[-119.30942339545017,37.94943522943915],[-119.30941694745371,37.9494306182442],[-119.30941029955714,37.94942618861598],[-119.3094034599097,37.949421945984454],[-119.30939643689571,37.94941789555042],[-119.30938923912431,37.949414042279045],[-119.30938187541878,37.949410390893846],[-119.30937435480588,37.949406945870805],[-119.30936668650466,37.949403711432936],[-119.30935887991525,37.94940069154517],[-119.3093553008053,37.94939930816035],[-119.3093517838184,37.94939782823724],[-119.30934833310577,37.9493962535226],[-119.3093449527403,37.94939458587511],[-119.30934164671186,37.94939282726309],[-119.30933841892258,37.94939097976225],[-119.3093352731823,37.949389045553225],[-119.30933221320389,37.94938702691902],[-119.30932924259915,37.94938492624219],[-119.3093263648743,37.949382746002236],[-119.3093235834259,37.94938048877248],[-119.30932090153692,37.9493781572172],[-119.30931832237286,37.94937575408835],[-119.30931584897787,37.94937328222233],[-119.3093134842714,37.949370744536736],[-119.30931123104443,37.949368144026835],[-119.30930909195652,37.949365483762044],[-119.30930706953244,37.94936276688226],[-119.30930516615923,37.94935999659431],[-119.30930338408348,37.94935717616792],[-119.30930172540856,37.94935430893212],[-119.30926060837598,37.94927615829378],[-119.30922299591545,37.94919690850063],[-119.30918893476829,37.949116658060824],[-119.3091523282627,37.94901928576824],[-119.3091199882717,37.94892097089293],[-119.30909195332494,37.94882183061824],[-119.30906825682034,37.948721983110836],[-119.30904892698437,37.9486215473799],[-119.30904759554679,37.948612637161105],[-119.30904662923092,37.94860369747026],[-119.3090460290505,37.94859473768681],[-119.30904579563511,37.948585767211306],[-119.30904592922948,37.94857679545538],[-119.30904642969335,37.9485678318322],[-119.30904729650149,37.94855888574622],[-119.30904852874433,37.94854996658359],[-119.30905012512883,37.9485410837022],[-119.30905208398005,37.9485322464218],[-119.30905440324258,37.94852346401441],[-119.30905708048302,37.94851474569437],[-119.30907122803585,37.94846852778553],[-119.30908339199244,37.94842195717286],[-119.30909355841757,37.948375087223035],[-119.309101715665,37.94832797164557],[-119.30910785439099,37.948280664431415],[-119.30911196756489,37.94823321979098],[-119.30911405047725,37.94818569209208],[-119.3091141007451,37.948138135797585],[-119.30911211831476,37.948090605403024],[-119.30910634505243,37.94802318961911],[-119.30909755086492,37.94795597881135],[-119.30908574686366,37.9478890578377],[-119.30907094796004,37.94782251118992],[-119.30905317284659,37.94775642288699],[-119.30904486119495,37.94772561283178],[-119.30903788894236,37.9476945951534],[-119.309032264292,37.947663406353186],[-119.3090279938612,37.94763208313383],[-119.30902508267368,37.947600662356145],[-119.30902353415351,37.94756918099569],[-119.30902335012125,37.9475376760993],[-119.30902453079175,37.94750618474142],[-119.30902707477382,37.94747474398058],[-119.30903097907208,37.94744339081565],[-119.30903623909025,37.94741216214241],[-119.30904284863675,37.94738109471011],[-119.30905079993201,37.947350225078196],[-119.30906008361737,37.947319589573254],[-119.30907068876644,37.94728922424639],[-119.30908260289772,37.9472591648307],[-119.30910916773497,37.9471920315915],[-119.30913272896801,37.94712419883073],[-119.30915325734493,37.9470557507885],[-119.30917072738048,37.946986772468826],[-119.3091851173876,37.946917349534],[-119.30919640950447,37.94684756819825],[-119.30919698394946,37.94684266224514],[-119.30919734286874,37.94683774345231],[-119.30919748582923,37.94683281775544],[-119.30919741265846,37.94682789109852],[-119.30919712344478,37.94682296942668],[-119.30919661853724,37.946818058679064],[-119.30919589854513,37.94681316478158],[-119.30919496433737,37.946808293639904],[-119.30919381704132,37.94680345113211],[-119.30919245804147,37.946798643101864],[-119.30919088897787,37.9467938753511],[-119.30918911174396,37.94678915363321],[-119.30918712848441,37.946784483646056],[-119.30918494159252,37.946779871025],[-119.3091825537073,37.94677532133625],[-119.30917996771035,37.946770840070016],[-119.30917718672224,37.946766432634],[-119.30917421409896,37.94676210434674],[-119.30917105342763,37.94675786043132],[-119.30916770852242,37.94675370600896],[-119.30916418341967,37.94674964609293],[-119.3091604823733,37.94674568558245],[-119.30915660984944,37.94674182925675],[-119.30915257052122,37.946738081769375],[-119.30914836926303,37.94673444764249],[-119.30914401114467,37.94673093126152],[-119.30913950142516,37.94672753686974],[-119.3091348455466,37.946724268563266],[-119.30913004912726,37.94672113028606],[-119.3091251179552,37.94671812582513],[-119.30912005798099,37.94671525880606],[-119.30911487531063,37.946712532688515],[-119.30910957619818,37.94670995076222],[-119.30910416703823,37.946707516142794],[-119.30909865435817,37.94670523176819],[-119.30896975113578,37.94665191308529],[-119.30884315743856,37.94659523066683],[-119.30883878859214,37.94659311619848],[-119.30883451512928,37.94659088283633],[-119.30883034220751,37.94658853327579],[-119.30882627486295,37.946586070352424],[-119.30882231800433,37.946583497038645],[-119.30881847640705,37.94658081644014],[-119.30881475470741,37.946578031791994],[-119.30881115739693,37.94657514645492],[-119.30880768881715,37.94657216391114],[-119.3088043531541,37.94656908776016],[-119.30880115443347,37.9465659217145],[-119.30879809651567,37.94656266959517],[-119.3087951830912,37.946559335326995],[-119.30879241767613,37.94655592293398],[-119.30878980360794,37.946552436534496],[-119.3087873440414,37.9465488803361],[-119.30878504194489,37.94654525863065],[-119.3087829000967,37.94654157578904],[-119.30878092108168,37.94653783625599],[-119.30877910728827,37.94653404454459],[-119.3087774609054,37.946530205230935],[-119.30877598392003,37.946526322948536],[-119.30877467811463,37.94652240238277],[-119.30877354506516,37.94651844826525],[-119.30877258613894,37.94651446536805],[-119.3087718024933,37.94651045849796],[-119.30877119507393,37.94650643249076],[-119.3087707646139,37.946502392205225],[-119.30877051163266,37.94649834251749],[-119.30877043643551,37.94649428831492],[-119.30877053911318,37.94649023449042],[-119.30877081954169,37.946486185936394],[-119.30877127738262,37.94648214753885],[-119.30877191208337,37.94647812417159],[-119.3087727228779,37.94647412069027],[-119.3087737087877,37.94647014192654],[-119.30877541452739,37.946463267681125],[-119.30877682226641,37.94645635124589],[-119.30877793035644,37.94644940071939],[-119.3087787375001,37.94644242424011],[-119.30877924275242,37.94643542997693],[-119.30877944552184,37.94642842611955],[-119.308779345571,37.946421420868894],[-119.30877894301707,37.946414422427516],[-119.30877823833144,37.94640743899003],[-119.30877723233935,37.94640047873338],[-119.30877592621881,37.94639354980749],[-119.30877432149927,37.94638666032554],[-119.30877242005981,37.94637981835447],[-119.3087702241269,37.946373031905686],[-119.30876773627189,37.94636630892552],[-119.3087649594079,37.94635965728599],[-119.30876189678649,37.946353084775595],[-119.30875855199379,37.94634659909016],[-119.30875492894636,37.94634020782386],[-119.30875103188652,37.94633391846029],[-119.30874686537742,37.94632773836377],[-119.3087424342978,37.94632167477062],[-119.30873774383605,37.946315734780775],[-119.3087327994844,37.94630992534943],[-119.30872760703231,37.94630425327889],[-119.30872217255968,37.94629872521068],[-119.30871650242987,37.94629334761767],[-119.30871060328217,37.94628812679646],[-119.30870448202393,37.94628306886027],[-119.30869814582266,37.94627817973138],[-119.30869160209753,37.946273465134595],[-119.30868485851066,37.946268930590236],[-119.30867792295824,37.94626458140784],[-119.3085601374875,37.946191114550125],[-119.30844509247373,37.946114973312774],[-119.30833288471082,37.94603622176333],[-119.30822360860446,37.9459549261655],[-119.30770823042832,37.9455639005292],[-119.30770530655568,37.945561777539474],[-119.30770229199616,37.94555973563722],[-119.30769919033398,37.945557777250116],[-119.3076960052567,37.94555590470652],[-119.30769274055116,37.945554120232735],[-119.30768940009882,37.94555242595038],[-119.30768598787124,37.94555082387378],[-119.30768250792528,37.94554931590772],[-119.30767896439833,37.94554790384504],[-119.30767536150337,37.94554658936456],[-119.30767170352398,37.9455453740291],[-119.30766799480915,37.94554425928361],[-119.30766423976834,37.94554324645341],[-119.30766044286592,37.9455423367427],[-119.30765660861614,37.94554153123305],[-119.30765274157761,37.94554083088214],[-119.30764884634796,37.94554023652261],[-119.30764492755827,37.94553974886114],[-119.30764098986769,37.94553936847752],[-119.30763703795783,37.945539095823975],[-119.30763307652718,37.945538931224675],[-119.3076291102856,37.94553887487534],[-119.3076251439486,37.945538926842914],[-119.30762118223183,37.94553908706567],[-119.3076172298455,37.94553935535307],[-119.30761329148866,37.94553973138616],[-119.30760937184368,37.945540214717866],[-119.30760547557077,37.94554080477356],[-119.30760160730222,37.94554150085168],[-119.30759777163715,37.94554230212466],[-119.30759397313582,37.945543207639865],[-119.30759021631438,37.94554421632068],[-119.30758650563938,37.945545326967896],[-119.30758284552252,37.945546538261],[-119.3075792403154,37.945547848759894],[-119.30757569430433,37.94554925690649],[-119.30757221170522,37.94555076102663],[-119.30756879665866,37.945552359332005],[-119.30756545322481,37.94555404992236],[-119.3075621853788,37.945555830787725],[-119.30755899700586,37.94555769981077],[-119.30755589189665,37.94555965476942],[-119.30755287374298,37.94556169333934],[-119.30754994613315,37.94556381309685],[-119.30754711254792,37.945566011521706],[-119.30754437635618,37.945568286000174],[-119.30754174081106,37.945570633828055],[-119.30753920904603,37.94557305221401],[-119.30753678407116,37.9455755382827],[-119.30753446876959,37.94557808907843],[-119.30753226589404,37.945580701568474],[-119.30753017806357,37.945583372646816],[-119.30752820776043,37.945586099137714],[-119.30752635732722,37.9455888777996],[-119.30752462896393,37.945591705328866],[-119.30752302472551,37.94559457836379],[-119.30752154651927,37.94559749348854],[-119.3075201961027,37.94560044723727],[-119.30751897508134,37.94560343609821],[-119.30751788490694,37.9456064565178],[-119.30751692687562,37.94560950490503],[-119.30751610212644,37.94561257763559],[-119.30751541163998,37.94561567105621],[-119.30751489927947,37.94561796486121],[-119.30751428667368,37.94562024319856],[-119.30751357456101,37.9456225033218],[-119.30751276379998,37.94562474250639],[-119.30751185536784,37.94562695805302],[-119.30751085035972,37.945629147290944],[-119.30750974998715,37.94563130758108],[-119.30750855557652,37.94563343631925],[-119.30750726856775,37.94563553093928],[-119.3075058905122,37.94563758891622],[-119.30750442307111,37.94563960776918],[-119.30750286801346,37.945641585064486],[-119.30750122721379,37.94564351841858],[-119.30749950265007,37.94564540550083],[-119.30749769640121,37.945647244036394],[-119.30749581064458,37.945649031809005],[-119.30749384765342,37.945650766663476],[-119.30749180979404,37.94565244650854],[-119.30748969952309,37.94565406931914],[-119.30748751938435,37.94565563313907],[-119.307485272006,37.94565713608313],[-119.3074829600972,37.945658576339596],[-119.30748058644484,37.945659952172235],[-119.30747815391035,37.94566126192253],[-119.30747566542608,37.945662504011615],[-119.30747312399183,37.94566367694215],[-119.30747053267123,37.94566477930023],[-119.3074678945881,37.94566580975697],[-119.30746521292252,37.94566676707018],[-119.30746249090724,37.945667650085845],[-119.30745973182353,37.94566845773949],[-119.30745693899745,37.945669189057554],[-119.30745411579566,37.945669843158385],[-119.30745126562148,37.94567041925352],[-119.30744839191071,37.945670916648496],[-119.30744549812759,37.945671334743686],[-119.30744258776045,37.945671673035115],[-119.30743966431771,37.945671931114944],[-119.30743673132348,37.9456721086721],[-119.30743379231349,37.945672205492535],[-119.30743085083057,37.945672221459496],[-119.30742791042063,37.9456721565538],[-119.30742497462832,37.94567201085363],[-119.30742204699264,37.945671784534646],[-119.30741913104275,37.94567147786968],[-119.30741623029384,37.94567109122841],[-119.3074133482426,37.9456706250769],[-119.30741048836337,37.94567007997713],[-119.30740765410363,37.94566945658616],[-119.30740484888001,37.94566875565549],[-119.30740207607415,37.94566797803007],[-119.3073993390286,37.94566712464732],[-119.30739664104283,37.94566619653597],[-119.30739398536917,37.945665194814836],[-119.307391375209,37.945664120691475],[-119.30738881370874,37.945662975460706],[-119.3073863039563,37.9456617605031],[-119.30738384897708,37.94566047728324],[-119.30738145173052,37.94565912734803],[-119.30737911510644,37.94565771232477],[-119.30737684192157,37.945656233919266],[-119.30737463491617,37.94565469391368],[-119.30737249675079,37.94565309416444],[-119.30737043000285,37.94565143660004],[-119.30736843716379,37.94564972321863],[-119.30736652063597,37.94564795608563],[-119.30736468272964,37.94564613733128],[-119.3073629256604,37.945644269148055],[-119.30736125154637,37.945642353788],[-119.30735966240557,37.94564039356006],[-119.30734800980983,37.94562600683637],[-119.30733574824572,37.94561194108818],[-119.30732289179912,37.9455982124736],[-119.30730945523918,37.945584836763366],[-119.30729545400153,37.94557182932285],[-119.3072809041704,37.94555920509441],[-119.30726582246015,37.94554697858012],[-119.30725022619622,37.94553516382517],[-119.30723413329497,37.945523774401785],[-119.3072175622434,37.94551282339354],[-119.30720053207764,37.94550232338038],[-119.30718306236125,37.945492286424226],[-119.30716517316274,37.945482724054955],[-119.30714688503238,37.94547364725734],[-119.30712821897878,37.945465066458304],[-119.30710919644457,37.945456991515044],[-119.30708983928194,37.94544943170358],[-119.30706271253938,37.94543883459645],[-119.3070360580144,37.94542751095381],[-119.30700990672501,37.94541547395315],[-119.30698428910358,37.94540273760203],[-119.30695923496135,37.945389316721915],[-119.30693477345382,37.94537522693083],[-119.30691093304674,37.94536048462524],[-119.30688774148311,37.94534510696087],[-119.30686522575074,37.94532911183288],[-119.30672723815529,37.94523088352767],[-119.3065853447978,37.945136209128705],[-119.30643969157765,37.94504518597382],[-119.30629042825825,37.94495790764644],[-119.3062876360873,37.94495638593718],[-119.30628477938615,37.94495494129174],[-119.30628186154497,37.94495357542456],[-119.30627888602656,37.944952289956554],[-119.30627585636206,37.94495108641329],[-119.30627277614703,37.94494996622306],[-119.30626964903685,37.944948930715256],[-119.30626647874264,37.94494798111878],[-119.30626326902674,37.94494711856051],[-119.30626002369834,37.944946344064185],[-119.30625674660877,37.944945658548846],[-119.30625344164714,37.94494506282806],[-119.30625011273564,37.94494455760884],[-119.30624676382486,37.94494414349072],[-119.3062433988891,37.94494382096514],[-119.30624002192171,37.94494359041491],[-119.30623663693028,37.94494345211357],[-119.30623324793203,37.9449434062253],[-119.3062298589488,37.944943452804516],[-119.30622647400246,37.94494359179597],[-119.30622309711013,37.94494382303472],[-119.30621973227936,37.94494414624633],[-119.3062163835033,37.94494456104724],[-119.30621305475614,37.944945066945145],[-119.30620974998834,37.94494566333971],[-119.30620647312172,37.94494634952315],[-119.30620322804522,37.944947124681136],[-119.30620001860986,37.94494798789375],[-119.30619684862448,37.94494893813658],[-119.30619372185105,37.944949974281904],[-119.30619064200029,37.94495109510011],[-119.30618761272721,37.944952299261],[-119.3061846376268,37.944953585335604],[-119.30618172022979,37.94495495179765],[-119.30617886399838,37.94495639702548],[-119.30617607232223,37.944957919303974],[-119.30617334851436,37.94495951682653],[-119.30617069580728,37.944961187697345],[-119.30616811734907,37.94496292993348],[-119.30616561619976,37.94496474146731],[-119.30616319532756,37.94496662014904],[-119.30616085760546,37.94496856374909],[-119.30615860580781,37.94497056996094],[-119.30615644260688,37.94497263640367],[-119.3061543705699,37.944974760624966],[-119.30615239215587,37.94497694010385],[-119.30615050971267,37.94497917225386],[-119.30614872547432,37.94498145442598],[-119.30614704155826,37.94498378391184],[-119.30614545996289,37.94498615794689],[-119.30614398256522,37.944988573713765],[-119.30614261111855,37.94499102834552],[-119.30614134725043,37.94499351892913],[-119.3061401924608,37.94499604250888],[-119.30613914812012,37.94499859608991],[-119.30613821546777,37.94500117664175],[-119.30613739561058,37.94500378110191],[-119.30613668952155,37.94500640637954],[-119.30613609803864,37.94500904935908],[-119.3061356218638,37.94501170690396],[-119.306134592513,37.94501744151089],[-119.30613331077157,37.94502314413495],[-119.30613177820474,37.94502880781224],[-119.30612999668398,37.945034425626375],[-119.30612796838477,37.94503999071698],[-119.30612569578398,37.94504549628812],[-119.30612318165684,37.94505093561645],[-119.30612042907347,37.945056302059584],[-119.30611744139524,37.94506158906412],[-119.30611422227061,37.94506679017368],[-119.30611077563061,37.94507189903673],[-119.30610710568425,37.94507690941445],[-119.30610321691312,37.94508181518827],[-119.30609911406604,37.94508661036729],[-119.30609480215332,37.94509128909576],[-119.30609028644062,37.9450958456601],[-119.30608557244234,37.94510027449588],[-119.3060806659151,37.94510457019471],[-119.30607557285069,37.94510872751074],[-119.3060702994686,37.94511274136712],[-119.3060648522086,37.94511660686218],[-119.30605923772275,37.94512031927549],[-119.30605346286737,37.94512387407344],[-119.30604753469457,37.945127266914994],[-119.3060414604438,37.94513049365689],[-119.30603524753273,37.94513355035866],[-119.3060289035485,37.94513643328751],[-119.3060224362383,37.94513913892283],[-119.30601585349984,37.945141663960555],[-119.30600916337191,37.945144005317175],[-119.3060023740244,37.94514616013339],[-119.30599549374828,37.94514812577782],[-119.30598853094571,37.94514989985004],[-119.30598149411955,37.94515148018356],[-119.30597439186306,37.945152864848524],[-119.3059672328494,37.94515405215399],[-119.30596002582105,37.94515504065004],[-119.30595277957917,37.94515582912951],[-119.30594550297275,37.945156416629544],[-119.30593820488788,37.94515680243272],[-119.3059308942369,37.94515698606782],[-119.30592357994742,37.94515696731067],[-119.30591627095163,37.94515674618416],[-119.30590897617512,37.94515632295831],[-119.3059017045262,37.94515569814996],[-119.30589446488489,37.94515487252211],[-119.30588726609216,37.94515384708303],[-119.30588011693905,37.945152623084944],[-119.30587302615602,37.94515120202262],[-119.30586600240223,37.945149585631405],[-119.305859054255,37.945147775885204],[-119.30585219019925,37.945145774994096],[-119.30584541861732,37.94514358540148],[-119.30583874777855,37.94514120978133],[-119.30583218582925,37.94513865103467],[-119.30582574078278,37.94513591228621],[-119.3058112067954,37.945129726049565],[-119.30579641877804,37.94512392964219],[-119.30578139339781,37.94511852959704],[-119.30576614758945,37.94511353200033],[-119.30575069853609,37.94510894248469],[-119.30573506364986,37.94510476622284],[-119.30571926055244,37.94510100792171],[-119.30570330705498,37.945097671817166],[-119.30568722113821,37.94509476166921],[-119.30567102093208,37.94509228075782],[-119.30565472469532,37.9450902318791],[-119.30563835079487,37.94508861734229],[-119.30562191768526,37.945087438967114],[-119.30560544388774,37.94508669808165],[-119.30558894796935,37.94508639552094],[-119.30557244852216,37.945086531625975],[-119.30555596414214,37.94508710624337],[-119.30553951340826,37.9450881187255],[-119.3055231148617,37.945089567931205],[-119.3055067869847,37.94509145222717],[-119.30549054817986,37.94509376948962],[-119.30547088421767,37.94509660206596],[-119.30545112100005,37.94509896201921],[-119.3054312766367,37.94510084718689],[-119.30541136931174,37.945102255841526],[-119.30539141726702,37.94510318669231],[-119.30537143878533,37.94510363888629],[-119.30535495983435,37.945103590252394],[-119.30533849270061,37.94510309374412],[-119.30532205678902,37.94510214994655],[-119.30530567146765,37.94510075997186],[-119.30528935604491,37.94509892545797],[-119.30527312974688,37.9450966485667],[-119.30525701169461,37.94509393198111],[-119.30524102088155,37.94509077890244],[-119.30522517615127,37.94508719304626],[-119.30520949617512,37.945083178638136],[-119.30519399943036,37.94507874040864],[-119.30517870417826,37.94507388358779],[-119.30516362844268,37.94506861389882],[-119.3051487899888,37.945062937551526],[-119.30513420630213,37.945056861234924],[-119.30511989456797,37.94505039210929],[-119.30510587165115,37.94504353779784],[-119.30509215407619,37.945036306377645],[-119.30507875800767,37.945028706370195],[-119.30507608782156,37.94502719229594],[-119.3050733526702,37.945025752781014],[-119.30507055587191,37.94502438957183],[-119.30506770081978,37.945023104322274],[-119.30506479097765,37.94502189859168],[-119.3050618298758,37.9450207738428],[-119.30505882110664,37.945019731440226],[-119.30505576832051,37.945018772648616],[-119.30505267522108,37.94501789863121],[-119.30504954556098,37.94501711044834],[-119.30504638313714,37.94501640905627],[-119.30504319178625,37.945015795305935],[-119.30503997538018,37.945015269941955],[-119.30503673782106,37.9450148336017],[-119.30503348303675,37.94501448681455],[-119.30503021497606,37.94501423000123],[-119.30502693760384,37.9450140634733],[-119.30502365489623,37.94501398743281],[-119.30502037083586,37.94501400197203],[-119.30501708940704,37.94501410707326],[-119.30501381459085,37.94501430260907],[-119.30501055036034,37.94501458834218],[-119.30500730067571,37.945014963925935],[-119.30500406947955,37.94501542890469],[-119.305000860692,37.945015982714324],[-119.30499767820604,37.94501662468293],[-119.30499452588269,37.94501735403168],[-119.30499140754641,37.94501816987569],[-119.30498832698039,37.94501907122518],[-119.30498528792208,37.94502005698664],[-119.30498229405848,37.945021125964075],[-119.3049793490218,37.94502227686064],[-119.30497645638503,37.94502350828],[-119.30497361965755,37.94502481872822],[-119.30497084228097,37.94502620661538],[-119.3049681276248,37.94502767025774],[-119.30496547898252,37.94502920787955],[-119.30496289956757,37.94503081761534],[-119.30496039250926,37.94503249751215],[-119.30495796084928,37.9450342455319],[-119.3049556075377,37.94503605955388],[-119.30495333542967,37.945037937377265],[-119.30495114728171,37.94503987672384],[-119.30494904574854,37.9450418752408],[-119.30494703337982,37.945043930503424],[-119.30494511261695,37.94504604001833],[-119.30494328579026,37.94504820122615],[-119.3049415551161,37.94505041150489],[-119.30493992269417,37.945052668172984],[-119.30493839050496,37.94505496849262],[-119.3049352866393,37.94505963246201],[-119.30493198368625,37.94506420987562],[-119.30492848548982,37.94506869540604],[-119.30492479612137,37.94507308383288],[-119.3049209198747,37.94507737004862],[-119.30491686126113,37.94508154906486],[-119.30491262500422,37.94508561601781],[-119.30490821603426,37.94508956617418],[-119.30490363948259,37.945093394936656],[-119.30489890067557,37.945097097849136],[-119.3048940051284,37.94510067060199],[-119.30488895853873,37.94510410903708],[-119.30488376677995,37.94510740915265],[-119.3048784358945,37.94511056710786],[-119.30487297208663,37.94511357922733],[-119.30486738171535,37.94511644200542],[-119.304861671287,37.94511915211032],[-119.30485584744763,37.94512170638787],[-119.30484991697521,37.945124101865304],[-119.30484388677195,37.94512633575464],[-119.30483776385603,37.945128405455975],[-119.3048315553536,37.94513030856052],[-119.30482526849035,37.945132042853345],[-119.30481891058324,37.94513360631598],[-119.30481248903189,37.94513499712881],[-119.30480601130998,37.945136213673166],[-119.30479948495658,37.94513725453316],[-119.30479291756735,37.94513811849738],[-119.30478631678574,37.94513880456033],[-119.30477969029403,37.945139311923505],[-119.30477304580441,37.945139639996434],[-119.3047663910501,37.945139788397306],[-119.30475973377612,37.945139756953374],[-119.30475308173061,37.945139545701245],[-119.30474644265547,37.94513915488678],[-119.30473982427759,37.945138584964845],[-119.3047332342997,37.94513783659872],[-119.30472668039155,37.94513691065942],[-119.30472017018089,37.94513580822455],[-119.30469985056082,37.945132372307285],[-119.30467939260969,37.94512949688035],[-119.30465882097297,37.94512718540774],[-119.304638160433,37.94512544067404],[-119.30461743587924,37.945124264781136],[-119.30459667227824,37.94512365914556],[-119.3045758946436,37.94512362449696],[-119.3045551280058,37.945124160877064],[-119.30453439738217,37.94512526763967],[-119.3045137277465,37.94512694345152],[-119.30449314399925,37.94512918629377],[-119.30447267093733,37.9451319934645],[-119.30445233322438,37.94513536158194],[-119.30443215536097,37.94513928658859],[-119.3044121616551,37.94514376375605],[-119.30439577046626,37.945147918126274],[-119.30437956497067,37.94515250666852],[-119.30436356350114,37.94515752419191],[-119.30434778415967,37.945162965020266],[-119.30433224479698,37.94516882299859],[-119.30431696299232,37.945175091499884],[-119.30430195603361,37.945181763432785],[-119.30428724089782,37.94518883124959],[-119.30427283423184,37.94519628695462],[-119.3042587523336,37.945204122113495],[-119.30424501113362,37.94521232786252],[-119.30423162617707,37.945220894918776],[-119.30421861260608,37.94522981359059],[-119.30420598514266,37.945239073788514],[-119.30419375807205,37.94524866503674],[-119.30418194522657,37.945258576484974],[-119.30417055996995,37.94526879692064],[-119.30415961518219,37.945279314781615],[-119.30414912324503,37.94529011816935],[-119.30413909602794,37.94530119486223],[-119.30412954487467,37.945312532329446],[-119.30412076594249,37.945322949964066],[-119.30411154594235,37.94533312584972],[-119.30410189548023,37.94534304828071],[-119.30409182565731,37.945352705842765],[-119.30408134805725,37.945362087426375],[-119.30407047473271,37.945371182239484],[-119.30405921819165,37.9453799798199],[-119.30404759138288,37.945388470047355],[-119.30403560768109,37.945396643155156],[-119.30402328087162,37.945404489741385],[-119.30401062513447,37.94541200077973],[-119.30399765502807,37.94541916762992],[-119.30398438547245,37.94542598204754],[-119.30397083173213,37.945432436193656],[-119.3039570093986,37.945438522643755],[-119.30394293437232,37.94544423439627],[-119.30392862284438,37.9454495648807],[-119.30391409127805,37.945454507965145],[-119.30389935638964,37.9454590579633],[-119.30388443512939,37.9454632096411],[-119.30386934466199,37.945466958222646],[-119.30385410234675,37.945470299395744],[-119.30375802963128,37.94548862532332],[-119.30366123719692,37.94550439853826],[-119.30356383317368,37.945517601419745],[-119.30346592637494,37.945528219218374],[-119.30336762617591,37.94553624007261],[-119.30326904239146,37.94554165502208],[-119.30317028515329,37.94554445801751],[-119.30307146478697,37.945544645927576],[-119.3029726916886,37.94554221854239],[-119.3028740762014,37.945537178573645],[-119.3027757284926,37.945529531651694],[-119.3026777584301,37.945519286319154],[-119.30262591350564,37.94551247327687],[-119.30257437936771,37.94550431451332],[-119.30252321170246,37.94549481884466],[-119.30247246579995,37.94548399653161],[-119.30242219649453,37.945471859268416],[-119.30237245810534,37.94545842017021],[-119.30232330437786,37.94544369375887],[-119.30227478842566,37.945427695947245],[-119.30222696267307,37.94541044402206],[-119.30217987879846,37.94539195662513],[-119.30213358767851,37.94537225373328],[-119.3020881393331,37.94535135663678],[-119.30204358287139,37.94532928791624],[-119.30199996643859,37.94530607141829],[-119.30195733716407,37.94528173222978],[-119.30192554529313,37.94526361595686],[-119.30189297847147,37.94524638453307],[-119.30185967595321,37.94523005872789],[-119.3018256778791,37.9452146582192],[-119.30179102522825,37.945200201569584],[-119.30175575976864,37.94518670620398],[-119.30171992400679,37.94517418838867],[-119.30168356113656,37.945162663211626],[-119.30164671498711,37.945152144564396],[-119.30160942997004,37.945142645125294],[-119.30157175102583,37.94513417634422],[-119.30153372356976,37.94512674842874],[-119.30149539343712,37.94512037033187],[-119.30145680682796,37.945115049741254],[-119.30141801025151,37.9451107930699],[-119.30137905046995,37.94510760544841],[-119.3013399744422,37.94510549071894],[-119.30130082926728,37.945104451430375],[-119.30126166212757,37.9451044888354],[-119.30122252023189,37.94510560288892],[-119.30118345075861,37.945107792248194],[-119.30104727044203,37.94511923061951],[-119.30091168532452,37.94513447132282],[-119.30077686463906,37.94515349533517],[-119.30074549554361,37.94515880913627],[-119.30071436852803,37.9451649511397],[-119.30068351844959,37.94517191446745],[-119.30065297985546,37.945179691321705],[-119.30062278694406,37.94518827299364],[-119.30059297352665,37.945197649873144],[-119.30056357298965,37.94520781145964],[-119.30053461825709,37.94521874637378],[-119.30050614175384,37.945230442370196],[-119.30047817536929,37.94524288635123],[-119.30045075042158,37.94525606438161],[-119.30042389762261,37.94526996170401],[-119.30039764704362,37.9452845627556],[-119.30037202808148,37.94529985118553],[-119.30034706942584,37.94531580987313],[-119.3003227990269,37.94533242094715],[-119.30029924406423,37.94534966580574],[-119.30027643091628,37.94536752513733],[-119.30025438513081,37.945385978942205],[-119.30023313139631,37.94540500655491],[-119.30021269351435,37.94542458666739],[-119.30020272959302,37.945434118258596],[-119.30019235149128,37.945443368539074],[-119.30018157186471,37.94545232622839],[-119.30017040385859,37.945460980402984],[-119.30015886109182,37.9454693205093],[-119.30014695764031,37.94547733637684],[-119.3001347080199,37.94548501823053],[-119.3001221271685,37.94549235670257],[-119.30010923042799,37.94549934284389],[-119.30009603352548,37.94550596813511],[-119.30008255255416,37.94551222449686],[-119.3000688039536,37.9455181042997],[-119.30005480448978,37.9455236003734],[-119.30004057123458,37.94552870601562],[-119.30002612154506,37.94553341500018],[-119.30001147304215,37.94553772158462],[-119.29999664358931,37.94554162051714],[-119.29998165127057,37.94554510704313],[-119.29996651436869,37.94554817691086],[-119.29995125134266,37.94555082637669],[-119.29993588080539,37.9455530522097],[-119.2999204215008,37.94555485169552],[-119.29990489228109,37.94555622263974],[-119.29988931208376,37.94555716337051],[-119.29987369990843,37.94555767274065],[-119.29985807479378,37.945557750129],[-119.29984245579419,37.94555739544116],[-119.29982686195663,37.94555660910969],[-119.29981131229742,37.94555539209349],[-119.29979582577893,37.94555374587669],[-119.29978042128653,37.94555167246677],[-119.29976511760563,37.94554917439225],[-119.29974993339866,37.94554625469944],[-119.29973488718234,37.945542916948824],[-119.29971999730508,37.94553916521072],[-119.29970528192469,37.94553500406023],[-119.29969075898613,37.9455304385718],[-119.29967644619971,37.94552547431292],[-119.29966236101941,37.94552011733735],[-119.2996485206217,37.945514374177776],[-119.29963494188446,37.945508251837815],[-119.29962164136657,37.94550175778348],[-119.29960863528748,37.945494899934104],[-119.29959593950773,37.94548768665262],[-119.29958356950927,37.945480126735426],[-119.29957154037692,37.9454722294016],[-119.29955986677967,37.9454640042817],[-119.29954856295306,37.94545546140601],[-119.29953764268159,37.94544661119232],[-119.29952711928205,37.94543746443317],[-119.29951700558725,37.94542803228276],[-119.29950731393036,37.94541832624325],[-119.29949805612988,37.94540835815089],[-119.2994892434752,37.9453981401614],[-119.29948088671289,37.94538768473531],[-119.2994729960335,37.945377004622614],[-119.29946558105928,37.94536611284734],[-119.2994586508323,37.94535502269166],[-119.2994522138035,37.9453437476796],[-119.2994462778224,37.94533230156061],[-119.29944085012744,37.94532069829284],[-119.2994359373373,37.94530895202602],[-119.29939879124676,37.94522017609354],[-119.29935772478379,37.945132489848426],[-119.2993127887915,37.94504600182281],[-119.29926403890182,37.944960819065415],[-119.29921153546672,37.94487704700903],[-119.29915534348329,37.94479478933998],[-119.29909553251339,37.944714147869945],[-119.29903217659736,37.94463522240983],[-119.29896535416252,37.94455811064633],[-119.29889514792578,37.944482908021016],[-119.29882164479162,37.944409707612216],[-119.29874493574412,37.94433860001986],[-119.29872370113193,37.944312165169755],[-119.29870137200993,37.94428630208694],[-119.29867797290608,37.94426103918002],[-119.29865352952358,37.944236404198364],[-119.29862806871257,37.944212424201574],[-119.29860161844071,37.9441891255298],[-119.29857420776246,37.944166533774755],[-119.29854586678698,37.94414467375166],[-119.2985166266454,37.94412356947193],[-119.29848651945626,37.944103244116896],[-119.2984555782905,37.944083720012216],[-119.29842383713498,37.94406501860349],[-119.29839133085522,37.944047160432625],[-119.29835809515708,37.94403016511526],[-119.29788285775085,37.94378666789669],[-119.29741865485644,37.94353017026046],[-119.29734388270627,37.943494074032095],[-119.29727063143469,37.94345607245269],[-119.29719897843083,37.94341620567169],[-119.29712899939499,37.94337451580909],[-119.29706076825842,37.943331046911005],[-119.2969943571053,37.943285844902974],[-119.29692983609667,37.94323895754156],[-119.29686727339615,37.94319043436382],[-119.29680673509799,37.94314032663497],[-119.29674828515729,37.94308868729423],[-119.29669198532238,37.94303557089882],[-119.29668434802383,37.94302698835435],[-119.29667708471585,37.943018204564055],[-119.29667020384609,37.94300922974416],[-119.29666371341742,37.943000074333085],[-119.29665762097856,37.9429907489793],[-119.29665193361531,37.94298126452887],[-119.29664665794239,37.942971632012934],[-119.29664180009564,37.94296186263491],[-119.29663736572493,37.94295196775726],[-119.29663444145066,37.94294544846088],[-119.29663123349779,37.94293901338177],[-119.29662774572428,37.94293267025878],[-119.2966239823246,37.942926426720156],[-119.29661994782468,37.94292029027441],[-119.29661564707654,37.94291426830123],[-119.29661108525227,37.942908368042644],[-119.29660626783802,37.94290259659434],[-119.29660120062728,37.942896960897045],[-119.29659588971391,37.94289146772828],[-119.29659034148494,37.94288612369412],[-119.29658456261265,37.942880935221325],[-119.29657856004681,37.942875908549546],[-119.29657234100614,37.942871049723834],[-119.29656591296971,37.942866364587466],[-119.29655928366789,37.94286185877474],[-119.29655246107309,37.942857537704356],[-119.29654545339024,37.942853406572844],[-119.29653826904679,37.94284947034828],[-119.29653091668266,37.94284573376437],[-119.2965234051398,37.94284220131474],[-119.2965157434516,37.942838877247524],[-119.296507940832,37.94283576556018],[-119.2965000066645,37.942832869994874],[-119.29649195049065,37.942830194033775],[-119.29648378199883,37.942827740895],[-119.29647551101249,37.942825513528696],[-119.29646714747825,37.942823514613465],[-119.29645870145413,37.94282174655323],[-119.29645018309729,37.94282021147425],[-119.29644160265191,37.94281891122259],[-119.29643297043677,37.942817847361944],[-119.29642429683297,37.942817021171685],[-119.29641559227134,37.942816433645405],[-119.29640686722004,37.942816085489675],[-119.2963981321717,37.942815977123175],[-119.29638939763109,37.942816108676226],[-119.29638067410241,37.942816479990604],[-119.29637432133805,37.94281674952598],[-119.29636796055158,37.942816842726224],[-119.29636159954507,37.94281675947703],[-119.29635524612075,37.942816499880486],[-119.29634890807172,37.94281606425504],[-119.2963425931721,37.942815453135],[-119.29633630916764,37.94281466726996],[-119.29633006376623,37.94281370762386],[-119.29632386462836,37.94281257537377],[-119.2963177193578,37.9428112719085],[-119.29631163549226,37.94280979882685],[-119.29630562049411,37.942808157935715],[-119.29629968174122,37.94280635124775],[-119.29629382651801,37.94280438097903],[-119.29628806200635,37.94280224954625],[-119.29628239527693,37.942799959563764],[-119.29627683328043,37.942797513840475],[-119.29627138283914,37.94279491537624],[-119.29626605063842,37.94279216735831],[-119.29626084321872,37.94278927315734],[-119.29625576696729,37.94278623632332],[-119.29625082811059,37.9427830605812],[-119.29624603270648,37.94277974982625],[-119.29624138663698,37.94277630811942],[-119.29616211285686,37.94271369796876],[-119.29608516486869,37.94264929381708],[-119.29601060737524,37.94258314982463],[-119.29593850306861,37.942515321614565],[-119.29586891257738,37.9424458662263],[-119.2956200706527,37.94219891385196],[-119.29536061073635,37.9419589131867],[-119.2950908423331,37.941726150429886],[-119.2948110872313,37.94150090314711],[-119.29452167911909,37.94128343993939],[-119.29450471024309,37.94127022093078],[-119.29448830469116,37.94125656320392],[-119.29447248053826,37.94124248180656],[-119.2944572552187,37.94122799225329],[-119.29444264550705,37.941213110508315],[-119.29442866749953,37.941197852967996],[-119.29441533659642,37.941182236442685],[-119.29440266748486,37.94116627813826],[-119.29439067412298,37.941149995637176],[-119.29437936972427,37.94113340687904],[-119.29436876674309,37.941116530140846],[-119.29435887686108,37.94109938401693],[-119.2943497109741,37.94108198739836],[-119.29434127918033,37.941064359452206],[-119.29433359076911,37.941046519600405],[-119.2943266542108,37.94102848749831],[-119.29421125896724,37.9408085991059],[-119.2941053271238,37.94058574374011],[-119.29400897997046,37.940360176746424],[-119.29392232781206,37.94013215657499],[-119.29384546984225,37.939901944484426],[-119.2937784940302,37.93966980424231],[-119.29372147702027,37.9394360018231],[-119.29367448404457,37.93920080510305],[-119.29363756884865,37.93896448355355],[-119.29361077363026,37.93872730793208],[-119.29359412899167,37.93848954997216],[-119.29358765390477,37.93825148207194],[-119.29359135568997,37.93801337698198],[-119.29360523000821,37.93777550749298],[-119.29362926086642,37.937538146123075],[-119.29366342063621,37.937301564805736],[-119.29370767008596,37.93706603457816],[-119.29376195842633,37.936831825270886],[-119.29377767390115,37.936800309153334],[-119.29379200271613,37.93676838114286],[-119.29380492770426,37.93673607949574],[-119.29381643338066,37.93670344291575],[-119.2938265059611,37.93667051050807],[-119.29383513337858,37.93663732173218],[-119.29384230529769,37.936603916354805],[-119.29384801312705,37.93657033440202],[-119.29385225002959,37.936536616111546],[-119.29385501093066,37.93650280188426],[-119.29385629252423,37.9364689322361],[-119.29385609327673,37.93643504774924],[-119.29385441342892,37.93640118902361],[-119.2938512549956,37.93636739662824],[-119.29384662176318,37.936333711052576],[-119.29384051928513,37.93630017265809],[-119.29383295487523,37.936266821629786],[-119.29382393759906,37.93623369792817],[-119.2938134782628,37.93620084124127],[-119.29380158940047,37.936168290937196],[-119.29378828525886,37.93613608601681],[-119.29377358178048,37.9361042650672],[-119.29375749658439,37.93607286621526],[-119.29374004894507,37.93604192708213],[-119.29372125976943,37.936011484738096],[-119.29370115157168,37.93598157565812],[-119.2936797484463,37.93595223567822],[-119.29365707603924,37.9359234999525],[-119.29363316151716,37.93589540291099],[-119.29360803353494,37.93586797821845],[-119.29358172220113,37.93584125873403],[-119.29355425904218,37.93581527647192],[-119.29352567696442,37.935790062562916],[-119.29349601021474,37.93576564721723],[-119.2934652943395,37.93574205968818],[-119.29343356614199,37.93571932823725],[-119.29340086363834,37.93569748010018],[-119.29336722601188,37.93567654145434],[-119.29333269356631,37.93565653738736],[-119.2932973076773,37.9356374918671],[-119.29326111074305,37.935619427712886],[-119.29322414613331,37.93560236656827],[-119.29318645813761,37.93558632887499],[-119.29314809191209,37.93557133384853],[-119.2931090934254,37.93555739945509],[-119.29306950940368,37.93554454239011],[-119.29302938727449,37.935532778058196],[-119.29298877511015,37.93552212055466],[-119.29294772156993,37.93551258264877],[-119.29290627584197,37.93550417576823],[-119.2927653572584,37.93546772298568],[-119.29262607122787,37.93542752670157],[-119.2924885762394,37.935383632654606],[-119.29235302874321,37.93533609079112],[-119.29221958297258,37.93528495520806],[-119.29208839076841,37.93523028409149],[-119.29195960140638,37.93517213965039],[-119.29183336142687,37.93511058804574],[-119.2917098144685,37.93504569931536],[-119.29158910110439,37.93497754729405],[-119.29147135868232,37.93490620952956],[-119.29135672116836,37.93483176719445],[-119.29124531899447,37.93475430499354],[-119.29113727891004,37.9346739110676],[-119.29103272383776,37.934590676892974],[-119.2909317727336,37.93450469717747],[-119.29083454045163,37.934416069752594],[-119.29074113761328,37.93432489546217],[-119.29065167048148,37.93423127804756],[-119.29056624083981,37.93413532402969],[-119.2904849458767,37.93403714258762],[-119.29040787807499,37.933936845434445],[-119.29033512510662,37.93383454669017],[-119.29026676973298,37.933730362751746],[-119.29020288971086,37.93362441216057],[-119.29014355770397,37.93351681546772],[-119.29011345204874,37.93346227910582],[-119.29008098718651,37.933408598459735],[-119.29004620182799,37.9333558375293],[-119.29000913745024,37.93330405921766],[-119.2899698382471,37.93325332525634],[-119.2899283510766,37.933203696131656],[-119.28988472540497,37.93315523101256],[-119.28983901324776,37.933107987680145],[-119.2897912691077,37.933062022458806],[-119.28974154990979,37.933017390148954],[-119.28968991493345,37.93297414396189],[-119.28963642574172,37.9329323354562],[-119.28958114610795,37.93289201447638],[-119.28952414193976,37.93285322909341],[-119.28946548120045,37.93281602554748],[-119.28940523382796,37.93278044819276],[-119.2893434716515,37.93274653944468],[-119.28928026830596,37.932714339729266],[-119.28921569914402,37.93268388743498],[-119.28914984114647,37.93265521886699],[-119.2890827728303,37.93262836820382],[-119.28901457415523,37.93260336745674],[-119.28894532642828,37.93258024643146],[-119.28887511220692,37.932559032692666],[-119.2888040152007,37.93253975153122],[-119.28873212017126,37.932522425933946],[-119.28865951283161,37.93250707655622],[-119.28858627974373,37.93249372169741],[-119.28851250821536,37.932482377279015],[-119.28843828619625,37.93247305682572],[-119.28836370217292,37.93246577144925],[-119.28828884506343,37.932460529835126],[-119.28821380411136,37.932457338232304],[-119.28813866877944,37.93245620044582],[-119.28806352864281,37.93245711783209],[-119.28798847328241,37.93246008929742],[-119.28791359217814,37.9324651112993],[-119.28783897460214,37.932472177850535],[-119.28776470951249,37.93248128052649],[-119.28495473268956,37.932896323169075],[-119.28215999127833,37.93337159872611],[-119.28206678779976,37.9333899585964],[-119.28197283037285,37.93340572460518],[-119.28187823403682,37.93341887744891],[-119.28178311461336,37.93342940102348],[-119.28168758856484,37.93343728244404],[-119.28159177285154,37.93344251206073],[-119.2814957847886,37.93344508347053],[-119.28139974190219,37.933444993525],[-119.28130376178554,37.93344224233428],[-119.28120796195515,37.93343683326694],[-119.28111245970662,37.93342877294566],[-119.28101737197115,37.933418071239394],[-119.28092281517223,37.9334047412511],[-119.28082890508323,37.9333887993017],[-119.28073575668532,37.933370264910245],[-119.28064348402697,37.93334916076979],[-119.28055220008412,37.933325512719776],[-119.28046201662177,37.93329934971437],[-119.28037304405726,37.933270703786825],[-119.28028539132491,37.9332396100105],[-119.28019916574273,37.933206106455756],[-119.28011447288095,37.933170234143354],[-119.28003141643268,37.93313203699423],[-119.27995009808703,37.933091561775754],[-119.27987061740457,37.93304885804431],[-119.27979307169535,37.93300397808485],[-119.27971755589991,37.932956976846626],[-119.27964416247276,37.932907911875986],[-119.27957298126948,37.93285684324598],[-119.27947965452432,37.93272907782199],[-119.27938088726812,37.93260390445586],[-119.27927679415906,37.93248146842609],[-119.2791674960347,37.93236191183338],[-119.27905311977183,37.93224537343597],[-119.2789337981391,37.932131988488415],[-119.2788096696428,37.93202188858487],[-119.2786808783661,37.93191520150621],[-119.27854757380184,37.931812051071944],[-119.27840991067895,37.931712556996516],[-119.27826804878279,37.931616834750365],[-119.27812215276992,37.931524995426024],[-119.27797239197668,37.93143714560923],[-119.27781894022304,37.93135338725521],[-119.2776619756106,37.93127381757053],[-119.27750168031602,37.931198528900225],[-119.27733824037978,37.931127608620685],[-119.27717184549005,37.931061139038356],[-119.27700268876289,37.930999197294184],[-119.27683096651796,37.930941855274206],[-119.27665687805097,37.9308891795261],[-119.27648062540224,37.93084123118202],[-119.2763024131226,37.93079806588771],[-119.27612244803585,37.93075973373787],[-119.27594093899899,37.93072627921817],[-119.27575809665991,37.930697741153544],[-119.275574133213,37.93067415266319],[-119.27538926215304,37.93065554112221],[-119.27520369802765,37.93064192812976],[-119.27501765618825,37.93063332948404],[-119.27483135254045,37.930629755164006],[-119.27464500329343,37.9306312093177],[-119.27445882470936,37.930637690257605],[-119.2744031577554,37.93063961036566],[-119.2743474403814,37.93064001484471],[-119.2742917383454,37.93063890321739],[-119.27423611738722,37.93063627679564],[-119.27418064315111,37.930632138679165],[-119.27412538110804,37.93062649375182],[-119.27407039647855,37.93061934867574],[-119.27401575415573,37.930610711883624],[-119.27396151862857,37.930600593568585],[-119.27390775390595,37.93058900567237],[-119.27385452344096,37.93057596187098],[-119.27380189005609,37.93056147755881],[-119.27374991586906,37.93054556983022],[-119.27369866221945,37.93052825745956],[-119.27364818959641,37.930509560878896],[-119.27359855756713,37.930489502153904],[-119.27354982470655,37.930468104957924],[-119.27350204852841,37.9304453945438],[-119.27345528541711,37.93042139771433],[-119.27340959056127,37.93039614279049],[-119.27336501788865,37.93036965957797],[-119.2733216200024,37.93034197933207],[-119.27327944811908,37.930313134720826],[-119.27323855200811,37.93028315978635],[-119.2731989799331,37.93025208990475],[-119.27316077859486,37.930219961744335],[-119.27312399307631,37.93018681322231],[-119.27308866678925,37.93015268346006],[-119.27305484142317,37.930117612736936],[-119.273022556896,37.930081642442815],[-119.27299185130704,37.93004481502906],[-119.272962760892,37.93000717395862],[-119.2729353199802,37.9299687636546],[-119.27285381306422,37.9298546365376],[-119.27276744554699,37.929742774725554],[-119.2726763176875,37.929633308044245],[-119.2725805352681,37.92952636353905],[-119.27248020947171,37.92942206532773],[-119.2723754567528,37.92932053445627],[-119.27226639870203,37.92922188875837],[-119.2721531619052,37.92912624271895],[-119.27203587779628,37.929033707341134],[-119.27191468250491,37.92894439001755],[-119.27178971669824,37.92885839440569],[-119.27166112541781,37.9287758203077],[-119.27152905791124,37.92869676355456],[-119.27139366745884,37.92862131589492],[-119.271255111196,37.92854956488864],[-119.27111354993063,37.92848159380528],[-119.27096914795673,37.928417481527376],[-119.27082207286361,37.92835730245905],[-119.27067249534159,37.928301126439656],[-119.27052058898387,37.92824901866273],[-119.27036653008514,37.9282010396004],[-119.27021049743712,37.928157244933246],[-119.27005267212107,37.928117685485674],[-119.26989323729767,37.92808240716696],[-119.26973237799474,37.928051450918005],[-119.26957028089238,37.92802485266392],[-119.26940713410657,37.928002643272166],[-119.26924312697084,37.927984848516964],[-119.26907844981675,37.92797148904923],[-119.26891329375302,37.92796258037275],[-119.26874785044387,37.92795813282604],[-119.26858231188682,37.927958151570564],[-119.26841687018974,37.927962636584546],[-119.26834366872843,37.927964613815135],[-119.26827042471928,37.9279646004852],[-119.26819722441282,37.927962596610435],[-119.26812415400818,37.92795860455056],[-119.26805129955153,37.92795262900655],[-119.26797874683457,37.92794467701503],[-119.26790658129372,37.92793475794011],[-119.26783488790932,37.927922883462266],[-119.26776375110562,37.927909067564556],[-119.2676932546513,37.92789332651628],[-119.26762348156086,37.927875678853674],[-119.2675545139968,37.92785614535818],[-119.26748643317286,37.92783474903189],[-119.2674193192584,37.92781151507051],[-119.26735325128392,37.927786470833695],[-119.26728830704808,37.927759645812806],[-119.26722456302596,37.9277310715961],[-119.2671620942791,37.927700781831625],[-119.267100974367,37.927668812187626],[-119.26704127526057,37.927635200310384],[-119.26698306725734,37.92759998578],[-119.26692641889872,37.92756321006373],[-119.26687139688916,37.9275249164672],[-119.26681806601778,37.927485150083314],[-119.26676648908196,37.92744395773921],[-119.26671672681336,37.927401387941075],[-119.26666883780653,37.927357490817116],[-119.26662287844988,37.92731231805838],[-119.26657890285914,37.92726592285794],[-119.26653696281393,37.92721835984829],[-119.26649710769648,37.927169685036915],[-119.26645938443377,37.927119955740466],[-119.26642383744208,37.9270692305171],[-119.26639050857483,37.92701756909766],[-119.26635943707322,37.9269650323152],[-119.26633065952015,37.92691168203349],[-119.26630420979704,37.92685758107404],[-119.26628011904407,37.92680279314218],[-119.26590728321304,37.92586236008425],[-119.26556715743561,37.92491418006949],[-119.2652599964295,37.923958966690364],[-119.26498603007569,37.92299743880538],[-119.2649592269148,37.922887716419545],[-119.26493718216807,37.922777331385014],[-119.26491992166657,37.922666413152676],[-119.26490746563046,37.92255509179808],[-119.2648998286454,37.92244349786898],[-119.2648970196455,37.92233176223219],[-119.26489904190313,37.92222001592012],[-119.26490589302495,37.922108389977126],[-119.26491756495484,37.92199701530582],[-119.26493404398374,37.92188602251358],[-119.26495531076542,37.92177554175935],[-119.26498134033956,37.921665702601096],[-119.26501210216102,37.92155663384381],[-119.26504756013573,37.921448463388515],[-119.26508767266309,37.921341318082234],[-119.26513239268502,37.92123532356937],[-119.26518166774096,37.92113060414427],[-119.26523544002971,37.92102728260557],[-119.26529364647718,37.92092548011214],[-119.2653562188104,37.92082531604108],[-119.2654230836377,37.92072690784779],[-119.26552029083,37.920274790754455],[-119.26559747399018,37.919820256682804],[-119.26565453901605,37.91936386197588],[-119.2656914164342,37.918906165243904],[-119.26570806148294,37.91844772668055],[-119.26570445416542,37.917989107377274],[-119.2656805992723,37.91753086863643],[-119.26563652637397,37.917073571284455],[-119.26557228978251,37.91661777498542],[-119.26548796848351,37.916164037556165],[-119.2653836660375,37.91571291428381],[-119.26525951045144,37.91526495724627],[-119.26511565402042,37.91482071463693],[-119.26495227313957,37.91438073009393],[-119.26476956808652,37.91394554203514],[-119.26456776277472,37.91351568299958],[-119.26434710447799,37.91309167899618],[-119.26410786352649,37.9126740488603],[-119.26385033297446,37.91226330361935],[-119.26357482824045,37.91185994586785],[-119.2635245749233,37.91179209680809],[-119.26347141383033,37.91172565327832],[-119.2634154075289,37.911660693468875],[-119.26335662193395,37.91159729382383],[-119.26329512623066,37.91153552895107],[-119.26323099279277,37.91147547153453],[-119.26316429709757,37.91141719224866],[-119.26309511763705,37.911360759675304],[-119.26302353582535,37.91130624022294],[-119.26294963590325,37.91125369804862],[-119.26287350483868,37.911203194982434],[-119.2627952322247,37.91115479045482],[-119.26271491017387,37.911108541426586],[-119.26263263320985,37.9110645023219],[-119.26254849815639,37.91102272496434],[-119.26246260402314,37.91098325851579],[-119.26237505188926,37.91094614941871],[-119.26228594478462,37.910911441341504],[-119.26219538756831,37.910879175126986],[-119.26210348680547,37.91084938874458],[-119.26201035064193,37.91082211724541],[-119.26191608867674,37.91079739272124],[-119.26182081183353,37.91077524426662],[-119.2617246322298,37.91075569794469],[-119.2616276630451,37.91073877675654],[-119.26153001838786,37.9107245006141],[-119.26143181316114,37.910712886316745],[-119.26133316292751,37.91070394753154],[-119.26123418377301,37.91069769477717],[-119.26113499217061,37.91069413541149],[-119.2610357048433,37.91069327362299],[-119.26093643862656,37.910695110425756],[-119.26083731033111,37.91069964365833],[-119.26073843660541,37.91070686798631],[-119.26063993379846,37.910716774908465],[-119.2605419178228,37.91072935276688],[-119.26040620537898,37.9107467702666],[-119.26026981943346,37.91076049402902],[-119.26013292010556,37.91077050794223],[-119.2599956681177,37.91077680024972],[-119.2598582246063,37.91077936356418],[-119.25972075093283,37.91077819487629],[-119.2595834084942,37.91077329555808],[-119.2594463585331,37.91076467136141],[-119.2593097619488,37.9107523324113],[-119.25917377910804,37.91073629319386],[-119.25903856965674,37.91071657253934],[-119.25890429233255,37.910693193600146],[-119.25877110477829,37.91066618382348],[-119.258639163357,37.910635574919155],[-119.25850862296808,37.910601402822415],[-119.25837963686561,37.91056370765165],[-119.25825235647817,37.910522533661286],[-119.2581269312311,37.91047792918988],[-119.25800350837106,37.91042994660331],[-119.25788223279305,37.91037864223324],[-119.25776324687027,37.91032407631103],[-119.25764669028705,37.91026631289695],[-119.25753269987459,37.910205419804946],[-119.25742140945056,37.910141468523086],[-119.2573129496618,37.91007453412948],[-119.257207447831,37.910004695204215],[-119.25710502780723,37.90993203373699],[-119.25700580982047,37.90985663503095],[-119.25690991034058,37.90977858760239],[-119.25681744194041,37.90969798307686],[-119.25672851316385,37.90961491608157],[-119.25429443462369,37.90718776331926],[-119.25425235925127,37.90714602361659],[-119.25420847431468,37.907105470542064],[-119.25416283308554,37.90706615332015],[-119.25411549096711,37.9070281196751],[-119.25406650542693,37.906991415773106],[-119.2540159359271,37.90695608616617],[-119.2539638438521,37.90692217373812],[-119.2539102924343,37.90688971965249],[-119.25385534667714,37.90685876330264],[-119.25379907327634,37.90682934226383],[-119.2537415405388,37.90680149224781],[-119.2536828182999,37.90677524705926],[-119.25362297783849,37.906750638554904],[-119.2535620917906,37.906727696604804],[-119.25350023406115,37.906706449056124],[-119.2534374797343,37.906686921699304],[-119.25337390498235,37.906669138236815],[-119.25330958697319,37.9066531202543],[-119.25324460377679,37.906638887194525],[-119.25317903427036,37.90662645633362],[-119.25311295804264,37.90661584276021],[-119.25304645529734,37.90660705935712],[-119.25297960675574,37.90660011678565],[-119.25291249355884,37.90659502347272],[-119.25284519716872,37.9065917856006],[-119.25277779926988,37.906590407099436],[-119.25271038166996,37.906590889642466],[-119.2526430262005,37.90659323264394],[-119.25257581461767,37.90659743325997],[-119.25250882850297,37.90660348639179],[-119.25244214916438,37.90661138469213],[-119.25237585753746,37.90662111857397],[-119.25231003408734,37.906632676222316],[-119.25224475871092,37.90664604360843],[-119.25218011064,37.90666120450696],[-119.25211616834511,37.90667814051547],[-119.25205300944023,37.906696831076964],[-119.2519907105886,37.90671725350471],[-119.25192934740976,37.906739383009786],[-119.25186899438764,37.906763192731226],[-119.25180972478034,37.90678865376851],[-119.25175161053102,37.9068157352168],[-119.25169472218076,37.90684440420426],[-119.2516391287828,37.90687462593206],[-119.25158489781883,37.90690636371665],[-119.25142800370327,37.9070049339916],[-119.25127538046173,37.90710762768445],[-119.25112720064925,37.90721432870212],[-119.25098363179987,37.90732491642088],[-119.25084483623712,37.90743926582259],[-119.2507109708906,37.90755724763599],[-119.2505821871185,37.907678728482765],[-119.25045863053643,37.90780357102833],[-119.25034044085282,37.90793163413698],[-119.25022775171078,37.90806277303136],[-119.2501206905371,37.90819683945621],[-119.25001937839798,37.90833368184577],[-119.24992392986212,37.908473145495165],[-119.24983445287108,37.90861507273523],[-119.24975104861714,37.90875930311071],[-119.24967381142872,37.908905673561655],[-119.2496028286637,37.90905401860762],[-119.24953818061039,37.909204170534856],[-119.24947994039672,37.90935595958576],[-119.2494281739073,37.90950921415084],[-119.24938293970888,37.90966376096264],[-119.2493783106634,37.90967954769578],[-119.24937299847842,37.909695198827386],[-119.24936700944984,37.90971069580684],[-119.24936035067577,37.90972602026626],[-119.24935303004813,37.90974115404222],[-119.24934505624334,37.9097560791973],[-119.24933643871208,37.9097707780413],[-119.24932718766796,37.90978523315232],[-119.24931731407551,37.90979942739729],[-119.24930682963715,37.90981334395227],[-119.24929574677932,37.909826966322576],[-119.24928407863784,37.909840278362104],[-119.24927183904217,37.909853264292586],[-119.24925904249919,37.909865908722274],[-119.24924570417585,37.90987819666419],[-119.24923183988139,37.909890113553885],[-119.2492174660484,37.909901645266665],[-119.24920259971344,37.90991277813439],[-119.24918725849692,37.909923498961646],[-119.24917146058199,37.90993379504142],[-119.2491552246933,37.90994365417008],[-119.24913857007446,37.90995306466194],[-119.24912151646562,37.90996201536303],[-119.24910408407968,37.909970495664375],[-119.24908629357857,37.909978495514544],[-119.24906816604876,37.90998600543155],[-119.24904972297618,37.90999301651411],[-119.24903098622072,37.9099995204522],[-119.24901197799043,37.9100055095369],[-119.24899272081521,37.91001097666952],[-119.24897323751993,37.910015915370046],[-119.24895355119757,37.91002031978476],[-119.24893368518173,37.910024184693256],[-119.248913663019,37.910027505514535],[-119.24889350844107,37.91003027831253],[-119.2488732453366,37.91003249980074],[-119.24885289772288,37.91003416734611],[-119.24883248971739,37.910035278972096],[-119.2488120455091,37.91003583336115],[-119.24879158933005,37.91003582985614],[-119.24877114542635,37.91003526846127],[-119.2487507380296,37.910034149841934],[-119.24873039132815,37.91003247532399],[-119.24871012943832,37.91003024689217],[-119.24868997637603,37.9100274671878],[-119.24866995602807,37.91002413950559],[-119.24865009212402,37.91002026778974],[-119.24863040820794,37.91001585662929],[-119.24861092761064,37.91001091125265],[-119.24859167342183,37.91000543752143],[-119.24857266846291,37.9099994419235],[-119.24855393525984,37.90999293156526],[-119.24853549601646,37.90998591416325],[-119.24851737258814,37.909978398034966],[-119.24849958645599,37.90997039208906],[-119.24830750724301,37.909883819254716],[-119.2481118965503,37.90980236142166],[-119.24791297128985,37.909726108913816],[-119.24771095204693,37.90965514628287],[-119.24750606283547,37.90958955221476],[-119.24729853084989,37.909529399442256],[-119.24708858621317,37.90947475466459],[-119.24687646172198,37.909425678473355],[-119.24666239258853,37.90938222528543],[-119.24644661617995,37.909344443282734],[-119.24622937175533,37.909312374358734],[-119.24601090020042,37.909286054072076],[-119.2457914437608,37.909265511607174],[-119.24557124577342,37.90925076974187],[-119.24535055039699,37.909241844822176],[-119.24512960234127,37.9092387467442],[-119.24490864659613,37.90924147894312],[-119.24468792815992,37.90925003838944],[-119.24459575946678,37.90926213971167],[-119.24450415464408,37.90927668248275],[-119.24441321668321,37.90929365035225],[-119.24432304782603,37.90931302424319],[-119.2442337494499,37.90933478237353],[-119.24414542195382,37.90935890028055],[-119.24405816464538,37.90938535084845],[-119.24397207562936,37.90941410433876],[-119.24388725169733,37.90944512842379],[-119.24380378821887,37.90947838822302],[-119.24372177903432,37.90951384634214],[-119.2436413163494,37.909551462915346],[-119.24356249063148,37.90959119564987],[-119.24348539050784,37.909632999873736],[-119.24341010266615,37.90967682858585],[-119.24333671175691,37.90972263250894],[-119.24326530029833,37.90977036014475],[-119.2430189424977,37.909954674947244],[-119.24278055005931,37.91014545200637],[-119.24255039292261,37.91034247534833],[-119.24232873171033,37.91054552192639],[-119.24211581743324,37.91075436187309],[-119.24191189120602,37.91096875876047],[-119.24176236716706,37.91112638206343],[-119.24160673427426,37.91128024900132],[-119.24144514274103,37.91143021102853],[-119.24127774853613,37.911576123368384],[-119.24110471323328,37.91171784515306],[-119.24108815581536,37.91173055124289],[-119.24107106219162,37.91174280354216],[-119.24105345216526,37.911754587856244],[-119.24103534613774,37.911765890532735],[-119.24101676508513,37.911776698477134],[-119.24099773053396,37.911786999168136],[-119.24097826453608,37.911796780672105],[-119.2409583896433,37.911806031656866],[-119.24093812888113,37.91181474140492],[-119.24091750572214,37.9118228998257],[-119.24089654405876,37.91183049746747],[-119.24087526817563,37.91183752552813],[-119.24085370272147,37.91184397586543],[-119.240810519747,37.91185685773739],[-119.24076788401618,37.91187083706313],[-119.2407258399496,37.91188589927829],[-119.24068443135143,37.91190202869014],[-119.24064370136377,37.91191920849421],[-119.24060369242193,37.911937420791624],[-119.24056444620999,37.91195664660774],[-119.24052600361755,37.911976865912024],[-119.2402728936188,37.91211083422963],[-119.24001539824205,37.91223945051885],[-119.2397536977357,37.9123626247368],[-119.23974829724317,37.912364994039734],[-119.23974279762493,37.91236721561654],[-119.23973720531647,37.9123692868676],[-119.23973152686173,37.91237120536921],[-119.2397257689055,37.91237296887637],[-119.23971993818556,37.91237457532547],[-119.23971404152483,37.91237602283672],[-119.23970808582348,37.912377309716234],[-119.23970207805064,37.9123784344582],[-119.23969602523648,37.91237939574642],[-119.23968993446381,37.91238019245606],[-119.23968381285991,37.91238082365481],[-119.23967766758808,37.91238128860406],[-119.2396715058394,37.91238158675974],[-119.23966533482412,37.912381717772966],[-119.23965916176343,37.91238168149044],[-119.23965299388088,37.91238147795459],[-119.23964683839397,37.912381107403604],[-119.23964070250564,37.912380570271104],[-119.23963459339598,37.91237986718558],[-119.23962851821366,37.91237899896981],[-119.23962248406775,37.91237796663974],[-119.23961649801919,37.91237677140337],[-119.23961056707272,37.91237541465936],[-119.23960469816855,37.9123738979953],[-119.2395988981743,37.91237222318596],[-119.23959317387695,37.91237039219116],[-119.23958753197495,37.91236840715347],[-119.23958197907027,37.912366270395744],[-119.23957652166075,37.91236398441833],[-119.23957116613248,37.91236155189623],[-119.23956591875238,37.91235897567593],[-119.23956078566073,37.91235625877202],[-119.23955577286411,37.91235340436376],[-119.2395508862284,37.91235041579128],[-119.23954613147171,37.912347296551765],[-119.23954151415793,37.91234405029521],[-119.23953703969013,37.91234068082029],[-119.23953271330414,37.91233719206989],[-119.23952854006254,37.91233358812647],[-119.23952452484876,37.91232987320721],[-119.23950259835037,37.91230956719338],[-119.2394798315208,37.91228985019106],[-119.23945624955273,37.91227074401761],[-119.23943187854086,37.912252269814466],[-119.23940674545287,37.91223444802384],[-119.23938087809962,37.91221729836594],[-119.23935430510443,37.91220083981722],[-119.23932705587136,37.91218509058946],[-119.23929916055266,37.91217006810952],[-119.23927065001546,37.912155789000074],[-119.23924155580754,37.91214226906124],[-119.23921191012253,37.912129523253114],[-119.23918174576423,37.91211756567913],[-119.23915109611019,37.9121064095706],[-119.2391199950751,37.91209606727195],[-119.23908847707287,37.91208655022708],[-119.23905657697887,37.912077868966804],[-119.23902433009121,37.91207003309706],[-119.23899177209165,37.91206305128837],[-119.23762301629384,37.911777264401294],[-119.23757212462735,37.911765451680836],[-119.23752178062647,37.911752247858885],[-119.23747204485156,37.91173766881878],[-119.23742297713115,37.911721732098165],[-119.23737463649012,37.911704456867874],[-119.23732708107855,37.91168586390883],[-119.23728036810178,37.91166597558717],[-119.23723455375169,37.91164481582711],[-119.23718969313902,37.91162241008242],[-119.23714584022704,37.911598785305635],[-119.23710304776678,37.91157396991564],[-119.23706136723332,37.91154799376358],[-119.23702084876417,37.911520888096824],[-119.23698154109871,37.91149268552146],[-119.23694349151968,37.91146341996305],[-119.23690674579625,37.91143312662573],[-119.23687134812901,37.91140184195005],[-119.23672027626893,37.91126761388698],[-119.23656428695227,37.911136964262475],[-119.23640351517054,37.911010006118225],[-119.23623810005101,37.910886849301335],[-119.23604058546564,37.9107488354981],[-119.23583730477077,37.91061618153815],[-119.2356284895801,37.91048903854527],[-119.23541437780867,37.91036755136427],[-119.23519521340191,37.91025185839596],[-119.23497124605768,37.91014209143965],[-119.234742730942,37.91003837554313],[-119.23450992839834,37.90994082886015],[-119.23320325104908,37.909455341931796],[-119.23310354474125,37.909420487568966],[-119.23300253508782,37.90938807452019],[-119.23290031728598,37.909358133332866],[-119.2327969876713,37.90933069222482],[-119.23269264362676,37.90930577705765],[-119.23258738349102,37.90928341131239],[-119.23254945695425,37.909276356272834],[-119.23251126401516,37.90927026989121],[-119.23247284407427,37.90926515844626],[-119.23243423676624,37.90926102721112],[-119.23239548191901,37.909257880447576],[-119.23235661951273,37.909255721401905],[-119.23231768963846,37.909254552301434],[-119.23227873245689,37.909254374352166],[-119.23223978815686,37.90925518773774],[-119.23133473685711,37.9092777846318],[-119.23042927849747,37.90928472694959],[-119.23040900666604,37.909284432744506],[-119.23038875934293,37.90928359017417],[-119.2303685601519,37.909282200221725],[-119.23034843266062,37.90928026450885],[-119.23032840035297,37.90927778529412],[-119.2303084866019,37.90927476547012],[-119.23028871464194,37.90927120856029],[-119.23026910754223,37.9092671187147],[-119.23024968817944,37.90926250070519],[-119.23023047921133,37.909257359919906],[-119.2302115030501,37.90925170235687],[-119.23019278183625,37.90924553461709],[-119.2301743374129,37.90923886389686],[-119.23015619130015,37.90923169797926],[-119.23012297815795,37.90921859485341],[-119.23008920760489,37.90920641890295],[-119.23005492085788,37.9091951849885],[-119.23002015976373,37.909184906821],[-119.22998496674825,37.90917559694481],[-119.22994938476424,37.90916726672256],[-119.22991345723919,37.909159926321166],[-119.22987722802235,37.90915358469953],[-119.2298407413311,37.909148249597514],[-119.22980404169705,37.90914392752655],[-119.22976717391164,37.90914062376169],[-119.22973018297155,37.90913834233511],[-119.22969311402375,37.909137086031286],[-119.2296560123104,37.90913685638348],[-119.22961892311363,37.90913765367204],[-119.22958189170038,37.90913947692385],[-119.22954496326693,37.909142323913635],[-119.22950818288398,37.9091461911667],[-119.22947159544157,37.90915107396313],[-119.22943524559426,37.909156966343474],[-119.2293991777066,37.90916386111622],[-119.2293634357991,37.90917174986632],[-119.2293280634945,37.90918062296567],[-119.22929310396438,37.90919046958476],[-119.22925859987669,37.909201277705854],[-119.22922459334346,37.909213034137764],[-119.22919112586963,37.909225724531886],[-119.22915823830222,37.90923933339969],[-119.22914812724085,37.909246705446975],[-119.2291377042696,37.90925379957279],[-119.22912698155162,37.90926060749853],[-119.22911597159978,37.909267121279605],[-119.22910468726228,37.90927333331466],[-119.22909314170741,37.90927923635452],[-119.22908134840836,37.90928482351053],[-119.22906932112743,37.90929008826271],[-119.22905707389994,37.90929502446726],[-119.22904462101793,37.90929962636379],[-119.22903197701345,37.90930388858213],[-119.22901915664158,37.909307806148355],[-119.22900617486319,37.90931137449083],[-119.22899304682751,37.90931458944542],[-119.22897978785451,37.90931744726039],[-119.22896641341694,37.909319944600774],[-119.2289529391223,37.909322078552236],[-119.22893938069456,37.909323846624595],[-119.22892575395596,37.909325246754506],[-119.22891207480846,37.90932627730808],[-119.22889835921514,37.90932693708274],[-119.22888462318157,37.90932722530849],[-119.22887088273728,37.90932714164902],[-119.22885715391689,37.909326686201936],[-119.22884345274144,37.90932585949874],[-119.22882979519973,37.90932466250418],[-119.22881619722965,37.90932309661509],[-119.22880267469955,37.909321163658824],[-119.22878924338974,37.909318865891045],[-119.22877591897411,37.909316205993186],[-119.22876271700173,37.90931318706925],[-119.22874965287885,37.90930981264221],[-119.22873674185082,37.90930608664993],[-119.22872399898432,37.90930201344049],[-119.22870892298526,37.909297188509846],[-119.22869365255428,37.909292764017664],[-119.22867820462984,37.90928874487173],[-119.2286625963472,37.9092851355302],[-119.22864684501951,37.90928193999661],[-119.2286309681186,37.90927916181557],[-119.22861498325553,37.9092768040687],[-119.2285989081612,37.90927486937127],[-119.22858276066647,37.909273359869296],[-119.22856655868264,37.90927227723719],[-119.2285503201813,37.90927162267581],[-119.22853406317472,37.90927139691121],[-119.22851780569552,37.909271600193826],[-119.22850156577695,37.90927223229816],[-119.22848536143276,37.90927329252307],[-119.22846921063724,37.90927477969253],[-119.22846019362719,37.90927560463604],[-119.22845114586197,37.90927618063481],[-119.22844207828713,37.90927650699204],[-119.2284330018722,37.90927658331292],[-119.2284239275974,37.909276409505104],[-119.22841486644045,37.909275985778855],[-119.22840582936303,37.90927531264679],[-119.22839682729783,37.909274390923215],[-119.22838787113513,37.90927322172321],[-119.22837897170965,37.90927180646123],[-119.22837013978751,37.909270146849344],[-119.22836138605321,37.90926824489532],[-119.22835272109657,37.909266102900034],[-119.22834415540002,37.909263723454764],[-119.22833569932595,37.90926110943809],[-119.22832736310414,37.909258264012294],[-119.22831915681934,37.90925519061964],[-119.22831109039907,37.909251892978176],[-119.22830317360174,37.909248375077254],[-119.22829541600466,37.90924464117265],[-119.2282878269926,37.909240695781456],[-119.22828041574637,37.90923654367665],[-119.22827319123166,37.90923218988117],[-119.22826616218836,37.90922763966213],[-119.22825933711981,37.909222898524106],[-119.22825272428263,37.909217972202725],[-119.22824633167664,37.90921286665758],[-119.22824016703528,37.909207588065144],[-119.22823423781614,37.90920214281118],[-119.22822855119209,37.909196537483076],[-119.22822311404244,37.90919077886189],[-119.22821793294474,37.909184873914114],[-119.22821301416674,37.90917882978327],[-119.2282083636589,37.90917265378124],[-119.22820398704707,37.90916635337942],[-119.22819988962578,37.909159936199735],[-119.22819607635184,37.90915341000533],[-119.22819255183823,37.90914678269128],[-119.2281893203487,37.909140062274965],[-119.22818638579241,37.90913325688637],[-119.22818375171937,37.90912637475831],[-119.22818142131607,37.90911942421645],[-119.22817939740158,37.90911241366914],[-119.22817768242427,37.909105351597354],[-119.22817627845873,37.90909824654447],[-119.2281751872033,37.90909110710572],[-119.22817440997805,37.90908394191805],[-119.22817394772312,37.909076759649516],[-119.22817380099765,37.90906956898879],[-119.22817396997903,37.909062378634765],[-119.22817445446273,37.90905519728592],[-119.22817525386259,37.90904803362984],[-119.22817636721143,37.909040896332705],[-119.2281777931623,37.909033794028815],[-119.22817952999009,37.90902673531014],[-119.2281842411671,37.90901056956394],[-119.22818964309366,37.908994540021766],[-119.22819572952744,37.90897866520568],[-119.22820249343518,37.90896296345891],[-119.22820992700076,37.9089474529248],[-119.22821802163435,37.9089321515256],[-119.22822676798225,37.90891707694202],[-119.22823615593775,37.90890224659259],[-119.22824617465271,37.908887677613684],[-119.22825681255028,37.908873386839595],[-119.22826805733813,37.90885939078317],[-119.22827989602264,37.908845705616706],[-119.22829231492408,37.9088323471533],[-119.2283052996922,37.90881933082842],[-119.22831883532297,37.90880667168234],[-119.22833290617591,37.90879438434253],[-119.22834749599207,37.90878248300679],[-119.22836258791288,37.908770981427],[-119.22837816449962,37.908759892893016],[-119.22839420775355,37.90874923021754],[-119.22841069913677,37.90873900572107],[-119.22842761959357,37.90872923121784],[-119.22844494957253,37.90871991800217],[-119.22846266904892,37.9087110768353],[-119.22848075754816,37.90870271793304],[-119.2284991941691,37.908694850953964],[-119.22851795760856,37.90868748498818],[-119.22852444079656,37.908684937505456],[-119.22853080840619,37.908682213164404],[-119.22853705275469,37.908679315252044],[-119.22854316630806,37.90867624726485],[-119.22854914169007,37.90867301290438],[-119.22855497169125,37.90866961607307],[-119.22856064927755,37.90866606086929],[-119.22856616759876,37.908662351582514],[-119.22857151999683,37.90865849268811],[-119.22857670001402,37.908654488842],[-119.2285817014004,37.90865034487496],[-119.22858651812169,37.90864606578679],[-119.22859114436639,37.90864165674036],[-119.22859557455281,37.908637123055364],[-119.22859980333584,37.90863247020183],[-119.22860382561333,37.90862770379358],[-119.2286076365323,37.90862282958143],[-119.22861123149484,37.90861785344629],[-119.2286146061635,37.90861278139201],[-119.2286177564667,37.90860761953821],[-119.22862067860356,37.90860237411282],[-119.22862336904845,37.90859705144459],[-119.22862582455534,37.908591657955526],[-119.22862804216162,37.908586200153],[-119.22863001919177,37.90858068462208],[-119.22863175326043,37.90857511801735],[-119.22863324227549,37.908569507055105],[-119.22863448444049,37.9085638585052],[-119.22863547825673,37.9085581791827],[-119.22863622252521,37.90855247593992],[-119.228636716348,37.908546755657966],[-119.22863695912937,37.90854102523856],[-119.22863695057644,37.90853529159557],[-119.2286366906996,37.90852956164683],[-119.22863328015819,37.908491275159264],[-119.22862821216387,37.90845310404986],[-119.2286214926977,37.90841509334744],[-119.22861312968887,37.908377287891604],[-119.22860313300534,37.90833973227969],[-119.22859151444219,37.9083024708143],[-119.22857828770772,37.90826554745091],[-119.22856346840719,37.908229005746186],[-119.2285470740245,37.90819288880638],[-119.22852912390148,37.90815723923676],[-119.22850963921513,37.908122099091074],[-119.22848864295256,37.90808750982214],[-119.2284661598839,37.90805351223284],[-119.22844221653307,37.908020146428086],[-119.2284168411465,37.90798745176744],[-119.22839006365973,37.90795546681865],[-119.22836191566222,37.907924229312314],[-119.22833243035997,37.90789377609718],[-119.2283262238462,37.907887802068565],[-119.22831976244397,37.907882000167724],[-119.22831305375243,37.9078763772181],[-119.22830610566145,37.9078709398327],[-119.22829892634256,37.90786569440623],[-119.22829152423917,37.90786064710768],[-119.22828390805672,37.90785580387305],[-119.22827608675239,37.90785117039829],[-119.22826806952462,37.90784675213269],[-119.22825986580223,37.90784255427245],[-119.22825148523339,37.907838581754476],[-119.22824293767422,37.9078348392508],[-119.2282342331773,37.90783133116279],[-119.2282253819797,37.90782806161623],[-119.22821639449103,37.90782503445634],[-119.22820728128119,37.907822253243225],[-119.22819805306796,37.907819721247805],[-119.22818872070432,37.90781744144785],[-119.22817929516577,37.907815416524585],[-119.2281697875374,37.90781364885942],[-119.22816020900078,37.9078121405313],[-119.22815057082092,37.90781089331407],[-119.22814088433296,37.90780990867456],[-119.22813116092887,37.907809187770766],[-119.228121412044,37.90780873145053],[-119.22811164914368,37.907808540250514],[-119.2281018837097,37.90780861439554],[-119.22809212722692,37.90780895379848],[-119.22808239116956,37.90780955806012],[-119.22807268698787,37.9078104264698],[-119.22806302609463,37.90781155800628],[-119.22805341985166,37.90781295133875],[-119.22804387955658,37.90781460482855],[-119.2280344164294,37.90781651653107],[-119.22756227609028,37.90791128359244],[-119.22753653415982,37.90791567332393],[-119.22751061475994,37.9079193495099],[-119.22748454938824,37.907922307682995],[-119.22745836971986,37.90792454424841],[-119.22743210756876,37.9079260564882],[-119.22740579484919,37.90792684256467],[-119.22737946353685,37.9079269015226],[-119.22735314562999,37.907926233290304],[-119.22732687311063,37.90792483867985],[-119.22730067790559,37.90792271938599],[-119.22727459184775,37.907919877984114],[-119.22724864663732,37.907916317927146],[-119.2272228738034,37.90791204354136],[-119.22719730466548,37.90790706002102],[-119.22717197029563,37.907901373422206],[-119.22714690148052,37.90789499065534],[-119.22712212868413,37.90788791947692],[-119.22709768201065,37.907880168479885],[-119.22707359116798,37.907871747083405],[-119.22704988543157,37.90786266552128],[-119.22702659360881,37.90785293482956],[-119.22700374400412,37.90784256683311],[-119.22698136438449,37.90783157413129],[-119.22695948194566,37.90781997008254],[-119.22693812327925,37.90780776878826],[-119.22691731434034,37.90779498507562],[-119.22689708041585,37.90778163447953],[-119.226877446094,37.90776773322376],[-119.22685843523426,37.907753298201285],[-119.22684007093844,37.90773834695364],[-119.22682237552262,37.90772289764976],[-119.22680537048997,37.907706969063746],[-119.2267890765047,37.90769058055211],[-119.2267735133669,37.907673752030306],[-119.22675869998845,37.907656503948445],[-119.22674465437017,37.90763885726647],[-119.22673139357971,37.90762083342869],[-119.22671893373115,37.90760245433776],[-119.22670728996508,37.90758374232797],[-119.2266964764304,37.907564720138204],[-119.2266865062671,37.907545410884204],[-119.22667739159023,37.907525838030566],[-119.22666914347525,37.907506025362224],[-119.22666177194458,37.90748599695546],[-119.22665528595535,37.907465777148765],[-119.2266496933886,37.90744539051311],[-119.22664500103961,37.90742486182226],[-119.22664121460977,37.90740421602253],[-119.22663833869959,37.907383478202554],[-119.22663637680303,37.9073626735628],[-119.22663533130344,37.90734182738482],[-119.22663520347051,37.907320965000686],[-119.22663599345879,37.907300111762154],[-119.22663770030758,37.9072792930098],[-119.22664339596842,37.907211576019535],[-119.2266463961341,37.90714375046792],[-119.22664669783335,37.90707588369422],[-119.22664430077404,37.907008043078406],[-119.22663920734344,37.90694029597432],[-119.22663142260582,37.90687270964273],[-119.22662095429735,37.90680535118463],[-119.22660781281839,37.90673828747466],[-119.22659201122329,37.90667158509458],[-119.22656594166943,37.90657859368457],[-119.22653583259556,37.906486371469235],[-119.22650171997086,37.90639502857417],[-119.22646364454492,37.90630467407452],[-119.22642165179889,37.90621541586482],[-119.22637579189117,37.90612736053008],[-119.22632611959747,37.906040613218565],[-119.22627269424522,37.90595527751628],[-119.2262155796429,37.90587145532322],[-119.22615484400355,37.905789246731764],[-119.22609055986345,37.90570874990718],[-119.22602280399535,37.905630060970395],[-119.22595165731687,37.9055532738832],[-119.2258772047937,37.90547848033623],[-119.22579953533825,37.905405769639245],[-119.22571874170337,37.90533522861474],[-119.22563492037162,37.90526694149421],[-119.22554817143995,37.90520098981759],[-119.22544539911536,37.905093266742085],[-119.22533803336664,37.90498839418645],[-119.22522620004749,37.9048864950632],[-119.22511003024594,37.90478768879949],[-119.22498966013089,37.90469209119714],[-119.22486523079229,37.90459981429696],[-119.22473688807594,37.90451096624745],[-119.22471449869582,37.90449547118652],[-119.22469278601358,37.90447938289587],[-119.22467177505231,37.904462719917014],[-119.22465149002636,37.904445501453765],[-119.22463195431335,37.904427747350105],[-119.2246131904273,37.904409478067336],[-119.22459521999268,37.90439071466045],[-119.22457806371943,37.904371478753944],[-119.22456174137922,37.90435179251674],[-119.2245462717825,37.90433167863689],[-119.22453167275697,37.904311160295144],[-119.22451796112692,37.90429026113845],[-119.22450515269392,37.90426900525256],[-119.22449326221862,37.90424741713436],[-119.22448230340365,37.90422552166358],[-119.2244722888779,37.90420334407419],[-119.22446323018207,37.90418090992523],[-119.22445513775509,37.904158245071415],[-119.22444802092234,37.90413537563328],[-119.22444188788491,37.904112327967184],[-119.22443674570998,37.904089128634794],[-119.22443260032281,37.9040658043726],[-119.22442945649985,37.904042382060965],[-119.2244273178633,37.90401888869333],[-119.2244259563585,37.90400403969739],[-119.22442394013669,37.90398923752585],[-119.22442127166623,37.90397450029681],[-119.22441795421373,37.90395984604884],[-119.22441399184014,37.90394529271898],[-119.22440938939589,37.90393085812069],[-119.22440415251477,37.903916559922116],[-119.22439828760716,37.903902415624394],[-119.22439180185214,37.90388844254033],[-119.22438470318868,37.90387465777312],[-119.22437700030594,37.90386107819547],[-119.2243687026327,37.9038477204289],[-119.22435982032563,37.903834600823444],[-119.22435036425713,37.9038217354376],[-119.22434034600175,37.90380914001868],[-119.22432977782216,37.9037968299836],[-119.2243186726542,37.90378482039986],[-119.22430704409088,37.90377312596733],[-119.2242949063659,37.903761761000005],[-119.22428227433605,37.90375073940869],[-119.22422624650511,37.903701920637545],[-119.22417232260119,37.90365163639187],[-119.22412056363517,37.90359994356851],[-119.22407102816786,37.90354690065797],[-119.22402377224384,37.90349256767829],[-119.22397884932799,37.9034370061071],[-119.2239363102451,37.90338027881199],[-119.22389620312234,37.90332244997947],[-119.22385857333475,37.90326358504224],[-119.22382346345404,37.9032037506052],[-119.22379091320032,37.90314301437008],[-119.22376095939734,37.903081445058824],[-119.22373363593069,37.90301911233577],[-119.22371448605618,37.90297006077182],[-119.22369751060269,37.90292050904596],[-119.22368273029107,37.902870517655536],[-119.22367016316201,37.902820147634564],[-119.22365982455402,37.90276946047916],[-119.2236517270848,37.90271851807255],[-119.22364588063577,37.90266738260942],[-119.22364229234009,37.902616116520065],[-119.22364096657392,37.90256478239411],[-119.2236419049512,37.90251344290412],[-119.22364510632157,37.90246216072912],[-119.22365056677187,37.902410998477954],[-119.22365137925043,37.902403385026325],[-119.22365185537545,37.9023957537242],[-119.22365199456515,37.90238811389837],[-119.22365179664946,37.90238047488603],[-119.2236512618704,37.90237284602338],[-119.22365039088169,37.902365236634246],[-119.22364918474793,37.902357656018616],[-119.22364764494327,37.90235011344131],[-119.22364577334979,37.90234261812067],[-119.22364357225499,37.90233517921727],[-119.22364104434902,37.90232780582272],[-119.22363819272158,37.90232050694862],[-119.22363502085794,37.902313291515405],[-119.22363153263474,37.90230616834162],[-119.22362773231526,37.902299146132926],[-119.22362362454426,37.90229223347176],[-119.22361921434218,37.90228543880647],[-119.22361450709917,37.902278770441356],[-119.22360950856832,37.90227223652628],[-119.22360422485878,37.90226584504678],[-119.22359866242816,37.90225960381436],[-119.22359282807483,37.90225352045681],[-119.22358672892939,37.90224760240907],[-119.22358037244605,37.902241856903935],[-119.22357376639363,37.902236290963415],[-119.2235669188458,37.90223091139001],[-119.22355983817154,37.90222572475848],[-119.22355253302459,37.90222073740772],[-119.22354501233319,37.90221595543314],[-119.22353728528884,37.90221138467908],[-119.22352936133537,37.90220703073179],[-119.22352125015713,37.90220289891249],[-119.22351296166744,37.90219899427096],[-119.22350450599615,37.90219532157933],[-119.22349589347759,37.90219188532621],[-119.22348713463765,37.90218868971131],[-119.22347824018114,37.902185738640185],[-119.22346922097854,37.90218303571952],[-119.2234600880528,37.90218058425272],[-119.22345085256592,37.902178387235914],[-119.22344152580513,37.90217644735419],[-119.22343211916933,37.90217476697841],[-119.22342264415495,37.90217334816228],[-119.22341311234203,37.90217219263982],[-119.22340353538,37.90217130182326],[-119.22339392497351,37.902170676801354],[-119.22338429286803,37.90217031833794],[-119.22337465083561,37.902170226871156],[-119.22336501066034,37.90217040251276],[-119.2233553841241,37.90217084504811],[-119.22332554172142,37.90217222491317],[-119.22329565716097,37.9021727933656],[-119.22326576557202,37.90217254973724],[-119.22323590209193,37.902171494314395],[-119.22320610182513,37.90216962833775],[-119.22317639980166,37.90216695400074],[-119.22314683093613,37.90216347444705],[-119.22311742998656,37.90215919376686],[-119.22308823151363,37.9021541169921],[-119.22305926983991,37.90214825009049],[-119.22303057900963,37.902141599958526],[-119.22300219274864,37.9021341744134],[-119.22297414442473,37.90212598218382],[-119.22294646700838,37.902117032899646],[-119.2229191930341,37.90210733708073],[-119.22289235456205,37.902096906124406],[-119.2228659831405,37.90208575229222],[-119.22284010976857,37.90207388869538],[-119.22281476485996,37.902061329279434],[-119.22259201158194,37.901949990763335],[-119.22236561035496,37.901843372595245],[-119.22231724293762,37.90182040098726],[-119.22226988881349,37.90179614006347],[-119.22222360270025,37.90177061785784],[-119.22217843808126,37.9017438638618],[-119.22213444714383,37.901715908990056],[-119.22209168071892,37.901686785544904],[-119.22205018822228,37.90165652717895],[-119.22201001759757,37.901625168856135],[-119.22197121526072,37.9015927468114],[-119.22193382604648,37.90155929850875],[-119.22189789315651,37.90152486259804],[-119.22186345810951,37.90148947887021],[-119.22183056069323,37.90145318821136],[-119.22179923891856,37.90141603255559],[-119.22176952897547,37.901378054836265],[-119.22174146519137,37.901339298936755],[-119.22171507999133,37.90129980963944],[-119.22169040386076,37.901259632574124],[-119.22166746530995,37.90121881416524],[-119.2216462908414,37.901177401578195],[-119.2216269049191,37.90113544266488],[-119.22160932994022,37.90109298590846],[-119.22159358620934,37.901050080367156],[-119.22149107281145,37.90076957195601],[-119.22137734691981,37.90049179041739],[-119.22125252384104,37.90021701708843],[-119.22121566428385,37.90014364647962],[-119.22117560342002,37.900071337214875],[-119.2211323898315,37.90000017696688],[-119.22108607592212,37.89993025201502],[-119.22103671785443,37.89986164714065],[-119.2209843754814,37.89979444552436],[-119.22092911227375,37.89972872864508],[-119.22087099524319,37.89966457618144],[-119.22081009486082,37.899602065915026],[-119.22074648497201,37.89954127363619],[-119.22068024270663,37.89948227305207],[-119.22061144838555,37.8994251356974],[-119.22050065739278,37.899339095574966],[-119.22038641473252,37.899255938088736],[-119.22026883980165,37.89917575013984],[-119.22014805547815,37.89909861552589],[-119.22002418799256,37.89902461485341],[-119.21989736679626,37.898953825453766],[-119.21976772442609,37.89888632130226],[-119.21963539636592,37.89882217294089],[-119.21950052090503,37.898761447404716],[-119.21942969590745,37.8987319891234],[-119.21935763639824,37.89870447496662],[-119.21928442733437,37.898678937372736],[-119.2192101550279,37.89865540644961],[-119.21913490704407,37.89863390993941],[-119.21905877209821,37.89861447318572],[-119.21898183995108,37.898597119103734],[-119.21890420130322,37.89858186815324],[-119.21882594768779,37.89856873831453],[-119.21874717136289,37.898557745067144],[-119.21866796520274,37.89854890137171],[-119.21858842258814,37.8985422176545],[-119.21850863729654,37.89853770179545],[-119.21842870339141,37.89853535911848],[-119.21834871511136,37.898535192385566],[-119.21826876675912,37.898537201793246],[-119.21818895259038,37.898541384972525],[-119.21810936670263,37.89854773699162],[-119.21803010292429,37.89855625036172],[-119.21795125470412,37.89856691504594],[-119.21789344488312,37.89857634800823],[-119.21783606901049,37.898587319218336],[-119.21777919225116,37.89859981621571],[-119.21772287920336,37.8986138248068],[-119.21766719382514,37.898629329081295],[-119.21761219936181,37.898646311430156],[-119.2175579582741,37.8986647525656],[-119.21750453216723,37.89868463154293],[-119.21745198172086,37.89870592578449],[-119.21740036662037,37.89872861110516],[-119.21734974548893,37.89875266173991],[-119.21730017582094,37.89877805037294],[-119.21725171391682,37.898804748168814],[-119.21720441481897,37.89883272480521],[-119.21715833224927,37.89886194850725],[-119.21711351854817,37.89889238608367],[-119.21707002461508,37.89892400296451],[-119.21702789985076,37.89895676324032],[-119.21698386396785,37.89899099145668],[-119.21693837524954,37.899024005141705],[-119.21689148701263,37.89905576559911],[-119.21684325421445,37.89908623560152],[-119.21679373338867,37.89911537943405],[-119.21674298257884,37.89914316293624],[-119.21669106127047,37.899169553542094],[-119.21663803032118,37.89919452031826],[-119.21658395188945,37.899218034000214],[-119.21652888936181,37.8992400670267],[-119.2164729072784,37.899260593571945],[-119.21641607125737,37.89927958957593],[-119.21635844791801,37.89929703277271],[-119.21630010480257,37.89931290271633],[-119.21624111029712,37.89932718080496],[-119.2161815335514,37.89933985030267],[-119.21612144439776,37.899350896358925],[-119.21606091326916,37.899360306026175],[-119.21600001111683,37.89936806827495],[-119.21593880932687,37.899374174006724],[-119.21587737963678,37.899378616064716],[-119.21581579405108,37.89938138924218],[-119.2157541247572,37.899382490288524],[-119.2156924440406,37.8993819179132],[-119.2156308242002,37.89937967278709],[-119.21556933746349,37.89937575754181],[-119.21550805590202,37.8993701767666],[-119.21544705134667,37.899362937002955],[-119.21538639530367,37.89935404673692],[-119.21519432200044,37.899325822007086],[-119.21500116897663,37.899302682177726],[-119.2148071505494,37.89928465292412],[-119.21461248199569,37.899271754251004],[-119.21441737931323,37.89926400047032],[-119.21422205898132,37.8992614001854],[-119.2140267377205,37.89926395628149],[-119.21383163225246,37.89927166592241],[-119.21363695905949,37.899284520553756],[-119.21344293414454,37.89930250591245],[-119.21324977279167,37.89932560204247],[-119.21305768932733,37.89935378331708],[-119.21286689688257,37.89938701846707],[-119.21267760715678,37.89942527061565],[-119.21249003018295,37.8994684973192],[-119.21230437409459,37.899516650614395],[-119.21212084489507,37.89956967707139],[-119.21193964622898,37.89962751785304],[-119.2119066720787,37.89963603523988],[-119.21187407824462,37.89964542691865],[-119.21184190163399,37.89965568225485],[-119.21181017868155,37.899666789636036],[-119.21177894530845,37.899678736484944],[-119.21174823688156,37.89969150927375],[-119.21171808817334,37.89970509353937],[-119.2116885333225,37.89971947389991],[-119.21165960579543,37.899734634071926],[-119.21163133834814,37.899750556889046],[-119.21160376298936,37.89976722432126],[-119.21157691094417,37.899784617495406],[-119.21155081261871,37.899802716716536],[-119.21152549756563,37.899821501490166],[-119.21150099445079,37.89984095054555],[-119.21147733102073,37.89986104185975],[-119.21145453407122,37.899881752682546],[-119.21143262941693,37.899903059562114],[-119.21141164186227,37.899924938371825],[-119.21139159517314,37.89994736433728],[-119.21138390436674,37.899955970647824],[-119.21137585563112,37.89996436893789],[-119.21136745792003,37.89997254986468],[-119.21135872057549,37.899980504327296],[-119.21134965331734,37.89998822347667],[-119.21134026623243,37.89999569872558],[-119.2113305697634,37.900002921758116],[-119.21132057469714,37.90000988453894],[-119.21131029215267,37.90001657932222],[-119.21129973356886,37.900022998660255],[-119.21128891069168,37.900029135411806],[-119.21127783556105,37.900034982749986],[-119.21125677419326,37.90004531486534],[-119.21123528856998,37.9000550831189],[-119.21121340272438,37.900064276584104],[-119.21119114113728,37.90007288497729],[-119.21116852870992,37.90008089866937],[-119.21114559073591,37.9000883086964],[-119.21112235287315,37.900095106769655],[-119.21109884111489,37.90010128528497],[-119.21107508176085,37.9001068373312],[-119.21105110138771,37.900111756697925],[-119.21102692681936,37.900116037882455],[-119.21100258509698,37.90011967609594],[-119.2109781034487,37.90012266726876],[-119.21095350925918,37.90012500805502],[-119.21092883003904,37.9001266958364],[-119.21090409339394,37.900127728724975],[-119.21087932699378,37.900128105565344],[-119.21084976077017,37.90012775687401],[-119.21082022763828,37.90012659517911],[-119.21079076319232,37.90012462188078],[-119.21076140294376,37.90012183935729],[-119.21073218227843,37.90011825096223],[-119.21070313641394,37.90011386102043],[-119.21067430035718,37.90010867482276],[-119.2106457088622,37.90010269861982],[-119.21061739638824,37.90009593961425],[-119.21058939705821,37.900088405952246],[-119.21056174461764,37.900080106713574],[-119.2105344723939,37.90007105190067],[-119.21050761325611,37.90006125242668],[-119.21048119957547,37.900050720102215],[-119.21045526318622,37.90003946762108],[-119.21042983534737,37.90002750854504],[-119.21040494670501,37.90001485728751],[-119.21038062725525,37.9000015290961],[-119.21035690630814,37.89998754003426],[-119.21033381245242,37.89997290696196],[-119.21031137352095,37.899957647515244],[-119.21028961655726,37.89994178008522],[-119.21026856778283,37.899925323795614],[-119.21024825256563,37.899908298479865],[-119.21022869538943,37.899890724657276],[-119.21020991982441,37.89987262350811],[-119.21019194849862,37.899854016848195],[-119.21014421548996,37.8998008496842],[-119.21009886609022,37.89974638816087],[-119.21005595614001,37.89969069934526],[-119.21001553847549,37.89963385181562],[-119.2099776628633,37.899575915577024],[-119.20994237593936,37.899516961975],[-119.20990972115148,37.89945706360772],[-119.2098797387057,37.8993962942367],[-119.20985246551712,37.89933472869579],[-119.20982793516413,37.899272442799145],[-119.20981870022726,37.899245791042006],[-119.20981061291505,37.89921890612987],[-119.20980368255724,37.89919181908199],[-119.20979791714869,37.899164561150876],[-119.20979332334008,37.89913716378609],[-119.20978990643034,37.899109658598086],[-119.20978767036054,37.899082077321665],[-119.20978661770924,37.89905445177939],[-119.20978674968967,37.89902681384488],[-119.2097880661482,37.89899919540595],[-119.20979056556466,37.898971628327985],[-119.20979424505394,37.898944144416994],[-119.20979910036947,37.89891677538303],[-119.20980512590806,37.898889552803574],[-119.20981231471636,37.898862508087106],[-119.20982065849893,37.89883567243681],[-119.20983014762774,37.8988090768147],[-119.20984077115341,37.898782751905735],[-119.20985251681773,37.89875672808259],[-119.20986537106788,37.89873103537046],[-119.20987931907199,37.89870570341253],[-119.20989434473638,37.89868076143573],[-119.20990695974902,37.89865982612868],[-119.20991867528495,37.898638565160454],[-119.20992947797812,37.89861700278872],[-119.20993935550406,37.89859516361496],[-119.20994829659384,37.89857307255647],[-119.20995629104704,37.89855075481793],[-119.20996332974326,37.89852823586267],[-119.20996940465268,37.89850554138344],[-119.20997450884505,37.89848269727334],[-119.20997863649767,37.89845972959614],[-119.20998178290208,37.898436664556556],[-119.2099839444693,37.898413528470414],[-119.20998511873408,37.89839034773446],[-119.20998530435759,37.898367148796495],[-119.20998450112893,37.89834395812497],[-119.2099827099655,37.89832080217893],[-119.20997993291178,37.89829770737772],[-119.20997617313718,37.898274700070985],[-119.2099714349322,37.898251806508426],[-119.20996572370372,37.898229052810024],[-119.20995904596874,37.89820646493611],[-119.20995140934696,37.89818406865783],[-119.20994282255204,37.898161889527685],[-119.20993329538173,37.89813995285042],[-119.20992283870669,37.89811828365413],[-119.20991804166984,37.89810928333879],[-119.20991285013666,37.89810042154605],[-119.20990727046569,37.89809170912953],[-119.2099013094909,37.898083156759974],[-119.2098949745132,37.898074774912025],[-119.20988827329164,37.89806657385154],[-119.20988121403373,37.89805856362287],[-119.2098738053856,37.89805075403673],[-119.20986605642118,37.89804315465805],[-119.20985797663126,37.89803577479425],[-119.20984957591182,37.898028623484],[-119.20976180101826,37.89795407370062],[-119.20967715061377,37.89787728861014],[-119.20959571529269,37.89779835039804],[-119.20951758220724,37.8977173435542],[-119.2094428349744,37.89763435478226],[-119.20937155358638,37.89754947290691],[-119.20936012668444,37.89753482039124],[-119.20934934514027,37.89751986392218],[-119.2093392218145,37.89750462134103],[-119.20932976878262,37.89748911083025],[-119.20932099732052,37.897473350892014],[-119.20931291789103,37.897457360325944],[-119.20930554013142,37.8974411582068],[-119.209298872842,37.89742476386165],[-119.20929292397553,37.897408196846875],[-119.20928770062771,37.89739147692483],[-119.20928320902891,37.897374624040246],[-119.20927945453647,37.897357658296414],[-119.20927644162852,37.8973405999313],[-119.20927417389858,37.89732346929326],[-119.2092726540512,37.89730628681692],[-119.20927188389888,37.89728907299872],[-119.20927186435974,37.89727184837242],[-119.20927259545658,37.89725463348471],[-119.20927407631679,37.89723744887064],[-119.20927630517339,37.89722031502912],[-119.20927927936711,37.897203252398484],[-119.20928299534965,37.897186281332104],[-119.20928744868786,37.89716942207414],[-119.20929263406902,37.89715269473536],[-119.20929854530718,37.8971361192691],[-119.20930517535058,37.89711971544759],[-119.20931251629007,37.89710350283829],[-119.20932055936848,37.89708750078053],[-119.20932929499108,37.89707172836248],[-119.20933871273714,37.89705620439839],[-119.20934880137216,37.89704094740606],[-119.2093595488615,37.897025975584945],[-119.20937094238458,37.897011306794205],[-119.2093829683502,37.89699695853156],[-119.20939561241276,37.896982947912385],[-119.20940885948947,37.8969692916493],[-119.20942269377821,37.89695600603218],[-119.20943709877635,37.89694310690878],[-119.20945205730065,37.89693060966585],[-119.20946755150759,37.896918529210716],[-119.2094835629146,37.896906879953534],[-119.20950007242232,37.8968956757901],[-119.20951706033715,37.8968849300853],[-119.20953450639489,37.8968746556571],[-119.20955238978495,37.89686486476134],[-119.20957068917495,37.89685556907706],[-119.20957617713897,37.8968527810392],[-119.2095815400018,37.89684984410919],[-119.20958677133329,37.89684676180849],[-119.20959186486095,37.89684353783284],[-119.20959681447758,37.89684017604785],[-119.20960161424848,37.89683668048437],[-119.20960625841863,37.89683305533365],[-119.20961074141964,37.89682930494235],[-119.20961505787629,37.896825433807216],[-119.20961920261313,37.89682144656985],[-119.20962317066049,37.896817348011034],[-119.2096269572607,37.896813143045],[-119.20963055787354,37.89680883671363],[-119.20963396818185,37.896804434180254],[-119.20963718409664,37.89679994072361],[-119.20964020176199,37.896795361731456],[-119.20964301755971,37.896790702694055],[-119.20964562811366,37.89678596919773],[-119.20964803029376,37.896781166918],[-119.20965022121977,37.896776301612874],[-119.20965219826482,37.89677137911596],[-119.2096539590584,37.896766405329416],[-119.20965550148932,37.896761386216944],[-119.20965682370827,37.89675632779647],[-119.20965792412991,37.896751236133184],[-119.20965880143486,37.896746117332015],[-119.20965945457125,37.89674097753057],[-119.20965988275604,37.89673582289153],[-119.20966008547585,37.896730659595335],[-119.20966006248764,37.896725493832946],[-119.20965981381907,37.89672033179816],[-119.20965933976832,37.8967151796803],[-119.20965864090384,37.896710043656874],[-119.20965771806361,37.89670492988605],[-119.20965657235418,37.896699844499295],[-119.20965520514933,37.896694793594065],[-119.20965361808841,37.89668978322649],[-119.20965181307433,37.896684819404044],[-119.20964979227142,37.89667990807845],[-119.20964755810266,37.896675055138424],[-119.20964511324689,37.89667026640272],[-119.20964246063559,37.89666554761309],[-119.2096396034493,37.89666090442742],[-119.20963654511387,37.89665634241295],[-119.20963328929629,37.896651867039616],[-119.2096298399004,37.896647483673405],[-119.20962620106206,37.89664319757008],[-119.20962237714434,37.896639013868686],[-119.20961837273218,37.89663493758552],[-119.20961419262697,37.896630973608126],[-119.20960984184069,37.89662712668934],[-119.20960532559006,37.89662340144167],[-119.20960064929007,37.896619802331706],[-119.20959581854773,37.89661633367486],[-119.20959083915513,37.896612999630044],[-119.20958571708267,37.896609804194846],[-119.20958045847178,37.89660675120059],[-119.2095750696276,37.89660384430788],[-119.20954105638658,37.896585494690314],[-119.20950786761817,37.89656622034478],[-119.20947554334039,37.89654604451214],[-119.2094441225289,37.896524991520224],[-119.20941364306974,37.89650308675445],[-119.20938414171388,37.8964803566274],[-119.20935565403276,37.89645682854668],[-119.20932821437545,37.89643253088218],[-119.20930185582723,37.896407492931644],[-119.20927661016972,37.89638174488539],[-119.20925250784254,37.89635531778998],[-119.20922957790657,37.89632824351068],[-119.20920784800896,37.89630055469315],[-119.20918734434983,37.89627228472394],[-119.20916809165061,37.89624346769034],[-119.20915011312425,37.89621413833922],[-119.20913343044731,37.896184332035176],[-119.20912147495106,37.89616294526328],[-119.20910861390038,37.89614189099856],[-119.20909486199886,37.89612119331036],[-119.20908023496845,37.89610087586037],[-119.20906474953154,37.89608096187555],[-119.20904842339176,37.89606147412162],[-119.20903127521387,37.896042434877],[-119.20901332460228,37.896023865907374],[-119.20899459207874,37.89600578844079],[-119.20897509905873,37.89598822314334],[-119.20895486782722,37.89597119009571],[-119.208933921513,37.89595470876995],[-119.20891228406222,37.89593879800752],[-119.2088899802112,37.895923475997485],[-119.20886703545796,37.895908760255914],[-119.20884347603318,37.89589466760576],[-119.20881932887019,37.89588121415764],[-119.20879462157417,37.89586841529145],[-119.20876938239057,37.89585628563877],[-119.20874364017284,37.89584483906609],[-119.20871742434949,37.89583408865905],[-119.20869076489042,37.89582404670741],[-119.20868477699315,37.895821788821834],[-119.20867889135484,37.89581936797441],[-119.20867311503542,37.895816787069],[-119.20866745496373,37.89581404920146],[-119.20866191792913,37.89581115765594],[-119.20865651057345,37.89580811590089],[-119.20865123938285,37.89580492758498],[-119.20864611068023,37.89580159653265],[-119.20864113061761,37.89579812673959],[-119.20863630516864,37.89579452236789],[-119.20863164012154,37.895790787741085],[-119.20862714107211,37.895786927338904],[-119.208622813417,37.895782945792035],[-119.20861866234735,37.895778847876365],[-119.20861469284239,37.89577463850748],[-119.20861090966359,37.8957703227346],[-119.20860731734895,37.89576590573456],[-119.20860392020745,37.89576139280566],[-119.20860072231407,37.89575678936128],[-119.20859772750462,37.89575210092329],[-119.20859493937144,37.895747333115594],[-119.2085923612589,37.89574249165727],[-119.20858999625948,37.89573758235574],[-119.20858784720997,37.89573261109982],[-119.20858591668816,37.89572758385259],[-119.2085842070097,37.89572250664436],[-119.20858272022537,37.89571738556534],[-119.2085814581185,37.89571222675832],[-119.20858042220299,37.89570703641142],[-119.20857961372138,37.89570182075054],[-119.20857903364339,37.895696586031946],[-119.20857868266486,37.8956913385348],[-119.20857856120668,37.89568608455354],[-119.20857866941449,37.89568083039043],[-119.20857900715846,37.895675582347906],[-119.20857957403342,37.89567034672108],[-119.20858036935937,37.89566512979018],[-119.2085813921822,37.89565993781301],[-119.20858308037374,37.89565296158345],[-119.20858507183198,37.89564603576056],[-119.20858736417708,37.8956391686205],[-119.20858995466965,37.895632368369306],[-119.20859284021407,37.895625643133094],[-119.20859601736213,37.89561900094829],[-119.20859948231713,37.89561244975215],[-119.20860323093848,37.89560599737313],[-119.20860725874662,37.895599651521614],[-119.20861156092839,37.89559341978073],[-119.20861613234274,37.89558730959721],[-119.2086209675269,37.89558132827252],[-119.20862606070293,37.89557548295415],[-119.20863140578454,37.89556978062707],[-119.20863699638454,37.8955642281054],[-119.20864282582224,37.8955588320242],[-119.20864888713162,37.89555359883164],[-119.20865517306957,37.89554853478118],[-119.20866167612454,37.89554364592423],[-119.20866838852558,37.89553893810276],[-119.20867530225154,37.895534416942496],[-119.20868240904072,37.89553008784606],[-119.20868970040073,37.89552595598658],[-119.2086971676186,37.895522026301485],[-119.20870480177122,37.89551830348661],[-119.20871259373607,37.895514791990585],[-119.20872053420193,37.89551149600954],[-119.20872861368026,37.89550841948205],[-119.20873682251633,37.89550556608445],[-119.20874515090087,37.89550293922647],[-119.20875358888173,37.895500542047095],[-119.2087621263758,37.89549837741088],[-119.20877075318111,37.89549644790447],[-119.2087794589889,37.89549475583356],[-119.20878823339605,37.895493303220135],[-119.20879706591744,37.89549209180002],[-119.20880594599856,37.895491123020776],[-119.20881486302797,37.89549039804011],[-119.2088238063502,37.895489917724305],[-119.20883276527827,37.89548968264734],[-119.2088417291066,37.895489693090134],[-119.20885068712374,37.89548994904018],[-119.20885962862516,37.89549045019165],[-119.20886854292614,37.895491195945695],[-119.20887741937436,37.89549218541114],[-119.2088862473628,37.89549341740562],[-119.20889501634232,37.89549489045694],[-119.20890371583434,37.895496602804876],[-119.20891233544324,37.89549855240321],[-119.20892086486889,37.89550073692226],[-119.20893436999032,37.89550419759223],[-119.2089480167972,37.8955072895874],[-119.20896178926765,37.895510009277665],[-119.20897567123225,37.89551235346997],[-119.20898964639306,37.895514319412165],[-119.2090036983427,37.89551590479615],[-119.20901781058365,37.895517107760625],[-119.20903196654749,37.895517926893255],[-119.20904614961465,37.895518361232334],[-119.20906034313361,37.89551841026796],[-119.20907453044063,37.89551807394256],[-119.20908869487926,37.89551735265098],[-119.20910281981985,37.895516247240046],[-119.20911688867919,37.89551475900755],[-119.20913088493988,37.89551288970075],[-119.20914479216978,37.89551064151427],[-119.20915859404123,37.89550801708757],[-119.20917227435032,37.89550501950185],[-119.20918581703587,37.89550165227637],[-119.2091992061982,37.895497919364395],[-119.20921242611803,37.895493825148485],[-119.2092254612746,37.89548937443544],[-119.20923829636425,37.89548457245056],[-119.20925091631806,37.89547942483154],[-119.20926330631983,37.895473937621894],[-119.20927545182326,37.89546811726379],[-119.20928733856913,37.89546197059058],[-119.20929895260201,37.89545550481865],[-119.20931028028672,37.89544872753907],[-119.20932130832419,37.895441646708626],[-119.20933202376722,37.89543427064043],[-119.20934241403553,37.895426607994295],[-119.20935246693074,37.895418667766386],[-119.20936217065048,37.89541045927887],[-119.20937151380237,37.89540199216874],[-119.20939018033675,37.89538386519268],[-119.20940806149551,37.895365247668686],[-119.20942513676576,37.89534616095493],[-119.20944138655932,37.89532662694782],[-119.209456792235,37.89530666805685],[-119.20947133612006,37.89528630717889],[-119.20948500153037,37.89526556767208],[-119.20949777278973,37.89524447332877],[-119.20950963524768,37.89522304834845],[-119.2095205752964,37.89520131730984],[-119.20953058038629,37.89517930514277],[-119.20953963904036,37.895157037099565],[-119.20954774086742,37.89513453872606],[-119.20955487657393,37.89511183583231],[-119.20956103797477,37.89508895446295],[-119.20956621800248,37.89506592086736],[-119.2095704107155,37.8950427614695],[-119.20957361130493,37.89501950283768],[-119.20957581609998,37.89499617165398],[-119.20957702257232,37.89497279468368],[-119.2095772293388,37.894949398744586],[-119.20957643616319,37.89492601067625],[-119.20957464395636,37.89490265730913],[-119.20957185477522,37.89487936543389],[-119.20956807182043,37.89485616177058],[-119.20956466727739,37.89483523354585],[-119.20956217374356,37.89481422486069],[-119.20956059417304,37.89479316061102],[-119.20955993043687,37.89477206575857],[-119.20956018332086,37.894750965301256],[-119.20956135252452,37.894729884243674],[-119.20956343666155,37.894708847567344],[-119.2095664332614,37.89468788020128],[-119.2095703387723,37.89466700699226],[-119.20957514856532,37.894646252675436],[-119.20958085694004,37.89462564184515],[-119.20958745713116,37.89460519892561],[-119.20959494131662,37.89458494814203],[-119.2096033006268,37.89456491349199],[-119.20961252515508,37.89454511871685],[-119.20962260396955,37.89452558727373],[-119.20963352512601,37.89450634230766],[-119.20964527568209,37.89448740662421],[-119.20965784171261,37.89446880266238],[-119.20967120832606,37.894450552468115],[-119.20968535968228,37.89443267766807],[-119.20970027901123,37.89441519944409],[-119.2097159486328,37.89439813850801],[-119.20973234997786,37.894381515077185],[-119.20974946361021,37.89436534885054],[-119.20976726924964,37.89434965898513],[-119.20978574579593,37.89433446407354],[-119.20980487135382,37.894319782121855],[-119.20982462325914,37.89430563052825],[-119.20984497810538,37.894292026062395],[-119.20986591177171,37.894278984845656],[-119.20988739945139,37.8942665223319],[-119.20990941568118,37.8942546532892],[-119.2099319343716,37.89424339178246],[-119.20995492883772,37.894232751156544],[-119.20997837183094,37.894222744020574],[-119.21000223557111,37.894213382233055],[-119.21002649177962,37.89420467688765],[-119.2100511117127,37.894196638300215],[-119.21007606619567,37.89418927599648],[-119.21010132565746,37.89418259870075],[-119.21012686016554,37.89417661432557],[-119.21015263946157,37.89417132996249],[-119.21017863299706,37.894166751873385],[-119.2101885232704,37.894165009982245],[-119.2101983320433,37.89416299940798],[-119.21020804769636,37.89416072253233],[-119.2102176587205,37.89415818205243],[-119.2102271537305,37.89415538097774],[-119.21023652147872,37.89415232262643],[-119.21024575086817,37.89414901062135],[-119.21025483096577,37.894145448885894],[-119.2102637510153,37.894141641639294],[-119.21027250045023,37.89413759339156],[-119.21028106890599,37.894133308938244],[-119.21028944623252,37.89412879335467],[-119.21029762250612,37.89412405198995],[-119.21030558804128,37.8941190904607],[-119.21031333340211,37.89411391464427],[-119.21032084941358,37.89410853067194],[-119.21032812717233,37.89410294492148],[-119.21033515805725,37.89409716400973],[-119.21034193373967,37.89409119478472],[-119.21034844619324,37.89408504431754],[-119.21035468770341,37.89407871989398],[-119.21036065087667,37.89407222900588],[-119.21036632864912,37.894065579342275],[-119.21037171429504,37.89405877878029],[-119.21037680143469,37.89405183537583],[-119.21038158404203,37.89404475735397],[-119.21038605645171,37.894037553099224],[-119.21039021336584,37.894030231145685],[-119.21039404986028,37.89402280016687],[-119.21039756139051,37.89401526896541],[-119.21040074379685,37.894007646462676],[-119.21040359330961,37.89399994168819],[-119.21040610655338,37.89399216376892],[-119.2104082805511,37.893984321918495],[-119.21041011272762,37.89397642542624],[-119.21041160091266,37.89396848364625],[-119.21041274334345,37.89396050598622],[-119.2104135386668,37.89395250189638],[-119.2104139859407,37.893944480858245],[-119.2104140846354,37.893936452373424],[-119.21041383463415,37.89392842595231],[-119.21041323623318,37.893920411102904],[-119.21041229014143,37.893912417319406],[-119.21041099747978,37.89390445407115],[-119.21040935977962,37.89389653079126],[-119.21040737898102,37.893888656865485],[-119.2104050574305,37.89388084162116],[-119.21040239787823,37.893873094316056],[-119.2103994034748,37.8938654241275],[-119.21039607776738,37.89385784014145],[-119.21039242469568,37.89385035134172],[-119.21038844858715,37.893842966599394],[-119.2103841541519,37.89383569466232],[-119.21037954647709,37.89382854414465],[-119.21037463102097,37.893821523516735],[-119.2103694136064,37.89381464109507],[-119.21034376968916,37.89378332403717],[-119.21031676427299,37.89375273414266],[-119.21028843016117,37.89372290856696],[-119.21025880177083,37.893693883537175],[-119.210227915091,37.89366569430802],[-119.21019580763885,37.89363837511889],[-119.21016251841435,37.89361195915247],[-119.21012808785268,37.89358647849425],[-119.21009255777514,37.89356196409369],[-119.21005597133853,37.893538445726556],[-119.21001837298243,37.8935159519588],[-119.20997980837554,37.89349451011182],[-119.20994032435999,37.8934741462293],[-119.20989996889456,37.89345488504564],[-119.20985879099635,37.89343674995582],[-119.20981684068131,37.89341976298703],[-119.2097741689035,37.893403944771926],[-119.20973082749309,37.89338931452357],[-119.20968686909362,37.89337589001206],[-119.20964234709786,37.89336368754302],[-119.20959731558305,37.89335272193773],[-119.20955182924529,37.89334300651519],[-119.20950594333294,37.893334553075846],[-119.20945971357972,37.893327371887345],[-119.20941319613691,37.89332147167204],[-119.20936644750512,37.89331685959645],[-119.20931952446578,37.893313541262394],[-119.209287490917,37.89331129739319],[-119.20925556890393,37.89330821280689],[-119.20922379355139,37.89330429089761],[-119.20919219982292,37.893299535980745],[-119.2091608224821,37.89329395328827],[-119.20912969605442,37.89328754896303],[-119.20909885478927,37.89328033005188],[-119.2090683326222,37.893272304498076],[-119.20903816313765,37.89326348113235],[-119.20900837953194,37.893253869663354],[-119.20897901457676,37.89324348066686],[-119.20895010058314,37.89323232557425],[-119.2089216693658,37.89322041665976],[-119.20889375220824,37.89320776702715],[-119.20886637982831,37.89319439059517],[-119.20883958234427,37.893180302082335],[-119.20881338924188,37.8931655169906],[-119.20878782934177,37.8931500515884],[-119.20875668957835,37.89312986320629],[-119.20872643349978,37.89310884790738],[-119.20869709605398,37.893087029966395],[-119.20866871112769,37.89306443458512],[-119.20864131150732,37.89304108786339],[-119.20861492884107,37.893017016768866],[-119.2085895936024,37.89299224910585],[-119.20856533505473,37.892966813483284],[-119.20854218121781,37.8929407392816],[-119.20852015883516,37.89291405661883],[-119.20849929334338,37.89288679631579],[-119.20847960884262,37.89285898986051],[-119.20846112806883,37.8928306693718],[-119.20844387236751,37.89280186756222],[-119.20842786166895,37.89277261770024],[-119.20841311446534,37.89274295357184],[-119.20839964778936,37.89271290944143],[-119.20838747719452,37.89268252001242],[-119.20837661673721,37.89265182038689],[-119.20836707896045,37.892620846025245],[-119.20835887487941,37.89258963270523],[-119.2083520139687,37.89255821648045],[-119.20834650415152,37.89252663363892],[-119.2082922246231,37.89221699504256],[-119.20822418943845,37.89190906746967],[-119.2081424835371,37.89160323458432],[-119.20811415013878,37.89149785829422],[-119.20809017803344,37.891391804396214],[-119.20807059281925,37.891285186220934],[-119.20805541540615,37.891178117701536],[-119.20804466199372,37.89107071325193],[-119.2080383440538,37.8909630876445],[-119.20803775207779,37.890953113700704],[-119.20803673616308,37.890943161241225],[-119.20803529746472,37.89093324157984],[-119.20803343761837,37.89092336599301],[-119.20803115873842,37.8909135457071],[-119.20802846341563,37.89090379188558],[-119.20802535471412,37.890894115616405],[-119.20802183616797,37.890884527899324],[-119.20801791177718,37.89087503963346],[-119.20801358600299,37.89086566160479],[-119.20800886376303,37.89085640447413],[-119.20800375042558,37.8908472787647],[-119.20799825180346,37.89083829485037],[-119.20799237414757,37.89082946294388],[-119.20798612413954,37.890820793085076],[-119.20797950888439,37.890812295129656],[-119.2079725359023,37.89080397873787],[-119.20796521312008,37.89079585336357],[-119.20795754886217,37.890787928243455],[-119.20741157200378,37.89024253054182],[-119.20738933829463,37.890221089945854],[-119.20736617940833,37.89020027353643],[-119.20734212322623,37.89018010637408],[-119.2073171987099,37.89016061273771],[-119.20729143586621,37.890141816095394],[-119.20726486571114,37.890123739076074],[-119.20723752023262,37.89010640344229],[-119.2072094323518,37.890089830064106],[-119.2071806358836,37.89007403889384],[-119.20715116549586,37.89005904894215],[-119.20712105666772,37.890044878255104],[-119.20709034564682,37.89003154389245],[-119.20707830754105,37.890026315217945],[-119.20706650768263,37.89002075590173],[-119.20705496052521,37.89001487275343],[-119.20704368021292,37.89000867297939],[-119.20703268056302,37.89000216417373],[-119.20702197504895,37.88999535430912],[-119.2070115767839,37.88998825172699],[-119.20700149850461,37.88998086512735],[-119.20699175255595,37.88997320355805],[-119.20698235087568,37.88996527640378],[-119.20697330497981,37.889957093374534],[-119.20696462594854,37.88994866449376],[-119.2069563244128,37.88994000008599],[-119.20694841054097,37.88993111076428],[-119.2069408940266,37.8899220074172],[-119.2069337840766,37.88991270119543],[-119.20692708939974,37.88990320349815],[-119.20692081819621,37.889893525959145],[-119.20691497814745,37.88988368043239],[-119.20690957640674,37.889873678977686],[-119.20690461959046,37.889863533845805],[-119.20690088144968,37.88985586424592],[-119.20689682265203,37.88984829770711],[-119.20689244771273,37.889840842646734],[-119.20688776149875,37.88983350735803],[-119.20688276922331,37.88982630000107],[-119.20687747644007,37.889819228593566],[-119.206871889037,37.88981230100202],[-119.2068660132298,37.8898055249329],[-119.20685985555502,37.889798907924174],[-119.20685342286272,37.88979245733684],[-119.20684672230894,37.88978618034674],[-119.20683976134768,37.88978008393661],[-119.20683254772258,37.88977417488831],[-119.20682508945845,37.889768459775276],[-119.20680116083933,37.889751316522386],[-119.20677651607183,37.88973482279091],[-119.20675118321346,37.88971899735826],[-119.20672519110502,37.88970385824104],[-119.20669856933782,37.889689422674515],[-119.20667134821996,37.889675707092955],[-119.20664355874177,37.88966272711092],[-119.20661523254067,37.88965049750556],[-119.20658640186502,37.889639032199746],[-119.2065570995374,37.88962834424623],[-119.2065273589174,37.889618445812715],[-119.20649721386346,37.88960934816813],[-119.20646669869447,37.88960106166971],[-119.20643584815062,37.88959359575127],[-119.20640469735383,37.88958695891238],[-119.20637328176791,37.88958115870878],[-119.206341637158,37.88957620174369],[-119.20630979955003,37.88957209366042],[-119.20627780518953,37.88956883913579],[-119.20624569050054,37.88956644187494],[-119.2062134920441,37.889564904607035],[-119.20618124647653,37.889564229082154],[-119.20614899050783,37.88956441606938],[-119.20600595002644,37.88956903936143],[-119.20586318148068,37.88957741741089],[-119.20572084174697,37.889589541011816],[-119.20557908723065,37.889605396842576],[-119.20543807369431,37.88962496748049],[-119.20529795608671,37.88964823142095],[-119.20524615592511,37.889656851276925],[-119.20519403202269,37.88966414313924],[-119.20514163857244,37.88967009942659],[-119.20508903004777,37.889674713946235],[-119.20503626114568,37.889677981900455],[-119.20498338672991,37.889679899891576],[-119.20493046177397,37.88968046592546],[-119.20487754130389,37.88967967941361],[-119.20482468034103,37.88967754117371],[-119.20477193384492,37.889674053428976],[-119.20471935665606,37.88966921980555],[-119.20469489723305,37.88966631537231],[-119.20467057758785,37.88966274913984],[-119.2046464262222,37.88965852528761],[-119.20462247144067,37.88965364876586],[-119.2045987413173,37.889648125289675],[-119.20457526366296,37.889641961332416],[-119.20455206599254,37.88963516411794],[-119.2045291754928,37.889627741612415],[-119.20450661899044,37.88961970251469],[-119.20448442292079,37.889611056246316],[-119.20446261329667,37.889601812940384],[-119.20444121567796,37.88959198342968],[-119.20442025514171,37.88958157923405],[-119.20439975625268,37.889570612546805],[-119.20437974303456,37.889559096220424],[-119.20436023894179,37.88954704375162],[-119.20434126683219,37.88953446926541],[-119.20432284893995,37.88952138749857],[-119.20430500684984,37.88950781378235],[-119.20428776147168,37.88949376402461],[-119.204271133016,37.88947925469103],[-119.20425514097025,37.88946430278597],[-119.20423980407601,37.88944892583234],[-119.20422514030702,37.88943314185129],[-119.20421116684815,37.88941696934089],[-119.20419790007516,37.88940042725457],[-119.2041853555356,37.88938353497892],[-119.20417354793062,37.88936631231084],[-119.20416249109758,37.889348779434464],[-119.20415219799405,37.889330956897446],[-119.20414268068245,37.88931286558693],[-119.20413395031602,37.88929452670496],[-119.20412601712573,37.88927596174379],[-119.20411889040822,37.88925719246055],[-119.20411257851505,37.889238240851846],[-119.20409790620756,37.88919413694446],[-119.20408136846204,37.88915044955919],[-119.20406298403542,37.889107228237165],[-119.20404277377867,37.88906452199092],[-119.20402076061308,37.889022379248814],[-119.20399696950433,37.88898084780014],[-119.2039714274341,37.88893997474091],[-119.20394416336951,37.888899806420454],[-119.20391520823026,37.88886038838882],[-119.20388459485345,37.88882176534527],[-119.20387374992929,37.888809064066436],[-119.20386236028544,37.88879666586637],[-119.20385043939561,37.88878458541151],[-119.20383800136189,37.888772836992445],[-119.20382506089803,37.88876143450696],[-119.20381163331223,37.88875039144361],[-119.20379773448876,37.88873972086578],[-119.20378338086948,37.8887294353962],[-119.20376858943413,37.888719547202065],[-119.20375337768036,37.88871006798055],[-119.203737763603,37.88870100894509],[-119.20372176567281,37.88869238081202],[-119.20370540281462,37.88868419378799],[-119.20368869438488,37.888676457557764],[-119.20367166014886,37.88866918127288],[-119.20365432025724,37.88866237354079],[-119.20363669522217,37.88865604241469],[-119.20361880589317,37.8886501953839],[-119.20360067343235,37.88864483936517],[-119.20358231928942,37.88863998069433],[-119.20356376517638,37.88863562511892],[-119.20354503304168,37.88863177779136],[-119.20352614504438,37.8886284432628],[-119.2035071235279,37.8886256254778],[-119.20348799099362,37.88862332776963],[-119.20346877007425,37.88862155285638],[-119.20344948350701,37.888620302837616],[-119.2034301541068,37.88861957919208],[-119.20341080473915,37.8886193827758],[-119.20339145829324,37.88861971382111],[-119.20331684951036,37.888621035609454],[-119.20324222621682,37.88862041346134],[-119.20316766903366,37.88861784804893],[-119.20309325851042,37.88861334214378],[-119.20301907503818,37.88860690061397],[-119.20294519876263,37.88859853041877],[-119.20287170949757,37.88858824060103],[-119.20279868663852,37.88857604227762],[-119.20272620907703,37.88856194862724],[-119.2026543551154,37.888545974876195],[-119.2025832023821,37.88852813828209],[-119.2025128277478,37.88850845811496],[-119.20244330724238,37.88848695563667],[-119.20237471597282,37.88846365407774],[-119.20236168277312,37.888459236801076],[-119.20234846478108,37.88845517903703],[-119.20233507778025,37.888451485630966],[-119.20232153775588,37.8884481609931],[-119.20230786087608,37.88844520909338],[-119.20229406347227,37.88844263345668],[-119.20228016201982,37.88844043715844],[-119.20226617311832,37.888438622821354],[-119.20225211347183,37.88843719261183],[-119.20223799986881,37.888436148237695],[-119.2022238491622,37.888435490946044],[-119.20220967824922,37.88843522152172],[-119.20219550405118,37.888435340286435],[-119.20218134349341,37.88843584709839],[-119.20216721348487,37.88843674135239],[-119.2021531308981,37.888438021980654],[-119.20213911254893,37.888439687453925],[-119.2021251751766,37.88844173578354],[-119.20211133542355,37.888444164523584],[-119.20209760981575,37.88844697077391],[-119.20208401474282,37.88845015118361],[-119.20207056643855,37.88845370195499],[-119.20205728096145,37.88845761884807],[-119.20204417417563,37.88846189718579],[-119.20203126173182,37.88846653185937],[-119.20201855904867,37.888471517334594],[-119.20200608129446,37.88847684765834],[-119.20199384336877,37.888482516465714],[-119.2019818598849,37.888488516987636],[-119.20197014515229,37.88849484205892],[-119.20195871315951,37.88850148412685],[-119.20194757755752,37.88850843526018],[-119.2019367516433,37.88851568715859],[-119.20192624834417,37.888523231162594],[-119.20191608020212,37.88853105826401],[-119.20191164683578,37.88853447059225],[-119.20190706695034,37.88853775913658],[-119.20190234604532,37.888540919948106],[-119.20189748978969,37.888543949231256],[-119.20189250401484,37.88854684334848],[-119.20188739470773,37.88854959882445],[-119.20188216800366,37.88855221235035],[-119.201876830179,37.888554680787834],[-119.20187138764337,37.888557001172764],[-119.20186584693228,37.888559170718814],[-119.20186021469905,37.888561186820745],[-119.20185449770698,37.88856304705759],[-119.20184870282108,37.88856474919556],[-119.20184283699993,37.8885662911907],[-119.20183690728726,37.88856767119136],[-119.20183092080359,37.888568887540416],[-119.20182488473755,37.888569938777266],[-119.2018188063373,37.88857082363958],[-119.20181269290191,37.88857154106478],[-119.20180655177248,37.88857209019139],[-119.20180039032333,37.888572470359996],[-119.20179421595326,37.8885726811141],[-119.20178803607648,37.8885727222006],[-119.20178185811395,37.88857259357019],[-119.2017756894842,37.88857229537734],[-119.20176953759461,37.88857182798009],[-119.20176340983248,37.88857119193968],[-119.20175731355609,37.88857038801992],[-119.20175125608594,37.88856941718617],[-119.20174524469594,37.8885682806042],[-119.20173928660464,37.88856697963883],[-119.20173338896659,37.88856551585229],[-119.20172755886374,37.88856389100233],[-119.20172180329698,37.88856210704003],[-119.20171612917765,37.88856016610767],[-119.20171054331934,37.88855807053591],[-119.20170505242952,37.88855582284115],[-119.20169966310182,37.88855342572244],[-119.20169438180777,37.888550882058304],[-119.20168921488919,37.88854819490315],[-119.2016841685506,37.888545367483815],[-119.20167924885168,37.88854240319543],[-119.20167446170002,37.88853930559761],[-119.20166981284413,37.88853607840999],[-119.20166530786635,37.88853272550777],[-119.20166095217634,37.88852925091718],[-119.2016567510044,37.88852565881056],[-119.20165270939535,37.88852195350134],[-119.20164883220235,37.8885181394389],[-119.20164512408118,37.88851422120324],[-119.20164158948458,37.888510203499365],[-119.20163823265686,37.88850609115182],[-119.20163505762895,37.888501889098755],[-119.20163206821339,37.888497602386025],[-119.20162926799989,37.88849323616117],[-119.20162666035094,37.888488795667215],[-119.2016242483978,37.8884842862363],[-119.20162203503672,37.888479713283445],[-119.20162002292552,37.888475082299856],[-119.20161821448028,37.88847039884651],[-119.20161661187255,37.8884656685473],[-119.2016146281717,37.88845980790038],[-119.20161239288964,37.88845400440852],[-119.20160990863826,37.888448264852734],[-119.20160717832027,37.88844259593931],[-119.20160420512595,37.88843700429206],[-119.20160099252936,37.88843149644443],[-119.20159754428424,37.888426078832026],[-119.20159386441973,37.88842075778495],[-119.20158995723553,37.88841553952053],[-119.201585827297,37.88841043013595],[-119.20158147942972,37.888405435601186],[-119.201576918714,37.88840056175207],[-119.20157215047873,37.88839581428335],[-119.20156718029531,37.88839119874215],[-119.20156201397114,37.88838672052141],[-119.20155665754277,37.88838238485363],[-119.20155111726885,37.88837819680478],[-119.20154539962287,37.88837416126829],[-119.2015395112855,37.888370282959464],[-119.20153345913698,37.8883665664098],[-119.20152725024879,37.88836301596186],[-119.20152089187567,37.888359635764076],[-119.20151439144692,37.88835642976603],[-119.20150775655793,37.88835340171366],[-119.20150099496111,37.888350555145095],[-119.20143530089884,37.88832295236105],[-119.20137077593559,37.888293668720394],[-119.20130748851955,37.888262735287874],[-119.20124550578593,37.8882301848784],[-119.2011848934855,37.888196052022046],[-119.20112571591514,37.888160372927636],[-119.20106803584935,37.88812318544419],[-119.20101191447381,37.88808452902075],[-119.20095741132052,37.888044444664615],[-119.20089095403874,37.88799221428432],[-119.20082675752828,37.887938237112174],[-119.20076489484212,37.88788257457617],[-119.20070543637671,37.88782529002205],[-119.20064844979204,37.8877664486414],[-119.20059399993448,37.88770611739733],[-119.20054214876313,37.887644364948294],[-119.2004929552793,37.88758126156998],[-119.20044647545923,37.8875168790752],[-119.20040276219069,37.88745129073233],[-119.2003618652126,37.887384571181805],[-119.20032383105847,37.88731679635113],[-119.20028870300361,37.887248043368615],[-119.20025652101579,37.88717839047545],[-119.20022732170979,37.88710791693668],[-119.19994153094028,37.88633559749637],[-119.1996853690399,37.885556776182575],[-119.1996482529547,37.885427497437576],[-119.19961641825064,37.88529733702427],[-119.19958989803754,37.88516643043068],[-119.19956871989284,37.88503491392074],[-119.19955290583276,37.884902924392634],[-119.19954247228976,37.88477059923617],[-119.19953743009539,37.8846380761898],[-119.19953778446917,37.884505493197224],[-119.1995435350133,37.884372988263806],[-119.19954542134721,37.88435088993166],[-119.19954825641413,37.88432885535566],[-119.1995520369222,37.88430691011409],[-119.19955675848207,37.88428507968157],[-119.19956241561205,37.88426338939933],[-119.19956900174436,37.884241864446004],[-119.19957650923288,37.88422052980818],[-119.19958492936195,37.884199410251576],[-119.19959425235659,37.88417853029216],[-119.19960446739371,37.88415791416782],[-119.19961556261475,37.88413758581014],[-119.19962752513952,37.884117568816556],[-119.19964034108102,37.88409788642315],[-119.19965399556162,37.88407856147754],[-119.1996684727304,37.8840596164124],[-119.19968375578142,37.884041073219414],[-119.19969982697332,37.88402295342375],[-119.19971666764994,37.884005278059064],[-119.19973425826188,37.88398806764312],[-119.19975257838927,37.88397134215394],[-119.19977160676548,37.883955121006636],[-119.19979132130175,37.88393942303084],[-119.19981169911287,37.88392426644888],[-119.19983271654374,37.883909668854635],[-119.19985434919684,37.883895647193086],[-119.1998765719605,37.883882217740634],[-119.19989935903818,37.88386939608627],[-119.19992268397822,37.883857197113414],[-119.19994651970468,37.883845634982706],[-119.1999708385488,37.883834723115484],[-119.19999561228094,37.883824474178276],[-119.20002081214356,37.88381490006808],[-119.20020525626659,37.883750736221096],[-119.2003922500189,37.88369138920613],[-119.20058159321599,37.88363692255487],[-119.20077308315977,37.88358739457444],[-119.20096651485521,37.88354285828493],[-119.20116168122988,37.8835033613627],[-119.2013583733554,37.88346894608933],[-119.20155638067101,37.8834396493065],[-119.2017554912089,37.88341550237644],[-119.20205648904756,37.8833867473117],[-119.20235846770265,37.88336540941177],[-119.20266113631611,37.883351509228866],[-119.20296420336597,37.88334506015125],[-119.20326737694685,37.883346068390544],[-119.20357036505087,37.88335453297562],[-119.20387287584862,37.88337044575364],[-119.20417461796993,37.88339379139772],[-119.20464741286487,37.88343095114929],[-119.20512133432676,37.883457615625886],[-119.20559601148209,37.88347376396099],[-119.20561257807451,37.883473917788116],[-119.20562914154453,37.8834736200565],[-119.20564568230421,37.88347287111824],[-119.20566218079252,37.88347167185899],[-119.20567861749828,37.883470023697015],[-119.20569497298355,37.88346792858145],[-119.20571122790633,37.883465388989954],[-119.20572736304361,37.88346240792584],[-119.20574335931403,37.88345898891454],[-119.20575919780042,37.88345513599931],[-119.20577485977228,37.88345085373667],[-119.20579032670781,37.88344614719074],[-119.20580558031591,37.88344102192751],[-119.20582060255771,37.8834354840081],[-119.20583537566807,37.88342953998162],[-119.2058498821764,37.883423196877466],[-119.20586410492739,37.883416462196955],[-119.2058780271014,37.883409343904496],[-119.2058916322342,37.88340185041817],[-119.2059049042365,37.88339399059972],[-119.20591782741303,37.88338577374411],[-119.20593038648103,37.883377209568565],[-119.20594256658833,37.883368308201014],[-119.20595435333097,37.8833590801682],[-119.20596573277017,37.88334953638307],[-119.20597669144883,37.88333968813209],[-119.20598721640751,37.88332954706166],[-119.20599729519961,37.8833191251646],[-119.20600691590626,37.883308434765695],[-119.2060160671503,37.88329748850734],[-119.20602473810975,37.88328629933448],[-119.20603291853065,37.8832748804793],[-119.20604059873915,37.88326324544561],[-119.20604776965294,37.88325140799289],[-119.20605442279206,37.88323938211995],[-119.20606055028881,37.883227182048444],[-119.20606614489719,37.88321482220604],[-119.20607120000135,37.88320231720928],[-119.20607570962345,37.883189681846424],[-119.20607966843075,37.88317693105986],[-119.20608307174196,37.88316407992847],[-119.2060859155326,37.88315114364978],[-119.20608819644,37.88313813752205],[-119.20608991176707,37.8831250769261],[-119.2060926084472,37.88310454226375],[-119.20609619385158,37.883084093175825],[-119.20610066374435,37.883063753817034],[-119.20610601284493,37.8830435482124],[-119.20611223483421,37.88302350022896],[-119.20611932236197,37.883003633547574],[-119.20612726705572,37.88298397163493],[-119.20613605953046,37.88296453771579],[-119.20614568939979,37.882945354745615],[-119.20615614528823,37.882926445383404],[-119.20616741484463,37.882907831964964],[-119.20617948475673,37.88288953647653],[-119.20619234076696,37.88287158052876],[-119.20620596768923,37.88285398533125],[-119.20622034942683,37.882836771667435],[-119.20623546899164,37.882819959870076],[-119.20625130852386,37.88280356979726],[-119.20626784931345,37.882787620808934],[-119.20628507182202,37.88277213174396],[-119.20630295570602,37.88275712089798],[-119.20632147984067,37.88274260600171],[-119.20634062234498,37.882728604200125],[-119.2063603606076,37.88271513203204],[-119.20638067131354,37.8827022054107],[-119.20640153047164,37.882689839604915],[-119.20642291344295,37.88267804922112],[-119.20671320398729,37.88252793726404],[-119.20700815826322,37.88238365009397],[-119.20730759025615,37.8822452786939],[-119.2077880315943,37.882021007266616],[-119.20825859877885,37.881783950638926],[-119.20871875044578,37.8815343815797],[-119.20916795723147,37.88127258725248],[-119.20960570238218,37.88099886888459],[-119.2096541001781,37.88096640335729],[-119.20970103850034,37.88093261845255],[-119.20974646012743,37.88089755535815],[-119.20979030968732,37.88086125682018],[-119.20983253372457,37.88082376709068],[-119.20987308076576,37.880785131873964],[-119.20991190138217,37.88074539827063],[-119.20994894824993,37.88070461472034],[-119.20998417620787,37.88066283094266],[-119.21001754231247,37.88062009787641],[-119.21004900589018,37.8805764676177],[-119.21007852858709,37.880531993356236],[-119.21010607441556,37.880486729310576],[-119.21013160979822,37.88044073066201],[-119.21015510360873,37.88039405348729],[-119.21017652720978,37.88034675469023],[-119.21019585448809,37.880298891932384],[-119.21021306188605,37.88025052356268],[-119.21022812843049,37.88020170854632],[-119.21024103575829,37.880152506392925],[-119.2102517681387,37.88010297708391],[-119.2102603124924,37.88005318099945],[-119.21026665840763,37.88000317884479],[-119.2102707981527,37.87995303157623],[-119.21027272668542,37.87990280032694],[-119.21027244165927,37.879852546332266],[-119.21026994342621,37.87980233085522],[-119.21026523503625,37.879752215111694],[-119.21025832223368,37.87970226019591],[-119.21024778230533,37.87962602200695],[-119.21024062637849,37.87954953748326],[-119.2102368632688,37.87947290096092],[-119.21023649760716,37.87939620696318],[-119.21023952983404,37.879319550083906],[-119.21024595619897,37.87924302487091],[-119.21025576876531,37.8791667257093],[-119.21026895541998,37.87909074670507],[-119.21029175688379,37.87898560202559],[-119.21031877919073,37.87888108751624],[-119.2103499948074,37.87877730959949],[-119.210385371931,37.87867437394734],[-119.21042487452159,37.87857238537374],[-119.21046846233905,37.8784714477278],[-119.21051609098406,37.87837166378817],[-119.21056771194327,37.87827313515834],[-119.21060262291022,37.87821224060959],[-119.21064011947897,37.87815231963792],[-119.2106801584962,37.878093441194146],[-119.21072269388334,37.878035673029295],[-119.21076767668954,37.87797908161664],[-119.21081505514813,37.87792373207523],[-119.21086477473617,37.87786968809497],[-119.21091677823718,37.87781701186337],[-119.21097100580694,37.877765763993914],[-119.21102739504255,37.877716003456406],[-119.21108588105403,37.877667787509054],[-119.2111463965391,37.87762117163272],[-119.21120887186065,37.87757620946692],[-119.21127323512681,37.87753295274825],[-119.21133941227374,37.87749145125079],[-119.2114073271508,37.87745175272886],[-119.21147690160812,37.877413902862116],[-119.21148870157786,37.87740747629032],[-119.21150021091898,37.87740072669812],[-119.21151141556368,37.87739366233554],[-119.21152230181666,37.87738629183735],[-119.21153285637172,37.87737862421245],[-119.21154306632823,37.87737066883297],[-119.21155291920668,37.87736243542277],[-119.21156240296408,37.87735393404547],[-119.21157150600855,37.877345175092294],[-119.21158021721367,37.877336169269284],[-119.21158852593187,37.877326927584164],[-119.21159642200766,37.87731746133302],[-119.21160389578984,37.87730778208642],[-119.2116109381434,37.877297901675185],[-119.21161754046076,37.87728783217609],[-119.21162369467207,37.87727758589704],[-119.2116293932553,37.87726717536196],[-119.21163462924532,37.87725661329555],[-119.21163939624245,37.877245912607755],[-119.21164368842017,37.87723508637788],[-119.21164750053245,37.87722414783875],[-119.21165082791998,37.87721311036043],[-119.21165366651599,37.877201987433885],[-119.21165601285104,37.877190792654545],[-119.21165786405753,37.87717953970566],[-119.21165921787293,37.877168242341554],[-119.21166007264276,37.87715691437083],[-119.21166042732244,37.87714556963957],[-119.21166028147871,37.87713422201421],[-119.21165963529006,37.87712288536481],[-119.21165848954651,37.87711157354799],[-119.21165684564873,37.87710030038998],[-119.21165470560625,37.877089079669766],[-119.21165207203504,37.877077925102306],[-119.2116489481543,37.877066850321555],[-119.21164533778251,37.87705586886404],[-119.21164124533276,37.87704499415221],[-119.21163667580738,37.87703423947798],[-119.21163163479181,37.877023617986595],[-119.21162612844783,37.877013142660516],[-119.21160988077662,37.87698223723605],[-119.21159500204959,37.876950901687245],[-119.21158151034787,37.8769191740978],[-119.21156942206682,37.87688709302782],[-119.21155875189612,37.876854697467046],[-119.21154951280182,37.87682202678731],[-119.21154171601077,37.87678912069472],[-119.2115353709968,37.87675601918157],[-119.21153048546931,37.8767227624775],[-119.21152706536395,37.87668939100073],[-119.21152511483531,37.87665594530893],[-119.21152463625194,37.87662246604991],[-119.21152563019349,37.87658899391219],[-119.21152809545002,37.87655556957563],[-119.21153202902345,37.87652223366191],[-119.21153742613113,37.876489026685185],[-119.21154428021192,37.87645598900291],[-119.21155258293392,37.87642316076665],[-119.21156232420464,37.876390581873444],[-119.21157349218343,37.87635829191723],[-119.21158607329573,37.87632633014073],[-119.21160005224965,37.87629473538777],[-119.21161541205448,37.87626354605608],[-119.21163213404148,37.87623280005067],[-119.21165019788643,37.876202534737644],[-119.21166958163444,37.87617278689892],[-119.2116902617266,37.87614359268746],[-119.21171221302866,37.87611498758335],[-119.21173540886149,37.87608700635071],[-119.21175982103355,37.876059682995376],[-119.21178541987523,37.87603305072369],[-119.2123731146468,37.875115922435384],[-119.21292823347767,37.874186131760034],[-119.21345034375396,37.8732444053578],[-119.21368044073901,37.87286206403407],[-119.21389384076765,37.87247368585809],[-119.2140902924629,37.872079728803705],[-119.21426956444444,37.87168065741613],[-119.21443144560047,37.87127694226383],[-119.21457574533545,37.87086905938345],[-119.21470229379344,37.87045748971816],[-119.2148109420573,37.87004271855041],[-119.21490156232278,37.86962523492946],[-119.21497404804792,37.8692055310947],[-119.2150283140772,37.868784101894946],[-119.2150642967406,37.868361444205036],[-119.21508195392715,37.86793805633988],[-119.21508126513308,37.867514437466816],[-119.21506223148462,37.86709108701712],[-119.21502487573505,37.866668504097206],[-119.21496924223659,37.866247186900246],[-119.21486931812983,37.86595910461274],[-119.21478150820818,37.86566855224351],[-119.21470590905328,37.86537584984182],[-119.21464260379332,37.86508131982145],[-119.21459166201196,37.86478528660562],[-119.21455313967233,37.86448807626938],[-119.21452707905623,37.86419001618053],[-119.21451350871794,37.863891434638965],[-119.21451244345354,37.86359266051501],[-119.21452388428536,37.86329402288723],[-119.21454781846138,37.86299585067989],[-119.21456809334624,37.862841943447194],[-119.21458168156563,37.86268757455217],[-119.2145885670936,37.86253292653268],[-119.21458874183011,37.862378182255405],[-119.21458220561054,37.862223524699786],[-119.21456896620555,37.862069136741596],[-119.21454903931188,37.86191520093669],[-119.2145224485334,37.86176189930515],[-119.21448922535322,37.86160941311608],[-119.21444940909599,37.86145792267327],[-119.21440304688147,37.861307607102056],[-119.21435019356852,37.86115864413747],[-119.21429091169,37.8610112099142],[-119.21422527137885,37.86086547875831],[-119.21415335028472,37.860721622981124],[-119.21407523348225,37.860579812675574],[-119.21399101337018,37.860440215515084],[-119.21390078956208,37.86030299655542],[-119.21380466876828,37.86016831803945],[-119.21370276466969,37.86003633920558],[-119.21360218386012,37.8599541256786],[-119.21350524935107,37.85986920363556],[-119.21341207709341,37.859781674669335],[-119.21332277853607,37.85969164349106],[-119.21323746049264,37.859599217804984],[-119.21315622501369,37.85950450817944],[-119.21307916926472,37.85940762791461],[-119.21300638540997,37.85930869290694],[-119.2129379605022,37.85920782151053],[-119.21287397637863,37.859105134395364],[-119.21281450956313,37.859000754403134],[-119.21275963117465,37.85889480640007],[-119.2127094068424,37.85878741712772],[-119.21266389662723,37.858678715051155],[-119.21262315495,37.85856883020535],[-119.21258723052652,37.858457894039596],[-119.21255616630937,37.85834603926023],[-119.21252999943663,37.85823339967193],[-119.21250876118754,37.85812011001753],[-119.21249247694519,37.858006305816915],[-119.21248116616627,37.85789212320484],[-119.21247484235795,37.85777769876814],[-119.21247351306171,37.85766316938225],[-119.21247717984456,37.85754867204759],[-119.21248583829716,37.85743434372553],[-119.21249947803932,37.857320321174754],[-119.21251808273246,37.857206740787454],[-119.21254163009921,37.85709373842639],[-119.21257009195037,37.8569814492622],[-119.21260343421844,37.85687000761187],[-119.21264161699871,37.856759546778015],[-119.21268459459698,37.85665019888946],[-119.21273231558436,37.85654209474312],[-119.21278472285887,37.85643536364778],[-119.21284175371383,37.856330133269154],[-119.2129033399129,37.856226529477446],[-119.2129694077719,37.85612467619671],[-119.21303987824686,37.85602469525662],[-119.21311466702886,37.855926706246855],[-119.21319368464466,37.855830826374],[-119.213276836564,37.855737170321426],[-119.21336402331266,37.85564585011213],[-119.21345514059145,37.855556974974796],[-119.213550079401,37.85547065121314],[-119.21364872617222,37.85538698207887],[-119.2137509629022,37.855306067648065],[-119.2138566672952,37.855228004701665],[-119.21396571290914,37.855152886609694],[-119.21423962819301,37.854968529286005],[-119.21450527971523,37.85477672074164],[-119.21476234527172,37.854577693664154],[-119.2150105130817,37.85437168949617],[-119.21524948216594,37.854158958142314],[-119.21547896271171,37.853939757665884],[-119.21569867642421,37.85371435397547],[-119.21590835686392,37.853483020502345],[-119.21610774976965,37.85324603786845],[-119.21629661336661,37.85300369354585],[-119.21647471865947,37.85275628150777],[-119.21664184970965,37.852504101871915],[-119.21679780389702,37.85224746053609],[-119.21694239216507,37.851986668807164],[-119.21707543924994,37.851722043023095],[-119.21719678389243,37.851453904169226],[-119.21730627903301,37.85118257748867],[-119.21740379198977,37.85090839208779],[-119.2174892046187,37.850631680536765],[-119.21756241345638,37.85035277846622],[-119.21762332984483,37.850072024159914],[-119.21767188003845,37.84978975814451],[-119.21770800529283,37.84950632277627],[-119.21773166193516,37.849222061825955],[-119.2177428214167,37.848937320061715],[-119.21774238850182,37.84883477771824],[-119.21773755970233,37.84873230631139],[-119.21772834061846,37.848630024296696],[-119.21771474192543,37.84852804991032],[-119.21769677936105,37.848426501032314],[-119.21767447370733,37.84832549505031],[-119.21764785076664,37.848225148724],[-119.21761694133151,37.84812557805002],[-119.21758178114914,37.84802689812793],[-119.21754241087987,37.84792922302712],[-119.2174988760503,37.847832665655126],[-119.21745122700037,37.84773733762689],[-119.21739951882529,37.84764334913597],[-119.21734381131164,37.84755080882704],[-119.21728416886828,37.84745982367038],[-119.21722066045189,37.84737049883824],[-119.21715335948703,37.84728293758329],[-119.21708234378143,37.847197241119275],[-119.21700769543585,37.84711350850404],[-119.21692950074926,37.84703183652509],[-119.21684785011895,37.8469523195877],[-119.21676283793599,37.846875049605806],[-119.2166745624763,37.84680011589578],[-119.21658312578676,37.846727605073305],[-119.21648863356741,37.84665760095314],[-119.21639119504921,37.846590184452346],[-119.21629092286784,37.846525433496794],[-119.21618793293341,37.846463422931066],[-119.21608234429647,37.84640422443202],[-119.21597427901052,37.84634790642588],[-119.21586386199094,37.8462945340093],[-119.21575122087052,37.84624416887398],[-119.21563648585197,37.84619686923552],[-119.21531537388992,37.84607523668564],[-119.21498929243833,37.84596222406606],[-119.21465860933675,37.84585795885479],[-119.21432369761042,37.84576255866237],[-119.21398493504987,37.84567613109911],[-119.21364270378511,37.84559877365404],[-119.21329738985496,37.84553057358489],[-119.21294938277202,37.845471607819796],[-119.21259907508357,37.84542194287076],[-119.21224686192947,37.84538163475842],[-119.21189314059657,37.84535072894915],[-119.21153831007122,37.845329260303785],[-119.21116543827277,37.845321961339884],[-119.21079246524957,37.84532436834465],[-119.21041979262108,37.84533647872615],[-119.2100478216836,37.84535827944382],[-119.20967695297871,37.845389747022374],[-119.20930758586236,37.84543084757705],[-119.20894011807535,37.845481536850215],[-119.2085749453154,37.845541760258754],[-119.20821246081165,37.84561145295297],[-119.20785305490159,37.845690539886164],[-119.20749711461104,37.84577893589557],[-119.20714502323791,37.84587654579376],[-119.20679715993987,37.8459832644712],[-119.20524310280992,37.846573160420995],[-119.20493852972746,37.846684437831215],[-119.20462952413472,37.84678774644018],[-119.20431641751249,37.84688297541979],[-119.20399954574509,37.84697002260924],[-119.20367924875987,37.847048794624726],[-119.20335587016218,37.84711920695979],[-119.20302975686643,37.84718118407593],[-119.20270125872368,37.847234659483846],[-119.20237072814591,37.84727957581474],[-119.20203851972761,37.847315884881944],[-119.20170498986509,37.847343547732734],[-119.20163791125731,37.84735246770915],[-119.20157048819142,37.84735956942375],[-119.20150279902818,37.84736484462279],[-119.20143492243764,37.847368287175236],[-119.20136693730781,37.84736989308014],[-119.2012989226528,37.847369660471024],[-119.20123095752106,37.84736758961826],[-119.2011631209035,37.84736368292863],[-119.20109549164161,37.847357944942594],[-119.20102814833584,37.84735038232898],[-119.20096116925423,37.84734100387727],[-119.20089463224146,37.84732982048729],[-119.20082861462828,37.84731684515669],[-119.20076319314171,37.84730209296566],[-119.20069844381577,37.84728558105957],[-119.20063444190319,37.847267328628924],[-119.20057126178786,37.84724735688705],[-119.20050897689832,37.84722568904557],[-119.20044765962257,37.847202350287226],[-119.20038738122382,37.84717736773677],[-119.20032821175761,37.84715077042937],[-119.20027021999049,37.84712258927685],[-119.19987387073941,37.84691483100446],[-119.19948679571908,37.84669635532855],[-119.19910945557513,37.84646742229608],[-119.19874229935358,37.84622830439866],[-119.19838576396627,37.845979286247974],[-119.19804027367086,37.845720664236715],[-119.19770623956566,37.845452746185366],[-119.19738405910068,37.845175850975586],[-119.19707411560451,37.84489030817019],[-119.19677677782843,37.84459645762067],[-119.19649239950783,37.8442946490623],[-119.19648108021384,37.84427950144211],[-119.1964704337516,37.844264050089805],[-119.19646047306496,37.8442483137916],[-119.19645121026393,37.84423231168006],[-119.19644265661002,37.844216063211],[-119.19643482250252,37.844199588139695],[-119.19642771746582,37.84418290649692],[-119.19642135013791,37.84416603856465],[-119.19641572825981,37.844149004851275],[-119.19641085866625,37.84413182606672],[-119.19640674727721,37.844114523097346],[-119.19640339909088,37.844097116980464],[-119.19640081817755,37.84407962887872],[-119.19639900767453,37.8440620800545],[-119.19639796978257,37.84404449184397],[-119.19639770576299,37.844026885631145],[-119.19639821593623,37.844009282821986],[-119.19639949968148,37.84399170481821],[-119.19640155543738,37.84397417299141],[-119.19640438070397,37.84395670865702],[-119.19640797204573,37.84393933304838],[-119.19641232509572,37.84392206729098],[-119.19641743456091,37.84390493237669],[-119.19642329422865,37.84388794913832],[-119.1964298969742,37.84387113822425],[-119.19643723476939,37.843854520073336],[-119.19644529869238,37.843838114890005],[-119.1964540789385,37.84382194261983],[-119.19646356483224,37.84380602292513],[-119.19647374484015,37.843790375161184],[-119.19648460658489,37.843775018352574],[-119.19649613686029,37.84375997117017],[-119.19650832164741,37.843745251908416],[-119.19652114613157,37.843730878462964],[-119.19653459472042,37.843716868309095],[-119.19654865106278,37.84370323848037],[-119.19656329806863,37.843690005547934],[-119.19657851792984,37.84367718560037],[-119.19659429214182,37.843664794224146],[-119.19661060152603,37.8436528464847],[-119.19662742625337,37.84364135690805],[-119.19664474586811,37.84363033946319],[-119.19666253931294,37.8436198075451],[-119.19668078495445,37.84360977395842],[-119.1966994606095,37.84360025090194],[-119.19671854357215,37.84359124995379],[-119.19673801064134,37.84358278205722],[-119.196757838149,37.84357485750747],[-119.19677800198883,37.843567485939154],[-119.1967984776457,37.843560676314596],[-119.1968192402254,37.84355443691285],[-119.19684026448482,37.84354877531976],[-119.19686152486281,37.84354369841866],[-119.19688299551112,37.843539212381984],[-119.19690465032592,37.84353532266381],[-119.19692646297938,37.843532033993235],[-119.1969484069519,37.843529350368634],[-119.19697045556417,37.84352727505268],[-119.19699258200968,37.84352581056857],[-119.19701475938729,37.843524958696754],[-119.19703696073394,37.84352472047299],[-119.19705915905749,37.843525096186866],[-119.19708132736935,37.84352608538162],[-119.20139241020337,37.843790168953376],[-119.2014961711958,37.84380540877447],[-119.20160054118324,37.84381775974973],[-119.20170539230446,37.843827206748294],[-119.20181059610861,37.843833738196814],[-119.20191602371267,37.84383734609378],[-119.20202154595938,37.84383802601919],[-119.2021270335755,37.843835777140136],[-119.20223235733016,37.843830602211625],[-119.20233738819338,37.84382250757341],[-119.20244199749406,37.84381150314201],[-119.20254605707771,37.84379760239871],[-119.20264943946349,37.84378082237301],[-119.20275201800031,37.843761183621716],[-119.20285366702231,37.8437387102038],[-119.20295426200258,37.84371342965086],[-119.20305367970583,37.84368537293343],[-119.20315179833946,37.843654574423],[-119.20324849770277,37.84362107184993],[-119.20334365933415,37.843584906257185],[-119.20343716665643,37.84354612195008],[-119.2035289051195,37.8435047664419],[-119.20361876234087,37.84346089039578],[-119.20370662824315,37.843414547562595],[-119.20379239518915,37.843365794715034],[-119.20503859390044,37.842407470643344],[-119.20625474606237,37.84142518335135],[-119.207440120021,37.84041952475851],[-119.20749635818345,37.84037048122776],[-119.20755044684587,37.84031994004377],[-119.20760232263837,37.84026796042432],[-119.20765192478424,37.84021460327249],[-119.2076991951711,37.84015993110516],[-119.20774407841897,37.8401040079799],[-119.20778652194522,37.840046899419846],[-119.20782647602603,37.83998867233685],[-119.20786389385475,37.83992939495323],[-119.20789873159671,37.83986913672166],[-119.2079309484404,37.83980796824386],[-119.20796050664553,37.83974596118796],[-119.20798737158692,37.839683188204305],[-119.2080115117953,37.83961972284056],[-119.20803289899403,37.83955563945537],[-119.20805150813216,37.839491013131315],[-119.20806731741386,37.839425919586866],[-119.20808030832384,37.839360435087784],[-119.20809046564902,37.83929463635764],[-119.2080977774964,37.839228600487935],[-119.20810223530681,37.839162404847876],[-119.20810383386507,37.83909612699358],[-119.2081025713059,37.839029844577375],[-119.20809844911624,37.838963635256654],[-119.20809147213326,37.83889757660298],[-119.20808164853892,37.838831746011216],[-119.20806898985012,37.8387662206088],[-119.20805351090532,37.8387010771654],[-119.20803522984698,37.83863639200303],[-119.20801416810046,37.83857224090651],[-119.20799035034867,37.838508699034826],[-119.20796380450327,37.838445840832975],[-119.20748487696024,37.83752247371741],[-119.20704047923648,37.83658831280451],[-119.20663099621135,37.83564416989219],[-119.20625678238098,37.83469086542228],[-119.20576209726428,37.833400743998695],[-119.20532553808347,37.83209749470335],[-119.20494765330731,37.83078276403729],[-119.20491495549665,37.83071968174735],[-119.20488500086707,37.83065574824454],[-119.20485782455876,37.83059103854535],[-119.20483345845176,37.830525628576886],[-119.20481193112848,37.830459595087675],[-119.20479326784027,37.830393015557625],[-119.20477749047777,37.83032596810721],[-119.20476461754528,37.83025853140564],[-119.20475466413916,37.83019078457871],[-119.20474764193001,37.83012280711583],[-119.20474355914914,37.83005467877677],[-119.20474242057888,37.829986479498224],[-119.20474422754701,37.82991828929982],[-119.20474897792526,37.82985018819033],[-119.20475666613189,37.829782256073784],[-119.20476728313815,37.82971457265573],[-119.20478081647903,37.82964721734968],[-119.20479725026793,37.829580269183964],[-119.20481656521518,37.82951380670898],[-119.20483873865088,37.82944790790512],[-119.2048637445515,37.82938265009116],[-119.20489155357035,37.82931810983358],[-119.20492213307213,37.82925436285686],[-119.20495544717127,37.829191483954446],[-119.204991456774,37.82912954690116],[-119.20503011962423,37.82906862436655],[-119.20507139035325,37.82900878782967],[-119.20511522053296,37.82895010749527],[-119.20516155873261,37.82889265221135],[-119.20521035057929,37.82883648938845],[-119.20526153882165,37.828781684920564],[-119.20531506339715,37.82872830310783],[-119.20537086150253,37.8286764065811],[-119.20542886766745,37.828626056228465],[-119.20548901383145,37.82857731112382],[-119.20555122942365,37.82853022845758],[-119.20561544144563,37.82848486346964],[-119.20568157455709,37.828441269384456],[-119.20574955116422,37.82839949734874],[-119.20581929151078,37.82835959637136],[-119.20589071377158,37.828321613265906],[-119.20596373414854,37.82828559259578],[-119.20603826696899,37.82825157662191],[-119.2061142247862,37.82821960525318],[-119.20725188958515,37.82787322540346],[-119.20840015900082,37.82754961986032],[-119.20955830872359,37.82724899271549],[-119.2098764877114,37.827180472369385],[-119.21019169839465,37.82710380580513],[-119.21050360933758,37.82701907363763],[-119.2108118925774,37.82692636496243],[-119.21111622396924,37.82682577726206],[-119.21141628352746,37.826717416303346],[-119.2117117557622,37.82660139602611],[-119.21200233001134,37.826477838423315],[-119.21259691410177,37.82610207157512],[-119.21318051550529,37.82571562671725],[-119.21328199174015,37.82564440010906],[-119.21338028706536,37.82557042020271],[-119.21347528281936,37.82549377631354],[-119.21356686432512,37.82541456097283],[-119.21365492102862,37.82533286981605],[-119.21373934663244,37.825248801467346],[-119.21382003922383,37.825162457420504],[-119.21389690139794,37.82507394191636],[-119.21396984037527,37.82498336181684],[-119.21419358034635,37.82468464460102],[-119.21440595907566,37.82438075438409],[-119.21460678677151,37.8240719629371],[-119.21672645356216,37.82052029454485],[-119.2170416197513,37.82006389294402],[-119.21733918847535,37.819600118397574],[-119.21761888623188,37.81912939768761],[-119.21788045597893,37.81865216398029],[-119.21790047245013,37.81861219214509],[-119.21791878107166,37.818571708362775],[-119.21793536108638,37.81853075853757],[-119.21795019369718,37.818489389102034],[-119.21796326208857,37.81844764696441],[-119.21797455144541,37.81840557945553],[-119.21798404896994,37.81836323427502],[-119.21799174389618,37.81832065943732],[-119.2179976275021,37.81827790321717],[-119.21800169311955,37.81823501409489],[-119.21800393614177,37.818192040701405],[-119.21800435402865,37.81814903176314],[-119.2180029463095,37.81810603604674],[-119.21799971458366,37.8180631023037],[-119.21799466251865,37.81802027921526],[-119.217987795846,37.817977615337064],[-119.21797912235465,37.81793515904414],[-119.2179680841506,37.81789066129156],[-119.2179551679257,37.817846482795375],[-119.21794038826208,37.81780267342052],[-119.21792376184494,37.81775928261529],[-119.21790530744401,37.81771635935535],[-119.21788504589207,37.817673952088604],[-119.21786300006154,37.81763210868044],[-119.21783919483866,37.8175908763598],[-119.21781365709542,37.817550301665726],[-119.21778641565912,37.817510430395],[-119.21775750127985,37.817471307550285],[-119.21772694659587,37.81743297728955],[-119.21769478609664,37.817395482876],[-119.21766105608394,37.81735886662938],[-119.21762579463089,37.817323169878215],[-119.21758904153899,37.817288432913166],[-119.21755083829312,37.81725469494147],[-119.21751122801477,37.817221994042825],[-119.21747025541336,37.81719036712627],[-119.21742796673577,37.81715984988872],[-119.21738440971414,37.81713047677443],[-119.217339633512,37.81710228093638],[-119.2172936886687,37.8170752941987],[-119.21724662704258,37.817049547020794],[-119.21574719678738,37.81626570551408],[-119.21116488339106,37.81392836319618],[-119.20903902123366,37.81288452475918],[-119.2068866636479,37.81187547757973],[-119.20679268493316,37.811842833672095],[-119.20670011117598,37.811807753961034],[-119.20660904264957,37.811770276444676],[-119.20651957799636,37.811730441718296],[-119.20643181412099,37.81168829293045],[-119.20634584608531,37.811643875736195],[-119.20626176700553,37.81159723824763],[-119.20617966795119,37.8115484309817],[-119.20609963784663,37.81149750680555],[-119.20602176337455,37.81144452087928],[-119.20594612888222,37.811389530595946],[-119.20587281629007,37.81133259551972],[-119.20580190500294,37.811273777321134],[-119.2057334718241,37.81121313971025],[-119.20553721661736,37.81102684044924],[-119.20534935622675,37.810835171682655],[-119.20517012381757,37.810638371369244],[-119.20499974183808,37.810436683836805],[-119.20483842174352,37.810230359478616],[-119.20468636373373,37.81001965444244],[-119.20460478188052,37.809896922583924],[-119.20452852776856,37.80977205305742],[-119.20445769023343,37.809645191379396],[-119.20439235179718,37.80951648538711],[-119.2043325885724,37.809386085066336],[-119.20427847017345,37.80925414237653],[-119.20423005963563,37.80912081107373],[-119.20418741334178,37.808986246531305],[-119.20415058095666,37.8088506055589],[-119.20411960536934,37.80871404621971],[-119.20391282725379,37.80777488021524],[-119.20367782291387,37.806839902763265],[-119.20345488295166,37.8060649614931],[-119.20320154338253,37.805295923805495],[-119.20318907225048,37.80526255505638],[-119.20317517884828,37.80522954190862],[-119.20315987923321,37.80519692251249],[-119.20314319108735,37.80516473456312],[-119.2031251336974,37.80513301525708],[-119.20310572793231,37.80510180124926],[-119.20308499621903,37.80507112861062],[-119.2030629625168,37.805041032786484],[-119.20303965228926,37.8050115485555],[-119.20301509247517,37.8049827099896],[-119.20298931145715,37.80495455041449],[-119.20296233902899,37.80492710237125],[-119.20293420636112,37.80490039757865],[-119.20290494596466,37.80487446689653],[-119.20287459165381,37.80484934029011],[-119.20284317850678,37.804825046795486],[-119.20281074282525,37.80480161448594],[-119.20277732209242,37.80477907043954],[-119.20266437411897,37.804702928576425],[-119.20255469187282,37.80462383833531],[-119.20244839754348,37.8045418878328],[-119.20234560954484,37.80445716837194],[-119.20224644238301,37.80436977434037],[-119.20215100652896,37.80427980310525],[-119.20205940829536,37.804187354904684],[-119.20197174971818,37.80409253273596],[-119.20188812844306,37.8039954422409],[-119.20180863761658,37.80389619158801],[-119.20173336578249,37.80379489135204],[-119.20166239678312,37.80369165439071],[-119.20159580966609,37.80358659571898],[-119.20153367859619,37.80347983238077],[-119.201476072773,37.80337148331879],[-119.20142305635368,37.80326166924172],[-119.20137468838165,37.80315051248992],[-119.20131431672733,37.80299528408467],[-119.20126040683265,37.80283856537355],[-119.20121301689063,37.80268052564595],[-119.20117219805039,37.802521335617136],[-119.20113799436199,37.802361167243866],[-119.20111044272905,37.80220019353857],[-119.20108957286907,37.8020385883825],[-119.20107540728152,37.80187652633792],[-119.20106796122376,37.80171418245937],[-119.20106724269463,37.801551732104805],[-119.20107322577431,37.8013923113017],[-119.20108597341864,37.80123314088409],[-119.20110547111537,37.8010744015138],[-119.20113169669112,37.80091627336227],[-119.20116462033683,37.80075893590606],[-119.20120420464171,37.80060256772318],[-119.20125040463599,37.800447346290404],[-119.20130316784207,37.80029344778182],[-119.20136243433424,37.80014104686902],[-119.20142813680691,37.799990316522724],[-119.20150020065127,37.79984142781662],[-119.20157854403985,37.79969454973315],[-119.20166307801985,37.799549848971836],[-119.20195457201946,37.799054208749794],[-119.20222809787744,37.79855216214587],[-119.20234079524668,37.79832829138043],[-119.20244570449539,37.798102050011465],[-119.20254274661136,37.79787360858613],[-119.20263184851498,37.79764313930853],[-119.20269045480568,37.79747262134508],[-119.20274142515888,37.797300565502354],[-119.20278469586744,37.797127187010375],[-119.20282021285715,37.79695270275214],[-119.20284793175405,37.79677733099239],[-119.20286781793979,37.79660129110457],[-119.20288008194302,37.79649229381839],[-119.20289709924488,37.79638369930116],[-119.20291884937703,37.796275638036825],[-119.20294530618473,37.79616823986799],[-119.20297643785818,37.796061633839955],[-119.20301220697097,37.795955948045716],[-119.20305257052505,37.79585130947195],[-119.20309748000251,37.795747843846556],[-119.20314688142405,37.79564567548759],[-119.20320141775126,37.79554332874466],[-119.20326013777145,37.7954424501727],[-119.20332297880259,37.79534314742796],[-119.20338987376553,37.79524552648452],[-119.20346075125562,37.79514969152129],[-119.20353553561915,37.79505574481082],[-119.20361414703386,37.7949637866102],[-119.20369650159444,37.794873915054026],[-119.2037344367129,37.79483241137945],[-119.20377051301406,37.79478987687481],[-119.20380468605887,37.79474636393817],[-119.20383691375315,37.79470192617285],[-119.20386715639938,37.79465661832133],[-119.20389537674563,37.79461049619789],[-119.20392154003142,37.79456361661977],[-119.20394561403047,37.79451603733719],[-119.20396756909055,37.79446781696222],[-119.20398737816974,37.79441901489661],[-119.20400501686994,37.7943696912585],[-119.20402046346682,37.7943199068085],[-119.2040336989366,37.79426972287469],[-119.20404470697932,37.79421920127719],[-119.20405347403911,37.79416840425187],[-119.20405918150075,37.794135266754175],[-119.20406632794945,37.79410230547043],[-119.20407490485444,37.79406955973784],[-119.20408490197786,37.794037068636335],[-119.20409630738698,37.79400487094182],[-119.20410910746837,37.793973005080055],[-119.20412328694431,37.79394150908069],[-119.2041388288908,37.793910420531965],[-119.20415571475802,37.79387977653579],[-119.2041739243923,37.793849613663475],[-119.20419343606018,37.793819967912135],[-119.2042142264745,37.793790874661646],[-119.2042362708221,37.79376236863255],[-119.2042595427933,37.79373448384448],[-119.20428401461359,37.79370725357566],[-119.20430965707659,37.79368071032316],[-119.20433643957895,37.79365488576411],[-119.20436433015686,37.79362981071796],[-119.20439329552427,37.79360551510953],[-119.2044233011125,37.793582027933574],[-119.20445431111162,37.7935593772199],[-119.20448628851307,37.793537590000106],[-119.20451919515395,37.79351669227527],[-119.20455299176241,37.793496708984875],[-119.2045876380047,37.793477663977136],[-119.20462309253315,37.79345957998049],[-119.2046593130356,37.793442478576466],[-119.20467377211978,37.79343565028605],[-119.20468792363317,37.793428427616746],[-119.20470175050104,37.79342081928325],[-119.20471523604034,37.79341283446562],[-119.20472836397984,37.7934044827981],[-119.20474111847984,37.79339577435763],[-119.20475348415121,37.793386719651586],[-119.20476544607399,37.79337732960511],[-119.20477698981543,37.79336761554801],[-119.20478810144729,37.79335758920099],[-119.20479876756278,37.793347262661555],[-119.20480897529264,37.79333664838945],[-119.20481871232073,37.79332575919152],[-119.20482796689885,37.79331460820636],[-119.20483672786085,37.793303208888425],[-119.20484498463635,37.7932915749918],[-119.20485272726316,37.79327972055356],[-119.20485994639951,37.79326765987691],[-119.2048666333353,37.793255407513875],[-119.20487278000253,37.79324297824777],[-119.20487837898514,37.79323038707531],[-119.20488342352783,37.793217649188605],[-119.20488790754436,37.79320477995677],[-119.20489182562471,37.7931917949073],[-119.20489381688657,37.79318518883774],[-119.20489609224305,37.793178640796235],[-119.20489864902152,37.793172158474114],[-119.20490148421867,37.79316574948545],[-119.20490459450423,37.79315942135824],[-119.20490797622485,37.79315318152545],[-119.20491162540829,37.79314703731638],[-119.20491553776814,37.79314099594794],[-119.20491970870896,37.79313506451631],[-119.20492413333147,37.79312924998852],[-119.20492880643853,37.793123559194235],[-119.20493372254104,37.79311799881788],[-119.20493887586458,37.79311257539057],[-119.204944260356,37.79310729528267],[-119.20494986969071,37.793102164696116],[-119.20495569727994,37.7930971896573],[-119.20496173627865,37.793092376009824],[-119.2049679795934,37.79308772940778],[-119.20497441989086,37.793083255309],[-119.20498104960623,37.79307895896873],[-119.20498786095233,37.79307484543342],[-119.20499484592854,37.793070919534806],[-119.20500199633038,37.793067185884176],[-119.205009303759,37.79306364886706],[-119.20501675963116,37.79306031263802],[-119.20502435518927,37.79305718111569],[-119.20503208151163,37.79305425797841],[-119.20503992952297,37.79305154665961],[-119.20504789000508,37.793049050344],[-119.20505595360767,37.79304677196372],[-119.2050641108593,37.793044714194934],[-119.20507235217853,37.79304287945468],[-119.20508066788521,37.793041269898],[-119.2050890482118,37.79303988741548],[-119.20509748331484,37.793038733630986],[-119.20510596328656,37.793037809899694],[-119.20511447816648,37.793037117306646],[-119.20512301795313,37.79303665666534],[-119.20513157261577,37.79303642851686],[-119.20514013210618,37.793036433129146],[-119.20514868637046,37.79303667049681],[-119.20515722536092,37.79303714034106],[-119.20516573904771,37.79303784210997],[-119.20517421743078,37.793038774979294],[-119.20518265055149,37.79303993785328],[-119.20519102850439,37.79304132936603],[-119.20521914460099,37.79304599150263],[-119.2052474487583,37.79304987143421],[-119.20527590643033,37.79305296442521],[-119.20530448288369,37.793055266700534],[-119.20533314323995,37.79305677545018],[-119.20536185251834,37.79305748883269],[-119.20539057567832,37.79305740597738],[-119.20541927766239,37.79305652698531],[-119.20544792343897,37.79305485292937],[-119.20547647804504,37.793052385852796],[-119.20550490662889,37.793049128766725],[-119.2055331744926,37.793045085646504],[-119.20564932840841,37.79302830275942],[-119.20576608859716,37.79301441975185],[-119.20588334012561,37.793003450289575],[-119.20600096757707,37.792995405170394],[-119.20611885516486,37.79299029231356],[-119.20623688684643,37.7929881167519],[-119.20709733873183,37.79299377739499],[-119.20795713416267,37.79302104241975],[-119.20825605735338,37.79303013653174],[-119.20855519839908,37.79303095019933],[-119.20885419313264,37.79302348243198],[-119.20915267756506,37.79300774232072],[-119.20945028832925,37.792983749027144],[-119.2097466631225,37.79295153175992],[-119.21004144114795,37.792911129739366],[-119.21033426355419,37.79286259214956],[-119.21062477387251,37.79280597807842],[-119.21091261845103,37.79274135644577],[-119.21119744688573,37.792668805919405],[-119.21147891244712,37.79258841481906],[-119.21175667250283,37.79250028100904],[-119.21203038893479,37.79240451177888],[-119.21223546870503,37.79232587191908],[-119.21243697229555,37.79224161145811],[-119.21263465518409,37.792151832650056],[-119.21282827748755,37.792056644445424],[-119.21301760425318,37.7919561623588],[-119.21320240574387,37.79185050832865],[-119.21338245771678,37.791739810569254],[-119.21355754169579,37.791624203415],[-119.21372744523646,37.7915038271573],[-119.21389196218382,37.791378827874325],[-119.21405089292276,37.79124935725358],[-119.21420404461998,37.79111557240777],[-119.21435123145811,37.79097763568406],[-119.21449227486112,37.79083571446701],[-119.21496199837976,37.79032904698015],[-119.21541094855102,37.78981065642726],[-119.21583866153718,37.789281078893545],[-119.21624469549135,37.78874086202175],[-119.21662863101295,37.78819056444485],[-119.21699007158006,37.78763075520795],[-119.21732864395779,37.78706201317897],[-119.21742695560121,37.78679627521894],[-119.2175351703049,37.78653297225238],[-119.21765319245327,37.78627233667226],[-119.21778091777774,37.78601459851489],[-119.2179182334492,37.78575998525699],[-119.21806501817798,37.785508721614995],[-119.21845617346396,37.784836999507505],[-119.2188199184749,37.78415564617161],[-119.21915587803001,37.78346536580072],[-119.21946370569503,37.78276687179499],[-119.21974308413752,37.78206088602343],[-119.21977811832872,37.78197264142346],[-119.2198169123276,37.78188539318825],[-119.21985942126697,37.781799242195106],[-119.21990559598495,37.78171428805233],[-119.21995538308174,37.78163062898411],[-119.22000872498151,37.78154836171697],[-119.22006555999899,37.78146758136787],[-119.22012582241075,37.78138838133428],[-119.22018944253146,37.781310853186326],[-119.22025634679417,37.78123508656075],[-119.22032645783567,37.78116116905743],[-119.22039969458581,37.78108918613805],[-119.22047597236133,37.78101922102736],[-119.22055520296378,37.780951354616896],[-119.22063729478153,37.780885665371564],[-119.22072215289556,37.780822229238915],[-119.22080967918941,37.78076111956128],[-119.22089977246254,37.78070240699114],[-119.2209923285473,37.78064615940931],[-119.22108724042934,37.780592441846565],[-119.22118439837146,37.78054131640851],[-119.22128369004037,37.78049284220364],[-119.22138500063654,37.78044707527521],[-119.22153843669435,37.78039688340475],[-119.22169399567986,37.780350992496935],[-119.2218514862849,37.780309458987944],[-119.22201071482684,37.78027233395514],[-119.22217148548668,37.78023966305434],[-119.22233360054979,37.78021148646368],[-119.22249686064897,37.78018783883424],[-119.22266106500945,37.7801687492474],[-119.2228260116958,37.780154241179176],[-119.22299149786015,37.78014433247124],[-119.22315731999133,37.78013903530913],[-119.2233232741654,37.78013835620721],[-119.22348915629595,37.780142296000584],[-119.22365476238522,37.780150849844176],[-119.22381988877471,37.7801640072187],[-119.22406093866566,37.7801832687618],[-119.22430268235709,37.78019591838454],[-119.22454483201402,37.78020194102548],[-119.22478709931772,37.78020132951375],[-119.22502919580937,37.78019408457741],[-119.2252708332337,37.780180214842744],[-119.22551172388226,37.780159736823876],[-119.22575158093649,37.78013267490315],[-119.22599011880922,37.780099061301975],[-119.22619293308173,37.78006469380396],[-119.22639412036945,37.78002475422436],[-119.22659343772531,37.779979290793335],[-119.22679064446156,37.77992835841142],[-119.22698550244057,37.7798720185832],[-119.22717777636258,37.77981033934306],[-119.22736723404988,37.779743395172844],[-119.22755364672739,37.779671266911976],[-119.22773678929902,37.779594041659806],[-119.22791644061948,37.77951181267029],[-119.22809238376158,37.779424679239426],[-119.2282644062781,37.779332746585155],[-119.22843230045845,37.7792361257204],[-119.22859586357956,37.779134933318865],[-119.2287548981507,37.77902929157403],[-119.22890921215193,37.77891932805167],[-119.22905861926606,37.77880517553563],[-119.22920293910354,37.77868697186748],[-119.22934199742035,37.77856485977996],[-119.22947562632828,37.778438986724595],[-119.22960366449769,37.77830950469358],[-119.23049623829885,37.777202272359666],[-119.23058219557116,37.77710341028583],[-119.23067239989149,37.777006961598616],[-119.23076674378662,37.77691304119369],[-119.23086511485336,37.77682176095437],[-119.23096739589242,37.7767332296186],[-119.23107346504798,37.77664755264913],[-119.23118319595312,37.776564832108214],[-119.23129645788,37.77648516653595],[-119.23141311589598,37.77640865083283],[-119.23153303102404,37.77633537614692],[-119.2316560604086,37.776265429765175],[-119.23178205748543,37.77619889500956],[-119.23191087215645,37.776135851137774],[-119.23204235096833,37.77607637324891],[-119.23217633729534,37.77602053219408],[-119.23231267152588,37.77596839449189],[-119.23245119125251,37.77592002224938],[-119.23259173146548,37.77587547308801],[-119.2327341247491,37.77583480007505],[-119.23287820148118,37.7757980516604],[-119.23302379003503,37.77576527161888],[-119.23317071698376,37.775736498998114],[-119.23331880730686,37.775711768072064],[-119.2334678845986,37.775691108300165],[-119.233617771278,37.775674544292286],[-119.23376828880045,37.77566209577941],[-119.23389325973197,37.77565183836097],[-119.23401773699563,37.77563831815002],[-119.2341415854133,37.77562154982902],[-119.23426467049003,37.77560155160786],[-119.23438685856016,37.77557834520386],[-119.23450801693238,37.7755519558184],[-119.23462801403413,37.775522412109375],[-119.23474671955432,37.77548974616011],[-119.23539170090432,37.77529240243341],[-119.23602746654507,37.775077043635896],[-119.23665321804556,37.77484394025378],[-119.23726816957392,37.774593385057535],[-119.23767125178942,37.77441483698736],[-119.23806643027017,37.77422548531536],[-119.23845324561401,37.774025550195006],[-119.23883124815306,37.773815264083055],[-119.23919999847675,37.77359487146894],[-119.23955906794296,37.773364628590244],[-119.23990803917656,37.773124803134465],[-119.2402465065545,37.77287567392748],[-119.24057407667765,37.77261753060912],[-119.240890368828,37.77235067329602],[-119.24119501541112,37.77207541223243],[-119.24148924861534,37.77176816183051],[-119.24177053346003,37.77145336369872],[-119.24203856304555,37.77113136148697],[-119.24229304495391,37.77080250670503],[-119.24253370156741,37.77046715833858],[-119.24276027037128,37.770125682456985],[-119.24297250423945,37.76977845181341],[-119.2431701717037,37.76942584543772],[-119.24335305720562,37.769068248222446],[-119.24352096133114,37.76870605050241],[-119.24367370102733,37.76833964762845],[-119.24527724365211,37.76498665290665],[-119.2456083528303,37.7643267340679],[-119.24596600202885,37.76367560321902],[-119.24634982114587,37.763033932904264],[-119.24675941307925,37.762402385879085],[-119.24719435413941,37.76178161442646],[-119.2476541944888,37.76117225968404],[-119.24782133590327,37.76094233578581],[-119.24799834751096,37.76071711608714],[-119.24818501940489,37.76049686754962],[-119.24838113023323,37.760281851239974],[-119.24858644746197,37.760072322020896],[-119.24880072765083,37.759868528248944],[-119.2490237167419,37.75967071148047],[-119.249255150361,37.759479106185445],[-119.24949475413119,37.759293939469586],[-119.24974224399801,37.75911543080558],[-119.2499973265663,37.758943791772865],[-119.25025969944797,37.75877922580727],[-119.2506358286075,37.75857770909733],[-119.25100377023168,37.75836688098584],[-119.2513631587782,37.758146950965916],[-119.25171363721309,37.757918137573114],[-119.25205485736558,37.75768066816802],[-119.25238648027407,37.757434778709985],[-119.25257687466744,37.75728456063819],[-119.25276140453136,37.75712979839533],[-119.25293989791578,37.75697063622399],[-119.25311218849998,37.756807222466705],[-119.2532781157476,37.756639709427546],[-119.25343752505619,37.75646825323017],[-119.25359026790113,37.75629301367225],[-119.253771831162,37.75607023716313],[-119.25394445253144,37.75584302432323],[-119.25410796027566,37.755611601305574],[-119.25426219173666,37.755376198451586],[-119.25440699349373,37.75513705006177],[-119.25454222151608,37.75489439416235],[-119.25456483228413,37.75484991000371],[-119.25458550047985,37.75480483408774],[-119.2546042015957,37.754759219871474],[-119.25462091345707,37.75471312145017],[-119.25463561624865,37.75466659349325],[-119.25464829253777,37.75461969117944],[-119.25465892729518,37.754572470131315],[-119.2546675079128,37.75452498634935],[-119.25467402421862,37.75447729614542],[-119.25467846848888,37.754429456076274],[-119.25468083545698,37.75438152287604],[-119.25468112232001,37.75433355338937],[-119.25467932874174,37.754285604503785],[-119.25467545685322,37.75423773308221],[-119.25466951125017,37.75418999589567],[-119.25466149898753,37.754142449555886],[-119.25465142957094,37.75409515044809],[-119.25463931494563,37.75404815466426],[-119.25462516948222,37.754001517936565],[-119.25460900995951,37.75395529557124],[-119.25459085554465,37.753909542383035],[-119.25449741899241,37.75370787695691],[-119.25441227219983,37.75350391083121],[-119.25433550474617,37.753297858754024],[-119.25426719738635,37.753089937667866],[-119.25420742196616,37.75288036648132],[-119.25415624134686,37.75266936583837],[-119.25411370933944,37.75245715788614],[-119.25407987064807,37.75224396604094],[-119.25405476082352,37.75203001475307],[-119.25401862187843,37.75171353437433],[-119.25399580994606,37.751396272440864],[-119.25398635028743,37.751078582651765],[-119.25399025327728,37.750760819178616],[-119.2540075143931,37.750443336270706],[-119.25403811422107,37.75012648786006],[-119.25406124602577,37.75005825469237],[-119.2540813620093,37.749989421595444],[-119.25409843762858,37.74992007258003],[-119.25411245205139,37.74985029228623],[-119.2541233881819,37.74978016588034],[-119.2541312326814,37.74970977895086],[-119.25413597598462,37.74963921740395],[-119.25413761231127,37.74956856735869],[-119.25413613967307,37.74949791504195],[-119.25413155987626,37.74942734668309],[-119.25412387851918,37.74935694840875],[-119.25411310498545,37.749286806137825],[-119.25409925243252,37.74921700547642],[-119.25408798081544,37.74916033552626],[-119.25407916004562,37.74910339230571],[-119.25407280046613,37.74904624262171],[-119.25406890953245,37.74898895352334],[-119.2540674918038,37.74893159222305],[-119.2540685489377,37.7488742260179],[-119.25407207968821,37.748816922210516],[-119.25407807990734,37.74875974803013],[-119.2540865425499,37.74870277055382],[-119.2540974576818,37.74864605662767],[-119.25411081249186,37.74858967278846],[-119.25412659130671,37.748533685185514],[-119.25413828267581,37.748492128934636],[-119.25414813592067,37.748450273342364],[-119.25415613898073,37.748408169654084],[-119.25416228206065,37.74836586941885],[-119.2541665576425,37.748323424426324],[-119.2541689604947,37.74828088664326],[-119.25416948767858,37.748238308149915],[-119.25416813855196,37.74819574107637],[-119.25416491476977,37.74815323753857],[-119.25415982028225,37.74811084957464],[-119.25415286132983,37.748068629081025],[-119.25414404643568,37.748026627749184],[-119.25413338639517,37.74798489700203],[-119.25412089426264,37.74794348793119],[-119.2541065853354,37.74790245123434],[-119.2540983351637,37.74788864439809],[-119.2540906781077,37.74787462379089],[-119.25408362293739,37.74786040547191],[-119.25407717773342,37.74784600572672],[-119.25407134987773,37.747831441048746],[-119.25406614604515,37.747816728120235],[-119.25406157219572,37.747801883793294],[-119.25405763356794,37.74778692507055],[-119.25405433467269,37.74777186908553],[-119.25405167928811,37.747756733083314],[-119.25404967045525,37.747741534400454],[-119.25404831047462,37.747726290445435],[-119.2540476009035,37.74771101867849],[-119.25404754255428,37.747695736591716],[-119.25404813549332,37.747680461689065],[-119.25404937904112,37.74766521146617],[-119.25405359030233,37.74763139109719],[-119.25405924461165,37.74759770369445],[-119.254066335453,37.74756418806847],[-119.25407485465522,37.74753088283178],[-119.25408479240164,37.74749782635444],[-119.25409613724139,37.747465056719946],[-119.25410887610253,37.74743261168124],[-119.25412299430724,37.74740052861724],[-119.25413847558859,37.74736884448982],[-119.25414656337716,37.74735379224619],[-119.25415526081038,37.7473389558737],[-119.25416455876409,37.74732435093601],[-119.25417444748415,37.747309992754055],[-119.2541849165968,37.74729589638984],[-119.25419595511936,37.747282076630704],[-119.25420755147194,37.7472685479739],[-119.25421969348942,37.7472553246112],[-119.25423236843432,37.74724242041416],[-119.25427169994289,37.74720496772859],[-119.25431256414326,37.747168564398976],[-119.25435491665948,37.74713324995499],[-119.25439871149972,37.747099062743956],[-119.25444390110614,37.74706603988901],[-119.25449043640658,37.747034217248945],[-119.25453826686777,37.74700362937925],[-119.25458734055029,37.74697430949447],[-119.25463760416488,37.7469462894323],[-119.25468900313045,37.746919599619],[-119.25469922883956,37.74691467100951],[-119.25470966107873,37.7469100233148],[-119.25472028761354,37.74690566198548],[-119.25473109598173,37.746901592136275],[-119.25474207350769,37.74689781854008],[-119.25475320731756,37.746894345622415],[-119.25476448435413,37.74689117745612],[-119.25477589139227,37.74688831775667],[-119.25478741505435,37.74688576987778],[-119.25479904182603,37.74688353680745],[-119.25481075807197,37.74688162116454],[-119.25482255005201,37.74688002519559],[-119.25483440393708,37.74687875077228],[-119.25484630582558,37.746877799389196],[-119.25485824175956,37.746877172162066],[-119.2548701977412,37.74687686982646],[-119.25488215974914,37.746876892736964],[-119.25489411375493,37.746877240866695],[-119.25490604573956,37.74687791380737],[-119.25491794170979,37.74687891076982],[-119.25492978771466,37.746880230584864],[-119.25494156986177,37.746881871704666],[-119.25495327433363,37.74688383220465],[-119.25496488740382,37.74688610978557],[-119.25498158818078,37.74688938067361],[-119.25499842247636,37.74689218700941],[-119.25501536980278,37.74689452537767],[-119.25503240953475,37.746896392932506],[-119.25504952093445,37.74689778740108],[-119.2550666831769,37.74689870708625],[-119.25508387537519,37.74689915086876],[-119.25510107660598,37.7468991182085],[-119.25511826593493,37.74689860914524],[-119.25513542244215,37.74689762429852],[-119.25515252524777,37.7468961648669],[-119.25516955353719,37.746894232626566],[-119.25518648658661,37.74689182992909],[-119.25520330378806,37.74688895969865],[-119.25521998467458,37.746885625428355],[-119.25523650894513,37.74688183117608],[-119.25525285648932,37.746877581559566],[-119.25526900741174,37.7468728817507],[-119.25528494205645,37.74686773746921],[-119.25530064103054,37.74686215497587],[-119.25531608522815,37.746856141064704],[-119.25533125585328,37.74684970305475],[-119.25534613444304,37.746842848781256],[-119.25536070288994,37.74683558658599],[-119.2553749434639,37.74682792530722],[-119.25538883883397,37.74681987426892],[-119.25540237208925,37.74681144326936],[-119.25541552675962,37.74680264256925],[-119.25542828683568,37.74679348287925],[-119.25544063678834,37.74678397534685],[-119.25545256158757,37.74677413154295],[-119.25546404672086,37.74676396344763],[-119.25547959415847,37.74674919193999],[-119.25549448160163,37.746733997774996],[-119.25550869084203,37.7467183995365],[-119.25552220450082,37.74670241630265],[-119.25553500605004,37.74668606762242],[-119.25554707983265,37.74666937349175],[-119.25555841108181,37.74665235432908],[-119.25556898593892,37.74663503095038],[-119.25557879147046,37.74661742454372],[-119.25558781568398,37.74659955664332],[-119.25559604754262,37.74658144910313],[-119.2556034769787,37.746563124070306],[-119.25561009490598,37.74654460395792],[-119.25561589323074,37.74652591141765],[-119.2556208648618,37.74650706931206],[-119.25562500371902,37.74648810068661],[-119.25562830474092,37.746469028741515],[-119.25563076389075,37.74644987680332],[-119.25563237816135,37.74643066829634],[-119.25563314557904,37.746411426714175],[-119.25563306520584,37.746392175590785],[-119.25563213714075,37.746372938471794],[-119.25563036251951,37.74635373888566],[-119.25562774351326,37.74633460031495],[-119.25562428332589,37.74631554616757],[-119.2556199861901,37.746296599748185],[-119.25561485736225,37.746277784229605],[-119.25560890311593,37.7462591226246],[-119.25560213073418,37.74624063775766],[-119.25559454850074,37.74622235223706],[-119.25558616568976,37.746204288427286],[-119.25557699255464,37.74618646842158],[-119.25556704031526,37.74616891401505],[-119.2555504791237,37.74613973683162],[-119.25553517986526,37.746110128402286],[-119.25552116031476,37.746080123129346],[-119.25550843675998,37.746049755876115],[-119.25549702398298,37.746019061926454],[-119.25548693524264,37.74598807694376],[-119.2554781822594,37.74595683692959],[-119.25547077520172,37.74592537818168],[-119.25546472267409,37.74589373725201],[-119.25546003170723,37.745861950904036],[-119.25545670774981,37.74583005607025],[-119.25545475466214,37.745798089809064],[-119.25545417471173,37.74576608926187],[-119.25545496857066,37.745734091609876],[-119.25545713531477,37.74570213403083],[-119.25546067242477,37.74567025365588],[-119.25546569880775,37.74563774864229],[-119.25547213496831,37.745605400743855],[-119.25547997323609,37.7455732485027],[-119.25548920427005,37.74554133022771],[-119.25549981706976,37.745509683949],[-119.25551179898859,37.74547834737255],[-119.25552513574851,37.74544735783525],[-119.25553981145744,37.74541675226049],[-119.2555558086279,37.74538656711414],[-119.2555731081981,37.74535683836104],[-119.25559168955446,37.74532760142228],[-119.25561153055632,37.74529889113289],[-119.25563260756228,37.745270741700345],[-119.25565489545822,37.745243186663885],[-119.25567836768757,37.745216258854484],[-119.25570299628261,37.745189990355755],[-119.25572875189803,37.745164412465726],[-119.2557556038457,37.74513955565961],[-119.2557835201315,37.745115449553346],[-119.25581035677273,37.74509382074468],[-119.25583811380632,37.745072937227704],[-119.25586675842598,37.745052823684226],[-119.25589625677655,37.74503350388605],[-119.2559265739939,37.74501500066686],[-119.25595767424615,37.7449973358952],[-119.25598952077611,37.74498053044865],[-119.25602207594463,37.74496460418918],[-119.25605530127513,37.74494957593965],[-119.25608915749905,37.74493546346157],[-119.25612360460222,37.74492228343413],[-119.25615860187224,37.74491005143444],[-119.25619410794657,37.744898781919176],[-119.25623008086134,37.74488848820746],[-119.25626647810095,37.744879182465155],[-119.25630325664848,37.744870875690445],[-119.25634037303625,37.74486357770089],[-119.25637778339747,37.74485729712173],[-119.25641943950846,37.744850332103134],[-119.25646078618297,37.74484228806359],[-119.25650177910734,37.7448331736244],[-119.25654237434696,37.74482299855408],[-119.2565825283936,37.744811773757874],[-119.25662219821184,37.74479951126607],[-119.25666134128541,37.74478622422114],[-119.2566999156626,37.744771926863635],[-119.25673788000122,37.74475663451683],[-119.25677519361304,37.74474036357048],[-119.25681181650734,37.744723131463104],[-119.25684770943367,37.74470495666332],[-119.25688283392414,37.7446858586501],[-119.25691715233441,37.744665857891874],[-119.25694724664471,37.74464833482994],[-119.2569780653607,37.7446316245505],[-119.25700957368433,37.74461574592122],[-119.257041736039,37.744600716870714],[-119.25707451610977,37.74458655436834],[-119.25710787688423,37.74457327440497],[-119.2571417806944,37.744560891975084],[-119.25717618925917,37.74454942105969],[-119.25721106372765,37.74453887461059],[-119.25724636472285,37.74452926453579],[-119.25727754640273,37.7445216622379],[-119.25730901112355,37.74451483479497],[-119.25734072835756,37.744508788831105],[-119.25737266733205,37.74450353021226],[-119.25740479705922,37.74449906404039],[-119.25743708636618,37.74449539464868],[-119.25746950392531,37.744492525597245],[-119.25750201828443,37.74449045966966],[-119.25751031949187,37.74448992165372],[-119.25751859254827,37.74448915767036],[-119.2575268277017,37.744488168620244],[-119.25753501524484,37.74448695566916],[-119.25754314552653,37.744485520246904],[-119.25755120896305,37.74448386404548],[-119.25755919604957,37.744481989017224],[-119.25756709737122,37.74447989737228],[-119.25757490361417,37.74447759157623],[-119.25758260557676,37.74447507434706],[-119.2575901941802,37.744472348651996],[-119.2575976604793,37.744469417703954],[-119.25760499567315,37.744466284957866],[-119.25761219111529,37.74446295410649],[-119.25761923832398,37.74445942907606],[-119.25762612899231,37.7444557140218],[-119.25763285499784,37.744451813322875],[-119.25763940841222,37.744447731577225],[-119.25764578151056,37.74444347359634],[-119.25765196678054,37.744439044399265],[-119.25765795693125,37.74443444920706],[-119.25766374490173,37.74442969343631],[-119.25766932386945,37.74442478269293],[-119.25767468725812,37.74441972276551],[-119.25767982874565,37.74441451961851],[-119.2576818002433,37.74441252425067],[-119.25768385656848,37.74441058362004],[-119.25768599531277,37.74440869999945],[-119.25768821397136,37.74440687559498],[-119.25769050994572,37.744405112543355],[-119.25769288054687,37.74440341290944],[-119.25769532299836,37.744401778683816],[-119.25769783443963,37.74440021178049],[-119.25770041192929,37.744398714034574],[-119.25770305244863,37.74439728720024],[-119.2577057529051,37.74439593294856],[-119.25770851013594,37.7443946528656],[-119.25771132091194,37.744393448450616],[-119.2577141819411,37.74439232111419],[-119.25771708987264,37.74439127217661],[-119.25772004130089,37.74439030286643],[-119.25772303276906,37.74438941431887],[-119.25772606077366,37.74438860757459],[-119.25772912176829,37.74438788357843],[-119.25773221216798,37.74438724317834],[-119.25773532835328,37.744386687124326],[-119.25773846667452,37.74438621606766],[-119.25774162345618,37.744385830560006],[-119.25774479500106,37.74438553105289],[-119.2577479775947,37.744385317897084],[-119.25775116750968,37.744385191342246],[-119.25775436101002,37.74438515153658],[-119.25775755435549,37.7443851985267],[-119.25776074380613,37.744385332257586],[-119.25776392562649,37.74438555257258],[-119.25776709609006,37.74438585921372],[-119.25777025148363,37.744386251821815],[-119.25777338811164,37.74438672993708],[-119.25777650230049,37.74438729299952],[-119.25777959040293,37.7443879403497],[-119.25778264880218,37.74438867122946],[-119.25778567391632,37.744389484782786],[-119.25778866220229,37.744390380056856],[-119.25779161016031,37.744391356003156],[-119.25779451433777,37.74439241147866],[-119.2577973713333,37.7443935452472],[-119.25780017780086,37.74439475598091],[-119.25780293045348,37.74439604226185],[-119.25780562606737,37.744397402583466],[-119.25780826148538,37.74439883535262],[-119.257810833621,37.744400338891246],[-119.2578147725136,37.74440264200358],[-119.25781880761177,37.744404837588526],[-119.25782293426239,37.74440692311424],[-119.25782714770676,37.7444088961758],[-119.25783144308606,37.74441075449788],[-119.25783581544705,37.74441249593756],[-119.25784025974765,37.74441411848668],[-119.25784477086286,37.74441562027416],[-119.25784934359065,37.74441699956819],[-119.25785397265784,37.7444182547782],[-119.25785865272643,37.74441938445676],[-119.25786337839948,37.74442038730113],[-119.25786814422753,37.74442126215489],[-119.25787294471476,37.744422008009174],[-119.25787777432546,37.744422624003896],[-119.25788262749025,37.744423109428716],[-119.25788749861263,37.744423463723834],[-119.2578923820754,37.74442368648071],[-119.25789727224712,37.744423777442464],[-119.25790216348861,37.74442373650422],[-119.25790705015945,37.744423563713134],[-119.25791192662447,37.74442325926853],[-119.25791678726036,37.744422823521425],[-119.25792162646195,37.74442225697436],[-119.25794399052009,37.744419621747554],[-119.257966449539,37.74441755766423],[-119.25798898039312,37.74441606684973],[-119.25801155988287,37.74441515083912],[-119.25803416475864,37.744414810575584],[-119.25805677174466,37.7444150464095],[-119.25807935756296,37.744415858098016],[-119.25810189895748,37.744417244805355],[-119.25812437271773,37.744419205103675],[-119.2581317857289,37.744419843882994],[-119.25813922219577,37.74442027794592],[-119.2581466731554,37.74442050676934],[-119.25815412962741,37.74442053007741],[-119.25816158262477,37.74442034784209],[-119.25816902316464,37.744419960282976],[-119.25817644227921,37.744419367867195],[-119.25818383102644,37.744418571308785],[-119.25819118050099,37.74441757156777],[-119.25819848184473,37.74441636984916],[-119.25820572625764,37.744414967601294],[-119.25821290500828,37.74441336651425],[-119.25822000944436,37.74441156851782],[-119.25822703100316,37.744409575779],[-119.25823396122182,37.744407390699614],[-119.25824079174761,37.74440501591322],[-119.25824751434796,37.7444024542821],[-119.25825412092037,37.74439970889372],[-119.25826060350218,37.744396783056935],[-119.25826695428016,37.744393680298174],[-119.2582731656,37.7443904043571],[-119.25827922997543,37.74438695918209],[-119.25828514009724,37.74438334892545],[-119.25829088884228,37.744379577938524],[-119.25829646928177,37.74437565076635],[-119.25830187468985,37.74437157214217],[-119.25830709855161,37.74436734698186],[-119.25831213457097,37.74436298037778],[-119.25831697667822,37.74435847759287],[-119.25832161903735,37.74435384405418],[-119.25836141866496,37.74431400005155],[-119.25840279254928,37.74427518040997],[-119.25844569890324,37.744237424334464],[-119.25849009439234,37.74420076995592],[-119.2585359341783,37.74416525429249],[-119.25858317196437,37.74413091321234],[-119.2586317600422,37.744097781397244],[-119.25868164933998,37.74406589230774],[-119.25873278947182,37.74403527814926],[-119.25878512878897,37.74400596983958],[-119.25881161572843,37.74399111218385],[-119.25883746268309,37.743975560030684],[-119.258862640787,37.74395933074899],[-119.25888712192129,37.74394244246387],[-119.25891087874552,37.74392491403647],[-119.25893388472826,37.74390676504275],[-119.25895611417666,37.743888015751786],[-119.25897754226514,37.743868687103024],[-119.25899814506319,37.74384880068294],[-119.259017899562,37.74382837870092],[-119.2590367837003,37.743807443964435],[-119.25905477638882,37.743786019853594],[-119.25907185753393,37.74376413029507],[-119.2590880080601,37.74374179973524],[-119.25910320993117,37.74371905311305],[-119.25911744617044,37.74369591583207],[-119.25913070087974,37.74367241373209],[-119.2592537950845,37.743443147782486],[-119.25925708594691,37.743437268620994],[-119.25926062059885,37.743431479384725],[-119.25926439514957,37.7434257864462],[-119.2592684054441,37.74342019607197],[-119.25927264706809,37.74341471441562],[-119.25927711535243,37.743409347511154],[-119.25928180537868,37.7434041012662],[-119.2592867119842,37.743398981455556],[-119.25929182976795,37.743393993714896],[-119.25929715309651,37.74338914353445],[-119.25930267611015,37.743384436253116],[-119.2593083927294,37.743379877052426],[-119.25931429666157,37.743375470950916],[-119.25932038140796,37.743371222798636],[-119.25937647134107,37.74333433771605],[-119.2594337460316,37.7432986191792],[-119.25949216701473,37.74326409117517],[-119.25950783594027,37.74325476973335],[-119.25952311897645,37.74324505268788],[-119.25953800029056,37.74323495010543],[-119.2595524644661,37.743224472452006],[-119.25956649651869,37.743213630582204],[-119.25958008191168,37.74320243572794],[-119.25959320657115,37.74319089948677],[-119.25960585690052,37.743179033809966],[-119.2596180197946,37.743166850990036],[-119.25962531532132,37.74315955727095],[-119.25963291906784,37.743152464844215],[-119.259640822233,37.743145581919165],[-119.25964901566888,37.74313891646263],[-119.25965748989175,37.743132476189714],[-119.25966623509282,37.74312626855487],[-119.25967524114965,37.74312030074331],[-119.25968449763789,37.74311457966263],[-119.25969399384333,37.743109111934835],[-119.25970371877428,37.743103903888695],[-119.25971366117432,37.743098961552384],[-119.25972380953534,37.743094290646546],[-119.25973415211085,37.74308989657764],[-119.2597446769295,37.74308578443166],[-119.25975537180909,37.74308195896835],[-119.25976622437055,37.743078424615575],[-119.25977722205228,37.74307518546424],[-119.25978835212472,37.74307224526358],[-119.25979960170513,37.74306960741681],[-119.25981095777239,37.74306727497719],[-119.25982240718211,37.743065250644406],[-119.25983645278605,37.74306276221416],[-119.2598503805303,37.743059886230256],[-119.25986417346215,37.743056626193315],[-119.25987781479303,37.74305298607143],[-119.25989128791886,37.7430489702953],[-119.25990457644033,37.7430445837529],[-119.25991766418285,37.74303983178346],[-119.25993053521623,37.743034720171046],[-119.25994317387399,37.74302925513742],[-119.25995556477258,37.743023443334586],[-119.25996769283003,37.74301729183658],[-119.25997954328426,37.74301080813094],[-119.25999110171117,37.74300400010954],[-119.26000235404202,37.742996876059024],[-119.26001328658073,37.74298944465067],[-119.2600196913063,37.7429847753588],[-119.26002588884698,37.7429799329675],[-119.26003187178806,37.742974923270246],[-119.2600376329716,37.742969752260635],[-119.26004316550492,37.74296442612528],[-119.26004846276895,37.74295895123639],[-119.26005351842605,37.742953334144126],[-119.26005832642772,37.74294758156882],[-119.26006288102171,37.74294170039281],[-119.26006717675891,37.742935697652385],[-119.26007120850002,37.742929580529214],[-119.2600749714215,37.74292335634185],[-119.26007846102144,37.74291703253688],[-119.26008167312496,37.74291061668014],[-119.26008460388918,37.742904116447555],[-119.26008724980781,37.74289753961599],[-119.26008960771533,37.742890894053964],[-119.26009167479084,37.74288418771223],[-119.26009344856139,37.74287742861425],[-119.26009492690488,37.742870624846574],[-119.26009610805271,37.74286378454925],[-119.26009699059188,37.74285691590599],[-119.26009757346657,37.742850027134416],[-119.26009785597951,37.74284312647623],[-119.2600978377928,37.74283622218735],[-119.26009751892828,37.742829322528074],[-119.26009689976753,37.74282243575309],[-119.26009598105138,37.742815570101754],[-119.26009476387907,37.74280873378806],[-119.26008569847237,37.742767815444346],[-119.26007494816676,37.74272715518274],[-119.26006252452903,37.74268679674129],[-119.26004844092597,37.742646783533274],[-119.26003271250978,37.74260715860059],[-119.26001535620202,37.74256796456733],[-119.25999639067516,37.74252924359412],[-119.25997583633274,37.74249103733252],[-119.25997170961242,37.74248335155958],[-119.25996791639324,37.74247555818359],[-119.25996446111519,37.742467666326945],[-119.2599613478227,37.74245968522742],[-119.25995858015992,37.742451624227165],[-119.25995616136638,37.742443492761886],[-119.25995409427323,37.74243530034978],[-119.25995238129995,37.74242705658037],[-119.25995102445157,37.74241877110326],[-119.25995002531619,37.74241045361694],[-119.25994938506318,37.742402113857295],[-119.2599491044419,37.74239376158632],[-119.2599491837807,37.74238540658065],[-119.25994962298658,37.742377058620086],[-119.25995042154531,37.74236872747621],[-119.25995157852203,37.74236042290092],[-119.25995309256237,37.74235215461498],[-119.25995496189391,37.742343932296706],[-119.25995718432848,37.74233576557059],[-119.25995975726453,37.742327663996036],[-119.25996267769021,37.7423196370562],[-119.25996594218697,37.74231169414689],[-119.25996954693352,37.74230384456548],[-119.25997348771025,37.74229609750021],[-119.2599777599043,37.74228846201921],[-119.25998235851483,37.74228094706004],[-119.2599872781589,37.74227356141921],[-119.25999251307785,37.742266313741816],[-119.25999805714399,37.742259212511456],[-119.26030550493451,37.741867282522165],[-119.26034444652858,37.741817459770814],[-119.26038504850392,37.74176847999014],[-119.26042728193873,37.7417203780658],[-119.26051534413804,37.741620134439984],[-119.26060007265885,37.741518095116454],[-119.26068140947986,37.74141432998744],[-119.26069517785406,37.74139692953415],[-119.2607096966802,37.74137991810102],[-119.26072494854537,37.74136331608983],[-119.26074091515765,37.741347143411254],[-119.2607575773679,37.74133141946111],[-119.2607749151928,37.74131616309699],[-119.26079290783883,37.741301392615775],[-119.26081153372716,37.74128712573159],[-119.2608307705196,37.74127337955456],[-119.26085059514533,37.74126017057034],[-119.2608709838285,37.74124751462036],[-119.26089191211697,37.74123542688275],[-119.26090303134782,37.7412294576434],[-119.26091440056078,37.741223793136086],[-119.26092600651809,37.74121843995628],[-119.26093783570639,37.74121340433692],[-119.26094987435236,37.74120869214117],[-119.2609621084389,37.74120430885569],[-119.26097452372122,37.74120025958409],[-119.2609871057437,37.74119654904115],[-119.26099983985647,37.7411931815472],[-119.26101271123265,37.74119016102317],[-119.26102570488554,37.741187490986],[-119.26103880568607,37.741185174544476],[-119.26105199838038,37.74118321439577],[-119.26106526760768,37.74118161282215],[-119.26107859791797,37.74118037168842],[-119.26109197379027,37.74117949243967],[-119.26110537965047,37.741178976099654],[-119.26111879988956,37.74117882326956],[-119.26113221888174,37.741179034127335],[-119.26114562100275,37.74117960842746],[-119.26115899064794,37.74118054550128],[-119.26117231225041,37.74118184425771],[-119.26118557029932,37.741183503184544],[-119.26121277496084,37.741186904395825],[-119.26124011075855,37.74118956107267],[-119.26126754539035,37.74119147007567],[-119.26129504643737,37.74119262914905],[-119.26132258140221,37.741193036923136],[-119.26135011774743,37.74119269291606],[-119.26137762293394,37.741191597534346],[-119.26140506445945,37.74118975207238],[-119.26143240989698,37.74118715871089],[-119.261459626933,37.74118382051443],[-119.26148668340579,37.741179741427615],[-119.26151354734336,37.74117492627066],[-119.26154018700122,37.74116938073349],[-119.26156657089999,37.74116311136914],[-119.26159266786252,37.74115612558598],[-119.26161844705067,37.74114843163895],[-119.26164387800196,37.741140038619776],[-119.26166893066532,37.74113095644627],[-119.26168499989085,37.74112512311958],[-119.26170130516788,37.741119718637215],[-119.26171782835422,37.74111474901248],[-119.26173455106525,37.74111021977485],[-119.26175145469428,37.741106135963825],[-119.26176852043335,37.74110250212328],[-119.26178572929423,37.74109932229641],[-119.26180306212933,37.741096600021294],[-119.26182049965317,37.74109433832685],[-119.26183802246382,37.74109253972958],[-119.26185561106445,37.74109120623072],[-119.261873245885,37.741090339313985],[-119.26189090730404,37.74108993994391],[-119.26190857567047,37.74109000856492],[-119.26192623132553,37.741090545100626],[-119.26194385462459,37.74109154895406],[-119.261961425959,37.74109301900825],[-119.26197892577791,37.741094953627595],[-119.26199633461007,37.74109735065949],[-119.2620099950296,37.741099230468144],[-119.26202372717592,37.74110074527881],[-119.26203751558847,37.74110189338604],[-119.26205134474341,37.74110267349719],[-119.262065199071,37.74110308473398],[-119.26207906297316,37.74110312663345],[-119.26209292084103,37.74110279914835],[-119.26210675707252,37.741102102647424],[-119.26212055608994,37.741101037914866],[-119.26213430235747,37.741099606149376],[-119.26214798039874,37.74109780896294],[-119.26216157481407,37.741095648378945],[-119.26217507029811,37.74109312682991],[-119.26218845165671,37.74109024715475],[-119.2622017038244,37.741087012595585],[-119.262214811881,37.74108342679411],[-119.26222776106869,37.741079493787396],[-119.26224053680849,37.74107521800352],[-119.26227258975864,37.74106450167331],[-119.26230508661996,37.74105466452754],[-119.2623379891654,37.74104571813791],[-119.26237125869062,37.74103767302832],[-119.26240485605976,37.741030538662415],[-119.26243874175127,37.74102432343257],[-119.26247287590445,37.741019034649874],[-119.26250721836642,37.741014678535706],[-119.26254172873928,37.741011260214265],[-119.26257636642758,37.74100878370658],[-119.26261109068615,37.74100725192586],[-119.26264586066799,37.74100666667394],[-119.26268063547234,37.74100702863929],[-119.26271537419275,37.74100833739612],[-119.2627500359652,37.741010591404915],[-119.2627730326687,37.741012092923576],[-119.2627960799548,37.74101297939473],[-119.26281915174626,37.74101324981533],[-119.26284222193814,37.741012903879465],[-119.26286526442733,37.741011941978506],[-119.26288825314205,37.74101036520082],[-119.26291116207136,37.741008175330485],[-119.26293396529464,37.741005374845244],[-119.26295663701083,37.74100196691376],[-119.26297915156769,37.740997955392],[-119.26300148349083,37.740993344818826],[-119.2630236075125,37.74098814041098],[-119.2630454986002,37.74098234805701],[-119.26306713198503,37.7409759743108],[-119.26308848318962,37.740969026384],[-119.26310952805598,37.7409615121379],[-119.26313024277273,37.74095344007464],[-119.26315060390199,37.74094481932746],[-119.26316733029827,37.74093774387009],[-119.26318435311761,37.740931129245375],[-119.26320165223432,37.74092498327357],[-119.26321920719613,37.7409193132209],[-119.26323699724827,37.74091412579089],[-119.26325500135803,37.74090942711651],[-119.26327319823965,37.74090522275285],[-119.26329156637951,37.74090151767056],[-119.26331008406147,37.740898316250096],[-119.2633287293926,37.740895622276405],[-119.26334748032914,37.74089343893446],[-119.26336631470238,37.74089176880556],[-119.26338521024506,37.740890613864266],[-119.26340414461754,37.74088997547604],[-119.2634230954343,37.74088985439559],[-119.26344204029039,37.7408902507661],[-119.26345080859541,37.74089043728592],[-119.26345957984734,37.74089039044121],[-119.26346834420012,37.74089011028452],[-119.26347709181546,37.740889597130376],[-119.26348581287385,37.74088885155475],[-119.26349449758563,37.74088787439464],[-119.26350313620186,37.7408866667469],[-119.26351171902543,37.7408852299672],[-119.26352023642181,37.74088356566833],[-119.26352867882996,37.74088167571855],[-119.26353703677295,37.74087956223937],[-119.2635453008687,37.74087722760328],[-119.26355346184053,37.740874674430955],[-119.26356151052744,37.74087190558844],[-119.26356943789457,37.74086892418384],[-119.26357723504313,37.7408657335639],[-119.2635848932206,37.740862337310205],[-119.26359240383044,37.74085873923512],[-119.26359975844179,37.74085494337764],[-119.2636069487988,37.74085095399875],[-119.26361396683012,37.74084677557665],[-119.26376596707398,37.74075369526569],[-119.26377854289515,37.74074631097419],[-119.26379142749099,37.74073927037509],[-119.26380460597326,37.74073258160376],[-119.26381806311423,37.740726252389024],[-119.26383178336422,37.740720290044294],[-119.26384575086946,37.74071470145898],[-119.26385994949058,37.74070949309068],[-119.2638743628211,37.740704670957626],[-119.26388897420647,37.740700240631746],[-119.2639037667633,37.740696207232276],[-119.2639187233989,37.740692575419764],[-119.26393382683095,37.74068934939073],[-119.26394905960754,37.74068653287285],[-119.2639644041273,37.740684129120574],[-119.26397984265977,37.74068214091142],[-119.26399535736581,37.74068057054278],[-119.26401093031832,37.740679419829156],[-119.26402654352286,37.7406786901002],[-119.26404217893852,37.74067838219913],[-119.26404678679216,37.74067829140789],[-119.2640513880903,37.74067807619983],[-119.26405597750741,37.74067773682401],[-119.26406054973181,37.740677273673256],[-119.26406509947165,37.74067668728358],[-119.26406962146105,37.740675978333684],[-119.26407411046635,37.7406751476441],[-119.26407856129202,37.74067419617624],[-119.26408296878675,37.74067312503135],[-119.26408732784932,37.740671935449136],[-119.26409163343459,37.7406706288064],[-119.26409588055938,37.74066920661547],[-119.26410006430808,37.740667670522356],[-119.26410417983847,37.74066602230493],[-119.2641082223873,37.74066426387078],[-119.26411218727576,37.74066239725513],[-119.26411606991495,37.74066042461836],[-119.26411986581114,37.74065834824362],[-119.26412357057106,37.74065617053404],[-119.2641271799068,37.74065389401007],[-119.26413068964102,37.74065152130658],[-119.26413409571158,37.74064905516967],[-119.26413739417636,37.74064649845361],[-119.26414058121773,37.740643854117536],[-119.26414365314714,37.740641125221956],[-119.2641466064091,37.74063831492528],[-119.26415421413235,37.740631082581416],[-119.26416213577147,37.74062406599242],[-119.26417036163066,37.74061727374622],[-119.26417888164174,37.74061071415624],[-119.26418768537658,37.74060439525111],[-119.26419676205977,37.740598324764846],[-119.26420610058176,37.74059251012746],[-119.26421568951264,37.74058695845577],[-119.26422551711596,37.74058167654475],[-119.26423557136313,37.74057667085922],[-119.26424583994823,37.740571947525886],[-119.26425631030298,37.740567512325875],[-119.26426696961212,37.74056337068767],[-119.2642778048292,37.74055952768042],[-119.26428880269238,37.74055598800775],[-119.26429994974085,37.74055275600207],[-119.26431123233111,37.74054983561919],[-119.26432263665387,37.74054723043352],[-119.26433414875078,37.74054494363366],[-119.2643457545316,37.74054297801853],[-119.26435743979144,37.74054133599396],[-119.26436919022815,37.740540019569735],[-119.26438099145979,37.74053903035703],[-119.26439282904221,37.74053836956662],[-119.26440468848686,37.74053803800727],[-119.26441655527836,37.74053803608483],[-119.26442841489234,37.74053836380159],[-119.26443606765503,37.740538578634535],[-119.26444372518979,37.740538587480245],[-119.26445137870712,37.74053839032854],[-119.2644590194222,37.74053798740572],[-119.26446663856485,37.74053737917427],[-119.26447422738968,37.74053656633233],[-119.26448177718603,37.7405355498129],[-119.2644892792882,37.74053433078277],[-119.26449672508502,37.74053291064116],[-119.26450410603013,37.740531291018115],[-119.26457838845336,37.740512873712966],[-119.26465188623447,37.74049256804706],[-119.2647245232726,37.74047039504545],[-119.26479622435838,37.74044637766655],[-119.26486691525173,37.74042054077855],[-119.26493652275873,37.74039291113349],[-119.26500497480752,37.74036351733971],[-119.26507220052284,37.740332389832126],[-119.26508356680549,37.740327142194374],[-119.26509515555671,37.74032221094944],[-119.26510695281655,37.74031760203758],[-119.26511894437388,37.7403133210107],[-119.26513111578353,37.74030937302578],[-119.26514345238367,37.74030576283862],[-119.26515593931349,37.740302494798016],[-119.26516856153111,37.740299572840776],[-119.26518130383168,37.74029700048662],[-119.26519415086574,37.74029478083432],[-119.26520708715756,37.74029291655762],[-119.26522009712406,37.74029140990228],[-119.26523316509325,37.74029026268322],[-119.26524627532336,37.74028947628237],[-119.26525941202172,37.74028905164706],[-119.26527255936377,37.74028898928881],[-119.26528570151204,37.7402892892827],[-119.26529882263547,37.740289951267414],[-119.26531564672041,37.74029126486351],[-119.26533240394238,37.740293037302074],[-119.26534907446403,37.74029526648488],[-119.2653656385506,37.74029794977303],[-119.26538207659333,37.74030108398997],[-119.26539836913261,37.74030466542543],[-119.26541449688123,37.74030868983963],[-119.26543044074687,37.74031315246841],[-119.265446181855,37.74031804802889],[-119.26546170157106,37.74032337072565],[-119.26547698152254,37.74032911425757],[-119.26549200362086,37.74033527182544],[-119.26550675008255,37.74034183613982],[-119.2655212034505,37.7403487994298],[-119.26553534661456,37.74035615345211],[-119.2655491628317,37.74036388950103],[-119.26556263574605,37.74037199841847],[-119.26557574940804,37.74038047060495],[-119.2655884882934,37.740389296031026],[-119.26560083732151,37.74039846424898],[-119.26561278187327,37.74040796440537],[-119.26562430780837,37.74041778525373],[-119.265635401482,37.740427915167984],[-119.2656370830764,37.7404294507491],[-119.26563883010664,37.74043093954849],[-119.26564064051036,37.740432379808595],[-119.26564251215035,37.74043376982921],[-119.26564444281713,37.740435107969375],[-119.26564643023157,37.740436392649464],[-119.26564847204752,37.74043762235286],[-119.26565056585461,37.74043879562791],[-119.26565270918107,37.74043991108955],[-119.26565489949672,37.740440967420994],[-119.26565713421586,37.740441963375225],[-119.26565941070042,37.740442897776504],[-119.265661726263,37.74044376952176],[-119.26566407817006,37.74044457758193],[-119.26566646364515,37.740445321003065],[-119.26566887987224,37.74044599890756],[-119.26567132399893,37.74044661049514],[-119.26567379313995,37.74044715504385],[-119.26567628438046,37.74044763191083],[-119.26567879477949,37.74044804053314],[-119.26568132137358,37.74044838042835],[-119.26568386118002,37.740448651195294],[-119.26568641120058,37.740448852514284],[-119.26568896842494,37.74044898414767],[-119.26569152983427,37.74044904594006],[-119.26569409240484,37.74044903781849],[-119.26569665311152,37.74044895979259],[-119.26569920893138,37.740448811954415],[-119.26570175684725,37.74044859447852],[-119.26570429385129,37.74044830762166],[-119.26570681694861,37.74044795172243],[-119.2657093231606,37.74044752720099],[-119.26571180952874,37.74044703455847],[-119.26571427311785,37.740446474376455],[-119.26571671101964,37.740445847316266],[-119.26571912035611,37.74044515411809],[-119.26572149828309,37.7404443956003],[-119.2657238419934,37.74044357265833],[-119.2657261487203,37.74044268626362],[-119.26572841574067,37.740441737462604],[-119.2657306403783,37.740440727375336],[-119.26573282000697,37.74043965719423],[-119.26573495205363,37.74043852818264],[-119.26573703400143,37.74043734167336],[-119.26573906339256,37.74043609906707],[-119.26574103783136,37.7404348018307],[-119.265742954987,37.74043345149561],[-119.26574481259628,37.740432049655894],[-119.26574660846624,37.74043059796642],[-119.26574834047692,37.74042909814089],[-119.26575410229466,37.74042410938079],[-119.2657600773183,37.74041928137406],[-119.26576625844041,37.740414619863714],[-119.26577263830835,37.74041013039471],[-119.2657792093332,37.7404058183073],[-119.26578596369856,37.74040168873082],[-119.26579289336996,37.74039774657748],[-119.26579999010445,37.74039399653648],[-119.26580724546032,37.740390443068584],[-119.26581465080722,37.74038709040068],[-119.2658221973363,37.74038394252083],[-119.2658298760709,37.74038100317348],[-119.265837677877,37.74037827585503],[-119.26584559347424,37.74037576380964],[-119.26585361344691,37.74037347002544],[-119.2658617282551,37.74037139723094],[-119.26586992824618,37.74036954789174],[-119.26587820366605,37.74036792420763],[-119.26588654467106,37.74036652811004],[-119.26590639304366,37.740363768717174],[-119.26592634904128,37.7403615522729],[-119.26594638911993,37.740359881392166],[-119.26596648963638,37.74035875804629],[-119.26598662687613,37.74035818356058],[-119.26600677708133,37.74035815861279],[-119.26602691647889,37.74035868323238],[-119.26604702130837,37.74035975680039],[-119.26606706785024,37.740361378050245],[-119.26608703245363,37.740363545069194],[-119.26610689156436,37.74036625530059],[-119.26612662175275,37.740369505546916],[-119.26614619974116,37.74037329197357],[-119.26616560243153,37.74037761011328],[-119.26618480693259,37.740382454871536],[-119.26625076972812,37.7403991101403],[-119.26631740436878,37.74041398357679],[-119.26638463455393,37.74042705814993],[-119.26645238330079,37.74043831888851],[-119.2665205730327,37.74044775289819],[-119.26658912566798,37.740455349376454],[-119.26659964522236,37.740456225799775],[-119.26661019650292,37.740456814478605],[-119.26662076703262,37.740457114716854],[-119.2666313443116,37.74045712615946],[-119.26664191583212,37.74045684879291],[-119.26665246909322,37.740456282945196],[-119.26666299161548,37.74045542928541],[-119.26667347095587,37.74045428882305],[-119.26668389472242,37.74045286290671],[-119.26669425058893,37.740451153222565],[-119.26670452630937,37.740449161792334],[-119.26671470973261,37.74044689097092],[-119.2667247888166,37.740444343443606],[-119.2667347516427,37.74044152222286],[-119.26674458642974,37.74043843064479],[-119.26675428154796,37.740435072365315],[-119.26676382553282,37.74043145135556],[-119.26677320709841,37.74042757189745],[-119.26678241515091,37.740423438578496],[-119.26679143880176,37.74041905628641],[-119.26681527569464,37.74040657648019],[-119.26683857090381,37.740393467476565],[-119.26686129810447,37.74037974408956],[-119.26688343161376,37.74036542182743],[-119.2669049464198,37.740350516875246],[-119.2669258182099,37.74033504607652],[-119.26694602339803,37.74031902691419],[-119.2669655391516,37.74030247749087],[-119.26698434341708,37.740285416508414],[-119.26700241494505,37.7402678632467],[-119.26701973331414,37.74024983754199],[-119.26703627895418,37.74023135976429],[-119.26705203316823,37.74021245079456],[-119.26706697815378,37.74019313200101],[-119.26708109702277,37.74017342521489],[-119.26709437382081,37.74015335270595],[-119.26710351381323,37.74013954844468],[-119.26711324717607,37.740126002406456],[-119.26712356235586,37.74011273067004],[-119.2671344471084,37.74009974898861],[-119.2671458885136,37.740087072771075],[-119.26715787299045,37.74007471706374],[-119.26717038631355,37.740062696532455],[-119.26718341362965,37.74005102544522],[-119.26719693947554,37.74003971765524],[-119.26721094779623,37.74002878658457],[-119.26722542196407,37.740018245207985],[-119.26724034479848,37.740008106037784],[-119.26725569858641,37.739998381108826],[-119.26727146510324,37.73998908196426],[-119.2672876256345,37.73998021964189],[-119.26730416099804,37.73997180466097],[-119.26732105156687,37.73996384700982],[-119.26733827729232,37.739956356133824],[-119.26735581772802,37.73994934092446],[-119.26737365205399,37.739942809708495],[-119.26739175910146,37.739936770238266],[-119.26741011737796,37.739931229682405],[-119.26742870509284,37.73992619461734],[-119.26744750018311,37.73992167101951],[-119.26746648033968,37.73991766425824],[-119.26748562303376,37.739914179089425],[-119.26752732702663,37.73990659809596],[-119.26756868480855,37.73989790289297],[-119.26760964919009,37.739888103401725],[-119.26765017343061,37.73987721080355],[-119.2676902112918,37.739865237526985],[-119.26772971709032,37.73985219723365],[-119.2677686457501,37.739838104802594],[-119.2678069528535,37.73982297631341],[-119.2678445946923,37.739806829027785],[-119.26788152831742,37.73978968136987],[-119.26791771158781,37.73977155290521],[-119.2679531032188,37.739752464318485],[-119.26798766282906,37.73973243738977],[-119.26802135098664,37.73971149496991],[-119.26805412925405,37.739689660954205],[-119.26807593481301,37.739672536424756],[-119.26809702711982,37.73965485747461],[-119.26811738383445,37.739636642828934],[-119.26813698339608,37.73961791178023],[-119.2681558050459,37.739598684168016],[-119.2681738288491,37.739578980357706],[-119.26819103571596,37.73955882121901],[-119.26820740742205,37.739538228104045],[-119.26822292662766,37.73951722282443],[-119.268237576896,37.739495827628396],[-119.26825134271061,37.73947406517708],[-119.26825760753286,37.739462981086554],[-119.26826338530398,37.73945173137333],[-119.2682686690948,37.73944032952959],[-119.26827345256845,37.73942878922998],[-119.2682777299882,37.73941712431522],[-119.26828149622419,37.73940534877543],[-119.26828474675973,37.739393476733426],[-119.26828747769657,37.73938152242778],[-119.26828968575967,37.73936950019565],[-119.26829136830102,37.739357424455726],[-119.26829252330305,37.73934530969084],[-119.26829314938071,37.73933317043062],[-119.2682932457834,37.739321021234026],[-119.26829281239577,37.73930887667201],[-119.26829184973788,37.73929675130987],[-119.26829035896449,37.73928465968994],[-119.26828834186381,37.73927261631404],[-119.26828580085524,37.73926063562613],[-119.26828273898657,37.73924873199499],[-119.2682791599302,37.73923691969698],[-119.26827506797885,37.73922521289889],[-119.26827046804034,37.73921362564099],[-119.26826536563172,37.739202171820175],[-119.26825976687267,37.739190865173306],[-119.26825367847816,37.73917971926072],[-119.26824710775037,37.73916874744999],[-119.2682400625699,37.73915796289982],[-119.26823255138645,37.73914737854442],[-119.26787782052429,37.73864433559977],[-119.26783982666198,37.738590754509325],[-119.26780405226751,37.73853621838754],[-119.26777053535646,37.73848078519464],[-119.26773931154503,37.738424513844116],[-119.267710414012,37.7383674641401],[-119.26768387346374,37.7383096967138],[-119.26765971810138,37.73825127295913],[-119.26763797359095,37.738192254967274],[-119.26761866303615,37.7381327054609],[-119.26759764521691,37.73806801604585],[-119.26757390811228,37.73800392262983],[-119.26754747842044,37.73794049728255],[-119.26751838586695,37.737877811322406],[-119.2674866631714,37.737815935236114],[-119.26745234601057,37.73775493859962],[-119.26741547297827,37.73769488999981],[-119.26737608554193,37.73763585695739],[-119.26733422799593,37.737577905851],[-119.26728994741183,37.7375211018425],[-119.2672727498844,37.737500641886626],[-119.26725466110848,37.73748067252546],[-119.26723570325424,37.737461218233314],[-119.26721589955693,37.73744230285317],[-119.2671952742884,37.73742394956754],[-119.26717385272735,37.73740618087004],[-119.26715166112835,37.73738901853773],[-119.26712872668968,37.7373724836046],[-119.26710507751996,37.73735659633564],[-119.26708074260368,37.73734137620204],[-119.26705575176582,37.737326841857374],[-119.26703013563511,37.737313011114736],[-119.26700392560659,37.73729990092484],[-119.26697715380311,37.73728752735532],[-119.26694985303604,37.737275905570996],[-119.26692205676488,37.73726504981534],[-119.26688008596881,37.73724868855452],[-119.26683882975318,37.737231218611086],[-119.26679833453733,37.73721265964148],[-119.26675864588424,37.737193032527486],[-119.26671980844925,37.737172359352705],[-119.2666818659299,37.73715066337771],[-119.2666448610166,37.73712796901386],[-119.26660883534478,37.73710430179582],[-119.26657382944795,37.73707968835285],[-119.266539882712,37.737054156378825],[-119.26650703333117,37.73702773460111],[-119.26647531826467,37.73700045274817],[-119.26644477319546,37.73697234151615],[-119.26641543248998,37.736943432534346],[-119.26638732915937,37.736913758329614],[-119.26636607479448,37.736891343405766],[-119.26634385341852,37.736869527969255],[-119.26632069182058,37.73684833831894],[-119.26629661792308,37.73682779999931],[-119.26627166074817,37.7368079377696],[-119.26624585038279,37.736788775573935],[-119.26621921794224,37.73677033651263],[-119.26619179553285,37.736752642814146],[-119.26616361621316,37.73673571580848],[-119.26613471395409,37.73671957590125],[-119.26610512359804,37.736704242549244],[-119.26607488081679,37.736689734237],[-119.26604402206867,37.73667606845437],[-119.26601258455435,37.73666326167552],[-119.26598060617223,37.736651329339125],[-119.26594812547272,37.7366402858297],[-119.26592068258944,37.73663095789903],[-119.26589366133412,37.73662088351089],[-119.26586709388808,37.736610074663574],[-119.26584101189212,37.73659854423007],[-119.2658154464089,37.73658630594278],[-119.26579042788578,37.73657337437709],[-119.26576598611875,37.73655976493407],[-119.26574215021682,37.73654549382214],[-119.26571894856738,37.736530578037694],[-119.26569640880241,37.736515035344915],[-119.26567455776554,37.73649888425458],[-119.26565342148015,37.73648214400208],[-119.26563302511826,37.736464834524426],[-119.26561339297065,37.73644697643657],[-119.26559454841792,37.73642859100678],[-119.26557651390257,37.73640970013138],[-119.26555931090239,37.73639032630866],[-119.26554295990478,37.73637049261204],[-119.26552748038236,37.73635022266258],[-119.26551289076994,37.73632954060097],[-119.26549920844228,37.73630847105861],[-119.26548644969367,37.736287039128364],[-119.26547462971841,37.7362652703347],[-119.26546376259267,37.73624319060317],[-119.26545386125784,37.736220826229726],[-119.26544493750504,37.736198203849234],[-119.26543700196112,37.736175350403784],[-119.26543006407597,37.73615229311067],[-119.26542413211135,37.73612905942993],[-119.265418341263,37.73610639810838],[-119.26541155971532,37.736083910784885],[-119.2654037957045,37.73606162476738],[-119.26539505865986,37.73603956711938],[-119.26538535919221,37.73601776462699],[-119.26537470908112,37.73599624376648],[-119.26536312126058,37.73597503067206],[-119.26535060980324,37.735954151104245],[-119.26533718990333,37.735933630418415],[-119.26532287785824,37.735913493534184],[-119.26530769104873,37.735893764905015],[-119.26529164791778,37.73587446848866],[-119.26527476794818,37.7358556277179],[-119.26525707163893,37.73583726547224],[-119.2652385804803,37.73581940405005],[-119.26521931692778,37.73580206514149],[-119.26519930437469,37.735785269802214],[-119.26517856712394,37.73576903842774],[-119.26515713035845,37.73575339072879],[-119.26513502011038,37.735738345707155],[-119.26511226322991,37.7357239216329],[-119.26508888735226,37.73571013602192],[-119.26506492086438,37.73569700561481],[-119.2650403928703,37.73568454635655],[-119.2650153331559,37.735672773377054],[-119.26498977215272,37.73566170097282],[-119.26496374090102,37.73565134258967],[-119.26493727101203,37.735641710806284],[-119.2649103946296,37.73563281731907],[-119.26488314439118,37.73562467292777],[-119.26485555338822,37.73561728752256],[-119.26482765512586,37.73561067007187],[-119.26482032639998,37.73560893164208],[-119.26481307843964,37.73560699136503],[-119.26480592005603,37.7356048515995],[-119.26479885995151,37.735602514946734],[-119.26479190670902,37.73559998424743],[-119.26478506878148,37.735597262578125],[-119.26477835448168,37.73559435324749],[-119.26477177197212,37.735591259792365],[-119.26476532925507,37.735587985973474],[-119.26475903416282,37.73558453577073],[-119.26475289434823,37.735580913378485],[-119.2647469172754,37.73557712320049],[-119.26474111021055,37.73557316984438],[-119.2647354802132,37.73556905811621],[-119.2647300341277,37.73556479301456],[-119.26472477857469,37.73556037972446],[-119.26471971994327,37.73555582361109],[-119.26471486438314,37.73555113021324],[-119.26471021779709,37.73554630523666],[-119.26470578583384,37.73554135454694],[-119.26470157388124,37.73553628416265],[-119.26469758705969,37.73553110024772],[-119.26469383021583,37.73552580910417],[-119.26469030791675,37.73552041716439],[-119.26468702444441,37.73551493098326],[-119.26438345584428,37.73500086910917],[-119.26406411066024,37.734492872680725],[-119.26390358426808,37.734254979266446],[-119.26373317634223,37.7340214614644],[-119.26328994569013,37.73341462232741],[-119.26310444626864,37.733141474777455],[-119.26292917037091,37.73286410151284],[-119.26276427034811,37.73258274381042],[-119.26267173677756,37.73242607766879],[-119.26257227317703,37.73227211343177],[-119.2624660044578,37.732121044389494],[-119.2623530640721,37.73197306019621],[-119.26223359384532,37.731828346632355],[-119.26199731442757,37.73154250054868],[-119.26177351140294,37.731250390031576],[-119.26156244767074,37.730952358413525],[-119.26136437114802,37.730648755982344],[-119.26117951447878,37.73033993956904],[-119.26100809476114,37.730026272128434],[-119.26085031329285,37.729708122312154],[-119.26070635533536,37.72938586403525],[-119.26057638989684,37.72905987603654],[-119.26037847076111,37.72863304039546],[-119.26019912347144,37.728201058441044],[-119.26003855925697,37.727764439730045],[-119.2598969671804,37.727323699279815],[-119.25977451391637,37.72687935696035],[-119.25967134355642,37.726431936881006],[-119.25956306220652,37.725980667108225],[-119.25947430096649,37.72552671675791],[-119.25940516360002,37.72507061833991],[-119.25935573084598,37.72461290687417],[-119.25932606032535,37.72415411926301],[-119.25932050872005,37.724060592364154],[-119.25931881060565,37.72396697128344],[-119.259320967784,37.723873356165],[-119.25932697793309,37.723779847146204],[-119.25933683460951,37.72368654425061],[-119.25935052725552,37.72359354728083],[-119.25936804121025,37.723500955711955],[-119.2593893577256,37.72340886858505],[-119.25941445398625,37.723317384401206],[-119.25944330313413,37.72322660101622],[-119.2594587376714,37.72317782589135],[-119.25947203230429,37.72312865475342],[-119.25948317102687,37.7230791468174],[-119.25949214042949,37.72302936170373],[-119.25949892971505,37.72297935936653],[-119.25950353071197,37.72292920002142],[-119.25950593788383,37.7228789440729],[-119.25950614833633,37.72282865204175],[-119.25950416182044,37.722778384492074],[-119.25949998073291,37.722728201958354],[-119.25949361011315,37.72267816487257],[-119.2594850576374,37.72262833349147],[-119.25947433360923,37.72257876782388],[-119.25946145094726,37.722529527558606],[-119.25944642516943,37.722480671992464],[-119.25942927437454,37.72243225995883],[-119.25941001922017,37.72238434975691],[-119.25927913495967,37.72207884023732],[-119.25927731518931,37.7220748424532],[-119.25927532241369,37.72207089706228],[-119.25927315901798,37.722067008786794],[-119.25927082759155,37.72206318228054],[-119.2592683309249,37.722059422123486],[-119.25926567200628,37.72205573281608],[-119.25926285401819,37.722052118774066],[-119.25925988033342,37.72204858432303],[-119.25925675451123,37.72204513369335],[-119.25925348029287,37.72204177101503],[-119.25925006159727,37.72203850031284],[-119.25924650251619,37.72203532550145],[-119.25924280730955,37.72203225038078],[-119.2592389804001,37.72202927863138],[-119.25923502636824,37.72202641381013],[-119.25923094994654,37.7220236593459],[-119.25922675601402,37.72202101853549],[-119.25922244959037,37.72201849453965],[-119.25921803582992,37.72201609037931],[-119.25921352001548,37.72201380893201],[-119.25920890755198,37.72201165292839],[-119.25920420396001,37.72200962494892],[-119.25919941486929,37.72200772742089],[-119.25919454601181,37.722005962615434],[-119.2591896032151,37.72200433264481],[-119.25918459239509,37.72200283945991],[-119.25917951954922,37.72200148484795],[-119.25917439074911,37.72200027043021],[-119.25916921213336,37.72199919766021],[-119.25916060011703,37.72199741443905],[-119.25915207035976,37.721995397124616],[-119.25914363294339,37.7219931481013],[-119.25913529784063,37.72199067002738],[-119.25912707490325,37.72198796583185],[-119.2591189738504,37.72198503871095],[-119.25911100425725,37.72198189212443],[-119.25910317554352,37.72197852979146],[-119.2590954969624,37.72197495568615],[-119.2590879775897,37.72197117403296],[-119.25908062631298,37.72196718930169],[-119.25907345182117,37.72196300620209],[-119.25906646259415,37.72195862967846],[-119.25905966689294,37.72195406490366],[-119.2590530727497,37.721949317273086],[-119.25904668795843,37.72194439239825],[-119.25904052006565,37.721939296100125],[-119.25903457636156,37.721934034402366],[-119.25902886387128,37.72192861352407],[-119.2590233893467,37.721923039872514],[-119.25901815925843,37.7219173200355],[-119.25901317978818,37.721911460773654],[-119.25900845682139,37.72190546901236],[-119.25900399594036,37.721899351833684],[-119.25899366147083,37.72188399462558],[-119.25898398794513,37.72186836812135],[-119.25897498646937,37.72185249026232],[-119.25896666737799,37.72183637927837],[-119.25895904022202,37.7218200536671],[-119.25895211375794,37.72180353217243],[-119.25894589593781,37.721786833763204],[-119.25894039389999,37.72176997761141],[-119.25893561396107,37.72175298307009],[-119.2589315616085,37.72173586965117],[-119.25892824149443,37.721718657003024],[-119.25892565743025,37.721701364888006],[-119.25892381238232,37.721684013159624],[-119.2589227084684,37.72166662173989],[-119.25892234695546,37.721649210596304],[-119.25892272825799,37.72163179971899],[-119.25892385193774,37.72161440909785],[-119.25892571670401,37.72159705869942],[-119.25892832041536,37.721579768444094],[-119.25893166008187,37.72156255818316],[-119.25893573186869,37.721545447676085],[-119.25894068706135,37.72152791815815],[-119.2589463943975,37.7215105335713],[-119.25895284719371,37.72149331427182],[-119.2589600378936,37.72147628042241],[-119.25896795807685,37.72145945196862],[-119.25897659846893,37.721442848615524],[-119.25898594895202,37.72142648980455],[-119.25899599857685,37.7214103946908],[-119.25900673557555,37.72139458212056],[-119.25901814737534,37.72137907060931],[-119.25903022061344,37.721363878319956],[-119.25904294115243,37.72134902304164],[-119.25905629409714,37.721334522168846],[-119.25907026381176,37.7213203926811],[-119.25908483393846,37.721306651123],[-119.25909998741633,37.72129331358498],[-119.25911570650142,37.72128039568429],[-119.25913197278754,37.721267912546864],[-119.25920552845623,37.72121483516683],[-119.25928087513009,37.72116336736305],[-119.25935795700396,37.72111354725248],[-119.25943671698784,37.72106541173172],[-119.25945936287084,37.72105147905359],[-119.25948140596645,37.721036949209925],[-119.25950282132939,37.721021838643765],[-119.25952358472479,37.72100616445541],[-119.2595436726557,37.7209899443829],[-119.25956306238955,37.720973196782076],[-119.25958173198401,37.72095594060574],[-119.25959966031171,37.72093819538221],[-119.2596168270842,37.72091998119327],[-119.25963321287497,37.720901318651336],[-119.25964879914125,37.72088222887629],[-119.2596635682452,37.7208627334714],[-119.25967750347375,37.720842854499],[-119.25969058905751,37.72082261445545],[-119.2597028101887,37.72080203624574],[-119.25971415303778,37.72078114315751],[-119.2597246047692,37.720759958834705],[-119.25973415355594,37.720738507250836],[-119.25974278859272,37.720716812681886],[-119.25975050010842,37.72069489967873],[-119.25975586165772,37.72067969984877],[-119.25976188674285,37.72066465765666],[-119.25976856804517,37.72064979137325],[-119.25977589744889,37.7206351190557],[-119.25978386605107,37.72062065852549],[-119.25979246417236,37.72060642734692],[-119.25980168136891,37.72059244280572],[-119.25981150644476,37.72057872188794],[-119.2598219274658,37.7205652812595],[-119.25983293177389,37.72055213724581],[-119.25984450600262,37.720539305812046],[-119.25985663609323,37.72052680254367],[-119.25986930731186,37.7205146426275],[-119.25988250426741,37.7205028408334],[-119.25989621093022,37.720491411496155],[-119.25991041065156,37.72048036849819],[-119.25992508618378,37.720469725252634],[-119.25994021970142,37.72045949468708],[-119.25995579282265,37.72044968922786],[-119.25997178663181,37.72044032078495],[-119.25998818170218,37.720431400737525],[-119.26000495811978,37.7204229399201],[-119.26002593395482,37.72041236064326],[-119.26004643226486,37.720401206383954],[-119.26006642808176,37.72038949072882],[-119.2600858970496,37.720377227948255],[-119.26010481545427,37.72036443297914],[-119.26012316025214,37.72035112140653],[-119.26014090909844,37.720337309444766],[-119.26015804037435,37.72032301391763],[-119.26017453321323,37.72030825223802],[-119.26019036752625,37.720293042386494],[-119.26020552402665,37.72027740288957],[-119.26021998425333,37.72026135279713],[-119.26023373059337,37.72024491165904],[-119.26024674630341,37.7202280995016],[-119.26025901553005,37.720210936802964],[-119.26027052332927,37.720193444468244],[-119.26028125568442,37.720175643804076],[-119.2602911995235,37.72015755649263],[-119.26030034273495,37.720139204565186],[-119.2603505385298,37.72002733906305],[-119.26039591976804,37.71991418323627],[-119.26043643405292,37.71979986778847],[-119.26047203461007,37.71968452476217],[-119.26050268034147,37.71956828738614],[-119.26052833587272,37.71945128992163],[-119.26054897159388,37.71933366750714],[-119.26056456369355,37.719215556002446],[-119.26057509418622,37.71909709183158],[-119.26058055093297,37.71897841182529],[-119.2605809276554,37.71885965306294],[-119.2605762239427,37.71874095271425],[-119.26056644525212,37.718622447880804],[-119.26055160290238,37.718504275437695],[-119.2605317140607,37.71838657187553],[-119.26050680172276,37.71826947314258],[-119.2604768946859,37.718153114488075],[-119.26044202751602,37.71803763030565],[-119.26040224050733,37.71792315397844],[-119.26035757963587,37.71780981772486],[-119.26027108571614,37.71769779242751],[-119.26018935647873,37.717583532026985],[-119.26011248333447,37.71746716434986],[-119.26004055226034,37.717348819579556],[-119.25997364370339,37.717228630110704],[-119.25991183249066,37.717106730401035],[-119.25985518774574,37.71698325682083],[-119.25980377281151,37.716858347500455],[-119.25975764517922,37.7167321421757],[-119.25971685642453,37.716604782031524],[-119.25968145214974,37.71647640954404],[-119.259651471933,37.71634716832113],[-119.25962781146816,37.71626173687397],[-119.2596078624254,37.71617570973257],[-119.25959164837892,37.716089188612834],[-119.2595791884866,37.716002275814354],[-119.25957049746732,37.71591507409942],[-119.2595655855837,37.71582768657164],[-119.25956445863002,37.71574021655391],[-119.25956711792536,37.71565276746635],[-119.25957356031216,37.715565442703905],[-119.25958377816002,37.715478345514214],[-119.25959775937476,37.71539157887549],[-119.25961548741277,37.71530524537476],[-119.25963694130073,37.71521944708655],[-119.25966209566029,37.71513428545228],[-119.2600300524977,37.71389637138167],[-119.26034863169072,37.712649847010695],[-119.2603369136444,37.7126185329305],[-119.26032652554211,37.712586923972715],[-119.26031747909401,37.71255505577424],[-119.26030978449762,37.71252296426414],[-119.26030345042622,37.712490685623266],[-119.26029848401927,37.71245825624336],[-119.2602948908742,37.71242571268606],[-119.2602926750402,37.71239309164171],[-119.26029183901365,37.71236042988794],[-119.26029238373525,37.71232776424824],[-119.26029430858907,37.71229513155044],[-119.26029761140317,37.71226256858515],[-119.26030228845215,37.712230112064375],[-119.26030833446119,37.71219779858001],[-119.2603157426122,37.71216566456269],[-119.26032450455136,37.71213374624061],[-119.26033461039869,37.712102079598786],[-119.26034604875906,37.712070700338415],[-119.26035880673507,37.7120396438367],[-119.26036431556932,37.712026230301376],[-119.26036925183939,37.71201267680204],[-119.26037360992959,37.711998998758595],[-119.26037738488195,37.71198521173267],[-119.26038057240207,37.71197133140986],[-119.26038316886377,37.7119573735819],[-119.26038517131342,37.71194335412867],[-119.26038657747313,37.71192928900018],[-119.26038738574341,37.71191519419836],[-119.2603875952051,37.71190108575896],[-119.2603872056202,37.71188697973317],[-119.2603862174323,37.71187289216946],[-119.26038463176597,37.71185883909526],[-119.26038245042557,37.71184483649877],[-119.26037967589319,37.711830900310744],[-119.26037631132569,37.7118170463864],[-119.26037236055133,37.71180329048733],[-119.2603674156936,37.71178603095938],[-119.26036322966526,37.711768645211286],[-119.26035980753386,37.711751154292315],[-119.26035715344214,37.711733579379086],[-119.2603552706029,37.711715941749915],[-119.2603541612952,37.71169826275896],[-119.2603538268615,37.711680563810525],[-119.26035426770618,37.71166286633298],[-119.26035548329494,37.711645191753],[-119.26035747215553,37.711627561469406],[-119.26036023187939,37.71160999682747],[-119.26036375912481,37.71159251909294],[-119.26036804962074,37.71157514942629],[-119.26037309817211,37.71155790885723],[-119.260378898666,37.71154081825906],[-119.26038544407928,37.71152389832357],[-119.26039272648676,37.71150716953587],[-119.26040073707112,37.71149065214963],[-119.2604094661334,37.7114743661626],[-119.26041890310479,37.7114583312923],[-119.26043439668504,37.71143202332101],[-119.26044874647795,37.71140530904352],[-119.26046193563204,37.711378219833705],[-119.2604739486589,37.71135078750573],[-119.26048477145157,37.7113230442767],[-119.2604943913008,37.711295022728834],[-119.2605027969103,37.71126675577111],[-119.26050997840973,37.711238276600746],[-119.2605159273664,37.71120961866412],[-119.26052063679528,37.71118081561755],[-119.26052410116695,37.71115190128765],[-119.26052631641429,37.71112290963181],[-119.2605272799371,37.7110938746981],[-119.26052699060531,37.71106483058539],[-119.2605254487602,37.71103581140334],[-119.260522656214,37.711006851232234],[-119.26051861624768,37.710977984083044],[-119.260507774168,37.71090059299754],[-119.26050025419795,37.710822953573086],[-119.2604960650421,37.710745155787286],[-119.2604952115449,37.71066728980104],[-119.26049769468501,37.71058944585403],[-119.2605035115742,37.71051171416007],[-119.2605050524636,37.710498668378946],[-119.26050715585676,37.7104856722795],[-119.26050981927649,37.71047274116499],[-119.26051303958636,37.71045989026208],[-119.26051681299407,37.710447134703],[-119.26052113505604,37.71043448950771],[-119.26052600068266,37.7104219695662],[-119.26053140414433,37.71040958962095],[-119.26053733907807,37.71039736424961],[-119.26054379849509,37.71038530784777],[-119.26055077478912,37.7103734346121],[-119.26055825974514,37.71036175852355],[-119.26056624454927,37.710350293330926],[-119.26057471979905,37.71033905253468],[-119.26058367551447,37.71032804937106],[-119.26059310114985,37.71031729679643],[-119.26060298560614,37.71030680747217],[-119.26061331724404,37.7102965937496],[-119.26062408389772,37.71028666765554],[-119.26063527288913,37.71027704087805],[-119.26064687104294,37.710267724752875],[-119.26065886470195,37.71025873024984],[-119.26067123974339,37.710250067960104],[-119.26068398159535,37.710241748083604],[-119.26069707525397,37.71023378041713],[-119.2607105053013,37.71022617434266],[-119.26072425592312,37.71021893881646],[-119.2607383109279,37.71021208235843],[-119.26075265376559,37.71020561304215],[-119.2607639025159,37.71020054338504],[-119.26077493036387,37.71019517614294],[-119.26078572484091,37.71018951738428],[-119.26079627374227,37.710183573507166],[-119.26080656514095,37.71017735123203],[-119.26081658740102,37.7101708575941],[-119.26082632919092,37.710164099935376],[-119.26083577949615,37.7101570858964],[-119.26084492763187,37.71014982340759],[-119.26085376325479,37.71014232068025],[-119.26086227637508,37.71013458619732],[-119.26087045736749,37.710126628703804],[-119.26087829698231,37.71011845719676],[-119.26088578635583,37.71011008091533],[-119.26089291702033,37.7101015093301],[-119.26089968091368,37.71009275213248],[-119.26090607038846,37.71008381922377],[-119.26091207822056,37.71007472070393],[-119.26091769761739,37.71006546686014],[-119.26092292222559,37.710056068155176],[-119.26095765635311,37.70998760389949],[-119.2609896294294,37.70991829588508],[-119.26101880905125,37.70984821436908],[-119.26104516564743,37.709777430392485],[-119.2610686725087,37.709706015708235],[-119.26108930581472,37.70963404270838],[-119.26110704465823,37.70956158435067],[-119.26112187106617,37.709488714084756],[-119.26113377001795,37.70941550577747],[-119.2611427294606,37.709342033638194],[-119.26116356766438,37.70916604268178],[-119.26119021695592,37.70899054726142],[-119.26122265890682,37.70881566846447],[-119.26124696245442,37.7086813976489],[-119.26126562891578,37.708546558710026],[-119.26127863764877,37.7084113009802],[-119.26128597427738,37.7082757742549],[-119.26128763070747,37.70814012862661],[-119.26128360513566,37.708004514318674],[-119.26127390205122,37.707869081519014],[-119.26125853223088,37.70773398021365],[-119.26123751272681,37.707599360020765],[-119.26121086684758,37.707465370024835],[-119.26117862413214,37.70733215861168],[-119.26114082031721,37.70719987330413],[-119.26109749729726,37.70706866059858],[-119.26103639552497,37.70690609597136],[-119.2609683698897,37.706745276482295],[-119.26089349914936,37.70658638821752],[-119.26081186998077,37.70642961502736],[-119.26072357687913,37.7062751383137],[-119.26062872204866,37.70612313682003],[-119.26052741528407,37.70597378642469],[-119.26041977384334,37.70582725993749],[-119.26030592231203,37.70568372689972],[-119.26018599245886,37.70554335338811],[-119.26017845676188,37.70553795700732],[-119.26017115914644,37.70553235788731],[-119.26016410824867,37.70552656265418],[-119.26015731241277,37.7055205781662],[-119.26015077968107,37.705514411505575],[-119.26014451778448,37.7055080699701],[-119.26013853413345,37.7055015610645],[-119.26013283580909,37.7054948924916],[-119.26012742955491,37.70548807214316],[-119.26012232176869,37.70548110809055],[-119.26011751849506,37.70547400857524],[-119.26011302541824,37.70546678199893],[-119.26010884785532,37.70545943691377],[-119.26010499075011,37.70545198201208],[-119.26010145866704,37.705444426116195],[-119.260098255786,37.70543677816793],[-119.26009538589722,37.70542904721804],[-119.26009285239692,37.70542124241553],[-119.26009065828318,37.70541337299675],[-119.26008880615245,37.705405448274576],[-119.26008729819647,37.705397477627265],[-119.26008613619969,37.70538947048751],[-119.26008532153715,37.70538143633108],[-119.26008485517278,37.70537338466577],[-119.2600847376584,37.7053653250201],[-119.26008496913296,37.70535726693198],[-119.26008554932243,37.70534921993758],[-119.26008647754003,37.70534119355982],[-119.26008775268724,37.70533319729726],[-119.26008937325491,37.70532524061284],[-119.26009133732512,37.70531733292265],[-119.2600936425734,37.705309483584806],[-119.2600962862716,37.70530170188829],[-119.26009926529106,37.70529399704218],[-119.26010257610616,37.705286378164445],[-119.26010621479884,37.70527885427143],[-119.26011017706281,37.705271434267026],[-119.26011445820903,37.70526412693219],[-119.26011905317101,37.70525694091449],[-119.26012395651095,37.705249884718],[-119.26012916242603,37.705242966693135],[-119.26013466475543,37.705236195026764],[-119.26014045698754,37.70522957773258],[-119.26014653226768,37.70522312264159],[-119.26026887852467,37.70509303740779],[-119.26038540900362,37.704959624173725],[-119.26049598045016,37.70482304698422],[-119.26060045693954,37.7046834737736],[-119.26069871004344,37.70454107615915],[-119.2607906189878,37.70439602923002],[-119.26087042802246,37.704258410549876],[-119.2609442684657,37.704118704451226],[-119.26101205401645,37.70397707427983],[-119.26107370545428,37.70383368563014],[-119.2611291507322,37.703688706151695],[-119.26116019289422,37.70360745367353],[-119.26119465589463,37.70352707638778],[-119.26123250075248,37.70344766518311],[-119.26127368466318,37.70336930985549],[-119.26131816104676,37.70329209900662],[-119.26136587960079,37.703216119943825],[-119.26141678635709,37.70314145858131],[-119.261470823743,37.703068199342965],[-119.26152793064638,37.70299642506703],[-119.26153704562527,37.702985765789705],[-119.26154659123091,37.70297534718162],[-119.26155655740499,37.70296518022085],[-119.26156693364602,37.70295527562025],[-119.26157770902043,37.70294564381625],[-119.26158887217417,37.702936294957816],[-119.26160041134455,37.70292723889577],[-119.26161231437267,37.702918485172425],[-119.26162456871627,37.70291004301155],[-119.26163716146294,37.702901921308516],[-119.2616500793437,37.702894128621146],[-119.261663308747,37.702886673160506],[-119.26169326550844,37.702869751135935],[-119.2617224656357,37.70285201386455],[-119.26175087400046,37.702833482684916],[-119.261778456427,37.70281417989078],[-119.26180517973337,37.70279412870401],[-119.26183101177118,37.70277335324693],[-119.26185592146439,37.70275187851309],[-119.26190094937147,37.70271029116813],[-119.26194418637887,37.70266752091086],[-119.26198558329668,37.70262361640319],[-119.26202509302894,37.70257862759743],[-119.26206267062695,37.702532605679465],[-119.26209827334063,37.702485603010516],[-119.26213186066701,37.70243767306752],[-119.26216339439632,37.70238887038234],[-119.26219283865551,37.702339250479675],[-119.26222015994897,37.702288869813856],[-119.26224532719665,37.70223778570472],[-119.26226831176947,37.70218605627226],[-119.26228908752175,37.70213374037058],[-119.26230763082104,37.7020808975209],[-119.26232199758398,37.70204004624941],[-119.262338147978,37.701999617743546],[-119.26235606236708,37.70195966114993],[-119.26237571897094,37.70192022504141],[-119.2623970938915,37.70188135735814],[-119.26242016114195,37.70184310534908],[-119.26244489267833,37.701805515514714],[-119.26247125843364,37.70176863355053],[-119.26249922635448,37.70173250429141],[-119.26252876243986,37.70169717165715],[-119.26255983078272,37.701662678599135],[-119.26259239361342,37.70162906704802],[-119.2626264113458,37.70159637786285],[-119.26266184262529,37.70156465078136],[-119.26269864437903,37.70153392437166],[-119.2627367718684,37.70150423598544],[-119.26277617874341,37.701475621712426],[-119.26281681709892,37.70144811633664],[-119.26285863753301,37.70142175329405],[-119.26290158920689,37.70139656463198],[-119.26291301711828,37.7013892265472],[-119.26292411472494,37.701381575105565],[-119.26293486842354,37.701373619686194],[-119.2629452650324,37.70136537004078],[-119.26295529180749,37.70135683628172],[-119.2629649364582,37.70134802886964],[-119.2629741871623,37.70133895860061],[-119.26298303258048,37.70132963659291],[-119.26299146187026,37.70132007427336],[-119.26299946469923,37.70131028336344],[-119.26300703125774,37.70130027586474],[-119.26301415227098,37.70129006404436],[-119.26302081901021,37.70127966041987],[-119.26302702330364,37.70126907774393],[-119.26303275754626,37.70125832898869],[-119.26303801470934,37.70124742732987],[-119.2630427883489,37.701236386130574],[-119.26304707261369,37.70122521892501],[-119.26305086225233,37.701213939401796],[-119.26305415261973,37.7012025613872],[-119.26305708452696,37.70119241547294],[-119.26306045758545,37.70118235646568],[-119.26306426773574,37.70117239647106],[-119.26306851039227,37.701162547475484],[-119.26307318044897,37.70115282133182],[-119.2630782722855,37.701143229745135],[-119.26308377977385,37.701133784258474],[-119.26308969628587,37.70112449623907],[-119.26309601470112,37.701115376864664],[-119.26310272741549,37.70110643711007],[-119.26310982635043,37.70109768773382],[-119.26311730296251,37.70108913926546],[-119.26312514825385,37.70108080199269],[-119.26313335278283,37.70107268594901],[-119.26314190667563,37.701064800901754],[-119.26315079963786,37.701057156340184],[-119.26316002096715,37.70104976146422],[-119.263169559566,37.70104262517321],[-119.26317940395501,37.70103575605536],[-119.2631895422869,37.701029162377345],[-119.26319996236052,37.70102285207436],[-119.26321065163579,37.70101683274051],[-119.2632215972486,37.70101111161979],[-119.26323278602638,37.70100569559731],[-119.2632442045039,37.70100059119099],[-119.26325583893957,37.70099580454372],[-119.26326767533186,37.70099134141601],[-119.26327969943621,37.700987207179],[-119.26329189678219,37.70098340680806],[-119.26330425269089,37.70097994487672],[-119.26355726108942,37.700909022044144],[-119.26380699157474,37.70083110971679],[-119.26385575742815,37.70081588929217],[-119.26390515877236,37.700802022908896],[-119.26395513607564,37.700789527276726],[-119.26400562911213,37.70077841745367],[-119.26405657703475,37.70076870682767],[-119.2641079184482,37.70076040710058],[-119.26415959148312,37.70075352827405],[-119.26421153387058,37.700748078637424],[-119.26426368301709,37.70074406475785],[-119.2643159760801,37.700741491472236],[-119.26436835004358,37.70074036188155],[-119.26442074179408,37.700740677347014],[-119.2644730881967,37.70074243748848],[-119.2645253261712,37.70074564018487],[-119.26457739276789,37.700750281576745],[-119.26461218730896,37.700753392982506],[-119.26464709491944,37.70075556217284],[-119.26468207519572,37.700756786637],[-119.26471708765,37.700757064957756],[-119.26475209175727,37.70075639681298],[-119.26478704700217,37.700754782975984],[-119.2648219129259,37.70075222531474],[-119.2648566491731,37.70074872678954],[-119.2648912155384,37.70074429144978],[-119.26492557201321,37.70073892442912],[-119.26495967883181,37.700732631939566],[-119.26499349651758,37.70072542126436],[-119.26502698592843,37.70071730074941],[-119.26506010830236,37.7007082797938],[-119.26509282530228,37.70069836883874],[-119.26512509906023,37.70068757935562],[-119.2651568922214,37.700675923832634],[-119.26518816798729,37.700663415760374],[-119.26521889015828,37.7006500696162],[-119.26524902317556,37.70063590084748],[-119.26527853216231,37.70062092585372],[-119.26529815542632,37.70061097417846],[-119.26531820048955,37.700601568195246],[-119.26533864332512,37.70059271917848],[-119.26535945942948,37.700584437734804],[-119.26538062385161,37.70057673379072],[-119.26540211122308,37.700569616580374],[-119.26542389578829,37.70056309463468],[-119.26544595143557,37.70055717577107],[-119.26546825172818,37.70055186708408],[-119.26549076993632,37.70054717493685],[-119.26551347906891,37.70054310495356],[-119.26553635190605,37.700539662012595],[-119.26555936103163,37.70053685024081],[-119.26558247886622,37.70053467300842],[-119.26560567770007,37.70053313292517],[-119.26562892972633,37.700532231837045],[-119.26565220707445,37.70053197082409],[-119.2656754818435,37.700532350199175],[-119.26569872613564,37.700533369507596],[-119.26572191208956,37.70053502752754],[-119.26574501191385,37.70053732227168],[-119.26576799792036,37.70054025098946],[-119.2657908425574,37.700543810170416],[-119.26581351844257,37.70054799554843],[-119.26583599839591,37.70055280210675],[-119.2658582554722,37.700558224084084],[-119.26588026299333,37.70056425498152],[-119.26590199458035,37.700570887570194],[-119.265923424185,37.70057811390008],[-119.265944526121,37.70058592530946],[-119.26596527509476,37.70059431243534],[-119.26598564623575,37.70060326522463],[-119.26600561512632,37.70061277294623],[-119.2660251578309,37.700622824203805],[-119.26605737664201,37.70063940191916],[-119.26609029094323,37.70065509340122],[-119.2661238621368,37.700669880248796],[-119.26615805085464,37.700683745121566],[-119.26619281700437,37.70069667176039],[-119.26622811981643,37.70070864500631],[-119.26626391789192,37.7007196508185],[-119.26630016925094,37.70072967629053],[-119.26633683138213,37.700738709665636],[-119.26639889165743,37.70075219378072],[-119.26646148254316,37.70076402873826],[-119.26652453464193,37.70077420141622],[-119.2665879780449,37.70078270053567],[-119.26665174240927,37.70078951667322],[-119.26671575703631,37.70079464227146],[-119.26677995094981,37.700798071647384],[-119.26684425297468,37.700799800998674],[-119.26690859181593,37.70079982840791],[-119.26697289613782,37.70079815384471],[-119.26703709464283,37.70079477916575],[-119.26710111615076,37.70078970811269],[-119.26716488967777,37.700782946308045],[-119.26731272408588,37.70076335534829],[-119.26745969659373,37.700740027010454],[-119.26760565757205,37.70071298504468],[-119.26775045842186,37.700682256981864],[-119.26789395172577,37.70064787410554],[-119.26803599139824,37.700609871420205],[-119.26817643283411,37.70056828761542],[-119.2685041639469,37.700470991741994],[-119.268835440161,37.700381597142965],[-119.2691699598414,37.70030018521128],[-119.26950741840324,37.70022683007156],[-119.26959455737726,37.70021027812456],[-119.2696823647749,37.70019613107868],[-119.26977073550106,37.70018440586618],[-119.26985956378658,37.70017511652072],[-119.26994874331483,37.70016827416052],[-119.27003816734882,37.70016388697505],[-119.27012772885907,37.70016196021523],[-119.27021732065151,37.700162496187154],[-119.27030683549594,37.700165494249326],[-119.27039616625413,37.70017095081342],[-119.27048520600822,37.70017885934863],[-119.27057384818848,37.7001892103894],[-119.27066198670094,37.700201991546756],[-119.27074951605431,37.70021718752325],[-119.27083633148622,37.70023478013112],[-119.27137196797496,37.70035298938462],[-119.27138199800686,37.70035508786871],[-119.27139211365972,37.70035690849368],[-119.27140230274479,37.700358449065824],[-119.2714125529849,37.70035970772884],[-119.27142285202913,37.700360682966135],[-119.27143318746782,37.700361373602604],[-119.27144354684737,37.700361778806034],[-119.27145391768538,37.70036189808822],[-119.27146428748563,37.700361731305435],[-119.27147464375318,37.700361278658626],[-119.27148497400938,37.7003605406932],[-119.27149526580689,37.700359518298384],[-119.27150550674473,37.70035821270606],[-119.27151568448325,37.70035662548943],[-119.27152578675889,37.70035475856095],[-119.27153580139904,37.70035261417019],[-119.27154571633675,37.70035019490098],[-119.27155551962508,37.70034750366839],[-119.27156519945173,37.700344543715204],[-119.27157474415316,37.700341318607954],[-119.27158414222859,37.7003378322327],[-119.271593382354,37.70033408879029],[-119.27160245339559,37.70033009279136],[-119.27161134442338,37.70032584905083],[-119.27162242175474,37.70032055974994],[-119.27163372133303,37.70031557607687],[-119.27164522980688,37.70031090392023],[-119.271656933578,37.70030654880056],[-119.2716688188174,37.700302515863775],[-119.27168087148169,37.70029880987515],[-119.27169307732963,37.70029543521357],[-119.27170542193899,37.70029239586653],[-119.27171789072358,37.700289695425205],[-119.27173046895054,37.70028733708043],[-119.27174314175764,37.70028532361878],[-119.27175589417092,37.7002836574193],[-119.27176871112239,37.70028234045076],[-119.27178157746775,37.70028137426925],[-119.27179447800442,37.7002807600164],[-119.27180739748934,37.700280498418],[-119.27182032065711,37.70028058978315],[-119.27183323223795,37.70028103400388],[-119.2718461169758,37.700281830555326],[-119.2718589596463,37.7002829784963],[-119.27187174507479,37.700284476470394],[-119.27188445815422,37.70028632270764],[-119.27189708386311,37.70028851502657],[-119.27190960728313,37.700291050836775],[-119.2719220136168,37.700293927141985],[-119.27193428820505,37.700297140543626],[-119.27194641654442,37.70030068724479],[-119.27195838430428,37.70030456305474],[-119.2719701773437,37.70030876339392],[-119.27198178172824,37.70031328329927],[-119.27199318374628,37.70031811743018],[-119.27200436992537,37.70032326007468],[-119.27201532704811,37.70032870515632],[-119.27202604216767,37.7003344462413],[-119.27203650262318,37.700340476546046],[-119.27204669605469,37.70034678894524],[-119.27205661041772,37.700353375980264],[-119.27206623399759,37.700360229867975],[-119.27206937916148,37.70036247081669],[-119.27207261823234,37.70036462566209],[-119.27207594747829,37.700366691921445],[-119.27207936306354,37.70036866721416],[-119.27208286105292,37.70037054926441],[-119.2720864374162,37.70037233590379],[-119.27209008803293,37.70037402507385],[-119.27209380869706,37.70037561482842],[-119.27209759512186,37.70037710333586],[-119.27210144294486,37.7003784888812],[-119.27210534773275,37.700379769868114],[-119.27210930498673,37.7003809448207],[-119.2721133101474,37.70038201238526],[-119.2721173586003,37.70038297133178],[-119.27212144568102,37.700383820555444],[-119.27212556668064,37.70038455907781],[-119.27214023755631,37.700386773213665],[-119.27215499538934,37.70038858617408],[-119.27216982280846,37.700389995825034],[-119.2721847023604,37.70039100050726],[-119.27219961653066,37.7003915990381],[-119.27221454776387,37.700391790713105],[-119.27222947848465,37.700391575306625],[-119.2722443911182,37.70039095307219],[-119.272259268111,37.700389924742254],[-119.27227409195149,37.70038849152724],[-119.27228884519067,37.700386655114166],[-119.27230351046268,37.70038441766468],[-119.27231807050518,37.700381781812446],[-119.27233250817972,37.70037875066008],[-119.27234680649183,37.70037532777555],[-119.2723609486112,37.700371517187854],[-119.2723749178913,37.70036732338246],[-119.27238869788906,37.70036275129578],[-119.27240227238424,37.700357806309604],[-119.27240422944331,37.700357027314354],[-119.27240615124212,37.70035619474052],[-119.27240803545821,37.70035530959433],[-119.27240987981442,37.70035437294544],[-119.27241168208184,37.70035338592584],[-119.27241344008239,37.70035234972834],[-119.2724151516915,37.70035126560522],[-119.27241681484072,37.70035013486665],[-119.27241842752004,37.70034895887914],[-119.27241998778055,37.70034773906388],[-119.27242149373666,37.700346476895064],[-119.27242294356836,37.70034517389803],[-119.27242433552357,37.70034383164745],[-119.27242566792005,37.70034245176549],[-119.2724269391476,37.70034103591972],[-119.27242814766991,37.70033958582123],[-119.27242929202649,37.7003381032225],[-119.27243037083436,37.70033658991522],[-119.27243138278979,37.70033504772832],[-119.27243232666977,37.7003334785255],[-119.27243320133368,37.700331884203166],[-119.2724340057244,37.700330266688105],[-119.27243473886989,37.70032862793511],[-119.27243539988412,37.70032696992459],[-119.27243598796822,37.70032529466033],[-119.27243650241148,37.70032360416687],[-119.27243694259226,37.700321900487225],[-119.27243730797854,37.70032018568028],[-119.27243759812877,37.70031846181846],[-119.2724378126923,37.70031673098502],[-119.27243795140986,37.70031499527173],[-119.27243801411379,37.70031325677619],[-119.2724380007283,37.70031151759943],[-119.2724379112696,37.70030977984325],[-119.27243774584578,37.70030804560776],[-119.2724375046568,37.700306316988794],[-119.27243718799411,37.70030459607541],[-119.27243679624044,37.7003028849474],[-119.2724363298692,37.700301185672615],[-119.27243578944402,37.70029950030468],[-119.27243517561801,37.7002978308804],[-119.27243448913305,37.700296179417265],[-119.27243373081868,37.700294547911135],[-119.27243290159139,37.700292938333654],[-119.27243200245331,37.70029135263005],[-119.27243103449106,37.70028979271666],[-119.27242999887444,37.70028826047864],[-119.27242889685502,37.70028675776774],[-119.27242772976457,37.700285286399996],[-119.27242649901359,37.70028384815358],[-119.27242520608942,37.700282444766614],[-119.2724238525546,37.70028107793512],[-119.27242244004488,37.70027974931094],[-119.27242097026732,37.700278460499696],[-119.27241944499816,37.70027721305897],[-119.27241786608066,37.700276008496296],[-119.27241623542305,37.700274848267426],[-119.27241455499595,37.700273733774445],[-119.27241282683016,37.70027266636429],[-119.2724110530142,37.70027164732692],[-119.2724092356918,37.70027067789385],[-119.27240737705917,37.70026975923665],[-119.27240547936249,37.70026889246552],[-119.27240354489514,37.700268078628014],[-119.272401575995,37.70026731870759],[-119.27239957504146,37.70026661362267],[-119.27239754445269,37.700265964225316],[-119.27239548668274,37.70026537130038],[-119.27239340421838,37.700264835564404],[-119.27239129957631,37.70026435766479],[-119.27238917530005,37.700263938179155],[-119.27238703395676,37.7002635776144],[-119.27238487813433,37.700263276406275],[-119.27238271043805,37.70026303491882],[-119.27238053348759,37.70026285344385],[-119.27237834991391,37.7002627322007],[-119.27237616235578,37.700262671335885],[-119.27237397345695,37.70026267092294],[-119.27236942494709,37.7002626708915],[-119.27236487911516,37.70026254689344],[-119.27236034131133,37.70026229907469],[-119.27235581687617,37.7002619277269],[-119.27235131113466,37.70026143328714],[-119.27234682938963,37.7002608163373],[-119.27234237691579,37.70026007760351],[-119.27233795895333,37.70025921795519],[-119.27233358070185,37.70025823840407],[-119.27232924731422,37.700257140103005],[-119.27232496389047,37.70025592434463],[-119.27232073547185,37.70025459255976],[-119.27231656703489,37.700253146315845],[-119.2723124634855,37.70025158731497],[-119.27230842965325,37.70024991739197],[-119.2723044702856,37.70024813851221],[-119.27230059004243,37.70024625276927],[-119.27229679349048,37.700244262382554],[-119.27229308509797,37.70024216969457],[-119.27228946922938,37.70023997716822],[-119.27228595014029,37.70023768738401],[-119.27228253197238,37.70023530303675],[-119.27227921874854,37.70023282693268],[-119.2722760143682,37.70023026198597],[-119.2722729226026,37.700227611215325],[-119.2722699470905,37.700224877740524],[-119.27226709133384,37.70022206477863],[-119.27226435869362,37.70021917564029],[-119.27226175238587,37.70021621372575],[-119.27225927547805,37.700213182521],[-119.27225693088523,37.70021008559348],[-119.27225472136679,37.70020692658806],[-119.27225264952314,37.70020370922258],[-119.27225071779264,37.70020043728367],[-119.27224892844879,37.700197114622114],[-119.27224728359748,37.70019374514842],[-119.27224578517453,37.70019033282817],[-119.27224443494345,37.70018688167741],[-119.27224323449332,37.70018339575785],[-119.27224218523695,37.70017987917208],[-119.27224128840923,37.700176336058945],[-119.27224054506561,37.70017277058831],[-119.27223995608092,37.70016918695645],[-119.27223952214834,37.70016558938103],[-119.27223924377853,37.70016198209608],[-119.27223912129911,37.700158369347086],[-119.27223915485419,37.700154755385945],[-119.27223934440426,37.70015114446599],[-119.27223968972622,37.700147540836966],[-119.27224019041358,37.700143948740035],[-119.27224084587714,37.700140372402835],[-119.2722416553454,37.700136816034366],[-119.27224277078972,37.70013272596121],[-119.27224406386809,37.7001286690419],[-119.27224553302858,37.70012465014539],[-119.2722471765079,37.70012067409501],[-119.27224899233362,37.700116745662704],[-119.27225097832635,37.70011286956323],[-119.27225313210265,37.70010905044853],[-119.27225545107748,37.70010529290222],[-119.27225793246778,37.70010160143394],[-119.27226057329536,37.700097980474084],[-119.27226337039082,37.70009443436837],[-119.27226632039711,37.70009096737273],[-119.27226941977378,37.70008758364815],[-119.27227266480102,37.700084287255585],[-119.27227605158424,37.70008108215133],[-119.27227957605872,37.700077972182],[-119.27228323399453,37.70007496108005],[-119.2722870210015,37.70007205245933],[-119.27229093253459,37.70006924981064],[-119.27229496389933,37.70006655649759],[-119.2722991102574,37.70006397575266],[-119.27230336663247,37.700061510673116],[-119.2723077279162,37.70005916421748],[-119.27231218887434,37.70005693920186],[-119.27231674415296,37.700054838296644],[-119.27232138828502,37.70005286402328],[-119.27232611569677,37.70005101875118],[-119.27233092071457,37.700049304695014],[-119.2723357975716,37.700047723911894],[-119.27234074041483,37.700046278299034],[-119.27234574331206,37.7000449695914],[-119.27235080025899,37.70004379935965],[-119.27235590518646,37.70004276900825],[-119.2723610519677,37.70004187977379],[-119.27236623442579,37.7000411327235],[-119.27237144634093,37.70004052875396],[-119.27237668145793,37.70004006859003],[-119.27238193349383,37.70003975278398],[-119.27238719614535,37.700039581714826],[-119.27239246309645,37.7000395555879],[-119.27239772802594,37.70003967443453],[-119.27240298461501,37.70003993811209],[-119.27240822655497,37.700040346304135],[-119.27241344755458,37.70004089852075],[-119.27241864134787,37.7000415940992],[-119.27242380170135,37.70004243220466],[-119.27242892242181,37.7000434118313],[-119.27243399736359,37.70004453180339],[-119.27243902043587,37.70004579077677],[-119.27244398561015,37.7000471872405],[-119.27244888692749,37.70004871951857],[-119.2724537185054,37.70005038577198],[-119.27245847454529,37.70005218400101],[-119.27246314933909,37.70005411204745],[-119.27246773727626,37.700056167597346],[-119.27247223285056,37.70005834818368],[-119.27247663066655,37.700060651189446],[-119.27248092544612,37.70006307385062],[-119.27248511203483,37.70006561325961],[-119.27248918540808,37.700068266368746],[-119.27249278245812,37.70007061049714],[-119.27249647804727,37.70007285577222],[-119.2725002678745,37.70007499958085],[-119.27250414752905,37.70007703942799],[-119.27250811249566,37.70007897293956],[-119.27251215815971,37.700080797865276],[-119.27251627981275,37.70008251208123],[-119.27252047265783,37.700084113592354],[-119.27252473181517,37.700085600534734],[-119.27252905232777,37.70008697117781],[-119.27253342916725,37.70008822392638],[-119.27253785723975,37.70008935732244],[-119.27254233139165,37.70009037004691],[-119.27254684641575,37.700091260921134],[-119.27255139705731,37.70009202890826],[-119.27255597802012,37.70009267311451],[-119.27256070140928,37.70009320468628],[-119.27256544522771,37.70009360526715],[-119.27257020372309,37.70009387437136],[-119.27257497112537,37.7000940116726],[-119.2725797416536,37.70009401700436],[-119.2725845095231,37.70009389036023],[-119.27258926895249,37.70009363189374],[-119.27259401417045,37.70009324191832],[-119.27259873942302,37.7000927209068],[-119.27260343898044,37.70009206949102],[-119.27260810714402,37.70009128846085],[-119.27261273825329,37.70009037876335],[-119.27261732669255,37.7000893415016],[-119.27262186689798,37.700088177933424],[-119.27262635336415,37.70008688946969],[-119.27263078065084,37.700085477672786],[-119.27263514338955,37.70008394425465],[-119.27263943629013,37.7000822910747],[-119.27264365414703,37.70008052013753],[-119.27264779184577,37.70007863359058],[-119.27265184436901,37.70007663372144],[-119.27265580680273,37.70007452295513],[-119.27265967434214,37.70007230385112],[-119.27266344229751,37.70006997910029],[-119.27266710609992,37.70006755152161],[-119.27267066130663,37.700065024058695],[-119.27267410360672,37.700062399776336],[-119.27267742882611,37.70005968185669],[-119.27268063293266,37.7000568735955],[-119.27268371204114,37.70005397839797],[-119.27268666241791,37.70005099977481],[-119.27268948048538,37.70004794133785],[-119.27269216282643,37.70004480679572],[-119.27269470618847,37.7000415999493],[-119.27269710748752,37.70003832468717],[-119.27269936381181,37.700034984980874],[-119.27270147242537,37.70003158488007],[-119.27270343077133,37.70002812850771],[-119.27270523647508,37.70002462005488],[-119.27270688734704,37.700021063775914],[-119.27270838138546,37.70001746398311],[-119.27270971677866,37.70001382504149],[-119.27271089190744,37.70001015136359],[-119.27271190534684,37.70000644740405],[-119.272712755868,37.70000271765422],[-119.27271344243967,37.69999896663675],[-119.2727139642293,37.69999519890006],[-119.2727143206042,37.69999141901285],[-119.27271451113229,37.699987631558514],[-119.27271459676923,37.69998591787232],[-119.27271475630995,37.699984207527024],[-119.27271498956682,37.699982502534205],[-119.2727152962655,37.699980804899084],[-119.27271567604525,37.699979116618266],[-119.27271612845944,37.699977439677326],[-119.27271665297599,37.699975776048575],[-119.27271724897795,37.69997412768855],[-119.2727179157644,37.699972496535935],[-119.27271865255112,37.6999708845091],[-119.27271945847156,37.699969293504],[-119.27272033257789,37.69996772539177],[-119.27272127384205,37.6999661820167],[-119.272722281157,37.699964665193974],[-119.27272335333804,37.6999631767075],[-119.27272448912419,37.699961718307904],[-119.27272568717963,37.699960291710426],[-119.2727269460953,37.69995889859286],[-119.2727282643906,37.6999575405937],[-119.27272964051508,37.69995621931007],[-119.27273107285026,37.699954936295924],[-119.2727325597116,37.699953693060216],[-119.27273409935036,37.69995249106515],[-119.27273568995578,37.69995133172437],[-119.27273732965713,37.69995021640139],[-119.27273901652596,37.69994914640794],[-119.2727407485783,37.699948123002436],[-119.27274252377717,37.69994714738852],[-119.27274434003468,37.69994622071359],[-119.27274619521471,37.699945344067544],[-119.27274808713543,37.6999445184814],[-119.27275001357172,37.69994374492611],[-119.27275197225791,37.699943024311466],[-119.27275396089036,37.69994235748499],[-119.27275597713023,37.69994174523094],[-119.27275801860624,37.699941188269364],[-119.27276008291743,37.69994068725534],[-119.27277444274834,37.699937626027186],[-119.27278892645732,37.69993495857232],[-119.27280351694624,37.69993268803976],[-119.27281819699084,37.69993081710983],[-119.27283294926126,37.69992934799123],[-119.27284775634229,37.699928282418256],[-119.27286260075404,37.69992762164878],[-119.27287746497255,37.699927366462916],[-119.2728923314505,37.699927517161875],[-119.27290718263794,37.69992807356773],[-119.27292200100283,37.6999290350237],[-119.27293676905204,37.69993040039472],[-119.27295146935171,37.69993216806901],[-119.27296608454803,37.699934335959775],[-119.27298059738764,37.699936901507826],[-119.272994990738,37.699939861684484],[-119.27300924760758,37.69994321299527],[-119.27302335116605,37.699946951483895],[-119.27303728476397,37.69995107273707],[-119.27305103195258,37.69995557188959],[-119.27307257885869,37.69996262015625],[-119.27309442067492,37.69996906994465],[-119.2731165310801,37.699974913482265],[-119.27313888342921,37.69998014372706],[-119.27316145078574,37.69998475437615],[-119.273184205954,37.69998873987328],[-119.27320712151199,37.69999209541556],[-119.27323016984442,37.699994816959276],[-119.27325332317598,37.69999690122471],[-119.27327655360479,37.69999834570013],[-119.27329983313608,37.699999148644835],[-119.2733231337159,37.69999930909118],[-119.27334642726494,37.69999882684583],[-119.27336968571235,37.699997702489895],[-119.27339288102957,37.69999593737839],[-119.27341598526417,37.69999353363839],[-119.27343897057345,37.69999049416662],[-119.27346180925805,37.69998682262593],[-119.27348447379529,37.699982523440845],[-119.27350693687241,37.69997760179229],[-119.27352917141943,37.69997206361128],[-119.27355115064177,37.69996591557183],[-119.27357284805255,37.69995916508285],[-119.27359423750455,37.699951820279324],[-119.27361529322168,37.69994389001234],[-119.27363598983005,37.699935383838586],[-119.27365630238853,37.699926312008785],[-119.27366855763992,37.69992083131876],[-119.27368103749549,37.699915680539405],[-119.27369372789298,37.69991086547456],[-119.27370661453284,37.69990639154987],[-119.2737196828945,37.69990226380652],[-119.27373291825253,37.69989848689556],[-119.27374630569341,37.69989506507287],[-119.27375983013224,37.69989200219407],[-119.27377347632977,37.699889301710456],[-119.27378722890951,37.69988696666487],[-119.27380107237515,37.699884999688436],[-119.27381499112799,37.69988340299755],[-119.27382896948447,37.69988217839133],[-119.27384299169385,37.69988132724965],[-119.27385704195603,37.699880850531564],[-119.27387110443927,37.69988074877428],[-119.27388516329805,37.699881022092406],[-119.27394447130817,37.699883750919746],[-119.27400363268652,37.69988804204858],[-119.27406258226559,37.69989389075212],[-119.2741212551111,37.699901290587874],[-119.27417958659353,37.6999102334048],[-119.27423751245941,37.69992070935215],[-119.27429496890188,37.69993270689045],[-119.27432176210243,37.69993829753953],[-119.27434877623486,37.69994317097061],[-119.27437598089763,37.699947321699135],[-119.27440334547482,37.699950745053926],[-119.27443083917042,37.69995343718235],[-119.27445843104323,37.69995539505472],[-119.27448609004146,37.699956616467595],[-119.27451378503784,37.69995710004646],[-119.27454148486451,37.69995684524709],[-119.27456915834823,37.69995585235622],[-119.2745967743454,37.699954122491235],[-119.27462430177708,37.699951657598945],[-119.2746517096641,37.699948460453314],[-119.27467896716173,37.699944534652374],[-119.27470604359453,37.69993988461423],[-119.2747329084909,37.699934515572],[-119.27475953161728,37.69992843356797],[-119.2747858830122,37.69992164544678],[-119.27481193302005,37.699914158847754],[-119.27483765232441,37.699905982196256],[-119.27486301198105,37.699897124694225],[-119.27489008446557,37.69988767441844],[-119.27491754533365,37.69987896028573],[-119.27494536289032,37.6998709923538],[-119.27497350502901,37.69986377981909],[-119.27500193926848,37.69985733100616],[-119.27503063279042,37.69985165335811],[-119.27505955247722,37.699846753427984],[-119.27508866495037,37.69984263687118],[-119.2751179366088,37.69983930843895],[-119.2751473336677,37.69983677197289],[-119.27517682219761,37.69983503040057],[-119.27520636816341,37.69983408573205],[-119.2752359374638,37.69983393905767],[-119.2752654959705,37.69983459054669],[-119.27529500956767,37.69983603944719],[-119.2753244441913,37.69983828408689],[-119.27535376586857,37.69984132187504],[-119.27538294075696,37.699845149305524],[-119.27541193518336,37.699849761960756],[-119.27544071568296,37.69985515451694],[-119.27546924903783,37.69986132075009],[-119.27549750231525,37.6998682535432],[-119.27552544290573,37.699875944894636],[-119.27555303856067,37.69988438592715],[-119.27558025742955,37.69989356689824],[-119.27560706809672,37.699903477211436],[-119.27563343961756,37.69991410542839],[-119.27565934155437,37.6999254392822],[-119.2756847440113,37.699937465691505],[-119.27570961766898,37.699950170775644],[-119.27573393381837,37.699963539870566],[-119.27575766439381,37.699977557545864],[-119.27576717766638,37.69998358855899],[-119.2757764247146,37.699989875551225],[-119.27578539463384,37.69999641110863],[-119.27579407684637,37.70000318752422],[-119.27580246111361,37.70001019680696],[-119.27581053754838,37.70001743069117],[-119.27581829662648,37.700024880646296],[-119.27582572919798,37.700032537887054],[-119.27583282649792,37.700040393383645],[-119.27583958015676,37.700048437872525],[-119.27584598221011,37.70005666186724],[-119.2758520251083,37.7000650556697],[-119.27585770172513,37.70007360938147],[-119.27586300536629,37.70008231291566],[-119.2758679297774,37.70009115600865],[-119.27587246915118,37.70010012823218],[-119.27587661813443,37.700109219005796],[-119.27588037183435,37.70011841760921],[-119.27588372582422,37.700127713194966],[-119.2758866761487,37.70013709480123],[-119.27588921932848,37.70014655136475],[-119.27589135236431,37.700156071733836],[-119.27589307274069,37.700165644681604],[-119.27589437842869,37.700175258919124],[-119.27589526788844,37.70018490310878],[-119.27589574007081,37.70019456587763],[-119.27589579441889,37.700204235830796],[-119.27589581486754,37.70020762680506],[-119.27589598461635,37.70021101513487],[-119.27589630345753,37.70021439667153],[-119.27589677100069,37.70021776727457],[-119.2758973866734,37.70022112281698],[-119.27589814972181,37.70022445919015],[-119.27589905921168,37.70022777230899],[-119.27590011402938,37.700231058116835],[-119.27590131288343,37.70023431259043],[-119.27590265430597,37.70023753174498],[-119.27590413665446,37.70024071163886],[-119.27590575811399,37.700243848378534],[-119.2759075166992,37.700246938123335],[-119.27590941025684,37.700249977090095],[-119.2759114364684,37.70025296155785],[-119.27591359285303,37.70025588787234],[-119.27591587677034,37.700258752450495],[-119.2759182854239,37.700261551784905],[-119.2759208158645,37.70026428244797],[-119.27592346499387,37.700266941096224],[-119.27592622956827,37.70026952447436],[-119.27592910620281,37.700272029419224],[-119.27593209137522,37.70027445286368],[-119.27593518143044,37.70027679184044],[-119.27593837258489,37.7002790434856],[-119.2759416609313,37.700281205042195],[-119.27594504244331,37.700283273863526],[-119.27594851298056,37.70028524741653],[-119.27595206829365,37.70028712328471],[-119.27595570402934,37.700288899171234],[-119.27595941573597,37.700290572901636],[-119.27596319886887,37.700292142426576],[-119.27596704879583,37.700293605824314],[-119.27597096080298,37.70029496130296],[-119.27597493010029,37.7002962072029],[-119.27597895182771,37.700297341998606],[-119.27598302106095,37.700298364300586],[-119.27598713281749,37.70029927285714],[-119.27599128206285,37.70030006655579],[-119.27600810909807,37.700302794324145],[-119.27602504593689,37.70030505267916],[-119.27604207184375,37.70030683885596],[-119.27605916597403,37.700308150667745],[-119.27607630739958,37.70030898650849],[-119.27609347513435,37.70030934535485],[-119.27611064816004,37.70030922676755],[-119.27612780545195,37.70030863089175],[-119.27614492600458,37.70030755845695],[-119.27616198885745,37.70030601077614],[-119.27617897312066,37.700303989744135],[-119.27619585800066,37.70030149783523],[-119.2762126228254,37.700298538100284],[-119.27622924706998,37.70029511416283],[-119.27624571038154,37.70029123021477],[-119.27626199260426,37.70028689101118],[-119.27627807380406,37.70028210186448],[-119.27629393429297,37.700276868637964],[-119.27630955465321,37.7002711977386],[-119.27632491576108,37.700265096109206],[-119.27633999881022,37.70025857121993],[-119.27635478533469,37.700251631059096],[-119.27636925723172,37.70024428412344],[-119.27638339678361,37.70023653940771],[-119.27639718667967,37.70022840639364],[-119.27641061003719,37.7002198950384],[-119.27642365042233,37.700211015762264],[-119.27643629187008,37.70020177943597],[-119.27644851890389,37.70019219736747],[-119.27645082688569,37.7001903882213],[-119.27645321259004,37.700188643887955],[-119.27645567313569,37.70018696647408],[-119.27645820555095,37.70018535800557],[-119.27646080677737,37.70018382042497],[-119.27646347367333,37.70018235558933],[-119.27646620301796,37.70018096526769],[-119.27646899151499,37.700179651139266],[-119.27647183579661,37.70017841479107],[-119.27647473242776,37.70017725771635],[-119.2764776779101,37.70017618131251],[-119.27648066868622,37.700175186879555],[-119.27648370114412,37.700174275618465],[-119.27648677162144,37.70017344862984],[-119.27648987640983,37.700172706912426],[-119.27649301175958,37.70017205136201],[-119.27649617388408,37.70017148277033],[-119.27649935896429,37.70017100182409],[-119.27650256315354,37.70017060910415],[-119.276505782582,37.70017030508477],[-119.27650901336153,37.700170090133184],[-119.2765122515902,37.70016996450893],[-119.27651549335715,37.70016992836378],[-119.27651873474717,37.70016998174134],[-119.27652197184558,37.7001701245772],[-119.27652520074282,37.70017035669882],[-119.2765284175393,37.70017067782584],[-119.27653161834996,37.700171087570475],[-119.27653479930916,37.70017158543783],[-119.27653795657511,37.70017217082665],[-119.27654108633473,37.7001728430299],[-119.2765441848081,37.700173601235775],[-119.27654724825312,37.70017444452855],[-119.27655027297001,37.70017537188976],[-119.27655325530571,37.70017638219942],[-119.27655619165837,37.70017747423736],[-119.27655907848171,37.70017864668467],[-119.27656191228915,37.70017989812537],[-119.27656468965831,37.70018122704805],[-119.27656740723486,37.700182631847746],[-119.27657006173666,37.70018411082784],[-119.27657264995784,37.700185662202124],[-119.27657516877252,37.700187284096955],[-119.27657761513865,37.70018897455355],[-119.27657998610168,37.70019073153026],[-119.27658227879814,37.700192552905165],[-119.27658449045906,37.70019443647853],[-119.2765866184133,37.70019637997552],[-119.27658866009098,37.700198381048914],[-119.2765906130262,37.70020043728193],[-119.27659247486037,37.70020254619126],[-119.2765942433449,37.70020470522986],[-119.27659591634392,37.70020691179023],[-119.2765974918369,37.70020916320742],[-119.27659896792107,37.70021145676235],[-119.27660034281372,37.70021378968502],[-119.2766016148543,37.70021615915788],[-119.27660278250656,37.700218562319286],[-119.27660384436028,37.70022099626682],[-119.27660479913301,37.700223458060975],[-119.27663585864258,37.70030375588975],[-119.27667026117058,37.70038318877535],[-119.27670796868436,37.70046166887847],[-119.27674893949603,37.70053910941319],[-119.27675096190697,37.70054259581245],[-119.27675313507454,37.700546024465744],[-119.27675545639123,37.7005493912591],[-119.27675792307171,37.70055269215273],[-119.27676053215629,37.70055592318595],[-119.27676328051437,37.70055908048186],[-119.27676616484824,37.70056216025208],[-119.27676918169706,37.70056515880122],[-119.27677232744095,37.70056807253137],[-119.27677559830536,37.700570897946356],[-119.27677899036567,37.70057363165603],[-119.2767824995518,37.7005762703802],[-119.27678612165309,37.70057881095275],[-119.27678985232347,37.70058125032522],[-119.27679368708655,37.70058358557066],[-119.27679762134105,37.70058581388703],[-119.27680165036632,37.70058793260061],[-119.27680576932796,37.700589939169156],[-119.27680997328369,37.70059183118504],[-119.27681425718923,37.700593606378014],[-119.27681861590442,37.70059526261809],[-119.27682304419922,37.70059679791792],[-119.27682753676018,37.70059821043532],[-119.27683208819678,37.70059949847545],[-119.27683669304774,37.700600660492775],[-119.2768413457878,37.700601695093034],[-119.27684604083416,37.70060260103479],[-119.27685077255327,37.70060337723102],[-119.2768555352676,37.70060402275039],[-119.27686032326243,37.700604536818346],[-119.27686513079269,37.70060491881804],[-119.27686995208983,37.700605168291126],[-119.27687478136889,37.70060528493828],[-119.27687961283524,37.70060526861952],[-119.27688444069166,37.70060511935443],[-119.27688925914524,37.70060483732212],[-119.27689406241433,37.70060442286098],[-119.27689884473561,37.70060387646832],[-119.27690360037079,37.70060319879979],[-119.27690832361363,37.70060239066848],[-119.27691300879673,37.70060145304405],[-119.27691765029843,37.700600387051566],[-119.27692224254943,37.700599193970106],[-119.27692678003953,37.70059787523121],[-119.27693125732426,37.70059643241726],[-119.27693566903136,37.700594867259426],[-119.27694000986727,37.70059318163577],[-119.2769442746235,37.70059137756881],[-119.2769484581828,37.700589457223266],[-119.27695255552534,37.70058742290333],[-119.27695656173485,37.70058527704993],[-119.27696047200423,37.70058302223791],[-119.2769642816417,37.70058066117274],[-119.27696798607604,37.70057819668746],[-119.27697158086241,37.700575631739156],[-119.27697506168745,37.70057296940551],[-119.27697842437459,37.70057021288102],[-119.27698166488898,37.70056736547318],[-119.27698477934237,37.7005644305986],[-119.27698776399781,37.70056141177879],[-119.27699061527404,37.700558312635955],[-119.27699332974986,37.700555136888774],[-119.27699590416825,37.70055188834777],[-119.2769983354402,37.7005485709108],[-119.27700062064847,37.700545188558465],[-119.27700275705108,37.70054174534915],[-119.2770177640159,37.70051742372375],[-119.27703368932443,37.7004934736128],[-119.27705051842375,37.70046991690126],[-119.27706823593512,37.700446775114465],[-119.27708682566796,37.700424069398714],[-119.2771201190503,37.70038318973888],[-119.27715158960488,37.700341408455564],[-119.27718119870102,37.700298776840214],[-119.27720890999329,37.70025534722807],[-119.27723468946631,37.700211172933976],[-119.2772585054763,37.700166308186795],[-119.27728032879014,37.70012080806291],[-119.27730013262098,37.700074728418606],[-119.27731789266136,37.70002812582154],[-119.27733358711279,37.699981057481146],[-119.27734719671275,37.69993358117858],[-119.27735870475809,37.699885755195666],[-119.27736809712565,37.69983763824337],[-119.27736977559616,37.69982903321044],[-119.27737183005551,37.69982047981974],[-119.27737425801311,37.69981198843985],[-119.27737705652568,37.6998035693642],[-119.27738022220066,37.69979523279853],[-119.27738375120039,37.69978698884856],[-119.2773876392469,37.69977884750777],[-119.27739188162685,37.699770818645234],[-119.27739647319753,37.69976291199366],[-119.27740140839278,37.69975513713765],[-119.27740668122999,37.69974750350197],[-119.27741228531727,37.69974002034026],[-119.27741821386111,37.699732696723714],[-119.2774244596748,37.6997255415301],[-119.27743101518695,37.69971856343311],[-119.2774378724508,37.69971177089166],[-119.27744502315382,37.69970517213972],[-119.2774524586277,37.69969877517646],[-119.27746016985904,37.69969258775632],[-119.2774681475001,37.69968661737976],[-119.27747638188022,37.699680871284215],[-119.27748486301752,37.69967535643509],[-119.27749358063102,37.699670079517574],[-119.27750252415308,37.69966504692844],[-119.27751168274222,37.69966026476824],[-119.27752104529621,37.69965573883393],[-119.27753060046571,37.69965147461193],[-119.27754033666773,37.69964747727137],[-119.27755024209995,37.69964375165787],[-119.27756030475486,37.69964030228765],[-119.2775705124344,37.69963713334209],[-119.2775808527647,37.699634248662576],[-119.2775913132111,37.699631651745996],[-119.27760188109333,37.699629345740334],[-119.27761254360087,37.69962733344093],[-119.27762328780855,37.69962561728716],[-119.27763410069211,37.69962419935934],[-119.2776449691441,37.69962308137629],[-119.27765587998964,37.69962226469324],[-119.27766682000254,37.69962175030018],[-119.27767777592119,37.699621538820686],[-119.27768641632288,37.699621371225696],[-119.27769504402377,37.69962096311869],[-119.27770364842283,37.69962031500102],[-119.2777122189477,37.6996194276691],[-119.27772074506761,37.699618302213196],[-119.27772921630635,37.69961694001615],[-119.27773762225519,37.69961534275179],[-119.27774595258556,37.69961351238261],[-119.27775419706185,37.69961145115768],[-119.27776234555395,37.69960916160965],[-119.27777038804965,37.699606646551736],[-119.277778314667,37.6996039090742],[-119.27778611566647,37.69960095254067],[-119.27779378146283,37.69959778058388],[-119.277801302637,37.69959439710123],[-119.2778086699476,37.69959080625011],[-119.27781587434234,37.69958701244262],[-119.27782290696906,37.69958302034033],[-119.27782975918667,37.699578834848346],[-119.27783642257583,37.69957446110948],[-119.27784288894911,37.6995699044978],[-119.27791491327666,37.69951910425676],[-119.27798907718119,37.699470286330914],[-119.27806529428604,37.69942350757442],[-119.27814347582388,37.69937882246654],[-119.27822353074016,37.69933628304809],[-119.278305365799,37.69929593886098],[-119.27838888569184,37.69925783689036],[-119.27847399314835,37.6992220215101],[-119.27856058904983,37.69918853443095],[-119.27864857254455,37.6991574146521],[-119.27868709161052,37.69914380566306],[-119.27872501910565,37.69912918527256],[-119.27876231298045,37.699113569690105],[-119.27879893188798,37.69909697622851],[-119.27883483522967,37.699079423284786],[-119.27886998320045,37.69906093031966],[-119.27890433683275,37.69904151783607],[-119.27906973237718,37.69894157015222],[-119.27923118324853,37.69883763031233],[-119.27938853688954,37.69872979654132],[-119.27954164461686,37.698618170743444],[-119.27954814674443,37.698613112589705],[-119.27955442861736,37.69860788165889],[-119.27956048296802,37.698602484002734],[-119.27956630279209,37.698596925865886],[-119.2795718813566,37.69859121367867],[-119.2795772122077,37.69858535404956],[-119.27958228917805,37.69857935375768],[-119.27958710639415,37.69857321974485],[-119.27959165828285,37.69856695910761],[-119.27959593957817,37.69856057908898],[-119.27959994532709,37.69855408707008],[-119.27960367089531,37.69854749056166],[-119.27960711197277,37.698540797195264],[-119.27961026457851,37.69853401471454],[-119.27961312506534,37.698527150966264],[-119.27961569012402,37.698520213891186],[-119.27961795678705,37.69851321151488],[-119.27961992243219,37.69850615193849],[-119.27962158478545,37.698499043329306],[-119.27962294192373,37.6984918939114],[-119.27962399227702,37.698484711956],[-119.27962473463025,37.69847750577194],[-119.27962516812468,37.6984702836962],[-119.27962529225888,37.698463054084044],[-119.27962510688931,37.69845582529946],[-119.27962461223055,37.69844860570555],[-119.27962380885492,37.698441403654684],[-119.27962269769199,37.698434227479],[-119.27962128002734,37.698427085480674],[-119.27961955750116,37.69841998592233],[-119.27961777665244,37.69841262968463],[-119.27961631935636,37.698405228623194],[-119.27961518738138,37.69839779171996],[-119.27961438210116,37.69839032800045],[-119.27961390449295,37.69838284652261],[-119.27961375513621,37.69837535636607],[-119.27961393421216,37.69836786662092],[-119.27961444150337,37.69836038637672],[-119.27961527639404,37.698352924711564],[-119.2796164378709,37.698345490680964],[-119.27961792452425,37.69833809330687],[-119.27961973454977,37.698330741566785],[-119.27962186575074,37.69832344438279],[-119.27962431554064,37.69831621061079],[-119.27962708094627,37.69830904902969],[-119.27963015861145,37.69830196833084],[-119.27963354480106,37.698294977107345],[-119.2796372354055,37.6982880838438],[-119.27964122594578,37.69828129690587],[-119.27964551157885,37.6982746245302],[-119.27965008710363,37.69826807481436],[-119.27965494696717,37.698261655707114],[-119.27966008527144,37.6982553749987],[-119.27966549578059,37.69824924031139],[-119.2796711719283,37.698243259090184],[-119.27967710682599,37.69823743859395],[-119.27968329327093,37.698231785886406],[-119.2796897237553,37.69822630782767],[-119.27969639047495,37.69822101106594],[-119.27970328533914,37.698215902029325],[-119.27971039998026,37.69821098691814],[-119.27971772576389,37.69820627169737],[-119.2797252537995,37.69820176208937],[-119.27973297495102,37.69819746356701],[-119.27974087984803,37.69819338134697],[-119.27974895889719,37.698189520383394],[-119.27975720229375,37.69818588536196],[-119.27976560003351,37.69818248069409],[-119.27977414192503,37.69817931051171],[-119.27978281760184,37.698176378662104],[-119.27979161653518,37.69817368870339],[-119.27980052804666,37.69817124390008],[-119.27980954132134,37.69816904721917],[-119.27981864542073,37.69816710132652],[-119.27982782929611,37.6981654085837],[-119.27983708180199,37.698163971044984],[-119.27997300649292,37.69814664712879],[-119.28010958104002,37.69813292457285],[-119.28012824448072,37.69813154894568],[-119.2801469552281,37.698130667999365],[-119.2801656925208,37.69813028271136],[-119.28018443556786,37.698130393509224],[-119.28020316357205,37.698131000269974],[-119.28022185575284,37.69813210232039],[-119.28024049136933,37.6981336984376],[-119.28025904974348,37.698135786850585],[-119.28027751028294,37.698138365242016],[-119.2802958525039,37.69814143075091],[-119.2803140560538,37.69814497997582],[-119.28033210073397,37.6981490089785],[-119.28034996652204,37.698153513288354],[-119.28036763359408,37.69815848790742],[-119.28038508234665,37.69816392731587],[-119.2804022934186,37.69816982547809],[-119.28040909254251,37.698172151436765],[-119.2804159888172,37.69817428920415],[-119.28042297399523,37.698176236223624],[-119.28043003972292,37.69817799016673],[-119.28043717755014,37.69817954893585],[-119.28044437894063,37.69818091066683],[-119.28045163528205,37.698182073731154],[-119.28045893789638,37.69818303673785],[-119.28046627805021,37.698183798535275],[-119.28047364696533,37.69818435821234],[-119.280481035829,37.69818471509974],[-119.28048843580473,37.698184868770646],[-119.28049583804268,37.69818481904129],[-119.28050323369038,37.69818456597114],[-119.28051061390312,37.698184109862865],[-119.2805179698548,37.6981834512619],[-119.28052529274818,37.698182590955916],[-119.28053257382565,37.698181529973766],[-119.28053980437961,37.69818026958429],[-119.28054697576286,37.69817881129484],[-119.28055407939895,37.69817715684939],[-119.28056110679248,37.69817530822659],[-119.28056804953924,37.6981732676372],[-119.28057489933623,37.698171037521625],[-119.28058164799157,37.698168620546916],[-119.28058828743445,37.69816601960358],[-119.2805948097246,37.69816323780219],[-119.28060120706186,37.698160278469516],[-119.2806074717955,37.698157145144734],[-119.28061359643345,37.69815384157502],[-119.28061957365107,37.69815037171124],[-119.28062539630008,37.69814673970305],[-119.28063105741711,37.69814294989406],[-119.28063655023189,37.69813900681661],[-119.28064186817551,37.69813491518629],[-119.28064700488808,37.69813067989638],[-119.28065195422657,37.698126306011964],[-119.28065671027198,37.69812179876388],[-119.28066126733648,37.69811716354242],[-119.28066561997022,37.69811240589095],[-119.28066976296783,37.698107531499275],[-119.28067369137464,37.69810254619675],[-119.28067740049264,37.69809745594544],[-119.28068088588606,37.698092266832845],[-119.28075213048885,37.6979850066534],[-119.28082677299756,37.697879215522384],[-119.28090476545503,37.6977749613892],[-119.2809100891359,37.69776776663444],[-119.28091509313502,37.697760428446976],[-119.28091977133947,37.6977529557913],[-119.28092411803438,37.69774535779619],[-119.28092812790982,37.69773764374348],[-119.28093179606732,37.69772982305683],[-119.28093511802592,37.6977219052902],[-119.28093808972757,37.69771390011606],[-119.28094070754209,37.69770581731368],[-119.2809429682716,37.69769766675718],[-119.28094486915448,37.69768945840343],[-119.28094640786867,37.69768120227995],[-119.28094758253464,37.69767290847255],[-119.28094839171744,37.69766458711306],[-119.28094883442868,37.697656248367025],[-119.28094891012775,37.697647902421224],[-119.28094861872222,37.697639559471156],[-119.28094796056821,37.69763122970875],[-119.28094693646989,37.697622923309765],[-119.2809455476784,37.69761465042141],[-119.28094379589042,37.697606421149985],[-119.28094168324611,37.6975982455485],[-119.28093921232643,37.69759013360436],[-119.28093638614997,37.69758209522727],[-119.28093320816937,37.69757414023698],[-119.28092968226701,37.69756627835144],[-119.28092581275027,37.6975585191748],[-119.28092160434632,37.6975508721858],[-119.28091706219631,37.697543346726064],[-119.28091219184903,37.69753595198882],[-119.28090699925428,37.697528697007535],[-119.28090149075553,37.69752159064496],[-119.28089567308203,37.697514641582316],[-119.28088955334086,37.69750785830868],[-119.28088313900798,37.69750124911056],[-119.28087643791935,37.69749482206176],[-119.28086945826107,37.69748858501369],[-119.2808622085597,37.69748254558552],[-119.28085469767154,37.69747671115513],[-119.28084693477207,37.697471088849866],[-119.28083892934453,37.69746568553802],[-119.28083069116846,37.697460507820274],[-119.28082223030776,37.69745556202181],[-119.2807977857484,37.697441296011476],[-119.28077395459165,37.697426389120736],[-119.28075076343805,37.69741085798908],[-119.28072823817386,37.69739471995276],[-119.28070640394189,37.697377993025476],[-119.28068528511365,37.69736069587825],[-119.28066490526193,37.69734284781859],[-119.28064528713472,37.69732446876895],[-119.28062645262963,37.697305579244414],[-119.2806084227696,37.69728620032992],[-119.28059121767929,37.69726635365661],[-119.28057485656268,37.69724606137774],[-119.2805593576817,37.697225346144],[-119.28054473833576,37.697204231078054],[-119.28053101484252,37.69718273974896],[-119.28051820251957,37.69716089614571],[-119.28050631566741,37.69713872465045],[-119.28049536755348,37.697116250011355],[-119.28048537039739,37.69709349731493],[-119.28047633535724,37.69707049195801],[-119.28046972488954,37.69705368252337],[-119.28046239559147,37.69703706234118],[-119.28045435601966,37.69702065081362],[-119.28044561555986,37.69700446709924],[-119.28043618441595,37.69698853009065],[-119.28042607359812,37.69697285839245],[-119.28041529491006,37.696957470299516],[-119.28040386093495,37.696942383775614],[-119.28039178502102,37.69692761643247],[-119.28037908126582,37.69691318550918],[-119.28036576449983,37.69689910785214],[-119.28035185026908,37.69688539989528],[-119.2803373548171,37.696872077640975],[-119.28032229506582,37.69685915664131],[-119.28030668859597,37.696846651980024],[-119.28029055362641,37.696834578254716],[-119.28027390899301,37.69682294955997],[-119.28025677412649,37.69681177947085],[-119.28023916902991,37.69680108102702],[-119.28022111425518,37.696790866717585],[-119.28020263087915,37.69678114846648],[-119.280183740479,37.69677193761847],[-119.280164465107,37.6967632449261],[-119.2801448272648,37.696755080536974],[-119.28012484987723,37.696747453981956],[-119.28010455626539,37.6967403741641],[-119.28008397011953,37.69673384934816],[-119.28006311547142,37.696727887151006],[-119.2800420166662,37.69672249453277],[-119.28002069833406,37.696717677788605],[-119.2799991853614,37.69671344254145],[-119.27997750286187,37.69670979373542],[-119.27995567614698,37.696706735629974],[-119.27993324473407,37.69670359536213],[-119.27991096011036,37.696699852962084],[-119.27988884786794,37.69669551272771],[-119.27986693340094,37.696690579643374],[-119.2798452418763,37.69668505937438],[-119.27982379820503,37.69667895826027],[-119.27980262701334,37.69667228330773],[-119.27978175261461,37.69666504218237],[-119.27976119898128,37.69665724320005],[-119.27974098971742,37.69664889531726],[-119.27972114803164,37.69664000812086],[-119.27970169671035,37.69663059181709],[-119.2796826580916,37.69662065721976],[-119.27966405403954,37.69661021573798],[-119.27964590591918,37.69659927936288],[-119.2796282345719,37.69658786065396],[-119.27961106029156,37.69657597272467],[-119.27959440280108,37.6965636292273],[-119.27956461811604,37.69654000353383],[-119.2795358651989,37.696515584133316],[-119.27950817752767,37.69649039945901],[-119.27948158733997,37.69646447883518],[-119.27945612559547,37.696437852443005],[-119.27943182193972,37.69641055128537],[-119.27940870466983,37.696382607150845],[-119.2793868007014,37.69635405257658],[-119.2793661355372,37.69632492081049],[-119.27934673323746,37.696295245772546],[-119.27932861639204,37.69626506201517],[-119.2793118060938,37.69623440468308],[-119.27929632191437,37.696203309472466],[-119.27928218188119,37.69617181258918],[-119.27926940245652,37.69613995070684],[-119.27925799851842,37.696107760923894],[-119.27924798334332,37.69607528072066],[-119.27923936859051,37.69604254791543],[-119.27923216428879,37.69600960062067],[-119.27922637882452,37.69597647719846],[-119.27922201893215,37.69594321621593],[-119.27921908968612,37.69590985640035],[-119.27921759449521,37.695876436594006],[-119.27921753509834,37.69584299570894],[-119.27921890030818,37.695809583327474],[-119.27922167775097,37.695776226269714],[-119.27922586428754,37.695742962213565],[-119.27923145518722,37.69570982873187],[-119.27923844413304,37.69567686324996],[-119.27924682322887,37.695644103003296],[-119.27925658300855,37.69561158499552],[-119.27926771244624,37.69557934595664],[-119.27928019896926,37.69554742230142],[-119.27929402847201,37.69551585008842],[-119.27930918533207,37.69548466497916],[-119.2793256524278,37.69545390219789],[-119.27934341115764,37.695423596491786],[-119.27936244146125,37.695393782091685],[-119.27938272184205,37.69536449267347],[-119.27940422939157,37.69533576132],[-119.27942693981534,37.69530762048375],[-119.27946113162844,37.69526529111489],[-119.27949355868313,37.69522209381004],[-119.27952418612266,37.695178075007185],[-119.27955298102525,37.69513328202738],[-119.2795799124392,37.69508776302378],[-119.27960495141629,37.69504156693002],[-119.27962807104285,37.69499474340747],[-119.27964924646867,37.69494734279194],[-119.27966845493368,37.6948994160395],[-119.27968567579252,37.69485101467172],[-119.27970089053655,37.69480219072032],[-119.27971408281385,37.694752996671156],[-119.27972523844676,37.694703485407835],[-119.27972822935205,37.69469029270095],[-119.2797317983208,37.694677191053934],[-119.27973594099744,37.694664196454895],[-119.2797406523263,37.69465132476134],[-119.27974592655778,37.6946385916808],[-119.27975175725543,37.69462601275157],[-119.27975813730363,37.69461360332394],[-119.2797650589165,37.69460137854123],[-119.27977251364722,37.69458935332151],[-119.27978049239847,37.69457754233925],[-119.27978898543346,37.69456596000756],[-119.27979798238779,37.69455462046045],[-119.2798074722822,37.69454353753565],[-119.27981744353586,37.694532724757785],[-119.27982788398056,37.69452219532175],[-119.27983878087556,37.69451196207671],[-119.27985012092311,37.69450203751034],[-119.27986189028474,37.694492433733686],[-119.279874074598,37.69448316246624],[-119.27988665899419,37.69447423502185],[-119.27989962811638,37.69446566229468],[-119.27991296613816,37.694457454746086],[-119.27992665678293,37.69444962239175],[-119.27994068334388,37.69444217478957],[-119.27995502870424,37.69443512102783],[-119.27996967535823,37.694428469714275],[-119.27998460543242,37.69442222896552],[-119.27999980070754,37.69441640639721],[-119.28001524264074,37.69441100911455],[-119.28003091238809,37.694406043703935],[-119.28003498338549,37.69440475385637],[-119.28003899535922,37.69440335208945],[-119.28004294343813,37.694401840105094],[-119.28004682282862,37.694400219739144],[-119.28005062882048,37.694398492958975],[-119.28005435679266,37.69439666186112],[-119.2800580022188,37.694394728668875],[-119.28006156067276,37.694392695729434],[-119.28006502783407,37.69439056551111],[-119.28006839949303,37.694388340600305],[-119.28007167155592,37.694386023698414],[-119.2800748400499,37.694383617618556],[-119.28007790112802,37.69438112528207],[-119.2800808510736,37.69437854971503],[-119.28008368630496,37.69437589404461],[-119.28008640337967,37.694373161495214],[-119.28008899899885,37.69437035538457],[-119.28009147001096,37.69436747911973],[-119.28009381341585,37.694364536192964],[-119.28009602636823,37.694361530177446],[-119.28009810618131,37.694358464722924],[-119.28010005032984,37.69435534355134],[-119.28010185645336,37.69435217045232],[-119.28010352235894,37.694348949278485],[-119.28010504602395,37.694345683940846],[-119.28010642559845,37.69434237840403],[-119.28010765940743,37.69433903668148],[-119.28010874595287,37.694335662830554],[-119.28010968391554,37.69433226094766],[-119.28011047215666,37.6943288351632],[-119.28011110971917,37.69432538963661],[-119.28011159582903,37.694321928551304],[-119.28011192989601,37.69431845610955],[-119.28011211151457,37.694314976527465],[-119.28011214046415,37.69431149402976],[-119.28011201670967,37.69430801284477],[-119.2801117404014,37.69430453719918],[-119.28011131187485,37.69430107131294],[-119.28011073165031,37.69429761939419],[-119.28011000043232,37.69429418563409],[-119.28010911910867,37.69429077420174],[-119.28010808874946,37.69428738923918],[-119.28010584765123,37.69428003301871],[-119.28010392679151,37.6942726198172],[-119.28010232845037,37.69426515843455],[-119.28010105452506,37.69425765772793],[-119.28010010652774,37.694250126601105],[-119.2800994855836,37.69424257399403],[-119.28009919242966,37.694235008872084],[-119.2800992274138,37.69422744021557],[-119.2800995904944,37.69421987700892],[-119.28010028124037,37.69421232823009],[-119.28010129883164,37.694204802840005],[-119.28010264206019,37.6941973097717],[-119.28010430933138,37.694189857919895],[-119.28010629866601,37.694182456130406],[-119.2801086077025,37.69417511318959],[-119.28011123369983,37.69416783781393],[-119.28011417354065,37.69416063863974],[-119.28011742373516,37.69415352421284],[-119.28012098042507,37.69414650297847],[-119.28012483938826,37.694139583271244],[-119.28012899604394,37.69413277330522],[-119.28013344545775,37.69412608116426],[-119.28013818234797,37.69411951479226],[-119.28014320109153,37.694113081983915],[-119.28014849573083,37.69410679037531],[-119.28015405998079,37.694100647434915],[-119.2801598872363,37.694094660454766],[-119.28016597057997,37.6940888365417],[-119.28017230279052,37.69408318260905],[-119.28017887635121,37.69407770536834],[-119.28018568345878,37.694072411321336],[-119.28019271603286,37.694067306752366],[-119.28019996572529,37.694062397720835],[-119.28020742393029,37.69405769005399],[-119.28021508179452,37.694053189340096],[-119.2802229302277,37.694048900921764],[-119.28023095991324,37.69404482988954],[-119.2802391613195,37.69404098107597],[-119.28024752471093,37.69403735904978],[-119.28025604015973,37.694033968110524],[-119.28026469755761,37.694030812283394],[-119.28027348662779,37.69402789531454],[-119.28028239693715,37.69402522066658],[-119.2802914179087,37.694022791514406],[-119.28030053883406,37.69402061074157],[-119.2803125188537,37.69401774598791],[-119.28032436727294,37.69401455430043],[-119.28033606996652,37.6940110394841],[-119.28034761298302,37.694007205729164],[-119.28035898256135,37.69400305760605],[-119.28037016514718,37.69399860005997],[-119.28038114740909,37.693993838405085],[-119.28039191625453,37.69398877831801],[-119.28040245884539,37.69398342583114],[-119.28041276261328,37.69397778732556],[-119.2804228152745,37.69397186952322],[-119.28043260484478,37.69396567947906],[-119.28044211965346,37.69395922457262],[-119.28045134835746,37.69395251249916],[-119.28046027995478,37.693945551260505],[-119.2804689037977,37.69393834915556],[-119.28047720960527,37.693930914770355],[-119.2804849390095,37.693923498520974],[-119.28049234549002,37.693915877036524],[-119.28049942042291,37.693908059191294],[-119.2805061555704,37.69390005408825],[-119.28051254309032,37.69389187104834],[-119.28051857554526,37.69388351959974],[-119.28052424591135,37.69387500946673],[-119.2805295475862,37.69386635055827],[-119.28053447439682,37.693857552956615],[-119.28053902060664,37.69384862690552],[-119.28054318092234,37.69383958279825],[-119.28054695049984,37.69383043116556],[-119.28055032495014,37.69382118266339],[-119.28055330034421,37.69381184806049],[-119.28055587321774,37.693802438225816],[-119.2805580405751,37.69379296411596],[-119.28055979989281,37.69378343676236],[-119.28056114912256,37.69377386725833],[-119.28056208669344,37.69376426674643],[-119.280562611514,37.69375464640522],[-119.28056272297327,37.69374501743637],[-119.28056242094162,37.69373539105157],[-119.28056170577092,37.6937257784595],[-119.28056057829406,37.693716190852804],[-119.28055903982396,37.69370663939503],[-119.28055709215214,37.69369713520756],[-119.2805547375466,37.693687689356835],[-119.28055197874909,37.6936783128413],[-119.28054881897204,37.69366901657869],[-119.28054526189472,37.69365981139326],[-119.28054131165905,37.693650708003254],[-119.2805369728647,37.69364171700836],[-119.28053225056374,37.69363284887743],[-119.28053022687578,37.69362904557461],[-119.28052837038021,37.69362518879495],[-119.28052668331017,37.69362128317774],[-119.28052516769498,37.693617333421],[-119.28052382535772,37.693613344275846],[-119.2805226579131,37.69360932054078],[-119.28052166676531,37.693605267055894],[-119.28052085310665,37.693601188697095],[-119.28052021791576,37.69359709037021],[-119.28051976195671,37.693592977005025],[-119.28051948577794,37.69358885354953],[-119.28051938971161,37.69358472496369],[-119.28051947387328,37.69358059621379],[-119.28051973816166,37.69357647226625],[-119.28052018225881,37.69357235808171],[-119.28052080563052,37.693568258609055],[-119.2805216075269,37.69356417877948],[-119.28052258698331,37.6935601235006],[-119.28052374282159,37.693556097650436],[-119.28052507365135,37.6935521060716],[-119.2805265778717,37.69354815356556],[-119.28052825367324,37.69354424488667],[-119.28053009904015,37.69354038473667],[-119.2805321117526,37.69353657775888],[-119.28053428938952,37.693532828532646],[-119.28053662933146,37.69352914156785],[-119.28053912876369,37.69352552129949],[-119.28054178467967,37.69352197208233],[-119.2805445938846,37.69351849818569],[-119.28054755299931,37.693515103788265],[-119.28055065846435,37.69351179297307],[-119.28055390654411,37.69350856972271],[-119.2805572933316,37.69350543791433],[-119.2805608147528,37.69350240131518],[-119.2805644665719,37.693499463577865],[-119.28056824439614,37.6934966282362],[-119.28057214368121,37.693493898700744],[-119.28058392829664,37.69348564899186],[-119.28059534533065,37.69347707910777],[-119.28060638101486,37.693468199383474],[-119.28061702204069,37.693459020527605],[-119.28062725557555,37.69344955360959],[-119.28063706927831,37.693439810046186],[-119.28064645131414,37.693429801587854],[-119.28065539036879,37.693419540304426],[-119.28066387566228,37.69340903857062],[-119.2806718969618,37.69339830905122],[-119.28067944459421,37.693387364685584],[-119.28068650945751,37.69337621867226],[-119.28069308303195,37.6933648844529],[-119.28069915739026,37.69335337569618],[-119.28070472520727,37.6933417062812],[-119.28070977976861,37.69332989028082],[-119.28071431497894,37.693317941944706],[-119.28071832536922,37.69330587568206],[-119.28072180610333,37.69329370604431],[-119.28072475298393,37.69328144770755],[-119.28072716245745,37.69326911545481],[-119.28072903161842,37.693256724158296],[-119.28073035821302,37.69324428876137],[-119.28073114064169,37.693231824260586],[-119.28073137796112,37.693219345687574],[-119.28073106988536,37.69320686809096],[-119.28073021678627,37.69319440651817],[-119.2807288196929,37.69318197599728],[-119.28072688029035,37.69316959151891],[-119.28072440091769,37.69315726801819],[-119.28072138456525,37.69314502035667],[-119.28071783487081,37.69313286330443],[-119.28071375611546,37.6931208115223],[-119.28070915321817,37.693108879544134],[-119.28070403173007,37.69309708175932],[-119.2807012880594,37.69309075861154],[-119.2806988245831,37.69308436302815],[-119.28069664431996,37.69307790284659],[-119.2806947499417,37.69307138598347],[-119.28069314376967,37.69306482042489],[-119.28069182777215,37.693058214216556],[-119.28069080356168,37.69305157545404],[-119.28069007239331,37.693044912272775],[-119.28068963516299,37.69303823283814],[-119.28068949240644,37.693031545335444],[-119.28068964429849,37.69302485795978],[-119.28069009065295,37.69301817890621],[-119.28069083092275,37.69301151635955],[-119.28069186420068,37.69300487848437],[-119.28069318922039,37.69299827341498],[-119.28069480435809,37.69299170924555],[-119.28069670763445,37.69298519402008],[-119.28069889671704,37.69297873572262],[-119.28070136892316,37.69297234226745],[-119.28070412122322,37.692966021489354],[-119.28070715024437,37.692959781134086],[-119.28071045227465,37.692953628848855],[-119.28071402326752,37.69294757217291],[-119.28071785884691,37.69294161852832],[-119.28072195431247,37.692935775211],[-119.28072630464538,37.69293004938151],[-119.28073090451453,37.69292444805655],[-119.28073574828298,37.692918978100195],[-119.28074083001496,37.692913646215565],[-119.28074614348303,37.69290845893653],[-119.28075168217585,37.69290342261978],[-119.280757439306,37.692898543437046],[-119.28079656823971,37.69286550023575],[-119.28083437110885,37.69283149625409],[-119.28087081057484,37.69279656508006],[-119.28090585064592,37.692760741217484],[-119.28093945671286,37.69272406005187],[-119.28097159558291,37.69268655781555],[-119.2810022355128,37.69264827155176],[-119.28117154779878,37.692397184507456],[-119.28126093205677,37.69228187231494],[-119.28135451952177,37.69216868552491],[-119.28137726316282,37.6921305480038],[-119.28139835413107,37.69209181538012],[-119.28141776781226,37.69205253286158],[-119.28143548154988,37.692012746297806],[-119.28145147467168,37.69197250212658],[-119.28146572851377,37.691931847319744],[-119.28147822644236,37.69189082932831],[-119.2815833100332,37.69161901195062],[-119.2815895427165,37.69160938738714],[-119.28159618455788,37.69159993721268],[-119.2816032278403,37.691590672407],[-119.28161066438025,37.69158160373454],[-119.28161848553742,37.69157274173183],[-119.28162668222456,37.69156409669528],[-119.28163524491814,37.6915556786692],[-119.28164416366941,37.69154749743414],[-119.2816534281159,37.69153956249554],[-119.28166302749358,37.69153188307271],[-119.28167295064918,37.691524468088026],[-119.28168318605331,37.691517326156635],[-119.28169372181384,37.69151046557645],[-119.28170454568964,37.69150389431851],[-119.28171564510481,37.691497620017614],[-119.2817270071634,37.691491649963666],[-119.2817386186642,37.69148599109297],[-119.28175046611635,37.691480649980306],[-119.28176253575475,37.69147563283134],[-119.28177481355617,37.69147094547521],[-119.28178728525553,37.69146659335797],[-119.28179993636255,37.69146258153616],[-119.28181275217838,37.69145891467088],[-119.28182571781295,37.69145559702255],[-119.28183881820205,37.69145263244579],[-119.28185203812488,37.691450024384984],[-119.28186536222185,37.69144777587032],[-119.2818787750123,37.69144588951426],[-119.28189226091249,37.691444367508474],[-119.28190580425382,37.691443211621284],[-119.28191938930088,37.69144242319569],[-119.2819330002698,37.691442003147735],[-119.28194662134669,37.69144195196541],[-119.28196023670584,37.69144226970821],[-119.28197383052817,37.69144295600699],[-119.28198738701967,37.691444010064316],[-119.28204535669416,37.69144849721163],[-119.28210348829883,37.691451371715345],[-119.28216171081164,37.691452630063516],[-119.28221995309931,37.691452270718834],[-119.28227814400451,37.69145029412028],[-119.28233621243267,37.69144670268275],[-119.28239408743883,37.69144150079407],[-119.28245169831445,37.691434694809665],[-119.28250897467369,37.69142629304469],[-119.28256584653951,37.69141630576396],[-119.28262224442908,37.69140474516938],[-119.28267809943881,37.69139162538509],[-119.28273334332842,37.69137696244005],[-119.28278790860439,37.6913607742487],[-119.28284172860243,37.69134308058874],[-119.28289473756891,37.69132390307733],[-119.28294687074123,37.691303265144406],[-119.2829980644269,37.69128119200414],[-119.28304825608144,37.69125771062416],[-119.28309738438479,37.691232849692554],[-119.28314538931613,37.69120663958282],[-119.28319221222733,37.6911791123168],[-119.28323779591459,37.69115030152548],[-119.28328208468821,37.69112024240795],[-119.28332502444084,37.69108897168838],[-119.28336656271337,37.691056527571135],[-119.28340664875921,37.6910229496941],[-119.28344523360613,37.690988279080294],[-119.28348227011615,37.69095255808764],[-119.28351771304318,37.69091583035732],[-119.2835515190882,37.69087814076039],[-119.28358364695221,37.69083953534296],[-119.28358677441489,37.69083095311246],[-119.28359027692264,37.6908224628554],[-119.28359415020711,37.69081407491807],[-119.28359838954822,37.690805799522124],[-119.2836029897797,37.69079764675202],[-119.28360794529556,37.69078962654283],[-119.28361325005683,37.69078174866803],[-119.28361889759898,37.690774022727695],[-119.2836248810398,37.6907664581367],[-119.28363119308764,37.69075906411334],[-119.28363782605055,37.690751849668],[-119.28364477184545,37.69074482359227],[-119.28365202200806,37.69073799444819],[-119.28365956770318,37.69073137055777],[-119.28366739973553,37.69072495999298],[-119.28367550856083,37.69071877056572],[-119.28368388429763,37.69071280981849],[-119.28369251673905,37.6907070850151],[-119.28370139536555,37.690701603131764],[-119.28371050935756,37.690696370848805],[-119.28371984760862,37.69069139454228],[-119.28372939873911,37.69068668027634],[-119.2837391511099,37.690682233795805],[-119.2837490928367,37.690678060519176],[-119.28375921180442,37.690674165532016],[-119.2837694956821,37.69067055358081],[-119.28377993193766,37.69066722906703],[-119.28379050785348,37.69066419604199],[-119.28380121054168,37.690661458201724],[-119.28381202695992,37.6906590188826],[-119.28382294392729,37.690656881057116],[-119.28383394814036,37.6906550473305],[-119.28384502618927,37.69065351993729],[-119.28385616457439,37.690652300738805],[-119.28386734972236,37.690651391220726],[-119.283878568003,37.690650792491425],[-119.28388980574563,37.69065050528053],[-119.28390104925597,37.69065052993798],[-119.2839122848326,37.69065086643377],[-119.28392349878388,37.69065151435784],[-119.2839346774444,37.69065247292062],[-119.28394580719184,37.690653740954],[-119.28395687446347,37.69065531691277],[-119.28396786577268,37.69065719887643],[-119.2839787677254,37.690659384551644],[-119.28398956703653,37.69066187127493],[-119.28400025054593,37.690664656015976],[-119.28401236758131,37.69066782016145],[-119.28402461237229,37.69067065677983],[-119.28403697090371,37.690673162624364],[-119.28404942903028,37.69067533482692],[-119.28406197249265,37.69067717090123],[-119.28407458693383,37.690678668745775],[-119.28408725791552,37.69067982664612],[-119.2840999709348,37.690680643276956],[-119.28411271144056,37.690681117703605],[-119.28412546485026,37.69068124938305],[-119.28413821656657,37.69068103816456],[-119.28415095199415,37.69068048428987],[-119.28416365655623,37.69067958839296],[-119.2841763157114,37.69067835149927],[-119.28418891497024,37.69067677502451],[-119.28420143991188,37.69067486077305],[-119.2842138762005,37.69067261093596],[-119.28422620960177,37.69067002808834],[-119.28423842599912,37.690667115186486],[-119.28429215204753,37.69065427955094],[-119.28434637824489,37.690642849001726],[-119.28440104641798,37.69063283580136],[-119.28445609791947,37.690624250691826],[-119.28451147369086,37.69061710288312],[-119.28456711432585,37.69061140004328],[-119.28462296013403,37.69060714829024],[-119.28467895120497,37.69060435218521],[-119.28473502747231,37.6906030147278],[-119.2847911287785,37.690603137352824],[-119.28521111961717,37.69061347443186],[-119.28563068504324,37.69063170735407],[-119.285648575833,37.69063240816459],[-119.28566648637602,37.69063261924057],[-119.28568439544962,37.6906323403318],[-119.28570228183293,37.690631571768854],[-119.28572012433193,37.69063031446236],[-119.28573790180458,37.69062856990218],[-119.28575559318594,37.690626340155475],[-119.28577317751305,37.69062362786431],[-119.28579063394984,37.69062043624255],[-119.28580794181173,37.69061676907202],[-119.28582508059029,37.69061263069805],[-119.28584202997735,37.690608026024314],[-119.28585876988923,37.69060296050695],[-119.28587528049049,37.69059744014825],[-119.28589154221734,37.6905914714894],[-119.28590753580096,37.6905850616028],[-119.28592324229028,37.69057821808368],[-119.28593864307437,37.69057094904108],[-119.28595371990464,37.69056326308823],[-119.28596845491629,37.690555169332384],[-119.28598283064962,37.69054667736402],[-119.28599683007063,37.69053779724543],[-119.28601043659128,37.69052853949888],[-119.28602363408908,37.69051891509401],[-119.2860364069262,37.69050893543502],[-119.28604873996804,37.690498612346964],[-119.28606061860113,37.69048795806187],[-119.28607202875044,37.69047698520418],[-119.28609664641982,37.69045330495093],[-119.28612226784809,37.690430306923126],[-119.286148863116,37.69040801797568],[-119.28617640116725,37.69038646413555],[-119.28620484984475,37.690365670571246],[-119.28623417592814,37.690345661563505],[-119.28626434517257,37.690326460476875],[-119.28629532234875,37.690308089732504],[-119.286327071284,37.690290570781926],[-119.28635955490459,37.69027392408204],[-119.28639273527897,37.69025816907116],[-119.28642657366201,37.69024332414641],[-119.28646103054038,37.69022940664217],[-119.28649606567853,37.69021643280984],[-119.28653163816575,37.69020441779895],[-119.28656770646404,37.69019337563939],[-119.28660422845633,37.69018331922499],[-119.28664116149598,37.69017426029864],[-119.28674891408299,37.69015091005985],[-119.28685755525645,37.690130323607086],[-119.28696697279469,37.690112522205155],[-119.28707705367428,37.690097524242],[-119.28718768418693,37.69008534520983],[-119.28729875005673,37.69007599768894],[-119.28741013655821,37.6900694913349],[-119.28752172863486,37.6900658328684],[-119.28763341101781,37.690065026068446],[-119.28833539656573,37.690072251111516],[-119.28865516513767,37.69008127929261],[-119.28897438078452,37.690098733406934],[-119.28898219997738,37.690099156922145],[-119.28899003289325,37.69009936602277],[-119.2889978702244,37.690099360460295],[-119.28900570265778,37.690099140241365],[-119.28901352088619,37.69009870562763],[-119.28902131561927,37.690098057135565],[-119.28902907759463,37.690097195535785],[-119.28903679758884,37.69009612185208],[-119.28904446642824,37.690094837360284],[-119.28905207500003,37.69009334358678],[-119.28905961426305,37.69009164230664],[-119.28906707525847,37.69008973554141],[-119.28907444912046,37.69008762555691],[-119.28908172708672,37.690085314860426],[-119.28908890050896,37.6900828061977],[-119.28909596086307,37.69008010254977],[-119.28910289975933,37.690077207129384],[-119.28910970895231,37.69007412337707],[-119.28911638035073,37.690070854957305],[-119.28912290602707,37.690067405753844],[-119.28912927822698,37.690063779865376],[-119.28913548937847,37.69005998160047],[-119.28914153210087,37.69005601547261],[-119.28914739921376,37.69005188619465],[-119.28915308374532,37.6900475986734],[-119.28915857894073,37.69004315800369],[-119.28916387827016,37.69003856946225],[-119.28916897543648,37.69003383850162],[-119.28917386438287,37.69002897074355],[-119.28917853929991,37.69002397197233],[-119.28918299463245,37.69001884812794],[-119.28918722508635,37.69001360529896],[-119.28919122563467,37.69000824971539],[-119.28919499152366,37.69000278774119],[-119.2891985182784,37.68999722586675],[-119.28920180170817,37.68999157070115],[-119.28932405180672,37.68976105032088],[-119.28943683735486,37.68952750293656],[-119.28954003997613,37.6892911738581],[-119.28963355136293,37.689052311314896],[-119.28971727338978,37.68881116619494],[-119.28979111821604,37.6885679917813],[-119.28996631676829,37.68790592442405],[-119.29011926620583,37.68724038418007],[-119.29024985863951,37.68657184311929],[-119.29035974646644,37.686025363138036],[-119.29049399963336,37.685482331514116],[-119.29065244803422,37.684943434148494],[-119.29066688475874,37.68490105452673],[-119.29068313307134,37.68485909117271],[-119.29070117403685,37.68481759298093],[-119.29072098663153,37.68477660830387],[-119.29074254776744,37.68473618489557],[-119.2907658323195,37.68469636985599],[-119.29079081315456,37.68465720957624],[-119.29081746116331,37.684618749684375],[-119.29084574529395,37.684581034992405],[-119.29087563258854,37.68454410944388],[-119.29090708822129,37.68450801606293],[-119.29094007553928,37.68447279690393],[-119.29097455610507,37.684438493002645],[-119.29101048974151,37.684405144328295],[-119.29104783457859,37.68437278973719],[-119.2910865471022,37.68434146692718],[-119.29112658220487,37.68431121239403],[-119.29119526749712,37.684259374386286],[-119.29126177428189,37.68420577222625],[-119.29132603085958,37.68415046370515],[-119.29138796795704,37.68409350845383],[-119.29144751880231,37.68403496787844],[-119.2915046191967,37.68397490509413],[-119.2915592075838,37.68391338485715],[-119.29160638149283,37.683860337788225],[-119.29165585671552,37.68380863181402],[-119.29170757293768,37.683758329963325],[-119.29176146711372,37.683709493553174],[-119.29181747354349,37.683662182114176],[-119.29187552395256,37.683616453317875],[-119.29193554757526,37.683572362906574],[-119.291997471241,37.68352996462524],[-119.2920612194635,37.68348931015618],[-119.29212671453286,37.6834504490559],[-119.29219387661009,37.68341342869477],[-119.2922626238246,37.683378294199336],[-119.29233287237396,37.68334508839726],[-119.29240453662598,37.68331385176513],[-119.29250070651618,37.683272009416235],[-119.29259506498836,37.68322763867255],[-119.29268750683757,37.683180789006734],[-119.29277792899633,37.683131512655315],[-119.29286623064979,37.68307986456045],[-119.292952313348,37.68302590230865],[-119.29303608111564,37.68296968606648],[-119.29311744055923,37.682911278513544],[-119.29319630097103,37.68285074477256],[-119.29327257443039,37.682788152336684],[-119.2933461759016,37.68272357099434],[-119.29341702332879,37.682657072751255],[-119.29348503772738,37.68258873175029],[-119.29355014327216,37.68251862418869],[-119.29361226738172,37.682446828233104],[-119.29367134079948,37.68237342393246],[-119.2937272976708,37.68229849312866],[-119.29378007561635,37.68222211936533],[-119.2938050222131,37.68218289933839],[-119.29382822758933,37.68214300988612],[-119.29384966335367,37.68210249981728],[-119.29386930328027,37.68206141869996],[-119.2938871233408,37.68201981680092],[-119.29390310173375,37.68197774502401],[-119.29391721891122,37.68193525484796],[-119.29392945760276,37.6818923982634],[-119.29393980283649,37.68184922770913],[-119.29394824195744,37.681805796008106],[-119.29395476464298,37.68176215630265],[-119.2939593629154,37.68171836198958],[-119.2939620311518,37.68167446665474],[-119.2939627660908,37.68163052400753],[-119.29396156683651,37.68158658781511],[-119.29395843485982,37.68154271183665],[-119.2939533739963,37.68149894975759],[-119.29394639044165,37.681455355123845],[-119.2939374927441,37.68141198127644],[-119.29392669179394,37.68136888128608],[-119.29391400081006,37.68132610788837],[-119.29389943532392,37.681283713419134],[-119.29388301316047,37.681241749750555],[-119.29379585322805,37.68104249855353],[-119.29370093622595,37.680845498867946],[-119.29359835410052,37.680650941400934],[-119.29348820621605,37.680459014493955],[-119.29343182001321,37.68036857652662],[-119.29337169482294,37.6802796729522],[-119.29330789667284,37.68019240138225],[-119.29324049562247,37.680106857636126],[-119.29316956568645,37.68002313563572],[-119.29309518475311,37.67994132730259],[-119.2930174344989,37.67986152245679],[-119.29293640029883,37.67978380871842],[-119.29285217113254,37.67970827141148],[-119.29276483948662,37.67963499347011],[-119.29267450125323,37.679564055347605],[-119.2925812556245,37.679495534928094],[-119.29239622611318,37.67935952667524],[-119.29221702177446,37.67921867773035],[-119.29204384295994,37.67907314558957],[-119.29187688328008,37.67892309298486],[-119.29171632938791,37.678768687701904],[-119.29156236077014,37.67861010239242],[-119.2914151495468,37.67844751438098],[-119.2912748602787,37.67828110546671],[-119.29124620924703,37.67824449158275],[-119.29121916139295,37.67820711533366],[-119.29119374879058,37.6781690210446],[-119.29117000157463,37.67813025389227],[-119.29114794790469,37.678090859851224],[-119.29112761393179,37.67805088563937],[-119.29110902376743,37.67801037866262],[-119.29109219945502,37.677969386958544],[-119.29107716094371,37.677927959139595],[-119.29106392606477,37.67788614433519],[-119.29105251051043,37.677843992133724],[-119.29104292781531,37.677801552523555],[-119.29103518934039,37.6777588758338],[-119.2910293042595,37.677716012674665],[-119.29102527954859,37.67767301387738],[-119.29102311997727,37.677629930433966],[-119.29102282810332,37.67758681343673],[-119.29102440426963,37.67754371401765],[-119.29102784660378,37.677500683287825],[-119.29103315102034,37.67745777227677],[-119.2910403112257,37.677415031871945],[-119.29104931872543,37.67737251275843],[-119.29106016283465,37.67733026535876],[-119.29109195193844,37.67722476251582],[-119.29112812634476,37.677120155775725],[-119.29116864622657,37.6770165602546],[-119.29121346697532,37.676914089955154],[-119.29126253925008,37.67681285764149],[-119.29131580903199,37.67671297471487],[-119.29137321768373,37.67661455109114],[-119.29143470201404,37.67651769507992],[-119.29150019434752,37.67642251326524],[-119.29156962259896,37.67632911038847],[-119.2917816449607,37.67604559177907],[-119.29198364320074,37.67575748686228],[-119.29217546050964,37.67546501945815],[-119.29227052095688,37.67530851982123],[-119.29235890730334,37.675149568267685],[-119.29244051964355,37.674988344542044],[-119.29251526573402,37.67482503095708],[-119.29258306109737,37.67465981218763],[-119.29275339622875,37.67423783709046],[-119.29293643438287,37.673819236064254],[-119.29301553805202,37.67363544007695],[-119.29308678518687,37.67344962502922],[-119.29315009452041,37.67326200302248],[-119.29320539384804,37.67307278821912],[-119.29325262010977,37.67288219659807],[-119.29329171946185,37.67269044570809],[-119.29332264733809,37.672497754419595],[-119.29334536850031,37.67230434267465],[-119.2933540778704,37.67223008643297],[-119.29336591050406,37.67215610363782],[-119.29338085312123,37.67208247726378],[-119.2933988889541,37.67200928988547],[-119.29341999776572,37.67193662358498],[-119.29344415587299,37.671864559859614],[-119.29347133617317,37.6717931795308],[-119.29350150817427,37.67172256265318],[-119.29353463802933,37.671652788425],[-119.29357068857445,37.67158393509922],[-119.29360961937036,37.67151607989575],[-119.29365138674798,37.671449298914936],[-119.29369594385734,37.67138366705217],[-119.29374324072018,37.67131925791385],[-119.29379322428592,37.671256143734915],[-119.29384583849134,37.6711943952979],[-119.29390102432338,37.67113408185335],[-119.29395871988534,37.67107527104244],[-119.29401886046637,37.671018028820946],[-119.29408137861404,37.6709624193853],[-119.29414620420987,37.670908505100705],[-119.2941735464656,37.670894857136346],[-119.29420028914075,37.670880478128744],[-119.294226401313,37.6708653847044],[-119.29425185278913,37.670849594315925],[-119.29427661413995,37.67083312522177],[-119.29430065673428,37.670815996465215],[-119.29432395277213,37.67079822785224],[-119.29434647531679,37.670779839928755],[-119.29436819832605,37.67076085395669],[-119.29438909668218,37.67074129188952],[-119.29440914622116,37.670721176346866],[-119.29442832376037,37.67070053058821],[-119.29444660712566,37.67067937848625],[-119.29446397517681,37.670657744499],[-119.29448040783208,37.670635653641796],[-119.29449588609125,37.670613131458104],[-119.2945103920579,37.670590203990166],[-119.29452390895972,37.670566897748834],[-119.29453642116819,37.670543239682914],[-119.29454791421658,37.67051925714792],[-119.29455837481656,37.67049497787463],[-119.29457031747863,37.67046727606476],[-119.29458345134543,37.67043991703585],[-119.29459776088405,37.670412933141705],[-119.29461322917123,37.67038635629244],[-119.29462983791362,37.67036021791681],[-119.29464756746918,37.670334548924984],[-119.29466639687054,37.670309379672055],[-119.29468630384973,37.67028473992209],[-119.29470726486463,37.67026065881297],[-119.29472925512663,37.670237164821934],[-119.29475224863016,37.67021428573189],[-119.29477621818324,37.67019204859854],[-119.29480113543981,37.670170479718486],[-119.29482697093317,37.67014960459797],[-119.29485402230866,37.67012775737679],[-119.29488012609858,37.670105193554505],[-119.29490525227784,37.67008193908526],[-119.29492937194586,37.67005802071759],[-119.2949524573599,37.67003346596367],[-119.29497448196689,37.670008303067675],[-119.29499542043415,37.66998256097322],[-119.29501524867835,37.669956269290125],[-119.29503394389327,37.66992945826041],[-119.29505148457599,37.669902158723346],[-119.29506785055172,37.66987440208012],[-119.29508302299689,37.669846220257675],[-119.29509698446087,37.66981764567193],[-119.295109718886,37.66978871119065],[-119.29512121162603,37.66975945009536],[-119.29513144946309,37.66972989604341],[-119.29514042062266,37.66970008302895],[-119.29514811478735,37.669670045344],[-119.29515452310861,37.669639817538986],[-119.29515963821694,37.669609434382956],[-119.29516345423038,37.669578930823604],[-119.29516596676118,37.66954834194707],[-119.29516717292098,37.66951770293759],[-119.2951670713241,37.66948704903704],[-119.29516566208895,37.66945641550432],[-119.29516294683809,37.66942583757495],[-119.29515892869627,37.66939535042038],[-119.29515361228685,37.66936498910762],[-119.2951470037265,37.66933478855894],[-119.29514338502106,37.66933212828537],[-119.29513988323467,37.669329370915676],[-119.29513650248813,37.669326519694714],[-119.29513324675993,37.66932357797776],[-119.29513011988128,37.66932054922661],[-119.29512712553189,37.669317437005446],[-119.29512426723547,37.669314244976725],[-119.29512154835554,37.669310976896746],[-119.29511897209173,37.66930763661139],[-119.29511654147568,37.66930422805145],[-119.2951142593677,37.669300755228086],[-119.29511212845331,37.669297222228074],[-119.29511015124017,37.669293633209],[-119.29510833005497,37.669289992394376],[-119.29510666704086,37.66928630406867],[-119.29510516415483,37.6692825725723],[-119.29510382316545,37.66927880229638],[-119.2951026456507,37.669274997677746],[-119.29510163299628,37.66927116319363],[-119.29510078639385,37.66926730335643],[-119.29510010683964,37.66926342270828],[-119.2950995951333,37.66925952581594],[-119.295099251877,37.66925561726519],[-119.29509907747462,37.66925170165557],[-119.2950990721314,37.669247783594905],[-119.2950992358536,37.66924386769392],[-119.29509956844849,37.66923995856079],[-119.29510006952471,37.66923606079572],[-119.29510073849254,37.66923217898555],[-119.29510157456468,37.669228317698334],[-119.29510257675732,37.669224481477976],[-119.29510374389099,37.669220674838876],[-119.29510507459224,37.66921690226064],[-119.29510656729508,37.66921316818277],[-119.29510822024291,37.66920947699947],[-119.29511003149054,37.66920583305447],[-119.29511199890646,37.66920224063591],[-119.29511412017551,37.669198703971276],[-119.29511639280133,37.66919522722247],[-119.29518575315001,37.669090797777756],[-119.29525231532408,37.66898522401585],[-119.29528721170082,37.66893081305115],[-119.29532447818359,37.668877404416335],[-119.29536406926724,37.668825063320185],[-119.29540593660866,37.66877385366785],[-119.29545002908596,37.66872383798303],[-119.29549629286078,37.66867507733145],[-119.29554467144412,37.66862763124647],[-119.29559510576527,37.66858155765632],[-119.29564753424395,37.668536912813416],[-119.29570189286552,37.66849375122569],[-119.29575811525916,37.66845212559001],[-119.29581613277882,37.66841208672792],[-119.29587587458713,37.66837368352353],[-119.29589816137786,37.66836567662656],[-119.29592008644977,37.66835706179113],[-119.29594162356766,37.66834784932567],[-119.2959627469606,37.66833805025375],[-119.29598343135271,37.66832767630083],[-119.29600365199343,37.668316739880204],[-119.29602338468723,37.668305254078355],[-119.29604260582242,37.668293232639016],[-119.29606129239947,37.668280689946876],[-119.29607942205854,37.66826764101038],[-119.29609697310622,37.668254101443694],[-119.2961229795647,37.66823260739017],[-119.29614804285393,37.66821041662996],[-119.29617213345479,37.66818755529967],[-119.29619522299396,37.6681640503257],[-119.2962172842772,37.6681399293925],[-119.2962382913215,37.66811522091004],[-119.2962582193856,37.668089953980186],[-119.29627704499909,37.668064158362604],[-119.29629474599024,37.66803786443959],[-119.29631130151182,37.6680111031803],[-119.29632669206592,37.66798390610433],[-119.2963408995267,37.66795630524448],[-119.29635390716197,37.667928333109195],[-119.29636569965263,37.6679000226441],[-119.29637744430286,37.66787182156604],[-119.29639039534764,37.66784395625993],[-119.29640453763436,37.667816459324904],[-119.29641985461694,37.66778936292916],[-119.29643632837504,37.667762698772314],[-119.29645393963507,37.66773649804819],[-119.29647266779283,37.66771079140847],[-119.29649249093752,37.66768560892681],[-119.29651338587742,37.667660980063594],[-119.29653532816698,37.66763693363152],[-119.29655829213551,37.66761349776189],[-119.2965822509171,37.667590699871695],[-119.29660717648217,37.66756856663159],[-119.29663303967014,37.66754712393458],[-119.29665981022369,37.66752639686584],[-119.29668745682402,37.667506409673315],[-119.29671594712758,37.66748718573943],[-119.29674524780384,37.66746874755362],[-119.29675659075964,37.667458860356554],[-119.29676835647173,37.667449290428415],[-119.29678053090498,37.66744004918491],[-119.29679309953666,37.66743114764969],[-119.29680604737388,37.6674225964411],[-119.29681935897135,37.6674144057597],[-119.29683301844997,37.6674065853759],[-119.29684700951559,37.667399144618415],[-119.29686131547862,37.6673920923631],[-119.29687591927376,37.667385437022396],[-119.29689080348052,37.66737918653528],[-119.29690595034393,37.66737334835776],[-119.29692134179564,37.667367929453995],[-119.29693695947564,37.667362936288086],[-119.29695278475403,37.667358374816196],[-119.29696879875326,37.66735425047955],[-119.29698498237074,37.66735056819799],[-119.29712036983491,37.66732342927624],[-119.29712528335108,37.66732217422495],[-119.29713024754808,37.667321052252426],[-119.29713525672369,37.667320064647456],[-119.29714030512396,37.66731921254445],[-119.29714538694991,37.667318496922235],[-119.29715049636417,37.66731791860282],[-119.29715562749767,37.66731747825051],[-119.29716077445639,37.66731717637111],[-119.29716593132814,37.66731701331141],[-119.29717109218934,37.66731698925868],[-119.29717625111182,37.667317104240574],[-119.29718140216967,37.66731735812501],[-119.29718653944597,37.66731775062035],[-119.29719165703962,37.66731828127577],[-119.2971967490722,37.667318949481675],[-119.2972018096946,37.66731975447052],[-119.29720683309378,37.667320695317656],[-119.2972118134995,37.667321770942344],[-119.29721569946513,37.66732236739498],[-119.29721955774792,37.66732306826741],[-119.2972233839088,37.66732387275326],[-119.29722717354561,37.66732477992695],[-119.29723092229821,37.667325788744705],[-119.29723462585353,37.66732689804589],[-119.29723827995055,37.667328106554194],[-119.297241880385,37.66732941287918],[-119.29724542301452,37.66733081551786],[-119.29724890376315,37.66733231285649],[-119.29725231862615,37.66733390317226],[-119.2972556636746,37.66733558463553],[-119.2972589350599,37.66733735531166],[-119.29726212901818,37.66733921316344],[-119.29726524187468,37.66734115605335],[-119.29726827004792,37.66734318174599],[-119.29727121005386,37.66734528791076],[-119.29727405850996,37.66734747212442],[-119.29727681213889,37.66734973187396],[-119.29727946777251,37.66735206455944],[-119.2972820223554,37.66735446749703],[-119.29729341392455,37.66736376348211],[-119.29730520168827,37.667372741922435],[-119.2973173716466,37.66738139215446],[-119.29732990934565,37.66738970390445],[-119.29734279989472,37.667397667300726],[-119.29735602798407,37.667405272885276],[-119.29736957790298,37.6674125116251],[-119.29738343355858,37.667419374922844],[-119.29739107632845,37.667420406152615],[-119.29739875959416,37.66742122545733],[-119.2974064740588,37.66742183184562],[-119.29741421038767,37.66742222458374],[-119.29742195921958,37.66742240319646],[-119.29742971117825,37.66742236746765],[-119.29743745688366,37.66742211744057],[-119.29744518696324,37.66742165341774],[-119.29745289206346,37.66742097596063],[-119.29746056286095,37.66742008588901],[-119.29746819007381,37.667418984279855],[-119.29747576447298,37.66741767246615],[-119.29748327689319,37.66741615203526],[-119.29749071824426,37.66741442482687],[-119.297498079522,37.66741249293101],[-119.29750535181903,37.667410358685295],[-119.29751252633574,37.667408024672206],[-119.29751959439075,37.667405493715975],[-119.29752654743163,37.66740276887913],[-119.29753337704499,37.66739985345876],[-119.29754007496682,37.66739675098261],[-119.29754663309257,37.66739346520476],[-119.29755304348672,37.66739000010106],[-119.29755929839254,37.66738635986437],[-119.29765008242263,37.66733339131096],[-119.29774297556038,37.66728278627671],[-119.29783788046342,37.66723459778818],[-119.29793469768192,37.66718887633967],[-119.29803332576289,37.667145669840345],[-119.29813366135625,37.667105023563906],[-119.29814627981933,37.667104073534865],[-119.29815885047185,37.66710278375002],[-119.29817135884082,37.66710115569433],[-119.29818379052493,37.66709919124224],[-119.29819613121124,37.667096892655486],[-119.29820836669147,37.66709426258049],[-119.29822048287855,37.66709130404534],[-119.29823246582275,37.66708802045634],[-119.29824430172776,37.667084415593926],[-119.2982559769665,37.667080493608545],[-119.29826747809696,37.66707625901565],[-119.29827879187755,37.667071716690714],[-119.29828990528242,37.66706687186341],[-119.29830080551635,37.66706173011176],[-119.29831148002964,37.66705629735562],[-119.29832191653246,37.66705057984989],[-119.29833210300902,37.667044584177276],[-119.29834202773132,37.66703831724083],[-119.29835167927287,37.667031786255805],[-119.2983610465216,37.66702499874156],[-119.29837011869283,37.66701796251271],[-119.29837888534158,37.66701068567032],[-119.29838733637465,37.66700317659238],[-119.29849705427135,37.66689950192224],[-119.2986032160585,37.66679351362609],[-119.29862327050033,37.66677363772497],[-119.29864416550778,37.666754316728664],[-119.29866587679923,37.666735573089056],[-119.29868837914447,37.666717428587184],[-119.29871164639422,37.66669990430778],[-119.29873565151036,37.66668302061485],[-119.29876036659734,37.66666679712802],[-119.2987857629347,37.66665125269968],[-119.29881181101041,37.66663640539313],[-119.29883848055515,37.66662227246158],[-119.29886574057737,37.66660887032807],[-119.29889355939957,37.66659621456646],[-119.29892190469488,37.666584319883235],[-119.29895074352463,37.6665732001005],[-119.29898004237684,37.6665628681399],[-119.29900976720488,37.66655333600757],[-119.2990398834672,37.66654461478019],[-119.29907035616746,37.666536714592155],[-119.29910114989514,37.66652964462384],[-119.29913222886664,37.66652341309077],[-119.29916355696704,37.666518027234204],[-119.29919509779188,37.66651349331274],[-119.29922681468956,37.666509816594946],[-119.29925867080384,37.6665070013533],[-119.2992906291168,37.666505050859215],[-119.29932265249171,37.66650396737925],[-119.29935470371625,37.66650375217243],[-119.29938674554576,37.666504405488844],[-119.2994187407465,37.666505926569286],[-119.29947507063326,37.6664970307836],[-119.2995309740475,37.666486572284796],[-119.29958638240323,37.666474563904046],[-119.29964122772195,37.66646102037411],[-119.29969544271611,37.66644595831103],[-119.29974896087143,37.66642939619398],[-119.29980171652886,37.66641135434245],[-119.29985364496486,37.66639185489134],[-119.29990468247097,37.66637092176383],[-119.29995476643188,37.66634858064196],[-119.30000383540242,37.66632485893526],[-119.30005182918272,37.66629978574688],[-119.30009868889228,37.666273391838175],[-119.30014435704209,37.666245709590676],[-119.3001887776052,37.666216772966536],[-119.30023189608546,37.66618661746682],[-119.30027365958439,37.666155280087935],[-119.30031401686608,37.666122799276195],[-119.30035291842,37.66608921488075],[-119.30039031652178,37.66605456810456],[-119.30050470486185,37.66596670625211],[-119.30061514345675,37.665875707182906],[-119.30072149624074,37.665781683024356],[-119.30082363218395,37.66568474963078],[-119.30082990664246,37.665678788465364],[-119.30083643283632,37.665673000615016],[-119.30084320319463,37.66566739279398],[-119.30085020986337,37.66566197150767],[-119.30085744471428,37.665656743045126],[-119.30086489935447,37.665651713471675],[-119.30087256513609,37.66564688862188],[-119.30088043316628,37.66564227409291],[-119.30088849431768,37.66563787523787],[-119.30089673923878,37.66563369715972],[-119.30090515836501,37.66562974470524],[-119.3009137419296,37.66562602245953],[-119.30092247997516,37.66562253474062],[-119.30093136236498,37.66561928559445],[-119.30094037879492,37.66561627879025],[-119.30094951880544,37.66561351781605],[-119.30095877179356,37.66561100587478],[-119.30096812702527,37.665608745880384],[-119.30097757364793,37.665606740454656],[-119.30098710070293,37.66560499192397],[-119.30099669713827,37.66560350231671],[-119.30100635182163,37.66560227336093],[-119.30101605355294,37.66560130648229],[-119.30102579107765,37.6656006028024],[-119.30103555309968,37.6656001631376],[-119.30104532829453,37.66559998799789],[-119.30105510532239,37.66560007758649],[-119.30107937285796,37.66560029729016],[-119.30110363557675,37.66559985458791],[-119.30112786487415,37.66559875000163],[-119.30115203218493,37.665596984833584],[-119.30117610901692,37.66559456116485],[-119.30120006698466,37.6655914818528],[-119.30122387784282,37.665587750527806],[-119.30124751351957,37.6655833715889],[-119.30127094614951,37.66557835019869],[-119.30129414810676,37.665572692277145],[-119.30131709203731,37.665566404494655],[-119.30133975089147,37.66555949426427],[-119.30136209795556,37.66555196973278],[-119.30138410688359,37.66554383977126],[-119.30140575172818,37.66553511396456],[-119.3014270069713,37.66552580259994],[-119.30144784755417,37.665515916655075],[-119.30146824890694,37.66550546778497],[-119.30148818697765,37.66549446830835],[-119.3015076382605,37.66548293119304],[-119.30152657982369,37.66547087004066],[-119.30154498933629,37.66545829907074],[-119.30156284509478,37.665445233103775],[-119.30158012604844,37.66543168754384],[-119.30159681182425,37.66541767836043],[-119.30161288275096,37.665403222069614],[-119.30162831988216,37.66538833571454],[-119.3016468448251,37.6653704555303],[-119.30166611160783,37.66535307782449],[-119.30168609867619,37.66533622203752],[-119.30170678367016,37.66531990702593],[-119.3017281434491,37.665304151041276],[-119.30175015411747,37.66528897170972],[-119.30177279105165,37.66527438601233],[-119.30179602892746,37.66526041026598],[-119.30181984174851,37.66524706010533],[-119.30184420287526,37.665234350465084],[-119.30188363279939,37.665215272554846],[-119.30192386967411,37.665197290857535],[-119.30196486529096,37.665180426917054],[-119.30200657053264,37.665164700938135],[-119.30204893543163,37.66515013176206],[-119.30209190923031,37.66513673684412],[-119.30213544044146,37.66512453223278],[-119.30217947691025,37.66511353255033],[-119.30222396587652,37.66510375097547],[-119.30226885403799,37.6650951992275],[-119.30231408761425,37.665087887552204],[-119.30235961241104,37.665081824709674],[-119.30240537388529,37.66507701796376],[-119.30245131721034,37.66507347307348],[-119.30249738734175,37.66507119428585],[-119.3025435290831,37.665070184331135],[-119.30258968715226,37.66507044441934],[-119.30263580624748,37.66507197423885],[-119.30268183111374,37.66507477195681],[-119.30272770660888,37.66507883422127],[-119.30277337776965,37.66508415616525],[-119.30281878987766,37.66509073141258],[-119.3028638885248,37.66509855208545],[-119.30290861967845,37.66510760881398],[-119.30295292974624,37.6651178907473],[-119.30299676564027,37.66512938556667],[-119.30304007484067,37.66514207950018],[-119.30308446305115,37.66515510745349],[-119.30312937869415,37.665166938054526],[-119.30317477067513,37.66517755784511],[-119.30322058735747,37.66518695474442],[-119.3032667766215,37.66519511806282],[-119.30331328592362,37.665202038513904],[-119.30336006235606,37.665207708225196],[-119.30340705270716,37.665212120746915],[-119.3034542035219,37.665215271059516],[-119.30350146116268,37.66521715557928],[-119.30354877187037,37.66521777216244],[-119.30359608182539,37.66521712010754],[-119.30364333720918,37.66521520015641],[-119.30369048426512,37.665212014493065],[-119.30373746935987,37.665207566741486],[-119.30378423904442,37.6652018619613],[-119.30382559610352,37.66519683935144],[-119.30386714909345,37.6651929713969],[-119.30390884701677,37.66519026284477],[-119.30395063869831,37.6651887170192],[-119.30399247284777,37.66518833581737],[-119.30403429812279,37.66518911970711],[-119.30407606319184,37.665191067726376],[-119.30411771679731,37.66519417748441],[-119.30415920781837,37.66519844516462],[-119.30420048533374,37.665203865529364],[-119.30424149868404,37.665210431926305],[-119.30428219753415,37.66521813629659],[-119.30432253193484,37.665226969184765],[-119.3043624523842,37.66523691975035],[-119.30440190988813,37.66524797578116],[-119.3044408560208,37.66526012370822],[-119.30447924298386,37.665273348622584],[-119.30451702366511,37.66528763429344],[-119.30460667354426,37.66532462735718],[-119.30469466068871,37.6653640626077],[-119.30478087985988,37.66540589287898],[-119.30486522793319,37.665450068140316],[-119.30494760402148,37.66549653555627],[-119.30502790959565,37.665545239549786],[-119.30510604860241,37.66559612186856],[-119.30518192757924,37.66564912165492],[-119.30525545576613,37.665704175518385],[-119.30528814565415,37.665728642249825],[-119.30532189195151,37.66575218521162],[-119.30535665337194,37.6657747755999],[-119.30539238738716,37.6657963857762],[-119.30542905027878,37.66581698930136],[-119.30546659719184,37.66583656096771],[-119.30550498218976,37.66585507683003],[-119.30554415831043,37.66587251423483],[-119.30558407762378,37.665888851848045],[-119.30562469129033,37.66590406968118],[-119.305665949621,37.66591814911571],[-119.3057078021379,37.665931072925915],[-119.3057501976361,37.66594282529991],[-119.30579308424622,37.66595339185904],[-119.30583640949803,37.665962759675445],[-119.30588012038449,37.66597091728788],[-119.30592416342674,37.665977854715756],[-119.30596848473951,37.66598356347135],[-119.30601303009695,37.66598803657012],[-119.30605774499915,37.66599126853941],[-119.30610257473869,37.66599325542497],[-119.30614746446764,37.665993994795905],[-119.30619235926468,37.66599348574763],[-119.30623720420232,37.665991728902924],[-119.30628194441397,37.66598872641127],[-119.3063265251613,37.6659844819461],[-119.30637089190105,37.6659790007004],[-119.30641499035185,37.66597228938035],[-119.30645876656057,37.665964356197],[-119.30650216696846,37.66595521085639],[-119.30654513847648,37.66594486454758],[-119.30658762851053,37.66593332992894],[-119.30662958508559,37.665920621112726],[-119.30667095686937,37.66590675364778],[-119.30671169324515,37.66589174450047],[-119.30675174437373,37.665875612034014],[-119.30679106125432,37.66585837598595],[-119.30682959578462,37.66584005744394],[-119.30686730081958,37.665820678820104],[-119.30690413022906,37.66580026382347],[-119.30694003895447,37.66577883743102],[-119.30697498306358,37.665756425857126],[-119.30783058268014,37.66517156223796],[-119.3086654667564,37.664568082395284],[-119.30872772462733,37.66452333464755],[-119.30879182451667,37.664480261774784],[-119.30885769515663,37.664438911664426],[-119.30892526331111,37.66439933028837],[-119.30899445385714,37.664361561652115],[-119.30906518986832,37.66432564774571],[-119.30913739270052,37.664291628497125],[-119.30921098207907,37.66425954172782],[-119.30928587618811,37.66422942311079],[-119.30936199176163,37.66420130613081],[-119.30943924417582,37.66417522204734],[-119.30951754754338,37.6641511998596],[-119.30959681480874,37.664129266274585],[-119.30967695784503,37.66410944567713],[-119.30975788755197,37.664091760102984],[-119.3101056181211,37.66401633017145],[-119.31045039008178,37.66393275821175],[-119.31079190180193,37.663841117341065],[-119.31276199868618,37.66329530434583],[-119.312843551054,37.66327185167772],[-119.31292406966219,37.663246241037335],[-119.31300346418061,37.66321850115636],[-119.31308164554068,37.663188663155196],[-119.313158526035,37.663156760508],[-119.31323401941593,37.66312282900516],[-119.3133080409923,37.66308690671308],[-119.31338050772447,37.663049033931486],[-119.31345133831752,37.66300925314827],[-119.31352045331234,37.6629676089917],[-119.31358777517491,37.66292414818043],[-119.31365322838322,37.66287891947107],[-119.31371673951203,37.662831973603446],[-119.31377823731525,37.66278336324367],[-119.31383415861971,37.66273604698662],[-119.31388799130826,37.662687223894075],[-119.3139396711786,37.66263695219753],[-119.31398913659643,37.662585291856104],[-119.31403632856902,37.66253230448507],[-119.31408119081559,37.662478053282214],[-119.3141236698343,37.66242260295273],[-119.31416371496616,37.662366019631676],[-119.31420127845537,37.66230837080537],[-119.31423631550634,37.66224972523076],[-119.31426878433686,37.662190152853455],[-119.31429864622827,37.66212972472426],[-119.31432586557132,37.66206851291446],[-119.31435040990873,37.66200659042984],[-119.31437224997389,37.6619440311236],[-119.31439135972566,37.66188090960827],[-119.31440771637946,37.661817301166764],[-119.31442130043439,37.661753281662456],[-119.3144320956965,37.661688927448864],[-119.31444008929797,37.66162431527849],[-119.31444527171253,37.66155952221126],[-119.31445440944289,37.66144454221354],[-119.31446841895134,37.66132987255067],[-119.31448728428178,37.66121564364128],[-119.31451098395566,37.66110198540211],[-119.3145394909965,37.6609890271003],[-119.31457277296069,37.660876897206386],[-119.31461079197445,37.66076572324807],[-119.31465350477701,37.66065563166532],[-119.31470086276993,37.660546747666594],[-119.3147528120724,37.66043919508633],[-119.31532660116048,37.65936117608267],[-119.31594563061775,37.658299096772815],[-119.31598264914126,37.65824088356724],[-119.3160221875789,37.65818372725877],[-119.31606419824986,37.65812769676592],[-119.31610863049274,37.65807285964949],[-119.31615543072658,37.65801928203126],[-119.31620454251544,37.65796702851413],[-119.31625590663658,37.65791616210431],[-119.31630946115185,37.65786674413534],[-119.31636514148228,37.65781883419411],[-119.31642288048606,37.657772490049155],[-119.31648260853956,37.65772776758076],[-119.31654425362113,37.6576847207139],[-119.31660774139802,37.65764340135295],[-119.31667299531604,37.65760385931933],[-119.31673993669186,37.657566142291266],[-119.31680848480778,37.65753029574643],[-119.31687855700918,37.65749636290711],[-119.3169830809621,37.6574457335018],[-119.3170853153445,37.65739223082513],[-119.31718513524868,37.65733592024807],[-119.31728241871781,37.6572768705722],[-119.31737704689498,37.65721515394563],[-119.31746890416846,37.65715084577485],[-119.31755787831291,37.65708402463254],[-119.31764386062652,37.65701477216154],[-119.31772674606376,37.65694317297509],[-119.31780643336384,37.656869314553404],[-119.31788282517428,37.65679328713682],[-119.31846002719179,37.656216639522654],[-119.31905959475138,37.65565460447498],[-119.31925899421742,37.65546755981661],[-119.31945078748369,37.655275553644564],[-119.31963477941221,37.65507878137275],[-119.31981078280936,37.65487744326414],[-119.31997861861602,37.65467174422697],[-119.32013811608996,37.65446189360596],[-119.32028911297903,37.6542481049693],[-119.32043145568642,37.65403059589108],[-119.32045434628321,37.65396693378884],[-119.32047971339594,37.65390386781118],[-119.32050753252972,37.65384145884007],[-119.32053777682275,37.65377976712312],[-119.32057041707222,37.6537188522153],[-119.32060542176265,37.65365877292167],[-119.32064275709624,37.653599587240336],[-119.32065682639966,37.65357899835378],[-119.32067178169459,37.653558808090736],[-119.32068760513546,37.65353904054253],[-119.32070427784086,37.65351971929608],[-119.32072177991604,37.65350086740571],[-119.32074009047672,37.65348250736571],[-119.32075918767393,37.653464661083504],[-119.32077904872018,37.653447349853444],[-119.32079964991654,37.65343059433144],[-119.32082096668104,37.65341441451031],[-119.3208429735779,37.65339882969596],[-119.3208656443479,37.65338385848427],[-119.32088895193979,37.65336951873898],[-119.32091286854246,37.653355827570365],[-119.32093736561819,37.65334280131478],[-119.32096241393667,37.65333045551521],[-119.32098798360994,37.65331880490271],[-119.32183542514302,37.65293656852484],[-119.3226701676301,37.65253706413724],[-119.32270458587922,37.652519440310805],[-119.32273821205911,37.65250087505114],[-119.32277100545215,37.652481390839064],[-119.3228029263493,37.652461011268095],[-119.32283393609812,37.652439761015984],[-119.3228639971496,37.65241766581473],[-119.32289307310351,37.652394752419454],[-119.32292112875275,37.65237104857605],[-119.32294813012561,37.652346582987484],[-119.32297404452724,37.652321385279144],[-119.32299884057906,37.652295485962895],[-119.32302248825671,37.65226891640011],[-119.32304495892666,37.65224170876378],[-119.32306622538053,37.652213895999466],[-119.32308626186833,37.65218551178548],[-119.3231050441294,37.65215659049197],[-119.32312254942201,37.65212716713948],[-119.3231387565507,37.652097277356454],[-119.32315364589202,37.65206695733602],[-119.3231671994183,37.65203624379224],[-119.32317940071947,37.65200517391574],[-119.32319023502284,37.65197378532842],[-119.32323097106156,37.651855378148255],[-119.32327661667155,37.65173810853593],[-119.32332712175459,37.65162210514117],[-119.32338243088218,37.651507495224024],[-119.32344248335643,37.65139440451521],[-119.32350721327671,37.651282957078315],[-119.32357654961204,37.65117327517366],[-119.32365041627912,37.65106547912417],[-119.32369987719666,37.65099859580674],[-119.3237520215059,37.650933013672535],[-119.32380679510472,37.65086880075724],[-119.32386414116382,37.650806023675905],[-119.32392400018564,37.65074474755384],[-119.32398631006613,37.650685035959135],[-119.32405100615918,37.65062695083666],[-119.32411802134364,37.65057055244385],[-119.3241872860931,37.65051589928817],[-119.32438387158552,37.650360635551785],[-119.32457387325327,37.650200274179994],[-119.32475708215019,37.65003499155945],[-119.32493329680564,37.64986496948879],[-119.32510232344623,37.64969039497831],[-119.32526397620865,37.64951146004441],[-119.32541807734407,37.649328361498085],[-119.32547810985332,37.64925152469645],[-119.32553476594704,37.64917308382899],[-119.32558797791607,37.64909313265454],[-119.32563768216858,37.64901176673687],[-119.32568381930601,37.64892908333039],[-119.32572633419404,37.648845181263965],[-119.32576517602847,37.648760160822775],[-119.32580029839582,37.6486741236284],[-119.32583165932877,37.64858717251736],[-119.3258592213564,37.64849941141813],[-119.32588295154866,37.64841094522707],[-119.32590282155596,37.64832187968282],[-119.32591880764271,37.64823232124008],[-119.32593089071584,37.64814237694225],[-119.32596520256011,37.64788015523482],[-119.32600909086202,37.64761883787576],[-119.32606251839272,37.647358645931455],[-119.32616703681767,37.646932192208304],[-119.32628874428383,37.64650863090825],[-119.32642751466156,37.646088399965734],[-119.32658320418632,37.645671933864485],[-119.32659620758707,37.6456370253215],[-119.32660770634367,37.645601784494055],[-119.326617687083,37.64556625237379],[-119.32662613819787,37.645530470291085],[-119.3266330498603,37.64549447986698],[-119.326638414033,37.64545832296485],[-119.32664222447877,37.64542204164158],[-119.32664447676764,37.6453856780988],[-119.32664516828208,37.645349274633666],[-119.32664429822005,37.64531287358973],[-119.32664186759587,37.6452765173076],[-119.32663787923902,37.64524024807587],[-119.32663233779095,37.645204108081735],[-119.32662524969955,37.64516813936207],[-119.3266166232116,37.64513238375438],[-119.32660646836341,37.64509688284828],[-119.32659479696883,37.64506167793708],[-119.32658162260574,37.64502680996972],[-119.3265669606001,37.644992319503146],[-119.32655082800812,37.64495824665523],[-119.32653324359659,37.644924631057926],[-119.32651422782078,37.64489151181136],[-119.32649380280084,37.644858927438264],[-119.3263745210382,37.64466836802091],[-119.32626375362038,37.64447458642783],[-119.32616163791555,37.64427782309418],[-119.32606830055416,37.644078322152836],[-119.3259838572721,37.6438763311314],[-119.32590841276746,37.64367210064501],[-119.32584206057089,37.64346588408527],[-119.32578488293,37.64325793730588],[-119.32561540710654,37.64251617652792],[-119.32547947200864,37.64177006251523],[-119.32537725127656,37.64102055388435],[-119.32535734910539,37.64080554517143],[-119.32534645034126,37.640590129048256],[-119.32534456696425,37.640374543849525],[-119.32535170097977,37.640159028094814],[-119.32536784441665,37.63994382022493],[-119.32539297933633,37.63972915833798],[-119.32542707785308,37.63951527992591],[-119.32547010216507,37.639302421611895],[-119.3255220045967,37.63909081888853],[-119.32558272765156,37.63888070585733],[-119.32565220407636,37.63867231496973],[-119.32571979865247,37.63847042164077],[-119.32577944828314,37.63826695121759],[-119.32583109508765,37.63806210135978],[-119.32587468896077,37.63785607106533],[-119.32591018762135,37.63764906047736],[-119.32593755665299,37.637441270689514],[-119.32595676953737,37.637232903550796],[-119.32596780767962,37.63702416146932],[-119.32598013418205,37.636807050024366],[-119.32600072810602,37.63659033532922],[-119.32602957046429,37.63637421643253],[-119.32606663469416,37.63615889183403],[-119.32610628243667,37.63597316403313],[-119.32615382989556,37.63578861272754],[-119.3262092222802,37.63560545035529],[-119.32627239577093,37.63542388775404],[-119.32634327759283,37.635244133918484],[-119.32642178609979,37.635066395759715],[-119.32650783086858,37.63489087786719],[-119.32660131280328,37.63471778227328],[-119.32670212424956,37.634547308220704],[-119.32681014911877,37.634379651933344],[-119.32704003048609,37.63413852459774],[-119.32728034146982,37.63390391718483],[-119.32753078984659,37.63367611488793],[-119.32779107107832,37.633455394625535],[-119.32806086868248,37.633242024704636],[-119.32833985461696,37.63303626449494],[-119.32862768967904,37.63283836411385],[-119.32892402391757,37.63264856412257],[-119.32933381962403,37.63238696742554],[-119.3297330149544,37.632115202677866],[-119.32974730332728,37.63210550085594],[-119.3297620003946,37.63209619318871],[-119.32977708897397,37.63208729055772],[-119.32979255142536,37.632078803370916],[-119.32980836967168,37.63207074155057],[-119.32982452521985,37.632063114521685],[-119.32984099918251,37.63205593120097],[-119.32985777230004,37.632049199986284],[-119.32987482496316,37.632042928747104],[-119.32989213723567,37.63203712481497],[-119.32990968887802,37.63203179497527],[-119.32992745937072,37.63202694545899],[-119.32994542793848,37.63202258193565],[-119.32996357357447,37.6320187095066],[-119.32998187506485,37.63201533269905],[-119.33000031101358,37.632012455460774],[-119.3300188598674,37.6320100811555],[-119.33003749994111,37.63200821255902],[-119.33005620944286,37.63200685185585],[-119.33007496649962,37.63200600063681],[-119.33009374918281,37.63200565989702],[-119.33011253553383,37.632005830034835],[-119.33013130358984,37.63200651085136],[-119.33015003140936,37.63200770155065],[-119.33016869709796,37.632009400740706],[-119.33018727883388,37.63201160643498],[-119.33020575489338,37.632014316054864],[-119.33022410367641,37.63201752643257],[-119.33024230373162,37.63202123381488],[-119.33026033378157,37.63202543386753],[-119.33027817274748,37.63203012168034],[-119.33029579977409,37.632035291772794],[-119.33031319425378,37.632040938100644],[-119.33033033585082,37.63204705406282],[-119.33034720452514,37.63205363250922],[-119.33053199054304,37.63212569406262],[-119.33071976757299,37.632192687306414],[-119.33082352246954,37.6322264063513],[-119.33092863191946,37.63225735851763],[-119.33103497929909,37.63228550946216],[-119.33114244661094,37.632310827949745],[-119.33125091461442,37.63233328588796],[-119.3313602629582,37.632352858358345],[-119.33147037031398,37.632369523644016],[-119.33158111451095,37.63238326325376],[-119.3316923726715,37.63239406194259],[-119.33180402134747,37.632401907728664],[-119.33191593665734,37.63240679190658],[-119.33202799442364,37.63240870905703],[-119.33231850823138,37.63240603475324],[-119.33260875476037,37.63239577216625],[-119.33289842068888,37.632377932374546],[-119.33318719332242,37.632352534636155],[-119.33326683177245,37.63234553499374],[-119.33334671724587,37.63234062883925],[-119.3334267627598,37.63233782151473],[-119.33350688115708,37.63233711607693],[-119.33358698520121,37.63233851329396],[-119.33366698767131,37.632342011644475],[-119.33374680145714,37.63234760731929],[-119.3338263396538,37.6323552942256],[-119.33390551565635,37.63236506399353],[-119.33398424325428,37.632376905985325],[-119.33406243672508,37.63239080730684],[-119.33414001092768,37.63240675282168],[-119.33421688139528,37.63242472516759],[-119.33429296442704,37.6324447047754],[-119.3347614548596,37.63257994326056],[-119.33522545452924,37.63272464487784],[-119.3352594056226,37.632735089696034],[-119.33529379216479,37.63274459092075],[-119.33532857270608,37.63275313709912],[-119.33536370532181,37.63276071792947],[-119.33539914766288,37.63276732427385],[-119.33543485700676,37.63277294816887],[-119.33547079030915,37.63277758283544],[-119.33550690425561,37.63278122268687],[-119.33554315531408,37.63278386333565],[-119.3355794997871,37.63278550159872],[-119.33561589386461,37.63278613550131],[-119.33565229367683,37.63278576427929],[-119.33568865534698,37.63278438838015],[-119.33572493504427,37.63278200946236],[-119.3357610890368,37.632778630393574],[-119.33579707374409,37.63277425524689],[-119.33583284578988,37.632768889296216],[-119.33586836205417,37.632762539009676],[-119.3359035797254,37.63275521204199],[-119.33593845635187,37.632746917225155],[-119.33597294989309,37.632737664557844],[-119.33600701877037,37.63272746519325],[-119.33604062191701,37.632716331425826],[-119.33607371882768,37.632704276676264],[-119.33610626960733,37.6326913154755],[-119.33613823501936,37.632677463446996],[-119.33676760618737,37.63240234618019],[-119.33740621462923,37.63214104263327],[-119.33805358112639,37.63189374885388],[-119.33870921990433,37.631660650376745],[-119.34059256742022,37.631043065632944],[-119.3413068723166,37.630830530590764],[-119.34203007539018,37.63063797221619],[-119.342761293811,37.630465625553605],[-119.34349963498497,37.63031370097463],[-119.34360427698304,37.63029519886525],[-119.3437096468414,37.63027952603941],[-119.34381562366016,37.63026670047984],[-119.34392208584306,37.63025673690236],[-119.34402891123725,37.630249646739024],[-119.34413597727318,37.63024543812495],[-119.34424316110534,37.63024411588903],[-119.34435033975306,37.63024568154838],[-119.34445739024164,37.630250133306575],[-119.34456418974335,37.63025746605574],[-119.34467061571841,37.63026767138244],[-119.3447765460554,37.63028073757723],[-119.3448818592115,37.63029664964821],[-119.34580662082436,37.63045307579374],[-119.34600832427503,37.63048518445108],[-119.34621127713329,37.630511852697325],[-119.34641524746118,37.63053305005541],[-119.34662000215728,37.63054875230052],[-119.34682530722323,37.63055894148781],[-119.34703092803134,37.63056360597282],[-119.34723662959289,37.630562740424864],[-119.34744217682675,37.630556345833114],[-119.34764733482832,37.63054442950546],[-119.34785186913813,37.630527005060166],[-119.34805554600979,37.63050409241025],[-119.34825813267744,37.63047571774083],[-119.34845939762185,37.630441913479025],[-119.34865911083513,37.63040271825698],[-119.34885704408374,37.630358176867695],[-119.34905297116954,37.630308340213766],[-119.34924666818831,37.63025326524913],[-119.34943791378569,37.63019301491412],[-119.34962648941055,37.63012765806328],[-119.34981217956455,37.63005726938677],[-119.34999477204866,37.62998192932494],[-119.35017405820577,37.62990172397636],[-119.35034983315911,37.62981674499928],[-119.35052189604659,37.62972708950701],[-119.35069005025031,37.629632859956715],[-119.35085410362133,37.62953416403237],[-119.35300352856717,37.62757640795657],[-119.35303663933261,37.62754819507638],[-119.35307094795785,37.627520902583505],[-119.35310641402198,37.627494562631675],[-119.3531429957407,37.62746920625248],[-119.35318065001536,37.627444863318594],[-119.35321933248393,37.62742156250886],[-119.35325899757318,37.62739933127417],[-119.3532995985523,37.62737819580549],[-119.3533410875881,37.6273581810027],[-119.35338341580126,37.62733931044548],[-119.3534265333239,37.627321606365385],[-119.35347038935838,37.627305089619725],[-119.35351493223715,37.62728977966703],[-119.35356010948354,37.62727569454404],[-119.35360586787361,37.62726285084453],[-119.35365215349896,37.62725126369976],[-119.35369891183,37.62724094676055],[-119.3537460877804,37.62723191218137],[-119.35379362577183,37.627224170605885],[-119.3538414697996,37.627217731154445],[-119.35388956349843,37.62721260141342],[-119.35393785020896,37.62720878742616],[-119.3539862730445,37.62720629368594],[-119.35403477495802,37.62720512313062],[-119.35408329880929,37.627205277139275],[-119.35413178743227,37.62720675553045],[-119.35418018370243,37.62720955656243],[-119.35422843060398,37.62721367693533],[-119.35427647129715,37.62721911179493],[-119.35432424918501,37.62722585473837],[-119.35437170798023,37.627233897821824],[-119.35441879177135,37.62724323156965],[-119.35446544508861,37.62725384498576],[-119.3545257043245,37.62726933602831],[-119.35458527243259,37.62728643459319],[-119.35464408164344,37.627305121227764],[-119.35470206505082,37.62732537467283],[-119.35475915668783,37.62734717188651],[-119.35481529160202,37.6273704880707],[-119.35487040592913,37.62739529669914],[-119.3549244369658,37.6274215695476],[-119.35497732324103,37.62744927672604],[-119.35502900458584,37.6274783867126],[-119.35507942220201,37.62750886638937],[-119.35512851872868,37.6275406810802],[-119.3551762383079,37.62757379459002],[-119.35522252664796,37.627608169246116],[-119.35526733108527,37.62764376594086],[-119.35531060064417,37.627680544176364],[-119.35535228609507,37.6277184621104],[-119.35539234001033,37.627757476604046],[-119.3554307168183,37.62779754327079],[-119.3554673728552,37.62783861652699],[-119.35550226641466,37.627880649643714],[-119.3555982393199,37.628005338602165],[-119.35568871293717,37.62813260186325],[-119.3557735782079,37.62826228606154],[-119.35585273283068,37.62839423491325],[-119.3559260813844,37.62852828940465],[-119.35599353544345,37.62866428798362],[-119.35601615220807,37.62870988940144],[-119.35604074354396,37.6287548396611],[-119.35606727987744,37.628799084698606],[-119.35609572929525,37.628842571298115],[-119.35612605758301,37.62888524715585],[-119.35615822826632,37.628927060943134],[-119.35619220265468,37.628967962368],[-119.35622793988793,37.62900790223586],[-119.35626539698538,37.62904683250844],[-119.3563045288976,37.62908470636178],[-119.35634528856053,37.62912147824245],[-119.35638762695206,37.62915710392237],[-119.35643149315099,37.62919154055202],[-119.3564768343984,37.62922474671197],[-119.35652359616088,37.62925668246272],[-119.35657172219629,37.629287309392716],[-119.3566211546214,37.62931659066463],[-119.35667183398138,37.62934449105952],[-119.35669310828838,37.629355357576166],[-119.35671484097013,37.629365634335116],[-119.35673700619068,37.62937530911924],[-119.35675957759992,37.629384370427026],[-119.35678252836469,37.629392807486234],[-119.35680583120094,37.62940061026678],[-119.35682945840595,37.62940776949257],[-119.35685338189147,37.629414276652625],[-119.35687757321686,37.62942012401113],[-119.35690200362316,37.629425304616625],[-119.35692664406714,37.629429812310335],[-119.35695146525585,37.62943364173344],[-119.35697643768142,37.62943678833344],[-119.35700153165624,37.62943924836961],[-119.35702671734813,37.62944101891742],[-119.35705196481592,37.629442097872],[-119.35707724404493,37.629442483950676],[-119.35710252498278,37.629442176694496],[-119.35712777757503,37.62944117646869],[-119.35715297180094,37.62943948446235],[-119.35717807770916,37.629437102686985],[-119.35720306545339,37.62943403397409],[-119.35722790532769,37.6294302819718],[-119.35725256780209,37.629425851140546],[-119.35727702355743,37.62942074674778],[-119.35730124352028,37.6294149748617],[-119.35732519889763,37.62940854234402],[-119.35734886121104,37.62940145684183],[-119.35737220233037,37.62939372677846],[-119.35739519450749,37.62938536134356],[-119.35741781040907,37.62937637048206],[-119.35744002314911,37.62936676488246],[-119.35746180632091,37.629356555964016],[-119.35748313402856,37.629345755863255],[-119.35750398091754,37.62933437741943],[-119.35752432220507,37.629322434159455],[-119.35754413370938,37.629309940281566],[-119.35756339187863,37.62929691063864],[-119.35758207381873,37.629283360720514],[-119.35760015732075,37.62926930663541],[-119.35761655894821,37.62925656143716],[-119.3576335054228,37.62924427539008],[-119.35765097643532,37.629232463217974],[-119.35766895104811,37.62922113907668],[-119.35768740771991,37.629210316537176],[-119.35770632433184,37.62920000856933],[-119.35772567821384,37.629190227526344],[-119.35774544617188,37.62918098512989],[-119.3577656045156,37.62917229245619],[-119.35778612908705,37.62916415992259],[-119.35780699528915,37.62915659727524],[-119.35782817811565,37.629149613577226],[-119.35784965218075,37.62914321719792],[-119.35787139174967,37.62913741580278],[-119.35789337076949,37.629132216344225],[-119.35791556290037,37.62912762505335],[-119.35793794154705,37.629123647432415],[-119.35796047989075,37.629120288248174],[-119.35798315092136,37.62911755152635],[-119.35800592746975,37.629115440546606],[-119.35802878224032,37.62911395783881],[-119.35805168784378,37.629113105179776],[-119.35807461682992,37.6291128835914],[-119.35809754172048,37.62911329333919],[-119.35812043504212,37.62911433393212],[-119.35814326935933,37.629116004123155],[-119.35816601730731,37.629118301910715],[-119.35818865162476,37.62912122454109],[-119.35821114518653,37.62912476851181],[-119.35823347103617,37.62912892957574],[-119.3582556024182,37.629133702746245],[-119.35827751281016,37.629139082303084],[-119.35829917595441,37.6291450617994],[-119.35832056588964,37.629151634069295],[-119.35834165698185,37.62915879123649],[-119.35836242395521,37.62916652472382],[-119.35838284192234,37.62917482526334],[-119.358402886414,37.62918368290765],[-119.35842253340853,37.62919308704166],[-119.35849368451687,37.62922985766525],[-119.35856320819845,37.62926854739442],[-119.35863102265495,37.62930911071003],[-119.3586970480986,37.62935149988862],[-119.35876120684604,37.62939566505842],[-119.3588234234097,37.62944155425812],[-119.35888362458664,37.62948911349797],[-119.35894173954468,37.629538286823205],[-119.3589976999057,37.62958901638002],[-119.35905143982615,37.62964124248343],[-119.35906738537011,37.629656740292035],[-119.35908398810157,37.62967179525748],[-119.3591012285909,37.62968638976108],[-119.35911908666213,37.62970050672306],[-119.35913754141643,37.629714129622414],[-119.35915657125663,37.6297272425164],[-119.35917615391259,37.629739830059094],[-119.35919626646708,37.62975187751935],[-119.35921688538279,37.629763370798116],[-119.3592379865297,37.62977429644487],[-119.35925954521349,37.62978464167341],[-119.35928153620425,37.629794394376695],[-119.35930393376623,37.62980354314122],[-119.35932671168774,37.629812077260226],[-119.35934984331199,37.62981998674624],[-119.35937330156821,37.62982726234282],[-119.35939705900333,37.62983389553535],[-119.35942108781416,37.62983987856102],[-119.35944535987986,37.62984520441789],[-119.35946984679494,37.629849866873165],[-119.35949451990238,37.62985386047032],[-119.35951935032735,37.62985718053569],[-119.3595443090108,37.629859823183786],[-119.35956936674361,37.62986178532196],[-119.35959449420075,37.62986306465385],[-119.35961966197554,37.629863659682314],[-119.35964484061417,37.629863569710984],[-119.35967000065006,37.62986279484514],[-119.35969511263845,37.62986133599161],[-119.35972014719077,37.629859194857666],[-119.35974507500912,37.62985637394913],[-119.35976986692049,37.629852876567256],[-119.35979449391094,37.62984870680505],[-119.35981892715958,37.62984386954239],[-119.35984313807222,37.629838370440304],[-119.35987180031866,37.62983186455581],[-119.35990072807822,37.629826150149356],[-119.35992988680938,37.62982123404433],[-119.35995924169477,37.62981712211081],[-119.35998875768287,37.62981381925874],[-119.36001839952975,37.62981132943193],[-119.36004813184131,37.629809655603346],[-119.36007791911534,37.62980879977165],[-119.36010772578405,37.629808762958774],[-119.36013751625647,37.629809545208666],[-119.36016725496103,37.6298111455873],[-119.3601969063879,37.62981356218367],[-119.36022643513147,37.62981679211225],[-119.36025580593262,37.62982083151629],[-119.36028498372085,37.62982567557253],[-119.360313933656,37.629831318496855],[-119.36034262117008,37.629837753551236],[-119.36037101200832,37.629844973051874],[-119.36039907227027,37.6298529683782],[-119.36042676845011,37.62986172998329],[-119.36045406747671,37.629871247405276],[-119.36048093675319,37.629881509279755],[-119.36050734419574,37.629892503353354],[-119.36053325827199,37.62990421649847],[-119.3605586480386,37.629916634728865],[-119.36058348317829,37.629929743216316],[-119.36084347541336,37.63006766230709],[-119.36110854126207,37.6301993316338],[-119.36137844329099,37.63032463324061],[-119.36165293973045,37.63044345487554],[-119.3619317846913,37.630555690091306],[-119.36221472838523,37.6306612383406],[-119.36223748743475,37.63066978458243],[-119.36225985625214,37.63067895939594],[-119.36228180740163,37.6306887515282],[-119.36230331395981,37.63069914896901],[-119.36232434954849,37.63071013896586],[-119.3623448883671,37.630721708039395],[-119.36236490522437,37.63073384200001],[-119.36238437556909,37.630746525965286],[-119.36240327552042,37.63075974437821],[-119.36242158189702,37.63077348102619],[-119.36243927224557,37.63078771906111],[-119.36245632486822,37.63080244101978],[-119.36247271884933,37.63081762884552],[-119.36248843408106,37.63083326391025],[-119.36250345128792,37.630849327037296],[-119.36251775205069,37.63086579852499],[-119.36253131882872,37.63088265817075],[-119.36254413498159,37.630899885295904],[-119.36255618478953,37.630917458771094],[-119.36256745347268,37.63093535704208],[-119.36257792720922,37.63095355815624],[-119.36258759315226,37.63097203978957],[-119.36259643944571,37.6309907792739],[-119.36260445523877,37.6310097536248],[-119.36261163069923,37.63102893956979],[-119.36261795702556,37.63104831357682],[-119.3626234264577,37.63106785188315],[-119.36262803228654,37.63108753052455],[-119.36263176886223,37.6311073253646],[-119.36272935499001,37.63165557616678],[-119.36273970006222,37.63170432362893],[-119.36275217765039,37.63175275431662],[-119.36276677256141,37.63180080924289],[-119.3627834670232,37.63184842987833],[-119.36280224070643,37.63189555822243],[-119.36282307074912,37.63194213687411],[-119.36284593178468,37.6319881091017],[-119.36287079597257,37.63203341891207],[-119.36289763303232,37.63207801111876],[-119.36292641028041,37.63212183140925],[-119.36295709266996,37.63216482641114],[-119.3629896428335,37.63220694375709],[-119.36302402112845,37.63224813214864],[-119.36306018568533,37.63228834141874],[-119.36309809245884,37.6323275225928],[-119.36313769528144,37.63236562794836],[-119.36317894591959,37.63240261107323],[-119.36322179413249,37.63243842692205],[-119.36326618773325,37.63247303187112],[-119.36331207265249,37.632506383771556],[-119.3633593930042,37.63253844200061],[-119.36340809115373,37.63256916751123],[-119.36345810778808,37.63259852287955],[-119.36350938198807,37.63262647235046],[-119.3635618513026,37.6326529818813],[-119.36358659579683,37.63266454419285],[-119.36361182848194,37.63267541872964],[-119.363637519145,37.63268559247068],[-119.36366363702469,37.63269505323416],[-119.36369015084804,37.632703789691924],[-119.36371702886805,37.63271179138306],[-119.36374423890153,37.63271904872653],[-119.36377174836772,37.63272555303249],[-119.36379952432735,37.6327312965128],[-119.36382753352197,37.63273627229031],[-119.36385574241386,37.6327404744071],[-119.36388411722615,37.632743897831645],[-119.36391262398331,37.63274653846476],[-119.36394122855182,37.632748393144595],[-119.36396989668101,37.6327494596504],[-119.36399859404406,37.632749736705165],[-119.36402728627921,37.63274922397713],[-119.36405593903083,37.63274792208021],[-119.36408451799052,37.63274583257333],[-119.36411298893829,37.63274295795839],[-119.3641413177835,37.632739301677425],[-119.36416947060563,37.63273486810841],[-119.36419741369498,37.63272966256],[-119.36422511359297,37.632723691265305],[-119.3642525371323,37.632716961374165],[-119.36427965147651,37.63270948094489],[-119.36430642415944,37.632701258934425],[-119.3643328231241,37.63269230518763],[-119.36435881676096,37.63268263042558],[-119.36438437394587,37.63267224623263],[-119.36440946407731,37.63266116504266],[-119.36444277018973,37.632646459793605],[-119.36447670065975,37.63263268690123],[-119.36451121423782,37.63261986310924],[-119.36454626896551,37.63260800400751],[-119.36458182222664,37.63259712401311],[-119.36461783079899,37.632587236352826],[-119.36465425090687,37.63257835304708],[-119.36469103827439,37.63257048489523],[-119.36472814817911,37.63256364146263],[-119.3647655355067,37.63255783106876],[-119.36480315480544,37.63255306077731],[-119.3648409603417,37.632549336387484],[-119.36487890615551,37.63254666242702],[-119.36491694611627,37.63254504214663],[-119.36495503397904,37.632544477516106],[-119.36499312344064,37.63254496922185],[-119.36503116819587,37.63254651666606],[-119.36506912199397,37.63254911796758],[-119.36510693869468,37.63255276996398],[-119.36514457232441,37.632557468215566],[-119.36518197713212,37.63256320701067],[-119.36521910764489,37.6325699793727],[-119.36525591872326,37.63257777706849],[-119.36529236561604,37.63258659061843],[-119.36532840401472,37.632596409307915],[-119.3653639901074,37.63260722120038],[-119.36561660159342,37.632685036111006],[-119.36587163764133,37.63275767746536],[-119.36612893074799,37.632825097552086],[-119.3661615521097,37.63283279443989],[-119.36619448466664,37.63283960175542],[-119.36622769007631,37.63284551157304],[-119.36626112967862,37.632850517012116],[-119.3662947645407,37.63285461224495],[-119.36632855550234,37.632857792503565],[-119.36636246322163,37.63286005408527],[-119.36639644822061,37.632861394356965],[-119.36643047093143,37.63286181175819],[-119.36646449174226,37.63286130580299],[-119.36649847104356,37.63285987708042],[-119.36653236927404,37.63285752725392],[-119.3665661469668,37.632854259059336],[-119.36659976479544,37.63285007630173],[-119.36663318361947,37.632844983850994],[-119.36666636453037,37.63283898763612],[-119.36669926889644,37.63283209463837],[-119.36673185840807,37.632824312883066],[-119.36676409512228,37.63281565143029],[-119.36679594150687,37.63280612036435],[-119.36682736048404,37.63279573078201],[-119.36685831547378,37.63278449477954],[-119.36688877043629,37.63277242543873],[-119.36691868991394,37.63275953681156],[-119.36694803907271,37.63274584390388],[-119.3669767837425,37.6327313626579],[-119.36700489045717,37.63271610993372],[-119.36703232649333,37.63270010348958],[-119.36705905990853,37.632683361961305],[-119.36708505957843,37.632665904840486],[-119.36712319459548,37.632640307912105],[-119.36716241533146,37.63261577055628],[-119.36720267526238,37.63259232187876],[-119.36724392663164,37.63256998969403],[-119.36728612050685,37.63254880049204],[-119.36732920683765,37.632528779407046],[-119.3673731345153,37.632509950187625],[-119.36741785143313,37.63249233516858],[-119.36746330454841,37.63247595524444],[-119.3675094399453,37.632460829844696],[-119.36755620289871,37.63244697691075],[-119.36760353793929,37.6324344128746],[-119.36765138891917,37.63242315263937],[-119.36769969907859,37.63241320956166],[-119.36774841111311,37.6324045954357],[-119.36779746724177,37.63239732047932],[-119.36784680927549,37.632391393321875],[-119.36789637868603,37.63238682099401],[-119.36794611667557,37.63238360891927],[-119.3679959642463,37.63238176090775],[-119.36804586227045,37.63238127915148],[-119.36809575156045,37.63238216422195],[-119.36814557293901,37.632384415069275],[-119.3681952673095,37.63238802902359],[-119.3682447757258,37.63239300179809],[-119.36829403946241,37.632399327494234],[-119.36834300008404,37.63240699860868],[-119.3683915995148,37.6324160060421],[-119.36843978010725,37.632426339110154],[-119.36852047087385,37.632443669575856],[-119.36860185033512,37.63245882709696],[-119.3686838260002,37.63247179444632],[-119.36876630470033,37.63248255688599],[-119.36884919269505,37.63249110218398],[-119.36893239577856,37.63249742062818],[-119.36901581938679,37.632501505037375],[-119.3690993687051,37.632503350769504],[-119.36918294877583,37.63250295572678],[-119.36926646460637,37.63250032035816],[-119.36934982127725,37.632495447658904],[-119.3694329240498,37.63248834316703],[-119.36951567847409,37.63247901495711],[-119.36959799049612,37.63246747363106],[-119.36967976656483,37.63245373230609],[-119.36976091373847,37.63243780659986],[-119.36984133979023,37.63241971461256],[-119.36992095331301,37.632399476906485],[-119.36999966382349,37.63237711648261],[-119.3700773818648,37.63235265875448],[-119.37015401910834,37.63232613151922],[-119.37022948845416,37.63229756492602],[-119.37030370412995,37.63226699144185],[-119.37037658178855,37.63223444581455],[-119.37040487247192,37.63222244481541],[-119.37043262310858,37.63220967116474],[-119.37045980034833,37.63219614021375],[-119.3704863715302,37.63218186822382],[-119.37051230472163,37.63216687234682],[-119.3705375687568,37.63215117060466],[-119.37056213327416,37.632134781867435],[-119.37058596875286,37.632117725830916],[-119.37060904654832,37.63210002299282],[-119.37063133892653,37.63208169462809],[-119.37065281909747,37.63206276276348],[-119.37067346124724,37.63204325015101],[-119.3706932405692,37.63202318024052],[-119.37071213329358,37.632002577151674],[-119.37073011671627,37.631981465644834],[-119.37074716922598,37.631959871091375],[-119.37076327033012,37.63193781944315],[-119.3707784006797,37.6319153372013],[-119.37079254209225,37.63189245138443],[-119.37080567757393,37.63186918949615],[-119.37081779133979,37.63184557949197],[-119.37082886883286,37.63182164974575],[-119.3708388967415,37.63179742901555],[-119.37084786301551,37.63177294640912],[-119.37085575688057,37.63174823134892],[-119.37086256885114,37.63172331353668],[-119.37086829074191,37.6316982229178],[-119.37087291567764,37.6316729896453],[-119.37087643810132,37.63164764404366],[-119.37087885378102,37.63162221657225],[-119.37088015981476,37.63159673778883],[-119.37088035463414,37.63157123831279],[-119.37087943800618,37.63154574878837],[-119.3708774110336,37.631520299847814],[-119.37087427615349,37.63149492207454],[-119.37087003713428,37.631469645966455],[-119.3708646990714,37.63144450189919],[-119.37085826838097,37.631419520089736],[-119.37085075279217,37.631394730560054],[-119.37084216133796,37.63137016310091],[-119.37083250434418,37.6313458472363],[-119.37082179341712,37.63132181218772],[-119.37081004142965,37.631298086839266],[-119.37079726250566,37.631274699702765],[-119.37078347200307,37.6312516788836],[-119.37076868649551,37.631229052046876],[-119.37075292375224,37.63120684638423],[-119.37073620271684,37.63118508858116],[-119.37071854348453,37.63116380478487],[-119.37069996727787,37.631143020572964],[-119.37068049642136,37.63112276092261],[-119.37066015431458,37.63110305018063],[-119.37063896540407,37.63108391203408],[-119.37061695515392,37.63106536948199],[-119.37059415001522,37.631047444807606],[-119.37057057739425,37.63103015955158],[-119.37054626561952,37.6310135344862],[-119.37052124390773,37.63099758959033],[-119.37049554232873,37.63098234402545],[-119.37046919176926,37.63096781611265],[-119.37044222389596,37.63095402331054],[-119.37034885975875,37.63090083429462],[-119.37025779934854,37.630845176444176],[-119.37016914583027,37.63078711281871],[-119.37008299964124,37.63072670920339],[-119.36999945837722,37.63066403403427],[-119.36991861668196,37.63059915832091],[-119.36984056613994,37.63053215556587],[-119.3697653951726,37.63046310168137],[-119.3696931889383,37.63039207490329],[-119.36962402923558,37.63031915570251],[-119.36955799441078,37.63024442669373],[-119.36949515926919,37.63016797254184],[-119.36943559499024,37.630089879865984],[-119.36937936904711,37.63001023714141],[-119.36932654513004,37.62992913459921],[-119.36927718307446,37.629846664124116],[-119.36923133879309,37.62976291915025],[-119.3691890642127,37.62967799455547],[-119.3691535423738,37.62959895598546],[-119.36912139003678,37.62951901018808],[-119.36909264372099,37.629438247994635],[-119.3690673360756,37.629356761163635],[-119.3690454958427,37.62927464227666],[-119.36902714782455,37.62919198463309],[-119.36901231285547,37.62910888214406],[-119.3690010077784,37.62902542922586],[-119.36899324542549,37.62894172069257],[-119.3689890346039,37.62885785164835],[-119.36898838008567,37.62877391737943],[-119.3689912826024,37.62869001324583],[-119.36899773884444,37.628606234573],[-119.36900774146471,37.62852267654354],[-119.3690212790872,37.62843943408904],[-119.36903833631983,37.628356601782244],[-119.36905889377199,37.62827427372966],[-119.36908292807674,37.62819254346455],[-119.36911041191725,37.62811150384072],[-119.36914131405801,37.62803124692707],[-119.36917559938034,37.62795186390296],[-119.36921322892225,37.62787344495461],[-119.36925415992287,37.627796079172775],[-119.369298345871,37.627719854451314],[-119.36941173144503,37.627524047453555],[-119.36951655505878,37.62732524559879],[-119.36961269195763,37.62712368561943],[-119.36970002773407,37.62691960753032],[-119.36977845846336,37.626713254342796],[-119.36984789082717,37.62650487177547],[-119.36990824222427,37.62629470796129],[-119.36995944086856,37.626083013152154],[-119.37005293654238,37.625692917017865],[-119.37016167063845,37.62530532771416],[-119.37028553730208,37.62492062172173],[-119.37042441598508,37.624539172714826],[-119.37044264892555,37.624497155032685],[-119.37046264635235,37.62445564828119],[-119.37048438568539,37.624414699321626],[-119.3705078423781,37.62437435438551],[-119.37053298994505,37.62433465902226],[-119.37055979999202,37.62429565804789],[-119.37058824224795,37.624257395494375],[-119.37061828459922,37.624219914559966],[-119.37064989312582,37.624183257560404],[-119.37068303213967,37.62414746588111],[-119.37078347135461,37.62403562073501],[-119.37088860363629,37.62392653829867],[-119.37099830894515,37.623820343100824],[-119.37111246202272,37.623717156373694],[-119.3712309325346,37.62361709591448],[-119.37135358521925,37.62352027595102],[-119.3713898598693,37.62348991381218],[-119.37142485193205,37.62345861387656],[-119.3714585231089,37.62342641040318],[-119.37149083654722,37.62339333863997],[-119.37152175688058,37.62335943478519],[-119.37155125026747,37.62332473594781],[-119.37157928442842,37.62328928010689],[-119.37160582868123,37.62325310606996],[-119.37163085397457,37.623216253430655],[-119.3716543329198,37.62317876252523],[-119.37167623982094,37.62314067438856],[-119.37169655070271,37.62310203070905],[-119.37171524333688,37.62306287378314],[-119.3717322972665,37.623023246469],[-119.3717476938283,37.62298319213953],[-119.37176141617319,37.62294275463495],[-119.37177821463122,37.62289341253274],[-119.37179715627919,37.622844563960506],[-119.37181821828342,37.62279626779298],[-119.37184137525493,37.62274858223901],[-119.37186659927988,37.62270156477142],[-119.37189385995329,37.62265527205762],[-119.37192312441577,37.622609759891525],[-119.37195435739297,37.62256508312618],[-119.37198752123831,37.62252129560761],[-119.37202257597818,37.62247845011004],[-119.37205947936033,37.622436598272266],[-119.37209818690457,37.62239579053538],[-119.3721386519566,37.62235607608199],[-119.37218082574408,37.62231750277704],[-119.37222465743555,37.622280117109995],[-119.37227009420167,37.62224396413891],[-119.37231708127878,37.622209087436104],[-119.37236556203504,37.62217552903563],[-119.37241547803868,37.62214332938269],[-119.37246676912834,37.622112527284784],[-119.37251937348556,37.62208315986505],[-119.37253019641969,37.62208000205101],[-119.37254087399634,37.622076545314115],[-119.37255139317044,37.62207279387757],[-119.37256174109044,37.62206875232458],[-119.37257190511403,37.62206442559287],[-119.37258187282357,37.622059818968474],[-119.37259163204128,37.62205493807948],[-119.37260117084406,37.62204978888898],[-119.37261047757822,37.62204437768787],[-119.37261954087346,37.62203871108718],[-119.37262834965699,37.622032796009925],[-119.37263689316696,37.62202663968274],[-119.37264516096559,37.62202024962693],[-119.37265314295198,37.62201363364941],[-119.37266082937441,37.62200679983309],[-119.37266821084228,37.621999756527],[-119.37267527833757,37.62199251233614],[-119.37268202322578,37.62198507611088],[-119.37268843726667,37.621977456936285],[-119.37269451262416,37.621969664120826],[-119.37270024187593,37.621961707185186],[-119.37270561802255,37.62195359585054],[-119.37271063449599,37.621945340026706],[-119.37271528516759,37.621936949799974],[-119.37271956435568,37.621928435420855],[-119.37272346683241,37.621919807291555],[-119.37272698783015,37.62191107595327],[-119.37273012304743,37.62190225207322],[-119.37273286865396,37.62189334643173],[-119.37273522129554,37.62188436990898],[-119.37274412566317,37.62185038537349],[-119.37275451286132,37.6218166681618],[-119.37276637028171,37.62178325919447],[-119.37277968353169,37.62175019901794],[-119.37279443645191,37.62171752775524],[-119.37281061113585,37.621685285057374],[-119.37282818795146,37.62165351005516],[-119.37284714556525,37.62162224131184],[-119.37286746096791,37.62159151677601],[-119.37288910950242,37.62156137373595],[-119.37291206489394,37.621531848774104],[-119.37293629928163,37.62150297772268],[-119.37296178325262,37.62147479562035],[-119.3729884858775,37.62144733666956],[-119.37301637474809,37.62142063419509],[-119.37304541601661,37.62139472060368],[-119.37307557443685,37.6213696273445],[-119.37328887812484,37.62119317205456],[-119.37349564586084,37.62101186180603],[-119.37369570310231,37.62082584969376],[-119.37384830420172,37.62068400253145],[-119.37400607118417,37.62054577752476],[-119.3741688682067,37.620411293665576],[-119.37418001731083,37.620402036898746],[-119.37419075965146,37.62039248066327],[-119.37420108252319,37.62038263626173],[-119.37421097371686,37.62037251533757],[-119.37422042153389,37.620362129861334],[-119.37422941480008,37.620351492116335],[-119.37423794287889,37.6203406146844],[-119.37424599568394,37.62032951043071],[-119.37425356369103,37.6203181924888],[-119.3742606379494,37.62030667424489],[-119.37426721009223,37.62029496932212],[-119.37427327234657,37.62028309156443],[-119.3742788175426,37.62027105502012],[-119.37428383912201,37.62025887392535],[-119.37428833114586,37.620246562687214],[-119.37429228830149,37.62023413586672],[-119.37429570590889,37.62022160816156],[-119.37429857992616,37.62020899438877],[-119.37430090695439,37.62019630946715],[-119.3743026842416,37.62018356839964],[-119.374303909686,37.62017078625562],[-119.37430458183849,37.62015797815299],[-119.37430469990439,37.62014515924038],[-119.37430426374432,37.62013234467919],[-119.37430327387443,37.620119549625684],[-119.37430173146579,37.620106789212954],[-119.37429963834293,37.620094078533256],[-119.3742969969817,37.62008143261993],[-119.37429381050649,37.62006886642968],[-119.37429008268623,37.62005639482501],[-119.37428581793027,37.62004403255645],[-119.37428102128291,37.62003179424529],[-119.37426853844397,37.61999995155553],[-119.37425743490543,37.61996778728453],[-119.37424772371077,37.61993533922137],[-119.37423941626761,37.61990264548857],[-119.37423252233432,37.619869744497194],[-119.37422705000854,37.61983667490176],[-119.37422300571765,37.61980347555483],[-119.37422039421125,37.61977018546139],[-119.3742192185556,37.6197368437329],[-119.37421948013002,37.61970348954151],[-119.37422215798897,37.61965125068512],[-119.37422711601643,37.61959911737533],[-119.37423434822071,37.61954715256447],[-119.37424384586396,37.619495419001346],[-119.37425559747288,37.619443979155406],[-119.37426958885251,37.61939289514116],[-119.37428580310345,37.61934222864352],[-119.3743042206422,37.61929204084296],[-119.374324819225,37.619242392341874],[-119.37434757397445,37.6191933430913],[-119.37437245740986,37.61914495231855],[-119.37439943948021,37.61909727845575],[-119.37442848760061,37.6190503790692],[-119.37445956669157,37.619004310789926],[-119.37449263922144,37.61895912924526],[-119.37452766525168,37.618914888991775],[-119.37456460248515,37.618871643449275],[-119.37475283770614,37.61866594344366],[-119.37494877622977,37.61846484675933],[-119.37515224019785,37.61826853587374],[-119.37536304492795,37.61807718892018],[-119.37558099908098,37.617890979526386],[-119.37580590483502,37.61771007665691],[-119.37582604704399,37.617696031393486],[-119.37584556803972,37.617681441683246],[-119.37586444457685,37.61766632489974],[-119.37588265417743,37.61765069904415],[-119.37590017515772,37.617634582723866],[-119.37591698665413,37.617617995130345],[-119.37593306864788,37.617600956016126],[-119.37594840198895,37.61758348567151],[-119.37596296841888,37.61756560490027],[-119.37597675059243,37.61754733499485],[-119.37598973209842,37.617528697711116],[-119.37600189747896,37.61750971524238],[-119.37601323224821,37.61749041019298],[-119.37602372290935,37.61747080555133],[-119.3760333569708,37.61745092466267],[-119.37604212296098,37.61743079120109],[-119.37605001044213,37.61741042914144],[-119.37605701002258,37.61738986273082],[-119.376063113368,37.617369116459564],[-119.37606831321133,37.61734821503224],[-119.37607260336137,37.61732718333811],[-119.37607597871025,37.617306046421554],[-119.37607843523936,37.61728482945223],[-119.37607997002432,37.61726355769509],[-119.37608169557413,37.617239657064005],[-119.37608445894375,37.61721581818013],[-119.37608825682776,37.61719206954941],[-119.3760930846838,37.61716843956991],[-119.37609893673785,37.61714495649774],[-119.3761058059912,37.617121648413274],[-119.37611368422888,37.6170985431877],[-119.37612256202937,37.61707566844957],[-119.37613242877595,37.617053051551764],[-119.37614327266938,37.61703071953888],[-119.37615508074204,37.61700869911483],[-119.37616783887334,37.61698701661085],[-119.37618153180678,37.61696569795415],[-119.37619614316802,37.6169447686368],[-119.37621165548454,37.616924253685326],[-119.3762280502066,37.61690417763074],[-119.37624530772932,37.61688456447917],[-119.37626622772767,37.61686081520625],[-119.37628613470562,37.61683652122198],[-119.37630500626943,37.61681170985646],[-119.3763228211901,37.6167864090218],[-119.37633955942746,37.61676064718072],[-119.3763552021526,37.61673445331452],[-119.37636973176907,37.61670785689053],[-119.37638313193271,37.616680887828814],[-119.3763953875701,37.61665357646875],[-119.37640648489524,37.61662595353462],[-119.3764164114254,37.616598050101274],[-119.37642515599485,37.61656989755904],[-119.37643270876767,37.616541527578455],[-119.37643906124865,37.61651297207461],[-119.37644420629287,37.61648426317133],[-119.37644813811382,37.61645543316489],[-119.37645085228974,37.61642651448783],[-119.37645234576871,37.616397539672334],[-119.37645261687211,37.61636854131381],[-119.37645325059806,37.61630068220245],[-119.37645674343429,37.61623287812063],[-119.3764630914475,37.6161652052717],[-119.37647228749555,37.61609773971132],[-119.37648432123558,37.616030557261986],[-119.37649850722158,37.61596704752027],[-119.37651548650219,37.61590397294565],[-119.37653523815005,37.61584141125268],[-119.37655773782213,37.61577943952381],[-119.37658295778976,37.61571813411447],[-119.37661086697285,37.61565757055887],[-119.37664143097808,37.61559782347698],[-119.37667461214154,37.615538966482724],[-119.37671036957494,37.61548107209309],[-119.37674865921606,37.6154242116389],[-119.37678943388326,37.61536845517696],[-119.37683264333332,37.61531387140368],[-119.3768782343236,37.61526052757046],[-119.37692615067756,37.61520848940092],[-119.37697633335407,37.61515782100982],[-119.37702066430002,37.615113109709924],[-119.37706305644001,37.61506722403612],[-119.37710346065161,37.61502021716282],[-119.3771418301165,37.61497214356366],[-119.37717812037444,37.61492305894836],[-119.37721228937502,37.61487302019811],[-119.37724429752623,37.61482208529968],[-119.37727410774033,37.61477031327822],[-119.37730168547694,37.61471776412885],[-119.3773269987828,37.61466449874713],[-119.37735001832911,37.61461057885842],[-119.37737071744522,37.61455606694649],[-119.37738907214963,37.61450102618098],[-119.37740506117777,37.614445520344255],[-119.37741866600655,37.61438961375745],[-119.37742987087589,37.614333371205994],[-119.37743866280688,37.614276857864425],[-119.37744503161687,37.614220139221],[-119.37744896993118,37.614163281001666],[-119.37745047319166,37.61410634909404],[-119.37744953966185,37.61404940947091],[-119.3774461704292,37.61399252811389],[-119.37744036940347,37.61393577093691],[-119.37743214331242,37.61387920370987],[-119.37742150169392,37.61382289198238],[-119.37740182010329,37.6137383485886],[-119.37737856217987,37.613654381887486],[-119.37735175444554,37.61357108758582],[-119.37732142746795,37.613488560623615],[-119.37728761582575,37.61340689506599],[-119.37725035806908,37.61332618399591],[-119.37720969667555,37.61324651940808],[-119.37716567800186,37.61316799210418],[-119.3771183522308,37.61309069158928],[-119.3770677733141,37.613014705969924],[-119.37701399891091,37.612940121853676],[-119.37695709032198,37.61286702425043],[-119.37691734858457,37.61281600208813],[-119.37687976575556,37.61276395497948],[-119.37684438355738,37.612710940710585],[-119.37681124126888,37.612657018141334],[-119.37678037568179,37.612602247139904],[-119.3767518210599,37.61254668851635],[-119.37672560910096,37.612490403955015],[-119.37670176890157,37.61243345594611],[-119.37668032692494,37.6123759077163],[-119.37666130697144,37.612317823158484],[-119.37664473015222,37.61225926676087],[-119.37663061486579,37.61220030353542],[-119.37661897677769,37.61214099894552],[-119.3766098288031,37.612081418833505],[-119.37660457966696,37.612034173404986],[-119.37660131973436,37.61198681475079],[-119.37660005264887,37.61193939585782],[-119.37660077982427,37.611891969780295],[-119.37660350044324,37.61184458958034],[-119.376608211458,37.611797308268734],[-119.37661490759398,37.61175017874538],[-119.3766235813555,37.61170325374037],[-119.37663422303439,37.61165658575484],[-119.37664682072071,37.61161022700223],[-119.37666136031626,37.611564229349966],[-119.37667782555016,37.61151864426134],[-119.37669619799726,37.61147352273798],[-119.3767164570986,37.611428915262735],[-119.37673858018461,37.61138487174329],[-119.37676254250029,37.61134144145624],[-119.3767883172331,37.61129867299202],[-119.37681587554287,37.61125661420052],[-119.37684518659402,37.611215312137574],[-119.3768762175903,37.61117481301225],[-119.37689574422058,37.61114928481042],[-119.37691413695286,37.61112322910931],[-119.37693137329809,37.6110966777692],[-119.37694743218134,37.61106966325647],[-119.37696229396752,37.6110422186038],[-119.37697594048531,37.61101437736975],[-119.37698835504952,37.61098617359788],[-119.37699952248137,37.61095764177488],[-119.37700942912714,37.610928816788636],[-119.37701806287473,37.61089973388541],[-119.37702541316858,37.61087042862683],[-119.37703147102256,37.61084093684633],[-119.37703622903084,37.610811294605426],[-119.37703968137707,37.61078153814951],[-119.37704182384145,37.610751703863635],[-119.3770426538058,37.61072182822795],[-119.37704155035881,37.61064642875159],[-119.3770373670516,37.610571097638704],[-119.37703010831363,37.61049591448471],[-119.3770197818238,37.61042095872838],[-119.37700639850236,37.61034630956816],[-119.37698997249926,37.610272045878126],[-119.3769705211792,37.610198246124895],[-119.37694806510325,37.61012498828469],[-119.37692262800705,37.6100523497609],[-119.37689423677577,37.60998040730235],[-119.37688589123755,37.60995917487739],[-119.37687847930937,37.609937724323245],[-119.37687200996463,37.60991608161187],[-119.37686649103549,37.60989427294789],[-119.37686192920332,37.609872324736834],[-119.37685832999067,37.609850263553135],[-119.3768556977545,37.609828116108005],[-119.37685403568102,37.609805909217094],[-119.37685334578177,37.60978366976799],[-119.37685362889115,37.60976142468768],[-119.37685488466556,37.60973920090992],[-119.37685711158365,37.6097170253427],[-119.37686030694826,37.60969492483555],[-119.37686446688964,37.60967292614715],[-119.37686958637028,37.60965105591288],[-119.37687565919079,37.60962934061252],[-119.37688267799753,37.60960780653829],[-119.37689063429158,37.60958647976292],[-119.37689951843892,37.609565386108144],[-119.37690931968216,37.60954455111344],[-119.37692002615351,37.609524000005045],[-119.37693162488925,37.60950375766552],[-119.37694410184537,37.609483848603475],[-119.37695744191454,37.60946429692409],[-119.37697162894445,37.60944512629972],[-119.3769866457574,37.60942635994137],[-119.37700247417102,37.609408020570584],[-119.37701909502037,37.609390130391894],[-119.37703648818109,37.60937271106593],[-119.37705463259375,37.60935578368324],[-119.37707350628945,37.609339368738766],[-119.37709811146335,37.6093179764654],[-119.37712177587521,37.60929592269936],[-119.37714447144523,37.6092732336101],[-119.37716617124325,37.609249936120925],[-119.37718684952085,37.609226057877095],[-119.37720648174185,37.609201627212926],[-119.37722504461132,37.60917667311825],[-119.37724251610341,37.609151225203945],[-119.37725887548731,37.60912531366689],[-119.37727410335194,37.60909896925402],[-119.37728818162896,37.60907222322592],[-119.37730109361415,37.6090451073197],[-119.37741509023746,37.60877820518295],[-119.37751738198432,37.6085083182505],[-119.37760784589601,37.60823577127431],[-119.37768637324982,37.60796089220356],[-119.37775286968932,37.60768401179001],[-119.3778072553373,37.607405463189885],[-119.37803489449347,37.60611480757908],[-119.37804025729827,37.606080846015935],[-119.37804415828494,37.60604675849563],[-119.37804659289922,37.60601258483191],[-119.37804755829954,37.60597836493905],[-119.37804705336036,37.605944138785276],[-119.37804507867345,37.60590994634613],[-119.37804163654722,37.605875827557625],[-119.37803673100406,37.605841822269774],[-119.37803036777548,37.60580797019993],[-119.37802255429557,37.60577431088648],[-119.3780132996922,37.60574088364256],[-119.37800261477643,37.60570772751026],[-119.37799051202984,37.60567488121492],[-119.37797700558991,37.605642383119985],[-119.37794065754831,37.60556400882396],[-119.37790097150159,37.60548666618093],[-119.37785799361819,37.60541044514658],[-119.37781177389462,37.605335434371916],[-119.3777623660976,37.60526172110001],[-119.37770982770122,37.605189391064556],[-119.37765421982013,37.60511852839024],[-119.37759560713849,37.605049215494866],[-119.37739913114795,37.604817183184245],[-119.37721234334083,37.60458014073542],[-119.37719757953303,37.604559950882276],[-119.37718366818302,37.60453938142491],[-119.37717062469223,37.604518455137026],[-119.37715846350108,37.60449719518733],[-119.37714719807323,37.60447562511399],[-119.37713684088052,37.604453768798514],[-119.37712740338918,37.60443165043926],[-119.37711889604715,37.604409294524686],[-119.37711132827253,37.60438672580631],[-119.37710470844318,37.60436396927114],[-119.37709904388741,37.60434105011417],[-119.37709434087581,37.60431799371038],[-119.37709060461447,37.60429482558672],[-119.37708783923904,37.60427157139375],[-119.37708604781037,37.604248256877376],[-119.37708523231085,37.60422490785018],[-119.37708539364247,37.60420155016299],[-119.37708653162571,37.604178209676185],[-119.37708864499969,37.604154912231046],[-119.37712020192176,37.60391584407461],[-119.37716132761163,37.60367769841365],[-119.37721198012342,37.603440717613374],[-119.37727210781694,37.603205142851166],[-119.3772883815709,37.60315061851417],[-119.37730695495245,37.60309656134022],[-119.37732780686875,37.60304303270451],[-119.37735091364024,37.602990093382054],[-119.37737624902742,37.6029378034786],[-119.37740378426061,37.60288622236249],[-119.37743348807265,37.602835408597166],[-119.3774653267346,37.60278541987474],[-119.37749926409376,37.60273631295049],[-119.37753526161492,37.60268814357844],[-119.37757327842412,37.60264096644804],[-119.377613271355,37.60259483512204],[-119.37765519499784,37.60254980197581],[-119.37769900175118,37.60250591813778],[-119.37798129207637,37.602225780789],[-119.3782548655638,37.60194022216969],[-119.37851955788736,37.60164941391013],[-119.37859821754608,37.60155737262157],[-119.37867281287471,37.60146321380038],[-119.37874325392569,37.60136705100337],[-119.37880945576272,37.601269000203786],[-119.37887133856294,37.60116917965129],[-119.37892882771318,37.6010677097295],[-119.37898185389987,37.60096471281057],[-119.37903035319256,37.600860313107766],[-119.37907426712103,37.60075463652558],[-119.3791135427455,37.60064781050782],[-119.37914813272062,37.600539963884],[-119.37917799535238,37.600431226713866],[-119.37920309464828,37.600321730130574],[-119.37928356033724,37.59997067040021],[-119.37937928654746,37.59962204341139],[-119.37949015779037,37.59927626898685],[-119.37961604034491,37.59893376350842],[-119.37962414936172,37.59891423862524],[-119.37963310257284,37.598894948666945],[-119.37964288925633,37.598875916732794],[-119.37965349769229,37.598857165613175],[-119.37966491517668,37.598838717762085],[-119.37967712803673,37.59882059527038],[-119.37969012164734,37.598802819839285],[-119.37970388044842,37.59878541275443],[-119.3797183879636,37.598768394860336],[-119.3797336268201,37.59875178653547],[-119.37974957876928,37.59873560766783],[-119.37976622470873,37.59871987763111],[-119.37978354470496,37.5987046152616],[-119.37980151801743,37.59868983883552],[-119.37982012312325,37.59867556604714],[-119.37983933774308,37.59866181398769],[-119.3798591388677,37.59864859912483],[-119.37987950278566,37.59863593728288],[-119.37990040511148,37.598623843624004],[-119.37992182081521,37.598612332629926],[-119.379943724252,37.59860141808465],[-119.37996608919308,37.59859111305796],[-119.37998888885706,37.59858142988976],[-119.38001209594199,37.59857238017528],[-119.38003568265815,37.59856397475123],[-119.3800596207612,37.59855622368278],[-119.38008388158605,37.59854913625155],[-119.38010843608122,37.59854272094446],[-119.3801332548436,37.5985369854436],[-119.38015830815358,37.59853193661701],[-119.38018356601081,37.59852758051044],[-119.38020899816998,37.5985239223402],[-119.38023457417702,37.59852096648675],[-119.38026026340569,37.598518716489664],[-119.38028603509416,37.59851717504319],[-119.38031185838187,37.59851634399316],[-119.38032944417564,37.598515777021305],[-119.38034699459227,37.598514724228956],[-119.380364488438,37.59851318688745],[-119.38038190458737,37.59851116685327],[-119.38039922200872,37.598508666565785],[-119.38041641978975,37.59850568904437],[-119.3804334771625,37.5985022378846],[-119.38045037352862,37.598498317254105],[-119.38046708848425,37.59849393188742],[-119.38048360184452,37.598489087080225],[-119.38049989366807,37.598483788683126],[-119.38051594428111,37.5984780430944],[-119.38053173430112,37.5984718572524],[-119.3805472446602,37.59846523862706],[-119.38056245662833,37.598458195210966],[-119.3805773518357,37.59845073550973],[-119.38059191229515,37.598442868531556],[-119.38060612042369,37.59843460377659],[-119.38061995906385,37.59842595122521],[-119.3806334115044,37.59841692132617],[-119.38064646150043,37.59840752498388],[-119.38065909329309,37.59839777354523],[-119.38067129162853,37.59838767878596],[-119.3806830417764,37.59837725289636],[-119.38069432954752,37.598366508466604],[-119.38070514131117,37.59835545847153],[-119.38071546401143,37.598344116254935],[-119.38072528518298,37.598332495513525],[-119.38073459296614,37.59832061028032],[-119.38074337612125,37.59830847490776],[-119.38075162404215,37.5982961040503],[-119.3807593267691,37.59828351264679],[-119.38076647500066,37.59827071590236],[-119.38077306010506,37.59825772927018],[-119.38077907413054,37.598244568432605],[-119.38078450981497,37.59823124928246],[-119.38085805419232,37.598027107263206],[-119.38092260654456,37.59782104880613],[-119.38097808842139,37.59761332457289],[-119.381024432408,37.59740418724933],[-119.381061582207,37.59719389123821],[-119.38108949270635,37.59698269234958],[-119.38109620359015,37.59693182753663],[-119.381105117902,37.59688117744043],[-119.38111622500513,37.596830802472546],[-119.3811295116474,37.59678076271632],[-119.38114496197723,37.59673111785517],[-119.3811625575624,37.596681927101365],[-119.3811822774122,37.596633249125475],[-119.38120409800236,37.596585141986324],[-119.38122799330317,37.59653766306179],[-119.38125393481064,37.59649086898037],[-119.38128189158031,37.596444815553625],[-119.38131183026438,37.59639955770967],[-119.38134371515133,37.59635514942758],[-119.38137750820867,37.59631164367308],[-119.38141316912821,37.59626909233538],[-119.3814506553742,37.59622754616526],[-119.38148992223402,37.59618705471451],[-119.38153092287163,37.59614766627697],[-119.38157360838326,37.59610942783078],[-119.38161792785593,37.59607238498248],[-119.38166382842807,37.59603658191252],[-119.38171125535257,37.59600206132265],[-119.38176015206213,37.595968864384986],[-119.38181046023668,37.59593703069285],[-119.38186211987296,37.59590659821364],[-119.38191506935611,37.59587760324347],[-119.38221149914565,37.59572575907869],[-119.38251297667342,37.59558034373277],[-119.38281928177356,37.595441463387495],[-119.38286871026422,37.59541888125173],[-119.38291715817164,37.595394991576455],[-119.38296457088533,37.59536982129052],[-119.3830108949618,37.59534339876643],[-119.38305607818485,37.59531575378813],[-119.38310006962448,37.59528691751748],[-119.38314281969424,37.595256922459185],[-119.38318428020712,37.595225802424125],[-119.38322440442995,37.59519359249119],[-119.38326314713595,37.59516032896782],[-119.38330046465583,37.59512604934896],[-119.38333631492696,37.59509079227493],[-119.38337065754075,37.59505459748774],[-119.3834034537882,37.59501750578633],[-119.38343466670362,37.59497955898064],[-119.38346426110614,37.59494079984439],[-119.38348034159155,37.59491975887275],[-119.38349732174605,37.59489917026593],[-119.38351518149042,37.59487905836938],[-119.38353389970537,37.594859446964726],[-119.38355345425657,37.59484035924186],[-119.38357382202075,37.59482181777135],[-119.38359497891317,37.59480384447785],[-119.38361689991599,37.59478646061413],[-119.38363955910786,37.59476968673604],[-119.38366292969467,37.59475354267802],[-119.3836869840411,37.59473804752984],[-119.38371169370342,37.594723219613904],[-119.38373702946305,37.59470907646364],[-119.38376296136111,37.59469563480276],[-119.38378945873384,37.594682910525506],[-119.38381649024895,37.59467091867781],[-119.38384402394254,37.594659673439516],[-119.38387202725697,37.594649188107645],[-119.38390046707931,37.59463947508067],[-119.38392930978057,37.59463054584382],[-119.3839585212554,37.59462241095553],[-119.38398806696233,37.59461508003495],[-119.38401791196483,37.594608561750555],[-119.38404802097249,37.59460286380993],[-119.38407835838265,37.59459799295063],[-119.38410888832273,37.59459395493226],[-119.3841395746924,37.59459075452957],[-119.3841703812064,37.59458839552686],[-119.38420127143746,37.5945868807136],[-119.38423220885933,37.594586211880944],[-119.38426315688992,37.59458638981975],[-119.38427923443248,37.59458648656168],[-119.38429530693607,37.59458615200387],[-119.38431135613152,37.594585386526624],[-119.38432736377614,37.59458419100001],[-119.38434331167448,37.59458256678296],[-119.38435918169903,37.59458051572166],[-119.38437495581073,37.59457804014754],[-119.38439061607961,37.59457514287449],[-119.38440614470511,37.59457182719574],[-119.38442152403628,37.59456809688016],[-119.38443673659192,37.59456395616788],[-119.38445176508031,37.59455940976553],[-119.3844665924191,37.59455446284088],[-119.38448120175448,37.59454912101696],[-119.38449557648052,37.59454339036566],[-119.38450970025791,37.59453727740084],[-119.38452355703265,37.594530789070916],[-119.38453713105423,37.59452393275104],[-119.38455040689352,37.594516716234494],[-119.38464202170641,37.594463264906025],[-119.38473137030456,37.594407437591606],[-119.38481835540777,37.59434929507764],[-119.38490288230989,37.594288900671245],[-119.38498485898204,37.59422632013129],[-119.38506419617269,37.59416162159684],[-119.38514080750505,37.59409487551282],[-119.38521460957082,37.59402615455347],[-119.38528552202119,37.593955533543],[-119.38535346765428,37.59388308937428],[-119.38547431558469,37.59374490147814],[-119.38558930214582,37.593603582415575],[-119.38569829934787,37.593459289528056],[-119.38580118587156,37.593312183467084],[-119.3858978472031,37.59316242801537],[-119.38598817576161,37.59301018990428],[-119.38607207101875,37.59285563862836],[-119.38614943961046,37.592698946256355],[-119.38622019544079,37.59254028723979],[-119.38638580470938,37.592125857977855],[-119.38653419440368,37.59170731883142],[-119.38666520425588,37.591285122664154],[-119.38677869281088,37.59085972628906],[-119.38680794834566,37.590728504299214],[-119.38683152961879,37.59059656093814],[-119.38684940890174,37.59046405152325],[-119.38686156517846,37.59033113203747],[-119.38686798417001,37.59019795894561],[-119.38686865835115,37.59006468901013],[-119.3868635869591,37.58993147910675],[-119.3868527759943,37.589798486039584],[-119.38683623821325,37.58966586635674],[-119.38681399311318,37.58953377616596],[-119.3867860669092,37.58940237095091],[-119.38675249250302,37.58927180538816],[-119.38671330944436,37.58914223316505],[-119.38658782870041,37.5887782804546],[-119.3864491738564,37.58841736776359],[-119.3862974610919,37.58805979700656],[-119.38624567270932,37.587949367517275],[-119.38618916745426,37.587840412493705],[-119.38612801149293,37.58773305947975],[-119.38606227643471,37.58762743414348],[-119.3859920392484,37.58752366012992],[-119.38591738217193,37.58742185891651],[-119.38583839261608,37.58732214967081],[-119.38575516306204,37.5872246491111],[-119.38566779095324,37.58712947136973],[-119.38557637858104,37.587036727859555],[-119.38548103296505,37.58694652714364],[-119.38538186572784,37.58685897480806],[-119.38527899296422,37.58677417333844],[-119.3851725351053,37.58669222200002],[-119.3851332113227,37.58666195324021],[-119.38509520819402,37.5866306344227],[-119.3850585699694,37.58659830201591],[-119.38502333930948,37.58656499366844],[-119.38498955723568,37.586530748165266],[-119.38495726308254,37.58649560538255],[-119.38492649445185,37.58645960624122],[-119.3848972871689,37.58642279265928],[-119.38486967524076,37.586385207503035],[-119.38484369081672,37.58634689453716],[-119.38481936415084,37.58630789837371],[-119.38479672356668,37.58626826442024],[-119.38477579542445,37.58622803882683],[-119.38475660409019,37.58618726843245],[-119.38473917190753,37.586146000710315],[-119.38472351917162,37.58610428371265],[-119.38470966410551,37.58606216601479],[-119.38469762283897,37.58601969665854],[-119.38468740938967,37.58597692509504],[-119.38467903564698,37.585933901127326],[-119.384672511358,37.58589067485215],[-119.38466784411635,37.58584729660184],[-119.38466503935327,37.585803816885516],[-119.38466410033128,37.585760286330384],[-119.38466502814053,37.58571675562278],[-119.38466782169743,37.5856732754491],[-119.38467247774594,37.5856298964368],[-119.38467899086139,37.58558666909551],[-119.38468735345685,37.58554364375816],[-119.38469755579196,37.58550087052232],[-119.384844437103,37.584980605969605],[-119.38501262006292,37.58446444255005],[-119.38520192430099,37.58395293248005],[-119.38569392431097,37.5828943736254],[-119.38614987493119,37.581825642517366],[-119.38619230685947,37.581709847880724],[-119.38622968908292,37.58159295620931],[-119.38626197703623,37.58147510693051],[-119.38628913223101,37.58135644061319],[-119.38631112230173,37.581237098800095],[-119.38632792104409,37.581117223839136],[-119.38633950844617,37.58099695871328],[-119.38634587071219,37.58087644687037],[-119.3863470002789,37.580755832051686],[-119.38634289582447,37.58063525812071],[-119.38633356226978,37.580514868891456],[-119.38631901077272,37.58039480795696],[-119.38629925871449,37.58027521851796],[-119.38627432967895,37.580156243212194],[-119.38624425342422,37.58003802394418],[-119.38620906584718,37.579920701716055],[-119.38616880894047,37.57980441645936],[-119.38612353074235,37.57968930686822],[-119.38608657814271,37.57950531891487],[-119.38604202038408,37.579322401116706],[-119.38598990601243,37.579140752534414],[-119.38593029179592,37.57896057084613],[-119.38586324266309,37.57878205213213],[-119.38578883163188,37.57860539066167],[-119.38570713973002,37.578430778681515],[-119.3856182559065,37.57825840620679],[-119.38552227693475,37.578088460814264],[-119.38541930730709,37.577921127438266],[-119.38530945912076,37.57775658816952],[-119.38519285195586,37.577595022057054],[-119.38502831694514,37.577403057842844],[-119.38485680271489,37.577215003221994],[-119.38467845587107,37.57703101888161],[-119.38449342885447,37.57685126202975],[-119.38430187981042,37.576675886261114],[-119.38426871469515,37.576645348626585],[-119.38423690655794,37.57661390986406],[-119.38420649402174,37.57658160814961],[-119.38417751401458,37.57654848270718],[-119.3841500017249,37.57651457376091],[-119.38412399055873,37.57647992248626],[-119.38409951209918,37.57644457096006],[-119.384076596068,37.576408562109386],[-119.38405527028968,37.576371939659474],[-119.38403556065747,37.57633474808052],[-119.3840174911021,37.576297032533766],[-119.38400108356267,37.57625883881665],[-119.38398635796,37.57622021330716],[-119.38397333217246,37.57618120290753],[-119.38396202201437,37.57614185498728],[-119.38395244121664,37.57610221732572],[-119.38394460141025,37.57606233805389],[-119.38393760633687,37.57602676394687],[-119.38392905509558,37.575991405891905],[-119.38391895811411,37.57595630699723],[-119.38390732770479,37.57592151005501],[-119.38389417804945,37.575887057489304],[-119.383879525182,37.575852991304174],[-119.38386338696907,37.57581935303256],[-119.38384578308808,37.57578618368569],[-119.38382673500328,37.57575352370303],[-119.38380626593958,37.5757214129029],[-119.38378440085427,37.575689890434134],[-119.38376116640646,37.575658994728144],[-119.38373659092468,37.57562876345224],[-119.38371070437235,37.57559923346357],[-119.3836835383111,37.575570440764224],[-119.38365512586255,37.5755424204575],[-119.38362550166755,37.575515206704836],[-119.38359470184432,37.57548883268438],[-119.38356276394418,37.575463330550434],[-119.38352377551998,37.575432212960976],[-119.38348615718823,37.57540004479005],[-119.383449953609,37.575366864228826],[-119.38341520776252,37.57533271067043],[-119.3833819608982,37.575297624663115],[-119.38335025248563,37.575261647862106],[-119.38332012016772,37.57522482298007],[-119.38329159971609,37.57518719373661],[-119.38326472498844,37.57514880480613],[-119.38323952788863,37.575109701764916],[-119.38321603832851,37.57506993103697],[-119.38319428419265,37.575029539838916],[-119.38317429130511,37.574988576124],[-119.38315608339889,37.574947088524986],[-119.38313968208766,37.57490512629661],[-119.38312510684024,37.574862739256965],[-119.38311237495739,37.5748199777284],[-119.38310150155134,37.57477689247783],[-119.3830924995278,37.57473353465632],[-119.3830853795708,37.57468995573852],[-119.38308015012981,37.57464620746144],[-119.38307681740991,37.57460234176306],[-119.38307538536435,37.574558410720705],[-119.3830758556899,37.574514466489134],[-119.38307822782483,37.574470561238726],[-119.3831075329673,37.57394778388293],[-119.38311631148623,37.57342453307105],[-119.38310455525054,37.57290131924488],[-119.38307227616086,37.57237865279944],[-119.38301950613634,37.57185704358521],[-119.38301846790405,37.57184502980281],[-119.38301795475567,37.5718329945611],[-119.38301796731066,37.571820952394965],[-119.38301850555362,37.571808917847676],[-119.38301956883423,37.571796905453255],[-119.38302115586814,37.571784929719016],[-119.38302326473845,37.57177300510795],[-119.38302589289806,37.571761146021316],[-119.38302903717269,37.57174936678122],[-119.38303269376479,37.57173768161337],[-119.38303685825808,37.57172610462981],[-119.38304152562291,37.57171464981195],[-119.38304669022236,37.57170333099365],[-119.38305234581895,37.57169216184451],[-119.38305848558227,37.5716811558534],[-119.38306510209716,37.57167032631209],[-119.3830721873728,37.57165968629929],[-119.38307973285215,37.5716492486648],[-119.38308772942246,37.57163902601401],[-119.38309616742619,37.57162903069264],[-119.38310503667276,37.57161927477195],[-119.38311432645071,37.57160977003398],[-119.38312402554078,37.5716005279574],[-119.38313412222938,37.5715915597038],[-119.38314460432278,37.57158287610394],[-119.3831554591618,37.57157448764486],[-119.3831666736371,37.57156640445716],[-119.38322031777257,37.57152802871816],[-119.38327262753832,37.571488503212784],[-119.38332356405115,37.57144785732295],[-119.38337308944894,37.57140612126342],[-119.3835685859185,37.57123069356819],[-119.38375618556697,37.571049886005376],[-119.38393565492724,37.57086392364523],[-119.38410677065787,37.57067303797307],[-119.38426931982092,37.57047746660095],[-119.38442310014682,37.570277452971716],[-119.38456792028592,37.57007324605589],[-119.38470360004642,37.56986510004159],[-119.3847177001388,37.569839638877184],[-119.38473287682761,37.56981457293693],[-119.3847491126552,37.569789931052355],[-119.38476638894562,37.569765741567196],[-119.38478468582628,37.56974203230483],[-119.38480398225065,37.569718830536196],[-119.38482425602267,37.56969616294851],[-119.38484548382212,37.56967405561453],[-119.3848676412315,37.56965253396257],[-119.38489070276411,37.569631622747245],[-119.38491919047165,37.569607504826244],[-119.38494870321703,37.56958418087835],[-119.38497920609383,37.56956167848933],[-119.38501066302466,37.5695400242734],[-119.38504303680388,37.569519243841455],[-119.38507628914155,37.569499361770994],[-119.38511038070874,37.56948040157696],[-119.385145271184,37.56946238568397],[-119.38518091930119,37.569445335399784],[-119.38521728289807,37.569429270890076],[-119.38525431896635,37.56941421115466],[-119.38529198370239,37.56940017400494],[-119.3853347013882,37.56938424133884],[-119.3853766927208,37.569367129001094],[-119.38541790630104,37.569348857938074],[-119.38545829168193,37.569329450514566],[-119.38549779943031,37.569308930486194],[-119.38553638118748,37.56928732297056],[-119.38557398972821,37.5692646544163],[-119.38561057901876,37.56924095257085],[-119.38618778055516,37.56884081487688],[-119.38621702353115,37.56881918059309],[-119.38624535881404,37.56879679410205],[-119.38627275588141,37.56877367951879],[-119.38629918522156,37.56874986174275],[-119.38632461836539,37.56872536643076],[-119.38634902791695,37.568700219969514],[-119.386372387583,37.568674449447094],[-119.38639467220132,37.568648082623795],[-119.38681737628814,37.56818746690594],[-119.38684701888683,37.568132348977585],[-119.38687442298765,37.568076501915705],[-119.38689956033974,37.56801998330336],[-119.38692240502957,37.5679628514159],[-119.38694293350771,37.567905165160916],[-119.38696112461308,37.56784698401742],[-119.38696563184786,37.567795638626954],[-119.38697227674695,37.56774444053657],[-119.38698105198945,37.567693446119314],[-119.3869919479088,37.56764271152382],[-119.38700495250347,37.56759229261248],[-119.38702005145025,37.56754224490007],[-119.38703722811998,37.56749262349247],[-119.38705646359588,37.56744348302609],[-119.38707773669448,37.56739487760768],[-119.38710102398878,37.56734686075478],[-119.38712629983426,37.56729948533676],[-119.38715353639702,37.567252803516624],[-119.3871827036845,37.56720686669362],[-119.3872186269071,37.56716271115876],[-119.3872525962508,37.56711758647612],[-119.38728457049847,37.56707154740319],[-119.38731451085404,37.56702464980683],[-119.38734238098985,37.56697695059572],[-119.38736814709046,37.56692850765106],[-119.3873917778939,37.56687937975649],[-119.38741324472936,37.56682962652665],[-119.38743252155217,37.56677930833492],[-119.38744958497527,37.56672848624008],[-119.38746441429753,37.56667722191227],[-119.38747699152897,37.566625577558106],[-119.38752589099114,37.56637829200953],[-119.38756361677086,37.56612976950463],[-119.38759012043495,37.56588032984012],[-119.38760034032124,37.56578359438341],[-119.38761479645602,37.56568720189118],[-119.38763347119949,37.56559126987531],[-119.38765634176914,37.5654959152858],[-119.3876833802677,37.56540125436831],[-119.38771455371713,37.56530740252244],[-119.38774982409906,37.56521447416096],[-119.38778914840098,37.56512258257048],[-119.38783247866895,37.56503183977323],[-119.387879762066,37.5649423563907],[-119.38793094093668,37.564854241508556],[-119.38798595287734,37.564767602543824],[-119.38807784453546,37.56462341125058],[-119.38816390114093,37.564476956291244],[-119.38824403484024,37.564328387237616],[-119.38831816383039,37.56417785581976],[-119.38838621244221,37.56402551577085],[-119.38844811121761,37.5638715226703],[-119.38849097798509,37.56376430721951],[-119.38853771447441,37.56365812138236],[-119.38858828172347,37.563553053643794],[-119.38864263757863,37.56344919155662],[-119.38870073672959,37.56334662166858],[-119.38872843253135,37.56330148669914],[-119.3887579660643,37.5632570961606],[-119.38878930578964,37.563213497452615],[-119.38882241824017,37.56317073712925],[-119.38885726805592,37.563128860849275],[-119.38889381802197,37.56308791332741],[-119.38893202910829,37.56304793828664],[-119.38897186051126,37.5630089784114],[-119.38901326969737,37.56297107530217],[-119.38905621244852,37.56293426943094],[-119.38910064290937,37.56289860009804],[-119.38914651363629,37.56286410539017],[-119.38916407825229,37.56285089076643],[-119.38918108324783,37.56283722016473],[-119.38919750995312,37.56282310859424],[-119.38921334033334,37.562808571548295],[-119.38922855700838,37.562793624987385],[-119.389243143272,37.562778285321535],[-119.3892570831101,37.56276256939245],[-119.38927036121837,37.56274649445482],[-119.38928296301897,37.56273007815759],[-119.3892948746767,37.562713338524404],[-119.38930608311406,37.56269629393393],[-119.38931657602568,37.562678963099614],[-119.38932634189173,37.5626613650492],[-119.38933536999075,37.562643519103716],[-119.38934365041116,37.56262544485643],[-119.38938211726817,37.562531789620664],[-119.38941653032381,37.56243714016996],[-119.38944684917999,37.56234160765773],[-119.38947303824702,37.56224530427412],[-119.38949506678559,37.56214834311401],[-119.38951290894263,37.56205083804435],[-119.38952654378163,37.56195290357044],[-119.38953595530721,37.56185465470129],[-119.38954113248369,37.56175620681479],[-119.38954206924814,37.561657675521985],[-119.38953876451727,37.561559176531475],[-119.38953122218875,37.561460825513485],[-119.38951945113648,37.56136273796396],[-119.38950346520011,37.56126502906901],[-119.3894832831687,37.561167813569696],[-119.38945892875859,37.56107120562716],[-119.38943043058543,37.56097531868865],[-119.38939782213065,37.56088026535439],[-119.38936114170185,37.560786157245154],[-119.38932043238795,37.56069310487141],[-119.38927574200835,37.56060121750342],[-119.38922712305688,37.560510603043056],[-119.38917463263995,37.560421367896964],[-119.38911833240957,37.56033361685183],[-119.3890582884907,37.5602474529511],[-119.38899457140387,37.56016297737425],[-119.38892725598191,37.5600802893178],[-119.38885642128247,37.55999948587894],[-119.38878215049473,37.55992066194155],[-119.38870453084208,37.55984391006474],[-119.38862365347931,37.559769320374244],[-119.38853961338583,37.55969698045657],[-119.3884525092539,37.55962697525623],[-119.38839976419646,37.55958456454816],[-119.38834890105645,37.55954072126017],[-119.3882999811894,37.559495498282715],[-119.38825306360627,37.55944895017061],[-119.38820820490228,37.55940113307707],[-119.38816545918856,37.55935210468611],[-119.38812487802694,37.55930192414285],[-119.38808651036777,37.55925065198216],[-119.38805040249088,37.559198350055674],[-119.38801659794971,37.55914508145713],[-119.3879851375189,37.55909091044628],[-119.387956059145,37.559035902371335],[-119.38792939790078,37.5589801235901],[-119.387905185943,37.55892364139004],[-119.3878834524735,37.55886652390695],[-119.38786422370407,37.558808840042865],[-119.38784752282491,37.55875065938286],[-119.3878333699766,37.55869205211118],[-119.38782178222588,37.55863308892651],[-119.38781277354508,37.55857384095675],[-119.38780635479523,37.558514379673106],[-119.3878025337131,37.55845477680394],[-119.38780131490185,37.55839510424834],[-119.38780269982546,37.55833543398915],[-119.38780668680705,37.558275838006395],[-119.3877454851919,37.55724270546052],[-119.38764982969259,37.55621123183809],[-119.38751978925914,37.555182145231534],[-119.3874599614922,37.55493326562561],[-119.38741113606413,37.55468286845986],[-119.38737337295555,37.554431261910075],[-119.38737181103029,37.55441648833561],[-119.38737089612083,37.55440168042407],[-119.38737062933622,37.55438685613038],[-119.38737101099947,37.55437203342924],[-119.38737204064748,37.55435723029349],[-119.38737371703137,37.55434246467216],[-119.38737603811809,37.55432775446883],[-119.38737900109297,37.55431311751988],[-119.38738260236292,37.55429857157283],[-119.38738683756098,37.554284134264854],[-119.38739170155158,37.55426982310139],[-119.38739718843668,37.554255655434915],[-119.38740329156302,37.554241648443934],[-119.3874100035301,37.55422781911208],[-119.38741731619932,37.55421418420755],[-119.3874252207036,37.554200760262844],[-119.38743370745834,37.554187563554635],[-119.387442766173,37.554174610084054],[-119.38745238586347,37.55416191555728],[-119.38746255486552,37.55414949536656],[-119.3874732608489,37.554137364571446],[-119.38748449083229,37.55412553788062],[-119.38749623119897,37.55411402963406],[-119.38750846771349,37.554102853785515],[-119.38752118553874,37.55409202388579],[-119.38757914160622,37.5540459052058],[-119.38763897177607,37.554001329255726],[-119.3877006112906,37.55395834428031],[-119.38776399343413,37.55391699680235],[-119.38782904960534,37.55387733157218],[-119.38789570939143,37.553839391519496],[-119.3879639006443,37.55380321770669],[-119.38803354955874,37.55376884928452],[-119.38835761666869,37.55362042097126],[-119.38868760466171,37.55348050635451],[-119.38902316079206,37.55334925498489],[-119.38910081200669,37.55332137515268],[-119.3891795862525,37.55329556945424],[-119.38925939615328,37.55327186651284],[-119.3893401531844,37.553250292619346],[-119.38942176777091,37.55323087170316],[-119.38950414938694,37.55321362530557],[-119.389587206656,37.55319857255595],[-119.38967084745235,37.55318573015046],[-119.38975497900326,37.55317511233364],[-119.38983950799164,37.553166730882566],[-119.38992434065983,37.55316059509372],[-119.39000938291335,37.553156711772786],[-119.39007676688585,37.55315544808832],[-119.39014416574403,37.55315601831561],[-119.3902115007691,37.553158421788694],[-119.39027869331676,37.553162655700405],[-119.39034566490918,37.55316871510573],[-119.39041233732645,37.55317659292752],[-119.39047863269809,37.553186279964876],[-119.39054447359385,37.553197764903736],[-119.39060978311426,37.5532110343302],[-119.39067448498028,37.553226072746114],[-119.3907751031839,37.55324943389842],[-119.39087668029183,37.55326999729155],[-119.39097909360831,37.55328773808665],[-119.39108221942732,37.55330263485441],[-119.39118593318184,37.553314669600766],[-119.39129010959455,37.55332382778879],[-119.39139462282904,37.55333009835608],[-119.391499346642,37.55333347372835],[-119.39160415453563,37.55333394982846],[-119.3917089199106,37.553331526081315],[-119.39185153787314,37.55332439484117],[-119.39199378823646,37.55331356773673],[-119.39213551993082,37.553299056266404],[-119.39227658243752,37.553280875841345],[-119.39241682594884,37.553259045769096],[-119.39255610152718,37.55323358923317],[-119.39269426126333,37.553204533268286],[-119.39283115843355,37.553171908731755],[-119.39296664765556,37.55313575027059],[-119.39310058504277,37.55309609628483],[-119.39323282835744,37.55305298888664],[-119.39336323716154,37.55300647385557],[-119.39345004987268,37.55297266945819],[-119.39353533344486,37.55293648193444],[-119.39361898470682,37.55289795506284],[-119.3937009024625,37.55285713545198],[-119.39378098761348,37.55281407248401],[-119.39385914327887,37.55276881825497],[-119.39393527491245,37.552721427511656],[-119.39400929041719,37.55267195758552],[-119.39408110025651,37.55262046832311],[-119.3941506175628,37.55256702201381],[-119.39421775824232,37.55251168331441],[-119.39428244107697,37.55245451917086],[-119.39434458782267,37.552395598737306],[-119.39440412330379,37.5523349932924],[-119.39449566561083,37.55223481112234],[-119.39458277490623,37.55213215415867],[-119.3946653457525,37.55202714667952],[-119.39474327820788,37.5519199158081],[-119.394816477947,37.551810591358674],[-119.39488485637521,37.551699305679534],[-119.39494833073567,37.55158619349254],[-119.39500682420943,37.551471391730175],[-119.39506026600834,37.55135503936961],[-119.39510859146073,37.551237277264555],[-119.39515174208942,37.55111824797461],[-119.39519655953244,37.55097683105205],[-119.39523551603685,37.550834317976296],[-119.39526856955999,37.55069086267386],[-119.39529568443554,37.55054662008804],[-119.39531683141202,37.5504017460115],[-119.39533198768407,37.55025639691821],[-119.39534113691711,37.55011072979411],[-119.39534199713084,37.550069456627305],[-119.39534110083405,37.550028183947035],[-119.39533844905839,37.54998695912632],[-119.3953340448505,37.54994582948312],[-119.39532789326847,37.54990484222612],[-119.39532000137594,37.54986404440042],[-119.39531037823402,37.54982348283373],[-119.39529903489093,37.5497832040824],[-119.39528598436932,37.54974325437816],[-119.39527124165117,37.549703679574954],[-119.39525482366074,37.54966452509633],[-119.39523674924497,37.54962583588339],[-119.39521703915204,37.54958765634308],[-119.39519571600736,37.5495500302973],[-119.39517280428775,37.54951300093258],[-119.39514833029315,37.54947661075053],[-119.39512232211658,37.549440901519084],[-119.39509480961186,37.54940591422449],[-119.39506582435928,37.54937168902438],[-119.39503539962935,37.5493382652016],[-119.39503114292567,37.54933358545503],[-119.39502709197382,37.54932879133507],[-119.39502325161716,37.54932388857361],[-119.39501962644727,37.549318883032505],[-119.3950162207984,37.54931378069647],[-119.39501303874239,37.54930858766599],[-119.39501008408374,37.54930331014991],[-119.39500736035497,37.549297954458176],[-119.39500487081266,37.54929252699409],[-119.39500261843325,37.54928703424685],[-119.39500060590969,37.549281482783734],[-119.39499883564812,37.549275879242124],[-119.39499730976505,37.549270230321696],[-119.3949960300848,37.54926454277645],[-119.39499499813735,37.54925882340646],[-119.39499421515639,37.54925307904995],[-119.39499368207804,37.549247316574935],[-119.39499339953963,37.549241542871115],[-119.39499336787885,37.54923576484164],[-119.39499358713356,37.549229989394824],[-119.3949940570415,37.54922422343585],[-119.39499477704084,37.54921847385862],[-119.3949957462706,37.54921274753739],[-119.39499696357198,37.549207051318646],[-119.39499842748944,37.54920139201285],[-119.3950001362727,37.54919577638638],[-119.39500208787861,37.54919021115331],[-119.39500427997376,37.549184702967544],[-119.39500670993723,37.549179258414725],[-119.39500937486362,37.54917388400446],[-119.39501227156673,37.54916858616243],[-119.39501539658312,37.549163371222804],[-119.39501874617645,37.54915824542064],[-119.39502231634185,37.5491532148844],[-119.39502610281077,37.54914828562866],[-119.395030101056,37.549143463546905],[-119.39503430629718,37.54913875440444],[-119.39503871350638,37.549134163831575],[-119.39504331741432,37.549129697316864],[-119.39504811251646,37.54912536020051],[-119.39505309307971,37.549121157668026],[-119.39505825314917,37.549117094743984],[-119.39506358655545,37.54911317628607],[-119.39506908692181,37.54910940697923],[-119.39507474767196,37.54910579133007],[-119.39508056203782,37.549102333661494],[-119.39508652306762,37.549099038107556],[-119.39515763418068,37.54906235185227],[-119.39523006957403,37.54902734652692],[-119.39530376658655,37.54899405241243],[-119.39537866146611,37.548962498309386],[-119.39545468942455,37.54893271151321],[-119.39548031340657,37.54892346562994],[-119.39550631895432,37.54891492174537],[-119.39553267574018,37.5489070898234],[-119.39555935302697,37.548899978997525],[-119.39558631970371,37.54889359756036],[-119.39561354432205,37.54888795295384],[-119.39564099513275,37.54888305176071],[-119.3956686401229,37.548878899696696],[-119.39569644705313,37.5488755016039],[-119.39572438349516,37.548872861445126],[-119.39575241686981,37.54887098229932],[-119.39578051448473,37.54886986635793],[-119.39580864357279,37.548869514922345],[-119.39583677133011,37.548869928402425],[-119.3958648649543,37.54887110631594],[-119.39589289168288,37.54887304728926],[-119.39592081883126,37.5488757490588],[-119.39594861383108,37.54887920847383],[-119.39597624426804,37.54888342149995],[-119.39600367791971,37.548888383224],[-119.39603088279311,37.548894087859644],[-119.39605782716215,37.548900528754174],[-119.39607002698207,37.548903443747044],[-119.39608234549586,37.54890602296523],[-119.39609476812979,37.54890826335734],[-119.39610728018702,37.548910162272804],[-119.39611986686484,37.54891171746508],[-119.39613251327235,37.54891292709427],[-119.39614520444789,37.54891378972928],[-119.39615792537691,37.54891430434958],[-119.39617066100956,37.548914470346304],[-119.39618339627874,37.54891428752306],[-119.39619611611765,37.54891375609618],[-119.39620880547778,37.548912876694345],[-119.39622144934673,37.54891165035797],[-119.39623403276586,37.548910078537894],[-119.39624654084808,37.5489081630937],[-119.39625895879543,37.54890590629149],[-119.39627127191655,37.54890331080123],[-119.39628346564419,37.54890037969356],[-119.39629552555228,37.54889711643621],[-119.39630743737307,37.54889352488985],[-119.39631918701404,37.548889609303515],[-119.39633076057461,37.54888537430966],[-119.39634214436242,37.54888082491854],[-119.39635332490963,37.548875966512455],[-119.39636428898896,37.54887080483921],[-119.39637502362912,37.54886534600547],[-119.39638551613037,37.54885959646938],[-119.39639575407939,37.54885356303307],[-119.39640572536398,37.54884725283451],[-119.39641541818754,37.548840673339114],[-119.39642482108282,37.54883383233087],[-119.39643392292567,37.54882673790318],[-119.39644271294803,37.54881939844923],[-119.39645118075079,37.5488118226521],[-119.39645931631608,37.54880401947447],[-119.39646711001907,37.54879599814805],[-119.39647455263942,37.54878776816259],[-119.39648163537208,37.54877933925471],[-119.39648834983787,37.54877072139638],[-119.39649468809324,37.548761924783086],[-119.39650064263978,37.54875295982184],[-119.39650620643296,37.548743837118735],[-119.39651137289061,37.54873456746655],[-119.39651613590067,37.54872516183186],[-119.3965204898283,37.54871563134216],[-119.39652592811868,37.54870373025666],[-119.39653187964149,37.548691985890244],[-119.39653833728872,37.5486804122689],[-119.39654529334801,37.54866902321457],[-119.39655273951172,37.54865783232887],[-119.39656066688697,37.548646852976674],[-119.39656906600608,37.548636098270265],[-119.39657792683815,37.54862558105368],[-119.39658723880069,37.54861531388719],[-119.39659699077268,37.548605309032546],[-119.39660717110745,37.54859557843819],[-119.39661776764683,37.548586133725024],[-119.39662876773562,37.54857698617249],[-119.39664015823669,37.54856814670524],[-119.39665192554659,37.54855962587987],[-119.39666405561202,37.5485514338725],[-119.39667653394632,37.54854358046653],[-119.39668934564705,37.54853607504096],[-119.39670247541353,37.54852892655926],[-119.39671590756537,37.548522143558564],[-119.39672962606096,37.54851573413955],[-119.39689053179859,37.54844609356318],[-119.39705406639999,37.54838044986636],[-119.39722007330154,37.548318865891964],[-119.39738839357398,37.54826140059624],[-119.39755886607468,37.54820810899235],[-119.39763131838438,37.54818762394111],[-119.39770462406543,37.54816916362649],[-119.3977786938928,37.548152750517566],[-119.39785343771156,37.548138404591676],[-119.39792876454665,37.54812614331],[-119.39800458271347,37.54811598159643],[-119.39808079992952,37.548107931819295],[-119.39815732342679,37.548102003776435],[-119.39823406006441,37.54809820468318],[-119.39831091644228,37.548096539163595],[-119.39838779901453,37.54809700924487],[-119.39846461420339,37.54809961435488],[-119.3985412685131,37.54810435132276],[-119.39861766864371,37.548111214382935],[-119.39869372160457,37.54812019518197],[-119.39876933482745,37.54813128278891],[-119.3988444162793,37.54814446370839],[-119.39888199011088,37.54815109322961],[-119.39891981658543,37.548156738993306],[-119.39895785508394,37.54816139493691],[-119.39899606475971,37.54816505606072],[-119.39903440458218,37.54816771843334],[-119.39907283338104,37.54816937919587],[-119.3991113098904,37.548170036564905],[-119.39914979279315,37.54816968983454],[-119.39918824076531,37.54816833937713],[-119.39922661252045,37.54816598664281],[-119.39926486685391,37.54816263415802],[-119.39930296268717,37.54815828552275],[-119.39935859350236,37.5481504079609],[-119.39941385048955,37.54814100934353],[-119.39946866806407,37.54813010082595],[-119.39952298116285,37.54811769535552],[-119.39957672532164,37.548103807656354],[-119.39962983675159,37.5480884542118],[-119.39968225241498,37.54807165324494],[-119.39973391009997,37.54805342469685],[-119.39978474849448,37.548033790203064],[-119.39983470725909,37.54801277306777],[-119.39988372709846,37.54799039823617],[-119.39993174983185,37.54796669226497],[-119.39997871846218,37.5479416832907],[-119.40002457724357,37.54791540099648],[-119.40006927174763,37.54788787657658],[-119.40011274892802,37.5478591426996],[-119.4001549571834,37.54782923346956],[-119.40019584641874,37.5477981843855],[-119.40023536810465,37.54776603229924],[-119.40027347533506,37.547732815371724],[-119.40031012288293,37.54769857302769],[-119.40034526725385,37.54766334590888],[-119.40037886673771,37.54762717582577],[-119.40041088145813,37.547590105708004],[-119.40044127341986,37.54755217955333],[-119.40047000655386,37.547513442375525],[-119.40049704676,37.54747394015084],[-119.40052236194767,37.547433719763454],[-119.40054592207376,37.54739282894984],[-119.4005619609099,37.5473649725928],[-119.40057917714502,37.547337565393406],[-119.40059755096715,37.547310638889016],[-119.40061706123245,37.54728422406378],[-119.40063768548933,37.547258351313154],[-119.40065940000449,37.54723305040865],[-119.40068217979014,37.54720835046381],[-119.40070599863274,37.54718427990064],[-119.40073082912325,37.547160866416846],[-119.40075664268856,37.547138136954075],[-119.40078340962447,37.547116117666775],[-119.40081109912983,37.54709483389229],[-119.40083967934198,37.54707431012147],[-119.40086911737339,37.547054569970754],[-119.40089937934958,37.547035636154746],[-119.40093043044801,37.54701753046025],[-119.40096223493822,37.5470002737212],[-119.40099475622291,37.546983885794546],[-119.40102795688007,37.54696838553755],[-119.40166246379803,37.54669104346323],[-119.40230468708614,37.546425203003224],[-119.4023495795554,37.546407908455144],[-119.40239520353511,37.54639187337973],[-119.40244150330982,37.54637711735867],[-119.40248842233895,37.546363658411664],[-119.40253590332587,37.54635151297446],[-119.4025838882877,37.54634069587877],[-119.40263231862622,37.54633122033414],[-119.40268113519942,37.546323097911866],[-119.40273027839368,37.54631633853086],[-119.40277968819659,37.54631095044547],[-119.40282930427017,37.546306940235496],[-119.40287906602461,37.54630431279809],[-119.40292891269226,37.54630307134183],[-119.40297878340168,37.54630321738272],[-119.4030286172522,37.546304750742436],[-119.40307835338805,37.54630766954847],[-119.4031279310729,37.546311970236474],[-119.40317728976375,37.54631764755453],[-119.40322636918503,37.546324694569684],[-119.40327510940226,37.54633310267631],[-119.40332345089499,37.5463428616066],[-119.4033713346297,37.54635395944324],[-119.40341870213175,37.546366382633835],[-119.40346549555692,37.54638011600746],[-119.40351165776185,37.54639514279326],[-119.40355713237395,37.54641144464088],[-119.40360186386019,37.54642900164285],[-119.40364579759493,37.54644779235897],[-119.40368887992659,37.54646779384239],[-119.40373105824318,37.54648898166767],[-119.40377691504555,37.546512018877365],[-119.40382375314798,37.546533768535106],[-119.40387151554964,37.54655420417175],[-119.40392014412468,37.546573300917274],[-119.40396957969305,37.546591035531044],[-119.40401976209245,37.546607386430075],[-119.40407063025148,37.546622333715455],[-119.40412212226418,37.54663585919634],[-119.40417417546516,37.54664794641227],[-119.40422672650604,37.54665858065313],[-119.4042797114324,37.546667748977036],[-119.40433306576178,37.546675440226146],[-119.404386724562,37.546681645040245],[-119.40444062253043,37.54668635586805],[-119.40449469407318,37.546689566976475],[-119.40454887338517,37.546691274457636],[-119.40460309453015,37.5466914762335],[-119.40465729152086,37.5466901720585],[-119.4047113983996,37.54668736351982],[-119.4047753138136,37.54668401308179],[-119.40483933452043,37.54668237438032],[-119.40490338823066,37.54668244926575],[-119.40496740261764,37.546684237653565],[-119.40503130539908,37.54668773752437],[-119.4050950244187,37.54669294492622],[-119.40515848772772,37.546699853979206],[-119.405221623666,37.54670845688186],[-119.40528436094299,37.5467187439202],[-119.4053466287182,37.54673070347849],[-119.40540835668128,37.5467443220525],[-119.40562509444233,37.5467982278664],[-119.40583960632017,37.5468575104527],[-119.40605168198043,37.54692211168476],[-119.40626111347585,37.54699196822081],[-119.40633672630996,37.54701953963755],[-119.4064111117428,37.547049152166096],[-119.40648418289395,37.5470807712203],[-119.40655585441772,37.54711435987042],[-119.40662604260278,37.547149878886295],[-119.40669466546991,37.54718728678311],[-119.40676164286775,37.54722653986977],[-119.4068268965665,37.54726759230013],[-119.40689035034913,37.547310396126285],[-119.40695193010048,37.54735490135476],[-119.40701156389386,37.547401056004695],[-119.40706918207499,37.54744880616878],[-119.40712471734335,37.547498096076026],[-119.40717810483089,37.54754886815693],[-119.40722928217765,37.54760106311077],[-119.4072781896048,37.547654619974765],[-119.40732476998426,37.54770947619537],[-119.4073689689056,37.54776556770126],[-119.40741073473954,37.547822828978106],[-119.40745001869827,37.547881193145244],[-119.40748677489246,37.547940592033584],[-119.40752096038491,37.54800095626543],[-119.40755253524063,37.548062215335335],[-119.40758146257367,37.54812429769251],[-119.40760770859004,37.548187130824374],[-119.40763124262736,37.548250641341305],[-119.40765203719066,37.548314755062265],[-119.40767006798445,37.54837939710147],[-119.40768531394129,37.548444491955905],[-119.40769775724618,37.54850996359336],[-119.40770738335772,37.54857573554146],[-119.40772261664301,37.54871058320796],[-119.40774373134157,37.54884492744652],[-119.40777070193515,37.54897860569337],[-119.40780349581915,37.54911145618972],[-119.40784207334178,37.54924331817761],[-119.40788638785195,37.54937403209438],[-119.40793638575559,37.54950343976573],[-119.40799200658041,37.5496313845973],[-119.40805318304882,37.54975771176405],[-119.40811984115928,37.5498822683977],[-119.40819190027577,37.55000490377167],[-119.40826927322522,37.5501254694837],[-119.40835186640287,37.550243819635256],[-119.40843957988544,37.55035981100818],[-119.40853230755205,37.55047330323816],[-119.40862993721242,37.550584158984435],[-119.40873235074267,37.55069224409623],[-119.40883942422812,37.55079742777502],[-119.40895102811325,37.55089958273281],[-119.40906702735842,37.55099858534643],[-119.40918728160322,37.551094315806964],[-119.40931164533635,37.5511866582649],[-119.40943996807158,37.551275500970355],[-119.40957209453002,37.55136073640829],[-119.40970786482795,37.551442261428804],[-119.40984711467026,37.551519977371875],[-119.40998967554937,37.55159379018684],[-119.4101353749492,37.55166361054633],[-119.41028403655392,37.55172935395431],[-119.4104354804614,37.55179094084845],[-119.410589523401,37.551848296696384],[-119.41074597895533,37.551901352086034],[-119.4109046577861,37.551950042809565],[-119.4110653678631,37.55199430994117],[-119.41122791469694,37.55203409990842],[-119.41139210157425,37.55206936455706],[-119.41155772979606,37.552100061209394],[-119.41172459891821,37.5521261527159],[-119.4118925069941,37.552147607500245],[-119.41214450887801,37.55217982957876],[-119.41239494014911,37.55221905331996],[-119.41264349402184,37.55226523067394],[-119.41288986600885,37.55231830507241],[-119.41313375429391,37.552378211497896],[-119.4133748601013,37.55244487656339],[-119.41361288806164,37.55251821860211],[-119.41384754657354,37.552598147767576],[-119.41407854816063,37.5526845661435],[-119.41430560982347,37.552777367863705],[-119.41452845338628,37.55287643924183],[-119.41474680583735,37.552981658910355],[-119.41496039966354,37.55309289796924],[-119.41516897317783,37.55321002014386],[-119.41537227083977,37.553332881951654],[-119.41557004356868,37.55346133287801],[-119.41576204904841,37.55359521556033],[-119.41594805202452,37.55373436598093],[-119.4161278245923,37.553878613667706],[-119.416301146476,37.55402778190296],[-119.41646780529884,37.55418168793977],[-119.41662759684317,37.554340143225716],[-119.41668834317089,37.55440038290178],[-119.41675169870939,37.55445889430225],[-119.41681758594396,37.55451560583352],[-119.41688592426145,37.554570448104144],[-119.41695663004916,37.55462335400971],[-119.41702961679694,37.554674258814984],[-119.4171047952032,37.55472310023316],[-119.41718207328402,37.55476981850202],[-119.41726135648584,37.55481435645714],[-119.41734254780108,37.554856659601825],[-119.41742554788688,37.55489667617381],[-119.41751025518661,37.55493435720858],[-119.41759656605431,37.55496965659936],[-119.41768437488135,37.555002531153505],[-119.41777357422572,37.55503294064534],[-119.41786405494355,37.55506084786545],[-119.4179557063227,37.55508621866617],[-119.41804841621827,37.5551090220034],[-119.41814207118975,37.555129229974646],[-119.41823655663991,37.555146817853014],[-119.41833175695517,37.55516176411772],[-119.41842755564686,37.55517405048022],[-119.41852383549404,37.55518366190666],[-119.41862047868685,37.55519058663632],[-119.41871736697064,37.55519481619596],[-119.41881438179088,37.555196345410195],[-119.41891140443806,37.55519517240783],[-119.41900831619321,37.55519129862421],[-119.41910499847297,37.55518472879937],[-119.41920133297496,37.55517547097224],[-119.41929720182237,37.55516353647094],[-119.41939248770835,37.55514893989874],[-119.41948707403958,37.5551316991163],[-119.41958084507894,37.55511183521972],[-119.41967368608718,37.555089372514836],[-119.41976548346331,37.55506433848736],[-119.41985612488374,37.555036763769316],[-119.41994549943959,37.55500668210153],[-119.42003349777261,37.5549741302923],[-119.42012001220884,37.554939148172366],[-119.42020493689054,37.554901778546174],[-119.42028816790562,37.55486206713948],[-119.42036960341487,37.55482006254339],[-119.42044914377657,37.554775816154894],[-119.42052669166836,37.55472938211393],[-119.4206021522065,37.554680817237134],[-119.4206754330618,37.55463018094839],[-119.42085070589096,37.55450056835528],[-119.42102060408175,37.554366496685816],[-119.42118494876435,37.554228107114554],[-119.42134356691955,37.55408554536187],[-119.4214962915609,37.55393896154051],[-119.42164296191042,37.553788509997425],[-119.42178342356793,37.55363434915118],[-119.4219175286735,37.553476641325084],[-119.42204513606293,37.553315552576194],[-119.42213977178776,37.553196311652776],[-119.42223946654208,37.55307971307667],[-119.42234410402257,37.55296589284373],[-119.42245356216259,37.55285498370869],[-119.42256771327455,37.55274711503038],[-119.42268642419906,37.552642412620756],[-119.4228095564601,37.552540998598325],[-119.42293696642666,37.55244299124579],[-119.42306850548032,37.552348504872],[-119.42320402018845,37.55225764967881],[-119.42334335248336,37.55217053163251],[-119.4234863398465,37.55208725234039],[-119.42363281549815,37.55200790893209],[-119.42378260859171,37.551932593946596],[-119.42393554441311,37.55186139522415],[-119.42409144458446,37.55179439580399],[-119.42425012727205,37.55173167382743],[-119.42441140739832,37.55167330244686],[-119.42457509685784,37.55161934974042],[-119.42474100473632,37.55156987863261],[-119.42490893753344,37.551524946821],[-119.42507869938835,37.551484606708904],[-119.42525009230803,37.551448905344365],[-119.42655498204195,37.550920935630565],[-119.42783619044242,37.55035741346869],[-119.42909218995219,37.54975901097168],[-119.43032148318669,37.549126441837615],[-119.43152260472317,37.548460460495754],[-119.43269412285117,37.54776186120355],[-119.43383464128198,37.547031477096404],[-119.43494280081507,37.54627017919076],[-119.43601728095994,37.545478875342205],[-119.4370568015107,37.544658509159476],[-119.43806012407208,37.5438100588759],[-119.43902605353476,37.542934536179644],[-119.43995343949851,37.54203298500393],[-119.44084117764102,37.541106480279055],[-119.44168821103146,37.540156126647446],[-119.4424935313864,37.53918305714342],[-119.4432561802673,37.538188431839146],[-119.44335404126309,37.53806070023503],[-119.44345726794171,37.5379356756126],[-119.44356574231233,37.53781350084612],[-119.44367934038898,37.537694315552415],[-119.44379793233249,37.537578255931386],[-119.4439213825987,37.537465454610484],[-119.44404955009358,37.53735604049307],[-119.44418228833446,37.53725013861124],[-119.4443194456174,37.53714786998302],[-119.44446086519059,37.5370493514741],[-119.4446063854336,37.53695469566432],[-119.44475584004189,37.536864010719086],[-119.44490905821695,37.53677740026582],[-119.44506586486145,37.53669496327559],[-119.44522608077922,37.53661679395012],[-119.44538952288018,37.53654298161405],[-119.4455560043892,37.53647361061304],[-119.44572533505978,37.53640876021743],[-119.44589732139117,37.5363485045316],[-119.4460717668495,37.53629291240946],[-119.44624847209228,37.53624204737562],[-119.44642723519601,37.53619596755312],[-119.44660785188698,37.53615472559679],[-119.44679011577446,37.536118368633204],[-119.44697381858643,37.536086938206864],[-119.44715875040751,37.536060470232805],[-119.44734469991874,37.53603899495546],[-119.46551696996517,37.5358063330894],[-119.48420693226797,37.536093876675615],[-119.50518063169882,37.53593828352632],[-119.50762084292157,37.53599769843372],[-119.52123067282369,37.5363283818418],[-119.52296012615726,37.5362288677008],[-119.52301419138922,37.53621744957004],[-119.52306773295085,37.53620456131238],[-119.5231206878228,37.536190218097595],[-119.52317299367643,37.536174436807975],[-119.52322458894702,37.53615723601839],[-119.52327541290641,37.53613863597453],[-119.52332540573447,37.53611865856899],[-119.52337450858934,37.53609732731554],[-119.52342266367694,37.53607466732142],[-119.52346981431882,37.53605070525785],[-119.5235159050189,37.53602546932851],[-119.5235608815289,37.535998989236404],[-119.5236046909121,37.535971296148986],[-119.52364728160569,37.535942422661314],[-119.52368860348139,37.5359124027578],[-119.52372860790456,37.535881271772055],[-119.5237672477914,37.535849066345556],[-119.52380447766427,37.53581582438421],[-119.5238402537054,37.535781585014],[-119.52387453380831,37.53574638853472],[-119.52390727762742,37.535710276372654],[-119.52393844662555,37.53567329103182],[-119.52396800411915,37.53563547604385],[-119.52399591532175,37.535596875916845],[-119.52402214738456,37.535557536082905],[-119.52404666943532,37.53551750284471],[-119.52406945261458,37.535476823321],[-119.52409047010968,37.535435545391096],[-119.52410969718628,37.53539371763857],[-119.52412711121738,37.53535138929404],[-119.52414269171015,37.53530861017724],[-119.52415642032973,37.535265430638326],[-119.52416828092116,37.5352219014987],[-119.524178259528,37.53517807399118],[-119.52418634440907,37.535133999699575],[-119.52419252605202,37.53508973049811],[-119.52419679718469,37.53504531849034],[-119.52419915278342,37.53500081594779],[-119.52419959007926,37.53495627524843],[-119.52422365242278,37.534917131964775],[-119.52424940512621,37.53487867684246],[-119.52427681719789,37.53484095615577],[-119.52430585564959,37.53480401529513],[-119.52433648553614,37.534767898712495],[-119.52436866999754,37.534732649867884],[-119.52440237030328,37.53469831117712],[-119.52443754589893,37.53466492396068],[-119.52447415445502,37.53463252839417],[-119.52451215191795,37.53460116345977],[-119.52455149256294,37.53457086689948],[-119.52459212904918,37.53454167516963],[-119.52463401247671,37.53451362339708],[-119.5246770924452,37.53448674533693],[-119.5247213171148,37.53446107333185],[-119.52476663326831,37.534436638273284],[-119.52481298637534,37.53441346956417],[-119.52486032065788,37.53439159508362],[-119.52490857915734,37.53437104115332],[-119.5249577038033,37.53435183250602],[-119.52500763548312,37.534333992255554],[-119.52505831411325,37.53431754186921],[-119.52510967871143,37.53430250114175],[-119.5265036987874,37.53387442563822],[-119.52654246611345,37.533857248835275],[-119.52658194464667,37.53384113205414],[-119.52662208870038,37.533826093945805],[-119.52666285181805,37.53381215191291],[-119.52670418682663,37.53379932208974],[-119.52674604589151,37.53378761932344],[-119.52678838057155,37.5337770571569],[-119.52683114187536,37.533767647813015],[-119.52687428031788,37.53375940218065],[-119.52691774597764,37.53375232980192],[-119.5269614885546,37.533746438861236],[-119.5270054574283,37.53374173617581],[-119.52704960171634,37.53373822718774],[-119.52709387033347,37.53373591595776],[-119.5271382120505,37.5337348051605],[-119.52718257555374,37.53373489608141],[-119.52722690950417,37.53373618861527],[-119.52727116259705,37.53373868126635],[-119.52731528362122,37.533742371150026],[-119.52735922151824,37.53374725399623],[-119.52740292544168,37.533753324154425],[-119.52744634481574,37.533760574599945],[-119.52748942939392,37.53376899694234],[-119.52753212931711,37.53377858143498],[-119.52757439517127,37.53378931698636],[-119.52761617804464,37.53380119117287],[-119.52765742958425,37.53381419025327],[-119.52769810205204,37.533828299184556],[-119.52773814837991,37.5338435016393],[-119.52777752222431,37.53385978002466],[-119.52781542566275,37.533871537601705],[-119.52785380502812,37.53388227151859],[-119.52789261674076,37.53389196958701],[-119.52793181673002,37.53390062079473],[-119.52797136048439,37.533908215318334],[-119.52801120310184,37.53391474453418],[-119.52805129934106,37.53392020102835],[-119.52809160367264,37.533924578604946],[-119.52813207033088,37.533927872293226],[-119.52817265336577,37.533930078353215],[-119.52821330669506,37.533931194279894],[-119.52825398415675,37.53393121880614],[-119.52829463956142,37.53393015190411],[-119.52833522674462,37.53392799478526],[-119.5283756996195,37.53392474989899],[-119.52841601222892,37.53392042092993],[-119.52845611879779,37.5339150127936],[-119.52849597378498,37.53390853163098],[-119.52853553193513,37.53390098480143],[-119.52857474832987,37.533892380874406],[-119.52861357843906,37.533882729619705],[-119.52867398370267,37.53386768463622],[-119.52873497122957,37.53385421150837],[-119.52879647654255,37.53384232448017],[-119.528858434617,37.53383203611876],[-119.52892077994977,37.533823357301145],[-119.52898344662842,37.53381629720272],[-119.52904636840074,37.533810863287485],[-119.52910947874499,37.53380706130027],[-119.52917271094003,37.53380489526058],[-119.52923599813597,37.533804367458394],[-119.5292992734247,37.53380547845171],[-119.52936246991084,37.533808227066],[-119.5296607180145,37.53382868303235],[-119.52995805494061,37.53385629901087],[-119.53025420973653,37.53389104983615],[-119.53054891252592,37.53393290384099],[-119.53084189475426,37.53398182288532],[-119.53113288943358,37.53403776239083],[-119.53133503131292,37.5340763343149],[-119.53153868464342,37.53410948326627],[-119.53174362007175,37.53413717191249],[-119.53194960679983,37.534159369070544],[-119.53215641284497,37.53417604974184],[-119.53236380530117,37.53418719514056],[-119.53257155060163,37.53419279271466],[-119.53262129585275,37.53419479446077],[-119.53267109765702,37.53419545539479],[-119.53272089904287,37.534194774760614],[-119.53277064303923,37.534192753336896],[-119.53282027274071,37.534189393436066],[-119.53286973137261,37.5341846989017],[-119.53291896235606,37.53417867510422],[-119.53296790937256,37.534171328934626],[-119.53301651642856,37.53416266879667],[-119.53306472791945,37.53415270459723],[-119.5331124886932,37.534141447735024],[-119.53315974411343,37.534128911087436],[-119.53320644012194,37.534115108995934],[-119.53325252330066,37.53410005724962],[-119.5332979409325,37.53408377306706],[-119.53334264106196,37.53406627507676],[-119.53338657255442,37.53404758329569],[-119.5334296851546,37.53402771910648],[-119.53347192954416,37.53400670523293],[-119.53350590627296,37.53398507064704],[-119.53354078170909,37.533964362840294],[-119.53357651600834,37.533944605470346],[-119.53361306834545,37.533925821109],[-119.5336503969606,37.53390803121644],[-119.53368845920731,37.533891256116654],[-119.533727211601,37.53387551497435],[-119.53376660986869,37.5338608257729],[-119.5338066089997,37.53384720529394],[-119.53384716329684,37.53383466909814],[-119.5338882264289,37.53382323150737],[-119.5339297514833,37.53381290558847],[-119.53397169101987,37.533803703138176],[-119.53401399712492,37.53379563466978],[-119.53405662146609,37.53378870940109],[-119.53409951534746,37.533782935243764],[-119.53414262976519,37.53377831879447],[-119.53418591546357,37.53377486532722],[-119.53422932299124,37.53377257878739],[-119.53427280275758,37.53377146178726],[-119.53433806142088,37.533762771921914],[-119.53440365837177,37.5337558842531],[-119.53446951515691,37.533750807018386],[-119.53453555301229,37.53374754629009],[-119.5346016929574,37.53374610596802],[-119.53466785588958,37.53374648777477],[-119.53473396267877,37.53374869125372],[-119.534799934262,37.5337527137695],[-119.53486569173799,37.53375855051126],[-119.53493115646145,37.533766194498305],[-119.53499625013723,37.53377563658851],[-119.53506089491377,37.53378686548923],[-119.53512501347637,37.53379986777079],[-119.53518852913952,37.53381462788259],[-119.53525136593866,37.533831128171634],[-119.53531344872101,37.533849348903765],[-119.53537470323542,37.53386926828703],[-119.53543505622117,37.533890862497984],[-119.53549443549561,37.53391410571008],[-119.53555277004043,37.53393897012447],[-119.53560999008656,37.53396542600344],[-119.53566602719775,37.53399344170572],[-119.53572081435225,37.53402298372458],[-119.53577428602304,37.53405401672771],[-119.53582637825622,37.53408650359956],[-119.53584999085692,37.53410220597285],[-119.53587426765422,37.53411725232882],[-119.53589917992292,37.53413162486383],[-119.53592469818588,37.53414530657156],[-119.53595079224891,37.534158281263075],[-119.53597743123636,37.53417053358605],[-119.53600458362786,37.53418204904287],[-119.5360322172954,37.534192814007845],[-119.53606029954155,37.534202815743235],[-119.53608879713796,37.53421204241446],[-119.53611767636488,37.53422048310401],[-119.53614690305086,37.53422812782437],[-119.53617644261335,37.53423496752987],[-119.53620626009953,37.53424099412742],[-119.53623632022769,37.53424620048598],[-119.536266587429,37.53425058044507],[-119.5362970258896,37.534254128822106],[-119.5363275995929,37.534256841418426],[-119.53635827236242,37.53425871502431],[-119.53638900790428,37.53425974742282],[-119.53641976985041,37.53425993739235],[-119.53645052180147,37.534259284708135],[-119.53648122736999,37.534257790142455],[-119.53651185022329,37.53425545546379],[-119.53656702546819,37.53425482584469],[-119.53662219487477,37.53425572305083],[-119.53667729184092,37.53425814599909],[-119.53673224985194,37.5342620917644],[-119.5367870025609,37.53426755558332],[-119.53684148386861,37.53427453085976],[-119.53689562800358,37.53428300917297],[-119.53694936960119,37.53429298028763],[-119.53700264378278,37.53430443216633],[-119.53705538623387,37.53431735098401],[-119.53710753328176,37.53433172114462],[-119.5371590219725,37.534347525300056],[-119.5372097901468,37.534364744371],[-119.53725977651504,37.534383357569986],[-119.53730892073136,37.53440334242652],[-119.53735716346637,37.53442467481413],[-119.53740444647885,37.534447328979596],[-119.53745071268608,37.534471277573914],[-119.53749590623266,37.534496491685395],[-119.53753997255801,37.534522940874545],[-119.53758285846222,37.53455059321081],[-119.53762451217021,37.53457941531107],[-119.53766488339436,37.53460937238002],[-119.53770392339507,37.534640428252075],[-119.53779894974718,37.534716479602636],[-119.53789667693192,37.53479032861318],[-119.53799702450029,37.53486191448529],[-119.53809990984516,37.53493117828357],[-119.53813681524474,37.53495448373161],[-119.53817469461319,37.534976776182994],[-119.53821350412532,37.534998029845596],[-119.53825319887966,37.53501822012914],[-119.5382937329504,37.5350373236736],[-119.53833505944047,37.53505531837636],[-119.538377130536,37.53507218341764],[-119.53841989756144,37.535087899284676],[-119.53846331103593,37.535102447794316],[-119.53850732073064,37.53511581211397],[-119.53855187572681,37.53512797678119],[-119.53859692447467,37.535138927721476],[-119.5386424148531,37.53514865226464],[-119.53868829423001,37.535157139159374],[-119.53873450952311,37.535164378586394],[-119.5389344433645,37.535195298113436],[-119.539133159123,37.53523085059365],[-119.53933048755607,37.535271005747916],[-119.53952626060193,37.53531572937711],[-119.53972031152264,37.53536498339113],[-119.5398516263356,37.53540203639258],[-119.5399812445146,37.53544270186766],[-119.5401090094052,37.53548693066962],[-119.54023476659202,37.53553466934509],[-119.54035836408524,37.535585860198694],[-119.54047965250423,37.53564044136274],[-119.54059848525822,37.53569834687198],[-119.54071471872317,37.53575950674332],[-119.54082821241549,37.5358238470603],[-119.54103307854281,37.53594796132905],[-119.54123339986036,37.536076694448305],[-119.54142901219659,37.536209940931215],[-119.54161975523593,37.53634759159192],[-119.54177118890487,37.53646387614492],[-119.54191767345293,37.53658411395847],[-119.54205904620856,37.53670817152791],[-119.54207664832684,37.536723594500096],[-119.54209491408369,37.536738520107015],[-119.54211382133177,37.53675293025098],[-119.54213334714586,37.536766807459266],[-119.54215346785075,37.53678013490539],[-119.54217415904976,37.536792896429446],[-119.54219539565452,37.53680507655767],[-119.54221715191521,37.53681666052131],[-119.54223940145195,37.53682763427443],[-119.54226211728668,37.53683798451107],[-119.54228527187593,37.53684769868115],[-119.54230883714413,37.53685676500599],[-119.54233278451778,37.53686517249235],[-119.54235708496002,37.53687291094587],[-119.54238170900584,37.53687997098342],[-119.5424066267978,37.53688634404446],[-119.54243180812234,37.53689202240144],[-119.54245722244623,37.536896999169144],[-119.54248283895377,37.53690126831308],[-119.54250862658407,37.536904824656744],[-119.54253455406875,37.53690766388797],[-119.54256058996978,37.53690978256407],[-119.54258670271774,37.536911178116064],[-119.54261286064997,37.536911848851815],[-119.54263903204907,37.53691179395803],[-119.54266518518124,37.53691101350125],[-119.54267331551208,37.53691054727581],[-119.54268142121,37.53690986099661],[-119.54268949288539,37.536908955458664],[-119.54269752118807,37.53690783171092],[-119.54270549681812,37.53690649105511],[-119.54271341053659,37.53690493504426],[-119.5427212531763,37.536903165480865],[-119.54272901565234,37.536901184414724],[-119.5427366889728,37.536898994140735],[-119.54274426424888,37.53689659719607],[-119.54275173270548,37.536893996357385],[-119.54275908569116,37.53689119463741],[-119.54276631468832,37.536888195281676],[-119.54277341132291,37.536885001764624],[-119.54278036737429,37.53688161778558],[-119.54278717478464,37.53687804726453],[-119.54279382566827,37.53687429433755],[-119.54280031232092,37.536870363351994],[-119.5428066272285,37.5368662588615],[-119.54281276307593,37.536861985620654],[-119.5428187127555,37.53685754857957],[-119.54282446937516,37.53685295287807],[-119.54284853881984,37.53683375127454],[-119.54287343164975,37.536815227328006],[-119.54289911779526,37.53679740341422],[-119.5429255662286,37.53678030106339],[-119.54295274500126,37.53676394093403],[-119.54298062128255,37.53674834278812],[-119.54300916139931,37.53673352546721],[-119.54303833087664,37.53671950686963],[-119.54306809447941,37.536706303928916],[-119.54309841625486,37.53669393259334],[-119.54312925957616,37.5366824078066],[-119.54316058718642,37.5366717434899],[-119.54319236124388,37.536661952524916],[-119.54322454336753,37.53665304673853],[-119.54325709468354,37.53664503688826],[-119.54328997587203,37.53663793264945],[-119.54332314721485,37.536631742603525],[-119.54335656864332,37.53662647422763],[-119.54339019978669,37.536622133885515],[-119.54342400002093,37.536618726820116],[-119.54345792851778,37.536616257146804],[-119.5434919442941,37.53661472784885],[-119.54352600626123,37.53661414077351],[-119.54356007327483,37.53661449662992],[-119.54359410418442,37.53661579498825],[-119.54362805788311,37.53661803428016],[-119.54366189335732,37.53662121180075],[-119.54369556973617,37.53662532371182],[-119.54372904634104,37.53663036504645],[-119.54376228273455,37.53663632971506],[-119.54379523876945,37.53664321051281],[-119.54382787463713,37.53665099912814],[-119.54386015091563,37.53665968615298],[-119.54389202861742,37.53666926109399],[-119.54392346923625,37.53667971238532],[-119.54395443479389,37.536691027402554],[-119.54398488788586,37.536703192477894],[-119.54401479172664,37.53671619291679],[-119.54404411019411,37.53673001301561],[-119.54405275320126,37.53673408946902],[-119.54406156646834,37.5367379277988],[-119.54407053965355,37.536741523500936],[-119.54407966222757,37.53674487235616],[-119.5440889234857,37.536747970434796],[-119.54409831256055,37.53675081410147],[-119.54410781843468,37.53675340001934],[-119.54411742995366,37.53675572515402],[-119.544127135839,37.536757786777144],[-119.54413692470158,37.536759582469514],[-119.54414678505483,37.536761110124004],[-119.54415670532835,37.53676236794805],[-119.54416667388138,37.536763354465656],[-119.54417667901649,37.536764068519226],[-119.54418670899338,37.536764509270846],[-119.54419675204255,37.53676467620338],[-119.5442067963792,37.53676456912089],[-119.54421683021701,37.536764188149036],[-119.54422684178195,37.536763533734884],[-119.54423681932613,37.53676260664632],[-119.54424675114161,37.53676140797125],[-119.54425662557412,37.536759939116195],[-119.5442664310367,37.536758201804794],[-119.54427615602332,37.53675619807563],[-119.54428578912237,37.53675393027997],[-119.54429531903013,37.53675140107887],[-119.54430473456392,37.5367486134402],[-119.54431402467529,37.53674557063506],[-119.54432317846295,37.53674227623394],[-119.54433218518561,37.53673873410263],[-119.54434103427454,37.53673494839752],[-119.54434971534594,37.53673092356091],[-119.5443582182133,37.53672666431563],[-119.54436653289909,37.536722175659634],[-119.54437464964666,37.53671746285999],[-119.54438255893162,37.5367125314469],[-119.54439025147305,37.53670738720695],[-119.54439771824435,37.536702036176564],[-119.54440495048387,37.5366964846348],[-119.54441193970511,37.53669073909596],[-119.54441867770683,37.53668480630204],[-119.54451132297443,37.53659815253351],[-119.5446011487895,37.53650963640591],[-119.54468809614706,37.53641931607389],[-119.54470726642093,37.53639959326244],[-119.54472729061594,37.536380416055586],[-119.54474814426318,37.53636180788669],[-119.54476980188022,37.536343791493664],[-119.54479223700233,37.53632638889139],[-119.54481542221474,37.536309621344685],[-119.54483932918617,37.53629350934235],[-119.54486392870356,37.53627807257215],[-119.54488919070752,37.536263329896755],[-119.54491508432929,37.536249299330684],[-119.54494157792836,37.536235998018306],[-119.54496863913111,37.53622344221286],[-119.54499623487042,37.536211647256636],[-119.5450243314261,37.53620062756222],[-119.54505289446597,37.5361903965949],[-119.54508188908788,37.53618096685613],[-119.5451112798625,37.53617234986836],[-119.54514103087628,37.53616455616094],[-119.54517110577567,37.536157595257144],[-119.54520146781127,37.53615147566271],[-119.54523207988296,37.53614620485531],[-119.54526290458503,37.536141789275455],[-119.54529390425203,37.5361382343187],[-119.54532504100473,37.53613554432885],[-119.54535627679637,37.536133722592936],[-119.54538757345925,37.53613277133695],[-119.54541889275119,37.53613269172326],[-119.54545019640243,37.53613348384915],[-119.54548144616237,37.53613514674671],[-119.54551260384615,37.53613767838396],[-119.54554363138145,37.536141075667494],[-119.54557449085503,37.53614533444606],[-119.5456051445589,37.53615044951575],[-119.54563555503655,37.53615641462637],[-119.54566568512858,37.53616322248897],[-119.54569549801825,37.53617086478487],[-119.5457249572763,37.53617933217577],[-119.54575402690566,37.53618861431512],[-119.54584549978878,37.536220635839754],[-119.54593569559647,37.53625487771447],[-119.54602452936415,37.53629130768397],[-119.54611191740989,37.5363298914319],[-119.54619777741328,37.53637059261292],[-119.54628202849284,37.53641337288709],[-119.54636459128231,37.536458191955944],[-119.54645092902399,37.536504882210906],[-119.54653922300281,37.5365491919395],[-119.54662936975693,37.53659106921843],[-119.54672126365296,37.53663046497475],[-119.54681479700949,37.53666733304338],[-119.54690986022356,37.53670163022118],[-119.54700634189894,37.53673331631757],[-119.54710412897673,37.536762354201734],[-119.54720310686797,37.536788709846014],[-119.54730315958781,37.53681235236591],[-119.5473843127246,37.53682919874597],[-119.54746611373974,37.53684392472527],[-119.54754847528781,37.53685651457965],[-119.54763130942473,37.5368669548659],[-119.54771452770169,37.53687523443603],[-119.54779804125963,37.53688134444927],[-119.54788176092406,37.536885278381405],[-119.54796559730038,37.5368870320319],[-119.54804946086931,37.53688660352819],[-119.54813326208263,37.536883993327855],[-119.54821691145857,37.536879204217996],[-119.54830031967767,37.536872241312366],[-119.54838339767792,37.53686311204584],[-119.54846605675006,37.536851826166505],[-119.54857174250924,37.53683744418601],[-119.54867797796683,37.53682591303446],[-119.54878464189362,37.53681724587044],[-119.54889161257141,37.5368114525844],[-119.54899876793226,37.536808539787245],[-119.54910598569737,37.53680851080287],[-119.5492131435169,37.53681136566435],[-119.54932011910928,37.53681710111391],[-119.5494267904009,37.53682571060659],[-119.54953303566526,37.53683718431785],[-119.54963873366187,37.53685150915458],[-119.54974376377453,37.53686866877018],[-119.549848006149,37.53688864358315],[-119.54995134182971,37.53691141079947],[-119.54997383694423,37.536916361870354],[-119.54999653211894,37.536920695475835],[-119.55001940063444,37.53692440651389],[-119.55004241556726,37.53692749061544],[-119.55006554982154,37.53692994414951],[-119.55008877616088,37.53693176422753],[-119.55011206724049,37.53693294870672],[-119.55013539563942,37.536933496192496],[-119.55015873389267,37.536933406040326],[-119.55018205452372,37.536932678356386],[-119.55020533007674,37.53693131399734],[-119.55022853314901,37.53692931456952],[-119.55025163642316,37.53692668242684],[-119.55027461269927,37.536923420668174],[-119.550297434927,37.536919533133684],[-119.55032007623737,37.536915024400216],[-119.55034250997441,37.53690989977595],[-119.55036470972651,37.536904165294246],[-119.55142116232977,37.53662435335141],[-119.55248425278957,37.53636097570474],[-119.5526955819767,37.53631328901106],[-119.5529086930426,37.53627092880459],[-119.55312337434745,37.53623393715255],[-119.55333941269302,37.536202350790774],[-119.55355659353444,37.53617620108707],[-119.55377470119288,37.53615551401021],[-119.5539935190698,37.53614031010409],[-119.55421282986181,37.5361306044674],[-119.55443241577635,37.5361264067386],[-119.554456085664,37.53612657698405],[-119.55447973404041,37.53612739824172],[-119.5545033326787,37.53612886953129],[-119.55452685341129,37.53613098909667],[-119.55455026816365,37.53613375440793],[-119.55457354898772,37.53613716216433],[-119.55459666809523,37.53614120829835],[-119.55461959789102,37.53614588798051],[-119.55464231100581,37.53615119562508],[-119.55466223706753,37.536155854496855],[-119.55468235182923,37.53615996712839],[-119.5547026316847,37.53616352869323],[-119.55472305283409,37.536166535011574],[-119.55474359131162,37.53616898255532],[-119.5547642230138,37.536170868452054],[-119.55478492372781,37.53617219048854],[-119.55480566915976,37.53617294711329],[-119.55482643496329,37.536173137438325],[-119.55484719676816,37.536172761240294],[-119.55486793020884,37.536171818960696],[-119.55488861095299,37.536170311705355],[-119.55490921473023,37.53616824124317],[-119.55492971736047,37.53616561000396],[-119.55495009478228,37.536162421075694],[-119.55497032308128,37.536158678200856],[-119.55499037851803,37.53615438577193],[-119.55501023755596,37.536149548826444],[-119.55502987688911,37.53614417304092],[-119.55504927346924,37.53613826472421],[-119.55506840453307,37.53613183081022],[-119.55508724762896,37.53612487884958],[-119.55509282869133,37.53612263224127],[-119.5550983103475,37.53612023544869],[-119.55510368622683,37.53611769125737],[-119.55510895008152,37.53611500262411],[-119.5551140957941,37.53611217267359],[-119.55511911738428,37.53610920469472],[-119.55512400901614,37.536106102136834],[-119.55512876500468,37.53610286860563],[-119.55513337982266,37.5360995078591],[-119.55513784810681,37.536096023803],[-119.55514216466426,37.53609242048645],[-119.55514632447834,37.53608870209714],[-119.55515032271468,37.53608487295649],[-119.5551541547266,37.53608093751466],[-119.5551578160607,37.53607690034537],[-119.55516130246184,37.53607276614048],[-119.5551646098782,37.536068539704694],[-119.5551677344661,37.536064225949886],[-119.55517067259417,37.5360598298894],[-119.55521084364496,37.53599954521727],[-119.55525338719482,37.535940301690026],[-119.55529826073219,37.53588215849884],[-119.55534541941788,37.53582517373534],[-119.55539481612995,37.53576940433372],[-119.55544640151078,37.53571490601363],[-119.5555001240163,37.53566173322478],[-119.5555559299676,37.53560993909232],[-119.55557145395758,37.53559645469419],[-119.55558754710988,37.53558340029944],[-119.55560419065358,37.535570791134354],[-119.55562136517585,37.535558641905915],[-119.55563905064453,37.53554696678464],[-119.55565722643159,37.535535779388084],[-119.55567587133709,37.53552509276487],[-119.55569496361399,37.53551491937958],[-119.55571448099344,37.535505271098124],[-119.5557344007108,37.53549615917398],[-119.55575469953222,37.535487594235],[-119.55577535378163,37.53547958627108],[-119.55579633936848,37.535472144622425],[-119.55581763181578,37.535465277968754],[-119.55583920628861,37.535458994319114],[-119.5558610376232,37.53545330100255],[-119.5558831003561,37.53544820465952],[-119.55590536875403,37.53544371123426],[-119.55592781684386,37.53543982596776],[-119.55595041844289,37.53543655339165],[-119.55597314718935,37.53543389732294],[-119.55599597657319,37.53543186085958],[-119.55601887996704,37.53543044637688],[-119.55604183065711,37.53542965552456],[-119.55606480187453,37.53542948922512],[-119.55608776682645,37.53542994767248],[-119.55611069872737,37.53543103033196],[-119.55613357083027,37.53543273594073],[-119.55615635645798,37.53543506250946],[-119.55617902903404,37.53543800732453],[-119.55620156211397,37.535441566951185],[-119.55625363831024,37.535449773390766],[-119.55630604400618,37.5354565198106],[-119.55635871467312,37.535461797903686],[-119.55641158545608,37.53546560117085],[-119.5564645912536,37.53546792492906],[-119.55651766679802,37.53546876631703],[-119.55657074673572,37.535468124298674],[-119.55662376570773,37.53546599966458],[-119.55667665843009,37.53546239503086],[-119.55672935977435,37.53545731483599],[-119.55740605746259,37.53537243861751],[-119.55745236875737,37.53536530750013],[-119.55749835787425,37.53535695821897],[-119.55754397429936,37.53534739994479],[-119.55758916792827,37.53533664317626],[-119.55763388912104,37.53532469972854],[-119.55767808875666,37.53531158272013],[-119.55772171828707,37.53529730655858],[-119.55776472979056,37.53528188692466],[-119.55780707602426,37.53526534075503],[-119.55784871047612,37.53524768622383],[-119.55788958741606,37.53522894272246],[-119.55792966194602,37.53520913083849],[-119.55796889004955,37.535188272332974],[-119.55808965306919,37.53512394864766],[-119.55821290356377,37.535062690172325],[-119.55833851889156,37.53500455785992],[-119.55846637405861,37.5349496095528],[-119.55859634184323,37.534897899924985],[-119.55872829292242,37.53484948042794],[-119.55886209600064,37.53480439923927],[-119.55899761794032,37.53476270121493],[-119.55911449255484,37.534730229922474],[-119.55923270416005,37.534700988609615],[-119.5593521120468,37.534675012082396],[-119.55947257408248,37.534652331260766],[-119.55959394688013,37.534632973141754],[-119.55971608596914,37.5346169607673],[-119.55983884596701,37.534604313197],[-119.55996208075244,37.534595045485176],[-119.56008564363925,37.534589168663224],[-119.56022058933645,37.53458641257953],[-119.56035557521298,37.534587259769694],[-119.56049044960191,37.53459170928187],[-119.56062506096158,37.53459975611668],[-119.56075925804572,37.53461139123285],[-119.56089289007335,37.534626601557456],[-119.56102580689814,37.534645370000476],[-119.56115785917704,37.53466767547409],[-119.561288898538,37.53469349291631],[-119.56141877774664,37.534722793319126],[-119.56154735087165,37.53475554376111],[-119.56162657742098,37.5347780577712],[-119.56170483300698,37.5348026311876],[-119.5617820332433,37.53482923751208],[-119.5618580948813,37.53485784805412],[-119.56193293589989,37.5348884319621],[-119.56200647559395,37.53492095625628],[-119.56207863466128,37.534955385864606],[-119.56214933528817,37.53499168366032],[-119.56221850123319,37.53502981050208],[-119.5622860579096,37.53506972527625],[-119.5623519324656,37.535111384941],[-119.5624160538629,37.53515474457291],[-119.56247835295342,37.535199757415285],[-119.56253876255376,37.53524637492867],[-119.56259721751766,37.535294546843105],[-119.56262380088367,37.53531642351584],[-119.56265130867135,37.53533756303806],[-119.56267970866656,37.535357940652915],[-119.56270896761022,37.53537753249577],[-119.56273905123722,37.53539631562219],[-119.56276992431663,37.53541426803488],[-119.56280155069277,37.53543136870935],[-119.56283389332779,37.535447597618585],[-119.56286691434492,37.53546293575657],[-119.56290057507279,37.53547736516038],[-119.56293483609088,37.53549086893142],[-119.56296965727545,37.53550343125505],[-119.56300499784678,37.535515037419195],[-119.56304081641679,37.535525673831565],[-119.56305997313753,37.53553077801187],[-119.56307933594938,37.53553536260083],[-119.56309888263588,37.53553942233816],[-119.56311859076962,37.535542952565805],[-119.56313843773785,37.53554594923325],[-119.56315840076863,37.535548408902194],[-119.56317845695676,37.53555032875045],[-119.56319858329022,37.535551706575205],[-119.56321875667639,37.53555254079561],[-119.56323895396878,37.53555283045447],[-119.56325915199339,37.53555257521944],[-119.56327932757546,37.53555177538339],[-119.56329945756585,37.53555043186401],[-119.56331951886789,37.535548546202854],[-119.5633394884636,37.53554612056346],[-119.56335934344028,37.53554315772899],[-119.56337906101678,37.53553966109892],[-119.56339861856954,37.5355356346852],[-119.56341799365869,37.53553108310768],[-119.56343716405364,37.53552601158872],[-119.56345610775877,37.5355204259473],[-119.5634748030385,37.53551433259224],[-119.56349322844234,37.535507738514966],[-119.56351136282944,37.53550065128132],[-119.56352918539295,37.53549307902307],[-119.5635466756837,37.535485030428454],[-119.56382969659185,37.535346559480786],[-119.56410917925577,37.535203604395534],[-119.56413265106056,37.535190867519304],[-119.56415555928963,37.535177495761175],[-119.56417787687556,37.535163504920924],[-119.56419957744875,37.53514891152971],[-119.56422063536871,37.535133732830744],[-119.5642410257544,37.53511798675877],[-119.5642607245135,37.5351016919189],[-119.56427970837096,37.53508486756468],[-119.56429795489652,37.53506753357529],[-119.56431544253111,37.53504971043201],[-119.56433215061247,37.535031419194176],[-119.56434805939939,37.5350126814741],[-119.56436315009518,37.534993519411714],[-119.5643774048698,37.53497395564824],[-119.564390806881,37.534954013299576],[-119.56440334029406,37.53493371592887],[-119.5644149903007,37.53491308751882],[-119.56442574313641,37.53489215244314],[-119.56443558609683,37.534870935437965],[-119.56445065475364,37.53483845791442],[-119.56446711919111,37.53480641298036],[-119.56448495986888,37.534774838663985],[-119.5645041556134,37.53474377243497],[-119.5645246836432,37.53471325116002],[-119.56454651959582,37.53468331105906],[-119.56456963755676,37.534653987662296],[-119.56459401009023,37.53462531576807],[-119.56461960827178,37.534597329401464],[-119.56464640172254,37.53457006177409],[-119.56467435864535,37.53454354524458],[-119.56470344586236,37.534517811280125],[-119.56473362885464,37.534492890419294],[-119.56476487180291,37.53446881223568],[-119.5647971376302,37.534445605302864],[-119.56483038804575,37.53442329716045],[-119.56486458359055,37.53440191428147],[-119.56489968368412,37.53438148204088],[-119.56493564667261,37.534362024685535],[-119.56497242987825,37.53434356530536],[-119.56500998965018,37.53432612580597],[-119.56504828141591,37.53430972688271],[-119.56508725973448,37.534294387996034],[-119.56512687835028,37.53428012734846],[-119.56517935781199,37.534262936001376],[-119.56523254204585,37.53424717797151],[-119.56528636934436,37.53423287154212],[-119.56534077725405,37.53422003331229],[-119.56539570264786,37.5342086781775],[-119.56545108179847,37.53419881931259],[-119.56550685045214,37.534190468156304],[-119.56556294390322,37.53418363439803],[-119.5656192970694,37.53417832596666],[-119.56567584456695,37.534174549021266],[-119.56573252078684,37.534172307944026],[-119.56578925997056,37.53417160533518],[-119.56584599628673,37.534172442009904],[-119.56590266390712,37.53417481699747],[-119.56595919708332,37.53417872754226],[-119.56601553022286,37.53418416910713],[-119.56607159796528,37.53419113537847],[-119.56612733525802,37.53419961827369],[-119.5661826774319,37.53420960795054],[-119.56664930014195,37.534296661444074],[-119.567117979038,37.53437640484203],[-119.56713764653328,37.534379311007825],[-119.56715742797172,37.5343816764377],[-119.56717729991722,37.534383498329206],[-119.56719723882648,37.534384774523865],[-119.56721722107683,37.534385503509704],[-119.56723722299422,37.53438568442306],[-119.56725722088137,37.53438531704956],[-119.5672771910457,37.53438440182448],[-119.56729710982758,37.534382939832156],[-119.56731695362812,37.53438093280463],[-119.5673366989374,37.53437838311979],[-119.56735632236209,37.53437529379832],[-119.56737580065334,37.534371668500356],[-119.56739511073427,37.53436751152092],[-119.56741422972719,37.53436282778505],[-119.56743313498093,37.53435762284181],[-119.56745180409749,37.5343519028577],[-119.56747021495872,37.534345674609526],[-119.56748834575235,37.5343389454762],[-119.56750617499807,37.53433172343006],[-119.56752368157271,37.5343240170274],[-119.56754084473552,37.53431583539841],[-119.56755764415253,37.534307188236255],[-119.56757405992077,37.53429808578565],[-119.5675900725919,37.534288538830694],[-119.56760566319502,37.53427855868212],[-119.56762081325945,37.534268157163915],[-119.56763550483632,37.534257346599226],[-119.5676497205201,37.534246139795805],[-119.56766344346897,37.534234550030895],[-119.56767665742501,37.5342225910354],[-119.5676893467333,37.53421027697769],[-119.5677014963605,37.53419762244675],[-119.56771309191272,37.53418464243498],[-119.5677241196525,37.534171352320335],[-119.56773456651507,37.53415776784819],[-119.56774442012397,37.534143905112636],[-119.56775366880552,37.534129780537405],[-119.5678044051265,37.53405234352936],[-119.56785850580567,37.53397636454049],[-119.56791590485327,37.53390193623267],[-119.56797653225743,37.53382914937632],[-119.56804031406983,37.53375809273971],[-119.568122954145,37.53367250384795],[-119.56820929013794,37.53358926090764],[-119.56829921711096,37.533508465085305],[-119.56839262576321,37.53343021457318],[-119.56848940256364,37.53335460446975],[-119.56858942988892,37.53328172666442],[-119.56867421821589,37.533220115519924],[-119.56875647037104,37.53315636133153],[-119.56883610099115,37.53309053026994],[-119.56891302743455,37.533022690661255],[-119.56898716986689,37.53295291291607],[-119.56905845134398,37.53288126945637],[-119.56912679789166,37.53280783464033],[-119.5691921385825,37.53273268468515],[-119.56925440560951,37.53265589758788],[-119.56931353435637,37.53257755304462],[-119.56932214588345,37.5325661720914],[-119.56933124494094,37.53255503431356],[-119.5693408207125,37.53254415295067],[-119.5693508618151,37.53253354093747],[-119.56936135631261,37.53252321088857],[-119.56937229173002,37.53251317508333],[-119.56938365506811,37.53250344545142],[-119.56939543281904,37.532494033558464],[-119.56940761098241,37.53248495059249],[-119.56942017508179,37.53247620735042],[-119.56943311018209,37.532467814225406],[-119.56944640090715,37.532459781194376],[-119.56946003145818,37.532452117806244],[-119.56947398563231,37.5324448331705],[-119.56948824684211,37.53243793594638],[-119.56950279813522,37.5324314343327],[-119.56951762221432,37.53242533605788],[-119.569532701458,37.53241964837098],[-119.56954801794144,37.532414378032975],[-119.56956355345788,37.5324095313087],[-119.5695792895402,37.5324051139595],[-119.56959520748285,37.53240113123624],[-119.56961128836413,37.5323975878732],[-119.56962751306871,37.532394488082396],[-119.56964386231019,37.53239183554852],[-119.56966031665424,37.53238963342467],[-119.5696768565416,37.53238788432851],[-119.56969346231125,37.53238659033916],[-119.56971011422394,37.53238575299483],[-119.56972679248551,37.532385373290836],[-119.56974347727055,37.53238545167855],[-119.5697601487458,37.53238598806479],[-119.56977678709396,37.53238698181193],[-119.56979337253694,37.532388431738745],[-119.56980988535966,37.53239033612167],[-119.56982630593332,37.532392692696995],[-119.56984261473876,37.53239549866343],[-119.56985879238967,37.53239875068553],[-119.56987481965568,37.53240244489763],[-119.56989067748513,37.532406576908386],[-119.56990634702778,37.53241114180612],[-119.56992180965717,37.5324161341645],[-119.56993704699285,37.532421548049086],[-119.56995204092206,37.53242737702442],[-119.56996677362149,37.53243361416154],[-119.56998122757825,37.53244025204641],[-119.56999538561082,37.53244728278854],[-119.57000923088941,37.53245469803043],[-119.57002274695601,37.532462488957584],[-119.57018131197397,37.53255397551507],[-119.57034364466607,37.532641171010184],[-119.57050956200996,37.53272397712735],[-119.57067887693951,37.53280230049982],[-119.57085139855589,37.532876052815006],[-119.57102693234276,37.53294515091411],[-119.57120528038581,37.53300951688594],[-119.5713862415959,37.5330690781548],[-119.57156961193583,37.53312376756236],[-119.57161820082528,37.53313677963609],[-119.5716673215441,37.53314845691558],[-119.57171691629138,37.533158785659985],[-119.57176692670828,37.53316775371533],[-119.57181729394676,37.5331753505287],[-119.57186795873895,37.53318156716081],[-119.57191886146664,37.53318639629641],[-119.57196994223173,37.53318983225301],[-119.57202114092651,37.533191870987416],[-119.57207239730448,37.53319251010065],[-119.57212365105131,37.53319174884062],[-119.57217484185571,37.53318958810315],[-119.57222590948054,37.5331860304308],[-119.57227679383351,37.53318108000994],[-119.5723681292131,37.53317196055785],[-119.57245974917657,37.53316487936197],[-119.57255158201764,37.53315984196436],[-119.5726435558635,37.53315685230755],[-119.57268714633771,37.53315534773665],[-119.57273065068345,37.53315269802735],[-119.57277402147754,37.53314890606803],[-119.57281721144237,37.53314397599224],[-119.57286017349753,37.53313791317414],[-119.57290286081101,37.533130724222666],[-119.57294522685038,37.533122416974365],[-119.57298722543347,37.53311300048478],[-119.57302881077867,37.5331024850186],[-119.57306993755492,37.53309088203853],[-119.57311056093107,37.53307820419266],[-119.57315063662485,37.53306446530085],[-119.57317206318947,37.533057133860304],[-119.57319379380185,37.533050393817724],[-119.57321580273236,37.533044253153484],[-119.57323806392185,37.53303871913825],[-119.57326055101255,37.53303379832444],[-119.5732832373792,37.53302949653838],[-119.5733060961606,37.5330258188735],[-119.57332910029145,37.53302276968422],[-119.57335222253434,37.533020352580856],[-119.57337543551203,37.53301857042532],[-119.57339871173988,37.53301742532772],[-119.57342202365832,37.53301691864386],[-119.57344534366555,37.53301705097367],[-119.57346864415022,37.533017822160474],[-119.57349189752401,37.53301923129116],[-119.57351507625445,37.533021276697305],[-119.57353815289744,37.5330239559571],[-119.57356110012974,37.53302726589822],[-119.57358389078126,37.53303120260167],[-119.57360649786742,37.533035761406246],[-119.57362889462084,37.533040936914276],[-119.57365105452325,37.5330467229978],[-119.57367295133676,37.53305311280601],[-119.57369455913499,37.53306009877319],[-119.5743367507185,37.53327681940185],[-119.57434518737614,37.533279514286875],[-119.57435373624206,37.53328197471276],[-119.57436238704565,37.53328419772354],[-119.57437112939381,37.5332861806485],[-119.57437995278356,37.533287921105334],[-119.57438884661441,37.53328941700309],[-119.57439780020133,37.533290666544566],[-119.57440680278745,37.53329166822857],[-119.57441584355712,37.53329242085168],[-119.57442491164868,37.5332929235097],[-119.57443399616776,37.533293175598715],[-119.57444308620019,37.533293176815896],[-119.57445217082518,37.53329292715975],[-119.5744612391285,37.53329242693023],[-119.57447028021548,37.53329167672832],[-119.5744792832241,37.53329067745529],[-119.57448823733813,37.53328943031168],[-119.57449713180016,37.533287936795816],[-119.57450595592435,37.53328619870201],[-119.57451469910939,37.53328421811838],[-119.57452335085122,37.53328199742446],[-119.57453190075563,37.53327953928814],[-119.57454033855079,37.53327684666262],[-119.57454865409953,37.53327392278287],[-119.57455683741156,37.53327077116158],[-119.57456487865551,37.53326739558517],[-119.57457276817057,37.53326380010902],[-119.57458049647836,37.53325998905273],[-119.57458805429413,37.53325596699492],[-119.5745954325379,37.53325173876769],[-119.57460262234552,37.53324730945079],[-119.5746096150792,37.53324268436564],[-119.57461640233791,37.5332378690688],[-119.57462297596747,37.53323286934535],[-119.5746293280704,37.53322769120195],[-119.57463545101533,37.53322234085961],[-119.57464133744624,37.533216824746226],[-119.57464698029122,37.53321114948885],[-119.57465237277103,37.5332053219057],[-119.5746575084072,37.533199348998025],[-119.5746623810299,37.53319323794167],[-119.57466698478521,37.533186996078435],[-119.57468131858313,37.533167553461745],[-119.5746964806691,37.533148513470245],[-119.57471245322907,37.53312989847342],[-119.57472921749682,37.533111730341375],[-119.574746753776,37.53309403041924],[-119.57476504146334,37.53307681950197],[-119.57478405907277,37.53306011781011],[-119.57480378426074,37.53304394496585],[-119.57482419385245,37.533028319970015],[-119.57484526386895,37.53301326117987],[-119.57486696955563,37.532998786287315],[-119.5748892854109,37.53298491229841],[-119.57491218521648,37.53297165551308],[-119.574935642068,37.53295903150622],[-119.57495962840675,37.532947055109204],[-119.57498411605195,37.53293574039261],[-119.57500907623393,37.53292510064961],[-119.5750344796278,37.53291514838038],[-119.5750602963881,37.532905895277416],[-119.57508649618373,37.532897352211734],[-119.5751130482336,37.53288952922025],[-119.57513992134281,37.5328824354938],[-119.57516708393928,37.53287607936651],[-119.5751945041109,37.53287046830589],[-119.57522214964284,37.53286560890411],[-119.5752499880557,37.532861506870276],[-119.57527798664337,37.53285816702366],[-119.5753061125116,37.53285559328808],[-119.57533433261665,37.53285378868733],[-119.575362613804,37.53285275534152],[-119.57539092284749,37.5328524944647],[-119.57541922648811,37.53285300636333],[-119.57544749147328,37.53285429043605],[-119.5754756845958,37.53285634517421],[-119.5755037727329,37.53285916816387],[-119.57553172288515,37.53286275608835],[-119.57555950221517,37.532867104732425],[-119.5755870780863,37.53287220898703],[-119.57561441810094,37.53287806285547],[-119.57564149013847,37.53288465946025],[-119.57566826239312,37.532891991051336],[-119.57570858800122,37.53290303556974],[-119.57574936429326,37.532912975437085],[-119.57579054357019,37.53292179902597],[-119.57583207766162,37.53292949601474],[-119.57587391798201,37.53293605739966],[-119.57591601558754,37.53294147550537],[-119.57595832123344,37.532945743993885],[-119.57600078543149,37.532948857872],[-119.576043358508,37.53295081349721],[-119.57608599066191,37.532951608581826],[-119.57612863202306,37.53295124219581],[-119.57617123271046,37.532949714767724],[-119.57621374289079,37.53294702808435],[-119.57625611283653,37.53294318528849],[-119.57629829298426,37.53293819087534],[-119.57634023399264,37.532932050687315],[-119.57638188680008,37.532924771907034],[-119.5764232026821,37.53291636304901],[-119.57646413330848,37.532906833949795],[-119.57649163273709,37.53290303908256],[-119.57651895285166,37.532898496499676],[-119.57654606160452,37.532893211529725],[-119.57657292719597,37.532887190372264],[-119.57659951811146,37.532880440090366],[-119.57662580315883,37.53287296860239],[-119.57665175150463,37.53286478467273],[-119.57667733271043,37.53285589790147],[-119.57670251676853,37.53284631871322],[-119.57672727413713,37.532836058344735],[-119.57675157577492,37.53282512883188],[-119.57677539317532,37.53281354299539],[-119.57679869839976,37.53280131442596],[-119.57682146411052,37.532788457468186],[-119.57684366360282,37.532774987203794],[-119.57686527083605,37.53276091943393],[-119.57688626046448,37.53274627066061],[-119.57690660786682,37.53273105806745],[-119.57692628917522,37.53271529949931],[-119.57694528130321,37.532699013441636],[-119.57696356197283,37.53268221899852],[-119.57698110974066,37.53266493587043],[-119.5769979040231,37.53264718433107],[-119.57701392512044,37.53262898520359],[-119.57702915424001,37.53261035983616],[-119.57704357351814,37.53259133007689],[-119.5770571660412,37.532571918248316],[-119.57707103417599,37.532551466684126],[-119.57708579165458,37.532531413732364],[-119.57710142043358,37.53251178391001],[-119.57711790140435,37.53249260121674],[-119.57713521441639,37.53247388910558],[-119.57715333830204,37.53245567045416],[-119.57717225090224,37.532437967536765],[-119.57719192909371,37.53242080199717],[-119.57721234881724,37.53240419482209],[-119.577233485107,37.53238816631562],[-119.57725531212117,37.532372736074294],[-119.5772778031735,37.53235792296324],[-119.57730093076594,37.53234374509304],[-119.57732466662222,37.53233021979763],[-119.57734898172244,37.53231736361307],[-119.57737384633865,37.532305192257425],[-119.57739923007095,37.532293720611364],[-119.57742510188501,37.53228296270018],[-119.57745143014962,37.53227293167652],[-119.5774781826757,37.53226363980433],[-119.57750532675543,37.53225509844385],[-119.57753282920234,37.53224731803772],[-119.5775606563918,37.53224030809832],[-119.57758877430224,37.53223407719595],[-119.57761714855667,37.53222863294854],[-119.57764574446472,37.5322239820122],[-119.57767452706504,37.53222013007317],[-119.57770346116803,37.532217081840805],[-119.57772147794141,37.53221879990018],[-119.57773955905427,37.53222001594905],[-119.57775768245783,37.53222072850456],[-119.5777758260517,37.532220936697826],[-119.57779396771085,37.53222064027491],[-119.57781208531264,37.5322198395973],[-119.57783015676375,37.53221853564142],[-119.57784816002714,37.53221672999729],[-119.57786607314897,37.53221442486683],[-119.57788387428523,37.53221162306101],[-119.5779015417286,37.532208327996415],[-119.57791905393468,37.53220454369122],[-119.57793638954848,37.53220027476013],[-119.57795352743031,37.53219552640887],[-119.57797044668159,37.53219030442772],[-119.5779871266704,37.53218461518459],[-119.57800354705661,37.53217846561712],[-119.57801968781665,37.532171863224384],[-119.57803552926796,37.53216481605752],[-119.57805105209297,37.53215733271015],[-119.57806623736272,37.532149422307704],[-119.57808106655979,37.53214109449642],[-119.57809552160109,37.53213235943154],[-119.57810958485977,37.53212322776488],[-119.57812323918674,37.53211371063191],[-119.57813646793163,37.5321038196382],[-119.57814925496301,37.53209356684511],[-119.57816158468813,37.532082964755254],[-119.57817344207193,37.53207202629716],[-119.57818481265537,37.53206076480956],[-119.57819568257297,37.532049194025],[-119.57820603856987,37.53203732805333],[-119.57821586801794,37.532025181364254],[-119.57822515893105,37.53201276876978],[-119.5782338999799,37.53200010540622],[-119.5782420805057,37.53198720671563],[-119.57824969053314,37.531974088427035],[-119.57825672078266,37.53196076653725],[-119.57826351169695,37.53169717716747],[-119.5783137528844,37.521676041690505],[-119.57833489170962,37.51756619861773],[-119.57823327070983,37.50310990012311],[-119.57823397438125,37.50096768706894],[-119.578032270322,37.496919533027665],[-119.57792170163452,37.494700257593124],[-119.58370739754731,37.49471155053842],[-119.5838319499282,37.49471179051515],[-119.58912342012042,37.49472723938196],[-119.59183495401813,37.49473848976147],[-119.59509388278722,37.494751431690254],[-119.60042310406676,37.494756042267],[-119.60783421134633,37.494786915734146],[-119.61172458659397,37.49478826262425],[-119.61601503743519,37.494807681858354],[-119.61602474829184,37.49804937798128],[-119.66065358165679,37.497540168309634],[-119.6609256304949,37.50408826656874],[-119.66274957843454,37.50405915061321],[-119.66566570438314,37.50407227013848],[-119.66597859582907,37.51175938654145],[-119.67222669184663,37.51243470757754],[-119.67264146156667,37.51853554202848],[-119.67305029028854,37.52600975892665],[-119.6759341837822,37.52602504406251],[-119.67626705913266,37.53724376428861],[-119.67807132186762,37.53728506759206],[-119.68516300414568,37.53713599105986],[-119.6850010182885,37.54816057143576],[-119.68815290128259,37.54818228236702],[-119.68805719056729,37.550875408834514],[-119.70259307508,37.55125256206165],[-119.7030462267688,37.56451539748515],[-119.70314205605777,37.567264119873016],[-119.70318441026375,37.56847892312067],[-119.70355688487562,37.57916052506468],[-119.6948389652777,37.579085905108116],[-119.6958770217986,37.60988100501796]]]},"properties":{"UNIT_TYPE":"National Park","STATE":"CA","REGION":"PW","UNIT_CODE":"YOSE","UNIT_NAME":"Yosemite National Park","DATE_EDIT":"20121113","GIS_NOTES":"Lands - http://landsnet.nps.gov/tractsnet/documents/YOSE/Metadata/yose_metadata.xml","CREATED_BY":"Lands","METADATA":"http://nrdata.nps.gov/programs/Lands/YOSE_metadata.xml","PARKNAME":"Yosemite","GNIS_ID":""}} \ No newline at end of file -- cgit v1.2.1 From 7c8fbc82323f6a7cb8462c6843cf6d43b0eaf46a Mon Sep 17 00:00:00 2001 From: Tobrun Date: Thu, 23 Nov 2017 08:49:01 +0100 Subject: [android] - bump okhttp, remove workaround for Android Oreo (#10515) --- .../src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java | 9 +-------- platform/android/dependencies.gradle | 2 +- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java index 9f887ab7cc..f25ecd4d4d 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java @@ -86,14 +86,7 @@ class HTTPRequest implements Callback { } mRequest = builder.build(); mCall = mClient.newCall(mRequest); - - // TODO remove code block for workaround in #10303 - if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.N_MR1) { - mCall.enqueue(this); - } else { - // Calling execute instead of enqueue is a workaround for #10303 - onResponse(mCall, mCall.execute()); - } + mCall.enqueue(this); } catch (Exception exception) { onFailure(exception); } diff --git a/platform/android/dependencies.gradle b/platform/android/dependencies.gradle index 0094b79281..541b3c5236 100644 --- a/platform/android/dependencies.gradle +++ b/platform/android/dependencies.gradle @@ -42,7 +42,7 @@ ext { // square crew timber : 'com.jakewharton.timber:timber:4.5.1', - okhttp3 : 'com.squareup.okhttp3:okhttp:3.9.0', + okhttp3 : 'com.squareup.okhttp3:okhttp:3.9.1', leakCanaryDebug : "com.squareup.leakcanary:leakcanary-android:${leakCanaryVersion}", leakCanaryRelease : "com.squareup.leakcanary:leakcanary-android-no-op:${leakCanaryVersion}" ] -- cgit v1.2.1 From 85bc035be333b166ace6c3029dcbf89bb1e831e9 Mon Sep 17 00:00:00 2001 From: Antonio Zugaldia Date: Mon, 27 Nov 2017 10:33:14 -0500 Subject: [android] Set a larger limit for the HTTP dispatcher (#10567) --- .../src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java index f25ecd4d4d..9c7fe4ee63 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java @@ -22,6 +22,7 @@ import javax.net.ssl.SSLException; import okhttp3.Call; import okhttp3.Callback; +import okhttp3.Dispatcher; import okhttp3.HttpUrl; import okhttp3.OkHttpClient; import okhttp3.Request; @@ -31,7 +32,7 @@ import timber.log.Timber; class HTTPRequest implements Callback { - private static OkHttpClient mClient = new OkHttpClient(); + private static OkHttpClient mClient = new OkHttpClient.Builder().dispatcher(getDispatcher()).build(); private String USER_AGENT_STRING = null; private static final int CONNECTION_ERROR = 0; @@ -47,6 +48,14 @@ class HTTPRequest implements Callback { private Call mCall; private Request mRequest; + private static Dispatcher getDispatcher() { + Dispatcher dispatcher = new Dispatcher(); + // Matches core limit set on + // https://github.com/mapbox/mapbox-gl-native/blob/master/platform/android/src/http_file_source.cpp#L192 + dispatcher.setMaxRequestsPerHost(20); + return dispatcher; + } + private native void nativeOnFailure(int type, String message); private native void nativeOnResponse(int code, String etag, String modified, String cacheControl, String expires, @@ -55,7 +64,6 @@ class HTTPRequest implements Callback { private HTTPRequest(long nativePtr, String resourceUrl, String etag, String modified) { mNativePtr = nativePtr; - Timber.e("requesting: %s",resourceUrl); try { HttpUrl httpUrl = HttpUrl.parse(resourceUrl); final String host = httpUrl.host().toLowerCase(MapboxConstants.MAPBOX_LOCALE); -- cgit v1.2.1 From 3f962574ed855c0edc92c88a24cca47dd6943bc4 Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Thu, 23 Nov 2017 12:19:55 +0200 Subject: [build] Added CircleCI macos-release-node{4,6} jobs --- circle.yml | 81 ++++++++++++++++++++++++++++++++--- platform/node/bitrise.yml | 71 +++--------------------------- platform/node/scripts/after_script.sh | 14 ------ 3 files changed, 81 insertions(+), 85 deletions(-) delete mode 100755 platform/node/scripts/after_script.sh diff --git a/circle.yml b/circle.yml index 09421bec9b..4c562bd936 100644 --- a/circle.yml +++ b/circle.yml @@ -35,6 +35,14 @@ workflows: - ios-sanitize-thread - macos-debug - macos-debug-qt5 + - macos-release-node4: + filters: + tags: + only: /node-.*/ + - macos-release-node6: + filters: + tags: + only: /node-.*/ step-library: - &generate-cache-key @@ -125,6 +133,20 @@ step-library: brew install cmake brew install ccache + - &install-macos-node4-dependencies + run: + name: Install macOS Node@4 dependencies + command: | + brew install node@4 + brew link node@4 --force --overwrite + + - &install-macos-node6-dependencies + run: + name: Install macOS Node@6 dependencies + command: | + brew install node@6 + brew link node@6 --force --overwrite + - &install-macos-qt-dependencies run: name: Install macOS Qt dependencies @@ -138,18 +160,25 @@ step-library: ln -s $HOMEBREW_QT5_CELLAR/$HOMEBREW_QT5_VERSION/mkspecs /usr/local/mkspecs ln -s $HOMEBREW_QT5_CELLAR/$HOMEBREW_QT5_VERSION/plugins /usr/local/plugins - - &run-node-tests + - &run-node-macos-tests + run: + name: Run node tests + command: make test-node + + - &run-node-linux-tests run: name: Run node tests command: | xvfb-run --server-args="-screen 0 1024x768x24" \ logbt -- apitrace trace --api=egl -v make test-node - - &run-node-tests-recycle-map + + - &run-node-linux-tests-recycle-map run: name: Run node tests (recycling the map object) command: | xvfb-run --server-args="-screen 0 1024x768x24" \ logbt -- apitrace trace --api=egl -v make test-node-recycle-map + - &run-unit-tests run: name: Run tests @@ -356,7 +385,7 @@ jobs: - *build-node - *show-ccache-stats - *save-cache - - *run-node-tests + - *run-node-linux-tests - *publish-node-package - *upload-render-tests @@ -379,7 +408,7 @@ jobs: - *build-node - *show-ccache-stats - *save-cache - - *run-node-tests + - *run-node-linux-tests - *publish-node-package - *upload-render-tests @@ -402,7 +431,7 @@ jobs: - *build-node - *show-ccache-stats - *save-cache - - *run-node-tests-recycle-map + - *run-node-linux-tests-recycle-map - *publish-node-package - *upload-render-tests-recycle-map @@ -731,3 +760,45 @@ jobs: - store_artifacts: path: test/fixtures destination: test/fixtures + +# ------------------------------------------------------------------------------ + macos-release-node4: + macos: + xcode: "9.0" + environment: + BUILDTYPE: RelWithDebInfo + HOMEBREW_NO_AUTO_UPDATE: 1 + steps: + - checkout + - *install-macos-dependencies + - *install-macos-node4-dependencies + - *generate-cache-key + - *restore-cache + - *reset-ccache-stats + - *build-node + - *show-ccache-stats + - *save-cache + - *run-node-macos-tests + - *publish-node-package + - *upload-render-tests + +# ------------------------------------------------------------------------------ + macos-release-node6: + macos: + xcode: "9.0" + environment: + BUILDTYPE: RelWithDebInfo + HOMEBREW_NO_AUTO_UPDATE: 1 + steps: + - checkout + - *install-macos-dependencies + - *install-macos-node6-dependencies + - *generate-cache-key + - *restore-cache + - *reset-ccache-stats + - *build-node + - *show-ccache-stats + - *save-cache + - *run-node-macos-tests + - *publish-node-package + - *upload-render-tests diff --git a/platform/node/bitrise.yml b/platform/node/bitrise.yml index 3cc27008e4..4a013ea8b0 100644 --- a/platform/node/bitrise.yml +++ b/platform/node/bitrise.yml @@ -1,76 +1,15 @@ -format_version: 1.3.0 +format_version: 1.1.0 default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git trigger_map: -- tag: "node-v*" - workflow: publish -- tag: "*" - workflow: primary -- push_branch: "*" - workflow: primary -- pull_request_target_branch: "*" +- pattern: "*" + is_pull_request_allowed: true workflow: primary -shortcuts: - slack: &slack - title: Post to Slack - inputs: - - webhook_url: "$SLACK_HOOK_URL" - - channel: "#gl-bots" - - from_username: 'Bitrise Node macOS' - - from_username_on_error: 'Bitrise Node macOS' - - message: '<${BITRISE_BUILD_URL}|Build #${BITRISE_BUILD_NUMBER}> - for - by ${GIT_CLONE_COMMIT_COMMITER_NAME} - passed' - - message_on_error: '<${BITRISE_BUILD_URL}|Build #${BITRISE_BUILD_NUMBER}> - for - by ${GIT_CLONE_COMMIT_COMMITER_NAME} - failed' - - icon_url: https://bitrise-public-content-production.s3.amazonaws.com/slack/bitrise-slack-icon-128.png - - icon_url_on_error: https://bitrise-public-content-production.s3.amazonaws.com/slack/bitrise-slack-error-icon-128.png - workflows: primary: steps: - script: - title: Test - inputs: - - content: |- - #!/bin/bash - set -eu -o pipefail - brew update - brew unlink node - brew install cmake awscli node@4 node@6 - brew link node@4 --force - gem install xcpretty --no-rdoc --no-ri - make test-node || RESULT=$? - brew unlink node@4 - brew link --overwrite node@6 --force - make clean - make test-node || RESULT=$? - ./platform/node/scripts/after_script.sh ${BITRISE_BUILD_NUMBER} - exit ${RESULT:-0} - - slack: *slack - - publish: - steps: - - script: - title: Publish + title: Skip Workflow inputs: - - content: |- - #!/bin/bash - set -eu -o pipefail - brew update - brew unlink node - brew install cmake awscli node@4 node@6 - brew link node@4 --force - gem install xcpretty --no-rdoc --no-ri - export BUILDTYPE=RelWithDebInfo - export PUBLISH=true - make test-node && ./platform/node/scripts/after_success.sh - brew unlink node@4 - brew link --overwrite node@6 --force - make clean - make test-node && ./platform/node/scripts/after_success.sh - - slack: *slack + - content: echo "This workflow is obsolete — see CircleCi." diff --git a/platform/node/scripts/after_script.sh b/platform/node/scripts/after_script.sh deleted file mode 100755 index beb8d6966f..0000000000 --- a/platform/node/scripts/after_script.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -set -e -set -o pipefail - -JOB=$1 - -if [ ! -z "${AWS_ACCESS_KEY_ID}" ] && [ ! -z "${AWS_SECRET_ACCESS_KEY}" ] ; then - gzip --stdout mapbox-gl-js/test/integration/render-tests/index.html | \ - aws s3 cp --acl public-read --content-encoding gzip --content-type text/html \ - - s3://mapbox/mapbox-gl-native/render-tests/$JOB/index.html - - echo http://mapbox.s3.amazonaws.com/mapbox-gl-native/render-tests/$JOB/index.html -fi -- cgit v1.2.1 From a1f207b090a1ddb36c8103c9af621b119286f97e Mon Sep 17 00:00:00 2001 From: Pablo Guardiola Date: Wed, 29 Nov 2017 08:31:46 +0100 Subject: [android] use location engine abstraction instead of location source (lost) in MyLocationView#init (#10579) --- .../main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java index aa7934ec1e..3fe3c7b40d 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java @@ -33,7 +33,6 @@ import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; import com.mapbox.mapboxsdk.constants.MyBearingTracking; import com.mapbox.mapboxsdk.constants.MyLocationTracking; import com.mapbox.mapboxsdk.geometry.LatLng; -import com.mapbox.mapboxsdk.location.LocationSource; import com.mapbox.mapboxsdk.maps.MapboxMap; import com.mapbox.mapboxsdk.maps.Projection; import com.mapbox.services.android.telemetry.location.LocationEngine; @@ -162,7 +161,7 @@ public class MyLocationView extends View { } @Deprecated - public void init(LocationSource locationSource) { + public void init(LocationEngine locationSource) { this.locationEngine = locationSource; } -- cgit v1.2.1 From 8cebab09ba76f56c58ad354e65440087136c7d3e Mon Sep 17 00:00:00 2001 From: Tobrun Date: Wed, 29 Nov 2017 12:21:54 +0100 Subject: [android] - attribtuion anchor point calculation fix for short text with full logo on a MapSnapshot (#10558) --- .../main/java/com/mapbox/mapboxsdk/attribution/AttributionMeasure.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/attribution/AttributionMeasure.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/attribution/AttributionMeasure.java index 667060168b..c2408ca718 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/attribution/AttributionMeasure.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/attribution/AttributionMeasure.java @@ -62,7 +62,7 @@ public class AttributionMeasure { float width = measure.getLogoContainerWidth() + measure.getTextViewShortContainerWidth(); boolean fitBounds = width <= measure.getMaxSizeShort(); if (fitBounds) { - PointF anchor = calculateAnchor(measure.snapshot, measure.textView, measure.margin); + PointF anchor = calculateAnchor(measure.snapshot, measure.textViewShort, measure.margin); return new AttributionLayout(measure.logo, anchor, true); } return null; -- cgit v1.2.1 From 787c782749966e89a7da485eae99820c249e1525 Mon Sep 17 00:00:00 2001 From: Fabian Guerra Date: Wed, 29 Nov 2017 17:39:16 -0500 Subject: [ios] Fix minimumZoomLevel is not getting set. --- platform/ios/src/MGLMapView.mm | 1 + 1 file changed, 1 insertion(+) diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index 41d900702b..faff12f02f 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -2930,6 +2930,7 @@ public: - (void)setMinimumZoomLevel:(double)minimumZoomLevel { + _mbglMap->setMinZoom(minimumZoomLevel); } - (double)minimumZoomLevel -- cgit v1.2.1 From 0c50da69137c2de26166aa05f983c384588d93ee Mon Sep 17 00:00:00 2001 From: Fabian Guerra Date: Wed, 22 Nov 2017 17:40:50 -0500 Subject: [ios, macos] Fix an issue that triggers didSelectAnnotations for MGLAnnotationImage based annotations. --- platform/ios/src/MGLMapView.mm | 2 +- platform/macos/src/MGLMapView.mm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index faff12f02f..f9690c70f0 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -4046,7 +4046,7 @@ public: } else { - if ([annotation isKindOfClass:[MGLShape class]]) + if ([annotation isKindOfClass:[MGLMultiPoint class]]) { return false; } diff --git a/platform/macos/src/MGLMapView.mm b/platform/macos/src/MGLMapView.mm index 8df6f4545d..8df6e2969d 100644 --- a/platform/macos/src/MGLMapView.mm +++ b/platform/macos/src/MGLMapView.mm @@ -2077,7 +2077,7 @@ public: return true; } - if ([annotation isKindOfClass:[MGLShape class]]) + if ([annotation isKindOfClass:[MGLMultiPoint class]]) { return false; } -- cgit v1.2.1 From 06a0c036057fccc481657477985a0d4b8c96cbc2 Mon Sep 17 00:00:00 2001 From: Fabian Guerra Date: Tue, 28 Nov 2017 16:02:42 -0500 Subject: [ios, macos] Update changelogs. --- platform/ios/CHANGELOG.md | 7 ++++++- platform/macos/CHANGELOG.md | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/platform/ios/CHANGELOG.md b/platform/ios/CHANGELOG.md index 507f5eb079..347329506e 100644 --- a/platform/ios/CHANGELOG.md +++ b/platform/ios/CHANGELOG.md @@ -2,7 +2,12 @@ Mapbox welcomes participation and contributions from everyone. Please read [CONTRIBUTING.md](../../CONTRIBUTING.md) to get started. -## 3.7.0 +## 3.7.1 + +### Annotations +* Fixed an issue that could cause triggering `-[MGLMapViewDelegate mapView:didSelectAnnotation:]` when taping next to a `MGLAnnotationImage` annotation. ([#10538](https://github.com/mapbox/mapbox-gl-native/pull/10538)) + +## 3.7.0 - Novemeber 13, 2017 ### Networking and storage diff --git a/platform/macos/CHANGELOG.md b/platform/macos/CHANGELOG.md index 418b3b2006..d5fb02082b 100644 --- a/platform/macos/CHANGELOG.md +++ b/platform/macos/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog for Mapbox macOS SDK +## v0.6.1 + +### Annotations +* Fixed an issue that could cause triggering `-[MGLMapViewDelegate mapView:didSelectAnnotation:]` when taping next to a `MGLAnnotationImage` annotation. ([#10538](https://github.com/mapbox/mapbox-gl-native/pull/10538)) + ## v0.6.0 ### Networking and storage -- cgit v1.2.1 From 5086c76997fdc073816632688da2e8850aff510b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguye=CC=82=CC=83n?= Date: Thu, 30 Nov 2017 10:49:18 -0800 Subject: [macos] Fixed logo view distortion on macOS High Sierra MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Only the logo view’s baseline is aligned to the attribution view’s baseline; the X-height doesn’t need to be aligned. Previously, macOS ignored the X-height constraint inferred from the alignment rect, but now it honors it in addition to the baseline. --- platform/macos/CHANGELOG.md | 1 + platform/macos/src/MGLMapView.mm | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/platform/macos/CHANGELOG.md b/platform/macos/CHANGELOG.md index d5fb02082b..6a274ae3b8 100644 --- a/platform/macos/CHANGELOG.md +++ b/platform/macos/CHANGELOG.md @@ -38,6 +38,7 @@ ### Other changes * Added a Bulgarian localization. ([#10309](https://github.com/mapbox/mapbox-gl-native/pull/10309)) +* Fixed distortion in the logo view on macOS 10.13 High Sierra. ([#10606](https://github.com/mapbox/mapbox-gl-native/pull/10606)) * Fixed an issue that could cause line label rendering glitches when the line geometry is projected to a point behind the plane of the camera. ([#9865](https://github.com/mapbox/mapbox-gl-native/pull/9865)) * Fixed an issue that could cause a crash when using `-[MGLMapView flyToCamera:completionHandler:]` and related methods with zoom levels at or near the maximum value. ([#9381](https://github.com/mapbox/mapbox-gl-native/pull/9381)) diff --git a/platform/macos/src/MGLMapView.mm b/platform/macos/src/MGLMapView.mm index 8df6e2969d..c2c13320c7 100644 --- a/platform/macos/src/MGLMapView.mm +++ b/platform/macos/src/MGLMapView.mm @@ -371,7 +371,7 @@ public: NSImage *logoImage = [[NSImage alloc] initWithContentsOfFile: [[NSBundle mgl_frameworkBundle] pathForResource:@"mapbox" ofType:@"pdf"]]; // Account for the image’s built-in padding when aligning other controls to the logo. - logoImage.alignmentRect = NSInsetRect(logoImage.alignmentRect, 0, 3); + logoImage.alignmentRect = NSOffsetRect(logoImage.alignmentRect, 0, 3); _logoView.image = logoImage; _logoView.translatesAutoresizingMaskIntoConstraints = NO; _logoView.accessibilityTitle = NSLocalizedStringWithDefaultValue(@"MAP_A11Y_TITLE", nil, nil, @"Mapbox", @"Accessibility title"); -- cgit v1.2.1 From 784b71a81c469e9fc5297c4006846238f91fe724 Mon Sep 17 00:00:00 2001 From: Fabian Guerra Date: Tue, 21 Nov 2017 16:32:05 -0500 Subject: [ios, macos] Refactor snapshot attribution. --- platform/darwin/src/MGLAttributionInfo.h | 30 +++++ platform/darwin/src/MGLAttributionInfo.mm | 19 ++++ platform/darwin/src/MGLMapSnapshotter.mm | 180 ++++++++++++++++-------------- 3 files changed, 143 insertions(+), 86 deletions(-) diff --git a/platform/darwin/src/MGLAttributionInfo.h b/platform/darwin/src/MGLAttributionInfo.h index 031a10060f..1de37c3b24 100644 --- a/platform/darwin/src/MGLAttributionInfo.h +++ b/platform/darwin/src/MGLAttributionInfo.h @@ -7,6 +7,24 @@ NS_ASSUME_NONNULL_BEGIN +/** + The attribution info is represented in the longest format available. + */ +typedef NS_ENUM(NSUInteger, MGLAttributionInfoStyle) { + /** + Specifies a short attribution info style. + */ + MGLAttributionInfoStyleShort = 1, + /** + Specifies a medium attribution info style. + */ + MGLAttributionInfoStyleMedium, + /** + Specifies a long attribution info style. + */ + MGLAttributionInfoStyleLong +}; + /** Information about an attribution statement, usually a copyright or trademark statement, associated with a map content source. @@ -59,6 +77,18 @@ MGL_EXPORT */ - (nullable NSURL *)feedbackURLAtCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate zoomLevel:(double)zoomLevel; +/** + Returns a copy of the current `title` formatted accordingly to `style`. + + Example: If the `style` property is set to `MGLAttributionInfoStyleShort` and the + `title` property is set to `OpenStreetMap`, then this method returns `OSM`. + + @param style The attribution info style. + + @return The `NSAttributedString` styled title. + */ +- (NSAttributedString *)titleWithStyle:(MGLAttributionInfoStyle)style; + @end NS_ASSUME_NONNULL_END diff --git a/platform/darwin/src/MGLAttributionInfo.mm b/platform/darwin/src/MGLAttributionInfo.mm index 92fb9b689f..29dd5229a7 100644 --- a/platform/darwin/src/MGLAttributionInfo.mm +++ b/platform/darwin/src/MGLAttributionInfo.mm @@ -168,6 +168,25 @@ return components.URL; } +- (NSAttributedString *)titleWithStyle:(MGLAttributionInfoStyle)style +{ + NSString *openStreetMap = NSLocalizedStringWithDefaultValue(@"OSM_FULL_NAME", nil, nil, @"OpenStreetMap", @"OpenStreetMap full name attribution"); + NSString *OSM = NSLocalizedStringWithDefaultValue(@"OSM_SHORT_NAME", nil, nil, @"OSM", @"OpenStreetMap short name attribution"); + + NSMutableAttributedString *title = [[NSMutableAttributedString alloc] initWithAttributedString:self.title]; + [title removeAttribute:NSUnderlineStyleAttributeName range:NSMakeRange(0, [title.string length])]; + + BOOL isAbbreviated = (style == MGLAttributionInfoStyleShort); + + if ([title.string rangeOfString:@"OpenStreetMap"].location != NSNotFound) { + [title.mutableString replaceOccurrencesOfString:@"OpenStreetMap" withString:isAbbreviated ? OSM : openStreetMap + options:NSCaseInsensitiveSearch + range:NSMakeRange(0, [title.mutableString length])]; + } + + return title; +} + - (BOOL)isEqual:(id)object { return [object isKindOfClass:[self class]] && [[object title] isEqual:self.title] && [[object URL] isEqual:self.URL]; } diff --git a/platform/darwin/src/MGLMapSnapshotter.mm b/platform/darwin/src/MGLMapSnapshotter.mm index 31b3ed41d6..8b54488814 100644 --- a/platform/darwin/src/MGLMapSnapshotter.mm +++ b/platform/darwin/src/MGLMapSnapshotter.mm @@ -27,24 +27,6 @@ const CGPoint MGLLogoImagePosition = CGPointMake(8, 8); const CGFloat MGLSnapshotterMinimumPixelSize = 64; -@interface MGLSnapshotAttributionOptions : NSObject -#if TARGET_OS_IPHONE -@property (nonatomic) UIImage *logoImage; -#else -@property (nonatomic) NSImage *logoImage; -#endif - -@property (nonatomic) CGSize attributionBackgroundSize; - -@property (nonatomic) NS_ARRAY_OF(MGLAttributionInfo *) *attributionInfo; - -@end - -@implementation MGLSnapshotAttributionOptions -@end - - - @implementation MGLMapSnapshotOptions - (instancetype _Nonnull)initWithStyleURL:(nullable NSURL *)styleURL camera:(MGLMapCamera *)camera size:(CGSize) size @@ -107,7 +89,7 @@ const CGFloat MGLSnapshotterMinimumPixelSize = 64; std::shared_ptr _mbglThreadPool; std::unique_ptr _mbglMapSnapshotter; std::unique_ptr> _snapshotCallback; - CGFloat _defaultLogoHeight; + NS_ARRAY_OF(MGLAttributionInfo *) *_attributionInfo; } - (instancetype)initWithOptions:(MGLMapSnapshotOptions *)options @@ -187,6 +169,8 @@ const CGFloat MGLSnapshotterMinimumPixelSize = 64; [infos growArrayByAddingAttributionInfosFromArray:tileSetInfos]; } + _attributionInfo = infos; + if (mbglError) { NSString *description = @(mbgl::util::toString(mbglError).c_str()); NSDictionary *userInfo = @{NSLocalizedDescriptionKey: description}; @@ -209,28 +193,38 @@ const CGFloat MGLSnapshotterMinimumPixelSize = 64; dispatch_queue_t workQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_async(workQueue, ^{ #if TARGET_OS_IPHONE - MGLSnapshotAttributionOptions *option = [self attributionOptionsForSize:mglImage.size attributionInfo:infos]; - UIImage *logoImage = option.logoImage; + MGLAttributionInfoStyle attributionInfoStyle = MGLAttributionInfoStyleLong; + for (NSUInteger styleValue = MGLAttributionInfoStyleLong; styleValue >= MGLAttributionInfoStyleShort; styleValue--) { + attributionInfoStyle = (MGLAttributionInfoStyle)styleValue; + CGSize attributionSize = [self attributionSizeWithLogoStyle:attributionInfoStyle sourceAttributionStyle:attributionInfoStyle]; + if (attributionSize.width <= mglImage.size.width) { + break; + } + } + + UIImage *logoImage = [self logoImageWithStyle:attributionInfoStyle]; + CGSize attributionBackgroundSize = [self attributionTextSizeWithStyle:attributionInfoStyle]; CGRect logoImageRect = CGRectMake(MGLLogoImagePosition.x, mglImage.size.height - (MGLLogoImagePosition.y + logoImage.size.height), logoImage.size.width, logoImage.size.height); - CGPoint attributionOrigin = CGPointMake(mglImage.size.width - 10 - option.attributionBackgroundSize.width, - logoImageRect.origin.y + (logoImageRect.size.height / 2) - (option.attributionBackgroundSize.height / 2) + 1); + CGPoint attributionOrigin = CGPointMake(mglImage.size.width - 10 - attributionBackgroundSize.width, + logoImageRect.origin.y + (logoImageRect.size.height / 2) - (attributionBackgroundSize.height / 2) + 1); if (!logoImage) { - logoImageRect = CGRectMake(0, mglImage.size.height - (MGLLogoImagePosition.y + _defaultLogoHeight), 0, _defaultLogoHeight); - attributionOrigin = CGPointMake(10, logoImageRect.origin.y + (logoImageRect.size.height / 2) - (option.attributionBackgroundSize.height / 2) + 1); + CGSize defaultLogoSize = [self mapboxLongStyleLogo].size; + logoImageRect = CGRectMake(0, mglImage.size.height - (MGLLogoImagePosition.y + defaultLogoSize.height), 0, defaultLogoSize.height); + attributionOrigin = CGPointMake(10, logoImageRect.origin.y + (logoImageRect.size.height / 2) - (attributionBackgroundSize.height / 2) + 1); } CGRect attributionBackgroundFrame = CGRectMake(attributionOrigin.x, attributionOrigin.y, - option.attributionBackgroundSize.width, - option.attributionBackgroundSize.height); + attributionBackgroundSize.width, + attributionBackgroundSize.height); CGPoint attributionTextPosition = CGPointMake(attributionBackgroundFrame.origin.x + 10, attributionBackgroundFrame.origin.y - 1); CGRect cropRect = CGRectMake(attributionBackgroundFrame.origin.x * mglImage.scale, attributionBackgroundFrame.origin.y * mglImage.scale, - option.attributionBackgroundSize.width * mglImage.scale, - option.attributionBackgroundSize.height * mglImage.scale); + attributionBackgroundSize.width * mglImage.scale, + attributionBackgroundSize.height * mglImage.scale); UIGraphicsBeginImageContextWithOptions(mglImage.size, NO, self.options.scale); @@ -250,7 +244,7 @@ const CGFloat MGLSnapshotterMinimumPixelSize = 64; [blurredAttributionBackground drawInRect:attributionBackgroundFrame]; - [self drawAttributionText:option.attributionInfo origin:attributionTextPosition]; + [self drawAttributionTextWithStyle:attributionInfoStyle origin:attributionTextPosition]; UIImage *compositedImage = UIGraphicsGetImageFromCurrentImageContext(); @@ -258,24 +252,35 @@ const CGFloat MGLSnapshotterMinimumPixelSize = 64; #else NSSize targetSize = NSMakeSize(self.options.size.width, self.options.size.height); NSRect targetFrame = NSMakeRect(0, 0, targetSize.width, targetSize.height); - MGLSnapshotAttributionOptions *option = [self attributionOptionsForSize:targetSize attributionInfo:infos]; - NSImage *logoImage = option.logoImage; + + MGLAttributionInfoStyle attributionInfoStyle = MGLAttributionInfoStyleLong; + for (NSUInteger styleValue = MGLAttributionInfoStyleLong; styleValue >= MGLAttributionInfoStyleShort; styleValue--) { + attributionInfoStyle = (MGLAttributionInfoStyle)styleValue; + CGSize attributionSize = [self attributionSizeWithLogoStyle:attributionInfoStyle sourceAttributionStyle:attributionInfoStyle]; + if (attributionSize.width <= mglImage.size.width) { + break; + } + } + + NSImage *logoImage = [self logoImageWithStyle:attributionInfoStyle]; + CGSize attributionBackgroundSize = [self attributionTextSizeWithStyle:attributionInfoStyle]; NSImage *sourceImage = mglImage; CGRect logoImageRect = CGRectMake(MGLLogoImagePosition.x, MGLLogoImagePosition.y, logoImage.size.width, logoImage.size.height); - CGPoint attributionOrigin = CGPointMake(targetFrame.size.width - 10 - option.attributionBackgroundSize.width, + CGPoint attributionOrigin = CGPointMake(targetFrame.size.width - 10 - attributionBackgroundSize.width, MGLLogoImagePosition.y + 1); if (!logoImage) { - logoImageRect = CGRectMake(0, MGLLogoImagePosition.y, 0, _defaultLogoHeight); + CGSize defaultLogoSize = [self mapboxLongStyleLogo].size; + logoImageRect = CGRectMake(0, MGLLogoImagePosition.y, 0, defaultLogoSize.height); attributionOrigin = CGPointMake(10, attributionOrigin.y); } CGRect attributionBackgroundFrame = CGRectMake(attributionOrigin.x, attributionOrigin.y, - option.attributionBackgroundSize.width, - option.attributionBackgroundSize.height); + attributionBackgroundSize.width, + attributionBackgroundSize.height); CGPoint attributionTextPosition = CGPointMake(attributionBackgroundFrame.origin.x + 10, - logoImageRect.origin.y + (logoImageRect.size.height / 2) - (option.attributionBackgroundSize.height / 2)); + logoImageRect.origin.y + (logoImageRect.size.height / 2) - (attributionBackgroundSize.height / 2)); NSImage *compositedImage = nil; @@ -300,7 +305,7 @@ const CGFloat MGLSnapshotterMinimumPixelSize = 64; [blurredAttributionBackground drawInRect:attributionBackgroundFrame]; - [self drawAttributionText:option.attributionInfo origin:attributionTextPosition]; + [self drawAttributionTextWithStyle:attributionInfoStyle origin:attributionTextPosition]; [compositedImage unlockFocus]; @@ -319,15 +324,16 @@ const CGFloat MGLSnapshotterMinimumPixelSize = 64; }); } -- (void)drawAttributionText:(NSArray *)attributionInfo origin:(CGPoint)origin +- (void)drawAttributionTextWithStyle:(MGLAttributionInfoStyle)attributionInfoStyle origin:(CGPoint)origin { - for (MGLAttributionInfo *info in attributionInfo) { + for (MGLAttributionInfo *info in _attributionInfo) { if (info.isFeedbackLink) { continue; } - [info.title drawAtPoint:origin]; + NSAttributedString *attribution = [info titleWithStyle:attributionInfoStyle]; + [attribution drawAtPoint:origin]; - origin.x += [info.title size].width + 10; + origin.x += [attribution size].width + 10; } } @@ -350,77 +356,79 @@ const CGFloat MGLSnapshotterMinimumPixelSize = 64; CIContext *ctx = [CIContext contextWithOptions:nil]; CGImageRef cgimg = [ctx createCGImage:blurredImage fromRect:[backgroundImage extent]]; + MGLImage *image; #if TARGET_OS_IPHONE - return [UIImage imageWithCGImage:cgimg]; + image = [UIImage imageWithCGImage:cgimg]; #else - return [[NSImage alloc] initWithCGImage:cgimg size:[backgroundImage extent].size]; + image = [[NSImage alloc] initWithCGImage:cgimg size:[backgroundImage extent].size]; #endif + CGImageRelease(cgimg); + return image; } -- (MGLSnapshotAttributionOptions *)attributionOptionsForSize:(CGSize)snapshotSize attributionInfo:(NSArray *)attributionInfo +- (MGLImage *)logoImageWithStyle:(MGLAttributionInfoStyle)style { - NSMutableArray *options = [NSMutableArray array]; - MGLSnapshotAttributionOptions *largeLogoAttribution = [self attributionOptionsForAttributionInfo:attributionInfo abbreviated:NO]; + MGLImage *logoImage; + switch (style) { + case MGLAttributionInfoStyleLong: + logoImage = [self mapboxLongStyleLogo]; + break; + case MGLAttributionInfoStyleMedium: #if TARGET_OS_IPHONE - largeLogoAttribution.logoImage = [UIImage imageNamed:@"mapbox" inBundle:[NSBundle mgl_frameworkBundle] compatibleWithTraitCollection:nil]; + logoImage = [UIImage imageNamed:@"mapbox_helmet" inBundle:[NSBundle mgl_frameworkBundle] compatibleWithTraitCollection:nil]; #else - largeLogoAttribution.logoImage = [[NSImage alloc] initWithContentsOfFile:[[NSBundle mgl_frameworkBundle] pathForResource:@"mapbox" ofType:@"pdf"]]; + logoImage = [[NSImage alloc] initWithContentsOfFile:[[NSBundle mgl_frameworkBundle] pathForResource:@"mapbox_helmet" ofType:@"pdf"]]; #endif - _defaultLogoHeight = largeLogoAttribution.logoImage.size.height; - - MGLSnapshotAttributionOptions *smallLogoAttribution = [self attributionOptionsForAttributionInfo:attributionInfo abbreviated:NO]; + break; + case MGLAttributionInfoStyleShort: + logoImage = nil; + break; + } + return logoImage; +} + +- (MGLImage *)mapboxLongStyleLogo +{ + MGLImage *logoImage; #if TARGET_OS_IPHONE - smallLogoAttribution.logoImage = [UIImage imageNamed:@"mapbox_helmet" inBundle:[NSBundle mgl_frameworkBundle] compatibleWithTraitCollection:nil]; + logoImage =[UIImage imageNamed:@"mapbox" inBundle:[NSBundle mgl_frameworkBundle] compatibleWithTraitCollection:nil]; #else - smallLogoAttribution.logoImage = [[NSImage alloc] initWithContentsOfFile:[[NSBundle mgl_frameworkBundle] pathForResource:@"mapbox_helmet" ofType:@"pdf"]]; + logoImage = [[NSImage alloc] initWithContentsOfFile:[[NSBundle mgl_frameworkBundle] pathForResource:@"mapbox" ofType:@"pdf"]]; #endif + return logoImage; +} + +- (CGSize)attributionSizeWithLogoStyle:(MGLAttributionInfoStyle)logoStyle sourceAttributionStyle:(MGLAttributionInfoStyle)attributionStyle +{ + MGLImage *logoImage = [self logoImageWithStyle:logoStyle]; - MGLSnapshotAttributionOptions *noLogoAttribution = [self attributionOptionsForAttributionInfo:attributionInfo abbreviated:YES]; + CGSize attributionBackgroundSize = [self attributionTextSizeWithStyle:attributionStyle]; - [options addObject:largeLogoAttribution]; - [options addObject:smallLogoAttribution]; - [options addObject:noLogoAttribution]; + CGSize attributionSize = CGSizeZero; - for (MGLSnapshotAttributionOptions *attributionOptions in options) { - // -[Mapbox Logo]-[Attribution Background]- - CGFloat origin = attributionOptions.logoImage ? MGLLogoImagePosition.x : 0; - CGFloat width = origin + attributionOptions.logoImage.size.width + 10 + attributionOptions.attributionBackgroundSize.width + 10; - if (width <= snapshotSize.width) { - return attributionOptions; - } + if (logoImage) { + attributionSize.width = MGLLogoImagePosition.x + logoImage.size.width + 10; } + attributionSize.width = attributionSize.width + 10 + attributionBackgroundSize.width + 10; + attributionSize.height = MAX(logoImage.size.height, attributionBackgroundSize.height); - return noLogoAttribution; + return attributionSize; } -- (MGLSnapshotAttributionOptions *)attributionOptionsForAttributionInfo:(NSArray *)attributionInfo abbreviated:(BOOL)isAbbreviated +- (CGSize)attributionTextSizeWithStyle:(MGLAttributionInfoStyle)attributionStyle { - NSString *openStreetMap = NSLocalizedStringWithDefaultValue(@"OSM_FULL_NAME", nil, nil, @"OpenStreetMap", @"OpenStreetMap full name attribution"); - NSString *OSM = NSLocalizedStringWithDefaultValue(@"OSM_SHORT_NAME", nil, nil, @"OSM", @"OpenStreetMap short name attribution"); - NSMutableArray *infos = [NSMutableArray array]; CGSize attributionBackgroundSize = CGSizeMake(10, 0); - for (MGLAttributionInfo *info in attributionInfo) { + for (MGLAttributionInfo *info in _attributionInfo) { if (info.isFeedbackLink) { continue; } - MGLAttributionInfo *attribution = [info copy]; - NSMutableAttributedString *title = [[NSMutableAttributedString alloc] initWithAttributedString:info.title]; - [title removeAttribute:NSUnderlineStyleAttributeName range:NSMakeRange(0, [title.string length])]; - if ([title.string rangeOfString:@"OpenStreetMap"].location != NSNotFound) { - [title.mutableString replaceOccurrencesOfString:@"OpenStreetMap" withString:isAbbreviated ? OSM : openStreetMap options:NSCaseInsensitiveSearch range:NSMakeRange(0, [title.mutableString length])]; - } - attribution.title = title; - attributionBackgroundSize.width += [attribution.title size].width + 10; - attributionBackgroundSize.height = MAX([attribution.title size].height, attributionBackgroundSize.height); - [infos addObject:attribution]; + CGSize attributionSize = [info titleWithStyle:attributionStyle].size; + attributionBackgroundSize.width += attributionSize.width + 10; + attributionBackgroundSize.height = MAX(attributionSize.height, attributionBackgroundSize.height); } - MGLSnapshotAttributionOptions *attributionOptions = [[MGLSnapshotAttributionOptions alloc] init]; - attributionOptions.attributionBackgroundSize = attributionBackgroundSize; - attributionOptions.attributionInfo = infos; - - return attributionOptions; + return attributionBackgroundSize; } - (void)cancel -- cgit v1.2.1 From 1ce3d2e5ef12c9e430ed37a5c98232781392755a Mon Sep 17 00:00:00 2001 From: Pablo Guardiola Date: Tue, 5 Dec 2017 10:12:16 +0100 Subject: [android] remove unnecessary jar generation from gradle-publish.gradle (#10625) --- Makefile | 7 +- .../MapboxGLAndroidSDK/gradle-publish.gradle | 74 +++++++++------------- .../java/com/mapbox/mapboxsdk/utils/Compare.java | 2 +- 3 files changed, 36 insertions(+), 47 deletions(-) diff --git a/Makefile b/Makefile index d54dcc4fd6..d6802cf962 100644 --- a/Makefile +++ b/Makefile @@ -613,7 +613,12 @@ apackage: platform/android/configuration.gradle # Uploads the compiled Android SDK to Maven .PHONY: run-android-upload-archives run-android-upload-archives: platform/android/configuration.gradle - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=all :MapboxGLAndroidSDK:uploadArchives + cd platform/android && export IS_LOCAL_DEVELOPMENT=false && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=all :MapboxGLAndroidSDK:uploadArchives + +# Uploads the compiled Android SDK to ~/.m2/repository/com/mapbox/mapboxsdk +.PHONY: run-android-upload-archives-local +run-android-upload-archives-local: platform/android/configuration.gradle + cd platform/android && export IS_LOCAL_DEVELOPMENT=true && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=all :MapboxGLAndroidSDK:uploadArchives # Dump system graphics information for the test app .PHONY: android-gfxinfo diff --git a/platform/android/MapboxGLAndroidSDK/gradle-publish.gradle b/platform/android/MapboxGLAndroidSDK/gradle-publish.gradle index c5037974c0..9805763a99 100644 --- a/platform/android/MapboxGLAndroidSDK/gradle-publish.gradle +++ b/platform/android/MapboxGLAndroidSDK/gradle-publish.gradle @@ -14,22 +14,17 @@ repositories { mavenCentral() } -// From https://raw.github.com/mcxiaoke/gradle-mvn-push/master/jar.gradle -android.libraryVariants.all { variant -> - def jarTask = project.tasks.create(name: "jar${variant.name.capitalize()}", type: Jar) { - from variant.javaCompile.destinationDir - exclude "**/R.class" - exclude "**/BuildConfig.class" - } - jarTask.dependsOn variant.javaCompile - artifacts.add('archives', jarTask); -} - -// From https://raw.github.com/mcxiaoke/gradle-mvn-push/master/gradle-mvn-push.gradle def isReleaseBuild() { return VERSION_NAME.contains("SNAPSHOT") == false } +def isLocalBuild() { + if (System.getenv('IS_LOCAL_DEVELOPMENT') != null) { + return System.getenv('IS_LOCAL_DEVELOPMENT').toBoolean() + } + return true +} + def getReleaseRepositoryUrl() { return hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL : "https://oss.sonatype.org/service/local/staging/deploy/maven2/" @@ -40,6 +35,10 @@ def getSnapshotRepositoryUrl() { "https://oss.sonatype.org/content/repositories/snapshots/" } +def obtainMavenLocalUrl() { + return getRepositories().mavenLocal().getUrl() +} + def getRepositoryUsername() { return hasProperty('USERNAME') ? USERNAME : (hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : "") @@ -50,22 +49,6 @@ def getRepositoryPassword() { (hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : "") } -task apklib(type: Zip) { - appendix = extension = 'apklib' - - from 'AndroidManifest.xml' - into('res') { - from 'res' - } - into('src') { - from 'src' - } -} - -artifacts { - archives apklib -} - afterEvaluate { project -> uploadArchives { repositories { @@ -76,24 +59,16 @@ afterEvaluate { project -> pom.artifactId = POM_ARTIFACT_ID pom.version = VERSION_NAME - repository(url: getReleaseRepositoryUrl()) { - authentication(userName: getRepositoryUsername(), - password: getRepositoryPassword()) - } - snapshotRepository(url: getSnapshotRepositoryUrl()) { - authentication(userName: getRepositoryUsername(), - password: getRepositoryPassword()) - } - -/* - // Leaving out as artifact was incorrectly named when found - addFilter('aar') { artifact, file -> - artifact.name == archivesBaseName - } - addFilter('apklib') { artifact, file -> - artifact.name == archivesBaseName + '-apklib' + if (isLocalBuild()) { + repository(url: obtainMavenLocalUrl()) + } else { + repository(url: getReleaseRepositoryUrl()) { + authentication(userName: getRepositoryUsername(), password: getRepositoryPassword()) + } + snapshotRepository(url: getSnapshotRepositoryUrl()) { + authentication(userName: getRepositoryUsername(), password: getRepositoryPassword()) + } } -*/ pom.project { name POM_NAME @@ -151,3 +126,12 @@ afterEvaluate { project -> archives androidJavadocsJar } } + +// See: https://github.com/chrisbanes/gradle-mvn-push/issues/43#issuecomment-84140513 +afterEvaluate { project -> + android.libraryVariants.all { variant -> + tasks.androidJavadocs.doFirst { + classpath += files(variant.javaCompile.classpath.files) + } + } +} diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/Compare.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/Compare.java index c7d7a13a3d..f17d4574d5 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/Compare.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/Compare.java @@ -1,7 +1,7 @@ package com.mapbox.mapboxsdk.utils; /** - * Comparisons from std sdk, which aren't available in API level <= 15 + * Comparisons from std sdk, which aren't available in API level 15 and below */ public class Compare { -- cgit v1.2.1 From 68938884357491e400ec258c04c2c582f84b93ec Mon Sep 17 00:00:00 2001 From: Julio Cesar Fausto Date: Tue, 17 Oct 2017 21:04:53 +0200 Subject: [ios, macos] Snapshot classes added to jazzy --- platform/ios/jazzy.yml | 3 +++ platform/macos/jazzy.yml | 3 +++ 2 files changed, 6 insertions(+) diff --git a/platform/ios/jazzy.yml b/platform/ios/jazzy.yml index ba56c312eb..2a7a2b667c 100644 --- a/platform/ios/jazzy.yml +++ b/platform/ios/jazzy.yml @@ -32,6 +32,9 @@ custom_categories: - MGLMapCamera - MGLMapView - MGLMapViewDelegate + - MGLMapSnapshot + - MGLMapSnapshotOptions + - MGLMapSnapshotter - MGLUserTrackingMode - name: Primitive Shapes children: diff --git a/platform/macos/jazzy.yml b/platform/macos/jazzy.yml index fcd4bfd301..ab4643fa65 100644 --- a/platform/macos/jazzy.yml +++ b/platform/macos/jazzy.yml @@ -28,6 +28,9 @@ custom_categories: - MGLMapCamera - MGLMapView - MGLMapViewDelegate + - MGLMapSnapshot + - MGLMapSnapshotOptions + - MGLMapSnapshotter - name: Shapes and Annotations children: - MGLAnnotation -- cgit v1.2.1 From 65d2e0b8f20aff34564b4c5cec968497c1740037 Mon Sep 17 00:00:00 2001 From: Ivo van Dongen Date: Mon, 20 Nov 2017 15:22:34 +0200 Subject: [android] Enable map rendering when app is paused --- .../src/main/java/com/mapbox/mapboxsdk/maps/MapView.java | 9 +++++++++ .../java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java | 8 ++++++++ .../maps/renderer/glsurfaceview/GLSurfaceViewMapRenderer.java | 4 ++-- .../maps/renderer/textureview/TextureViewMapRenderer.java | 4 ++-- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java index de917979ae..2d2dc03022 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java @@ -365,6 +365,10 @@ public class MapView extends FrameLayout { if (mapboxMap != null) { mapboxMap.onStart(); } + + if (mapRenderer != null) { + mapRenderer.onStart(); + } } /** @@ -396,6 +400,11 @@ public class MapView extends FrameLayout { // map was destroyed before it was started mapboxMap.onStop(); } + + if (mapRenderer != null) { + mapRenderer.onStop(); + } + ConnectivityReceiver.instance(getContext()).deactivate(); FileSource.getInstance(getContext()).deactivate(); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java index 961438ed14..2baff473e9 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java @@ -33,6 +33,10 @@ public abstract class MapRenderer implements MapRendererScheduler { nativeInitialize(this, fileSource, pixelRatio, programCacheDir); } + public void onStart() { + // Implement if needed + } + public void onPause() { // Implement if needed } @@ -41,6 +45,10 @@ public abstract class MapRenderer implements MapRendererScheduler { // Implement if needed } + public void onStop() { + // Implement if needed + } + public void onDestroy() { // Implement if needed } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/GLSurfaceViewMapRenderer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/GLSurfaceViewMapRenderer.java index ba2e118faa..d98e4d06a3 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/GLSurfaceViewMapRenderer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/GLSurfaceViewMapRenderer.java @@ -31,12 +31,12 @@ public class GLSurfaceViewMapRenderer extends MapRenderer implements GLSurfaceVi } @Override - public void onPause() { + public void onStop() { glSurfaceView.onPause(); } @Override - public void onResume() { + public void onStart() { glSurfaceView.onResume(); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/textureview/TextureViewMapRenderer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/textureview/TextureViewMapRenderer.java index 8cd724a828..397904b1f5 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/textureview/TextureViewMapRenderer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/textureview/TextureViewMapRenderer.java @@ -74,7 +74,7 @@ public class TextureViewMapRenderer extends MapRenderer { * {@inheritDoc} */ @Override - public void onPause() { + public void onStop() { renderThread.onPause(); } @@ -82,7 +82,7 @@ public class TextureViewMapRenderer extends MapRenderer { * {@inheritDoc} */ @Override - public void onResume() { + public void onStart() { renderThread.onResume(); } -- cgit v1.2.1 From 7b7b2c53fb1501becefa7da5afdb810f531db2d1 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Wed, 22 Nov 2017 17:08:23 +0100 Subject: [android] - activate filesource to list offline regions (#10531) --- .../src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java index 130284e88d..6a2bf6b07b 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java @@ -149,8 +149,8 @@ public class OfflineManager { * * @param callback the callback to be invoked */ - public void listOfflineRegions(@NonNull - final ListOfflineRegionsCallback callback) { + public void listOfflineRegions(@NonNull final ListOfflineRegionsCallback callback) { + fileSource.activate(); listOfflineRegions(fileSource, new ListOfflineRegionsCallback() { @Override @@ -158,6 +158,7 @@ public class OfflineManager { getHandler().post(new Runnable() { @Override public void run() { + fileSource.deactivate(); callback.onList(offlineRegions); } }); @@ -168,6 +169,7 @@ public class OfflineManager { getHandler().post(new Runnable() { @Override public void run() { + fileSource.deactivate(); callback.onError(error); } }); @@ -241,6 +243,7 @@ public class OfflineManager { /** * Changing or bypassing this limit without permission from Mapbox is prohibited * by the Mapbox Terms of Service. + * * @param limit the new tile count limit. */ public native void setOfflineMapboxTileCountLimit(long limit); -- cgit v1.2.1 From f64475f76c9809385a480d646b2212757889125f Mon Sep 17 00:00:00 2001 From: Tobrun Date: Wed, 22 Nov 2017 18:46:31 +0100 Subject: [android] - harden MarkerView integration by checking for null bitmap (#10532) --- .../src/main/java/com/mapbox/mapboxsdk/annotations/Icon.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Icon.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Icon.java index 2ee17c227d..8749656e35 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Icon.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/Icon.java @@ -36,7 +36,7 @@ public class Icon { * @return The bitmap being used for the icon. */ public Bitmap getBitmap() { - if (mBitmap.getConfig() != Bitmap.Config.ARGB_8888) { + if (mBitmap != null && mBitmap.getConfig() != Bitmap.Config.ARGB_8888) { mBitmap = mBitmap.copy(Bitmap.Config.ARGB_8888, false); } return mBitmap; -- cgit v1.2.1 From 8ad3759b9c4b6767202d959a5b75732cc740763d Mon Sep 17 00:00:00 2001 From: Tobrun Date: Wed, 29 Nov 2017 12:26:52 +0100 Subject: [android] - use concurrent lists for camera change listeners (#10542) --- .../mapboxsdk/maps/CameraChangeDispatcher.java | 51 +++++++++++----------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcher.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcher.java index cf780dcc3f..f046744c31 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcher.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcher.java @@ -2,8 +2,7 @@ package com.mapbox.mapboxsdk.maps; import android.support.annotation.NonNull; -import java.util.ArrayList; -import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; import static com.mapbox.mapboxsdk.maps.MapboxMap.OnCameraIdleListener; import static com.mapbox.mapboxsdk.maps.MapboxMap.OnCameraMoveCanceledListener; @@ -15,10 +14,10 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M private boolean idle = true; - private final List onCameraMoveStartedListenerList = new ArrayList<>(); - private final List onCameraMoveCanceledListenerList = new ArrayList<>(); - private final List onCameraMoveListenerList = new ArrayList<>(); - private final List onCameraIdleListenerList = new ArrayList<>(); + private final CopyOnWriteArrayList onCameraMoveStarted = new CopyOnWriteArrayList<>(); + private final CopyOnWriteArrayList onCameraMoveCanceled = new CopyOnWriteArrayList<>(); + private final CopyOnWriteArrayList onCameraMove = new CopyOnWriteArrayList<>(); + private final CopyOnWriteArrayList onCameraIdle = new CopyOnWriteArrayList<>(); private OnCameraMoveStartedListener onCameraMoveStartedListener; private OnCameraMoveCanceledListener onCameraMoveCanceledListener; @@ -58,8 +57,8 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M } // new API - if (!onCameraMoveStartedListenerList.isEmpty()) { - for (OnCameraMoveStartedListener cameraMoveStartedListener : onCameraMoveStartedListenerList) { + if (!onCameraMoveStarted.isEmpty()) { + for (OnCameraMoveStartedListener cameraMoveStartedListener : onCameraMoveStarted) { cameraMoveStartedListener.onCameraMoveStarted(reason); } } @@ -73,8 +72,8 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M } // new API - if (!onCameraMoveListenerList.isEmpty() && !idle) { - for (OnCameraMoveListener cameraMoveListener : onCameraMoveListenerList) { + if (!onCameraMove.isEmpty() && !idle) { + for (OnCameraMoveListener cameraMoveListener : onCameraMove) { cameraMoveListener.onCameraMove(); } } @@ -88,8 +87,8 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M } // new API - if (!onCameraMoveCanceledListenerList.isEmpty() && !idle) { - for (OnCameraMoveCanceledListener cameraMoveCanceledListener : onCameraMoveCanceledListenerList) { + if (!onCameraMoveCanceled.isEmpty() && !idle) { + for (OnCameraMoveCanceledListener cameraMoveCanceledListener : onCameraMoveCanceled) { cameraMoveCanceledListener.onCameraMoveCanceled(); } } @@ -105,8 +104,8 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M } // new API - if (!onCameraIdleListenerList.isEmpty()) { - for (OnCameraIdleListener cameraIdleListener : onCameraIdleListenerList) { + if (!onCameraIdle.isEmpty()) { + for (OnCameraIdleListener cameraIdleListener : onCameraIdle) { cameraIdleListener.onCameraIdle(); } } @@ -114,42 +113,42 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M } void addOnCameraIdleListener(@NonNull OnCameraIdleListener listener) { - onCameraIdleListenerList.add(listener); + onCameraIdle.add(listener); } void removeOnCameraIdleListener(@NonNull OnCameraIdleListener listener) { - if (onCameraIdleListenerList.contains(listener)) { - onCameraIdleListenerList.remove(listener); + if (onCameraIdle.contains(listener)) { + onCameraIdle.remove(listener); } } void addOnCameraMoveCancelListener(OnCameraMoveCanceledListener listener) { - onCameraMoveCanceledListenerList.add(listener); + onCameraMoveCanceled.add(listener); } void removeOnCameraMoveCancelListener(OnCameraMoveCanceledListener listener) { - if (onCameraMoveCanceledListenerList.contains(listener)) { - onCameraMoveCanceledListenerList.remove(listener); + if (onCameraMoveCanceled.contains(listener)) { + onCameraMoveCanceled.remove(listener); } } void addOnCameraMoveStartedListener(OnCameraMoveStartedListener listener) { - onCameraMoveStartedListenerList.add(listener); + onCameraMoveStarted.add(listener); } void removeOnCameraMoveStartedListener(OnCameraMoveStartedListener listener) { - if (onCameraMoveStartedListenerList.contains(listener)) { - onCameraMoveStartedListenerList.remove(listener); + if (onCameraMoveStarted.contains(listener)) { + onCameraMoveStarted.remove(listener); } } void addOnCameraMoveListener(OnCameraMoveListener listener) { - onCameraMoveListenerList.add(listener); + onCameraMove.add(listener); } void removeOnCameraMoveListener(OnCameraMoveListener listener) { - if (onCameraMoveListenerList.contains(listener)) { - onCameraMoveListenerList.remove(listener); + if (onCameraMove.contains(listener)) { + onCameraMove.remove(listener); } } } -- cgit v1.2.1 From bc27322853f5d35d546bc704599298fa3efe77cc Mon Sep 17 00:00:00 2001 From: Tobrun Date: Thu, 30 Nov 2017 11:45:40 +0100 Subject: [android] - handle destroying activity programmatically as part of theme switching (#10589) --- .../src/main/java/com/mapbox/mapboxsdk/maps/MapView.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java index 2d2dc03022..1f8faf0231 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java @@ -416,8 +416,12 @@ public class MapView extends FrameLayout { public void onDestroy() { destroyed = true; mapCallback.clearOnMapReadyCallbacks(); - nativeMapView.destroy(); - nativeMapView = null; + + if (nativeMapView != null) { + // null when destroying an activity programmatically mapbox-navigation-android/issues/503 + nativeMapView.destroy(); + nativeMapView = null; + } if (mapRenderer != null) { mapRenderer.onDestroy(); -- cgit v1.2.1 From 2a13bfd2c4c8d1575606d67321fb2354c754fa14 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Wed, 6 Dec 2017 11:51:33 +0100 Subject: [android] - add FileSource activation/deactivation to MapSnapshotter, handle multiple deactivate scenario in FileSource (#10556) --- .../com/mapbox/mapboxsdk/storage/FileSource.java | 24 ++-------------- platform/android/src/file_source.cpp | 19 ++++++++++--- platform/android/src/file_source.hpp | 1 + .../android/src/snapshotter/map_snapshotter.cpp | 33 +++++++++++++++++----- .../android/src/snapshotter/map_snapshotter.hpp | 5 ++++ 5 files changed, 49 insertions(+), 33 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/storage/FileSource.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/storage/FileSource.java index 41dc449b50..f0cb8d973a 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/storage/FileSource.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/storage/FileSource.java @@ -6,10 +6,8 @@ import android.content.pm.PackageManager; import android.content.res.AssetManager; import android.os.Environment; import android.support.annotation.NonNull; - import com.mapbox.mapboxsdk.Mapbox; import com.mapbox.mapboxsdk.constants.MapboxConstants; - import timber.log.Timber; /** @@ -119,28 +117,14 @@ public class FileSource { } private long nativePtr; - private long activeCounter; - private boolean wasPaused; private FileSource(String cachePath, AssetManager assetManager) { initialize(Mapbox.getAccessToken(), cachePath, assetManager); } - public void activate() { - activeCounter++; - if (activeCounter == 1 && wasPaused) { - wasPaused = false; - resume(); - } - } + public native void activate(); - public void deactivate() { - activeCounter--; - if (activeCounter == 0) { - wasPaused = true; - pause(); - } - } + public native void deactivate(); public native void setAccessToken(@NonNull String accessToken); @@ -148,10 +132,6 @@ public class FileSource { public native void setApiBaseUrl(String baseUrl); - private native void resume(); - - private native void pause(); - /** * Sets a callback for transforming URLs requested from the internet *

diff --git a/platform/android/src/file_source.cpp b/platform/android/src/file_source.cpp index a576661a4f..6a9d7badb0 100644 --- a/platform/android/src/file_source.cpp +++ b/platform/android/src/file_source.cpp @@ -63,11 +63,22 @@ void FileSource::setResourceTransform(jni::JNIEnv& env, jni::Objectresume(); + if (!activationCounter) { + activationCounter = optional(1) ; + return; + } + + activationCounter.value()++; + if (activationCounter == 1) { + fileSource->resume(); + } } void FileSource::pause(jni::JNIEnv&) { - fileSource->pause(); + activationCounter.value()--; + if (activationCounter == 0) { + fileSource->pause(); + } } jni::Class FileSource::javaClass; @@ -100,8 +111,8 @@ void FileSource::registerNative(jni::JNIEnv& env) { METHOD(&FileSource::setAccessToken, "setAccessToken"), METHOD(&FileSource::setAPIBaseUrl, "setApiBaseUrl"), METHOD(&FileSource::setResourceTransform, "setResourceTransform"), - METHOD(&FileSource::resume, "resume"), - METHOD(&FileSource::pause, "pause") + METHOD(&FileSource::resume, "activate"), + METHOD(&FileSource::pause, "deactivate") ); } diff --git a/platform/android/src/file_source.hpp b/platform/android/src/file_source.hpp index 2933aedf86..194f784622 100644 --- a/platform/android/src/file_source.hpp +++ b/platform/android/src/file_source.hpp @@ -54,6 +54,7 @@ public: static void registerNative(jni::JNIEnv&); private: + optional activationCounter; std::unique_ptr> resourceTransform; std::unique_ptr fileSource; }; diff --git a/platform/android/src/snapshotter/map_snapshotter.cpp b/platform/android/src/snapshotter/map_snapshotter.cpp index 637eb5c1fd..71f8b4f4c0 100644 --- a/platform/android/src/snapshotter/map_snapshotter.cpp +++ b/platform/android/src/snapshotter/map_snapshotter.cpp @@ -15,7 +15,7 @@ namespace android { MapSnapshotter::MapSnapshotter(jni::JNIEnv& _env, jni::Object _obj, - jni::Object jFileSource, + jni::Object _jFileSource, jni::jfloat _pixelRatio, jni::jint width, jni::jint height, @@ -34,16 +34,16 @@ MapSnapshotter::MapSnapshotter(jni::JNIEnv& _env, return; } - auto& fileSource = mbgl::android::FileSource::getDefaultFileSource(_env, jFileSource); + jFileSource = FileSource::getNativePeer(_env, _jFileSource); + auto& fileSource = mbgl::android::FileSource::getDefaultFileSource(_env, _jFileSource); auto size = mbgl::Size { static_cast(width), static_cast(height) }; auto cameraOptions = position ? CameraPosition::getCameraOptions(_env, position) : CameraOptions(); optional bounds; if (region) { bounds = LatLngBounds::getLatLngBounds(_env, region); } - + showLogo = _showLogo; - // Create the core snapshotter snapshotter = std::make_unique(fileSource, *threadPool, @@ -58,8 +58,9 @@ MapSnapshotter::MapSnapshotter(jni::JNIEnv& _env, MapSnapshotter::~MapSnapshotter() = default; -void MapSnapshotter::start(JNIEnv&) { +void MapSnapshotter::start(JNIEnv& env) { MBGL_VERIFY_THREAD(tid); + activateFilesource(env); snapshotCallback = std::make_unique>( *Scheduler::GetCurrent(), @@ -79,17 +80,19 @@ void MapSnapshotter::start(JNIEnv&) { static auto onSnapshotReady = javaClass.GetMethod)>(*_env, "onSnapshotReady"); javaPeer->Call(*_env, onSnapshotReady, mapSnapshot); } + + deactivateFilesource(*_env); }); snapshotter->snapshot(snapshotCallback->self()); } -void MapSnapshotter::cancel(JNIEnv&) { +void MapSnapshotter::cancel(JNIEnv& env) { MBGL_VERIFY_THREAD(tid); snapshotCallback.reset(); + deactivateFilesource(env); } - void MapSnapshotter::setStyleUrl(JNIEnv& env, jni::String styleURL) { snapshotter->setStyleURL(jni::Make(env, styleURL)); } @@ -108,6 +111,22 @@ void MapSnapshotter::setRegion(JNIEnv& env, jni::Object region) { snapshotter->setRegion(LatLngBounds::getLatLngBounds(env, region)); } +// Private methods // + +void MapSnapshotter::activateFilesource(JNIEnv& env) { + if (!activatedFilesource) { + activatedFilesource = true; + jFileSource->resume(env); + } +} + +void MapSnapshotter::deactivateFilesource(JNIEnv& env) { + if (activatedFilesource) { + activatedFilesource = false; + jFileSource->pause(env); + } +} + // Static methods // jni::Class MapSnapshotter::javaClass; diff --git a/platform/android/src/snapshotter/map_snapshotter.hpp b/platform/android/src/snapshotter/map_snapshotter.hpp index 8cd85060bf..4cdf4bcf2b 100644 --- a/platform/android/src/snapshotter/map_snapshotter.hpp +++ b/platform/android/src/snapshotter/map_snapshotter.hpp @@ -65,6 +65,11 @@ private: std::shared_ptr threadPool; std::unique_ptr> snapshotCallback; std::unique_ptr snapshotter; + + FileSource *jFileSource; + void activateFilesource(JNIEnv&); + void deactivateFilesource(JNIEnv&); + bool activatedFilesource = false; }; } // namespace android -- cgit v1.2.1 From 966b6a53cec1796e675e776fd421b6f1bdcf0acd Mon Sep 17 00:00:00 2001 From: Chris Loer Date: Wed, 22 Nov 2017 13:18:22 -0800 Subject: [core, ios, qt, android] Close race condition in RunLoop (issue #9620) Because a message we queue from the foreground may cause the background to complete, exit, and tear down the AsyncTask, we have to block queue processing until we've finished our call to AsyncTask::send(). Broadening the scope of a mutex is scary, but I audited the code of our four implementations of AsyncTask and I don't see any way this could cause a deadlock. --- platform/android/src/run_loop.cpp | 6 ++++-- platform/darwin/src/run_loop.cpp | 6 ++++-- platform/default/run_loop.cpp | 6 ++++-- platform/qt/src/run_loop.cpp | 6 ++++-- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/platform/android/src/run_loop.cpp b/platform/android/src/run_loop.cpp index dff7d1d984..1d284a9e72 100644 --- a/platform/android/src/run_loop.cpp +++ b/platform/android/src/run_loop.cpp @@ -217,8 +217,10 @@ LOOP_HANDLE RunLoop::getLoopHandle() { } void RunLoop::push(std::shared_ptr task) { - withMutex([&] { queue.push(std::move(task)); }); - impl->wake(); + withMutex([&] { + queue.push(std::move(task)); + impl->wake(); + }); } void RunLoop::run() { diff --git a/platform/darwin/src/run_loop.cpp b/platform/darwin/src/run_loop.cpp index 2ba8f8415b..d60a88cf52 100644 --- a/platform/darwin/src/run_loop.cpp +++ b/platform/darwin/src/run_loop.cpp @@ -30,8 +30,10 @@ RunLoop::~RunLoop() { } void RunLoop::push(std::shared_ptr task) { - withMutex([&] { queue.push(std::move(task)); }); - impl->async->send(); + withMutex([&] { + queue.push(std::move(task)); + impl->async->send(); + }); } void RunLoop::run() { diff --git a/platform/default/run_loop.cpp b/platform/default/run_loop.cpp index 6375dba78e..5bccd21d56 100644 --- a/platform/default/run_loop.cpp +++ b/platform/default/run_loop.cpp @@ -130,8 +130,10 @@ LOOP_HANDLE RunLoop::getLoopHandle() { } void RunLoop::push(std::shared_ptr task) { - withMutex([&] { queue.push(std::move(task)); }); - impl->async->send(); + withMutex([&] { + queue.push(std::move(task)); + impl->async->send(); + }); } void RunLoop::run() { diff --git a/platform/qt/src/run_loop.cpp b/platform/qt/src/run_loop.cpp index 71ea19032a..af0c50ebb9 100644 --- a/platform/qt/src/run_loop.cpp +++ b/platform/qt/src/run_loop.cpp @@ -53,8 +53,10 @@ LOOP_HANDLE RunLoop::getLoopHandle() { } void RunLoop::push(std::shared_ptr task) { - withMutex([&] { queue.push(task); }); - impl->async->send(); + withMutex([&] { + queue.push(std::move(task)); + impl->async->send(); + }); } void RunLoop::run() { -- cgit v1.2.1 From f89afa0b277beb733d330f2d40a0b9ca84dfba40 Mon Sep 17 00:00:00 2001 From: Jordan Kiley Date: Mon, 4 Dec 2017 16:40:14 -0800 Subject: [ios, macos] Rename the iOS and macOS SDKs (#10610) --- CHANGELOG.md | 4 +-- CONTRIBUTING.md | 4 +-- INSTALL.md | 6 ++-- README.md | 6 ++-- platform/darwin/src/MGLAccountManager.m | 2 +- platform/darwin/src/NSBundle+MGLAdditions.m | 2 +- platform/ios/CHANGELOG.md | 6 +++- platform/ios/DEVELOPING.md | 28 +++++++++--------- platform/ios/INSTALL.md | 12 ++++---- platform/ios/README.md | 6 ++-- platform/ios/docs/doc-README.md | 8 +++--- platform/ios/docs/guides/Gesture Recognizers.md | 2 +- platform/ios/docs/guides/Info.plist Keys.md | 2 +- platform/ios/docs/pod-README.md | 12 ++++---- .../ios/resources/Base.lproj/Localizable.strings | Bin 298 -> 7378 bytes .../ios/resources/bg.lproj/Localizable.strings | 6 ++-- .../ios/resources/ca.lproj/Localizable.strings | 6 ++-- .../ios/resources/de.lproj/Localizable.strings | 6 ++-- .../ios/resources/es.lproj/Localizable.strings | 4 +-- .../ios/resources/fr.lproj/Localizable.strings | 4 +-- .../ios/resources/hu.lproj/Localizable.strings | 6 ++-- .../ios/resources/ja.lproj/Localizable.strings | 6 ++-- .../ios/resources/lt.lproj/Localizable.strings | 6 ++-- .../ios/resources/pt-BR.lproj/Localizable.strings | 4 +-- .../ios/resources/ru.lproj/Localizable.strings | 6 ++-- .../ios/resources/sv.lproj/Localizable.strings | 6 ++-- .../ios/resources/uk.lproj/Localizable.strings | 6 ++-- .../ios/resources/vi.lproj/Localizable.strings | 4 +-- .../resources/zh-Hans.lproj/Localizable.strings | 6 ++-- .../resources/zh-Hant.lproj/Localizable.strings | 6 ++-- platform/ios/src/MGLMapView.mm | 2 +- platform/ios/src/MGLSDKUpdateChecker.mm | 2 +- platform/macos/CHANGELOG.md | 3 ++ platform/macos/DEVELOPING.md | 32 ++++++++++----------- platform/macos/INSTALL.md | 8 +++--- platform/macos/docs/guides/Info.plist Keys.md | 2 +- 36 files changed, 119 insertions(+), 112 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5034146cae..4ce6fe25be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,6 @@ Each Mapbox GL Native SDK has a separate changelog that highlights changes relevant to their respective platforms: * [Mapbox Android SDK](platform/android/CHANGELOG.md) -* [Mapbox iOS SDK](platform/ios/CHANGELOG.md) -* [Mapbox macOS SDK](platform/macos/CHANGELOG.md) +* [Mapbox Maps SDK for iOS](platform/ios/CHANGELOG.md) +* [Mapbox Maps SDK for macOS](platform/macos/CHANGELOG.md) * [node-mapbox-gl-native](platform/node/CHANGELOG.md) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 964ac01a88..f996a17730 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,8 +10,8 @@ If you want to contribute code: 1. Pull requests are gladly accepted. If there are any changes that developers using one of the GL SDKs should be aware of, please update the **master** section of the relevant changelog(s): * [Mapbox Android SDK](platform/android/CHANGELOG.md) - * [Mapbox iOS SDK](platform/ios/CHANGELOG.md) - * [Mapbox macOS SDK](platform/macos/CHANGELOG.md) + * [Mapbox Maps SDK for iOS](platform/ios/CHANGELOG.md) + * [Mapbox Maps SDK for macOS](platform/macos/CHANGELOG.md) * [node-mapbox-gl-native](platform/node/CHANGELOG.md) 1. Prefix your commit messages with the platform(s) your changes affect: `[core]`, `[android]`, `[ios]`, `[macos]`, `[node]`, or `[qt]`. diff --git a/INSTALL.md b/INSTALL.md index 61d2271de5..78c5a06933 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -56,9 +56,9 @@ dependencies: See the relevant SDK documentation for next steps: -* [Mapbox Android SDK](platform/android/) -* [Mapbox iOS SDK](platform/ios/) -* [Mapbox macOS SDK](platform/macos/) +* [Maps SDK for Android](platform/android/) +* [Maps SDK for iOS](platform/ios/) +* [Maps SDK for iOS](platform/macos/) * [Mapbox Qt SDK](platform/qt/) * [Mapbox GL Native on Linux](platform/linux/) * [node-mapbox-gl-native](platform/node/) diff --git a/README.md b/README.md index 8f6ea99704..c66d2216a4 100644 --- a/README.md +++ b/README.md @@ -9,9 +9,9 @@ This repository hosts the cross-platform Mapbox GL Native library, plus convenie | SDK | Languages | Build status | | --------------------------------------- | ---------------------------------- | ---------------------------------------- | | [Mapbox GL Native](INSTALL.md) | C++14 | [![Circle CI build status](https://circleci.com/gh/mapbox/mapbox-gl-native.svg?style=shield)](https://circleci.com/gh/mapbox/workflows/mapbox-gl-native/tree/master) [![Coverage Status](https://coveralls.io/repos/github/mapbox/mapbox-gl-native/badge.svg?branch=master)](https://coveralls.io/github/mapbox/mapbox-gl-native?branch=master) | -| [Mapbox Android SDK](platform/android/) | Java | [![Circle CI build status](https://circleci.com/gh/mapbox/mapbox-gl-native.svg?style=shield)](https://circleci.com/gh/mapbox/workflows/mapbox-gl-native/tree/master) | -| [Mapbox iOS SDK](platform/ios/) | Objective-C or Swift | [![Bitrise](https://www.bitrise.io/app/7514e4cf3da2cc57.svg?token=OwqZE5rSBR9MVWNr_lf4sA&branch=master)](https://www.bitrise.io/app/7514e4cf3da2cc57) | -| [Mapbox macOS SDK](platform/macos/) | Objective-C, Swift, or AppleScript | [![Bitrise](https://www.bitrise.io/app/155ef7da24b38dcd.svg?token=4KSOw_gd6WxTnvGE2rMttg&branch=master)](https://www.bitrise.io/app/155ef7da24b38dcd) | +| [Mapbox Maps SDK for Android](platform/android/) | Java | [![Circle CI build status](https://circleci.com/gh/mapbox/mapbox-gl-native.svg?style=shield)](https://circleci.com/gh/mapbox/workflows/mapbox-gl-native/tree/master) | +| [Mapbox Maps SDK for iOS](platform/ios/) | Objective-C or Swift | [![Bitrise](https://www.bitrise.io/app/7514e4cf3da2cc57.svg?token=OwqZE5rSBR9MVWNr_lf4sA&branch=master)](https://www.bitrise.io/app/7514e4cf3da2cc57) | +| [Mapbox Maps SDK for macOS](platform/macos/) | Objective-C, Swift, or AppleScript | [![Bitrise](https://www.bitrise.io/app/155ef7da24b38dcd.svg?token=4KSOw_gd6WxTnvGE2rMttg&branch=master)](https://www.bitrise.io/app/155ef7da24b38dcd) | | [node-mapbox-gl-native](platform/node/) | Node.js | [![Circle CI build status](https://circleci.com/gh/mapbox/mapbox-gl-native.svg?style=shield)](https://circleci.com/gh/mapbox/workflows/mapbox-gl-native/tree/master) | | [Mapbox Qt SDK](platform/qt) | C++03 | [![Circle CI build status](https://circleci.com/gh/mapbox/mapbox-gl-native.svg?style=shield)](https://circleci.com/gh/mapbox/workflows/mapbox-gl-native/tree/master) | diff --git a/platform/darwin/src/MGLAccountManager.m b/platform/darwin/src/MGLAccountManager.m index 0f5d033031..7e55779d04 100644 --- a/platform/darwin/src/MGLAccountManager.m +++ b/platform/darwin/src/MGLAccountManager.m @@ -55,7 +55,7 @@ } + (BOOL)mapboxMetricsEnabledSettingShownInApp { - NSLog(@"mapboxMetricsEnabledSettingShownInApp is no longer necessary; the Mapbox iOS SDK has changed to always provide a telemetry setting in-app."); + NSLog(@"mapboxMetricsEnabledSettingShownInApp is no longer necessary; the Mapbox Maps SDK for iOS has changed to always provide a telemetry setting in-app."); return YES; } diff --git a/platform/darwin/src/NSBundle+MGLAdditions.m b/platform/darwin/src/NSBundle+MGLAdditions.m index f383a50300..f55059324e 100644 --- a/platform/darwin/src/NSBundle+MGLAdditions.m +++ b/platform/darwin/src/NSBundle+MGLAdditions.m @@ -15,7 +15,7 @@ bundle = [self bundleWithPath:bundlePath]; } else { [NSException raise:@"MGLBundleNotFoundException" format: - @"The Mapbox framework bundle could not be found. If using the Mapbox iOS SDK as a static framework, make sure that Mapbox.bundle is copied into the root of the app bundle."]; + @"The Mapbox framework bundle could not be found. If using the Mapbox Maps SDK for iOS as a static framework, make sure that Mapbox.bundle is copied into the root of the app bundle."]; } } diff --git a/platform/ios/CHANGELOG.md b/platform/ios/CHANGELOG.md index 347329506e..5a556ec9a5 100644 --- a/platform/ios/CHANGELOG.md +++ b/platform/ios/CHANGELOG.md @@ -1,4 +1,4 @@ -# Changelog for Mapbox iOS SDK +# Changelog for Mapbox Maps SDK for iOS Mapbox welcomes participation and contributions from everyone. Please read [CONTRIBUTING.md](../../CONTRIBUTING.md) to get started. @@ -7,6 +7,10 @@ Mapbox welcomes participation and contributions from everyone. Please read [CONT ### Annotations * Fixed an issue that could cause triggering `-[MGLMapViewDelegate mapView:didSelectAnnotation:]` when taping next to a `MGLAnnotationImage` annotation. ([#10538](https://github.com/mapbox/mapbox-gl-native/pull/10538)) +### Packaging + +* Renamed this SDK from Mapbox iOS SDK to Mapbox Maps SDK for iOS. ([#10610](https://github.com/mapbox/mapbox-gl-native/pull/10610)) + ## 3.7.0 - Novemeber 13, 2017 ### Networking and storage diff --git a/platform/ios/DEVELOPING.md b/platform/ios/DEVELOPING.md index 43d7ef3c75..40d45e2e56 100644 --- a/platform/ios/DEVELOPING.md +++ b/platform/ios/DEVELOPING.md @@ -1,12 +1,12 @@ -# Contributing to the Mapbox iOS SDK +# Contributing to the Mapbox Maps SDK for iOS -This document explains how to build the Mapbox iOS SDK from source. It is intended for advanced developers who wish to contribute to Mapbox GL and the Mapbox iOS SDK. +This document explains how to build the Mapbox Maps SDK for iOS from source. It is intended for advanced developers who wish to contribute to Mapbox GL and the Mapbox Maps SDK for iOS. ## Requirements -The Mapbox iOS SDK and iosapp demo application require iOS 8.0 or above. +The Mapbox Maps SDK for iOS and iosapp demo application require iOS 8.0 or above. -The Mapbox iOS SDK requires Xcode 8.0 or above. +The Mapbox Maps SDK for iOS requires Xcode 8.0 or above. ## Building the SDK @@ -70,44 +70,44 @@ To add any Objective-C type, constant, or member to the iOS SDK’s public inter 1. Ensure that the symbol is pure Objective-C and does not rely on any language features specific to Objective-C++ or the C11 dialect of C – so no namespaced types or classes named with emoji! 🙃 Most projects that depend on this SDK are either written in pure Objective-C (GNU99 dialect) or Swift, which cannot yet bridge C++ types. 1. Name the symbol according to [Cocoa naming conventions](https://developer.apple.com/library/prerelease/content/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html#//apple_ref/doc/uid/10000146i). Use the `MGL` class prefix to avoid conflicts with client code. If the symbol has an analogue in MapKit, name the symbol according to MapKit. -1. Provide full documentation comments. We use [jazzy](https://github.com/realm/jazzy/) to produce the documentation found in the SDK distribution and [on the Mapbox iOS SDK website](https://www.mapbox.com/ios-sdk/api/). We also recognize that many developers rely on Xcode’s Quick Help feature. jazzy supports Markdown formatting; however, Quick Help supports only [HeaderDoc](https://developer.apple.com/legacy/library/documentation/DeveloperTools/Conceptual/HeaderDoc/intro/intro.html) syntax and a subset of Doxygen syntax. For hyperlinks, use HTML syntax, which is recognized by both tools. +1. Provide full documentation comments. We use [jazzy](https://github.com/realm/jazzy/) to produce the documentation found in the SDK distribution and [on the website for this SDK](https://www.mapbox.com/ios-sdk/api/). We also recognize that many developers rely on Xcode’s Quick Help feature. jazzy supports Markdown formatting; however, Quick Help supports only [HeaderDoc](https://developer.apple.com/legacy/library/documentation/DeveloperTools/Conceptual/HeaderDoc/intro/intro.html) syntax and a subset of Doxygen syntax. For hyperlinks, use HTML syntax, which is recognized by both tools. ### Making a type or constant public -To add an Objective-C class, protocol, category, typedef, enumeration, or global constant to the iOS SDK’s public interface: +To add an Objective-C class, protocol, category, typedef, enumeration, or global constant to the iOS maps SDK’s public interface: 1. _(Optional.)_ Add the macro `MGL_EXPORT` prior to the declaration for classes and global constants when adding them in shared headers located in `platform/darwin`. To use this macro, include `MGLFoundation.h`. You can check whether all public symbols are exported correctly by running `make check-public-symbols`. 1. _(Optional.)_ Add the type or constant’s name to the relevant category in the `custom_categories` section of [the jazzy configuration file](./jazzy.yml). This is required for classes and protocols and also recommended for any other type that is strongly associated with a particular class or protocol. If you leave out this step, the symbol will appear in an “Other” section in the generated HTML documentation’s table of contents. -1. _(Optional.)_ If the symbol would also be publicly exposed in the macOS SDK, consult [the companion macOS document](../macos/DEVELOPING.md#making-a-type-or-constant-public) for further instructions. +1. _(Optional.)_ If the symbol would also be publicly exposed in the macOS maps SDK, consult [the companion macOS document](../macos/DEVELOPING.md#making-a-type-or-constant-public) for further instructions. ### Adding a source code file -To add an Objective-C header or implementation file to the iOS SDK: +To add an Objective-C header or implementation file to the iOS maps SDK: 1. Add the file to the Headers or Compile Sources build phase, as appropriate, of both the “dynamic” and “static” targets. You can either use the Build Phases tab of the project editor or the Target Membership section of the File inspector. 1. Audit new headers for nullability. Typically, you will wrap a header with `NS_ASSUME_NONNULL_BEGIN` and `NS_ASSUME_NONNULL_END`. 1. _(Optional.)_ If it’s a public header, change its visibility from Project to Public and import it in [the iOS SDK’s umbrella header](./src/Mapbox.h). -1. _(Optional.)_ If the file would also be used by the macOS SDK, make sure it’s in [platform/darwin/src/](../darwin/src/), then consult [the companion macOS document](../macos/DEVELOPING.md#adding-a-source-code-file) for further instructions. +1. _(Optional.)_ If the file would also be used by the macOS maps SDK, make sure it’s in [platform/darwin/src/](../darwin/src/), then consult [the companion macOS document](../macos/DEVELOPING.md#adding-a-source-code-file) for further instructions. ### Adding a resource -To add a resource (such as an image, SSL certificate, property list, or strings table) to the iOS SDK: +To add a resource (such as an image, SSL certificate, property list, or strings table) to the iOS maps SDK: 1. Add the header to the Copy Bundle Resources build phase of both the “dynamic” and “bundle” targets. You can either use the Build Phases tab of the project editor or the Target Membership section of the File inspector. -1. _(Optional.)_ If the resource would also be used by the macOS SDK, make sure it’s in [platform/darwin/resources/](../darwin/resources/), then consult [the companion macOS document](../macos/DEVELOPING.md#adding-a-resource) for further instructions. +1. _(Optional.)_ If the resource would also be used by the macOS maps SDK, make sure it’s in [platform/darwin/resources/](../darwin/resources/), then consult [the companion macOS document](../macos/DEVELOPING.md#adding-a-resource) for further instructions. ### Adding user-facing text -To add or update text that the user may see in the iOS SDK: +To add or update text that the user may see in the iOS maps SDK: 1. Make sure the implementation file imports [NSBundle+MGLAdditions.h](../darwin/src/NSBundle+MGLAdditions.h). 1. Use the `NSLocalizedStringWithDefaultValue()` macro: * `key` is a unique identifier that won’t change if the user-facing text ever needs to change. - * `tbl` is `Foundation` in code shared between the iOS and macOS SDKs, or `nil` otherwise. + * `tbl` is `Foundation` in code shared between the iOS and macOS maps SDKs, or `nil` otherwise. * `bundle` is `nil`; the redefined macro looks for the SDK bundle at runtime and ignores this argument. * `val` is the English string. 1. _(Optional.)_ When dealing with a number followed by a pluralized word, do not split the string. Instead, use a format string and make `val` ambiguous, like `%d file(s)`. Then pluralize for English in the appropriate [.stringsdict file](https://developer.apple.com/library/ios/documentation/MacOSX/Conceptual/BPInternational/StringsdictFileFormat/StringsdictFileFormat.html). See [platform/darwin/resources/en.lproj/Foundation.stringsdict](../darwin/resources/en.lproj/Foundation.stringsdict) for an example. Localizers should do likewise for their languages. -1. Run `make genstrings` and commit any changes it makes to .strings files. The make rule also updates the macOS SDK’s strings tables. +1. Run `make genstrings` and commit any changes it makes to .strings files. The make rule also updates the macOS maps SDK’s strings tables. ### Adding a localization diff --git a/platform/ios/INSTALL.md b/platform/ios/INSTALL.md index b64d9c650f..9a85dfe6fb 100644 --- a/platform/ios/INSTALL.md +++ b/platform/ios/INSTALL.md @@ -1,16 +1,16 @@ -# Integrating custom builds of the Mapbox iOS SDK into your application +# Integrating custom builds of the Mapbox Maps SDK for iOS into your application -This document explains how to build a development version of Mapbox iOS SDK for use in your own Cocoa Touch application. To use a production-ready version of the SDK, see the [Mapbox iOS SDK homepage](https://mapbox.com/ios-sdk). +This document explains how to build a development version of Mapbox Maps SDK for iOS for use in your own Cocoa Touch application. To use a production-ready version of the SDK, see the [Mapbox Maps SDK for iOS installation page](https://www.mapbox.com/install/ios/). ### Requirements -The Mapbox iOS SDK is intended to run on iOS 8.0 and above on the following devices and their simulators: +The Mapbox Maps SDK for iOS is intended to run on iOS 8.0 and above on the following devices and their simulators: * iPhone 4S and above (5, 5c, 5s, 6, 6 Plus) * iPad 2 and above (3, 4, Mini, Air, Mini 2, Air 2) * iPod touch 5th generation and above -The Mapbox iOS SDK requires Xcode 8.0 or higher. To use this SDK with Xcode 7.3.1, download and use a symbols build from the [releases](https://github.com/mapbox/mapbox-gl-native/releases) page. +The Mapbox Maps SDK for iOS requires Xcode 8.0 or higher. To use this SDK with Xcode 7.3.1, download and use a symbols build from the [releases](https://github.com/mapbox/mapbox-gl-native/releases) page. ### Building the SDK @@ -32,7 +32,7 @@ See the [packaging documentation](DEVELOPING.md#packaging-builds) for other buil ### Installation -There are several ways to install custom builds of the Mapbox iOS SDK: +There are several ways to install custom builds of the Mapbox Maps SDK for iOS: #### Dynamic framework @@ -113,7 +113,7 @@ If using the static framework, add `$(inherited)` to your target’s Other Linke #### Carthage -For instructions on installing stable release versions of the Mapbox iOS SDK with Carthage, see [our website](https://www.mapbox.com/ios-sdk/). If you require a build without symbols pre-stripped, use [this feed URL](https://www.mapbox.com/ios-sdk/Mapbox-iOS-SDK-symbols.json) with Carthage. +For instructions on installing stable release versions of the Mapbox Maps SDK for iOS with Carthage, see [our website](https://www.mapbox.com/install/ios/carthage/). If you require a build without symbols pre-stripped, use [this feed URL](https://www.mapbox.com/ios-sdk/Mapbox-iOS-SDK-symbols.json) with Carthage. ##### Testing pre-releases with Carthage diff --git a/platform/ios/README.md b/platform/ios/README.md index af01aed18d..40e27c2d3f 100644 --- a/platform/ios/README.md +++ b/platform/ios/README.md @@ -1,4 +1,4 @@ -# [Mapbox iOS SDK](https://www.mapbox.com/ios-sdk/) +# [Mapbox Maps SDK for iOS](https://www.mapbox.com/ios-sdk/) [![Bitrise](https://www.bitrise.io/app/7514e4cf3da2cc57.svg?token=OwqZE5rSBR9MVWNr_lf4sA&branch=master)](https://www.bitrise.io/app/7514e4cf3da2cc57) @@ -6,7 +6,7 @@ A library based on [Mapbox GL Native](../../README.md) for embedding interactive This repository is for day-to-day development of the SDK. Building the SDK yourself requires [a number of dependencies and steps](../../INSTALL.md) that are unnecessary for developing production applications. For production applications, please consider installing an official, prebuilt release instead; see the [Mapbox iOS SDK website](https://www.mapbox.com/ios-sdk/) for installation instructions. -* [Integrating the Mapbox iOS SDK into your application](INSTALL.md) -* [Contributing to the Mapbox iOS SDK](DEVELOPING.md) +* [Integrate the Mapbox Maps SDK for iOS into your application](https://www.mapbox.com/install/ios/). +* [Contribute to the Mapbox Maps SDK for iOS](DEVELOPING.md) ![](docs/img/screenshot.png) diff --git a/platform/ios/docs/doc-README.md b/platform/ios/docs/doc-README.md index ebad32e04c..7cd0376d07 100644 --- a/platform/ios/docs/doc-README.md +++ b/platform/ios/docs/doc-README.md @@ -1,9 +1,9 @@ -# [Mapbox iOS SDK](https://www.mapbox.com/ios-sdk/) +# [Mapbox Maps SDK for iOS](https://www.mapbox.com/ios-sdk/) -The Mapbox iOS SDK is an open-source framework for embedding interactive map views with scalable, customizable vector maps into Cocoa Touch applications on iOS 8.0 and above using Objective-C, Swift, or Interface Builder. It takes stylesheets that conform to the [Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/), applies them to vector tiles that conform to the [Mapbox Vector Tile Specification](https://www.mapbox.com/developers/vector-tiles/), and renders them using OpenGL. +The Mapbox Maps SDK for iOS is an open-source framework for embedding interactive map views with scalable, customizable vector maps into Cocoa Touch applications on iOS 8.0 and above using Objective-C, Swift, or Interface Builder. It takes stylesheets that conform to the [Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/), applies them to vector tiles that conform to the [Mapbox Vector Tile Specification](https://www.mapbox.com/developers/vector-tiles/), and renders them using OpenGL. -![Mapbox iOS SDK screenshots](img/screenshot.png) +![Mapbox Maps SDK for iOS screenshots](img/screenshot.png) -For setup information, check out the [Mapbox iOS SDK homepage](https://www.mapbox.com/ios-sdk/). For detailed usage instructions, read “[First steps with the Mapbox iOS SDK](https://www.mapbox.com/help/first-steps-ios-sdk/)” and consult the [online examples](https://www.mapbox.com/ios-sdk/examples/). A [full changelog](https://github.com/mapbox/mapbox-gl-native/blob/master/platform/ios/CHANGELOG.md) is also available. +For setup information, check out the [Mapbox Maps SDK for iOS homepage](https://www.mapbox.com/ios-sdk/). For detailed usage instructions, read “[First steps with the Mapbox Maps SDK for iOS](https://www.mapbox.com/help/first-steps-ios-sdk/)” and consult the [online examples](https://www.mapbox.com/ios-sdk/examples/). A [full changelog](https://github.com/mapbox/mapbox-gl-native/blob/master/platform/ios/CHANGELOG.md) is also available. If you have any questions, please see [our help page](https://www.mapbox.com/help/). We welcome your [bug reports, feature requests, and contributions](https://github.com/mapbox/mapbox-gl-native/issues/). diff --git a/platform/ios/docs/guides/Gesture Recognizers.md b/platform/ios/docs/guides/Gesture Recognizers.md index 08e4c150e1..26237e3cfa 100644 --- a/platform/ios/docs/guides/Gesture Recognizers.md +++ b/platform/ios/docs/guides/Gesture Recognizers.md @@ -1,6 +1,6 @@ # User Interactions -The Mapbox iOS SDK provides a set of built-in gesture recognizers. You can customize or supplement these gestures according to your use case. You see what gesture recognizers are on your `MGLMapView` by accessing the `gestureRecognizers` property on your map. +The Mapbox Maps SDK for iOS provides a set of built-in gesture recognizers. You can customize or supplement these gestures according to your use case. You see what gesture recognizers are on your `MGLMapView` by accessing the `gestureRecognizers` property on your map. ## Configuring user interaction diff --git a/platform/ios/docs/guides/Info.plist Keys.md b/platform/ios/docs/guides/Info.plist Keys.md index c5c7cf1d85..e74e28b76b 100644 --- a/platform/ios/docs/guides/Info.plist Keys.md +++ b/platform/ios/docs/guides/Info.plist Keys.md @@ -1,6 +1,6 @@ # Info.plist Keys -The Mapbox iOS SDK supports custom `Info.plist` keys in your application in order to configure various settings. +The Mapbox Maps SDK for iOS supports custom `Info.plist` keys in your application in order to configure various settings. ## MGLMapboxAccessToken diff --git a/platform/ios/docs/pod-README.md b/platform/ios/docs/pod-README.md index 2e5a78841c..f94073bd9f 100644 --- a/platform/ios/docs/pod-README.md +++ b/platform/ios/docs/pod-README.md @@ -1,16 +1,16 @@ -# [Mapbox iOS SDK](https://www.mapbox.com/ios-sdk/) +# [Mapbox Maps SDK for iOS](https://www.mapbox.com/ios-sdk/) -The Mapbox iOS SDK is an open-source framework for embedding interactive map views with scalable, customizable vector maps into Cocoa Touch applications on iOS 8.0 and above using Objective-C, Swift, or Interface Builder. It takes stylesheets that conform to the [Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/), applies them to vector tiles that conform to the [Mapbox Vector Tile Specification](https://www.mapbox.com/developers/vector-tiles/), and renders them using OpenGL. +The Mapbox Maps SDK for iOS is an open-source framework for embedding interactive map views with scalable, customizable vector maps into Cocoa Touch applications on iOS 8.0 and above using Objective-C, Swift, or Interface Builder. It takes stylesheets that conform to the [Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/), applies them to vector tiles that conform to the [Mapbox Vector Tile Specification](https://www.mapbox.com/developers/vector-tiles/), and renders them using OpenGL. -For more information, check out the [Mapbox iOS SDK homepage](https://www.mapbox.com/ios-sdk/) and the [full changelog](https://github.com/mapbox/mapbox-gl-native/blob/master/platform/ios/CHANGELOG.md) online. +For more information, check out the [Mapbox Maps SDK for iOS homepage](https://www.mapbox.com/ios-sdk/) and the [full changelog](https://github.com/mapbox/mapbox-gl-native/blob/master/platform/ios/CHANGELOG.md) online. [![](https://raw.githubusercontent.com/mapbox/mapbox-gl-native/master/platform/ios/docs/img/screenshot.png)]() ## Installation -The Mapbox iOS SDK may be installed as either a dynamic framework or a static framework. (To reduce the download size, the static framework is omitted from some distributions; you may need to download the full package from the [release page](https://github.com/mapbox/mapbox-gl-native/releases/).) +The Mapbox Maps SDK for iOS may be installed as either a dynamic framework or a static framework. (To reduce the download size, the static framework is omitted from some distributions; you may need to download the full package from the [release page](https://github.com/mapbox/mapbox-gl-native/releases/).) -Integrating the Mapbox iOS SDK requires Xcode 8.0 or higher. To use this SDK with Xcode 7.3.1, download and use a symbols build from the [releases](https://github.com/mapbox/mapbox-gl-native/releases) page. +Integrating the Mapbox Maps SDK for iOS requires Xcode 8.0 or higher. To use this SDK with Xcode 7.3.1, download and use a symbols build from the [releases](https://github.com/mapbox/mapbox-gl-native/releases) page. {{DYNAMIC}} @@ -94,6 +94,6 @@ class ViewController: UIViewController { } ``` -Full API documentation is included in this package, within the `documentation` folder. For more details, read “[First steps with the Mapbox iOS SDK](https://www.mapbox.com/help/first-steps-ios-sdk/)” and consult the [online examples](https://www.mapbox.com/ios-sdk/examples/). +Full API documentation is included in this package, within the `documentation` folder. For more details, read “[First steps with the Mapbox Maps SDK for iOS](https://www.mapbox.com/help/first-steps-ios-sdk/)” and consult the [online examples](https://www.mapbox.com/ios-sdk/examples/). If you have any questions, please see [our help page](https://www.mapbox.com/help/). We welcome your [bug reports, feature requests, and contributions](https://github.com/mapbox/mapbox-gl-native/issues/). diff --git a/platform/ios/resources/Base.lproj/Localizable.strings b/platform/ios/resources/Base.lproj/Localizable.strings index cb085add6a..245b122fb6 100644 Binary files a/platform/ios/resources/Base.lproj/Localizable.strings and b/platform/ios/resources/Base.lproj/Localizable.strings differ diff --git a/platform/ios/resources/bg.lproj/Localizable.strings b/platform/ios/resources/bg.lproj/Localizable.strings index 7098589b6b..e9b35e4438 100644 --- a/platform/ios/resources/bg.lproj/Localizable.strings +++ b/platform/ios/resources/bg.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Accessibility hint */ +/* Accessibility hint */ "ANNOTATION_A11Y_HINT" = "Показва повече инфо"; /* No comment provided by engineer. */ @@ -53,10 +53,10 @@ "PARSE_STYLE_FAILED_DESC" = "Картата не се зареди поради повреден стил."; /* Action sheet title */ -"SDK_NAME" = "Mapbox iOS SDK"; +"SDK_NAME" = "Mapbox Maps SDK for iOS"; /* Developer-only SDK update notification; {latest version, in format x.x.x} */ -"SDK_UPDATE_AVAILABLE" = "Сега е налична Mapbox iOS SDK версия %@:"; +"SDK_UPDATE_AVAILABLE" = "Сега е налична Mapbox Maps SDK for iOS версия %@:"; /* User-friendly error description */ "STYLE_NOT_FOUND_DESC" = "Картата не се зареди поради неоткрит или несъвместим стил."; diff --git a/platform/ios/resources/ca.lproj/Localizable.strings b/platform/ios/resources/ca.lproj/Localizable.strings index ae655f282d..a5c06f739e 100644 --- a/platform/ios/resources/ca.lproj/Localizable.strings +++ b/platform/ios/resources/ca.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Accessibility hint */ +/* Accessibility hint */ "ANNOTATION_A11Y_HINT" = "Mostra més informació"; /* No comment provided by engineer. */ @@ -53,10 +53,10 @@ "PARSE_STYLE_FAILED_DESC" = "El mapa no s’ha carregat perquè s’ha corromput l’estil."; /* Action sheet title */ -"SDK_NAME" = "Mapbox iOS SDK"; +"SDK_NAME" = "Mapbox Maps SDK for iOS"; /* Developer-only SDK update notification; {latest version, in format x.x.x} */ -"SDK_UPDATE_AVAILABLE" = "La versió %@ del Mapbox iOS SDK està disponible:"; +"SDK_UPDATE_AVAILABLE" = "La versió %@ del Mapbox Maps SDK for iOS està disponible:"; /* User-friendly error description */ "STYLE_NOT_FOUND_DESC" = "El mapa no s’ha carregat perquè no es troba l’estil o bé és incompatible."; diff --git a/platform/ios/resources/de.lproj/Localizable.strings b/platform/ios/resources/de.lproj/Localizable.strings index e8180ea17c..f3e5dfe2f1 100644 --- a/platform/ios/resources/de.lproj/Localizable.strings +++ b/platform/ios/resources/de.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Accessibility hint */ +/* Accessibility hint */ "ANNOTATION_A11Y_HINT" = "Mehr Infos anzeigen"; /* No comment provided by engineer. */ @@ -53,10 +53,10 @@ "PARSE_STYLE_FAILED_DESC" = "Die Karte konnte nicht geladen werden, da diese Form beschädigt ist."; /* Action sheet title */ -"SDK_NAME" = "Mapbox iOS SDK"; +"SDK_NAME" = "Mapbox Maps SDK for iOS"; /* Developer-only SDK update notification; {latest version, in format x.x.x} */ -"SDK_UPDATE_AVAILABLE" = "Mapbox iOS SDK Version %@ ist ab sofort verfügbar."; +"SDK_UPDATE_AVAILABLE" = "Mapbox Maps SDK for iOS Version %@ ist ab sofort verfügbar."; /* User-friendly error description */ "STYLE_NOT_FOUND_DESC" = "Die Karte konnte nicht geladen werden, da diese Form nicht gefunden werden kann oder nicht kompatibel ist."; diff --git a/platform/ios/resources/es.lproj/Localizable.strings b/platform/ios/resources/es.lproj/Localizable.strings index d1d5084dc7..5f88eeb5e9 100644 --- a/platform/ios/resources/es.lproj/Localizable.strings +++ b/platform/ios/resources/es.lproj/Localizable.strings @@ -74,10 +74,10 @@ "ROAD_REF_A11Y_FMT" = "Ruta %@"; /* Action sheet title */ -"SDK_NAME" = "Mapbox iOS SDK"; +"SDK_NAME" = "Mapbox Maps SDK for iOS"; /* Developer-only SDK update notification; {latest version, in format x.x.x} */ -"SDK_UPDATE_AVAILABLE" = "La versión %@ de Mapbox iOS SDK está disponible:"; +"SDK_UPDATE_AVAILABLE" = "La versión %@ de Mapbox Maps SDK for iOS está disponible:"; /* User-friendly error description */ "STYLE_NOT_FOUND_DESC" = "No se pudo cargar el mapa debido a que no se encuentra el estilo o está incompleto."; diff --git a/platform/ios/resources/fr.lproj/Localizable.strings b/platform/ios/resources/fr.lproj/Localizable.strings index 7fc85568c7..7c02663d47 100644 --- a/platform/ios/resources/fr.lproj/Localizable.strings +++ b/platform/ios/resources/fr.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Accessibility hint */ +/* Accessibility hint */ "ANNOTATION_A11Y_HINT" = "Voir plus d’informations"; /* No comment provided by engineer. */ @@ -53,7 +53,7 @@ "PARSE_STYLE_FAILED_DESC" = "La carte n’a pas pu être chargée car le style est corrompu."; /* Action sheet title */ -"SDK_NAME" = "Mapbox iOS SDK"; +"SDK_NAME" = "Mapbox Maps SDK for iOS"; /* Developer-only SDK update notification; {latest version, in format x.x.x} */ "SDK_UPDATE_AVAILABLE" = "La version %@ du SDK Mapbox pour iOS est maintenant disponible :"; diff --git a/platform/ios/resources/hu.lproj/Localizable.strings b/platform/ios/resources/hu.lproj/Localizable.strings index a4d1b1c3ae..e4c9882600 100644 --- a/platform/ios/resources/hu.lproj/Localizable.strings +++ b/platform/ios/resources/hu.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Accessibility hint */ +/* Accessibility hint */ "ANNOTATION_A11Y_HINT" = "Több infót mutat"; /* No comment provided by engineer. */ @@ -53,10 +53,10 @@ "PARSE_STYLE_FAILED_DESC" = "Nem sikerült betölteni a térképet, mert a stílus sérült."; /* Action sheet title */ -"SDK_NAME" = "Mapbox iOS SDK"; +"SDK_NAME" = "Mapbox Maps SDK for iOS"; /* Developer-only SDK update notification; {latest version, in format x.x.x} */ -"SDK_UPDATE_AVAILABLE" = "Mapbox iOS SDK %@ mostantól elérhető:"; +"SDK_UPDATE_AVAILABLE" = "Mapbox Maps SDK for iOS %@ mostantól elérhető:"; /* User-friendly error description */ "STYLE_NOT_FOUND_DESC" = "Nem sikerült betölteni a térképet, mert a stílus nem található vagy inkompatibilis."; diff --git a/platform/ios/resources/ja.lproj/Localizable.strings b/platform/ios/resources/ja.lproj/Localizable.strings index b8fde1cdb2..0bcb706cae 100644 --- a/platform/ios/resources/ja.lproj/Localizable.strings +++ b/platform/ios/resources/ja.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Accessibility hint */ +/* Accessibility hint */ "ANNOTATION_A11Y_HINT" = "詳細を伝える"; /* No comment provided by engineer. */ @@ -41,10 +41,10 @@ "MAP_A11Y_VALUE" = "ズーム %1$d倍\n%2$ld ピン現れる"; /* Action sheet title */ -"SDK_NAME" = "Mapbox iOS SDK"; +"SDK_NAME" = "Mapbox Maps SDK for iOS"; /* Developer-only SDK update notification; {latest version, in format x.x.x} */ -"SDK_UPDATE_AVAILABLE" = "現在Mapbox iOS SDK %1$@が入手できる:"; +"SDK_UPDATE_AVAILABLE" = "現在Mapbox Maps SDK for iOS %1$@が入手できる:"; /* Telemetry prompt message */ "TELEMETRY_DISABLED_MSG" = "You can help make OpenStreetMap and Mapbox maps better by contributing anonymous usage data."; diff --git a/platform/ios/resources/lt.lproj/Localizable.strings b/platform/ios/resources/lt.lproj/Localizable.strings index 3ac683fe40..e8424434b9 100644 --- a/platform/ios/resources/lt.lproj/Localizable.strings +++ b/platform/ios/resources/lt.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Accessibility hint */ +/* Accessibility hint */ "ANNOTATION_A11Y_HINT" = "Rodo daugiau informacijos"; /* No comment provided by engineer. */ @@ -53,10 +53,10 @@ "PARSE_STYLE_FAILED_DESC" = "Nepavyko užkrauti žemėlapio, nes stilius yra netinkamo formato."; /* Action sheet title */ -"SDK_NAME" = "Mapbox iOS SDK"; +"SDK_NAME" = "Mapbox Maps SDK for iOS"; /* Developer-only SDK update notification; {latest version, in format x.x.x} */ -"SDK_UPDATE_AVAILABLE" = "Mapbox iOS SDK versija %@ jau prieinama."; +"SDK_UPDATE_AVAILABLE" = "Mapbox Maps SDK for iOS versija %@ jau prieinama."; /* User-friendly error description */ "STYLE_NOT_FOUND_DESC" = "Nepavyko užkrauti žemėlapio, nes neįmanoma rasti stiliaus arba jis nėra suderinamas."; diff --git a/platform/ios/resources/pt-BR.lproj/Localizable.strings b/platform/ios/resources/pt-BR.lproj/Localizable.strings index 53c3d3a12d..4e7e998ab3 100644 --- a/platform/ios/resources/pt-BR.lproj/Localizable.strings +++ b/platform/ios/resources/pt-BR.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Accessibility hint */ +/* Accessibility hint */ "ANNOTATION_A11Y_HINT" = "Mostrar mais informações"; /* No comment provided by engineer. */ @@ -53,7 +53,7 @@ "PARSE_STYLE_FAILED_DESC" = "Falha ao carregar mapa porque o estilo está corrompido."; /* Action sheet title */ -"SDK_NAME" = "Mapbox iOS SDK"; +"SDK_NAME" = "Mapbox Maps SDK for iOS"; /* Developer-only SDK update notification; {latest version, in format x.x.x} */ "SDK_UPDATE_AVAILABLE" = "SDK Mapbox para iOS versão %@ está disponível:"; diff --git a/platform/ios/resources/ru.lproj/Localizable.strings b/platform/ios/resources/ru.lproj/Localizable.strings index 40f59a3356..6d5ea9025e 100644 --- a/platform/ios/resources/ru.lproj/Localizable.strings +++ b/platform/ios/resources/ru.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Accessibility hint */ +/* Accessibility hint */ "ANNOTATION_A11Y_HINT" = "Показать больше информации"; /* No comment provided by engineer. */ @@ -53,10 +53,10 @@ "PARSE_STYLE_FAILED_DESC" = "Не удалось загрузить карту из-за ошибки в стиле."; /* Action sheet title */ -"SDK_NAME" = "Mapbox iOS SDK"; +"SDK_NAME" = "Mapbox Maps SDK for iOS"; /* Developer-only SDK update notification; {latest version, in format x.x.x} */ -"SDK_UPDATE_AVAILABLE" = "Mapbox iOS SDK версии %@теперь доступен."; +"SDK_UPDATE_AVAILABLE" = "Mapbox Maps SDK for iOS версии %@теперь доступен."; /* User-friendly error description */ "STYLE_NOT_FOUND_DESC" = "Не удалось загрузить карту так как стиль не найден или несовместим."; diff --git a/platform/ios/resources/sv.lproj/Localizable.strings b/platform/ios/resources/sv.lproj/Localizable.strings index b10b1b06ed..df4f3554ff 100644 --- a/platform/ios/resources/sv.lproj/Localizable.strings +++ b/platform/ios/resources/sv.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Accessibility hint */ +/* Accessibility hint */ "ANNOTATION_A11Y_HINT" = "Visa mer information"; /* No comment provided by engineer. */ @@ -53,10 +53,10 @@ "PARSE_STYLE_FAILED_DESC" = "Kartan kunde inte laddas på grund av att stilen är skadad."; /* Action sheet title */ -"SDK_NAME" = "Mapbox iOS SDK"; +"SDK_NAME" = "Mapbox Maps SDK for iOS"; /* Developer-only SDK update notification; {latest version, in format x.x.x} */ -"SDK_UPDATE_AVAILABLE" = "Mapbox iOS SDK version %@ är nu tillgängligt:"; +"SDK_UPDATE_AVAILABLE" = "Mapbox Maps SDK for iOS version %@ är nu tillgängligt:"; /* User-friendly error description */ "STYLE_NOT_FOUND_DESC" = "Kartan kunde inte laddas på grund av ett okänt fel."; diff --git a/platform/ios/resources/uk.lproj/Localizable.strings b/platform/ios/resources/uk.lproj/Localizable.strings index 8392f945b8..79b9779cc6 100644 --- a/platform/ios/resources/uk.lproj/Localizable.strings +++ b/platform/ios/resources/uk.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Accessibility hint */ +/* Accessibility hint */ "ANNOTATION_A11Y_HINT" = "Показує більше інформації"; /* No comment provided by engineer. */ @@ -53,10 +53,10 @@ "PARSE_STYLE_FAILED_DESC" = "Неможливо завантажити мапу, через помилки в стилі."; /* Action sheet title */ -"SDK_NAME" = "Mapbox iOS SDK"; +"SDK_NAME" = "Mapbox Maps SDK for iOS"; /* Developer-only SDK update notification; {latest version, in format x.x.x} */ -"SDK_UPDATE_AVAILABLE" = "Доступна версія %@ Mapbox iOS SDK:"; +"SDK_UPDATE_AVAILABLE" = "Доступна версія %@ Mapbox Maps SDK for iOS:"; /* User-friendly error description */ "STYLE_NOT_FOUND_DESC" = "Неможливо завантажити мапу, бо неможливо знайти стиль або він несумісний."; diff --git a/platform/ios/resources/vi.lproj/Localizable.strings b/platform/ios/resources/vi.lproj/Localizable.strings index 4d08b67299..23e87b8c02 100644 --- a/platform/ios/resources/vi.lproj/Localizable.strings +++ b/platform/ios/resources/vi.lproj/Localizable.strings @@ -74,10 +74,10 @@ "ROAD_REF_A11Y_FMT" = "Đường số %@"; /* Action sheet title */ -"SDK_NAME" = "Mapbox iOS SDK"; +"SDK_NAME" = "Mapbox Maps SDK for iOS"; /* Developer-only SDK update notification; {latest version, in format x.x.x} */ -"SDK_UPDATE_AVAILABLE" = "Mapbox iOS SDK mới ra phiên bản %@:"; +"SDK_UPDATE_AVAILABLE" = "Mapbox Maps SDK for iOS mới ra phiên bản %@:"; /* User-friendly error description */ "STYLE_NOT_FOUND_DESC" = "Bản đồ bị thất bại khi tải vì không tìm thấy bảng kiểu hoặc bảng kiểu không tương thích."; diff --git a/platform/ios/resources/zh-Hans.lproj/Localizable.strings b/platform/ios/resources/zh-Hans.lproj/Localizable.strings index 5167e93c1b..1a3453e209 100644 --- a/platform/ios/resources/zh-Hans.lproj/Localizable.strings +++ b/platform/ios/resources/zh-Hans.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Accessibility hint */ +/* Accessibility hint */ "ANNOTATION_A11Y_HINT" = "显示信息"; /* No comment provided by engineer. */ @@ -53,10 +53,10 @@ "PARSE_STYLE_FAILED_DESC" = "The map failed to load because the style is corrupted."; /* Action sheet title */ -"SDK_NAME" = "Mapbox iOS SDK"; +"SDK_NAME" = "Mapbox Maps SDK for iOS"; /* Developer-only SDK update notification; {latest version, in format x.x.x} */ -"SDK_UPDATE_AVAILABLE" = "Mapbox iOS SDK version %@ is now available:"; +"SDK_UPDATE_AVAILABLE" = "Mapbox Maps SDK for iOS version %@ is now available:"; /* User-friendly error description */ "STYLE_NOT_FOUND_DESC" = "The map failed to load because the style can’t be found or is incompatible."; diff --git a/platform/ios/resources/zh-Hant.lproj/Localizable.strings b/platform/ios/resources/zh-Hant.lproj/Localizable.strings index 585ff3dd27..d660a3d1ae 100644 --- a/platform/ios/resources/zh-Hant.lproj/Localizable.strings +++ b/platform/ios/resources/zh-Hant.lproj/Localizable.strings @@ -1,4 +1,4 @@ -/* Accessibility hint */ +/* Accessibility hint */ "ANNOTATION_A11Y_HINT" = "顯示信息"; /* No comment provided by engineer. */ @@ -53,10 +53,10 @@ "PARSE_STYLE_FAILED_DESC" = "樣式表有毀損,無法載入地圖。"; /* Action sheet title */ -"SDK_NAME" = "Mapbox iOS SDK"; +"SDK_NAME" = "Mapbox Maps SDK for iOS"; /* Developer-only SDK update notification; {latest version, in format x.x.x} */ -"SDK_UPDATE_AVAILABLE" = "Mapbox iOS SDK %@版現已開放下載:"; +"SDK_UPDATE_AVAILABLE" = "Mapbox Maps SDK for iOS %@版現已開放下載:"; /* User-friendly error description */ "STYLE_NOT_FOUND_DESC" = "找不到樣式表或樣式表不兼容,無法載入地圖。"; diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index f9690c70f0..60c2e0dd09 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -1973,7 +1973,7 @@ public: - (void)showAttribution:(__unused id)sender { - NSString *title = NSLocalizedStringWithDefaultValue(@"SDK_NAME", nil, nil, @"Mapbox iOS SDK", @"Action sheet title"); + NSString *title = NSLocalizedStringWithDefaultValue(@"SDK_NAME", nil, nil, @"Mapbox Maps SDK for iOS", @"Action sheet title"); UIAlertController *attributionController = [UIAlertController alertControllerWithTitle:title message:nil preferredStyle:UIAlertControllerStyleActionSheet]; diff --git a/platform/ios/src/MGLSDKUpdateChecker.mm b/platform/ios/src/MGLSDKUpdateChecker.mm index ab4ef7be86..bb61e2b595 100644 --- a/platform/ios/src/MGLSDKUpdateChecker.mm +++ b/platform/ios/src/MGLSDKUpdateChecker.mm @@ -29,7 +29,7 @@ NSString *latestVersion = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; latestVersion = [latestVersion stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; if (![currentVersion isEqualToString:latestVersion]) { - NSString *updateAvailable = [NSString stringWithFormat:NSLocalizedStringWithDefaultValue(@"SDK_UPDATE_AVAILABLE", nil, nil, @"Mapbox iOS SDK version %@ is now available:", @"Developer-only SDK update notification; {latest version, in format x.x.x}"), latestVersion]; + NSString *updateAvailable = [NSString stringWithFormat:NSLocalizedStringWithDefaultValue(@"SDK_UPDATE_AVAILABLE", nil, nil, @"Mapbox Maps SDK for iOS version %@ is now available:", @"Developer-only SDK update notification; {latest version, in format x.x.x}"), latestVersion]; NSLog(@"%@ https://github.com/mapbox/mapbox-gl-native/releases/tag/ios-v%@", updateAvailable, latestVersion); } }] resume]; diff --git a/platform/macos/CHANGELOG.md b/platform/macos/CHANGELOG.md index 6a274ae3b8..6fab5f9893 100644 --- a/platform/macos/CHANGELOG.md +++ b/platform/macos/CHANGELOG.md @@ -5,6 +5,9 @@ ### Annotations * Fixed an issue that could cause triggering `-[MGLMapViewDelegate mapView:didSelectAnnotation:]` when taping next to a `MGLAnnotationImage` annotation. ([#10538](https://github.com/mapbox/mapbox-gl-native/pull/10538)) +### Packaging +* Renamed this SDK from Mapbox macOS SDK to Mapbox Maps SDK for macOS. ([#10610](https://github.com/mapbox/mapbox-gl-native/pull/10610)) + ## v0.6.0 ### Networking and storage diff --git a/platform/macos/DEVELOPING.md b/platform/macos/DEVELOPING.md index fecde1fb38..562f1291c2 100644 --- a/platform/macos/DEVELOPING.md +++ b/platform/macos/DEVELOPING.md @@ -1,12 +1,12 @@ -# Contributing to the Mapbox macOS SDK +# Contributing to the Mapbox Maps SDK for macOS -This document explains how to build the Mapbox macOS SDK from source. It is intended for advanced developers who wish to contribute to Mapbox GL and the Mapbox iOS SDK. +This document explains how to build the Mapbox Maps SDK for macOS from source. It is intended for advanced developers who wish to contribute to Mapbox GL and the Mapbox Maps SDK for iOS. ## Requirements -The Mapbox macOS SDK and the macosapp demo application run on macOS 10.10.0 or above. +The Mapbox Maps SDK for macOS and the macosapp demo application run on macOS 10.10.0 or above. -The Mapbox macOS SDK requires Xcode 8.0 or above. +The Mapbox Maps SDK for macOS requires Xcode 8.0 or above. ## Building the SDK @@ -44,7 +44,7 @@ The products of these build commands can be found in the `build/macos/pkg` folde ### Making any symbol public -To add any Objective-C type, constant, or member to the iOS SDK’s public interface: +To add any Objective-C type, constant, or member to the macOS maps SDK’s public interface: 1. Ensure that the symbol is pure Objective-C and does not rely on any language features specific to Objective-C++ or the C11 dialect of C – so no namespaced types or classes named with emoji! 🙃 Most projects that depend on this SDK are either written in pure Objective-C (GNU99 dialect) or Swift, which cannot yet bridge C++ types. 1. Name the symbol according to [Cocoa naming conventions](https://developer.apple.com/library/prerelease/content/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html#//apple_ref/doc/uid/10000146i). Use the `MGL` class prefix to avoid conflicts with client code. If the symbol has an analogue in MapKit, name the symbol according to MapKit. @@ -52,40 +52,40 @@ To add any Objective-C type, constant, or member to the iOS SDK’s public inter ### Making a type or constant public -To add an Objective-C class, protocol, category, typedef, enumeration, or global constant to the macOS SDK’s public interface: +To add an Objective-C class, protocol, category, typedef, enumeration, or global constant to the macOS maps SDK’s public interface: 1. _(Optional.)_ Add the macro `MGL_EXPORT` prior to the declaration for classes and global constants. To use this macro, include `MGLFoundation.h`. You can check whether all public symbols are exported correctly by running `make check-public-symbols`. 1. _(Optional.)_ Add the type or constant’s name to the relevant category in the `custom_categories` section of [the jazzy configuration file](./jazzy.yml). This is required for classes and protocols and also recommended for any other type that is strongly associated with a particular class or protocol. If you leave out this step, the symbol will appear in an “Other” section in the generated HTML documentation’s table of contents. -1. _(Optional.)_ If the symbol would also be publicly exposed in the iOS SDK, consult [the companion iOS document](../ios/DEVELOPING.md#making-a-type-or-constant-public) for further instructions. +1. _(Optional.)_ If the symbol would also be publicly exposed in the iOS maps SDK, consult [the companion iOS document](../ios/DEVELOPING.md#making-a-type-or-constant-public) for further instructions. ### Adding a source code file -To add an Objective-C header or implementation file to the macOS SDK: +To add an Objective-C header or implementation file to the macOS maps SDK: 1. Add the file to the “dynamic” target’s Headers or Compile Sources build phase, as appropriate. You can either use the Build Phases tab of the project editor or the Target Membership section of the File inspector. 1. Audit new headers for nullability. Typically, you will wrap a header with `NS_ASSUME_NONNULL_BEGIN` and `NS_ASSUME_NONNULL_END`. 1. _(Optional.)_ If it’s a public header, change its visibility from Project to Public and import it in [the macOS SDK’s umbrella header](./src/Mapbox.h). -1. _(Optional.)_ If the file would also be used by the iOS SDK, make sure it’s in [platform/darwin/src/](../darwin/src/), then consult [the companion iOS document](../ios/DEVELOPING.md#adding-a-source-code-file) for further instructions. +1. _(Optional.)_ If the file would also be used by the iOS maps SDK, make sure it’s in [platform/darwin/src/](../darwin/src/), then consult [the companion iOS document](../ios/DEVELOPING.md#adding-a-source-code-file) for further instructions. ### Adding a resource -To add a resource (such as an image, SSL certificate, property list, or strings table) to the macOS SDK: +To add a resource (such as an image, SSL certificate, property list, or strings table) to the macOS maps SDK: 1. Add the header to the Copy Bundle Resources build phase of the “dynamic” target. You can either use the Build Phases tab of the project editor or the Target Membership section of the File inspector. -1. _(Optional.)_ If the resource would also be used by the iOS SDK, make sure it’s in [platform/darwin/resources/](../darwin/resources/), then consult [the companion iOS document](../ios/DEVELOPING.md#adding-a-resource) for further instructions. +1. _(Optional.)_ If the resource would also be used by the iOS maps SDK, make sure it’s in [platform/darwin/resources/](../darwin/resources/), then consult [the companion iOS document](../ios/DEVELOPING.md#adding-a-resource) for further instructions. ### Adding user-facing text -To add or update text that the user may see in the macOS SDK: +To add or update text that the user may see in the macOS maps SDK: 1. Make sure the implementation file imports [NSBundle+MGLAdditions.h](../darwin/src/NSBundle+MGLAdditions.h). 1. Use the `NSLocalizedStringWithDefaultValue()` macro: * `key` is a unique identifier that won’t change if the user-facing text ever needs to change. - * `tbl` is `Foundation` in code shared between the iOS and macOS SDKs, or `nil` otherwise. + * `tbl` is `Foundation` in code shared between the iOS and macOS maps SDKs, or `nil` otherwise. * `bundle` is `nil`; the redefined macro looks for the SDK bundle at runtime and ignores this argument. * `val` is the English string. 1. _(Optional.)_ When dealing with a number followed by a pluralized word, do not split the string. Instead, use a format string and make `val` ambiguous, like `%d file(s)`. Then pluralize for English in the appropriate [.stringsdict file](https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPInternational/StringsdictFileFormat/StringsdictFileFormat.html). See [platform/darwin/resources/en.lproj/Foundation.stringsdict](../darwin/resources/en.lproj/Foundation.stringsdict) for an example. Localizers should do likewise for their languages. -1. Run `make genstrings` and commit any changes it makes to .strings files. The make rule also updates the iOS SDK’s strings tables. +1. Run `make genstrings` and commit any changes it makes to .strings files. The make rule also updates the iOS maps SDK’s strings tables. ### Adding a localization @@ -141,6 +141,6 @@ The demo applications use Mapbox vector tiles, which require a Mapbox account an ## Using macosapp -Through the macOS SDK, the demo application supports a variety of standard gestures and keyboard shortcuts. For more details, open Mapbox GL Help from the Help menu. +Through the macOS maps SDK, the demo application supports a variety of standard gestures and keyboard shortcuts. For more details, open Mapbox GL Help from the Help menu. -You can also [integrate the Mapbox macOS SDK into your own Cocoa application](INSTALL.md). +You can also [integrate the Mapbox Maps SDK for macOS into your own Cocoa application](INSTALL.md). diff --git a/platform/macos/INSTALL.md b/platform/macos/INSTALL.md index cbb9d7d8a6..c723d3e062 100644 --- a/platform/macos/INSTALL.md +++ b/platform/macos/INSTALL.md @@ -1,10 +1,10 @@ -# Integrating a custom build of the Mapbox macOS SDK into your application +# Integrating a custom build of the Mapbox Maps SDK for macOS into your application -This document explains how to build a development version of the Mapbox macOS SDK from source and integrate it into your own Cocoa application. This process is for advanced developers who want to get a glimpse of the SDK’s development between releases. To use a production-ready version of the SDK, see the [Mapbox macOS SDK homepage](https://mapbox.github.io/mapbox-gl-native/macos/). +This document explains how to build a development version of the Mapbox Maps SDK for macOS from source and integrate it into your own Cocoa application. This process is for advanced developers who want to get a glimpse of the SDK’s development between releases. To use a production-ready version of the SDK, see the [Mapbox Maps SDK for macOS homepage](https://mapbox.github.io/mapbox-gl-native/macos/). ### Requirements -The Mapbox macOS SDK requires the macOS 10.10.0 SDK (or above) and Xcode 8.0 (or above). To use this SDK with Xcode 7.3.1, download and use a symbols build from the [releases](https://github.com/mapbox/mapbox-gl-native/releases) page. +The Mapbox Maps SDK for macOS requires the macOS 10.10.0 SDK (or above) and Xcode 8.0 (or above). To use this SDK with Xcode 7.3.1, download and use a symbols build from the [releases](https://github.com/mapbox/mapbox-gl-native/releases) page. ### Building the SDK from source @@ -71,4 +71,4 @@ script AppDelegate end script ``` -For further instructions, consult the [macOS SDK documentation](https://mapbox.github.io/mapbox-gl-native/macos/) or run `make xdocument` to generate the documentation. The [Mapbox iOS SDK](https://www.mapbox.com/ios-sdk/)’s [API documentation](https://www.mapbox.com/ios-sdk/) and [online examples](https://www.mapbox.com/ios-sdk/examples/) apply to the Mapbox macOS SDK with few differences, mostly around unimplemented features like user location tracking. +For further instructions, consult the [macOS SDK documentation](https://mapbox.github.io/mapbox-gl-native/macos/) or run `make xdocument` to generate the documentation. The [Mapbox Maps SDK for iOS](https://www.mapbox.com/ios-sdk/)’s [API documentation](https://www.mapbox.com/ios-sdk/) and [online examples](https://www.mapbox.com/ios-sdk/examples/) apply to the Mapbox Maps SDK for macOS with few differences, mostly around unimplemented features like user location tracking. diff --git a/platform/macos/docs/guides/Info.plist Keys.md b/platform/macos/docs/guides/Info.plist Keys.md index f61ad8c7a7..2c75ca88c7 100644 --- a/platform/macos/docs/guides/Info.plist Keys.md +++ b/platform/macos/docs/guides/Info.plist Keys.md @@ -1,6 +1,6 @@ # Info.plist Keys -The Mapbox macOS SDK supports custom `Info.plist` keys in your application in order to configure various settings. +The Mapbox Maps SDK for macOS supports custom `Info.plist` keys in your application in order to configure various settings. ## MGLMapboxAccessToken -- cgit v1.2.1 From 1ada238dfdf6042f8c1134f63cbe66b5d5921448 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Wed, 6 Dec 2017 13:52:19 +0100 Subject: [android] - update changelog for 5.2.1 release --- platform/android/CHANGELOG.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/platform/android/CHANGELOG.md b/platform/android/CHANGELOG.md index 4d3a82957c..28ab1e8dd2 100644 --- a/platform/android/CHANGELOG.md +++ b/platform/android/CHANGELOG.md @@ -6,6 +6,20 @@ Mapbox welcomes participation and contributions from everyone. If you'd like to * TBA +## 5.2.1 - December 6, 2017 + - Close race condition in RunLoop [#10537](https://github.com/mapbox/mapbox-gl-native/pull/10537) + - OkHttp 3.9.1 [#10515](https://github.com/mapbox/mapbox-gl-native/pull/10515) + - Attribution anchor point fix [#10558](https://github.com/mapbox/mapbox-gl-native/pull/10558) + - Pre API 19 VerifyError [#10579](https://github.com/mapbox/mapbox-gl-native/pull/10579) + - Set larger Http request limit [#10567](https://github.com/mapbox/mapbox-gl-native/pull/10567) + - Remove jar generation from maven publish [#10625](https://github.com/mapbox/mapbox-gl-native/pull/10625) + - Enable Map Rendering when paused for multiple window support [#10509](https://github.com/mapbox/mapbox-gl-native/pull/10509) + - Activate FileSource when listing offline regions [#10531](https://github.com/mapbox/mapbox-gl-native/pull/10531) + - Harden MarkerView integration by checking for null bitmap [#10532](https://github.com/mapbox/mapbox-gl-native/pull/10532) + - Use concurrent lists for camera change listeners [#10542](https://github.com/mapbox/mapbox-gl-native/pull/10542) + - Handle destroy activity as part of theme switching [#10589](https://github.com/mapbox/mapbox-gl-native/pull/10589) + - add FileSource activation/deactivation to MapSnapshotter [#10556](https://github.com/mapbox/mapbox-gl-native/pull/10556) + ## 5.2.0 - November 17, 2017 - Monkey crashes [#10472](https://github.com/mapbox/mapbox-gl-native/pull/10472) -- cgit v1.2.1 From 05d2a539fdc2801c67b98c2e09f65989c32331d6 Mon Sep 17 00:00:00 2001 From: Fabian Guerra Soto Date: Wed, 6 Dec 2017 14:02:39 -0500 Subject: [ios] Update changelog and bump podspec to 3.7.1 (#10651) --- platform/ios/CHANGELOG.md | 8 ++++++-- platform/ios/Mapbox-iOS-SDK-nightly-dynamic.podspec | 2 +- platform/ios/Mapbox-iOS-SDK-symbols.podspec | 2 +- platform/ios/Mapbox-iOS-SDK.podspec | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/platform/ios/CHANGELOG.md b/platform/ios/CHANGELOG.md index 5a556ec9a5..c373eaf177 100644 --- a/platform/ios/CHANGELOG.md +++ b/platform/ios/CHANGELOG.md @@ -2,15 +2,19 @@ Mapbox welcomes participation and contributions from everyone. Please read [CONTRIBUTING.md](../../CONTRIBUTING.md) to get started. -## 3.7.1 +## 3.7.1 - December 6, 2017 ### Annotations -* Fixed an issue that could cause triggering `-[MGLMapViewDelegate mapView:didSelectAnnotation:]` when taping next to a `MGLAnnotationImage` annotation. ([#10538](https://github.com/mapbox/mapbox-gl-native/pull/10538)) +* Fixed an issue that could cause `-[MGLMapViewDelegate mapView:didSelectAnnotation:]` to be triggered when tapping next to an `MGLAnnotationImage` annotation. ([#10538](https://github.com/mapbox/mapbox-gl-native/pull/10538)) ### Packaging * Renamed this SDK from Mapbox iOS SDK to Mapbox Maps SDK for iOS. ([#10610](https://github.com/mapbox/mapbox-gl-native/pull/10610)) +### Other changes + +* Fixed an issue that caused `MGLMapView.minimumZoomLevel` to not be set. ([#10596](https://github.com/mapbox/mapbox-gl-native/pull/10596)) + ## 3.7.0 - Novemeber 13, 2017 ### Networking and storage diff --git a/platform/ios/Mapbox-iOS-SDK-nightly-dynamic.podspec b/platform/ios/Mapbox-iOS-SDK-nightly-dynamic.podspec index ac60bc3300..fb78d0112c 100644 --- a/platform/ios/Mapbox-iOS-SDK-nightly-dynamic.podspec +++ b/platform/ios/Mapbox-iOS-SDK-nightly-dynamic.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |m| - version = '3.7.0' + version = '3.7.1' m.name = 'Mapbox-iOS-SDK-nightly-dynamic' m.version = "#{version}-nightly" diff --git a/platform/ios/Mapbox-iOS-SDK-symbols.podspec b/platform/ios/Mapbox-iOS-SDK-symbols.podspec index 9151c9b97f..775b4dceb0 100644 --- a/platform/ios/Mapbox-iOS-SDK-symbols.podspec +++ b/platform/ios/Mapbox-iOS-SDK-symbols.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |m| - version = '3.7.0' + version = '3.7.1' m.name = 'Mapbox-iOS-SDK-symbols' m.version = "#{version}-symbols" diff --git a/platform/ios/Mapbox-iOS-SDK.podspec b/platform/ios/Mapbox-iOS-SDK.podspec index fe4f24ad50..6298939f48 100644 --- a/platform/ios/Mapbox-iOS-SDK.podspec +++ b/platform/ios/Mapbox-iOS-SDK.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |m| - version = '3.7.0' + version = '3.7.1' m.name = 'Mapbox-iOS-SDK' m.version = version -- cgit v1.2.1 From cf026d1932ca380a799dd4263e02dce67d22806b Mon Sep 17 00:00:00 2001 From: Tobrun Date: Fri, 8 Dec 2017 17:32:27 +0100 Subject: [android] - post animation callback invocation --- .../java/com/mapbox/mapboxsdk/maps/MapboxMap.java | 41 +++++++++------------- .../java/com/mapbox/mapboxsdk/maps/Transform.java | 23 +++++++++--- 2 files changed, 36 insertions(+), 28 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java index 6bf8342efb..c9bccab07d 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java @@ -710,19 +710,21 @@ public final class MapboxMap { * @param callback the callback to be invoked when an animation finishes or is canceled */ public final void moveCamera(final CameraUpdate update, final MapboxMap.CancelableCallback callback) { - new Handler().post(new Runnable() { - @Override - public void run() { - transform.moveCamera(MapboxMap.this, update, callback); - // MapChange.REGION_DID_CHANGE_ANIMATED is not called for `jumpTo` - // invalidate camera position to provide OnCameraChange event. - invalidateCameraPosition(); - - if (callback != null) { - callback.onFinish(); + transform.moveCamera(MapboxMap.this, update, callback); + // MapChange.REGION_DID_CHANGE_ANIMATED is not called for `jumpTo` + // invalidate camera position to provide OnCameraChange event. + invalidateCameraPosition(); + + if (callback != null) { + new Handler().post(new Runnable() { + @Override + public void run() { + if (callback != null) { + callback.onFinish(); + } } - } - }); + }); + } } /** @@ -846,12 +848,7 @@ public final class MapboxMap { if (durationMs <= 0) { throw new IllegalArgumentException("Null duration passed into easeCamera"); } - new Handler().post(new Runnable() { - @Override - public void run() { - transform.easeCamera(MapboxMap.this, update, durationMs, easingInterpolator, callback, isDismissable); - } - }); + transform.easeCamera(MapboxMap.this, update, durationMs, easingInterpolator, callback, isDismissable); } /** @@ -921,12 +918,8 @@ public final class MapboxMap { if (durationMs <= 0) { throw new IllegalArgumentException("Null duration passed into animageCamera"); } - new Handler().post(new Runnable() { - @Override - public void run() { - transform.animateCamera(MapboxMap.this, update, durationMs, callback); - } - }); + + transform.animateCamera(MapboxMap.this, update, durationMs, callback); } /** diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java index 16c45ebea2..0d3f0d5e5b 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java @@ -1,6 +1,7 @@ package com.mapbox.mapboxsdk.maps; import android.graphics.PointF; +import android.os.Handler; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.UiThread; @@ -82,8 +83,15 @@ final class Transform implements MapView.OnMapChangedListener { if (change == REGION_DID_CHANGE_ANIMATED) { updateCameraPosition(invalidateCameraPosition()); if (cameraCancelableCallback != null) { - cameraCancelableCallback.onFinish(); - cameraCancelableCallback = null; + new Handler().post(new Runnable() { + @Override + public void run() { + if (cameraCancelableCallback != null) { + cameraCancelableCallback.onFinish(); + cameraCancelableCallback = null; + } + } + }); } cameraChangeDispatcher.onCameraIdle(); mapView.removeOnMapChangedListener(this); @@ -175,8 +183,15 @@ final class Transform implements MapView.OnMapChangedListener { // notify animateCamera and easeCamera about cancelling if (cameraCancelableCallback != null) { cameraChangeDispatcher.onCameraIdle(); - cameraCancelableCallback.onCancel(); - cameraCancelableCallback = null; + new Handler().post(new Runnable() { + @Override + public void run() { + if (cameraCancelableCallback != null) { + cameraCancelableCallback.onCancel(); + cameraCancelableCallback = null; + } + } + }); } // cancel ongoing transitions -- cgit v1.2.1 From 7c06eda515ded2728594377610f75f309c22e913 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Tue, 12 Dec 2017 09:26:47 +0100 Subject: [android] - allow configurable http logging --- .../com/mapbox/mapboxsdk/http/HTTPRequest.java | 36 ++++++++++++++-------- .../com/mapbox/mapboxsdk/http/HttpRequestUtil.java | 19 ++++++++++++ .../activity/maplayout/DebugModeActivity.java | 5 ++- 3 files changed, 46 insertions(+), 14 deletions(-) create mode 100644 platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HttpRequestUtil.java diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java index 9c7fe4ee63..8463814794 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HTTPRequest.java @@ -33,6 +33,7 @@ import timber.log.Timber; class HTTPRequest implements Callback { private static OkHttpClient mClient = new OkHttpClient.Builder().dispatcher(getDispatcher()).build(); + private static boolean logEnabled = true; private String USER_AGENT_STRING = null; private static final int CONNECTION_ERROR = 0; @@ -118,12 +119,15 @@ class HTTPRequest implements Callback { @Override public void onResponse(Call call, Response response) throws IOException { - if (response.isSuccessful()) { - Timber.v("[HTTP] Request was successful (code = %s).", response.code()); - } else { - // We don't want to call this unsuccessful because a 304 isn't really an error - String message = !TextUtils.isEmpty(response.message()) ? response.message() : "No additional information"; - Timber.d("[HTTP] Request with response code = %s: %s", response.code(), message); + + if (logEnabled) { + if (response.isSuccessful()) { + Timber.v("[HTTP] Request was successful (code = %s).", response.code()); + } else { + // We don't want to call this unsuccessful because a 304 isn't really an error + String message = !TextUtils.isEmpty(response.message()) ? response.message() : "No additional information"; + Timber.d("[HTTP] Request with response code = %s: %s", response.code(), message); + } } byte[] body; @@ -167,13 +171,15 @@ class HTTPRequest implements Callback { String errorMessage = e.getMessage() != null ? e.getMessage() : "Error processing the request"; - if (type == TEMPORARY_ERROR) { - Timber.d("Request failed due to a temporary error: %s", errorMessage); - } else if (type == CONNECTION_ERROR) { - Timber.i("Request failed due to a connection error: %s", errorMessage); - } else { - // PERMANENT_ERROR - Timber.w("Request failed due to a permanent error: %s", errorMessage); + if (logEnabled) { + if (type == TEMPORARY_ERROR) { + Timber.d("Request failed due to a temporary error: %s", errorMessage); + } else if (type == CONNECTION_ERROR) { + Timber.i("Request failed due to a connection error: %s", errorMessage); + } else { + // PERMANENT_ERROR + Timber.w("Request failed due to a permanent error: %s", errorMessage); + } } mLock.lock(); @@ -207,4 +213,8 @@ class HTTPRequest implements Callback { return ""; } } + + static void enableLog(boolean enabled) { + logEnabled = enabled; + } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HttpRequestUtil.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HttpRequestUtil.java new file mode 100644 index 0000000000..af39faeded --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/http/HttpRequestUtil.java @@ -0,0 +1,19 @@ +package com.mapbox.mapboxsdk.http; + +/** + * Utility class for setting HttpRequest configurations + */ +public class HttpRequestUtil { + + /** + * Set the log state of HttpRequest. + *

+ * This configuration will outlast the lifecycle of the Map. + *

+ * + * @param enabled True will enable logging, false will disable + */ + public static void setLogEnabled(boolean enabled) { + HTTPRequest.enableLog(enabled); + } +} \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/DebugModeActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/DebugModeActivity.java index 6134b4cb7a..9220a30c36 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/DebugModeActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/DebugModeActivity.java @@ -18,6 +18,7 @@ import android.widget.TextView; import com.mapbox.mapboxsdk.camera.CameraPosition; import com.mapbox.mapboxsdk.constants.Style; +import com.mapbox.mapboxsdk.http.HttpRequestUtil; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; @@ -56,6 +57,7 @@ public class DebugModeActivity extends AppCompatActivity implements OnMapReadyCa @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + HttpRequestUtil.setLogEnabled(false); setContentView(R.layout.activity_debug_mode); setupToolbar(); setupMapView(savedInstanceState); @@ -113,7 +115,7 @@ public class DebugModeActivity extends AppCompatActivity implements OnMapReadyCa mapboxMap.setOnFpsChangedListener(new MapboxMap.OnFpsChangedListener() { @Override public void onFpsChanged(double fps) { - fpsView.setText(String.format(Locale.US,"FPS: %4.2f", fps)); + fpsView.setText(String.format(Locale.US, "FPS: %4.2f", fps)); } }); } @@ -229,6 +231,7 @@ public class DebugModeActivity extends AppCompatActivity implements OnMapReadyCa protected void onDestroy() { super.onDestroy(); mapView.onDestroy(); + HttpRequestUtil.setLogEnabled(true); } @Override -- cgit v1.2.1 From fa704c85d80f7424a580e6c1342eb23dd0ec97f7 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Wed, 13 Dec 2017 09:30:50 +0100 Subject: [android] - scale factor value of 1 should zoom out --- .../src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java index 9d7d980ae3..489199e422 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java @@ -491,7 +491,7 @@ final class MapGestureDetector { return super.onScale(detector); } - wasZoomingIn = (Math.log(detector.getScaleFactor()) / Math.log(Math.PI / 2)) >= 0; + wasZoomingIn = (Math.log(detector.getScaleFactor()) / Math.log(Math.PI / 2)) > 0; if (tiltGestureOccurred) { return false; } -- cgit v1.2.1 From 7012c1b683ec5cc56da48dd4020d79834810c225 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Wed, 13 Dec 2017 16:01:19 +0100 Subject: [android] - update documentation on update metadata --- .../src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java index 1b9a156352..bc9438ee93 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineRegion.java @@ -400,9 +400,6 @@ public class OfflineRegion { * When the operation is complete or encounters an error, the given callback will be * executed on the main thread. *

- *

- * After you call this method, you may not call any additional methods on this object. - *

* * @param bytes the metadata in bytes * @param callback the callback to be invoked -- cgit v1.2.1 From 4525ff714adb483a213638e251c38156bd7fa04e Mon Sep 17 00:00:00 2001 From: Tobrun Date: Thu, 14 Dec 2017 12:15:36 +0100 Subject: Post camera listener invocations (#10690) * [android] - post camera listener invocations * remove jvm unit test --- .../mapboxsdk/maps/CameraChangeDispatcher.java | 127 +++++++++++++-------- .../mapboxsdk/maps/CameraChangeDispatcherTest.java | 87 -------------- 2 files changed, 81 insertions(+), 133 deletions(-) delete mode 100644 platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcherTest.java diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcher.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcher.java index f046744c31..605c8912e2 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcher.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcher.java @@ -1,5 +1,6 @@ package com.mapbox.mapboxsdk.maps; +import android.os.Handler; import android.support.annotation.NonNull; import java.util.concurrent.CopyOnWriteArrayList; @@ -9,10 +10,16 @@ import static com.mapbox.mapboxsdk.maps.MapboxMap.OnCameraMoveCanceledListener; import static com.mapbox.mapboxsdk.maps.MapboxMap.OnCameraMoveListener; import static com.mapbox.mapboxsdk.maps.MapboxMap.OnCameraMoveStartedListener; +/** + * Class responsible for dispatching camera change events to registered listeners. + */ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, MapboxMap.OnCameraMoveListener, MapboxMap.OnCameraMoveCanceledListener, OnCameraIdleListener { + private final Handler handler = new Handler(); + private boolean idle = true; + private int moveStartedReason; private final CopyOnWriteArrayList onCameraMoveStarted = new CopyOnWriteArrayList<>(); private final CopyOnWriteArrayList onCameraMoveCanceled = new CopyOnWriteArrayList<>(); @@ -24,6 +31,74 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M private OnCameraMoveListener onCameraMoveListener; private OnCameraIdleListener onCameraIdleListener; + private final Runnable onCameraMoveStartedRunnable = new Runnable() { + @Override + public void run() { + // deprecated API + if (onCameraMoveStartedListener != null) { + onCameraMoveStartedListener.onCameraMoveStarted(moveStartedReason); + } + + // new API + if (!onCameraMoveStarted.isEmpty()) { + for (OnCameraMoveStartedListener cameraMoveStartedListener : onCameraMoveStarted) { + cameraMoveStartedListener.onCameraMoveStarted(moveStartedReason); + } + } + } + }; + + private final Runnable onCameraMoveRunnable = new Runnable() { + @Override + public void run() { + // deprecated API + if (onCameraMoveListener != null && !idle) { + onCameraMoveListener.onCameraMove(); + } + + // new API + if (!onCameraMove.isEmpty() && !idle) { + for (OnCameraMoveListener cameraMoveListener : onCameraMove) { + cameraMoveListener.onCameraMove(); + } + } + } + }; + + private final Runnable onCameraMoveCancelRunnable = new Runnable() { + @Override + public void run() { + // deprecated API + if (onCameraMoveCanceledListener != null && !idle) { + onCameraMoveCanceledListener.onCameraMoveCanceled(); + } + + // new API + if (!onCameraMoveCanceled.isEmpty() && !idle) { + for (OnCameraMoveCanceledListener cameraMoveCanceledListener : onCameraMoveCanceled) { + cameraMoveCanceledListener.onCameraMoveCanceled(); + } + } + } + }; + + private final Runnable onCameraIdleRunnable = new Runnable() { + @Override + public void run() { + // deprecated API + if (onCameraIdleListener != null) { + onCameraIdleListener.onCameraIdle(); + } + + // new API + if (!onCameraIdle.isEmpty()) { + for (OnCameraIdleListener cameraIdleListener : onCameraIdle) { + cameraIdleListener.onCameraIdle(); + } + } + } + }; + @Deprecated void setOnCameraMoveStartedListener(OnCameraMoveStartedListener onCameraMoveStartedListener) { this.onCameraMoveStartedListener = onCameraMoveStartedListener; @@ -45,70 +120,30 @@ class CameraChangeDispatcher implements MapboxMap.OnCameraMoveStartedListener, M } @Override - public void onCameraMoveStarted(int reason) { + public void onCameraMoveStarted(final int reason) { if (!idle) { return; } idle = false; - - // deprecated API - if (onCameraMoveStartedListener != null) { - onCameraMoveStartedListener.onCameraMoveStarted(reason); - } - - // new API - if (!onCameraMoveStarted.isEmpty()) { - for (OnCameraMoveStartedListener cameraMoveStartedListener : onCameraMoveStarted) { - cameraMoveStartedListener.onCameraMoveStarted(reason); - } - } + moveStartedReason = reason; + handler.post(onCameraMoveStartedRunnable); } @Override public void onCameraMove() { - // deprecated API - if (onCameraMoveListener != null && !idle) { - onCameraMoveListener.onCameraMove(); - } - - // new API - if (!onCameraMove.isEmpty() && !idle) { - for (OnCameraMoveListener cameraMoveListener : onCameraMove) { - cameraMoveListener.onCameraMove(); - } - } + handler.post(onCameraMoveRunnable); } @Override public void onCameraMoveCanceled() { - // deprecated API - if (onCameraMoveCanceledListener != null && !idle) { - onCameraMoveCanceledListener.onCameraMoveCanceled(); - } - - // new API - if (!onCameraMoveCanceled.isEmpty() && !idle) { - for (OnCameraMoveCanceledListener cameraMoveCanceledListener : onCameraMoveCanceled) { - cameraMoveCanceledListener.onCameraMoveCanceled(); - } - } + handler.post(onCameraMoveCancelRunnable); } @Override public void onCameraIdle() { if (!idle) { idle = true; - // deprecated API - if (onCameraIdleListener != null) { - onCameraIdleListener.onCameraIdle(); - } - - // new API - if (!onCameraIdle.isEmpty()) { - for (OnCameraIdleListener cameraIdleListener : onCameraIdle) { - cameraIdleListener.onCameraIdle(); - } - } + handler.post(onCameraIdleRunnable); } } diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcherTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcherTest.java deleted file mode 100644 index 090d274fe7..0000000000 --- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/CameraChangeDispatcherTest.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.mapbox.mapboxsdk.maps; - -import org.junit.Test; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; - -public class CameraChangeDispatcherTest { - - @Test - public void testSetCameraIdleListener() { - CameraChangeDispatcher dispatcher = new CameraChangeDispatcher(); - MapboxMap.OnCameraIdleListener listener = mock(MapboxMap.OnCameraIdleListener.class); - dispatcher.setOnCameraIdleListener(listener); - dispatcher.onCameraMoveStarted(MapboxMap.OnCameraMoveStartedListener.REASON_API_GESTURE); - dispatcher.onCameraIdle(); - verify(listener).onCameraIdle(); - } - - @Test - public void testSetCameraMoveStartedListener() { - CameraChangeDispatcher dispatcher = new CameraChangeDispatcher(); - MapboxMap.OnCameraMoveStartedListener listener = mock(MapboxMap.OnCameraMoveStartedListener.class); - dispatcher.setOnCameraMoveStartedListener(listener); - dispatcher.onCameraMoveStarted(MapboxMap.OnCameraMoveStartedListener.REASON_API_GESTURE); - verify(listener).onCameraMoveStarted(MapboxMap.OnCameraMoveStartedListener.REASON_API_GESTURE); - } - - @Test - public void testSetCameraMoveCancelListener() { - CameraChangeDispatcher dispatcher = new CameraChangeDispatcher(); - MapboxMap.OnCameraMoveCanceledListener listener = mock(MapboxMap.OnCameraMoveCanceledListener.class); - dispatcher.setOnCameraMoveCanceledListener(listener); - dispatcher.onCameraMoveStarted(MapboxMap.OnCameraMoveStartedListener.REASON_API_GESTURE); - dispatcher.onCameraMoveCanceled(); - verify(listener).onCameraMoveCanceled(); - } - - @Test - public void testSetCameraMoveListener() { - CameraChangeDispatcher dispatcher = new CameraChangeDispatcher(); - MapboxMap.OnCameraMoveListener listener = mock(MapboxMap.OnCameraMoveListener.class); - dispatcher.setOnCameraMoveListener(listener); - dispatcher.onCameraMoveStarted(MapboxMap.OnCameraMoveStartedListener.REASON_API_GESTURE); - dispatcher.onCameraMove(); - verify(listener).onCameraMove(); - } - - @Test - public void testAddCameraIdleListener() { - CameraChangeDispatcher dispatcher = new CameraChangeDispatcher(); - MapboxMap.OnCameraIdleListener listener = mock(MapboxMap.OnCameraIdleListener.class); - dispatcher.addOnCameraIdleListener(listener); - dispatcher.onCameraMoveStarted(MapboxMap.OnCameraMoveStartedListener.REASON_API_GESTURE); - dispatcher.onCameraIdle(); - verify(listener).onCameraIdle(); - } - - @Test - public void testAddCameraMoveStartedListener() { - CameraChangeDispatcher dispatcher = new CameraChangeDispatcher(); - MapboxMap.OnCameraMoveStartedListener listener = mock(MapboxMap.OnCameraMoveStartedListener.class); - dispatcher.addOnCameraMoveStartedListener(listener); - dispatcher.onCameraMoveStarted(MapboxMap.OnCameraMoveStartedListener.REASON_API_GESTURE); - verify(listener).onCameraMoveStarted(MapboxMap.OnCameraMoveStartedListener.REASON_API_GESTURE); - } - - @Test - public void testAddCameraMoveCancelListener() { - CameraChangeDispatcher dispatcher = new CameraChangeDispatcher(); - MapboxMap.OnCameraMoveCanceledListener listener = mock(MapboxMap.OnCameraMoveCanceledListener.class); - dispatcher.addOnCameraMoveCancelListener(listener); - dispatcher.onCameraMoveStarted(MapboxMap.OnCameraMoveStartedListener.REASON_API_GESTURE); - dispatcher.onCameraMoveCanceled(); - verify(listener).onCameraMoveCanceled(); - } - - @Test - public void testAddCameraMoveListener() { - CameraChangeDispatcher dispatcher = new CameraChangeDispatcher(); - MapboxMap.OnCameraMoveListener listener = mock(MapboxMap.OnCameraMoveListener.class); - dispatcher.addOnCameraMoveListener(listener); - dispatcher.onCameraMoveStarted(MapboxMap.OnCameraMoveStartedListener.REASON_API_GESTURE); - dispatcher.onCameraMove(); - verify(listener).onCameraMove(); - } -} -- cgit v1.2.1 From d650b91c00956b683519aa76b3f5dfd327c17348 Mon Sep 17 00:00:00 2001 From: Fabian Guerra Date: Thu, 7 Dec 2017 20:20:17 -0500 Subject: [ios] Fix the content insets for the scale and compass view. --- platform/ios/src/MGLMapView.mm | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index 60c2e0dd09..6215d4b7c9 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -885,8 +885,10 @@ public: // compass view [self removeConstraints:self.compassViewConstraints]; [self.compassViewConstraints removeAllObjects]; - [self.compassViewConstraints addObject:[self.compassView.topAnchor constraintEqualToAnchor:safeAreaLayoutGuide.topAnchor - constant:5.0 + self.contentInset.top]]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpartial-availability" + [self.compassViewConstraints addObject:[self.compassView.topAnchor constraintEqualToSystemSpacingBelowAnchor:safeAreaLayoutGuide.topAnchor multiplier:1]]; +#pragma clang diagnostic pop [self.compassViewConstraints addObject:[safeAreaLayoutGuide.rightAnchor constraintEqualToAnchor:self.compassView.rightAnchor constant:8.0 + self.contentInset.right]]; [self addConstraints:self.compassViewConstraints]; @@ -894,8 +896,10 @@ public: // scale bar view [self removeConstraints:self.scaleBarConstraints]; [self.scaleBarConstraints removeAllObjects]; - [self.scaleBarConstraints addObject:[self.scaleBar.topAnchor constraintEqualToAnchor:safeAreaLayoutGuide.topAnchor - constant:5.0 + self.contentInset.top]]; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wpartial-availability" + [self.scaleBarConstraints addObject:[self.scaleBar.topAnchor constraintEqualToSystemSpacingBelowAnchor:safeAreaLayoutGuide.topAnchor multiplier:1]]; +#pragma clang diagnostic pop [self.scaleBarConstraints addObject:[self.scaleBar.leftAnchor constraintEqualToAnchor:safeAreaLayoutGuide.leftAnchor constant:8.0 + self.contentInset.left]]; [self addConstraints:self.scaleBarConstraints]; -- cgit v1.2.1 From 177afa9a0d0e97257c86d9f0e8cb91e34e8afe2d Mon Sep 17 00:00:00 2001 From: Fabian Guerra Date: Wed, 29 Nov 2017 12:39:05 -0500 Subject: [ios] Fix an Interface Builder crash for IBInspectable properties. --- platform/ios/src/MGLMapView+IBAdditions.h | 2 ++ platform/ios/src/MGLMapView.h | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/platform/ios/src/MGLMapView+IBAdditions.h b/platform/ios/src/MGLMapView+IBAdditions.h index d02c938c57..6d5351df2b 100644 --- a/platform/ios/src/MGLMapView+IBAdditions.h +++ b/platform/ios/src/MGLMapView+IBAdditions.h @@ -31,6 +31,8 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic) IBInspectable double latitude; @property (nonatomic) IBInspectable double longitude; @property (nonatomic) IBInspectable double zoomLevel; +@property (nonatomic) IBInspectable double minimumZoomLevel; +@property (nonatomic) IBInspectable double maximumZoomLevel; // Renamed properties. Interface Builder derives the display name of each // inspectable from the runtime name, but runtime names don’t always make sense diff --git a/platform/ios/src/MGLMapView.h b/platform/ios/src/MGLMapView.h index e2c070a54f..ef86266457 100644 --- a/platform/ios/src/MGLMapView.h +++ b/platform/ios/src/MGLMapView.h @@ -610,7 +610,7 @@ MGL_EXPORT IB_DESIGNABLE * * The default minimumZoomLevel is 0. */ -@property (nonatomic) IBInspectable double minimumZoomLevel; +@property (nonatomic) double minimumZoomLevel; /** * The maximum zoom level the map can be shown at. @@ -621,7 +621,7 @@ MGL_EXPORT IB_DESIGNABLE * The default maximumZoomLevel is 22. The upper bound for this property * is 25.5. */ -@property (nonatomic) IBInspectable double maximumZoomLevel; +@property (nonatomic) double maximumZoomLevel; /** The heading of the map, measured in degrees clockwise from true north. -- cgit v1.2.1 From 74b06274326de3c4d9cb34cd70497bd8d85a1e58 Mon Sep 17 00:00:00 2001 From: Fredrik Karlsson Date: Fri, 17 Nov 2017 15:17:04 +0100 Subject: [ios] update constraints when updating content inset --- platform/ios/src/MGLMapView.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index 6215d4b7c9..3b6ea82ed2 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -1053,7 +1053,7 @@ public: } // Compass, logo and attribution button constraints needs to be updated. - [self setNeedsLayout]; + [self setNeedsUpdateConstraints]; } /// Returns the frame of inset content within the map view. -- cgit v1.2.1 From c71718c98e7be4c69ce5a9a249a2f15697c3ca3d Mon Sep 17 00:00:00 2001 From: Tobrun Date: Mon, 18 Dec 2017 13:34:25 +0100 Subject: [android] - activate filesource when creating an offline region (#10718) --- .../src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java index 6a2bf6b07b..f2faabd63b 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/offline/OfflineManager.java @@ -204,6 +204,7 @@ public class OfflineManager { } ConnectivityReceiver.instance(context).activate(); + FileSource.getInstance(context).activate(); createOfflineRegion(fileSource, definition, metadata, new CreateOfflineRegionCallback() { @Override @@ -212,6 +213,7 @@ public class OfflineManager { @Override public void run() { ConnectivityReceiver.instance(context).deactivate(); + FileSource.getInstance(context).deactivate(); callback.onCreate(offlineRegion); } }); @@ -223,6 +225,7 @@ public class OfflineManager { @Override public void run() { ConnectivityReceiver.instance(context).deactivate(); + FileSource.getInstance(context).deactivate(); callback.onError(error); } }); -- cgit v1.2.1 From c618d513b1838e370eb1410001f80768c7b7a347 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Mon, 18 Dec 2017 13:34:54 +0100 Subject: [android] - update instrumented make target, move code style validation before building C++ code, replace code style checks with the wrapper code style check. (#10724) --- Makefile | 15 +++++---------- circle.yml | 14 +++----------- 2 files changed, 8 insertions(+), 21 deletions(-) diff --git a/Makefile b/Makefile index d6802cf962..fbb4cd74f5 100644 --- a/Makefile +++ b/Makefile @@ -599,17 +599,17 @@ run-android-unit-test: platform/android/configuration.gradle run-android-unit-test-%: platform/android/configuration.gradle cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=none :MapboxGLAndroidSDK:testDebugUnitTest --tests "$*" -# Run Instrumentation tests on AWS device farm, requires additional authentication through gradle.properties -.PHONY: run-android-ui-test-aws -run-android-ui-test-aws: platform/android/configuration.gradle - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=all devicefarmUpload - # Builds a release package of the Android SDK .PHONY: apackage apackage: platform/android/configuration.gradle make android-lib-arm-v5 && make android-lib-arm-v7 && make android-lib-arm-v8 && make android-lib-x86 && make android-lib-x86-64 && make android-lib-mips cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=all assemble$(BUILDTYPE) +# Build test app instrumentation tests apk and test app apk for all abi's +.PHONY: android-ui-test +android-ui-test: platform/android/configuration.gradle + cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis=all :MapboxGLAndroidSDKTestApp:assembleDebug :MapboxGLAndroidSDKTestApp:assembleAndroidTest + # Uploads the compiled Android SDK to Maven .PHONY: run-android-upload-archives run-android-upload-archives: platform/android/configuration.gradle @@ -625,11 +625,6 @@ run-android-upload-archives-local: platform/android/configuration.gradle android-gfxinfo: adb shell dumpsys gfxinfo com.mapbox.mapboxsdk.testapp reset -# Runs Android UI tests on all connected devices using Spoon -.PHONY: run-android-ui-test-spoon -run-android-ui-test-spoon: platform/android/configuration.gradle - cd platform/android && $(MBGL_ANDROID_GRADLE) -Pmapbox.abis="$(MBGL_ANDROID_ACTIVE_ARCHS)" spoon - # Generates Activity sanity tests .PHONY: test-code-android test-code-android: diff --git a/circle.yml b/circle.yml index 4c562bd936..d76ab4a8ab 100644 --- a/circle.yml +++ b/circle.yml @@ -247,6 +247,9 @@ jobs: - *generate-cache-key - *restore-cache - *reset-ccache-stats + - run: + name: Check code style + command: make android-check - run: name: Build libmapbox-gl.so for arm-v7 command: make android-lib-arm-v7 @@ -259,17 +262,6 @@ jobs: - run: name: Generate Espresso sanity tests command: make test-code-android - - run: - name: Check Java code style - command: make android-checkstyle - - run: - name: Check Android modules for potential bugs (Lint SDK) - command: | - make android-lint-sdk - - run: - name: Check Android modules for potential bugs (Lint Test App) - command: | - make android-lint-test-app - run: name: Build Test APK command: | -- cgit v1.2.1 From 9c1dfe46cf39147ebe25a98eb0603828d4e8c61d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguye=CC=82=CC=83n?= Date: Mon, 18 Dec 2017 09:43:26 -0800 Subject: [ios, macos] Cleaned up base localization files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Localizable strings in Darwin classes need to specify “Foundation” as the table so that NSBundle consults the right .strings files. Reran make genstrings to add some missing strings to the base localizations and undo some manual edits to the base localizations that contained errors. --- .../darwin/resources/Base.lproj/Foundation.strings | 6 ++++++ platform/darwin/src/MGLAttributionInfo.mm | 4 ++-- platform/ios/resources/Base.lproj/Localizable.strings | Bin 7378 -> 3962 bytes platform/macos/sdk/Base.lproj/Localizable.strings | Bin 298 -> 840 bytes 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/platform/darwin/resources/Base.lproj/Foundation.strings b/platform/darwin/resources/Base.lproj/Foundation.strings index 9d63dfa697..ba7db3fc63 100644 --- a/platform/darwin/resources/Base.lproj/Foundation.strings +++ b/platform/darwin/resources/Base.lproj/Foundation.strings @@ -289,3 +289,9 @@ /* West longitude format, short: {longitude} */ "COORD_W_SHORT" = "%@W"; +/* OpenStreetMap full name attribution */ +"OSM_FULL_NAME" = "OpenStreetMap"; + +/* OpenStreetMap short name attribution */ +"OSM_SHORT_NAME" = "OSM"; + diff --git a/platform/darwin/src/MGLAttributionInfo.mm b/platform/darwin/src/MGLAttributionInfo.mm index 29dd5229a7..52a83fd18e 100644 --- a/platform/darwin/src/MGLAttributionInfo.mm +++ b/platform/darwin/src/MGLAttributionInfo.mm @@ -170,8 +170,8 @@ - (NSAttributedString *)titleWithStyle:(MGLAttributionInfoStyle)style { - NSString *openStreetMap = NSLocalizedStringWithDefaultValue(@"OSM_FULL_NAME", nil, nil, @"OpenStreetMap", @"OpenStreetMap full name attribution"); - NSString *OSM = NSLocalizedStringWithDefaultValue(@"OSM_SHORT_NAME", nil, nil, @"OSM", @"OpenStreetMap short name attribution"); + NSString *openStreetMap = NSLocalizedStringWithDefaultValue(@"OSM_FULL_NAME", @"Foundation", nil, @"OpenStreetMap", @"OpenStreetMap full name attribution"); + NSString *OSM = NSLocalizedStringWithDefaultValue(@"OSM_SHORT_NAME", @"Foundation", nil, @"OSM", @"OpenStreetMap short name attribution"); NSMutableAttributedString *title = [[NSMutableAttributedString alloc] initWithAttributedString:self.title]; [title removeAttribute:NSUnderlineStyleAttributeName range:NSMakeRange(0, [title.string length])]; diff --git a/platform/ios/resources/Base.lproj/Localizable.strings b/platform/ios/resources/Base.lproj/Localizable.strings index 245b122fb6..571a6bca6b 100644 Binary files a/platform/ios/resources/Base.lproj/Localizable.strings and b/platform/ios/resources/Base.lproj/Localizable.strings differ diff --git a/platform/macos/sdk/Base.lproj/Localizable.strings b/platform/macos/sdk/Base.lproj/Localizable.strings index cb085add6a..68360320eb 100644 Binary files a/platform/macos/sdk/Base.lproj/Localizable.strings and b/platform/macos/sdk/Base.lproj/Localizable.strings differ -- cgit v1.2.1 From 2e3e88f0276bb6b6ade009549d8927f4af96bdd9 Mon Sep 17 00:00:00 2001 From: Chris Loer Date: Fri, 7 Jul 2017 13:31:53 -0700 Subject: [core] C++ port of TinySDF --- cmake/core-files.cmake | 2 + src/mbgl/util/tiny_sdf.cpp | 105 +++++++++++++++++++++++++++++++++++++++++++++ src/mbgl/util/tiny_sdf.hpp | 20 +++++++++ 3 files changed, 127 insertions(+) create mode 100644 src/mbgl/util/tiny_sdf.cpp create mode 100644 src/mbgl/util/tiny_sdf.hpp diff --git a/cmake/core-files.cmake b/cmake/core-files.cmake index 54b4079cff..00d8d8af10 100644 --- a/cmake/core-files.cmake +++ b/cmake/core-files.cmake @@ -613,6 +613,8 @@ set(MBGL_CORE_FILES src/mbgl/util/tile_coordinate.hpp src/mbgl/util/tile_cover.cpp src/mbgl/util/tile_cover.hpp + src/mbgl/util/tiny_sdf.cpp + src/mbgl/util/tiny_sdf.hpp src/mbgl/util/token.hpp src/mbgl/util/url.cpp src/mbgl/util/url.hpp diff --git a/src/mbgl/util/tiny_sdf.cpp b/src/mbgl/util/tiny_sdf.cpp new file mode 100644 index 0000000000..60839357d5 --- /dev/null +++ b/src/mbgl/util/tiny_sdf.cpp @@ -0,0 +1,105 @@ +#include + +#include + +#include + +namespace mbgl { +namespace util { + +namespace tinysdf { + +static const double INF = 1e20; + +// 1D squared distance transform +void edt1d(std::vector& f, + std::vector& d, + std::vector& v, + std::vector& z, + uint32_t n) { + v[0] = 0; + z[0] = -INF; + z[1] = +INF; + + for (uint32_t q = 1, k = 0; q < n; q++) { + double s = ((f[q] + q * q) - (f[v[k]] + v[k] * v[k])) / (2 * q - 2 * v[k]); + while (s <= z[k]) { + k--; + s = ((f[q] + q * q) - (f[v[k]] + v[k] * v[k])) / (2 * q - 2 * v[k]); + } + k++; + v[k] = q; + z[k] = s; + z[k + 1] = +INF; + } + + for (uint32_t q = 0, k = 0; q < n; q++) { + while (z[k + 1] < q) k++; + d[q] = (q - v[k]) * (q - v[k]) + f[v[k]]; + } +} + + +// 2D Euclidean distance transform by Felzenszwalb & Huttenlocher https://cs.brown.edu/~pff/dt/ +void edt(std::vector& data, + uint32_t width, + uint32_t height, + std::vector& f, + std::vector& d, + std::vector& v, + std::vector& z) { + for (uint32_t x = 0; x < width; x++) { + for (uint32_t y = 0; y < height; y++) { + f[y] = data[y * width + x]; + } + edt1d(f, d, v, z, height); + for (uint32_t y = 0; y < height; y++) { + data[y * width + x] = d[y]; + } + } + for (uint32_t y = 0; y < height; y++) { + for (uint32_t x = 0; x < width; x++) { + f[x] = data[y * width + x]; + } + edt1d(f, d, v, z, width); + for (uint32_t x = 0; x < width; x++) { + data[y * width + x] = std::sqrt(d[x]); + } + } +} + +} // namespace tinysdf + +AlphaImage transformRasterToSDF(const AlphaImage& rasterInput, double radius, double cutoff) { + uint32_t size = rasterInput.size.width * rasterInput.size.height; + uint32_t maxDimension = std::max(rasterInput.size.width, rasterInput.size.height); + + AlphaImage sdf(rasterInput.size); + + // temporary arrays for the distance transform + std::vector gridOuter(size); + std::vector gridInner(size); + std::vector f(maxDimension); + std::vector d(maxDimension); + std::vector z(maxDimension + 1); + std::vector v(maxDimension); + + for (uint32_t i = 0; i < size; i++) { + double a = double(rasterInput.data[i]) / 255; // alpha value + gridOuter[i] = a == 1.0 ? 0.0 : a == 0.0 ? tinysdf::INF : std::pow(std::max(0.0, 0.5 - a), 2.0); + gridInner[i] = a == 1.0 ? tinysdf::INF : a == 0.0 ? 0.0 : std::pow(std::max(0.0, a - 0.5), 2.0); + } + + tinysdf::edt(gridOuter, rasterInput.size.width, rasterInput.size.height, f, d, v, z); + tinysdf::edt(gridInner, rasterInput.size.width, rasterInput.size.height, f, d, v, z); + + for (uint32_t i = 0; i < size; i++) { + double distance = gridOuter[i] - gridInner[i]; + sdf.data[i] = std::max(0l, std::min(255l, std::lround(255.0 - 255.0 * (distance / radius + cutoff)))); + } + + return sdf; +} + +} // namespace util +} // namespace mbgl diff --git a/src/mbgl/util/tiny_sdf.hpp b/src/mbgl/util/tiny_sdf.hpp new file mode 100644 index 0000000000..33c9280cbd --- /dev/null +++ b/src/mbgl/util/tiny_sdf.hpp @@ -0,0 +1,20 @@ +#pragma once + +#include + +namespace mbgl { +namespace util { + +/* + C++ port of https://github.com/mapbox/tiny-sdf, which is in turn based on the + Felzenszwalb/Huttenlocher distance transform paper (https://cs.brown.edu/~pff/papers/dt-final.pdf). + Note there exists an alternative C++ implementation from the paper’s authors at + https://cs.brown.edu/~pff/dt/, which this implementation is not based on. + + Takes an alpha channel raster input and transforms it into an alpha channel + Signed Distance Field (SDF) output of the same dimensions. +*/ +AlphaImage transformRasterToSDF(const AlphaImage& rasterInput, double radius, double cutoff); + +} // namespace util +} // namespace mbgl -- cgit v1.2.1 From a53818a10b821218b86478e048a3884db93f7c00 Mon Sep 17 00:00:00 2001 From: Chris Loer Date: Fri, 15 Dec 2017 09:08:20 -0800 Subject: [core] Enable local glyph generation using TinySDF. - Platform-specific LocalGlyphRasterizer is responsible for deciding which glyphs to rasterize locally and for implementing the rasterization. - Default platform implementation doesn't locally generate any glyphs -> no behavior change - Unit test uses StubLocalGlyphRasterizer, which returns a single fixed bitmap for all CJK glyphs - Rename glyph_loader.test to glyph_manager.test --- cmake/core-files.cmake | 1 + platform/android/config.cmake | 1 + platform/default/local_glyph_rasterizer.cpp | 13 +++++++++ platform/ios/config.cmake | 1 + platform/linux/config.cmake | 1 + platform/macos/config.cmake | 1 + platform/qt/config.cmake | 2 ++ src/mbgl/text/glyph_manager.cpp | 21 ++++++++++++--- src/mbgl/text/glyph_manager.hpp | 9 +++++-- src/mbgl/text/local_glyph_rasterizer.hpp | 42 +++++++++++++++++++++++++++++ 10 files changed, 86 insertions(+), 6 deletions(-) create mode 100644 platform/default/local_glyph_rasterizer.cpp create mode 100644 src/mbgl/text/local_glyph_rasterizer.hpp diff --git a/cmake/core-files.cmake b/cmake/core-files.cmake index 00d8d8af10..33b3072f3a 100644 --- a/cmake/core-files.cmake +++ b/cmake/core-files.cmake @@ -481,6 +481,7 @@ set(MBGL_CORE_FILES src/mbgl/text/glyph_pbf.cpp src/mbgl/text/glyph_pbf.hpp src/mbgl/text/glyph_range.hpp + src/mbgl/text/local_glyph_rasterizer.hpp src/mbgl/text/placement_config.hpp src/mbgl/text/quads.cpp src/mbgl/text/quads.hpp diff --git a/platform/android/config.cmake b/platform/android/config.cmake index 47f894f7b9..c7609f1644 100644 --- a/platform/android/config.cmake +++ b/platform/android/config.cmake @@ -36,6 +36,7 @@ macro(mbgl_platform_core) PRIVATE platform/android/src/thread.cpp PRIVATE platform/default/string_stdlib.cpp PRIVATE platform/default/bidi.cpp + PRIVATE platform/default/local_glyph_rasterizer.cpp PRIVATE platform/default/thread_local.cpp PRIVATE platform/default/utf.cpp diff --git a/platform/default/local_glyph_rasterizer.cpp b/platform/default/local_glyph_rasterizer.cpp new file mode 100644 index 0000000000..7ace6cbfb1 --- /dev/null +++ b/platform/default/local_glyph_rasterizer.cpp @@ -0,0 +1,13 @@ +#include + +namespace mbgl { + +bool LocalGlyphRasterizer::canRasterizeGlyph(const FontStack&, GlyphID) { + return false; +} + +Glyph LocalGlyphRasterizer::rasterizeGlyph(const FontStack&, GlyphID) { + return Glyph(); +} + +} // namespace mbgl diff --git a/platform/ios/config.cmake b/platform/ios/config.cmake index c3db194988..3b99211299 100644 --- a/platform/ios/config.cmake +++ b/platform/ios/config.cmake @@ -32,6 +32,7 @@ macro(mbgl_platform_core) PRIVATE platform/darwin/src/nsthread.mm PRIVATE platform/darwin/src/string_nsstring.mm PRIVATE platform/default/bidi.cpp + PRIVATE platform/default/local_glyph_rasterizer.cpp PRIVATE platform/default/thread_local.cpp PRIVATE platform/default/utf.cpp diff --git a/platform/linux/config.cmake b/platform/linux/config.cmake index 47c4c68806..fddcf90278 100644 --- a/platform/linux/config.cmake +++ b/platform/linux/config.cmake @@ -51,6 +51,7 @@ macro(mbgl_platform_core) PRIVATE platform/default/string_stdlib.cpp PRIVATE platform/default/thread.cpp PRIVATE platform/default/bidi.cpp + PRIVATE platform/default/local_glyph_rasterizer.cpp PRIVATE platform/default/thread_local.cpp PRIVATE platform/default/utf.cpp diff --git a/platform/macos/config.cmake b/platform/macos/config.cmake index aca99f9b40..3e7f548bab 100644 --- a/platform/macos/config.cmake +++ b/platform/macos/config.cmake @@ -18,6 +18,7 @@ macro(mbgl_platform_core) PRIVATE platform/darwin/src/nsthread.mm PRIVATE platform/darwin/src/string_nsstring.mm PRIVATE platform/default/bidi.cpp + PRIVATE platform/default/local_glyph_rasterizer.cpp PRIVATE platform/default/thread_local.cpp PRIVATE platform/default/utf.cpp diff --git a/platform/qt/config.cmake b/platform/qt/config.cmake index a7fdbf3542..57e586d7c3 100644 --- a/platform/qt/config.cmake +++ b/platform/qt/config.cmake @@ -48,6 +48,8 @@ macro(mbgl_platform_core) target_sources(mbgl-core PRIVATE platform/qt/src/bidi.cpp) endif() + target_sources(mbgl-core PRIVATE platform/default/local_glyph_rasterizer.cpp) + endmacro() diff --git a/src/mbgl/text/glyph_manager.cpp b/src/mbgl/text/glyph_manager.cpp index 916d39ae62..59b019b547 100644 --- a/src/mbgl/text/glyph_manager.cpp +++ b/src/mbgl/text/glyph_manager.cpp @@ -4,14 +4,16 @@ #include #include #include +#include namespace mbgl { static GlyphManagerObserver nullObserver; -GlyphManager::GlyphManager(FileSource& fileSource_) +GlyphManager::GlyphManager(FileSource& fileSource_, std::unique_ptr localGlyphRasterizer_) : fileSource(fileSource_), - observer(&nullObserver) { + observer(&nullObserver), + localGlyphRasterizer(std::move(localGlyphRasterizer_)) { } GlyphManager::~GlyphManager() = default; @@ -30,7 +32,13 @@ void GlyphManager::getGlyphs(GlyphRequestor& requestor, GlyphDependencies glyphD const GlyphIDs& glyphIDs = dependency.second; GlyphRangeSet ranges; for (const auto& glyphID : glyphIDs) { - ranges.insert(getGlyphRange(glyphID)); + if (localGlyphRasterizer->canRasterizeGlyph(fontStack, glyphID)) { + if (entry.glyphs.find(glyphID) == entry.glyphs.end()) { + entry.glyphs.emplace(glyphID, makeMutable(generateLocalSDF(fontStack, glyphID))); + } + } else { + ranges.insert(getGlyphRange(glyphID)); + } } for (const auto& range : ranges) { @@ -49,9 +57,14 @@ void GlyphManager::getGlyphs(GlyphRequestor& requestor, GlyphDependencies glyphD } } +Glyph GlyphManager::generateLocalSDF(const FontStack& fontStack, GlyphID glyphID) { + Glyph local = localGlyphRasterizer->rasterizeGlyph(fontStack, glyphID); + local.bitmap = util::transformRasterToSDF(local.bitmap, 8, .25); + return local; +} + GlyphManager::GlyphRequest& GlyphManager::requestRange(Entry& entry, const FontStack& fontStack, const GlyphRange& range) { GlyphRequest& request = entry.ranges[range]; - if (request.req) { return request; } diff --git a/src/mbgl/text/glyph_manager.hpp b/src/mbgl/text/glyph_manager.hpp index 00df079462..13a8c07429 100644 --- a/src/mbgl/text/glyph_manager.hpp +++ b/src/mbgl/text/glyph_manager.hpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include @@ -24,7 +25,7 @@ public: class GlyphManager : public util::noncopyable { public: - GlyphManager(FileSource&); + GlyphManager(FileSource&, std::unique_ptr = std::make_unique()); ~GlyphManager(); // Workers send a `getGlyphs` message to the main thread once they have determined @@ -42,6 +43,8 @@ public: void setObserver(GlyphManagerObserver*); private: + Glyph generateLocalSDF(const FontStack& fontStack, GlyphID glyphID); + FileSource& fileSource; std::string glyphURL; @@ -61,8 +64,10 @@ private: GlyphRequest& requestRange(Entry&, const FontStack&, const GlyphRange&); void processResponse(const Response&, const FontStack&, const GlyphRange&); void notify(GlyphRequestor&, const GlyphDependencies&); - + GlyphManagerObserver* observer = nullptr; + + std::unique_ptr localGlyphRasterizer; }; } // namespace mbgl diff --git a/src/mbgl/text/local_glyph_rasterizer.hpp b/src/mbgl/text/local_glyph_rasterizer.hpp new file mode 100644 index 0000000000..c2bdbd2840 --- /dev/null +++ b/src/mbgl/text/local_glyph_rasterizer.hpp @@ -0,0 +1,42 @@ +#pragma once + +#include + +namespace mbgl { + +/* + Given a font stack and a glyph ID, platform-specific implementations of + LocalGlyphRasterizer will decide which, if any, local fonts to use and + then generate a matching glyph object with a greyscale rasterization of + the glyph and appropriate metrics. GlyphManager will then use TinySDF to + transform the rasterized bitmap into an SDF. + + The JS equivalent of this functionality will only generate glyphs in the + 'CJK Unified Ideographs' and 'Hangul Syllables' ranges, for which it can + get away with rendering a fixed 30px square image and GlyphMetrics of: + + width: 24, + height: 24, + left: 0, + top: -8, + advance: 24 + + The JS equivalent also uses heuristic evaluation of the font stack name + to control the font-weight it uses during rasterization. + + It is left to platform-specific implementation to decide how best to + map a FontStack to a particular rasterization. + + The default implementation simply refuses to rasterize any glyphs. +*/ + +class LocalGlyphRasterizer { +public: + virtual ~LocalGlyphRasterizer() = default; + + // virtual so that test harness can override platform-specific behavior + virtual bool canRasterizeGlyph(const FontStack&, GlyphID); + virtual Glyph rasterizeGlyph(const FontStack&, GlyphID); +}; + +} // namespace mbgl -- cgit v1.2.1 From f1f2ebb019980d4c53d563d3495e016d50e23945 Mon Sep 17 00:00:00 2001 From: Chris Loer Date: Mon, 27 Nov 2017 12:50:28 -0800 Subject: [core] Hook LocalGlyphRasterizer "font family" configuration up to Renderer --- include/mbgl/renderer/renderer.hpp | 3 ++- platform/default/local_glyph_rasterizer.cpp | 9 +++++++++ src/mbgl/renderer/renderer.cpp | 5 +++-- src/mbgl/renderer/renderer_impl.cpp | 5 +++-- src/mbgl/renderer/renderer_impl.hpp | 2 +- src/mbgl/text/glyph_manager.hpp | 2 +- src/mbgl/text/local_glyph_rasterizer.hpp | 6 +++++- src/mbgl/util/i18n.cpp | 5 +++++ src/mbgl/util/i18n.hpp | 4 ++++ 9 files changed, 33 insertions(+), 8 deletions(-) diff --git a/include/mbgl/renderer/renderer.hpp b/include/mbgl/renderer/renderer.hpp index 23d2451a2e..a60f3f6e4d 100644 --- a/include/mbgl/renderer/renderer.hpp +++ b/include/mbgl/renderer/renderer.hpp @@ -25,7 +25,8 @@ class Renderer { public: Renderer(RendererBackend&, float pixelRatio_, FileSource&, Scheduler&, GLContextMode = GLContextMode::Unique, - const optional programCacheDir = {}); + const optional programCacheDir = {}, + const optional localFontFamily = {}); ~Renderer(); void markContextLost(); diff --git a/platform/default/local_glyph_rasterizer.cpp b/platform/default/local_glyph_rasterizer.cpp index 7ace6cbfb1..7866f29420 100644 --- a/platform/default/local_glyph_rasterizer.cpp +++ b/platform/default/local_glyph_rasterizer.cpp @@ -2,6 +2,15 @@ namespace mbgl { +class LocalGlyphRasterizer::Impl { +}; + +LocalGlyphRasterizer::LocalGlyphRasterizer(const optional) +{} + +LocalGlyphRasterizer::~LocalGlyphRasterizer() +{} + bool LocalGlyphRasterizer::canRasterizeGlyph(const FontStack&, GlyphID) { return false; } diff --git a/src/mbgl/renderer/renderer.cpp b/src/mbgl/renderer/renderer.cpp index 8953b419f7..6d086c70b1 100644 --- a/src/mbgl/renderer/renderer.cpp +++ b/src/mbgl/renderer/renderer.cpp @@ -10,9 +10,10 @@ Renderer::Renderer(RendererBackend& backend, FileSource& fileSource_, Scheduler& scheduler_, GLContextMode contextMode_, - const optional programCacheDir_) + const optional programCacheDir_, + const optional localFontFamily_) : impl(std::make_unique(backend, pixelRatio_, fileSource_, scheduler_, - contextMode_, std::move(programCacheDir_))) { + contextMode_, std::move(programCacheDir_), std::move(localFontFamily_))) { } Renderer::~Renderer() { diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp index 7339756e52..3a7afdb03d 100644 --- a/src/mbgl/renderer/renderer_impl.cpp +++ b/src/mbgl/renderer/renderer_impl.cpp @@ -42,7 +42,8 @@ Renderer::Impl::Impl(RendererBackend& backend_, FileSource& fileSource_, Scheduler& scheduler_, GLContextMode contextMode_, - const optional programCacheDir_) + const optional programCacheDir_, + const optional localFontFamily_) : backend(backend_) , scheduler(scheduler_) , fileSource(fileSource_) @@ -50,7 +51,7 @@ Renderer::Impl::Impl(RendererBackend& backend_, , contextMode(contextMode_) , pixelRatio(pixelRatio_) , programCacheDir(programCacheDir_) - , glyphManager(std::make_unique(fileSource)) + , glyphManager(std::make_unique(fileSource, std::make_unique(localFontFamily_))) , imageManager(std::make_unique()) , lineAtlas(std::make_unique(Size{ 256, 512 })) , imageImpls(makeMutable>>()) diff --git a/src/mbgl/renderer/renderer_impl.hpp b/src/mbgl/renderer/renderer_impl.hpp index db2a6e7a74..a199cec4d0 100644 --- a/src/mbgl/renderer/renderer_impl.hpp +++ b/src/mbgl/renderer/renderer_impl.hpp @@ -36,7 +36,7 @@ class Renderer::Impl : public GlyphManagerObserver, public RenderSourceObserver{ public: Impl(RendererBackend&, float pixelRatio_, FileSource&, Scheduler&, GLContextMode, - const optional programCacheDir); + const optional programCacheDir, const optional localFontFamily); ~Impl() final; void markContextLost() { diff --git a/src/mbgl/text/glyph_manager.hpp b/src/mbgl/text/glyph_manager.hpp index 13a8c07429..ccc8d7e16e 100644 --- a/src/mbgl/text/glyph_manager.hpp +++ b/src/mbgl/text/glyph_manager.hpp @@ -25,7 +25,7 @@ public: class GlyphManager : public util::noncopyable { public: - GlyphManager(FileSource&, std::unique_ptr = std::make_unique()); + GlyphManager(FileSource&, std::unique_ptr = std::make_unique(optional())); ~GlyphManager(); // Workers send a `getGlyphs` message to the main thread once they have determined diff --git a/src/mbgl/text/local_glyph_rasterizer.hpp b/src/mbgl/text/local_glyph_rasterizer.hpp index c2bdbd2840..82b16b534d 100644 --- a/src/mbgl/text/local_glyph_rasterizer.hpp +++ b/src/mbgl/text/local_glyph_rasterizer.hpp @@ -32,11 +32,15 @@ namespace mbgl { class LocalGlyphRasterizer { public: - virtual ~LocalGlyphRasterizer() = default; + virtual ~LocalGlyphRasterizer(); + LocalGlyphRasterizer(const optional fontFamily = optional()); // virtual so that test harness can override platform-specific behavior virtual bool canRasterizeGlyph(const FontStack&, GlyphID); virtual Glyph rasterizeGlyph(const FontStack&, GlyphID); +private: + class Impl; + std::unique_ptr impl; }; } // namespace mbgl diff --git a/src/mbgl/util/i18n.cpp b/src/mbgl/util/i18n.cpp index 3e3a68e248..1fc13bfb7d 100644 --- a/src/mbgl/util/i18n.cpp +++ b/src/mbgl/util/i18n.cpp @@ -392,6 +392,11 @@ bool allowsIdeographicBreaking(char16_t chr) { // || isInCJKCompatibilityIdeographsSupplement(chr)); } +bool allowsFixedWidthGlyphGeneration(char16_t chr) { + // Mirrors conservative set of characters used in glyph_manager.js/_tinySDF + return isInCJKUnifiedIdeographs(chr) || isInHangulSyllables(chr); +} + bool allowsVerticalWritingMode(const std::u16string& string) { for (char32_t chr : string) { if (hasUprightVerticalOrientation(chr)) { diff --git a/src/mbgl/util/i18n.hpp b/src/mbgl/util/i18n.hpp index 61c5a1ea96..b3960c743c 100644 --- a/src/mbgl/util/i18n.hpp +++ b/src/mbgl/util/i18n.hpp @@ -23,6 +23,10 @@ bool allowsIdeographicBreaking(const std::u16string& string); by the given Unicode codepoint due to ideographic breaking. */ bool allowsIdeographicBreaking(char16_t chr); +/** Conservative set of characters expected to have relatively fixed sizes and + advances */ +bool allowsFixedWidthGlyphGeneration(char16_t chr); + /** Returns whether any substring of the given string can be drawn as vertical text with upright glyphs. */ bool allowsVerticalWritingMode(const std::u16string& string); -- cgit v1.2.1 From 97e45d5fdac8d92b1115ed3e6ed06d7b61ef78f2 Mon Sep 17 00:00:00 2001 From: Chris Loer Date: Thu, 30 Nov 2017 12:38:06 -0800 Subject: [android] Android implementation of local CJK glyph rendering - Draws bold version of glyph if font stack contains string "bold" - Not hooked up to global configuration yet --- .../mapboxsdk/text/LocalGlyphRasterizer.java | 46 ++++++++ platform/android/config.cmake | 3 +- platform/android/src/jni.cpp | 4 + .../android/src/text/local_glyph_rasterizer.cpp | 126 +++++++++++++++++++++ .../src/text/local_glyph_rasterizer_jni.hpp | 31 +++++ 5 files changed, 209 insertions(+), 1 deletion(-) create mode 100644 platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/text/LocalGlyphRasterizer.java create mode 100644 platform/android/src/text/local_glyph_rasterizer.cpp create mode 100644 platform/android/src/text/local_glyph_rasterizer_jni.hpp diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/text/LocalGlyphRasterizer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/text/LocalGlyphRasterizer.java new file mode 100644 index 0000000000..920a1270ac --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/text/LocalGlyphRasterizer.java @@ -0,0 +1,46 @@ +package com.mapbox.mapboxsdk.text; + +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Bitmap; +import android.graphics.Typeface; +import android.support.annotation.WorkerThread; + +/** + * LocalGlyphRasterizer is the Android-specific platform implementation used + * by the portable local_glyph_rasterizer.hpp + */ +public class LocalGlyphRasterizer { + + /*** + * Uses Android-native drawing code to rasterize a single glyph + * to a square @{link Bitmap} which can be returned to portable + * code for transformation into a Signed Distance Field glyph. + * + * @param fontFamily Font family string to pass to Typeface.create + * @param bold If true, use Typeface.BOLD option + * @param glyphID 16-bit Unicode BMP codepoint to draw + * + * @return Return a @{link Bitmap} to be displayed in the requested tile. + */ + @WorkerThread + protected static Bitmap drawGlyphBitmap(String fontFamily, boolean bold, char glyphID) { + /* + 35x35px dimensions are hardwired to match local_glyph_rasterizer.cpp + These dimensions are large enough to draw a 24 point character in the middle + of the bitmap (y: 20) with some buffer around the edge + */ + Bitmap bitmap = Bitmap.createBitmap(35, 35, Bitmap.Config.ARGB_8888); + + Paint paint = new Paint(); + paint.setAntiAlias(true); + paint.setTextSize(24); + paint.setTypeface(Typeface.create(fontFamily, bold ? Typeface.BOLD : Typeface.NORMAL)); + + Canvas canvas = new Canvas(); + canvas.setBitmap(bitmap); + canvas.drawText(String.valueOf(glyphID), 0, 20, paint); + + return bitmap; + } +} diff --git a/platform/android/config.cmake b/platform/android/config.cmake index c7609f1644..34a8963042 100644 --- a/platform/android/config.cmake +++ b/platform/android/config.cmake @@ -32,11 +32,12 @@ macro(mbgl_platform_core) PRIVATE platform/android/src/timer.cpp # Misc + PRIVATE platform/android/src/text/local_glyph_rasterizer_jni.hpp + PRIVATE platform/android/src/text/local_glyph_rasterizer.cpp PRIVATE platform/android/src/logging_android.cpp PRIVATE platform/android/src/thread.cpp PRIVATE platform/default/string_stdlib.cpp PRIVATE platform/default/bidi.cpp - PRIVATE platform/default/local_glyph_rasterizer.cpp PRIVATE platform/default/thread_local.cpp PRIVATE platform/default/utf.cpp diff --git a/platform/android/src/jni.cpp b/platform/android/src/jni.cpp index f4e5734861..e75a9c6985 100755 --- a/platform/android/src/jni.cpp +++ b/platform/android/src/jni.cpp @@ -51,6 +51,7 @@ #include "style/light.hpp" #include "snapshotter/map_snapshotter.hpp" #include "snapshotter/map_snapshot.hpp" +#include "text/local_glyph_rasterizer_jni.hpp" namespace mbgl { namespace android { @@ -188,6 +189,9 @@ void registerNatives(JavaVM *vm) { // Snapshotter MapSnapshotter::registerNative(env); MapSnapshot::registerNative(env); + + // text + LocalGlyphRasterizer::registerNative(env); } } // namespace android diff --git a/platform/android/src/text/local_glyph_rasterizer.cpp b/platform/android/src/text/local_glyph_rasterizer.cpp new file mode 100644 index 0000000000..ce1b0fc8fd --- /dev/null +++ b/platform/android/src/text/local_glyph_rasterizer.cpp @@ -0,0 +1,126 @@ +#include +#include +#include + +#include + +#include "../attach_env.hpp" +#include "../bitmap.hpp" + +#include "local_glyph_rasterizer_jni.hpp" + +/* + Android implementation of LocalGlyphRasterizer: + Draws CJK glyphs using locally available fonts. + + Follows pattern of GL JS implementation in that: + - Only CJK glyphs are drawn locally (because we can guess their metrics effectively) + * Render size/metrics determined experimentally using Noto Sans + - Configuration is done at map creation time by setting a "font family" + * JS uses a CSS font-family, this uses android.graphics.Typeface + https://developer.android.com/reference/android/graphics/Typeface.html + - We use heuristics to extract a font-weight based on the incoming font stack + * JS tries to extract multiple weights, this implementation only looks for + "bold" + + mbgl::LocalGlyphRasterizer is the portable interface + mbgl::LocalGlyphRasterizer::Impl stores platform-specific configuration data + mbgl::android::LocalGlyphRasterizer is the JNI wrapper + com.mapbox.mapboxsdk.text.LocalGlyphRasterizer is the Java implementation that + actually does the drawing + */ + +namespace mbgl { +namespace android { + +PremultipliedImage LocalGlyphRasterizer::drawGlyphBitmap(const std::string& fontFamily, const bool bold, const GlyphID glyphID) { + UniqueEnv env { AttachEnv() }; + + using Signature = jni::Object(jni::String, jni::jboolean, jni::jchar); + auto method = javaClass.GetStaticMethod(*env, "drawGlyphBitmap"); + + jni::String jniFontFamily = jni::Make(*env, fontFamily); + + auto javaBitmap = javaClass.Call(*env, + method, + jniFontFamily, + static_cast(bold), + static_cast(glyphID)); + + PremultipliedImage result = Bitmap::GetImage(*env, javaBitmap); + jni::DeleteLocalRef(*env, javaBitmap); + return result; +} + +void LocalGlyphRasterizer::registerNative(jni::JNIEnv& env) { + javaClass = *jni::Class::Find(env).NewGlobalRef(env).release(); +} + +jni::Class LocalGlyphRasterizer::javaClass; + +} // namespace android + +class LocalGlyphRasterizer::Impl { +public: + Impl(const optional fontFamily_) + : fontFamily(fontFamily_) + {} + + bool isConfigured() const { + return bool(fontFamily); + } + + PremultipliedImage drawGlyphBitmap(const FontStack& fontStack, GlyphID glyphID) { + bool bold = false; + for (auto font : fontStack) { + std::string lowercaseFont = platform::lowercase(font); + if (lowercaseFont.find("bold") != std::string::npos) { + bold = true; + } + } + return android::LocalGlyphRasterizer::drawGlyphBitmap(*fontFamily, bold, glyphID); + } + +private: + optional fontFamily; +}; + +LocalGlyphRasterizer::LocalGlyphRasterizer(const optional fontFamily) + : impl(std::make_unique(fontFamily)) +{} + +LocalGlyphRasterizer::~LocalGlyphRasterizer() +{} + +bool LocalGlyphRasterizer::canRasterizeGlyph(const FontStack&, GlyphID glyphID) { + return util::i18n::allowsFixedWidthGlyphGeneration(glyphID) && impl->isConfigured(); +} + +Glyph LocalGlyphRasterizer::rasterizeGlyph(const FontStack& fontStack, GlyphID glyphID) { + Glyph fixedMetrics; + if (!impl->isConfigured()) { + return fixedMetrics; + } + + fixedMetrics.id = glyphID; + + Size size(35, 35); + + fixedMetrics.metrics.width = size.width; + fixedMetrics.metrics.height = size.height; + fixedMetrics.metrics.left = 3; + fixedMetrics.metrics.top = -10; + fixedMetrics.metrics.advance = 24; + + PremultipliedImage rgbaBitmap = impl->drawGlyphBitmap(fontStack, glyphID); + + // Copy alpha values from RGBA bitmap into the AlphaImage output + fixedMetrics.bitmap = AlphaImage(size); + for (uint32_t i = 0; i < size.width * size.height; i++) { + fixedMetrics.bitmap.data[i] = rgbaBitmap.data[4 * i + 3]; + } + + return fixedMetrics; +} + +} // namespace mbgl diff --git a/platform/android/src/text/local_glyph_rasterizer_jni.hpp b/platform/android/src/text/local_glyph_rasterizer_jni.hpp new file mode 100644 index 0000000000..38d98d5368 --- /dev/null +++ b/platform/android/src/text/local_glyph_rasterizer_jni.hpp @@ -0,0 +1,31 @@ +#pragma once + +#include + +#include + +/* + android::LocalGlyphRasterizer is the JNI wrapper of + com/mapbox/mapboxsdk/text/LocalGlyphRasterizer + + mbgl::LocalGlyphRasterizer is the portable interface + Both implementations are in local_glyph_rasterizer.cpp + */ + +namespace mbgl { +namespace android { + +class LocalGlyphRasterizer { +public: + static PremultipliedImage drawGlyphBitmap(const std::string& fontFamily, const bool bold, const char16_t glyphID); + + static constexpr auto Name() { return "com/mapbox/mapboxsdk/text/LocalGlyphRasterizer"; }; + + static jni::Class javaClass; + + static void registerNative(jni::JNIEnv&); + +}; + +} // namespace android +} // namespace mbgl -- cgit v1.2.1 From f2b42af339ee63e47853c952e85dc0746902347c Mon Sep 17 00:00:00 2001 From: Chris Loer Date: Fri, 15 Dec 2017 09:12:04 -0800 Subject: [android] Add Configuration hook for local ideograph font family and demo activity --- .../java/com/mapbox/mapboxsdk/maps/MapView.java | 4 +- .../mapbox/mapboxsdk/maps/MapboxMapOptions.java | 31 +++++++++ .../mapboxsdk/maps/renderer/MapRenderer.java | 8 +-- .../glsurfaceview/GLSurfaceViewMapRenderer.java | 4 +- .../textureview/TextureViewMapRenderer.java | 6 +- .../src/main/res-public/values/public.xml | 1 + .../src/main/res/values/attrs.xml | 1 + .../src/main/AndroidManifest.xml | 64 +++++++++++------ .../activity/maplayout/LocalGlyphActivity.java | 81 ++++++++++++++++++++++ .../src/main/res/layout/activity_local_glyph.xml | 17 +++++ .../src/main/res/values/descriptions.xml | 1 + .../src/main/res/values/titles.xml | 2 + platform/android/src/map_renderer.cpp | 10 +-- platform/android/src/map_renderer.hpp | 4 +- 14 files changed, 196 insertions(+), 38 deletions(-) create mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/LocalGlyphActivity.java create mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_local_glyph.xml diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java index 1f8faf0231..80a3ce5bb3 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java @@ -293,7 +293,7 @@ public class MapView extends FrameLayout { private void initialiseDrawingSurface(MapboxMapOptions options) { if (options.getTextureMode()) { TextureView textureView = new TextureView(getContext()); - mapRenderer = new TextureViewMapRenderer(getContext(), textureView) { + mapRenderer = new TextureViewMapRenderer(getContext(), textureView, options.getLocalIdeographFontFamily()) { @Override protected void onSurfaceCreated(GL10 gl, EGLConfig config) { MapView.this.post(new Runnable() { @@ -315,7 +315,7 @@ public class MapView extends FrameLayout { GLSurfaceView glSurfaceView = (GLSurfaceView) findViewById(R.id.surfaceView); glSurfaceView.setZOrderMediaOverlay(mapboxMapOptions.getRenderSurfaceOnTop()); - mapRenderer = new GLSurfaceViewMapRenderer(getContext(), glSurfaceView) { + mapRenderer = new GLSurfaceViewMapRenderer(getContext(), glSurfaceView, options.getLocalIdeographFontFamily()) { @Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { MapView.this.post(new Runnable() { diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java index f26e0b9d3b..48c83628d6 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java @@ -82,6 +82,7 @@ public class MapboxMapOptions implements Parcelable { private float myLocationAccuracyThreshold; private boolean prefetchesTiles = true; private boolean zMediaOverlay = false; + private String localIdeographFontFamily; private String apiBaseUrl; @@ -157,6 +158,7 @@ public class MapboxMapOptions implements Parcelable { textureMode = in.readByte() != 0; prefetchesTiles = in.readByte() != 0; zMediaOverlay = in.readByte() != 0; + localIdeographFontFamily = in.readString(); } static Bitmap getBitmapFromDrawable(Drawable drawable) { @@ -304,6 +306,8 @@ public class MapboxMapOptions implements Parcelable { typedArray.getBoolean(R.styleable.mapbox_MapView_mapbox_enableTilePrefetch, true)); mapboxMapOptions.renderSurfaceOnTop( typedArray.getBoolean(R.styleable.mapbox_MapView_mapbox_enableZMediaOverlay, false)); + mapboxMapOptions.localIdeographFontFamily( + typedArray.getString(R.styleable.mapbox_MapView_mapbox_localIdeographFontFamily)); } finally { typedArray.recycle(); } @@ -733,6 +737,18 @@ public class MapboxMapOptions implements Parcelable { return this; } + /** + * Set the font-family for generating glyphs locally for ideographs in the ‘CJK Unified Ideographs’ + * and ‘Hangul Syllables’ ranges. + * + * @param fontFamily font family for local ideograph generation. + * @return This + */ + public MapboxMapOptions localIdeographFontFamily(String fontFamily) { + this.localIdeographFontFamily = fontFamily; + return this; + } + /** * Check whether tile pre-fetching is enabled. * @@ -1079,6 +1095,16 @@ public class MapboxMapOptions implements Parcelable { return textureMode; } + /** + * Returns the font-family for locally overriding generation of glyphs in the + * ‘CJK Unified Ideographs’ and ‘Hangul Syllables’ ranges. + * + * @return Local ideograph font family name. + */ + public String getLocalIdeographFontFamily() { + return localIdeographFontFamily; + } + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { public MapboxMapOptions createFromParcel(Parcel in) { return new MapboxMapOptions(in); @@ -1145,6 +1171,7 @@ public class MapboxMapOptions implements Parcelable { dest.writeByte((byte) (textureMode ? 1 : 0)); dest.writeByte((byte) (prefetchesTiles ? 1 : 0)); dest.writeByte((byte) (zMediaOverlay ? 1 : 0)); + dest.writeString(localIdeographFontFamily); } @Override @@ -1274,6 +1301,9 @@ public class MapboxMapOptions implements Parcelable { if (zMediaOverlay != options.zMediaOverlay) { return false; } + if (localIdeographFontFamily != options.localIdeographFontFamily) { + return false; + } return false; } @@ -1323,6 +1353,7 @@ public class MapboxMapOptions implements Parcelable { result = 31 * result + (style != null ? style.hashCode() : 0); result = 31 * result + (prefetchesTiles ? 1 : 0); result = 31 * result + (zMediaOverlay ? 1 : 0); + result = 31 * result + (localIdeographFontFamily != null ? localIdeographFontFamily.hashCode() : 0); return result; } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java index 2baff473e9..fcee5bd179 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java @@ -23,14 +23,13 @@ public abstract class MapRenderer implements MapRendererScheduler { private MapboxMap.OnFpsChangedListener onFpsChangedListener; - public MapRenderer(Context context) { + public MapRenderer(Context context, String localIdeographFontFamily) { FileSource fileSource = FileSource.getInstance(context); float pixelRatio = context.getResources().getDisplayMetrics().density; String programCacheDir = context.getCacheDir().getAbsolutePath(); - // Initialise native peer - nativeInitialize(this, fileSource, pixelRatio, programCacheDir); + nativeInitialize(this, fileSource, pixelRatio, programCacheDir, localIdeographFontFamily); } public void onStart() { @@ -112,7 +111,8 @@ public abstract class MapRenderer implements MapRendererScheduler { private native void nativeInitialize(MapRenderer self, FileSource fileSource, float pixelRatio, - String programCacheDir); + String programCacheDir, + String localIdeographFontFamily); @CallSuper @Override diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/GLSurfaceViewMapRenderer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/GLSurfaceViewMapRenderer.java index d98e4d06a3..7bc56475c0 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/GLSurfaceViewMapRenderer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/glsurfaceview/GLSurfaceViewMapRenderer.java @@ -21,8 +21,8 @@ public class GLSurfaceViewMapRenderer extends MapRenderer implements GLSurfaceVi private final GLSurfaceView glSurfaceView; - public GLSurfaceViewMapRenderer(Context context, GLSurfaceView glSurfaceView) { - super(context); + public GLSurfaceViewMapRenderer(Context context, GLSurfaceView glSurfaceView, String localIdeographFontFamily) { + super(context, localIdeographFontFamily); this.glSurfaceView = glSurfaceView; glSurfaceView.setEGLContextClientVersion(2); glSurfaceView.setEGLConfigChooser(new EGLConfigChooser()); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/textureview/TextureViewMapRenderer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/textureview/TextureViewMapRenderer.java index 397904b1f5..dcc95217ff 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/textureview/TextureViewMapRenderer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/textureview/TextureViewMapRenderer.java @@ -24,8 +24,10 @@ public class TextureViewMapRenderer extends MapRenderer { * @param context the current Context * @param textureView the TextureView */ - public TextureViewMapRenderer(@NonNull Context context, @NonNull TextureView textureView) { - super(context); + public TextureViewMapRenderer(@NonNull Context context, + @NonNull TextureView textureView, + String localIdeographFontFamily) { + super(context, localIdeographFontFamily); renderThread = new TextureViewRenderThread(textureView, this); renderThread.start(); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res-public/values/public.xml b/platform/android/MapboxGLAndroidSDK/src/main/res-public/values/public.xml index f406f4d042..412d8c5d9b 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/res-public/values/public.xml +++ b/platform/android/MapboxGLAndroidSDK/src/main/res-public/values/public.xml @@ -11,6 +11,7 @@ + diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/values/attrs.xml b/platform/android/MapboxGLAndroidSDK/src/main/res/values/attrs.xml index 2a4c2fe746..97adce8a4e 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/res/values/attrs.xml +++ b/platform/android/MapboxGLAndroidSDK/src/main/res/values/attrs.xml @@ -5,6 +5,7 @@ + diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml index ee26f39f57..6f311788ba 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml @@ -367,9 +367,10 @@ android:name="android.support.PARENT_ACTIVITY" android:value=".activity.FeatureOverviewActivity"/> - + @@ -377,9 +378,10 @@ android:name="android.support.PARENT_ACTIVITY" android:value=".activity.FeatureOverviewActivity"/> - + @@ -387,9 +389,10 @@ android:name="android.support.PARENT_ACTIVITY" android:value=".activity.FeatureOverviewActivity"/> - + @@ -586,8 +589,8 @@ + android:description="@string/description_animated_image_source" + android:label="@string/activity_animated_image_source"> @@ -720,36 +723,51 @@ android:name="android.support.PARENT_ACTIVITY" android:value=".activity.FeatureOverviewActivity"/> - + - + - + - + + + + + + + + + + diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/descriptions.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/descriptions.xml index 33d9638712..7acd8b1ef8 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/descriptions.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/descriptions.xml @@ -67,4 +67,5 @@ Use TextureView to render the map Resize a map rendered on a TextureView Animate a map rendered on a TextureView + Suzhou using Droid Sans for Chinese glyphs \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/titles.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/titles.xml index b90cedc518..c4d13e1068 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/titles.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/titles.xml @@ -67,4 +67,6 @@ TextureView debug TextureView resize TextureView animation + Grid Source + Local CJK glyph generation \ No newline at end of file diff --git a/platform/android/src/map_renderer.cpp b/platform/android/src/map_renderer.cpp index 36e8142bfa..2440ac93ef 100644 --- a/platform/android/src/map_renderer.cpp +++ b/platform/android/src/map_renderer.cpp @@ -16,10 +16,12 @@ namespace android { MapRenderer::MapRenderer(jni::JNIEnv& _env, jni::Object obj, jni::Object _fileSource, jni::jfloat pixelRatio_, - jni::String programCacheDir_) + jni::String programCacheDir_, + jni::String localIdeographFontFamily_) : javaPeer(SeizeGenericWeakRef(_env, jni::Object(jni::NewWeakGlobalRef(_env, obj.Get()).release()))), pixelRatio(pixelRatio_) , fileSource(FileSource::getDefaultFileSource(_env, _fileSource)) , programCacheDir(jni::Make(_env, programCacheDir_)) + , localIdeographFontFamily(localIdeographFontFamily_ == nullptr ? optional{} : jni::Make(_env, localIdeographFontFamily_ )) , threadPool(sharedThreadPool()) , mailbox(std::make_shared(*this)) { } @@ -145,7 +147,7 @@ void MapRenderer::onSurfaceCreated(JNIEnv&) { std::lock_guard lock(initialisationMutex); // The android system will have already destroyed the underlying - // GL resources if this is not the first intialization and an + // GL resources if this is not the first initialization and an // attempt to clean them up will fail if (backend) backend->markContextLost(); if (renderer) renderer->markContextLost(); @@ -157,7 +159,7 @@ void MapRenderer::onSurfaceCreated(JNIEnv&) { // Create the new backend and renderer backend = std::make_unique(); renderer = std::make_unique(*backend, pixelRatio, fileSource, *threadPool, - GLContextMode::Unique, programCacheDir); + GLContextMode::Unique, programCacheDir, localIdeographFontFamily); rendererRef = std::make_unique>(*renderer, mailbox); // Set the observer on the new Renderer implementation @@ -184,7 +186,7 @@ void MapRenderer::registerNative(jni::JNIEnv& env) { // Register the peer jni::RegisterNativePeer(env, MapRenderer::javaClass, "nativePtr", - std::make_unique, jni::Object, jni::jfloat, jni::String>, + std::make_unique, jni::Object, jni::jfloat, jni::String, jni::String>, "nativeInitialize", "finalize", METHOD(&MapRenderer::render, "nativeRender"), METHOD(&MapRenderer::onSurfaceCreated, diff --git a/platform/android/src/map_renderer.hpp b/platform/android/src/map_renderer.hpp index 0d614912a9..c36357af7a 100644 --- a/platform/android/src/map_renderer.hpp +++ b/platform/android/src/map_renderer.hpp @@ -48,7 +48,8 @@ public: jni::Object, jni::Object, jni::jfloat pixelRatio, - jni::String programCacheDir); + jni::String programCacheDir, + jni::String localIdeographFontFamily); ~MapRenderer() override; @@ -103,6 +104,7 @@ private: float pixelRatio; DefaultFileSource& fileSource; std::string programCacheDir; + optional localIdeographFontFamily; std::shared_ptr threadPool; std::shared_ptr mailbox; -- cgit v1.2.1 From d80e71bf38f752a153dbd47944051151bf1d9772 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Tue, 19 Dec 2017 06:39:40 +0100 Subject: [android] - remove startup flash from fragment, rework OnMapReady callback for multiple listeners (#10717) --- .../com/mapbox/mapboxsdk/maps/MapFragment.java | 30 ++++++++++++++++------ .../mapbox/mapboxsdk/maps/SupportMapFragment.java | 30 ++++++++++++++++------ 2 files changed, 44 insertions(+), 16 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapFragment.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapFragment.java index 01c6da4971..0c11a4220e 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapFragment.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapFragment.java @@ -11,6 +11,9 @@ import android.view.ViewGroup; import com.mapbox.mapboxsdk.utils.MapFragmentUtils; +import java.util.ArrayList; +import java.util.List; + /** * Fragment wrapper around a map view. *

@@ -25,10 +28,11 @@ import com.mapbox.mapboxsdk.utils.MapFragmentUtils; * * @see #getMapAsync(OnMapReadyCallback) */ -public final class MapFragment extends Fragment { +public final class MapFragment extends Fragment implements OnMapReadyCallback { + private final List mapReadyCallbackList = new ArrayList<>(); + private MapboxMap mapboxMap; private MapView map; - private OnMapReadyCallback onMapReadyCallback; /** * Creates a default MapFragment instance @@ -63,7 +67,9 @@ public final class MapFragment extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); Context context = inflater.getContext(); - return map = new MapView(context, MapFragmentUtils.resolveArgs(context, getArguments())); + map = new MapView(context, MapFragmentUtils.resolveArgs(context, getArguments())); + map.setVisibility(View.INVISIBLE); + return map; } /** @@ -76,9 +82,16 @@ public final class MapFragment extends Fragment { public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); map.onCreate(savedInstanceState); - if (onMapReadyCallback != null) { - map.getMapAsync(onMapReadyCallback); + map.getMapAsync(this); + } + + @Override + public void onMapReady(MapboxMap mapboxMap) { + this.mapboxMap = mapboxMap; + for (OnMapReadyCallback onMapReadyCallback : mapReadyCallbackList) { + onMapReadyCallback.onMapReady(mapboxMap); } + map.setVisibility(View.VISIBLE); } /** @@ -144,6 +157,7 @@ public final class MapFragment extends Fragment { public void onDestroyView() { super.onDestroyView(); map.onDestroy(); + mapReadyCallbackList.clear(); } /** @@ -152,10 +166,10 @@ public final class MapFragment extends Fragment { * @param onMapReadyCallback The callback to be invoked. */ public void getMapAsync(@NonNull final OnMapReadyCallback onMapReadyCallback) { - if (map == null) { - this.onMapReadyCallback = onMapReadyCallback; + if (mapboxMap == null) { + mapReadyCallbackList.add(onMapReadyCallback); } else { - map.getMapAsync(onMapReadyCallback); + onMapReadyCallback.onMapReady(mapboxMap); } } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/SupportMapFragment.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/SupportMapFragment.java index 6c90cd95ec..c072ec8237 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/SupportMapFragment.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/SupportMapFragment.java @@ -11,6 +11,9 @@ import android.view.ViewGroup; import com.mapbox.mapboxsdk.utils.MapFragmentUtils; +import java.util.ArrayList; +import java.util.List; + /** * Support Fragment wrapper around a map view. *

@@ -25,10 +28,11 @@ import com.mapbox.mapboxsdk.utils.MapFragmentUtils; * * @see #getMapAsync(OnMapReadyCallback) */ -public class SupportMapFragment extends Fragment { +public class SupportMapFragment extends Fragment implements OnMapReadyCallback { + private final List mapReadyCallbackList = new ArrayList<>(); + private MapboxMap mapboxMap; private MapView map; - private OnMapReadyCallback onMapReadyCallback; /** * Creates a default MapFragment instance @@ -63,7 +67,9 @@ public class SupportMapFragment extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); Context context = inflater.getContext(); - return map = new MapView(context, MapFragmentUtils.resolveArgs(context, getArguments())); + map = new MapView(context, MapFragmentUtils.resolveArgs(context, getArguments())); + map.setVisibility(View.INVISIBLE); + return map; } /** @@ -76,9 +82,16 @@ public class SupportMapFragment extends Fragment { public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); map.onCreate(savedInstanceState); - if (onMapReadyCallback != null) { - map.getMapAsync(onMapReadyCallback); + map.getMapAsync(this); + } + + @Override + public void onMapReady(MapboxMap mapboxMap) { + this.mapboxMap = mapboxMap; + for (OnMapReadyCallback onMapReadyCallback : mapReadyCallbackList) { + onMapReadyCallback.onMapReady(mapboxMap); } + map.setVisibility(View.VISIBLE); } /** @@ -144,6 +157,7 @@ public class SupportMapFragment extends Fragment { public void onDestroyView() { super.onDestroyView(); map.onDestroy(); + mapReadyCallbackList.clear(); } /** @@ -152,10 +166,10 @@ public class SupportMapFragment extends Fragment { * @param onMapReadyCallback The callback to be invoked. */ public void getMapAsync(@NonNull final OnMapReadyCallback onMapReadyCallback) { - if (map == null) { - this.onMapReadyCallback = onMapReadyCallback; + if (mapboxMap == null) { + mapReadyCallbackList.add(onMapReadyCallback); } else { - map.getMapAsync(onMapReadyCallback); + onMapReadyCallback.onMapReady(mapboxMap); } } } -- cgit v1.2.1 From db6eaa0c348026c6afa74744a0433ccb41fe7b83 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Tue, 19 Dec 2017 09:20:52 +0100 Subject: [android] - use default icon when compass icon fails to decode (#10694) --- .../src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java index e71d509fcf..c119d869b1 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java @@ -191,6 +191,12 @@ public final class UiSettings { } private Drawable decode(byte[] bitmap) { + if (bitmap == null) { + // return default icon + return compassView.getResources().getDrawable(R.drawable.mapbox_compass_icon); + } + + // try decoding saved bitmap Bitmap compass = BitmapFactory.decodeByteArray(bitmap, 0, bitmap.length); return new BitmapDrawable(compassView.getResources(), compass); } -- cgit v1.2.1 From c15c6edce9452612fcfb155d90b58aeb38a7b8d8 Mon Sep 17 00:00:00 2001 From: Langston Smith Date: Mon, 4 Dec 2017 08:19:47 -0800 Subject: Android SDK renaming (#10609) * changes in various markdown files * more tweaks * Updated attribution title --- INSTALL.md | 4 ++-- platform/android/CHANGELOG.md | 2 +- platform/android/MapboxGLAndroidSDK/gradle.properties | 2 +- platform/android/MapboxGLAndroidSDK/src/main/res/values/strings.xml | 2 +- platform/android/README.md | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 78c5a06933..fb619770a1 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,8 +1,8 @@ # Building & Developing Mapbox GL Native from Source **Just trying to use Mapbox GL Native? You don't need to read this stuff! We -provide [easy-to-install, prebuilt versions of the Mapbox SDKs for iOS and Android -that you can download instantly and get started with fast](https://www.mapbox.com/mobile/).** +provide [easy-to-install, prebuilt versions of the Mapbox Maps SDKs for iOS and Android +that you can download instantly and get started with fast](https://www.mapbox.com/install/).** Still with us? These are the instructions you'll need to build Mapbox GL Native from source on a variety of platforms and set up a development environment. diff --git a/platform/android/CHANGELOG.md b/platform/android/CHANGELOG.md index 28ab1e8dd2..352cfa9d2c 100644 --- a/platform/android/CHANGELOG.md +++ b/platform/android/CHANGELOG.md @@ -1,4 +1,4 @@ -# Changelog for Mapbox Android SDK +# Changelog for the Mapbox Maps SDK for Android Mapbox welcomes participation and contributions from everyone. If you'd like to do so please see the [`Contributing Guide`](https://github.com/mapbox/mapbox-gl-native/blob/master/CONTRIBUTING.md) first to get started. diff --git a/platform/android/MapboxGLAndroidSDK/gradle.properties b/platform/android/MapboxGLAndroidSDK/gradle.properties index 478475766f..f1257f346e 100644 --- a/platform/android/MapboxGLAndroidSDK/gradle.properties +++ b/platform/android/MapboxGLAndroidSDK/gradle.properties @@ -11,7 +11,7 @@ POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt POM_LICENCE_DIST=repo POM_DEVELOPER_ID=mapbox POM_DEVELOPER_NAME=Mapbox -POM_NAME=Mapbox Android SDK +POM_NAME=Mapbox Maps SDK for Android POM_ARTIFACT_ID=mapbox-android-sdk POM_PACKAGING=aar diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/values/strings.xml b/platform/android/MapboxGLAndroidSDK/src/main/res/values/strings.xml index 65fb3e14a3..79c2c8d699 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/res/values/strings.xml +++ b/platform/android/MapboxGLAndroidSDK/src/main/res/values/strings.xml @@ -4,7 +4,7 @@ Attribution icon. Activate to show attribution dialog. Location View. This shows your location on the map. Showing a Map created with Mapbox. Scroll by dragging two fingers. Zoom by pinching two fingers. - Mapbox Android SDK + Mapbox Maps SDK for Android Make Mapbox Maps Better You are helping to make OpenStreetMap and Mapbox maps better by contributing anonymous usage data. Agree diff --git a/platform/android/README.md b/platform/android/README.md index bd95bdf7fa..3787ff85fe 100644 --- a/platform/android/README.md +++ b/platform/android/README.md @@ -1,4 +1,4 @@ -# [Mapbox Android SDK](https://www.mapbox.com/android-sdk/) +# [Mapbox Maps SDK for Android](https://www.mapbox.com/android-sdk/) [![Circle CI build status](https://circleci.com/gh/mapbox/mapbox-gl-native.svg?style=shield)](https://circleci.com/gh/mapbox/workflows/mapbox-gl-native/tree/master) @@ -10,7 +10,7 @@ Alright. So, actually, you may be in the wrong place. From here on in, this READ **To view our current API documentation, see our [JavaDoc](https://www.mapbox.com/android-sdk/api).** -**To install and use the Mapbox Android SDK in an application, see the [Mapbox Android SDK website](https://www.mapbox.com/android-sdk/).** +**To install and use the Mapbox Maps SDK for Android in an application, see the [Mapbox Maps SDK for Android website](https://www.mapbox.com/install/android/).** [![](https://www.mapbox.com/android-sdk/images/splash.png)](https://www.mapbox.com/android-sdk/) -- cgit v1.2.1 From f242227a677880298429b26b1e6fc3a2d33a046f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguy=E1=BB=85n?= Date: Mon, 18 Dec 2017 12:49:58 -0800 Subject: [android] Updated Spanish, Vietnamese translations --- .../android/MapboxGLAndroidSDK/src/main/res/values-es/strings.xml | 5 +++-- .../android/MapboxGLAndroidSDK/src/main/res/values-vi/strings.xml | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/values-es/strings.xml b/platform/android/MapboxGLAndroidSDK/src/main/res/values-es/strings.xml index 92c055223f..9844642381 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/res/values-es/strings.xml +++ b/platform/android/MapboxGLAndroidSDK/src/main/res/values-es/strings.xml @@ -4,12 +4,13 @@ Ícono de atribución. Actívalo para mostrar el diálogo de atribución. Vista de ubicación. Muestra tu ubicación en el mapa. Se está mostrando un mapa creado con Mapbox. Arrastra dos dedos para desplazarte o pellizca para acercar. - Mapbox Android SDK + Mapbox Maps SDK para Android Ayúdanos a mejorar los mapas de Mapbox Gracias a tu contribución de datos anónimos de uso, ayudas a mejorar OpenStreetMap y Mapbox. Aceptar Rechazar Más información + No puede abrir la página Web porque no hay un navegador Web en el dispositivo. El parámetro OfflineRegionDefinition que se ingresó no coincide con los límites mundiales: %s - + Ajustes de telemetría diff --git a/platform/android/MapboxGLAndroidSDK/src/main/res/values-vi/strings.xml b/platform/android/MapboxGLAndroidSDK/src/main/res/values-vi/strings.xml index a0cad6487a..77e72a4db7 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/res/values-vi/strings.xml +++ b/platform/android/MapboxGLAndroidSDK/src/main/res/values-vi/strings.xml @@ -4,12 +4,13 @@ Biểu tượng ghi công. Kích hoạt để xem hộp thoại ghi công. Cái chỉ vị trí. Cái này chỉ vị trí của bạn trên bản đồ. Đang xem bản đồ được xây dựng dùng Mapbox. Kéo hai ngón tay để cuộn. Chụm các ngón tay lại để phóng to. Tách các ngón tay ra để thu nhỏ. - Mapbox Android SDK + Mapbox Maps SDK cho Android Cải tiến các Bản đồ Mapbox Bạn đang giúp cải tiến các bản đồ OpenStreetMap và Mapbox bằng cách đóng góp dữ liệu vô danh hóa về cách sử dụng. Đồng ý Phản đối Thông tin thêm + Không thể mở trang Web vì thiết bị thiếu trình duyệt. OfflineRegionDefinition được cung cấp không vừa thế giới: %s - + Thiết lập Trình viễn trắc -- cgit v1.2.1 From af52538a81768977648c9d95190ba8c12e28f78a Mon Sep 17 00:00:00 2001 From: Tobrun Date: Tue, 19 Dec 2017 19:38:11 +0100 Subject: Saving/restoring MyLocationViewSettings (#10746) (#10748) [android] saving/restoring MyLocationViewSettings, updated BitmapUtils --- .../mapboxsdk/constants/MapboxConstants.java | 11 ++++ .../java/com/mapbox/mapboxsdk/maps/MapboxMap.java | 2 + .../mapbox/mapboxsdk/maps/MapboxMapOptions.java | 23 ++------- .../java/com/mapbox/mapboxsdk/maps/UiSettings.java | 28 ++--------- .../maps/widgets/MyLocationViewSettings.java | 58 ++++++++++++++++++++++ .../com/mapbox/mapboxsdk/utils/BitmapUtils.java | 53 ++++++++++++++++++++ .../userlocation/MyLocationTintActivity.java | 2 +- 7 files changed, 134 insertions(+), 43 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java index fc448ccf7b..3b35df4f4b 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java @@ -135,4 +135,15 @@ public class MapboxConstants { public static final String STATE_ATTRIBUTION_ENABLED = "mapbox_atrrEnabled"; public static final String STATE_LOCATION_CHANGE_ANIMATION_ENABLED = "mapbox_locationChangeAnimationEnabled"; public static final String STATE_USING_CUSTOM_LOCATION_SOURCE = "mapbox_usingCustomLocationSource"; + public static final String STATE_LOCATION_VIEW_ENABLED = "mapbox_locViewEnabled"; + public static final String STATE_LOCATION_VIEW_FOREGROUND_DRAWABLE = "mapbox_locViewForegroundDrawable"; + public static final String STATE_LOCATION_VIEW_FOREGROUND_BEARING_DRAWABLE = "mapbox_locViewBearingDrawable"; + public static final String STATE_LOCATION_VIEW_FOREGROUND_TINT_COLOR = "mapbox_locViewForegroundTintColor"; + public static final String STATE_LOCATION_VIEW_BACKGROUND_DRAWABLE = "mapbox_locViewBackgroundDrawable"; + public static final String STATE_LOCATION_VIEW_BACKGROUND_OFFSET = "mapbox_locViewBackgroundOffset"; + public static final String STATE_LOCATION_VIEW_BACKGROUND_TINT_COLOR = "mapbox_locViewBackgroundTintColor"; + public static final String STATE_LOCATION_VIEW_ACCURACY_ALPHA = "mapbox_locViewAccuracyAlpha"; + public static final String STATE_LOCATION_VIEW_ACCURACY_TINT_COLOR = "mapbox_locViewAccuracyTintColor"; + public static final String STATE_LOCATION_VIEW_ACCURACY_THRESHOLD = "mapbox_locViewAccuracyThreshold"; + public static final String STATE_LOCATION_VIEW_PADDING = "mapbox_locViewPadding"; } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java index c9bccab07d..ad5a5a4c4a 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java @@ -136,6 +136,7 @@ public final class MapboxMap { outState.putString(MapboxConstants.STATE_STYLE_URL, nativeMapView.getStyleUrl()); trackingSettings.onSaveInstanceState(outState); uiSettings.onSaveInstanceState(outState); + myLocationViewSettings.onSaveInstanceState(outState); } /** @@ -146,6 +147,7 @@ public final class MapboxMap { void onRestoreInstanceState(Bundle savedInstanceState) { final CameraPosition cameraPosition = savedInstanceState.getParcelable(MapboxConstants.STATE_CAMERA_POSITION); + myLocationViewSettings.onRestoreInstanceState(savedInstanceState); uiSettings.onRestoreInstanceState(savedInstanceState); trackingSettings.onRestoreInstanceState(savedInstanceState); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java index 48c83628d6..2719d7f016 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java @@ -3,7 +3,6 @@ package com.mapbox.mapboxsdk.maps; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; -import android.graphics.Canvas; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Parcel; @@ -20,6 +19,7 @@ import android.view.Gravity; import com.mapbox.mapboxsdk.R; import com.mapbox.mapboxsdk.camera.CameraPosition; import com.mapbox.mapboxsdk.constants.MapboxConstants; +import com.mapbox.mapboxsdk.utils.BitmapUtils; import com.mapbox.mapboxsdk.utils.ColorUtils; import java.util.Arrays; @@ -161,19 +161,6 @@ public class MapboxMapOptions implements Parcelable { localIdeographFontFamily = in.readString(); } - static Bitmap getBitmapFromDrawable(Drawable drawable) { - if (drawable instanceof BitmapDrawable) { - return ((BitmapDrawable) drawable).getBitmap(); - } else { - Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), - Bitmap.Config.ARGB_8888); - Canvas canvas = new Canvas(bitmap); - drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); - drawable.draw(canvas); - return bitmap; - } - } - /** * Creates a MapboxMapsOptions from the attribute set.s * @@ -1130,7 +1117,7 @@ public class MapboxMapOptions implements Parcelable { dest.writeIntArray(compassMargins); dest.writeByte((byte) (fadeCompassFacingNorth ? 1 : 0)); dest.writeParcelable(compassImage != null - ? getBitmapFromDrawable(compassImage) : null, flags); + ? BitmapUtils.getBitmapFromDrawable(compassImage) : null, flags); dest.writeByte((byte) (logoEnabled ? 1 : 0)); dest.writeInt(logoGravity); @@ -1154,11 +1141,11 @@ public class MapboxMapOptions implements Parcelable { dest.writeByte((byte) (myLocationEnabled ? 1 : 0)); dest.writeParcelable(myLocationForegroundDrawable != null - ? getBitmapFromDrawable(myLocationForegroundDrawable) : null, flags); + ? BitmapUtils.getBitmapFromDrawable(myLocationForegroundDrawable) : null, flags); dest.writeParcelable(myLocationForegroundBearingDrawable != null - ? getBitmapFromDrawable(myLocationForegroundBearingDrawable) : null, flags); + ? BitmapUtils.getBitmapFromDrawable(myLocationForegroundBearingDrawable) : null, flags); dest.writeParcelable(myLocationBackgroundDrawable != null - ? getBitmapFromDrawable(myLocationBackgroundDrawable) : null, flags); + ? BitmapUtils.getBitmapFromDrawable(myLocationBackgroundDrawable) : null, flags); dest.writeInt(myLocationForegroundTintColor); dest.writeInt(myLocationBackgroundTintColor); dest.writeIntArray(myLocationBackgroundPadding); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java index c119d869b1..0843828554 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/UiSettings.java @@ -3,11 +3,8 @@ package com.mapbox.mapboxsdk.maps; import android.content.Context; import android.content.pm.PackageManager; import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.PointF; -import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.annotation.ColorInt; @@ -24,10 +21,9 @@ import com.mapbox.mapboxsdk.R; import com.mapbox.mapboxsdk.camera.CameraPosition; import com.mapbox.mapboxsdk.constants.MapboxConstants; import com.mapbox.mapboxsdk.maps.widgets.CompassView; +import com.mapbox.mapboxsdk.utils.BitmapUtils; import com.mapbox.mapboxsdk.utils.ColorUtils; -import java.io.ByteArrayOutputStream; - /** * Settings for the user interface of a MapboxMap. To obtain this interface, call getUiSettings(). */ @@ -170,13 +166,7 @@ public final class UiSettings { outState.putInt(MapboxConstants.STATE_COMPASS_MARGIN_RIGHT, getCompassMarginRight()); outState.putBoolean(MapboxConstants.STATE_COMPASS_FADE_WHEN_FACING_NORTH, isCompassFadeWhenFacingNorth()); outState.putByteArray(MapboxConstants.STATE_COMPASS_IMAGE_BITMAP, - convert(MapboxMapOptions.getBitmapFromDrawable(getCompassImage()))); - } - - private byte[] convert(Bitmap resource) { - ByteArrayOutputStream stream = new ByteArrayOutputStream(); - resource.compress(Bitmap.CompressFormat.PNG, 100, stream); - return stream.toByteArray(); + BitmapUtils.getByteArrayFromDrawable(getCompassImage())); } private void restoreCompass(Bundle savedInstanceState) { @@ -187,18 +177,8 @@ public final class UiSettings { savedInstanceState.getInt(MapboxConstants.STATE_COMPASS_MARGIN_RIGHT), savedInstanceState.getInt(MapboxConstants.STATE_COMPASS_MARGIN_BOTTOM)); setCompassFadeFacingNorth(savedInstanceState.getBoolean(MapboxConstants.STATE_COMPASS_FADE_WHEN_FACING_NORTH)); - setCompassImage(decode(savedInstanceState.getByteArray(MapboxConstants.STATE_COMPASS_IMAGE_BITMAP))); - } - - private Drawable decode(byte[] bitmap) { - if (bitmap == null) { - // return default icon - return compassView.getResources().getDrawable(R.drawable.mapbox_compass_icon); - } - - // try decoding saved bitmap - Bitmap compass = BitmapFactory.decodeByteArray(bitmap, 0, bitmap.length); - return new BitmapDrawable(compassView.getResources(), compass); + setCompassImage(BitmapUtils.getDrawableFromByteArray( + compassView.getContext(), savedInstanceState.getByteArray(MapboxConstants.STATE_COMPASS_IMAGE_BITMAP))); } private void initialiseLogo(MapboxMapOptions options, Resources resources) { diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationViewSettings.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationViewSettings.java index a1d5b13b8b..ec7c53e1d0 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationViewSettings.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationViewSettings.java @@ -1,18 +1,22 @@ package com.mapbox.mapboxsdk.maps.widgets; import android.graphics.drawable.Drawable; +import android.os.Bundle; import android.support.annotation.ColorInt; import android.support.annotation.IntRange; import android.support.annotation.NonNull; import com.mapbox.mapboxsdk.camera.CameraPosition; +import com.mapbox.mapboxsdk.constants.MapboxConstants; import com.mapbox.mapboxsdk.constants.MyLocationTracking; import com.mapbox.mapboxsdk.maps.FocalPointChangeListener; import com.mapbox.mapboxsdk.maps.MapboxMapOptions; import com.mapbox.mapboxsdk.maps.Projection; +import com.mapbox.mapboxsdk.utils.BitmapUtils; /** * Settings to configure the visual appearance of the MyLocationView. + * * @deprecated use location layer plugin from * https://github.com/mapbox/mapbox-plugins-android/tree/master/plugins/locationlayer instead. */ @@ -100,6 +104,56 @@ public class MyLocationViewSettings { setAccuracyThreshold(options.getMyLocationAccuracyThreshold()); } + public void onSaveInstanceState(Bundle outState) { + outState.putBoolean(MapboxConstants.STATE_LOCATION_VIEW_ENABLED, isEnabled()); + outState.putByteArray( + MapboxConstants.STATE_LOCATION_VIEW_FOREGROUND_DRAWABLE, + BitmapUtils.getByteArrayFromDrawable(getForegroundDrawable()) + ); + outState.putByteArray( + MapboxConstants.STATE_LOCATION_VIEW_FOREGROUND_BEARING_DRAWABLE, + BitmapUtils.getByteArrayFromDrawable(getForegroundBearingDrawable()) + ); + outState.putInt(MapboxConstants.STATE_LOCATION_VIEW_FOREGROUND_TINT_COLOR, getForegroundTintColor()); + outState.putByteArray( + MapboxConstants.STATE_LOCATION_VIEW_BACKGROUND_DRAWABLE, + BitmapUtils.getByteArrayFromDrawable(getBackgroundDrawable()) + ); + outState.putIntArray(MapboxConstants.STATE_LOCATION_VIEW_BACKGROUND_OFFSET, getBackgroundOffset()); + outState.putInt(MapboxConstants.STATE_LOCATION_VIEW_BACKGROUND_TINT_COLOR, getBackgroundTintColor()); + outState.putInt(MapboxConstants.STATE_LOCATION_VIEW_ACCURACY_ALPHA, getAccuracyAlpha()); + outState.putInt(MapboxConstants.STATE_LOCATION_VIEW_ACCURACY_TINT_COLOR, getAccuracyTintColor()); + outState.putFloat(MapboxConstants.STATE_LOCATION_VIEW_ACCURACY_THRESHOLD, getAccuracyThreshold()); + outState.putIntArray(MapboxConstants.STATE_LOCATION_VIEW_PADDING, getPadding()); + } + + public void onRestoreInstanceState(@NonNull Bundle savedInstanceState) { + setEnabled(savedInstanceState.getBoolean(MapboxConstants.STATE_LOCATION_VIEW_ENABLED)); + setForegroundDrawable( + BitmapUtils.getDrawableFromByteArray( + myLocationView.getContext(), + savedInstanceState.getByteArray(MapboxConstants.STATE_LOCATION_VIEW_FOREGROUND_DRAWABLE) + ), + BitmapUtils.getDrawableFromByteArray( + myLocationView.getContext(), + savedInstanceState.getByteArray(MapboxConstants.STATE_LOCATION_VIEW_FOREGROUND_BEARING_DRAWABLE) + ) + ); + setForegroundTintColor(savedInstanceState.getInt(MapboxConstants.STATE_LOCATION_VIEW_FOREGROUND_TINT_COLOR)); + setBackgroundDrawable( + BitmapUtils.getDrawableFromByteArray( + myLocationView.getContext(), + savedInstanceState.getByteArray(MapboxConstants.STATE_LOCATION_VIEW_BACKGROUND_DRAWABLE) + ), + savedInstanceState.getIntArray(MapboxConstants.STATE_LOCATION_VIEW_BACKGROUND_OFFSET) + ); + setBackgroundTintColor(savedInstanceState.getInt(MapboxConstants.STATE_LOCATION_VIEW_BACKGROUND_TINT_COLOR)); + setAccuracyAlpha(savedInstanceState.getInt(MapboxConstants.STATE_LOCATION_VIEW_ACCURACY_ALPHA)); + setAccuracyTintColor(savedInstanceState.getInt(MapboxConstants.STATE_LOCATION_VIEW_ACCURACY_TINT_COLOR)); + setAccuracyThreshold(savedInstanceState.getFloat(MapboxConstants.STATE_LOCATION_VIEW_ACCURACY_THRESHOLD)); + setPadding(savedInstanceState.getIntArray(MapboxConstants.STATE_LOCATION_VIEW_PADDING)); + } + /** * Returns if the MyLocationView is enabled * @@ -246,6 +300,10 @@ public class MyLocationViewSettings { */ public void setPadding(int left, int top, int right, int bottom) { padding = new int[] {left, top, right, bottom}; + setPadding(padding); + } + + private void setPadding(int[] padding) { myLocationView.setContentPadding(padding); projection.invalidateContentPadding(padding); invalidateFocalPointForTracking(myLocationView); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/BitmapUtils.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/BitmapUtils.java index af3a79539f..765ca431dd 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/BitmapUtils.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/utils/BitmapUtils.java @@ -1,10 +1,16 @@ package com.mapbox.mapboxsdk.utils; +import android.content.Context; import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Canvas; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; import android.support.annotation.NonNull; import android.view.View; +import java.io.ByteArrayOutputStream; + /** * Utility class for creating bitmaps */ @@ -46,4 +52,51 @@ public class BitmapUtils { return result; } + /** + * Extract an underlying bitmap from a drawable + * @param drawable The source drawable + * @return The underlying bitmap + */ + public static Bitmap getBitmapFromDrawable(Drawable drawable) { + if (drawable instanceof BitmapDrawable) { + return ((BitmapDrawable) drawable).getBitmap(); + } else { + Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), + Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); + drawable.draw(canvas); + return bitmap; + } + } + + /** + * Create a byte array out of drawable + * @param drawable The source drawable + * @return The byte array of source drawable + */ + public static byte[] getByteArrayFromDrawable(Drawable drawable) { + if (drawable == null) { + return null; + } + Bitmap bitmap = getBitmapFromDrawable(drawable); + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); + return stream.toByteArray(); + } + + /** + * Decode byte array to drawable object + * @param context Context to obtain {@link android.content.res.Resources} + * @param array The source byte array + * @return The drawable created from source byte array + */ + public static Drawable getDrawableFromByteArray(Context context, byte[] array) { + if (array == null) { + return null; + } + Bitmap compass = BitmapFactory.decodeByteArray(array, 0, array.length); + return new BitmapDrawable(context.getResources(), compass); + } + } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTintActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTintActivity.java index 44ee030885..9dc8c1a607 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTintActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTintActivity.java @@ -43,7 +43,7 @@ public class MyLocationTintActivity extends BaseLocationActivity implements Loca mapboxMap = map; // enable location updates - toggleGps(!mapboxMap.isMyLocationEnabled()); + toggleGps(true); // add some padding final MyLocationViewSettings myLocationViewSettings = mapboxMap.getMyLocationViewSettings(); -- cgit v1.2.1 From 9ed3aeaee10e4c4e44bfe3967db5347576e0633e Mon Sep 17 00:00:00 2001 From: Chris Loer Date: Tue, 19 Dec 2017 12:35:31 -0800 Subject: [android] Tweak TinySDF docs to better describe font-family behavior. --- .../src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java | 5 ++++- .../main/java/com/mapbox/mapboxsdk/text/LocalGlyphRasterizer.java | 4 ++-- .../src/main/res/layout/activity_local_glyph.xml | 2 +- .../MapboxGLAndroidSDKTestApp/src/main/res/values/descriptions.xml | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java index 2719d7f016..34be958329 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMapOptions.java @@ -725,9 +725,12 @@ public class MapboxMapOptions implements Parcelable { } /** - * Set the font-family for generating glyphs locally for ideographs in the ‘CJK Unified Ideographs’ + * Set the font family for generating glyphs locally for ideographs in the ‘CJK Unified Ideographs’ * and ‘Hangul Syllables’ ranges. * + * The font family argument is passed to {@link android.graphics.Typeface#create(String, int)}. + * Default system fonts are defined in '/system/etc/fonts.xml' + * * @param fontFamily font family for local ideograph generation. * @return This */ diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/text/LocalGlyphRasterizer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/text/LocalGlyphRasterizer.java index 920a1270ac..181d28191a 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/text/LocalGlyphRasterizer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/text/LocalGlyphRasterizer.java @@ -14,14 +14,14 @@ public class LocalGlyphRasterizer { /*** * Uses Android-native drawing code to rasterize a single glyph - * to a square @{link Bitmap} which can be returned to portable + * to a square {@link Bitmap} which can be returned to portable * code for transformation into a Signed Distance Field glyph. * * @param fontFamily Font family string to pass to Typeface.create * @param bold If true, use Typeface.BOLD option * @param glyphID 16-bit Unicode BMP codepoint to draw * - * @return Return a @{link Bitmap} to be displayed in the requested tile. + * @return Return a {@link Bitmap} to be displayed in the requested tile. */ @WorkerThread protected static Bitmap drawGlyphBitmap(String fontFamily, boolean bold, char glyphID) { diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_local_glyph.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_local_glyph.xml index 856dd24752..1f8bc93d2c 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_local_glyph.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_local_glyph.xml @@ -12,6 +12,6 @@ android:id="@id/mapView" android:layout_width="match_parent" android:layout_height="match_parent" - app:mapbox_localIdeographFontFamily="Droid Sans" /> + app:mapbox_localIdeographFontFamily="sans-serif" /> diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/descriptions.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/descriptions.xml index 7acd8b1ef8..a13dd5d876 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/descriptions.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/descriptions.xml @@ -67,5 +67,5 @@ Use TextureView to render the map Resize a map rendered on a TextureView Animate a map rendered on a TextureView - Suzhou using Droid Sans for Chinese glyphs + Suzhou using local sans-serif for Chinese glyphs \ No newline at end of file -- cgit v1.2.1 From 6b535f70cee3646a998bd439e6427724b0136bcc Mon Sep 17 00:00:00 2001 From: paczos Date: Thu, 14 Dec 2017 15:45:54 +0100 Subject: [android] added map touch listeners api based on lists --- .../mapbox/mapboxsdk/maps/MapGestureDetector.java | 139 +++++++++++++++++---- .../java/com/mapbox/mapboxsdk/maps/MapView.java | 48 ++++++- .../java/com/mapbox/mapboxsdk/maps/MapboxMap.java | 126 +++++++++++++++++-- .../mapboxsdk/maps/MapTouchListenersTest.java | 95 ++++++++++++++ 4 files changed, 372 insertions(+), 36 deletions(-) create mode 100644 platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/MapTouchListenersTest.java diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java index 489199e422..6424de342e 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapGestureDetector.java @@ -26,6 +26,8 @@ import com.mapbox.services.android.telemetry.MapboxTelemetry; import com.mapbox.services.android.telemetry.utils.MathUtils; import com.mapbox.services.android.telemetry.utils.TelemetryUtils; +import java.util.concurrent.CopyOnWriteArrayList; + import static com.mapbox.mapboxsdk.maps.MapboxMap.OnCameraMoveStartedListener.REASON_API_GESTURE; /** @@ -43,16 +45,30 @@ final class MapGestureDetector { private final AnnotationManager annotationManager; private final CameraChangeDispatcher cameraChangeDispatcher; - private final GestureDetectorCompat gestureDetector; - private final ScaleGestureDetector scaleGestureDetector; - private final RotateGestureDetector rotateGestureDetector; - private final ShoveGestureDetector shoveGestureDetector; + private GestureDetectorCompat gestureDetector; + private ScaleGestureDetector scaleGestureDetector; + private RotateGestureDetector rotateGestureDetector; + private ShoveGestureDetector shoveGestureDetector; + // deprecated map touch API private MapboxMap.OnMapClickListener onMapClickListener; private MapboxMap.OnMapLongClickListener onMapLongClickListener; private MapboxMap.OnFlingListener onFlingListener; private MapboxMap.OnScrollListener onScrollListener; + // new map touch API + private final CopyOnWriteArrayList onMapClickListenerList + = new CopyOnWriteArrayList<>(); + + private final CopyOnWriteArrayList onMapLongClickListenerList + = new CopyOnWriteArrayList<>(); + + private final CopyOnWriteArrayList onFlingListenerList + = new CopyOnWriteArrayList<>(); + + private final CopyOnWriteArrayList onScrollListenerList + = new CopyOnWriteArrayList<>(); + private PointF focalPoint; private boolean twoTap; @@ -81,12 +97,14 @@ final class MapGestureDetector { this.cameraChangeDispatcher = cameraChangeDispatcher; // Touch gesture detectors - gestureDetector = new GestureDetectorCompat(context, new GestureListener()); - gestureDetector.setIsLongpressEnabled(true); - scaleGestureDetector = new ScaleGestureDetector(context, new ScaleGestureListener()); - ScaleGestureDetectorCompat.setQuickScaleEnabled(scaleGestureDetector, true); - rotateGestureDetector = new RotateGestureDetector(context, new RotateGestureListener()); - shoveGestureDetector = new ShoveGestureDetector(context, new ShoveGestureListener()); + if (context != null) { + gestureDetector = new GestureDetectorCompat(context, new GestureListener()); + gestureDetector.setIsLongpressEnabled(true); + scaleGestureDetector = new ScaleGestureDetector(context, new ScaleGestureListener()); + ScaleGestureDetectorCompat.setQuickScaleEnabled(scaleGestureDetector, true); + rotateGestureDetector = new RotateGestureDetector(context, new RotateGestureListener()); + shoveGestureDetector = new ShoveGestureDetector(context, new ShoveGestureListener()); + } } /** @@ -287,7 +305,6 @@ final class MapGestureDetector { return false; } - /** * Responsible for handling one finger gestures. */ @@ -355,10 +372,7 @@ final class MapGestureDetector { annotationManager.deselectMarkers(); } - // notify app of map click - if (onMapClickListener != null) { - onMapClickListener.onMapClick(projection.fromScreenLocation(tapPoint)); - } + notifyOnMapClickListeners(tapPoint); } MapboxTelemetry.getInstance().pushEvent(MapboxEventWrapper.buildMapClickEvent( @@ -370,9 +384,10 @@ final class MapGestureDetector { @Override public void onLongPress(MotionEvent motionEvent) { - if (onMapLongClickListener != null && !quickZoom) { - onMapLongClickListener.onMapLongClick( - projection.fromScreenLocation(new PointF(motionEvent.getX(), motionEvent.getY()))); + PointF longClickPoint = new PointF(motionEvent.getX(), motionEvent.getY()); + + if (!quickZoom) { + notifyOnMapLongClickListeners(longClickPoint); } } @@ -412,9 +427,7 @@ final class MapGestureDetector { // update transformation transform.moveBy(offsetX, offsetY, animationTime); - if (onFlingListener != null) { - onFlingListener.onFling(); - } + notifyOnFlingListeners(); return true; } @@ -449,13 +462,59 @@ final class MapGestureDetector { // Scroll the map transform.moveBy(-distanceX, -distanceY, 0 /*no duration*/); - if (onScrollListener != null) { - onScrollListener.onScroll(); - } + notifyOnScrollListeners(); return true; } } + void notifyOnMapClickListeners(PointF tapPoint) { + // deprecated API + if (onMapClickListener != null) { + onMapClickListener.onMapClick(projection.fromScreenLocation(tapPoint)); + } + + // new API + for (MapboxMap.OnMapClickListener listener : onMapClickListenerList) { + listener.onMapClick(projection.fromScreenLocation(tapPoint)); + } + } + + void notifyOnMapLongClickListeners(PointF longClickPoint) { + // deprecated API + if (onMapLongClickListener != null) { + onMapLongClickListener.onMapLongClick(projection.fromScreenLocation(longClickPoint)); + } + + // new API + for (MapboxMap.OnMapLongClickListener listener : onMapLongClickListenerList) { + listener.onMapLongClick(projection.fromScreenLocation(longClickPoint)); + } + } + + void notifyOnFlingListeners() { + // deprecated API + if (onFlingListener != null) { + onFlingListener.onFling(); + } + + // new API + for (MapboxMap.OnFlingListener listener : onFlingListenerList) { + listener.onFling(); + } + } + + void notifyOnScrollListeners() { + //deprecated API + if (onScrollListener != null) { + onScrollListener.onScroll(); + } + + // new API + for (MapboxMap.OnScrollListener listener : onScrollListenerList) { + listener.onScroll(); + } + } + /** * Responsible for handling two finger gestures and double-tap drag gestures. */ @@ -844,4 +903,36 @@ final class MapGestureDetector { void setOnScrollListener(MapboxMap.OnScrollListener onScrollListener) { this.onScrollListener = onScrollListener; } + + void addOnMapClickListener(MapboxMap.OnMapClickListener onMapClickListener) { + onMapClickListenerList.add(onMapClickListener); + } + + void removeOnMapClickListener(MapboxMap.OnMapClickListener onMapClickListener) { + onMapClickListenerList.remove(onMapClickListener); + } + + void addOnMapLongClickListener(MapboxMap.OnMapLongClickListener onMapLongClickListener) { + onMapLongClickListenerList.add(onMapLongClickListener); + } + + void removeOnMapLongClickListener(MapboxMap.OnMapLongClickListener onMapLongClickListener) { + onMapLongClickListenerList.remove(onMapLongClickListener); + } + + void addOnFlingListener(MapboxMap.OnFlingListener onFlingListener) { + onFlingListenerList.add(onFlingListener); + } + + void removeOnFlingListener(MapboxMap.OnFlingListener onFlingListener) { + onFlingListenerList.remove(onFlingListener); + } + + void addOnScrollListener(MapboxMap.OnScrollListener onScrollListener) { + onScrollListenerList.add(onScrollListener); + } + + void removeOnScrollListener(MapboxMap.OnScrollListener onScrollListener) { + onScrollListenerList.remove(onScrollListener); + } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java index 80a3ce5bb3..77d2ac0e28 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java @@ -908,24 +908,64 @@ public class MapView extends FrameLayout { private class RegisterTouchListener implements MapboxMap.OnRegisterTouchListener { @Override - public void onRegisterMapClickListener(MapboxMap.OnMapClickListener listener) { + public void onSetMapClickListener(MapboxMap.OnMapClickListener listener) { mapGestureDetector.setOnMapClickListener(listener); } @Override - public void onRegisterMapLongClickListener(MapboxMap.OnMapLongClickListener listener) { + public void onAddMapClickListener(MapboxMap.OnMapClickListener listener) { + mapGestureDetector.addOnMapClickListener(listener); + } + + @Override + public void onRemoveMapClickListener(MapboxMap.OnMapClickListener listener) { + mapGestureDetector.removeOnMapClickListener(listener); + } + + @Override + public void onSetMapLongClickListener(MapboxMap.OnMapLongClickListener listener) { mapGestureDetector.setOnMapLongClickListener(listener); } @Override - public void onRegisterScrollListener(MapboxMap.OnScrollListener listener) { + public void onAddMapLongClickListener(MapboxMap.OnMapLongClickListener listener) { + mapGestureDetector.addOnMapLongClickListener(listener); + } + + @Override + public void onRemoveMapLongClickListener(MapboxMap.OnMapLongClickListener listener) { + mapGestureDetector.removeOnMapLongClickListener(listener); + } + + @Override + public void onSetScrollListener(MapboxMap.OnScrollListener listener) { mapGestureDetector.setOnScrollListener(listener); } @Override - public void onRegisterFlingListener(MapboxMap.OnFlingListener listener) { + public void onAddScrollListener(MapboxMap.OnScrollListener listener) { + mapGestureDetector.addOnScrollListener(listener); + } + + @Override + public void onRemoveScrollListener(MapboxMap.OnScrollListener listener) { + mapGestureDetector.removeOnScrollListener(listener); + } + + @Override + public void onSetFlingListener(MapboxMap.OnFlingListener listener) { mapGestureDetector.setOnFlingListener(listener); } + + @Override + public void onAddFlingListener(MapboxMap.OnFlingListener listener) { + mapGestureDetector.addOnFlingListener(listener); + } + + @Override + public void onRemoveFlingListener(MapboxMap.OnFlingListener listener) { + mapGestureDetector.removeOnFlingListener(listener); + } } private static class MapZoomControllerListener implements ZoomButtonsController.OnZoomListener { diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java index ad5a5a4c4a..4da2f63eeb 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java @@ -1897,9 +1897,34 @@ public final class MapboxMap { * * @param listener The callback that's invoked when the map is scrolled. * To unset the callback, use null. + * + * @deprecated Use {@link #addOnScrollListener(OnScrollListener)} instead. */ + @Deprecated public void setOnScrollListener(@Nullable OnScrollListener listener) { - onRegisterTouchListener.onRegisterScrollListener(listener); + onRegisterTouchListener.onSetScrollListener(listener); + } + + /** + * Adds a callback that's invoked when the map is scrolled. + * + * @param listener The callback that's invoked when the map is scrolled. + * To unset the callback, use null. + * + */ + public void addOnScrollListener(@Nullable OnScrollListener listener) { + onRegisterTouchListener.onAddScrollListener(listener); + } + + /** + * Removes a callback that's invoked when the map is scrolled. + * + * @param listener The callback that's invoked when the map is scrolled. + * To unset the callback, use null. + * + */ + public void removeOnScrollListener(@Nullable OnScrollListener listener) { + onRegisterTouchListener.onRemoveScrollListener(listener); } /** @@ -1907,9 +1932,32 @@ public final class MapboxMap { * * @param listener The callback that's invoked when the map is flinged. * To unset the callback, use null. + * + * @deprecated Use {@link #addOnFlingListener(OnFlingListener)} instead. */ + @Deprecated public void setOnFlingListener(@Nullable OnFlingListener listener) { - onRegisterTouchListener.onRegisterFlingListener(listener); + onRegisterTouchListener.onSetFlingListener(listener); + } + + /** + * Adds a callback that's invoked when the map is flinged. + * + * @param listener The callback that's invoked when the map is flinged. + * To unset the callback, use null. + */ + public void addOnFlingListener(@Nullable OnFlingListener listener) { + onRegisterTouchListener.onAddFlingListener(listener); + } + + /** + * Removes a callback that's invoked when the map is flinged. + * + * @param listener The callback that's invoked when the map is flinged. + * To unset the callback, use null. + */ + public void removeOnFlingListener(@Nullable OnFlingListener listener) { + onRegisterTouchListener.onRemoveFlingListener(listener); } /** @@ -1917,9 +1965,32 @@ public final class MapboxMap { * * @param listener The callback that's invoked when the user clicks on the map view. * To unset the callback, use null. + * + * @deprecated Use {@link #addOnMapClickListener(OnMapClickListener)} instead. */ + @Deprecated public void setOnMapClickListener(@Nullable OnMapClickListener listener) { - onRegisterTouchListener.onRegisterMapClickListener(listener); + onRegisterTouchListener.onSetMapClickListener(listener); + } + + /** + * Adds a callback that's invoked when the user clicks on the map view. + * + * @param listener The callback that's invoked when the user clicks on the map view. + * To unset the callback, use null. + */ + public void addOnMapClickListener(@Nullable OnMapClickListener listener) { + onRegisterTouchListener.onAddMapClickListener(listener); + } + + /** + * Removes a callback that's invoked when the user clicks on the map view. + * + * @param listener The callback that's invoked when the user clicks on the map view. + * To unset the callback, use null. + */ + public void removeOnMapClickListener(@Nullable OnMapClickListener listener) { + onRegisterTouchListener.onRemoveMapClickListener(listener); } /** @@ -1927,9 +1998,32 @@ public final class MapboxMap { * * @param listener The callback that's invoked when the user long clicks on the map view. * To unset the callback, use null. + * + * @deprecated Use {@link #addOnMapLongClickListener(OnMapLongClickListener)} instead. */ + @Deprecated public void setOnMapLongClickListener(@Nullable OnMapLongClickListener listener) { - onRegisterTouchListener.onRegisterMapLongClickListener(listener); + onRegisterTouchListener.onSetMapLongClickListener(listener); + } + + /** + * Adds a callback that's invoked when the user long clicks on the map view. + * + * @param listener The callback that's invoked when the user long clicks on the map view. + * To unset the callback, use null. + */ + public void addOnMapLongClickListener(@Nullable OnMapLongClickListener listener) { + onRegisterTouchListener.onAddMapLongClickListener(listener); + } + + /** + * Removes a callback that's invoked when the user long clicks on the map view. + * + * @param listener The callback that's invoked when the user long clicks on the map view. + * To unset the callback, use null. + */ + public void removeOnMapLongClickListener(@Nullable OnMapLongClickListener listener) { + onRegisterTouchListener.onRemoveMapLongClickListener(listener); } /** @@ -2299,13 +2393,29 @@ public final class MapboxMap { * related to touch and click events. */ interface OnRegisterTouchListener { - void onRegisterMapClickListener(OnMapClickListener listener); + void onSetMapClickListener(OnMapClickListener listener); + + void onAddMapClickListener(OnMapClickListener listener); + + void onRemoveMapClickListener(OnMapClickListener listener); + + void onSetMapLongClickListener(OnMapLongClickListener listener); + + void onAddMapLongClickListener(OnMapLongClickListener listener); + + void onRemoveMapLongClickListener(OnMapLongClickListener listener); + + void onSetScrollListener(OnScrollListener listener); + + void onAddScrollListener(OnScrollListener listener); + + void onRemoveScrollListener(OnScrollListener listener); - void onRegisterMapLongClickListener(OnMapLongClickListener listener); + void onSetFlingListener(OnFlingListener listener); - void onRegisterScrollListener(OnScrollListener listener); + void onAddFlingListener(OnFlingListener listener); - void onRegisterFlingListener(OnFlingListener listener); + void onRemoveFlingListener(OnFlingListener listener); } /** diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/MapTouchListenersTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/MapTouchListenersTest.java new file mode 100644 index 0000000000..eeb00355bd --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/MapTouchListenersTest.java @@ -0,0 +1,95 @@ +package com.mapbox.mapboxsdk.maps; + +import android.graphics.PointF; + +import com.mapbox.mapboxsdk.geometry.LatLng; + +import org.junit.Test; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +public class MapTouchListenersTest { + + @Test + public void onMapClickListenerTest() throws Exception { + LatLng latLng = new LatLng(); + PointF pointF = new PointF(); + + Projection projection = mock(Projection.class); + when(projection.fromScreenLocation(pointF)).thenReturn(latLng); + MapGestureDetector mapGestureDetector = new MapGestureDetector(null, + null, projection, null, null, null, null); + + MapboxMap.OnMapClickListener listener = mock(MapboxMap.OnMapClickListener.class); + mapGestureDetector.addOnMapClickListener(listener); + mapGestureDetector.notifyOnMapClickListeners(pointF); + verify(listener, times(1)).onMapClick(latLng); + + mapGestureDetector.removeOnMapClickListener(listener); + mapGestureDetector.notifyOnMapClickListeners(pointF); + verify(listener, times(1)).onMapClick(latLng); + } + + @Test + public void onMapLongClickListenerTest() throws Exception { + LatLng latLng = new LatLng(); + PointF pointF = new PointF(); + + Projection projection = mock(Projection.class); + when(projection.fromScreenLocation(pointF)).thenReturn(latLng); + MapGestureDetector mapGestureDetector = new MapGestureDetector(null, + null, projection, null, null, null, null); + + MapboxMap.OnMapLongClickListener listener = mock(MapboxMap.OnMapLongClickListener.class); + mapGestureDetector.addOnMapLongClickListener(listener); + mapGestureDetector.notifyOnMapLongClickListeners(pointF); + verify(listener, times(1)).onMapLongClick(latLng); + + mapGestureDetector.removeOnMapLongClickListener(listener); + mapGestureDetector.notifyOnMapLongClickListeners(pointF); + verify(listener, times(1)).onMapLongClick(latLng); + } + + @Test + public void onFlingListenerTest() throws Exception { + LatLng latLng = new LatLng(); + PointF pointF = new PointF(); + + Projection projection = mock(Projection.class); + when(projection.fromScreenLocation(pointF)).thenReturn(latLng); + MapGestureDetector mapGestureDetector = new MapGestureDetector(null, + null, projection, null, null, null, null); + + MapboxMap.OnFlingListener listener = mock(MapboxMap.OnFlingListener.class); + mapGestureDetector.addOnFlingListener(listener); + mapGestureDetector.notifyOnFlingListeners(); + verify(listener, times(1)).onFling(); + + mapGestureDetector.removeOnFlingListener(listener); + mapGestureDetector.notifyOnFlingListeners(); + verify(listener, times(1)).onFling(); + } + + @Test + public void onScrollListenerTest() throws Exception { + LatLng latLng = new LatLng(); + PointF pointF = new PointF(); + + Projection projection = mock(Projection.class); + when(projection.fromScreenLocation(pointF)).thenReturn(latLng); + MapGestureDetector mapGestureDetector = new MapGestureDetector(null, + null, projection, null, null, null, null); + + MapboxMap.OnScrollListener listener = mock(MapboxMap.OnScrollListener.class); + mapGestureDetector.addOnScrollListener(listener); + mapGestureDetector.notifyOnScrollListeners(); + verify(listener, times(1)).onScroll(); + + mapGestureDetector.removeOnScrollListener(listener); + mapGestureDetector.notifyOnScrollListeners(); + verify(listener, times(1)).onScroll(); + } +} -- cgit v1.2.1 From c70103033eece8d4c6497342c73b93294267b604 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Wed, 20 Dec 2017 07:27:18 +0100 Subject: [android] - update changelog for 5.3.0 --- platform/android/CHANGELOG.md | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/platform/android/CHANGELOG.md b/platform/android/CHANGELOG.md index 352cfa9d2c..c22072e1a0 100644 --- a/platform/android/CHANGELOG.md +++ b/platform/android/CHANGELOG.md @@ -2,9 +2,21 @@ Mapbox welcomes participation and contributions from everyone. If you'd like to do so please see the [`Contributing Guide`](https://github.com/mapbox/mapbox-gl-native/blob/master/CONTRIBUTING.md) first to get started. -## 5.3.0 - TBA - -* TBA +## 5.3.0 - December 20, 2017 + - Add support for TinySDF [#10706](https://github.com/mapbox/mapbox-gl-native/pull/10706) + - Save restore MyLocationViewSettings [#10746](https://github.com/mapbox/mapbox-gl-native/pull/10746) + - Post animation callback invocation [#10664](https://github.com/mapbox/mapbox-gl-native/pull/10664) + - Allow configuring Http logging [#10681](https://github.com/mapbox/mapbox-gl-native/pull/10681) + - Fix reverse scale gesture [#10688](https://github.com/mapbox/mapbox-gl-native/pull/10688) + - Update offline region metadata documentation [#10693](https://github.com/mapbox/mapbox-gl-native/pull/10693) + - Post camera listener invocation [#10690](https://github.com/mapbox/mapbox-gl-native/pull/10690) + - Activate filesource for offline region creation [#10718](https://github.com/mapbox/mapbox-gl-native/pull/10718) + - Update Spanish/Vietnamese translations [#10740](https://github.com/mapbox/mapbox-gl-native/pull/10740) + - Update instrumented make target [#10724](https://github.com/mapbox/mapbox-gl-native/pull/10724) + - Remove black flash on start for fragments [#10717](https://github.com/mapbox/mapbox-gl-native/pull/10717) + - CompassView decode crash [#10717](https://github.com/mapbox/mapbox-gl-native/pull/10717) + - Android SDK renaming [#10609](https://github.com/mapbox/mapbox-gl-native/pull/10609) + - Map touch listener based lists [#10749](https://github.com/mapbox/mapbox-gl-native/pull/10749) ## 5.2.1 - December 6, 2017 - Close race condition in RunLoop [#10537](https://github.com/mapbox/mapbox-gl-native/pull/10537) -- cgit v1.2.1 From 7f5dfb16bca7ab1191beb06940ef75ab4f197ec0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguy=E1=BB=85n?= Date: Wed, 20 Dec 2017 02:26:05 -0800 Subject: Update iOS, macOS SDK translations (#10738) * [ios, macos] Updated Bulgarian, Spanish, Vietnamese localizations * [ios, macos] Added Arabic localization * [ios, macos] Updated localizations --- .../resources/ar.lproj/Foundation.stringsdict | 78 +++++++++++++++++++++ .../darwin/resources/bg.lproj/Foundation.strings | 7 +- .../darwin/resources/ca.lproj/Foundation.strings | Bin 6453 -> 13170 bytes .../darwin/resources/de.lproj/Foundation.strings | Bin 6430 -> 13082 bytes .../darwin/resources/es.lproj/Foundation.strings | 8 ++- .../darwin/resources/fr.lproj/Foundation.strings | Bin 6480 -> 13222 bytes .../darwin/resources/ja.lproj/Foundation.strings | Bin 6546 -> 12488 bytes .../darwin/resources/lt.lproj/Foundation.strings | Bin 6809 -> 13652 bytes .../resources/pt-BR.lproj/Foundation.strings | Bin 6511 -> 13274 bytes .../darwin/resources/ru.lproj/Foundation.strings | Bin 7163 -> 13398 bytes .../darwin/resources/sv.lproj/Foundation.strings | Bin 6453 -> 13138 bytes .../darwin/resources/uk.lproj/Foundation.strings | Bin 7617 -> 13904 bytes .../darwin/resources/vi.lproj/Foundation.strings | 8 ++- .../resources/zh-Hans.lproj/Foundation.strings | Bin 6603 -> 12528 bytes .../resources/zh-Hant.lproj/Foundation.strings | Bin 6558 -> 12496 bytes platform/ios/app/ar.lproj/Localizable.strings | 0 platform/ios/ios.xcodeproj/project.pbxproj | 5 ++ .../ios/resources/bg.lproj/Localizable.strings | 53 +++++++++----- .../ios/resources/bg.lproj/Localizable.stringsdict | 38 +++++++--- .../ios/resources/es.lproj/Localizable.strings | Bin 3935 -> 8156 bytes .../ios/resources/vi.lproj/Localizable.strings | Bin 4284 -> 8122 bytes platform/macos/app/ar.lproj/Localizable.strings | 0 platform/macos/macos.xcodeproj/project.pbxproj | 5 ++ platform/macos/sdk/es.lproj/Localizable.strings | Bin 865 -> 1716 bytes platform/macos/sdk/vi.lproj/Localizable.strings | Bin 929 -> 1654 bytes 25 files changed, 174 insertions(+), 28 deletions(-) create mode 100644 platform/darwin/resources/ar.lproj/Foundation.stringsdict create mode 100644 platform/ios/app/ar.lproj/Localizable.strings create mode 100644 platform/macos/app/ar.lproj/Localizable.strings diff --git a/platform/darwin/resources/ar.lproj/Foundation.stringsdict b/platform/darwin/resources/ar.lproj/Foundation.stringsdict new file mode 100644 index 0000000000..1c1cbc6ecd --- /dev/null +++ b/platform/darwin/resources/ar.lproj/Foundation.stringsdict @@ -0,0 +1,78 @@ + + + + + COORD_DEG_LONG + + NSStringLocalizedFormatKey + %#@degrees@ + degrees + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + zero + 0 درجة + one + درجة واحدة + two + درجتان + few + %d درجات + many + %d درجة + other + %d درجة + + + COORD_MIN_LONG + + NSStringLocalizedFormatKey + %#@minutes@ + minutes + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + zero + أقل من دقيقة + one + دقيقة واحدة + two + دقيقتان + few + %d دقائق + many + %d دقيقة + other + %d دقيقة + + + COORD_SEC_LONG + + NSStringLocalizedFormatKey + %#@seconds@ + seconds + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + zero + أقل من ثانية + one + ثانية واحدة + two + ثانيتان + few + %d ثوان + many + %d ثانية + other + %d ثانية + + + + diff --git a/platform/darwin/resources/bg.lproj/Foundation.strings b/platform/darwin/resources/bg.lproj/Foundation.strings index f2a9c6eae0..677e4de444 100644 --- a/platform/darwin/resources/bg.lproj/Foundation.strings +++ b/platform/darwin/resources/bg.lproj/Foundation.strings @@ -1,4 +1,4 @@ -/* Clock position format, long: {hours} o’clock */ +/* Clock position format, long: {hours} o’clock */ "CLOCK_FMT_LONG" = "%@ часа"; /* Clock position format, medium: {hours} o’clock */ @@ -289,3 +289,8 @@ /* West longitude format, short: {longitude} */ "COORD_W_SHORT" = "%@З"; +/* OpenStreetMap full name attribution */ +"OSM_FULL_NAME" = "OpenStreetMap"; + +/* OpenStreetMap short name attribution */ +"OSM_SHORT_NAME" = "OSM"; diff --git a/platform/darwin/resources/ca.lproj/Foundation.strings b/platform/darwin/resources/ca.lproj/Foundation.strings index f86442f26f..e60546d3c2 100644 Binary files a/platform/darwin/resources/ca.lproj/Foundation.strings and b/platform/darwin/resources/ca.lproj/Foundation.strings differ diff --git a/platform/darwin/resources/de.lproj/Foundation.strings b/platform/darwin/resources/de.lproj/Foundation.strings index e871efbf2f..fb4b1e874a 100644 Binary files a/platform/darwin/resources/de.lproj/Foundation.strings and b/platform/darwin/resources/de.lproj/Foundation.strings differ diff --git a/platform/darwin/resources/es.lproj/Foundation.strings b/platform/darwin/resources/es.lproj/Foundation.strings index fb76820eb4..760fb5d5c8 100644 --- a/platform/darwin/resources/es.lproj/Foundation.strings +++ b/platform/darwin/resources/es.lproj/Foundation.strings @@ -1,4 +1,4 @@ -/* Clock position format, long: {hours} o’clock */ +/* Clock position format, long: {hours} o’clock */ "CLOCK_FMT_LONG" = "%@ en punto"; /* Clock position format, medium: {hours} o’clock */ @@ -289,3 +289,9 @@ /* West longitude format, short: {longitude} */ "COORD_W_SHORT" = "%@O"; +/* OpenStreetMap full name attribution */ +"OSM_FULL_NAME" = "OpenStreetMap"; + +/* OpenStreetMap short name attribution */ +"OSM_SHORT_NAME" = "OSM"; + diff --git a/platform/darwin/resources/fr.lproj/Foundation.strings b/platform/darwin/resources/fr.lproj/Foundation.strings index d2f6c1f6df..ed38a264cf 100644 Binary files a/platform/darwin/resources/fr.lproj/Foundation.strings and b/platform/darwin/resources/fr.lproj/Foundation.strings differ diff --git a/platform/darwin/resources/ja.lproj/Foundation.strings b/platform/darwin/resources/ja.lproj/Foundation.strings index b6dd83dac1..52dda1557f 100644 Binary files a/platform/darwin/resources/ja.lproj/Foundation.strings and b/platform/darwin/resources/ja.lproj/Foundation.strings differ diff --git a/platform/darwin/resources/lt.lproj/Foundation.strings b/platform/darwin/resources/lt.lproj/Foundation.strings index 68e7e14bda..1151a559bd 100644 Binary files a/platform/darwin/resources/lt.lproj/Foundation.strings and b/platform/darwin/resources/lt.lproj/Foundation.strings differ diff --git a/platform/darwin/resources/pt-BR.lproj/Foundation.strings b/platform/darwin/resources/pt-BR.lproj/Foundation.strings index 71a7f7e4a5..bf0e126d79 100644 Binary files a/platform/darwin/resources/pt-BR.lproj/Foundation.strings and b/platform/darwin/resources/pt-BR.lproj/Foundation.strings differ diff --git a/platform/darwin/resources/ru.lproj/Foundation.strings b/platform/darwin/resources/ru.lproj/Foundation.strings index fd9eb04ada..f029952595 100644 Binary files a/platform/darwin/resources/ru.lproj/Foundation.strings and b/platform/darwin/resources/ru.lproj/Foundation.strings differ diff --git a/platform/darwin/resources/sv.lproj/Foundation.strings b/platform/darwin/resources/sv.lproj/Foundation.strings index cac46cac1a..4391ec7f95 100644 Binary files a/platform/darwin/resources/sv.lproj/Foundation.strings and b/platform/darwin/resources/sv.lproj/Foundation.strings differ diff --git a/platform/darwin/resources/uk.lproj/Foundation.strings b/platform/darwin/resources/uk.lproj/Foundation.strings index 32a006829f..d9d9ad32e1 100644 Binary files a/platform/darwin/resources/uk.lproj/Foundation.strings and b/platform/darwin/resources/uk.lproj/Foundation.strings differ diff --git a/platform/darwin/resources/vi.lproj/Foundation.strings b/platform/darwin/resources/vi.lproj/Foundation.strings index f29f8e8730..d6b161585c 100644 --- a/platform/darwin/resources/vi.lproj/Foundation.strings +++ b/platform/darwin/resources/vi.lproj/Foundation.strings @@ -1,4 +1,4 @@ -/* Clock position format, long: {hours} o’clock */ +/* Clock position format, long: {hours} o’clock */ "CLOCK_FMT_LONG" = "%@ giờ"; /* Clock position format, medium: {hours} o’clock */ @@ -289,3 +289,9 @@ /* West longitude format, short: {longitude} */ "COORD_W_SHORT" = "%@T"; +/* OpenStreetMap full name attribution */ +"OSM_FULL_NAME" = "OpenStreetMap"; + +/* OpenStreetMap short name attribution */ +"OSM_SHORT_NAME" = "OSM"; + diff --git a/platform/darwin/resources/zh-Hans.lproj/Foundation.strings b/platform/darwin/resources/zh-Hans.lproj/Foundation.strings index 7dec6184e5..e69b65f2ac 100644 Binary files a/platform/darwin/resources/zh-Hans.lproj/Foundation.strings and b/platform/darwin/resources/zh-Hans.lproj/Foundation.strings differ diff --git a/platform/darwin/resources/zh-Hant.lproj/Foundation.strings b/platform/darwin/resources/zh-Hant.lproj/Foundation.strings index 8a02bcfac0..2fa92e1c6e 100644 Binary files a/platform/darwin/resources/zh-Hant.lproj/Foundation.strings and b/platform/darwin/resources/zh-Hant.lproj/Foundation.strings differ diff --git a/platform/ios/app/ar.lproj/Localizable.strings b/platform/ios/app/ar.lproj/Localizable.strings new file mode 100644 index 0000000000..e69de29bb2 diff --git a/platform/ios/ios.xcodeproj/project.pbxproj b/platform/ios/ios.xcodeproj/project.pbxproj index ad17e00673..cc56a73e7d 100644 --- a/platform/ios/ios.xcodeproj/project.pbxproj +++ b/platform/ios/ios.xcodeproj/project.pbxproj @@ -842,6 +842,8 @@ DA737AE91E5917C300AD2CDE /* uk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/Localizable.strings; sourceTree = ""; }; DA737AEA1E5917EF00AD2CDE /* uk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/Root.strings; sourceTree = ""; }; DA737EE01D056A4E005BDA16 /* MGLMapViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLMapViewDelegate.h; sourceTree = ""; }; + DA80E9601FE84AD90065FC9B /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = ""; }; + DA80E9611FE84AEF0065FC9B /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ar; path = ar.lproj/Foundation.stringsdict; sourceTree = ""; }; DA821D041CCC6D59007508D4 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; DA821D051CCC6D59007508D4 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; }; DA8847D21CBAF91600AB86E3 /* Mapbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Mapbox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -2131,6 +2133,7 @@ nl, hu, bg, + ar, ); mainGroup = DA1DC9411CB6C1C2006E619F; productRefGroup = DA1DC94B1CB6C1C2006E619F /* Products */; @@ -2546,6 +2549,7 @@ DAE8CCAD1E6E8C70009B5CB0 /* nl */, DA5C09BA1EFC48550056B178 /* hu */, DA3389651FA3EE1B001EA329 /* bg */, + DA80E9601FE84AD90065FC9B /* ar */, ); name = Localizable.strings; sourceTree = ""; @@ -2636,6 +2640,7 @@ DACFE7981F66EA2100630DA8 /* vi */, DA3389671FA3EE2F001EA329 /* bg */, DA33896B1FA3EF4A001EA329 /* hu */, + DA80E9611FE84AEF0065FC9B /* ar */, ); name = Foundation.stringsdict; sourceTree = ""; diff --git a/platform/ios/resources/bg.lproj/Localizable.strings b/platform/ios/resources/bg.lproj/Localizable.strings index e9b35e4438..777f4fe563 100644 --- a/platform/ios/resources/bg.lproj/Localizable.strings +++ b/platform/ios/resources/bg.lproj/Localizable.strings @@ -2,16 +2,16 @@ "ANNOTATION_A11Y_HINT" = "Показва повече инфо"; /* No comment provided by engineer. */ -"API_CLIENT_400_DESC" = "Неуспешна сесия за данни. Оригинална заявка: %@"; +"API_CLIENT_400_DESC" = "Незавършена сесия от данни. Оригинална заявка:%@"; /* No comment provided by engineer. */ -"API_CLIENT_400_REASON" = "Статус кодът беше %ld"; +"API_CLIENT_400_REASON" = "Статус код %ld"; /* No comment provided by engineer. */ "CANCEL" = "Отказ"; /* Accessibility hint for closing the selected annotation’s callout view and returning to the map */ -"CLOSE_CALLOUT_A11Y_HINT" = "Връща към картата"; +"CLOSE_CALLOUT_A11Y_HINT" = "Обратно към картата"; /* Accessibility hint */ "COMPASS_A11Y_HINT" = "Завърта картата в посока север"; @@ -23,17 +23,20 @@ "COMPASS_NORTH" = "С"; /* Instructions in Interface Builder designable; {key}, {plist file name} */ -"DESIGNABLE" = "За да се показва Mapbox карта тук, добави %1$@ към твоя токен за достъп в %2$@\n\nЗа подробни инструкции, виж:"; +"DESIGNABLE" = "За да покажеш Mapbox-хоствана карта тук, задай %1$@ към своя токен за достъп в %2$@\nЗа повече детайли, виж:"; /* Setup documentation URL display string; keep as short as possible */ "FIRST_STEPS_URL" = "mapbox.com/help/first-steps-ios-sdk"; /* Accessibility hint */ -"INFO_A11Y_HINT" = "Показва кредитите, форма за връзка и още"; +"INFO_A11Y_HINT" = "Показва благодарности, форма за обратна връзка и още"; /* Accessibility label */ "INFO_A11Y_LABEL" = "За тази карта"; +/* List separator */ +"LIST_SEPARATOR" = ","; + /* User-friendly error description */ "LOAD_MAP_FAILED_DESC" = "Картата не се зареди поради неизвестна грешка."; @@ -46,23 +49,41 @@ /* Accessibility label */ "MAP_A11Y_LABEL" = "Карта"; -/* Map accessibility value */ -"MAP_A11Y_VALUE" = "Мащаб %1$dх\n@2$ld видима(и) анотация(и)"; +/* Map accessibility value; {number of visible annotations} */ +"MAP_A11Y_VALUE_ANNOTATIONS" = "%ld видима анотация(и)."; + +/* Map accessibility value; {list of visible places} */ +"MAP_A11Y_VALUE_PLACES" = "Видими места: %@."; + +/* Map accessibility value; {number of visible roads} */ +"MAP_A11Y_VALUE_ROADS" = "%ld видим път(я)."; + +/* Map accessibility value; {zoom level} */ +"MAP_A11Y_VALUE_ZOOM" = "Мащаб %dx."; /* User-friendly error description */ "PARSE_STYLE_FAILED_DESC" = "Картата не се зареди поради повреден стил."; +/* Accessibility value indicating that a road is a divided road (dual carriageway) */ +"ROAD_DIVIDED_A11Y_VALUE" = "Разделен път"; + +/* Accessibility value indicating that a road is a one-way road */ +"ROAD_ONEWAY_A11Y_VALUE" = "Еднопосочно"; + +/* String format for accessibility value for road feature; {route number} */ +"ROAD_REF_A11Y_FMT" = "Маршрут %@"; + /* Action sheet title */ -"SDK_NAME" = "Mapbox Maps SDK for iOS"; +"SDK_NAME" = "Mapbox Maps SDK за iOS"; /* Developer-only SDK update notification; {latest version, in format x.x.x} */ -"SDK_UPDATE_AVAILABLE" = "Сега е налична Mapbox Maps SDK for iOS версия %@:"; +"SDK_UPDATE_AVAILABLE" = "Mapbox Maps SDK за iOS версия %@ е вече налична:"; /* User-friendly error description */ "STYLE_NOT_FOUND_DESC" = "Картата не се зареди поради неоткрит или несъвместим стил."; /* Telemetry prompt message */ -"TELEMETRY_DISABLED_MSG" = "Можеш да помогнеш OpenStreetMap и Mapbox да станат по-добри, като предоставиш анонимни данни за потребление."; +/* OpenStreetMap full name attribution */ /* Telemetry prompt button */ "TELEMETRY_DISABLED_OFF" = "Не участвам"; @@ -71,7 +92,7 @@ "TELEMETRY_DISABLED_ON" = "Участвам"; /* Telemetry prompt message */ -"TELEMETRY_ENABLED_MSG" = "Помагаш OpenStreetMap и Mapbox да станат по-добри, като предоставяш анонимни данни за потребление."; +"TELEMETRY_ENABLED_MSG" = "Ти помагаш OpenStreetMap и Mapbox картите да стават по-добри, като предоставяш анонимни данни за употреба."; /* Telemetry prompt button */ "TELEMETRY_ENABLED_OFF" = "Спирам участие"; @@ -80,14 +101,14 @@ "TELEMETRY_ENABLED_ON" = "Продължавам да участвам"; /* Telemetry prompt button */ -"TELEMETRY_MORE" = "Искам още инфо"; +"TELEMETRY_MORE" = "Покажи ми още"; /* Action in attribution sheet */ -"TELEMETRY_NAME" = "Mapbox Телеметрия"; +"TELEMETRY_NAME" = "Mapbox телеметрия"; /* Telemetry prompt title */ -"TELEMETRY_TITLE" = "Направи Mapbox картите по-добри"; +"OSM_FULL_NAME" = "OpenStreetMap"; -/* Default user location annotation title */ -"USER_DOT_TITLE" = "Сега си тук"; +/* OpenStreetMap short name attribution */ +"OSM_SHORT_NAME" = "OSM"; diff --git a/platform/ios/resources/bg.lproj/Localizable.stringsdict b/platform/ios/resources/bg.lproj/Localizable.stringsdict index f155a02acc..8f2afce034 100644 --- a/platform/ios/resources/bg.lproj/Localizable.stringsdict +++ b/platform/ios/resources/bg.lproj/Localizable.stringsdict @@ -2,22 +2,26 @@ - MAP_A11Y_VALUE + MAP_A11Y_VALUE_ANNOTATIONS NSStringLocalizedFormatKey - %#@level@ -%#@count@ - level + %#@count@ + count NSStringFormatSpecTypeKey NSStringPluralRuleType NSStringFormatValueTypeKey - d + ld one - Мащаб %dx + %d видими анотации other - Мащаб %dx + %d видими анотации + + MAP_A11Y_VALUE_ROADS + + NSStringLocalizedFormatKey + %#@count@ count NSStringFormatSpecTypeKey @@ -25,9 +29,25 @@ NSStringFormatValueTypeKey ld one - %d видима анотация + %d път видимост other - %d видими анотации + %d пътища видимост + + + MAP_A11Y_VALUE_ZOOM + + NSStringLocalizedFormatKey + %#@level@ + level + + NSStringFormatSpecTypeKey + NSStringPluralRuleType + NSStringFormatValueTypeKey + d + one + Мащаб %dx + other + Мащаб %dx diff --git a/platform/ios/resources/es.lproj/Localizable.strings b/platform/ios/resources/es.lproj/Localizable.strings index 5f88eeb5e9..43f3ec3d6e 100644 Binary files a/platform/ios/resources/es.lproj/Localizable.strings and b/platform/ios/resources/es.lproj/Localizable.strings differ diff --git a/platform/ios/resources/vi.lproj/Localizable.strings b/platform/ios/resources/vi.lproj/Localizable.strings index 23e87b8c02..762a2b2ddb 100644 Binary files a/platform/ios/resources/vi.lproj/Localizable.strings and b/platform/ios/resources/vi.lproj/Localizable.strings differ diff --git a/platform/macos/app/ar.lproj/Localizable.strings b/platform/macos/app/ar.lproj/Localizable.strings new file mode 100644 index 0000000000..e69de29bb2 diff --git a/platform/macos/macos.xcodeproj/project.pbxproj b/platform/macos/macos.xcodeproj/project.pbxproj index e243658e9d..cc49c5bbf4 100644 --- a/platform/macos/macos.xcodeproj/project.pbxproj +++ b/platform/macos/macos.xcodeproj/project.pbxproj @@ -437,6 +437,8 @@ DA737AEC1E59180E00AD2CDE /* uk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = uk; path = uk.lproj/Localizable.strings; sourceTree = ""; }; DA7DC9801DED5F5C0027472F /* MGLVectorSource_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLVectorSource_Private.h; sourceTree = ""; }; DA7DC9821DED647F0027472F /* MGLRasterSource_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLRasterSource_Private.h; sourceTree = ""; }; + DA80E95D1FE84A300065FC9B /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = ar.lproj/Localizable.strings; sourceTree = ""; }; + DA80E95F1FE84A540065FC9B /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = ar; path = ar.lproj/Foundation.stringsdict; sourceTree = ""; }; DA839E921CC2E3400062CAFB /* Mapbox GL.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Mapbox GL.app"; sourceTree = BUILT_PRODUCTS_DIR; }; DA839E951CC2E3400062CAFB /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; DA839E961CC2E3400062CAFB /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; @@ -1364,6 +1366,7 @@ nl, hu, bg, + ar, ); mainGroup = DA839E891CC2E3400062CAFB; productRefGroup = DA839E931CC2E3400062CAFB /* Products */; @@ -1594,6 +1597,7 @@ DAE8CCAB1E6E8B72009B5CB0 /* nl */, DA704CBE1F637531004B3F28 /* hu */, DA3389611FA3EDCE001EA329 /* bg */, + DA80E95D1FE84A300065FC9B /* ar */, ); name = Localizable.strings; sourceTree = ""; @@ -1687,6 +1691,7 @@ DACFE7971F66EA0C00630DA8 /* vi */, DA3389631FA3EDF5001EA329 /* bg */, DA33896C1FA3EF51001EA329 /* hu */, + DA80E95F1FE84A540065FC9B /* ar */, ); name = Foundation.stringsdict; sourceTree = ""; diff --git a/platform/macos/sdk/es.lproj/Localizable.strings b/platform/macos/sdk/es.lproj/Localizable.strings index 8a9b51feb1..bf61010704 100644 Binary files a/platform/macos/sdk/es.lproj/Localizable.strings and b/platform/macos/sdk/es.lproj/Localizable.strings differ diff --git a/platform/macos/sdk/vi.lproj/Localizable.strings b/platform/macos/sdk/vi.lproj/Localizable.strings index 95e327d689..f130d2f350 100644 Binary files a/platform/macos/sdk/vi.lproj/Localizable.strings and b/platform/macos/sdk/vi.lproj/Localizable.strings differ -- cgit v1.2.1 From f644d188be719fc6a7a5e6b66b2a69c42e28a970 Mon Sep 17 00:00:00 2001 From: Fabian Guerra Date: Thu, 14 Dec 2017 16:44:00 -0600 Subject: [ios, macos] Remove duplicated variables between MGLMapSnapshotOptions and MGLMapSnapshotter --- platform/darwin/src/MGLMapSnapshotter.h | 39 +-------- platform/darwin/src/MGLMapSnapshotter.mm | 138 ++++++++----------------------- 2 files changed, 35 insertions(+), 142 deletions(-) diff --git a/platform/darwin/src/MGLMapSnapshotter.h b/platform/darwin/src/MGLMapSnapshotter.h index 978e19dc20..fc68204a7d 100644 --- a/platform/darwin/src/MGLMapSnapshotter.h +++ b/platform/darwin/src/MGLMapSnapshotter.h @@ -190,44 +190,9 @@ MGL_EXPORT - (void)cancel; /** - The zoom level. - - The default zoom level is 0. If this property is non-zero and the camera - property is non-nil, the camera’s altitude is ignored in favor of this - property’s value. - */ -@property (nonatomic) double zoomLevel; - -/** - A camera representing the viewport visible in the snapshot. - - If this property is non-nil and the `coordinateBounds` property is set to a - non-empty coordinate bounds, the camera’s center coordinate and altitude are - ignored in favor of the `coordinateBounds` property. - */ -@property (nonatomic) MGLMapCamera *camera; - -/** - The coordinate rectangle that encompasses the bounds to capture. - - If this property is non-empty and the camera property is non-nil, the camera’s - center coordinate and altitude are ignored in favor of this property’s value. - */ -@property (nonatomic) MGLCoordinateBounds coordinateBounds; - -/** - URL of the map style to snapshot. - - The URL may be a full HTTP or HTTPS URL, a Mapbox URL indicating the style’s - map ID (`mapbox://styles/{user}/{style}`), or a path to a local file relative - to the application’s resource path. Specify `nil` for the default style. - */ -@property (nonatomic, nullable) NSURL *styleURL; - -/** - The size of the output image, measured in points. + The options to use when generating a map snapshot. */ -@property (nonatomic) CGSize size; +@property (nonatomic) MGLMapSnapshotOptions *options; /** Indicates whether a snapshot is currently being generated. diff --git a/platform/darwin/src/MGLMapSnapshotter.mm b/platform/darwin/src/MGLMapSnapshotter.mm index 8b54488814..15a8f6c8ca 100644 --- a/platform/darwin/src/MGLMapSnapshotter.mm +++ b/platform/darwin/src/MGLMapSnapshotter.mm @@ -81,7 +81,7 @@ const CGFloat MGLSnapshotterMinimumPixelSize = 64; @end @interface MGLMapSnapshotter() -@property (nonatomic) MGLMapSnapshotOptions *options; + @end @implementation MGLMapSnapshotter { @@ -96,40 +96,9 @@ const CGFloat MGLSnapshotterMinimumPixelSize = 64; { self = [super init]; if (self) { - _options = options; + [self setOptions:options]; _loading = false; - - mbgl::DefaultFileSource *mbglFileSource = [MGLOfflineStorage sharedOfflineStorage].mbglFileSource; - _mbglThreadPool = mbgl::sharedThreadPool(); - - std::string styleURL = std::string([options.styleURL.absoluteString UTF8String]); - - // Size; taking into account the minimum texture size for OpenGL ES - // For non retina screens the ratio is 1:1 MGLSnapshotterMinimumPixelSize - mbgl::Size size = { - static_cast(MAX(options.size.width, MGLSnapshotterMinimumPixelSize)), - static_cast(MAX(options.size.height, MGLSnapshotterMinimumPixelSize)) - }; - - float pixelRatio = MAX(options.scale, 1); - - // Camera options - mbgl::CameraOptions cameraOptions; - if (CLLocationCoordinate2DIsValid(options.camera.centerCoordinate)) { - cameraOptions.center = MGLLatLngFromLocationCoordinate2D(options.camera.centerCoordinate); - } - cameraOptions.angle = MAX(0, options.camera.heading) * mbgl::util::DEG2RAD; - cameraOptions.zoom = MAX(0, options.zoomLevel); - cameraOptions.pitch = MAX(0, options.camera.pitch); - - // Region - mbgl::optional coordinateBounds; - if (!MGLCoordinateBoundsIsEmpty(options.coordinateBounds)) { - coordinateBounds = MGLLatLngBoundsFromCoordinateBounds(options.coordinateBounds); - } - - // Create the snapshotter - _mbglMapSnapshotter = std::make_unique(*mbglFileSource, *_mbglThreadPool, styleURL, size, pixelRatio, cameraOptions, coordinateBounds); + } return self; } @@ -437,81 +406,40 @@ const CGFloat MGLSnapshotterMinimumPixelSize = 64; _mbglMapSnapshotter.reset(); } -- (NSURL *)styleURL -{ - NSString *styleURLString = @(_mbglMapSnapshotter->getStyleURL().c_str()); - return styleURLString.length ? [NSURL URLWithString:styleURLString] : nil; -} - -- (void)setStyleURL:(NSURL *)url -{ - _mbglMapSnapshotter->setStyleURL(std::string([url.absoluteString UTF8String])); -} - -- (CGSize)size -{ - mbgl::Size size = _mbglMapSnapshotter->getSize(); - return CGSizeMake(size.width, size.height); -} - -- (void)setSize:(CGSize)size -{ - _mbglMapSnapshotter->setSize({ - static_cast(MAX(size.width, MGLSnapshotterMinimumPixelSize)), - static_cast(MAX(size.height, MGLSnapshotterMinimumPixelSize)) - }); -} - -- (MGLMapCamera *)camera -{ - mbgl::CameraOptions cameraOptions = _mbglMapSnapshotter->getCameraOptions(); - CGFloat pitch = *cameraOptions.pitch; - CLLocationDirection heading = mbgl::util::wrap(*cameraOptions.angle, 0., 360.); - CLLocationDistance distance = MGLAltitudeForZoomLevel(*cameraOptions.zoom, pitch, cameraOptions.center->latitude(), [self size]); - return [MGLMapCamera cameraLookingAtCenterCoordinate:MGLLocationCoordinate2DFromLatLng(*cameraOptions.center) - fromDistance:distance - pitch:pitch - heading:heading]; -} - -- (void)setCamera:(MGLMapCamera *)camera +- (void)setOptions:(MGLMapSnapshotOptions *)options { + _options = options; + mbgl::DefaultFileSource *mbglFileSource = [MGLOfflineStorage sharedOfflineStorage].mbglFileSource; + _mbglThreadPool = mbgl::sharedThreadPool(); + + std::string styleURL = std::string([options.styleURL.absoluteString UTF8String]); + + // Size; taking into account the minimum texture size for OpenGL ES + // For non retina screens the ratio is 1:1 MGLSnapshotterMinimumPixelSize + mbgl::Size size = { + static_cast(MAX(options.size.width, MGLSnapshotterMinimumPixelSize)), + static_cast(MAX(options.size.height, MGLSnapshotterMinimumPixelSize)) + }; + + float pixelRatio = MAX(options.scale, 1); + + // Camera options mbgl::CameraOptions cameraOptions; - CLLocationCoordinate2D center; - if (CLLocationCoordinate2DIsValid(camera.centerCoordinate)) { - cameraOptions.center = MGLLatLngFromLocationCoordinate2D(camera.centerCoordinate); - center = camera.centerCoordinate; - } else { - // Center is optional, but always set. - center = MGLLocationCoordinate2DFromLatLng(*_mbglMapSnapshotter->getCameraOptions().center); + if (CLLocationCoordinate2DIsValid(options.camera.centerCoordinate)) { + cameraOptions.center = MGLLatLngFromLocationCoordinate2D(options.camera.centerCoordinate); } + cameraOptions.angle = MAX(0, options.camera.heading) * mbgl::util::DEG2RAD; + cameraOptions.zoom = MAX(0, options.zoomLevel); + cameraOptions.pitch = MAX(0, options.camera.pitch); - cameraOptions.angle = MAX(0, camera.heading) * mbgl::util::DEG2RAD; - cameraOptions.zoom = MAX(0, MGLZoomLevelForAltitude(camera.altitude, camera.pitch, center.latitude, [self size])); - cameraOptions.pitch = MAX(0, camera.pitch); -} - -- (double)zoomLevel -{ - mbgl::CameraOptions cameraOptions = _mbglMapSnapshotter->getCameraOptions(); - return MGLAltitudeForZoomLevel(*cameraOptions.zoom, *cameraOptions.pitch, cameraOptions.center->latitude(), [self size]); -} - -- (void)setZoomLevel:(double)zoomLevel -{ - mbgl::CameraOptions cameraOptions = _mbglMapSnapshotter->getCameraOptions(); - cameraOptions.zoom = zoomLevel; - _mbglMapSnapshotter->setCameraOptions(cameraOptions); -} - -- (MGLCoordinateBounds)coordinateBounds -{ - return MGLCoordinateBoundsFromLatLngBounds(_mbglMapSnapshotter->getRegion()); -} - -- (void)setCoordinateBounds:(MGLCoordinateBounds)coordinateBounds -{ - _mbglMapSnapshotter->setRegion(MGLLatLngBoundsFromCoordinateBounds(coordinateBounds)); + // Region + mbgl::optional coordinateBounds; + if (!MGLCoordinateBoundsIsEmpty(options.coordinateBounds)) { + coordinateBounds = MGLLatLngBoundsFromCoordinateBounds(options.coordinateBounds); + } + + // Create the snapshotter + _mbglMapSnapshotter = std::make_unique(*mbglFileSource, *_mbglThreadPool, styleURL, size, pixelRatio, cameraOptions, coordinateBounds); } @end -- cgit v1.2.1 From 6a9eec8ed5dee4a4527c25523d4a8b1aee758212 Mon Sep 17 00:00:00 2001 From: Asheem Mamoowala Date: Wed, 20 Dec 2017 14:51:30 -0800 Subject: Fix CustomLayer context retain count (#10765) * [core] RenderCustomLayer should de-initialize old context * [iOS, macOS] Use toll-free bridging to retain/release MGLOpenGLStyleLayer instead of a separate array. --- platform/darwin/src/MGLOpenGLStyleLayer.mm | 6 ++---- platform/darwin/src/MGLStyle.mm | 2 -- platform/darwin/src/MGLStyle_Private.h | 2 -- src/mbgl/renderer/layers/render_custom_layer.cpp | 21 +++++++++++++-------- src/mbgl/renderer/layers/render_custom_layer.hpp | 1 + 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/platform/darwin/src/MGLOpenGLStyleLayer.mm b/platform/darwin/src/MGLOpenGLStyleLayer.mm index 36a3c20c97..8933a77382 100644 --- a/platform/darwin/src/MGLOpenGLStyleLayer.mm +++ b/platform/darwin/src/MGLOpenGLStyleLayer.mm @@ -47,7 +47,7 @@ void MGLDrawCustomStyleLayer(void *context, const mbgl::style::CustomLayerRender when creating an OpenGL style layer. */ void MGLFinishCustomStyleLayer(void *context) { - MGLOpenGLStyleLayer *layer = (__bridge MGLOpenGLStyleLayer *)context; + MGLOpenGLStyleLayer *layer = (__bridge_transfer MGLOpenGLStyleLayer *)context; [layer willMoveFromMapView:layer.style.mapView]; } @@ -101,7 +101,7 @@ void MGLFinishCustomStyleLayer(void *context) { MGLPrepareCustomStyleLayer, MGLDrawCustomStyleLayer, MGLFinishCustomStyleLayer, - (__bridge void *)self); + (__bridge_retained void *)self); return self = [super initWithPendingLayer:std::move(layer)]; } @@ -116,9 +116,7 @@ void MGLFinishCustomStyleLayer(void *context) { [NSException raise:@"MGLLayerReuseException" format:@"%@ cannot be added to more than one MGLStyle at a time.", self]; } - _style.openGLLayers[self.identifier] = nil; _style = style; - _style.openGLLayers[self.identifier] = self; } - (void)addToStyle:(MGLStyle *)style belowLayer:(MGLStyleLayer *)otherLayer { diff --git a/platform/darwin/src/MGLStyle.mm b/platform/darwin/src/MGLStyle.mm index 244fb94ef9..987ae5f063 100644 --- a/platform/darwin/src/MGLStyle.mm +++ b/platform/darwin/src/MGLStyle.mm @@ -77,7 +77,6 @@ @property (nonatomic, readonly, weak) MGLMapView *mapView; @property (nonatomic, readonly) mbgl::style::Style *rawStyle; @property (readonly, copy, nullable) NSURL *URL; -@property (nonatomic, readwrite, strong) NS_MUTABLE_DICTIONARY_OF(NSString *, MGLOpenGLStyleLayer *) *openGLLayers; @property (nonatomic) NS_MUTABLE_DICTIONARY_OF(NSString *, NS_DICTIONARY_OF(NSObject *, MGLTextLanguage *) *) *localizedLayersByIdentifier; @end @@ -169,7 +168,6 @@ static NSURL *MGLStyleURL_trafficNight; if (self = [super init]) { _mapView = mapView; _rawStyle = rawStyle; - _openGLLayers = [NSMutableDictionary dictionary]; _localizedLayersByIdentifier = [NSMutableDictionary dictionary]; } return self; diff --git a/platform/darwin/src/MGLStyle_Private.h b/platform/darwin/src/MGLStyle_Private.h index e5bd79dc02..4cbe953a44 100644 --- a/platform/darwin/src/MGLStyle_Private.h +++ b/platform/darwin/src/MGLStyle_Private.h @@ -26,8 +26,6 @@ namespace mbgl { - (nullable NS_ARRAY_OF(MGLAttributionInfo *) *)attributionInfosWithFontSize:(CGFloat)fontSize linkColor:(nullable MGLColor *)linkColor; -@property (nonatomic, readonly, strong) NS_MUTABLE_DICTIONARY_OF(NSString *, MGLOpenGLStyleLayer *) *openGLLayers; - - (void)setStyleClasses:(NS_ARRAY_OF(NSString *) *)appliedClasses transitionDuration:(NSTimeInterval)transitionDuration; @end diff --git a/src/mbgl/renderer/layers/render_custom_layer.cpp b/src/mbgl/renderer/layers/render_custom_layer.cpp index 7ece3970da..adafd8583f 100644 --- a/src/mbgl/renderer/layers/render_custom_layer.cpp +++ b/src/mbgl/renderer/layers/render_custom_layer.cpp @@ -43,20 +43,25 @@ std::unique_ptr RenderCustomLayer::createBucket(const BucketParameters&, } void RenderCustomLayer::render(PaintParameters& paintParameters, RenderSource*) { - if (!initialized) { + if (context != impl().context || !initialized) { + //If the context changed, deinitialize the previous one before initializing the new one. + if (context && !contextDestroyed && impl().deinitializeFn) { + impl().deinitializeFn(context); + } + context = impl().context; assert(impl().initializeFn); impl().initializeFn(impl().context); initialized = true; } - gl::Context& context = paintParameters.context; + gl::Context& glContext = paintParameters.context; const TransformState& state = paintParameters.state; // Reset GL state to a known state so the CustomLayer always has a clean slate. - context.bindVertexArray = 0; - context.setDepthMode(paintParameters.depthModeForSublayer(0, gl::DepthMode::ReadOnly)); - context.setStencilMode(gl::StencilMode::disabled()); - context.setColorMode(paintParameters.colorModeForRenderPass()); + glContext.bindVertexArray = 0; + glContext.setDepthMode(paintParameters.depthModeForSublayer(0, gl::DepthMode::ReadOnly)); + glContext.setStencilMode(gl::StencilMode::disabled()); + glContext.setColorMode(paintParameters.colorModeForRenderPass()); CustomLayerRenderParameters parameters; @@ -70,12 +75,12 @@ void RenderCustomLayer::render(PaintParameters& paintParameters, RenderSource*) parameters.fieldOfView = state.getFieldOfView(); assert(impl().renderFn); - impl().renderFn(impl().context, parameters); + impl().renderFn(context, parameters); // Reset the view back to our original one, just in case the CustomLayer changed // the viewport or Framebuffer. paintParameters.backend.bind(); - context.setDirtyState(); + glContext.setDirtyState(); } } // namespace mbgl diff --git a/src/mbgl/renderer/layers/render_custom_layer.hpp b/src/mbgl/renderer/layers/render_custom_layer.hpp index 32ed9da8da..6d1fea99d3 100644 --- a/src/mbgl/renderer/layers/render_custom_layer.hpp +++ b/src/mbgl/renderer/layers/render_custom_layer.hpp @@ -26,6 +26,7 @@ public: private: bool initialized = false; bool contextDestroyed = false; + void * context = nullptr; }; template <> -- cgit v1.2.1 From 8e69a35d758d4fa632ed153590ae56c976269b76 Mon Sep 17 00:00:00 2001 From: Jason Wray Date: Wed, 20 Dec 2017 16:55:30 -0800 Subject: [ios, build] Stop packaging i386 simulator arch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Only builds and packages x86_64 architecture in our frameworks and dSYM. Removes support for 32-bit simulators, such as the iPhone 5 and iPad 2. This does not affect device support — 32-bit devices are still supported via the arm7 architecture. --- platform/ios/CHANGELOG.md | 5 +++++ platform/ios/INSTALL.md | 8 +++++--- platform/ios/scripts/metrics.sh | 2 -- platform/ios/scripts/package.sh | 2 +- platform/ios/scripts/validate-framework-zip.sh | 2 +- scripts/publish_binary_size.sh | 1 - 6 files changed, 12 insertions(+), 8 deletions(-) diff --git a/platform/ios/CHANGELOG.md b/platform/ios/CHANGELOG.md index c373eaf177..d5bf98d3f2 100644 --- a/platform/ios/CHANGELOG.md +++ b/platform/ios/CHANGELOG.md @@ -2,9 +2,14 @@ Mapbox welcomes participation and contributions from everyone. Please read [CONTRIBUTING.md](../../CONTRIBUTING.md) to get started. +## 3.7.2 + +* Removed support for 32-bit simulators. ([#10772](https://github.com/mapbox/mapbox-gl-native/pull/10772)) + ## 3.7.1 - December 6, 2017 ### Annotations + * Fixed an issue that could cause `-[MGLMapViewDelegate mapView:didSelectAnnotation:]` to be triggered when tapping next to an `MGLAnnotationImage` annotation. ([#10538](https://github.com/mapbox/mapbox-gl-native/pull/10538)) ### Packaging diff --git a/platform/ios/INSTALL.md b/platform/ios/INSTALL.md index 9a85dfe6fb..9fca318729 100644 --- a/platform/ios/INSTALL.md +++ b/platform/ios/INSTALL.md @@ -4,12 +4,14 @@ This document explains how to build a development version of Mapbox Maps SDK for ### Requirements -The Mapbox Maps SDK for iOS is intended to run on iOS 8.0 and above on the following devices and their simulators: +The Mapbox Maps SDK for iOS is intended to run on iOS 8.0 and above on the following devices: -* iPhone 4S and above (5, 5c, 5s, 6, 6 Plus) -* iPad 2 and above (3, 4, Mini, Air, Mini 2, Air 2) +* iPhone 4s and above (5, 5c, 5s, 6, 6 Plus, 7, 7 Plus, 8, 8 Plus, X) +* iPad 2 and above (3, 4, Mini, Air, Mini 2, Air 2, Pro) * iPod touch 5th generation and above +Note that 32-bit simulators (such as the iPhone 5 or iPad 2) are not supported. + The Mapbox Maps SDK for iOS requires Xcode 8.0 or higher. To use this SDK with Xcode 7.3.1, download and use a symbols build from the [releases](https://github.com/mapbox/mapbox-gl-native/releases) page. ### Building the SDK diff --git a/platform/ios/scripts/metrics.sh b/platform/ios/scripts/metrics.sh index c45beb3a11..2a241323c2 100755 --- a/platform/ios/scripts/metrics.sh +++ b/platform/ios/scripts/metrics.sh @@ -7,13 +7,11 @@ set -o pipefail xcrun bitcode_strip build/ios/pkg/dynamic/Mapbox.framework/Mapbox -r -o build/ios/pkg/dynamic/Mapbox-stripped lipo build/ios/pkg/dynamic/Mapbox-stripped -extract armv7 -output build/ios/pkg/dynamic/Mapbox-stripped-armv7 lipo build/ios/pkg/dynamic/Mapbox-stripped -extract arm64 -output build/ios/pkg/dynamic/Mapbox-stripped-arm64 -lipo build/ios/pkg/dynamic/Mapbox-stripped -extract i386 -output build/ios/pkg/dynamic/Mapbox-stripped-i386 lipo build/ios/pkg/dynamic/Mapbox-stripped -extract x86_64 -output build/ios/pkg/dynamic/Mapbox-stripped-x86_64 # Track individual architectures scripts/log_binary_size.sh "build/ios/pkg/dynamic/Mapbox-stripped-armv7" "Platform=iOS,Arch=armv7" scripts/log_binary_size.sh "build/ios/pkg/dynamic/Mapbox-stripped-arm64" "Platform=iOS,Arch=arm64" -scripts/log_binary_size.sh "build/ios/pkg/dynamic/Mapbox-stripped-i386" "Platform=iOS,Arch=i386" scripts/log_binary_size.sh "build/ios/pkg/dynamic/Mapbox-stripped-x86_64" "Platform=iOS,Arch=x86_64" # Track overall library size diff --git a/platform/ios/scripts/package.sh b/platform/ios/scripts/package.sh index 0acce9a57f..6df1b687b4 100755 --- a/platform/ios/scripts/package.sh +++ b/platform/ios/scripts/package.sh @@ -70,7 +70,7 @@ xcodebuild \ CURRENT_SHORT_VERSION=${SHORT_VERSION} \ CURRENT_SEMANTIC_VERSION=${SEM_VERSION} \ CURRENT_COMMIT_HASH=${HASH} \ - ONLY_ACTIVE_ARCH=NO \ + ARCHS="x86_64" \ -derivedDataPath ${DERIVED_DATA} \ -workspace ./platform/ios/ios.xcworkspace \ -scheme ${SCHEME} \ diff --git a/platform/ios/scripts/validate-framework-zip.sh b/platform/ios/scripts/validate-framework-zip.sh index 2cd1e90ee7..0bcd094b69 100755 --- a/platform/ios/scripts/validate-framework-zip.sh +++ b/platform/ios/scripts/validate-framework-zip.sh @@ -54,7 +54,7 @@ function verifyFramework() { # Verify the static lib at least has simulator and the two common ARM architectures local PRESENT_ARCHITECTURES=$( xcrun lipo -info "${BINARY_PATH}" ) - for arch in "armv7" "arm64" "i386" "x86_64"; do + for arch in "armv7" "arm64" "x86_64"; do if [[ ! $PRESENT_ARCHITECTURES == *$arch* ]]; then printf "ERROR: Architecture ${arch} not found in ${FRAMEWORK_NAME}\n"; exit 6; diff --git a/scripts/publish_binary_size.sh b/scripts/publish_binary_size.sh index e515de7c96..08dfb88287 100755 --- a/scripts/publish_binary_size.sh +++ b/scripts/publish_binary_size.sh @@ -56,7 +56,6 @@ else # Upload all dimensions that we are tracking publish_binary_size "Platform=iOS,Arch=armv7" publish_binary_size "Platform=iOS,Arch=arm64" - publish_binary_size "Platform=iOS,Arch=i386" publish_binary_size "Platform=iOS,Arch=x86_64" publish_binary_size "Platform=iOS,Arch=Dynamic" -- cgit v1.2.1 From b9ef2727303bd2858b8fe1203adb0914a83ea0af Mon Sep 17 00:00:00 2001 From: Fabian Guerra Date: Thu, 21 Dec 2017 10:44:16 -0600 Subject: [ios] Fix ornament constrains on iOS 10 --- platform/ios/src/MGLMapView.mm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index 3b6ea82ed2..a0d4a5f364 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -747,7 +747,7 @@ public: toItem:viewController.topLayoutGuide attribute:NSLayoutAttributeBottom multiplier:1.0 - constant:5.0 + self.contentInset.top]]; + constant:5.0]]; } [self.compassViewConstraints addObject: [NSLayoutConstraint constraintWithItem:self.compassView @@ -757,6 +757,7 @@ public: attribute:NSLayoutAttributeTop multiplier:1.0 constant:5.0 + self.contentInset.top]]; + [self.compassViewConstraints addObject: [NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeTrailing @@ -781,7 +782,7 @@ public: toItem:viewController.topLayoutGuide attribute:NSLayoutAttributeBottom multiplier:1.0 - constant:5.0 + self.contentInset.top]]; + constant:5.0]]; } [self.scaleBarConstraints addObject: [NSLayoutConstraint constraintWithItem:self.scaleBar -- cgit v1.2.1 From 1b407e85e9ee03124e24b71a856045c254775e6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguye=CC=82=CC=83n?= Date: Thu, 21 Dec 2017 00:28:19 -0800 Subject: [ios, macos] Fixed MGLMapSnapshotter test crash MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed a crash in MGLDocumentationExampleTests caused by an asynchronous snapshot call that the test wasn’t waiting on, compounded by the use of a style that requires an access token (as opposed to the one-liner style that uses no remote resources. Employed some Swiftisms to fulfill expectations without making the example code look weird. --- platform/darwin/src/MGLMapSnapshotter.h | 8 ++--- .../darwin/test/MGLDocumentationExampleTests.swift | 35 ++++++++++++++++++---- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/platform/darwin/src/MGLMapSnapshotter.h b/platform/darwin/src/MGLMapSnapshotter.h index fc68204a7d..426ab1bb00 100644 --- a/platform/darwin/src/MGLMapSnapshotter.h +++ b/platform/darwin/src/MGLMapSnapshotter.h @@ -145,11 +145,11 @@ typedef void (^MGLMapSnapshotCompletionHandler)(MGLMapSnapshot* _Nullable snapsh let snapshotter = MGLMapSnapshotter(options: options) snapshotter.start { (snapshot, error) in - if error != nil { - // error handler - } else { - // image handler + if let error = error { + fatalError(error.localizedDescription) } + + image = snapshot?.image } ``` */ diff --git a/platform/darwin/test/MGLDocumentationExampleTests.swift b/platform/darwin/test/MGLDocumentationExampleTests.swift index 8762af9ba4..668e5f57f8 100644 --- a/platform/darwin/test/MGLDocumentationExampleTests.swift +++ b/platform/darwin/test/MGLDocumentationExampleTests.swift @@ -27,11 +27,11 @@ import Mapbox class MGLDocumentationExampleTests: XCTestCase, MGLMapViewDelegate { var mapView: MGLMapView! var styleLoadingExpectation: XCTestExpectation! + static let styleURL = Bundle(for: MGLDocumentationExampleTests.self).url(forResource: "one-liner", withExtension: "json")! override func setUp() { super.setUp() - let styleURL = Bundle(for: MGLDocumentationExampleTests.self).url(forResource: "one-liner", withExtension: "json") - mapView = MGLMapView(frame: CGRect(x: 0, y: 0, width: 256, height: 256), styleURL: styleURL) + mapView = MGLMapView(frame: CGRect(x: 0, y: 0, width: 256, height: 256), styleURL: MGLDocumentationExampleTests.styleURL) mapView.delegate = self styleLoadingExpectation = expectation(description: "Map view should finish loading style") waitForExpectations(timeout: 1, handler: nil) @@ -279,6 +279,27 @@ class MGLDocumentationExampleTests: XCTestCase, MGLMapViewDelegate { } func testMGLMapSnapshotter() { + let expectation = self.expectation(description: "MGLMapSnapshotter should produce a snapshot") + #if os(macOS) + var image: NSImage? { + didSet { + expectation.fulfill() + } + } + #else + var image: UIImage? { + didSet { + expectation.fulfill() + } + } + #endif + + class MGLStyle { + static func satelliteStreetsStyleURL() -> URL { + return MGLDocumentationExampleTests.styleURL + } + } + //#-example-code let camera = MGLMapCamera(lookingAtCenter: CLLocationCoordinate2D(latitude: 37.7184, longitude: -122.4365), fromDistance: 100, pitch: 20, heading: 0) @@ -287,13 +308,15 @@ class MGLDocumentationExampleTests: XCTestCase, MGLMapViewDelegate { let snapshotter = MGLMapSnapshotter(options: options) snapshotter.start { (snapshot, error) in - if error != nil { - // error handler - } else { - // image handler + if let error = error { + fatalError(error.localizedDescription) } + + image = snapshot?.image } //#-end-example-code + + wait(for: [expectation], timeout: 1) } // For testMGLMapView(). -- cgit v1.2.1 From 3685cb35898cbcb6d34af2a7f49eff345083f487 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguye=CC=82=CC=83n?= Date: Thu, 21 Dec 2017 00:29:09 -0800 Subject: [ios, macos] Updated MGLImageSource example Ran make darwin-update-examples to ensure that headers reflect the tested example code. --- platform/darwin/src/MGLImageSource.h | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/platform/darwin/src/MGLImageSource.h b/platform/darwin/src/MGLImageSource.h index 5088f6bac0..21487d9739 100644 --- a/platform/darwin/src/MGLImageSource.h +++ b/platform/darwin/src/MGLImageSource.h @@ -38,11 +38,8 @@ MGL_EXPORT bottomLeft: CLLocationCoordinate2D(latitude: 37.936, longitude: -80.425), bottomRight: CLLocationCoordinate2D(latitude: 37.936, longitude: -71.516), topRight: CLLocationCoordinate2D(latitude: 46.437, longitude: -71.516)) - let source = MGLImageSource(identifier: "radar-source", coordinateQuad: coordinates, url: URL(string: "https://www.mapbox.com/mapbox-gl-js/assets/radar.gif")!) + let source = MGLImageSource(identifier: "radar", coordinateQuad: coordinates, url: URL(string: "https://www.mapbox.com/mapbox-gl-js/assets/radar.gif")!) mapView.style?.addSource(source) - - let layer = MGLRasterStyleLayer(identifier: "radar-layer", source: source) - style.addLayer(layer) ``` */ MGL_EXPORT -- cgit v1.2.1 From ff62fa957c9413734ba8ca74b41e490fc2a3ab1d Mon Sep 17 00:00:00 2001 From: Fabian Guerra Date: Thu, 14 Dec 2017 16:11:11 -0600 Subject: [ios] Update visible coordinates documentation to reflect antimeridian usage. --- platform/ios/src/MGLMapView.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/platform/ios/src/MGLMapView.h b/platform/ios/src/MGLMapView.h index ef86266457..3c5aa2c122 100644 --- a/platform/ios/src/MGLMapView.h +++ b/platform/ios/src/MGLMapView.h @@ -668,12 +668,24 @@ MGL_EXPORT IB_DESIGNABLE Changing the value of this property updates the receiver immediately. If you want to animate the change, call `-setVisibleCoordinateBounds:animated:` instead. + + If a longitude is less than −180 degrees or greater than 180 degrees, the visible + bounds straddles the antimeridian or international date line. + + For example, a visible bounds that stretches from Tokyo to San Francisco would have + coordinates of (35.68476, -220.24257) and (37.78428, -122.41310). */ @property (nonatomic) MGLCoordinateBounds visibleCoordinateBounds; /** Changes the receiver’s viewport to fit the given coordinate bounds, optionally animating the change. + + To make the visible bounds go across the antimeridian or international date line, + specify some longitudes less than −180 degrees or greater than 180 degrees. + + For example, a visible bounds that stretches from Tokyo to San Francisco would have + coordinates of (35.68476, -220.24257) and (37.78428, -122.41310). @param bounds The bounds that the viewport will show in its entirety. @param animated Specify `YES` to animate the change by smoothly scrolling -- cgit v1.2.1 From c6169ab50ccb51903b0100c2308d0d31bb073283 Mon Sep 17 00:00:00 2001 From: Jason Wray Date: Thu, 21 Dec 2017 11:39:03 -0800 Subject: [ios] Re-add i386 slice to framework; strip from dSYM --- platform/ios/CHANGELOG.md | 2 +- platform/ios/INSTALL.md | 2 +- platform/ios/scripts/package.sh | 7 ++++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/platform/ios/CHANGELOG.md b/platform/ios/CHANGELOG.md index d5bf98d3f2..329f7db497 100644 --- a/platform/ios/CHANGELOG.md +++ b/platform/ios/CHANGELOG.md @@ -4,7 +4,7 @@ Mapbox welcomes participation and contributions from everyone. Please read [CONT ## 3.7.2 -* Removed support for 32-bit simulators. ([#10772](https://github.com/mapbox/mapbox-gl-native/pull/10772)) +* Reduced the file size of the dSYM by removing the i386 architecture. Support for the i386 architecture (used by 32-bit simulators) will also be removed from the framework itself in a future release. ([#10781](https://github.com/mapbox/mapbox-gl-native/pull/10781)) ## 3.7.1 - December 6, 2017 diff --git a/platform/ios/INSTALL.md b/platform/ios/INSTALL.md index 9fca318729..b0d7be83d5 100644 --- a/platform/ios/INSTALL.md +++ b/platform/ios/INSTALL.md @@ -10,7 +10,7 @@ The Mapbox Maps SDK for iOS is intended to run on iOS 8.0 and above on the follo * iPad 2 and above (3, 4, Mini, Air, Mini 2, Air 2, Pro) * iPod touch 5th generation and above -Note that 32-bit simulators (such as the iPhone 5 or iPad 2) are not supported. +Note that debugging in 32-bit simulators (such as the iPhone 5 or iPad 2) is only partially supported. Support for these simulators will be removed entirely in a future release of this SDK. The Mapbox Maps SDK for iOS requires Xcode 8.0 or higher. To use this SDK with Xcode 7.3.1, download and use a symbols build from the [releases](https://github.com/mapbox/mapbox-gl-native/releases) page. diff --git a/platform/ios/scripts/package.sh b/platform/ios/scripts/package.sh index 6df1b687b4..31285182a7 100755 --- a/platform/ios/scripts/package.sh +++ b/platform/ios/scripts/package.sh @@ -70,7 +70,7 @@ xcodebuild \ CURRENT_SHORT_VERSION=${SHORT_VERSION} \ CURRENT_SEMANTIC_VERSION=${SEM_VERSION} \ CURRENT_COMMIT_HASH=${HASH} \ - ARCHS="x86_64" \ + ONLY_ACTIVE_ARCH=NO \ -derivedDataPath ${DERIVED_DATA} \ -workspace ./platform/ios/ios.xcworkspace \ -scheme ${SCHEME} \ @@ -194,6 +194,11 @@ if [[ ${BUILD_DYNAMIC} == true && ${BUILDTYPE} == Release ]]; then validate_dsym \ "${OUTPUT}/dynamic/${NAME}.framework.dSYM/Contents/Resources/DWARF/${NAME}" \ "${OUTPUT}/dynamic/${NAME}.framework/${NAME}" + + # To-do: remove this in 4.0.0, as we intend to remove support for i386 entirely. + step "Removing i386 slice from dSYM" + lipo -remove i386 "${OUTPUT}/dynamic/${NAME}.framework.dSYM/Contents/Resources/DWARF/${NAME}" -o "${OUTPUT}/dynamic/${NAME}.framework.dSYM/Contents/Resources/DWARF/${NAME}" + lipo -info "${OUTPUT}/dynamic/${NAME}.framework.dSYM/Contents/Resources/DWARF/${NAME}" fi function create_podspec { -- cgit v1.2.1 From 3b254a7fbd353f3263f96ec9620b5c98781f3288 Mon Sep 17 00:00:00 2001 From: Fabian Guerra Date: Thu, 21 Dec 2017 14:48:40 -0600 Subject: [ios] Update changelog. Podspec bump to v3.7.2 --- platform/ios/CHANGELOG.md | 10 +++++++++- platform/ios/Mapbox-iOS-SDK-nightly-dynamic.podspec | 2 +- platform/ios/Mapbox-iOS-SDK-symbols.podspec | 2 +- platform/ios/Mapbox-iOS-SDK.podspec | 2 +- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/platform/ios/CHANGELOG.md b/platform/ios/CHANGELOG.md index 329f7db497..e4b79f0f2f 100644 --- a/platform/ios/CHANGELOG.md +++ b/platform/ios/CHANGELOG.md @@ -2,10 +2,18 @@ Mapbox welcomes participation and contributions from everyone. Please read [CONTRIBUTING.md](../../CONTRIBUTING.md) to get started. -## 3.7.2 +## 3.7.2 - December 21, 2017 + +### Packaging * Reduced the file size of the dSYM by removing the i386 architecture. Support for the i386 architecture (used by 32-bit simulators) will also be removed from the framework itself in a future release. ([#10781](https://github.com/mapbox/mapbox-gl-native/pull/10781)) +### Other changes + +* Fixed an issue where removing a `MGLOpenGLStyleLayer` from a map might result in a crash. ([#10765](https://github.com/mapbox/mapbox-gl-native/pull/10765)) +* Added documentation for usage of coordinate bounds that cross the anti-meridian. ([#9804](https://github.com/mapbox/mapbox-gl-native/issues/9804)) +* Removed duplicated variables in `MGLMapSnapshotter`. ([#10702](https://github.com/mapbox/mapbox-gl-native/pull/10702)) + ## 3.7.1 - December 6, 2017 ### Annotations diff --git a/platform/ios/Mapbox-iOS-SDK-nightly-dynamic.podspec b/platform/ios/Mapbox-iOS-SDK-nightly-dynamic.podspec index fb78d0112c..5a1f1ebb7e 100644 --- a/platform/ios/Mapbox-iOS-SDK-nightly-dynamic.podspec +++ b/platform/ios/Mapbox-iOS-SDK-nightly-dynamic.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |m| - version = '3.7.1' + version = '3.7.2' m.name = 'Mapbox-iOS-SDK-nightly-dynamic' m.version = "#{version}-nightly" diff --git a/platform/ios/Mapbox-iOS-SDK-symbols.podspec b/platform/ios/Mapbox-iOS-SDK-symbols.podspec index 775b4dceb0..00b9437338 100644 --- a/platform/ios/Mapbox-iOS-SDK-symbols.podspec +++ b/platform/ios/Mapbox-iOS-SDK-symbols.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |m| - version = '3.7.1' + version = '3.7.2' m.name = 'Mapbox-iOS-SDK-symbols' m.version = "#{version}-symbols" diff --git a/platform/ios/Mapbox-iOS-SDK.podspec b/platform/ios/Mapbox-iOS-SDK.podspec index 6298939f48..2f2a19300c 100644 --- a/platform/ios/Mapbox-iOS-SDK.podspec +++ b/platform/ios/Mapbox-iOS-SDK.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |m| - version = '3.7.1' + version = '3.7.2' m.name = 'Mapbox-iOS-SDK' m.version = version -- cgit v1.2.1 From b09311656d78d2b7b2e5e99232f76da7d3a6d756 Mon Sep 17 00:00:00 2001 From: Fabian Guerra Date: Thu, 21 Dec 2017 17:07:25 -0600 Subject: [macos] Update visible coordinates documentation to reflect antimeridian usage. --- platform/macos/src/MGLMapView.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/platform/macos/src/MGLMapView.h b/platform/macos/src/MGLMapView.h index de099157c8..96b0932c14 100644 --- a/platform/macos/src/MGLMapView.h +++ b/platform/macos/src/MGLMapView.h @@ -396,12 +396,24 @@ MGL_EXPORT IB_DESIGNABLE Changing the value of this property updates the receiver immediately. If you want to animate the change, use the `-setVisibleCoordinateBounds:animated:` method instead. + + If a longitude is less than −180 degrees or greater than 180 degrees, the visible + bounds straddles the antimeridian or international date line. + + For example, a visible bounds that stretches from Tokyo to San Francisco would have + coordinates of (35.68476, -220.24257) and (37.78428, -122.41310). */ @property (nonatomic) MGLCoordinateBounds visibleCoordinateBounds; /** Changes the receiver’s viewport to fit the given coordinate bounds, optionally animating the change. + + To make the visible bounds go across the antimeridian or international date line, + specify some longitudes less than −180 degrees or greater than 180 degrees. + + For example, a visible bounds that stretches from Tokyo to San Francisco would have + coordinates of (35.68476, -220.24257) and (37.78428, -122.41310). @param bounds The bounds that the viewport will show in its entirety. @param animated Specify `YES` to animate the change by smoothly scrolling and -- cgit v1.2.1 From c1831229ac826d1169b7e2e3067655272cde3ef0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguy=E1=BB=85n?= Date: Sat, 16 Dec 2017 15:20:34 -0800 Subject: [ios, macos] Copyedited changelogs macOS map SDK v0.6.0 has yet to be released. --- platform/ios/CHANGELOG.md | 8 ++++---- platform/macos/CHANGELOG.md | 13 ++++++------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/platform/ios/CHANGELOG.md b/platform/ios/CHANGELOG.md index e4b79f0f2f..e3e2768e21 100644 --- a/platform/ios/CHANGELOG.md +++ b/platform/ios/CHANGELOG.md @@ -16,14 +16,14 @@ Mapbox welcomes participation and contributions from everyone. Please read [CONT ## 3.7.1 - December 6, 2017 -### Annotations - -* Fixed an issue that could cause `-[MGLMapViewDelegate mapView:didSelectAnnotation:]` to be triggered when tapping next to an `MGLAnnotationImage` annotation. ([#10538](https://github.com/mapbox/mapbox-gl-native/pull/10538)) - ### Packaging * Renamed this SDK from Mapbox iOS SDK to Mapbox Maps SDK for iOS. ([#10610](https://github.com/mapbox/mapbox-gl-native/pull/10610)) +### Annotations + +* Fixed incorrect hit targets for `MGLAnnotationImage`-backed annotations that caused `-[MGLMapViewDelegate mapView:didSelectAnnotation:]` to be called unnecessarily. ([#10538](https://github.com/mapbox/mapbox-gl-native/pull/10538)) + ### Other changes * Fixed an issue that caused `MGLMapView.minimumZoomLevel` to not be set. ([#10596](https://github.com/mapbox/mapbox-gl-native/pull/10596)) diff --git a/platform/macos/CHANGELOG.md b/platform/macos/CHANGELOG.md index 6fab5f9893..9fd03d66fd 100644 --- a/platform/macos/CHANGELOG.md +++ b/platform/macos/CHANGELOG.md @@ -1,14 +1,13 @@ -# Changelog for Mapbox macOS SDK - -## v0.6.1 +# Changelog for Mapbox Maps SDK for macOS ### Annotations -* Fixed an issue that could cause triggering `-[MGLMapViewDelegate mapView:didSelectAnnotation:]` when taping next to a `MGLAnnotationImage` annotation. ([#10538](https://github.com/mapbox/mapbox-gl-native/pull/10538)) + +## v0.6.0 ### Packaging -* Renamed this SDK from Mapbox macOS SDK to Mapbox Maps SDK for macOS. ([#10610](https://github.com/mapbox/mapbox-gl-native/pull/10610)) -## v0.6.0 +* Renamed this SDK from Mapbox macOS SDK to Mapbox Maps SDK for macOS. ([#10610](https://github.com/mapbox/mapbox-gl-native/pull/10610)) +* Added a Bulgarian localization. ([#10309](https://github.com/mapbox/mapbox-gl-native/pull/10309)) ### Networking and storage @@ -34,13 +33,13 @@ * Fixed several bugs and performance issues related to the use of annotations backed by `MGLAnnotationImage`s. The limits on the number and size of images and glyphs has been effectively eliminated and should now depend on hardware constraints. These fixes also apply to images used to represent icons in `MGLSymbolStyleLayer`s. ([#9213](https://github.com/mapbox/mapbox-gl-native/pull/9213)) * Increased the default maximum zoom level from 20 to 22. ([#9835](https://github.com/mapbox/mapbox-gl-native/pull/9835)) * Added an `overlays` property to `MGLMapView`. ([#8617](https://github.com/mapbox/mapbox-gl-native/pull/8617)) +* Fixed incorrect hit targets for `MGLAnnotationImage`-backed annotations that caused `-[MGLMapViewDelegate mapView:didSelectAnnotation:]` to be called unnecessarily. ([#10538](https://github.com/mapbox/mapbox-gl-native/pull/10538)) * Added `-[MGLMapView cameraThatFitsShape:direction:edgePadding:]` to get a camera with zoom level and center coordinate computed to fit a shape. ([#10107](https://github.com/mapbox/mapbox-gl-native/pull/10107)) * Added support selection of shape and polyline annotations.([#9984](https://github.com/mapbox/mapbox-gl-native/pull/9984)) * Fixed an issue where a shape annotation callout was not displayed if the centroid was not visible. ([#10255](https://github.com/mapbox/mapbox-gl-native/pull/10255)) ### Other changes -* Added a Bulgarian localization. ([#10309](https://github.com/mapbox/mapbox-gl-native/pull/10309)) * Fixed distortion in the logo view on macOS 10.13 High Sierra. ([#10606](https://github.com/mapbox/mapbox-gl-native/pull/10606)) * Fixed an issue that could cause line label rendering glitches when the line geometry is projected to a point behind the plane of the camera. ([#9865](https://github.com/mapbox/mapbox-gl-native/pull/9865)) * Fixed an issue that could cause a crash when using `-[MGLMapView flyToCamera:completionHandler:]` and related methods with zoom levels at or near the maximum value. ([#9381](https://github.com/mapbox/mapbox-gl-native/pull/9381)) -- cgit v1.2.1 From 3feeb7bdf8284eca92d95b4d2338ab23f1892604 Mon Sep 17 00:00:00 2001 From: Fabian Guerra Date: Thu, 21 Dec 2017 17:18:03 -0600 Subject: [macos] Update changelog entries. --- platform/macos/CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/platform/macos/CHANGELOG.md b/platform/macos/CHANGELOG.md index 9fd03d66fd..80d6933678 100644 --- a/platform/macos/CHANGELOG.md +++ b/platform/macos/CHANGELOG.md @@ -43,6 +43,9 @@ * Fixed distortion in the logo view on macOS 10.13 High Sierra. ([#10606](https://github.com/mapbox/mapbox-gl-native/pull/10606)) * Fixed an issue that could cause line label rendering glitches when the line geometry is projected to a point behind the plane of the camera. ([#9865](https://github.com/mapbox/mapbox-gl-native/pull/9865)) * Fixed an issue that could cause a crash when using `-[MGLMapView flyToCamera:completionHandler:]` and related methods with zoom levels at or near the maximum value. ([#9381](https://github.com/mapbox/mapbox-gl-native/pull/9381)) +* Fixed an issue where removing a `MGLOpenGLStyleLayer` from a map might result in a crash. ([#10765](https://github.com/mapbox/mapbox-gl-native/pull/10765)) +* Added documentation for usage of coordinate bounds that cross the anti-meridian. ([#10783](https://github.com/mapbox/mapbox-gl-native/pull/10783)) +* Removed duplicated variables in `MGLMapSnapshotter`. ([#10702](https://github.com/mapbox/mapbox-gl-native/pull/10702)) ## 0.5.1 -- cgit v1.2.1 From 41022dab07351445ab2d34461f2b526c8988a02a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguy=E1=BB=85n?= Date: Sat, 16 Dec 2017 15:27:35 -0800 Subject: macos-v0.6.0 --- platform/macos/Mapbox-macOS-SDK-symbols.podspec | 2 +- platform/macos/Mapbox-macOS-SDK.podspec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/platform/macos/Mapbox-macOS-SDK-symbols.podspec b/platform/macos/Mapbox-macOS-SDK-symbols.podspec index dd60957bb5..ba09fce19c 100644 --- a/platform/macos/Mapbox-macOS-SDK-symbols.podspec +++ b/platform/macos/Mapbox-macOS-SDK-symbols.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |m| - version = '0.5.1' + version = '0.6.0' m.name = 'Mapbox-macOS-SDK-symbols' m.version = "#{version}-symbols" diff --git a/platform/macos/Mapbox-macOS-SDK.podspec b/platform/macos/Mapbox-macOS-SDK.podspec index 533d7499f5..6a0e7bbf28 100644 --- a/platform/macos/Mapbox-macOS-SDK.podspec +++ b/platform/macos/Mapbox-macOS-SDK.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |m| - version = '0.5.1' + version = '0.6.0' m.name = 'Mapbox-macOS-SDK' m.version = version -- cgit v1.2.1 From 33faa3811e1833ef99e7e9b5be835793c81892f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguy=E1=BB=85n?= Date: Fri, 22 Dec 2017 09:12:57 -0800 Subject: [macos] Renamed Mapbox macOS SDK to Mapbox Maps SDK for macOS --- platform/macos/CHANGELOG.md | 4 +--- platform/macos/README.md | 16 ++++++++-------- platform/macos/docs/doc-README.md | 6 +++--- platform/macos/docs/pod-README.md | 14 +++++++------- platform/macos/scripts/document.sh | 2 +- 5 files changed, 20 insertions(+), 22 deletions(-) diff --git a/platform/macos/CHANGELOG.md b/platform/macos/CHANGELOG.md index 80d6933678..b86ebae586 100644 --- a/platform/macos/CHANGELOG.md +++ b/platform/macos/CHANGELOG.md @@ -1,12 +1,10 @@ # Changelog for Mapbox Maps SDK for macOS -### Annotations - ## v0.6.0 ### Packaging -* Renamed this SDK from Mapbox macOS SDK to Mapbox Maps SDK for macOS. ([#10610](https://github.com/mapbox/mapbox-gl-native/pull/10610)) +* Renamed this SDK from Mapbox macOS SDK to Mapbox Maps SDK for macOS. ([#10610](https://github.com/mapbox/mapbox-gl-native/pull/10610), [#10793](https://github.com/mapbox/mapbox-gl-native/pull/10793)) * Added a Bulgarian localization. ([#10309](https://github.com/mapbox/mapbox-gl-native/pull/10309)) ### Networking and storage diff --git a/platform/macos/README.md b/platform/macos/README.md index 14b3e0cf16..a29f3ad6e2 100644 --- a/platform/macos/README.md +++ b/platform/macos/README.md @@ -1,8 +1,8 @@ -# [Mapbox macOS SDK](https://mapbox.github.io/mapbox-gl-native/macos/) +# [Mapbox Maps SDK for macOS](https://mapbox.github.io/mapbox-gl-native/macos/) [![Bitrise](https://www.bitrise.io/app/155ef7da24b38dcd.svg?token=4KSOw_gd6WxTnvGE2rMttg&branch=master)](https://www.bitrise.io/app/155ef7da24b38dcd) -Put interactive, scalable world maps into your native Cocoa application with the Mapbox macOS SDK. +Put interactive, scalable world maps into your native Cocoa application with the Mapbox Maps SDK for macOS. * Mapbox-curated [map styles](https://www.mapbox.com/maps/) and [OpenStreetMap-based](https://www.mapbox.com/vector-tiles/mapbox-streets-v7/) [vector tiles](https://www.mapbox.com/vector-tiles/) make it easy to get started. * Customize every aspect of the map’s appearance in code or visually using [Mapbox Studio](https://www.mapbox.com/mapbox-studio/). @@ -12,19 +12,19 @@ Put interactive, scalable world maps into your native Cocoa application with the ![](docs/img/screenshot.jpg) -The Mapbox macOS SDK is compatible with macOS 10.10.0 and above for Cocoa applications developed in Objective-C, Swift, Interface Builder, or AppleScript. For hybrid applications, consider [Mapbox GL JS](https://github.com/mapbox/mapbox-gl-js/). +The Mapbox Maps SDK for macOS is compatible with macOS 10.10.0 and above for Cocoa applications developed in Objective-C, Swift, Interface Builder, or AppleScript. For hybrid applications, consider [Mapbox GL JS](https://github.com/mapbox/mapbox-gl-js/). Information for Mac developers: -* [Integrate the Mapbox macOS SDK into your application](https://mapbox.github.io/mapbox-gl-native/macos/) -* [Learn how to use the Mapbox macOS SDK](https://mapbox.github.io/mapbox-gl-native/macos/) +* [Integrate the Mapbox Maps SDK for macOS into your application](https://mapbox.github.io/mapbox-gl-native/macos/) +* [Learn how to use the Mapbox Maps SDK for macOS](https://mapbox.github.io/mapbox-gl-native/macos/) * [Browse example styles designed in Mapbox Studio](https://www.mapbox.com/gallery/) Information for contributors: -* [Build the Mapbox macOS SDK from source](INSTALL.md) -* [Contribute to the Mapbox macOS SDK](DEVELOPING.md) +* [Build the Mapbox Maps SDK for macOS from source](INSTALL.md) +* [Contribute to the Mapbox Maps SDK for macOS](DEVELOPING.md) * [Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/) * [Mapbox Vector Tile Specification](https://www.mapbox.com/developers/vector-tiles/) -Mapbox does not officially support the Mapbox macOS SDK to the same extent as the Mapbox iOS SDK; however, bug reports and pull requests are certainly welcome. +Mapbox does not officially support the macOS SDK to the same extent as the iOS SDK; however, bug reports and pull requests are certainly welcome. diff --git a/platform/macos/docs/doc-README.md b/platform/macos/docs/doc-README.md index 391b3dfca5..8089ae17d1 100644 --- a/platform/macos/docs/doc-README.md +++ b/platform/macos/docs/doc-README.md @@ -1,9 +1,9 @@ -# [Mapbox macOS SDK](https://github.com/mapbox/mapbox-gl-native/tree/master/platform/macos/) +# [Mapbox Maps SDK for macOS](https://github.com/mapbox/mapbox-gl-native/tree/master/platform/macos/) -The Mapbox macOS SDK is an open-source framework for embedding interactive map views with scalable, customizable vector maps into Cocoa applications on macOS 10.10.0 and above using Objective-C, Swift, Interface Builder, or AppleScript. The Mapbox macOS SDK takes stylesheets that conform to the [Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/), applies them to vector tiles that conform to the [Mapbox Vector Tile Specification](https://www.mapbox.com/developers/vector-tiles/), and renders them using OpenGL. +The Mapbox Maps SDK for macOS is an open-source framework for embedding interactive map views with scalable, customizable vector maps into Cocoa applications on macOS 10.10.0 and above using Objective-C, Swift, Interface Builder, or AppleScript. The SDK takes stylesheets that conform to the [Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/), applies them to vector tiles that conform to the [Mapbox Vector Tile Specification](https://www.mapbox.com/developers/vector-tiles/), and renders them using OpenGL. ![](img/screenshot.jpg) -For setup information, consult the README.md that comes with this documentation. For further instructions, consult the [macOS SDK documentation](https://mapbox.github.io/mapbox-gl-native/macos/). The [Mapbox iOS SDK](https://www.mapbox.com/ios-sdk/)’s [API documentation](https://www.mapbox.com/ios-sdk/api/) and [online examples](https://www.mapbox.com/ios-sdk/examples/) apply to the Mapbox macOS SDK with few differences, mostly around unimplemented features like user location tracking. A [full changelog](https://github.com/mapbox/mapbox-gl-native/blob/master/platform/macos/CHANGELOG.md) is also available. +For setup information, consult the README.md that comes with this documentation. For further instructions, consult the [Mapbox Maps SDK for macOS documentation](https://mapbox.github.io/mapbox-gl-native/macos/). The [Mapbox Maps SDK for iOS](https://www.mapbox.com/ios-sdk/) has [API documentation](https://www.mapbox.com/ios-sdk/api/) and [online examples](https://www.mapbox.com/ios-sdk/examples/) that apply to the macOS SDK with few differences, mostly around unimplemented features like user location tracking. A [full changelog](https://github.com/mapbox/mapbox-gl-native/blob/master/platform/macos/CHANGELOG.md) is also available. Mapbox does not officially support the macOS SDK to the same extent as the iOS SDK; however, [bug reports and pull requests](https://github.com/mapbox/mapbox-gl-native/issues/) are certainly welcome. diff --git a/platform/macos/docs/pod-README.md b/platform/macos/docs/pod-README.md index f247277ca2..97e77673ee 100644 --- a/platform/macos/docs/pod-README.md +++ b/platform/macos/docs/pod-README.md @@ -1,6 +1,6 @@ -# [Mapbox macOS SDK](https://github.com/mapbox/mapbox-gl-native/tree/master/platform/macos/) +# [Mapbox Maps SDK for macOS](https://github.com/mapbox/mapbox-gl-native/tree/master/platform/macos/) -Put interactive, scalable world maps into your native Cocoa application with the open-source Mapbox macOS SDK. +Put interactive, scalable world maps into your native Cocoa application with the open-source Mapbox Maps SDK for macOS. * Mapbox-curated [map styles](https://www.mapbox.com/maps/) and [OpenStreetMap-based](https://www.mapbox.com/vector-tiles/mapbox-streets-v7/) [vector tiles](https://www.mapbox.com/vector-tiles/) make it easy to get started. * Customize every aspect of the map’s appearance in code or visually using [Mapbox Studio](https://www.mapbox.com/mapbox-studio/). @@ -10,21 +10,21 @@ Put interactive, scalable world maps into your native Cocoa application with the ![](https://raw.githubusercontent.com/mapbox/mapbox-gl-native/master/platform/macos/docs/img/screenshot.jpg) -The Mapbox macOS SDK is compatible with macOS 10.10.0 and above for Cocoa applications developed in Objective-C, Swift, Interface Builder, or AppleScript. For hybrid applications, consider [Mapbox GL JS](https://www.mapbox.com/mapbox-gl-js/). +The Mapbox Maps SDK for macOS is compatible with macOS 10.10.0 and above for Cocoa applications developed in Objective-C, Swift, Interface Builder, or AppleScript. For hybrid applications, consider [Mapbox GL JS](https://www.mapbox.com/mapbox-gl-js/). ## Installation -There are three ways to install the Mapbox macOS SDK: +There are three ways to install the Mapbox Maps SDK for macOS: ### Manually -1. Download the [latest Mapbox macOS SDK release](https://github.com/mapbox/mapbox-gl-native/releases/) from GitHub – look for a release that begins with “macos-”. +1. Download the [latest Mapbox Maps SDK for macOS release](https://github.com/mapbox/mapbox-gl-native/releases/) from GitHub – look for a release that begins with “macos-”. 1. Open the project editor, select your application target, then go to the General tab. Drag Mapbox.framework into the “Embedded Binaries” section. (Don’t drag it into the “Linked Frameworks and Libraries” section; Xcode will add it there automatically.) In the sheet that appears, make sure “Copy items if needed” is checked, then click Finish. ### Via Carthage -The Mapbox macOS SDK is a binary-only dependency, so you’ll need Carthage 0.19 or above. In your [Cartfile](https://github.com/Carthage/Carthage/blob/master/Documentation/Artifacts.md#binary-only-frameworks), specify this dependency (plus an optional version requirement): +The Mapbox Maps SDK for macOS is a binary-only dependency, so you’ll need Carthage 0.19 or above. In your [Cartfile](https://github.com/Carthage/Carthage/blob/master/Documentation/Artifacts.md#binary-only-frameworks), specify this dependency (plus an optional version requirement): ``` binary "https://mapbox.github.io/mapbox-gl-native/macos/Mapbox-macOS-SDK.json" @@ -93,6 +93,6 @@ script AppDelegate end script ``` -Full API documentation is included in this package, within the `documentation` folder, and [online](https://mapbox.github.io/mapbox-gl-native/macos/). The [Mapbox iOS SDK](https://www.mapbox.com/ios-sdk/)’s [API documentation](https://www.mapbox.com/ios-sdk/api/) and [online examples](https://www.mapbox.com/ios-sdk/examples/) apply to the Mapbox macOS SDK with few differences, mostly around unimplemented features like user location tracking. +Full API documentation is included in this package, within the `documentation` folder, and [online](https://mapbox.github.io/mapbox-gl-native/macos/). The [Mapbox Maps SDK for iOS](https://www.mapbox.com/ios-sdk/) has [API documentation](https://www.mapbox.com/ios-sdk/api/) and [online examples](https://www.mapbox.com/ios-sdk/examples/) that apply to the Mapbox Maps SDK for macOS with few differences, mostly around unimplemented features like user location tracking. Mapbox does not officially support the macOS SDK to the same extent as the iOS SDK; however, [bug reports and pull requests](https://github.com/mapbox/mapbox-gl-native/issues/) are certainly welcome. diff --git a/platform/macos/scripts/document.sh b/platform/macos/scripts/document.sh index 2e53dc359b..7960c87698 100755 --- a/platform/macos/scripts/document.sh +++ b/platform/macos/scripts/document.sh @@ -50,4 +50,4 @@ jazzy \ --output ${OUTPUT} # https://github.com/realm/jazzy/issues/411 find ${OUTPUT} -name *.html -exec \ - perl -pi -e 's/BRANDLESS_DOCSET_TITLE/macOS SDK $1/, s/Mapbox\s+(Docs|Reference)/Mapbox macOS SDK $1/' {} \; + perl -pi -e 's/BRANDLESS_DOCSET_TITLE/Maps SDK for macOS $1/, s/Mapbox\s+(Docs|Reference)/Mapbox Maps SDK for macOS $1/' {} \; -- cgit v1.2.1 From 498dbf27b9fc49254471f6251349bb14f25a150e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20K=C3=A4fer?= Date: Fri, 22 Dec 2017 16:27:31 +0100 Subject: [core] don't tie Annotation geometries to Map maxzoom Instead, geometry generation via GeoJSONVT is now bound to the hardcoded limit of the annotation tile source. --- src/mbgl/annotation/annotation_manager.cpp | 30 +++++++++++++-------------- src/mbgl/annotation/annotation_manager.hpp | 16 +++++++------- src/mbgl/annotation/fill_annotation_impl.cpp | 4 ++-- src/mbgl/annotation/fill_annotation_impl.hpp | 2 +- src/mbgl/annotation/line_annotation_impl.cpp | 4 ++-- src/mbgl/annotation/line_annotation_impl.hpp | 2 +- src/mbgl/annotation/shape_annotation_impl.cpp | 7 ++++--- src/mbgl/annotation/shape_annotation_impl.hpp | 3 +-- src/mbgl/map/map.cpp | 4 ++-- test/api/annotations.test.cpp | 16 ++++++++++++++ 10 files changed, 52 insertions(+), 36 deletions(-) diff --git a/src/mbgl/annotation/annotation_manager.cpp b/src/mbgl/annotation/annotation_manager.cpp index a4d53bbd3f..b94b0a1bce 100644 --- a/src/mbgl/annotation/annotation_manager.cpp +++ b/src/mbgl/annotation/annotation_manager.cpp @@ -34,20 +34,20 @@ void AnnotationManager::onStyleLoaded() { updateStyle(); } -AnnotationID AnnotationManager::addAnnotation(const Annotation& annotation, const uint8_t maxZoom) { +AnnotationID AnnotationManager::addAnnotation(const Annotation& annotation) { std::lock_guard lock(mutex); AnnotationID id = nextID++; Annotation::visit(annotation, [&] (const auto& annotation_) { - this->add(id, annotation_, maxZoom); + this->add(id, annotation_); }); dirty = true; return id; } -bool AnnotationManager::updateAnnotation(const AnnotationID& id, const Annotation& annotation, const uint8_t maxZoom) { +bool AnnotationManager::updateAnnotation(const AnnotationID& id, const Annotation& annotation) { std::lock_guard lock(mutex); Annotation::visit(annotation, [&] (const auto& annotation_) { - this->update(id, annotation_, maxZoom); + this->update(id, annotation_); }); return dirty; } @@ -58,25 +58,25 @@ void AnnotationManager::removeAnnotation(const AnnotationID& id) { dirty = true; } -void AnnotationManager::add(const AnnotationID& id, const SymbolAnnotation& annotation, const uint8_t) { +void AnnotationManager::add(const AnnotationID& id, const SymbolAnnotation& annotation) { auto impl = std::make_shared(id, annotation); symbolTree.insert(impl); symbolAnnotations.emplace(id, impl); } -void AnnotationManager::add(const AnnotationID& id, const LineAnnotation& annotation, const uint8_t maxZoom) { +void AnnotationManager::add(const AnnotationID& id, const LineAnnotation& annotation) { ShapeAnnotationImpl& impl = *shapeAnnotations.emplace(id, - std::make_unique(id, annotation, maxZoom)).first->second; + std::make_unique(id, annotation)).first->second; impl.updateStyle(*style.get().impl); } -void AnnotationManager::add(const AnnotationID& id, const FillAnnotation& annotation, const uint8_t maxZoom) { +void AnnotationManager::add(const AnnotationID& id, const FillAnnotation& annotation) { ShapeAnnotationImpl& impl = *shapeAnnotations.emplace(id, - std::make_unique(id, annotation, maxZoom)).first->second; + std::make_unique(id, annotation)).first->second; impl.updateStyle(*style.get().impl); } -void AnnotationManager::update(const AnnotationID& id, const SymbolAnnotation& annotation, const uint8_t maxZoom) { +void AnnotationManager::update(const AnnotationID& id, const SymbolAnnotation& annotation) { auto it = symbolAnnotations.find(id); if (it == symbolAnnotations.end()) { assert(false); // Attempt to update a non-existent symbol annotation @@ -89,11 +89,11 @@ void AnnotationManager::update(const AnnotationID& id, const SymbolAnnotation& a dirty = true; remove(id); - add(id, annotation, maxZoom); + add(id, annotation); } } -void AnnotationManager::update(const AnnotationID& id, const LineAnnotation& annotation, const uint8_t maxZoom) { +void AnnotationManager::update(const AnnotationID& id, const LineAnnotation& annotation) { auto it = shapeAnnotations.find(id); if (it == shapeAnnotations.end()) { assert(false); // Attempt to update a non-existent shape annotation @@ -101,11 +101,11 @@ void AnnotationManager::update(const AnnotationID& id, const LineAnnotation& ann } shapeAnnotations.erase(it); - add(id, annotation, maxZoom); + add(id, annotation); dirty = true; } -void AnnotationManager::update(const AnnotationID& id, const FillAnnotation& annotation, const uint8_t maxZoom) { +void AnnotationManager::update(const AnnotationID& id, const FillAnnotation& annotation) { auto it = shapeAnnotations.find(id); if (it == shapeAnnotations.end()) { assert(false); // Attempt to update a non-existent shape annotation @@ -113,7 +113,7 @@ void AnnotationManager::update(const AnnotationID& id, const FillAnnotation& ann } shapeAnnotations.erase(it); - add(id, annotation, maxZoom); + add(id, annotation); dirty = true; } diff --git a/src/mbgl/annotation/annotation_manager.hpp b/src/mbgl/annotation/annotation_manager.hpp index 22b25cd2ac..326565f8bc 100644 --- a/src/mbgl/annotation/annotation_manager.hpp +++ b/src/mbgl/annotation/annotation_manager.hpp @@ -28,8 +28,8 @@ public: AnnotationManager(style::Style&); ~AnnotationManager(); - AnnotationID addAnnotation(const Annotation&, const uint8_t maxZoom); - bool updateAnnotation(const AnnotationID&, const Annotation&, const uint8_t maxZoom); + AnnotationID addAnnotation(const Annotation&); + bool updateAnnotation(const AnnotationID&, const Annotation&); void removeAnnotation(const AnnotationID&); void addImage(std::unique_ptr); @@ -49,13 +49,13 @@ public: static const std::string ShapeLayerID; private: - void add(const AnnotationID&, const SymbolAnnotation&, const uint8_t); - void add(const AnnotationID&, const LineAnnotation&, const uint8_t); - void add(const AnnotationID&, const FillAnnotation&, const uint8_t); + void add(const AnnotationID&, const SymbolAnnotation&); + void add(const AnnotationID&, const LineAnnotation&); + void add(const AnnotationID&, const FillAnnotation&); - void update(const AnnotationID&, const SymbolAnnotation&, const uint8_t); - void update(const AnnotationID&, const LineAnnotation&, const uint8_t); - void update(const AnnotationID&, const FillAnnotation&, const uint8_t); + void update(const AnnotationID&, const SymbolAnnotation&); + void update(const AnnotationID&, const LineAnnotation&); + void update(const AnnotationID&, const FillAnnotation&); void remove(const AnnotationID&); diff --git a/src/mbgl/annotation/fill_annotation_impl.cpp b/src/mbgl/annotation/fill_annotation_impl.cpp index 9c73aeb796..9d3e12e004 100644 --- a/src/mbgl/annotation/fill_annotation_impl.cpp +++ b/src/mbgl/annotation/fill_annotation_impl.cpp @@ -7,8 +7,8 @@ namespace mbgl { using namespace style; -FillAnnotationImpl::FillAnnotationImpl(AnnotationID id_, FillAnnotation annotation_, uint8_t maxZoom_) - : ShapeAnnotationImpl(id_, maxZoom_), +FillAnnotationImpl::FillAnnotationImpl(AnnotationID id_, FillAnnotation annotation_) + : ShapeAnnotationImpl(id_), annotation(ShapeAnnotationGeometry::visit(annotation_.geometry, CloseShapeAnnotation{}), annotation_.opacity, annotation_.color, annotation_.outlineColor) { } diff --git a/src/mbgl/annotation/fill_annotation_impl.hpp b/src/mbgl/annotation/fill_annotation_impl.hpp index 5c49e447b8..98f9921514 100644 --- a/src/mbgl/annotation/fill_annotation_impl.hpp +++ b/src/mbgl/annotation/fill_annotation_impl.hpp @@ -7,7 +7,7 @@ namespace mbgl { class FillAnnotationImpl : public ShapeAnnotationImpl { public: - FillAnnotationImpl(AnnotationID, FillAnnotation, uint8_t maxZoom); + FillAnnotationImpl(AnnotationID, FillAnnotation); void updateStyle(style::Style::Impl&) const final; const ShapeAnnotationGeometry& geometry() const final; diff --git a/src/mbgl/annotation/line_annotation_impl.cpp b/src/mbgl/annotation/line_annotation_impl.cpp index d35b956888..74fec49af8 100644 --- a/src/mbgl/annotation/line_annotation_impl.cpp +++ b/src/mbgl/annotation/line_annotation_impl.cpp @@ -7,8 +7,8 @@ namespace mbgl { using namespace style; -LineAnnotationImpl::LineAnnotationImpl(AnnotationID id_, LineAnnotation annotation_, uint8_t maxZoom_) - : ShapeAnnotationImpl(id_, maxZoom_), +LineAnnotationImpl::LineAnnotationImpl(AnnotationID id_, LineAnnotation annotation_) + : ShapeAnnotationImpl(id_), annotation(ShapeAnnotationGeometry::visit(annotation_.geometry, CloseShapeAnnotation{}), annotation_.opacity, annotation_.width, annotation_.color) { } diff --git a/src/mbgl/annotation/line_annotation_impl.hpp b/src/mbgl/annotation/line_annotation_impl.hpp index 548a094d53..108787c422 100644 --- a/src/mbgl/annotation/line_annotation_impl.hpp +++ b/src/mbgl/annotation/line_annotation_impl.hpp @@ -7,7 +7,7 @@ namespace mbgl { class LineAnnotationImpl : public ShapeAnnotationImpl { public: - LineAnnotationImpl(AnnotationID, LineAnnotation, uint8_t maxZoom); + LineAnnotationImpl(AnnotationID, LineAnnotation); void updateStyle(style::Style::Impl&) const final; const ShapeAnnotationGeometry& geometry() const final; diff --git a/src/mbgl/annotation/shape_annotation_impl.cpp b/src/mbgl/annotation/shape_annotation_impl.cpp index 9288159b6a..715dce484e 100644 --- a/src/mbgl/annotation/shape_annotation_impl.cpp +++ b/src/mbgl/annotation/shape_annotation_impl.cpp @@ -13,9 +13,8 @@ namespace mbgl { using namespace style; namespace geojsonvt = mapbox::geojsonvt; -ShapeAnnotationImpl::ShapeAnnotationImpl(const AnnotationID id_, const uint8_t maxZoom_) +ShapeAnnotationImpl::ShapeAnnotationImpl(const AnnotationID id_) : id(id_), - maxZoom(maxZoom_), layerID(AnnotationManager::ShapeLayerID + util::toString(id)) { } @@ -28,7 +27,9 @@ void ShapeAnnotationImpl::updateTileData(const CanonicalTileID& tileID, Annotati return Feature { std::move(geom) }; })); mapbox::geojsonvt::Options options; - options.maxZoom = maxZoom; + // The annotation source is currently hard coded to maxzoom 16, so we're topping out at z16 + // here as well. + options.maxZoom = 16; options.buffer = 255u; options.extent = util::EXTENT; options.tolerance = baseTolerance; diff --git a/src/mbgl/annotation/shape_annotation_impl.hpp b/src/mbgl/annotation/shape_annotation_impl.hpp index caf2cff1a5..3e28221f7b 100644 --- a/src/mbgl/annotation/shape_annotation_impl.hpp +++ b/src/mbgl/annotation/shape_annotation_impl.hpp @@ -17,7 +17,7 @@ class CanonicalTileID; class ShapeAnnotationImpl { public: - ShapeAnnotationImpl(const AnnotationID, const uint8_t maxZoom); + ShapeAnnotationImpl(const AnnotationID); virtual ~ShapeAnnotationImpl() = default; virtual void updateStyle(style::Style::Impl&) const = 0; @@ -26,7 +26,6 @@ public: void updateTileData(const CanonicalTileID&, AnnotationTileData&); const AnnotationID id; - const uint8_t maxZoom; const std::string layerID; std::unique_ptr shapeTiler; }; diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index 6eb555ad1e..5e5063905e 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -647,13 +647,13 @@ double Map::getTopOffsetPixelsForAnnotationImage(const std::string& id) { } AnnotationID Map::addAnnotation(const Annotation& annotation) { - auto result = impl->annotationManager.addAnnotation(annotation, getMaxZoom()); + auto result = impl->annotationManager.addAnnotation(annotation); impl->onUpdate(); return result; } void Map::updateAnnotation(AnnotationID id, const Annotation& annotation) { - if (impl->annotationManager.updateAnnotation(id, annotation, getMaxZoom())) { + if (impl->annotationManager.updateAnnotation(id, annotation)) { impl->onUpdate(); } } diff --git a/test/api/annotations.test.cpp b/test/api/annotations.test.cpp index 9e622f780a..b777615b4c 100644 --- a/test/api/annotations.test.cpp +++ b/test/api/annotations.test.cpp @@ -459,3 +459,19 @@ TEST(Annotations, DebugSparse) { test.checkRendering("debug_sparse"); } + +TEST(Annotations, ChangeMaxZoom) { + AnnotationTest test; + + LineString line = {{ { 0, 0 }, { 45, 45 }, { 30, 0 } }}; + LineAnnotation annotation { line }; + annotation.color = Color::red(); + annotation.width = { 5 }; + + test.map.setMaxZoom(6); + test.map.getStyle().loadJSON(util::read_file("test/fixtures/api/empty.json")); + test.map.addAnnotation(annotation); + test.map.setMaxZoom(14); + test.map.setZoom(test.map.getMaxZoom()); + test.checkRendering("line_annotation_max_zoom"); +} -- cgit v1.2.1 From 0dc00ad877de2a68183257488763be3cb32482c2 Mon Sep 17 00:00:00 2001 From: Chris Loer Date: Mon, 27 Nov 2017 12:50:28 -0800 Subject: [ios,macos] Darwin implementation of a CoreText-based LocalGlyphRasterizer. - Changing font weight does not currently appear to be working. - Glyph metric extraction code not working; currently unused. --- platform/darwin/src/CFHandle.hpp | 31 ++++ platform/darwin/src/image.mm | 14 +- platform/darwin/src/local_glyph_rasterizer.mm | 233 ++++++++++++++++++++++++++ platform/ios/config.cmake | 4 +- platform/macos/config.cmake | 4 +- platform/macos/src/MGLMapView.mm | 10 +- 6 files changed, 276 insertions(+), 20 deletions(-) create mode 100644 platform/darwin/src/CFHandle.hpp create mode 100644 platform/darwin/src/local_glyph_rasterizer.mm diff --git a/platform/darwin/src/CFHandle.hpp b/platform/darwin/src/CFHandle.hpp new file mode 100644 index 0000000000..edcc9aafdf --- /dev/null +++ b/platform/darwin/src/CFHandle.hpp @@ -0,0 +1,31 @@ +#pragma once + +/* + CFHandle is a minimal wrapper designed to hold and release CoreFoundation-style handles + It is non-transferrable: wrap it in something like a unique_ptr if you need to pass it around, + or just use unique_ptr with a custom deleter. + CFHandle has no special treatment for null handles -- be careful not to let it hold a null + handle if the behavior of the Releaser isn't defined for null. + + ex: + using CFDataHandle = CFHandle; + + CFDataHandle data(CFDataCreateWithBytesNoCopy( + kCFAllocatorDefault, reinterpret_cast(source.data()), source.size(), + kCFAllocatorNull)); +*/ + +namespace { + +template +struct CFHandle { + CFHandle(HandleType handle_): handle(handle_) {} + ~CFHandle() { Releaser(handle); } + HandleType operator*() { return handle; } + operator bool() { return handle; } +private: + HandleType handle; +}; + +} // namespace + diff --git a/platform/darwin/src/image.mm b/platform/darwin/src/image.mm index 57b680fbdb..8c0d5fa484 100644 --- a/platform/darwin/src/image.mm +++ b/platform/darwin/src/image.mm @@ -2,19 +2,7 @@ #import -namespace { - -template -struct CFHandle { - CFHandle(T t_): t(t_) {} - ~CFHandle() { Releaser(t); } - T operator*() { return t; } - operator bool() { return t; } -private: - T t; -}; - -} // namespace +#import "CFHandle.hpp" using CGImageHandle = CFHandle; using CFDataHandle = CFHandle; diff --git a/platform/darwin/src/local_glyph_rasterizer.mm b/platform/darwin/src/local_glyph_rasterizer.mm new file mode 100644 index 0000000000..35c9c6733b --- /dev/null +++ b/platform/darwin/src/local_glyph_rasterizer.mm @@ -0,0 +1,233 @@ +#include +#include +#include + +#include + +#import +#import +#import + +#import "CFHandle.hpp" + +namespace mbgl { + +/* + Darwin implementation of LocalGlyphRasterizer: + Draws CJK glyphs using locally available fonts. + + Mirrors GL JS implementation in that: + - Only CJK glyphs are drawn locally (because we can guess their metrics effectively) + * Render size/metrics determined experimentally by rendering a few different fonts + - Configuration is done at map creation time by setting a "font family" + * JS uses a CSS font-family, this uses kCTFontFamilyNameAttribute which has + somewhat different behavior. + - We use heuristics to extract a font-weight based on the incoming font stack + + Further improvements are possible: + - If we could reliably extract glyph metrics, we wouldn't be limited to CJK glyphs + - We could push the font configuration down to individual style layers, which would + allow any current style to be reproducible using local fonts. + - Instead of just exposing "font family" as a configuration, we could expose a richer + CTFontDescriptor configuration option (although we'd have to override font size to + make sure it stayed at 24pt). + - Because Apple exposes glyph paths via `CTFontCreatePathForGlyph` we could potentially + render directly to SDF instead of going through TinySDF -- although it's not clear + how much of an improvement it would be. +*/ + +using CGColorSpaceHandle = CFHandle; +using CGContextHandle = CFHandle; +using CFStringRefHandle = CFHandle; +using CFAttributedStringRefHandle = CFHandle; +using CFDictionaryRefHandle = CFHandle; +using CTFontDescriptorRefHandle = CFHandle; +using CTLineRefHandle = CFHandle; + +class LocalGlyphRasterizer::Impl { +public: + Impl(const optional fontFamily_) + : fontFamily(fontFamily_) + {} + + ~Impl() { + for (auto& pair : fontHandles) { + CFRelease(pair.second); + } + } + + + CTFontRef getFont(const FontStack& fontStack) { + if (!fontFamily) { + return NULL; + } + + if (fontHandles.find(fontStack) == fontHandles.end()) { + + NSDictionary* fontTraits = @{ (NSString *)kCTFontWeightTrait: [NSNumber numberWithFloat:getFontWeight(fontStack)] }; + + NSDictionary *fontAttributes = @{ + (NSString *)kCTFontSizeAttribute: [NSNumber numberWithFloat:24.0], + (NSString *)kCTFontFamilyNameAttribute: [[NSString alloc] initWithCString:fontFamily->c_str() encoding:NSUTF8StringEncoding], + (NSString *)kCTFontTraitsAttribute: fontTraits + //(NSString *)kCTFontStyleNameAttribute: (getFontWeight(fontStack) > .3) ? @"Bold" : @"Regular" + }; + + CTFontDescriptorRefHandle descriptor(CTFontDescriptorCreateWithAttributes((CFDictionaryRef)fontAttributes)); + CTFontRef font = CTFontCreateWithFontDescriptor(*descriptor, 0.0, NULL); + if (!font) { + throw std::runtime_error("CTFontCreateWithFontDescriptor failed"); + } + + fontHandles[fontStack] = font; + } + return fontHandles[fontStack]; + } + +private: + float getFontWeight(const FontStack& fontStack) { + // Analog to logic in glyph_manager.js + // From NSFontDescriptor.h (macOS 10.11+) NSFontWeight*: + constexpr float light = -.4; + constexpr float regular = 0.0; + constexpr float medium = .23; + constexpr float bold = .4; + + float fontWeight = regular; + for (auto font : fontStack) { + // Last font in the fontstack "wins" + std::string lowercaseFont = mbgl::platform::lowercase(font); + if (lowercaseFont.find("bold") != std::string::npos) { + fontWeight = bold; + } else if (lowercaseFont.find("medium") != std::string::npos) { + fontWeight = medium; + } else if (lowercaseFont.find("light") != std::string::npos) { + fontWeight = light; + } + } + + return fontWeight; + } + + std::unordered_map fontHandles; + optional fontFamily; +}; + +LocalGlyphRasterizer::LocalGlyphRasterizer(const optional fontFamily) + : impl(std::make_unique(fontFamily)) +{} + +LocalGlyphRasterizer::~LocalGlyphRasterizer() +{} + +bool LocalGlyphRasterizer::canRasterizeGlyph(const FontStack& fontStack, GlyphID glyphID) { + return util::i18n::allowsFixedWidthGlyphGeneration(glyphID) && impl->getFont(fontStack); +} + +/* +// TODO: In theory we should be able to transform user-coordinate bounding box and advance +// values into pixel glyph metrics. This would remove the need to use fixed glyph metrics +// (which will be slightly off depending on the font), and allow us to return non CJK glyphs +// (which will have variable "advance" values). +void extractGlyphMetrics(CTFontRef font, CTLineRef line) { + CFArrayRef glyphRuns = CTLineGetGlyphRuns(line); + CFIndex runCount = CFArrayGetCount(glyphRuns); + assert(runCount == 1); + CTRunRef run = (CTRunRef)CFArrayGetValueAtIndex(glyphRuns, 0); + CFIndex glyphCount = CTRunGetGlyphCount(run); + assert(glyphCount == 1); + const CGGlyph *glyphs = CTRunGetGlyphsPtr(run); + + CGRect boundingRects[1]; + boundingRects[0] = CGRectMake(0, 0, 0, 0); + CGSize advances[1]; + advances[0] = CGSizeMake(0,0); + CGRect totalBoundingRect = CTFontGetBoundingRectsForGlyphs(font, kCTFontOrientationDefault, glyphs, boundingRects, 1); + double totalAdvance = CTFontGetAdvancesForGlyphs(font, kCTFontOrientationDefault, glyphs, advances, 1); + + // Break in the debugger to see these values: translating from "user coordinates" to bitmap pixel coordinates + // should be OK, but a lot of glyphs seem to have empty bounding boxes...? + (void)totalBoundingRect; + (void)totalAdvance; +} +*/ + +PremultipliedImage drawGlyphBitmap(GlyphID glyphID, CTFontRef font, Size size) { + PremultipliedImage rgbaBitmap(size); + + CFStringRefHandle string(CFStringCreateWithCharacters(NULL, reinterpret_cast(&glyphID), 1)); + + CGColorSpaceHandle colorSpace(CGColorSpaceCreateDeviceRGB()); + // TODO: Is there a way to just draw a single alpha channel instead of copying it out of an RGB image? Doesn't seem like the grayscale colorspace is what I'm looking for... + if (!colorSpace) { + throw std::runtime_error("CGColorSpaceCreateDeviceRGB failed"); + } + + constexpr const size_t bitsPerComponent = 8; + constexpr const size_t bytesPerPixel = 4; + const size_t bytesPerRow = bytesPerPixel * size.width; + + CGContextHandle context(CGBitmapContextCreate( + rgbaBitmap.data.get(), + size.width, + size.height, + bitsPerComponent, + bytesPerRow, + *colorSpace, + kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedLast)); + if (!context) { + throw std::runtime_error("CGBitmapContextCreate failed"); + } + + CFStringRef keys[] = { kCTFontAttributeName }; + CFTypeRef values[] = { font }; + + CFDictionaryRefHandle attributes( + CFDictionaryCreate(kCFAllocatorDefault, (const void**)&keys, + (const void**)&values, sizeof(keys) / sizeof(keys[0]), + &kCFTypeDictionaryKeyCallBacks, + &kCFTypeDictionaryValueCallBacks)); + + CFAttributedStringRefHandle attrString(CFAttributedStringCreate(kCFAllocatorDefault, *string, *attributes)); + + CTLineRefHandle line(CTLineCreateWithAttributedString(*attrString)); + + // For debugging only, doesn't get useful metrics yet + //extractGlyphMetrics(font, *line); + + // Start drawing a little bit below the top of the bitmap + CGContextSetTextPosition(*context, 0.0, 5.0); + CTLineDraw(*line, *context); + + return rgbaBitmap; +} + +Glyph LocalGlyphRasterizer::rasterizeGlyph(const FontStack& fontStack, GlyphID glyphID) { + Glyph fixedMetrics; + CTFontRef font = impl->getFont(fontStack); + if (!font) { + return fixedMetrics; + } + + fixedMetrics.id = glyphID; + + Size size(35, 35); + + fixedMetrics.metrics.width = size.width; + fixedMetrics.metrics.height = size.height; + fixedMetrics.metrics.left = 3; + fixedMetrics.metrics.top = -1; + fixedMetrics.metrics.advance = 24; + + PremultipliedImage rgbaBitmap = drawGlyphBitmap(glyphID, font, size); + + // Copy alpha values from RGBA bitmap into the AlphaImage output + fixedMetrics.bitmap = AlphaImage(size); + for (uint32_t i = 0; i < size.width * size.height; i++) { + fixedMetrics.bitmap.data[i] = rgbaBitmap.data[4 * i + 3]; + } + + return fixedMetrics; +} + +} // namespace mbgl diff --git a/platform/ios/config.cmake b/platform/ios/config.cmake index 3b99211299..55de8bc398 100644 --- a/platform/ios/config.cmake +++ b/platform/ios/config.cmake @@ -28,11 +28,12 @@ macro(mbgl_platform_core) # Misc PRIVATE platform/darwin/mbgl/storage/reachability.h PRIVATE platform/darwin/mbgl/storage/reachability.m + PRIVATE platform/darwin/src/CFHandle.hpp + PRIVATE platform/darwin/src/local_glyph_rasterizer.mm PRIVATE platform/darwin/src/logging_nslog.mm PRIVATE platform/darwin/src/nsthread.mm PRIVATE platform/darwin/src/string_nsstring.mm PRIVATE platform/default/bidi.cpp - PRIVATE platform/default/local_glyph_rasterizer.cpp PRIVATE platform/default/thread_local.cpp PRIVATE platform/default/utf.cpp @@ -84,6 +85,7 @@ macro(mbgl_platform_core) target_link_libraries(mbgl-core PUBLIC "-lz" PUBLIC "-framework Foundation" + PUBLIC "-framework CoreText" PUBLIC "-framework CoreGraphics" PUBLIC "-framework OpenGLES" PUBLIC "-framework ImageIO" diff --git a/platform/macos/config.cmake b/platform/macos/config.cmake index 3e7f548bab..33eaa82518 100644 --- a/platform/macos/config.cmake +++ b/platform/macos/config.cmake @@ -14,11 +14,12 @@ macro(mbgl_platform_core) # Misc PRIVATE platform/darwin/mbgl/storage/reachability.h PRIVATE platform/darwin/mbgl/storage/reachability.m + PRIVATE platform/darwin/src/CFHandle.hpp + PRIVATE platform/darwin/src/local_glyph_rasterizer.mm PRIVATE platform/darwin/src/logging_nslog.mm PRIVATE platform/darwin/src/nsthread.mm PRIVATE platform/darwin/src/string_nsstring.mm PRIVATE platform/default/bidi.cpp - PRIVATE platform/default/local_glyph_rasterizer.cpp PRIVATE platform/default/thread_local.cpp PRIVATE platform/default/utf.cpp @@ -64,6 +65,7 @@ macro(mbgl_platform_core) target_link_libraries(mbgl-core PUBLIC "-lz" PUBLIC "-framework Foundation" + PUBLIC "-framework CoreText" PUBLIC "-framework CoreGraphics" PUBLIC "-framework OpenGL" PUBLIC "-framework ImageIO" diff --git a/platform/macos/src/MGLMapView.mm b/platform/macos/src/MGLMapView.mm index c2c13320c7..5fb70d775a 100644 --- a/platform/macos/src/MGLMapView.mm +++ b/platform/macos/src/MGLMapView.mm @@ -217,7 +217,7 @@ public: - (instancetype)initWithFrame:(NSRect)frameRect { if (self = [super initWithFrame:frameRect]) { - [self commonInit]; + [self commonInit:nil]; self.styleURL = nil; } return self; @@ -225,7 +225,7 @@ public: - (instancetype)initWithFrame:(NSRect)frame styleURL:(nullable NSURL *)styleURL { if (self = [super initWithFrame:frame]) { - [self commonInit]; + [self commonInit:nil]; self.styleURL = styleURL; } return self; @@ -233,7 +233,7 @@ public: - (instancetype)initWithCoder:(nonnull NSCoder *)decoder { if (self = [super initWithCoder:decoder]) { - [self commonInit]; + [self commonInit:nil]; } return self; } @@ -252,7 +252,7 @@ public: return @[@"camera", @"debugMask"]; } -- (void)commonInit { +- (void)commonInit:(nullable NSString*)fontFamily { _isTargetingInterfaceBuilder = NSProcessInfo.processInfo.mgl_isInterfaceBuilderDesignablesAgent; // Set up cross-platform controllers and resources. @@ -274,7 +274,7 @@ public: _mbglThreadPool = mbgl::sharedThreadPool(); - auto renderer = std::make_unique(*_mbglView, [NSScreen mainScreen].backingScaleFactor, *mbglFileSource, *_mbglThreadPool, mbgl::GLContextMode::Unique); + auto renderer = std::make_unique(*_mbglView, [NSScreen mainScreen].backingScaleFactor, *mbglFileSource, *_mbglThreadPool, mbgl::GLContextMode::Unique, mbgl::optional(), fontFamily ? std::string([fontFamily UTF8String]) : mbgl::optional()); _rendererFrontend = std::make_unique(std::move(renderer), self, *_mbglView, true); _mbglMap = new mbgl::Map(*_rendererFrontend, *_mbglView, self.size, [NSScreen mainScreen].backingScaleFactor, *mbglFileSource, *_mbglThreadPool, mbgl::MapMode::Continuous, mbgl::ConstrainMode::None, mbgl::ViewportMode::Default); -- cgit v1.2.1 From c1705f37fb89cff99bfee0b62afec391feb70606 Mon Sep 17 00:00:00 2001 From: Andrew Kitchen Date: Thu, 30 Nov 2017 17:13:44 -0800 Subject: [ios, macos] Adds support for specifying an ideographic font family name Adding a MGLIdeographicFontFamilyName to the containing app's Info.plist will result in CJK glyphs being rasterized on demand (#10522) --- platform/ios/src/MGLMapView.mm | 18 ++++++++++++++++-- platform/macos/src/MGLMapView.mm | 20 ++++++++++++++------ 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index a0d4a5f364..e712f65109 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -187,6 +187,7 @@ public: @property (nonatomic) EAGLContext *context; @property (nonatomic) GLKView *glView; @property (nonatomic) UIImageView *glSnapshotView; + @property (nonatomic) NS_MUTABLE_ARRAY_OF(NSLayoutConstraint *) *scaleBarConstraints; @property (nonatomic, readwrite) MGLScaleBar *scaleBar; @property (nonatomic, readwrite) UIImageView *compassView; @@ -195,7 +196,10 @@ public: @property (nonatomic) NS_MUTABLE_ARRAY_OF(NSLayoutConstraint *) *logoViewConstraints; @property (nonatomic, readwrite) UIButton *attributionButton; @property (nonatomic) NS_MUTABLE_ARRAY_OF(NSLayoutConstraint *) *attributionButtonConstraints; + @property (nonatomic, readwrite) MGLStyle *style; +@property (nonatomic, readonly) NSString *ideographicFontFamilyName; + @property (nonatomic) UITapGestureRecognizer *singleTapGestureRecognizer; @property (nonatomic) UITapGestureRecognizer *doubleTap; @property (nonatomic) UITapGestureRecognizer *twoFingerTap; @@ -204,11 +208,14 @@ public: @property (nonatomic) UIRotationGestureRecognizer *rotate; @property (nonatomic) UILongPressGestureRecognizer *quickZoom; @property (nonatomic) UIPanGestureRecognizer *twoFingerDrag; + /// Mapping from reusable identifiers to annotation images. @property (nonatomic) NS_MUTABLE_DICTIONARY_OF(NSString *, MGLAnnotationImage *) *annotationImagesByIdentifier; + /// Currently shown popover representing the selected annotation. @property (nonatomic) UIView *calloutViewForSelectedAnnotation; @property (nonatomic) MGLUserLocationAnnotationView *userLocationAnnotationView; + /// Indicates how thoroughly the map view is tracking the user location. @property (nonatomic) MGLUserTrackingState userTrackingState; @property (nonatomic) CLLocationManager *locationManager; @@ -402,8 +409,9 @@ public: mbgl::DefaultFileSource *mbglFileSource = [MGLOfflineStorage sharedOfflineStorage].mbglFileSource; const float scaleFactor = [UIScreen instancesRespondToSelector:@selector(nativeScale)] ? [[UIScreen mainScreen] nativeScale] : [[UIScreen mainScreen] scale]; _mbglThreadPool = mbgl::sharedThreadPool(); - - auto renderer = std::make_unique(*_mbglView, scaleFactor, *mbglFileSource, *_mbglThreadPool, mbgl::GLContextMode::Unique); + NSString *fontFamilyName = self.ideographicFontFamilyName; + + auto renderer = std::make_unique(*_mbglView, scaleFactor, *mbglFileSource, *_mbglThreadPool, mbgl::GLContextMode::Unique, mbgl::optional(), fontFamilyName ? std::string([fontFamilyName UTF8String]) : mbgl::optional()); _rendererFrontend = std::make_unique(std::move(renderer), self, *_mbglView); _mbglMap = new mbgl::Map(*_rendererFrontend, *_mbglView, self.size, scaleFactor, *mbglFileSource, *_mbglThreadPool, mbgl::MapMode::Continuous, mbgl::ConstrainMode::None, mbgl::ViewportMode::Default); @@ -3460,6 +3468,12 @@ public: [self.style removeStyleClass:styleClass]; } +#pragma mark Ideographic Font Info + +- (NSString *)ideographicFontFamilyName { + return [[NSBundle mainBundle] objectForInfoDictionaryKey:@"MGLIdeographicFontFamilyName"]; +} + #pragma mark - Annotations - - (nullable NS_ARRAY_OF(id ) *)annotations diff --git a/platform/macos/src/MGLMapView.mm b/platform/macos/src/MGLMapView.mm index 5fb70d775a..542482e2a3 100644 --- a/platform/macos/src/MGLMapView.mm +++ b/platform/macos/src/MGLMapView.mm @@ -143,6 +143,8 @@ public: @property (nonatomic, readwrite) NSView *attributionView; @property (nonatomic, readwrite) MGLStyle *style; +@property (nonatomic, readonly) NSString *ideographicFontFamilyName; + /// Mapping from reusable identifiers to annotation images. @property (nonatomic) NS_MUTABLE_DICTIONARY_OF(NSString *, MGLAnnotationImage *) *annotationImagesByIdentifier; @@ -217,7 +219,7 @@ public: - (instancetype)initWithFrame:(NSRect)frameRect { if (self = [super initWithFrame:frameRect]) { - [self commonInit:nil]; + [self commonInit]; self.styleURL = nil; } return self; @@ -225,7 +227,7 @@ public: - (instancetype)initWithFrame:(NSRect)frame styleURL:(nullable NSURL *)styleURL { if (self = [super initWithFrame:frame]) { - [self commonInit:nil]; + [self commonInit]; self.styleURL = styleURL; } return self; @@ -233,7 +235,7 @@ public: - (instancetype)initWithCoder:(nonnull NSCoder *)decoder { if (self = [super initWithCoder:decoder]) { - [self commonInit:nil]; + [self commonInit]; } return self; } @@ -252,7 +254,7 @@ public: return @[@"camera", @"debugMask"]; } -- (void)commonInit:(nullable NSString*)fontFamily { +- (void)commonInit { _isTargetingInterfaceBuilder = NSProcessInfo.processInfo.mgl_isInterfaceBuilderDesignablesAgent; // Set up cross-platform controllers and resources. @@ -271,10 +273,10 @@ public: [[NSFileManager defaultManager] removeItemAtURL:legacyCacheURL error:NULL]; mbgl::DefaultFileSource* mbglFileSource = [MGLOfflineStorage sharedOfflineStorage].mbglFileSource; - _mbglThreadPool = mbgl::sharedThreadPool(); + NSString *fontFamilyName = self.ideographicFontFamilyName; - auto renderer = std::make_unique(*_mbglView, [NSScreen mainScreen].backingScaleFactor, *mbglFileSource, *_mbglThreadPool, mbgl::GLContextMode::Unique, mbgl::optional(), fontFamily ? std::string([fontFamily UTF8String]) : mbgl::optional()); + auto renderer = std::make_unique(*_mbglView, [NSScreen mainScreen].backingScaleFactor, *mbglFileSource, *_mbglThreadPool, mbgl::GLContextMode::Unique, mbgl::optional(), fontFamilyName ? std::string([fontFamilyName UTF8String]) : mbgl::optional()); _rendererFrontend = std::make_unique(std::move(renderer), self, *_mbglView, true); _mbglMap = new mbgl::Map(*_rendererFrontend, *_mbglView, self.size, [NSScreen mainScreen].backingScaleFactor, *mbglFileSource, *_mbglThreadPool, mbgl::MapMode::Continuous, mbgl::ConstrainMode::None, mbgl::ViewportMode::Default); @@ -652,6 +654,12 @@ public: return _rendererFrontend->getRenderer(); } +#pragma mark Ideographic Font Info + +- (NSString *)ideographicFontFamilyName { + return [[NSBundle mainBundle] objectForInfoDictionaryKey:@"MGLIdeographicFontFamilyName"]; +} + #pragma mark View hierarchy and drawing - (void)viewWillMoveToWindow:(NSWindow *)newWindow { -- cgit v1.2.1 From 314c51611c6cbd0315df9cd3551363f6e6cf121b Mon Sep 17 00:00:00 2001 From: Andrew Kitchen Date: Mon, 4 Dec 2017 13:29:16 -0800 Subject: [darwin, ios, macos] Introduces an MGLRendererConfiguration class Instructions for enabling client-side rendering of CJK glyphs live in this header, and this class provides the rest of the values needed for instantiating the renderer on iOS and macOS. --- platform/darwin/src/MGLRendererConfiguration.h | 40 +++++++++++++++++++++++ platform/darwin/src/MGLRendererConfiguration.mm | 43 +++++++++++++++++++++++++ platform/ios/ios.xcodeproj/project.pbxproj | 14 +++++++- platform/ios/src/MGLMapView.mm | 18 +++-------- platform/macos/macos.xcodeproj/project.pbxproj | 8 +++++ platform/macos/src/MGLMapView.mm | 8 ++--- 6 files changed, 113 insertions(+), 18 deletions(-) create mode 100644 platform/darwin/src/MGLRendererConfiguration.h create mode 100644 platform/darwin/src/MGLRendererConfiguration.mm diff --git a/platform/darwin/src/MGLRendererConfiguration.h b/platform/darwin/src/MGLRendererConfiguration.h new file mode 100644 index 0000000000..35cf828536 --- /dev/null +++ b/platform/darwin/src/MGLRendererConfiguration.h @@ -0,0 +1,40 @@ +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + The MGLRendererConfiguration object represents configuration values for the + renderer. + */ +@interface MGLRendererConfiguration : NSObject + +/** Returns an instance of the current renderer configuration. */ ++ (instancetype)currentConfiguration; + +/** The file source to use. Defaults to `mbgl::DefaultFileSource` */ +@property (nonatomic, readonly) mbgl::DefaultFileSource *fileSource; + +/** The GL context mode to use. Defaults to `mbgl::GLContextMode::Unique` */ +@property (nonatomic, readonly) mbgl::GLContextMode contextMode; + +/** The scale factor to use. + + Based on the native scale where available, otherwise the standard screen scale. */ +@property (nonatomic, readonly) const float scaleFactor; + +/** The cache dir to use. */ +@property (nonatomic, readonly) mbgl::optional cacheDir; + +/** The name of the font family to use for client-side text rendering. + + Currently only used for CJK glyphs. Changing this at run time is not currently + supported. Enable client-side rendering of CJK glyphs by setting + `MGLIdeographicFontFamilyName` in your containing app's Info.plist to a value + which will be available at runtime, i.e. "Arial Unicode MS". */ +@property (nonatomic, readonly) mbgl::optional localFontFamilyName; + +@end + +NS_ASSUME_NONNULL_END diff --git a/platform/darwin/src/MGLRendererConfiguration.mm b/platform/darwin/src/MGLRendererConfiguration.mm new file mode 100644 index 0000000000..ae7d7dd9fe --- /dev/null +++ b/platform/darwin/src/MGLRendererConfiguration.mm @@ -0,0 +1,43 @@ +#import "MGLRendererConfiguration.h" +#import "MGLOfflineStorage_Private.h" + +#if TARGET_OS_IPHONE +#import +#else +#import +#endif + + +@implementation MGLRendererConfiguration + ++ (instancetype)currentConfiguration { + return [[self alloc] init]; +} + +- (mbgl::DefaultFileSource *)fileSource { + return [MGLOfflineStorage sharedOfflineStorage].mbglFileSource; +} + +- (mbgl::GLContextMode)contextMode { + return mbgl::GLContextMode::Unique; +} + +- (const float)scaleFactor { +#if TARGET_OS_IPHONE + return [UIScreen instancesRespondToSelector:@selector(nativeScale)] ? [[UIScreen mainScreen] nativeScale] : [[UIScreen mainScreen] scale]; +#else + return [NSScreen mainScreen].backingScaleFactor; +#endif +} + +- (mbgl::optional)cacheDir { + return mbgl::optional(); +} + +- (mbgl::optional)localFontFamilyName { + NSString *fontFamilyName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"MGLIdeographicFontFamilyName"]; + + return fontFamilyName ? std::string([fontFamilyName UTF8String]) : mbgl::optional(); +} + +@end diff --git a/platform/ios/ios.xcodeproj/project.pbxproj b/platform/ios/ios.xcodeproj/project.pbxproj index cc56a73e7d..c405e92d35 100644 --- a/platform/ios/ios.xcodeproj/project.pbxproj +++ b/platform/ios/ios.xcodeproj/project.pbxproj @@ -150,6 +150,10 @@ 35E79F201D41266300957B9E /* MGLStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 35E79F1F1D41266300957B9E /* MGLStyleLayer_Private.h */; }; 35E79F211D41266300957B9E /* MGLStyleLayer_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 35E79F1F1D41266300957B9E /* MGLStyleLayer_Private.h */; }; 36F1153D1D46080700878E1A /* libmbgl-core.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 36F1153B1D46080700878E1A /* libmbgl-core.a */; }; + 3EA93369F61CF70AFA50465D /* MGLRendererConfiguration.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3EA931BC4F087E166D538F21 /* MGLRendererConfiguration.mm */; }; + 3EA934623AD0000B7D99C3FB /* MGLRendererConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EA9337830C7738BF7F5493C /* MGLRendererConfiguration.h */; }; + 3EA9363147E77DD29FA06063 /* MGLRendererConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EA9337830C7738BF7F5493C /* MGLRendererConfiguration.h */; }; + 3EA9366247780E4F252652A8 /* MGLRendererConfiguration.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3EA931BC4F087E166D538F21 /* MGLRendererConfiguration.mm */; }; 400533011DB0862B0069F638 /* NSArray+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 400532FF1DB0862B0069F638 /* NSArray+MGLAdditions.h */; }; 400533021DB0862B0069F638 /* NSArray+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 400533001DB0862B0069F638 /* NSArray+MGLAdditions.mm */; }; 400533031DB086490069F638 /* NSArray+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 400533001DB0862B0069F638 /* NSArray+MGLAdditions.mm */; }; @@ -662,6 +666,8 @@ 35E79F1F1D41266300957B9E /* MGLStyleLayer_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLStyleLayer_Private.h; sourceTree = ""; }; 36F1153B1D46080700878E1A /* libmbgl-core.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libmbgl-core.a"; path = "build/Debug-iphoneos/libmbgl-core.a"; sourceTree = ""; }; 36F1153C1D46080700878E1A /* libmbgl-platform-ios.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libmbgl-platform-ios.a"; path = "build/Debug-iphoneos/libmbgl-platform-ios.a"; sourceTree = ""; }; + 3EA931BC4F087E166D538F21 /* MGLRendererConfiguration.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLRendererConfiguration.mm; sourceTree = ""; }; + 3EA9337830C7738BF7F5493C /* MGLRendererConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLRendererConfiguration.h; sourceTree = ""; }; 400532FF1DB0862B0069F638 /* NSArray+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+MGLAdditions.h"; sourceTree = ""; }; 400533001DB0862B0069F638 /* NSArray+MGLAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSArray+MGLAdditions.mm"; sourceTree = ""; }; 4018B1C31CDC277F00F666AF /* MGLAnnotationView_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAnnotationView_Private.h; sourceTree = ""; }; @@ -1401,6 +1407,7 @@ DAD165801CF4CF9A001FF4B9 /* Formatters */, DAD165811CF4CFC4001FF4B9 /* Geometry */, DAD165821CF4CFE3001FF4B9 /* Offline Maps */, + DA8848911CBB049300AB86E3 /* reachability */, DA8847DF1CBAFA5100AB86E3 /* MGLAccountManager.h */, DA8847FF1CBAFA6200AB86E3 /* MGLAccountManager_Private.h */, DA8848001CBAFA6200AB86E3 /* MGLAccountManager.m */, @@ -1416,13 +1423,14 @@ 927FBCFE1F4DB05500F8BF1F /* MGLMapSnapshotter.mm */, DD0902A41DB18F1B00C5BDCE /* MGLNetworkConfiguration.h */, DD0902A21DB18DE700C5BDCE /* MGLNetworkConfiguration.m */, + 3EA9337830C7738BF7F5493C /* MGLRendererConfiguration.h */, + 3EA931BC4F087E166D538F21 /* MGLRendererConfiguration.mm */, 92F2C3EC1F0E3C3A00268EC0 /* MGLRendererFrontend.h */, DA8847EC1CBAFA5100AB86E3 /* MGLStyle.h */, 35E0CFE51D3E501500188327 /* MGLStyle_Private.h */, DA88480F1CBAFA6200AB86E3 /* MGLStyle.mm */, DA8847EE1CBAFA5100AB86E3 /* MGLTypes.h */, DA8848111CBAFA6200AB86E3 /* MGLTypes.m */, - DA8848911CBB049300AB86E3 /* reachability */, 35E1A4D71D74336F007AA97F /* MGLValueEvaluator.h */, ); name = Foundation; @@ -1848,6 +1856,7 @@ DA8847F61CBAFA5100AB86E3 /* MGLOfflineStorage.h in Headers */, DAD1656E1CF41981001FF4B9 /* MGLFeature_Private.h in Headers */, DA88483C1CBAFB8500AB86E3 /* MGLMapView.h in Headers */, + 3EA9363147E77DD29FA06063 /* MGLRendererConfiguration.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1941,6 +1950,7 @@ DAF0D8191DFE6B2800B28378 /* MGLAttributionInfo_Private.h in Headers */, DABFB86A1CBE99E500D62B32 /* MGLStyle.h in Headers */, DA00FC8F1D5EEB0D009AABC8 /* MGLAttributionInfo.h in Headers */, + 3EA934623AD0000B7D99C3FB /* MGLRendererConfiguration.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2389,6 +2399,7 @@ DA8848581CBAFB9800AB86E3 /* MGLMapboxEvents.m in Sources */, 35CE61841D4165D9004F2359 /* UIColor+MGLAdditions.mm in Sources */, DA8848561CBAFB9800AB86E3 /* MGLLocationManager.m in Sources */, + 3EA93369F61CF70AFA50465D /* MGLRendererConfiguration.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2477,6 +2488,7 @@ DAA4E41C1CBB730400178DFB /* MGLAccountManager.m in Sources */, 35CE61851D4165D9004F2359 /* UIColor+MGLAdditions.mm in Sources */, DAA4E4241CBB730400178DFB /* MGLPolyline.mm in Sources */, + 3EA9366247780E4F252652A8 /* MGLRendererConfiguration.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index e712f65109..c02446609a 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -42,6 +42,7 @@ #import "MGLOfflineStorage_Private.h" #import "MGLFoundation_Private.h" #import "MGLRendererFrontend.h" +#import "MGLRendererConfiguration.h" #import "MGLVectorSource+MGLAdditions.h" #import "NSBundle+MGLAdditions.h" @@ -198,7 +199,6 @@ public: @property (nonatomic) NS_MUTABLE_ARRAY_OF(NSLayoutConstraint *) *attributionButtonConstraints; @property (nonatomic, readwrite) MGLStyle *style; -@property (nonatomic, readonly) NSString *ideographicFontFamilyName; @property (nonatomic) UITapGestureRecognizer *singleTapGestureRecognizer; @property (nonatomic) UITapGestureRecognizer *doubleTap; @@ -323,7 +323,7 @@ public: + (void)initialize { - if (self == [MGLMapView self]) + if (self == [MGLMapView class]) { [MGLSDKUpdateChecker checkForUpdates]; } @@ -406,14 +406,12 @@ public: [[NSFileManager defaultManager] removeItemAtPath:fileCachePath error:NULL]; // setup mbgl map - mbgl::DefaultFileSource *mbglFileSource = [MGLOfflineStorage sharedOfflineStorage].mbglFileSource; - const float scaleFactor = [UIScreen instancesRespondToSelector:@selector(nativeScale)] ? [[UIScreen mainScreen] nativeScale] : [[UIScreen mainScreen] scale]; + MGLRendererConfiguration *config = [MGLRendererConfiguration currentConfiguration]; _mbglThreadPool = mbgl::sharedThreadPool(); - NSString *fontFamilyName = self.ideographicFontFamilyName; - auto renderer = std::make_unique(*_mbglView, scaleFactor, *mbglFileSource, *_mbglThreadPool, mbgl::GLContextMode::Unique, mbgl::optional(), fontFamilyName ? std::string([fontFamilyName UTF8String]) : mbgl::optional()); + auto renderer = std::make_unique(*_mbglView, config.scaleFactor, *config.fileSource, *_mbglThreadPool, config.contextMode, config.cacheDir, config.localFontFamilyName); _rendererFrontend = std::make_unique(std::move(renderer), self, *_mbglView); - _mbglMap = new mbgl::Map(*_rendererFrontend, *_mbglView, self.size, scaleFactor, *mbglFileSource, *_mbglThreadPool, mbgl::MapMode::Continuous, mbgl::ConstrainMode::None, mbgl::ViewportMode::Default); + _mbglMap = new mbgl::Map(*_rendererFrontend, *_mbglView, self.size, config.scaleFactor, *[config fileSource], *_mbglThreadPool, mbgl::MapMode::Continuous, mbgl::ConstrainMode::None, mbgl::ViewportMode::Default); // start paused if in IB if (_isTargetingInterfaceBuilder || background) { @@ -3468,12 +3466,6 @@ public: [self.style removeStyleClass:styleClass]; } -#pragma mark Ideographic Font Info - -- (NSString *)ideographicFontFamilyName { - return [[NSBundle mainBundle] objectForInfoDictionaryKey:@"MGLIdeographicFontFamilyName"]; -} - #pragma mark - Annotations - - (nullable NS_ARRAY_OF(id ) *)annotations diff --git a/platform/macos/macos.xcodeproj/project.pbxproj b/platform/macos/macos.xcodeproj/project.pbxproj index cc49c5bbf4..25ee7516be 100644 --- a/platform/macos/macos.xcodeproj/project.pbxproj +++ b/platform/macos/macos.xcodeproj/project.pbxproj @@ -59,6 +59,8 @@ 35C6DF871E214C1800ACA483 /* MGLDistanceFormatterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 35C6DF861E214C1800ACA483 /* MGLDistanceFormatterTests.m */; }; 35D65C5A1D65AD5500722C23 /* NSDate+MGLAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 35D65C581D65AD5500722C23 /* NSDate+MGLAdditions.h */; }; 35D65C5B1D65AD5500722C23 /* NSDate+MGLAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 35D65C591D65AD5500722C23 /* NSDate+MGLAdditions.mm */; }; + 3EA9317388DC9A0BF46B7674 /* MGLRendererConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EA9369A4C46957566058822 /* MGLRendererConfiguration.h */; }; + 3EA93BA38DBB4B814B6C1FCC /* MGLRendererConfiguration.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3EA93B1B0864609938506E12 /* MGLRendererConfiguration.mm */; }; 4031ACFC1E9EB3C100A3EA26 /* MGLMapViewDelegateIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4031ACFB1E9EB3C100A3EA26 /* MGLMapViewDelegateIntegrationTests.swift */; }; 4031AD031E9FD6AA00A3EA26 /* MGLSDKTestHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4031AD011E9FD6A300A3EA26 /* MGLSDKTestHelpers.swift */; }; 4049C2A51DB6CE7F00B3F799 /* MGLPointCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 4049C2A11DB6CE7800B3F799 /* MGLPointCollection.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -334,6 +336,8 @@ 35C6DF861E214C1800ACA483 /* MGLDistanceFormatterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = MGLDistanceFormatterTests.m; path = ../../darwin/test/MGLDistanceFormatterTests.m; sourceTree = ""; }; 35D65C581D65AD5500722C23 /* NSDate+MGLAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate+MGLAdditions.h"; sourceTree = ""; }; 35D65C591D65AD5500722C23 /* NSDate+MGLAdditions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSDate+MGLAdditions.mm"; sourceTree = ""; }; + 3EA9369A4C46957566058822 /* MGLRendererConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLRendererConfiguration.h; sourceTree = ""; }; + 3EA93B1B0864609938506E12 /* MGLRendererConfiguration.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLRendererConfiguration.mm; sourceTree = ""; }; 4031ACFB1E9EB3C100A3EA26 /* MGLMapViewDelegateIntegrationTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MGLMapViewDelegateIntegrationTests.swift; sourceTree = ""; }; 4031AD011E9FD6A300A3EA26 /* MGLSDKTestHelpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MGLSDKTestHelpers.swift; path = ../../darwin/test/MGLSDKTestHelpers.swift; sourceTree = ""; }; 4049C2A11DB6CE7800B3F799 /* MGLPointCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLPointCollection.h; sourceTree = ""; }; @@ -1087,6 +1091,8 @@ 92092EEF1F5EB10E00AF5130 /* MGLMapSnapshotter.mm */, DD0902B01DB1AC6400C5BDCE /* MGLNetworkConfiguration.h */, DD0902AF1DB1AC6400C5BDCE /* MGLNetworkConfiguration.m */, + 3EA9369A4C46957566058822 /* MGLRendererConfiguration.h */, + 3EA93B1B0864609938506E12 /* MGLRendererConfiguration.mm */, 92F2C3EA1F0E3A1900268EC0 /* MGLRendererFrontend.h */, DAE6C3571CC31E0400DB3429 /* MGLStyle.h */, 3537CA731D3F93A600380318 /* MGLStyle_Private.h */, @@ -1237,6 +1243,7 @@ 1F7454A41ECFB00300021D39 /* MGLLight.h in Headers */, 408AA8671DAEEE3900022900 /* NSDictionary+MGLAdditions.h in Headers */, DAE6C3671CC31E0400DB3429 /* MGLStyle.h in Headers */, + 3EA9317388DC9A0BF46B7674 /* MGLRendererConfiguration.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1512,6 +1519,7 @@ 3529039C1D6C63B80002C7DF /* NSPredicate+MGLAdditions.mm in Sources */, DA8F25981D51CAC70010E6B5 /* MGLVectorSource.mm in Sources */, 352742A11D4C25BD00A1ECE6 /* MGLStyleValue.mm in Sources */, + 3EA93BA38DBB4B814B6C1FCC /* MGLRendererConfiguration.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/platform/macos/src/MGLMapView.mm b/platform/macos/src/MGLMapView.mm index 542482e2a3..857561865b 100644 --- a/platform/macos/src/MGLMapView.mm +++ b/platform/macos/src/MGLMapView.mm @@ -5,6 +5,7 @@ #import "MGLOpenGLLayer.h" #import "MGLStyle.h" #import "MGLRendererFrontend.h" +#import "MGLRendererConfiguration.h" #import "MGLAnnotationImage_Private.h" #import "MGLAttributionInfo_Private.h" @@ -272,13 +273,12 @@ public: NSURL *legacyCacheURL = [cachesDirectoryURL URLByAppendingPathComponent:@"cache.db"]; [[NSFileManager defaultManager] removeItemAtURL:legacyCacheURL error:NULL]; - mbgl::DefaultFileSource* mbglFileSource = [MGLOfflineStorage sharedOfflineStorage].mbglFileSource; _mbglThreadPool = mbgl::sharedThreadPool(); - NSString *fontFamilyName = self.ideographicFontFamilyName; + MGLRendererConfiguration *config = [MGLRendererConfiguration currentConfiguration]; - auto renderer = std::make_unique(*_mbglView, [NSScreen mainScreen].backingScaleFactor, *mbglFileSource, *_mbglThreadPool, mbgl::GLContextMode::Unique, mbgl::optional(), fontFamilyName ? std::string([fontFamilyName UTF8String]) : mbgl::optional()); + auto renderer = std::make_unique(*_mbglView, config.scaleFactor, *config.fileSource, *_mbglThreadPool, config.contextMode, config.cacheDir, config.localFontFamilyName); _rendererFrontend = std::make_unique(std::move(renderer), self, *_mbglView, true); - _mbglMap = new mbgl::Map(*_rendererFrontend, *_mbglView, self.size, [NSScreen mainScreen].backingScaleFactor, *mbglFileSource, *_mbglThreadPool, mbgl::MapMode::Continuous, mbgl::ConstrainMode::None, mbgl::ViewportMode::Default); + _mbglMap = new mbgl::Map(*_rendererFrontend, *_mbglView, self.size, config.scaleFactor, *config.fileSource, *_mbglThreadPool, mbgl::MapMode::Continuous, mbgl::ConstrainMode::None, mbgl::ViewportMode::Default); // Install the OpenGL layer. Interface Builder’s synchronous drawing means // we can’t display a map, so don’t even bother to have a map layer. -- cgit v1.2.1 From 38bffda85a51a44dd6ce6088afcdb7a24790f6ee Mon Sep 17 00:00:00 2001 From: Andrew Kitchen Date: Fri, 8 Dec 2017 10:49:39 -0500 Subject: [darwin, macos] Rename Info.plist key for consistency Also removes related dead code in macos MGLMapView.mm --- platform/darwin/src/MGLRendererConfiguration.h | 4 ++-- platform/darwin/src/MGLRendererConfiguration.mm | 2 +- platform/macos/src/MGLMapView.mm | 8 -------- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/platform/darwin/src/MGLRendererConfiguration.h b/platform/darwin/src/MGLRendererConfiguration.h index 35cf828536..676cc91719 100644 --- a/platform/darwin/src/MGLRendererConfiguration.h +++ b/platform/darwin/src/MGLRendererConfiguration.h @@ -31,8 +31,8 @@ NS_ASSUME_NONNULL_BEGIN Currently only used for CJK glyphs. Changing this at run time is not currently supported. Enable client-side rendering of CJK glyphs by setting - `MGLIdeographicFontFamilyName` in your containing app's Info.plist to a value - which will be available at runtime, i.e. "Arial Unicode MS". */ + `MGLIdeographFontFamilyName` in your containing app's Info.plist to a value + which will be available at run time, i.e. "Arial Unicode MS". */ @property (nonatomic, readonly) mbgl::optional localFontFamilyName; @end diff --git a/platform/darwin/src/MGLRendererConfiguration.mm b/platform/darwin/src/MGLRendererConfiguration.mm index ae7d7dd9fe..be60c3c787 100644 --- a/platform/darwin/src/MGLRendererConfiguration.mm +++ b/platform/darwin/src/MGLRendererConfiguration.mm @@ -35,7 +35,7 @@ } - (mbgl::optional)localFontFamilyName { - NSString *fontFamilyName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"MGLIdeographicFontFamilyName"]; + NSString *fontFamilyName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"MGLIdeographFontFamilyName"]; return fontFamilyName ? std::string([fontFamilyName UTF8String]) : mbgl::optional(); } diff --git a/platform/macos/src/MGLMapView.mm b/platform/macos/src/MGLMapView.mm index 857561865b..f2c6afb2f7 100644 --- a/platform/macos/src/MGLMapView.mm +++ b/platform/macos/src/MGLMapView.mm @@ -144,8 +144,6 @@ public: @property (nonatomic, readwrite) NSView *attributionView; @property (nonatomic, readwrite) MGLStyle *style; -@property (nonatomic, readonly) NSString *ideographicFontFamilyName; - /// Mapping from reusable identifiers to annotation images. @property (nonatomic) NS_MUTABLE_DICTIONARY_OF(NSString *, MGLAnnotationImage *) *annotationImagesByIdentifier; @@ -654,12 +652,6 @@ public: return _rendererFrontend->getRenderer(); } -#pragma mark Ideographic Font Info - -- (NSString *)ideographicFontFamilyName { - return [[NSBundle mainBundle] objectForInfoDictionaryKey:@"MGLIdeographicFontFamilyName"]; -} - #pragma mark View hierarchy and drawing - (void)viewWillMoveToWindow:(NSWindow *)newWindow { -- cgit v1.2.1 From 3fd2eb2557bc783a14b7f3ce7b671223e7250ef2 Mon Sep 17 00:00:00 2001 From: Andrew Kitchen Date: Fri, 8 Dec 2017 10:58:35 -0500 Subject: [macos, ios] Adds documentation for the MGLIdeographFontFamilyName key --- platform/ios/docs/guides/Info.plist Keys.md | 4 ++++ platform/macos/docs/guides/Info.plist Keys.md | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/platform/ios/docs/guides/Info.plist Keys.md b/platform/ios/docs/guides/Info.plist Keys.md index e74e28b76b..dc9e0a302a 100644 --- a/platform/ios/docs/guides/Info.plist Keys.md +++ b/platform/ios/docs/guides/Info.plist Keys.md @@ -19,3 +19,7 @@ The default value is `https://api.mapbox.com`. ## MGLMapboxMetricsEnabledSettingShownInApp If you have implemented custom opt-out of Mapbox Telemetry within the user interface of your app, use this key to disable the built-in check for opt-out support. See [this guide](https://www.mapbox.com/ios-sdk/#telemetry_opt_out) for more details. + +## MGLIdeographFontFamilyName + +The name of the font family to use for client-side text rendering of CJK ideographs. Set this to the name of a font family which will be available at run time, i.e. `Arial Unicode MS`. diff --git a/platform/macos/docs/guides/Info.plist Keys.md b/platform/macos/docs/guides/Info.plist Keys.md index 2c75ca88c7..3a3edd33f1 100644 --- a/platform/macos/docs/guides/Info.plist Keys.md +++ b/platform/macos/docs/guides/Info.plist Keys.md @@ -15,3 +15,7 @@ As an alternative, you can use `+[MGLAccountManager setAccessToken:]` to set a t Use this key if you need to customize the API base URL used throughout the SDK. If unset, the default Mapbox API is used. The default value is `https://api.mapbox.com`. + +## MGLIdeographFontFamilyName + +The name of the font family to use for client-side text rendering of CJK ideographs. Set this to the name of a font family which will be available at run time, i.e. `Arial Unicode MS`. -- cgit v1.2.1 From 45e59e4da8ac6fb8d7197ea9ae8261d9370503bd Mon Sep 17 00:00:00 2001 From: Chris Loer Date: Fri, 8 Dec 2017 10:38:51 -0800 Subject: [ios,macos] Remove dead/non-functioning font-weight and glyph metric code. Add local font family to default iosapp configuration. --- platform/darwin/src/local_glyph_rasterizer.mm | 100 ++++++-------------------- platform/ios/app/Info.plist | 2 + 2 files changed, 23 insertions(+), 79 deletions(-) diff --git a/platform/darwin/src/local_glyph_rasterizer.mm b/platform/darwin/src/local_glyph_rasterizer.mm index 35c9c6733b..14cee5063e 100644 --- a/platform/darwin/src/local_glyph_rasterizer.mm +++ b/platform/darwin/src/local_glyph_rasterizer.mm @@ -22,9 +22,14 @@ namespace mbgl { - Configuration is done at map creation time by setting a "font family" * JS uses a CSS font-family, this uses kCTFontFamilyNameAttribute which has somewhat different behavior. - - We use heuristics to extract a font-weight based on the incoming font stack Further improvements are possible: + - GL JS heuristically determines a font weight based on the strings included in + the FontStack. Android follows a simpler heuristic that just picks up the + "Bold" property from the FontStack. Although both should be possible with CoreText, + our initial implementation couldn't reliably control the font-weight, so we're + skipping that functionality on darwin. + (See commit history for attempted implementation) - If we could reliably extract glyph metrics, we wouldn't be limited to CJK glyphs - We could push the font configuration down to individual style layers, which would allow any current style to be reproducible using local fonts. @@ -48,69 +53,39 @@ class LocalGlyphRasterizer::Impl { public: Impl(const optional fontFamily_) : fontFamily(fontFamily_) + , fontHandle(NULL) {} ~Impl() { - for (auto& pair : fontHandles) { - CFRelease(pair.second); + if (fontHandle) { + CFRelease(fontHandle); } } - CTFontRef getFont(const FontStack& fontStack) { + CTFontRef getFont() { if (!fontFamily) { return NULL; } - if (fontHandles.find(fontStack) == fontHandles.end()) { - - NSDictionary* fontTraits = @{ (NSString *)kCTFontWeightTrait: [NSNumber numberWithFloat:getFontWeight(fontStack)] }; - - NSDictionary *fontAttributes = @{ + if (!fontHandle) { + NSDictionary *fontAttributes = @{ (NSString *)kCTFontSizeAttribute: [NSNumber numberWithFloat:24.0], - (NSString *)kCTFontFamilyNameAttribute: [[NSString alloc] initWithCString:fontFamily->c_str() encoding:NSUTF8StringEncoding], - (NSString *)kCTFontTraitsAttribute: fontTraits - //(NSString *)kCTFontStyleNameAttribute: (getFontWeight(fontStack) > .3) ? @"Bold" : @"Regular" + (NSString *)kCTFontFamilyNameAttribute: [[NSString alloc] initWithCString:fontFamily->c_str() encoding:NSUTF8StringEncoding] }; CTFontDescriptorRefHandle descriptor(CTFontDescriptorCreateWithAttributes((CFDictionaryRef)fontAttributes)); - CTFontRef font = CTFontCreateWithFontDescriptor(*descriptor, 0.0, NULL); - if (!font) { + fontHandle = CTFontCreateWithFontDescriptor(*descriptor, 0.0, NULL); + if (!fontHandle) { throw std::runtime_error("CTFontCreateWithFontDescriptor failed"); } - - fontHandles[fontStack] = font; } - return fontHandles[fontStack]; + return fontHandle; } private: - float getFontWeight(const FontStack& fontStack) { - // Analog to logic in glyph_manager.js - // From NSFontDescriptor.h (macOS 10.11+) NSFontWeight*: - constexpr float light = -.4; - constexpr float regular = 0.0; - constexpr float medium = .23; - constexpr float bold = .4; - - float fontWeight = regular; - for (auto font : fontStack) { - // Last font in the fontstack "wins" - std::string lowercaseFont = mbgl::platform::lowercase(font); - if (lowercaseFont.find("bold") != std::string::npos) { - fontWeight = bold; - } else if (lowercaseFont.find("medium") != std::string::npos) { - fontWeight = medium; - } else if (lowercaseFont.find("light") != std::string::npos) { - fontWeight = light; - } - } - - return fontWeight; - } - - std::unordered_map fontHandles; optional fontFamily; + CTFontRef fontHandle; }; LocalGlyphRasterizer::LocalGlyphRasterizer(const optional fontFamily) @@ -120,45 +95,16 @@ LocalGlyphRasterizer::LocalGlyphRasterizer(const optional fontFamil LocalGlyphRasterizer::~LocalGlyphRasterizer() {} -bool LocalGlyphRasterizer::canRasterizeGlyph(const FontStack& fontStack, GlyphID glyphID) { - return util::i18n::allowsFixedWidthGlyphGeneration(glyphID) && impl->getFont(fontStack); +bool LocalGlyphRasterizer::canRasterizeGlyph(const FontStack&, GlyphID glyphID) { + return util::i18n::allowsFixedWidthGlyphGeneration(glyphID) && impl->getFont(); } -/* -// TODO: In theory we should be able to transform user-coordinate bounding box and advance -// values into pixel glyph metrics. This would remove the need to use fixed glyph metrics -// (which will be slightly off depending on the font), and allow us to return non CJK glyphs -// (which will have variable "advance" values). -void extractGlyphMetrics(CTFontRef font, CTLineRef line) { - CFArrayRef glyphRuns = CTLineGetGlyphRuns(line); - CFIndex runCount = CFArrayGetCount(glyphRuns); - assert(runCount == 1); - CTRunRef run = (CTRunRef)CFArrayGetValueAtIndex(glyphRuns, 0); - CFIndex glyphCount = CTRunGetGlyphCount(run); - assert(glyphCount == 1); - const CGGlyph *glyphs = CTRunGetGlyphsPtr(run); - - CGRect boundingRects[1]; - boundingRects[0] = CGRectMake(0, 0, 0, 0); - CGSize advances[1]; - advances[0] = CGSizeMake(0,0); - CGRect totalBoundingRect = CTFontGetBoundingRectsForGlyphs(font, kCTFontOrientationDefault, glyphs, boundingRects, 1); - double totalAdvance = CTFontGetAdvancesForGlyphs(font, kCTFontOrientationDefault, glyphs, advances, 1); - - // Break in the debugger to see these values: translating from "user coordinates" to bitmap pixel coordinates - // should be OK, but a lot of glyphs seem to have empty bounding boxes...? - (void)totalBoundingRect; - (void)totalAdvance; -} -*/ - PremultipliedImage drawGlyphBitmap(GlyphID glyphID, CTFontRef font, Size size) { PremultipliedImage rgbaBitmap(size); CFStringRefHandle string(CFStringCreateWithCharacters(NULL, reinterpret_cast(&glyphID), 1)); CGColorSpaceHandle colorSpace(CGColorSpaceCreateDeviceRGB()); - // TODO: Is there a way to just draw a single alpha channel instead of copying it out of an RGB image? Doesn't seem like the grayscale colorspace is what I'm looking for... if (!colorSpace) { throw std::runtime_error("CGColorSpaceCreateDeviceRGB failed"); } @@ -189,12 +135,8 @@ PremultipliedImage drawGlyphBitmap(GlyphID glyphID, CTFontRef font, Size size) { &kCFTypeDictionaryValueCallBacks)); CFAttributedStringRefHandle attrString(CFAttributedStringCreate(kCFAllocatorDefault, *string, *attributes)); - CTLineRefHandle line(CTLineCreateWithAttributedString(*attrString)); - // For debugging only, doesn't get useful metrics yet - //extractGlyphMetrics(font, *line); - // Start drawing a little bit below the top of the bitmap CGContextSetTextPosition(*context, 0.0, 5.0); CTLineDraw(*line, *context); @@ -202,9 +144,9 @@ PremultipliedImage drawGlyphBitmap(GlyphID glyphID, CTFontRef font, Size size) { return rgbaBitmap; } -Glyph LocalGlyphRasterizer::rasterizeGlyph(const FontStack& fontStack, GlyphID glyphID) { +Glyph LocalGlyphRasterizer::rasterizeGlyph(const FontStack&, GlyphID glyphID) { Glyph fixedMetrics; - CTFontRef font = impl->getFont(fontStack); + CTFontRef font = impl->getFont(); if (!font) { return fixedMetrics; } diff --git a/platform/ios/app/Info.plist b/platform/ios/app/Info.plist index a98a8c10c5..9f772324c5 100644 --- a/platform/ios/app/Info.plist +++ b/platform/ios/app/Info.plist @@ -24,6 +24,8 @@ 7877 LSRequiresIPhoneOS + MGLIdeographicFontFamilyName + PingFang NSHumanReadableCopyright © 2014–2017 Mapbox NSLocationAlwaysUsageDescription -- cgit v1.2.1 From b94929ca08f706a372d1336850d1346f09677ca4 Mon Sep 17 00:00:00 2001 From: Chris Loer Date: Fri, 8 Dec 2017 10:44:05 -0800 Subject: [ios,macos] Update docs to use Apple-friendly "PingFang" font example. --- platform/darwin/src/MGLRendererConfiguration.h | 2 +- platform/ios/app/Info.plist | 2 +- platform/ios/docs/guides/Info.plist Keys.md | 2 +- platform/macos/docs/guides/Info.plist Keys.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/platform/darwin/src/MGLRendererConfiguration.h b/platform/darwin/src/MGLRendererConfiguration.h index 676cc91719..dc434a4fbb 100644 --- a/platform/darwin/src/MGLRendererConfiguration.h +++ b/platform/darwin/src/MGLRendererConfiguration.h @@ -32,7 +32,7 @@ NS_ASSUME_NONNULL_BEGIN Currently only used for CJK glyphs. Changing this at run time is not currently supported. Enable client-side rendering of CJK glyphs by setting `MGLIdeographFontFamilyName` in your containing app's Info.plist to a value - which will be available at run time, i.e. "Arial Unicode MS". */ + which will be available at run time, e.g. "PingFang". */ @property (nonatomic, readonly) mbgl::optional localFontFamilyName; @end diff --git a/platform/ios/app/Info.plist b/platform/ios/app/Info.plist index 9f772324c5..e04976ba2a 100644 --- a/platform/ios/app/Info.plist +++ b/platform/ios/app/Info.plist @@ -24,7 +24,7 @@ 7877 LSRequiresIPhoneOS - MGLIdeographicFontFamilyName + MGLIdeographFontFamilyName PingFang NSHumanReadableCopyright © 2014–2017 Mapbox diff --git a/platform/ios/docs/guides/Info.plist Keys.md b/platform/ios/docs/guides/Info.plist Keys.md index dc9e0a302a..40d53fb9f8 100644 --- a/platform/ios/docs/guides/Info.plist Keys.md +++ b/platform/ios/docs/guides/Info.plist Keys.md @@ -22,4 +22,4 @@ If you have implemented custom opt-out of Mapbox Telemetry within the user inter ## MGLIdeographFontFamilyName -The name of the font family to use for client-side text rendering of CJK ideographs. Set this to the name of a font family which will be available at run time, i.e. `Arial Unicode MS`. +The name of the font family to use for client-side text rendering of CJK ideographs. Set this to the name of a font family which will be available at run time, e.g. `PingFang`. diff --git a/platform/macos/docs/guides/Info.plist Keys.md b/platform/macos/docs/guides/Info.plist Keys.md index 3a3edd33f1..736f1cf7e6 100644 --- a/platform/macos/docs/guides/Info.plist Keys.md +++ b/platform/macos/docs/guides/Info.plist Keys.md @@ -18,4 +18,4 @@ The default value is `https://api.mapbox.com`. ## MGLIdeographFontFamilyName -The name of the font family to use for client-side text rendering of CJK ideographs. Set this to the name of a font family which will be available at run time, i.e. `Arial Unicode MS`. +The name of the font family to use for client-side text rendering of CJK ideographs. Set this to the name of a font family which will be available at run time, e.g. `PingFang`. -- cgit v1.2.1 From e8abb8c81abe85e85b07c11af7c57a77aa14111e Mon Sep 17 00:00:00 2001 From: Chris Loer Date: Fri, 8 Dec 2017 13:29:15 -0800 Subject: [ios,macos] Revert ideographic->ideograph name change. Original GL JS name was meant to represent "font family to use for locally generating ideographs", but "ideographic font family" communicates a similar intent more concisely. --- platform/darwin/src/MGLRendererConfiguration.h | 2 +- platform/darwin/src/MGLRendererConfiguration.mm | 2 +- platform/ios/app/Info.plist | 2 +- platform/ios/docs/guides/Info.plist Keys.md | 2 +- platform/macos/docs/guides/Info.plist Keys.md | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/platform/darwin/src/MGLRendererConfiguration.h b/platform/darwin/src/MGLRendererConfiguration.h index dc434a4fbb..31aad0a742 100644 --- a/platform/darwin/src/MGLRendererConfiguration.h +++ b/platform/darwin/src/MGLRendererConfiguration.h @@ -31,7 +31,7 @@ NS_ASSUME_NONNULL_BEGIN Currently only used for CJK glyphs. Changing this at run time is not currently supported. Enable client-side rendering of CJK glyphs by setting - `MGLIdeographFontFamilyName` in your containing app's Info.plist to a value + `MGLIdeographicFontFamilyName` in your containing app's Info.plist to a value which will be available at run time, e.g. "PingFang". */ @property (nonatomic, readonly) mbgl::optional localFontFamilyName; diff --git a/platform/darwin/src/MGLRendererConfiguration.mm b/platform/darwin/src/MGLRendererConfiguration.mm index be60c3c787..ae7d7dd9fe 100644 --- a/platform/darwin/src/MGLRendererConfiguration.mm +++ b/platform/darwin/src/MGLRendererConfiguration.mm @@ -35,7 +35,7 @@ } - (mbgl::optional)localFontFamilyName { - NSString *fontFamilyName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"MGLIdeographFontFamilyName"]; + NSString *fontFamilyName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"MGLIdeographicFontFamilyName"]; return fontFamilyName ? std::string([fontFamilyName UTF8String]) : mbgl::optional(); } diff --git a/platform/ios/app/Info.plist b/platform/ios/app/Info.plist index e04976ba2a..9f772324c5 100644 --- a/platform/ios/app/Info.plist +++ b/platform/ios/app/Info.plist @@ -24,7 +24,7 @@ 7877 LSRequiresIPhoneOS - MGLIdeographFontFamilyName + MGLIdeographicFontFamilyName PingFang NSHumanReadableCopyright © 2014–2017 Mapbox diff --git a/platform/ios/docs/guides/Info.plist Keys.md b/platform/ios/docs/guides/Info.plist Keys.md index 40d53fb9f8..305714268d 100644 --- a/platform/ios/docs/guides/Info.plist Keys.md +++ b/platform/ios/docs/guides/Info.plist Keys.md @@ -20,6 +20,6 @@ The default value is `https://api.mapbox.com`. If you have implemented custom opt-out of Mapbox Telemetry within the user interface of your app, use this key to disable the built-in check for opt-out support. See [this guide](https://www.mapbox.com/ios-sdk/#telemetry_opt_out) for more details. -## MGLIdeographFontFamilyName +## MGLIdeographicFontFamilyName The name of the font family to use for client-side text rendering of CJK ideographs. Set this to the name of a font family which will be available at run time, e.g. `PingFang`. diff --git a/platform/macos/docs/guides/Info.plist Keys.md b/platform/macos/docs/guides/Info.plist Keys.md index 736f1cf7e6..c60635162f 100644 --- a/platform/macos/docs/guides/Info.plist Keys.md +++ b/platform/macos/docs/guides/Info.plist Keys.md @@ -16,6 +16,6 @@ Use this key if you need to customize the API base URL used throughout the SDK. The default value is `https://api.mapbox.com`. -## MGLIdeographFontFamilyName - +## MGLIdeographicFontFamilyName + The name of the font family to use for client-side text rendering of CJK ideographs. Set this to the name of a font family which will be available at run time, e.g. `PingFang`. -- cgit v1.2.1 From cbb9002d4f358d66078df50224d56f392a4e99b7 Mon Sep 17 00:00:00 2001 From: Fabian Guerra Date: Tue, 2 Jan 2018 13:24:53 -0600 Subject: [ios, macos] Update mode.hpp file path --- platform/darwin/src/MGLRendererConfiguration.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/darwin/src/MGLRendererConfiguration.h b/platform/darwin/src/MGLRendererConfiguration.h index 31aad0a742..fbc6fc564d 100644 --- a/platform/darwin/src/MGLRendererConfiguration.h +++ b/platform/darwin/src/MGLRendererConfiguration.h @@ -1,6 +1,6 @@ #import #import -#import +#import NS_ASSUME_NONNULL_BEGIN -- cgit v1.2.1 From 760ef23ac3faf4437cadb52983383c9501336964 Mon Sep 17 00:00:00 2001 From: Andrew Kitchen Date: Fri, 15 Dec 2017 16:07:14 -0800 Subject: [ios, macos] Updates documentation with default CJK font recommendations Also updates the font to use for rendering CJK ideographs in our sample apps to `PingFang TC`, as simply specifying `PingFang` was always triggering iOS's font fallback behavior. [Fixes #10675] --- platform/ios/app/Info.plist | 2 +- platform/ios/docs/guides/Info.plist Keys.md | 2 +- platform/macos/app/Info.plist | 2 ++ platform/macos/docs/guides/Info.plist Keys.md | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/platform/ios/app/Info.plist b/platform/ios/app/Info.plist index 9f772324c5..0bf66cb8da 100644 --- a/platform/ios/app/Info.plist +++ b/platform/ios/app/Info.plist @@ -25,7 +25,7 @@ LSRequiresIPhoneOS MGLIdeographicFontFamilyName - PingFang + PingFang TC NSHumanReadableCopyright © 2014–2017 Mapbox NSLocationAlwaysUsageDescription diff --git a/platform/ios/docs/guides/Info.plist Keys.md b/platform/ios/docs/guides/Info.plist Keys.md index 305714268d..bc2f3f5786 100644 --- a/platform/ios/docs/guides/Info.plist Keys.md +++ b/platform/ios/docs/guides/Info.plist Keys.md @@ -22,4 +22,4 @@ If you have implemented custom opt-out of Mapbox Telemetry within the user inter ## MGLIdeographicFontFamilyName -The name of the font family to use for client-side text rendering of CJK ideographs. Set this to the name of a font family which will be available at run time, e.g. `PingFang`. +The name of the font family to use for client-side text rendering of CJK ideographs. Set this to the name of a font family which will be available at run time, e.g. `PingFang TC` (iOS 9+), `Heiti TC` (iOS 8+), another appropriate built-in font, or a font provided by your application. Note that if a non-existent font is specified, iOS will fall back to using Helvetica which is likely not to include support for the glyphs needed to render maps in your application. diff --git a/platform/macos/app/Info.plist b/platform/macos/app/Info.plist index 21b86bfc75..8bb225358c 100644 --- a/platform/macos/app/Info.plist +++ b/platform/macos/app/Info.plist @@ -2,6 +2,8 @@ + MGLIdeographicFontFamilyName + PingFang TC CFBundleDevelopmentRegion en CFBundleDocumentTypes diff --git a/platform/macos/docs/guides/Info.plist Keys.md b/platform/macos/docs/guides/Info.plist Keys.md index c60635162f..be6096d167 100644 --- a/platform/macos/docs/guides/Info.plist Keys.md +++ b/platform/macos/docs/guides/Info.plist Keys.md @@ -18,4 +18,4 @@ The default value is `https://api.mapbox.com`. ## MGLIdeographicFontFamilyName -The name of the font family to use for client-side text rendering of CJK ideographs. Set this to the name of a font family which will be available at run time, e.g. `PingFang`. +The name of the font family to use for client-side text rendering of CJK ideographs. Set this to the name of a font family which will be available at run time, e.g. `PingFang TC` (iOS 9+), `Heiti TC` (iOS 8+), another appropriate built-in font, or a font provided by your application. Note that if a non-existent font is specified, iOS will fall back to using Helvetica which is likely not to include support for the glyphs needed to render maps in your application. \ No newline at end of file -- cgit v1.2.1