Repository: keplergl/kepler.gl Branch: master Commit: e37561295998 Files: 1370 Total size: 9.3 MB Directory structure: gitextract_dlltgrd3/ ├── .dockerignore ├── .editorconfig ├── .eslintrc.js ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report--jupyter-widget.md │ │ ├── bug_report.md │ │ ├── feature-request--jupyter-widget.md │ │ └── feature_request.md │ ├── SECURITY.md │ └── workflows/ │ ├── build-publish-pypi.yml │ ├── npmpublish.yml │ └── test.yml ├── .gitignore ├── .nvmrc ├── .prettierrc.js ├── .stylelintrc ├── .yarnrc.yml ├── CHANGELOG.md ├── FILE-HEADER ├── LICENSE ├── README.md ├── SUMMARY.md ├── TODO.md ├── UPGRADE-GUIDE.md ├── babel-register.js ├── babel.config.js ├── bindings/ │ ├── kepler.gl-jupyter/ │ │ ├── .gitignore │ │ ├── Dockerfile │ │ ├── MANIFEST.in │ │ ├── README.md │ │ ├── RELEASE.md │ │ ├── js/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── babel.config.js │ │ │ ├── lib/ │ │ │ │ ├── embed.js │ │ │ │ ├── extension.js │ │ │ │ ├── index.js │ │ │ │ ├── keplergl/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ ├── config-panel.js │ │ │ │ │ │ ├── panel-header.js │ │ │ │ │ │ ├── root.js │ │ │ │ │ │ └── side-bar.js │ │ │ │ │ ├── kepler.gl.js │ │ │ │ │ ├── main.js │ │ │ │ │ ├── store.js │ │ │ │ │ └── utils.js │ │ │ │ ├── keplergl-plugin.js │ │ │ │ ├── labplugin.js │ │ │ │ └── log.js │ │ │ ├── package.json │ │ │ ├── template/ │ │ │ │ └── keplergl-html.ejs │ │ │ └── webpack/ │ │ │ ├── build-html.js │ │ │ ├── build.js │ │ │ ├── config.js │ │ │ └── dev.js │ │ ├── keplergl/ │ │ │ ├── __init__.py │ │ │ ├── _version.py │ │ │ └── keplergl.py │ │ ├── keplergl-jupyter.json │ │ ├── notebooks/ │ │ │ ├── DataFrame.ipynb │ │ │ ├── GeoDataFrame.ipynb │ │ │ ├── GeoJSON.ipynb │ │ │ ├── Load kepler.gl.ipynb │ │ │ ├── geojson-data.json │ │ │ ├── hex-data.csv │ │ │ ├── hex_config.py │ │ │ └── sf_zip_geo.json │ │ ├── pyproject.toml │ │ ├── requirements.txt │ │ ├── setup.cfg │ │ └── setup.py │ └── python/ │ ├── DEVELOPMENT.md │ ├── README.md │ ├── esbuild.config.mjs │ ├── keplergl/ │ │ ├── __init__.py │ │ ├── _version.py │ │ ├── serializers.py │ │ └── widget.py │ ├── notebooks/ │ │ ├── DataFrame.ipynb │ │ ├── GeoDataFrame.ipynb │ │ ├── GeoJSON.ipynb │ │ ├── Load kepler.gl.ipynb │ │ ├── geojson-data.json │ │ ├── hex-data.csv │ │ ├── hex_config.py │ │ └── sf_zip_geo.json │ ├── package.json │ ├── pyproject.toml │ ├── src/ │ │ ├── components/ │ │ │ └── App.tsx │ │ ├── index.ts │ │ ├── process-shim.js │ │ ├── store.ts │ │ ├── styles.css │ │ ├── types.ts │ │ ├── utils/ │ │ │ ├── data.ts │ │ │ └── serialization.ts │ │ └── widget.ts │ ├── tests/ │ │ ├── conftest.py │ │ ├── test_serializers.py │ │ └── test_widget.py │ └── tsconfig.json ├── contributing/ │ ├── CODE_OF_CONDUCT.md │ ├── DEVELOPERS.md │ └── README.md ├── docs/ │ ├── README.md │ ├── RFC/ │ │ └── table-class.md │ ├── api-reference/ │ │ ├── README.md │ │ ├── actions/ │ │ │ ├── README.md │ │ │ └── actions.md │ │ ├── advanced-usages/ │ │ │ ├── custom-initial-state.md │ │ │ ├── custom-map-styles.md │ │ │ ├── custom-mapbox-host.md │ │ │ ├── forward-actions.md │ │ │ ├── reducer-plugin.md │ │ │ ├── replace-ui-component.md │ │ │ ├── saving-loading-w-schema.md │ │ │ └── using-updaters.md │ │ ├── cloud-providers/ │ │ │ ├── README.md │ │ │ └── cloud-provider.md │ │ ├── components/ │ │ │ └── README.md │ │ ├── custom-theme/ │ │ │ └── README.md │ │ ├── ecosystem.md │ │ ├── get-started.md │ │ ├── localization/ │ │ │ └── README.md │ │ ├── processors/ │ │ │ ├── README.md │ │ │ └── processors.md │ │ ├── reducers/ │ │ │ ├── README.md │ │ │ ├── combine.md │ │ │ ├── map-state.md │ │ │ ├── map-style.md │ │ │ ├── reducers.md │ │ │ ├── ui-state.md │ │ │ └── vis-state.md │ │ └── schemas/ │ │ └── README.md │ ├── keplergl-jupyter/ │ │ └── README.md │ ├── release-notes.md │ ├── spatial-analysis-tutorial/ │ │ ├── README.md │ │ ├── basic-mapping.md │ │ ├── get-started.md │ │ ├── rate-mapping.md │ │ ├── spatial-data-gis.md │ │ └── spatial-data-wrangling.md │ ├── table-of-contents.json │ └── user-guides/ │ ├── README.md │ ├── ai-assistant.md │ ├── b-kepler-gl-workflow/ │ │ ├── README.md │ │ ├── a-add-data-to-the-map.md │ │ └── b-add-data-layers/ │ │ ├── a-adding-data-layers.md │ │ ├── b-create-a-layer.md │ │ ├── c-hide-edit-and-delete-layers.md │ │ └── d-blend-and-rearrange-layers.md │ ├── c-types-of-layers/ │ │ ├── README.md │ │ ├── a-point.md │ │ ├── b-arc.md │ │ ├── c-line.md │ │ ├── d-grid.md │ │ ├── e-polygon.md │ │ ├── f-cluster.md │ │ ├── g-icon.md │ │ ├── h-hexbin.md │ │ ├── i-heatmap.md │ │ ├── j-h3.md │ │ ├── k-trip.md │ │ ├── l-s2.md │ │ ├── m-vector-tile-layer.md │ │ ├── n-raster-tile-layer.md │ │ ├── o-wms-layer.md │ │ └── vector.md │ ├── d-layer-attributes.md │ ├── e-filters.md │ ├── f-map-styles.md │ ├── g-interactions.md │ ├── h-playback.md │ ├── i-FAQ.md │ ├── j-get-started.md │ ├── k-save-and-export.md │ ├── l-color-attributes.md │ ├── m-map-settings.md │ └── sql-data-explorer.md ├── esbuild/ │ └── umd-esbuild.config.mjs ├── examples/ │ ├── README.md │ ├── custom-map-style/ │ │ ├── .babelrc │ │ ├── README.md │ │ ├── esbuild.config.mjs │ │ ├── index.html │ │ ├── package.json │ │ └── src/ │ │ ├── app.tsx │ │ ├── main.tsx │ │ └── store.ts │ ├── custom-reducer/ │ │ ├── .babelrc │ │ ├── README.md │ │ ├── esbuild.config.mjs │ │ ├── index.html │ │ ├── package.json │ │ └── src/ │ │ ├── app-reducer.js │ │ ├── app.js │ │ ├── configurations/ │ │ │ └── config.js │ │ ├── data/ │ │ │ └── sample-data.js │ │ ├── main.js │ │ └── store.js │ ├── custom-theme/ │ │ ├── .babelrc │ │ ├── README.md │ │ ├── esbuild.config.mjs │ │ ├── index.html │ │ ├── package.json │ │ └── src/ │ │ ├── actions.js │ │ ├── app.js │ │ ├── main.js │ │ ├── reducers/ │ │ │ └── index.js │ │ └── store.js │ ├── demo-app/ │ │ ├── .yarnrc.yml │ │ ├── README.md │ │ ├── esbuild.config.mjs │ │ ├── package.json │ │ ├── src/ │ │ │ ├── actions.js │ │ │ ├── app.tsx │ │ │ ├── cloud-providers/ │ │ │ │ ├── carto/ │ │ │ │ │ ├── carto-icon.js │ │ │ │ │ └── carto-provider.js │ │ │ │ ├── dropbox/ │ │ │ │ │ ├── dropbox-error-modal.js │ │ │ │ │ ├── dropbox-icon.js │ │ │ │ │ └── dropbox-provider.js │ │ │ │ ├── foursquare/ │ │ │ │ │ ├── foursquare-icon.js │ │ │ │ │ └── foursquare-provider.js │ │ │ │ └── index.js │ │ │ ├── components/ │ │ │ │ ├── announcement.js │ │ │ │ ├── banner.js │ │ │ │ ├── load-data-modal/ │ │ │ │ │ ├── load-remote-map.js │ │ │ │ │ ├── sample-data-viewer.js │ │ │ │ │ └── sample-maps-tab.js │ │ │ │ └── map-control/ │ │ │ │ ├── map-control.js │ │ │ │ └── sql-panel-control.tsx │ │ │ ├── constants/ │ │ │ │ ├── default-settings.js │ │ │ │ └── localization.js │ │ │ ├── data/ │ │ │ │ ├── sample-animate-trip-data.js │ │ │ │ ├── sample-geojson-config.js │ │ │ │ ├── sample-geojson-points.js │ │ │ │ ├── sample-gps-data.js │ │ │ │ ├── sample-hex-id-csv.js │ │ │ │ ├── sample-icon-csv.js │ │ │ │ ├── sample-row-data.js │ │ │ │ ├── sample-s2-data.js │ │ │ │ ├── sample-small-geojson.js │ │ │ │ └── sample-trip-data.js │ │ │ ├── factories/ │ │ │ │ ├── load-data-modal.js │ │ │ │ ├── map-control.js │ │ │ │ └── panel-header.js │ │ │ ├── main.js │ │ │ ├── reducers/ │ │ │ │ └── index.js │ │ │ ├── store.js │ │ │ └── utils/ │ │ │ ├── routes.js │ │ │ └── strings.js │ │ └── yarn.lock │ ├── get-started/ │ │ ├── .yarnrc.yml │ │ ├── esbuild.config.mjs │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app.tsx │ │ │ └── index.html │ │ └── tsconfig.json │ ├── get-started-vite/ │ │ ├── README.md │ │ ├── eslint.config.js │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ └── main.tsx │ │ ├── tsconfig.json │ │ ├── tsconfig.node.json │ │ └── vite.config.ts │ ├── node-app/ │ │ ├── .babelrc │ │ ├── README.md │ │ ├── esbuild.config.mjs │ │ ├── index.html │ │ ├── package.json │ │ ├── server.js │ │ └── src/ │ │ ├── app-reducer.js │ │ ├── app.js │ │ ├── main.js │ │ └── store.js │ ├── open-modal/ │ │ ├── .babelrc │ │ ├── README.md │ │ ├── esbuild.config.mjs │ │ ├── index.html │ │ ├── package.json │ │ └── src/ │ │ ├── app-reducer.js │ │ ├── app.js │ │ ├── components/ │ │ │ ├── fresh-map.js │ │ │ └── saved-map.js │ │ ├── configurations/ │ │ │ └── config.js │ │ ├── data/ │ │ │ └── sample-data.js │ │ ├── main.js │ │ └── store.js │ ├── replace-component/ │ │ ├── .babelrc │ │ ├── README.md │ │ ├── esbuild.config.mjs │ │ ├── index.html │ │ ├── package.json │ │ └── src/ │ │ ├── actions.js │ │ ├── app-reducer.js │ │ ├── app.js │ │ ├── components/ │ │ │ ├── custom-map-popover.js │ │ │ ├── custom-panel.js │ │ │ ├── panel-header.js │ │ │ ├── panel-toggle.js │ │ │ └── side-bar.js │ │ ├── data/ │ │ │ └── sample-data.js │ │ ├── main.js │ │ └── store.js │ └── umd-client/ │ ├── README.md │ └── index.html ├── jest.config.js ├── jest.setup.js ├── jsconfig.json ├── package.json ├── scripts/ │ ├── action-table-maker.js │ ├── ast-helper.js │ ├── documentation.js │ ├── edit-version.js │ ├── fix-dependencies.sh │ ├── install-and-start.js │ ├── license-header/ │ │ ├── README.md │ │ ├── bin.mjs │ │ └── license-fixer.mjs │ ├── log.js │ └── ts-smoosh/ │ ├── README.md │ ├── bin.js │ ├── smoosh.js │ ├── test.js │ └── tests/ │ ├── 01-functions/ │ │ ├── a.d.ts │ │ ├── a.js │ │ └── a.tsx │ ├── 02-imports/ │ │ ├── b.d.ts │ │ ├── c.js │ │ └── c.tsx │ └── 03-const/ │ ├── e.d.ts │ ├── e.js │ └── e.tsx ├── src/ │ ├── actions/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── action-types.ts │ │ │ ├── action-wrapper.ts │ │ │ ├── actions.ts │ │ │ ├── identity-actions.ts │ │ │ ├── index.ts │ │ │ ├── map-state-actions.ts │ │ │ ├── map-style-actions.ts │ │ │ ├── provider-actions.ts │ │ │ ├── ui-state-actions.ts │ │ │ └── vis-state-actions.ts │ │ └── tsconfig.production.json │ ├── ai-assistant/ │ │ ├── README.md │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── actions.ts │ │ │ ├── components/ │ │ │ │ ├── ai-assistant-component.tsx │ │ │ │ ├── ai-assistant-config.tsx │ │ │ │ └── ai-assistant-manager.tsx │ │ │ ├── config/ │ │ │ │ └── models.ts │ │ │ ├── constants.ts │ │ │ ├── icons/ │ │ │ │ ├── ai-star.tsx │ │ │ │ └── api-key.tsx │ │ │ ├── index.ts │ │ │ ├── localization.ts │ │ │ ├── map/ │ │ │ │ └── ai-assistant-control.tsx │ │ │ ├── plugin.ts │ │ │ ├── reducers/ │ │ │ │ └── index.ts │ │ │ └── tools/ │ │ │ ├── echarts-tools.tsx │ │ │ ├── geo-tools.tsx │ │ │ ├── kepler-tools/ │ │ │ │ ├── basemap-tool.tsx │ │ │ │ ├── boundary-tool.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── layer-creation-tool.tsx │ │ │ │ ├── layer-style-tool.tsx │ │ │ │ ├── loaddata-tool.tsx │ │ │ │ ├── save-data-tool.tsx │ │ │ │ └── table-tool.tsx │ │ │ ├── lisa-tool.tsx │ │ │ ├── query-tool.tsx │ │ │ ├── tools.tsx │ │ │ └── utils.ts │ │ └── tsconfig.production.json │ ├── cloud-providers/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── base.tsx │ │ │ ├── index.ts │ │ │ ├── provider.ts │ │ │ └── upload.tsx │ │ ├── tsconfig.production.json │ │ └── webpack/ │ │ └── umd.js │ ├── common-utils/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── data-type.ts │ │ │ ├── data.ts │ │ │ ├── h3-utils.ts │ │ │ ├── index.ts │ │ │ ├── promise.ts │ │ │ ├── string.ts │ │ │ └── url.ts │ │ └── tsconfig.production.json │ ├── components/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── bottom-widget.tsx │ │ │ ├── common/ │ │ │ │ ├── action-panel.tsx │ │ │ │ ├── animation-control/ │ │ │ │ │ ├── animation-control.tsx │ │ │ │ │ ├── animation-controller.ts │ │ │ │ │ ├── animation-speed-slider.tsx │ │ │ │ │ ├── animation-window-control.tsx │ │ │ │ │ ├── floating-time-display.tsx │ │ │ │ │ ├── play-control.tsx │ │ │ │ │ ├── playback-controls.tsx │ │ │ │ │ ├── reset-control.tsx │ │ │ │ │ ├── speed-control.tsx │ │ │ │ │ └── window-action-control.tsx │ │ │ │ ├── checkbox.tsx │ │ │ │ ├── color-legend.tsx │ │ │ │ ├── column-stats-chart.tsx │ │ │ │ ├── data-table/ │ │ │ │ │ ├── button.tsx │ │ │ │ │ ├── canvas.tsx │ │ │ │ │ ├── cell-size.ts │ │ │ │ │ ├── display-format.tsx │ │ │ │ │ ├── grid.tsx │ │ │ │ │ ├── header-cell.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── option-dropdown.tsx │ │ │ │ ├── dataset-label.tsx │ │ │ │ ├── dnd-layer-items.ts │ │ │ │ ├── error-boundary.tsx │ │ │ │ ├── field-selector.tsx │ │ │ │ ├── field-token.tsx │ │ │ │ ├── file-uploader/ │ │ │ │ │ ├── file-drop.tsx │ │ │ │ │ ├── file-upload-progress.tsx │ │ │ │ │ ├── file-upload.tsx │ │ │ │ │ └── upload-button.tsx │ │ │ │ ├── flex-container.ts │ │ │ │ ├── histogram-plot.tsx │ │ │ │ ├── icon-button.tsx │ │ │ │ ├── icons/ │ │ │ │ │ ├── add.tsx │ │ │ │ │ ├── anchor_window.tsx │ │ │ │ │ ├── arrow-down-alt.tsx │ │ │ │ │ ├── arrow-down-full.tsx │ │ │ │ │ ├── arrow-down-small.tsx │ │ │ │ │ ├── arrow-down-solid.tsx │ │ │ │ │ ├── arrow-down.tsx │ │ │ │ │ ├── arrow-left.tsx │ │ │ │ │ ├── arrow-right.tsx │ │ │ │ │ ├── arrow-up-alt.tsx │ │ │ │ │ ├── arrow-up-solid.tsx │ │ │ │ │ ├── arrow-up.tsx │ │ │ │ │ ├── base-map.tsx │ │ │ │ │ ├── base.tsx │ │ │ │ │ ├── bug.tsx │ │ │ │ │ ├── calendar.tsx │ │ │ │ │ ├── cancel.tsx │ │ │ │ │ ├── checkmark.tsx │ │ │ │ │ ├── clipboard.tsx │ │ │ │ │ ├── clock.tsx │ │ │ │ │ ├── close.tsx │ │ │ │ │ ├── cloud.tsx │ │ │ │ │ ├── code-alt.tsx │ │ │ │ │ ├── copy.tsx │ │ │ │ │ ├── crosshairs.tsx │ │ │ │ │ ├── cube-3d.tsx │ │ │ │ │ ├── cursor-click.tsx │ │ │ │ │ ├── cursor-point.tsx │ │ │ │ │ ├── data-table.tsx │ │ │ │ │ ├── db.tsx │ │ │ │ │ ├── delete.tsx │ │ │ │ │ ├── docs.tsx │ │ │ │ │ ├── docs2.tsx │ │ │ │ │ ├── drag-n-drop.tsx │ │ │ │ │ ├── draggable-dots.tsx │ │ │ │ │ ├── draw-polygon.tsx │ │ │ │ │ ├── edit.tsx │ │ │ │ │ ├── effects/ │ │ │ │ │ │ ├── brightness-contrast.tsx │ │ │ │ │ │ ├── color-halftone.tsx │ │ │ │ │ │ ├── dot-screen.tsx │ │ │ │ │ │ ├── edge-work.tsx │ │ │ │ │ │ ├── hexagonal-pixelate.tsx │ │ │ │ │ │ ├── hue-saturation.tsx │ │ │ │ │ │ ├── ink.tsx │ │ │ │ │ │ ├── light-and-shadow.tsx │ │ │ │ │ │ ├── magic-wand.tsx │ │ │ │ │ │ ├── magnify.tsx │ │ │ │ │ │ ├── noise.tsx │ │ │ │ │ │ ├── sepia.tsx │ │ │ │ │ │ ├── tilt-shift.tsx │ │ │ │ │ │ ├── triangle-blur.tsx │ │ │ │ │ │ ├── vibrance.tsx │ │ │ │ │ │ ├── vignette.tsx │ │ │ │ │ │ └── zoom-blur.tsx │ │ │ │ │ ├── email.tsx │ │ │ │ │ ├── expand.tsx │ │ │ │ │ ├── eye-seen.tsx │ │ │ │ │ ├── eye-unseen.tsx │ │ │ │ │ ├── file-type.tsx │ │ │ │ │ ├── file.tsx │ │ │ │ │ ├── files.tsx │ │ │ │ │ ├── filter-funnel.tsx │ │ │ │ │ ├── free-window.tsx │ │ │ │ │ ├── gear.tsx │ │ │ │ │ ├── globe.tsx │ │ │ │ │ ├── hash.tsx │ │ │ │ │ ├── help.tsx │ │ │ │ │ ├── histogram.tsx │ │ │ │ │ ├── horizontal-resize-handle.tsx │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── info.tsx │ │ │ │ │ ├── layers.tsx │ │ │ │ │ ├── left-arrow.tsx │ │ │ │ │ ├── legend.tsx │ │ │ │ │ ├── line-chart.tsx │ │ │ │ │ ├── location-marker.tsx │ │ │ │ │ ├── login.tsx │ │ │ │ │ ├── logout.tsx │ │ │ │ │ ├── map-icon.tsx │ │ │ │ │ ├── map-pin.tsx │ │ │ │ │ ├── messages.tsx │ │ │ │ │ ├── minus.tsx │ │ │ │ │ ├── moon.tsx │ │ │ │ │ ├── order-by-dataset.tsx │ │ │ │ │ ├── order-by-list.tsx │ │ │ │ │ ├── pause.tsx │ │ │ │ │ ├── picture.tsx │ │ │ │ │ ├── pin.tsx │ │ │ │ │ ├── play.tsx │ │ │ │ │ ├── pointer-click.tsx │ │ │ │ │ ├── polygon.tsx │ │ │ │ │ ├── rectangle.tsx │ │ │ │ │ ├── reduce.tsx │ │ │ │ │ ├── reset.tsx │ │ │ │ │ ├── save.tsx │ │ │ │ │ ├── save2.tsx │ │ │ │ │ ├── search.tsx │ │ │ │ │ ├── settings.tsx │ │ │ │ │ ├── share.tsx │ │ │ │ │ ├── speed.tsx │ │ │ │ │ ├── split.tsx │ │ │ │ │ ├── square-select.tsx │ │ │ │ │ ├── sun.tsx │ │ │ │ │ ├── sunrise.tsx │ │ │ │ │ ├── sunset.tsx │ │ │ │ │ ├── timeline-marker.tsx │ │ │ │ │ ├── trash.tsx │ │ │ │ │ ├── vert-dots.tsx │ │ │ │ │ ├── vert-three-dots.tsx │ │ │ │ │ ├── warning-sign.tsx │ │ │ │ │ ├── warning.tsx │ │ │ │ │ ├── zoom-in.tsx │ │ │ │ │ └── zoom-out.tsx │ │ │ │ ├── image-preview.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── info-helper.tsx │ │ │ │ ├── item-selector/ │ │ │ │ │ ├── accessor.ts │ │ │ │ │ ├── chickleted-input.tsx │ │ │ │ │ ├── dropdown-list.tsx │ │ │ │ │ ├── dropdown-select.tsx │ │ │ │ │ ├── item-selector.tsx │ │ │ │ │ └── typeahead.tsx │ │ │ │ ├── line-chart.tsx │ │ │ │ ├── link-renderer.tsx │ │ │ │ ├── loading-spinner.tsx │ │ │ │ ├── logo.tsx │ │ │ │ ├── map-layer-selector.tsx │ │ │ │ ├── modal.tsx │ │ │ │ ├── portaled.tsx │ │ │ │ ├── progress-bar.tsx │ │ │ │ ├── radius-legend.tsx │ │ │ │ ├── range-brush.tsx │ │ │ │ ├── range-plot.tsx │ │ │ │ ├── range-slider-timeline-panel.tsx │ │ │ │ ├── range-slider-timeline.tsx │ │ │ │ ├── range-slider.tsx │ │ │ │ ├── slider/ │ │ │ │ │ ├── mouse-event.ts │ │ │ │ │ ├── slider-bar-handle.tsx │ │ │ │ │ ├── slider-handle.tsx │ │ │ │ │ └── slider.tsx │ │ │ │ ├── styled-components.tsx │ │ │ │ ├── switch.tsx │ │ │ │ ├── sync-timeline-control.tsx │ │ │ │ ├── time-range-slider-time-title.tsx │ │ │ │ ├── time-range-slider.tsx │ │ │ │ ├── time-slider-marker.tsx │ │ │ │ ├── timeline-slider.tsx │ │ │ │ ├── tippy-tooltip.tsx │ │ │ │ ├── toolbar-item.tsx │ │ │ │ ├── toolbar.tsx │ │ │ │ └── vertical-toolbar.tsx │ │ │ ├── connect/ │ │ │ │ ├── keplergl-connect.ts │ │ │ │ └── with-local-selector.tsx │ │ │ ├── container.tsx │ │ │ ├── context.tsx │ │ │ ├── dnd-context.tsx │ │ │ ├── editor/ │ │ │ │ ├── editor.tsx │ │ │ │ └── feature-action-panel.tsx │ │ │ ├── effects/ │ │ │ │ ├── compact-color-picker.tsx │ │ │ │ ├── effect-configurator.tsx │ │ │ │ ├── effect-list.tsx │ │ │ │ ├── effect-manager.tsx │ │ │ │ ├── effect-panel-header.tsx │ │ │ │ ├── effect-panel.tsx │ │ │ │ ├── effect-time-configurator.tsx │ │ │ │ ├── effect-time-selector.tsx │ │ │ │ ├── effect-time-slider.tsx │ │ │ │ ├── effect-type-dropdown-list.tsx │ │ │ │ ├── effect-type-list-item.tsx │ │ │ │ ├── effect-type-selector.tsx │ │ │ │ ├── side-panel-title.tsx │ │ │ │ └── timezone-selector.tsx │ │ │ ├── filter-animation-controller.tsx │ │ │ ├── filters/ │ │ │ │ ├── components.ts │ │ │ │ ├── filter-panels/ │ │ │ │ │ ├── filter-panel-with-field-select.tsx │ │ │ │ │ ├── filter-synced-dataset-panel.tsx │ │ │ │ │ ├── multi-select-filter-panel.tsx │ │ │ │ │ ├── new-filter-panel.tsx │ │ │ │ │ ├── polygon-filter-panel.tsx │ │ │ │ │ ├── range-filter-panel.tsx │ │ │ │ │ ├── single-select-filter-panel.tsx │ │ │ │ │ ├── time-range-filter-panel.tsx │ │ │ │ │ ├── time-synced-field-selector.tsx │ │ │ │ │ └── types.ts │ │ │ │ ├── index.ts │ │ │ │ ├── multi-select-filter.tsx │ │ │ │ ├── polygon-filter.tsx │ │ │ │ ├── range-filter.tsx │ │ │ │ ├── single-select-filter.tsx │ │ │ │ ├── time-range-filter.tsx │ │ │ │ ├── time-widget-top.tsx │ │ │ │ ├── time-widget.tsx │ │ │ │ └── types.ts │ │ │ ├── geocoder/ │ │ │ │ └── geocoder.tsx │ │ │ ├── geocoder-panel.tsx │ │ │ ├── hooks/ │ │ │ │ ├── use-cloud-list-provider.tsx │ │ │ │ ├── use-dnd-effects.tsx │ │ │ │ ├── use-dnd-layers.tsx │ │ │ │ ├── use-feature-flags.tsx │ │ │ │ ├── use-fetch-raster-tile-metadata.ts │ │ │ │ ├── use-fetch-vector-tile-metadata.ts │ │ │ │ ├── use-legend-position.ts │ │ │ │ └── use-on-click-outside.tsx │ │ │ ├── index.ts │ │ │ ├── injector.tsx │ │ │ ├── kepler-gl.tsx │ │ │ ├── layer-animation-controller.tsx │ │ │ ├── loading-indicator.tsx │ │ │ ├── map/ │ │ │ │ ├── coordinate-info.tsx │ │ │ │ ├── effects/ │ │ │ │ │ └── effect-control.tsx │ │ │ │ ├── layer-hover-info.tsx │ │ │ │ ├── layer-selector-panel.tsx │ │ │ │ ├── lazy-tippy.tsx │ │ │ │ ├── locale-panel.tsx │ │ │ │ ├── map-control-panel.tsx │ │ │ │ ├── map-control-toolbar.tsx │ │ │ │ ├── map-control-tooltip.tsx │ │ │ │ ├── map-control.tsx │ │ │ │ ├── map-draw-panel.tsx │ │ │ │ ├── map-legend-panel.tsx │ │ │ │ ├── map-legend.tsx │ │ │ │ ├── map-popover-content.tsx │ │ │ │ ├── map-popover.tsx │ │ │ │ ├── split-map-button.tsx │ │ │ │ └── toggle-3d-button.tsx │ │ │ ├── map-container.tsx │ │ │ ├── map-view-state-context.tsx │ │ │ ├── maps-layout.tsx │ │ │ ├── modal-container.tsx │ │ │ ├── modals/ │ │ │ │ ├── add-map-style-modal.tsx │ │ │ │ ├── cloud-components/ │ │ │ │ │ ├── cloud-header.tsx │ │ │ │ │ ├── cloud-item.spec.tsx │ │ │ │ │ ├── cloud-item.tsx │ │ │ │ │ ├── cloud-maps.spec.tsx │ │ │ │ │ ├── cloud-maps.tsx │ │ │ │ │ ├── provider-loading.tsx │ │ │ │ │ └── provider-select.tsx │ │ │ │ ├── cloud-tile.tsx │ │ │ │ ├── data-table-modal.tsx │ │ │ │ ├── delete-data-modal.tsx │ │ │ │ ├── error-display.tsx │ │ │ │ ├── export-data-modal.tsx │ │ │ │ ├── export-image-modal.tsx │ │ │ │ ├── export-map-modal/ │ │ │ │ │ ├── components.tsx │ │ │ │ │ ├── export-html-map.tsx │ │ │ │ │ ├── export-json-map.tsx │ │ │ │ │ └── export-map-modal.tsx │ │ │ │ ├── image-modal-container.tsx │ │ │ │ ├── load-data-modal.tsx │ │ │ │ ├── load-storage-map.spec.tsx │ │ │ │ ├── load-storage-map.tsx │ │ │ │ ├── loading-dialog.tsx │ │ │ │ ├── modal-dialog.tsx │ │ │ │ ├── modal-tabs.tsx │ │ │ │ ├── overwrite-map-modal.tsx │ │ │ │ ├── save-map-modal.spec.tsx │ │ │ │ ├── save-map-modal.tsx │ │ │ │ ├── share-map-modal.spec.tsx │ │ │ │ ├── share-map-modal.tsx │ │ │ │ ├── status-panel.tsx │ │ │ │ ├── storage-map-viewer.tsx │ │ │ │ └── tilesets-modals/ │ │ │ │ ├── common.tsx │ │ │ │ ├── load-data-footer.tsx │ │ │ │ ├── load-tileset.tsx │ │ │ │ ├── tileset-icon.tsx │ │ │ │ ├── tileset-raster-form.tsx │ │ │ │ ├── tileset-vector-form.tsx │ │ │ │ └── tileset-wms-form.tsx │ │ │ ├── notification-panel/ │ │ │ │ └── notification-item.tsx │ │ │ ├── notification-panel.tsx │ │ │ ├── plot-container.tsx │ │ │ ├── side-panel/ │ │ │ │ ├── add-by-dataset-button.tsx │ │ │ │ ├── cloud-storage-dropdown.tsx │ │ │ │ ├── common/ │ │ │ │ │ ├── dataset-info.tsx │ │ │ │ │ ├── dataset-tag.tsx │ │ │ │ │ ├── dataset-title.tsx │ │ │ │ │ ├── source-data-catalog.tsx │ │ │ │ │ ├── source-data-selector-content.tsx │ │ │ │ │ ├── source-data-selector.tsx │ │ │ │ │ ├── source-selector.tsx │ │ │ │ │ └── types.ts │ │ │ │ ├── custom-panel.tsx │ │ │ │ ├── filter-manager.tsx │ │ │ │ ├── filter-panel/ │ │ │ │ │ ├── add-filter-button.tsx │ │ │ │ │ ├── filter-panel-header.tsx │ │ │ │ │ └── filter-panel.tsx │ │ │ │ ├── interaction-manager.tsx │ │ │ │ ├── interaction-panel/ │ │ │ │ │ ├── brush-config.tsx │ │ │ │ │ ├── interaction-panel.tsx │ │ │ │ │ ├── tooltip-config/ │ │ │ │ │ │ └── tooltip-chicklet.tsx │ │ │ │ │ └── tooltip-config.tsx │ │ │ │ ├── layer-manager.tsx │ │ │ │ ├── layer-panel/ │ │ │ │ │ ├── add-layer-button.tsx │ │ │ │ │ ├── aggr-scale-selector.tsx │ │ │ │ │ ├── channel-by-value-selector.tsx │ │ │ │ │ ├── color-breaks-panel.tsx │ │ │ │ │ ├── color-palette-preset.tsx │ │ │ │ │ ├── color-palette.tsx │ │ │ │ │ ├── color-range-selector.tsx │ │ │ │ │ ├── color-scale-selector.tsx │ │ │ │ │ ├── color-selector.tsx │ │ │ │ │ ├── column-selector.tsx │ │ │ │ │ ├── custom-palette.tsx │ │ │ │ │ ├── custom-picker.tsx │ │ │ │ │ ├── dataset-layer-group.tsx │ │ │ │ │ ├── dataset-layer-section.tsx │ │ │ │ │ ├── dataset-section.tsx │ │ │ │ │ ├── dimension-scale-selector.tsx │ │ │ │ │ ├── how-to-button.tsx │ │ │ │ │ ├── layer-color-selector.tsx │ │ │ │ │ ├── layer-column-config.tsx │ │ │ │ │ ├── layer-column-mode-config.tsx │ │ │ │ │ ├── layer-config-group.tsx │ │ │ │ │ ├── layer-configurator.tsx │ │ │ │ │ ├── layer-error-message.tsx │ │ │ │ │ ├── layer-list.tsx │ │ │ │ │ ├── layer-panel-header.tsx │ │ │ │ │ ├── layer-panel.tsx │ │ │ │ │ ├── layer-type-dropdown-list.tsx │ │ │ │ │ ├── layer-type-list-item.tsx │ │ │ │ │ ├── layer-type-selector.tsx │ │ │ │ │ ├── radius-by-zoom-input.tsx │ │ │ │ │ ├── raster-tile-colormap-list-item.tsx │ │ │ │ │ ├── raster-tile-layer-configurator.tsx │ │ │ │ │ ├── single-color-palette.tsx │ │ │ │ │ ├── text-label-panel.tsx │ │ │ │ │ ├── vector-tile-layer-configurator.tsx │ │ │ │ │ ├── vis-config-by-field-selector.tsx │ │ │ │ │ ├── vis-config-slider.tsx │ │ │ │ │ └── vis-config-switch.tsx │ │ │ │ ├── map-manager.tsx │ │ │ │ ├── map-style-panel/ │ │ │ │ │ ├── map-layer-group-color-picker.tsx │ │ │ │ │ ├── map-layer-group-item.tsx │ │ │ │ │ ├── map-layer-selector.tsx │ │ │ │ │ └── map-style-selector.tsx │ │ │ │ ├── panel-header-action.tsx │ │ │ │ ├── panel-header.tsx │ │ │ │ ├── panel-tab.tsx │ │ │ │ ├── panel-title.tsx │ │ │ │ ├── panel-toggle.tsx │ │ │ │ ├── panel-view-list-toggle.tsx │ │ │ │ └── side-bar.tsx │ │ │ ├── side-panel.tsx │ │ │ └── types.ts │ │ └── tsconfig.production.json │ ├── constants/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── color-palettes.ts │ │ │ ├── colors-by-theme.ts │ │ │ ├── dataset.ts │ │ │ ├── default-settings.ts │ │ │ ├── index.ts │ │ │ ├── keyevent.ts │ │ │ ├── layers.ts │ │ │ ├── plot.ts │ │ │ ├── time.ts │ │ │ ├── tooltip.ts │ │ │ ├── user-feedbacks.ts │ │ │ └── user-guides.ts │ │ ├── tsconfig.production.json │ │ └── webpack/ │ │ └── umd.js │ ├── deckgl-arrow-layers/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── layers/ │ │ │ │ ├── geo-arrow-arc-layer.ts │ │ │ │ ├── geo-arrow-scatterplot-layer.ts │ │ │ │ └── geo-arrow-text-layer.ts │ │ │ ├── types.ts │ │ │ └── utils/ │ │ │ ├── picking.ts │ │ │ ├── utils.ts │ │ │ └── validate.ts │ │ ├── tsconfig.production.json │ │ └── webpack/ │ │ └── umd.js │ ├── deckgl-layers/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── 3d-building-layer/ │ │ │ │ ├── 3d-building-layer.ts │ │ │ │ ├── 3d-building-utils.ts │ │ │ │ └── types.ts │ │ │ ├── cluster-layer/ │ │ │ │ └── cluster-layer.ts │ │ │ ├── column-layer/ │ │ │ │ └── enhanced-column-layer.ts │ │ │ ├── deckgl-extensions/ │ │ │ │ ├── filter-arrow-layer.ts │ │ │ │ └── filter-shader-module.ts │ │ │ ├── grid-layer/ │ │ │ │ └── enhanced-cpu-grid-layer.ts │ │ │ ├── hexagon-layer/ │ │ │ │ └── enhanced-hexagon-layer.ts │ │ │ ├── index.ts │ │ │ ├── layer-utils/ │ │ │ │ ├── cluster-utils.ts │ │ │ │ ├── cpu-aggregator.ts │ │ │ │ └── shader-utils.ts │ │ │ ├── line-layer/ │ │ │ │ └── line-layer.ts │ │ │ ├── raster/ │ │ │ │ ├── images.ts │ │ │ │ ├── raster-layer/ │ │ │ │ │ ├── raster-layer-webgl1.fs.ts │ │ │ │ │ ├── raster-layer-webgl1.vs.ts │ │ │ │ │ ├── raster-layer-webgl2.fs.ts │ │ │ │ │ ├── raster-layer-webgl2.vs.ts │ │ │ │ │ └── raster-layer.ts │ │ │ │ ├── raster-mesh-layer/ │ │ │ │ │ ├── matrix.ts │ │ │ │ │ ├── raster-mesh-layer-webgl1.fs.ts │ │ │ │ │ ├── raster-mesh-layer-webgl1.vs.ts │ │ │ │ │ ├── raster-mesh-layer-webgl2.fs.ts │ │ │ │ │ ├── raster-mesh-layer-webgl2.vs.ts │ │ │ │ │ └── raster-mesh-layer.ts │ │ │ │ ├── types.ts │ │ │ │ ├── util.ts │ │ │ │ └── webgl/ │ │ │ │ ├── color/ │ │ │ │ │ ├── colormap.ts │ │ │ │ │ ├── filter.ts │ │ │ │ │ ├── gamma-contrast.ts │ │ │ │ │ ├── linear-rescale.ts │ │ │ │ │ ├── saturation.ts │ │ │ │ │ └── sigmoidal-contrast.ts │ │ │ │ ├── index.ts │ │ │ │ ├── pansharpen/ │ │ │ │ │ └── pansharpen-brovey.ts │ │ │ │ ├── spectral-indices/ │ │ │ │ │ ├── evi.ts │ │ │ │ │ ├── msavi.ts │ │ │ │ │ ├── normalized-difference.ts │ │ │ │ │ └── savi.ts │ │ │ │ ├── texture/ │ │ │ │ │ ├── combine-bands.ts │ │ │ │ │ ├── mask.ts │ │ │ │ │ ├── reorder-bands.ts │ │ │ │ │ └── rgba-image.ts │ │ │ │ └── types.ts │ │ │ ├── svg-icon-layer/ │ │ │ │ ├── scatterplot-icon-layer.ts │ │ │ │ └── svg-icon-layer.ts │ │ │ ├── typedefs/ │ │ │ │ └── deckgl.d.ts │ │ │ └── wms/ │ │ │ └── wms-layer.ts │ │ ├── tsconfig.production.json │ │ └── webpack/ │ │ └── umd.js │ ├── duckdb/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── adapters/ │ │ │ │ └── duckdb-wasm-adapter.ts │ │ │ ├── components/ │ │ │ │ ├── index.tsx │ │ │ │ ├── monaco-editor.tsx │ │ │ │ ├── preview-data-panel.tsx │ │ │ │ ├── schema-panel.tsx │ │ │ │ ├── sql-panel.tsx │ │ │ │ └── tree.tsx │ │ │ ├── index.ts │ │ │ ├── plugin.ts │ │ │ ├── processors/ │ │ │ │ └── data-processor.ts │ │ │ ├── table/ │ │ │ │ ├── duckdb-table-utils.ts │ │ │ │ ├── duckdb-table.ts │ │ │ │ └── index.ts │ │ │ └── utils/ │ │ │ └── perf.ts │ │ └── tsconfig.production.json │ ├── effects/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── custom-deck-lighting-effect.ts │ │ │ ├── effect.ts │ │ │ ├── index.ts │ │ │ ├── lighting-effect.ts │ │ │ ├── post-processing-effect.ts │ │ │ └── utils.ts │ │ ├── tsconfig.production.json │ │ └── webpack/ │ │ └── umd.js │ ├── index.d.ts │ ├── index.js │ ├── layers/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── aggregation-layer.ts │ │ │ ├── arc-layer/ │ │ │ │ ├── arc-layer-icon.tsx │ │ │ │ └── arc-layer.ts │ │ │ ├── base-layer.ts │ │ │ ├── base.tsx │ │ │ ├── cluster-layer/ │ │ │ │ ├── cluster-layer-icon.tsx │ │ │ │ └── cluster-layer.ts │ │ │ ├── default-layer-icon.tsx │ │ │ ├── editor-layer/ │ │ │ │ ├── constants.ts │ │ │ │ ├── editor-layer-utils.ts │ │ │ │ ├── editor-layer.ts │ │ │ │ ├── feature-styles.ts │ │ │ │ └── modify-mode-extended.ts │ │ │ ├── example-table.tsx │ │ │ ├── geojson-layer/ │ │ │ │ ├── geojson-info-modal.tsx │ │ │ │ ├── geojson-layer-icon.tsx │ │ │ │ ├── geojson-layer.ts │ │ │ │ └── geojson-utils.ts │ │ │ ├── grid-layer/ │ │ │ │ ├── grid-layer-icon.tsx │ │ │ │ ├── grid-layer.ts │ │ │ │ └── grid-utils.ts │ │ │ ├── h3-hexagon-layer/ │ │ │ │ ├── h3-hexagon-layer-icon.tsx │ │ │ │ ├── h3-hexagon-layer.ts │ │ │ │ └── index.ts │ │ │ ├── heatmap-layer/ │ │ │ │ ├── heatmap-layer-icon.tsx │ │ │ │ └── heatmap-layer.ts │ │ │ ├── hexagon-layer/ │ │ │ │ ├── hexagon-layer-icon.tsx │ │ │ │ ├── hexagon-layer.ts │ │ │ │ └── hexagon-utils.ts │ │ │ ├── icon-layer/ │ │ │ │ ├── icon-info-modal.tsx │ │ │ │ ├── icon-layer-icon.tsx │ │ │ │ └── icon-layer.ts │ │ │ ├── index.ts │ │ │ ├── layer-text-label.ts │ │ │ ├── layer-update.ts │ │ │ ├── layer-utils.ts │ │ │ ├── line-layer/ │ │ │ │ ├── line-layer-icon.tsx │ │ │ │ └── line-layer.ts │ │ │ ├── mapbox-utils.ts │ │ │ ├── mapboxgl-layer.ts │ │ │ ├── point-layer/ │ │ │ │ ├── point-layer-icon.tsx │ │ │ │ └── point-layer.ts │ │ │ ├── raster-tile/ │ │ │ │ ├── config.ts │ │ │ │ ├── gpu-utils.ts │ │ │ │ ├── image.ts │ │ │ │ ├── raster-tile-icon.tsx │ │ │ │ ├── raster-tile-layer-schema.ts │ │ │ │ ├── raster-tile-layer.ts │ │ │ │ ├── raster-tile-utils.ts │ │ │ │ ├── request-throttle.ts │ │ │ │ ├── types.ts │ │ │ │ └── url.ts │ │ │ ├── s2-geometry-layer/ │ │ │ │ ├── s2-geometry-layer.ts │ │ │ │ ├── s2-layer-icon.tsx │ │ │ │ └── s2-utils.ts │ │ │ ├── scenegraph-layer/ │ │ │ │ ├── scenegraph-info-modal.tsx │ │ │ │ ├── scenegraph-layer-icon.tsx │ │ │ │ └── scenegraph-layer.ts │ │ │ ├── table.tsx │ │ │ ├── trip-layer/ │ │ │ │ ├── trip-info-modal.tsx │ │ │ │ ├── trip-layer-icon.tsx │ │ │ │ ├── trip-layer.ts │ │ │ │ └── trip-utils.ts │ │ │ ├── typedefs/ │ │ │ │ └── deckgl.d.ts │ │ │ ├── vector-tile/ │ │ │ │ ├── abstract-tile-layer.ts │ │ │ │ ├── common-tile/ │ │ │ │ │ ├── iterable-tile-set.ts │ │ │ │ │ ├── tile-dataset.ts │ │ │ │ │ └── tile-utils.ts │ │ │ │ ├── loading-counter.ts │ │ │ │ ├── mvt-layer.ts │ │ │ │ ├── vector-tile-icon.tsx │ │ │ │ └── vector-tile-layer.ts │ │ │ └── wms-layer/ │ │ │ ├── wms-layer-icon.tsx │ │ │ └── wms-layer.ts │ │ └── tsconfig.production.json │ ├── localization/ │ │ ├── TRANSLATION_GUIDE.md │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── formatted-message.tsx │ │ │ ├── index.ts │ │ │ ├── locales.ts │ │ │ ├── messages.ts │ │ │ └── translations/ │ │ │ ├── ca.ts │ │ │ ├── cn.ts │ │ │ ├── en.ts │ │ │ ├── es.ts │ │ │ ├── fi.ts │ │ │ ├── ja.ts │ │ │ ├── pt.ts │ │ │ └── ru.ts │ │ ├── tsconfig.production.json │ │ └── webpack/ │ │ └── umd.js │ ├── processors/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── data-processor.ts │ │ │ ├── file-handler.ts │ │ │ ├── index.ts │ │ │ ├── typedefs/ │ │ │ │ └── deckgl.d.ts │ │ │ └── types.ts │ │ ├── tsconfig.production.json │ │ └── webpack/ │ │ └── umd.js │ ├── reducers/ │ │ ├── UPGRADE-data-container.md │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── combined-updaters.ts │ │ │ ├── composer-helpers.ts │ │ │ ├── composers.ts │ │ │ ├── core.ts │ │ │ ├── data-utils.ts │ │ │ ├── export-utils.ts │ │ │ ├── index.ts │ │ │ ├── interaction-utils.ts │ │ │ ├── layer-utils.ts │ │ │ ├── map-state-updaters.ts │ │ │ ├── map-state.ts │ │ │ ├── map-style-updaters.ts │ │ │ ├── map-style.ts │ │ │ ├── merger-handler.ts │ │ │ ├── middleware.ts │ │ │ ├── provider-state-updaters.ts │ │ │ ├── provider-state.ts │ │ │ ├── root.ts │ │ │ ├── ui-state-updaters.ts │ │ │ ├── ui-state.ts │ │ │ ├── vis-state-merger.ts │ │ │ ├── vis-state-selectors.ts │ │ │ ├── vis-state-updaters.ts │ │ │ └── vis-state.ts │ │ └── tsconfig.production.json │ ├── schemas/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── dataset-schema.ts │ │ │ ├── index.ts │ │ │ ├── map-state-schema.ts │ │ │ ├── map-style-schema.ts │ │ │ ├── schema-manager.ts │ │ │ ├── schema-utils.ts │ │ │ ├── schema.ts │ │ │ ├── ui-state-schema.ts │ │ │ ├── versions.ts │ │ │ └── vis-state-schema.ts │ │ ├── tsconfig.production.json │ │ └── webpack/ │ │ └── umd.js │ ├── styles/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── base.ts │ │ │ ├── index.ts │ │ │ └── media-breakpoints.ts │ │ ├── tsconfig.production.json │ │ └── webpack/ │ │ └── umd.js │ ├── table/ │ │ ├── UPGRADE-data-container.md │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── dataset-utils.ts │ │ │ ├── gpu-filter-utils.ts │ │ │ ├── index.ts │ │ │ ├── kepler-table.ts │ │ │ └── tileset/ │ │ │ ├── raster-tile-utils.ts │ │ │ ├── tileset-utils.ts │ │ │ ├── vector-tile-utils.spec.ts │ │ │ └── vector-tile-utils.ts │ │ └── tsconfig.production.json │ ├── tasks/ │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ └── tsconfig.production.json │ ├── types/ │ │ ├── actions.d.ts │ │ ├── components.d.ts │ │ ├── datasets.d.ts │ │ ├── effects.d.ts │ │ ├── index.d.ts │ │ ├── layers.d.ts │ │ ├── package.json │ │ ├── reducers.d.ts │ │ ├── schemas.d.ts │ │ ├── stac.d.ts │ │ └── types.d.ts │ └── utils/ │ ├── babel.config.js │ ├── map-utils.spec.js │ ├── package.json │ ├── src/ │ │ ├── aggregation.ts │ │ ├── application-config-types.ts │ │ ├── application-config.ts │ │ ├── arrow-data-container.ts │ │ ├── browser-utils.ts │ │ ├── color-utils.ts │ │ ├── data-container-interface.ts │ │ ├── data-container-utils.ts │ │ ├── data-row.ts │ │ ├── data-scale-utils.ts │ │ ├── data-utils.ts │ │ ├── dataset-utils.ts │ │ ├── dom-to-image.ts │ │ ├── dom-utils.ts │ │ ├── effect-utils.ts │ │ ├── export-map-html.ts │ │ ├── export-utils.ts │ │ ├── filter-utils.ts │ │ ├── format.ts │ │ ├── gl-utils.ts │ │ ├── index.ts │ │ ├── indexed-data-container.ts │ │ ├── locale-utils.ts │ │ ├── map-info-utils.ts │ │ ├── map-style-utils/ │ │ │ ├── mapbox-gl-style-editor.ts │ │ │ └── mapbox-utils.ts │ │ ├── map-utils.ts │ │ ├── mapbox-utils.ts │ │ ├── noop.ts │ │ ├── notifications-utils.ts │ │ ├── observe-dimensions.ts │ │ ├── plot.ts │ │ ├── position-utils.ts │ │ ├── projection-utils.ts │ │ ├── quick-insertion-sort.ts │ │ ├── row-data-container.ts │ │ ├── searcher-utils.ts │ │ ├── split-map-utils.ts │ │ ├── strings.ts │ │ ├── time.ts │ │ ├── types.ts │ │ └── utils.ts │ └── tsconfig.production.json ├── test/ │ ├── browser/ │ │ ├── components/ │ │ │ ├── bottom-widget-test.js │ │ │ ├── common/ │ │ │ │ ├── animation-control-test.js │ │ │ │ ├── color-legend-test.js │ │ │ │ ├── column-stats-chart-test.js │ │ │ │ ├── file-uploader-test.js │ │ │ │ ├── index.js │ │ │ │ ├── item-selector-test.js │ │ │ │ ├── range-plot-test.js │ │ │ │ └── range-slider-test.js │ │ │ ├── container-test.js │ │ │ ├── editor/ │ │ │ │ ├── feature-action-panel-test.js │ │ │ │ └── index.js │ │ │ ├── effects/ │ │ │ │ ├── effect-configurator-test.js │ │ │ │ ├── effect-manager-test.js │ │ │ │ ├── effect-time-configurator-test.js │ │ │ │ └── index.js │ │ │ ├── filters/ │ │ │ │ ├── index.js │ │ │ │ └── time-widget-test.js │ │ │ ├── geocoder-panel-test.js │ │ │ ├── helpers.js │ │ │ ├── hooks/ │ │ │ │ ├── use-dnd-effects.spec.js │ │ │ │ ├── use-dnd-layers.spec.js │ │ │ │ └── use-legend-position.spec.js │ │ │ ├── index.js │ │ │ ├── injector-test.js │ │ │ ├── kepler-gl-test.js │ │ │ ├── map/ │ │ │ │ ├── index.js │ │ │ │ ├── map-control-test.js │ │ │ │ ├── map-legend-test.js │ │ │ │ └── map-popover-test.js │ │ │ ├── map-container-test.js │ │ │ ├── modals/ │ │ │ │ ├── data-table-modal-test.js │ │ │ │ ├── export-image-modal-test.js │ │ │ │ ├── index.js │ │ │ │ └── load-data-modal-test.js │ │ │ ├── notifications/ │ │ │ │ ├── index.js │ │ │ │ ├── notification-item.spec.js │ │ │ │ └── notification-panel-test.js │ │ │ ├── plot-container-test.js │ │ │ ├── side-panel/ │ │ │ │ ├── channel-by-value-selctor-test.js │ │ │ │ ├── color-selector-test.js │ │ │ │ ├── filter-manager-test.js │ │ │ │ ├── index.js │ │ │ │ ├── layer-configurator-test.js │ │ │ │ ├── layer-list.spec.js │ │ │ │ ├── layer-manager-test.js │ │ │ │ ├── layer-panel-header-test.js │ │ │ │ ├── save-export-dropdown-test.js │ │ │ │ └── side-panel-test.js │ │ │ └── tooltip-config-test.js │ │ ├── file-handler-test.js │ │ ├── index.js │ │ ├── layer-tests/ │ │ │ ├── arc-layer-specs.js │ │ │ ├── base-layer-specs.js │ │ │ ├── cluster-layer-specs.js │ │ │ ├── geojson-layer-specs.js │ │ │ ├── grid-layer-specs.js │ │ │ ├── h3-hexagon-layer-specs.js │ │ │ ├── heatmap-layer-specs.js │ │ │ ├── hexagon-layer-specs.js │ │ │ ├── icon-layer-specs.js │ │ │ ├── index.js │ │ │ ├── line-layer-specs.js │ │ │ ├── point-layer-specs.js │ │ │ ├── raster-tile-layer-specs.js │ │ │ ├── s2-geometry-layer-specs.js │ │ │ ├── scenegraph-layer-specs.js │ │ │ ├── trip-layer-specs.js │ │ │ └── wms-layer-specs.js │ │ └── reducers/ │ │ └── index.js │ ├── browser-debug.js │ ├── browser-drive.js │ ├── browser-headless/ │ │ ├── component/ │ │ │ └── map-container-test.js │ │ └── index.js │ ├── browser-headless.js │ ├── fixtures/ │ │ ├── config_v0_arc_cluster_point.js │ │ ├── config_v0_geojson_point.js │ │ ├── config_v0_geojson_poly_fill_ele.js │ │ ├── config_v0_geojson_polygon.js │ │ ├── geojson-style.js │ │ ├── geojson.js │ │ ├── points-with-polygon-filter-map.js │ │ ├── polygon-filter-map.js │ │ ├── polygon.js │ │ ├── row-object.js │ │ ├── s2-geometry.js │ │ ├── state-saved-v0.js │ │ ├── state-saved-v1-1.js │ │ ├── state-saved-v1-2.js │ │ ├── state-saved-v1-3.js │ │ ├── state-saved-v1-4.js │ │ ├── state-saved-v1-5.js │ │ ├── state-saved-v1-6.js │ │ ├── state-saved-v1-7.js │ │ ├── synced-filter-with-trip-layer.js │ │ ├── test-arc-data.js │ │ ├── test-csv-data.js │ │ ├── test-csv-object.js │ │ ├── test-hex-id-data.js │ │ ├── test-layer-data.js │ │ ├── test-trip-csv-data.js │ │ ├── test-trip-data.js │ │ ├── tile-metadata.ts │ │ └── trip-geojson.js │ ├── helpers/ │ │ ├── comparison-utils.js │ │ ├── component-jest-utils.js │ │ ├── component-utils.js │ │ ├── layer-utils.js │ │ ├── mock-map-styles.js │ │ ├── mock-provider.js │ │ ├── mock-state-utils.js │ │ ├── mock-state.js │ │ ├── raw-states.js │ │ ├── table-utils.js │ │ └── utils.js │ ├── js-dom.js │ ├── node/ │ │ ├── index.js │ │ ├── processors/ │ │ │ ├── file-handler-fixtures.js │ │ │ ├── file-handler-test.js │ │ │ └── index.js │ │ ├── reducers/ │ │ │ ├── composer-state-test.js │ │ │ ├── index.js │ │ │ ├── map-state-test.js │ │ │ ├── map-style-test.js │ │ │ ├── provider-state-test.js │ │ │ ├── root-test.js │ │ │ ├── ui-state-test.js │ │ │ ├── vis-state-merger-combine-configs-test.spec.js │ │ │ ├── vis-state-merger-test.js │ │ │ └── vis-state-test.js │ │ ├── schemas/ │ │ │ ├── dataset-schema-test.js │ │ │ ├── index.js │ │ │ ├── map-state-schema-test.js │ │ │ ├── map-style-schema-test.js │ │ │ ├── schema-conversion-test.js │ │ │ └── vis-state-schema-test.js │ │ └── utils/ │ │ ├── aggregation-test.js │ │ ├── color-util-test.js │ │ ├── composer-helpers-test.js │ │ ├── data-container-test.js │ │ ├── data-processor-test.js │ │ ├── data-scale-utils-test.js │ │ ├── data-utils-test.js │ │ ├── dataset-utils-test.js │ │ ├── dom-to-image.js │ │ ├── duckdb-utils-test.js │ │ ├── editor-utils-test.js │ │ ├── effect-utils-test.js │ │ ├── export-utils-test.js │ │ ├── filter-utils-test.js │ │ ├── gpu-filter-utils-test.js │ │ ├── index.js │ │ ├── interaction-utils-test.js │ │ ├── kepler-gl-utils-test.js │ │ ├── kepler-table-test.js │ │ ├── kepler-table-utils-test.js │ │ ├── layer-utils-test.js │ │ ├── map-info-utils-test.js │ │ ├── mapbox-gl-style-editor-test.js │ │ ├── mapbox-utils-test.js │ │ ├── notifications-utils-test.js │ │ ├── plot-test.js │ │ ├── s2-utils-test.js │ │ ├── timeline-test.js │ │ └── util-test.js │ ├── node.js │ ├── setup-browser-env.js │ └── webpack.config.js ├── tsconfig.json ├── tsconfig.production.json ├── webpack/ │ ├── build_types.js │ ├── bundle.js │ ├── shared-webpack-configuration.js │ └── umd.js ├── website/ │ ├── .babelrc │ ├── .yarnrc.yml │ ├── README.md │ ├── esbuild.config.mjs │ ├── package.json │ ├── src/ │ │ ├── README.md │ │ ├── components/ │ │ │ ├── app.js │ │ │ ├── common/ │ │ │ │ ├── card.js │ │ │ │ ├── carousel.js │ │ │ │ ├── section.js │ │ │ │ ├── slideshow.js │ │ │ │ ├── staggered-scroll-animation.js │ │ │ │ ├── styled-components.js │ │ │ │ ├── styles.js │ │ │ │ └── swipeable.js │ │ │ ├── desktop.js │ │ │ ├── ecosystems.js │ │ │ ├── examples.js │ │ │ ├── features.js │ │ │ ├── footer.js │ │ │ ├── foursquare-logo.js │ │ │ ├── header.js │ │ │ ├── hero.js │ │ │ ├── home.js │ │ │ ├── mapbox-logo.js │ │ │ ├── netlify-logo.js │ │ │ ├── policy.js │ │ │ ├── showcase.js │ │ │ ├── studio.js │ │ │ ├── tutorials.js │ │ │ └── walkthrough.js │ │ ├── constants.js │ │ ├── content.js │ │ ├── main.js │ │ ├── reducers/ │ │ │ ├── analytics.js │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── routes.js │ │ ├── static/ │ │ │ ├── _redirects │ │ │ └── index.html │ │ ├── styles.js │ │ └── utils.js │ └── webpack.config.js └── website-gatsby/ ├── .eslintignore ├── .gitignore ├── gatsby-browser.js ├── gatsby-config.js ├── gatsby-node.js ├── gatsby-ssr.js ├── package.json ├── src/ │ ├── components/ │ │ ├── app.js │ │ ├── common/ │ │ │ ├── card.js │ │ │ ├── carousel.js │ │ │ ├── section.js │ │ │ ├── slideshow.js │ │ │ ├── staggered-scroll-animation.js │ │ │ ├── styled-components.js │ │ │ ├── styles.js │ │ │ └── swipeable.js │ │ ├── examples.js │ │ ├── features.js │ │ ├── footer.js │ │ ├── header.js │ │ ├── hero.js │ │ ├── home.js │ │ ├── info-panel.jsx │ │ ├── mapbox-logo.js │ │ ├── policy.js │ │ ├── showcase.js │ │ ├── tutorials.js │ │ └── walkthrough.js │ ├── constants.js │ ├── content.js │ ├── state/ │ │ ├── analytics.js │ │ ├── app.js │ │ ├── index.js │ │ ├── redux-wrapper.js │ │ └── test.js │ ├── styles.js │ └── utils.js ├── static/ │ └── CNAME └── templates/ ├── index.jsx └── style.css ================================================ FILE CONTENTS ================================================ ================================================ FILE: .dockerignore ================================================ dist/ .venv/ .conda/ node_modules/ __pycache__/ build/ ================================================ FILE: .editorconfig ================================================ # EditorConfig: http://editorconfig.org root = true [*] indent_style = space indent_size = 2 end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true ================================================ FILE: .eslintrc.js ================================================ module.exports = { env: { es6: true, browser: true, node: true, 'jest/globals': true }, globals: { page: true, browser: true, context: true, jestPuppeteer: true }, parser: '@typescript-eslint/parser', extends: ['eslint:recommended', 'plugin:prettier/recommended', 'plugin:react-hooks/recommended'], plugins: ['babel', 'prettier', 'react', 'enzyme-deprecation'], rules: { 'valid-jsdoc': 0, 'no-var': 0, 'max-len': 0, 'react/no-did-mount-set-state': 0, 'react/no-multi-comp': 0, 'react/sort-comp': 0, 'no-use-before-define': 'off', 'prefer-spread': 1, 'prefer-template': 1, 'prettier/prettier': 'error', 'quote-props': 0, 'spaced-comment': 1, 'max-params': 0, 'no-multiple-empty-lines': 1, 'no-process-env': 0, 'no-inline-comments': 0, 'no-invalid-this': 0, 'no-unused-expressions': 0, 'no-undef': 0, camelcase: 0, 'consistent-return': 0, 'comma-dangle': 1, 'enzyme-deprecation/no-shallow': 2, 'enzyme-deprecation/no-mount': 2, 'no-constant-condition': ['error', {checkLoops: false}], 'no-unused-vars': ['warn', {argsIgnorePattern: '^_', varsIgnorePattern: '^_'}], '@typescript-eslint/no-unused-vars': [ 'warn', {argsIgnorePattern: '^_', varsIgnorePattern: '^_'} ] }, overrides: [ { files: ['*.ts', '*.tsx'], parser: '@typescript-eslint/parser', // Plugins like @typescript-eslint provide different ruleset configs that can be extended plugins: ['@typescript-eslint'], extends: [ 'plugin:@typescript-eslint/eslint-recommended', 'plugin:@typescript-eslint/recommended', // This doesn't enable extra rules, but rather just helps with TS settings 'plugin:import/typescript' ], rules: { // TODO: Replace any declarations and enable '@typescript-eslint/no-explicit-any': 'off', // TODO: Enable this rule and provide description or fix the errors '@typescript-eslint/ban-ts-comment': 'off', '@typescript-eslint/no-var-requires': 'off' } }, { files: ['src/**/src/**/*.spec.js'], plugins: ['jest'], extends: ['plugin:jest/recommended'], rules: {'jest/prefer-expect-assertions': 'off'} } ], settings: { react: { version: 'detect' }, // Settings related to eslint-plugin-import 'import/resolver': { // Settings for eslint-import-resolver-typescript which resolves // typescript aliases based on tsconfig.json "paths" typescript: { project: './tsconfig.json' } } } }; ================================================ FILE: .github/ISSUE_TEMPLATE/bug-report--jupyter-widget.md ================================================ --- name: 'Bug report: Jupyter widget' about: Report Bug for keplergl Jupyter widget title: "[Bug][Jupyter Widget]" labels: jupyter assignees: heshan0131 --- **Describe the bug** A clear and concise description of what the bug is. **To Reproduce** Steps to reproduce the behavior: 1. load kepler 2. Add data & config 3. Export map **Expected behavior** A clear and concise description of what you expected to happen. **Screenshots** If applicable, add screenshots to help explain your problem. **Environment (please complete the following information):** - Python version: [e.g. python2, python3] - keplergl Widget version [e.g. 0.1.0] **Additional context** Add any other context about the problem here. ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.md ================================================ --- name: Bug report about: Create a report to help us improve title: "[Bug]" labels: bug assignees: '' --- **Describe the bug** A clear and concise description of what the bug is. **To Reproduce** Steps to reproduce the behavior: 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' 4. See error **Expected behavior** A clear and concise description of what you expected to happen. **Screenshots** If applicable, add screenshots to help explain your problem. **Desktop (please complete the following information):** - OS: [e.g. iOS] - Browser [e.g. chrome, safari] - Version [e.g. 22] **Smartphone (please complete the following information):** - Device: [e.g. iPhone6] - OS: [e.g. iOS8.1] - Browser [e.g. stock browser, safari] - Version [e.g. 22] **Additional context** Add any other context about the problem here. ================================================ FILE: .github/ISSUE_TEMPLATE/feature-request--jupyter-widget.md ================================================ --- name: 'Feature request: Jupyter widget' about: Suggest an idea for kepler.gl Jupyter Widget title: '' labels: jupyter assignees: heshan0131 --- **Is your feature request related to a problem? Please describe.** A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] **Describe the solution you'd like** A clear and concise description of what you want to happen. **Describe alternatives you've considered** A clear and concise description of any alternative solutions or features you've considered. **Additional context** Add any other context or screenshots about the feature request here. ================================================ FILE: .github/ISSUE_TEMPLATE/feature_request.md ================================================ --- name: Feature request about: Suggest an idea for kepler.gl title: '' labels: '' assignees: heshan0131 --- **Is your feature request related to a problem? Please describe.** A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] **Describe the solution you'd like** A clear and concise description of what you want to happen. **Describe alternatives you've considered** A clear and concise description of any alternative solutions or features you've considered. **Additional context** Add any other context or screenshots about the feature request here. ================================================ FILE: .github/SECURITY.md ================================================ # Security Policy ## Supported Versions Security updates are applied only to the latest release. ## Reporting a Vulnerability If you have discovered a security vulnerability in this project, please report it privately. **Do not disclose it as a public issue.** This gives us time to work with you to fix the issue before public exposure, reducing the chance that the exploit will be used before a patch is released. Please disclose it at [security advisory](https://github.com/keplergl/kepler.gl/security/advisories/new). This project is maintained by a team of volunteers on a reasonable-effort basis. As such, please give us at least 90 days to work on a fix before public exposure. ## Escalation If you do not receive an acknowledgement of your report within 6 business days, or if you cannot find a private security contact for the project, you may escalate to the OpenJS Foundation CNA at `security@lists.openjsf.org`. If the project acknowledges your report but does not provide any further response or engagement within 14 days, escalation is also appropriate. ================================================ FILE: .github/workflows/build-publish-pypi.yml ================================================ name: Build and Publish KeplerGL Python Package on: push: workflow_dispatch: inputs: prerelease: description: 'Publish as prerelease (uncheck for official release)' required: false type: boolean default: true jobs: build_and_publish: runs-on: ubuntu-latest permissions: id-token: write steps: - uses: actions/checkout@v4 - name: Install uv uses: astral-sh/setup-uv@v4 - name: Set up Python 3.11 run: uv python install 3.11 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' - name: Install Python dependencies working-directory: bindings/python run: uv sync --dev - name: Install npm dependencies working-directory: bindings/python run: npm ci - name: Build TypeScript working-directory: bindings/python env: MapboxAccessTokenJupyter: ${{ secrets.mapbox_jupyter_token }} run: npm run build - name: Type check working-directory: bindings/python run: npm run typecheck - name: Build Python package working-directory: bindings/python run: uv build - name: Test KeplerGL working-directory: bindings/python run: | uv pip install dist/*.whl uv run pytest - name: Create artifact uses: actions/upload-artifact@v4 with: name: keplergl-pypi path: bindings/python/dist/ - name: Check version format if: github.event_name == 'workflow_dispatch' working-directory: bindings/python run: | VERSION=$(grep -Po '(?<=^version = ")[^"]+' pyproject.toml) echo "Package version: $VERSION" # Check if version contains prerelease indicators (a, b, rc, dev) if [[ "$VERSION" =~ (a|b|rc|dev)[0-9]+ ]]; then IS_PRERELEASE_VERSION=true else IS_PRERELEASE_VERSION=false fi echo "Is prerelease version: $IS_PRERELEASE_VERSION" echo "Publishing as prerelease: ${{ inputs.prerelease }}" # Fail if mismatch between version format and publish type if [[ "${{ inputs.prerelease }}" == "true" && "$IS_PRERELEASE_VERSION" == "false" ]]; then echo "::error::Publishing as prerelease but version '$VERSION' does not have a prerelease suffix (e.g., 0.4.0a1, 0.4.0b1, 0.4.0rc1)" exit 1 fi if [[ "${{ inputs.prerelease }}" == "false" && "$IS_PRERELEASE_VERSION" == "true" ]]; then echo "::error::Cannot publish official release with prerelease version '$VERSION'. Please update the version in pyproject.toml." exit 1 fi - name: Publish to PyPI if: github.event_name == 'workflow_dispatch' uses: pypa/gh-action-pypi-publish@release/v1 with: packages-dir: bindings/python/dist/ ================================================ FILE: .github/workflows/npmpublish.yml ================================================ name: Node.js Package on: release: types: [created] jobs: publish-npm: runs-on: ubuntu-latest env: NPM_AUTH_TOKEN: ${{secrets.npm_token}} steps: - uses: actions/checkout@v4 # use Volta to manage yarn/node versions - uses: volta-cli/action@v4 - run: yarn install - run: yarn bootstrap - run: npm i -g npm@8.19.2 - name: Login to NPM run: npm config set "//registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN}" - name: Publish run: npm publish --workspaces --access public ================================================ FILE: .github/workflows/test.yml ================================================ # This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions name: Node.js CI on: push: branches: [master] pull_request: branches: [master] jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: [18.x] steps: - uses: actions/checkout@v4 # use Volta to manage yarn/node versions - uses: volta-cli/action@v4 - name: Install XVFB run: sudo apt-get install xvfb - name: Install Dependencies run: yarn install && yarn bootstrap # - name: Install Puppeteer # run: yarn dlx "puppeteer@23.1.0" - name: Lint run: yarn lint - name: Test run: xvfb-run --auto-servernum yarn cover - name: Coveralls uses: coverallsapp/github-action@master continue-on-error: true with: github-token: ${{ secrets.GITHUB_TOKEN }} ================================================ FILE: .gitignore ================================================ node_modules/ */**/node_modules/ coverage/ *-coverage/ .nyc_output/ dist/ build/ umd/ */**/dist/ __pycache__/ .pytest_cache/ .ipynb_checkpoints/ bindings/python/keplergl/static/ typedoc/ examples/**/yarn.lock !examples/demo-app/yarn.lock yarn-error.log */**/package-lock.json package-lock.json .DS_Store .idea .vscode/ .venv/ /bundle*.js /favicon.png /index.html npm-debug.log .history/ .yarn .npmrc .pnp.* .yarn/* !.yarn/patches !.yarn/plugins !.yarn/releases !.yarn/sdks !.yarn/versions # Local Netlify folder .netlify meta.json .env ================================================ FILE: .nvmrc ================================================ 18.18.2 ================================================ FILE: .prettierrc.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project module.exports = { bracketSpacing: false, printWidth: 100, semi: true, singleQuote: true, trailingComma: 'none', arrowParens: 'avoid' }; ================================================ FILE: .stylelintrc ================================================ { "processors": [ "stylelint-processor-styled-components" ], "extends": [ "stylelint-config-recommended", "stylelint-config-styled-components" ], "rules": { "no-descending-specificity": null, "selector-pseudo-class-no-unknowny": null } } ================================================ FILE: .yarnrc.yml ================================================ # https://yarnpkg.com/configuration/yarnrc nodeLinker: node-modules # Define the registry to use when fetching packages. npmRegistryServer: 'https://registry.yarnpkg.com' ================================================ FILE: CHANGELOG.md ================================================ # Change Log All notable changes to kepler.gl will be documented in this file. ## [3.2.6] - Mar 16 2026 - b5ffed55b feat: add extra map export resolutions (#3357) - faa000c6c feat(kepler-jupyter): version 0.4.0rc1 (#3345) - efb072eb5 fix: colors not working in trip layer of TABLE mode (#3347) - ca30df0e1 fix: create trip layer from duckdb table (#3344) - cc33b0c8f feat: add support to DECIMAL column type (#3341) - 40ce323a8 docs(localization): add translation guide for contributors (#3335) - 35ab765d4 fix: tileset loading indicator improvements (#3331) - cec11f3cb fix: add security warning about Mapbox token in HTML exports (#3139) (#3330) - e2f672cdc fix: replace broken vis.academy link with docs.kepler.gl (#3309) - 8c5030c3e fix: export zoom icon (#3308) - 8cf4274bf fix: layer configurator icon update (#3306) - 192f0fd2b feat: getDuckDBColumnTypes improvements (#3304) - 3762a2b36 feat: make tile loading indicator more explicit (#3305) - e5b7df170 rollback change, and truncate tooltip (#3300) - cbb3204cf feat: Implement WKT validation in data-type.ts (#3298) - e705fc8aa fix: name new point layer using label if provided (follow-up) (#3297) - 4bdf8f4ff fix: name new point layer using label if provided - cf76bba68 fix: hide Kepler editor tooltip “top-left jump” on invalid hover coords (#3294) - 2ba9f6e22 fix: Clamp legend height if it exceeds available space (#3276) - 562cb1ba8 kepler.gl-jupyter: codespell (#3273) ## [3.2.5] - Dec 24 2025 - 81f490d94 fix: trigger a redraw from icon layer once the icons are loaded. (#3269) - 26e4a17d4 fix(ai-assistant): clear LLM history on restart chat (#3262) - 2d985982a fix: image export for non-webpack bundlers (#3266) ## [3.2.4] - Dec 9 2025 - 82630dee3 fix: ensure icon layer render with the latest geometry (#3259) - 422c1b347 fix: Avoid Monaco AMD bundle when importing `@kepler.gl/duckdb` (#3255) ## [3.2.3] - Nov 28 2025 - 2288bc324 fix: Allow passing arrow tables to ArrowDataContainer (#3247) - a0a4eefc1 fix: Yarn start failed (#3249) ## [3.2.2] - Nov 25 2025 - f66ab3c61 fix: Allow passing arrow tables to ArrowDataContainer (#3242) - e2efa50dd fix: copy geometry when geometry is of binary format (#3236) ## [3.2.1] - Nov 3 2025 - d2b130f95 fix: detect h3 column in arrow (#3230) - 2aa200913 fix: interaction panel causes layout shift (#3224) - 2e24bd207 feat: extend bigInt casting to support UBIGINT HUGEINT UHUGEINT in duckdb (#3227) - 79d745ae2 [fix] fix for wkb/wkt saved in DuckDB as varchar (#3208) - 24529655d fix: fixes to channel by value (#3216) - f211ccd0a [Bug]: Fix scrollTop reest when scrolling horizontally in data table (#3206) - b6aee95f3 docs: add security escalation policy (#3210) - a6e9cb998 feat: ai assistant support llm proxy server (#3188) - 2005927bd [fix] icon layer - render default icon in case svgIconUrl loading fails (#3204) - 64ec955ae [chore] Add missing release notes for 3.2 (#3200) - 70a129c4e [feat] vector tile layer - add feature uid selector (#3203) - 2b8af8260 [fix] vector tile layer - use highlightedFeatureId for hover (#3202) - 32fb77f42 [chore] bump demo-app example to kepler.gl 3.2 (#3201) - 96dcef6b9 [fix] fixes for legend (#3199) - 26dd6e832 [website] fix mobile layout (#3197) - 7be817789 [website] Add OpenJS Foundation copyright and logo (#3196) ## [3.2.0] - Aug 21 2025 - 3b0be2dda [chore] docs update (#3192) - 9c132de28 [chore] docs update (#3180) - d4d8d184b [chore] raster tile form - add link to docs (#3183) - f91564fb9 [fix] save raster layer config with layer, don't rely on app config (#3184) - 420bbf2ad [feat] add support for boolean filter in vector tiles (#3190) - e4b64a080 [chore] Replace Studio section with Desktop section (#3189) - 751148111 [chore] Fix and update examples to v3.1.10 (#3182) ## [3.1.10] - Aug 14 2025 - 09297acc0 [improvement] optimize speed of getCategoricalColorMap (#3178) - 1545fafe5 [chore] Update react-modal types version (#3173) - fc1b91fa9 [chore] Create props interface for LinkRenderer Component (#3172) - 5f664c3a5 [chore] pass through logoComponent to PlotContainer (#3176) - 46cc44109 [fix] fix for a crash in getBins when numeric strings are treated as numbers (#3175) - 0850ef2eb [chore] Update the Screenshot Image in Readme (#3171) - f2001983a [feat] export duckdb column logic (#3170) - 3df1c4ddf [chore] expose showDeleteDataset prop (#3166) - 2a666ae0c [chore] export dnd constants ## [3.1.9] - July 28 2025 - 0d6d5fd1a [chore] raster tile - hide server settings by default (#3163) - 7551f5d7d [fix] DuckDB mode: space in column name breaks file import (#3153) (#3156) - 047334712 [fix] fit to bounds - fix initial basemap and deck projections mismatch (#3155) - d43e8bbff [chore] replace ai-assistant model config file with ts for npm availability (#3154) - 1a93a2b99 [chore] raster tile layer tests (#3152) - 343b554db [feat] WMS layer improvements (#3151) - c1d2b8616 [fix] button spinner fix (#3150) - a05b3cf6d [fix] WMS layer fixes 2 (#3149) - 1a47e08a5 [fix] WMS layer fixes 1 (#3148) - 272fd1ae7 [Feat] WMS Layer - development (#3092) - 9f656e06c [Docs] Add tutorial Spatial Data Analysis with Kepler.gl AI Assistant (part1) (#3126) - ca628b523 [Chore] rewrite plot container for perf improvement (#3133) - 49f4c3de2 [chore] Update old imports (#3131) - 3b6e9049a [fix] improvements for raster tile layer (#3124) - 4237b0a0e [chore] migrate custom-palette from react-sortable-hoc to dnd-kit (#3128) - 49fbf8faa [fix] aggregation layers fixes for custom color scale (#3129) - edf1f1ddd [fix] spatial join ai instruction (#3127) ## [3.1.8] - May 26 2025 - 4fd570c3e [example] Kepler.gl getting started example with Vite (#3123) - f57173d35 [fix] DuckDB - cast BigInts to Double by default (#3120) - fd4702c4f [perf] disable strokes by default for polygons in geojson layer (#3118) - 1542bb6f7 [Feat] Add OSM road tool to support point analysis on road networks (#3117) - 9da33316c [feat] Generate "idea" buttons from LLM (#3115) - 330030185 [Fix] AI Connection to Ollama failed (#3113) - be6ee823a [Bug] fix update selected feature bbox (#3110) - 0dcacc66e [fix] Custom picker fix when called during initialization (#3107) - 4fc1344a1 [Chore] style tweak (#3109) - 3769aaf74 [Chore] Better handle add data to map error and loading indicator (#3106) ## [3.1.7] - May 14 2025 - 014059b97 [fix] fixes for raster tile layer (#3102) - 518c515d1 [feat] loading indicator improvements for tiled layers (#3097) - e290f281e [fix] fix for getFieldsFromTile regression (#3099) - 7087ffe15 [fix] fix tooltip crashing for trip layer (#3103) - a231ebfc1 [fix] fix for image export with effects (#3105) - da38e26b9 [chore] Update Comments in actions (#3098) - 21aac1c85 [fix] fixes for custom input (#3095) - 271b8cc98 [fix] fix types publishing for table module (#3096) - 3d3bb9b54 [chore] add cdnUrl option to application config (#3093) - 9cdf73ea4 [Bug] remove layer item z-index (#3091) ## [3.1.6] - May 8 2025 - 33203a6de [fix] fix loading indicotor not hidden regression (#3088) - 913176bb6 [bug] fix lodash imports regression (#3089) ## [3.1.5] - May 8 2025 - 223d14b60 [chore] ts fixes - 3570ac429 [feat] Raster Tile Layer - development in progress (#3048) - 07e5beae2 [chore] import add tileset dialog styling (#3085) - 6568c0c94 [Feat] Add Spatial Data Analysis tools to AI Assistants (#3057) - fd08fa1a9 [Chore] export more kepler-gl prop selector (#3081) ## [3.1.4] - May 5 2025 - 03b8ea0a9 [Chore] Use clonedeep in interaction config load (#3080) - a6104eafe [Chore] drop lodash per-method packages in favor of the main lodash (#3065) - abb3fd473 [feat] h3 layer from decimal format (#3066) - 191f66161 [fix] fix for exported maps. Change react-markdown to markdown-to-jsx (#3077) - 3c83e74b3 [chore] Added types in Action (#3075) - 8baddbbaf [Chore] export bottom widget field selector (#3078) - afc21c263 [chore] Fix TypeScript Errors (#3076) - 822cd0e32 [Style] align icon styles, use lucid icons (#3073) ## [3.1.3] - May 2 2025 - d5ef5f713 [Chore] remove dnd-kit from dependency of utils and reducer, remove use of withState in dnd context (#3067) ## [3.1.2] - May 1 2025 - fb3615b90 [chore] extra duckdb utils export (#3063) - a0d14b770 [fix] updateVisDataUpdater early exit (#3058) - 111b3180d [chore] pass props directly to Draggable legend, not withState (#3055) - 6bb6c98a1 [fix] Legend positioning fixes (#3052) - 7d601f110 [fix] Only open either the mapDraw dropdown or locale dropdown (#3056) - 52a2d2a2b [CHORE] disable auto lyaer creation based on color by int column (#3049) - e935ef51d [chore] extra exports from duckdb module (#3050) - 864dbe5c6 [Chore] Fix more style components warnings (#3047) - 9de30e2ba [Chore] Export duckdub utils, allow cols in validate dataset (#3042) - 6cc1ee4ef [Bug] Fix styled-components warnings for passing props to Dom (#3039) - cb5c14f81 [Bug] Add mapbox-gl dep to prevent Failed to resolve import in vite (#3036) - 7c3365fcf [chore] Get started minimal example with esbuild (#3028) - 224975a25 [chore] pass duckDB adapter via application config (#3023) ## [3.1.1] - March 11 2025 - e271c8f8c [fix] fix for potential freeze during add data pipeline (#3015) - 9eef01c48 [fix] make onFilteredItemsChange callback optional (#3016) - 7107e4177 [fix] fixes for vector-tile layer (#3013) - b4b979d59 [fix] schema panel displays temp table (#3014) - ed2b5f322 [chore] fix react deprecation warnings (#3011) - ba75087a1 [fix] DuckDB: update schema after running a query (#3009) - b57b1ff9a [chore] update umd example to latest stable release (#3010) - 9762dc379 [feat] DuckDb plugin: drag and drop file directly as table (#2952) - 8e737e8cc [chore] changes to webpack.config path separators (#2623) - 8fbb3b0b4 [fix] Fix Save map action for FSQ provider (overwrite logic) (#3006) - df829fbe9 [fix] fix for geocoder coordinates (#3002) - 44acecf2a [fix] adjust getZoomFactor for icon layer (#3004) - 69ea2a176 [fix] fix for Icon layer UI (#3003) - 702b49e3f [fix] Fix for More than one copy of react-palm was loaded error message (#3007) - a67a7fcab [Bug] make sure the RangeBrush updates on slider range changes (#2047) - 631f7a304 [fix] Update geojson-utils.ts to support GeometryCollections (#2059) - ce867606f [chore] Bump express from 4.19.2 to 4.21.0 (#2655) - c9dd05f32 [chore] Bump nanoid from 3.3.7 to 3.3.8 in /bindings/kepler.gl-jupyter/js (#2906) - b2e24345c [chore] Bump fast-xml-parser from 4.4.0 to 4.5.0 (#2688) - 976b079b3 [chore] Bump lodash from 4.17.19 to 4.17.21 in /src/deckgl-layers (#2858) - 4074b320f [chore] Bump esbuild from 0.23.1 to 0.25.0 in /examples/demo-app (#2994) - 57573d344 [chore] Bump elliptic from 6.6.0 to 6.6.1 (#2997) - c5dbd571d [chore] Fix lint issues displayed on GitHub's File Changes page (#3001) - b98a39def [fix] Transform binary buffers to hex wkb when saved to json/hmtl maps (#2998) - 221b243c2 [feat] improvements to duckDB column type handling (#2970) - d30a95bcd [fix] improvements for layer type change logic (#2995) - 547ffeb0c [fix] arrow text labels from non-string source vectors (#2990) - 7e2e619e2 [chore] updates to website (#2992) - 7e2db2b7d [chore] Improved Props and Gettings Started Docs (#2993) - 1216d235b [fix] export geoarrow to CSV as geojson (#2988) - 2c525ed8e [fix] restore suport for string wkb; save binary wkb as hex wkb (#2982) - e149384df [chore] update to hubble.gl 1.4 (#2987) - c39778ce9 [fix] AI Assistant sends messages to 127.0.0.1 instead of remote Ollama URL (#2985) - 81780f5ab [chore] Update README.md (#2981) - f8fbf2461 [fix] heatmap renders nothing with black color or duplicate color (#2978) - 11350eecb [chore] check for required env variables in demo-app and output a warning (#2977) - 0325ef6ee [fix] FSQ storage provider - use prompt instead of auto login after logout (#2975) - bbe51b980 [fix] fix for point column suggestion not working (#2974) - fa1cc4f1e [chore] Rename ".env.template " to ".env.template" to prevent git clone fail (#2976) - 47cd3da81 [keplergl-jupyter] Release v0.3.7 #2969 - 7bbe0b839 [Jupyter][Fix] convert datetimes to str so they can convert to json (#2968) - 5367abaee [fix] fix geojson and trip layer crash without data (#2964) - e1c9f869c [fix] FSQ Storage provider temp fix (#2960) - 098ee9b42 [fix] fix for minzoom in examples (#2959) - f7f10379e [chore] update demo-app version (#2958) - ab17e7565 [chore] update banner mesasge (#2957) ## [3.1.0] - January 29 2025 - 089aa8cf8 [chore] vector tiles refactoring (#2945) - 405c36e23 [fix] DuckDB: make query result title more reusable (#2956) - 8033578f2 [docs] update docs for Kepler.gl release 3.1 (#2941) - b1953cff7 [feat] banner with extra release info (#2955) - e95c4e5a4 [fix] arrow tables - save timestamps as iso date string (#2953) - 4aef54a93 [fix] adjust margin for map save modal to show Save button without scrolling (#2954) - f00b4b88d [chore] testing mp4 embed with gitbook (#2951) - f292d6181 [Chore] Add DeepSeek in Ai Assistant (#2946) - c5484e1ae [fix] plumbing for DuckDB plugin support (#2949) - da9988532 [chore] demo-app bump kepler.gl version (#2944) ## [3.1.0-alpha.7] - January 27 2025 - 7356c5afe [fix] hotfix for arrow saving / loading, without support of binary data (#2943) - 4031451b0 [feat] duckdb plugin (#2798) - 029bcc548 [feat] loading indicator (#2936) - 1a68d1bd2 [Chore] Remove SQL plugin for AI Assistant (#2938) - 4be4b6987 [Misc] Update demo-app README.md (#2934) - b38054fa8 [Feat] AI Assistant Query (#2819) - 4cd912097 [fix] Added 24 limit for maximum zoom (#2635) - b1bddd5fb [chore] Fixes for using in a vite app (#2898) - 4d1bfb3d0 [feat] minZoom and maxZoom for examples (#2933) - 81be74920 [fix] don't auto create point layer from vector tiles (#2932) ## [3.1.0-alpha.6] - January 22 2025 - 803b2f540 [fix] remove dependencies from useEffect (prev componentDidMount in app.tsx) (#2930) - 57926442f [fix] use saved map config for saved maps instead of zoom in to data (#2929) - 4af609245 [chore] add dot.env, updates to demo-app build, update gitignore (#2928) - ce23c7668 [feat] duckdb module updates (#2927) - fc974d852 [feat] duckdb module placeholder (#2926) - d1b3c9799 [fix] demo-app resolve to proper node_modules (#2925) - 594250bc7 [fix] fix demo-app yarn start (#2924) - 913ba1ce0 [feat] support for table plugin in demo examples and privately stored datasets (#2923) - 630728190 [fix] fixes for style editor preview and error (#2919) - d6aa2757e [fix] fix neighbor mode hovering crash in arc/line layers (#2920) - e2bd71d4e [fix] fix csv table examples for layers (#2921) - a6e151a0f [fix] vector tile layer fixes (#2911) ## [3.1.0-alpha.5] - January 15 2025 - b117b08ab [fix] fix for exported html maps ## [3.1.0-alpha.4] - January 15 2025 - 933a91a2f [fix] check for geoarrow extension in geojson layer (#2916) - 0abe9979d [fix] opening multiple examples breaks url (#2915) - 49e7956e8 [fix] Don't show 0 when description is empty (#2913) - cb5d4ed42 [fix] fix styled-components version in exported map (#2907) - b1d243363 [fix] adjust tooltip style (#2910) - f0c57a869 [fix] fix website commit section - 2753321c5 [feat] Vector Tile layer fixes (#2899) - 073c585e4 [Fix] add_data() function failed in keplergl-jupyter - 6e425972e [feat] mapbox and maplibre simultaneous support (#2897) - 22f9ba14d [Chore] Fix lint error for Register actions (#2896) - ccfc2e2ad [fix] Image export legend positioning (#2895) - cf02a3ca6 [chore] Upgrade styled components to v6 (#2894) - 4c9ffe827 [fix] Prevent infinite useEffects loop in range-plot (#2892) - 0b67c5409 [fix] fixed onOptionSelected handler when option is null (#2891) - 40ba839e3 [fix] Add ellipsis in LayerTypeListItem (#2890) - d0d31bdfa [fix] Handle selecting geojson polygon with missing properties (#2889) - 79801bec0 [fix] Tippy tooltips in animation controls (#2888) - 0ad53723a [feat] Adding setAnimationConfig action (#2887) - 67b001980 [chore] export TimeFieldFilterProps (#2883) - 603fde8d1 [fix] Fixed issue when mapstate latitude or langitude are out of bounds (#2882) - 92c9e6abc [fix] Use floating-ui to deal with closing on click outside (#2886) - 4bcf55bd6 [Feat] Custom color scale for categorical/ordinal field (#2880) - 23f603428 [Bug] Prevent dragging legend component outside of container (#2885) - d549fcd4e [fix] copy map config style (#2878) - 34444fa54 [fix] check for allBins (#2876) - 8335ba410 [fix] Custom Color Scale fixes (#2875) - 141236513 [chore] Add several vis state mergers combineConfigs and improve TS (#2634) - 9f3f08944 [Chore] Add composedReducerSchema to schema manager (#2633) - e633177ef [chore] applyFilterConfig action (#2872) - ceb930e2d [Fix] incorrect multi-dataset filter domain (#2871) - 00dd00279 [fix] show scale options for Point Count in aggregation layers (#2870) - a39fcf8c4 [fix] pass strings to color palette inputs (#2873) - b89b19c6a [chore] Consolidate vis state tests (#2869) - 77e785713 [feat] Support custom ordinal color scale on string field in layer config (#2868) - cccc4be2b [feat] Free positioning of the legend (#2874) - 2d1d8e5f5 [Fix] add_data() function in keplergl-jupyter (#2867) - 3b46abd34 [feat] add LayerToggleVisibility for single splitMap (#2863) - b2b6f10c8 [Release] Candidate Kepler-Jupyter v0.3.4 (#2588) - 3bf006f41 [fix] Remove legend layer groups height capping (#2864) - f1245d7e5 [chore] ts refactoring (#2861) - a897715cc [Feat] Add custom color scale for aggregate layers (#2860) - 6bc594602 [Feat] replaceDataInMap action - save colorsByDataId (#2859) - be2f04e6d [chore] add fsq color palettes (#2862) - c7d3777fc [fix] change process to globalThis.process (#2865) - 5cb8a3431 [chore] Create SECURITY.md (#2845) ## [3.1.0-alpha.3] - December 25 2024 - 2cd7a859c [chore] fix missing dependencies in workspaces (#2856) ## [3.1.0-alpha.2] - December 24 2024 - f9b385a6e [fix] Fixed time filter bug where points located at the borders of the domains were not correctly displayed (#2854) - 59abc6a19 [fix] fix for custom color scales with tile layer (#2853) - 3a4bf667f [feat] histogram and point layer fixes (#2852) - f9c52e538 [feat] color scale histogram (#2851) - 3e7dc937a [fix] custom palette issues (#2850) - d55797991 [docs] Replace yarn global add with yarn dlx for puppeteer installation (#2849) - e106c1927 [feat] Plumbing for vector tile layer (#2839) - a2abbf72d [fix] fix yarn cover regression (#2846) - 6925bd429 [docs] update demo-app/README.md (#2847) - f05b6e37d [chore] Bump nanoid from 3.3.7 to 3.3.8 in /website (#2840) - 4baa44d9b [chore] Bump nanoid from 3.3.7 to 3.3.8 (#2837) - b09d7eb95 [Enhancement] support mapbox url protocol (#2693) - 215383661 [Feat] Redesign color range to use chormajs and d3 color function (#2835) - bded7af76 [Feat] handle layer color scale by field.domainQuantiles (#2829) - 5f7c26bd0 [fix] Prevent duplicate legend in line and arc layers (#2830) - 639c7a5b9 [feat] Apply new legend style (#2831) - f9c214dd5 [chore] getSelectedFeature (#2832) - efdf2ea8d [chore] ts fixes (#2827) - 074d123dd [Feat] Add display format setting for table/tooltip (#2826) - aec75d819 [Chore] Minor ts refactoring (#2825) - 1825b6572 [fix] Expand legend (#2824) - bb6a376e8 [fix] adjust time range filter on value set (#2823) - cef3faf19 [Feat] add h3 typed column (#2822) - c5d42ddc9 [fix] Fix multiple field filtering in setFilterUpdater (#2821) - c4d1cfff0 [FEAT] support domain.domainStops in layer color, render color legend based on zoom (#2815) - 3a4feac59 [fix] Line layer is not displayed for between hex ids (#2820) - 89411c820 [fix] Typescript 4.4 fixes (#2816) - 240289603 [feat] Show selected fields in the tooltip for aggregation layers (#2814) - 95c6ed14b [chore] Bump elliptic from 6.5.7 to 6.6.1 in /bindings/kepler.gl-jupyter/js (#2818) - fb3fa7b58 [chore] Bump cross-spawn from 6.0.5 to 6.0.6 in /website (#2817) - f476a1c4c [chore] Bump elliptic from 6.5.7 to 6.6.0 (#2720) - c727356f7 [chore] Bump cross-spawn from 6.0.5 to 6.0.6 (#2772) - 3950d73ab [chore] Fixes in README.md (#2810) - 786aa36cf [Fix] Don't modify height for with fixed height enabled; Height UI unification (#2804) - 2178d9057 [fix] show sync layer animations when there is one dataset (#2803) - 6f35313f7 [chore] timeline refactoring (#2802) - d50bbc831 [fix] Updated plot when changing cross filters (#2801) - b4dfa2fce [fix] disable Share Map for FSQ provider (#2808) - 86b5dda7e [Feat] AI Assistant [2] (#2777) - 5a0cbca66 [Bug] Fix issue with React StrictMode causing Dataset table to not display (#2683) - b147db8d5 [chore] Local Development Guide Update (#2806) - 6223be939 [fix] Foursquare storage provider improvements (#2800) ## [3.1.0-alpha.1] - December 3 2024 - f6b37c6af [fix] fixes for exported maps - 979c9a5a1 [fix] align upload icon (#2799) - 6862eb85c [fix] Fix for Try Sample Data (#2796) - f4f7fd2b4 [fix] fix examples - proper publicPath to include bundle chunks (#2795) - 7ca7f9178 [chore] prepublishOnly command fixes (#2793) - 40c6c8b09 [chore] npmpublish fixes - set npm registry manually (#2792) - f60b94f48 [chore] fix npmpublish action (#2791) - e77981e13 [chore] fix for package publishing (#2790) ## [3.1.0-alpha.0] - November 26 2024 - 5b4f6537 [feat] create new dataset action (#2778) - a253cae1 [chore] Update the keplergl processors update (#2776) - 931e2c6b [fix] Update the path to relative path in utils (#2775) - ac469c13 [chore] Updated imports for Kepler GL Reducers in docs (#2774) - 13b469d8 [chore] common-utils module (#2773) - 6fd4f884 [Feat] Kepler.gl AI Assistant [1] (#2735) - ab9e2530 [fix] Time Sync fixes and tests (#2771) - 1689ed68 [fix] Custom color scale fixes (#2770) - d0c9a3b9 [feat] Support custom breaks in color scale (#2739) - 3f645002 [fix] restore arc and line layers in non-geoarrow modes (#2732) - 966ee4c6 [Chore] Custom Initial State and Forward Actions Docs update (#2731) - e88577de [chore] Docs action page import updates (#2729) - d783b43c [feat] experimental support for ARROW:extension:point; support for arrrow:wkb for geojson layer (#2716) - 26687575 [chore] Update Code examples in API Reference Get Started page (#2727) - 8ea1cabe [fix] Fixed synced filter domain and interval calculation (#2725) - 695861b2 [Bug] fix yaxis chat doesn't update (#2724) - 8c37afaa [fix] time sync bugfixes (#2723) - 4c2a6b3c [Improvement] Improved radius legend number formatting (#2726) - c9658214 [Doc] Improve keplergl-jupyter documentation (#2697) - 934f8e89 [feat] Improve timeline sync filer UI (#2722) - d6f68379 [fix] Time Sync bugfixes (#2721) - 40f82127 [feat] Sync filter with layer timeline (#2718) - 0b6f320a [Enhancement] Synced filter small tuneup to synced filter panel (#2715) - caf6e485 [fix] filter fields based on timestamp (#2714) - c17dacf3 [feat] Layer animation (#2713) - 0507bd60 [faat] deckgl-arrow-layers module (#2680) - 8e4d723b [feat] Allow function return type of getData in getFilterValueAccessor (#2708) - e20d5e82 [BUG] fix gpu filter update trigger attribute update in every render (#2707) - 2d8161e3 [Feat] add color picker to single color selector (#2699) - b258e8a9 [Bug] Fix synced time filter loaded value not saved (#892) (#2706) - e5fe97be [feat] Updated time filter sync style (#2705) - cb705c63 [fix] Prevent bottom time widget crash (#895) (#2703) - ef2ac8f0 [chore] Add runGpuFilterForPlot to export, ts changes to KeplerTableModel (#2702) - ee695327 [fix] remove duplicate "https:" in example (#2711) - a743a276 [fix] add map control buttons back (#2709) - 97df4c94 [Feat] Replaced filter enlarged with view: side | enlarged | minified - part 2 (#2537) - 1c0ef9a9 [feat] add deck.gl onFilteredItemsChange callback to DeckGl overlays (#2691) - d6082fe6 [feat] Time filter syncing (#2690) - b28a263e [feat] Implemented ability to invert time series trend colors (#2692) - ecb5ed41 [feat] Edit color legend value (#2681) - 9c82daae [Enhancement] Add billboard and fadeTrail toggles (#2684) - 69fc6c65 [Feat] Dynamic map lib config (#2678) - 5764b069 [Chore] Remove default props and react-onclickoutside in react functional components (#2679) - 09e19f86 [Fix] Tooltip not working in exported HTML map (#2556) - a24ba5ec [Feat] Support radius legend (#2677) - 1e7415a3 [Enhancement] call layer methods to validate visconfig when switching dataset (#2676) - 25a5b60d [Chore] Adding application config (#2658) - a9135ac6 [Feat] add geojson column mode for point layer (#2666) - b6ac6540 [Feat] Add neighbor column mode to arc layer, support arc from hex (#2665) - 2bc59371 [Feat] support create geojson path from point csv in polygon layer (#2664) - 4c489940 [chore] Split out column mode config into separate component (#2663) - add6192b [feat] Layer Column Mode (#2662) - ef32f711 [fix] Fixed disappearing animation time control (#2625) - c70ae07e [chore] Update @loaders to 4.1.1 (#2638) - ad94d703 [Fix] legend wasn't interactive in shadow DOM (#2630) - 6ffb1dcb [chore] Move create or update filter action (#2636) - 16a3ac26 [fix] Improved map bounds calculation and handled latitude issues (#2632) - 7e3ea28b [fix] prevent second shadow effect (#2631) - f8e7b417 [fix] Upgrade react-router from 3.2.5 to 3.2.6 (#2637) - 56c9c3ed [fix] Updated type data-utils getColumnFormatter method (#2640) - 5d77b7ab [chore] Add className for LayerManager (#2629) - 6f45f1f0 [feat] add autoFocus prop in TypeHead (#2646) - 406b9787 [fix] Reset default values when DropdownList component unmounts (#2648) - cf39ab20 [fix] Map controls tooltips break drag event positioning (#2649) - e7deb4c6 [chore] Exporting missing types for PlaybackControls (#2650) - edd1fd98 [fix] Making sure animated spinner has border width CSS prop set (#2651) - b92b9707 [fix] Disable polygon filter menu for non-polygon features (#2652) - e40d9b6e [feat] Call get after inject to create full cache (#2647) - f15be57f [fix] Fixed effect panel width (#2644) - 04280b33 [fix] Hiding legend scrollbar when in image export (#2643) - 73704019 [chore] Update modal with test id (#2642) - 4f9d261c [fix] data table right margin in header (#2641) - 66b7fbdf [chore] Replaced deprecated "assert" with "with". (#2654) - fb7fd817 [fix] build_and_publish fix (#2645) - 9dbc80f1 [chore] migrate from webpack to esbuild to build demo-app locally (#2616) - 7b512cfa [chore]: Upgrade to yarn 4 (#2610) - a06d03c5 [chore] Bump setuptools from 69.5.1 to 70.0.0 in /bindings/kepler.gl-jupyter (#2587) - f977b4f2 [chore] Bump elliptic from 6.5.6 to 6.5.7 (#2608) - 40005446 [chore] Fix cover script generate cover report (#2609) - affc5b65 [Chore] Upgrade to eslint 8.53.0 and prettier 2.8.8, fix lint and type errors (#2607) - bc90b0e2 [Chore] fix tests (#2602) - e5111dad [Bug] Fixes a number of issues preventing Kepler from building on fresh checkout (#2596) - 9341911e [Bug] Fix custom map style input (#2564) - 89180277 [chore] update deps; update doc; update version (#2568) - ff52dda6 [fix] jupyter widget: don't take over (#1723) - 739aed86 [deps] Bump ip from 1.1.5 to 1.1.9 (#2527) - 44526ebc [Feat] Kepler-Jupyter 0.3.4 with kepler v3 (#2565) - 6667a966 [Docs] Update node.js version in docs to v18 (#2558) - 4932e76a [Feat] use fixed height in geojson layer (#2533) - 400120f3 [Enhancement] call layer methods to validate visconfig when switching dataset (#2532) - 1f9757b8 [feat] Pass in custom transformRequest function (#2534) - b644f203 [Fix] layer popover mapIndex (#2535) - 4b3c950f [fix] Fix sample maps (#2529) - 55fb2426 [chore] Update COC to OpenJS (#2496) - 0959de6a [Feat]Support Zoom to layer in layer panel (#2516) - ac0d3575 [Chore] docs: Add GeoArrow to supported formats (#2503) - 084d807f [Chore] Bump path-parse from 1.0.6 to 1.0.7 (#1569) - 46086e88 [Chore] Bump cached-path-relative from 1.0.2 to 1.1.0 (#1687) - b8e5f865 [Chore] Bump ssri from 6.0.1 to 6.0.2 (#1866) - 48e5839f [Chore] Bump postcss from 7.0.35 to 7.0.39 (#1691) - 03d844c4 [Chore] Bump url-parse from 1.5.1 to 1.5.10 (#1724) - f5d3be2c [Chore] Bump async from 2.6.3 to 2.6.4 (#1810) - 012e9d7e [Chore] Bump shell-quote from 1.7.2 to 1.7.3 (#1847) - 3222fa11 [Chore] Bump minimist from 1.2.3 to 1.2.6 (#2520) - 248a759d [Chore] Bump hosted-git-info from 2.8.8 to 2.8.9 (#1865) - 8659d4c9 [Chore] Bump decode-uri-component from 0.2.0 to 0.2.2 (#2053) - 354fb8d2 [Chore] Bump browserify-sign from 4.2.1 to 4.2.2 (#2421) - 59d81ef8 [Chore] Bump @adobe/css-tools from 4.3.1 to 4.3.2 (#2464) - 776f11bc [Chore] Update docs to MapLibre and react-map-gl v7 (#2497) - 0ad17b50 [Chore] Bump follow-redirects from 1.15.1 to 1.15.4 (#2507) - b3be6c9e [Fix] fix example node-app arrow errors (#2508) - 24acc1a0 [Chore] Update Uber References (#2495) ## [3.0.0] - December 21 2023 - 21a445fd [chore] update readme, fix examples, show effects button (#2492) - de8cb971 [Fix] GeoArrow demo not working (#2491) ## [3.0.0-alpha.2] - December 17 2023 - 5264c5f5 [fix] add thumbnails (#2486) - 34bb812e [chore] Update all licenses to OpenJS recommendation (#2471) - df87781a [Feat] add polygon filter based on mean centers for GeoJsonLayer (#2476) - 50924867 [chore] Add file license header script (#2472) - f33b09f8 [Demo] Add GeoArrow sample dataset (#2483) - 09aee384 [feat] MapLibre basemap (#2461) - 1544e202 [Fix] basemap frozen when incrementally loading GeoArrow (#2474) - b290d871 [chore] pin luma.gl version to 8.5.21, to avoid mismatch (#2463) - 955633df [chore] bump loaders (#2480) - b481611c [fix] fix map import (#2479) - 2024a6d8 [Feat] GeoArrow incremental rendering (1) (#2459) - aa1c7d10 [chore] fix typo in landing page (#2402) - 155a5825 [fix] Fix cloud tile fetching logic (#2456) - 5eb62a9b [fix] Fixed website configuration to correctly import local kepler files (#2454) - 39494866 [fix] update min value for hexagonal pixelate effect (#2453) - 8e7b0ad1 [fix] Effects: fix possible 'undefined' in effect parameters (#2452) - 84053786 [chore] Validate parameters for effects (#2450) - d60ef31d [feat] Introduce Foursquare cloud provider (#2437) - 82d616e4 [fix] ScenegraphLayer has broken lighting and textures (#2443) - 110c2991 [chore] bump deck.gl, luma.gl, loaders.gl (#2442) - f70b20ea [fix] effects: prevent time reset with invalid valese (#2441) - 3ca8df02 [chore] Add effect MapControl test (#2440) - 68bff82a [fix] effect-related UI fixes (#2439) - 82fc69e2 [chore] Refactored cloud provider flow for performance and multi provider support (#2436) - d975ea1e [Feat] support GeoArrow format (#2385) - ee6f0754 [feat] Effect manager - UI improvements (timezone, time slider, time dropdown) (#2433) - b5a6e9ce [chore] Making EffectPanelHeader actions configurable (#2432) - 1ae4cd02 [feat] UI updates for effects (#2428) - a69b0878 [chore] Effects - config refactoring (#2422) - bfec82e5 [chore] Bump to loaders.gl@4.0.0 (#2424) - e6e5a4c9 [Chore] export LayerBlendingSelector (#2419) - a1878138 [chore] SplitMap type changes (#2418) - 5e0ad511 [fix] Legend is rendered outside of widget (#2417) - 473bd801 [fix] feature menu not working in shadow DOM (#2416) - b995c9b5 [fix] Hexbin layer color aggregation incorrect on load (#2415) - 58f0bb71 [Chore] merge other properties in splitMap merger (#2413) - bcb8c4e8 [fix] long name in filter panel header (#2412) - b8fa6ce1 [chore] Remove paths from tsconfig (#2414) - 79002ea6 [feat] Support customized ref in useDimensions (#2409) - 4d723317 [feat] Update Icon Layer to allow passing in svg icons as a prop to bypass remote resource fetching (#2410) - 2ff3738f [fix] Viewports not always locked (#2408) - 975a4762 [fix] Using resolution-corrected mapState for image export (#2407) - 7fae622e [chore] adds additional properties to mock basemaps (#2411) - df1397fd [fix] handle empty properties in GeoJson file (#2381) - c8e2a9f1 [chore] move dev env to Node.js 18 (#2399) - bb559750 [fix] long names in tooltips (#2405) - c9c34c86 [chore] add custom classes to dropdown (#2404) - 22dd6236 [chore] Remove unused deps (#2403) - a36ec68b [fix] effect related fixes (split maps, shadows, timeline) (#2396) - 5e7dd9b5 [fix] Upgrade Mapbox SDK (#2397) - b54c1739 [chore] Upgrade to loaders.gl@4.0 (#2394) - e47ccc07 [fix] Re-enabled plugin section in home page (#2400) - 81a6e1fa [fix] Update layer domain in addLayer (#2393) - bed4b7f8 [chore] Removed abs paths in mock state and layer utils (#2392) - f1e654d8 [fix] place null values at the end when sorting table (#2391) - 4f51abc3 [chore] extra typing for effects (#2390) - 459ae555 [chore] fix lint in cmpEffects (#2389) - 87df1197 [feat] Effects: shadow color picker; use animation & current time (#2387) - dde3a6e3 [chore] Fix ColorMap type (#2388) - 08492a8a [chore] Export effects types/utils and incapsulate dnd logic into new hooks (#2384) - 2500a277 [feat] reorder tooltips (#2378) - fdecb052 [fix] minor effect-related fixes (#2380) - 5c16027d [chore] Drag&Drop context: extra check for the object type (#2379) - a958586d [fix] fix for process is undefined (#2376) - 9eb6b328 [chore] bump examples (#2375) ## [3.0.0-alpha.1] - October 17 2023 - a3521948 [feat] introduction of deck.gl effects (#2372) - c798961d [feat] Introduced dnd-context factory to better override dnd properties (#2364) - 673646ac [fix] fix map dropbox share (#2370) - ec0881d7 [fix] Fix react-map-gl mapbox api props (#2362) - d0a86587 [chore] Avoid confusion in viewstate context (#2361) - 1fcdfde9 [fix] fix image export (#2368) - 89043bd0 [fix] Fixed load remote map dialog exception (#2367) - 7f9f211b [fix] Improved validation of field pairs suggestions for LayerColumnConfig (#2359) - fa1edab9 [fix] add autoCreateTooltips as a prop in AddDataToMapOptions (#2358) - e8220b0e [chore] pass custom classes to ListHeader (#2357) - 5a9fa5bd [fix] Stronger AnimationConfig types (#2356) - a2fd52ca [fix] Fix mapbox/deck syncing issue (#2355) - cfee75a2 [fix] Text labels: can't set prop to false/0 with multiple labels (#2354) - 357f77a8 [fix] text outlines are barely visible after upgrade to deck 8.9 (#2353) - 9d99f0b6 [chore] Upgrade deck.gl to 8.9 (#2352) - 032ad763 [fix] Layer column config: sometimes a suggested field pair will hard crash (#2351) - 56afb092 [fix] remove <img> from field name when show in tooltip (#2350) - a9181f69 [feat] Table widged: pass getRowCell as prop (#2349) - 1f169df1 [fix] Improve data table horizontal overflow and dataset tabs overflow (#2348) - f2559445 [chore] Bump react-virtualized (#2347) - ced842ea [chore] Update public CDN URL (#2346) - 6ef400d2 [Fix] Dispatch click event instead of click() (#2345) - cf9cf21a [fix] Add guard for null legend label (#2344) - b5405f52 [fix] serializeLayer fixes (#2343) - 4383bffd [feat] Text layer: add outline width, outline color, background color (#2342) - a59d8342 [Fix] Resize observer crashes when passed a non-Element target (#2340) - ec35ea97 [feat] introduced jest to replace tape/sinon/enzyme for browser tests; upgrade typescript to 4.5.5 (#2339) - 85fa66f3 [feat] Adding applyLayerConfig action (#2337) - ae26de55 [fix] Fix website kepler.gl example (#2338) - d14e7ff4 [chore] Updated more deps to be compatible with react 18 (#2335) - 70128119 [chore] updated modal and panel title types to react 18 (#2334) - a0e5db72 [chore] Upgrade to react 18 (#2323) - 52c69c54 [feat] Add Deck onAfterRender callback prop support (#2332) - 0b8ae8bc [feat] deck.gl render callbacks (#2330) - 6596187b [fix] Remove fixed height for list item (#2331) - bcd3ff1b [fix] dropdown in color scale does not work (#2324) - 203829aa [fix] dropdown list alignment and spacing (#2325) - ba6259d3 [Fix] polygon context menu is offscreen (#2326) - 6fd7f7a9 [fix] When editing a custom basemap style do not unintentionally drop extra properties (#2327) - b3472a37 [chore] Upgrade deck to 8.8.27, loaders to 3.4.14 (#2320) - d9c164bb [Feat] Support WKB geometry column in CSV (#2312) - cfada4d5 [Chore] delete typeahead mousedown listener, pass onOptionSelected to ListItem (#2319) - 2714c755 [fix] fix horizontal "over scrolling" and misalignment of header row vs. data cells (#2318) - d28674ea [feat] Add onMouseMove callback (#2317) - 66a6364f [feat] add prop to allow turning off custom webkit scrollbar CSS (#2316) - 69ce4d06 [Chore] export action creator (#2315) - e051eb55 [fix] Fix map attribution color (#2314) - 090ef0ba [fix] Conditionally apply escapeXhtml to prevent export image crash (#2313) - 8bb0d469 Introduce new fsq studio section in home page (#2308) - 3e39337e updated cdn from unfolded to fsq (#2307) - 5bae745b [chore] drill disabled prop to layer-type-selector (#2274) - b6a2b804 [feat] Edit a custom base map style redux (#2281) - 74bc22a6 [feat] add complimentary base map style property (#2280) - e056d01a [feat] Remove a custom map style from the base maps side panel (#2279) - e09ed287 [fix] map style selector: provide backup UI content (#2277) - 963df0cf [chore] Update SavedCustomMapStyle accessToken property to be defined as optional (#2278) - 46df6014 [Chore] improved saved layer and interaction type (#2275) - 2dff78ff [fix] Long field names in filter UI obscure the delete icon (#2273) - 32356b46 [chore] pass through className prop to TippyTooltip (#2272) - 52fb6844 [chore] Add nx module tag (#2271) - b255d60e [chore] Add tooltip format (#2269) - 7b45e4f1 [fix] collapsible layer config group ui improvements (#2268) - a1689540 [chore] update browserslist deps (#2267) - 5db83285 [chore] specify filter id in addFilter (#2266) - a8599dcf [feat] Update custom map style updater to support managed map style (#2264) - 84c07360 [feat] Support map overlays (#2260) - 8312d060 [Chore] Upgrade to Node 14 (#2257) - 23763f0b [Chore] Add layer header action component to deps (#2265) - 043db65f [Chore] export single color palette selector (#2262) - d362fc21 [feat] H3 Layer separate layer opacity into unique fill opacity and stroke opacity (#2261) - a1084016 [fix] Use auto width for pinned column in table preview (#2259) - c79e9f90 [Chore] rewrite stack overflow functions (#2258) - 9d57f575 [chore] upgrade gl dependency version (#2256) - 11242f01 [Chore] Added collapsed prop for layer config group (#2255) - 8d79f7d0 [chore] export types and components (#2254) - 4a659e84 [feat] H3 Layer: default text label anchor to middle position (#2252) - acd05e91 [chore] export more components and types (#2251) - f6be2491 [Chore] expose functions and types to fix deep import issues (#2250) - 5fcbcdab [feat] H3 Layer: Add fill transparency and stroke color settings (#2249) - 94cb2a15 [feat] Layer property additions: H3 Layer: Add text labels (#2243) - 9ba6bcdd [Chore] add exports to expose functions and components types (#2242) - 88dd4b36 [fix] exported image has a thin white bar at the bottom (#2241) - f562fbe0 [fix] range slider doesn't work when step < 1 in dataset filter (#2240) - fa3bb9c9 [fix] Overlapping column names in drop down menu (#2239) - 796a9d29 [fix] time ticks are the same when using Minute to set interval (#2238) - b9cd1ec4 [Fix] Map popover z-index less than size panel (#2237) - 8de7ae41 [Fix] mapbox logo has not been styled correctly (#2236) - ed5cb8ad [Chore]: Add onClickControlBtn prop to MapControlButton to pass additional callbacks (#2235) - 97126155 [fix] Remove split map controls from legend in exported image (#2234) - bc1cfc55 [Chore] use unfolded cdn for base map, layer type select and icon layer svg (#2233) - 07f8c9f9 [feat] Add extraReducers arg to keplerGlReducer.initialState (#2232) - a112c0e9 [Fix] Feature Action Panel menu and editing tooltip are cut-off in dual map mode (#2231) - 7fb4cada [fix] Fix types for Typescript 4.8 (#2229) - 41c80993 [Chore] Pass onBruch, filter and datasets through range slide to plot (#2220) - f80853b0 [Chore] add test for vis state schema column save undefined typeerror (#2219) - e1e165e6 [Feat] Added new options parameter to override single action reducer default behavior (#2217) - 1c1345b4 [Bug] preserveLayerOrder when replace data (#2214) - c06ceca7 [chore] Exported layer utils methods and added onDragStart onDragEnd props (#2210) - 7d3c6026 [fix] Fixed bug when switching to dataset layer view (#2209) - 2275b8e6 [chore] Make dataId non-optional in layer config (#2205) - c130a2f5 [Fix] vis state schema column save undefined typeerror (#2211) - d8a5defa [Fix] ColorBlock component TypeError: e.color.slice(...).join is not a function (#2212) - 1380644f [Fix] time widget animation: apply same duration for last time filter (#2218) - 1094e734 [BUG] fix dropdown list fail to update when prop change (#2213) - dafec9b8 [Chore] add exports for scenegraph to layers index (#2215) - 14c6d014 [chore] layer testing support (#2216) - e5686fda [Bug] Fix composer types, schema types (#2208) - 28fbcdbf [feat] Convert layer order from idx to layer IDs (#2203) - e1ccfdff [Enhancement] Allow empty column when layer created from config (#2206) - 30792f47 [Fix] Add selected style for light dropdowns (#2207) - 44aafd15 [Feat] add kepler.gl to info.source in exported kepler.gl.json (#2195) - 95fd2369 [fix] Empty cells with date time data are filled with Invalid date (#2201) - 3b73dc07 [Feat] Add display format setting for table/tooltip (#2199) - 87b79c3b [Feat] add replaceDataInMap action (#2198) - e9896def [Feat] add table config with custom number format (#2192) - e635e4cb [fix] Fixed crash when switching to dataset layer view mode (#2191) - a246574e [Fix] Auto-display legend in split mode + Fix legend and layer panel bugs (#2190) - 2d141ff5 [fix] Layer drag and drop label is barely visible on light map (#2189) - 70cde834 [Fix] Drop the same layer multiple times to one map (#2188) - 2f5da5ec [Chore] Removed unneeded preventDefault (#2177) - b364f3d8 [Fix] intervals rendered incorrectly in time widget (#2183) - c8475737 [feat] Create layer correctly from saved layer config (#2179) - 4c6e99e3 [fix] previous drawn-selected geometries are lost after click Select geometry (#2175) - 79d8c756 [fix] support Polygon and LineString mode in idToPolygonGeo (#2182) - 85897309 [Fix] hide pinned selection outline when layer is hidden (#2181) - d441d5fd [feat] three dots button change (#2180) - 4dd27abe [Feat] Drag and drop interaction for split map (#2172) - 485252ad [fix] Improved split+unsynced mode for better handling (#2176) - 90572720 [fix] handle undefined values in updateViewport (#2178) - afee4800 [fix] hide side panel close button when data preview is open (#2174) - 695bcccd [feat] Improve disabled zoom lock text styling (#2173) - 9fc98e86 [Feat] Unlocked split map viewports (#2170) - 8896dc13 [fix] fix visible layers toggle for split maps mode(#2168) - f0727c97 [fix] type fixes for map popover (#2169) - 04451827 [Feat] enhance mouse selection toolset (#2164) - f640822a [Fix] round the float number to up to 4 decimal places in table (#2163) - a41e0118 [Chore] Add more types for schema (#2162) - 502c1ba3 [fix] remove duplicates from changelog (#2145) - 7d996a68 [fix] Fix onViewStateChange callback (#2154) - 2e57238b [chore] Type and export fixups (#2152) - 245ac53b [chore] update filter types (#2153) - ce4e5c7e [Fix] Datasets and basemap attributions separated by "|" (#2150) - 1fd7bad0 [Fix] Datasets attribution width styling (#2149) - 06f085db [Feat] render dataset attributions in map container (#2148) - 425a6011 [chore] ts fixes (#2147) - abb0d1ce [fix] improve handling of "interpolate" mapbox colors during basemap switching (#2144) - a6a6b270 [fix] fixes to async merger (#2139) - 9d568af3 [Feat] Support async mergers (#2129) - 28c34901 [Chore] support offset in map legend panel (#2130) - 953711ac [feat] Introduced updateDatasetProps to update dataset information (#2133) - 332a94ad [Feat] Add arrow and light theme props to TippyTooltip (#2140) - c79896be [Chore] Export LayerGroupColorPickerFactory from kepler-wide components (#2138) - bf890fa9 [chore] Update react-modal version (#2131) - def2ce12 [fix] Basemap overlay blending updater must pass through entire payload (#2137) - e2848008 [Feat] Add "No Basemap" option with map background color control (#2136) - 5cc6faab [fix] fixes the logic to set map overlay type properly when switching layer type (#2135) - f605167f [Chore] Request map styles on demand (#2134) - fb829922 [Feat] Add list toggle to filters (#2115) - 20fcb662 [Bug] Object and array field types made numeric (#2127) - 31e44350 [Chore] export LayerTypeListItem type (#2122) - 390f5af8 [chore] changes to order layers by datasets (#2114) - 210af2b4 [fix] remove constant scroll around layer config group (#2116) - a438383b [feat] Add minZoom, maxZoom, maxBounds (#2124) - 0e5a4bbc [Bug] data modal and data table scrollbar style (#2123) - cdb69f4a [chore] Export parseGeoJsonRawFeature from utils (#2121) - 3d5db39e [feat] add support for object and array field type (#2120) - 1f20ef71 [Feat] Introduce MapPopoverContent (for tooltip charts) (#2119) - 918aaf98 [Enhancement] Render data table with smarter cell size, prevent scroll back (#2117) - b1d92c85 Bump ua-parser-js from 0.7.25 to 0.7.33 (#2112) - 630e8ede [Enhancement] Improve Feature action panel style (#2099) - 20134f01 [fix] Fixed time filter toggling and display the correct filter (#2098) - 83673fd5 [chore] bump nebula; add picking width for polygons; preserve rectangles; (#2097) - eeb50d6a [fix] Checking if drawing is active when delete an editor feature (#2093) - d1abf3ee [Enhancement] Fix dropdown list disabled color (#2094) - 943ee50a [Bug] fix update layer type reset layer dataId, new layer at the top (#2096) - ac5f490e [fix] fix layer config group collapsible content overflow (#2092) - 608fa0f3 [Feat] refactored AnimationControl to handle both layer and minified filter playback (#2079) - 409db23e [fix] CSS fixes to avoid conflicts with Jupyter styling when embedded without iframe (#2095) - e1b70000 [Enchancement] number formatting improvements (#2109) - cf8d3321 [Enchancement] number formatting improvements (#2106) - c9cc689c [fix] use dataset name as default h3 layer name (#2100) - 7f01ca1c [fix] Trip Layer: issues for path from 2 points (#2101) - 92bae8e0 [fix] Icon Layer - Labels are visible even if layer is hidden (#2102) - 47cc281c fix: Open map control and geocoder for extension (#2103) - 0cd0e379 [fix] Improve render cell size script perf for data table rendering (#2104) - 4e06992b [Fix] Image export change resolution (#2105) - 7d9d54b8 [Feat] Map overlay blending (#2086) - f4329fcc chore: more specific error message for context lost error (#2090) - 14ef4366 [Feat] Disable a layer after an error in Deck (#2072) - d24ea4a5 [fix] dont show hidden layers as options in polygon dropdown menu (#2085) - fd3a7a8b [fix] Prevent the app from crashing on geojson layer hover (#2087) - a66f98f9 fix(filters): fix for broken filter state, load crash (#2069) - 47b1124d fix 3d buildings rendering (#2080) - 8edb5b2e [fix] lock react-vis version to prevent CI fails (#2082) - 9416be4a save and merge editor features in map config (#2071) - 217b89e7 chore: Child support and type exports for FeatureActionPanel (#2070) - f53188b9 show filtered out and hidden layers as options in polygon filter menu (#2068) - b53a6b75 [fix] Move FeatureActionPanel to class component (#2067) - 0f7a4242 fix Cant right click on polygon or rectangle filters to get the menu (#2066) - db549742 bump licence year to 2023 (#2073) - a22e4259 [Feat](Editor) Replace react-map-gl-draw with Nebula.gl (#2054) - 3de77995 [fix] fix import in demo-app carto provider (#2050) - 3e7581b1 [Feat] Add hasStats prop to data table adjust first cell size (#2040) - 15d1426e FIX: Fix margin for style panel icons (#420) (#2041) - a865ce8b [fix] correct provider downloadMap type (#2049) - c53d81fd Bump moment-timezone from 0.5.33 to 0.5.35 (#1966) - efa32f75 [fix] include CenterFlexbox in common components (#2035) - 5f3d185f correct @kepler.gl/styles types file location (#2034) - 76e1a4d0 [fix] Updated dataset item cursor style (#2013) - d0bcaa89 [Fix][perf] String filter freezes browser when loading a large dataset (#2012) - 1214bd9d [fix] Time filter: Add padding if min/max values are the same (#2011) - 36657380 [fix] Fixed hex tile play animation (#2010) - 6c266665 [Fix] dropdown item title (#2009) - 81fcbb41 Bump loader-utils from 1.4.0 to 1.4.2 (#2025) - f1b7e1a8 [Fix] no aggregation options can be selected for date field when groupby (#2008) - b9a04468 [Feat] Replaced filter enlarged with view: side | enlarged | minified (#2007) - 6692585e Handle loading map style gracefully (#2005) - 920659ff Add header cell stats control toggle (#2004) - dbba7daa [Chore] bump and fix examples for v3.0.0.alpha.0 (#2030) ## [3.0.0-alpha.0] - November 5 2022 - 4eb6b24b [Chore] dependencies update + publish process update (#1978) - 72f201c9 kepler.gl-jupyter: Fixed wording in documentation (#1938) - 791bbe21 [Feat] make data table header cell overridable (#1995) - 77ba9509 deck upgrade fix (#1997) - 9b483b22 better regex for mapbox style boundary detection (#1996) - 306da3a2 add onClose for color picker (#1992) - 13bcaa06 update isRGBColor (#1991) - 2845432e Moved animation control button to the right (#1990) - 51a05ffe color picker crashes studio inside iframe (#1989) - 73dba52e [Chore] Extra memoization for components to prevent re-rendering (#1988) - 4e88e839 [Bug] "load from storage" and "Share" modals fix (#1976) - 9029b8ea [Feat] Hide Mapbox attribution when using non-Mapbox tiles (#1975) - d77ffcb4 [Feat] Improve fieldpair detection logic, add altitude (#1968) - b70c35c2 [Chore] refactor dynamic require (#1971) - 8878cff4 [Fix] polygon filter reload (#1970) - ea738594 [Chore]: Typescript 4.4 fixes (#1957) - 49321f87 [Feat] mobile bottom widget styling (#1930) - db39b496 [Chore]: Technical: Isolate components (#1967) - 90248326 [Chore] remove iconComponent from interactionConfig (#1973) - 64542aa2 [Chore] bump to deck 8.6.0 (#1959) - ab5f9f33 [Fix]: Item selector closeOnClickoutside conflict with portable (#1958) - 9b81e49f [Chore]: Technical: Isolate schemas (#1962) - 57dea6a3 [Chore]: Technical: Isolate reducers (#1961) - 28578e76 Import for filters fixed (#1965) - 359e0387 [Bug] Fix getSampleData import (#1964) - c2cb8213 [Chore]: Technical: Isolate table-utils (#1949) - af79e2e5 [Bug] fix layer order not correctly reloaded (#1956) - 47a184c6 [Bug] Fix Range brush maximum update exceeds crashes (#1955) - f9485018 [Enhancement] improve tooltip format label, make it more intuitive (#1954) - a42aae33 [Enhancement] use portable in item-selector (#1953) - 6e2fe3dd update layer selector types; get length for dc; (#1951) - 0630c8b7 fix deck.gl version for src utils (#1950) - d5f0f0cf [Docs] fix broken link (#1952) - 5e20ac68 [Chore]: add class names to map control (#1940) - c7ed4dbd [Chore]: change types for modal (#1939) - f53117fb [Chore]: pin browserlist (#1935) - 8ea93d40 [Chore]: Technical: Isolate actions (#1948) - f828f695 [Feat]: Passing root context to tippy - 34ebb889 [Chore] Fix debounce typing - 3db186e5 [Chore] bump deck to 8.5.7 (#1934) - 99b38d26 [Feat] Implemented new feature flag by passing features flags prop (#1933) - 50eda73f [fix] 3d buildings aren't rendered without layers (#1931) - f21afd8d [Chore]: Technical: Isolate tasks (#1941) - 88039cd3 [Chore]: Technical: Isolate cloud-providers (#1942) - a98a015b [Bug] Fix getSampleData util import (#1947) - 4615c480 [Fix]: Kepler.gl site issue fixed (#1944) - f2459c6c [Chore]: Technical: Isolate utils (#1876) - 88e15d5e [Fix] fix lint (#1932) - 3301a7c5 [Chore]: bump deck to 8.5.4, loaders to 3.0.9 (#1928) - 0889d0d1 [Enhancement] (Map Control) use lazy tippy to improve map legend rendering perf (#1924) - 82baedfb [Chore](Types) move howto button out, add layer conf types, yarn lint (#1926) - c9ef6972 [Chore]: extra export (#1925) - 4fc85960 [Chore]: layer-utils, map-utils refactor (#1923) - 5c38f851 [fix] prevent deck crash due to layer id duplicate - fb3f35ba [Chore]: Use relative import in test-utils (#1921) - eff5f902 Map Control: Use MapControlTooltip with TippyTooltip (#1920) - 5551abd6 [chore] Export IconButton type (#1919) - d358b3a8 fixed findMinFromSorted when list is null (#1918) - 3a3be58d [Chore] Upgrade to deck 8.5.2 (#1917) - 20d39b8c [Enhancement] add bin to filter hiitogram construct (#1673) - 41414ceb [Enhancement] change export video playback button order (#1916) - 38734422 fix color pick type using react-color types (#1915) - f739a499 chore: Updated filter-selector, item-selector, range-slider file typescript definitions (#1902) - 40ac3068 [chore] test valueAccessor in field (#1906) - f82494d6 [Feat] Use custom style token if available instead of the default token (#1913) - 77dc2560 [BUG] Fix crash after layer type change (#1912) - ac59ac7d [Bug] rename dataset should not use spread (#1911) - 486e3239 Prevent "Cannot read property 'layers' of undefined" error (#299) (#1910) - fae2058f [Bug] Fix map saved with empty filter cannt be load; validate empty filter.name when merging (#1909) - 26b5f849 add type to keplerTable (#1905) - bec013e5 improve reducer updater typing, change visstate to be more relaxed (#1908) - 6c51a2ae [feat] Hubble gl integration (#1899) - d31fe649 [Bug] Fix mouse event evt.point evt.lngLat undefined crash (#1903) - 39427d46 [Bug] fix trip layer timestamp check (#1904) - cb76ae0f [Enhancement] render warning in layer panel header (#1901) - 9d171c60 [Enhancement] set initial layer config when set layer type (#1898) - 8d35d9b8 [Chore] Export more type def (#1890) - d90cd188 [Chore] fix types and missing import (#1891) - 28cbb759 update shader modifications for deck 8.4.16 (#1892) - 66de62cf Fix crash: visualChannels: Cannot read property label of undefined (#1886) - 57f77dd2 deck to 8.4.16 (#1889) - 41dbd570 [Enhancement] add disableDataOperation to dataset (#1897) - 1f5e26c8 [Enhancement] pass schema to processKeplerGlDataset (#1885) - 156f898b [Bug] fix comparison tooltip color and position (#1887) - 6c99bb04 [Bug] Disable layer copy when layer is invalid (#1882) - dfd73a53 add supportedDatasetTypes to layer, show dataset selector even if there is only 1 or no option (#1883) - 40a82dfa [Enhancement] disable layer column selection if empty (#1888) - 9c042fe5 Bump follow-redirects from 1.13.3 to 1.15.1 (#1871) - 2a55a1e3 [Enhancement] Improve style of layer header panel (#1881) - ceb23e21 fix for cluster layer z-fighting; fix - render 3d building map style only once (#1874) - a983be75 [Bug] allow tooltip format to apply to aggregation layer hover (#1872) - 723e6050 FILED_TYPE_DISPLAY -> FIELD_TYPE_DISPLAY (#1879) - 7d328315 Chore: Fix lint script and issues (#1862) - 940f9aad [Chore]: Technical: Isolate styles (#1861) - ad7646ac [Chore]: Technical: Isolate localization (#1858) - e798f317 Middleware isolation (#1860) - 6c178d77 [Chore]: Technical: Isolate processors (#1857) - 9e315d25 [Chore]: Technical: Isolate layers (#1856) - c1e20348 [Feat] Upgrade deck.gl@8.4.11 luma.gl@8.4.3 loaders.gl@2.3.12 (#1674) - b668fd28 [Chore]: Technical: Isolate deckgl-layers (#1851) - 9feddc66 Fonts issue fix (#1846) - 9a3da3c0 [Chore]: Technical: Translate deckgl-layers/cluster-layer (#1815) - 10868ecf [Chore]: Technical: constants and types modules isolation (#1840) - fe293e71 [Chore]: Technical: js to ts convertion components root modals (#1801) - 55abc874 [Chore]: Technical: Notification item types added (#1824) - bd8c3327 [Chore]: Technical: Translate map components to typescript (#1803) - 371649c6 Debounce typings added (#1825) - 1034c33d Lodash.memoize typings added (#1827) - 69f8534d [Chore]: Technical: fix linting errors of @types/styled-components plugin (#1834) - 5ee0cd4f [Chore]: Technical: add types for side panel root components (#1822) - 9bee093e validate url of Add data modal (#1837) - b7d8edf4 [Chore]: Technical: add types for layer panel components (#1819) - 7b95c236 hide layer size legend with nullish label (#1836) - ecc743af [Chore]: Technical:layer base config data allow to be null (#1835) - 2b51c7bb [Chore]: Technical: Fixed errors happening in folders/files due to the addition of @types/styled-components: components/common/slider (#1831) - e27cf134 [Chore]: Technical: fix attributes of styled components animation-control (#1829) - 442d1b23 [Chore]: Technical: add types for filters (#1809) - fc8ab5af [Chore]: Technical: Translate deckgl-layers/hexagon-layer (#1818) - 959f1e0b [Chore]: Technical: Translate deckgl-layers/grid-layer (#1816) - cbd26743 add types for styled components in styles (#1830) - f7715892 [Chore]: Technical: Translate components to typescript (#1814) - a5a347ba [Chore]: Technical: Translate components to typescript (#1812) - 9225e005 Throttle typings added (#1826) - f0671f06 [Chore]: Technical: add types for editor component (#1797) - 4e8197d5 [Chore]: Technical: add types for processors (#1798) - 47e4963e [Chore]: Technical: add types for side panel common (#1807) - 0d3c98c8 [Chore]: Technical: add types for filters side panel (#1799) - 8c5e5075 [Chore]: Technical: Translate layers final changes (#1783) - e663bb16 [Chore] fix typo in docs (stule -> style) (#1823) - 2d557df3 Typings for some lodash packages added (#1817) - ca45cef8 [Bug] validate s2 token in s2 geometry layer (#1805) - 7453b951 [Chore]: Technical: components/geocoder translated to typescript (#1808) - 5b918e00 Review fixes (#1813) - ae1173ec [Chore]: Technical: Translate deckgl-layers/layer-utils typesfix (#1791) - 6a7d44bc [Bug] Build fix (#1811) - 8ac5bbc6 [Bug] visual channels cannot read property 'label' of undefined (#1804) - b7c6c8df Translate deckgl-layers/3d-building-layer to .ts (#1794) - a5bcd814 [Chore]: Technical: Translate root components to typescript (#1790) - 258c82da add types for svg-icon-layer (#1796) - 0de32bec [Chore]: Technical: Translate deckgl-layers/line-layer (#1792) - 013b9878 [Chore]: Technical: Translate deckgl-layers/column-layer (#1793) - f64b551f [Chore]: Technical: Translate tasks (#1779) - 65228a85 [Bug]: fix grid hexbin and cluster layer crash (#1795) - 7ada98a0 [Chore]: Technical: Translate examples/custom-map-style (#1780) - 84312384 [Chore]: Technical: Translate deckgl-layers/layer-utils (#1789) - ec3351b6 [Chore]: Technical: Translate cloud-providers (#1778) - 24e3549c Added deckgl-typings from community repo (#1787) - 68abc5b5 [Chore]: Technical: Translate geojson-layer (#1757) - 2d2ba1d7 [Chore]: Technical: Translate hexagon-layer (#1775) - 543045d0 [Chore]: Technical: Translate heatmap-layer (#1773) - cf57260a [Chore]: Technical: Translate trip-layer (#1777) - e80c18b1 [Chore]: Technical: Translate line-layer (#1776) - 9a0ad623 [Chore]: Technical: Translate cluster-layer (#1774) - bc18a6c4 [Chore]: Technical: Translate scenegraph-layer (#1768) - 831504f9 [Chore]: Technical: Translate icon-layer (#1763) - b87bba3a [Chore]: Technical: Translate grid-layer (#1761) - 079da4cc [Chore]: Technical: Translate h3-hexagon-layer (#1762) - cd05dd4b [Chore]: Technical: Translate point-layer (#1764) - 0b3f2c0c [Chore]: Technical: Translate s2-geometry-layer (#1765) - 18342926 [Chore]: Technical: Translate mapboxgl-layer (#1755) - 9b695f85 [Chore]: Technical: Translate aggregation-layer (#1753) - 13ba6bb7 [Chore]: Technical: Translate arc-layer (#1749) - a3ada4e9 UN-14 Technical: Translate components/[root files] to typescript: side-panel (#1712) - fb2190f1 [Bugfix]: Fixed Babel configuration (#1754) - d9e9d8aa [Chore]: Technical: Translate layer factory (#1748) - c0f75341 [Chore]: Technical: Translate components/common final part (#1750) - b06dfb1c [Chore] Typescript 'components/common/slider' (#1740) - 0057a1e4 [Chore]: Technical: Setup for different Visual channels per layer (#1751) - 1193258b UN-14 Technical: Translate components/[root files] to typescript: maps-layout (#1713) - 8a06f711 Moving bottom-widget to ts (#1710) - dd14702e [Chore]: Technical: Translate base-layer (#1746) - 4a687ed4 [Chore]: Technical: Translate index and other files (#1745) - 7a11260d [Chore]: Technical: Translate table utils (#1742) - 7ee74ebe [Chore]: Technical: Translate filter-utils and gpu-filter-utils (#1744) - e5d5d1ba [Chore]: Components/common 1st part (#1729) - d8abca9d [Chore]: Technical: Translate utils (color and data) (#1732) - 55a7b510 [Chore]: Technical: Translate utils (dataset-utils and export-utils) (#1734) - 0505fda4 [Chore]: Technical: Translate redusers (vis-state) (#1727) - 5304d4dc [Chore]: Technical: Translate utils (files without d.ts typings) (#1728) - 30616984 [Chore]: Technical: Translate redusers (UI-state and provider-states) (#1726) - 2ba94858 [Chore]: Technical: Translate actions to typescript part 2 (#1725) - e36cac5b UN-12 Technical: Translate redusers (main files) to typescript (#1722) - fb170ae0 [Feat]: Technical: Translate actions to typescript (#1704) - cb542853 UN-13 Technical: Translate schemas to typescript (#1721) - 8121893c [Feat]: Technical: Translate redusers (map-state and map-style) to typescript (#1717) - fbe626be [Feat]: Technical: Translate redusers (composers and combined-updaters) to typescript (#1711) - d8d7e44f [Feat]: Technical: Translate localization to typescript (#1705) - 614a5003 [Feat]: Technical: Translate templates to typescript (#1702) - 0ef5ccd8 [Feat]: Technical: Translate middleware to typescript (#1703) - 20ec6666 [Feat]: Technical: Translate styles to typescript (#1701) - 11c5b4cc [Feat]: Technical: Translate constants to typescript (#1697) - 283586d0 [Feat]: Technical: Translate connect to typescript (#1700) - 995f3f93 [Feat]: Setup build process for ts source code support (#1688) - b71dd6b4 [Chore] Update license year 2022 (#1689) - 0dfc7e1b [Bug] fix filtered datasets memoization (#1678) - 1e8b3c1a [Enhancement] order layers by dataset (#1675) - f9ae108a [Enhancement] extract layers list to a separate component (#1665) - 52993525 [chore] export types, add script to build types (#1636) - 6fb00fa0 [Bug] fix pin table column overide dataset (#1625) - 22ea7a9d [Bug] do not display geocoder dataset in side panel - a20db971 [Feat] allow custom value in layer slider (#1631) - 5e6b1c45 [Bug] allow empty data rows (#1624) - 612e18a9 [Feat] support pin map legend in map control (#1614) - bfcce3fd [Enhancement]Allow changing MAX_DEFAULT_TOOLTIPS (#1627) - a810ee13 [Chore] added more properties to export layer type (#1613) - 0931a55c [Enhancement] Render map control tooltip with TippyTooltip (#1612) - d0fb78de Add registry-url to avoid 404 issue when publishing keplergl npm package (#1623) - 9936b7b7 [Feat] add color picker to dataset tag (#1608) - 3e3d1631 [Jupyter] Update example versions - 5b442c5d [Jupyter] keplergl==0.3.2 (#1619) - a56206c8 keplergl-jupyter v0.3.1 - e12039c6 [Feat] Add Copy Button to Export Map Dialog (#1609) - 3f876ac1 [Jupyter] bump kepler.gl js version release keplergl-jupyter=0.3.1 (#1617) ## [2.5.5] - September 12 2021 - 392e9a21 [Bug] lock deck.gl to 8.2.0 (#1602) - 6121a343 [Chore] Fix explicit src import (#1596) - 0b71f399 [Bug] fix locale panel (#1603) - 8b42be29 [Bug] Fix integration with CARTO (#1600) - e8ba7a05 [Feat] add setMapControlVisibility action to set mapControl visibility (#1590) - 78274562 [Feat] add supportedFilterTypes to dataset (#1594) - 41b364a6 [Enhancement] s2 updateLayerMeta: push instead of spread (#1593) - 1b5e0235 fix for long processing time of data-utils::unique (#1592) - 91a52b16 [Enhancement] Use layer.visible prop in deck.gl when toggle layer visibility (#1591) - c106ee06 [Chore] Create factory for LayerLegendHeader and LayerLegendContent (#1589) - 878750c4 [Feat] Add MapsLayoutFactory for custom split map layouts (#1588) - d8db8f6f [Chore] Refactored map control and decoupled action components (#1552) - 2f8b19f2 [Feat] update keplergl-jupyter widget for JupyterLab 3, add build for conda-forge (#1572) - 6947c8c8 [Feat] Added Russian localization (#1570) - 9726a400 [Docs] Data container upgrade notes (#1575) - 070b04b2 [Feature] Abstract Data Container (#1555) ## [2.5.4] - July 31 2021 - 62d03ab2 [Examples] update replace-component example (#1557) - 089bb7a9 [Jupyter] Make showing User Guide link optional for jupyter widget (#1559) - 5985d201 [Bug] Fix screenshot with images (#1558) ## [2.5.3] - July 18 2021 - a4a6734a [Docs] fix add data to map docs (#1551) - 8524061e [Enhancement] add displayName to field and show displayName whenever available (#1538) - a0d2a76b [Feat] Save and load highlightColor from layer config (#1550) - a9b2ba07 [Examples] fix panel toggle exmaple, add layer hove info demo (#1549) - 9bcb3415 [feat] Using tippy for map popover (#1539) - 2e6f8b79 [Chore] refactored side-panel from class to functional component (#1536) - 16fab11c [Bug] Geojson layer is not updated when dataset updated (#1533) - 29cf0829 [Enhancement] add toggleLayerAnimationControl action (#1537) - 01e93966 [Enhancement] add disableClose to map control (#1529) - c6e5b8a6 [Feat] use appName in exported image html json map and csv data (#1528) - 72354560 [Bug] Fix geojson layer duplicated index (#1530) - 1ed0fd6d [Bug] fix histogram in range (#1531) - 305edfcd [Docs] Update Map Styles Link (#1512) - 1890133d [Chore] Update peer dependencies for styled-components (#1527) ## [2.5.2] - June 28 2021 - 1c7521b1 [Bug] Fix center map accuracy (#1502) - b662892a [Bug] trim string value before passing to type analyzer (#1503) - d35ad489 [Website] Add ecosystem Section (#1491) - 1935c70a [Chore] Bump ini from 1.3.5 to 1.3.8 (#1385) - b7d333b4 [Chore] Bump y18n from 3.2.1 to 3.2.2 (#1449) - aeb8b45a [Chore] Bump ssri from 6.0.1 to 6.0.2 (#1460) - 86577263 [Chore] Bump ua-parser-js from 0.7.22 to 0.7.28 (#1471) - f0fda0e4 [Chore] Bump handlebars from 4.7.6 to 4.7.7 (#1472) - 027aecfa [Chore] Bump url-parse from 1.4.7 to 1.5.1 (#1473) - 6d5981a0 [Chore] Bump hosted-git-info from 2.8.8 to 2.8.9 (#1474) - 54690fc8 [Chore] Bump browserslist from 4.14.7 to 4.16.6 (#1494) - 846ec388 [Chore] Bump dns-packet from 1.3.1 to 1.3.4 (#1497) - c6def591 [Chore] Bump ws from 6.2.1 to 6.2.2 (#1500) - 614750f4 [Feat] Make keplergl-jupyter work with JupyterLab 3 (#1501) - b4fcf7be [Feature]: add copy geometry to feature action panel (#1495) - d786d0f3 [Bug] fix arc layer configurator render crash (#1490) - b24cc57a [Enhancement] Support elevation in Icon layer (#1483) - d51f3050 [Enhancement] Support elevation in Line layer (#1481) - a09cd589 [Enhancement] Elevation zoom factor toggle (#1478) - 8a6d2635 [Enhancement] add Japanese translation (#1469) - 910eb5e7 [Chore] Move 'uber-licence' to devDep (#1450) - 0b03f3a6 [Docs] fix typos on playback readme (#1482) - 14c35fc0 [Doc] Add example using none mapbox base map (#1440) ## [2.5.1] - Mar 30 2021 - 16703c0b [CHORE] add utils.js to package.json - a15109b3 [Feat] add timezone and timeFormat prop for time display in animation control and time - widget (#1411) - 13c6171e Bump elliptic from 6.5.3 to 6.5.4 (#1435) - cdcc0eea [Enhancement] make panel tab a factory (#172) (#1412) - 173811a3 [bug]: Fixed range slider null selection bug (#1413) - df3fee5c [Bug]: Updated babel dependencies (#1410) - 119c8933 [Bug] fix update dataId not update layer data (#1414) - b97b58a9 [Enhancement] Choose the default field to be integer if no reals are present (#1409) - 072876df [bug] upgrade colorbrewer to 1.5.0 (#1439) - d4698bb8 [Chore] add initial version of ts-smoosh (#1437) - 6b39c43f [Chore] reformat changelog ## [2.5.0] - Mar 3 2021 - 58af5b65 [bug] Set colorbrewer version to 1.4.0 #1416 (#1428) - a03250a4 CHORE: export processKeplerglDataset (#1422) - ddaa8bf7 FIX: incorrect type strin -> string (#1421) - 9e5bfdca [Feat] Duplicate layer and add layer from config (#1401) - 29bfa406 [Bug] Interval animation doesn't stop when speed is set to 0 (#1397) - 9476c293 feat: Converted dataset object to kepler table class (#1239) - 498305cc [Bug] save to map provider (#1399) - 6728b30f [Bug] Clamping slider values outside range (#1395) - f0e51743 [Enhancement] add changedFilters to datasets when filter data is called (#1396) - 8d68001d [Bug] Add style prop to kepler-gl container (#1398) - d295c762 [Enhancement]: Save filter speed to schema (#1394) - fb801d70 [Chore] Update license year (#1393) - fa6deff0 (0116-babel-deps) [Enhancement] Show an error notification for errors in deck (#1373) - 5d4b4547 [Bug] Bug fixes (#1388) - 35bf90a9 [Bug]: FIxed issue with map popover object being null (#1384) - fc2fb04d [CHORE] Typescript fixes (#1383) - d6e28377 [Bug] Fix 12350 format in tooltip (#1327) - 2ea82deb [Feat] fixed augumented numeric formats with ~ (#1369) - e88b4f19 [Bug] Fix speed button input on timeline (#1376) - 7aeca210 [Enhancement] bump loaders.gl to 2.3.3 (#1366) - eff0a15d [Enhancement] Choose layer color by default (point layer) (#1367) - 823405ab [Bug] fix arc layer configurator (#1375) - a11c63c3 [Enhancement] avoid calling mapPopover setstate infinitely (#1346) - ae234e72 [Bug] Prevent crash in react-map-gl when zoom cannot be calculated (#1365) - be61b70b [Enhancement] automatically re-project GeoDataFrame to EPSG:4326 (#1350) - 2aad97f3 [Bug] Added better check for bins in bottom widget (#1361) - ef8bdbaf [Chore]: Upgraded to node 12, migrate from TravisCi to Github actions (#1326) - c7726680 [Enhancement]: Added uiStateUpdater showDatasetTable in order to intercept showDatasetTable action (#1363) - f33c76b4 [FEAT] Add rename dataset reducer (#1362) - 027985af [Bug] Fixed color picker closure when selecting first custom palette value) (#1347) - 7f3be27f [Enhancement] check bounds before calling fitbounds (#1348) - f046ac1b [Enhancement] better arc layer column config layout (#1345) - 2ea853b1 [Bug] Fixed bug with fixed radius after remove size field in pointlayer (#1343) - 32d80182 [Bug] fixed geocoder crash and added ability to pass coordinates (#1342) - c2ba7f04 [Enhancement] Fix negative button border (#1344) - 55f74dcd [Enhancement] added check for oldLayerData (#1357) - 223af2b6 [Enhanment] extract valdiate layer and validate filter function (#1349) - 06ea669d [Enhancement] pass dataset to renderLayer function (#1341) - 524fc591 [Feat] Visual channel refactor generalize get accessor and updateTrigger (#1338) - c1d4943b [Enhancement] Adjust input light styles (#1340) - 5642ca8b [Chore] SidePanel panels are now passed through only through props or default ones (#1339) - f802f393 [Chore] Decouple table from dataset Id (#1337) - c7f50fdc [Chore] Export KeyEvent and downloadFile utils (#1335) - 335f82a3 [Enhancement] Added the ability to pass supported data types when exporting (#1336) - 239051f0 keplergl==0.2.2 - 55053230 keplergl-jupyter@0.2.2 - 1bac01ab update example app versions ## [2.4.0] - Nov 30 2020 - 259022ee [Upgrade] Support React 17 (#1323) - 6c48c422 [Enhancement] Export more utils (#1317) - 81bc6b37 [Enhancement] make provider injector function to get injectedApp back (#1318) - 5e2b8988 [Enhancement] update spanish and catalan translations (#1319) - 334f0b76 [Enhancement] extend template for light theme (#1305) - abbe032e [Chore] Dependency upgrade (#1314) - f0a966cd [Bug] check category (#1316) - 7f5282b4 [Feat] add incremental timeline animation (#1315) - c1a251de [Enhancement] make visConfigSwitch a factory (#1313) - 37cf1457 [Enhancement] Enable polygon filter on h3 layer (#1306) - bdbea264 [Feat] allow changing dataset in layer config (#1312) - 28f5204d [Bug] fix radio button style (#1310) - c990a477 [Enhancement] Upgrade d3-scale (#1311) - ea69da8a [Enhancement] fix item-selector dropdown value overflow nad tooltip pin color (#1309) - d94de814 [Chores] Exported default formatters (#1308) - 307cd3d4 [Bug] avoid duplicated h3 layer detection (#93) (#1307) - 8bc11a37 [Enhancement] Add inputBGdActive for light theme (#1301) - 3f0f7a6c [Bug] Check for valid layer pinned prop before performing comparison (#1297) - 42acc1cf [Bug] Fixed bug when reversing color schema (#1296) - 9949888f Table of content -> Table of contents - 9a13ce68 [Chores] Fixed security vulnerabilities and added new factories (#1294) - 3276cef3 Merge branch 'upwards_update' - 70687cab [Docs] Add usage example in doc for _repr_html_ method (#1282) - 32b519af [Chores] Updated yarn.lock and file license - aecbdc55 [Bug] Fixed typo in renderedSize cell-size (#90) - 9f8b84e1 upgrade react-palm to 3.3.7 (#89) - 7410cfa5 [Enhancement] Disable layer select option when no data is loaded (#88) - 7a69c865 data table style tiny adjustment - 21d09475 add fontFamily to input style - 96c37618 export renderSize from cell-size.js - f356fe43 [Enhancement] Added modalStyle prop Portaled to override default values (#83) - b6fd3916 [Enhancement] UI input style improvement (#1284) - 92a2bb65 [Enhancement] Add preserveLayerOrder to layer merger (#1288) - 480ead69 [Enhancement] Add a CTA button type (#80) (#1286) - d882ba09 [Enhancement] Layer config: Add column validators (#1287) - e8fc1c5e Export typeahead (#1289) - ad5ec020 [Enhancement] render last added filter first (#1285) - 42569ec3 [Enhancement] Export StyledDropdownSelect (#1283) - 1b748471 [Jupyter] add _repr_html_ method (#1202) - fbbd4c45 [Enhancement] export more utils and schema (#1280) - e5a6f9e8 [Enhancement] Improve schema and utils typing (#1279) - ad651700 [Enhancement] Create factory for histogram and line chart, add brush handle to range brush (#1274) - 6681d2e2 [Enhancement] pass light theme through to item selector (#1276) - 0184cf1e [Enhancement] add setTimeAnimation action (#70) (#1263) - 908a5e2b [Chores] Bump http-proxy from 1.18.0 to 1.18.1 (#1268) - 7acb3d66 [Auto] Bump elliptic from 6.5.2 to 6.5.3 (#1210) - 490cafb0 [Jupyter] Updated Docs for Jupyter (#1267) - a7865c8d [Enhancement] Added factory for the icons of the map control (#1273) - 77b4e018 [Enhancement] switch style tweak (#1262) - 9dbb9e73 [Bug] fix dropdown list item lineheight (#1261) - d677c18f [Feat] Move more css to theme and create more factories (#1248) - 2ebd1368 [Enhancement] Typescript improvement (#1254) - 959f1a33 [Bug] fix export image size not set (#1257) - 678aacc2 [Upgrade] upgrade react-palm to 3.3.6 (#1255) - f54d6afb [Enhancement] Map control style improve (#1253) - 3e40a48c [Website] disable banner (#1252) - 3b81b59f [Enhancement] Add new theme variables (#1245) - b09aa2e1 [Bug] Fix load data modal crash (#1244) - 42670d89 [Bug] Fix provider preview image during map save and share flow (#1243) - efd3676d [Bug] Fix component exports - 0b91f4d1 [Enhancement] Improve react intl support (#1237) - 7ff0c459 [Enhancement] Save merger and schema to visState (#1235) - ## [2.3.2] - Aug 16 2020 - 10468e19 [Enhancement] Export more utils (#1233) - 242dcf99 [Enhancement] Upgrade dependencies and fix vulnerabilities (#1236) - 3d72066f [Bug] Fixed image export bug due to mapbox attrition logo (#1229) - f4951102 [Feat] add readonly prop to KeplerGl component (#1220) - 04991352 [Enhancement] Added props to panel-header iconComponent (#64) (#1219) - b91785ec [Feat] Auto detect h3 layer from h3 field data (#53) (#1218) ## [2.3.1] - Aug 4 2020 - [Bug] fix tooltip config, add boolean formatter (#1216) - [Enhancement] Geocoder interaction improvements (#1214) - [Enhancement] add options.autoCreateLayers to addDataToMap (#1215) - [Bug] Hide BottomWidgetContainer nothing to render (#1213) - [Enhancement] Cleanup unused babel plugins (#1211) - [Bug] fix file handler row parsing to support single geojson feature (#1212) - [Enhancement] Add KeplerGl.onDeckInitialized callback (#1193) - [Enhancement] Render geocode in readOnly mode (#1177) - [Feat] pass initialUiState to prop (#1187) - [Docs] Fix `replace-component` Readme (#1207) - [Jupyter] Convert to gdf to a dataframe instead of a copy (#1201) - New image export approach (#1199) - Add prop to disable file extension checking (#1195) - Load: extract extensions from loader objects (#1194) - Add `visState.loaders` to let app inject a list of loaders.gl loaders. (#1192) - Enable modal prop types (#1190) - Enable modal types (#1189) - Add types to top-level KeplerGl component (#1188) - Add typescript types for upload modal and components (#1185) - Add types for composer helpers (#1186) - [Feat] add zoom to coordinate tooltip (#1179) - [Enhancement] export more layer configurator components (#1176) - [Bug/Enhancement] Pass PanelHeader props to the onClick handler of action items (#1181) - [Bug] Fix import of the user guide link (#1182) - [examples] update example version to 2.3.0 ## [2.3.0] - July 6 2020 - [Enhancement] Improve animation sliders (#1157) - [Enhancement] speed control step to 0.001 (#1155) - [website] remove unused env, relax on package engines requirement (#1173) - [Feat] Pinned tooltip + Compare (#1132) - [Feat] Integration with loaders.gl 2.2 (#1156) - [Feat] Bump deck.gl and luma.gl to v8.2 (#1166) - [Chore] Bump websocket-extensions from 0.1.3 to 0.1.4 (#1138) - [Website] Add 2020 Survey (#1154) - [Bug] Tooltip formatting (#1129) - [Jupyter] Default centerMap to False so that zoom map state configurations are not (#1142) - [Enhancement] close modal when press escape key (#1134) - [Enhancement] Export time widget factories (#1133) - [Enhancement] filter invalid value when calculate trip layer domain (#1131) - [Feat] enable tooltip formatting in interaction config (#1102) - [Feat] Add type definition (#1116) - [RFC] table class RFC (#1109) - [Docs] adding missing bracket (#1094) - add side-panel inner class (#1113) - [Bug] add hexagon layer translation (#1114) - [Jupyter] fix gitignore add missing files (#1118) - [Jupyter] Publish keplergl jupyter 0.2.0 (#1110) - [Enhancement] fix attribution color, add kepler smaller font (#1092) ## [2.2.0] - May 10 2020 - [Enhancement] Added Editor and FeatureActionPanel factories (#1093) - [Feat] Geocoder Search (#1068) - [Doc] Updated release docs with gh-release instructions (#1059) - [Bug] Aggregation layer fix out-of-domain coloring for valid strings (#1070) - [Feat] Add Spanish and Catalan translation (#1087) - [Doc] Update playback documentation (#1072) - [Bug] Fix link to umd folder - [Doc] Refactored doc files for better structure (#1084) - [Enhancement] Add Portuguese translations (#1063) - [Bug] Fixed download file for microsoft edge (#1074) - [Bug] Fix broken redirects in jupyter user guide (#1077) - [Docs] update upgrade guide (#1044) ## [2.1.2] - April 3 2020 - [Enhancement] Add support for localization and Finnish translations (#994) - [Bug] Fixes for case sensitive fields in CARTO storage (#1057) - [Chore] Removed engine requirements (#1049) - [Chore] Improve the secondary button color for base theme (#1048) - [Chore] Updated examples to v2.1.1 (#1043) ## [2.1.1] - March 31 2020 - [Chore] Updated example to 2.1.0 (#1041) ## [2.1.0] - March 30 2020 - [Enhancement] Remove table cell char limit and increased cell header height (#1038) - [Docs] CHANGELOG.md markup update (#1029) - [Enhancement] add classes to button for easier style override (#1035) - [Bugfix] Remove incorrect outlier calculation for better map centering (#1026) - [Bug] fix scatterplot stroke width in pixels (#1018) - [Test] e2e test (#940) - [Enhancement] Move layer panel visible toggle to end (#1017) - [Bug] export formatCsv (#1022) - [Enhancement] Refactor load file tasks to better handle multiple file types (#986) - [Bug] Fixed carto-provider example: importing the correct kepler.gl processor path (#1016) - [Feat] Add satellite basemap (#1007) - [Feat] Improved data table rendering (#1010) - [Chore] Upgrade to Node 10 (#1009) - [Feat] S2 layer (#800) - [BUG] Fix provider test (#1008) - [Enhancement] better handling provider tile update (#1000) - [Enhancement] Loading and error feedback for shared maps loaded from URL #1002 (#1003) - [Enhancement] adjust button color in light theme (#1004) - [Bug] Reset selected provider status after loading and before sharing (#999) - [Feat] Add more light themes (#1001) - [Bug] fix bug map loaded with custom map style not save correctly (#993) - [Bug] Fix username set to null after loading map from URL #995 (#996) - [Enhancement] Decrease filter step size for small domains (#958) ## [2.0.1] - March 9 2020 - [Bug] Add cloud-providers.js to package.json (#991) - [Feat] CARTO provider for cloud storage (#985) - [Bugfix] Fix typo on variable name (#987) - [Enhancement] pass appWebsite to logo component (#984) - [Chore] Removed testing from publish action (#980) - [Bug] remove console.log in filter.utils - [Feat] Load cloud map with provider (#947) ## [2.0.0] - Feb 25 2020 - [Enhancement] Independently customize Geojson layer fill stroke opacity (#966) - [Bug] Fix text collision on toggle input (#973) - [Chore] upgrade prettier to 1.19 to better handle single line function compositions (#971) - [Style] run prettier and lint on tests (#968) - [Bug] Select dataset filter bug (#965) - [Bug] fix hexagon layer hover crash (#964) - [Style] run prettier (#963) - [Feat] Allow adding custom side panel tabs - [Chore] Fix prettier update config (#767) - [Bug] Fixed json map export and added tests (#956) - [Bug] Resolve deck luma version conflict (#955) - [Feat] upgrade to deck.gl@8 (#889) - [Feat] UI for save map to backend storage (#906) - [Bug] Fixed geo-filter extra layer issue (#936) - [Bug] Fix low projection accuracy in higher zoom level (#946) - [Bug] fix hexagon layer hover cause app crash (#933) - [Bug] fix heatmap crash when there is no filter (#934) - [Bug] should add redux devtools in demo app by default (#932) - [Feat] Gpu data filter (#878) - [Feat] Global export of image export constants (#923) - [Bug] Fix mix int/float column interpreted as sting (#927) - [Chore] Correctly update the copy changes to actions.js (#914) - [Enhancement] Hide data modal in export map (#920) - [Chore] remove action to publish to github package repo (#919) - [Feat] Geo-Operations: create and apply polygon filters (#595) - [Bug] Fix h3 layer projection error at edge of world map (#918) ## [1.1.13] - Jan 17 2020 - [Enhancement] added coordinate to tooltip export configuration (#876) - [Bug] mapState not applied in exported map html (#913) - [Chore] Update grammar, cleanup whitespace, fix broken link (#912) - [Docs] add Upgrade-guide - [Docs] Remove hyperlink with "Advanced Usage" (#903) - [Docs] add initial cloud provider api (#868) - [Enhancement] treat type-analyzer type: NUMBER as strings (#891) - [Bug] remove argument.length check in injector (#899) - [Enhancement] add disabled to layer-configurator group (#897) - [Bug] Fix a bug in file-drop.js that causes error in server side render (#896) - [Bug] Ensure all colors returned from get3DBuildingColor are RGB arrays (#871) - [Chore] License 2020 (#883) - [Bug] Correctly copy over field.filterProps when merging multiple filters (#884) - [Bug] Fix newDateEntries typo and formatting fixes (#870) - [Bug] Fix multiple geojson layer found when properties contain object and array (#872) - [Bug] fix demo-app resolve react-redux (#866) ## [1.1.12] - Dec 14 2019 - [Bug] Remove sqrt, log from default color aggregation for count (#856) - [Bug] fix cluster point count, cluster layer failed to render on export image (#855) - [Style] Remove extra semicolon (#850) - [Docs] Update api-reference overview links - [Bug] Don't merge domain when update filter name (#841) - [Enhancement] React 17: replace componentWillReceiveProps and componentWillMount (#745) - [Bug] Fixed delete dataset action (#835) - [Chore] Github action to publish npm package (#825) - [Enhancement] Demo App Cloud provider refactor (#831) ## [1.1.11] - Nov 13 2019 - [Bug] Correctly save filterProps to field while merging filter from config (#829) - [Docs] fixing api reference broken link (#812) - [Bug] fix empty geometry causing trip layer detection to fail (#826) - [Docs] update a-add-data-to-the-map.md with embed geometries in CSV ## [1.1.10] - Oct 30 2019 - [Docs] Add instructions for image and weblink in tooltip (#797) - [Enhancement] Add Bug Report User Guides to demo app panel header (#787) - [Docs] Fix typos in add-data-workflow-user-guide (#807) - [Feat] add stdev and variance aggregators to aggregation layer (#809) - [Feat] Multiple datasets per filter (#773) - [Bug] Fixed loading urls with query params (#780) - [Jupyter] Publish keplergl jupyter 0.1.2 (#784) ## [1.1.9] - Oct 11 2019 - [Enhancement] improve Geojson processing performance and error handling (#781) - [Enhancement] add file format instruction to file upload (#770) - [Bug] Filter invalid H3 IDs (#775) - [Bug] fix readonly in addDataToMap (#783) - [Enhancement] Expose LayerHoverInfoFactory and CoordinateInfoFactory (#769) - [Bug] Fixed dropbox upload in Firefox. Passing explicit file name to upload function - [Enhancement] Demo app sample info (#758) - [Enhancement] Generate custom map style icon from style url (#762) - [Jupyter][bug] fix lab widget window responsiveness, add version to header (#771) - [Jupyter][docs] add installation instruction to jupyter widget user guide - [Docs] Update add data to map docs - [Jupyter] Publish keplergl-jupyter for Jupyter labs (#764) - [Jupyter][bug] fix flashing html export when open in window (#756) - [Enhancement] Add logo and GA to exported html (#757) - [Docs] update Trip Layer md ## [1.1.8] - Sep 30 2019 - [Bug] Fix saving animation speed (#752) - [Feat] Add Trip Layer - Final (#699) - [Feat] add custom color editor (#601) - [Chore] add coverall (#748) - [Docs] mapboxApiUrl usage examples (#737) - [Feat] Support Policy page (#724) ## [1.1.7] - Sep 11 2019 - [Enhancement] Create more factories from SourceDataCatalog, add onClickTitle (#720) - [Enhancement] Express example (#704) - [Bug] check new layers based on new dataset id (#721) - [Feat] Add Log and Sqrt scale (#670) - [Chore] Add a script to automatically edit kepler.gl version (#714) ## [1.1.6] - Sep 5 2019 - [Bug] Upgrade to deck 7.1.11 (#715) ## [1.1.5] - Sep 4 2019 - [Bug] Unlock luma.gl version (#713) - [Bug] fix heatmap getBounds (#711) - [Feat] HTML Export: provide read only mode (#709) ## [1.1.4] - Sep 3 2019 - [Bug] Lock deck.gl to version 7.1.5 (#688) - [Enhancement] add keepExistingConfig option to addDataToMap (#619) - [Bug] Fixed issue with geojson fields (#683) - [Enhancement] Switch from callback refs to createRef (#622) - [Bug] Fix uglify error compiling dom-to-image in prod (#682) - [Enhancement] pass set useDevicePixels to deck.gl to plot container (#663) - [jupyter] Upgrade to kepler.gl v1.1.3 (#660) - [Chore] use xvfb as a service in travis-ci (#669) ## [1.1.3] - Aug 5 2019 - [Enhancement] Use preserved state to apply keplerGlInit. when mint=false (#649) - [Enhancement] Replace react-data-grid with react-virtualized (#629) ## [1.1.2] - Aug 1 2019 - [Bug] Fix issue in Layer.registerVisConfig preventing custom boolean properties - [Enhancement] Simplify map layer visible logic in splitMaps and deck, mapbox overlay renders (#642) - Netlify badge (#641) - [Enhancement] Add 3d building color editor (#633) - [Enhancement] Update mapbox-gl css version (#634) - [Bug] fix SolidPolygonLayer import causing 3d building layer crash (#625) - [Bug] Don't show null for labels if there is no data (#626) - [Bug] add deckGlProps to pass preserveDrawingBuffer to plot container (#624) - [Enhancement] DemoApp: explicitly pass window.fetch to Dropbox to suppress warning (#621) - [Enhancement] Use theme in histogram plot color (#607) - [Enhancement] Bump supercluster version (#590) - [Feat] Add mapboxApiUrl to `KeplerGL` (#554) - [Docs] Update link to the GitHub repo (#589) - Fixed python3 compatiability and wrong variable in string format (#587) - [Bug] Remove isMouseOver state from MapPopover (#577) - [Docs] fix: Correct Custom Theme Example Link (#578) - [Bug][jupyter] Replacing print statement with () to make it Python 3 compatible (#582) - Update build command: remove yarn since netlify runs yarn by default (#585) - [Jupyter] cleanup examples (#574) - [Feat] Publish keplergl jupyter 0.1.0a5 (#572) - [Chore] Add issue template for kepler.gl Jupyter - [Bug] Solve issue #547 avoid crash application (#564) ## [1.1.1] - Jun 24 2019 - [Bug] Fix radius rendering when value = 0 (#551) - [Docs] Updating Layer User Guides (#373) - [Feat] Display mouse coordinate (#550) - [Docs] Replace CLA with DCO (162a9f7) - [Style] fix README typo (c1fafbf) - [Docs] Add jupyter widget user guide link o README (17d3ec8) - [Chore] Add jupyter widget issue templates (a40c1fe) - [Feat] Bump deck.gl to v7.1.5 (#568) - [Feat] Add ScenegraphLayer (#540) - [Feat] Add kepler.gl-jupyter python package (#543) ## [1.1.0] - Jun 15 2019 - Upgrade to deck.gl 7.1 (#559) - [Docs] update user documentation with newer layers and features (#552) - Upgrade to deck.gl 7 and luma.gl 7 (#544) - [Bug] Display color legend for stroke color scale (#546) - [Enhancement] Image export error handling (#538) - [Bug] Fix typo on layer-configurator.js (#549) ## [1.0.0] - May 23 2019 - [Enhancement] Detecting mapbox token validity (#513) - [Enhancement] Netlify webpack optimization (#525) - [Feat] More control over point label (#515) - [Enhancement] Applied changes for enable netlify deployment (#516) - [Enhancement] Refactored modal dialog to be more responsive (#501) - [Bug] fix side panel unnecessary rerender (#512) - [Feat] Upgrade deck.gl to 6.4 (#456) - [BUG] Fixed layer list sorting dnd effect (#509) - [Feat] add onViewStateChange callback to KeplerGl (#506) - [Enhancement] More granular speed control (#500) - [Docs] update all uber links to keplergl org (#502) ## [1.0.0-2] - May 2 2019 - [Bug] Fix missing default map styles after loading custom map style from saved json (#490) - [Bug] Fix `fix radius` in point layer unclickable (#491) - [Bug] fix image export doesnt get called when map rendered (#494) - [Enhancement] Merge export config and map into one interaction (#488) ## [1.0.0-1] - Apr 23 2019 - [Bug] Fix point layer brushing and highlight (#487) - [Feat] Add a light theme to KeplerGl Prop (#489) - [Bug] Fix browse for file upload (#486) - [Enhancement] Cleanup load map style tasks (#472) - [Enhancement] load svg icons from aws, add bundle analyzer, reduce bundle size -1mb (#479) - [Bug] upgrade kepler.gl version in examples - [Docs] Fixed link to addDataToMap (#459) - [Enhancement] expand bottom widget to full length if in read only mode(#465) ## [1.0.0-0] - Apr 2 2019 - [Enhancement] Replace react anything sortable with React-Sortable-Hoc - [Enhancement] Replaced DI object storage with an actual Map - [Feat] Able to overwrite custom theme - [Chore] Upgraded waypoint library to support react16 - [Chore] Dropbox UI enhancements - [Bug] Fix points disappear while panning across 180th meridian - [Chore] Tweak save and export documentation - [Chore] Add oss header and middleware.js - [Chore] Added file header for user-guide.js - [Feat] Single map page export - [Chore] Upgraded libraries: react, styled-components ##### BREAKING CHANGES - React 15 is no longer supported - Style components v4+ is now required because is now a peer dependency ## [0.2.4] - Mar 13 2019 - [Enhancement] Slider: use clientX to calculate delta to support windows IE and Tableau kepler.gl (#431) - [Bug] Range slider: correctly setting ranch brush selection when mount (#433) - [Feat] Add getMapboxRef prop (#372) - [Enhancement] Automatically loading custom dependencies when inject custom component factor (#430) - [Bug] Range brush width change should not trigger onBrush callback (#432) - [Bug] fix processor export, support previous (#428) ## [0.2.3] - Mar 3 2019 - [Docs] Export processors and Add Docs (#421) - [Docs] Add docs for actions and updaters (#368) - [Bug] Fix image export component failed to render (#418) ## [0.2.2] - Feb 26 2019 - (HEAD -> master, origin/master, origin/HEAD) [Bug] Fixed web doc link (#369) - [Bug]: Fixed example dependencies (#362) - [Bug] Fix missing 3d building layer in image export (#361) - [Bug] fix 3d building layer missing mapbox token, fix image export (#360) - [Docs] Add API Docs (#279) - [Feature] UMD module in unpkg (#349) - Disabled banner (#352) ## [0.2.1] - Feb 6 2019 - (HEAD -> master, origin/master) [Feature] Collapsible layer group (#350) - [Enhancement] Added default feature flags to disable dropbox (#338) - [Bug]: fix alias and module resolve in webpack.config.local (#348) - [Enhancement] Upgraded Webpack, Babel and Eslint (#342) - [Feature] Notification systems with new UI panel and helpers to generate messages (#333) - GitHub browser history (#321) - [Bug] Fix Maximum call stack size exceeded when double click (#323) - [Docs] Export identity actions individually and add JSDocs (#290) - [Docs] Edit PR guidance in contribution guidelines (#320) - [Docs] Add Contribution Guidelines (#261) - (overide-style) [Enhancement] Upgrade type-analyzer to pass 0/1 as integer (#317) - [Typo] Misspellings in comments (#314) - [Housekeeping] Update Copyright header to 2019, Happy New Year (#316) - Feat: Implemented Dropbox integration (#312) ## [0.2.1-beta.1] - Dec 17 2018 - [Feature] Added a Tiled 3D Building Deck.gl Layer (#270) - [Enhancement] Fossa Integration (#309) - [Enhancement] Change BottomWidget to pure functional component (#249) - [Docs]: updated docs for better readability(alignments) (#255) - [Enhancement] export processKeplerglJSON from processors (#299) - [website] BugFix: missing tracking payload (#311) - [Enhancement] Hexbin Layer: smaller radius step and dynamic hover (#310) - [Bug] remove unpm from yarn.lock (#303) - [Enhancement] use mapbox style url for default (published) uber map styles (#292) - [Feature] Load data and kepler.gl file using URLs (#260) ## [0.2.1-beta.0] - Nov 16 2018 - [Bug] Fixing global color issue #130 for the heat map (#277) - [Enhancement] More exports (#284) ## [0.2.0] - Nov 16 2018 - [Enhancement] Export side panel component factories (#282) - [Feature] Upgrade to deck.gl v6 (#272) - [Refactor] Small update of readability (#250) - [website] Click logo should go to kepler.gl website (#251) - [Enhancement] Add contribution guidelines on contributing.md file (#108) - [Enhancement] Scan through all text labels to get the entire character set (#245) ## [0.1.6] - Oct 3 2018 - [Enhancement] save and load text label config (#242) ## [0.1.5] - Oct 2 2018 - [Enhancement] Fix z-fighting issue between text label and scatter plot (#234) - [Bug] Sort color steps (#241) - [Bug] fix a bug where field is valid is always false (#240) ## [0.1.4] - Sep 15 2018 - [Enhancement] Null check for missing arc column (#235) ## [0.1.3] - Sep 10 2018 - [Enhancement] Add H3 layer (#217) (#198) - [Enhancement] Add text label in Point layer (#166) ## [0.1.2] - Aug 24 2018 - [Bug] Fix server render error, remove react-ace (#206) ## [0.1.1] - Aug 24 2018 - [Enhancement] Bump react-palm@1.1.2 (#215) ## [0.1.0] - Aug 21 2018 - Upgrade to Deck.gl v5.3.4 (#153) ## [0.0.28] - Aug 8 2018 - Fix cluster layer label rendering ## [0.0.27] - Aug 3 2018 - Fix unable to fetch external stylesheets when taking the screenshot (#187) - [Bug] Avoid repeatedly calling HIDE_EXPORT_DROPDOWN (#180) ## [0.0.26] - Aug 3 2018 - [Bug] fix mapStyles loaded as an empty object after load map from config (#169) ## [0.0.25] - Jul 10 2018 - [Bug] Create ellipsis when dataset name is a long name (#109) - [Enhancement] Save custom reducer initialState, add custom-reducer example (#159) ## [0.0.24] - Jul 5 2018 - [Bug] fix image export failing (#155) - [Enhancement] Add default map styles to mapStyle reducer initial state (#147) ## [0.0.23] - Jun 28 2018 - [Enhancement] Consider all mew layers when calculating the map bounds (#142) - [Bug] Fix icon layer instructions (#131) - [Website] add banner to demo app for survey (#117) ## [0.0.22] - Jun 10 2018 - [Bug] new filter shouldn't be enlarged if there is already an enlarged filter (#93) - [Enhancement] Enable ordinal aggregation in aggregation layer (hex, grid, cluster) (#29) ## [0.0.21][0.0.20] - Jun 4 2018 - [Bug] TimeRangeSlider should not cache props.onChange (#100) ================================================ FILE: FILE-HEADER ================================================ SPDX-License-Identifier: MIT Copyright contributors to the kepler.gl project ================================================ FILE: LICENSE ================================================ Copyright contributors to the kepler.gl project Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================ <p align="right"> <a href="https://npmjs.org/package/kepler.gl"> <img src="https://img.shields.io/npm/v/kepler.gl.svg?style=flat" alt="version" /> </a> <a href="https://travis-ci.com/keplergl/kepler.gl"> <img src="https://api.travis-ci.com/keplergl/kepler.gl.svg?branch=master" alt="build" /> </a> <a href="https://github.com/keplergl/kepler.gl"> <img src="https://img.shields.io/github/stars/keplergl/kepler.gl.svg?style=flat" alt="stars" /> </a> <a href='https://opensource.org/licenses/MIT'> <img src='https://img.shields.io/badge/License-MIT-blue.svg' alt='MIT License' /> </a> <a href='https://app.fossa.com/projects/custom%2B4458%2Fgithub.com%2Fkeplergl%2Fkepler.gl?ref=badge_shield'> <img src='https://app.fossa.com/api/projects/custom%2B4458%2Fgithub.com%2Fkeplergl%2Fkepler.gl.svg?type=shield' alt='Fossa' /> </a> <a href="https://app.netlify.com/sites/keplergl/deploys"> <img src="https://api.netlify.com/api/v1/badges/0c9b895c-acd0-43fd-8af7-fe960181b686/deploy-status" alt="Netlify Status"/> </a> <a href='https://coveralls.io/github/keplergl/kepler.gl?branch=master'> <img src='https://coveralls.io/repos/github/keplergl/kepler.gl/badge.svg?branch=master' alt='Coverage Status' /> </a> </p> <h1 align="center"> kepler.gl | <a href="https://kepler.gl">Website</a> | <a href="https://kepler.gl/#/demo">Demo App</a> | <a href="https://docs.kepler.gl/">Docs</a> </h1> <h3></h3> [<img width="120" alt="Kepler.gl" src="https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/website/icons/kepler.gl-logo.png">](http://kepler.gl) [<img width="600" alt="Kepler.gl Demo" src="./screenshots/screenshot.png">](https://kepler.gl/demo) [Kepler.gl][web] is a data-agnostic, high-performance web-based application for visual exploration of large-scale geolocation data sets. Built on top of [MapLibre GL](https://maplibre.org/) and [deck.gl](https://deck.gl/), kepler.gl can render millions of points representing thousands of trips and perform spatial aggregations on the fly. Kepler.gl is also a React component that uses [Redux](https://redux.js.org/) to manage its state and data flow. It can be embedded into other React-Redux applications and is highly customizable. For information on how to embed kepler.gl in your app take a look at the [documentation](https://docs.kepler.gl/). ## Links - [Website][web] - [Demo][demo-app] - [Examples][examples] - [Get Started][get-started] - [App User Guide][user-guide] - [Jupyter Widget User Guide][user-guide-jupyter] - [Documentation][docs] - [Stack Overflow][stack] - [Contribution Guidelines][contributing] - [Api Reference][api-reference] - [Roadmap][roadmap] ## Env Use Node 18.18.2 or above, older node versions have not been supported/ tested. For best results, use [nvm](https://github.com/creationix/nvm) `nvm install`. ## Install kepler.gl modules Kepler.gl consists of different modules. Each module can be added to the project like this: ```sh npm install --save @kepler.gl/components // or yarn add @kepler.gl/components ``` kepler.gl is built upon [mapbox][mapbox]. You will need a [Mapbox Access Token][mapbox-token] to use it. If you don't use a module bundler, it's also fine. Kepler.gl npm package includes precompiled production UMD builds in the [umd folder](https://unpkg.com/kepler.gl/umd). You can add the script tag to your html file as it follows (latest version of Kepler.gl): ```html <script src="https://unpkg.com/kepler.gl/umd/keplergl.min.js" /> ``` or if you would like, you can load a specific version: ```html <script src="https://unpkg.com/kepler.gl@3.0.0/umd/keplergl.min.js" /> ``` ## Develop kepler.gl Take a look at the [development guide][developers] to develop kepler.gl locally. ## Basic Usage Here are the basic steps to import kepler.gl into your app. You also take a look at the examples folder. Each example in the folder can be installed and run locally. ### 1. Mount reducer Kepler.gl uses Redux to manage its internal state, along with [react-palm][react-palm] middleware to handle side effects. You need to add `taskMiddleware` of `react-palm` to your store too. We are actively working on a solution where `react-palm` will not be required, however it is still a very lightweight side effects management tool that is easier to test than react-thunk. ```js import {createStore, combineReducers, applyMiddleware, compose} from 'redux'; import keplerGlReducer from '@kepler.gl/reducers'; import {enhanceReduxMiddleware} from '@kepler.gl/middleware'; const initialState = {}; const reducers = combineReducers({ // <-- mount kepler.gl reducer in your app keplerGl: keplerGlReducer, // Your other reducers here app: appReducer }); // using createStore export default createStore( reducer, initialState, applyMiddleware( enhanceReduxMiddleware([ /* Add other middlewares here */ ]) ) ); ``` Or if use enhancer: ```js // using enhancers const initialState = {}; const middlewares = enhanceReduxMiddleware([ // Add other middlewares here ]); const enhancers = [applyMiddleware(...middlewares)]; export default createStore(reducer, initialState, compose(...enhancers)); ``` If you mount kepler.gl reducer in another address instead of `keplerGl`, or the kepler.gl reducer is not mounted at root of your state, you will need to specify the path to it when you mount the component with the `getState` prop. Read more about [Reducers][reducers]. ### 2. Mount Component ```js import KeplerGl from '@kepler.gl/components'; const Map = props => ( <KeplerGl id="foo" width={width} mapboxApiAccessToken={token} height={height} /> ); ``` ### Props | Prop Name | Type | Default Value | Description | | ----------------------------- | ------------- | ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | String | `map` | The unique identifier for the KeplerGl instance. Required when multiple KeplerGl instances exist. It maps to the state in the reducer (e.g. component with id `foo` can be found in`state.keplerGl.foo`). | | `mapboxApiAccessToken` | String | `undefined` | API token for Mapbox, used for rendering base maps. Create a free token at [Mapbox](https://www.mapbox.com). | | `getState` | Function | `state => state.keplerGl` | Function that specifies the path to the root KeplerGl state in the reducer. | | `width` | Number | `800` | The width of the KeplerGl UI in pixels. | | `height` | Number | `800` | The height of the KeplerGl UI in pixels. | | `appName` | String | `Kepler.Gl` | The app name displayed in the side panel header. | | `version` | String | `v1.0` | The version displayed in the side panel header. | | `onSaveMap` | Function | `undefined` | A function called when the "Save Map URL" in side panel header is clicked. | | `onViewStateChange` | Function | `undefined` | Triggered when the map viewport is updated. Receives `viewState` parameter with updated values like longitude, latitude, zoom, etc. | | `getMapboxRef(mapbox, index)` | Function | `undefined` | Called when `KeplerGl` adds or removes a MapContainer with an inner Mapbox map. `mapbox` is a `MapRef` when added, or `null` when removed. `index` is `0` for the first map and `1` for the second map in a split view. | | `actions` | Object | `{}` | Custom action creators to override the default KeplerGl action creators. Only use custom action when you want to modify action payload. | | `mint` | Boolean | `true` | Determines whether to load a fresh empty state when mounted. When `false`, the state persists across remounts. Useful for modal use cases. | | `theme` | Object/String | `null` | Set to `"dark"`, `"light"`, or `"base"`, or pass a theme object to customize KeplerGl’s style. | | `mapboxApiUrl` | String | `https://api.mapbox.com` | The Mapbox API URL if you are using a custom Mapbox tile server. | | `mapStylesReplaceDefault` | Boolean | `false` | Set to `true` to replace default map styles with custom ones. (see `mapStyles` prop) | | `mapStyles` | Array | `[]` | An array of [custom map styles](#example-custom-map-style) for the map style selection panel. Styles replace the default ones if `mapStylesReplaceDefault` is `true`. | | `initialUiState` | Object | `undefined` | The initial UI state applied to the `uiState` reducer. | | `localeMessages` | Object | `undefined` | Used to modify or add new translations. Read more about [Localization][localization]. | #### Example Custom Map Style You can supply additional map styles to be displayed in [map style selection panel](https://github.com/keplergl/kepler.gl/blob/master/docs/user-guides/f-map-styles/1-base-map-styles.md). By default, additional map styles will be added to default map styles. If you pass `mapStylesReplaceDefault: true`, they will replace the default ones. kepler.gl will attempt to group layers of your style based on its `id` naming convention and use it to allow toggle visibility of [base map layers](https://github.com/keplergl/kepler.gl/blob/master/docs/user-guides/f-map-styles/2-map-layers.md). Supply your own `layerGroups` to override default for more accurate layer grouping. Each `mapStyles` should has the following properties: - `id` (String, required) unique string that should **not** be one of these reserved `dark` `light` `muted`. `muted_night` - `label` (String, required) name to be displayed in map style selection panel - `url` (String, required) mapbox style url or a url pointing to the map style json object written in [Mapbox GL Style Spec](https://docs.mapbox.com/mapbox-gl-js/style-spec/). - `icon` (String, optional) image icon of the style, it can be a url, or an [image data url](https://flaviocopes.com/data-urls/#how-does-a-data-url-look) - `layerGroups` (Array, optional) ```js const mapStyles = [ { id: 'my_dark_map', label: 'Dark Streets 9', url: 'mapbox://styles/mapbox/dark-v9', icon: `${apiHost}/styles/v1/mapbox/dark-v9/static/-122.3391,37.7922,9.19,0,0/400x300?access_token=${accessToken}&logo=false&attribution=false`, layerGroups: [ { slug: 'label', filter: ({id}) => id.match(/(?=(label|place-|poi-))/), defaultVisibility: true }, { slug: '3d building', filter: () => false, defaultVisibility: false } ] } ]; ``` ### 3. Dispatch custom actions to `keplerGl` reducer. One advantage of using the reducer over React component state to handle keplerGl state is the flexibility to customize its behavior. If you only have one `KeplerGl` instance in your app or never intend to dispatch actions to KeplerGl from outside the component itself, you don’t need to worry about forwarding dispatch and can move on to the next section. But life is full of customizations, and we want to make yours as enjoyable as possible. There are multiple ways to dispatch actions to a specific `KeplerGl` instance. - In the root reducer, with reducer updaters. Each action is mapped to a reducer updater in kepler.gl. You can import the reducer updater corresponding to a specific action, and call it with the previous state and action payload to get the updated state. e.g. `updateVisDataUpdater` is the updater for `ActionTypes.UPDATE_VIS_DATA` (take a look at each reducer `reducers/vis-state.js` for action to updater mapping). Here is an example how you can listen to an app action `QUERY_SUCCESS` and call `updateVisDataUpdater` to load data into Kepler.Gl. ```js import {keplerGlReducer, visStateUpdaters} from '@kepler.gl/reducers'; // Root Reducer const reducers = combineReducers({ keplerGl: keplerGlReducer, app: appReducer }); const composedReducer = (state, action) => { switch (action.type) { case 'QUERY_SUCCESS': return { ...state, keplerGl: { ...state.keplerGl, // 'map' is the id of the keplerGl instance map: { ...state.keplerGl.map, visState: visStateUpdaters.updateVisDataUpdater(state.keplerGl.map.visState, { datasets: action.payload }) } } }; } return reducers(state, action); }; export default composedReducer; ``` Read more about [using updaters to modify kepler.gl state][using-updaters] - Using redux `connect` You can add a dispatch function to your component that dispatches actions to a specific `keplerGl` component, using connect. ```js // component import KeplerGl from '@kepler.gl/components'; // action and forward dispatcher import {toggleFullScreen, forwardTo} from '@kepler.gl/actions'; import {connect} from 'react-redux'; const MapContainer = props => ( <div> <button onClick={() => props.keplerGlDispatch(toggleFullScreen())}/> <KeplerGl id="foo" /> </div> ) const mapStateToProps = state => state const mapDispatchToProps = (dispatch, props) => ({ dispatch, keplerGlDispatch: forwardTo(‘foo’, dispatch) }); export default connect( mapStateToProps, mapDispatchToProps )(MapContainer); ``` - Wrap action payload You can also simply wrap an action into a forward action with the `wrapTo` helper ```js // component import KeplerGl from '@kepler.gl/components'; // action and forward dispatcher import {toggleFullScreen, wrapTo} from '@kepler.gl/actions'; // create a function to wrapper action payload to 'foo' const wrapToMap = wrapTo('foo'); const MapContainer = ({dispatch}) => ( <div> <button onClick={() => dispatch(wrapToMap(toggleFullScreen())} /> <KeplerGl id="foo" /> </div> ); ``` Read more about [forward dispatching actions][forward-actions] ### 4. Customize style. Kepler.gl implements css styling using [Styled-Components](https://www.styled-components.com/). By using said framework Kepler.gl offers the ability to customize its style/theme using the following approaches: - Passing a Theme prop - Styled-Components ThemeProvider The available properties to customize are listed here [theme](https://github.com/keplergl/kepler.gl/blob/master/src/styles/base.js). [Custom theme example](https://github.com/keplergl/kepler.gl/tree/master/examples/custom-theme). #### Passing a Theme prop. You can customize Kepler.gl theme by passing a **theme** props to Kepler.gl react component as it follows: ```javascript const white = '#ffffff'; const customTheme = { sidePanelBg: white, titleTextColor: '#000000', sidePanelHeaderBg: '#f7f7F7', subtextColorActive: '#2473bd' }; return ( <KeplerGl mapboxApiAccessToken={MAPBOX_TOKEN} id="map" width={800} height={800} theme={customTheme} /> ); ``` As you can see the customTheme object defines certain properties which will override Kepler.gl default style rules. #### Styled-Components Theme Provider. In order to customize Kepler.gl theme using [ThemeProvider](https://www.styled-components.com/docs/api#themeprovider) you can simply wrap Kepler.gl using ThemeProvider as it follows: ```javascript import {ThemeProvider} from 'styled-components'; const white = '#ffffff'; const customTheme = { sidePanelBg: white, titleTextColor: '#000000', sidePanelHeaderBg: '#f7f7F7', subtextColorActive: '#2473bd' }; return ( <ThemeProvider theme={customTheme}> <KeplerGl mapboxApiAccessToken={MAPBOX_TOKEN} id="map" width={800} height={800} /> </ThemeProvider> ); ``` ### 5. Render Custom UI components. Everyone wants the flexibility to render custom kepler.gl components. Kepler.gl has a dependency injection system that allow you to inject components to KeplerGl replacing existing ones. All you need to do is to create a component factory for the one you want to replace, import the original component factory and call `injectComponents` at the root component of your app where `KeplerGl` is mounted. Take a look at `examples/demo-app/src/app.js` and see how it renders a custom side panel header in kepler.gl ```javascript import {injectComponents, PanelHeaderFactory} from '@kepler.gl/components'; // define custom header const CustomHeader = () => <div>My kepler.gl app</div>; const myCustomHeaderFactory = () => CustomHeader; // Inject custom header into Kepler.gl, replacing default const KeplerGl = injectComponents([[PanelHeaderFactory, myCustomHeaderFactory]]); // render KeplerGl, it will render your custom header instead of the default const MapContainer = () => ( <div> <KeplerGl id="foo" /> </div> ); ``` Using `withState` helper to add reducer state and actions to customized component as additional props. ```js import {withState, injectComponents, PanelHeaderFactory} from '@kepler.gl/components'; import {visStateLens} from '@kepler.gl/reducers'; // custom action wrap to mounted instance const addTodo = text => wrapTo('map', { type: 'ADD_TODO', text }); // define custom header const CustomHeader = ({visState, addTodo}) => ( <div onClick={() => addTodo('hello')}>{`${ Object.keys(visState.datasets).length } dataset loaded`}</div> ); // now CustomHeader will receive `visState` and `addTodo` as additional props. const myCustomHeaderFactory = () => withState( // keplerGl state lenses [visStateLens], // customMapStateToProps headerStateToProps, // actions {addTodo} )(CustomHeader); ``` Read more about [replacing UI component][replace-ui-component] ### 6. How to add data to map To interact with a kepler.gl instance and add new data to it, you can dispatch the **`addDataToMap`** action from anywhere inside your app. It adds a dataset or multiple datasets to a kepler.gl instance and updates the full configuration (mapState, mapStyle, visState). #### Parameters - `data` **[Object][40]** **\*required** - `datasets` **([Array][41]<[Object][40]> | [Object][40])** **\*required** datasets can be a dataset or an array of datasets Each dataset object needs to have `info` and `data` property. - `datasets.info` **[Object][40]** \-info of a dataset - `datasets.info.id` **[string][42]** id of this dataset. If config is defined, `id` should matches the `dataId` in config. - `datasets.info.label` **[string][42]** A display name of this dataset - `datasets.data` **[Object][40]** **\*required** The data object, in a tabular format with 2 properties `fields` and `rows` - `datasets.data.fields` **[Array][41]<[Object][40]>** **\*required** Array of fields, - `datasets.data.fields.name` **[string][42]** **\*required** Name of the field, - `datasets.data.rows` **[Array][41]<[Array][41]>** **\*required** Array of rows, in a tabular format with `fields` and `rows` - `options` **[Object][40]** - `options.centerMap` **[boolean][43]** `default: true` if `centerMap` is set to `true` kepler.gl will place the map view within the data points boundaries - `options.readOnly` **[boolean][43]** `default: false` if `readOnly` is set to `true` the left setting panel will be hidden - `options.keepExistingConfig` **[boolean][43]** `default: false` whether to keep exiting map config, including layers, filters and splitMaps. - `config` **[Object][40]** this object will contain the full kepler.gl instance configuration {mapState, mapStyle, visState} Kepler.gl provides an easy API `KeplerGlSchema.getConfigToSave` to generate a json blob of the current kepler instance configuration. #### Examples ```javascript // app.js import {addDataToMap} from '@kepler.gl/actions'; const sampleTripData = { fields: [ {name: 'tpep_pickup_datetime', format: 'YYYY-M-D H:m:s', type: 'timestamp'}, {name: 'pickup_longitude', format: '', type: 'real'}, {name: 'pickup_latitude', format: '', type: 'real'} ], rows: [ ['2015-01-15 19:05:39 +00:00', -73.99389648, 40.75011063], ['2015-01-15 19:05:39 +00:00', -73.97642517, 40.73981094], ['2015-01-15 19:05:40 +00:00', -73.96870422, 40.75424576] ] }; const sampleConfig = { visState: { filters: [ { id: 'me', dataId: 'test_trip_data', name: 'tpep_pickup_datetime', type: 'timeRange', view: 'enlarged' } ] } }; this.props.dispatch( addDataToMap({ datasets: { info: { label: 'Sample Taxi Trips in New York City', id: 'test_trip_data' }, data: sampleTripData }, option: { centerMap: true, readOnly: false }, config: sampleConfig }) ); ``` Read more about [addDataToMap](./docs/api-reference/actions/actions.md#adddatatomap) and [Saving and loading maps with schema manager][saving-loading-w-schema]. [contributing]: contributing/README.md [demo-app]: http://kepler.gl/#/demo [github]: https://github.com/keplergl/kepler.gl [github-pr]: https://help.github.com/articles/creating-a-pull-request/ [mapbox]: https://www.mapbox.com [mapbox-token]: https://www.mapbox.com/help/define-access-token/ [developers]: contributing/DEVELOPERS.md [examples]: https://github.com/keplergl/kepler.gl/tree/master/examples [react-palm]: https://github.com/btford/react-palm [roadmap]: https://github.com/keplergl/kepler.gl/wiki/Kepler.gl-2019-Roadmap [stack]: https://stackoverflow.com/questions/tagged/kepler.gl [web]: http://www.kepler.gl/ [docs]: https://docs.kepler.gl/ [user-guide]: docs/user-guides/README.md [user-guide-jupyter]: docs/keplergl-jupyter/README.md [api-reference]: docs/api-reference/README.md [get-started]: ./docs/api-reference/get-started.md [reducers]: docs/api-reference/reducers/README.md [components]: docs/api-reference/components/README.md [custom-theme]: docs/api-reference/custom-theme/README.md [reducers]: docs/api-reference/reducers/README.md [actions-updaters]: docs/api-reference/actions/README.md [processors]: docs/api-reference/processors/README.md [schemas]: docs/api-reference/schemas/README.md [using-updaters]: ./docs/api-reference/advanced-usages/using-updaters.md [custom-map-styles]: ./docs/api-reference/advanced-usages/custom-map-styles.md [forward-actions]: ./docs/api-reference/advanced-usages/forward-actions.md [replace-ui-component]: ./docs/api-reference/advanced-usages/replace-ui-component.md [saving-loading-w-schema]: ./docs/api-reference/advanced-usages/saving-loading-w-schema.md [localization]: ./docs/api-reference/localization/README.md [40]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object [41]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array [42]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String [43]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean [44]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number [45]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function ================================================ FILE: SUMMARY.md ================================================ # Table of contents * [Welcome](README.md) * [What's new?](docs/release-notes.md) * [Docs](docs/README.md) * [User guides](docs/user-guides/README.md) * [Get Started](docs/user-guides/j-get-started.md) * [Kepler.gl workflow](docs/user-guides/b-kepler-gl-workflow/README.md) * [Add data to layers](docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/README.md) * [Adding Data Layers](docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/a-adding-data-layers.md) * [Create a Layer](docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/b-create-a-layer.md) * [Blend and Rearrange Layers](docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/d-blend-and-rearrange-layers.md) * [Hide, Edit and Delete Layers](docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/c-hide-edit-and-delete-layers.md) * [Add Data to the Map](docs/user-guides/b-kepler-gl-workflow/a-add-data-to-the-map.md) * [Layers](docs/user-guides/c-types-of-layers/README.md) * [Point](docs/user-guides/c-types-of-layers/a-point.md) * [S2 Layer](docs/user-guides/c-types-of-layers/l-s2.md) * [Icon](docs/user-guides/c-types-of-layers/g-icon.md) * [Line](docs/user-guides/c-types-of-layers/c-line.md) * [Cluster](docs/user-guides/c-types-of-layers/f-cluster.md) * [Polygon](docs/user-guides/c-types-of-layers/e-polygon.md) * [Hexbin](docs/user-guides/c-types-of-layers/h-hexbin.md) * [Grid](docs/user-guides/c-types-of-layers/d-grid.md) * [H3](docs/user-guides/c-types-of-layers/j-h3.md) * [Heatmap](docs/user-guides/c-types-of-layers/i-heatmap.md) * [Arc](docs/user-guides/c-types-of-layers/b-arc.md) * [Trip layer](docs/user-guides/c-types-of-layers/k-trip.md) * [Vector Tile Layer](docs/user-guides/c-types-of-layers/m-vector-tile-layer.md) * [Raster Tile layer](docs/user-guides/c-types-of-layers/n-raster-tile-layer.md) * [WMS layer](docs/user-guides/c-types-of-layers/o-wms-layer.md) * [Layer Attributes](docs/user-guides/d-layer-attributes.md) * [Color Palettes](docs/user-guides/l-color-attributes.md) * [Filters](docs/user-guides/e-filters.md) * [Map Styles](docs/user-guides/f-map-styles.md) * [Interactions](docs/user-guides/g-interactions.md) * [Map Settings](docs/user-guides/m-map-settings.md) * [Time Playback](docs/user-guides/h-playback.md) * [Save and Export](docs/user-guides/k-save-and-export.md) * [FAQ](docs/user-guides/i-faq.md) * [API Reference](docs/api-reference/README.md) * [ecosystem](docs/api-reference/ecosystem.md) * [Get Started](docs/api-reference/get-started.md) * [Advanced usages](docs/api-reference/advanced-usages/README.md) * [Saving and Loading Maps with Schema Manager](docs/api-reference/advanced-usages/saving-loading-w-schema.md) * [Replace UI Component with Component Dependency Injection](docs/api-reference/advanced-usages/replace-ui-component.md) * [Forward Dispatch Actions](docs/api-reference/advanced-usages/forward-actions.md) * [Reducer Plugin](docs/api-reference/advanced-usages/reducer-plugin.md) * [Using Updaters](docs/api-reference/advanced-usages/using-updaters.md) * [Custom reducer initial state](docs/api-reference/advanced-usages/custom-initial-state.md) * [custom-mapbox-host](docs/api-reference/advanced-usages/custom-mapbox-host.md) * [Components](docs/api-reference/components/README.md) * [Reducers](docs/api-reference/reducers/README.md) * [reducers](docs/api-reference/reducers/reducers.md) * [map-style](docs/api-reference/reducers/map-style.md) * [map-state](docs/api-reference/reducers/map-state.md) * [combine](docs/api-reference/reducers/combine.md) * [overview](docs/api-reference/reducers/README.md) * [ui-state](docs/api-reference/reducers/ui-state.md) * [vis-state](docs/api-reference/reducers/vis-state.md) * [Processors](docs/api-reference/processors/README.md) * [All processors](docs/api-reference/processors/processors.md) * [Schemas](docs/api-reference/schemas/README.md) * [Actions](docs/api-reference/actions/README.md) * [All actions](docs/api-reference/actions/actions.md) * [Cloud providers](docs/api-reference/cloud-providers/README.md) * [Provider](docs/api-reference/cloud-providers/cloud-provider.md) * [Custom theme](docs/api-reference/custom-theme/README.md) * [Localization](docs/api-reference/localization/README.md) * [Jupyter Notebook](docs/keplergl-jupyter/README.md) * [Examples](examples/README.md) * [Node/Express](examples/node-app/README.md) * [Demo App](examples/demo-app/README.md) * [Open modal](examples/replace-component/README.md) * [Open modal](examples/open-modal/README.md) * [UMD client](examples/umd-client/README.md) * [Customize kepler.gl Theme](examples/custom-theme/README.md) * [Customize kepler.gl Reducer](examples/custom-reducer/README.md) * [Contributing](contributing/README.md) * [Developing Kepler.gl](contributing/DEVELOPERS.md) * [Contributor Covenant Code of Conduct](contributing/CODE_OF_CONDUCT.md) * [Change Log](CHANGELOG.md) * [Upgrade Guide](UPGRADE-GUIDE.md) ================================================ FILE: TODO.md ================================================ # TODO ### Bugs - Time playback slider sticking out after resize - Heatmap frozen ### Refactor Tasks - Refactor Layer configurator component so it works better with the layer API [shan] ### Feature - Re-implement file upload to use event streaming (no react-palm) [shan] - Input map style from mapbox style url [shan] - Map style API to add custom map style [shan] - Field type editor [shan] - Export map [javid, shan] ### Remaining UI Update - Free form color picker [shan] - Vis config by channel UI (add value switch) [shan] ### Design Request - More map styles [erik] ================================================ FILE: UPGRADE-GUIDE.md ================================================ # Upgrade Guide ## Table of Content - [v2.3 to v2.4](#upgrade-from-v23-to-v24) - [v2.2 to v2.3](#upgrade-from-v22-to-v23) - [v2.1 to v2.2](#upgrade-from-v21-to-v22) - [v2.0 to v2.1](#upgrade-from-v20-to-v21) - [v1.1.12 to v2.0](#upgrade-from-v1112-to-v20) - [v1.1.11 to v1.1.12](#upgrade-from-v1111-to-v1112) ## Upgrade from v2.4 to v3.0 - TBD ## Upgrade from v2.3 to v2.4 ### Breaking Changes - Supports React 17 - Dependency Upgrades, major ones: `d3-xxx@^2`, `redux@4.0.5`, `type-analyzer@0.3.0`, `react-palm@~3.3.7` ### New Features - Support incremental timeline animation - Allow changing dataset in layer config - Enable polygon filter for h3 layer - Show last added filter at the top ### Bug Fixes - Avoid duplicated h3 layer detection - Fixed bug when reversing color palette not update ## Upgrade from v2.2 to v2.3 - Upgrade dependencies to `deck.gl@8.2.0`, `loaders.gl@2.2.5` and `luma.gl@8.2.0`. This should only affects projects with the above libraries in its dependencies. ## Upgrade from v2.1 to v2.2 ### New Features - **Interaction** - Added Geocoder in the interactin panel ### Improvements - **Localization** - Added Spanish, Catalan, and Portuguese translations ### Bug Fixes - **Layer** - Aggregation layer fix out-of-domain coloring for valid strings - **Export** - Fixed download file for microsoft edge ### API Update - **Components** - Exported map drawing editor factories ## Upgrade from v2.0 to v2.1 ### Breaking Changes - Upgrade Node v10 for dev development, node requirement is now at `>=10.15.0` ### New Features - **Provider** - Add cloud provider API - **Layer** - Added S2 Layer - **Basemap** - Added satellite to base map styles options - **Theme** - Added base UI theme to theme option as `base` ### Improvements - **UI** - Improved data table and layer panel header - **Filter** - Better handle filter steps for small domains ### Bug Fixes - **Layer** - Remove incorrect outlier for better map center detection - **Layer** - Fix point layer stroke width - **Basemap** - Fix bug custom map style not saved correctly - **Export** - Fix bug exported html blank --- ## Upgrade from v1.1.12 to v2.0 ### Breaking Changes - Upgrade deck.gl to `8.0.15`, this only affects projects with deck.gl in its dependencies. Because only one version of deck.gl can be loaded. ### New Features - **GPU Filter** - Improved time and numeric filter performance by moving calculation to GPU - **Geo Fitler** - Added drawing polygon function, allow filter layer based on polygon ### Improvements - **Layer** - Improved GeoJson and H3 layer geometry rendering - **UI** - Support custom side panel tabs. [example](https://github.com/keplergl/kepler.gl/tree/master/examples/replace-component) ### Bug Fixes --- ## Upgrade from v1.1.11 to v1.1.12 ### Breaking Changes #### Dependency Upgrade - **react** and **react-dom**: minimum required version is now `^16.3` - **react-redux** is upgraded to `^7.1.3`. If you have older version of `react-redux` in your app. You will have error loading kepler.gl, likely due to multiple version of `react-redux` installed. - **react-palm**: required version is now `^3.1.2`. - **react-route**: if you are using `react-router`, we suggest using `^3.2.5` to avoid `React 16.8` lifecycle deprecation warning in the console. ### Bug Fixes - **Cluster Layer**: Fix incorrect cluster point count. Fix cluster layer missing in exported image. ### Moved from `kepler.gl/utils` to `@kepler.gl/table` - `maybeToDate` - `getNewDatasetColor` - `createNewDataEntry` - `setFilterGpuMode` - `assignGpuChannels` - `assignGpuChannel` - `resetFilterGpuMode` - `getGpuFilterProps` - `getDatasetFieldIndexForFilter` ### Moved from `kepler.gl/utils` to `@kepler.gl/reducers` - `findMapBounds` - `exportData` - `TOOLTIP_MINUS_SIGN` - `getDefaultInteraction` - `BRUSH_CONFIG` - `findFieldsToShow` - `getTooltipDisplayDeltaValue` - `getTooltipDisplayValue` - `LayersToRender` - `AggregationLayerHoverData` - `LayerHoverProp` - `findDefaultLayer` - `calculateLayerData` - `getLayerHoverProp` - `renderDeckGlLayer` - `isLayerRenderable` - `isLayerVisible` - `prepareLayersForDeck` - `prepareLayersToRender` - `getCustomDeckLayers` - `ComputeDeckLayersProps` - `computeDeckLayers` ### Moved from `kepler.gl/processors` to `@kepler.gl/utils` - `ACCEPTED_ANALYZER_TYPES` - `validateInputData` - `getSampleForTypeAnalyze` - `getFieldsFromData` - `renameDuplicateFields` - `analyzerTypeToFieldType` ### Moved from `kepler.gl/templates` to `@kepler.gl/utils` - `exportMapToHTML` ### Moved from `kepler.gl/layers` to `@kepler.gl/utils` - `getCentroid` - `idToPolygonGeo` - `h3IsValid` - `getHexFields` ================================================ FILE: babel-register.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project const forceTranspile = [ // ESM libraries that require transpilation /@deck.gl\/layers/, /@loaders.gl\/polyfills/, // For some reason babel crashes even before trying to transpile this library // Instead we force transpile @deck.gl/layers which includes it, and alias to a transpiled version in babel.config.js /@mapbox\/tiny-sdf/ ]; require('@babel/register')({ // This tells babel where to look for `babel.config.js` file root: __dirname, ignore: [ filepath => { return forceTranspile.some(patt => patt.test(filepath)) ? false : Boolean(filepath.match(/node_modules/)); } ], only: [__dirname], extensions: ['.ts', '.js', '.tsx', '.json'] }); require('@babel/polyfill'); var path = require('path'); var glob = require('glob'); // Requiring mapbox-gl here prevents polyfill errors during tests. require('mapbox-gl'); // eslint-disable-next-line func-names process.argv.slice(2).forEach(function (arg) { // eslint-disable-next-line func-names glob(arg, function (er, files) { if (er) throw er; // eslint-disable-next-line func-names files.forEach(function (file) { require(path.resolve(process.cwd(), file)); }); }); }); ================================================ FILE: babel.config.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project const {resolve} = require('path'); const KeplerPackage = require('./package'); const {RESOLVE_ALIASES} = require('./webpack/shared-webpack-configuration'); const srcDir = resolve(__dirname, 'src'); const nodeModules = resolve(__dirname, 'node_modules'); const PRESETS = ['@babel/preset-env', '@babel/preset-react', '@babel/preset-typescript']; const getPlugins = isTest => { const PLUGINS = [ ['@babel/plugin-transform-typescript', {isTSX: true, allowDeclareFields: true}], '@babel/plugin-transform-modules-commonjs', '@babel/plugin-transform-class-properties', '@babel/plugin-transform-optional-chaining', '@babel/plugin-transform-logical-assignment-operators', '@babel/plugin-transform-nullish-coalescing-operator', '@babel/plugin-transform-export-namespace-from', [ '@babel/transform-runtime', { regenerator: true } ], [ 'module-resolver', { extensions: ['.js', '.ts', '.tsx', '.json'], root: ['./src'], alias: { test: './test', // We explicitly transpile this ESM library in scripts/fix-dependencies.js and consume the transpiled version here // This may not be needed once switch to Jest is complete as it is handled by transformIgnorePatterns '@mapbox/tiny-sdf': `${nodeModules}/@mapbox/tiny-sdf/index.cjs`, // fix ERR_REQUIRE_ESM in yarn cover 'maplibregl-mapbox-request-transformer': `${nodeModules}/maplibregl-mapbox-request-transformer/src/index.cjs`, // compile from @kepler.gl src ...RESOLVE_ALIASES, // loaders.gl cjs bundle of polyfills is not transpiled properly, use esm instead '@loaders.gl/polyfills': `${nodeModules}/@loaders.gl/polyfills/src` } } ], [ 'search-and-replace', { rules: [ { search: '__PACKAGE_VERSION__', replace: KeplerPackage.version } ] } ] ]; return PLUGINS; }; const ENV = { test: { plugins: ['istanbul'] }, debug: { sourceMaps: 'inline', retainLines: true } }; module.exports = function babel(api) { const isTest = api.env('test'); // Check if running in test mode api.cache(true); return { presets: PRESETS, plugins: getPlugins(isTest), env: ENV }; }; ================================================ FILE: bindings/kepler.gl-jupyter/.gitignore ================================================ *.egg-info/ *.py[cod] */__pycache__/ .ipynb_checkpoints/ dist/ # labextension build keplergl-jupyter/ build/ *.py[cod] node_modules/ env/ ENV/ ENV3/ # OS X .DS_Store .vs_code/ # Compiled javascript keplergl/static/* setup.orig.py setup.orig2.py notebooks/*.html notebooks/*.sh notebooks/*.js notebooks/ignore_* */*.tgz package/ *.old* *test* js/temp.* ================================================ FILE: bindings/kepler.gl-jupyter/Dockerfile ================================================ # NOTE: PLEASE run `yarn build` before running this dockerfile FROM ubuntu:latest # Install python3 RUN apt-get update && apt-get install -y python3 python3-pip python3-venv # Install gdal RUN apt-get install -y gdal-bin # Fix: No such file or directory: 'gdal-config' RUN apt-get install -y libgdal-dev # Make the current directory the working directory WORKDIR /kepler.gl # The current directory is <Root>/bindings/kepler.gl-jupyter # Copy the root directory contents into the working directory COPY . . # Create a virtual environment .venv RUN python3 -m venv .venv # Activate the virtual environment RUN . .venv/bin/activate # Install jupyter_packaging using pip RUN .venv/bin/pip install jupyter_packaging # Install keplergl-jupyter in the virtual environment from the current directory RUN .venv/bin/pip install . # Run jupyter notebook with token exposed in logs CMD [".venv/bin/jupyter", "notebook", "--ip=0.0.0.0", "--port=8888", "--no-browser", "--allow-root", "--NotebookApp.log_level='INFO'"] EXPOSE 8888 ================================================ FILE: bindings/kepler.gl-jupyter/MANIFEST.in ================================================ recursive-include keplergl/static *.* recursive-include keplergl-jupyter/labextension *.* include keplergl-jupyter.json ================================================ FILE: bindings/kepler.gl-jupyter/README.md ================================================ # kepler.gl for Jupyter This is the [kepler.gl](http://kepler.gl) jupyter widget, an advanced geospatial visualization tool, to render large-scale interactive maps in Jupyter Notebook. ![Kepler.gl for Jupyter][jupyter_widget] Table of contacts - [Installation](#installation) - [Quick Start](#quick-start) - [Demo Notebooks](#demo-notebooks) - [Usage](#usage) - [Local Development Setup](#local-development-setup) - [FAQ & Troubleshoot](#faq--troubleshoot) ## Installation [![Anaconda-Server Badge](https://anaconda.org/conda-forge/keplergl/badges/version.svg)](https://anaconda.org/conda-forge/keplergl) [![PyPI version](https://badge.fury.io/py/keplergl.svg)](https://badge.fury.io/py/keplergl) ### 1. For Jupyter Notebook #### Using conda: ```shell conda install -c conda-forge keplergl ``` ##### Prerequisites - Python >= 3.7 #### Using pip: ```shell pip install keplergl ``` ##### Prerequisites - For kelplergl <= 0.3.0 - Python >= 2 - ipywidgets >= 7.0.0 If you're on Mac, used `pip install`, and you're running Notebook 5.3 and above, you don't need to run the following: ```shell jupyter nbextension install --py --sys-prefix keplergl # can be skipped for notebook 5.3 and above jupyter nbextension enable --py --sys-prefix keplergl # can be skipped for notebook 5.3 and above ``` NOTE: For No Module named 'keplergl' error, please make sure your virtual environment is activated and has been added to the Jupyter kernel. Use the following command to check the kernel list: ```shell jupyter kernelspec list ``` Use the following command to add the virtual environment to the Jupyter kernel: ```shell python -m ipykernel install --user --name=myenv ``` The `--name` parameter is your preferred name to identify the virtual environment ### 2. For Google Colab: `keplergl` (>0.3.0) works with Google Colab. You can install it using pip. ```python # Install keplergl (>0.3.0) !pip install keplergl ``` ### 3. For JupyterLab #### JupyterLab 3 NOTE: `keplergl` <=0.3.0 doesn't work with JupyterLab 3. You need to make sure the python package `keplergl` > 0.3.0 is installed. Installation using pip: ```shell pip install keplergl ``` Installation using conda: ```shell conda install keplergl ``` There is no need to use `jupyter labextension install` for `keplergl` > 0.3.0 with JupyterLab3. #### JupyterLab 1 For JupyterLab1, you need to install `keplergl-jupyter` labextension from NPM registry. There is no need to install `keplergl` python package. First, install `jupyterlab-manager` for JupyterLab1: ```shell jupyter labextension install @jupyter-widgets/jupyterlab-manager@1.1 ``` Then, install `keplergl-jupyter` labextension from NPM registry: ```shell jupyter labextension install keplergl-jupyter ``` ##### Prerequisites: - Node >= 12 - Python 3 #### JupyterLab 2 For JupyterLab2, you need to install `keplergl-jupyter` labextension from NPM registry. There is no need to install `keplergl` python package. First, install `jupyterlab-manager` for JupyterLab2: ```shell jupyter labextension install @jupyter-widgets/jupyterlab-manager@2 ``` To install `keplergl-jupyter` from NPM registry, JupyterLab2 has following requirements of dependencies: ``` JupyterLab Extension Package >=16.9.0 <16.10.0 >=17.0.0 <18.0.0 react >=16.9.0 <16.10.0 >=17.0.0 <18.0.0 react-dom ``` However, `keplergl-jupyter`<=0.3.0 depends on `react` >= 17.0.2. Therefore, the latest `keplergl-jupyter` can’t be installed with JupyterLab2: if you use `jupyter labextension install keplergl-jupyter`, the version 0.2.2 as a fallback will be installed. Unfortunately, version 0.2.2 does NOT work with JupyterLab2. A workaround is to modify the file `lib/python3.x/site-packages/jupyterlab/staging/package.json` and remove “react” and “react-dom” from “singletonPackages” object. Then, install keplergl-jupyter using this command: ``` jupyter labextension install keplergl-jupyter ``` ##### Prerequisites: - Node >= 12 - Python 3 ## Quick Start ### For Jupyter Notebook and JupyterLab: NOTE: please make sure the python kernel is correctly specified in the notebook. ```python # Load kepler.gl with an empty map from keplergl import KeplerGl map_1 = KeplerGl(height=400) map_1 # Load kepler.gl with map data and config # Since keplergl 0.3.4, you can pass `use_arrow=True` to load and render data faster using GeoArrow, e.g. `KeplerGl(data={'data_1': df}, config=config, use_arrow=True)` map_2 = KeplerGl(height=400, data={'data_1': df}, config=config) map_2 # Add data to map # Since keplergl 0.3.4, you can pass `use_arrow=True` to load and render data faster using GeoArrow, e.g. `map_1.add_data(df, 'data_1', use_arrow=True)` map_1.add_data(df, 'data_1') # Apply config map_1.config(config) # print data and config map_1.data map_1.config # save map to html map_1.save_to_html(file_name='keplergl_map.html') ``` ### For Google Colab: Keplergl (>0.3.0) works with Google Colab. You can install it using pip. ```python # Install keplergl (>0.3.0) !pip install keplergl # Load Kepler.gl with an empty map from keplergl import KeplerGl map_1 = KeplerGl() # Display map map_1.show() ``` The function `show()` is newly introduced for displaying map in Google Colab. The function is defined as: ```python def show(self, data=None, config=None, read_only=False, center_map=False) ``` with input parameters: - data: a data dictionary {"name": data}, if not provided, will use current map data - config: map config dictionary, if not provided, will use current map config - read_only: if read_only is True, hide side panel to disable map customization - center_map: if center_map is True, the bound of the map will be updated according to the current map data Please note that the map is not interactive due to the limitation of Google Colab. For example, when applying config to the map in Colab, the map won't be updated and one needs to call `show()` again to render a new map in a new cell. ## Demo Notebooks - [Load kepler.gl](https://github.com/keplergl/kepler.gl/blob/master/bindings/kepler.gl-jupyter/notebooks/Load%20kepler.gl.ipynb): Load kepler.gl widget, add data and config - [Geometry as String](https://github.com/keplergl/kepler.gl/blob/master/bindings/kepler.gl-jupyter/notebooks/Geometry%20as%20String.ipynb): Embed Polygon geometries as `GeoJson` and `WKT` inside a `CSV` - [GeoJSON](https://github.com/keplergl/kepler.gl/blob/master/bindings/kepler.gl-jupyter/notebooks/GeoJSON.ipynb): Load GeoJSON to kepler.gl - [DataFrame](https://github.com/keplergl/kepler.gl/blob/master/bindings/kepler.gl-jupyter/notebooks/DataFrame.ipynb): Load DataFrame to kepler.gl - [GeoDataFrame](https://github.com/keplergl/kepler.gl/blob/master/bindings/kepler.gl-jupyter/notebooks/GeoDataFrame.ipynb): Load GeoDataFrame to kepler.gl https://docs.kepler.gl/docs/keplergl-jupyter#1-load-keplergl-map ## Usage - [1. Load kepler.gl](https://docs.kepler.gl/docs/keplergl-jupyter#1-load-keplergl-map) - [`keplergl.KeplerGl()`](https://docs.kepler.gl/docs/keplergl-jupyter#keplergl) - [2. Add Data](https://docs.kepler.gl/docs/keplergl-jupyter#2-add-data) - [`.add_data()`](https://docs.kepler.gl/docs/keplergl-jupyter#add_data) - [`.data`](https://docs.kepler.gl/docs/keplergl-jupyter#data) - [3. Data Format](https://docs.kepler.gl/docs/keplergl-jupyter#3-data-format) - [`CSV`](https://docs.kepler.gl/docs/keplergl-jupyter#csv) - [`GeoJSON`](https://docs.kepler.gl/docs/keplergl-jupyter#geojson) - [`DataFrame`](https://docs.kepler.gl/docs/keplergl-jupyter#dataframe) - [`GeoDataFrame`](https://docs.kepler.gl/docs/keplergl-jupyter#geodataframe) - [`WKT`](https://docs.kepler.gl/docs/keplergl-jupyter#wkt) - [4. Customize the map](https://docs.kepler.gl/docs/keplergl-jupyter#4-customize-the-map) - [5. Save and load config](https://docs.kepler.gl/docs/keplergl-jupyter#5-save-and-load-config) - [`.config`](https://docs.kepler.gl/docs/keplergl-jupyter#config) - [6. Match config with data](https://docs.kepler.gl/docs/keplergl-jupyter#6-match-config-with-data) - [7. Save Map](https://docs.kepler.gl/docs/keplergl-jupyter#7-save-map) - [`.save_to_html()`](https://docs.kepler.gl/docs/keplergl-jupyter#save_to_html) ## Local Development Setup ### Environment Setup You will need to install node, yarn and Jupyter Notebook. #### 1. Node and Yarn Install [node](https://nodejs.org/en/download/package-manager/#macos) `> 12`, and [yarn](https://yarnpkg.com/en/docs/install#mac-stable). Use [nvm](https://github.com/creationix/nvm) for better node version management e.g. `nvm install 12`. #### 2. Install Jupyter - Using conda ```shell conda install jupyter conda install notebook 6.0.1 ``` - Using pip ```shell pip install jupyter pip install notebook==6.0.1 ``` #### 3. Install GeoPandas - Using conda ```shell conda install geopandas ``` - Using pip ```shell pip install geopandas ``` ### Download and run keplergl in your local Jupyter Notebook #### Clone Repo ```shell git clone https://github.com/keplergl/kepler.gl.git ``` ### Setup JS #### 1. Install Js module ```sh cd bindings/kepler.gl-jupyter cd js yarn ``` #### 2. Load mapbox token Add [Mapbox access token](https://docs.mapbox.com/help/how-mapbox-works/access-tokens/) to Node env. ```sh export MapboxAccessTokenJupyter=<your_mapbox_token> ``` #### 3. Build js module, start a local server to watch for changes ```shell npm start ``` You need to run step 2 and 3 to restart the js program. And step 1-3 if any js dependency has changed (Usually after pulling new changes from master). ### Setup jupyter #### 1. Install python module and enable extension from local files This command must be run **AFTER** the `js` setup, and folder `static/` was created. It only needs to be run once. ```sh # dev install from folder containing setup.py pip install -e . # only needed in dev mode, not in normal mode. jupyter nbextension install --py --symlink --sys-prefix keplergl # only needed in dev mode, not in normal mode. jupyter nbextension enable --py --sys-prefix keplergl ``` NOTE: The above command `jupyter nbextension install -py --symlink --sys-prefix keplergl` is trying to create a symbolic link of the folder `bindings/kepler.gl-jupyter/keplergl/static` under the jupyter's folder `nbextensions`. Please check if there is already a folder "nbextensions/kepler-jupyter" existed, and you might need to remove it first. To find the location of `nbextensions` folder, you can use the following command: ```shell $ where jupyter /Users/test/opt/anaconda3/envs/test37/bin/jupyter # the nbextensions should be at: /Users/test/opt/anaconda3/envs/test37/share/jupyter/nbextensions ``` #### 2. Start jupyter notebook ```shell cd notebooks jupyter notebook ``` #### Have fun! You can now start editing the .js and .py files to see changes reflected in your local notebook. After changing files in the js folder, the local start script will recompile the js files and put them in to `keplergl/static` folder. You need to reload the jupyter notebook page to reload the files. #### 3. Development for JupyterLab To test the development work in previous 2 steps for JupyterLab. You can build the `keplergl labextension` under the `js` directory: ```shell jupyter labextension build . ``` The output of the jupyter labextension is defined in the file `js/package.json`: ```javascript ... "jupyterlab": { "extension": "babel/labplugin", "outputDir": "../keplergl-jupyter/labextension", "sharedPackages": { "@jupyter-widgets/base": { "bundled": false, "singleton": true } } } ``` Then, you can either install this labextension to test it: ```shell jupyter labextension install . ``` or, you can manually create a symbolic link for the folder `bindings/kepler.gl-jupyter/kepler-jupyter/labextension` under the jupyter's folder `labextensions`, e.g. `/Users/test/opt/anaconda3/envs/test37/share/jupyter/labextensions`. You will need to reload the jupyter lab page. [jupyter_widget]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_widget.png [empty_map]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_empty_map.png [geodataframe_map]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_geodataframe.png [map_interaction]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_custom_map.gif [load_map_w_data]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_load_map_w_data.gif [map_add_data]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_add_data.png [connect_data_config]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_connect_data_w_config.png [save_widget_state]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_save_state.png [wkt]: https://dev.mysql.com/doc/refman/5.7/en/gis-data-formats.html#gis-wkt-format [geojson]: https://tools.ietf.org/html/rfc7946 [feature_collection]: https://tools.ietf.org/html/rfc7946#section-3.3 [features]: https://tools.ietf.org/html/rfc7946#section-3.2 [data_frame]: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html [geo_data_frame]: https://geopandas.readthedocs.io/en/latest/data_structures.html#geodataframe [match-config-w-data]: #match-config-with-data [data_format]: #3-data-format ================================================ FILE: bindings/kepler.gl-jupyter/RELEASE.md ================================================ # Kepler.gl Jupyter Releases ## Release a new version When release a new version, the `keplergl-jupyter` js module will be published on NPM and the `keplergl` python module will be published on PyPI. NOTE: __Version number of the js module **`kelergl-jupyter`** and the python module **`keplergl`** should match__ ### Step1: Update `version_info` in keplergl/_version.py in bindings/kepler.gl-jupyter folder. Update `"version": "0.x.x"` to match the version info in js/package.json in bindings/kepler.gl-jupyter folder. Update `EXTENSION_SPEC_VERSION` to match the js module version. ``` git add keplergl/_version.py git add js/package.json git commit -am "keplergl==<version>" ``` ### Step2: Create a tag: `<version>-jupyter` e.g. v0.3.4-jupyter ``` git tag -a <version>-jupyter -m "<version>-jupyter" git push origin <version>-jupyter ``` The new tag will trigger the Github Action `build-publish-pypi.yml`: __"Build KeplerGL Python and NPM packages"__. The packages will be built and tested, then published to NPM and PyPI using the secret tokens. ### Step3: For conda-forge release, please use the repo: https://github.com/conda-forge/keplergl-feedstock The new version should be automatically picked and built from PyPi by conda-forge. If you want to submit a manual build: Edit `meta.yaml` under directory `recipes/`: * Update the version number ```python {% set version = "0.3.0" %} ``` * Update the sha256 value of the latest tarball in PyPi that is published in Step2. ```python source: url: https://pypi.io/packages/source/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}.tar.gz sha256: cb21047b2104413af1c00ef1ac75794a19e0b578e51c69c86713911d97370167 ``` * Create a pull request and wait for checking from conda-forge team. ================================================ FILE: bindings/kepler.gl-jupyter/js/.gitignore ================================================ node_modules/ dist/ temp.* babel/ yarn-error.log package-lock.json ================================================ FILE: bindings/kepler.gl-jupyter/js/README.md ================================================ # keplergl-jupyter This is a simple jupyter widget for kepler.gl, an advanced geospatial visualization tool, to render large-scale interactive maps. ## Package Install --- **Prerequisites** - [node](http://nodejs.org/) >=8.15.0 - [yarn](https://yarnpkg.com/en/docs/install#mac-stable) >=1.6.0 **More links** - [Jupyter Widget](https://ipywidgets.readthedocs.io/en/stable/examples/Widget%20Custom.html) - [Widget Cookiecutter](https://github.com/jupyter-widgets/widget-cookiecutter) ## Local Dev --- ### Local Dev Installation for Classic Notebook To develop this package against the classic notebook, run: - `pip install -e .` (installs python package for development, runs `npm install` and `npm run build`) - `jupyter nbextension install --py --symlink --sys-prefix keplergl`\ (symlinks `static/` directory into `<jupyter path>/nbextensions/keplergl/`). Now the notebook has access to the frontend code. - `jupyter nbextension enable --py --sys-prefix keplergl`\ (copies `<npm_package_name>.json` into `<environment path>/etc/jupyter/nbconfig/notebook.d/` directory). Now the notebook will load your frontend code on page load. Now make some changes to your source code. Then: - After making Python code changes, restarting the notebook kernel will be enough to reflect changes - After making JavaScript code changes: - `cd js` - `npm run build` - Refresh browser to reflect changes ### Local Dev Installation for JupyterLab To develop this package against JupyterLab, run: - `pip install -e .` (installs python package for development, runs `npm install` and `npm run build`) - `jupyter labextension install @jupyter-widgets/jupyterlab-manager`: this install lab widgets manager. - `jupyter labextension install js`: this installs the current labextension into JupyterLab and enables it. - `jupyter lab --watch` starts JupyterLab, but in `--watch` mode: it will rebuild itself incrementally if it detects changes. Now make some changes to your source code. Then: - After making Python code changes, restarting the notebook kernel will be enough to reflect changes - After making JavaScript code changes: - `cd js` - `npm run build:lab` - Refresh browser to reflect changes - By default, the application will load from the JupyterLab staging directory (default is <sys-prefix>/share/jupyter/lab/staging. Check the correct version of `@jupyter-widgets/jupyterlab-manager` and `@jupyter-widgets/base` is install in `yarn.lock` #### JupyterLab widget Dependencies Install correct version of jupyterlab-manager based on your Jupyter Lab version. Make sure `@jupyter-widgets/base` version in the widget does not conflict with requirements in `jupyterlab-manager`. - [@jupyter-widgets/jupyterlab-manager](https://github.com/jupyter-widgets/ipywidgets/tree/master/packages/jupyterlab-manager) - [@jupyter-widgets/base](https://github.com/jupyter-widgets/ipywidgets/tree/master/packages/base) - [@jupyter-widgets/base-manager](https://github.com/jupyter-widgets/ipywidgets/tree/master/packages/base-manager) ================================================ FILE: bindings/kepler.gl-jupyter/js/babel.config.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project const KeplerPackage = require('./package'); module.exports = function babel(api) { api.cache(true); const presets = ['@babel/preset-env', '@babel/preset-react', '@babel/preset-typescript']; const plugins = [ '@babel/plugin-transform-modules-commonjs', '@babel/plugin-transform-class-properties', '@babel/plugin-transform-optional-chaining', '@babel/plugin-transform-logical-assignment-operators', '@babel/plugin-transform-nullish-coalescing-operator', '@babel/plugin-transform-export-namespace-from', 'transform-inline-environment-variables', [ 'search-and-replace', { rules: [ { search: '__PACKAGE_VERSION__', replace: KeplerPackage.version } ] } ] ]; return { presets, plugins }; }; ================================================ FILE: bindings/kepler.gl-jupyter/js/lib/embed.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project // Entry point for the unpkg bundle containing custom model definitions. // // It differs from the notebook bundle in that it does not need to define a // dynamic baseURL for the static assets and may load some css that would // already be loaded by the notebook otherwise. // Export widget models and views, and the npm package version number. module.exports = require('./keplergl-plugin'); module.exports.version = require('../package.json').version; ================================================ FILE: bindings/kepler.gl-jupyter/js/lib/extension.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project // This file contains the javascript that is run when the notebook is loaded. // It contains some requirejs configuration and the `load_ipython_extension` // which is required for any notebook extension. // // Some static assets may be required by the custom widget javascript. The base // url for the notebook is not known at build time and is therefore computed // dynamically. /* eslint-disable no-undef */ __webpack_public_path__ = `${document.querySelector('body').getAttribute('data-base-url') }nbextensions/keplergl-jupyter`; /* eslint-enable no-undef */ // Configure requirejs if (window.require) { window.require.config({ map: { "*" : { "keplergl-jupyter": "nbextensions/keplergl-jupyter/index" } } }); } // Export the required load_ipython_extension module.exports = { load_ipython_extension() {} }; ================================================ FILE: bindings/kepler.gl-jupyter/js/lib/index.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project // Export widget models and views, and the npm package version number. module.exports = require('./keplergl-plugin'); module.exports.version = require('../package.json').version; ================================================ FILE: bindings/kepler.gl-jupyter/js/lib/keplergl/components/app.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import React, {useEffect, useState, useRef} from 'react'; import styled from 'styled-components'; const ReactHelmet = require('react-helmet'); const Helmet = ReactHelmet ? ReactHelmet.Helmet : null; import { SidebarFactory, AddDataButtonFactory, PanelHeaderFactory, CustomPanelsFactory, injectComponents } from '@kepler.gl/components'; import CustomPanelHeaderFactory from './panel-header'; import CustomSidebarFactory from './side-bar'; import CustomCustomPanelsFactory from './config-panel'; export const KEPLER_GL_JUPYTER_VERSION = '__PACKAGE_VERSION__'; const CustomAddDataButtonFactory = () => { const CustomAddDataButton = () => <div />; return CustomAddDataButton; }; const KeplerGl = injectComponents([ [AddDataButtonFactory, CustomAddDataButtonFactory], [SidebarFactory, CustomSidebarFactory], [PanelHeaderFactory, CustomPanelHeaderFactory], [CustomPanelsFactory, CustomCustomPanelsFactory] ]); const MAPBOX_TOKEN = process.env.MapboxAccessTokenJupyter; // eslint-disable-line const StyledContainer = styled.div` width: 100%; height: 100%; .kepler-gl .ReactModal__Overlay.ReactModal__Overlay--after-open { position: absolute !important; } .kepler-gl .side-panel__content > div { display: flex; height: 100%; flex-direction: column; } `; function App() { const rootElm = useRef(null); const [windowDimension, setDimension] = useState({}); const handleResize = () => { if (!rootElm.current) { return; } const width = rootElm.current.offsetWidth; const height = rootElm.current.offsetHeight; const dimensionToSet = { ...(width && width !== windowDimension.width ? {width} : {}), ...(height && height !== windowDimension.height ? {height} : {}) }; setDimension(dimensionToSet); }; // in Jupyter Lab, parent component has transition when window resize. // need to delay call to get the final parent width, const resizeDelay = () => window.setTimeout(handleResize, 500); useEffect(() => { window.addEventListener('resize', resizeDelay); return () => window.removeEventListener('resize', resizeDelay); }, []); return ( <StyledContainer ref={rootElm} className="keplergl-widget-container"> {Helmet ? ( <Helmet> <meta charSet="utf-8" /> <link rel="stylesheet" href="http://d1a3f4spazzrp4.cloudfront.net/kepler.gl/uber-fonts/4.0.0/superfine.css" /> <link rel="stylesheet" href="http://api.tiles.mapbox.com/mapbox-gl-js/v1.1.1/mapbox-gl.css" /> <link rel="stylesheet" href="https://unpkg.com/maplibre-gl@^3/dist/maplibre-gl.css" /> <style type="text/css"> {`font-family: ff-clan-web-pro, 'Helvetica Neue', Helvetica, sans-serif; font-weight: 400; font-size: 0.875em; line-height: 1.71429; *, *:before, *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } body { margin: 0; padding: 0; } .jupyter-widgets.keplergl-jupyter-widgets { overflow: hidden; } .p-Widget.p-Panel.jp-OutputArea-output.jupyter-widgets { overflow: hidden } `} </style> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-64694404-19" /> <script>{`window.dataLayer=window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-64694404-19', {page_path: '/keplergl-jupyter-widget'});`}</script> </Helmet> ) : null} <KeplerGl mapboxApiAccessToken={MAPBOX_TOKEN} width={windowDimension.width || 800} height={windowDimension.height || 400} appName="Kepler.gl Jupyter" version={KEPLER_GL_JUPYTER_VERSION} getMapboxRef={handleResize} /> </StyledContainer> ); } export default App; ================================================ FILE: bindings/kepler.gl-jupyter/js/lib/keplergl/components/config-panel.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import React, {useState} from 'react'; import {Button, Icons, TextArea, withState} from '@kepler.gl/components'; import {KeplerGlSchema} from '@kepler.gl/schemas'; import {visStateLens, mapStateLens, mapStyleLens} from '@kepler.gl/reducers'; import {CopyToClipboard} from 'react-copy-to-clipboard'; import styled from 'styled-components'; const Params = { true: 'True', false: 'False', null: 'None' }; export const StyleCopyConfig = styled.div.attrs({ className: 'copy-config' })` width: 100%; display: flex; flex-direction: column; height: 100%; .copy-button { position: absolute; margin-top: -45px; right: 28px; } textarea { overflow-y: scroll; white-space: pre-wrap; width: 100%; height: 100%; resize: none; } `; // convert config from string to pything dictionary function configStringify(config) { // replace true => True; false => False; null => None const configStr = JSON.stringify(config, null, 2); return configStr.replace(/: ([a-z]+)/g, function(_, key) { return ': ' + Params[key] || ': ' + key; }); } export const CopyConfig = ({config}) => { const [copied, setCopy] = useState(false); const value = configStringify(config); return ( <StyleCopyConfig> <CopyToClipboard text={value} onCopy={() => setCopy(true)} className="copy-button"> <Button width="100px"> <Icons.Clipboard height="16px" /> {copied ? 'Copied!' : 'Copy'} </Button> </CopyToClipboard> <TextArea value={value} readOnly selected /> </StyleCopyConfig> ); }; function CustomSidePanelsFactory() { const CustomPanels = ({activeSidePanel, visState, mapState, mapStyle}) => { const config = KeplerGlSchema.getConfigToSave({visState, mapState, mapStyle}); if (activeSidePanel === 'config') { return <CopyConfig config={config} />; } return null; }; CustomPanels.defaultProps = { panels: [ { id: 'config', label: 'Config', iconComponent: Icons.CodeAlt } ] }; const ConnectedCustomPanels = withState( [visStateLens, mapStateLens, mapStyleLens], state => state )(CustomPanels); ConnectedCustomPanels.defaultProps = { panels: [ { id: 'config', label: 'modal.exportMap.json.configTitle', iconComponent: Icons.CodeAlt } ] }; return ConnectedCustomPanels; } export default CustomSidePanelsFactory; ================================================ FILE: bindings/kepler.gl-jupyter/js/lib/keplergl/components/panel-header.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import {PanelHeaderFactory, Icons, withState} from '@kepler.gl/components'; import {toggleModal} from '@kepler.gl/actions'; import React from 'react'; import {IntlProvider} from 'react-intl'; const KEPLER_DOC = 'https://docs.kepler.gl/docs/keplergl-jupyter'; export function CustomPanelHeaderFactory() { const PanelHeader = PanelHeaderFactory(); const actionItems = props => [ { id: 'docs', iconComponent: Icons.Docs, href: KEPLER_DOC, blank: true, tooltip: 'tooltip.documentation', onClick: () => {} } ]; const JupyterPanelHeader = props => ( <IntlProvider locale="en" messages={{'tooltip.documentation': 'Documentation'}}> <PanelHeader {...props} actionItems={actionItems(props)} /> </IntlProvider> ); return withState([], state => state, { toggleModal })(JupyterPanelHeader); } export default CustomPanelHeaderFactory; ================================================ FILE: bindings/kepler.gl-jupyter/js/lib/keplergl/components/root.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import React from 'react'; import ReactDOM from 'react-dom'; import {Provider} from 'react-redux'; import App from './app'; function renderRoot({id, store, ele}) { const Root = () => ( <Provider store={store}> <App /> </Provider> ); ReactDOM.render(<Root />, ele); } export default renderRoot; ================================================ FILE: bindings/kepler.gl-jupyter/js/lib/keplergl/components/side-bar.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import React from 'react'; import {SidebarFactory, CollapseButtonFactory} from '@kepler.gl/components'; import styled from 'styled-components'; const StyledSideBarContainer = styled.div` .side-panel--container { transform:scale(0.85); transform-origin: top left; height: 117.64%; padding-top: 0; padding-right: 0; padding-bottom: 0; padding-left: 0; .side-bar { height: 100%; } .side-bar__close { right: -30px; top: 14px; } } `; // Custom sidebar will render kepler.gl default side bar // adding a wrapper component to edit its style function CustomSidebarFactory() { const CloseButton = CollapseButtonFactory(); const Sidebar = SidebarFactory(CloseButton); const CustomSidebar = (props) => ( <StyledSideBarContainer> <Sidebar {...props}/> </StyledSideBarContainer> ); return CustomSidebar; } export default CustomSidebarFactory; ================================================ FILE: bindings/kepler.gl-jupyter/js/lib/keplergl/kepler.gl.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import {addDataToMap, ActionTypes} from '@kepler.gl/actions'; import {KeplerGlSchema} from '@kepler.gl/schemas'; import document from 'global/document'; import renderRoot from './components/root'; import createAppStore from './store'; import {loadJupyterData} from './utils'; import log from '../log'; const getData = that => that.model.get('data'); const getConfig = that => that.model.get('config'); const getHeight = that => that.model.get('height'); const DOM_EL_ID = 'keplergl'; let counter = 0; const NONE_UPDATE_ACTIONS = [ ActionTypes.REGISTER_ENTRY, ActionTypes.DELETE_ENTRY, ActionTypes.RENAME_ENTRY, ActionTypes.LOAD_MAP_STYLES, ActionTypes.LAYER_HOVER ]; function getConfigInStore({hash = true, store} = {}) { if (store) { const currentState = store.getState().keplerGl.map; const currentValue = KeplerGlSchema.getConfigToSave(currentState); return hash ? JSON.stringify(currentValue) : currentValue; } return {}; } function getDatasetsInStore(store) { if (store) { return store.getState().keplerGl.map.visState.datasets; } } class KeplerGlJupyter { constructor() { this.id = `${DOM_EL_ID}-${counter}`; counter++; this.mapUpdateCounter = 0; } create(that) { log('kepler.gl create'); let previousValue; function handleStoreChange(action, nextStore) { log(action); if (!action || NONE_UPDATE_ACTIONS.includes(action.type)) { return; } const saveState = getConfigInStore({hash: false, store: nextStore}); const hash = JSON.stringify(saveState); // should not update model after first UPDATE_MAP action // when component first mounted if (previousValue !== hash && this.mapUpdateCounter > 2) { // keplerGl State has changed log('store state has changed, update model'); log(previousValue); log(hash); previousValue = hash; that.model.set({config: saveState}); // that.model.save_changes(); that.touch(); } if (action.type === ActionTypes.UPDATE_MAP) { this.mapUpdateCounter++; } } this.store = createAppStore(handleStoreChange.bind(this)); const height = getHeight(that); that.el.classList.add('jupyter-widgets'); that.el.classList.add('keplergl-jupyter-widgets'); const divElmt = document.createElement('div'); divElmt.setAttribute('id', this.id); divElmt.classList.add('kepler-gl'); divElmt.setAttribute('style', ` width: 100%; height: ${height}px;`); that.el.appendChild(divElmt); renderRoot({id: this.id, store: this.store, ele: divElmt}); const data = getData(that); const config = getConfig(that); log('<<<<<<<< render finished! >>>>>>>>>'); // After rendering the component, // we add the data that's already in the model const hasData = data && Object.keys(data).length; const hasConfig = config && config.version; if (hasData) { log('data already in model'); addDataConfigToKeplerGl({data, config, store: this.store}); } else if (hasConfig) { log('config already in model'); this.onConfigChange(that); } } onDataChange(that) { log('kepler.gl onDataChange'); const data = getData(that); addDataConfigToKeplerGl({data, store: this.store}); } onConfigChange(that) { log('kepler.gl onConfigChange'); const config = getConfig(that); const currentValue = getConfigInStore({hash: true, store: this.store}); if (currentValue === JSON.stringify(config)) { // calling model.set('config') inside the js component will trigger another onConfigChange log('onConfigChange: config is the same as saved in store'); return; } this.store.dispatch( addDataToMap({ // reuse datasets in state // a hack to apply config to existing data datasets: Object.values(getDatasetsInStore(this.store)).map(d => ({ info: { id: d.id, label: d.label, color: d.color }, data: { fields: d.fields, ...(d.dataContainer instanceof ArrowDataContainer ? {cols: d.dataContainer._cols} : {rows: d.allData}) } })), config, options: {centerMap: false} }) ); } } export function addDataConfigToKeplerGl({data: inputData, config, options, store}) { const data = inputData ? dataToDatasets(inputData) : []; log(data); const results = loadJupyterData(data); const succeeded = results.filter(r => r && r.data); log('addDataConfigToKeplerGl'); log(succeeded); log(config); const hasMapState = Boolean(config && config.config && config.config.mapState); store.dispatch( addDataToMap({ datasets: succeeded, config, options: options || {centerMap: !hasMapState} }) ); } export function dataToDatasets(data) { return Object.keys(data).map(key => ({ id: key, data: data[key] })); } export default KeplerGlJupyter; ================================================ FILE: bindings/kepler.gl-jupyter/js/lib/keplergl/main.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project // NOTE: this is only used for exporting html template import createAppStore from './store'; import renderRoot from './components/root'; import document from 'global/document'; import Window from 'global/window'; import {addDataConfigToKeplerGl} from './kepler.gl'; const map = (function initKeplerGl() { const id = 'keplergl-0'; const store = createAppStore(); const divElmt = document.createElement('div'); divElmt.setAttribute('style', 'width: 100vw; height: 100vh; position: absolute'); document.body.appendChild(divElmt); return { render: () => { renderRoot({id, store, ele: divElmt}); }, store }; })(); map.render(); (function loadDataConfig(keplerGlMap) { const {data, config, options} = Window.__keplerglDataConfig || {}; addDataConfigToKeplerGl({data, config, options, store: keplerGlMap.store}); })(map); ================================================ FILE: bindings/kepler.gl-jupyter/js/lib/keplergl/store.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import {applyMiddleware, compose, createStore} from 'redux'; import {combineReducers} from 'redux'; import {keplerGlReducer, enhanceReduxMiddleware} from '@kepler.gl/reducers'; const customizedKeplerGlReducer = keplerGlReducer.initialState({ uiState: { currentModal: null, activeSidePanel: null } }); const reducers = combineReducers({ // mount keplerGl reducer keplerGl: customizedKeplerGlReducer }); const createAppStore = onChangeHandler => { const updatesMiddleware = store => next => action => { // exclude some actions // Call the next dispatch method in the middleware chain. /* eslint-disable callback-return */ const returnValue = next(action); /* eslint-enable callback-return */ // state after dispatch if (typeof onChangeHandler === 'function') { onChangeHandler(action, store); } // This will likely be the action itself, unless // a middleware further in chain changed it. return returnValue; }; const middlewares = enhanceReduxMiddleware([updatesMiddleware]); const enhancers = [applyMiddleware(...middlewares)]; const store = createStore(reducers, {}, compose(...enhancers)); return store; }; export default createAppStore; ================================================ FILE: bindings/kepler.gl-jupyter/js/lib/keplergl/utils.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import {tableFromIPC} from 'apache-arrow'; import {processCsvData, processGeojson, processArrowBatches} from '@kepler.gl/processors'; import log from '../log'; import console from 'global/console'; function handleJuptyerDataFormat(dataEntry) { // This makes passing data between Jupyter the iframe easier // detect data type here log('handleJuptyerDataFormat'); const {data, id} = dataEntry; let parsed = data; let type = 'csv'; if (typeof data === 'object') { if (data.columns && data.data && data.index) { // Data is parsed as a Dataframe log('data is a dataframe'); type = 'df'; // parsed = {fields: data.columns, data: data.data}; } else { // assume is geojson type = 'json'; } } else if (typeof data === 'string') { // check if js string is json string try { parsed = JSON.parse(data); type = 'json'; } catch (e) { // assume it is base64 string represents arrow table try { console.log('parse base64string arrow tabl'); // convert arrowTable from base64 string to ArrayBuffer const arrowTableBuffer = Buffer.from(data, 'base64').buffer; // create arrow table from ArrayBuffer parsed = tableFromIPC([new Uint8Array(arrowTableBuffer)]); type = 'arrow'; } catch (e) { // now we can assume it is csv } } } return {data: parsed, type, id}; } function processReceivedData({data, info}) { // assume there is only 1 file log('processReceivedData'); let processed; try { processed = info.queryType === 'csv' ? processCsvData(data) : info.queryType === 'json' ? processGeojson(data) : info.queryType === 'df' ? processDataFrame(data) : info.queryType === 'arrow' ? processArrowBatches(data.batches) : null; } catch (e) { console.log( `Kepler.gl fails to parse data, detected data format is ${info.queryType}`, e ); } return {data: processed, info}; } function processDataFrame(data) { const fields = data.columns.map(name => ({name})); const rows = data.data; // kepler.gl will detect field types return {fields, rows}; } export function loadJupyterData(rawData) { const dataToLoad = rawData.map(handleJuptyerDataFormat).map(rd => ({ data: rd.data, info: { id: rd.id, label: rd.id, queryType: rd.type, queryOption: 'jupyter' } })); return dataToLoad.map(processReceivedData); } ================================================ FILE: bindings/kepler.gl-jupyter/js/lib/keplergl-plugin.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import * as widgets from '@jupyter-widgets/base'; import KeplerGlJupyter from './keplergl/kepler.gl'; import log from './log'; // Custom Model. Custom widgets models must at least provide default values // for model attributes, including // // - `_view_name` // - `_view_module` // - `_view_module_version` // // - `_model_name` // - `_model_module` // - `_model_module_version` // // when different from the base class. // When serializing the entire widget state for embedding, only values that // differ from the defaults will be specified. // Note: in JavaScript, class.extend does not inherently inherit static functions. export class KeplerGlModal extends widgets.DOMWidgetModel { defaults() { return { ...super.defaults(), _model_name: 'KeplerGlModal', _model_module: 'keplergl-jupyter', _view_name: 'KeplerGlView', _view_module: 'keplergl-jupyter', data: {}, config: {} }; } } export class KeplerGlView extends widgets.DOMWidgetView { render() { log('KeplerGlModal start render'); this.keplergl = new KeplerGlJupyter(); this.keplergl.create(this); // event listener this.model.on('change:data', this.data_changed, this); this.model.on('change:config', this.config_changed, this); window.dom = this.el; } data_changed() { log('KeplerGlModal start data_changed'); this.keplergl.onDataChange(this); } config_changed() { log('KeplerGlModal start config_change'); this.keplergl.onConfigChange(this); } } ================================================ FILE: bindings/kepler.gl-jupyter/js/lib/labplugin.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project var keplerglJupyter = require('./index'); var base = require('@jupyter-widgets/base'); module.exports = { id: 'keplergl-jupyter', requires: [base.IJupyterWidgetRegistry], activate(app, widgets) { widgets.registerWidget({ name: 'keplergl-jupyter', version: keplerglJupyter.version, exports: keplerglJupyter }); }, autoStart: true }; ================================================ FILE: bindings/kepler.gl-jupyter/js/lib/log.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import console from 'global/console'; function log(...args) { if (process.env.NODE_ENV === 'development') { console.log(...args); } } export default log; ================================================ FILE: bindings/kepler.gl-jupyter/js/package.json ================================================ { "name": "keplergl-jupyter", "version": "0.3.7", "description": "This is a simple jupyter widget for kepler.gl, an advanced geo-spatial visualization tool, to render large-scale interactive maps.", "author": "Shan He", "license": "MIT", "main": "babel/index.js", "repository": { "type": "git", "url": "https://github.com/keplergl/kepler.gl.git" }, "keywords": [ "jupyter", "jupyterlab", "jupyterlab-extension", "widgets", "ipython", "ipywidgets" ], "files": [ "lib/**/*.js", "dist/*.js", "babel/**" ], "scripts": { "start": "NODE_ENV=development webpack --config ./webpack/dev.js --mode development --watch --progress", "clean": "rimraf dist/ && rimraf ../keplergl/static/", "cleanall": "npm run clean && rimraf node_modules/", "prepublishOnly": "NODE_OPTIONS=--openssl-legacy-provider yarn build && yarn build:lab", "build": "NODE_OPTIONS=--openssl-legacy-provider npm run clean && npm run build:lab && webpack --config ./webpack/build.js && jupyter labextension build .", "build:lab": "NODE_OPTIONS=--openssl-legacy-provider rimraf babel/ && mkdir babel && babel lib --out-dir babel", "test": "echo \"Error: no test specified\" && exit 1", "lint": "eslint lib webpack --fix", "prettier": "prettier --config ./.prettierrc --print-width 80 --single-quote --write lib/**/*.js" }, "devDependencies": { "@babel/cli": "7.4.4", "@babel/core": "^7.12.1", "@babel/plugin-transform-class-properties": "^7.12.1", "@babel/plugin-transform-export-namespace-from": "^7.12.1", "@babel/plugin-transform-modules-commonjs": "^7.12.1", "@babel/plugin-transform-optional-chaining": "^7.12.1", "@babel/plugin-transform-runtime": "^7.12.1", "@babel/plugin-transform-typescript": "^7.16.8", "@babel/preset-env": "^7.0.0", "@babel/preset-react": "^7.0.0", "@babel/preset-typescript": "^7.16.7", "@jupyterlab/builder": "^4.0.0", "apache-arrow": "^13.0.0", "babel-eslint": "^9.0.0", "babel-loader": "^8.0.0", "babel-plugin-search-and-replace": "^1.0.0", "babel-plugin-transform-inline-environment-variables": "0.4.3", "eslint": "^5.12.1", "eslint-config-prettier": "^3.6.0", "eslint-config-uber-es2015": "^3.1.2", "eslint-config-uber-jsx": "^3.3.3", "eslint-plugin-babel": "^5.3.0", "eslint-plugin-prettier": "^3.0.1", "eslint-plugin-react": "~7.12.4", "html-webpack-plugin": "^4.3.0", "react-dev-utils": "^10.2.1", "rimraf": "^2.6.1", "webpack": "^4.29.0", "webpack-cli": "^3.2.1", "webpack-dev-middleware": "^3.5.1", "webpack-dev-server": "^3.1.14", "webpack-hot-middleware": "^2.24.3", "webpack-stats-plugin": "^0.2.1" }, "dependencies": { "@jupyter-widgets/base": "^6", "@jupyterlab/builder": "^4.0.0", "@kepler.gl/actions": "^3.0.0", "@kepler.gl/components": "^3.0.0", "@kepler.gl/processors": "^3.0.0", "@kepler.gl/reducers": "^3.0.0", "@kepler.gl/schemas": "^3.0.0", "@kepler.gl/styles": "^3.0.0", "@loaders.gl/arrow": "^4.1.0", "@loaders.gl/core": "^4.1.0", "@loaders.gl/csv": "^4.1.0", "@loaders.gl/json": "^4.1.0", "global": "^4.3.0", "node-polyfill-webpack-plugin": "^1.1.2", "querystring": "0.2.1", "react": "^18.2.0", "react-copy-to-clipboard": "^5.0.2", "react-dom": "^18.2.0", "react-helmet": "^5.2.0", "react-intl": "^6.3.0", "react-redux": "^8.0.5", "redux": "^4.2.1", "redux-actions": "^2.2.1", "styled-components": "6.1.8" }, "resolutions": { "@deck.gl/core": "^8.9.27", "@deck.gl/react": "^8.9.27", "@deck.gl/aggregation-layers": "^8.9.27", "@deck.gl/geo-layers": "^8.9.27", "@deck.gl/layers": "^8.9.27" }, "jupyterlab": { "extension": "babel/labplugin", "outputDir": "../keplergl-jupyter/labextension", "sharedPackages": { "@jupyter-widgets/base": { "bundled": false, "singleton": true } } }, "engines": { "node": ">=18" }, "volta": { "node": "18.18.2", "yarn": "4.4.0" }, "packageManager": "yarn@4.4.0" } ================================================ FILE: bindings/kepler.gl-jupyter/js/template/keplergl-html.ejs ================================================ <% var item, key %> <% htmlWebpackPlugin.options.appMountIds = htmlWebpackPlugin.options.appMountIds || [] %> <% htmlWebpackPlugin.options.lang = htmlWebpackPlugin.options.lang || "en" %> <% htmlWebpackPlugin.options.links = htmlWebpackPlugin.options.links || [] %> <% htmlWebpackPlugin.options.meta = htmlWebpackPlugin.options.meta || [] %> <% htmlWebpackPlugin.options.scripts = htmlWebpackPlugin.options.scripts || [] %> <!DOCTYPE html> <html lang="<%= htmlWebpackPlugin.options.lang %>" <% if (htmlWebpackPlugin.files.manifest) { %> manifest="<%= htmlWebpackPlugin.files.manifest %>"<% } %>> <head> <meta charset="utf-8"> <meta content="ie=edge" http-equiv="x-ua-compatible"> <% if (htmlWebpackPlugin.options.baseHref) { %> <base href="<%= htmlWebpackPlugin.options.baseHref %>"> <% } %> <% if (Array.isArray(htmlWebpackPlugin.options.meta)) { %> <% for (item of htmlWebpackPlugin.options.meta) { %> <meta<% for (key in item) { %> <%= key %>="<%= item[key] %>"<% } %>> <% } %> <% } %> <title><%= htmlWebpackPlugin.options.title %> <% if (htmlWebpackPlugin.files.favicon) { %> <% } %> <% if (htmlWebpackPlugin.options.mobile) { %> <% } %> <% for (item of htmlWebpackPlugin.options.links) { %> <% if (typeof item === 'string' || item instanceof String) { item = { href: item, rel: 'stylesheet' } } %> <%= key %>="<%= item[key] %>"<% } %>> <% } %> <% for (item of htmlWebpackPlugin.options.scripts) { %> <% if (typeof item === 'string' || item instanceof String) { item = { src: item, type: 'text/javascript' } } %> <%= key %>="<%= item[key] %>"<% } %> crossorigin> <% } %> <% if (htmlWebpackPlugin.options.unsupportedBrowser) { %>
Sorry, your browser is not supported. Please upgrade to the latest version or switch your browser to use this site. See outdatedbrowser.com for options.
<% } %> <% if (htmlWebpackPlugin.options.appMountId) { %>
<% } %> <% for (item of htmlWebpackPlugin.options.appMountIds) { %>
<% } %> <% if (htmlWebpackPlugin.options.window) { %> <% } %> <% if (htmlWebpackPlugin.options.inlineManifestWebpackName) { %> <%= htmlWebpackPlugin.files[htmlWebpackPlugin.options.inlineManifestWebpackName] %> <% } %> <% if (htmlWebpackPlugin.options.devServer) { %> <% } %> ================================================ FILE: bindings/kepler.gl-jupyter/js/webpack/build-html.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project const path = require('path'); const HtmlWebpackPlugin = require('html-webpack-plugin'); const InlineChunkHtmlPlugin = require('react-dev-utils/InlineChunkHtmlPlugin'); const packageJson = require('../package.json'); const {dependencies} = packageJson; const entry = path.resolve(__dirname, '../lib/keplergl/main.js'); const template = path.resolve(__dirname, '../template/keplergl-html.ejs'); function clearCarats(version) { return version && version.startsWith('^') ? version.substring(1) : version; } const VERSIONS = { react: clearCarats(dependencies.react), reactDom: clearCarats(dependencies['react-dom']), redux: clearCarats(dependencies.redux), reactRedux: clearCarats(dependencies['react-redux']), // reactIntl UMD build is not available after 5.x reactIntl: '4.7.6', reactCopyToClipboard: clearCarats(dependencies['react-copy-to-clipboard']), styledComponents: clearCarats(dependencies['styled-components']), keplergl: clearCarats(dependencies['@kepler.gl/components']) }; const externals = [ {react: 'React'}, {'react-dom': 'ReactDOM'}, {redux: 'Redux'}, {'react-redux': 'ReactRedux'}, {'react-intl': 'ReactIntl'}, {'react-copy-to-clipboard': 'CopyToClipboard'}, {'styled-components': 'styled'}, {'kepler.gl/reducers': 'KeplerGl'}, {'kepler.gl/components': 'KeplerGl'}, {'kepler.gl/actions': 'KeplerGl'}, {'kepler.gl/processors': 'KeplerGl'}, {'kepler.gl/schemas': 'KeplerGl'}, {'kepler.gl/middleware': 'KeplerGl'}, {'react-helmet': 'Helmet'} ].reduce((accu, ext) => ({ ...accu, [Object.keys(ext)[0]]: { root: Object.values(ext)[0], commonjs2: Object.keys(ext)[0], commonjs: Object.keys(ext)[0] } }), {}); module.exports = (rules, plugins) => ({ entry, output: { path: path.resolve(__dirname, '../..', 'keplergl', 'static'), libraryTarget: 'umd' }, externals, module: { rules }, plugins: [ // ...webpackConfig.plugins, // new webpack.optimize.UglifyJsPlugin({sourceMap: true, compressor: {comparisons: false, warnings: false}}), ...plugins, new HtmlWebpackPlugin({ template, appMountId: 'app-content', filename: 'keplergl.html', inject: true, links: [ 'https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/uber-fonts/4.0.0/superfine.css', 'https://api.tiles.mapbox.com/mapbox-gl-js/v1.1.1/mapbox-gl.css', 'https://unpkg.com/maplibre-gl@^3/dist/maplibre-gl.css' ], scripts: [ `https://unpkg.com/react@${VERSIONS.react}/umd/react.production.min.js`, `https://unpkg.com/react-dom@${VERSIONS.reactDom}/umd/react-dom.production.min.js`, `https://unpkg.com/redux@${VERSIONS.redux}/dist/redux.js`, `https://unpkg.com/react-redux@${VERSIONS.reactRedux}/dist/react-redux.min.js`, `https://unpkg.com/react-intl@${VERSIONS.reactIntl}/dist/react-intl.min.js`, `https://unpkg.com/react-copy-to-clipboard@${VERSIONS.reactCopyToClipboard}/build/react-copy-to-clipboard.min.js`, `https://unpkg.com/styled-components@${VERSIONS.styledComponents}/dist/styled-components.min.js`, // load kepler.gl last // `https://unpkg.com/kepler.gl@${VERSIONS.keplergl}/umd/keplergl.min.js` ], title: 'Kepler.gl' }), new InlineChunkHtmlPlugin(HtmlWebpackPlugin, [/main/]) ], node: { fs: 'empty' } }); ================================================ FILE: bindings/kepler.gl-jupyter/js/webpack/build.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project const config = require('./config'); const mode = 'production'; module.exports = [ { ...config.extension, devtool: 'source-map', mode }, { ...config.widget, devtool: 'source-map', mode }, config.umd, config.html ]; ================================================ FILE: bindings/kepler.gl-jupyter/js/webpack/config.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project const path = require('path'); const version = require('../package.json').version; const webpack = require('webpack'); const buildHtml = require('./build-html'); const rules = [ { test: /\.(js|jsx|ts|tsx)$/, loader: 'babel-loader', include: path.join(__dirname, '../lib', 'keplergl'), exclude: [/node_modules/] }, // fix for arrow-related errors { test: /\.mjs$/, // include: /node_modules[\\/]apache-arrow/, include: /node_modules/, type: 'javascript/auto' }, // for compiling @probe.gl, website build started to fail (March, 2024) { test: /\.(js|ts)$/, loader: 'babel-loader', include: [ /node_modules[\\/]@probe.gl/, /node_modules[\\/]@loaders.gl/, /node_modules[\\/]@math.gl/ ] } ]; const plugins = [ new webpack.EnvironmentPlugin(['MapboxAccessTokenJupyter']) ]; module.exports = { extension: { // Notebook extension // // This bundle only contains the part of the JavaScript that is run on // load of the notebook. This section generally only performs // some configuration for requirejs, and provides the legacy // "load_ipython_extension" function which is required for any notebook // extension. // entry: path.resolve(__dirname, '../lib/extension.js'), output: { filename: 'extension.js', path: path.resolve(__dirname, '../..', 'keplergl', 'static'), libraryTarget: 'amd' }, node: { fs: 'empty' }, plugins }, widget: { // Bundle for the notebook containing the custom widget views and models // // This bundle contains the implementation for the custom widget views and // custom widget. // It must be an amd module // entry: path.resolve(__dirname, '../lib/index.js'), // watch: true, watchOptions: { ignored: ['dist', 'node_modules'] }, output: { filename: 'index.js', path: path.resolve(__dirname, '../..', 'keplergl', 'static'), libraryTarget: 'amd' }, // adding source map significantly slows down the // devtool: 'source-map', module: { rules }, externals: ['@jupyter-widgets/base'], node: { fs: 'empty' }, plugins }, html: buildHtml(rules, plugins), umd: { // Embeddable {{ cookiecutter.npm_package_name }} bundle // This bundle is generally almost identical to the notebook bundle // containing the custom widget views and models. // The only difference is in the configuration of the webpack public path // for the static assets. // It will be automatically distributed by unpkg to work with the static // widget embedder. // The target bundle is always `dist/index.js`, which is the path required // by the custom widget embedder. entry: path.resolve(__dirname, '../lib/embed.js'), output: { filename: 'index.js', path: path.resolve(__dirname, '../dist'), libraryTarget: 'amd', publicPath: `https://unpkg.com/keplergl-jupyter@${version}/dist/` }, mode: 'production', module: { rules }, externals: ['@jupyter-widgets/base'], node: { fs: 'empty' }, plugins } }; module.exports.rules = rules; module.exports.plugins = plugins; ================================================ FILE: bindings/kepler.gl-jupyter/js/webpack/dev.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project const config = require('./config'); module.exports = [ // Notebook extension config.extension, // Notebook widget { ...config.widget, devtool: 'source-map', watch: true, watchOptions: { ignored: ['dist', 'node_modules'] } }, // Html template config.html ]; ================================================ FILE: bindings/kepler.gl-jupyter/keplergl/__init__.py ================================================ # SPDX-License-Identifier: MIT # Copyright contributors to the kepler.gl project from ._version import version_info, __version__ from .keplergl import * def _jupyter_nbextension_paths(): return [{ 'section': 'notebook', 'src': 'static', 'dest': 'keplergl-jupyter', 'require': 'keplergl-jupyter/extension' }] ================================================ FILE: bindings/kepler.gl-jupyter/keplergl/_version.py ================================================ # SPDX-License-Identifier: MIT # Copyright contributors to the kepler.gl project version_info = (0, 3, 7, 'final', 0) _specifier_ = {'alpha': 'a', 'beta': 'b', 'candidate': 'rc', 'final': ''} major, minor, patch, release, serial = version_info __version__ = '%s.%s.%s%s'%(major, minor, patch, '' if release=='final' else '-' + _specifier_[release]+str(serial)) # The version of the attribute spec that this package # implements. This is the value used in # _model_module_version/_view_module_version. # # Update this value when attributes are added/removed from # the widget models, or if the serialized format changes. # # The major version needs to match that of the JS package. # Note: this follows the semver format, which is used to match the JS package version in keplergl-plugin.js EXTENSION_SPEC_VERSION = '0.3.7' ================================================ FILE: bindings/kepler.gl-jupyter/keplergl/keplergl.py ================================================ # SPDX-License-Identifier: MIT # Copyright contributors to the kepler.gl project # Ignore warnings from IPython.core.formatters for _repr_html_ that returns different types in different versions of IPyWidgets import warnings warnings.filterwarnings('ignore', category=UserWarning, module='IPython.core.formatters') import base64 import sys import json import ipywidgets as widgets from pkg_resources import resource_string from traitlets import Unicode, Dict, Int, validate, TraitError import pandas as pd import geopandas import pyarrow import geoarrow.pyarrow as ga import geoarrow.pandas as _ import shapely.wkt from ._version import EXTENSION_SPEC_VERSION documentation = 'https://docs.kepler.gl/docs/keplergl-jupyter' # global variable use_arrow, which can be set by parameter use_arrow in KeplerGl g_use_arrow = False def _arrow_table_to_base64(arrow_table): '''Convert an arrow table to a base64 string''' batches = arrow_table.to_batches() sink = pyarrow.BufferOutputStream() writer = pyarrow.ipc.new_stream(sink, arrow_table.schema) for batch in batches: writer.write_batch(batch) arrow_buf = sink.getvalue() # TODO: we could send the bytes directly to the frontend using traitlets.Bytes base64_string = base64.b64encode(arrow_buf.to_pybytes()).decode() return base64_string def _df_to_dict(df): ''' Create an input dict for Kepler.gl using a DataFrame object Inputs: - df: a DataFrame object Returns: - dictionary: a dictionary variable that can be used in Kepler.gl ''' df_copy = df.copy() # Convert all columns that aren't JSON serializable to strings for col in df_copy.columns: try: # just check the first item in the column json.dumps(df_copy[col].iloc[0] if len(df_copy) > 0 else None) except (TypeError, OverflowError): df_copy[col] = df_copy[col].astype(str) return df_copy.to_dict('split') def _df_to_arrow(df: pd.DataFrame): ''' Create an arrow base64string for Kepler.gl using a DataFrame object Inputs: - df: a DataFrame object Returns: - string: a base64 string that can be used in Kepler.gl ''' arrow_table = pyarrow.Table.from_pandas(df) base64_string = _arrow_table_to_base64(arrow_table) return base64_string def _gdf_to_dict(gdf): ''' Create an input dict for kepler.gl using a GeoDataFrame object Inputs: - gdf: a GeoDataFrame object Returns: - dictionary: a dictionary variable that can be used in Kepler.gl ''' # reproject to 4326 if needed if gdf.crs and not gdf.crs == 4326: gdf = gdf.to_crs(4326) # get name of the geometry column # will cause error if data frame has no geometry column name = gdf.geometry.name # convert geodataframe to dataframe df = pd.DataFrame(gdf) # convert geometry to wkt df[name] = df.geometry.apply(lambda x: shapely.wkt.dumps(x)) # df[name] = shapely.wkt.dumps(df.geometry) return _df_to_dict(df) def _gdf_to_arrow(gdf): ''' Create an arrow base64string for Kepler.gl using a GeoDataFrame object''' # reproject to 4326 if needed if gdf.crs and not gdf.crs == 4326: gdf = gdf.to_crs(4326) # get name of the geometry column # will cause error if data frame has no geometry column name = gdf.geometry.name array = ga.as_geoarrow(gdf.geometry, coord_type=ga.CoordType.INTERLEAVED) table = pyarrow.Table.from_pandas(gdf.drop(columns=[name])) arrow_table = table.append_column(name, array) base64_string = _arrow_table_to_base64(arrow_table) return base64_string def _normalize_data(data, use_arrow=False): if isinstance(data, pd.DataFrame): if use_arrow: return _gdf_to_arrow(data) if isinstance(data, geopandas.GeoDataFrame) else _df_to_arrow(data) else: return _gdf_to_dict(data) if isinstance(data, geopandas.GeoDataFrame) else _df_to_dict(data) return data def data_to_json(data, manager): '''Serialize a Python data object. Attributes of this dictionary are to be passed to the JavaScript side. ''' if data is None: return None else: if not isinstance(data, dict): print(data) raise TraitError( f"data type incorrect expecting a dictionary mapping from data id to value, but got {type(data)}") else: dataset = {} # use g_use_arrow to determine if we should use arrow for key, value in data.items(): normalized = _normalize_data(value, g_use_arrow) dataset.update({key: normalized}) return dataset def data_from_json(js, manager): '''Deserialize a Javascript date.''' return js data_serialization = { 'from_json': data_from_json, 'to_json': data_to_json } class TraitError(Exception): pass class DataException(TraitError): pass @widgets.register class KeplerGl(widgets.DOMWidget): """An example widget.""" _view_name = Unicode('KeplerGlView').tag(sync=True) _model_name = Unicode('KeplerGlModal').tag(sync=True) _view_module = Unicode('keplergl-jupyter').tag(sync=True) _model_module = Unicode('keplergl-jupyter').tag(sync=True) _view_module_version = Unicode(EXTENSION_SPEC_VERSION).tag(sync=True) _model_module_version = Unicode(EXTENSION_SPEC_VERSION).tag(sync=True) # Attributes value = Unicode('Hello World!').tag(sync=True) data = Dict({}).tag(sync=True, **data_serialization) config = Dict({}).tag(sync=True) height = Int(400).tag(sync=True) def __init__(self, **kwargs): if 'show_docs' not in kwargs: kwargs['show_docs'] = True if kwargs['show_docs']: print(f"User Guide: {documentation}") kwargs.pop('show_docs') # assign use_arrow to global variable global g_use_arrow g_use_arrow = kwargs.get('use_arrow', False) super(KeplerGl, self).__init__(**kwargs) @validate('data') def _validate_data(self, proposal): '''Validate data input (return from data_to_json) Makes sure data is a dict, and each value should be either a df, a geojson dictionary / string or csv string layers list. ''' if not isinstance(proposal.value, dict): raise DataException(f"[data type error]: Expecting a dictionary mapping from id to value, but got {type(proposal.value)}") else: for key, value in proposal.value.items(): if not isinstance(value, pd.DataFrame) and not isinstance(value, str) and not isinstance(value, dict): raise DataException(f"[data type error]: value of {key} should be a DataFrame, a Geojson Dictionary or String, a csv String, but got {type(value)}") return proposal.value def add_data(self, data, name="unnamed", use_arrow=False): ''' Send data to Voyager Inputs: - data string, can be a dataframe, csv string or json string - name string Example of use: keplergl.add_data(data_string, name="data_1") ''' normalized = _normalize_data(data, use_arrow) copy = self.data.copy() copy.update({name: normalized}) self.data = copy def show(self, data=None, config=None, read_only=False, center_map=False): ''' Display current map in Google Colab Inputs: - data: a data dictionary {"name": data}, if not provided, will use current map data - config: map config dictionary, if not provided, will use current map config - read_only: if read_only is True, hide side panel to disable map customization - center_map: if center_map is True, the bound of the map will be updated according to the current map data Example of use: # this will display map in Google Colab from keplergl import KeplerGL map1 = KeplerGL() map1.show() ''' keplergl_html = resource_string( __name__, 'static/keplergl.html').decode('utf-8') # find open of body k = keplergl_html.find("") data_to_add = data_to_json(self.data if data is None else data, None) config_to_add = self.config if config is None else config keplergl_data = json.dumps({"config": config_to_add, "data": data_to_add, "options": { "readOnly": read_only, "centerMap": center_map}}) cmd = f"window.__keplerglDataConfig = {keplergl_data};" frame_txt = keplergl_html[:k] + "" + keplergl_html[k+6:] if "google.colab" in sys.modules: from IPython.display import HTML, Javascript display(HTML(frame_txt)) display(Javascript( f"google.colab.output.setIframeHeight('{self.height}');")) def _repr_html_(self, data=None, config=None, read_only=False, center_map=False): ''' Return current map in an html encoded string Inputs: - data: a data dictionary {"name": data}, if not provided, will use current map data - config: map config dictionary, if not provided, will use current map config - read_only: if read_only is True, hide side panel to disable map customization - center_map: if center_map is True, the bound of the map will be updated according to the current map data Returns: - a html encoded string Example of use: # this will save map with provided data and config keplergl._repr_html_(data={"data_1": df}, config=config) # this will save current map keplergl._repr_html_() ''' keplergl_html = resource_string( __name__, 'static/keplergl.html').decode('utf-8') # find open of body k = keplergl_html.find("") data_to_add = data_to_json(self.data if data is None else data, None) config_to_add = self.config if config is None else config # for key in data_to_add: # print(type(data_to_add[key])) keplergl_data = json.dumps({"config": config_to_add, "data": data_to_add, "options": { "readOnly": read_only, "centerMap": center_map}}) cmd = f"window.__keplerglDataConfig = {keplergl_data};" frame_txt = keplergl_html[:k] + "" + keplergl_html[k+6:] return frame_txt.encode('utf-8') def save_to_html(self, data=None, config=None, file_name='keplergl_map.html', read_only=False, center_map=False): ''' Save current map to an interactive html Inputs: - data: a data dictionary {"name": data}, if not provided, will use current map data - config: map config dictionary, if not provided, will use current map config - file_name: the html file name, default is keplergl_map.html - read_only: if read_only is True, hide side panel to disable map customization Returns: - an html file will be saved to your notebook Example of use: # this will save map with provided data and config keplergl.save_to_html(data={"data_1": df}, config=config, file_name='first_map.html') # this will save current map keplergl.save_to_html(file_name='first_map.html') ''' frame_txt = self._repr_html_( data=data, config=config, read_only=read_only, center_map=center_map) with open(file_name, 'wb') as f: f.write(frame_txt) print(f"Map saved to {file_name}!") ================================================ FILE: bindings/kepler.gl-jupyter/keplergl-jupyter.json ================================================ { "load_extensions": { "keplergl-jupyter/extension": true } } ================================================ FILE: bindings/kepler.gl-jupyter/notebooks/DataFrame.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "df = pd.DataFrame(\n", " {'City': ['Buenos Aires', 'Brasilia', 'Santiago', 'Bogota', 'Caracas'],\n", " 'Country': ['Argentina', 'Brazil', 'Chile', 'Colombia', 'Venezuela'],\n", " 'Latitude': [-34.58, -15.78, -33.45, 4.60, 10.48],\n", " 'Longitude': [-58.66, -47.91, -70.66, -74.08, -66.86],\n", " 'Time': ['2019-09-01 08:00','2019-09-01 09:00','2019-09-01 10:00','2019-09-01 11:00', '2019-09-01 12:00']\n", " })" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "User Guide: https://docs.kepler.gl/docs/keplergl-jupyter\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "b85241da03b2474bb2c5cb6cef155a80", "version_major": 2, "version_minor": 0 }, "text/plain": [ "KeplerGl(data={'data_1': City Country Latitude Longitude Time\n", "0 Buenos Aires Ar…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import keplergl\n", "w1 = keplergl.KeplerGl(height=600, data={'data_1': df})\n", "w1" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Map saved to keplergl_map.html!\n" ] } ], "source": [ "w1.save_to_html(file_name='keplergl_map.html')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 4 } ================================================ FILE: bindings/kepler.gl-jupyter/notebooks/GeoDataFrame.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import geopandas" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "df = pd.DataFrame(\n", " {'City': ['Buenos Aires', 'Brasilia', 'Santiago', 'Bogota', 'Caracas'],\n", " 'Country': ['Argentina', 'Brazil', 'Chile', 'Colombia', 'Venezuela'],\n", " 'Latitude': [-34.58, -15.78, -33.45, 4.60, 10.48],\n", " 'Longitude': [-58.66, -47.91, -70.66, -74.08, -66.86]})" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "point_gdf = geopandas.GeoDataFrame(df, geometry=geopandas.points_from_xy(df.Longitude, df.Latitude))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": true }, "outputs": [], "source": [ "zipcode_gdf = geopandas.read_file('sf_zip_geo.json')\n", "display(zipcode_gdf.head(5))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": false }, "outputs": [], "source": [ "import keplergl\n", "w1 = keplergl.KeplerGl(height=500)\n", "w1" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "w1.add_data(data=zipcode_gdf, name=\"zipcode\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "w1.add_data(data=point_gdf, name='cities')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "w1.save_to_html(file_name='city_map.html', read_only=True)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: bindings/kepler.gl-jupyter/notebooks/GeoJSON.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "with open('geojson-data.json', 'r') as f:\n", " geojson = f.read()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import keplergl\n", "map_1 = keplergl.KeplerGl(height=600)\n", "map_1" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "map_1.add_data(geojson, \"geojson\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "map_1.save_to_html(file_name=\"geojson_map.html\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: bindings/kepler.gl-jupyter/notebooks/Load kepler.gl.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "df = pd.read_csv('hex-data.csv')\n", "df = df.fillna('')\n", "print(df)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import json\n", "with open('sf_zip_geo.json', 'r') as f:\n", " geojson = f.read()\n", "\n", "json_data=json.loads(geojson)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# assign config = hex_config\n", "%run hex_config.py" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import keplergl\n", "w1 = keplergl.KeplerGl(height=500, data={\"data_1\": df}, config=config)\n", "# w1 = keplergl.KeplerGl(height=500)\n", "w1" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": true }, "outputs": [], "source": [ "w1.add_data(df, 'data_1')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "w1.config" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "w1.add_data(json_data, 'geojson')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "w1.save_to_html(file_name='first_map.html', data={\"data_1\": df}, config=config)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 4 } ================================================ FILE: bindings/kepler.gl-jupyter/notebooks/geojson-data.json ================================================ { "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": { "fill": true }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 2.331032753, 48.8411359942 ], [ 2.3269987106, 48.8425764529 ], [ 2.3253250122, 48.8431130838 ], [ 2.3240375519, 48.8435367357 ], [ 2.3217630386, 48.8443840288 ], [ 2.3203468323, 48.8448923977 ], [ 2.3189735413, 48.8453160346 ], [ 2.3167848587, 48.846558682 ], [ 2.3136520386, 48.8456831836 ], [ 2.3111844063, 48.8450618529 ], [ 2.3070859909, 48.8438897762 ], [ 2.2969740629, 48.8408994443 ], [ 2.2952359915, 48.8427106112 ], [ 2.2949945927, 48.84285183 ], [ 2.2928863764, 48.8436249961 ], [ 2.2912180424, 48.844327543 ], [ 2.2873932123, 48.8458173336 ], [ 2.2863632441, 48.8462833253 ], [ 2.2854137421, 48.8467704938 ], [ 2.2820448875, 48.849008584 ], [ 2.2804355621, 48.8498063649 ], [ 2.2793841362, 48.8498204848 ], [ 2.2790408134, 48.8506535519 ], [ 2.2756505013, 48.8526585039 ], [ 2.2742128372, 48.8531667889 ], [ 2.2726249695, 48.8535197615 ], [ 2.2703289986, 48.8542539366 ], [ 2.2671747208, 48.8551434035 ], [ 2.2649002075, 48.855694018 ], [ 2.2637414932, 48.8544233601 ], [ 2.2617030144, 48.8551010483 ], [ 2.2633981705, 48.8576564152 ], [ 2.2649002075, 48.8599434285 ], [ 2.2664451599, 48.8626538275 ], [ 2.2666811943, 48.8631902432 ], [ 2.267947197, 48.8647006461 ], [ 2.2694063187, 48.8667897264 ], [ 2.2713589668, 48.8690480934 ], [ 2.2736120224, 48.871009967 ], [ 2.2753071785, 48.8723507717 ], [ 2.2773456573, 48.8737197667 ], [ 2.2782897949, 48.8750040476 ], [ 2.2804999352, 48.8774737258 ], [ 2.2818946838, 48.8795058267 ], [ 2.2835040092, 48.8808605148 ], [ 2.2857570648, 48.882229277 ], [ 2.2899627686, 48.8848396989 ], [ 2.2913146019, 48.8857568418 ], [ 2.294511795, 48.8876475141 ], [ 2.2955846786, 48.8878732613 ], [ 2.2964859009, 48.8878027154 ], [ 2.297065258, 48.8876192956 ], [ 2.2975587845, 48.8874923124 ], [ 2.298116684, 48.8875064216 ], [ 2.298438549, 48.8875910772 ], [ 2.2989320755, 48.8879296979 ], [ 2.2997903824, 48.8882965344 ], [ 2.3006701469, 48.8886210414 ], [ 2.3015713692, 48.889270049 ], [ 2.3037815094, 48.8903423041 ], [ 2.3057985306, 48.8900742425 ], [ 2.3074293137, 48.8893405928 ], [ 2.3093390465, 48.8887762396 ], [ 2.311205864, 48.8880566801 ], [ 2.314145565, 48.8876051864 ], [ 2.3184370995, 48.8917954552 ], [ 2.3220419884, 48.8897497449 ], [ 2.325668335, 48.887703951 ], [ 2.3268485069, 48.8851924481 ], [ 2.3274922371, 48.8838378774 ], [ 2.328063794, 48.883946667 ], [ 2.329651662, 48.88493438 ], [ 2.336046047, 48.88318471 ], [ 2.339479275, 48.882422738 ], [ 2.342912503, 48.882987163 ], [ 2.345744913, 48.883551581 ], [ 2.34951366, 48.884013132 ], [ 2.35071529, 48.882827858 ], [ 2.351959835, 48.881501444 ], [ 2.352954691, 48.880503646 ], [ 2.354234348, 48.8790743 ], [ 2.355393062, 48.877752921 ], [ 2.35625137, 48.876623947 ], [ 2.3603439331, 48.8759495959 ], [ 2.3634767532, 48.875413317 ], [ 2.3630905151, 48.8741996118 ], [ 2.3636484146, 48.8733528233 ], [ 2.3643350601, 48.8725060204 ], [ 2.3652791977, 48.8711511061 ], [ 2.3658370972, 48.8704171788 ], [ 2.3668670654, 48.8691468946 ], [ 2.3678970337, 48.8694432972 ], [ 2.3685836792, 48.8686105428 ], [ 2.368991375, 48.8680459556 ], [ 2.3677682877, 48.8677636597 ], [ 2.3687553406, 48.8666626902 ], [ 2.3702573776, 48.8647994559 ], [ 2.371544838, 48.8632184755 ], [ 2.3724031448, 48.8618350766 ], [ 2.3724031448, 48.8604516395 ], [ 2.3719739914, 48.8594634467 ], [ 2.371544838, 48.8586164088 ], [ 2.3711585999, 48.8575434736 ], [ 2.3706436157, 48.8566681672 ], [ 2.3701715469, 48.8555951902 ], [ 2.3698282242, 48.8546916128 ], [ 2.3700428009, 48.8529126471 ], [ 2.3684120178, 48.8526302657 ], [ 2.3662662506, 48.8520654983 ], [ 2.3646354675, 48.8515007245 ], [ 2.3644798994, 48.8514583662 ], [ 2.3643136024, 48.8514195377 ], [ 2.3640614748, 48.8513312911 ], [ 2.3639059067, 48.8512854028 ], [ 2.3637878895, 48.8512395145 ], [ 2.3636591434, 48.8511759767 ], [ 2.3634928465, 48.8511159687 ], [ 2.363294363, 48.8510594905 ], [ 2.3630422354, 48.8509888927 ], [ 2.3628437519, 48.8509394742 ], [ 2.3625648022, 48.8507806287 ], [ 2.3624360561, 48.8507100305 ], [ 2.3620980978, 48.8506641416 ], [ 2.3619157076, 48.8506394322 ], [ 2.3615992069, 48.8506217826 ], [ 2.361395359, 48.8505829535 ], [ 2.3611968756, 48.8505441243 ], [ 2.3611646891, 48.8504982353 ], [ 2.361100316, 48.8504452864 ], [ 2.3609608412, 48.8503888075 ], [ 2.3608535528, 48.8503287985 ], [ 2.3607730865, 48.8502970291 ], [ 2.3605155945, 48.8502299602 ], [ 2.360419035, 48.8501805409 ], [ 2.3603439331, 48.8501523013 ], [ 2.3601508141, 48.8500287529 ], [ 2.3589706421, 48.8495804459 ], [ 2.3583698273, 48.8491850853 ], [ 2.365322113, 48.8442710572 ], [ 2.3629188538, 48.8400909296 ], [ 2.3513317108, 48.8363624133 ], [ 2.3368692398, 48.8393000554 ], [ 2.3351955414, 48.8398367214 ], [ 2.3342084885, 48.8402039106 ], [ 2.3331356049, 48.8405146071 ], [ 2.331032753, 48.8411359942 ] ] ] } } ] } ================================================ FILE: bindings/kepler.gl-jupyter/notebooks/hex-data.csv ================================================ hex_id,value,is_true,float_value,empty,time 89283082c2fffff,64,true,64.1,,11/1/17 11:00 8928308288fffff,73,true,73.1,,11/1/17 11:00 89283082c07ffff,65,true,65.1,,11/1/17 11:00 89283082817ffff,74,true,74.1,,11/1/17 11:00 89283082c3bffff,66,true,66.1,,11/1/17 11:00 89283082883ffff,76,true,76.1,,11/1/17 11:00 89283082c03ffff,60,true,60.1,,11/1/17 11:00 89283082807ffff,68,true,68.1,,11/1/17 10:00 8928308289bffff,49,true,49.1,,11/1/17 11:00 89283082c0fffff,41,true,41.1,,11/1/17 11:00 89283082c87ffff,50,true,50.1,,11/1/17 11:00 89283082d4fffff,45,true,45.1,,11/1/17 11:00 89283082c77ffff,41,true,41.1,,11/1/17 11:00 89283082c2bffff,53,true,53.1,,11/1/17 11:00 89283082803ffff,41,true,41.1,,11/1/17 11:00 89283082813ffff,43,true,43.1,,11/1/17 11:00 89283082d5bffff,45,true,45.1,,11/1/17 11:00 89283082897ffff,40,true,40.1,,11/1/17 11:00 89283082c67ffff,42,true,42.1,,11/1/17 11:00 89283082d47ffff,51,true,51.1,,11/1/17 11:00 89283082dc3ffff,52,true,52.1,,11/1/17 11:00 89283082c33ffff,43,true,43.1,,11/1/17 11:00 89283082c23ffff,40,true,40.1,,11/1/17 11:00 89283082887ffff,36,true,36.1,,11/1/17 11:00 89283082d4bffff,36,true,36.1,,11/1/17 11:00 892830828bbffff,48,true,48.1,,11/1/17 11:00 892830828b7ffff,28,true,28.1,,11/1/17 11:00 89283082c17ffff,34,true,34.1,,11/1/17 11:00 89283082c6fffff,21,true,21.1,,11/1/17 12:00 8928308288bffff,25,true,25.1,,11/1/17 11:00 892830828abffff,26,true,26.1,,11/1/17 11:00 89283082c27ffff,27,true,27.1,,11/1/17 11:00 89283082c8fffff,33,true,33.1,,11/1/17 11:00 89283082cafffff,29,true,29.1,,11/1/17 11:00 89283082c13ffff,27,true,27.1,,11/1/17 11:00 89283082cabffff,22,true,22.1,,11/1/17 11:00 89283082c63ffff,26,true,26.1,,11/1/17 11:00 89283082d43ffff,30,true,30.1,,11/1/17 11:00 89283082d53ffff,19,true,19.1,,11/1/17 11:00 892830828a3ffff,28,false,28.1,,11/1/17 11:00 89283082d1bffff,20,false,20.1,,11/1/17 11:00 89283095367ffff,17,false,17.1,,11/1/17 11:00 8928309536bffff,26,false,26.1,,11/1/17 11:00 89283082c37ffff,16,false,16.1,,11/1/17 11:00 89283082c73ffff,17,false,17.1,,11/1/17 11:00 89283082c8bffff,15,false,15.1,,11/1/17 11:00 89283082ca7ffff,27,false,27.1,,11/1/17 11:00 89283082cb3ffff,32,false,32.1,,11/1/17 11:00 89283082c0bffff,26,false,26.1,,11/1/17 11:00 89283082ca3ffff,19,false,19.1,,11/1/17 11:00 89283082dcfffff,18,false,18.1,,11/1/17 11:00 89283082c1bffff,20,false,20.1,,11/1/17 15:00 89283082ddbffff,18,false,18.1,,11/1/17 11:00 8928309534fffff,16,false,16.1,,11/1/17 11:00 89283082d03ffff,15,false,15.1,,11/1/17 11:00 89283082cbbffff,21,false,21.1,,11/1/17 11:00 89283082cd7ffff,9,true,9.1,,11/1/17 11:00 8928309534bffff,9,true,9.1,,11/1/17 11:00 892830828c7ffff,13,true,13.1,,11/1/17 11:00 89283082cc7ffff,12,true,12.1,,11/1/17 11:00 89283082d0bffff,19,true,19.1,,11/1/17 11:00 89283082dcbffff,19,true,19.1,,11/1/17 11:00 89283082dd3ffff,15,true,15.1,,11/1/17 11:00 89283082dd7ffff,15,true,15.1,,11/1/17 11:00 892830828d7ffff,13,true,13.1,,11/1/17 11:00 89283082d17ffff,5,true,5.1,,11/1/17 11:00 8928309536fffff,8,true,8.1,,11/1/17 11:00 89283095373ffff,6,true,6.1,,11/1/17 11:00 89283082cb7ffff,15,true,15.1,,11/1/17 11:00 89283082d83ffff,9,true,9.1,,11/1/17 11:00 89283082d07ffff,4,true,4.1,,11/1/17 11:00 89283082d0fffff,3,true,3.1,,11/1/17 11:00 89283082d13ffff,6,true,6.1,,11/1/17 11:00 89283082d9bffff,5,true,5.1,,11/1/17 11:00 89283082c83ffff,11,true,11.1,,11/1/17 11:00 89283082d8bffff,4,true,4.1,,11/1/17 11:00 89283082dc7ffff,5,true,5.1,,11/1/17 11:00 89283095377ffff,5,true,5.1,,11/1/17 11:00 89283082c97ffff,4,true,4.1,,11/1/17 11:00 89283082d7bffff,2,true,2.1,,11/1/17 11:00 89283082d8fffff,1,true,1.1,,11/1/17 11:00 89283095347ffff,3,true,3.1,,11/1/17 11:00 89283095363ffff,2,true,2.1,,11/1/17 11:00 8928309537bffff,4,true,4.1,,11/1/17 11:00 89283082d93ffff,6,true,6.1,,11/1/17 11:00 89283082d73ffff,1,true,1.1,,11/1/17 13:00 8928309530bffff,1,true,1.1,,11/1/17 11:00 8928309532bffff,1,true,1.1,,11/1/17 11:00 ================================================ FILE: bindings/kepler.gl-jupyter/notebooks/hex_config.py ================================================ # SPDX-License-Identifier: MIT # Copyright contributors to the kepler.gl project config = {u'version': u'v1', u'config': {u'visState': {u'layers': [{u'type': u'hexagonId', u'visualChannels': {u'sizeField': {u'type': u'integer', u'name': u'value'}, u'coverageField': None, u'colorScale': u'quantize', u'coverageScale': u'linear', u'colorField': {u'type': u'integer', u'name': u'value'}, u'sizeScale': u'linear'}, u'config': {u'dataId': u'data_1', u'color': [250, 116, 0], u'textLabel': {u'color': [255, 255, 255], u'field': None, u'size': 50, u'anchor': u'middle', u'offset': [0, 0]}, u'label': u'H3 Hexagon', u'isVisible': True, u'visConfig': {u'coverageRange': [0, 1], u'opacity': 0.8, u'elevationScale': 5, u'hi-precision': False, u'coverage': 1, u'enable3d': True, u'sizeRange': [0, 500], u'colorRange': {u'category': u'Uber', u'type': u'sequential', u'colors': [u'#194266', u'#355C7D', u'#63617F', u'#916681', u'#C06C84', u'#D28389', u'#E59A8F', u'#F8B195'], u'reversed': False, u'name': u'Sunrise 8'}}, u'columns': {u'hex_id': u'hex_id'}}, u'id': u'jdys7lp'}], u'interactionConfig': {u'brush': {u'enabled': False, u'size': 0.5}, u'tooltip': {u'fieldsToShow': {u'data_1': [u'hex_id', u'value']}, u'enabled': True}}, u'splitMaps': [], u'layerBlending': u'normal', u'filters': []}, u'mapState': {u'bearing': 2.6192893401015205, u'dragRotate': True, u'zoom': 12.32053899007826, u'longitude': -122.42590232651203, u'isSplit': False, u'pitch': 37.374216241015446, u'latitude': 37.76209132041332}, u'mapStyle': {u'mapStyles': {}, u'topLayerGroups': {}, u'styleType': u'dark', u'visibleLayerGroups': {u'building': True, u'land': True, u'3d building': False, u'label': True, u'water': True, u'border': False, u'road': True}}}} ================================================ FILE: bindings/kepler.gl-jupyter/notebooks/sf_zip_geo.json ================================================ {"type": "FeatureCollection","features": [ {"type": "Feature", "properties": {"OBJECTID":1,"ZIP_CODE":94107,"ID":94107},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.401159718585049, 37.782024266952142 ], [ -122.400374366843309, 37.782644515545172 ], [ -122.400019020063766, 37.782925153640136 ], [ -122.399891477967842, 37.783025880124256 ], [ -122.398930331092998, 37.783784933304034 ], [ -122.397811613142864, 37.784666586003652 ], [ -122.396705177550587, 37.785542130425938 ], [ -122.395895701657864, 37.784896929203114 ], [ -122.395160622349934, 37.78431101230386 ], [ -122.394398389309941, 37.783701667981575 ], [ -122.39343711789931, 37.784459123881106 ], [ -122.39286959393705, 37.78478280203197 ], [ -122.39285700396303, 37.784773072758867 ], [ -122.392216553530702, 37.784278123341721 ], [ -122.392215026316663, 37.784279352365694 ], [ -122.392118766536498, 37.784205306785267 ], [ -122.392032919786118, 37.784168354830349 ], [ -122.391600764141245, 37.783823989838545 ], [ -122.391599105853345, 37.783822668268179 ], [ -122.390856721023212, 37.784410569188324 ], [ -122.389846392025618, 37.783609176617361 ], [ -122.389843136047602, 37.783611740842574 ], [ -122.388306939892615, 37.782385221520776 ], [ -122.388304301898813, 37.782356717503951 ], [ -122.388231340039766, 37.782146697467269 ], [ -122.388106738902522, 37.781931906493995 ], [ -122.388094863959623, 37.781887241816527 ], [ -122.387765464889313, 37.78194244138043 ], [ -122.387754811744713, 37.781795652877442 ], [ -122.385560654233757, 37.781935833609538 ], [ -122.385544999019174, 37.781932650370386 ], [ -122.38553439339303, 37.781923892586839 ], [ -122.385511671392734, 37.781778670688965 ], [ -122.384922372713746, 37.781810068903333 ], [ -122.384901998602373, 37.781825502544642 ], [ -122.384858074907243, 37.781799422577222 ], [ -122.384893494062709, 37.781763146995921 ], [ -122.38491634743859, 37.781777202531266 ], [ -122.38550727073536, 37.781741658296774 ], [ -122.385491676395333, 37.781604563077408 ], [ -122.385493075388183, 37.781591492690396 ], [ -122.38550321006835, 37.781581716485675 ], [ -122.385518655734231, 37.781576662678262 ], [ -122.38762837564704, 37.781450881969413 ], [ -122.387583140105036, 37.780964719298666 ], [ -122.387467577483136, 37.780979617487112 ], [ -122.387479366190874, 37.781103038700273 ], [ -122.387462086323822, 37.781104002067416 ], [ -122.387450297298699, 37.780980580858106 ], [ -122.387337984465276, 37.780987185935416 ], [ -122.387348026094102, 37.781109948402708 ], [ -122.387330746223768, 37.781110911750616 ], [ -122.387320704623349, 37.780988149281868 ], [ -122.387206644553231, 37.780994095205941 ], [ -122.387216703416328, 37.781117544403045 ], [ -122.387199423542512, 37.781118507731705 ], [ -122.387189364714985, 37.780995058807726 ], [ -122.387068420460224, 37.78100248851576 ], [ -122.387080191758074, 37.781125223313062 ], [ -122.387062911534741, 37.78112618662724 ], [ -122.387051140611234, 37.78100345182272 ], [ -122.386937097943829, 37.781010084204837 ], [ -122.386948869025886, 37.781132819015049 ], [ -122.386931588799087, 37.78113378231 ], [ -122.386919818091386, 37.781011047492527 ], [ -122.386812677010425, 37.7810168822962 ], [ -122.386824465334769, 37.781140303837503 ], [ -122.386807185104601, 37.781141267114201 ], [ -122.386795397161777, 37.781017845840225 ], [ -122.386676165495402, 37.781024560738594 ], [ -122.386687953248156, 37.781147982298883 ], [ -122.386670672668515, 37.781148945561135 ], [ -122.386658885297223, 37.781025524268173 ], [ -122.386543112789369, 37.781032183675542 ], [ -122.386554900668202, 37.781155605243434 ], [ -122.386537620431014, 37.781156568480647 ], [ -122.386525832933643, 37.781033147180089 ], [ -122.386411790166775, 37.781039778779515 ], [ -122.386423577828609, 37.781163200360375 ], [ -122.386406297587911, 37.781164163578339 ], [ -122.386394510307582, 37.7810407422648 ], [ -122.386282162758775, 37.781045973167615 ], [ -122.386293984730017, 37.781170767655468 ], [ -122.386276704139945, 37.78117173085996 ], [ -122.386264917419695, 37.781048309528096 ], [ -122.386147415421732, 37.781054996216575 ], [ -122.386159201954754, 37.781178417834589 ], [ -122.386141922053085, 37.781179381008279 ], [ -122.386130135209612, 37.78105595966862 ], [ -122.386019552249252, 37.781062535536719 ], [ -122.386031321484509, 37.781185270717479 ], [ -122.386014040887659, 37.781186233883489 ], [ -122.386002272033735, 37.781063498970049 ], [ -122.385879580345062, 37.78107026841095 ], [ -122.385891367127385, 37.781193690044354 ], [ -122.385874086872718, 37.781194653184308 ], [ -122.385862300471871, 37.781071231818238 ], [ -122.385755176650932, 37.781077752105325 ], [ -122.385766945797698, 37.781200487306606 ], [ -122.385749665539848, 37.78120145042832 ], [ -122.385737896774387, 37.781078715494381 ], [ -122.385622107018349, 37.781084687547477 ], [ -122.385633892683231, 37.781208109217374 ], [ -122.385616612767805, 37.781209072314041 ], [ -122.385604844221021, 37.781086337366979 ], [ -122.385487342103474, 37.781093023397624 ], [ -122.385499110464124, 37.781215758630843 ], [ -122.38548182985329, 37.781216721718849 ], [ -122.385470061873946, 37.781093986752957 ], [ -122.385352559732169, 37.781100672649266 ], [ -122.38536432752538, 37.781223407901315 ], [ -122.385347047602892, 37.781224370958491 ], [ -122.385335279499117, 37.781101635984861 ], [ -122.385219507099919, 37.781108294087041 ], [ -122.385231275020445, 37.781231029346657 ], [ -122.385213994748526, 37.781231992389863 ], [ -122.385202226517421, 37.781109257408659 ], [ -122.385086454440369, 37.781115915374649 ], [ -122.385098222142247, 37.781238650647374 ], [ -122.385080941520883, 37.781239613676604 ], [ -122.385069174200339, 37.781116878671227 ], [ -122.38495511409829, 37.781122822411653 ], [ -122.384966899006869, 37.781246244141819 ], [ -122.384949618382038, 37.781247207151821 ], [ -122.384937851277286, 37.781124472133506 ], [ -122.384823791153082, 37.781130415746894 ], [ -122.384835575844662, 37.781253837490027 ], [ -122.384818295216348, 37.781254800480774 ], [ -122.384792264836477, 37.780979154238715 ], [ -122.384809545055035, 37.780978191257269 ], [ -122.384831743135436, 37.781102819695278 ], [ -122.384925045670656, 37.781097207947639 ], [ -122.384923587517477, 37.780971560938383 ], [ -122.384940867732567, 37.780970597937682 ], [ -122.384963066031062, 37.781095226351141 ], [ -122.385056368546813, 37.781089614499592 ], [ -122.385054910171618, 37.780963967491779 ], [ -122.385072190383269, 37.780963004471836 ], [ -122.385094388899816, 37.781087632860746 ], [ -122.385189421508272, 37.781081993240349 ], [ -122.385187962562227, 37.780956346239556 ], [ -122.385205242424405, 37.780955383205644 ], [ -122.38522744150788, 37.781080011564157 ], [ -122.385322474096498, 37.781074371836517 ], [ -122.385321014925523, 37.780948724837195 ], [ -122.385338295130154, 37.780947761778229 ], [ -122.385360493742681, 37.78107239012293 ], [ -122.385457256077231, 37.781066722624757 ], [ -122.385455797024363, 37.780941075621371 ], [ -122.38547307722547, 37.78094011254268 ], [ -122.385495276407823, 37.781064740856642 ], [ -122.385592038722095, 37.781059073247853 ], [ -122.385590579095435, 37.780933426251508 ], [ -122.385607859293003, 37.780932463153057 ], [ -122.385630058353271, 37.781057091447337 ], [ -122.38572509122794, 37.781051451389651 ], [ -122.385723631030388, 37.780925804400319 ], [ -122.385740911570423, 37.780924841276843 ], [ -122.385763111197619, 37.781049469540704 ], [ -122.385849512311808, 37.781044654171389 ], [ -122.385848051896943, 37.78091900690886 ], [ -122.385865332440758, 37.780918044041726 ], [ -122.385887514843574, 37.781041985837916 ], [ -122.385989466046908, 37.781036234899503 ], [ -122.385988006094351, 37.780910587902042 ], [ -122.386005286281474, 37.780909624745334 ], [ -122.386027486347686, 37.781034252959756 ], [ -122.38611734695634, 37.781029382050761 ], [ -122.386115886434652, 37.78090373478566 ], [ -122.386133166625513, 37.780902771884811 ], [ -122.386155349124707, 37.781026713636507 ], [ -122.386250399355106, 37.78102175959976 ], [ -122.386248938262554, 37.780896112341686 ], [ -122.386266218795839, 37.780895149415798 ], [ -122.386288401860739, 37.781019091137082 ], [ -122.386381721962337, 37.781014164675518 ], [ -122.386380260647812, 37.780888517418902 ], [ -122.386397541177601, 37.780887554473743 ], [ -122.386419741895395, 37.781012182614816 ], [ -122.386513044542724, 37.781006569605005 ], [ -122.386511583006197, 37.780880922349844 ], [ -122.386528863532533, 37.780879959385452 ], [ -122.386551064468406, 37.781004587501954 ], [ -122.386646096514042, 37.780998946712984 ], [ -122.386644635444497, 37.780873299448245 ], [ -122.386661915621403, 37.780872336469891 ], [ -122.386684116778227, 37.780996964561524 ], [ -122.386782608677009, 37.780991268294322 ], [ -122.386781146684797, 37.780865621042153 ], [ -122.386798427204084, 37.780864658038261 ], [ -122.386820628587657, 37.780989286104372 ], [ -122.386907012122748, 37.780983783515829 ], [ -122.386905549920243, 37.780858136265046 ], [ -122.386922830436163, 37.780857173242921 ], [ -122.386945032026247, 37.780981801285769 ], [ -122.387038334595715, 37.780976187860247 ], [ -122.387036872171194, 37.780850540610921 ], [ -122.387054152683675, 37.780849577569541 ], [ -122.387076354491839, 37.780974205587825 ], [ -122.387174846330339, 37.780968508992949 ], [ -122.387173384021025, 37.7808428617396 ], [ -122.387190664183962, 37.780841898683754 ], [ -122.387212865872911, 37.78096652668205 ], [ -122.387306168748907, 37.78096091303906 ], [ -122.387304706217577, 37.780835265787175 ], [ -122.387321986377088, 37.780834302712059 ], [ -122.387344188284104, 37.780958930685784 ], [ -122.387435761378228, 37.780953344631229 ], [ -122.387434316073197, 37.780828383824961 ], [ -122.387451578437933, 37.780826734292219 ], [ -122.387473781252041, 37.780951362230645 ], [ -122.387582651602727, 37.780945499137275 ], [ -122.38754001837809, 37.780493630652451 ], [ -122.38744131821305, 37.780491090765793 ], [ -122.387419058221624, 37.780500374265543 ], [ -122.387330736209734, 37.780497667864211 ], [ -122.387308476209526, 37.780506951617653 ], [ -122.387208063026961, 37.780505125406954 ], [ -122.387184073602839, 37.780514436820333 ], [ -122.387081931006932, 37.780512638185321 ], [ -122.387059670971126, 37.780521921891747 ], [ -122.386964429936867, 37.780519325963184 ], [ -122.386942169884378, 37.780528609647433 ], [ -122.386852118103619, 37.780525930572708 ], [ -122.386829875474817, 37.780535900680007 ], [ -122.386736346744712, 37.780532590439464 ], [ -122.386712374345294, 37.780542588206671 ], [ -122.386618863049748, 37.780539964317235 ], [ -122.386594873201545, 37.780549275890777 ], [ -122.386499632141522, 37.780546679312224 ], [ -122.386475659366695, 37.780556677311395 ], [ -122.386383878154234, 37.780554025277233 ], [ -122.386359888272054, 37.780563336802956 ], [ -122.386266376955888, 37.780560712359396 ], [ -122.386242404491071, 37.780570710305611 ], [ -122.386143703562112, 37.780568168794694 ], [ -122.386119713984229, 37.780577479991436 ], [ -122.386022743164474, 37.78057491124985 ], [ -122.386000500402702, 37.780584880926071 ], [ -122.385901799477139, 37.780582339761835 ], [ -122.385877827288269, 37.780592337079185 ], [ -122.385784298190572, 37.780589026363579 ], [ -122.38576205573851, 37.780598995989244 ], [ -122.385668544412525, 37.780596371620753 ], [ -122.385646283822041, 37.780605654791167 ], [ -122.385554502585677, 37.780603002386016 ], [ -122.385532242331863, 37.780612285803919 ], [ -122.385433541724893, 37.780609743967645 ], [ -122.385411298534606, 37.78061971381274 ], [ -122.385310868512505, 37.780617199530866 ], [ -122.385288625649494, 37.780627169347277 ], [ -122.385191654786624, 37.780624599647666 ], [ -122.38516766472523, 37.780633910656128 ], [ -122.385079342290652, 37.780631202574007 ], [ -122.385057082314987, 37.780640485896626 ], [ -122.384960111442751, 37.78063791600659 ], [ -122.384936138770243, 37.780647913412501 ], [ -122.384835917442729, 37.780653636341071 ], [ -122.384842007573795, 37.78075723388941 ], [ -122.384817825799914, 37.78075899421075 ], [ -122.38480325384981, 37.78052574104445 ], [ -122.384827435209161, 37.780523981006105 ], [ -122.384843799331136, 37.780623294238858 ], [ -122.384923281326039, 37.780618589884874 ], [ -122.384925926962097, 37.780518286009212 ], [ -122.384957841591557, 37.780616663880899 ], [ -122.385044241908545, 37.780611849106826 ], [ -122.385045157967028, 37.780511572605498 ], [ -122.385078784737303, 37.780609236348262 ], [ -122.385154824277294, 37.780605273878329 ], [ -122.385157469939188, 37.780504969717121 ], [ -122.38518938452367, 37.780603347531915 ], [ -122.385275768076681, 37.780597846132551 ], [ -122.385276683130513, 37.780497569640254 ], [ -122.385310328316436, 37.780595919750695 ], [ -122.385398458680143, 37.78059107677575 ], [ -122.385399356494702, 37.780490114106904 ], [ -122.385433018927529, 37.78058915090709 ], [ -122.385519402086118, 37.780583648785594 ], [ -122.385520317170744, 37.78048337283478 ], [ -122.385553962326881, 37.780581722881479 ], [ -122.385633443879414, 37.780577017779677 ], [ -122.385634358810009, 37.780476741827854 ], [ -122.385666274013943, 37.780575119514069 ], [ -122.385749215060514, 37.780570359001402 ], [ -122.385750112750941, 37.780469396598548 ], [ -122.385783775282164, 37.780568432755352 ], [ -122.385864986912736, 37.780563700098369 ], [ -122.385865884092837, 37.780462737425502 ], [ -122.38589954712829, 37.780561773818384 ], [ -122.385987659981154, 37.780556243958578 ], [ -122.385988556648442, 37.780455281290152 ], [ -122.386022220190043, 37.78055431764264 ], [ -122.386106890951012, 37.780549529481313 ], [ -122.386107787802118, 37.780448566806321 ], [ -122.386141451153719, 37.780547603130415 ], [ -122.386229563971753, 37.780542073089819 ], [ -122.386232190406915, 37.780441082739081 ], [ -122.386264124167781, 37.780540146702961 ], [ -122.386347065143937, 37.780535386044313 ], [ -122.386349691419113, 37.78043439569084 ], [ -122.386381625333826, 37.780533459623001 ], [ -122.386462836549086, 37.780528726834362 ], [ -122.386465444877402, 37.780427049764754 ], [ -122.386497396725886, 37.780526800104532 ], [ -122.386582067431817, 37.780522011876563 ], [ -122.386584675942643, 37.78042033479867 ], [ -122.386616627602407, 37.780520085111789 ], [ -122.386699551102055, 37.78051463803542 ], [ -122.386702159451801, 37.78041296095477 ], [ -122.386734111266165, 37.780512711236199 ], [ -122.386817052181556, 37.780507950246935 ], [ -122.386817930281353, 37.780406301126988 ], [ -122.386851612353468, 37.780506023962438 ], [ -122.386929363990731, 37.7805013456708 ], [ -122.386930242282716, 37.780399696544364 ], [ -122.386963924156646, 37.780499419353383 ], [ -122.387046865035501, 37.780494657927875 ], [ -122.387047743173568, 37.78039300907502 ], [ -122.387081425188285, 37.780492731301436 ], [ -122.387171267622861, 37.780487172869918 ], [ -122.387173875339855, 37.780385496327504 ], [ -122.387205827768923, 37.780485246207022 ], [ -122.387295687629134, 37.780480374124949 ], [ -122.387296547982558, 37.780378038825731 ], [ -122.387330247768816, 37.780478447425573 ], [ -122.387406269602806, 37.780473796784797 ], [ -122.38740712980379, 37.780371461484656 ], [ -122.38744082973659, 37.78047187005302 ], [ -122.387527230063114, 37.780467053179258 ], [ -122.38749949992625, 37.780056836734332 ], [ -122.387400782538194, 37.780053609825671 ], [ -122.387378540131436, 37.780063580311925 ], [ -122.387290201196578, 37.780060187435744 ], [ -122.387267941315415, 37.780069470907662 ], [ -122.387167511635454, 37.780066958487033 ], [ -122.387143539437361, 37.780076956068172 ], [ -122.387041380009435, 37.780074471228168 ], [ -122.387019120092901, 37.780083754653084 ], [ -122.386922167327057, 37.780081873095298 ], [ -122.386901619695664, 37.780090442368873 ], [ -122.386811551008179, 37.78008707681861 ], [ -122.386787578762636, 37.780097074601919 ], [ -122.386695780329632, 37.780093736646045 ], [ -122.386671790289242, 37.780103048241536 ], [ -122.386578279887487, 37.780100424039603 ], [ -122.386554289830215, 37.78010973561117 ], [ -122.386459049681108, 37.780107138994076 ], [ -122.386435059945711, 37.780116450261254 ], [ -122.386343278946669, 37.780113798749966 ], [ -122.386319288841676, 37.780123109724549 ], [ -122.386225778441045, 37.780120485792217 ], [ -122.386201788319156, 37.780129796742877 ], [ -122.38610135893272, 37.780127283134078 ], [ -122.386079098889809, 37.780136566656026 ], [ -122.385982128640109, 37.780133997606264 ], [ -122.38595813883623, 37.780143308776367 ], [ -122.385859438837869, 37.78014076729638 ], [ -122.385837196191162, 37.780150737217127 ], [ -122.385743667990269, 37.780147426188911 ], [ -122.385719678159148, 37.780156737585067 ], [ -122.385627896776001, 37.780154084973319 ], [ -122.385603907274145, 37.780163396340377 ], [ -122.385513855977493, 37.78016071596884 ], [ -122.385489865760334, 37.780170027049152 ], [ -122.385392895494292, 37.780167457789418 ], [ -122.385368905944745, 37.780176768559457 ], [ -122.385270205929046, 37.780174226860836 ], [ -122.385246216015972, 37.78018353761145 ], [ -122.385150975133058, 37.78018094022346 ], [ -122.385126985555786, 37.780190251218855 ], [ -122.385038663996198, 37.78018754310051 ], [ -122.385014674056748, 37.780196854078561 ], [ -122.384919433510831, 37.780194256498035 ], [ -122.38489544320835, 37.780203567457356 ], [ -122.384795222823172, 37.780209290346271 ], [ -122.384801312515108, 37.780312887910483 ], [ -122.384777113810173, 37.780313961773459 ], [ -122.384762559495741, 37.780081395028191 ], [ -122.384786741057312, 37.780079634992532 ], [ -122.384803105027004, 37.780178948238863 ], [ -122.384882586203048, 37.780174243917422 ], [ -122.384885231532309, 37.780073940040232 ], [ -122.384917146262893, 37.780172317925249 ], [ -122.385001816666616, 37.780167530831704 ], [ -122.385004462173583, 37.780067226671626 ], [ -122.385036376713245, 37.780165604530019 ], [ -122.38511414553922, 37.780161614154224 ], [ -122.385116790908242, 37.780061310540667 ], [ -122.385148705594133, 37.780159688368748 ], [ -122.385233375608649, 37.780154900565314 ], [ -122.385236021162356, 37.780054596943422 ], [ -122.385267935657353, 37.780152974744887 ], [ -122.385356065837257, 37.780148131521123 ], [ -122.385358710872126, 37.780047827627314 ], [ -122.385390625872631, 37.780146205390146 ], [ -122.385477025953321, 37.780141390018422 ], [ -122.385479653051561, 37.780040399682747 ], [ -122.385511585982442, 37.780139463852002 ], [ -122.385591067071402, 37.78013475905297 ], [ -122.385593711788431, 37.78003445515364 ], [ -122.38562562709447, 37.78013283285312 ], [ -122.385706855349099, 37.780128787029341 ], [ -122.385709482473402, 37.780027796408206 ], [ -122.385741415359448, 37.780126860520987 ], [ -122.385824355914565, 37.780122100504215 ], [ -122.385825252791648, 37.780021137554606 ], [ -122.38585891591876, 37.780120173961421 ], [ -122.385945315592835, 37.780115358252047 ], [ -122.385947942745361, 37.780014367894388 ], [ -122.38597987560469, 37.780113432222926 ], [ -122.386066275948011, 37.78010861613928 ], [ -122.38606717251001, 37.780007653736739 ], [ -122.38610083595357, 37.78010669007471 ], [ -122.386188965678286, 37.780101846233919 ], [ -122.386191574380462, 37.780000169711762 ], [ -122.386223525670573, 37.780099919858799 ], [ -122.386306466157762, 37.780095159228338 ], [ -122.386309092126623, 37.77999416887333 ], [ -122.386341026143853, 37.780093232818778 ], [ -122.386422253963318, 37.780089186233084 ], [ -122.386424863030612, 37.77998750941989 ], [ -122.386456813943639, 37.780087259789596 ], [ -122.386541484497073, 37.780082471584841 ], [ -122.386544092702067, 37.77998079450537 ], [ -122.386576044464221, 37.780080544831833 ], [ -122.386658984914163, 37.780075784227932 ], [ -122.386661592958049, 37.779974107145748 ], [ -122.386693544875143, 37.780073857440478 ], [ -122.386776485303088, 37.780069096479352 ], [ -122.386777363799169, 37.779967447346195 ], [ -122.386809315183925, 37.780067197895306 ], [ -122.386888813892412, 37.780063178385696 ], [ -122.386889674448653, 37.77996084281277 ], [ -122.38692337384856, 37.780061251805442 ], [ -122.387006314247685, 37.780056490682639 ], [ -122.387007174648929, 37.779954155383322 ], [ -122.38704087419768, 37.780054564067953 ], [ -122.387130733547679, 37.78004969211122 ], [ -122.387133323862429, 37.779947329117419 ], [ -122.38716529349125, 37.780047765460061 ], [ -122.387255152824864, 37.780042893408485 ], [ -122.387256012876136, 37.779940557832525 ], [ -122.387289712762055, 37.78004096672084 ], [ -122.387365734157797, 37.780036316380411 ], [ -122.387366594049666, 37.779933980528931 ], [ -122.387400294082084, 37.78003438938579 ], [ -122.387486693563403, 37.780029572821469 ], [ -122.387461810378028, 37.779663260524117 ], [ -122.387378661112308, 37.779659784635669 ], [ -122.387356418813553, 37.779669754843859 ], [ -122.387276728664503, 37.779666223506673 ], [ -122.387252739526915, 37.779675535209975 ], [ -122.387173049376599, 37.779672003802716 ], [ -122.387150789943092, 37.779681287247612 ], [ -122.387067640671745, 37.779677811139862 ], [ -122.387043668592767, 37.779687808975972 ], [ -122.386969150543408, 37.779683507921064 ], [ -122.386945178103403, 37.779693505742671 ], [ -122.386868930320873, 37.779689232309579 ], [ -122.386844958564382, 37.779699230374298 ], [ -122.386765268401049, 37.779695698416859 ], [ -122.386741279182857, 37.779705009741512 ], [ -122.386659859644624, 37.77970150593859 ], [ -122.386635887496141, 37.77971150341719 ], [ -122.386556180245535, 37.77970728514304 ], [ -122.386533937822136, 37.779717255195997 ], [ -122.386452518273302, 37.779713750975354 ], [ -122.386428528664126, 37.77972306224185 ], [ -122.38635402805015, 37.779719447242712 ], [ -122.386331768168034, 37.779728731087609 ], [ -122.386245159413448, 37.779725309752138 ], [ -122.386222916935935, 37.779735279471808 ], [ -122.386151858355305, 37.779730922551266 ], [ -122.386127868702886, 37.77974023375657 ], [ -122.386048178882604, 37.779736701583559 ], [ -122.386025936036276, 37.779746671546171 ], [ -122.385946246559868, 37.779743139298724 ], [ -122.385922256538748, 37.779752450742315 ], [ -122.385842567054112, 37.779748918150233 ], [ -122.385818577011165, 37.779758229298103 ], [ -122.385742346663463, 37.779754641855682 ], [ -122.385718357291026, 37.779763952697529 ], [ -122.385635207994184, 37.779760475579685 ], [ -122.385611235349785, 37.779770473129936 ], [ -122.385528086050684, 37.779766995936541 ], [ -122.385504096654358, 37.779776307009364 ], [ -122.38542267708938, 37.779772802077623 ], [ -122.385400434501221, 37.779782772191204 ], [ -122.385319014927063, 37.779779266913316 ], [ -122.385296754890703, 37.779788550288139 ], [ -122.385225696313427, 37.779784192809487 ], [ -122.385201723952207, 37.779794190270913 ], [ -122.385120304035951, 37.779790685135936 ], [ -122.38509804431726, 37.779799968467685 ], [ -122.385020084218212, 37.779796407941809 ], [ -122.38499609406378, 37.779805719196837 ], [ -122.384916404566042, 37.779802185978852 ], [ -122.384894161901101, 37.779812155996879 ], [ -122.38480257260197, 37.779817053634027 ], [ -122.384809835241697, 37.779898657585051 ], [ -122.384782194261888, 37.779900472932383 ], [ -122.384761383067243, 37.779694102231538 ], [ -122.384789023963819, 37.779692286614427 ], [ -122.384808725038937, 37.779786739726958 ], [ -122.384879557453601, 37.779782173395887 ], [ -122.384880595342565, 37.779686702548538 ], [ -122.384914117331078, 37.779780247404453 ], [ -122.384983237080689, 37.779776395391224 ], [ -122.384984274829336, 37.77968092426827 ], [ -122.385017796952795, 37.779774469369393 ], [ -122.385085186616962, 37.779770645233363 ], [ -122.38508622457347, 37.779675173829325 ], [ -122.385119746476775, 37.779768718907071 ], [ -122.385188848787607, 37.77976418060323 ], [ -122.385189886610789, 37.779668709198148 ], [ -122.385223408641721, 37.779762254246563 ], [ -122.385283897452879, 37.779759226795328 ], [ -122.385284934821826, 37.779663755944007 ], [ -122.385318457309211, 37.779757300685375 ], [ -122.385385847281285, 37.779753476097383 ], [ -122.385386866740049, 37.779657318531406 ], [ -122.3854203897058, 37.77975086351293 ], [ -122.385491239136826, 37.779746983539091 ], [ -122.385492276232114, 37.779651512411178 ], [ -122.385525798982087, 37.779745057368359 ], [ -122.385598378143868, 37.779741149940357 ], [ -122.385599415094418, 37.779645678536831 ], [ -122.385632937976666, 37.779739223463643 ], [ -122.385705499691042, 37.779734629250548 ], [ -122.385706536510781, 37.779639158120546 ], [ -122.385740059531955, 37.779732703291586 ], [ -122.385805719718547, 37.779728905856508 ], [ -122.385806756416358, 37.779633435000086 ], [ -122.385840279547224, 37.779726979593605 ], [ -122.385909399199221, 37.7797231270374 ], [ -122.385910435756728, 37.779627655905408 ], [ -122.385943959022555, 37.779721200744085 ], [ -122.386013061231836, 37.779716661682606 ], [ -122.386014097656016, 37.779621190549562 ], [ -122.386047621049443, 37.779714735358894 ], [ -122.38611501060636, 37.779710910634236 ], [ -122.386116047238417, 37.779615439220123 ], [ -122.386149570411703, 37.779708984006099 ], [ -122.386208311974158, 37.779705297309562 ], [ -122.386211077885747, 37.779609798774842 ], [ -122.386242871788397, 37.779703371203219 ], [ -122.386317180591391, 37.779699435108718 ], [ -122.38631821662446, 37.77960396397274 ], [ -122.386351740393124, 37.779697508695882 ], [ -122.386415670790853, 37.779693738872112 ], [ -122.386416706351284, 37.779598267740703 ], [ -122.386450230587357, 37.779691812430414 ], [ -122.386519350181956, 37.779687959791211 ], [ -122.386520385602097, 37.779592488384218 ], [ -122.386553892529193, 37.77968534660009 ], [ -122.386623012105417, 37.779681493625532 ], [ -122.386624047399195, 37.779586022492111 ], [ -122.386657571897828, 37.779679567397658 ], [ -122.386728421189233, 37.779675686405767 ], [ -122.386729456700351, 37.779580215540342 ], [ -122.386762980969223, 37.779673759872402 ], [ -122.386832100523861, 37.779669906775261 ], [ -122.386833135894662, 37.779574435634252 ], [ -122.386866660298466, 37.779667980211499 ], [ -122.386932302936756, 37.779663495979172 ], [ -122.386933338178679, 37.779568024837168 ], [ -122.386966862705819, 37.779661569386036 ], [ -122.387030793048368, 37.779657799503305 ], [ -122.38704566565184, 37.779562106599087 ], [ -122.387054991513921, 37.779656725452249 ], [ -122.387136202059708, 37.779651991644378 ], [ -122.387139193519673, 37.77956541658935 ], [ -122.387170761825075, 37.779650065266061 ], [ -122.387239881329535, 37.779646211655297 ], [ -122.387241125495137, 37.779558977842669 ], [ -122.387274441082525, 37.779644284971994 ], [ -122.387341830851355, 37.779640459266005 ], [ -122.387344804633926, 37.779553198035785 ], [ -122.387376373154481, 37.7796378461085 ], [ -122.387448951768221, 37.779633937546841 ], [ -122.387428243590108, 37.779295714050406 ], [ -122.387339905566151, 37.779292321211003 ], [ -122.38731766337223, 37.779302291412563 ], [ -122.387236244241279, 37.77929878773282 ], [ -122.387212254525394, 37.779308099439604 ], [ -122.387132565463105, 37.779304567993648 ], [ -122.387108575718415, 37.779313879130164 ], [ -122.387028886654846, 37.779310347614164 ], [ -122.387004914343294, 37.779320345448582 ], [ -122.386932126735232, 37.779316016678415 ], [ -122.386908154408829, 37.779326014493151 ], [ -122.386828447902374, 37.779321796397241 ], [ -122.386804475567118, 37.779331794465456 ], [ -122.386726516216612, 37.779328234787421 ], [ -122.3867025267663, 37.779337546110341 ], [ -122.386624566736728, 37.779333986925117 ], [ -122.386600577610722, 37.779343297947158 ], [ -122.386520887847865, 37.7793397660989 ], [ -122.386496916150335, 37.779349763818921 ], [ -122.386417208949837, 37.779345545456096 ], [ -122.386393237236504, 37.77935554315502 ], [ -122.386318719558147, 37.779351241688801 ], [ -122.386296477216476, 37.779361211972173 ], [ -122.386211598617734, 37.779357762936172 ], [ -122.386187609086349, 37.779367073879669 ], [ -122.386113108495195, 37.779363458733613 ], [ -122.386089119302554, 37.779372769926113 ], [ -122.386011159604379, 37.779369210055243 ], [ -122.385987187482783, 37.779379207677103 ], [ -122.385909210351812, 37.779374961294259 ], [ -122.385885237875669, 37.779384959175481 ], [ -122.385802088988314, 37.779381481900515 ], [ -122.385778099750866, 37.779390793029705 ], [ -122.385698409983121, 37.779387260900187 ], [ -122.385676150450635, 37.779396544067176 ], [ -122.385598190747288, 37.779392983923266 ], [ -122.385574218216505, 37.779402981466639 ], [ -122.3854945117032, 37.779398762469064 ], [ -122.3854705391566, 37.779408759991362 ], [ -122.38538912034204, 37.779405255030689 ], [ -122.385366860087544, 37.779414538699463 ], [ -122.385285441271535, 37.779411033667223 ], [ -122.385261469031803, 37.779421030866885 ], [ -122.385190410808178, 37.779416673366669 ], [ -122.38516642079081, 37.779425984382435 ], [ -122.385088461426918, 37.77942242389598 ], [ -122.38506448916398, 37.779432421330149 ], [ -122.384984782302112, 37.779428201993547 ], [ -122.384960810030293, 37.779438199681202 ], [ -122.384881120582591, 37.779434666444651 ], [ -122.38485713086655, 37.779443977391921 ], [ -122.384765559446308, 37.779449561719943 ], [ -122.384771214222269, 37.779535998445006 ], [ -122.384747015071127, 37.779537072038458 ], [ -122.38473308847739, 37.779329217537743 ], [ -122.384757287215081, 37.779328143952647 ], [ -122.384773494195869, 37.779421279213679 ], [ -122.384846073080865, 37.779417372248531 ], [ -122.384848858140316, 37.779322559636441 ], [ -122.384880632782526, 37.779415445992221 ], [ -122.384949752194402, 37.77941159399834 ], [ -122.384952537135234, 37.779316781932884 ], [ -122.384984294475274, 37.779408981541515 ], [ -122.385051684148522, 37.779405157144254 ], [ -122.385056216100068, 37.779311003588973 ], [ -122.385086243853095, 37.779403231376833 ], [ -122.385155363235981, 37.779399378987847 ], [ -122.385158147906921, 37.779304566642743 ], [ -122.38518992292822, 37.779397452915447 ], [ -122.385248663600038, 37.779393766707848 ], [ -122.385253195301217, 37.779299613144822 ], [ -122.385283223287274, 37.779391840608099 ], [ -122.385354072735922, 37.779387960985474 ], [ -122.385358586870339, 37.779293120699045 ], [ -122.385388632410709, 37.779386034580241 ], [ -122.385459481495417, 37.779382154625232 ], [ -122.385462265784483, 37.779287342547207 ], [ -122.385494023751633, 37.779379542293618 ], [ -122.385561413364954, 37.77937571733046 ], [ -122.385565944668585, 37.779281563755077 ], [ -122.385595973035649, 37.779373791139029 ], [ -122.385663362299539, 37.779369966397688 ], [ -122.385667876044934, 37.779275126373676 ], [ -122.385697921964919, 37.779368040176379 ], [ -122.385765311917211, 37.779364215640285 ], [ -122.385769825525102, 37.779269375337698 ], [ -122.385799871570299, 37.779362289114509 ], [ -122.385874162638899, 37.779357667403531 ], [ -122.38587696382136, 37.779263541485342 ], [ -122.385908722286104, 37.779355740845865 ], [ -122.385976111863471, 37.779351915920223 ], [ -122.385978912570593, 37.779257790005062 ], [ -122.386010671519301, 37.779349989881837 ], [ -122.386078060733283, 37.77934616462889 ], [ -122.386080844570401, 37.779251352255542 ], [ -122.386112620376821, 37.779344238286029 ], [ -122.386174820757347, 37.779340496265526 ], [ -122.386179333847906, 37.779245656221427 ], [ -122.386209380395755, 37.779338569894314 ], [ -122.386283671761092, 37.779333947919731 ], [ -122.386288202139696, 37.779239794041324 ], [ -122.386318231386639, 37.779332021242034 ], [ -122.386380431746588, 37.779328279113052 ], [ -122.386384962016137, 37.779234125779993 ], [ -122.386414991380946, 37.77932635295614 ], [ -122.38648584000218, 37.779322472115325 ], [ -122.386488640754166, 37.779228346176467 ], [ -122.386520399624118, 37.779320545652922 ], [ -122.386589518862621, 37.779316692697755 ], [ -122.386592302045827, 37.779221880311852 ], [ -122.386624078479215, 37.779314766204962 ], [ -122.386691468335471, 37.779310941139499 ], [ -122.386694251035379, 37.779216128482069 ], [ -122.386726027939744, 37.77930901434226 ], [ -122.386793400000514, 37.779304502779596 ], [ -122.38679620001615, 37.779210376838677 ], [ -122.386827959599159, 37.779302575952464 ], [ -122.386897078804992, 37.779298722816996 ], [ -122.386901608410881, 37.779204569189005 ], [ -122.386931638412193, 37.779296796508632 ], [ -122.386992108980877, 37.779293081467337 ], [ -122.386996638465945, 37.779198927835616 ], [ -122.387026668576013, 37.779291154856551 ], [ -122.387095787760913, 37.779287301604562 ], [ -122.38710029967234, 37.779192461524332 ], [ -122.387130347350677, 37.779285374963401 ], [ -122.387199466531811, 37.779281521925199 ], [ -122.387204309717603, 37.779199724010219 ], [ -122.387234026109212, 37.779279594979052 ], [ -122.387304857552181, 37.779275027470717 ], [ -122.387309700628478, 37.779193229825893 ], [ -122.387339417137795, 37.779273101042833 ], [ -122.387415455175415, 37.779269136564935 ], [ -122.387394991136247, 37.778940523542531 ], [ -122.387315302113649, 37.778936992225411 ], [ -122.387291312863496, 37.778946303668732 ], [ -122.387218525259328, 37.778941975080627 ], [ -122.38719628281504, 37.778951945540015 ], [ -122.38712349555685, 37.77894761688772 ], [ -122.387099505926273, 37.778956928022971 ], [ -122.387025006394012, 37.778953313441747 ], [ -122.387002746472433, 37.778962597145551 ], [ -122.386929976655324, 37.778958954818265 ], [ -122.386905987003843, 37.778968266188713 ], [ -122.386836658833175, 37.778963881995679 ], [ -122.386812687306417, 37.778973880055133 ], [ -122.386736440270226, 37.778969606535817 ], [ -122.386712468022296, 37.778979604036806 ], [ -122.386637951048542, 37.77897530276654 ], [ -122.386613979138446, 37.778985300516517 ], [ -122.386549822682738, 37.778980146669305 ], [ -122.386527580483204, 37.778990116996944 ], [ -122.386449603383866, 37.778985870976705 ], [ -122.386425631783965, 37.778995868408273 ], [ -122.386356303615884, 37.778991483932835 ], [ -122.386332313881979, 37.779000795186512 ], [ -122.386256084279836, 37.778997207801154 ], [ -122.386233824940902, 37.779006491348653 ], [ -122.386164496774228, 37.779002106760423 ], [ -122.386140524798748, 37.779012104688697 ], [ -122.386067737197138, 37.779007775390234 ], [ -122.386043765192852, 37.779017772749661 ], [ -122.385962346433857, 37.779014268190103 ], [ -122.385938356643209, 37.779023579363574 ], [ -122.385865569388116, 37.779019249934791 ], [ -122.385841597013936, 37.779029247533202 ], [ -122.385768809758915, 37.779024918044691 ], [ -122.385744837376848, 37.779034915898023 ], [ -122.385675509212518, 37.779030531022293 ], [ -122.385651520065593, 37.779039841851741 ], [ -122.385578749547165, 37.77903619870164 ], [ -122.385554760393234, 37.779045509785973 ], [ -122.385481989874023, 37.779041866576151 ], [ -122.385458000713072, 37.779051177915363 ], [ -122.385385212767062, 37.779046848201126 ], [ -122.385361223578457, 37.779056158971507 ], [ -122.385286723685297, 37.779052543297539 ], [ -122.385262734143524, 37.779061854327978 ], [ -122.385195135701593, 37.77905744150933 ], [ -122.385171163224882, 37.779067438971381 ], [ -122.385094916187072, 37.779063164390635 ], [ -122.385070944393846, 37.779073162095791 ], [ -122.385001616233609, 37.779068776823863 ], [ -122.38497935636353, 37.77907805986537 ], [ -122.384906586186588, 37.779074416294911 ], [ -122.384884326309916, 37.779083699593059 ], [ -122.384796197708141, 37.779088542459625 ], [ -122.384801451464668, 37.77915919068996 ], [ -122.384780712232896, 37.779160209251955 ], [ -122.384765734942761, 37.778979153747279 ], [ -122.384786456703722, 37.778977448743071 ], [ -122.384804149136215, 37.779060946405302 ], [ -122.384871538841949, 37.779057121830682 ], [ -122.384874585188271, 37.778972606432866 ], [ -122.384906098382288, 37.779055195841352 ], [ -122.384966568862538, 37.779051482113282 ], [ -122.384969632515677, 37.778967652883104 ], [ -122.385001128397789, 37.779049556096091 ], [ -122.385058156860921, 37.779046584353601 ], [ -122.385061202980566, 37.778962068401654 ], [ -122.385092716384577, 37.779044658035005 ], [ -122.385158376003019, 37.779040861234485 ], [ -122.38516315173905, 37.77895631817001 ], [ -122.385192918111116, 37.779038248990936 ], [ -122.385249946543951, 37.779035276606521 ], [ -122.385253009876607, 37.778951447368748 ], [ -122.385284506064338, 37.779033350506261 ], [ -122.385350165317007, 37.779029553604488 ], [ -122.385353228882295, 37.778945724358508 ], [ -122.385382995459778, 37.779027655131593 ], [ -122.385445195618914, 37.779023913770359 ], [ -122.385448258723784, 37.778940084252753 ], [ -122.385479755121978, 37.779021987338304 ], [ -122.385541972691954, 37.779018932096108 ], [ -122.385545018273902, 37.778934416680386 ], [ -122.385576532197149, 37.779017005910269 ], [ -122.385638732330676, 37.779013264172356 ], [ -122.385641777795314, 37.77892874847948 ], [ -122.385673291830699, 37.779011337958153 ], [ -122.38573203252615, 37.779007651778535 ], [ -122.385735094960694, 37.77892382225879 ], [ -122.385766592014193, 37.779005725262394 ], [ -122.385828792128677, 37.779001983424223 ], [ -122.385831854467739, 37.778918154451013 ], [ -122.385863351625531, 37.779000057428874 ], [ -122.385925569154423, 37.778997001709705 ], [ -122.385930344007448, 37.778912458338894 ], [ -122.385960128639468, 37.778995075411409 ], [ -122.386030959889439, 37.778990508668088 ], [ -122.386034022338819, 37.778906679409381 ], [ -122.386065519368728, 37.778988582338918 ], [ -122.386127736893627, 37.778985527062204 ], [ -122.386132511508848, 37.778900983408484 ], [ -122.386162278927955, 37.778982913985502 ], [ -122.386221036657432, 37.7789799137378 ], [ -122.386224081811065, 37.778895398298431 ], [ -122.386255596133822, 37.778977987627471 ], [ -122.386319526256145, 37.778974217575232 ], [ -122.386322588033238, 37.778890388314295 ], [ -122.38635408572037, 37.778972291161459 ], [ -122.386412826344156, 37.778968604368089 ], [ -122.386417618076294, 37.778884747421706 ], [ -122.386447385803351, 37.778966677926974 ], [ -122.386514775006972, 37.77896285296778 ], [ -122.386517836902243, 37.778879023421496 ], [ -122.386549334453889, 37.778960926222204 ], [ -122.386602903347566, 37.778958008816609 ], [ -122.386605964804218, 37.778874179548069 ], [ -122.386637462796912, 37.778956082319787 ], [ -122.386699662825961, 37.778952340022151 ], [ -122.386702724173148, 37.778868510751018 ], [ -122.386734222270135, 37.778950413496958 ], [ -122.386799881728336, 37.778946616056871 ], [ -122.386804673015121, 37.778862758819848 ], [ -122.386834441160303, 37.778944689227728 ], [ -122.386894928894066, 37.778941660955091 ], [ -122.38689797293344, 37.778857145503274 ], [ -122.386929488335198, 37.77893973464726 ], [ -122.386989958613299, 37.77893601960681 ], [ -122.386993002191389, 37.778851503883409 ], [ -122.387024518042367, 37.778934092996543 ], [ -122.387086718033501, 37.778930350494704 ], [ -122.387091509002346, 37.778846493520362 ], [ -122.387121277457396, 37.778928423856051 ], [ -122.387183477445888, 37.778924681577777 ], [ -122.387186764992791, 37.77884977579707 ], [ -122.387218036857675, 37.778922754636191 ], [ -122.387280254273051, 37.778919698476713 ], [ -122.387283524285621, 37.778844106523373 ], [ -122.387314813687013, 37.77891777178133 ], [ -122.387382202448663, 37.778913946057301 ], [ -122.387364166474967, 37.778612763090031 ], [ -122.387286207520319, 37.778609204336291 ], [ -122.387262218365407, 37.778618515499687 ], [ -122.387185989110648, 37.778614928715285 ], [ -122.387161999948319, 37.778624240132871 ], [ -122.387092672083611, 37.778619856090089 ], [ -122.387070429718904, 37.778629826526299 ], [ -122.386994183021031, 37.778625553173391 ], [ -122.386971941319302, 37.778635523030793 ], [ -122.386900883746804, 37.778631166560793 ], [ -122.386876911637231, 37.778641164370391 ], [ -122.38679893557611, 37.778636918569845 ], [ -122.386774963796881, 37.778646916353182 ], [ -122.386707365642749, 37.778642504401184 ], [ -122.386683376072511, 37.77865181600145 ], [ -122.386614065647606, 37.778648118121843 ], [ -122.386590076741811, 37.778657429142889 ], [ -122.386510387715276, 37.778653897287107 ], [ -122.386486398801594, 37.778663208561632 ], [ -122.386417070940411, 37.778658824121642 ], [ -122.386393098756784, 37.778668821832838 ], [ -122.38631686949239, 37.77866523448656 ], [ -122.386292880557747, 37.778674545996267 ], [ -122.38622009293212, 37.778670216797138 ], [ -122.386197851113138, 37.778680186508431 ], [ -122.386125063833461, 37.778675857245105 ], [ -122.38610282131512, 37.778685827224102 ], [ -122.386028304671399, 37.778681525568288 ], [ -122.38600433277405, 37.778691523194873 ], [ -122.385931545494543, 37.77868719381209 ], [ -122.385909285516078, 37.778696477309893 ], [ -122.385834786309914, 37.778692862251056 ], [ -122.385810796946046, 37.778702173118987 ], [ -122.385741486517588, 37.778698474726497 ], [ -122.385717497147184, 37.778707785850045 ], [ -122.385642980157812, 37.778703483956278 ], [ -122.385619007862559, 37.778713481784578 ], [ -122.385549680005639, 37.778709096834618 ], [ -122.385525708373962, 37.778719094083733 ], [ -122.385451191384348, 37.778714792068747 ], [ -122.385428949109837, 37.778724761915029 ], [ -122.385354432120124, 37.778720459838901 ], [ -122.385330442694098, 37.778729770883643 ], [ -122.385257672841163, 37.778726127529652 ], [ -122.385235413119702, 37.778735411169237 ], [ -122.385147302363819, 37.778740940194126 ], [ -122.385154355852308, 37.778814307082541 ], [ -122.385130156934849, 37.778815380480168 ], [ -122.385113449499144, 37.778634352661491 ], [ -122.385137630588289, 37.778632592828004 ], [ -122.385155236200447, 37.778712657669637 ], [ -122.385222625586081, 37.778708833443275 ], [ -122.385225758626859, 37.778627749705855 ], [ -122.38525718494833, 37.778706907076334 ], [ -122.38531938483824, 37.778703165506691 ], [ -122.385322517780125, 37.778622082041188 ], [ -122.385352214498553, 37.778701267322347 ], [ -122.385416144082598, 37.778697497765265 ], [ -122.385419276918626, 37.778616414297126 ], [ -122.385450703441506, 37.77869557161619 ], [ -122.38551290331219, 37.778691829944421 ], [ -122.385517765757882, 37.778610719084014 ], [ -122.38554746266594, 37.778689903767003 ], [ -122.385606220534413, 37.778686903820002 ], [ -122.385611082870923, 37.77860579268107 ], [ -122.385640779890451, 37.778684977889775 ], [ -122.385704709445832, 37.778681208176224 ], [ -122.385707841966195, 37.778600124700183 ], [ -122.385739268789678, 37.778679281942566 ], [ -122.385798008866331, 37.778675595460832 ], [ -122.385801141637501, 37.77859451225126 ], [ -122.385832568205146, 37.778673669199819 ], [ -122.385896498100962, 37.77866989992588 ], [ -122.385899630058546, 37.778588816175542 ], [ -122.385931057427598, 37.778667973361443 ], [ -122.385991527195401, 37.778664259112972 ], [ -122.385994659747908, 37.778583175623524 ], [ -122.386026086530904, 37.778662333069811 ], [ -122.386090016393183, 37.778658563141803 ], [ -122.386093148146045, 37.778577479660726 ], [ -122.386124575716508, 37.778656636795191 ], [ -122.386185062898718, 37.778653608892128 ], [ -122.386202015472293, 37.778571617834082 ], [ -122.386209244307707, 37.778651848558759 ], [ -122.386280092656236, 37.778647968384718 ], [ -122.386284954247373, 37.778566856942867 ], [ -122.386314651962735, 37.778646041707809 ], [ -122.386380311166334, 37.778642244226567 ], [ -122.386385172654656, 37.778561133055092 ], [ -122.386414870481516, 37.778640318069463 ], [ -122.386473610832795, 37.778636630970986 ], [ -122.386476742511945, 37.778555547473879 ], [ -122.386508170135954, 37.778634704511973 ], [ -122.386577288736902, 37.778630851563484 ], [ -122.386580420309613, 37.778549768338095 ], [ -122.386611848034704, 37.778628925074045 ], [ -122.386670588381151, 37.778625238426613 ], [ -122.386673719491867, 37.778544154655052 ], [ -122.386705147666916, 37.778623311635243 ], [ -122.386762158289017, 37.778619652349228 ], [ -122.386765307091096, 37.778539255288756 ], [ -122.386796717583763, 37.778617726080171 ], [ -122.386864106438878, 37.778613900371958 ], [ -122.386867237344845, 37.778532816869664 ], [ -122.386898665721333, 37.778611973798455 ], [ -122.386959152842579, 37.77860894577281 ], [ -122.386962284329485, 37.778527861982276 ], [ -122.38699369467254, 37.778606332452348 ], [ -122.387057641885832, 37.778603248718746 ], [ -122.387060772580114, 37.778522165211164 ], [ -122.387092183716675, 37.778600635643997 ], [ -122.38715094145212, 37.778597634927166 ], [ -122.387154334023649, 37.778526848079068 ], [ -122.387183771011991, 37.778595735958248 ], [ -122.38724942978078, 37.778591937998534 ], [ -122.387254551963991, 37.778521123457843 ], [ -122.387283989043027, 37.778590011312069 ], [ -122.387351378207768, 37.778586185868939 ], [ -122.387340432224974, 37.778359741993853 ], [ -122.385336224880277, 37.778480397809368 ], [ -122.385292215885698, 37.77845088576418 ], [ -122.385332752982109, 37.778411780987071 ], [ -122.385371486072913, 37.77843794377425 ], [ -122.387505436887736, 37.778315896876499 ], [ -122.387507690304943, 37.778336462786434 ], [ -122.387691125877438, 37.77833695908997 ], [ -122.387623881872372, 37.778210305157842 ], [ -122.390410335866818, 37.777142437885963 ], [ -122.390374260520773, 37.777113759158638 ], [ -122.390348522259259, 37.777093298197975 ], [ -122.389857561580598, 37.776499598895249 ], [ -122.389810930692391, 37.776503093591124 ], [ -122.389821814335647, 37.776590819837281 ], [ -122.38767762612953, 37.776716506820485 ], [ -122.387616143310936, 37.776748393866363 ], [ -122.387584974466847, 37.776747519757691 ], [ -122.387567625478937, 37.776745737093393 ], [ -122.387552006163176, 37.776743927007061 ], [ -122.387536369402838, 37.776741430474004 ], [ -122.387505026105131, 37.776733691622944 ], [ -122.387489337013818, 37.776729135749626 ], [ -122.387475360143554, 37.776723865736592 ], [ -122.387461365830632, 37.776717909277224 ], [ -122.387447354082425, 37.776711266646082 ], [ -122.387419295684069, 37.77669660766567 ], [ -122.387406978711525, 37.776688564173618 ], [ -122.387394643958672, 37.776679834515676 ], [ -122.387373399569938, 37.776660946088832 ], [ -122.387362760285328, 37.776650815560998 ], [ -122.38735385031967, 37.776640657346583 ], [ -122.387344922566982, 37.776629812692306 ], [ -122.387335978065309, 37.776618281581548 ], [ -122.387328762881694, 37.776606722784834 ], [ -122.387323277015341, 37.77659513630249 ], [ -122.387316044392662, 37.776582891060237 ], [ -122.387312271446064, 37.776570590705511 ], [ -122.387306768480713, 37.776558317497482 ], [ -122.387304707400645, 37.776545302738185 ], [ -122.387302663771393, 37.776532974698164 ], [ -122.387298541607819, 37.776506944904682 ], [ -122.387299939508821, 37.776493875044565 ], [ -122.387299608083069, 37.776480832320061 ], [ -122.387311076202096, 37.776319268586136 ], [ -122.387103587414643, 37.776325337046984 ], [ -122.387082386717438, 37.776103864569507 ], [ -122.385027425864848, 37.776335891081246 ], [ -122.385011788936296, 37.776333394493314 ], [ -122.384999507467228, 37.776326723359297 ], [ -122.384988868215274, 37.776316592896777 ], [ -122.385025875302759, 37.776274797468226 ], [ -122.384827030762366, 37.775394163410851 ], [ -122.384880527469605, 37.775388501004997 ], [ -122.384877317104468, 37.775330181090084 ], [ -122.386995863440688, 37.775082030997162 ], [ -122.386923061819843, 37.774327799469994 ], [ -122.381813822024597, 37.774615486663201 ], [ -122.381456516831207, 37.771917559332238 ], [ -122.384671101595274, 37.773340605158566 ], [ -122.384690336061794, 37.773348538332996 ], [ -122.384706059111224, 37.773354467747083 ], [ -122.38472349432422, 37.773359682786399 ], [ -122.384740912113955, 37.773364211103086 ], [ -122.384758312493929, 37.773368053246259 ], [ -122.384775695456668, 37.773371208941398 ], [ -122.384793061001673, 37.77337367818847 ], [ -122.384812120957065, 37.773374747168276 ], [ -122.384829452003999, 37.773375843238945 ], [ -122.384848494879705, 37.773376225487283 ], [ -122.38486577332894, 37.77337526249628 ], [ -122.386759568868584, 37.773272861257844 ], [ -122.386575835242937, 37.772851405934894 ], [ -122.38657206225551, 37.772839105279289 ], [ -122.386575190127743, 37.772826007459408 ], [ -122.386581812023351, 37.772814227444925 ], [ -122.386593692364443, 37.772805109622055 ], [ -122.386717419519911, 37.772771540111776 ], [ -122.386708370613761, 37.772755890279406 ], [ -122.386704597609267, 37.772743589627844 ], [ -122.386699094688865, 37.772731316663254 ], [ -122.386691548686684, 37.772706715359256 ], [ -122.38668746217553, 37.772682058686371 ], [ -122.386685401318488, 37.772669044181889 ], [ -122.386683357538772, 37.772656715579039 ], [ -122.386682694959006, 37.772630630932561 ], [ -122.386684111009814, 37.772618246955815 ], [ -122.386683779716421, 37.772605204495207 ], [ -122.386685195434609, 37.772592821073083 ], [ -122.386688340360166, 37.772580409425913 ], [ -122.386661929793348, 37.772494305123679 ], [ -122.386659886368264, 37.772481976514491 ], [ -122.386661302081109, 37.772469592817821 ], [ -122.38666965348915, 37.772457784842032 ], [ -122.386681551212874, 37.772449354004202 ], [ -122.386714186256512, 37.772439903990914 ], [ -122.386679336788333, 37.772362175448528 ], [ -122.386644902453284, 37.772368906802633 ], [ -122.386631976023693, 37.772336837636807 ], [ -122.386620901217455, 37.772309545906367 ], [ -122.386592865526183, 37.772227587668034 ], [ -122.386585249868389, 37.772200240573625 ], [ -122.386577616780784, 37.772172207033208 ], [ -122.386570001134302, 37.772144859937534 ], [ -122.386558193761417, 37.772088737774723 ], [ -122.386541497954923, 37.771976381892166 ], [ -122.386539053911875, 37.771948265304715 ], [ -122.386438565499603, 37.771943006477983 ], [ -122.386459543589496, 37.771678968587629 ], [ -122.386414488196351, 37.771676255706971 ], [ -122.386416883827636, 37.771634327179655 ], [ -122.386370064064607, 37.77163026961771 ], [ -122.386370799901215, 37.771591114275026 ], [ -122.386346586274058, 37.771591501747267 ], [ -122.386349295737674, 37.771561929239198 ], [ -122.386373509355195, 37.77156154176641 ], [ -122.386383018231356, 37.77145906765827 ], [ -122.386277185313745, 37.771447713434846 ], [ -122.386286481744634, 37.771404987761201 ], [ -122.386248187810011, 37.771395986654248 ], [ -122.386213474980906, 37.771391735029944 ], [ -122.386175916991888, 37.77134357828146 ], [ -122.386158586399219, 37.771342482408336 ], [ -122.386142916299207, 37.771338612516935 ], [ -122.386128940538697, 37.771333342339254 ], [ -122.386116624249169, 37.771325298710295 ], [ -122.38610598590013, 37.771315168059481 ], [ -122.386097059315517, 37.771304323294956 ], [ -122.386091556948031, 37.771292050293354 ], [ -122.386142815223778, 37.771266508342599 ], [ -122.38608534348306, 37.771183647247369 ], [ -122.386039082134474, 37.771201555805888 ], [ -122.386023428808656, 37.771198372355109 ], [ -122.386011095814837, 37.771189642258307 ], [ -122.386041843996964, 37.771174042639558 ], [ -122.38589549059256, 37.770997835524099 ], [ -122.385920430782591, 37.770821635056869 ], [ -122.385847920885212, 37.770691630725352 ], [ -122.385837299399952, 37.770682186505887 ], [ -122.385823306356514, 37.770676229845748 ], [ -122.385795755972097, 37.770681477661917 ], [ -122.3857856231634, 37.770691253905198 ], [ -122.385782477468226, 37.770703665268918 ], [ -122.385798079922523, 37.771250048587049 ], [ -122.385622255652152, 37.772162083932052 ], [ -122.385554576344688, 37.772154239361129 ], [ -122.385681891861481, 37.771444190077446 ], [ -122.385515420224039, 37.771429684819722 ], [ -122.38546780756441, 37.771530707856108 ], [ -122.385335917119292, 37.771651620630855 ], [ -122.385287036807085, 37.771634547559174 ], [ -122.385642517132254, 37.770847369439849 ], [ -122.385683664105002, 37.770764304300435 ], [ -122.385720236601344, 37.770637361956886 ], [ -122.385724274638122, 37.77059197382043 ], [ -122.385559320924514, 37.770637189122013 ], [ -122.383154992189901, 37.769708715839762 ], [ -122.383375582677616, 37.76933298733065 ], [ -122.385570199525418, 37.770179656618097 ], [ -122.385492733315886, 37.769990673321502 ], [ -122.38547497668678, 37.769836444052352 ], [ -122.38501929687861, 37.768856908704215 ], [ -122.384893636964136, 37.768882266758567 ], [ -122.384787561607197, 37.76865665734794 ], [ -122.38500549801104, 37.768585873156887 ], [ -122.385007528170945, 37.768529529274218 ], [ -122.385037840293677, 37.768496768478933 ], [ -122.385006697245259, 37.768428594043755 ], [ -122.38508052413836, 37.768406124957501 ], [ -122.385042550658142, 37.768341493386622 ], [ -122.38510771303342, 37.768318476117585 ], [ -122.385167686616882, 37.76829554179551 ], [ -122.385149073018809, 37.768175662662372 ], [ -122.385147029970554, 37.768163334292169 ], [ -122.385144812710706, 37.768144141461285 ], [ -122.38470084491486, 37.768171155877575 ], [ -122.384624005099198, 37.768074869544797 ], [ -122.383881223535184, 37.768121766230543 ], [ -122.383842264982363, 37.767745376829602 ], [ -122.382456893000523, 37.767832748125578 ], [ -122.382439473722869, 37.767691561099248 ], [ -122.384901003015941, 37.7675361686969 ], [ -122.384848518174209, 37.767018283287165 ], [ -122.384847918040649, 37.767012360130963 ], [ -122.382854528282635, 37.767138299649837 ], [ -122.382800567665527, 37.766784124750316 ], [ -122.385859942984411, 37.766599245791156 ], [ -122.385894343938588, 37.766523155929399 ], [ -122.385924379700455, 37.76641142564803 ], [ -122.385933483994975, 37.766361149056699 ], [ -122.385914237836445, 37.766284543788501 ], [ -122.385992644580284, 37.766169979928648 ], [ -122.386291877422522, 37.765689977677845 ], [ -122.386372587962043, 37.765598038596792 ], [ -122.386520103480208, 37.765411635088689 ], [ -122.386541125110512, 37.765285627921941 ], [ -122.386469993174757, 37.765277839225583 ], [ -122.386436744413672, 37.76505861928149 ], [ -122.386447302231559, 37.764929345689509 ], [ -122.386483096429387, 37.76490817106005 ], [ -122.386501478211272, 37.764814482226171 ], [ -122.386491269379732, 37.764616868735338 ], [ -122.38644793023208, 37.764613442288407 ], [ -122.386451155646682, 37.764399819097633 ], [ -122.386482284438713, 37.7643993208899 ], [ -122.386481482527714, 37.764367744084808 ], [ -122.386603169586195, 37.764322532741204 ], [ -122.386601548243974, 37.76425869323451 ], [ -122.386585931922852, 37.764256883010674 ], [ -122.386571940029569, 37.764250926432666 ], [ -122.38656131971895, 37.764241482262236 ], [ -122.38655581779787, 37.764229209267128 ], [ -122.38655550400469, 37.764216853507875 ], [ -122.386720358990686, 37.764100218114386 ], [ -122.386739211018067, 37.764025063281011 ], [ -122.386733691302794, 37.764012103852934 ], [ -122.38672476584992, 37.764001259116526 ], [ -122.386714128120815, 37.763991128513133 ], [ -122.38670010140504, 37.763983799331974 ], [ -122.386686126988522, 37.763978529213567 ], [ -122.386670492591179, 37.763976032291019 ], [ -122.386649740182264, 37.763976364463595 ], [ -122.386634036749314, 37.763971122014347 ], [ -122.386621721632579, 37.763963078702353 ], [ -122.386611066835059, 37.763952261637705 ], [ -122.386603852994298, 37.763940702770881 ], [ -122.386600062668251, 37.763927715381541 ], [ -122.386601461140231, 37.763914645215138 ], [ -122.386604606072254, 37.763902234094914 ], [ -122.386738907102767, 37.763808749639459 ], [ -122.386828889531799, 37.763741383598706 ], [ -122.386840716091143, 37.763730206671987 ], [ -122.386855983933643, 37.763718287929905 ], [ -122.386869539846316, 37.763707083316298 ], [ -122.386884824769794, 37.763695851022327 ], [ -122.386900145253236, 37.763685991607943 ], [ -122.38691721218359, 37.763676790958648 ], [ -122.386934296546428, 37.763668276753165 ], [ -122.386951398349183, 37.763660449266119 ], [ -122.386970246931185, 37.763653279988162 ], [ -122.386989112953756, 37.763646797428088 ], [ -122.387007996064526, 37.763641001316863 ], [ -122.387026897301666, 37.763635891637833 ], [ -122.387047562432002, 37.763632127441824 ], [ -122.387066515625051, 37.76362907682639 ], [ -122.387271786163467, 37.763605188503739 ], [ -122.387241692331358, 37.763510215504958 ], [ -122.386905339639924, 37.763549936808673 ], [ -122.386894896912324, 37.763479371256736 ], [ -122.386775626938885, 37.763415354890846 ], [ -122.386725141086345, 37.763471101073094 ], [ -122.386629276523749, 37.763443106355105 ], [ -122.386635775530237, 37.763426520918784 ], [ -122.386503316054672, 37.763388124513462 ], [ -122.386596764100844, 37.763184731253212 ], [ -122.386314395824243, 37.763102036396099 ], [ -122.386214308919619, 37.763316522997265 ], [ -122.385510514730285, 37.763329843761532 ], [ -122.385502904472929, 37.763234510683318 ], [ -122.385278141497096, 37.763240166132988 ], [ -122.385288368966343, 37.763370480347639 ], [ -122.38518118352205, 37.763373568175126 ], [ -122.385104258477085, 37.762319301701545 ], [ -122.384682038971576, 37.762111108737756 ], [ -122.384291646501694, 37.762134518628663 ], [ -122.384461265879253, 37.764047083641032 ], [ -122.384304084745608, 37.764057150214732 ], [ -122.384132119672074, 37.762256559028991 ], [ -122.383427389000644, 37.762300785113965 ], [ -122.383450606038608, 37.762465914870035 ], [ -122.383630300057192, 37.762456862777178 ], [ -122.3836690703355, 37.762553071423532 ], [ -122.383744969614881, 37.762544304446941 ], [ -122.383904907669475, 37.764143878058199 ], [ -122.383832343655854, 37.764147784454543 ], [ -122.383810360659879, 37.764236036587789 ], [ -122.383580701961776, 37.764253441592125 ], [ -122.383538646212543, 37.764164152408867 ], [ -122.383462623420698, 37.764168114122675 ], [ -122.383459954192517, 37.764131073630139 ], [ -122.383299279201026, 37.764139821513076 ], [ -122.383109557752064, 37.762320284660944 ], [ -122.382290828789408, 37.762371818989514 ], [ -122.38251353675102, 37.764606298459128 ], [ -122.382344144468703, 37.764612437347246 ], [ -122.382121545934865, 37.762382076243206 ], [ -122.38174844490716, 37.762405201559091 ], [ -122.381695087947634, 37.764738170521944 ], [ -122.381631135065035, 37.764740565182315 ], [ -122.381630936164214, 37.764801000118787 ], [ -122.381492672008349, 37.764806640579245 ], [ -122.381450941763589, 37.76493503772344 ], [ -122.381172352882004, 37.76493330344676 ], [ -122.381123981911756, 37.764799477425129 ], [ -122.380983831900423, 37.764798967139676 ], [ -122.381029346103958, 37.762223710202747 ], [ -122.38330764917707, 37.762081573209855 ], [ -122.382185556454559, 37.760879873475361 ], [ -122.382168402620636, 37.760885641207267 ], [ -122.382152908506868, 37.760888635257665 ], [ -122.382137362223574, 37.760889570238476 ], [ -122.382121780810863, 37.760889132328003 ], [ -122.38210441862546, 37.760886662951151 ], [ -122.382090445117498, 37.760881392285128 ], [ -122.382076454213362, 37.760875434895482 ], [ -122.382064140442054, 37.760867390822959 ], [ -122.382053521188098, 37.760857946240883 ], [ -122.382044596105573, 37.76084710115525 ], [ -122.382023253267107, 37.760824093302155 ], [ -122.382014294110562, 37.760811875582888 ], [ -122.382005317206719, 37.760798970871889 ], [ -122.381998069607818, 37.76078603882209 ], [ -122.381986997879679, 37.76075874660679 ], [ -122.381983174441103, 37.760744386430567 ], [ -122.381981079958692, 37.760729998921875 ], [ -122.381980366958516, 37.760701854577775 ], [ -122.381981731049137, 37.76068741129496 ], [ -122.381984824092612, 37.760672940679711 ], [ -122.38198793521687, 37.760659156500736 ], [ -122.381992775285752, 37.760645344714604 ], [ -122.381695267558513, 37.760647347915544 ], [ -122.381838070964363, 37.762118779804872 ], [ -122.381335375976406, 37.762148093200558 ], [ -122.381148296266858, 37.760157516712624 ], [ -122.380611046370689, 37.760188065470565 ], [ -122.380912187127535, 37.763336013717719 ], [ -122.380701275367471, 37.763342126118935 ], [ -122.380400282533174, 37.760199669192616 ], [ -122.379507164112297, 37.760250310896886 ], [ -122.379808005517475, 37.763456637815253 ], [ -122.379779318273378, 37.763485250755494 ], [ -122.379565016753276, 37.763494162073435 ], [ -122.379533176547326, 37.763466514378344 ], [ -122.379201704975202, 37.759937914686475 ], [ -122.381256986630419, 37.759667520373661 ], [ -122.381256577752055, 37.759583059710486 ], [ -122.381469121143184, 37.759573486743299 ], [ -122.381446760180623, 37.75930533388199 ], [ -122.381389798546991, 37.759310363785765 ], [ -122.381303248927566, 37.759308311423226 ], [ -122.381202252005025, 37.758325846274602 ], [ -122.381200105587652, 37.758309399127988 ], [ -122.381197941449869, 37.758292265813587 ], [ -122.381197089710227, 37.758258629870305 ], [ -122.381199679398975, 37.758224251997007 ], [ -122.381200991455458, 37.758207749648136 ], [ -122.38120401536365, 37.75819053325035 ], [ -122.381207056652954, 37.758174003300283 ], [ -122.381221367866601, 37.758124330651064 ], [ -122.381234402126012, 37.75809253323947 ], [ -122.381242648836448, 37.758076607200529 ], [ -122.381262669528837, 37.75804744489573 ], [ -122.381289433303067, 37.758011307974613 ], [ -122.381302797797105, 37.757992553063836 ], [ -122.381314432708805, 37.757973825759706 ], [ -122.381327797196747, 37.757955071120548 ], [ -122.381337703552219, 37.757936371131194 ], [ -122.381360938912749, 37.75789754361324 ], [ -122.381380716140868, 37.757858771292213 ], [ -122.381390587715856, 37.757838698951588 ], [ -122.381398729699725, 37.757818653670306 ], [ -122.381408600911726, 37.757798581058942 ], [ -122.381416742893265, 37.757778536050878 ], [ -122.381423155645805, 37.757758518646433 ], [ -122.381431297626008, 37.7577384739118 ], [ -122.381444088336707, 37.757697065930351 ], [ -122.381450501074838, 37.757677048524144 ], [ -122.381464499104396, 37.757615019779642 ], [ -122.381469148185403, 37.757593657075738 ], [ -122.381475021977749, 37.757552359783979 ], [ -122.381477941486636, 37.757531024690024 ], [ -122.381480843608969, 37.757509003148037 ], [ -122.381427480867771, 37.75751946944429 ], [ -122.381405721286413, 37.757343328372727 ], [ -122.381468641764485, 37.757300433411309 ], [ -122.381446638421224, 37.75711468207534 ], [ -122.381323864533158, 37.757116641937891 ], [ -122.381323169199888, 37.757089184020202 ], [ -122.381364426846005, 37.75707891127486 ], [ -122.381321992818584, 37.756564544822638 ], [ -122.381321662531036, 37.756551502035926 ], [ -122.38132307883005, 37.756539118369027 ], [ -122.381326206602509, 37.756526020931318 ], [ -122.381331099013835, 37.756514268226432 ], [ -122.381339449129754, 37.756502460600949 ], [ -122.381347834701543, 37.756492025859821 ], [ -122.381357966510507, 37.756482250242897 ], [ -122.381369844881263, 37.756473132920476 ], [ -122.381383504601786, 37.756466047611781 ], [ -122.381397181710526, 37.756459649024094 ], [ -122.381399266420004, 37.75640536415446 ], [ -122.381383669266881, 37.756404239961626 ], [ -122.381368019603769, 37.756401055879024 ], [ -122.381354081758502, 37.756397158017677 ], [ -122.381338379955181, 37.756391914861666 ], [ -122.381324389963666, 37.756385957652711 ], [ -122.38129976407464, 37.756369869336808 ], [ -122.381289145560629, 37.756360424678547 ], [ -122.381280238512659, 37.756350265974667 ], [ -122.381265813968113, 37.756327147557755 ], [ -122.381260331236177, 37.756315560741236 ], [ -122.381258271437829, 37.756302546110341 ], [ -122.381256229700497, 37.756290217367201 ], [ -122.381255916815178, 37.756277861302344 ], [ -122.381240855709805, 37.755888041607285 ], [ -122.381237067430561, 37.75587505429101 ], [ -122.381229855216972, 37.755863495353786 ], [ -122.381219219049328, 37.755853363971241 ], [ -122.381205211793798, 37.755846720574091 ], [ -122.381189545219783, 37.75584285001387 ], [ -122.381023178934683, 37.755831084166076 ], [ -122.381005052890941, 37.755798410637965 ], [ -122.380939344081298, 37.755799459348452 ], [ -122.380938179657051, 37.755753467322073 ], [ -122.381031311951133, 37.755742366765169 ], [ -122.381010248974547, 37.755730341878809 ], [ -122.38098743910173, 37.755717658143908 ], [ -122.380924145958886, 37.755677464760758 ], [ -122.380881915817497, 37.755649296531168 ], [ -122.380862530269653, 37.755635184397235 ], [ -122.380841397836633, 37.755620413687737 ], [ -122.380821994593731, 37.755605615653565 ], [ -122.380802573973469, 37.755590130893374 ], [ -122.38078488252836, 37.755574618260482 ], [ -122.380758354080839, 37.755551693216646 ], [ -122.380751124581494, 37.755539447252119 ], [ -122.380745589509232, 37.755525801070959 ], [ -122.38074007147074, 37.755512841343261 ], [ -122.380736283298162, 37.75549985401004 ], [ -122.38073074823852, 37.755486208102681 ], [ -122.380728671510397, 37.755472506457778 ], [ -122.380724865279745, 37.755458832961516 ], [ -122.380718635462969, 37.755417728569704 ], [ -122.380718270538722, 37.755403313156876 ], [ -122.380719652161702, 37.755389556598288 ], [ -122.380719304614729, 37.755375827633614 ], [ -122.380722067512963, 37.755348314521783 ], [ -122.380728289091294, 37.755320746216135 ], [ -122.380731417602021, 37.755307648505891 ], [ -122.380736257562816, 37.755293837033165 ], [ -122.38074597221329, 37.755267586159846 ], [ -122.380759145196464, 37.755241280371166 ], [ -122.380767425749198, 37.755226726990642 ], [ -122.380777557807846, 37.755216951415953 ], [ -122.380789436047536, 37.755207834150042 ], [ -122.3808030608416, 37.755199376285184 ], [ -122.380814973485883, 37.755191631918663 ], [ -122.380828633023739, 37.75518454667273 ], [ -122.380844056826504, 37.755178806720394 ], [ -122.380857751116352, 37.755173094367549 ], [ -122.380873209326097, 37.755168727313375 ], [ -122.380888684919853, 37.755165046980004 ], [ -122.380905907041537, 37.755162024947012 ], [ -122.380921434762783, 37.75516040367944 ], [ -122.380952524623297, 37.755158534314724 ], [ -122.380976698502963, 37.755156774772679 ], [ -122.380999125498533, 37.755154356655588 ], [ -122.381021534766717, 37.755151252091551 ], [ -122.381043927344422, 37.755147461063977 ], [ -122.381066302193489, 37.755142983589487 ], [ -122.38108865965917, 37.755137819662529 ], [ -122.38111099939502, 37.755131969288627 ], [ -122.38113332243789, 37.755125432451251 ], [ -122.381153915967687, 37.755118923215505 ], [ -122.381176203900949, 37.755111013753655 ], [ -122.38119676265265, 37.755103131339425 ], [ -122.381225828164943, 37.755089619604064 ], [ -122.381246943141264, 37.755103703797808 ], [ -122.381242963358787, 37.755083165829973 ], [ -122.38126015068255, 37.755078770848776 ], [ -122.381277355393678, 37.755075062587856 ], [ -122.381292865706087, 37.755072754823154 ], [ -122.38131010484075, 37.755070419733926 ], [ -122.381327362035009, 37.75506877053013 ], [ -122.381361945276268, 37.755068218467898 ], [ -122.381396598051168, 37.755070412188203 ], [ -122.381413958860932, 37.755072881946376 ], [ -122.381448715950555, 37.755079194614936 ], [ -122.381480084590436, 37.755088307721437 ], [ -122.381497532329476, 37.755094209708098 ], [ -122.381511539483228, 37.755100853620512 ], [ -122.381527276134307, 37.755107469370813 ], [ -122.381548321633034, 37.755118807717949 ], [ -122.381562363566104, 37.755126824520609 ], [ -122.381579829044853, 37.755133412663042 ], [ -122.381595565024199, 37.755140028689837 ], [ -122.381612996090695, 37.755145244200165 ], [ -122.381630391696547, 37.755149086822691 ], [ -122.381647770609987, 37.755152242983492 ], [ -122.381665131447221, 37.755154712704652 ], [ -122.381684187368847, 37.755155781907895 ], [ -122.38170149639484, 37.755156192273823 ], [ -122.382833235564902, 37.755035795269471 ], [ -122.383668861276263, 37.754971624407645 ], [ -122.383685978819074, 37.754964483555838 ], [ -122.38372028351472, 37.754952947636127 ], [ -122.383737470668777, 37.75494855256818 ], [ -122.383756404038564, 37.75494481631263 ], [ -122.383773626345388, 37.754941794129564 ], [ -122.383792594868737, 37.754939430758334 ], [ -122.383811580457817, 37.754937754111957 ], [ -122.38384268824322, 37.754936570147059 ], [ -122.383861726388119, 37.754936952556008 ], [ -122.383880781586896, 37.754938021140639 ], [ -122.383896396575224, 37.754939831714687 ], [ -122.384073136269635, 37.754951427650568 ], [ -122.384099862744918, 37.754913917176538 ], [ -122.384076095308828, 37.754658835300546 ], [ -122.383998950777894, 37.754618177983438 ], [ -122.383899356302948, 37.754647239093948 ], [ -122.383797997440993, 37.754674954869053 ], [ -122.383696604385719, 37.754701297650087 ], [ -122.383569360630759, 37.75473148712782 ], [ -122.383548680403266, 37.754734564546567 ], [ -122.3835279827709, 37.754736955513799 ], [ -122.383505538587656, 37.754738687938882 ], [ -122.38348480614728, 37.754739706002738 ], [ -122.383441577306456, 37.754740396857535 ], [ -122.383400008003704, 37.754738313997002 ], [ -122.38337920595491, 37.754736586250608 ], [ -122.383356657006146, 37.754734199690795 ], [ -122.383335820163737, 37.754731099315492 ], [ -122.383314965907985, 37.754727311939398 ], [ -122.383295841160447, 37.754723497196949 ], [ -122.383254063070865, 37.754713177184357 ], [ -122.383234885782983, 37.75470730309371 ], [ -122.383213961945074, 37.754700770182538 ], [ -122.383194767270453, 37.754694209911989 ], [ -122.383175537439726, 37.754686276198775 ], [ -122.383158037470992, 37.754678315390812 ], [ -122.383138807994129, 37.754670381666052 ], [ -122.383103737780345, 37.754651713981168 ], [ -122.383086185277548, 37.75464169354953 ], [ -122.383068615380594, 37.754630986667287 ], [ -122.383052774639708, 37.754620252154247 ], [ -122.383036916504807, 37.754608831191064 ], [ -122.383015731729387, 37.754592001250259 ], [ -122.38299259130558, 37.754566275663684 ], [ -122.382971180378888, 37.754540521890775 ], [ -122.382949752076243, 37.754514081940449 ], [ -122.382930053282664, 37.754487614354218 ], [ -122.382908625009904, 37.754461174396191 ], [ -122.382888908501968, 37.754434020360335 ], [ -122.382870920808742, 37.754406838701115 ], [ -122.382842850708954, 37.754363390808408 ], [ -122.382816907001839, 37.754323234339928 ], [ -122.382797016608123, 37.754289216082142 ], [ -122.382791480900465, 37.754275569725095 ], [ -122.382785928504248, 37.754261237457797 ], [ -122.38278210489284, 37.754246877022375 ], [ -122.382781722177867, 37.754231775164968 ], [ -122.382784449823419, 37.754202889097733 ], [ -122.382789271581657, 37.754188390821014 ], [ -122.382795840220822, 37.754174551362205 ], [ -122.382804155740061, 37.754161370721022 ], [ -122.382814217447034, 37.754148848908173 ], [ -122.382826043083483, 37.754137672365715 ], [ -122.382839615252593, 37.75412715464509 ], [ -122.382853204821586, 37.754117323645531 ], [ -122.382868575702929, 37.754109523814002 ], [ -122.382885693124038, 37.754102383077345 ], [ -122.382904591526582, 37.754097274061955 ], [ -122.382896892098685, 37.754066494402807 ], [ -122.382890922160428, 37.754035687111681 ], [ -122.382884969278336, 37.754005566273698 ], [ -122.382876487005475, 37.753943896449059 ], [ -122.382873975008934, 37.75391303391072 ], [ -122.382869733880582, 37.753882198997694 ], [ -122.382868951022118, 37.753851308833418 ], [ -122.382866421635015, 37.753819759846344 ], [ -122.382865638778583, 37.753788869681728 ], [ -122.38286753098933, 37.753727034381221 ], [ -122.382869667430043, 37.75367480879347 ], [ -122.382867485984363, 37.753656988767865 ], [ -122.382865286797127, 37.753638482299571 ], [ -122.382861376571569, 37.753620689893637 ], [ -122.382850096841622, 37.753585160622798 ], [ -122.382842745420064, 37.753568109920103 ], [ -122.382833665214591, 37.753551086561764 ], [ -122.382822855548582, 37.753534091107603 ], [ -122.382812063283737, 37.753517782100509 ], [ -122.382801288419827, 37.753502159540567 ], [ -122.382788801838672, 37.753487251326646 ], [ -122.382774586124242, 37.75347237018628 ], [ -122.382742765715449, 37.753445409495008 ], [ -122.382726873440859, 37.753432615860532 ], [ -122.382709269084074, 37.753420535751609 ], [ -122.382691682135089, 37.753409142362763 ], [ -122.382672383117907, 37.753398463047603 ], [ -122.382653119587403, 37.753389156614546 ], [ -122.382611168393765, 37.753371971889877 ], [ -122.382590227592559, 37.7533647524183 ], [ -122.382569321590282, 37.753358906113988 ], [ -122.382546703510585, 37.753353773605845 ], [ -122.382524103512239, 37.753349327255975 ], [ -122.382501520571083, 37.75334556763007 ], [ -122.382478972425403, 37.753343181170841 ], [ -122.382456441314361, 37.753341480611873 ], [ -122.382433945688362, 37.753341153208574 ], [ -122.382402821501856, 37.753341650348268 ], [ -122.38237864858533, 37.753343409903252 ], [ -122.382356222188207, 37.753345828558139 ], [ -122.382297501266095, 37.753349513077993 ], [ -122.38226810654271, 37.753349982559506 ], [ -122.382240423203967, 37.753349737974666 ], [ -122.382210993352999, 37.753348834550927 ], [ -122.382181546112378, 37.753347244671602 ], [ -122.382152081137065, 37.753344968342162 ], [ -122.382124328241176, 37.753341977937026 ], [ -122.382094811792641, 37.753337642237426 ], [ -122.38206700673382, 37.753332592473967 ], [ -122.382039184289724, 37.753326856255676 ], [ -122.38201134446112, 37.753320433582523 ], [ -122.38200001736864, 37.75331754288009 ], [ -122.381983487255724, 37.753313324729064 ], [ -122.381957341428489, 37.753305501265011 ], [ -122.3819294494578, 37.75329701950217 ], [ -122.38187705455077, 37.753277254112369 ], [ -122.381850839550978, 37.753266685100435 ], [ -122.3818017982653, 37.753242746046119 ], [ -122.381777242861062, 37.753229403614625 ], [ -122.381754416238635, 37.753216033574361 ], [ -122.381731572936843, 37.753201977344837 ], [ -122.381708677132991, 37.753185861496782 ], [ -122.381985040410456, 37.753169774197133 ], [ -122.382560765120331, 37.753136419940226 ], [ -122.382560989570067, 37.75313671714089 ], [ -122.382951309683904, 37.753114103639163 ], [ -122.383438933023925, 37.753085850281579 ], [ -122.383914427464433, 37.753058600498669 ], [ -122.384879974685347, 37.753002645165687 ], [ -122.385845520438053, 37.752946681373402 ], [ -122.385845731512404, 37.752946669205699 ], [ -122.386811064397406, 37.752890709951139 ], [ -122.386811676199414, 37.752890674609837 ], [ -122.387755875750031, 37.752835749697695 ], [ -122.387756291326852, 37.752835725460692 ], [ -122.387756280477618, 37.752835611637821 ], [ -122.387633974640565, 37.751559603455405 ], [ -122.387585270262662, 37.750263378063039 ], [ -122.388507729357968, 37.750205975353602 ], [ -122.389478017653872, 37.750145107673561 ], [ -122.390433038183829, 37.750118341633915 ], [ -122.391418367221192, 37.750140606282606 ], [ -122.391693805117924, 37.750111668488358 ], [ -122.391705979739527, 37.750110389401705 ], [ -122.391714686151033, 37.750109474739723 ], [ -122.391929934247997, 37.750086859865874 ], [ -122.392350740047519, 37.750026024134087 ], [ -122.392354048972692, 37.750025545503377 ], [ -122.392381992909165, 37.750021506018193 ], [ -122.393314555211816, 37.749918012051069 ], [ -122.393322792145199, 37.749917097944952 ], [ -122.393340265733656, 37.749915158351328 ], [ -122.395231400136637, 37.749808114846253 ], [ -122.395307862010839, 37.749803786070743 ], [ -122.396273544250747, 37.74974560058007 ], [ -122.397285415820363, 37.749684622841229 ], [ -122.40206163398004, 37.749396678541473 ], [ -122.402063015501824, 37.749396333205695 ], [ -122.402215286387033, 37.749358244852793 ], [ -122.402746245055127, 37.749375020002113 ], [ -122.402866303074774, 37.749478453789486 ], [ -122.402866309087059, 37.749478458911533 ], [ -122.402968925612569, 37.749550036933734 ], [ -122.403054692816028, 37.74954427306843 ], [ -122.403203674195439, 37.749534260068266 ], [ -122.403260968692152, 37.749530409553117 ], [ -122.403568849778438, 37.749475672986911 ], [ -122.403592456970202, 37.749471475909672 ], [ -122.403667613571599, 37.749458113882532 ], [ -122.403783562755194, 37.749432891426196 ], [ -122.403735650894049, 37.749583872707518 ], [ -122.403514246938869, 37.750281563827826 ], [ -122.403378511001179, 37.750679445903444 ], [ -122.403214572776321, 37.751164169122518 ], [ -122.403175027775376, 37.751281093014263 ], [ -122.403072643662085, 37.751794247946641 ], [ -122.403060331379024, 37.751915861053995 ], [ -122.403006670294943, 37.752445905732571 ], [ -122.402978169178084, 37.75275045704997 ], [ -122.40301031565609, 37.753201877425177 ], [ -122.403011715723153, 37.753221541143297 ], [ -122.403127143734139, 37.75447773377249 ], [ -122.403244936870763, 37.755759623462495 ], [ -122.403245024221292, 37.755760575231484 ], [ -122.403305530792395, 37.756165877853867 ], [ -122.403395700993769, 37.756471262485057 ], [ -122.403543859417937, 37.75680412126377 ], [ -122.403689260967766, 37.757015002579273 ], [ -122.403774084903432, 37.757138026202746 ], [ -122.403774405770974, 37.757138490742172 ], [ -122.404168659910013, 37.75752977302043 ], [ -122.404441730762329, 37.757748221369937 ], [ -122.40472107938929, 37.757950649275713 ], [ -122.404835145723425, 37.7580339263735 ], [ -122.405048169961901, 37.758189448369819 ], [ -122.405545221503274, 37.758536929330724 ], [ -122.405903135660481, 37.758934413706449 ], [ -122.406103779268008, 37.759196479511928 ], [ -122.406247868764623, 37.759429354319998 ], [ -122.406261953936678, 37.75945211819198 ], [ -122.406389357641601, 37.759804405761585 ], [ -122.406492391998796, 37.760255279712112 ], [ -122.406492697683589, 37.760686469836571 ], [ -122.406479479731502, 37.760730932047331 ], [ -122.4062826701159, 37.761392945250627 ], [ -122.406147061407296, 37.7616371808829 ], [ -122.406021608630979, 37.761863123291867 ], [ -122.405925510731336, 37.762011914887523 ], [ -122.405653838302513, 37.762432552128487 ], [ -122.405384490436404, 37.76297005284507 ], [ -122.40532469627189, 37.76313750682079 ], [ -122.405258413683796, 37.763323129887908 ], [ -122.405203088479681, 37.763478066930332 ], [ -122.405104592203571, 37.763852244172895 ], [ -122.405059622300016, 37.764310557738277 ], [ -122.405089602982216, 37.764628538373131 ], [ -122.404841911264157, 37.764643492872132 ], [ -122.404496977488066, 37.764664317561468 ], [ -122.403527034519726, 37.764722870371436 ], [ -122.402563396844656, 37.764781034314389 ], [ -122.401598999326723, 37.764839236400867 ], [ -122.401604204317508, 37.764894634517518 ], [ -122.401720515816834, 37.766132520250999 ], [ -122.40075504647362, 37.766190486570189 ], [ -122.399760960198876, 37.766250252443854 ], [ -122.39980174760619, 37.766587745781216 ], [ -122.399677637243116, 37.766695444602661 ], [ -122.4004285874814, 37.76730030349627 ], [ -122.400680751363893, 37.767503407870436 ], [ -122.400877239583821, 37.76748837440357 ], [ -122.401842503677628, 37.76743077711658 ], [ -122.401962350744, 37.768706209224241 ], [ -122.402926809989424, 37.76864812762463 ], [ -122.403037758616776, 37.769828657390953 ], [ -122.403406518421917, 37.769807099957397 ], [ -122.403615112128733, 37.769893190404822 ], [ -122.403877699904385, 37.770062866265505 ], [ -122.403531054507056, 37.770336670466769 ], [ -122.401656665936628, 37.77181711392474 ], [ -122.399647849152032, 37.773403860176856 ], [ -122.399516440682405, 37.773507653276255 ], [ -122.399433130909728, 37.773573455617395 ], [ -122.400212340411557, 37.77419510487973 ], [ -122.400592319049849, 37.774498244536282 ], [ -122.400981567656032, 37.774808775969753 ], [ -122.402524096584528, 37.776039321403807 ], [ -122.40337073826143, 37.776714700215486 ], [ -122.403505778866929, 37.776822422431877 ], [ -122.403673439982725, 37.776956165214415 ], [ -122.404070256642925, 37.777272702482797 ], [ -122.404605505853894, 37.777699659794813 ], [ -122.405068508898097, 37.778068981419388 ], [ -122.405615266425855, 37.778505104539292 ], [ -122.404431250807633, 37.779440334605447 ], [ -122.403387209275081, 37.78026497235011 ], [ -122.401159718585049, 37.782024266952142 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":2,"ZIP_CODE":94105,"ID":94105},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.39249932896719, 37.793768814133983 ], [ -122.391890260341384, 37.794278544568918 ], [ -122.391788865572423, 37.794170982455135 ], [ -122.39173429034625, 37.79420276052317 ], [ -122.391666728649753, 37.794132425256194 ], [ -122.391723034266192, 37.79410061945832 ], [ -122.391673228351905, 37.794047854124599 ], [ -122.391982015107928, 37.793871906128679 ], [ -122.391589022782, 37.793527982873798 ], [ -122.391723231555744, 37.793429001692992 ], [ -122.390805927608938, 37.792657675413892 ], [ -122.388808599369057, 37.790978116182679 ], [ -122.388930714411984, 37.790880018842998 ], [ -122.388611692601799, 37.790313089306778 ], [ -122.388048971491713, 37.790507516256234 ], [ -122.388012417064502, 37.790431188672287 ], [ -122.388369268465311, 37.790308044637399 ], [ -122.388285919009036, 37.790161047422416 ], [ -122.388320274159014, 37.790150883121463 ], [ -122.388243932142601, 37.790007207265845 ], [ -122.388219415789919, 37.789995925591761 ], [ -122.388076857804336, 37.790038725053051 ], [ -122.38779803320179, 37.790149885537438 ], [ -122.385731305877229, 37.790973806479329 ], [ -122.385715648397209, 37.790970622998962 ], [ -122.385703294724394, 37.790961206457723 ], [ -122.385509561738004, 37.790556391724344 ], [ -122.385507518014222, 37.790544063409705 ], [ -122.385514141658973, 37.790532283492631 ], [ -122.385686917933171, 37.79045260764569 ], [ -122.387606646474296, 37.789787359176458 ], [ -122.387348795424046, 37.789311467853956 ], [ -122.38734757309517, 37.78931176210844 ], [ -122.385363735345749, 37.789788908162748 ], [ -122.385346470166525, 37.789790557672781 ], [ -122.385330865935444, 37.789789433734306 ], [ -122.3853151742195, 37.789784877582385 ], [ -122.385301142770246, 37.789777548268411 ], [ -122.385290501190326, 37.789767417313975 ], [ -122.385283285054584, 37.789755858694043 ], [ -122.385108047186435, 37.789329458915937 ], [ -122.385106003217075, 37.789317130597112 ], [ -122.385109132387825, 37.789304032849302 ], [ -122.385115773404124, 37.789292939120834 ], [ -122.385127656568173, 37.78928382174719 ], [ -122.385141339390941, 37.789277422487608 ], [ -122.385148542800621, 37.789220309385662 ], [ -122.387188020139192, 37.788773590697055 ], [ -122.387049561519532, 37.788228488916552 ], [ -122.385265755459955, 37.788520039162925 ], [ -122.385250134063114, 37.78851822849537 ], [ -122.385234425193858, 37.78851298588809 ], [ -122.385222089078539, 37.788504256015905 ], [ -122.385214890495845, 37.788493383558084 ], [ -122.385126670096767, 37.788154179856562 ], [ -122.385126356426341, 37.788141823596902 ], [ -122.385129502623784, 37.788129412294914 ], [ -122.385137873116122, 37.788118290909864 ], [ -122.385149773868434, 37.788109860244717 ], [ -122.385165203482913, 37.788104119771369 ], [ -122.38712311120571, 37.787785749180493 ], [ -122.387152415559953, 37.787781160094404 ], [ -122.38716964498991, 37.787778137163613 ], [ -122.38718858690207, 37.78777440037284 ], [ -122.387205798545097, 37.787770691273494 ], [ -122.387224740799539, 37.787766954471365 ], [ -122.387241935339802, 37.787762558917869 ], [ -122.387260859452994, 37.787758135677656 ], [ -122.387278054335084, 37.787753740113331 ], [ -122.387312408509445, 37.787743576101576 ], [ -122.387329567801103, 37.787737807654125 ], [ -122.387346745228243, 37.787732725636424 ], [ -122.387363887068403, 37.787726270740649 ], [ -122.38738104704403, 37.787720502274603 ], [ -122.38740694457185, 37.787241442038656 ], [ -122.387019444956891, 37.787247644385083 ], [ -122.384558944804354, 37.787400993480382 ], [ -122.384543323667074, 37.787399182993411 ], [ -122.384527632511421, 37.787394627009306 ], [ -122.384515296650974, 37.787385896512234 ], [ -122.384504655873897, 37.787375765751548 ], [ -122.384499135159118, 37.787362806267062 ], [ -122.384342210870813, 37.785748083262355 ], [ -122.384341897348037, 37.785735727269817 ], [ -122.384346773449252, 37.785723288336335 ], [ -122.38435689108006, 37.785712825798925 ], [ -122.384370521056837, 37.785704367292539 ], [ -122.384385968349036, 37.785699313626168 ], [ -122.387217967726542, 37.785525599931667 ], [ -122.387242186237785, 37.785525212275893 ], [ -122.387269846695702, 37.785524082797316 ], [ -122.387295742393547, 37.78552160811531 ], [ -122.387323367958444, 37.785519105736952 ], [ -122.387349245861117, 37.785515944605116 ], [ -122.387375089561743, 37.785511410569285 ], [ -122.387402662781668, 37.785506848841521 ], [ -122.387454279688384, 37.785495034977437 ], [ -122.387478323373855, 37.785487782842686 ], [ -122.387504079475306, 37.785479816566138 ], [ -122.387528105357717, 37.785471877983142 ], [ -122.387553826899222, 37.785462538802953 ], [ -122.387580894103834, 37.785438070169313 ], [ -122.387630346985745, 37.78486455148672 ], [ -122.385458308223278, 37.78499338709468 ], [ -122.385413881876744, 37.784606785946664 ], [ -122.387221366105805, 37.784501641660896 ], [ -122.387418079949683, 37.784479264504995 ], [ -122.38743876829875, 37.784476186423468 ], [ -122.387483534893533, 37.784467229088612 ], [ -122.387528231689217, 37.784455525961853 ], [ -122.387550562288524, 37.78444898795393 ], [ -122.387571145938807, 37.78444179118685 ], [ -122.387593442333781, 37.784433880546885 ], [ -122.387613991073025, 37.784425310610295 ], [ -122.38765505365474, 37.784406798388098 ], [ -122.387673819852623, 37.78439619708557 ], [ -122.387677823231684, 37.784349435820396 ], [ -122.387709046749492, 37.783875783688671 ], [ -122.386286930602978, 37.783958976243902 ], [ -122.386236533710786, 37.783405597391891 ], [ -122.387525601081578, 37.78333071590594 ], [ -122.387695596747974, 37.783278550154108 ], [ -122.387751878035047, 37.783246059476667 ], [ -122.387776877347846, 37.78286796141245 ], [ -122.3875502225155, 37.782801544578085 ], [ -122.387525883466154, 37.782797127453357 ], [ -122.387484228568439, 37.78279230054234 ], [ -122.387463418560699, 37.782790573250665 ], [ -122.387440913647538, 37.782790246810194 ], [ -122.387420138539767, 37.78278989267335 ], [ -122.387388984601131, 37.782789704683182 ], [ -122.387368261829351, 37.782791409869013 ], [ -122.387347521611616, 37.782792428607252 ], [ -122.384758972173714, 37.782940280456494 ], [ -122.384743316428853, 37.782937096842417 ], [ -122.384732711445736, 37.782928338977264 ], [ -122.384679972094801, 37.782554918115103 ], [ -122.384681388329753, 37.782542534464426 ], [ -122.384691505480149, 37.782532071892298 ], [ -122.384705187096728, 37.782525672675533 ], [ -122.387509249137921, 37.78234690330077 ], [ -122.387528224534123, 37.782344539065186 ], [ -122.387554136561661, 37.78234275076899 ], [ -122.38762294594062, 37.782322839482177 ], [ -122.387787765874378, 37.782275144853472 ], [ -122.387765464889313, 37.78194244138043 ], [ -122.388106738902522, 37.781931906493995 ], [ -122.388231340039766, 37.782146697467269 ], [ -122.388304301898813, 37.782356717503951 ], [ -122.388306939892615, 37.782385221520776 ], [ -122.389843136047602, 37.783611740842574 ], [ -122.389846392025618, 37.783609176617361 ], [ -122.390856721023212, 37.784410569188324 ], [ -122.391599105853345, 37.783822668268179 ], [ -122.391600764141245, 37.783823989838545 ], [ -122.392032919786118, 37.784168354830349 ], [ -122.392118766536498, 37.784205306785267 ], [ -122.392215026316663, 37.784279352365694 ], [ -122.392216553530702, 37.784278123341721 ], [ -122.39285700396303, 37.784773072758867 ], [ -122.39286959393705, 37.78478280203197 ], [ -122.39343711789931, 37.784459123881106 ], [ -122.394398389309941, 37.783701667981575 ], [ -122.395160622349934, 37.78431101230386 ], [ -122.395895701657864, 37.784896929203114 ], [ -122.396705177550587, 37.785542130425938 ], [ -122.397811613142864, 37.784666586003652 ], [ -122.399369533643153, 37.785899247741973 ], [ -122.400468483886854, 37.785030285141588 ], [ -122.400994549885382, 37.785441790992316 ], [ -122.400998469557948, 37.785444857061968 ], [ -122.401480059865179, 37.785821567351917 ], [ -122.401489835489045, 37.785829214187501 ], [ -122.402025419766176, 37.786248152290575 ], [ -122.402575227394536, 37.786678208153539 ], [ -122.403028193190352, 37.787024418822838 ], [ -122.403028734856406, 37.78702485040828 ], [ -122.403342641535644, 37.787274627660381 ], [ -122.403430800369534, 37.787641848645734 ], [ -122.403239953883428, 37.787802352067843 ], [ -122.40290309900054, 37.788085647297414 ], [ -122.402903089488873, 37.788085654318181 ], [ -122.402404665507532, 37.788463925757384 ], [ -122.402065730098272, 37.788721152097366 ], [ -122.401375490979433, 37.789264321921429 ], [ -122.400067228055164, 37.790303858609981 ], [ -122.399919790020746, 37.790414442896498 ], [ -122.399480001759599, 37.790744297277485 ], [ -122.399222136170906, 37.790956214990921 ], [ -122.39914859901539, 37.791016648609592 ], [ -122.399148598683425, 37.79101664916432 ], [ -122.398264448861653, 37.791716058450703 ], [ -122.39826444614279, 37.791716060417308 ], [ -122.397840810091907, 37.792047595331439 ], [ -122.39738344591872, 37.792405521295422 ], [ -122.396504486670068, 37.793097082520163 ], [ -122.396376076969489, 37.793198086984006 ], [ -122.396302004629632, 37.793256350149633 ], [ -122.396302004290646, 37.793256350429786 ], [ -122.395983670970253, 37.793501461560965 ], [ -122.395622922555773, 37.793779228585429 ], [ -122.39533276386878, 37.794011429145591 ], [ -122.395317307728533, 37.794023797689903 ], [ -122.394971722038662, 37.794300351169447 ], [ -122.394747579547172, 37.794479718347191 ], [ -122.394745733667804, 37.794478246556643 ], [ -122.394745701490038, 37.794478274267938 ], [ -122.394150899798674, 37.794987788593353 ], [ -122.39270797067924, 37.793614415765255 ], [ -122.392702063215523, 37.793608792659974 ], [ -122.39249932896719, 37.793768814133983 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":3,"ZIP_CODE":94129,"ID":94129},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.470990721149789, 37.787534455433345 ], [ -122.472290534181823, 37.787395917162272 ], [ -122.472401902490546, 37.787384046501884 ], [ -122.47254342327507, 37.787368961705944 ], [ -122.472782224474642, 37.787331534391747 ], [ -122.473316434470121, 37.787247805418339 ], [ -122.474432824368861, 37.787072820298278 ], [ -122.474584006514732, 37.787049123020516 ], [ -122.47616220885665, 37.786978730627588 ], [ -122.478707989065171, 37.78691405835 ], [ -122.481375583614479, 37.787198893328011 ], [ -122.483910676418589, 37.787705653817092 ], [ -122.483911841345289, 37.78771598691722 ], [ -122.484019551359538, 37.788671434543716 ], [ -122.484071292407094, 37.789571562974182 ], [ -122.484214987310182, 37.789767611906584 ], [ -122.484758163249651, 37.789969442365155 ], [ -122.485095392905748, 37.790094746949087 ], [ -122.486221786002261, 37.790513270391187 ], [ -122.486196663014411, 37.790544596769486 ], [ -122.486148110204482, 37.790605847513199 ], [ -122.486108757859654, 37.790687545376898 ], [ -122.486034586054117, 37.790761588869977 ], [ -122.48595999185838, 37.790819844471812 ], [ -122.485896199163861, 37.790893713055688 ], [ -122.485740384038749, 37.791021323419344 ], [ -122.48558351329909, 37.791238913899868 ], [ -122.485411383576832, 37.791468435611826 ], [ -122.485284654257228, 37.791712987869268 ], [ -122.484994993901111, 37.791948608146861 ], [ -122.484752903676167, 37.79221570331633 ], [ -122.484541285320944, 37.792522116372695 ], [ -122.484363647892437, 37.79274005429609 ], [ -122.484183607122475, 37.793062416612024 ], [ -122.484072129345151, 37.793295035940602 ], [ -122.483858237133077, 37.793646123471206 ], [ -122.483593432919847, 37.794035150786577 ], [ -122.48329368676049, 37.794671303481294 ], [ -122.483518531231283, 37.794730014502065 ], [ -122.48308859662535, 37.79561146099627 ], [ -122.482999467368202, 37.795903449272551 ], [ -122.48285101972256, 37.796177893057802 ], [ -122.482765752291186, 37.796484924353678 ], [ -122.482667211606753, 37.796813467545597 ], [ -122.482504820847737, 37.797149264997877 ], [ -122.482349642968302, 37.797495928150028 ], [ -122.482180347467406, 37.797832527598885 ], [ -122.482169137762298, 37.797996159399602 ], [ -122.482136359830861, 37.798129936813986 ], [ -122.482085493238017, 37.798234488898757 ], [ -122.482121580114068, 37.798289507917929 ], [ -122.482129545147487, 37.798328517967903 ], [ -122.482111649834962, 37.798371396374968 ], [ -122.482102148276397, 37.798404519393337 ], [ -122.482087585279373, 37.798442534909526 ], [ -122.482079722552115, 37.798472196426395 ], [ -122.482040900643639, 37.798509246213612 ], [ -122.481958513784505, 37.798535353148957 ], [ -122.481870239865685, 37.798535463289312 ], [ -122.481831454802517, 37.798573885582073 ], [ -122.48191348856912, 37.79872908258961 ], [ -122.481933747767386, 37.798774753652147 ], [ -122.481894064444091, 37.798779540742402 ], [ -122.481782518807989, 37.79868595916038 ], [ -122.481759479485277, 37.798795537302446 ], [ -122.481735532663109, 37.798806240772073 ], [ -122.481729674725472, 37.79884616987701 ], [ -122.481697076819628, 37.79885701872184 ], [ -122.481553967429107, 37.798748172710248 ], [ -122.481544740366218, 37.798791592096414 ], [ -122.481675391067768, 37.798887599511232 ], [ -122.481685177680191, 37.798930012650303 ], [ -122.481641997341171, 37.798933485499177 ], [ -122.481619981772425, 37.798951710306021 ], [ -122.481601609693158, 37.798976741512377 ], [ -122.481583384160913, 37.799007264136819 ], [ -122.481561643359143, 37.799035785621555 ], [ -122.481552599461594, 37.799086069282282 ], [ -122.48153672724159, 37.799139901359283 ], [ -122.481507471077649, 37.799211126714575 ], [ -122.481470873600131, 37.799266680501994 ], [ -122.481417267273812, 37.799333507835762 ], [ -122.481380082795965, 37.799367095921824 ], [ -122.481394839952742, 37.799401184738606 ], [ -122.48138749011072, 37.799450066445814 ], [ -122.481313103352264, 37.799516556146521 ], [ -122.481199920275785, 37.799556228466017 ], [ -122.481106226731853, 37.799612741364335 ], [ -122.481068868952889, 37.799704704484391 ], [ -122.481063386681015, 37.799823601791012 ], [ -122.481042139949025, 37.799870656721012 ], [ -122.48098682060791, 37.799938199625082 ], [ -122.480980184705871, 37.800013851703859 ], [ -122.480977156432658, 37.800224730569639 ], [ -122.480974804661557, 37.800331213761126 ], [ -122.480860274222692, 37.800385329797535 ], [ -122.480757965088657, 37.800443360304584 ], [ -122.48067857879505, 37.800582040732152 ], [ -122.48065611449222, 37.800648344612128 ], [ -122.480592381330325, 37.800724956178229 ], [ -122.480537665874181, 37.800815150409605 ], [ -122.480468568377589, 37.800950224199951 ], [ -122.480375485908439, 37.801094628286094 ], [ -122.480295978813317, 37.801293743123836 ], [ -122.480202328037436, 37.801416867810858 ], [ -122.480181840275407, 37.801557305763211 ], [ -122.480071801739967, 37.801844835145566 ], [ -122.480027318791514, 37.802059156846411 ], [ -122.480044134726015, 37.802235365083838 ], [ -122.480004943470632, 37.80238847850972 ], [ -122.479965705600534, 37.802604771748101 ], [ -122.479928024203545, 37.802749618690633 ], [ -122.479899085376999, 37.802897752511299 ], [ -122.479813341330441, 37.803057827736559 ], [ -122.479734279947053, 37.803208863153962 ], [ -122.479678141843124, 37.803310755542739 ], [ -122.479612025097651, 37.803427923840943 ], [ -122.479496444899141, 37.803572704736546 ], [ -122.479357004588351, 37.803861413494445 ], [ -122.479173928312875, 37.80433146553451 ], [ -122.479146809127258, 37.804483001950985 ], [ -122.479060667102701, 37.804693214811543 ], [ -122.478953175659996, 37.804881810346664 ], [ -122.478815220557294, 37.805291358623961 ], [ -122.47872883882674, 37.805492647931004 ], [ -122.478723432948883, 37.805679530333919 ], [ -122.47869664200617, 37.805843422292654 ], [ -122.478685946257201, 37.805961720018743 ], [ -122.478628322791295, 37.806008011253461 ], [ -122.478654742843744, 37.806089976088074 ], [ -122.478631304779441, 37.806119899160173 ], [ -122.478660343597923, 37.806170230012903 ], [ -122.478638955177018, 37.806277032642242 ], [ -122.478627125019798, 37.806352771870088 ], [ -122.478625044107972, 37.806469551574978 ], [ -122.47857586751384, 37.806637939992576 ], [ -122.478562516078711, 37.80678649853526 ], [ -122.478544650108333, 37.806960541692234 ], [ -122.478526703332861, 37.807066600081164 ], [ -122.478526389161814, 37.807184723319764 ], [ -122.478521297177736, 37.807253482414033 ], [ -122.478488208711909, 37.807311036148292 ], [ -122.478483958170003, 37.807411370608691 ], [ -122.478496304822514, 37.807549883734964 ], [ -122.478476156109295, 37.807833156107016 ], [ -122.478405186887699, 37.808093245296376 ], [ -122.478343748883177, 37.808126216988313 ], [ -122.478060427750734, 37.808278265895638 ], [ -122.477897062640963, 37.80844925522419 ], [ -122.477885395973601, 37.808531172189731 ], [ -122.477923697644769, 37.808669250052077 ], [ -122.477956528906134, 37.809251736581921 ], [ -122.477922196862778, 37.80978247039468 ], [ -122.477956931601639, 37.810111519960003 ], [ -122.477924513902849, 37.810324264541741 ], [ -122.477975357212003, 37.810543166576302 ], [ -122.477691959274622, 37.810627579828761 ], [ -122.477738440983671, 37.81094269802653 ], [ -122.477669662799912, 37.810960332923507 ], [ -122.477465352217308, 37.810997758254302 ], [ -122.4773147668257, 37.811025342092201 ], [ -122.476951827952391, 37.810983355163785 ], [ -122.476621797907725, 37.810876948869407 ], [ -122.47656163509636, 37.810893065263848 ], [ -122.476466638674822, 37.81083628492037 ], [ -122.47639876264958, 37.810757761311969 ], [ -122.476244453139699, 37.810423848047549 ], [ -122.476192907539087, 37.810243414175943 ], [ -122.47615497008627, 37.809858792499412 ], [ -122.47604874198008, 37.809640130705603 ], [ -122.475967371125094, 37.809574880888988 ], [ -122.475790153494444, 37.809485827869665 ], [ -122.475539966877108, 37.809387008587656 ], [ -122.474949730564461, 37.809260233883315 ], [ -122.474802168498073, 37.809179610065499 ], [ -122.474477490769161, 37.809143842083898 ], [ -122.474059299537672, 37.809106891534391 ], [ -122.473248913495638, 37.809099164155811 ], [ -122.472667246163553, 37.80903404071298 ], [ -122.472248345244111, 37.80897031306057 ], [ -122.471807567969009, 37.808865058985567 ], [ -122.471692590128313, 37.808861156356251 ], [ -122.471577117792876, 37.808857237159089 ], [ -122.471241422813662, 37.80879760884919 ], [ -122.470932885927255, 37.808717610499883 ], [ -122.47066006806898, 37.808613665617798 ], [ -122.470600816238615, 37.80859886080146 ], [ -122.470032562336371, 37.809430372877515 ], [ -122.469989867152222, 37.809452374737276 ], [ -122.469923620349192, 37.809434939483481 ], [ -122.469403337873828, 37.809203958897747 ], [ -122.469386781047135, 37.809167151824653 ], [ -122.469446470968407, 37.809067952374448 ], [ -122.469513627885206, 37.809054469737255 ], [ -122.470046113471852, 37.809288679655658 ], [ -122.470536336868321, 37.808582769832967 ], [ -122.47042036446561, 37.808452854807648 ], [ -122.470227327454069, 37.808354443608728 ], [ -122.470098624189163, 37.80826663136105 ], [ -122.470013817898405, 37.808202121652926 ], [ -122.469815463486142, 37.808098991213633 ], [ -122.469586546186093, 37.807953106986339 ], [ -122.469305300471973, 37.807727061403774 ], [ -122.469233592741006, 37.807568936815628 ], [ -122.469112342826094, 37.807370435141976 ], [ -122.46886886007195, 37.807066844008062 ], [ -122.468789265438318, 37.807002933173059 ], [ -122.468641769161479, 37.806924361175163 ], [ -122.468442727148087, 37.806860383444018 ], [ -122.468303117397753, 37.806818075943092 ], [ -122.46814816670377, 37.806980670547468 ], [ -122.46804250856195, 37.806913074050627 ], [ -122.468204198687829, 37.806743499513175 ], [ -122.468154584727131, 37.80670037662253 ], [ -122.467927641872478, 37.806563383834956 ], [ -122.4677672527434, 37.806455496134681 ], [ -122.467355591928154, 37.806141659736177 ], [ -122.467203291926239, 37.806012347645776 ], [ -122.466996296046148, 37.805909356729394 ], [ -122.466671493417238, 37.805802836197401 ], [ -122.466463320033583, 37.805982110961864 ], [ -122.466652133036774, 37.805790797867139 ], [ -122.466274152924925, 37.805653990321176 ], [ -122.466075349709101, 37.80558203392561 ], [ -122.465895016150796, 37.805570618742252 ], [ -122.465648753037854, 37.805488195293123 ], [ -122.46546102999136, 37.805393808021854 ], [ -122.464551731906468, 37.805113664168701 ], [ -122.464230324554308, 37.805004333527904 ], [ -122.463987997870177, 37.804939695859083 ], [ -122.463579617827847, 37.804879883064366 ], [ -122.463271699005631, 37.804887756693624 ], [ -122.462952230341088, 37.804917109899002 ], [ -122.4624302743036, 37.805013698161765 ], [ -122.462214023782167, 37.805018669869817 ], [ -122.462027122615794, 37.804955166469341 ], [ -122.461896643188638, 37.804930554615567 ], [ -122.461601325019004, 37.804956755736356 ], [ -122.461272453201914, 37.805023344559039 ], [ -122.461007547032963, 37.805086808651389 ], [ -122.459772513833471, 37.805253612450713 ], [ -122.45957795006224, 37.805293241948746 ], [ -122.459540191073017, 37.805305543773983 ], [ -122.45950068434351, 37.805317187894794 ], [ -122.459462907558404, 37.805328803259258 ], [ -122.459423363879012, 37.805339074505127 ], [ -122.45938555118417, 37.805349316978521 ], [ -122.459306427886148, 37.805368486538775 ], [ -122.459227232780066, 37.805384910313265 ], [ -122.459185886621981, 37.805392464497949 ], [ -122.459106618316682, 37.805406142481793 ], [ -122.459065217794489, 37.805411637333286 ], [ -122.459025547917307, 37.805417103422087 ], [ -122.458984129270405, 37.80542191181479 ], [ -122.458944422811243, 37.805426005021417 ], [ -122.458902967930442, 37.80542944052501 ], [ -122.458861494934339, 37.805432189583698 ], [ -122.458788912310027, 37.805436828799479 ], [ -122.458735345621889, 37.80544046541047 ], [ -122.458683526998115, 37.80544475969581 ], [ -122.458631726477662, 37.805449740388731 ], [ -122.458578213760234, 37.805455436499734 ], [ -122.458526449095928, 37.805461790012899 ], [ -122.458474703215558, 37.805468829647623 ], [ -122.458371283182728, 37.805485655405761 ], [ -122.458319609004732, 37.805495440705506 ], [ -122.458269665819927, 37.805505197514321 ], [ -122.45821802818655, 37.805516356173719 ], [ -122.458168120492331, 37.805527485811837 ], [ -122.458116519376176, 37.805540017007239 ], [ -122.458066648197928, 37.805552519182882 ], [ -122.457989327072951, 37.805574405126777 ], [ -122.45793619470966, 37.805594515430641 ], [ -122.457883043876322, 37.805613939560359 ], [ -122.457829874920449, 37.805632677510189 ], [ -122.457774957510779, 37.805650757180459 ], [ -122.457721751946011, 37.805668121951648 ], [ -122.457666780196845, 37.805684142829186 ], [ -122.457610078443324, 37.805700191847833 ], [ -122.457500062415335, 37.80572948720183 ], [ -122.457443287865871, 37.805742790973085 ], [ -122.457386495190917, 37.805755408011883 ], [ -122.457329684053221, 37.805767338598564 ], [ -122.457272855492562, 37.805778582715845 ], [ -122.457186701695477, 37.805793746855791 ], [ -122.457077909022615, 37.805803793319789 ], [ -122.456970882463025, 37.805815183288864 ], [ -122.456862180533747, 37.805828661426311 ], [ -122.456755226634087, 37.80584279746536 ], [ -122.456648326952561, 37.805858992150092 ], [ -122.456541463411881, 37.805876559873688 ], [ -122.456434635998889, 37.805895500361686 ], [ -122.45632959276756, 37.805916471347693 ], [ -122.456224568256204, 37.805938128659257 ], [ -122.456119597596228, 37.80596184517497 ], [ -122.456014644961741, 37.805986248302439 ], [ -122.45591147681688, 37.806012681382633 ], [ -122.455806614105612, 37.806040516209428 ], [ -122.455705248815832, 37.806069666405428 ], [ -122.455564429228914, 37.806112518618505 ], [ -122.45530695988451, 37.806195761893825 ], [ -122.454600415883462, 37.806430130022392 ], [ -122.454483234784888, 37.806468999744823 ], [ -122.454353658700001, 37.806478701096999 ], [ -122.454308145719423, 37.806459540393945 ], [ -122.454293829263207, 37.806375996256122 ], [ -122.454085665791084, 37.806359530611644 ], [ -122.454069929877903, 37.806353610767474 ], [ -122.453815604080873, 37.806293271483817 ], [ -122.453295386032664, 37.806259311412973 ], [ -122.452781551105744, 37.806270567825713 ], [ -122.452438711570082, 37.806267316310901 ], [ -122.451653324871984, 37.806353109244483 ], [ -122.450906745259303, 37.80653233722969 ], [ -122.450459653590798, 37.806646175036533 ], [ -122.44991286747026, 37.806721142700994 ], [ -122.449819483247254, 37.806724746830461 ], [ -122.449720673642986, 37.806719513093618 ], [ -122.449631038513971, 37.806734042766898 ], [ -122.449554038474531, 37.806768278664137 ], [ -122.44947869660497, 37.806799740182214 ], [ -122.449399659671798, 37.806822335243758 ], [ -122.449304851007483, 37.806837636909691 ], [ -122.449171524916196, 37.806836407131136 ], [ -122.449109070409847, 37.806831258752986 ], [ -122.449048183710957, 37.806819903592029 ], [ -122.449010891791161, 37.806784123494651 ], [ -122.448891660899136, 37.806726348099637 ], [ -122.448806459828916, 37.806711961234221 ], [ -122.448728288255808, 37.806701578532227 ], [ -122.448565239272398, 37.806755090545202 ], [ -122.448529100304583, 37.806763241657009 ], [ -122.448455091339923, 37.806133486140737 ], [ -122.448455258275729, 37.806133277363898 ], [ -122.448323332142422, 37.805007750605469 ], [ -122.448321161555853, 37.804993824977359 ], [ -122.448279145759457, 37.80472422506687 ], [ -122.44824552349904, 37.804508484024247 ], [ -122.448240728857812, 37.804477717258706 ], [ -122.448240723025904, 37.804477679722268 ], [ -122.448245764546613, 37.8044754914729 ], [ -122.448316879890498, 37.804444627382082 ], [ -122.448814547024654, 37.804228638340902 ], [ -122.448954929708933, 37.80412855834809 ], [ -122.449124213448584, 37.804007874392056 ], [ -122.449253815658196, 37.803861977230383 ], [ -122.449388062152011, 37.803710849923448 ], [ -122.449495662264184, 37.803470319431604 ], [ -122.449583722697156, 37.803153095621241 ], [ -122.449583713807527, 37.803152915295549 ], [ -122.449565462756809, 37.802791419060213 ], [ -122.449536106109235, 37.802697377072583 ], [ -122.449460220896157, 37.80245428555321 ], [ -122.449178591741017, 37.802073857413127 ], [ -122.449043488821943, 37.801965383441527 ], [ -122.448802640091088, 37.801772003872607 ], [ -122.448359651469772, 37.801586782043685 ], [ -122.447921599691895, 37.801532283988202 ], [ -122.447857007904148, 37.801596177616553 ], [ -122.447819731578562, 37.801633051558142 ], [ -122.447819572978844, 37.801633208279924 ], [ -122.447802865090509, 37.801525678628579 ], [ -122.447614227653389, 37.80032479990944 ], [ -122.447613279369918, 37.80032370169468 ], [ -122.447466030932901, 37.799389886853575 ], [ -122.447400275900733, 37.798948048802856 ], [ -122.447341437979304, 37.798552685345861 ], [ -122.447327769221047, 37.798519415660031 ], [ -122.447303043858923, 37.798459232650295 ], [ -122.447209582420982, 37.797849561838987 ], [ -122.44715829626513, 37.797515005478481 ], [ -122.44715829625072, 37.79751500492933 ], [ -122.447014738232738, 37.796578510197754 ], [ -122.447014738218328, 37.796578509648619 ], [ -122.446928896449293, 37.796018515191513 ], [ -122.44687098056005, 37.795640691997477 ], [ -122.446751148304088, 37.794858932799087 ], [ -122.446727777275527, 37.794706465308671 ], [ -122.446727777261131, 37.794706464759514 ], [ -122.446587862952981, 37.793765120337646 ], [ -122.446446456540414, 37.792813716046261 ], [ -122.446446033268856, 37.792810866507708 ], [ -122.446299573716246, 37.791878694429421 ], [ -122.446299547924625, 37.791878529215651 ], [ -122.44720637942703, 37.791763091830468 ], [ -122.447679208068394, 37.79170289872647 ], [ -122.449367313308201, 37.791487980191171 ], [ -122.449385188501296, 37.791484927305568 ], [ -122.450995459060991, 37.791209906278311 ], [ -122.452035629818212, 37.790998907609811 ], [ -122.454248357567437, 37.79059310209788 ], [ -122.455878319348855, 37.790294143976332 ], [ -122.457498733292852, 37.789996912625632 ], [ -122.459011873160264, 37.789719335764374 ], [ -122.459028627866218, 37.789715983297555 ], [ -122.459250455476877, 37.789713291862398 ], [ -122.45947565027717, 37.789710559160014 ], [ -122.459781586189493, 37.789596250165474 ], [ -122.459925547070256, 37.789542753604124 ], [ -122.468653534340191, 37.787783523544832 ], [ -122.470990721149789, 37.787534455433345 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":4,"ZIP_CODE":94121,"ID":94121},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.504456509027335, 37.788067554312491 ], [ -122.504150949920984, 37.788096097763379 ], [ -122.504066815467581, 37.788120877294119 ], [ -122.504049145771674, 37.78810744254686 ], [ -122.503997231067004, 37.788107638193928 ], [ -122.503846231021797, 37.788091662877633 ], [ -122.503713944876083, 37.788063694207068 ], [ -122.503612889329972, 37.788038628655784 ], [ -122.503526395190363, 37.78804009845387 ], [ -122.503485137277139, 37.78805041389267 ], [ -122.503463545305024, 37.78801987747579 ], [ -122.503373498826377, 37.788017973822534 ], [ -122.503335534005146, 37.788022052592311 ], [ -122.503263415949803, 37.788043193399247 ], [ -122.503234378285072, 37.788057421563131 ], [ -122.503243398050046, 37.788071003120102 ], [ -122.503209152201507, 37.78808463302547 ], [ -122.503179577522019, 37.788078954832578 ], [ -122.503144887269229, 37.788076110778647 ], [ -122.503077958752755, 37.78809716302807 ], [ -122.503049013609541, 37.788114823274398 ], [ -122.503006581160705, 37.78814576070333 ], [ -122.502956321560973, 37.788143180813591 ], [ -122.502925535751373, 37.788156752131144 ], [ -122.502902751007483, 37.788146151342978 ], [ -122.502865053026014, 37.788095972678335 ], [ -122.502836115946863, 37.78804976589835 ], [ -122.502789020665148, 37.78803614434397 ], [ -122.502704311593945, 37.788039643712104 ], [ -122.502589076168022, 37.788066323379901 ], [ -122.502515190951499, 37.788086120259166 ], [ -122.502425496104195, 37.788097257971025 ], [ -122.502376106845503, 37.788126939838207 ], [ -122.502316846531585, 37.7881114644726 ], [ -122.502255070395776, 37.788131055545016 ], [ -122.502169528699341, 37.788103665363288 ], [ -122.502105689513968, 37.788110929794158 ], [ -122.50207398762231, 37.788154733004774 ], [ -122.502071249254328, 37.788181562090124 ], [ -122.501989944924048, 37.788182942633284 ], [ -122.501951813392949, 37.78818084312524 ], [ -122.501912664088508, 37.788140990459205 ], [ -122.501912016401619, 37.788116965280736 ], [ -122.501877326179624, 37.788114120853955 ], [ -122.501877973840479, 37.788138145483494 ], [ -122.501858399507697, 37.788182429188559 ], [ -122.501842192404723, 37.788223222019695 ], [ -122.501801304245816, 37.788247265660054 ], [ -122.501766151357245, 37.788227260005755 ], [ -122.501756965310037, 37.788207500503631 ], [ -122.50172600293584, 37.788150340007959 ], [ -122.501700517223497, 37.788167941185236 ], [ -122.50167957356264, 37.788161429621908 ], [ -122.501619212555269, 37.788169321478662 ], [ -122.501569767420492, 37.788196943730178 ], [ -122.501591358665465, 37.788227480492822 ], [ -122.501533078675976, 37.788248385310276 ], [ -122.501514596042369, 37.788204747707923 ], [ -122.50145942465268, 37.788212551659868 ], [ -122.501437657642668, 37.788239704012419 ], [ -122.501335150234794, 37.788224962263008 ], [ -122.501268313574613, 37.788249445888859 ], [ -122.50115878458611, 37.788295256277053 ], [ -122.501091780980232, 37.788313561975109 ], [ -122.501021937979715, 37.788290711431223 ], [ -122.501006184350814, 37.78828411139213 ], [ -122.50097195648992, 37.788298427073251 ], [ -122.500993621505359, 37.788331709648567 ], [ -122.500947376526028, 37.788349663239131 ], [ -122.500879097304491, 37.788320605139283 ], [ -122.500861336013799, 37.788303738053742 ], [ -122.500826830696198, 37.788307757577726 ], [ -122.500806349431429, 37.788318405959657 ], [ -122.500754452719278, 37.788319286610971 ], [ -122.500738328529678, 37.78829895802815 ], [ -122.500712935348687, 37.788319991115557 ], [ -122.500640723790397, 37.788337698187455 ], [ -122.500593831459696, 37.788331626454848 ], [ -122.500550140713713, 37.78831588602435 ], [ -122.500538567416584, 37.788335997845735 ], [ -122.50048939950284, 37.78837391630227 ], [ -122.500458095017024, 37.788368266503305 ], [ -122.500446429574566, 37.788384946179491 ], [ -122.50034045177307, 37.788434129242091 ], [ -122.500272801380206, 37.788428409551436 ], [ -122.500256870701349, 37.788479498553457 ], [ -122.500250772830086, 37.788574372083048 ], [ -122.500192399744307, 37.788591844106463 ], [ -122.500174472488098, 37.788568799078057 ], [ -122.500178293975864, 37.788517915512088 ], [ -122.500130319126384, 37.788535897847389 ], [ -122.500091521884229, 37.788509086399898 ], [ -122.500099172636652, 37.788471872673249 ], [ -122.500066212558522, 37.788468998362944 ], [ -122.50006658231419, 37.788482726609828 ], [ -122.500011040812936, 37.788476801362307 ], [ -122.499966794796208, 37.788440467945314 ], [ -122.499878115891249, 37.788489357153694 ], [ -122.499810631863213, 37.788489815307436 ], [ -122.499785570748472, 37.78852320387022 ], [ -122.499760324750355, 37.788549727891812 ], [ -122.499797151337432, 37.788567645255235 ], [ -122.499803450517931, 37.788608742793357 ], [ -122.49976162645244, 37.788662331112889 ], [ -122.499733393517658, 37.788642207768127 ], [ -122.499727335024716, 37.788610033760072 ], [ -122.49968724080243, 37.78866359271359 ], [ -122.499634371443463, 37.788692645687142 ], [ -122.499577562358439, 37.788703910220832 ], [ -122.499554630056736, 37.788687817377856 ], [ -122.499511356576448, 37.788623310977023 ], [ -122.499481164550005, 37.788530426400044 ], [ -122.499432590648397, 37.788461889419303 ], [ -122.499336411156918, 37.788425062960037 ], [ -122.499266771879846, 37.788409762065221 ], [ -122.499202877060384, 37.788414965914313 ], [ -122.499128103233858, 37.788401812217707 ], [ -122.499099500985864, 37.788367960195586 ], [ -122.499041638784547, 37.788340098176221 ], [ -122.498955421371278, 37.788351861015244 ], [ -122.498920128036829, 37.788390916780045 ], [ -122.498889600061332, 37.788414096736403 ], [ -122.498846352726645, 37.788414829911119 ], [ -122.498829249780883, 37.788358120749585 ], [ -122.498858133988094, 37.78827384858316 ], [ -122.49881028141921, 37.788232082242921 ], [ -122.498779365121052, 37.788240846950437 ], [ -122.498721638945739, 37.788282343161484 ], [ -122.498684745303493, 37.788326233159403 ], [ -122.498610415395817, 37.78832955335983 ], [ -122.498598336042235, 37.788266578082698 ], [ -122.498619439354101, 37.78821471490064 ], [ -122.498602392043921, 37.788160064708592 ], [ -122.498537684539031, 37.788135065438439 ], [ -122.498508608985759, 37.788147919585676 ], [ -122.498480069151427, 37.788180680090115 ], [ -122.498393075984339, 37.788163612611328 ], [ -122.498359007071954, 37.788119551978269 ], [ -122.498367465612489, 37.788047987710556 ], [ -122.498258002596998, 37.788031987711385 ], [ -122.498205083784299, 37.787930560386634 ], [ -122.498141496631646, 37.787882879514228 ], [ -122.498020127555392, 37.787874635204304 ], [ -122.497965657850202, 37.7879085217278 ], [ -122.497937733854386, 37.787835513791961 ], [ -122.497862794972676, 37.787816181447418 ], [ -122.497833152644503, 37.787872309616162 ], [ -122.497858996475657, 37.787932304773527 ], [ -122.497838976582202, 37.787960113577462 ], [ -122.497779058543074, 37.787984477979037 ], [ -122.497727525397508, 37.787934532426668 ], [ -122.4976806523715, 37.787929145955836 ], [ -122.497620549305267, 37.78794664601778 ], [ -122.497594065916346, 37.787927179270163 ], [ -122.49754290189, 37.78789096244769 ], [ -122.49750382929264, 37.787853853467084 ], [ -122.497544349339876, 37.787816083058736 ], [ -122.497526053110533, 37.787779309105126 ], [ -122.497500930399411, 37.787746084497506 ], [ -122.497517139436695, 37.787705292265386 ], [ -122.497507659501551, 37.787674549599402 ], [ -122.497485331532715, 37.787616555022737 ], [ -122.497458570647495, 37.787586791856477 ], [ -122.497406323956653, 37.787574629197884 ], [ -122.49735786900257, 37.787574763042187 ], [ -122.497315176016556, 37.787596088453697 ], [ -122.497275259657627, 37.787591957457558 ], [ -122.497216443565691, 37.787592953772126 ], [ -122.497168648080745, 37.787553245760044 ], [ -122.497138187607533, 37.787514617578381 ], [ -122.497106127216909, 37.787480823939255 ], [ -122.497044990964866, 37.787459883810421 ], [ -122.496999885071403, 37.787455840347057 ], [ -122.496923235404381, 37.787437223130333 ], [ -122.496894579157143, 37.787401311287425 ], [ -122.49685734707576, 37.787368291637833 ], [ -122.496811927818939, 37.787352579117055 ], [ -122.496751769988833, 37.787368019451996 ], [ -122.496728617227618, 37.787343688934776 ], [ -122.496685721170834, 37.787357463425209 ], [ -122.496639544906756, 37.787313607347343 ], [ -122.496583690806744, 37.787296011229486 ], [ -122.496547105206147, 37.787287016686854 ], [ -122.496516354783793, 37.787301958649365 ], [ -122.49646797383916, 37.787304838384266 ], [ -122.496443903661216, 37.787310739875238 ], [ -122.496383616604291, 37.787321374760424 ], [ -122.496337075877918, 37.787328343443079 ], [ -122.496276530804948, 37.787329368567015 ], [ -122.496247565545247, 37.787346340725328 ], [ -122.496197934785357, 37.787367096454552 ], [ -122.496141439524379, 37.787390028597343 ], [ -122.496086747911505, 37.787415677408667 ], [ -122.496068420456311, 37.787442083500181 ], [ -122.496016690354622, 37.787449139908034 ], [ -122.495972174940263, 37.787467062259353 ], [ -122.495951842506244, 37.787478615416269 ], [ -122.495939786703687, 37.787485465489738 ], [ -122.495905650481646, 37.787503211836551 ], [ -122.495879794980965, 37.787507083489736 ], [ -122.495820979283494, 37.78750807910243 ], [ -122.49579201419597, 37.787525051142431 ], [ -122.495771716907484, 37.787542562920031 ], [ -122.495716453167731, 37.787546932051697 ], [ -122.495690597288615, 37.78755080339463 ], [ -122.495618108578682, 37.787558210990248 ], [ -122.495602871400223, 37.787570830192877 ], [ -122.495572047584162, 37.787583026463722 ], [ -122.495539604212951, 37.787599370571847 ], [ -122.495514135330879, 37.787617657121146 ], [ -122.495483182354334, 37.787625048105859 ], [ -122.495437195053938, 37.787652609233902 ], [ -122.495395954684781, 37.787663608544698 ], [ -122.495370190617706, 37.787670911683094 ], [ -122.495333314088882, 37.787715487058371 ], [ -122.495282044474621, 37.787739703822119 ], [ -122.495193913200154, 37.787744628911668 ], [ -122.495147390885393, 37.787752283545302 ], [ -122.495107603658113, 37.787752956804084 ], [ -122.495081894872186, 37.787762319709344 ], [ -122.495049506978233, 37.787780722682484 ], [ -122.494942531016747, 37.787792833838672 ], [ -122.494936422880045, 37.787823153702263 ], [ -122.49487624549289, 37.787837906657984 ], [ -122.494850021018962, 37.787828049271276 ], [ -122.494803406419749, 37.787832271634258 ], [ -122.494754880927445, 37.787894212652994 ], [ -122.494747761584406, 37.787951332156055 ], [ -122.494723178126165, 37.788002566741419 ], [ -122.494687204176572, 37.788080776838861 ], [ -122.494700862218465, 37.788138231843071 ], [ -122.494641953469724, 37.788135794738686 ], [ -122.494554921507401, 37.788052798168373 ], [ -122.494515868416002, 37.788016374906285 ], [ -122.4945350783522, 37.787958364153376 ], [ -122.494513047598829, 37.787911351574522 ], [ -122.494517883781597, 37.787833668269109 ], [ -122.494492854234224, 37.787803875161934 ], [ -122.494463538439888, 37.787807804761236 ], [ -122.494432676774579, 37.787818627891369 ], [ -122.494408993418205, 37.787838943934148 ], [ -122.494413448366132, 37.787875952476604 ], [ -122.494396887310245, 37.787903702167263 ], [ -122.49434981175834, 37.787890763675087 ], [ -122.494353194757167, 37.787823406042577 ], [ -122.494335895597104, 37.78782369865479 ], [ -122.49430957902598, 37.787810409012593 ], [ -122.494266331651687, 37.787811140513561 ], [ -122.49416034840992, 37.787795764612234 ], [ -122.494129594818148, 37.787746152815927 ], [ -122.494106737724252, 37.787732804619111 ], [ -122.494080878906914, 37.78767212220432 ], [ -122.494005791021607, 37.787582742860096 ], [ -122.49397989817011, 37.78758524069908 ], [ -122.493937148914341, 37.787604505606133 ], [ -122.49390314117592, 37.787627056362858 ], [ -122.493853140270886, 37.787634082573049 ], [ -122.493776804515477, 37.787627132573334 ], [ -122.493743568607016, 37.787613959813378 ], [ -122.493738061048077, 37.787613306047696 ], [ -122.493682801772195, 37.787606746485388 ], [ -122.493586205100101, 37.787618680905503 ], [ -122.493496509486093, 37.787629812101237 ], [ -122.493461856653141, 37.787628337503875 ], [ -122.493419162517711, 37.787649661504638 ], [ -122.493384362282285, 37.787642696015901 ], [ -122.493336275791464, 37.787656556752133 ], [ -122.493293636533849, 37.787679939994845 ], [ -122.493241832649318, 37.78768424947036 ], [ -122.493193617141287, 37.7876933054322 ], [ -122.493182042295089, 37.787713416527986 ], [ -122.493127220447846, 37.787734258699906 ], [ -122.493090653466112, 37.787725949238315 ], [ -122.493056424336842, 37.787740262623288 ], [ -122.493004582859115, 37.787743199151691 ], [ -122.492969929990394, 37.787741724684366 ], [ -122.492955061461288, 37.787768072078173 ], [ -122.492913931184304, 37.787783188809769 ], [ -122.492855170492433, 37.787786242224989 ], [ -122.492860417128782, 37.787852767193691 ], [ -122.492830071355925, 37.787882810136729 ], [ -122.492771255320051, 37.787883804228279 ], [ -122.492769800087729, 37.787829576197716 ], [ -122.492735920840914, 37.787856931882516 ], [ -122.49268687433684, 37.78777054473629 ], [ -122.492679439061774, 37.787751441716487 ], [ -122.492627892968244, 37.787765361179233 ], [ -122.492565672509713, 37.787768472646512 ], [ -122.492506929887313, 37.787772212321414 ], [ -122.492446513322577, 37.787778040470201 ], [ -122.492381054094224, 37.787789447708391 ], [ -122.492305602297094, 37.78781544526975 ], [ -122.492216274554934, 37.787840303764064 ], [ -122.492178548608294, 37.787853302497936 ], [ -122.492118555140365, 37.787874918314273 ], [ -122.492079412316457, 37.787899615509929 ], [ -122.492057605141056, 37.787925393277668 ], [ -122.491876207129678, 37.788001938945712 ], [ -122.491812827679937, 37.788026359033061 ], [ -122.491772083659185, 37.788055890066879 ], [ -122.491719745560601, 37.788104846164785 ], [ -122.491654323091851, 37.788117625573307 ], [ -122.491646041850075, 37.7881315002275 ], [ -122.491614039214184, 37.788164317512276 ], [ -122.491501375628616, 37.788222533071625 ], [ -122.491447583651606, 37.788217260993214 ], [ -122.491404851437281, 37.788237211413325 ], [ -122.491281422016286, 37.788281187084038 ], [ -122.491218428658357, 37.788320021552913 ], [ -122.491190014384841, 37.788357585284182 ], [ -122.491137087049111, 37.788384575161345 ], [ -122.491061983912687, 37.788423614320799 ], [ -122.490946338544006, 37.788499734606098 ], [ -122.490859530409139, 37.788554079246722 ], [ -122.490843207112334, 37.788590751992317 ], [ -122.490818381167585, 37.788633062206074 ], [ -122.490696422877051, 37.78873195173508 ], [ -122.490605105739689, 37.78881178134435 ], [ -122.490527498874997, 37.788886572527467 ], [ -122.490413287423564, 37.788951680519325 ], [ -122.490407103746506, 37.78897925443183 ], [ -122.490354139232181, 37.78900487109366 ], [ -122.490306437661019, 37.789033145843504 ], [ -122.490251889996458, 37.789064283086574 ], [ -122.490252239550742, 37.789077325209703 ], [ -122.490220015123754, 37.789101904980171 ], [ -122.490046709329732, 37.789222262378196 ], [ -122.489918657120555, 37.789352156846768 ], [ -122.489828681483118, 37.789482095324693 ], [ -122.489700630133797, 37.789482882790033 ], [ -122.489592566089883, 37.789454489856745 ], [ -122.489300670464104, 37.789412030065776 ], [ -122.489191447548507, 37.789340391834585 ], [ -122.488990889258972, 37.789283342302205 ], [ -122.48848285911852, 37.789442306771541 ], [ -122.488100013149761, 37.789428847345718 ], [ -122.488028309941384, 37.789530320047362 ], [ -122.487863707315668, 37.789588034282978 ], [ -122.487736999824023, 37.789574375465854 ], [ -122.487584402186499, 37.78949866010057 ], [ -122.487564674856429, 37.789472896340307 ], [ -122.487563664349921, 37.78943514280558 ], [ -122.487464302267156, 37.789473215069947 ], [ -122.48744759425297, 37.789430918694578 ], [ -122.487369692668253, 37.789430171560369 ], [ -122.487296628705792, 37.789480848156245 ], [ -122.487120114954962, 37.789610869819036 ], [ -122.487051777894393, 37.789708851205745 ], [ -122.4869376141597, 37.789840568479555 ], [ -122.486809390152729, 37.789964281705743 ], [ -122.486730121786451, 37.790041845235905 ], [ -122.486553036429143, 37.790150586495734 ], [ -122.486429009493079, 37.790237144752382 ], [ -122.486335272657072, 37.790356155991162 ], [ -122.486245109599949, 37.790414674064778 ], [ -122.486236878145661, 37.790495160989501 ], [ -122.486221786002261, 37.790513270391187 ], [ -122.485095392905748, 37.790094746949087 ], [ -122.484316748868366, 37.789805424389257 ], [ -122.484214987310182, 37.789767611906584 ], [ -122.484071292407094, 37.789571562974182 ], [ -122.484019551359538, 37.788671434543716 ], [ -122.483911841345289, 37.78771598691722 ], [ -122.483910676418589, 37.787705653817092 ], [ -122.481375583614479, 37.787198893328011 ], [ -122.479861181106074, 37.787037199203986 ], [ -122.478707989065171, 37.78691405835 ], [ -122.477707716230128, 37.786939475526701 ], [ -122.476637454822679, 37.786966661899442 ], [ -122.476572244768761, 37.786128658440397 ], [ -122.476575166016133, 37.786128513873635 ], [ -122.476575148769683, 37.786128282045887 ], [ -122.476436803741322, 37.784271125057622 ], [ -122.476306551695615, 37.782405954593735 ], [ -122.476169188584777, 37.78047585000003 ], [ -122.476025278884237, 37.778553841183147 ], [ -122.475888270951586, 37.776692974324831 ], [ -122.475750968701433, 37.774828017958995 ], [ -122.475613644972711, 37.772962670675476 ], [ -122.475613625589148, 37.772962410314676 ], [ -122.476694205661246, 37.772912858094969 ], [ -122.477069824745385, 37.772895630732648 ], [ -122.477766947236773, 37.772863655180586 ], [ -122.478836951668541, 37.772814568639937 ], [ -122.47883762078969, 37.772814536530767 ], [ -122.478848715172788, 37.772814028898644 ], [ -122.479904580478745, 37.772765580938412 ], [ -122.480978851643016, 37.772716079930653 ], [ -122.481947659007389, 37.77267180789157 ], [ -122.482048961146063, 37.772667157434498 ], [ -122.483119121668807, 37.772618024364625 ], [ -122.483119139145145, 37.772618264154566 ], [ -122.484194219251819, 37.772569315707138 ], [ -122.484194201052048, 37.772569061919981 ], [ -122.485152053625171, 37.772525429693054 ], [ -122.485261332297384, 37.772520422109807 ], [ -122.485262022888591, 37.772520390701253 ], [ -122.486334053115812, 37.772471462244795 ], [ -122.486678527930636, 37.772455879683093 ], [ -122.487398288926627, 37.772423078182946 ], [ -122.487398306387334, 37.772423316873983 ], [ -122.487399123482518, 37.77242327974907 ], [ -122.488470602075608, 37.772374307055074 ], [ -122.488471323394165, 37.772374169626119 ], [ -122.489539486385709, 37.772325343661755 ], [ -122.49061689309373, 37.772276279654356 ], [ -122.490617013718605, 37.772276274046327 ], [ -122.491688031137627, 37.772227293012065 ], [ -122.492761363210761, 37.772178246338406 ], [ -122.493316307377469, 37.772153213706439 ], [ -122.493832479293559, 37.77212966191987 ], [ -122.493832498174271, 37.772129926957135 ], [ -122.493833180817205, 37.772129896182108 ], [ -122.494902921073546, 37.772080894286702 ], [ -122.494903299427449, 37.772080795311069 ], [ -122.495971990075716, 37.772031913255347 ], [ -122.497046812008847, 37.771982808835908 ], [ -122.497412740335307, 37.771966238858134 ], [ -122.498113882732468, 37.771934487449556 ], [ -122.499183042122894, 37.771885392463027 ], [ -122.500200291234236, 37.771838923903807 ], [ -122.500257545202601, 37.771836308607973 ], [ -122.501327700223527, 37.771787274197017 ], [ -122.502399595949868, 37.771738155153713 ], [ -122.502399732131124, 37.771738148994636 ], [ -122.503472688521128, 37.771689380410749 ], [ -122.503472690942445, 37.771689380369601 ], [ -122.504544396347384, 37.771640577944709 ], [ -122.505611140464779, 37.771591516134151 ], [ -122.50668530503512, 37.771542352938617 ], [ -122.506685577396198, 37.771542340610623 ], [ -122.506991972993774, 37.771528822999358 ], [ -122.507750664399296, 37.771495034126787 ], [ -122.507750665782908, 37.771495034103232 ], [ -122.508780633594597, 37.771447480819759 ], [ -122.508823169175031, 37.771445503888728 ], [ -122.508823330922013, 37.771445496187766 ], [ -122.508867990729883, 37.771443447055226 ], [ -122.509894749698645, 37.771396032095495 ], [ -122.509894781266311, 37.771396329054475 ], [ -122.511053819156686, 37.771347546731022 ], [ -122.511055400217217, 37.771347479926334 ], [ -122.512571364940968, 37.771283657974607 ], [ -122.51313192303401, 37.771260053409627 ], [ -122.51314077587368, 37.771331323581165 ], [ -122.513103639776702, 37.771429475690731 ], [ -122.513116974838326, 37.771538439951165 ], [ -122.5131111559662, 37.771706791559524 ], [ -122.513101727800077, 37.771741976505247 ], [ -122.513108516285712, 37.771800920539754 ], [ -122.513097415135022, 37.771902061732895 ], [ -122.513158379126494, 37.77223615155534 ], [ -122.513150048202618, 37.772247968474822 ], [ -122.513145175599931, 37.772259726057939 ], [ -122.513142070416649, 37.772272827219133 ], [ -122.513140694405962, 37.772285899124284 ], [ -122.513142777404809, 37.77229891140734 ], [ -122.51314831943732, 37.772311864891819 ], [ -122.513155553774638, 37.772323415987366 ], [ -122.513162806726825, 37.772335653782996 ], [ -122.513171807785298, 37.772348547918142 ], [ -122.513179470052052, 37.772375886809904 ], [ -122.513181590285754, 37.772390272493183 ], [ -122.513180232870297, 37.772404030275354 ], [ -122.513177164205956, 37.772418504300951 ], [ -122.513164035088622, 37.772444825057953 ], [ -122.513153956021, 37.772455985088065 ], [ -122.513145624725894, 37.77246780201267 ], [ -122.513139041542303, 37.772480275551658 ], [ -122.513134206485844, 37.772493406254469 ], [ -122.513132830469672, 37.772506478159016 ], [ -122.513133202560653, 37.772520206404018 ], [ -122.513137015097556, 37.772533189699409 ], [ -122.513142557139105, 37.772546142909071 ], [ -122.513149791498321, 37.772557694004483 ], [ -122.513128650263695, 37.772862969521874 ], [ -122.513143974877181, 37.772917647305441 ], [ -122.513134546565453, 37.772952831971672 ], [ -122.513140759176039, 37.773054363934854 ], [ -122.513127629925961, 37.773080684410282 ], [ -122.513121083909837, 37.773094531347873 ], [ -122.513117996938973, 37.773108318663766 ], [ -122.513113180104355, 37.773122136070647 ], [ -122.513110502783931, 37.773151024750284 ], [ -122.513109145348821, 37.773164782804365 ], [ -122.513109926760848, 37.773193612966814 ], [ -122.513112046989562, 37.773207998100119 ], [ -122.513115877809639, 37.773221667551859 ], [ -122.513119727927929, 37.77323602341751 ], [ -122.513123558750877, 37.773249692868944 ], [ -122.513130848990954, 37.773263303241755 ], [ -122.513136372841529, 37.773275570567371 ], [ -122.513136837962776, 37.773292730939929 ], [ -122.513139032281771, 37.773309862056486 ], [ -122.513139962541018, 37.773344183350439 ], [ -122.513137434071865, 37.77337856371112 ], [ -122.513137899208886, 37.773395724632501 ], [ -122.51313663480029, 37.773412914815644 ], [ -122.513133622247153, 37.773429448109219 ], [ -122.513132357829548, 37.773446638017631 ], [ -122.513129363533338, 37.773463857742755 ], [ -122.513124956674076, 37.773492776231812 ], [ -122.513123636099678, 37.773507907142864 ], [ -122.513125756700802, 37.773522292818349 ], [ -122.513127895547086, 37.773537364376381 ], [ -122.513130108829742, 37.773555182186904 ], [ -122.51313457258631, 37.77359218983559 ], [ -122.513137102897502, 37.773685543750098 ], [ -122.51313464849045, 37.773722669817865 ], [ -122.513133402680765, 37.77374054642582 ], [ -122.513130445590789, 37.773759139276294 ], [ -122.513129218723165, 37.773777702029449 ], [ -122.513126261969134, 37.773796294599215 ], [ -122.513121575665878, 37.773814916705028 ], [ -122.513118599957409, 37.773832822854594 ], [ -122.513113913995852, 37.773851444954062 ], [ -122.513110938637425, 37.773869351371971 ], [ -122.513106251972374, 37.773887973208282 ], [ -122.513098199929146, 37.77391008650784 ], [ -122.513115558504083, 37.774550522030069 ], [ -122.513135161617555, 37.77469921031755 ], [ -122.513164585532962, 37.774890995995399 ], [ -122.513170483591551, 37.775108592933201 ], [ -122.513148799533084, 37.77520236034195 ], [ -122.513166877896921, 37.775294761967629 ], [ -122.513138108336719, 37.775382469681844 ], [ -122.513154511511672, 37.775413093012311 ], [ -122.513118656446565, 37.775494741304421 ], [ -122.513116560550898, 37.775991978980805 ], [ -122.513220716743945, 37.77664260637399 ], [ -122.513262136135666, 37.776766199546913 ], [ -122.513273147342474, 37.776853227885702 ], [ -122.513301250635152, 37.776996277263876 ], [ -122.513336088063554, 37.777196211308791 ], [ -122.513350113009579, 37.777330573444466 ], [ -122.513418927986152, 37.77744339753194 ], [ -122.513485622738756, 37.777541836186963 ], [ -122.513511493535475, 37.777602514461641 ], [ -122.513605787519069, 37.777633867571893 ], [ -122.513789576977686, 37.777711077145469 ], [ -122.513970390041706, 37.777742325491253 ], [ -122.514130469394843, 37.777902348781886 ], [ -122.514271487815051, 37.77812519117407 ], [ -122.514413862528215, 37.778270408245596 ], [ -122.514604595643718, 37.77847591891544 ], [ -122.51462964838835, 37.778506394234036 ], [ -122.514661065627067, 37.778643892998048 ], [ -122.514636184118331, 37.778747329407956 ], [ -122.514564452996041, 37.778846072735902 ], [ -122.514578405995934, 37.778977688986053 ], [ -122.51449838155861, 37.779153489214309 ], [ -122.5144938833634, 37.779242842682805 ], [ -122.514567855611702, 37.77941807161681 ], [ -122.514670725915678, 37.779446530659044 ], [ -122.514854558211539, 37.779525111397355 ], [ -122.514948079566921, 37.779719234525949 ], [ -122.514897941861832, 37.779848512679017 ], [ -122.514749765647835, 37.779872333834206 ], [ -122.514641072918508, 37.779820625636908 ], [ -122.514565266573783, 37.77989677577483 ], [ -122.514533951466817, 37.780082044762075 ], [ -122.514511340895595, 37.780269225221183 ], [ -122.514474054726847, 37.780425753002312 ], [ -122.51446673230646, 37.780602371059075 ], [ -122.514648527113849, 37.780860913612862 ], [ -122.51472341591213, 37.781133644263413 ], [ -122.514586047991969, 37.781300809991649 ], [ -122.514468426928062, 37.781302819849991 ], [ -122.514292998946104, 37.781279034300063 ], [ -122.514303621052633, 37.781351647553429 ], [ -122.514284968188448, 37.781429568185636 ], [ -122.514242655950966, 37.781464628517519 ], [ -122.513867881152649, 37.781428452669296 ], [ -122.513760174171992, 37.78147699096975 ], [ -122.513883322187127, 37.781614982927096 ], [ -122.513812238767187, 37.78173775061245 ], [ -122.513697000270085, 37.781891489394212 ], [ -122.513670014693673, 37.78198122658408 ], [ -122.513522169917209, 37.782081269425682 ], [ -122.513466336763443, 37.782192101792845 ], [ -122.513546762127802, 37.782286185176545 ], [ -122.513589561336119, 37.782396706497991 ], [ -122.513504004159799, 37.782432504856651 ], [ -122.51345966482603, 37.782520478406092 ], [ -122.513490615272289, 37.782576949453883 ], [ -122.51349907897729, 37.782633804536587 ], [ -122.513499154475824, 37.782700417272132 ], [ -122.513444212427984, 37.782780331251374 ], [ -122.513311970586869, 37.782817613200059 ], [ -122.513176844047379, 37.782748499450129 ], [ -122.513099674895386, 37.782774539876293 ], [ -122.513082211268937, 37.782896391754747 ], [ -122.512985625061674, 37.783036075867919 ], [ -122.513019551763222, 37.783138507955194 ], [ -122.513026396706579, 37.783199511429288 ], [ -122.512878567398928, 37.783236372275823 ], [ -122.512854035372925, 37.783352850568228 ], [ -122.512805434943459, 37.783475233699562 ], [ -122.512705462306386, 37.783553855572684 ], [ -122.512518627902452, 37.783620225547125 ], [ -122.512466567525493, 37.783742667306889 ], [ -122.512644903191074, 37.783873537806549 ], [ -122.512713964283492, 37.783931418677646 ], [ -122.512652381073622, 37.784021746473734 ], [ -122.512681006779928, 37.784120148680003 ], [ -122.512565948104239, 37.784153016218092 ], [ -122.512295468592697, 37.783942683042248 ], [ -122.512111442218099, 37.7837933668308 ], [ -122.511916645881882, 37.783949148187006 ], [ -122.511936379260646, 37.784102641671865 ], [ -122.512002036912364, 37.7841626409828 ], [ -122.51201098319315, 37.784237343198853 ], [ -122.511976089219957, 37.784290817818842 ], [ -122.511911287292179, 37.784326260764388 ], [ -122.511796674312308, 37.784311734732256 ], [ -122.511643280924901, 37.784334954352396 ], [ -122.511486279442096, 37.784288874386938 ], [ -122.511300968574147, 37.78428379521467 ], [ -122.511334223422679, 37.784425383212891 ], [ -122.511306545033449, 37.784553589399493 ], [ -122.511229614678896, 37.784588552121491 ], [ -122.51102434727656, 37.784485608568794 ], [ -122.510971002039966, 37.784496819600761 ], [ -122.510838401528204, 37.784584923981406 ], [ -122.510747296660981, 37.784671633775218 ], [ -122.510491862112929, 37.784697278857706 ], [ -122.510370776300974, 37.784699343616424 ], [ -122.510236724687886, 37.784733906185757 ], [ -122.510168389422006, 37.784702794445394 ], [ -122.510020323714343, 37.784723420804994 ], [ -122.509994254968106, 37.784727052267002 ], [ -122.509808028924709, 37.784816069670107 ], [ -122.509716922917022, 37.784902778658349 ], [ -122.509665899527562, 37.784999792217178 ], [ -122.509574233553352, 37.78512977535155 ], [ -122.509483405510977, 37.78522678080374 ], [ -122.50935080157798, 37.785314883231258 ], [ -122.509270075574662, 37.785337547981477 ], [ -122.509233168789549, 37.785444621876991 ], [ -122.509117710773396, 37.785590805131108 ], [ -122.508796514633275, 37.785744614237508 ], [ -122.508661532747013, 37.785744853745925 ], [ -122.508565980602214, 37.785795240243836 ], [ -122.508486275275231, 37.785855657828165 ], [ -122.50845217664569, 37.785938647661681 ], [ -122.508258558155333, 37.786074486851589 ], [ -122.50824179847983, 37.786094687819457 ], [ -122.508218230136194, 37.78611912520401 ], [ -122.508132741023516, 37.786157665329803 ], [ -122.508102962554631, 37.786144437693665 ], [ -122.508035220497703, 37.78613529033418 ], [ -122.507963402235234, 37.786167416830274 ], [ -122.507918608664951, 37.786238914034136 ], [ -122.507884921314982, 37.786273138055307 ], [ -122.507810998339579, 37.786355432403496 ], [ -122.507791149628716, 37.786389420730835 ], [ -122.507786702460081, 37.786416966109108 ], [ -122.507753742643061, 37.786414093677742 ], [ -122.507723143657557, 37.786434530234523 ], [ -122.507686905785704, 37.786502447942446 ], [ -122.50771513615085, 37.786586436657288 ], [ -122.507634122264022, 37.786726537606768 ], [ -122.507529970492527, 37.786842996798164 ], [ -122.507416802174745, 37.786882007667536 ], [ -122.507337150418977, 37.786944484013162 ], [ -122.507251469686537, 37.787040025961154 ], [ -122.50719904571541, 37.787149423517022 ], [ -122.507107186903028, 37.787272540712486 ], [ -122.507053654233644, 37.787276885429115 ], [ -122.506971891727119, 37.787453396158277 ], [ -122.506896872053431, 37.78749519083452 ], [ -122.50673936089315, 37.787494438084011 ], [ -122.506717248362293, 37.787444682355584 ], [ -122.506653688773341, 37.787462245895419 ], [ -122.506526049480186, 37.787478152978885 ], [ -122.506492546406875, 37.787519241120947 ], [ -122.506427084531083, 37.787594522862221 ], [ -122.506343785965981, 37.787650192878154 ], [ -122.506284872420196, 37.787711628562818 ], [ -122.506271997783998, 37.787747558158287 ], [ -122.506258863502353, 37.787773877799495 ], [ -122.50624035413243, 37.787793421492793 ], [ -122.506219873800518, 37.787804071365088 ], [ -122.506177628287418, 37.787841873914068 ], [ -122.506131292484596, 37.787856397132735 ], [ -122.506163876746712, 37.787909408764172 ], [ -122.506122372558949, 37.787974668305665 ], [ -122.506121008614969, 37.788052293211784 ], [ -122.506089600492331, 37.788170947004069 ], [ -122.506052098981115, 37.788192187283286 ], [ -122.505852340805589, 37.788229236102978 ], [ -122.505747263058424, 37.788247505451196 ], [ -122.505657587040744, 37.788259332046266 ], [ -122.505605226952582, 37.788243054476361 ], [ -122.505520554840288, 37.788247928168715 ], [ -122.505423328958457, 37.788236533825454 ], [ -122.505330267621474, 37.78825116471306 ], [ -122.505202440987361, 37.788260206114757 ], [ -122.505107748523827, 37.788214431400775 ], [ -122.505021260444238, 37.788152035322256 ], [ -122.50498134335804, 37.788147906935059 ], [ -122.504941407743146, 37.788143092108974 ], [ -122.504896245414301, 37.788136992665024 ], [ -122.504877161086682, 37.788135256957062 ], [ -122.504859843370596, 37.788134864962309 ], [ -122.504835625333357, 37.788135276762382 ], [ -122.504801138826153, 37.7881399833256 ], [ -122.504785514269201, 37.788138188774688 ], [ -122.504771508408268, 37.788132246255898 ], [ -122.504759158308161, 37.788123528620481 ], [ -122.5047502309164, 37.788113379306509 ], [ -122.504739555111996, 37.788102572979582 ], [ -122.504727204674595, 37.788093855346673 ], [ -122.504711432227211, 37.788086569376937 ], [ -122.504695715029484, 37.788081342687157 ], [ -122.504680053426, 37.788078175271465 ], [ -122.50466269900177, 37.788076410116517 ], [ -122.50464541869988, 37.788077390660611 ], [ -122.504626408521617, 37.788078400888217 ], [ -122.504609090805303, 37.788078008307494 ], [ -122.504591755258659, 37.788076929561612 ], [ -122.504576093667978, 37.788073762406697 ], [ -122.504558683651112, 37.788069937685613 ], [ -122.504543003526479, 37.788066083826294 ], [ -122.504525593174549, 37.788062259380773 ], [ -122.504508220574564, 37.788059807771766 ], [ -122.50449088434911, 37.788058729297397 ], [ -122.504468396217547, 37.788059111612547 ], [ -122.504456509027335, 37.788067554312491 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":5,"ZIP_CODE":94118,"ID":94118},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.448885763577039, 37.778388598994987 ], [ -122.449767079183658, 37.778277008331997 ], [ -122.450654812483819, 37.778164598609756 ], [ -122.450826415883952, 37.778142868140662 ], [ -122.451543139139602, 37.778052106408275 ], [ -122.452431111623397, 37.777939652339285 ], [ -122.453384996187339, 37.777826863341367 ], [ -122.45318832797058, 37.776853425180988 ], [ -122.452963825070867, 37.775750129254348 ], [ -122.452810237317621, 37.774995318605924 ], [ -122.453003330637316, 37.774970754669006 ], [ -122.45468264773983, 37.77475548474694 ], [ -122.454683295611602, 37.774755406979118 ], [ -122.455033749574639, 37.77471323536281 ], [ -122.45525254468275, 37.774686906456331 ], [ -122.455898178089939, 37.774604132119862 ], [ -122.456283639851293, 37.774554711848936 ], [ -122.456283671603558, 37.774554866249353 ], [ -122.456283917173579, 37.774554834704738 ], [ -122.457134751103212, 37.774454490912483 ], [ -122.458371099123696, 37.774308895694055 ], [ -122.458795325509186, 37.774254885425997 ], [ -122.459486118442314, 37.77416693399686 ], [ -122.459486145343419, 37.77416729779403 ], [ -122.459486938645284, 37.774167197254911 ], [ -122.460552700773292, 37.774031358657659 ], [ -122.460552661960989, 37.774031133779268 ], [ -122.461619755154771, 37.7738952534419 ], [ -122.461619775372085, 37.773895534117642 ], [ -122.461620188227315, 37.77389548164836 ], [ -122.462535340858068, 37.773778657528119 ], [ -122.462683796526321, 37.773759751788596 ], [ -122.463749210177951, 37.773624065149079 ], [ -122.464811670328331, 37.773488744378348 ], [ -122.465331676538511, 37.773422509669793 ], [ -122.465883163277454, 37.773398204721545 ], [ -122.466373346760548, 37.773376599548058 ], [ -122.466951728424362, 37.773351356945881 ], [ -122.466952500298319, 37.773351323464517 ], [ -122.468023916207073, 37.773303833556405 ], [ -122.468348575135167, 37.773289518371953 ], [ -122.469092496140973, 37.773256712542192 ], [ -122.469517084069324, 37.773237987003441 ], [ -122.470162692059887, 37.773209510586071 ], [ -122.470162712316579, 37.773209791534974 ], [ -122.471240089434815, 37.773162280380667 ], [ -122.47124006836178, 37.773161981865066 ], [ -122.471762122569857, 37.773138947752848 ], [ -122.472219951938214, 37.773117969260745 ], [ -122.472297341321692, 37.773114423074823 ], [ -122.473427836194134, 37.773062613687692 ], [ -122.473737577092777, 37.773048416620476 ], [ -122.474550910293516, 37.773011133644289 ], [ -122.474550931211951, 37.773011425844139 ], [ -122.47455168367884, 37.773011391539193 ], [ -122.475612802305008, 37.772962709520556 ], [ -122.475613644972711, 37.772962670675476 ], [ -122.475750968701433, 37.774828017958995 ], [ -122.475888270951586, 37.776692974324831 ], [ -122.476025278884237, 37.778553841183147 ], [ -122.476169188584777, 37.78047585000003 ], [ -122.476306551695615, 37.782405954593735 ], [ -122.476436803741322, 37.784271125057622 ], [ -122.476575148769683, 37.786128282045887 ], [ -122.476575166016133, 37.786128513873635 ], [ -122.476572244768761, 37.786128658440397 ], [ -122.476637454822679, 37.786966661899442 ], [ -122.47616220885665, 37.786978730627588 ], [ -122.475567725323828, 37.787005248954515 ], [ -122.475136959985235, 37.787024462123846 ], [ -122.474584006514732, 37.787049123020516 ], [ -122.474432824368861, 37.787072820298278 ], [ -122.473333621918172, 37.787245111436654 ], [ -122.473316434470121, 37.787247805418339 ], [ -122.472782224474642, 37.787331534391747 ], [ -122.47254342327507, 37.787368961705944 ], [ -122.472401902490546, 37.787384046501884 ], [ -122.472290534181823, 37.787395917162272 ], [ -122.468653534340191, 37.787783523544832 ], [ -122.466942641213976, 37.788133153852705 ], [ -122.465882841138949, 37.788349715761562 ], [ -122.4648365613821, 37.788563504283978 ], [ -122.463771243725489, 37.788781172337565 ], [ -122.459781586189493, 37.789596250165474 ], [ -122.45947565027717, 37.789710559160014 ], [ -122.459250455476877, 37.789713291862398 ], [ -122.459028627866218, 37.789715983297555 ], [ -122.459011873160264, 37.789719335764374 ], [ -122.457498733292852, 37.789996912625632 ], [ -122.455878319348855, 37.790294143976332 ], [ -122.454248357567437, 37.79059310209788 ], [ -122.452035629818212, 37.790998907609811 ], [ -122.450995459060991, 37.791209906278311 ], [ -122.449385188501296, 37.791484927305568 ], [ -122.449367313308201, 37.791487980191171 ], [ -122.449189583391288, 37.790608108274284 ], [ -122.449011564525605, 37.789726786022129 ], [ -122.448835781299294, 37.788856511426609 ], [ -122.448656220796209, 37.787977164570449 ], [ -122.4469741664482, 37.788186460801001 ], [ -122.446792779960703, 37.787261853518181 ], [ -122.446610465639836, 37.786302298311156 ], [ -122.446738337622591, 37.786243163870765 ], [ -122.446849274413296, 37.786186897081585 ], [ -122.447533801639068, 37.785411415165207 ], [ -122.447605133356163, 37.785275579171099 ], [ -122.447621599012791, 37.785194684567394 ], [ -122.447620107068687, 37.785083635258417 ], [ -122.447578549915917, 37.784998355250835 ], [ -122.447549635601661, 37.784906798974511 ], [ -122.447149436147441, 37.783030677550911 ], [ -122.447173033991248, 37.782710075581413 ], [ -122.447225622636566, 37.782575775503396 ], [ -122.447283893261542, 37.782434393634787 ], [ -122.447301513844337, 37.78239164221629 ], [ -122.447450898997985, 37.782195217632704 ], [ -122.447637300982407, 37.781719177617617 ], [ -122.447655108274333, 37.781537309189886 ], [ -122.447576361567485, 37.781175778551805 ], [ -122.447517982733274, 37.781069510753063 ], [ -122.447351927163439, 37.780152061280916 ], [ -122.447039806751391, 37.778622307248391 ], [ -122.447997721370214, 37.778501033647089 ], [ -122.448879206948348, 37.778389428728616 ], [ -122.448885763577039, 37.778388598994987 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":6,"ZIP_CODE":94123,"ID":94123},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.438402484723895, 37.794806973138577 ], [ -122.440045216960385, 37.794597761146619 ], [ -122.440868123190498, 37.794493055920753 ], [ -122.440870170501768, 37.794492795601883 ], [ -122.441712771485612, 37.794385578392699 ], [ -122.443384198876302, 37.794172877898092 ], [ -122.445035345747925, 37.79396273368863 ], [ -122.446587034424141, 37.793765298555968 ], [ -122.446446456540414, 37.792813716046261 ], [ -122.446587862952981, 37.793765120337646 ], [ -122.446727777261131, 37.794706464759514 ], [ -122.446727777275527, 37.794706465308671 ], [ -122.446751148304088, 37.794858932799087 ], [ -122.44687098056005, 37.795640691997477 ], [ -122.446928896449293, 37.796018515191513 ], [ -122.447014738218328, 37.796578509648619 ], [ -122.447014738232738, 37.796578510197754 ], [ -122.44715829625072, 37.79751500492933 ], [ -122.44715829626513, 37.797515005478481 ], [ -122.447209582420982, 37.797849561838987 ], [ -122.447303043858923, 37.798459232650295 ], [ -122.447327769221047, 37.798519415660031 ], [ -122.447341437979304, 37.798552685345861 ], [ -122.447400275900733, 37.798948048802856 ], [ -122.447466030932901, 37.799389886853575 ], [ -122.447613279369918, 37.80032370169468 ], [ -122.447614227653389, 37.80032479990944 ], [ -122.447802865090509, 37.801525678628579 ], [ -122.447819572978844, 37.801633208279924 ], [ -122.447819731578562, 37.801633051558142 ], [ -122.447857007904148, 37.801596177616553 ], [ -122.447921599691895, 37.801532283988202 ], [ -122.448359651469772, 37.801586782043685 ], [ -122.448802640091088, 37.801772003872607 ], [ -122.449043488821943, 37.801965383441527 ], [ -122.449178591741017, 37.802073857413127 ], [ -122.449460220896157, 37.80245428555321 ], [ -122.449536106109235, 37.802697377072583 ], [ -122.449565462756809, 37.802791419060213 ], [ -122.449583713807527, 37.803152915295549 ], [ -122.449583722697156, 37.803153095621241 ], [ -122.449495662264184, 37.803470319431604 ], [ -122.449388062152011, 37.803710849923448 ], [ -122.449253815658196, 37.803861977230383 ], [ -122.449124213448584, 37.804007874392056 ], [ -122.448954929708933, 37.80412855834809 ], [ -122.448814547024654, 37.804228638340902 ], [ -122.448316879890498, 37.804444627382082 ], [ -122.448245764546613, 37.8044754914729 ], [ -122.448240723025904, 37.804477679722268 ], [ -122.448240728857812, 37.804477717258706 ], [ -122.44824552349904, 37.804508484024247 ], [ -122.448279145759457, 37.80472422506687 ], [ -122.448321161555853, 37.804993824977359 ], [ -122.448323332142422, 37.805007750605469 ], [ -122.448455258275729, 37.806133277363898 ], [ -122.448456716038393, 37.806145711376217 ], [ -122.448529100304583, 37.806763241657009 ], [ -122.448398315024306, 37.806792871575105 ], [ -122.448372486009177, 37.806798105392311 ], [ -122.448348405000459, 37.806803997055574 ], [ -122.44832261235274, 37.806810603719661 ], [ -122.448274523063262, 37.806825132736471 ], [ -122.448250514438882, 37.806833770101044 ], [ -122.448204281209826, 37.806853075532878 ], [ -122.448182039290586, 37.806863057432189 ], [ -122.448159833037835, 37.806874411921982 ], [ -122.448139357121818, 37.80688573782485 ], [ -122.448117186873532, 37.806898464895561 ], [ -122.448103560271292, 37.806906930735266 ], [ -122.447833857922845, 37.807052164926837 ], [ -122.447528276286675, 37.807250818574119 ], [ -122.447180260711605, 37.80747705551984 ], [ -122.446637954280746, 37.807525151443585 ], [ -122.446476742583258, 37.807516824572637 ], [ -122.445255735074412, 37.807626931568663 ], [ -122.444832951299077, 37.807611928844082 ], [ -122.444812115030089, 37.807609525524043 ], [ -122.444789548054757, 37.807607150739592 ], [ -122.443882698723485, 37.807700913966812 ], [ -122.443762319418525, 37.807713359922936 ], [ -122.443684632386478, 37.807721507559208 ], [ -122.442739197031372, 37.807965235732532 ], [ -122.442711389346584, 37.807972404225552 ], [ -122.442625660786931, 37.808004032657479 ], [ -122.442524054141913, 37.808024247618199 ], [ -122.442354908341343, 37.808043514915532 ], [ -122.441767928096084, 37.808104685164672 ], [ -122.44153654297466, 37.808127036445633 ], [ -122.441200035212404, 37.808167598495942 ], [ -122.44095148917647, 37.808195724629321 ], [ -122.44065270005224, 37.808288542686931 ], [ -122.440627067703531, 37.808301325835579 ], [ -122.440575873699515, 37.808329637315019 ], [ -122.440528212527582, 37.808360637280757 ], [ -122.440504418161254, 37.808377510253422 ], [ -122.440482353473598, 37.808394354762264 ], [ -122.440462037446096, 37.808411857223902 ], [ -122.440440008975642, 37.808430074859068 ], [ -122.440419728804599, 37.808448949904253 ], [ -122.440401196955307, 37.808468483183979 ], [ -122.440382683383717, 37.808488702887828 ], [ -122.440369270902693, 37.808505405024498 ], [ -122.440221248842576, 37.808670595014306 ], [ -122.440123020723803, 37.808753931536479 ], [ -122.440031607015868, 37.808833035512706 ], [ -122.439928060968157, 37.808779113775664 ], [ -122.440270312303127, 37.808229595265985 ], [ -122.440282155842453, 37.808219099502388 ], [ -122.440294017657806, 37.80820928989008 ], [ -122.440307609508267, 37.808199452089056 ], [ -122.440319488926107, 37.808190329461823 ], [ -122.440334864961784, 37.808182522213436 ], [ -122.440348510624844, 37.808174743706033 ], [ -122.440379298231178, 37.808160502620083 ], [ -122.440394728431826, 37.80815475493111 ], [ -122.440410176225527, 37.808149693678615 ], [ -122.440427371995767, 37.808145290667582 ], [ -122.440444586383592, 37.808141573526278 ], [ -122.440470613795014, 37.808143892481645 ], [ -122.440632371579539, 37.808106894262245 ], [ -122.440777543613365, 37.808097638147814 ], [ -122.441785658321223, 37.807988336182923 ], [ -122.441808099289275, 37.807985906519384 ], [ -122.441799274649981, 37.807913258896662 ], [ -122.441490202960892, 37.807943755875684 ], [ -122.441489843938655, 37.807930027497129 ], [ -122.441472521937172, 37.807929625920565 ], [ -122.441480832705722, 37.807916441000579 ], [ -122.441399010156047, 37.807832633902123 ], [ -122.441414331805831, 37.807822767220159 ], [ -122.441512177188741, 37.807923479293905 ], [ -122.44162439956051, 37.807912017357232 ], [ -122.441545678197272, 37.807814424464247 ], [ -122.441557557740268, 37.807805301431408 ], [ -122.441658935146762, 37.807908701878773 ], [ -122.441779792066384, 37.807896411186228 ], [ -122.441788084829597, 37.807882540086432 ], [ -122.441704477043643, 37.807796702127824 ], [ -122.441718086585212, 37.807787550596132 ], [ -122.44181950044613, 37.807892323765437 ], [ -122.441935183814792, 37.807880804821842 ], [ -122.441943476554428, 37.807866933985672 ], [ -122.441859851343693, 37.807780409692931 ], [ -122.441873460855945, 37.807771257868716 ], [ -122.441976640855827, 37.807877375557908 ], [ -122.441977107703579, 37.807895222530654 ], [ -122.441816542778795, 37.807911600852826 ], [ -122.441823637077619, 37.807984277513498 ], [ -122.442320834639688, 37.807932139640414 ], [ -122.442377595612399, 37.807918156721222 ], [ -122.442423345751081, 37.807880319904761 ], [ -122.442454552098894, 37.807815940203007 ], [ -122.442446930178193, 37.807789283331502 ], [ -122.442372794146465, 37.807800805256427 ], [ -122.442345413582302, 37.807812930576347 ], [ -122.442346006240967, 37.807835582850217 ], [ -122.442033707111619, 37.807875062158132 ], [ -122.442009243703154, 37.807733999234173 ], [ -122.442027954502791, 37.807721329750571 ], [ -122.442048400903616, 37.807841170516582 ], [ -122.442059070073554, 37.807851982482966 ], [ -122.442207469058346, 37.807833743991878 ], [ -122.442217473805144, 37.807819158213746 ], [ -122.442189585584913, 37.807679524627673 ], [ -122.44220852946296, 37.807675779293724 ], [ -122.442236490235743, 37.807818158319698 ], [ -122.442248872177956, 37.807828255059988 ], [ -122.442314446214397, 37.807820307862364 ], [ -122.442321008509211, 37.807806465496753 ], [ -122.442293084181387, 37.807665459069689 ], [ -122.442311884371406, 37.807656221984004 ], [ -122.442337612108403, 37.807779409372287 ], [ -122.442355041151117, 37.807783929703042 ], [ -122.442395115206907, 37.807727644711157 ], [ -122.442384613878218, 37.807657084644539 ], [ -122.44241012033585, 37.80763949635341 ], [ -122.442685954576561, 37.807595809313327 ], [ -122.442711892175168, 37.807793159839584 ], [ -122.442714242657956, 37.807793886686525 ], [ -122.442762503926971, 37.807808807618663 ], [ -122.442779771325021, 37.807807149719757 ], [ -122.442902339949939, 37.807794142945916 ], [ -122.442998755417392, 37.807774012900218 ], [ -122.44305537242154, 37.807754538469467 ], [ -122.44312779660163, 37.807743731320251 ], [ -122.443201717191158, 37.807723971451296 ], [ -122.443260064122327, 37.807704468417526 ], [ -122.443291085252142, 37.807699150180341 ], [ -122.443284905918816, 37.807661481932094 ], [ -122.443264195467847, 37.807663883640146 ], [ -122.443274020298077, 37.807642433173122 ], [ -122.443270056810988, 37.807623269807593 ], [ -122.44314383017317, 37.807628783225987 ], [ -122.443254016387542, 37.807605679164965 ], [ -122.44326198542305, 37.807579452177009 ], [ -122.443135758859114, 37.807584965586791 ], [ -122.443242483942598, 37.807561918560637 ], [ -122.443256021380762, 37.807550021121365 ], [ -122.443252111820613, 37.807532917601364 ], [ -122.443237999416624, 37.807522848927505 ], [ -122.443246112189684, 37.807502113399792 ], [ -122.443244040453081, 37.807489099968812 ], [ -122.443229963993403, 37.807480404158795 ], [ -122.443238040829058, 37.80745829576658 ], [ -122.443234130578546, 37.807441191982505 ], [ -122.443218162072228, 37.807426347064215 ], [ -122.443264702406339, 37.807418712940589 ], [ -122.443256517776859, 37.807436702740098 ], [ -122.443274647533997, 37.807467993526231 ], [ -122.44326455321054, 37.80747914750733 ], [ -122.443284610988869, 37.807517960537304 ], [ -122.443274498692247, 37.807528428086727 ], [ -122.443278390296598, 37.807544845448142 ], [ -122.443294466994871, 37.807563808946817 ], [ -122.443284389944367, 37.807575649647809 ], [ -122.443286551537625, 37.807592095514579 ], [ -122.443302628241014, 37.807611058737429 ], [ -122.443292551178217, 37.80762289916445 ], [ -122.443296353650368, 37.807635884626045 ], [ -122.443302173270908, 37.807659823956676 ], [ -122.443308298708217, 37.807695432906783 ], [ -122.443434058250361, 37.807672072344801 ], [ -122.443672727711146, 37.807597406163168 ], [ -122.443654441112585, 37.80749401124762 ], [ -122.443659326683914, 37.80748225662078 ], [ -122.443872884696731, 37.807440280106206 ], [ -122.443843293810986, 37.807367974319583 ], [ -122.44370731452436, 37.807397684591926 ], [ -122.443671444290359, 37.807416130974829 ], [ -122.443653888762242, 37.807406805822907 ], [ -122.443615857187666, 37.807408806048031 ], [ -122.443601726794256, 37.807398051259632 ], [ -122.443646374280576, 37.807384267621238 ], [ -122.443657912040536, 37.807362102160489 ], [ -122.443677395248955, 37.807378949282132 ], [ -122.443708397548889, 37.807372944513865 ], [ -122.443719917316642, 37.807350092614648 ], [ -122.443739400535989, 37.807366939726066 ], [ -122.443768690788104, 37.807361649886793 ], [ -122.443780246134452, 37.8073401708521 ], [ -122.443799711046125, 37.807356331526904 ], [ -122.443829001635834, 37.807351041666962 ], [ -122.443838790315425, 37.807328218286891 ], [ -122.443858291875273, 37.807345751805421 ], [ -122.443944431867095, 37.807329910704055 ], [ -122.443955915261199, 37.807305685922557 ], [ -122.44397716482635, 37.807323877338213 ], [ -122.444023687043469, 37.8073155564826 ], [ -122.444033511615373, 37.807294106225484 ], [ -122.444052976916183, 37.807310266852966 ], [ -122.444104672197867, 37.807301173690028 ], [ -122.444114316981555, 37.807272858828142 ], [ -122.444139117510247, 37.80729442532332 ], [ -122.444173580792466, 37.807288363378881 ], [ -122.444194201234893, 37.80728252962394 ], [ -122.444071355206816, 37.80715270277112 ], [ -122.444216516082363, 37.807275294750141 ], [ -122.444262912050363, 37.807262168504906 ], [ -122.444272682607831, 37.807238658656139 ], [ -122.444290381984246, 37.807253474900222 ], [ -122.444329892128806, 37.807241835878372 ], [ -122.444341267517572, 37.807213492465038 ], [ -122.444362535128633, 37.807232370243902 ], [ -122.44440375797123, 37.807220016231902 ], [ -122.444415151652876, 37.807192359237938 ], [ -122.444436401305339, 37.807210550845831 ], [ -122.444546334776021, 37.807177835248929 ], [ -122.444557764011307, 37.807151551111282 ], [ -122.444577265002437, 37.807169084522954 ], [ -122.444645975607855, 37.807148723180354 ], [ -122.444656807573693, 37.807165712792234 ], [ -122.444442095756031, 37.807229685090327 ], [ -122.444483781319875, 37.807301104324431 ], [ -122.444798026960797, 37.807203901149613 ], [ -122.445256739502199, 37.807070664930905 ], [ -122.445225848727588, 37.807014862399406 ], [ -122.445091259282876, 37.807031503517287 ], [ -122.445058382323012, 37.807032045740513 ], [ -122.44505631062799, 37.807019032334502 ], [ -122.445158131368714, 37.807007052095038 ], [ -122.44517833798561, 37.806985429952121 ], [ -122.445116858617496, 37.806951420767781 ], [ -122.445030629048986, 37.806963830570979 ], [ -122.445058875964975, 37.806918727340673 ], [ -122.445006173970214, 37.806889380441703 ], [ -122.444888888156058, 37.806905735960221 ], [ -122.444874654156408, 37.80682493696483 ], [ -122.444919463246819, 37.806817330453363 ], [ -122.445007311205075, 37.806866699909307 ], [ -122.444974402625263, 37.806799942930326 ], [ -122.444993292526533, 37.806794137571423 ], [ -122.445038942963123, 37.806884719639513 ], [ -122.445121510119179, 37.806930742460146 ], [ -122.445046609432765, 37.806780897144854 ], [ -122.445065498977499, 37.806775091780075 ], [ -122.445153141586133, 37.806948762165227 ], [ -122.44523217658535, 37.806992095976476 ], [ -122.44535586222473, 37.80695571941591 ], [ -122.445247620593648, 37.806722643522114 ], [ -122.445266510453877, 37.806716838119371 ], [ -122.445374751789728, 37.806949914001784 ], [ -122.445469219634987, 37.806921573283674 ], [ -122.445352433919155, 37.8066927587953 ], [ -122.445373036116507, 37.806686238401404 ], [ -122.44548810952854, 37.806915767845673 ], [ -122.445561992695104, 37.80689463390474 ], [ -122.445445188748025, 37.806665133074851 ], [ -122.445464060244248, 37.8066586412139 ], [ -122.445580882228484, 37.806888828457545 ], [ -122.44570454953481, 37.806851765098479 ], [ -122.445651671462073, 37.806749628119896 ], [ -122.44565282578796, 37.806727633749716 ], [ -122.445895754405569, 37.806815647477016 ], [ -122.445736019894767, 37.806863607021306 ], [ -122.445754222526631, 37.806897643432812 ], [ -122.446384760166481, 37.806715556411739 ], [ -122.446258463322081, 37.806718327435846 ], [ -122.446193213892712, 37.806738632616792 ], [ -122.446170395914976, 37.806726648309962 ], [ -122.445981443875837, 37.806782644077451 ], [ -122.445970540045622, 37.80676290912637 ], [ -122.445598235532685, 37.806626211997774 ], [ -122.445606509444289, 37.806611653919497 ], [ -122.446001524256076, 37.806756217316881 ], [ -122.446149253941641, 37.806712575605459 ], [ -122.445708764584751, 37.806550221539489 ], [ -122.445717038134546, 37.806535664008109 ], [ -122.446176741453044, 37.806704568267236 ], [ -122.446283248720263, 37.80667328102048 ], [ -122.446005194935296, 37.806500006546784 ], [ -122.446020461726192, 37.80648808024214 ], [ -122.446305581169554, 37.806666731908173 ], [ -122.446420668040176, 37.806632556303882 ], [ -122.446151409366294, 37.806464630848126 ], [ -122.446166694812902, 37.806453390945222 ], [ -122.446443000465095, 37.806626007165498 ], [ -122.446554662537906, 37.806593261684583 ], [ -122.446391023698155, 37.806492266360543 ], [ -122.446406290771549, 37.806480340000242 ], [ -122.446524184932926, 37.806553247425605 ], [ -122.446620237835958, 37.806519385773647 ], [ -122.446642693746213, 37.806583567659246 ], [ -122.44670978090322, 37.806567352265269 ], [ -122.446939773843297, 37.806492135834091 ], [ -122.446948929215651, 37.806511213110113 ], [ -122.446720738906919, 37.806589146719396 ], [ -122.446733553252031, 37.806615717634571 ], [ -122.446996260681743, 37.80653378052115 ], [ -122.44699045975274, 37.806444601492437 ], [ -122.446974562378131, 37.806432503088267 ], [ -122.446987792972394, 37.806408935599343 ], [ -122.446983774594216, 37.806387713332704 ], [ -122.44696966191627, 37.806377645652319 ], [ -122.446979503500458, 37.806356881028954 ], [ -122.446973448766144, 37.806324017983009 ], [ -122.446942374816217, 37.806327277888172 ], [ -122.44695713738291, 37.806296131639499 ], [ -122.446941332573715, 37.806221538794638 ], [ -122.446922047288439, 37.806212242955326 ], [ -122.446935223870369, 37.806186616724325 ], [ -122.446919473110199, 37.806114083171188 ], [ -122.446903683817155, 37.806106103074534 ], [ -122.446913508081977, 37.806084652286692 ], [ -122.446909453048207, 37.80606205716353 ], [ -122.446700318081568, 37.806074437190453 ], [ -122.446888239127603, 37.80604523913599 ], [ -122.446903488381423, 37.806032626547122 ], [ -122.446899451700631, 37.806010717849745 ], [ -122.446881914446337, 37.806002079602202 ], [ -122.446893486335398, 37.805981286694831 ], [ -122.446879430339621, 37.805907352248376 ], [ -122.446670313096035, 37.805920418116813 ], [ -122.446859964791457, 37.805891192083081 ], [ -122.446873519346127, 37.805879980657039 ], [ -122.446859427027746, 37.80580467279912 ], [ -122.446845404479788, 37.805798037263322 ], [ -122.446855228367411, 37.805776586210264 ], [ -122.446849425403357, 37.805753333484326 ], [ -122.446649086514796, 37.805771061515294 ], [ -122.446833420536592, 37.805737116186556 ], [ -122.446845280397781, 37.805727305922368 ], [ -122.446841244096817, 37.805705397216052 ], [ -122.446823724582785, 37.805697445671754 ], [ -122.446835297139998, 37.805676653032066 ], [ -122.446831332492664, 37.805657489784885 ], [ -122.446817327967949, 37.805651540403126 ], [ -122.446825403536536, 37.805629431757723 ], [ -122.446805830072663, 37.805609152989824 ], [ -122.446817348267402, 37.805586300786253 ], [ -122.446809113007006, 37.805536305492353 ], [ -122.446789863569947, 37.805528382500277 ], [ -122.446803112068949, 37.805505501734793 ], [ -122.446787107265692, 37.805489284429996 ], [ -122.446700807332093, 37.805498949734627 ], [ -122.446698645389645, 37.80548250391827 ], [ -122.446795308825045, 37.805471980811141 ], [ -122.446771068810406, 37.805405768207393 ], [ -122.446462225224153, 37.805444515694951 ], [ -122.445989505497494, 37.805505194954378 ], [ -122.446003707846955, 37.805518695189633 ], [ -122.4460087518259, 37.805579044127001 ], [ -122.446547025898894, 37.805509728799308 ], [ -122.446550972467278, 37.805528205624398 ], [ -122.446518204506802, 37.805532866567553 ], [ -122.446489185128556, 37.80554845357441 ], [ -122.446462996481614, 37.80553995860523 ], [ -122.446437419711515, 37.805554801776253 ], [ -122.446402597499727, 37.805547136014376 ], [ -122.446377002372941, 37.805561292745764 ], [ -122.446359483641928, 37.805553341395452 ], [ -122.446335312891549, 37.805555800213412 ], [ -122.446311412770896, 37.805568555772986 ], [ -122.446295642000578, 37.805561262020625 ], [ -122.44627666253902, 37.805563635428271 ], [ -122.446249319434344, 37.805577134798497 ], [ -122.446231800006771, 37.805569182891531 ], [ -122.446148996869667, 37.805580163541499 ], [ -122.446123402382483, 37.805594320480907 ], [ -122.446104135009989, 37.805585710944754 ], [ -122.44608171290129, 37.805588827858948 ], [ -122.44605783038071, 37.805602270079603 ], [ -122.446038580653479, 37.805594346696139 ], [ -122.446017870868147, 37.805596748888597 ], [ -122.445994006657656, 37.805610876973709 ], [ -122.445976469264281, 37.80560223887116 ], [ -122.445950586862267, 37.805605412856671 ], [ -122.445928452266116, 37.805619512663846 ], [ -122.445909185255772, 37.805610903090184 ], [ -122.445885032816534, 37.805614048516972 ], [ -122.445861132260902, 37.80562680426543 ], [ -122.445845361169205, 37.805619510184115 ], [ -122.445814305801534, 37.805623456219109 ], [ -122.44579215352951, 37.805636869562669 ], [ -122.445772886191605, 37.805628260247033 ], [ -122.445750464048956, 37.80563137682369 ], [ -122.445724833141924, 37.805644160817579 ], [ -122.445709062413187, 37.805636866986909 ], [ -122.445683179641605, 37.805640040919442 ], [ -122.445655872372569, 37.805654912741964 ], [ -122.445638335008098, 37.805646274589208 ], [ -122.445605549302542, 37.805650249115246 ], [ -122.445581648680047, 37.80566300453242 ], [ -122.445565859972788, 37.805655024250306 ], [ -122.445531361592955, 37.805659714013281 ], [ -122.445505730631226, 37.805672497684945 ], [ -122.445489959918007, 37.805665203825008 ], [ -122.445462346810999, 37.80566840625292 ], [ -122.445436715841595, 37.805681190184124 ], [ -122.445420945133293, 37.805673896314971 ], [ -122.445391619690682, 37.8056778137015 ], [ -122.445362527733508, 37.805690654981625 ], [ -122.445346757369364, 37.8056833608223 ], [ -122.44531225895534, 37.805688050246587 ], [ -122.445290052615164, 37.805699404198599 ], [ -122.445276030220143, 37.805692768201546 ], [ -122.445243244128591, 37.805696742632556 ], [ -122.445217576794818, 37.805708153657022 ], [ -122.445203554404628, 37.805701517651372 ], [ -122.445170786636353, 37.80570617848889 ], [ -122.445148507984058, 37.805714786690388 ], [ -122.445105232410981, 37.805714813715646 ], [ -122.445083008046993, 37.805725481196227 ], [ -122.44507071598305, 37.80571881663689 ], [ -122.445037947513853, 37.80572347772349 ], [ -122.445017471439073, 37.805734803086857 ], [ -122.445001701099429, 37.805727508881461 ], [ -122.444908551660831, 37.805740032744836 ], [ -122.44488456097811, 37.805749355858453 ], [ -122.444846440036883, 37.805747924599146 ], [ -122.444825945937126, 37.805758563222234 ], [ -122.444811923572402, 37.805751927170057 ], [ -122.44478259772076, 37.805755844410804 ], [ -122.44476037365142, 37.805766512099389 ], [ -122.444713600749751, 37.805765222919185 ], [ -122.444691394641026, 37.805776576752621 ], [ -122.444677372284929, 37.805769940684463 ], [ -122.444653201761611, 37.805772399426502 ], [ -122.444630958989393, 37.805782380395051 ], [ -122.444585917098436, 37.805781062896116 ], [ -122.444563710619391, 37.805792416711171 ], [ -122.444549688278883, 37.80578578090244 ], [ -122.444518632419573, 37.805789726327305 ], [ -122.444494659650545, 37.805799735794025 ], [ -122.444451329400607, 37.805797703293351 ], [ -122.444429141227388, 37.805809743784408 ], [ -122.444413370583575, 37.805802449506146 ], [ -122.444390948345657, 37.805805566373394 ], [ -122.44436699318581, 37.805816262252314 ], [ -122.444352970844008, 37.805809625871085 ], [ -122.444327105931421, 37.805813485938437 ], [ -122.44430666567736, 37.805826184043205 ], [ -122.444289129128734, 37.805817545953296 ], [ -122.444266706866628, 37.805820662247768 ], [ -122.444242769660434, 37.805832044533943 ], [ -122.444228747333952, 37.805825408412545 ], [ -122.444206307444119, 37.80582783853189 ], [ -122.444182406178044, 37.805840593670816 ], [ -122.44416661758342, 37.805832613201659 ], [ -122.44414592563939, 37.805835701223295 ], [ -122.444121953151352, 37.805845710608445 ], [ -122.444025145055349, 37.805850740063669 ], [ -122.444001189835404, 37.805861436142784 ], [ -122.443959572249256, 37.805858688226643 ], [ -122.443935671622995, 37.805871443304085 ], [ -122.443919900675667, 37.805864149240215 ], [ -122.443902651728223, 37.805866493739174 ], [ -122.443880499045548, 37.805879906997674 ], [ -122.443864710121758, 37.805871926219289 ], [ -122.44378192426916, 37.805883591639486 ], [ -122.443756257338379, 37.805895002334175 ], [ -122.443714639749658, 37.805892254606199 ], [ -122.443692432758084, 37.80590360826271 ], [ -122.4436766621739, 37.805896314160641 ], [ -122.443654240222742, 37.805899430882093 ], [ -122.443630320868039, 37.805911499476395 ], [ -122.443614550281069, 37.80590420509148 ], [ -122.44359211035453, 37.805906635368508 ], [ -122.443568208950381, 37.805919390108215 ], [ -122.443552420405013, 37.80591140955697 ], [ -122.443535171434974, 37.805913754002177 ], [ -122.443511270025937, 37.805926509004905 ], [ -122.443495481838426, 37.805918528714912 ], [ -122.443473041543214, 37.805920958425858 ], [ -122.443450852475209, 37.80593299846943 ], [ -122.443435081915695, 37.805925704609677 ], [ -122.443407468616002, 37.805928906281792 ], [ -122.443388776471963, 37.805942262421105 ], [ -122.443369509665189, 37.805933652158522 ], [ -122.443347069022408, 37.805936082125754 ], [ -122.443328395172557, 37.80595012440785 ], [ -122.443309128031871, 37.805941514415672 ], [ -122.443291878362203, 37.805943859111288 ], [ -122.443267959626397, 37.805955927620595 ], [ -122.443252189065603, 37.805948633187285 ], [ -122.443233209414942, 37.805951006379615 ], [ -122.443207595577817, 37.805964475989526 ], [ -122.443174557723637, 37.805958839788218 ], [ -122.443148908639841, 37.80597093678324 ], [ -122.443134868425886, 37.805963614373887 ], [ -122.443058967715231, 37.805973792109128 ], [ -122.443036832460166, 37.805987891372702 ], [ -122.443017547724423, 37.805978594894604 ], [ -122.442981318355606, 37.805983312150161 ], [ -122.442948532359026, 37.805987285937427 ], [ -122.442926379114695, 37.806000698747546 ], [ -122.44290884267825, 37.805992060178127 ], [ -122.442839827294776, 37.806000751431881 ], [ -122.442815943694384, 37.806014192451634 ], [ -122.442798425230706, 37.806006240298515 ], [ -122.442734582834518, 37.806014159544731 ], [ -122.442707256867862, 37.806028343976273 ], [ -122.44268971976544, 37.806019705660304 ], [ -122.442636241331058, 37.806026767128834 ], [ -122.442610646012994, 37.806040923030253 ], [ -122.442591378939156, 37.80603231319558 ], [ -122.442551688858117, 37.806037087047187 ], [ -122.442547725650329, 37.806017923926198 ], [ -122.443029120691975, 37.805957802366279 ], [ -122.443387985849299, 37.805912059110995 ], [ -122.443753825765924, 37.805868259987832 ], [ -122.443769345089194, 37.805865944017846 ], [ -122.443957339015583, 37.805839496905513 ], [ -122.444492227815289, 37.805772993462419 ], [ -122.444668235229059, 37.805751549942215 ], [ -122.445284142224111, 37.805672032526566 ], [ -122.445279062855903, 37.805610310694497 ], [ -122.44527006920417, 37.805597411188494 ], [ -122.444483346869873, 37.805698286438428 ], [ -122.443744945559246, 37.805793553184138 ], [ -122.443018600699929, 37.805886555905765 ], [ -122.442516549650193, 37.805951138305055 ], [ -122.442427410705633, 37.806050808392641 ], [ -122.442522464016989, 37.806507977467341 ], [ -122.442586642075881, 37.806579026869471 ], [ -122.443131937777821, 37.806513045572309 ], [ -122.443499493172467, 37.806468532301039 ], [ -122.443667282141945, 37.806463706682081 ], [ -122.443846679856065, 37.806439461357343 ], [ -122.443959061743129, 37.806434175357609 ], [ -122.443938050605254, 37.806358981524156 ], [ -122.443116244562106, 37.806442570813587 ], [ -122.442613848569025, 37.80649411140103 ], [ -122.442611615303633, 37.806474919513256 ], [ -122.442654765933469, 37.806470088368528 ], [ -122.442661399886077, 37.806458991436592 ], [ -122.442687570467214, 37.806466801090252 ], [ -122.442708298579689, 37.80646508646474 ], [ -122.442716537115061, 37.806449155723413 ], [ -122.442746276492144, 37.806461026947929 ], [ -122.442770051771902, 37.806443467084335 ], [ -122.44279979080919, 37.80645533830107 ], [ -122.442874033560784, 37.806447934694987 ], [ -122.442882218173921, 37.806429944918698 ], [ -122.442912011462568, 37.806443875399388 ], [ -122.442927548550728, 37.806442245978758 ], [ -122.442937481103471, 37.806424914130673 ], [ -122.442965543726487, 37.806438873384522 ], [ -122.442990995725921, 37.806419225391323 ], [ -122.443019058349662, 37.806433184357886 ], [ -122.443039786445084, 37.806431469674095 ], [ -122.443047971009094, 37.806413479611678 ], [ -122.443077764322211, 37.806427410050546 ], [ -122.443098474448703, 37.80642500892381 ], [ -122.443108388985991, 37.806406990354105 ], [ -122.443136451627183, 37.806420949292765 ], [ -122.443157179716479, 37.806419234588326 ], [ -122.443165418150457, 37.806403303815522 ], [ -122.443193426900422, 37.806415203442874 ], [ -122.443215885660081, 37.806413459937652 ], [ -122.443222483596756, 37.806400990383416 ], [ -122.443248689797912, 37.806410172509004 ], [ -122.443329817859791, 37.806401281706691 ], [ -122.443338074230084, 37.806386037628911 ], [ -122.443366083001223, 37.806397937215287 ], [ -122.443447229004846, 37.806389732764778 ], [ -122.443455467380517, 37.806373802246185 ], [ -122.443480033821288, 37.806386445534933 ], [ -122.443505916940026, 37.806383271811711 ], [ -122.443512496848314, 37.806370115534087 ], [ -122.443538721058857, 37.806379984576957 ], [ -122.443562892155768, 37.806377525783311 ], [ -122.443569490023762, 37.806365055935018 ], [ -122.44359742694175, 37.80637420973634 ], [ -122.443676842221919, 37.806366033924192 ], [ -122.443672164594389, 37.806253487231395 ], [ -122.443695462542081, 37.806349932284753 ], [ -122.443707916670277, 37.806362774599044 ], [ -122.44379596596373, 37.806353769679554 ], [ -122.443802527838344, 37.806339926678575 ], [ -122.443830500721077, 37.806350453289745 ], [ -122.443861574478419, 37.806347194484687 ], [ -122.443868190266627, 37.806335411052103 ], [ -122.443896109229783, 37.80634387807568 ], [ -122.443922010642723, 37.806341390962501 ], [ -122.443913871646629, 37.806228901600704 ], [ -122.443940541034891, 37.806321857121844 ], [ -122.443956527422003, 37.806337388377891 ], [ -122.44398415881686, 37.80633487273537 ], [ -122.444004419522869, 37.806315310362876 ], [ -122.444018675589732, 37.806330870132562 ], [ -122.444044576647997, 37.806328382998174 ], [ -122.444051174437902, 37.806315913397398 ], [ -122.444077344761538, 37.806323722474062 ], [ -122.444106688857119, 37.806320492116114 ], [ -122.444113268646205, 37.806307335530214 ], [ -122.444137744599871, 37.806316546256639 ], [ -122.444163610043603, 37.806312686225482 ], [ -122.444171919814423, 37.806299501392182 ], [ -122.444198126803698, 37.806308683844726 ], [ -122.44422572221977, 37.806304795006142 ], [ -122.444232302000771, 37.806291638962733 ], [ -122.444258508634277, 37.806300820858432 ], [ -122.444287834382735, 37.806296903754081 ], [ -122.44429446807581, 37.806285806729939 ], [ -122.444320620790435, 37.806292929589091 ], [ -122.444410328338193, 37.806281149679826 ], [ -122.444398674018615, 37.806166658108886 ], [ -122.444430732743257, 37.806267078693303 ], [ -122.444443114393508, 37.806277175761053 ], [ -122.44453626493052, 37.806264652260793 ], [ -122.444546322932027, 37.806252125028941 ], [ -122.444572511964111, 37.80626062069139 ], [ -122.44466566211247, 37.806248097094617 ], [ -122.444654277108668, 37.8061439020343 ], [ -122.444684317803762, 37.806233368169231 ], [ -122.444698448132328, 37.806244122830272 ], [ -122.444729504511017, 37.806240177078124 ], [ -122.444737832507585, 37.806227678906012 ], [ -122.444765733548039, 37.806235459291536 ], [ -122.444782982907213, 37.806233114935374 ], [ -122.44479131087958, 37.806220616210318 ], [ -122.444819211930195, 37.806228396857783 ], [ -122.444886496978683, 37.806219733530369 ], [ -122.44488089641429, 37.806138105148783 ], [ -122.444906901269448, 37.806205662186763 ], [ -122.444919282967007, 37.806215758930051 ], [ -122.444986568338436, 37.806207095539854 ], [ -122.444994931901647, 37.806195969945342 ], [ -122.445021067006977, 37.806202405936702 ], [ -122.445093525002505, 37.8061929701732 ], [ -122.445087942204026, 37.80611202850794 ], [ -122.445113929253864, 37.806178899068257 ], [ -122.445128041656801, 37.806188967520207 ], [ -122.445202229600525, 37.806179502882479 ], [ -122.445210557849578, 37.806167004396592 ], [ -122.445236728249824, 37.806174813490792 ], [ -122.44525743822885, 37.806172411710314 ], [ -122.445265766467799, 37.80615991322049 ], [ -122.445267302625481, 37.806086407881679 ], [ -122.445285033545986, 37.806168522898403 ], [ -122.445310916864869, 37.806165349047845 ], [ -122.445305315838027, 37.806083720685585 ], [ -122.445331267107818, 37.80614921860834 ], [ -122.445347145482373, 37.806160631088311 ], [ -122.445366125472304, 37.806158257824791 ], [ -122.445374453006437, 37.806145759613244 ], [ -122.44540062410141, 37.806153568385149 ], [ -122.445424776743849, 37.806150423332426 ], [ -122.445433086611402, 37.80613723812958 ], [ -122.445434730189021, 37.806067851662334 ], [ -122.445459293346119, 37.806146420033315 ], [ -122.445479985322095, 37.806143331781477 ], [ -122.445489989537165, 37.806128745440887 ], [ -122.445516214271365, 37.806138614038851 ], [ -122.445543827543716, 37.806135411324078 ], [ -122.445560788683153, 37.80612208366891 ], [ -122.445567131287589, 37.806165929693421 ], [ -122.445546061556797, 37.806154603157502 ], [ -122.445523639245678, 37.806157719690731 ], [ -122.445501522738013, 37.806172505842895 ], [ -122.445489122634442, 37.806161722734075 ], [ -122.44546670032598, 37.806164839531021 ], [ -122.445442817508763, 37.806178281625698 ], [ -122.445432201695837, 37.806169528989997 ], [ -122.445352822460961, 37.806179079403755 ], [ -122.445327226916191, 37.806193235905667 ], [ -122.445316593481564, 37.806183797096139 ], [ -122.445244135177305, 37.806193233002396 ], [ -122.44522027063509, 37.806207361203953 ], [ -122.445207906544567, 37.80619795120483 ], [ -122.445188926532239, 37.806200324168309 ], [ -122.445161708883106, 37.806218628036419 ], [ -122.445135448551525, 37.806207386764015 ], [ -122.445111565653477, 37.806220828516935 ], [ -122.44509921920563, 37.806212104669896 ], [ -122.445030203866864, 37.80622079693034 ], [ -122.445008123555382, 37.806236955848796 ], [ -122.444978438202398, 37.806227144485362 ], [ -122.444954644838973, 37.806244018373903 ], [ -122.444924959836314, 37.806234206991327 ], [ -122.444902861169254, 37.806249679463384 ], [ -122.444888730810021, 37.806238924826829 ], [ -122.444823175735436, 37.806247559901692 ], [ -122.444801113352611, 37.806264405213646 ], [ -122.444785216712205, 37.806252306233745 ], [ -122.444723104639422, 37.806260197747797 ], [ -122.444699383130299, 37.80627981731422 ], [ -122.444681702577071, 37.806265687549761 ], [ -122.444619590489268, 37.806273579283847 ], [ -122.444597491739671, 37.806289051423988 ], [ -122.444583361417187, 37.806278296750953 ], [ -122.444519536610485, 37.806286903400981 ], [ -122.444493959540637, 37.806301746142793 ], [ -122.44447984720945, 37.80629167788976 ], [ -122.444386678651156, 37.806303514912976 ], [ -122.444361209083098, 37.806322476775328 ], [ -122.444343546554336, 37.806309033118175 ], [ -122.444324566500356, 37.806311406491666 ], [ -122.444297366567298, 37.806330396317819 ], [ -122.444279722039454, 37.806317639632702 ], [ -122.444255568948051, 37.806320784456545 ], [ -122.444233506414719, 37.806337629662124 ], [ -122.444217609851108, 37.806325530605875 ], [ -122.444126171547992, 37.806337339172615 ], [ -122.444102396615747, 37.806354899035341 ], [ -122.444084751416256, 37.806342142057929 ], [ -122.444034733554687, 37.806349147388161 ], [ -122.443955318332002, 37.806357323441311 ], [ -122.443976328801966, 37.806432517557667 ], [ -122.444009133253417, 37.806429229637253 ], [ -122.44401497169018, 37.80645385590833 ], [ -122.443983915176943, 37.806457801197638 ], [ -122.443991501564284, 37.806483085111559 ], [ -122.444006566508079, 37.806529534342857 ], [ -122.443998364182022, 37.80654683776438 ], [ -122.444012889909018, 37.806572694020851 ], [ -122.444137456251781, 37.806569953925113 ], [ -122.444004705900142, 37.806590683869416 ], [ -122.444008597616772, 37.806607101209622 ], [ -122.444028224510816, 37.8066294400098 ], [ -122.444014687364202, 37.806641337539759 ], [ -122.444016813135761, 37.806656410256579 ], [ -122.444032907804939, 37.806676060090197 ], [ -122.4440210291, 37.806685183643154 ], [ -122.444025100564104, 37.806708465032258 ], [ -122.444042961537718, 37.806729459206764 ], [ -122.444031118428768, 37.806739955631187 ], [ -122.444035226540592, 37.806764609873134 ], [ -122.444052799240296, 37.806774621138679 ], [ -122.444173599989711, 37.806760268693552 ], [ -122.444175761756156, 37.806776714546551 ], [ -122.443903104192728, 37.806809364848277 ], [ -122.443899212488802, 37.80679294750523 ], [ -122.443999302417467, 37.806780996791801 ], [ -122.444012857566491, 37.806769785696332 ], [ -122.443998457621589, 37.806748734467796 ], [ -122.444004821781832, 37.806727340974426 ], [ -122.443985267126379, 37.806707748443934 ], [ -122.443996768032036, 37.80668420981921 ], [ -122.443979015619519, 37.806667334220748 ], [ -122.443988858092823, 37.806646570397213 ], [ -122.443972709865449, 37.806624861254427 ], [ -122.443980822328029, 37.806604125398131 ], [ -122.443978768461875, 37.806591798410317 ], [ -122.443966422424324, 37.806583074165033 ], [ -122.443972768605505, 37.806560994240272 ], [ -122.443949501347888, 37.806531848697659 ], [ -122.443975330928197, 37.806526615843026 ], [ -122.443974234501226, 37.806484743188264 ], [ -122.443966666100792, 37.806460145980267 ], [ -122.443854499850644, 37.806473669177059 ], [ -122.443860373479154, 37.806499667782823 ], [ -122.443717402901086, 37.806526746415607 ], [ -122.443667420469765, 37.806535124185942 ], [ -122.443645087827377, 37.806541672798915 ], [ -122.443622719585392, 37.806546848536961 ], [ -122.443600333023568, 37.806551337843935 ], [ -122.443577910179286, 37.806554454561891 ], [ -122.443581820462299, 37.80657155833741 ], [ -122.443586556699174, 37.806620238019541 ], [ -122.443637961503612, 37.806864552713115 ], [ -122.443633273319165, 37.806883858652405 ], [ -122.443607138425932, 37.806877421799527 ], [ -122.443529794028962, 37.806898611546323 ], [ -122.443526675114754, 37.806911710787858 ], [ -122.443502306167488, 37.806906618541966 ], [ -122.443424944087113, 37.80692712178169 ], [ -122.443421824461069, 37.806940221031809 ], [ -122.443397438234925, 37.806934442320348 ], [ -122.443318380993759, 37.806956346879609 ], [ -122.443315262039832, 37.806969446115438 ], [ -122.443289162740911, 37.806964382337512 ], [ -122.443211818508658, 37.806985571869724 ], [ -122.443208734784008, 37.807000044253662 ], [ -122.443180869538779, 37.806993635816845 ], [ -122.443103524899072, 37.807014825283645 ], [ -122.443102154219687, 37.807028582437368 ], [ -122.443076036948625, 37.80702283217979 ], [ -122.442998692594642, 37.807044021572032 ], [ -122.442995572888506, 37.807057120810583 ], [ -122.442969456307765, 37.807051370518039 ], [ -122.442895554290288, 37.807071816676462 ], [ -122.442876807520932, 37.807083113165248 ], [ -122.442860372447001, 37.807050420945309 ], [ -122.44288643546534, 37.807054111684081 ], [ -122.442950027240173, 37.807036582576075 ], [ -122.442956535452808, 37.807020680875418 ], [ -122.44298955579778, 37.807025630704103 ], [ -122.443044549671924, 37.807010303103709 ], [ -122.443051093786181, 37.806995773988241 ], [ -122.443080653430101, 37.80700078080757 ], [ -122.443137377283094, 37.806985425210136 ], [ -122.443143903403268, 37.806970209382371 ], [ -122.443176924084369, 37.806975159152948 ], [ -122.443230187542511, 37.806959860250316 ], [ -122.443236731623188, 37.806945331399028 ], [ -122.443266291259548, 37.806950338171859 ], [ -122.443323015021249, 37.806934981935846 ], [ -122.443327829074263, 37.806920481311195 ], [ -122.443311249747254, 37.806882297698685 ], [ -122.443357388360823, 37.806925488066938 ], [ -122.443415825168074, 37.806909417378883 ], [ -122.443402365072131, 37.806858134260111 ], [ -122.443446755408701, 37.806900666674323 ], [ -122.443506922515155, 37.806884567152593 ], [ -122.443513466527847, 37.806870038011155 ], [ -122.443541295807862, 37.80687507323001 ], [ -122.443611772372606, 37.806856057118701 ], [ -122.443568098366953, 37.806642517527813 ], [ -122.443490717910933, 37.80666233411602 ], [ -122.443464637369544, 37.806657956797729 ], [ -122.443447387531151, 37.806660301241159 ], [ -122.443394142301429, 37.806676286675255 ], [ -122.443369792101194, 37.80667188082289 ], [ -122.443307715462936, 37.806681144456071 ], [ -122.443302883453555, 37.806694958647995 ], [ -122.443274946458374, 37.806685805052041 ], [ -122.443204469968975, 37.806704820962679 ], [ -122.443178370770624, 37.806699757160004 ], [ -122.443107894250431, 37.806718773287464 ], [ -122.44308352539521, 37.806713680954857 ], [ -122.443013048491437, 37.806732697031315 ], [ -122.442985237265603, 37.806728348120288 ], [ -122.442950738216922, 37.806733036852982 ], [ -122.44291647270785, 37.806746649473865 ], [ -122.442888625547027, 37.806740927400313 ], [ -122.442821555362244, 37.806757827053026 ], [ -122.442793726174969, 37.806752791664266 ], [ -122.442731613479054, 37.806760682403457 ], [ -122.442721537132741, 37.806772522772178 ], [ -122.442695384049358, 37.806765399290242 ], [ -122.442678134861055, 37.806767743884308 ], [ -122.442671608648851, 37.806782959137742 ], [ -122.442640174735473, 37.806772489262421 ], [ -122.44262290758212, 37.806774147415787 ], [ -122.442611226258151, 37.806790821310969 ], [ -122.442619566601024, 37.806844935481941 ], [ -122.4425572741916, 37.806845961528367 ], [ -122.442543113877818, 37.806767907443565 ], [ -122.442812274930034, 37.80673394443496 ], [ -122.442895043918895, 37.806721593264598 ], [ -122.44288439854499, 37.806645541768312 ], [ -122.44286390392358, 37.80665618032328 ], [ -122.442620734223425, 37.806691089066426 ], [ -122.442586432743397, 37.80670332845169 ], [ -122.442569254711358, 37.806708418497294 ], [ -122.442553843632766, 37.806714852893514 ], [ -122.44253845015912, 37.806721973451488 ], [ -122.442524957636692, 37.80672882453954 ], [ -122.442523074304333, 37.806729780720396 ], [ -122.44251132146853, 37.806743708869504 ], [ -122.442504741349737, 37.806756865090371 ], [ -122.442501639536246, 37.806770651023797 ], [ -122.442501980779383, 37.80678369296961 ], [ -122.442511153361352, 37.806803457290563 ], [ -122.442513800037688, 37.806838436574978 ], [ -122.442498190669355, 37.806837320216118 ], [ -122.442500262610309, 37.806850333930662 ], [ -122.442500855308538, 37.806872986207821 ], [ -122.442513308640088, 37.806885829207545 ], [ -122.442543448720272, 37.807045340228143 ], [ -122.442550657494735, 37.807056209147177 ], [ -122.442552729104918, 37.807069222865962 ], [ -122.442549574089071, 37.807080949216051 ], [ -122.442542975993348, 37.807093419280186 ], [ -122.442532880918762, 37.80710457321085 ], [ -122.442521020253452, 37.807114382489758 ], [ -122.442507375020014, 37.80712216152461 ], [ -122.442493693848277, 37.807128567143486 ], [ -122.442476479790699, 37.807132284309965 ], [ -122.44245921255002, 37.807133942439243 ], [ -122.442443603113219, 37.807132825798654 ], [ -122.442426210144987, 37.807129678620242 ], [ -122.442401877121071, 37.807125959012424 ], [ -122.442394668361601, 37.807115090084459 ], [ -122.442382322776425, 37.807106365943092 ], [ -122.442371670941014, 37.807096240723055 ], [ -122.442357217513063, 37.80707312972298 ], [ -122.442353415933297, 37.807060144492915 ], [ -122.442352751441661, 37.807034746485243 ], [ -122.442355888527402, 37.807022333707671 ], [ -122.442327317913012, 37.80685661596673 ], [ -122.442325228043273, 37.806842915816503 ], [ -122.442319678177554, 37.80682927264953 ], [ -122.442314163892661, 37.806817002627895 ], [ -122.442303476176264, 37.806805503986638 ], [ -122.442292807121106, 37.806794692040256 ], [ -122.442278730911681, 37.806785996390175 ], [ -122.44225259583861, 37.806779559791913 ], [ -122.442263912071212, 37.806815083032639 ], [ -122.442334351220893, 37.807191623601256 ], [ -122.442574008114292, 37.807154713430769 ], [ -122.442579917970377, 37.807182085225314 ], [ -122.442316125837024, 37.807222826535309 ], [ -122.442296128149565, 37.807120146892402 ], [ -122.442249660075092, 37.807130526084627 ], [ -122.442243205590515, 37.807148487593025 ], [ -122.442218675723581, 37.80713721717698 ], [ -122.442177362768064, 37.807146137987679 ], [ -122.442169249735414, 37.807166873443258 ], [ -122.44214120495144, 37.807153600709071 ], [ -122.442110219881215, 37.807160291509724 ], [ -122.442102143088249, 37.807182399820256 ], [ -122.442074080353734, 37.807168440637511 ], [ -122.441951871381676, 37.807195175211561 ], [ -122.441943758626778, 37.807215910645752 ], [ -122.441915713871779, 37.807202638132658 ], [ -122.441829644720443, 37.807221223495034 ], [ -122.441823243975179, 37.807241243729116 ], [ -122.441796947879098, 37.807228628850183 ], [ -122.441714321769382, 37.807246470710545 ], [ -122.441706226203735, 37.807267892572305 ], [ -122.441678163511327, 37.807253933295577 ], [ -122.441590382530393, 37.807273233392451 ], [ -122.441583945818934, 37.807291881022437 ], [ -122.441559397367783, 37.80727992432282 ], [ -122.441528412884566, 37.807286614959068 ], [ -122.441522065914484, 37.807308694749302 ], [ -122.4414922725324, 37.807294763645217 ], [ -122.441459575632209, 37.807302169181312 ], [ -122.441451444085047, 37.807322218159875 ], [ -122.441425148030646, 37.807309603472838 ], [ -122.441347676557456, 37.807325986488941 ], [ -122.441341185930639, 37.807342574807244 ], [ -122.441318422046436, 37.807332648592578 ], [ -122.441240951224984, 37.807349031801699 ], [ -122.441234550317162, 37.807369052277899 ], [ -122.441208253583667, 37.807356437279445 ], [ -122.44112907030356, 37.807373535328814 ], [ -122.44112095660725, 37.807394270717083 ], [ -122.44109464263579, 37.807380969523756 ], [ -122.440999993407189, 37.807402442127575 ], [ -122.440987126791967, 37.807373811300785 ], [ -122.441006340540554, 37.807380362365826 ], [ -122.441088966969374, 37.807362521001856 ], [ -122.441071293907683, 37.807282464951484 ], [ -122.441105839449861, 37.807345761826411 ], [ -122.441121664279194, 37.807355115562864 ], [ -122.441199135479366, 37.807338732426437 ], [ -122.441181426400448, 37.807257303252058 ], [ -122.441215936141603, 37.807319227778606 ], [ -122.441235275185775, 37.807330583566994 ], [ -122.44130240044376, 37.80731574411066 ], [ -122.44131244119076, 37.80730253099884 ], [ -122.441289899930467, 37.807234916217887 ], [ -122.441336846017577, 37.807308996562313 ], [ -122.441403970896872, 37.807294157328393 ], [ -122.441389758204977, 37.807214043807704 ], [ -122.441424286396526, 37.807276654700864 ], [ -122.441440110897986, 37.807286008125857 ], [ -122.441505522979043, 37.807271883482372 ], [ -122.441489561884524, 37.807191112300579 ], [ -122.441524179900497, 37.807257155053932 ], [ -122.441538238159126, 37.807265164360558 ], [ -122.441610518456187, 37.807248866405487 ], [ -122.441598394609557, 37.807182453357271 ], [ -122.441630905705154, 37.807234109473121 ], [ -122.441643233270554, 37.80724214726019 ], [ -122.441715531475523, 37.807226535673394 ], [ -122.441722129729229, 37.807214065930424 ], [ -122.441749959016704, 37.807219101571583 ], [ -122.44181537098703, 37.807204977030693 ], [ -122.441821969214871, 37.8071925070075 ], [ -122.441804977662258, 37.807138535507519 ], [ -122.441848068147848, 37.807197571115559 ], [ -122.441911750066581, 37.807183474731303 ], [ -122.441901356658576, 37.80711703321635 ], [ -122.441942735164389, 37.807176783982825 ], [ -122.442002974305893, 37.807163431240092 ], [ -122.44201133876993, 37.807152305853435 ], [ -122.442037401781846, 37.80715599677972 ], [ -122.442094216092357, 37.807144073567486 ], [ -122.44210250836673, 37.807130202449336 ], [ -122.442130373562975, 37.807136610866159 ], [ -122.442190612977058, 37.807123257747243 ], [ -122.4421768301127, 37.807059618983033 ], [ -122.442207521070316, 37.807107871278774 ], [ -122.442221597332434, 37.80711656693682 ], [ -122.442292164942742, 37.807100983492141 ], [ -122.442243704644795, 37.806836704402386 ], [ -122.442167767011739, 37.806845508971712 ], [ -122.442147308147, 37.806857520267137 ], [ -122.442072831477645, 37.806855999790052 ], [ -122.442050696118415, 37.806870098860529 ], [ -122.442038314362932, 37.806860002097636 ], [ -122.44197618353418, 37.806867205731571 ], [ -122.44195577849186, 37.806881276017322 ], [ -122.441943396394166, 37.806871178975598 ], [ -122.441881247592036, 37.806877696126804 ], [ -122.441859148445275, 37.806893168021055 ], [ -122.44184673044974, 37.806881698103723 ], [ -122.441786329930238, 37.806888873147223 ], [ -122.441762464513715, 37.80690300092192 ], [ -122.441750082438688, 37.806892903859939 ], [ -122.441684509153674, 37.806900850470612 ], [ -122.441658930973958, 37.80691569315082 ], [ -122.441646530958224, 37.806904909645212 ], [ -122.441572305572137, 37.806912998636243 ], [ -122.441548386244634, 37.806925066794669 ], [ -122.441465311637984, 37.806925747662177 ], [ -122.441443158191802, 37.806939160185685 ], [ -122.44142908206166, 37.806930464709019 ], [ -122.44136529221457, 37.806940441967662 ], [ -122.441344958843104, 37.806957258153332 ], [ -122.441327368515545, 37.806946560051927 ], [ -122.441311849243505, 37.806948875968999 ], [ -122.441293246205632, 37.806965663663163 ], [ -122.441275637234966, 37.806954278858043 ], [ -122.44126011795251, 37.806956594493755 ], [ -122.441239730706059, 37.80697135136279 ], [ -122.441223906642946, 37.806961997904651 ], [ -122.441151465000161, 37.806972117453661 ], [ -122.441129311490656, 37.806985530192655 ], [ -122.441115235374099, 37.806976834129472 ], [ -122.441037621302598, 37.806987725743447 ], [ -122.44101719810962, 37.807001109708246 ], [ -122.441003139964337, 37.806993100613703 ], [ -122.440922064462001, 37.807004048844455 ], [ -122.440901659189493, 37.807018119222057 ], [ -122.440895696481135, 37.806988688312863 ], [ -122.441218230630383, 37.806943549393232 ], [ -122.441263058469275, 37.806936630972665 ], [ -122.441435464921327, 37.80690975751326 ], [ -122.441433016200833, 37.806882328691337 ], [ -122.441372490336036, 37.806884698487615 ], [ -122.441304935046745, 37.806883063866231 ], [ -122.441274237201611, 37.806900737372722 ], [ -122.441242947719005, 37.806895758576474 ], [ -122.44119330612007, 37.806917177241274 ], [ -122.441110393048419, 37.806924035754299 ], [ -122.441042945411667, 37.806926519579946 ], [ -122.440998117551175, 37.806933437642307 ], [ -122.440918593700744, 37.806937493327403 ], [ -122.440899792827196, 37.80694673020367 ], [ -122.440782200958282, 37.806951412279737 ], [ -122.440680218094201, 37.806957210845738 ], [ -122.44054721454367, 37.806968326842338 ], [ -122.440468121234176, 37.806988856613863 ], [ -122.440371365223044, 37.806995942367976 ], [ -122.440134737571853, 37.807016316747912 ], [ -122.43989673886324, 37.807050447763743 ], [ -122.43967267172718, 37.807087782808438 ], [ -122.439538386124013, 37.807116087220599 ], [ -122.439408914197855, 37.80712989048353 ], [ -122.439239537222377, 37.807140229675355 ], [ -122.439104802429114, 37.807151372502958 ], [ -122.438766800452754, 37.807200879974303 ], [ -122.438299128879564, 37.807256638299236 ], [ -122.437960892936687, 37.807297219553782 ], [ -122.437688625577763, 37.807344957007658 ], [ -122.437514504314919, 37.807372539848515 ], [ -122.437376577168436, 37.807394034049501 ], [ -122.437259217227975, 37.807407636246566 ], [ -122.437146815479664, 37.80741222942855 ], [ -122.437031382840118, 37.807433353744614 ], [ -122.436885215537345, 37.80747077743743 ], [ -122.436714393247598, 37.807492124635075 ], [ -122.436614801865048, 37.807523289038706 ], [ -122.436563088290782, 37.807531692199284 ], [ -122.436507376472989, 37.80751955916309 ], [ -122.436298557575597, 37.807544276277241 ], [ -122.436240083275962, 37.807558970839189 ], [ -122.436155205939471, 37.807556930640864 ], [ -122.435982097955772, 37.80755702547102 ], [ -122.435828364056036, 37.807569849863164 ], [ -122.435859235962624, 37.807691580598309 ], [ -122.433925269093152, 37.807945122059223 ], [ -122.433817271048738, 37.80791942385212 ], [ -122.433787568621852, 37.807908923241605 ], [ -122.433755903391244, 37.807889527355464 ], [ -122.43376416154652, 37.807874283957823 ], [ -122.433933527911989, 37.807929878638532 ], [ -122.435838185171932, 37.807680938490563 ], [ -122.435834169572829, 37.807659716129535 ], [ -122.435737591220459, 37.807673662142683 ], [ -122.433917274710794, 37.807904049527295 ], [ -122.433913385157453, 37.807887631858222 ], [ -122.434041074707324, 37.807871803440726 ], [ -122.434044035083929, 37.807852526536877 ], [ -122.434070401961165, 37.807867888872153 ], [ -122.434160130921143, 37.807856803195897 ], [ -122.434164803061421, 37.807836811488876 ], [ -122.434189457816743, 37.807852888603414 ], [ -122.434284359969311, 37.807841031264509 ], [ -122.434289032075128, 37.807821039552501 ], [ -122.434313686852093, 37.80783711664111 ], [ -122.434406858247897, 37.807825287589175 ], [ -122.434411548897913, 37.80780598229466 ], [ -122.434437915834692, 37.807821344547961 ], [ -122.434520741089443, 37.807811058557668 ], [ -122.434525413482959, 37.8077910671051 ], [ -122.434551797979211, 37.80780711577237 ], [ -122.434636336023075, 37.807796114603541 ], [ -122.434641025919433, 37.807776809311157 ], [ -122.434665680757917, 37.807792886326304 ], [ -122.434750218436946, 37.807781885630661 ], [ -122.434754908641708, 37.807762580053435 ], [ -122.434779544918584, 37.807777970622496 ], [ -122.434871004379232, 37.807766856012883 ], [ -122.434875676329611, 37.807746864551945 ], [ -122.434900331208965, 37.807762941518149 ], [ -122.434976252743482, 37.807753454920828 ], [ -122.434979194289198, 37.807733491570779 ], [ -122.435005579555238, 37.807749540125371 ], [ -122.435084943914418, 37.807739310518855 ], [ -122.43508961579829, 37.807719318774772 ], [ -122.435116018975634, 37.807736053738346 ], [ -122.435191922576223, 37.807725881117662 ], [ -122.435196576876137, 37.807705202655406 ], [ -122.43522297972649, 37.807721937600746 ], [ -122.435302361927597, 37.807712394556091 ], [ -122.435306998308789, 37.807691029930353 ], [ -122.435333419066353, 37.8077084510101 ], [ -122.435402436929863, 37.807699764700374 ], [ -122.435407055040258, 37.807677713642711 ], [ -122.435433494058017, 37.807695821128007 ], [ -122.435507685095942, 37.807686362859421 ], [ -122.435514015990663, 37.807663596960829 ], [ -122.43554045469773, 37.807681704977007 ], [ -122.435609472497859, 37.807673017996969 ], [ -122.435614072648008, 37.807650280497519 ], [ -122.435642259638655, 37.807669046525525 ], [ -122.435711277415109, 37.807660359485872 ], [ -122.43572966745738, 37.807635335465775 ], [ -122.435735467093281, 37.807658589004994 ], [ -122.435830350851532, 37.807646043988242 ], [ -122.435804210559851, 37.807572993499143 ], [ -122.435788619382777, 37.807572562680427 ], [ -122.435772938706066, 37.807568699417203 ], [ -122.435758952605468, 37.807563435158237 ], [ -122.435746625277645, 37.807555396762375 ], [ -122.435735992180923, 37.807545957377542 ], [ -122.435727054339125, 37.807535116438025 ], [ -122.435721558628927, 37.807523531999962 ], [ -122.435719488549438, 37.807510518156661 ], [ -122.435678807510797, 37.807410923656249 ], [ -122.435671271850225, 37.807321086052454 ], [ -122.435659314380757, 37.807260850297496 ], [ -122.435635232905554, 37.807266739353338 ], [ -122.435635716129568, 37.807285273061382 ], [ -122.435609349135348, 37.807269911074314 ], [ -122.435543792417761, 37.807278540984541 ], [ -122.43552006850399, 37.80729815869541 ], [ -122.435504101570785, 37.807283312732451 ], [ -122.435441987649398, 37.807291199357643 ], [ -122.435419994063011, 37.807310788651876 ], [ -122.43540402680101, 37.807295942681101 ], [ -122.435341912858448, 37.807303829253563 ], [ -122.435318189229335, 37.807323446918055 ], [ -122.435302222331032, 37.807308600927854 ], [ -122.435234935185079, 37.80731725906076 ], [ -122.435212941536335, 37.807336848316268 ], [ -122.435196974310131, 37.807322002317541 ], [ -122.435127956788023, 37.807330689056798 ], [ -122.435105963445992, 37.807350278012088 ], [ -122.435089996584352, 37.807335431993209 ], [ -122.435019248678017, 37.807344147060114 ], [ -122.4349972725025, 37.807364422440152 ], [ -122.434981288114457, 37.807348889967201 ], [ -122.434910540175395, 37.807357604694324 ], [ -122.434888564319408, 37.807377880322939 ], [ -122.434872579266241, 37.807362348121238 ], [ -122.434798388810123, 37.807371805710694 ], [ -122.434776412580376, 37.807392081598607 ], [ -122.434758697865377, 37.807376577207712 ], [ -122.434691410594411, 37.807385235030431 ], [ -122.434667704309632, 37.80740553900322 ], [ -122.434651719289548, 37.807390006497108 ], [ -122.434575798078043, 37.807399492611601 ], [ -122.434552092103161, 37.807419796555429 ], [ -122.434536125337331, 37.807404950461788 ], [ -122.434461916577604, 37.807413721960565 ], [ -122.434439940575373, 37.80743399723081 ], [ -122.434423973489999, 37.807419151402279 ], [ -122.434349765034597, 37.807427922275664 ], [ -122.43432605864993, 37.807448226454213 ], [ -122.434310074038208, 37.807432693896239 ], [ -122.434230709546782, 37.807442922713086 ], [ -122.434208733825983, 37.807463198209049 ], [ -122.434192749235578, 37.807447665635237 ], [ -122.434111654710136, 37.807457923293533 ], [ -122.434087948236439, 37.807478226874963 ], [ -122.434071963321998, 37.807462694290493 ], [ -122.433992599465014, 37.807472923210291 ], [ -122.433970605449531, 37.807492512508169 ], [ -122.433954638431118, 37.807477666067122 ], [ -122.433870083452888, 37.807487980028228 ], [ -122.433846376910722, 37.807508283835588 ], [ -122.433830409920873, 37.80749343765234 ], [ -122.43374412454402, 37.807503779895939 ], [ -122.433722148333416, 37.807524055581261 ], [ -122.433706163485638, 37.807508522947344 ], [ -122.433606088798641, 37.807521151358706 ], [ -122.433584112530909, 37.807541426469101 ], [ -122.433574191011218, 37.807492831512612 ], [ -122.433602216513336, 37.807505419848866 ], [ -122.433678120078412, 37.807495247927321 ], [ -122.433686343139499, 37.80747863165486 ], [ -122.433714368662436, 37.807491220239072 ], [ -122.433795462933048, 37.807480962859643 ], [ -122.433803685966325, 37.807464346578953 ], [ -122.433831693616042, 37.80747624842688 ], [ -122.433911075733292, 37.807466706318117 ], [ -122.433919280165583, 37.807449403606796 ], [ -122.433947305702674, 37.807461991586599 ], [ -122.434024939884253, 37.807451791061574 ], [ -122.434034892878572, 37.807435146394688 ], [ -122.434062900561514, 37.80744704846235 ], [ -122.434135379039915, 37.807438305591944 ], [ -122.434143601646298, 37.807421689293108 ], [ -122.434171609334427, 37.807433591060409 ], [ -122.434245800271043, 37.807424133585066 ], [ -122.434254022851178, 37.80740751727847 ], [ -122.434282048436359, 37.807420105453431 ], [ -122.434352778623364, 37.807410704669572 ], [ -122.434361000831984, 37.807394088361185 ], [ -122.434389026430239, 37.807406676510716 ], [ -122.43446148730483, 37.807397247549531 ], [ -122.434471439847925, 37.807380602851318 ], [ -122.43449944756594, 37.807392504266289 ], [ -122.434571926300066, 37.807383761671048 ], [ -122.434581860921966, 37.807366430255094 ], [ -122.434609886547221, 37.807379018352258 ], [ -122.434682347359626, 37.807369588980769 ], [ -122.434690569836022, 37.807352972643585 ], [ -122.434718577593046, 37.807364874555745 ], [ -122.434784152364955, 37.807356931263477 ], [ -122.43479237481715, 37.807340314919166 ], [ -122.434820382585727, 37.807352216807175 ], [ -122.434884226976308, 37.807344301846562 ], [ -122.434894179763575, 37.807327657106839 ], [ -122.434922187543705, 37.807339558970696 ], [ -122.434987762271462, 37.807331615565204 ], [ -122.434997697142578, 37.807314284382969 ], [ -122.435025722825799, 37.807326872656006 ], [ -122.43509127963911, 37.807318242759216 ], [ -122.435101232376525, 37.807301598001935 ], [ -122.435129240172827, 37.807313499542126 ], [ -122.43519308450432, 37.807305584688869 ], [ -122.435201306859327, 37.807288968315881 ], [ -122.435231044678986, 37.807300841444686 ], [ -122.435296619692778, 37.807292898136311 ], [ -122.4353048420232, 37.807276281756089 ], [ -122.435332849842581, 37.807288183247969 ], [ -122.435398406593208, 37.807279553455011 ], [ -122.435406628899386, 37.80726293706762 ], [ -122.435436384982893, 37.8072754965727 ], [ -122.435451904167508, 37.80727318170905 ], [ -122.435460126807058, 37.807256565312237 ], [ -122.435488134643933, 37.807268466767304 ], [ -122.435508433635007, 37.807250278724965 ], [ -122.435536459373509, 37.807262866602237 ], [ -122.435602016078107, 37.80725423669606 ], [ -122.435615572581426, 37.80724302656666 ], [ -122.435634803373304, 37.807250264946127 ], [ -122.435655496065394, 37.807247178418407 ], [ -122.435588180541416, 37.806922774713847 ], [ -122.435582667693723, 37.80691050382292 ], [ -122.435534182131477, 37.806909926104069 ], [ -122.435571873987683, 37.806894886513319 ], [ -122.435559492755871, 37.80688478880149 ], [ -122.435545453103273, 37.806877464940861 ], [ -122.435529719250937, 37.806871542612598 ], [ -122.435514074542013, 37.806869052731017 ], [ -122.435493292470525, 37.806868707065597 ], [ -122.435344768504805, 37.806882132076758 ], [ -122.435121911744176, 37.806899523218981 ], [ -122.434871780421872, 37.806933156410132 ], [ -122.434433666315243, 37.806993908011997 ], [ -122.434416381034183, 37.806994878255509 ], [ -122.434278149661878, 37.807004699734037 ], [ -122.434260827915324, 37.807004297098374 ], [ -122.434243471085438, 37.807002521306472 ], [ -122.434227808507927, 37.806999344820447 ], [ -122.434210379805293, 37.806994823568417 ], [ -122.434194645688478, 37.806988901067868 ], [ -122.434180606150846, 37.806981577044944 ], [ -122.434166548746745, 37.806973567135586 ], [ -122.434154185915276, 37.806964155430045 ], [ -122.434143535561248, 37.806954029186485 ], [ -122.434134579447857, 37.806942501702544 ], [ -122.434125606153387, 37.806930288047226 ], [ -122.434123142595496, 37.806902172634167 ], [ -122.434101162359013, 37.806855835376808 ], [ -122.434090404384904, 37.806841590530418 ], [ -122.434081359579054, 37.806826631135792 ], [ -122.43406669419322, 37.806795281911626 ], [ -122.434061091508866, 37.806779579065555 ], [ -122.434055471636611, 37.80676318977391 ], [ -122.434051599648825, 37.806747458545502 ], [ -122.434049475890433, 37.80673238537485 ], [ -122.434047316368137, 37.806715939336222 ], [ -122.434046440132462, 37.806682304072865 ], [ -122.43401902773472, 37.806493903623902 ], [ -122.434011784506907, 37.806481661588982 ], [ -122.434004523385283, 37.806468732570444 ], [ -122.433998992958308, 37.806455775445059 ], [ -122.433995192532976, 37.806442790224423 ], [ -122.433964135838224, 37.806446732869858 ], [ -122.433932703641176, 37.806436260667759 ], [ -122.433886127202001, 37.806442518242726 ], [ -122.433858853036313, 37.806458760199753 ], [ -122.433839551447093, 37.806448775787949 ], [ -122.433791244999313, 37.806455061692688 ], [ -122.4337639708083, 37.80647130362771 ], [ -122.433744668882483, 37.806461319206093 ], [ -122.433694632079209, 37.806467633442772 ], [ -122.433667357862433, 37.806483875355433 ], [ -122.43364805594635, 37.806473890918021 ], [ -122.433596288440668, 37.806480233488799 ], [ -122.433569014197744, 37.806496475378673 ], [ -122.433549712637699, 37.806486490919518 ], [ -122.433503136480809, 37.806492748337497 ], [ -122.433477574676203, 37.806508275404134 ], [ -122.433458272433256, 37.806498290941384 ], [ -122.433404793122563, 37.806505348218124 ], [ -122.43337751882855, 37.806521590063653 ], [ -122.433358216941642, 37.806511605578869 ], [ -122.4333047372658, 37.806518662815925 ], [ -122.433279192939949, 37.806534876279215 ], [ -122.433259891408895, 37.80652489177271 ], [ -122.433206393839583, 37.806531262531053 ], [ -122.433179119492635, 37.806547504330624 ], [ -122.433159817625679, 37.806537519813411 ], [ -122.43309943408164, 37.806545377123399 ], [ -122.43307215969898, 37.806561618623626 ], [ -122.433052858195936, 37.806551634357852 ], [ -122.432990744619175, 37.806559519418741 ], [ -122.432963470221836, 37.806575761442943 ], [ -122.43294416836936, 37.80656577661594 ], [ -122.432885515114464, 37.806573605181946 ], [ -122.432858276424469, 37.806591219775477 ], [ -122.432851977723161, 37.806548745928424 ], [ -122.432876452705358, 37.806557958985486 ], [ -122.432950642939176, 37.806548502597778 ], [ -122.432958937194059, 37.806534631840726 ], [ -122.432985142526235, 37.806543816515223 ], [ -122.433055872042729, 37.806534416507489 ], [ -122.433064219557167, 37.806522605325611 ], [ -122.433088659156226, 37.806530445464773 ], [ -122.43316111864155, 37.80652101703766 ], [ -122.433169413207281, 37.806507146534614 ], [ -122.433195618216885, 37.806516331442637 ], [ -122.433259444532922, 37.80650773092048 ], [ -122.433269469079946, 37.806493832326176 ], [ -122.433293944088703, 37.806503045022133 ], [ -122.433357787918965, 37.806495131161043 ], [ -122.433366082106133, 37.806481260924372 ], [ -122.433392287462695, 37.806490445233919 ], [ -122.433454400931879, 37.806482559686899 ], [ -122.433462695099607, 37.806468689443392 ], [ -122.433488900463672, 37.806477873731517 ], [ -122.433552726373762, 37.806469273330841 ], [ -122.433561038053369, 37.806456089520083 ], [ -122.433587243771214, 37.806465273780709 ], [ -122.433649339320041, 37.806456701696959 ], [ -122.43365765098109, 37.806443517879387 ], [ -122.433683838827505, 37.806452015684521 ], [ -122.433745952233608, 37.806444129983937 ], [ -122.433754245996482, 37.806430259725488 ], [ -122.43378045172912, 37.806439443943233 ], [ -122.433842565114432, 37.806431558191733 ], [ -122.433850858857866, 37.806417687926462 ], [ -122.433877064598036, 37.806426872122742 ], [ -122.433932274491454, 37.806419786251801 ], [ -122.433954393037553, 37.806405002549944 ], [ -122.433958408377592, 37.806426224974288 ], [ -122.43399121327684, 37.806422940114579 ], [ -122.433989124957407, 37.806409239815579 ], [ -122.433988785204093, 37.806396197569725 ], [ -122.433991530954188, 37.80636868345389 ], [ -122.433981985185667, 37.806334503629429 ], [ -122.433942822534163, 37.806226642930824 ], [ -122.433950330141514, 37.806182569274938 ], [ -122.433940283395017, 37.806129169298679 ], [ -122.433873424076822, 37.805821925113698 ], [ -122.433853509955952, 37.80572198947479 ], [ -122.433844483207295, 37.805707716218421 ], [ -122.433823004146618, 37.805680599328511 ], [ -122.433808821860836, 37.805667784061214 ], [ -122.433796405313814, 37.805656313293774 ], [ -122.433780528829729, 37.805644899532474 ], [ -122.433766418068998, 37.805634829721896 ], [ -122.43374886455932, 37.805625503361618 ], [ -122.433731328933206, 37.805616863432853 ], [ -122.433713811190202, 37.805608909935621 ], [ -122.433675422356743, 37.805597178553839 ], [ -122.433656263344702, 37.805592685320363 ], [ -122.433637140790879, 37.805589565215314 ], [ -122.433616323330028, 37.805587846350818 ], [ -122.43359552375523, 37.805586814191379 ], [ -122.433576472363242, 37.805586439544221 ], [ -122.433535016220674, 37.805589866131839 ], [ -122.433516072105618, 37.805593610629053 ], [ -122.433498858293476, 37.805597326206154 ], [ -122.432719648836795, 37.805721348282255 ], [ -122.432704236424613, 37.805727781678655 ], [ -122.432688842557212, 37.805734900946824 ], [ -122.432673484086777, 37.805743393361759 ], [ -122.432659891674504, 37.805753230287664 ], [ -122.432648029581884, 37.805763038856455 ], [ -122.432637933547895, 37.805774191937303 ], [ -122.432627855379891, 37.805786031451547 ], [ -122.432619525401748, 37.805798529044132 ], [ -122.432612943621251, 37.805811684990026 ], [ -122.432606379692928, 37.805825526820627 ], [ -122.432603276080599, 37.805839312496055 ], [ -122.432600137407348, 37.805851724742368 ], [ -122.432500317433352, 37.805940575058216 ], [ -122.432391913920043, 37.805965699763121 ], [ -122.432397426855275, 37.805977970519415 ], [ -122.432516390332239, 37.805959539768239 ], [ -122.432628376560629, 37.805872550799698 ], [ -122.432642540805432, 37.805884679499613 ], [ -122.432527165744716, 37.805974471194816 ], [ -122.432403189584164, 37.805999851361079 ], [ -122.43238951051228, 37.806072868560939 ], [ -122.432404443045669, 37.806114514237365 ], [ -122.432490452847844, 37.806359639916195 ], [ -122.43244910342851, 37.806367184726966 ], [ -122.432520431119073, 37.806580274784345 ], [ -122.432498061398036, 37.806585448423995 ], [ -122.432424985907915, 37.806371700265615 ], [ -122.432400868391511, 37.806376216073893 ], [ -122.432301460176419, 37.806081865240721 ], [ -122.43236869294482, 37.806071149476409 ], [ -122.432380802509087, 37.806004338539104 ], [ -122.43235326017701, 37.806010283635004 ], [ -122.432347175872593, 37.805976047248159 ], [ -122.432319651407369, 37.805982678495994 ], [ -122.432302633632929, 37.805993944955773 ], [ -122.432282173360747, 37.806005686719168 ], [ -122.432280461289963, 37.806006669320666 ], [ -122.432265120589491, 37.806015848390899 ], [ -122.432249654811855, 37.806020221869829 ], [ -122.432227231644546, 37.806023336155739 ], [ -122.432194784491401, 37.806040349205666 ], [ -122.432179693529363, 37.806059138076137 ], [ -122.432171560304809, 37.806079186408191 ], [ -122.432165157068255, 37.806099206671476 ], [ -122.432169117939694, 37.806118369860684 ], [ -122.432192469776069, 37.806150950175152 ], [ -122.432209844223067, 37.806153412703416 ], [ -122.432227007583123, 37.806214250207013 ], [ -122.432213468614208, 37.806226146108848 ], [ -122.432203354593938, 37.806236612991817 ], [ -122.432202178080502, 37.806257920803567 ], [ -122.43220649593593, 37.806290812956746 ], [ -122.432221571326565, 37.806337949854225 ], [ -122.432306430556167, 37.806804907302421 ], [ -122.432383452345448, 37.807103744994606 ], [ -122.432564682589728, 37.808479722911237 ], [ -122.432615131844727, 37.808489197136744 ], [ -122.432610261989339, 37.808501638018015 ], [ -122.432598381927761, 37.808510760137189 ], [ -122.432584628175405, 37.80851441914389 ], [ -122.432342320320956, 37.808516329227118 ], [ -122.432078432185492, 37.807223425689031 ], [ -122.431999351719028, 37.807178023752513 ], [ -122.431443837686672, 37.8072509882197 ], [ -122.431386630568454, 37.807314417209206 ], [ -122.431727121174518, 37.8090235974717 ], [ -122.431341938476805, 37.809056687748011 ], [ -122.430994999022246, 37.807365467556572 ], [ -122.430915919059899, 37.807320064620313 ], [ -122.430360402907354, 37.807393024257635 ], [ -122.430303194747026, 37.8074564524454 ], [ -122.43062118366457, 37.809166690185819 ], [ -122.430108306409053, 37.8092156017048 ], [ -122.429835000067499, 37.807825332620489 ], [ -122.429264030219372, 37.807903346686288 ], [ -122.429270969868725, 37.807970532619663 ], [ -122.428236680346103, 37.808405663457563 ], [ -122.427001622006514, 37.808109268493716 ], [ -122.426995537909036, 37.808141644021028 ], [ -122.427545144293163, 37.808640840008444 ], [ -122.428014153033857, 37.808569308327186 ], [ -122.428043639051282, 37.808704798333089 ], [ -122.427533242566099, 37.808782500069931 ], [ -122.427523467767188, 37.808739396087624 ], [ -122.427301030953672, 37.808773247159571 ], [ -122.427287243070779, 37.808708920235645 ], [ -122.427490716316399, 37.808678126013014 ], [ -122.426909232318224, 37.808151294840016 ], [ -122.426839001555635, 37.808113298884024 ], [ -122.426613230594512, 37.808152010516238 ], [ -122.426560904719622, 37.807943556174827 ], [ -122.426488519796493, 37.807651861239542 ], [ -122.426357658303132, 37.807388412718332 ], [ -122.426257507799036, 37.807185417079722 ], [ -122.426066893674061, 37.80699787612533 ], [ -122.4257796482039, 37.806715259689653 ], [ -122.425627533230582, 37.806456787332273 ], [ -122.425531817297653, 37.806150610629167 ], [ -122.425487611207828, 37.806009959663712 ], [ -122.425486832357592, 37.806006120121552 ], [ -122.425298563577385, 37.80507790289635 ], [ -122.425204919000421, 37.804616199985951 ], [ -122.425109521046082, 37.804145845932808 ], [ -122.424918804152185, 37.803205508171892 ], [ -122.424808684502352, 37.802662664019884 ], [ -122.424731259133807, 37.802280983275736 ], [ -122.424731635083759, 37.802281009278651 ], [ -122.424538324517613, 37.801303719934985 ], [ -122.424517597070277, 37.801201189595353 ], [ -122.424358667137113, 37.800415027771606 ], [ -122.424242907462499, 37.799842398528341 ], [ -122.42417056511286, 37.799484537126212 ], [ -122.42417056430692, 37.799484532744323 ], [ -122.423982145098208, 37.798552453684835 ], [ -122.423982396975646, 37.798552421556877 ], [ -122.423793785438747, 37.7976164776058 ], [ -122.423792964234153, 37.797616581376253 ], [ -122.423601296960271, 37.796691058659476 ], [ -122.42360129621845, 37.796691056748735 ], [ -122.423601876988513, 37.796690945913937 ], [ -122.423601877370103, 37.796690947281171 ], [ -122.425249874473522, 37.79648130315109 ], [ -122.426892728667355, 37.796272251947869 ], [ -122.428537813517494, 37.796062892623418 ], [ -122.430182832162615, 37.795853517593606 ], [ -122.431827832563371, 37.79564412085616 ], [ -122.433469062960725, 37.795435179810816 ], [ -122.435113289920963, 37.795225833115033 ], [ -122.436760975027326, 37.795016021968365 ], [ -122.438402484723895, 37.794806973138577 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":7,"ZIP_CODE":94133,"ID":94133},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.418530631419571, 37.804999043218864 ], [ -122.418718265666911, 37.805931520041717 ], [ -122.418781807492508, 37.806241018338142 ], [ -122.418781854642702, 37.806241248585302 ], [ -122.418856183917853, 37.806607498073362 ], [ -122.418908043871269, 37.806863030947284 ], [ -122.419086067910683, 37.807803117635643 ], [ -122.419223966222532, 37.808453096037454 ], [ -122.419103158585543, 37.808467422639801 ], [ -122.419122467317635, 37.808544708340989 ], [ -122.418980965776527, 37.808562118993599 ], [ -122.418965099874526, 37.808484090255142 ], [ -122.417886530686005, 37.80861494396968 ], [ -122.417923033396889, 37.808821741173873 ], [ -122.417843612318336, 37.80882989992265 ], [ -122.417811191268285, 37.808647071958433 ], [ -122.417726330574766, 37.808645704666795 ], [ -122.417731886802656, 37.808592736810425 ], [ -122.417624531730937, 37.808591735208473 ], [ -122.417601699719071, 37.808579058949235 ], [ -122.41748929463067, 37.808583633129054 ], [ -122.417485092698755, 37.808420948020817 ], [ -122.417586902421718, 37.808408305143338 ], [ -122.417575917233663, 37.808385134844094 ], [ -122.417669145522396, 37.808375378317514 ], [ -122.41765313920358, 37.808291858459306 ], [ -122.41737529132557, 37.808325217992042 ], [ -122.417344584298249, 37.808141675039998 ], [ -122.416347061956941, 37.808260209523006 ], [ -122.416354024690548, 37.808328768820694 ], [ -122.416305697821443, 37.808334361125667 ], [ -122.416338782629509, 37.80847597548388 ], [ -122.41718410046191, 37.808496573566089 ], [ -122.417183326975007, 37.808533669258267 ], [ -122.416327431803367, 37.808505689336052 ], [ -122.416281962820022, 37.808487886292838 ], [ -122.416150789583881, 37.80850306555427 ], [ -122.416144807019506, 37.808539558863203 ], [ -122.416207242955323, 37.808544038257011 ], [ -122.416187547333237, 37.808854071166344 ], [ -122.41742892570683, 37.808927290365972 ], [ -122.417412600540189, 37.80916653558441 ], [ -122.418193962887401, 37.809680962781762 ], [ -122.41929170565983, 37.810403664792204 ], [ -122.41931534577914, 37.810380618458765 ], [ -122.419422885954745, 37.810454266609824 ], [ -122.419833484960733, 37.810735462513406 ], [ -122.419807989843818, 37.810753732347422 ], [ -122.420595101766708, 37.811266948659416 ], [ -122.420353825913267, 37.811509857466909 ], [ -122.420001661760068, 37.81128073132367 ], [ -122.419845148459302, 37.811320361929653 ], [ -122.419951835473171, 37.811563099184333 ], [ -122.419915762044113, 37.811573987538154 ], [ -122.419724362099529, 37.811134852199615 ], [ -122.41972295750638, 37.81113418613959 ], [ -122.419216088646508, 37.810893843097361 ], [ -122.419185739151644, 37.810925239548666 ], [ -122.419097184597589, 37.810915006165231 ], [ -122.418987802638568, 37.810835752698928 ], [ -122.418935347953351, 37.810882616404598 ], [ -122.419125945102621, 37.811023040645175 ], [ -122.419048154317267, 37.811094352280243 ], [ -122.419465867632354, 37.811381473037407 ], [ -122.419350858543552, 37.811486353332427 ], [ -122.418846744437559, 37.811473267417028 ], [ -122.416831664498375, 37.810133272229294 ], [ -122.415352404138332, 37.809160867759147 ], [ -122.415205531523597, 37.809171493557926 ], [ -122.415205867990196, 37.809184535850846 ], [ -122.415200978155667, 37.80919628956385 ], [ -122.415187329670815, 37.809204065160294 ], [ -122.415151663626474, 37.809230739831797 ], [ -122.415171052667063, 37.809244159741915 ], [ -122.415194871121983, 37.809227978313764 ], [ -122.415413019588954, 37.809363153673537 ], [ -122.415370856947149, 37.809406415569271 ], [ -122.415142166917732, 37.809265230241984 ], [ -122.415155744585249, 37.809254708904987 ], [ -122.415139781310558, 37.809239860465802 ], [ -122.415039713249854, 37.809185860695372 ], [ -122.41488880052961, 37.80924118848273 ], [ -122.414968316086458, 37.80930376277346 ], [ -122.414992913705149, 37.809317784591791 ], [ -122.415006420575594, 37.809304517526144 ], [ -122.415222785388849, 37.809437662297633 ], [ -122.415180622939999, 37.809480924119129 ], [ -122.41496425806919, 37.809347778996823 ], [ -122.414981136896941, 37.8093310235652 ], [ -122.41495316698277, 37.809320490118694 ], [ -122.414845930117963, 37.809256992445782 ], [ -122.414780776445994, 37.809281398852669 ], [ -122.414774461081151, 37.809372149219335 ], [ -122.415340036749569, 37.80975508488244 ], [ -122.415288518799699, 37.809838328383556 ], [ -122.41456302792659, 37.80956443044294 ], [ -122.414023978762671, 37.809471544827012 ], [ -122.413420668373689, 37.809236173514122 ], [ -122.41337430449579, 37.809317959368158 ], [ -122.413395600212141, 37.809338215320878 ], [ -122.413411510435665, 37.809351004954635 ], [ -122.413425672211702, 37.809363136228626 ], [ -122.413441564407123, 37.809375239427176 ], [ -122.413455726199771, 37.809387370972054 ], [ -122.413471618398191, 37.809399473891929 ], [ -122.413487492569899, 37.80941089065314 ], [ -122.413505097854454, 37.809422279326348 ], [ -122.413520972382244, 37.809433696077356 ], [ -122.413538559637843, 37.80944439831444 ], [ -122.413554416481929, 37.809455128624236 ], [ -122.413572003401356, 37.809465830861896 ], [ -122.413607142559428, 37.809485862444731 ], [ -122.413624694804525, 37.809495192064489 ], [ -122.414282035042135, 37.809946003161961 ], [ -122.414200903764723, 37.81002217256772 ], [ -122.414027337823839, 37.810138985552911 ], [ -122.413780738047123, 37.809907441000853 ], [ -122.413857049972947, 37.809845771015681 ], [ -122.412616832608151, 37.809078904365926 ], [ -122.412498775807535, 37.80906571088461 ], [ -122.412398060995869, 37.809120908451149 ], [ -122.412400109349747, 37.809133236262518 ], [ -122.412396967167027, 37.809145648237823 ], [ -122.412390346141294, 37.809157430172931 ], [ -122.412380210884578, 37.809167208369729 ], [ -122.412426492762847, 37.809216588736774 ], [ -122.412450629760414, 37.809212763732177 ], [ -122.41262839277087, 37.809393236325491 ], [ -122.412573868329858, 37.809427083257212 ], [ -122.412396105370902, 37.809246610582868 ], [ -122.412412861666652, 37.809225050449037 ], [ -122.412356250722411, 37.809177897728922 ], [ -122.41234073008107, 37.809180209833173 ], [ -122.412323390603305, 37.809179117259049 ], [ -122.412307675451856, 37.809173878278465 ], [ -122.412099340782589, 37.809285071655154 ], [ -122.412099676704088, 37.809298113956672 ], [ -122.412096516784118, 37.809309839486673 ], [ -122.412089895696084, 37.809321621404543 ], [ -122.412078012629308, 37.8093307411864 ], [ -122.412124294062423, 37.809380121676121 ], [ -122.412148413801376, 37.809375610565525 ], [ -122.412315935400727, 37.809561743172587 ], [ -122.412252793608843, 37.809597103119742 ], [ -122.412093889154491, 37.809409457275514 ], [ -122.41211066290181, 37.809388583353197 ], [ -122.412057512853792, 37.809341374382768 ], [ -122.412040244067796, 37.809343027789311 ], [ -122.412024634631933, 37.809341907398313 ], [ -122.412008919813204, 37.809336668372488 ], [ -122.411894272206808, 37.809388657747697 ], [ -122.412861765933144, 37.810522545447967 ], [ -122.412718336607824, 37.810599724430624 ], [ -122.412705816724809, 37.810584132828346 ], [ -122.411509089676429, 37.81123738012537 ], [ -122.41148957739901, 37.811219154555417 ], [ -122.412686215557258, 37.810562475550952 ], [ -122.411452462026304, 37.809105334882879 ], [ -122.411423380532113, 37.809118854220145 ], [ -122.411248622782082, 37.808920476073887 ], [ -122.411085557936261, 37.808907323817536 ], [ -122.411283571142818, 37.809134854169606 ], [ -122.411256255700124, 37.809149718017444 ], [ -122.411031438641331, 37.808889659210472 ], [ -122.410955336187001, 37.808892265747417 ], [ -122.410765573350616, 37.808850703243849 ], [ -122.410736033164511, 37.808846374759867 ], [ -122.410731512966407, 37.808872543480319 ], [ -122.410649866328171, 37.808861505447226 ], [ -122.410652655797975, 37.808835364493682 ], [ -122.410546641899074, 37.808819227353638 ], [ -122.410441958004114, 37.809325664485378 ], [ -122.410406413493931, 37.809289843904054 ], [ -122.410401787512413, 37.809311893981061 ], [ -122.410630331289113, 37.809716792194763 ], [ -122.410709259423612, 37.809689418065965 ], [ -122.410633083668301, 37.809554681184579 ], [ -122.41064851611452, 37.809548937394226 ], [ -122.410729547478269, 37.809670547859675 ], [ -122.410757004560026, 37.809661175631867 ], [ -122.410712947997226, 37.809563688219221 ], [ -122.410728380093076, 37.809557944424022 ], [ -122.410791312651469, 37.80964894551029 ], [ -122.410822177556227, 37.809637457886339 ], [ -122.410778085579025, 37.80953859734884 ], [ -122.410793518010678, 37.809532853539501 ], [ -122.410858216047515, 37.809625199709956 ], [ -122.410889098254941, 37.809614398511123 ], [ -122.410843240792332, 37.809514193154044 ], [ -122.410858672867818, 37.809508449341749 ], [ -122.410923406302985, 37.809602168351013 ], [ -122.410950845665482, 37.809592109640889 ], [ -122.410904952795121, 37.809490531433248 ], [ -122.410920384860916, 37.809484787612853 ], [ -122.410985153693048, 37.809579879462774 ], [ -122.411024617975485, 37.809566192280315 ], [ -122.410978689334627, 37.809463241232329 ], [ -122.410994104065225, 37.809456810959603 ], [ -122.411058925978935, 37.809553962080649 ], [ -122.411089808473605, 37.809543160823544 ], [ -122.411042113998747, 37.809438864964896 ], [ -122.411057546043196, 37.809433121126496 ], [ -122.411195348876859, 37.80967536169041 ], [ -122.41117818636998, 37.809681133587063 ], [ -122.411116453591873, 37.809569511282646 ], [ -122.41104955067469, 37.80959325722408 ], [ -122.41111476155065, 37.809705510201134 ], [ -122.411097598684464, 37.809711282091641 ], [ -122.411034100233891, 37.80959831463543 ], [ -122.410977509113948, 37.809619146556997 ], [ -122.411041007143098, 37.809732113774253 ], [ -122.411025592359422, 37.809738544052792 ], [ -122.410960346257056, 37.809624918427609 ], [ -122.410907162593759, 37.809643635209717 ], [ -122.410972426300958, 37.809757947300923 ], [ -122.410956993836351, 37.80976369113344 ], [ -122.410891730147881, 37.809649379033807 ], [ -122.410835138249837, 37.809670210623501 ], [ -122.410900419538606, 37.809785209191027 ], [ -122.410884987408849, 37.809790953008481 ], [ -122.410819706138938, 37.809675954432528 ], [ -122.410764809648242, 37.809695385622547 ], [ -122.410830108511632, 37.809811070390921 ], [ -122.41081467602497, 37.809816814204737 ], [ -122.410747646757216, 37.80970115746215 ], [ -122.410639354408318, 37.809731067210933 ], [ -122.410896947885561, 37.810188372007936 ], [ -122.410975841429376, 37.810159624823598 ], [ -122.410901536485113, 37.810030351311333 ], [ -122.410916969009435, 37.810024607486383 ], [ -122.410997965998874, 37.810144845157168 ], [ -122.41103912533255, 37.810129757339681 ], [ -122.410977003992286, 37.810003033077805 ], [ -122.410992436505126, 37.809997289242951 ], [ -122.411075146003029, 37.810116812392209 ], [ -122.411112880121649, 37.810103153220581 ], [ -122.411050758345823, 37.809976429551675 ], [ -122.411066208857108, 37.809971371863952 ], [ -122.411147188358683, 37.810090922996501 ], [ -122.411190078057032, 37.810075806811575 ], [ -122.411127956511336, 37.809949082902484 ], [ -122.411143389001253, 37.809943339047805 ], [ -122.411224368596535, 37.81006289012803 ], [ -122.411256964037719, 37.810051374350031 ], [ -122.411194842059288, 37.809924650755768 ], [ -122.41121027488505, 37.809918906886708 ], [ -122.4112929849924, 37.810038429879377 ], [ -122.411332431435511, 37.81002405588923 ], [ -122.411270309344076, 37.809897332059471 ], [ -122.411285742158299, 37.809891588180513 ], [ -122.411366721926342, 37.810011139164168 ], [ -122.411401047752832, 37.809999595302976 ], [ -122.411337195490745, 37.809872899820583 ], [ -122.411354358375661, 37.809867127895387 ], [ -122.411435338227506, 37.809986678832487 ], [ -122.411471359105562, 37.809973733758071 ], [ -122.411409237165202, 37.809847009994684 ], [ -122.411424669612117, 37.809841266103092 ], [ -122.41150566722375, 37.80996150342942 ], [ -122.411546826352634, 37.809946415434261 ], [ -122.411484704299241, 37.809819691435401 ], [ -122.411500136734659, 37.809813947533918 ], [ -122.411582846845619, 37.809933470331323 ], [ -122.4116188680253, 37.809920525480692 ], [ -122.411556745877689, 37.809793801793724 ], [ -122.411572177956074, 37.809788057888397 ], [ -122.411653176094603, 37.809908295109032 ], [ -122.4116909096619, 37.809894636032141 ], [ -122.411628787405917, 37.809767912107915 ], [ -122.411644219819436, 37.809762168187518 ], [ -122.411725217707357, 37.809882405639449 ], [ -122.411759525734439, 37.809870174962185 ], [ -122.411697403388885, 37.809743451348098 ], [ -122.411712835792031, 37.809737707418712 ], [ -122.411881278427131, 37.810026834486933 ], [ -122.41186411554628, 37.81003260648864 ], [ -122.411782586611622, 37.809891776308959 ], [ -122.411719126796399, 37.80991478009306 ], [ -122.411802385721074, 37.810055582271964 ], [ -122.411785222827419, 37.810061354262146 ], [ -122.411703694356945, 37.809920524023092 ], [ -122.411645389734517, 37.809942070760108 ], [ -122.411726900787329, 37.810082214596392 ], [ -122.411711467967621, 37.810087958532876 ], [ -122.411628227200978, 37.809947842721932 ], [ -122.41156305384375, 37.809971560917056 ], [ -122.411644564773539, 37.810111704809465 ], [ -122.411629131941311, 37.810117448735141 ], [ -122.411547621726527, 37.809977304820983 ], [ -122.411485874174801, 37.809999594002001 ], [ -122.411567384297499, 37.810139737958238 ], [ -122.411551952145643, 37.810145481862563 ], [ -122.411470441699677, 37.81000533790143 ], [ -122.411408676427612, 37.810026940604999 ], [ -122.411490204455376, 37.81016777104513 ], [ -122.41147477194562, 37.81017351494495 ], [ -122.411393243940836, 37.810032684494281 ], [ -122.411328070780158, 37.81005640255357 ], [ -122.41140959834128, 37.810197233054254 ], [ -122.411394148491496, 37.81020229050096 ], [ -122.41131090784944, 37.810062174474744 ], [ -122.411249177828495, 37.810085149968437 ], [ -122.411330687944414, 37.810225294080347 ], [ -122.4113152554104, 37.810231037959227 ], [ -122.411232014885002, 37.810090921878086 ], [ -122.411175405434363, 37.810111067735896 ], [ -122.411256933104966, 37.81025189806045 ], [ -122.411241500559697, 37.810257641929645 ], [ -122.411159972912074, 37.810116811594561 ], [ -122.411103380733024, 37.810137643311123 ], [ -122.411184890977466, 37.810277787516789 ], [ -122.411169458075165, 37.810283531382133 ], [ -122.411087948545713, 37.810143387154753 ], [ -122.411017619235537, 37.810168562307894 ], [ -122.411099128998927, 37.810308706303054 ], [ -122.411083696429642, 37.810314450151544 ], [ -122.411004005467134, 37.81017771001823 ], [ -122.410905971459442, 37.810202646996828 ], [ -122.411216101543474, 37.810750434096292 ], [ -122.411307020324173, 37.810718058221234 ], [ -122.411214614556201, 37.8105581756828 ], [ -122.411231794935318, 37.81055309021869 ], [ -122.411325542368957, 37.810697843090367 ], [ -122.411366719609191, 37.810683441322411 ], [ -122.411291830600106, 37.810531515646439 ], [ -122.411307262852333, 37.810525771776568 ], [ -122.411402864908169, 37.810675301597549 ], [ -122.411522935608915, 37.810632152260467 ], [ -122.411446209498621, 37.810476136111049 ], [ -122.411461659747943, 37.810471078652185 ], [ -122.411555407533228, 37.810615831617966 ], [ -122.41160859172949, 37.810597114547022 ], [ -122.411624041992908, 37.810592057067005 ], [ -122.411677226161913, 37.810573340239586 ], [ -122.411600605842565, 37.810421442809904 ], [ -122.411617768833821, 37.810415670846979 ], [ -122.411711534523249, 37.810561109852458 ], [ -122.411738974133357, 37.810551050960818 ], [ -122.411686385419046, 37.810391210096554 ], [ -122.411701817957677, 37.810385466169308 ], [ -122.411764700631707, 37.810541706828857 ], [ -122.411829892102887, 37.810518674961713 ], [ -122.41176529620391, 37.810363148827776 ], [ -122.411780746061879, 37.81035809133261 ], [ -122.411847054752684, 37.810512902971148 ], [ -122.411915671345156, 37.810488441813206 ], [ -122.411840781416544, 37.810336516754752 ], [ -122.411856213585779, 37.81033077281284 ], [ -122.411935941632692, 37.810468884965481 ], [ -122.411921351800245, 37.810305681309181 ], [ -122.411938638145514, 37.810304714362765 ], [ -122.411953405498025, 37.81047478237366 ], [ -122.412071780474818, 37.810433033401743 ], [ -122.412010591984938, 37.810275392256564 ], [ -122.412115642263785, 37.810455670909619 ], [ -122.412100192408317, 37.810460728448561 ], [ -122.412084406280471, 37.810452743692409 ], [ -122.41176878056207, 37.810565675738737 ], [ -122.41175334799118, 37.810571419674538 ], [ -122.411684748938015, 37.810596566899896 ], [ -122.411669298331702, 37.810601624393506 ], [ -122.411598969130708, 37.810626799885483 ], [ -122.411583536533968, 37.810632543799024 ], [ -122.411518344886403, 37.810655575529537 ], [ -122.411502912623547, 37.810661319426885 ], [ -122.411432582949345, 37.810686494275835 ], [ -122.411417150327338, 37.81069223816754 ], [ -122.411223323763636, 37.810761991358582 ], [ -122.41132311146211, 37.810939609065692 ], [ -122.411244573940635, 37.811116682909216 ], [ -122.410949479920689, 37.811220352571489 ], [ -122.410930216342933, 37.811279036146971 ], [ -122.410681455051716, 37.81136684679597 ], [ -122.410613578346386, 37.811352838185535 ], [ -122.410419696661208, 37.811420531005773 ], [ -122.410148367227194, 37.811505958616635 ], [ -122.408511879957302, 37.811283856992631 ], [ -122.407577358643394, 37.808803424612513 ], [ -122.407596251976869, 37.808797625245276 ], [ -122.408535735474004, 37.811269050069917 ], [ -122.410153064417187, 37.811486654300801 ], [ -122.41040703579597, 37.811399447392162 ], [ -122.410397994853795, 37.811384485925792 ], [ -122.410199185064457, 37.81132796106332 ], [ -122.410033026138677, 37.811396577420801 ], [ -122.410028523199003, 37.811423432538689 ], [ -122.408569038736545, 37.811217693403208 ], [ -122.408604939400348, 37.811065346992223 ], [ -122.408622314546491, 37.811067812437848 ], [ -122.408601547208733, 37.811202746444437 ], [ -122.408639776140404, 37.811208308039326 ], [ -122.408681379486623, 37.811075784005041 ], [ -122.408700502750108, 37.811078908147074 ], [ -122.408681466003685, 37.811213813888727 ], [ -122.408723173522517, 37.811220006160561 ], [ -122.408763046269982, 37.811087510102226 ], [ -122.408782169539933, 37.811090634230986 ], [ -122.40876313259281, 37.811225539991135 ], [ -122.408803092361268, 37.811231073796982 ], [ -122.408842964625947, 37.811098577717516 ], [ -122.408862088248199, 37.811101701827724 ], [ -122.408843051796623, 37.811236607869454 ], [ -122.408881280424794, 37.811242169666208 ], [ -122.408921153248102, 37.811109673549396 ], [ -122.408942006980325, 37.811112769370261 ], [ -122.408921240203938, 37.811247703157434 ], [ -122.408964677875915, 37.811253867342053 ], [ -122.409004568208587, 37.811122057634492 ], [ -122.409025404309773, 37.811124467552588 ], [ -122.409006385440833, 37.811260059513721 ], [ -122.409042866672721, 37.811264962818356 ], [ -122.409082738873835, 37.811132466653085 ], [ -122.409101862168811, 37.811135590729982 ], [ -122.409082825791046, 37.81127049654058 ], [ -122.409126264189027, 37.81127666092906 ], [ -122.409166136247578, 37.811144164735886 ], [ -122.409185259542042, 37.811147288524687 ], [ -122.409166223312823, 37.811282194348451 ], [ -122.409211409832309, 37.811289016857089 ], [ -122.409251281745554, 37.811156520635443 ], [ -122.40927213551177, 37.811159616672512 ], [ -122.40925136932222, 37.811294550516585 ], [ -122.409279162626277, 37.81129822094033 ], [ -122.40932078253644, 37.811166383119904 ], [ -122.409339888202226, 37.811168820995697 ], [ -122.409320870242325, 37.811304413000762 ], [ -122.409364308333835, 37.811310577307111 ], [ -122.409405910098016, 37.811178053025465 ], [ -122.409425033757373, 37.811181176769772 ], [ -122.409405998308287, 37.811316082900326 ], [ -122.40944074878638, 37.811321014101964 ], [ -122.40948063795679, 37.811189203966087 ], [ -122.409501474085218, 37.811191613525516 ], [ -122.409480725959895, 37.811327233846249 ], [ -122.409527624648632, 37.811333341792235 ], [ -122.409567496367472, 37.811200845459226 ], [ -122.409588350159311, 37.811203941440354 ], [ -122.40956758453207, 37.81133887533899 ], [ -122.409607544075371, 37.811344408877801 ], [ -122.409647432976385, 37.811212599235269 ], [ -122.409666538650669, 37.811215036508962 ], [ -122.4096475212896, 37.811350629114692 ], [ -122.409687480492039, 37.811356162357413 ], [ -122.409729082397121, 37.811223637951706 ], [ -122.409748205742758, 37.811226761923784 ], [ -122.40972917051603, 37.811361667836366 ], [ -122.40976739996718, 37.811367229334621 ], [ -122.409807270930216, 37.811234732926998 ], [ -122.409826394289098, 37.811237857160975 ], [ -122.409807359540622, 37.811372762805725 ], [ -122.409849067242604, 37.811378954679277 ], [ -122.409888938066231, 37.811246458244362 ], [ -122.409909791884289, 37.81124955416864 ], [ -122.409890757298484, 37.811384460375677 ], [ -122.409934195469972, 37.811390623922954 ], [ -122.409972335687982, 37.811258155482349 ], [ -122.409991388408557, 37.811258533667043 ], [ -122.410051001542016, 37.811355083215751 ], [ -122.410080225111116, 37.811347055723829 ], [ -122.410039452733983, 37.811242647397464 ], [ -122.410060076955276, 37.811236819614464 ], [ -122.410111355764599, 37.81134586484395 ], [ -122.410186754248173, 37.811315801374953 ], [ -122.410002034752523, 37.810999466686859 ], [ -122.410015948336749, 37.810934689402742 ], [ -122.410036236914948, 37.810915819594705 ], [ -122.410045418985376, 37.810868973454134 ], [ -122.40995683043738, 37.810857360334786 ], [ -122.409929090780366, 37.810990347084882 ], [ -122.409911715601922, 37.810987881557118 ], [ -122.409936471227283, 37.810873484930354 ], [ -122.409873927744698, 37.810864883322409 ], [ -122.409849172039969, 37.810979280485419 ], [ -122.409831796859692, 37.810976814671307 ], [ -122.409859730943055, 37.810851378751366 ], [ -122.409793708942289, 37.810842147255194 ], [ -122.409767522509881, 37.810968241308018 ], [ -122.409751878141279, 37.810965747731309 ], [ -122.409778063900148, 37.81083965341854 ], [ -122.409713790367476, 37.810831080014538 ], [ -122.409685856045158, 37.810956515900401 ], [ -122.409668480889763, 37.810954050611365 ], [ -122.409696415233427, 37.810828614454991 ], [ -122.40963387182353, 37.810820012994292 ], [ -122.409609415933446, 37.810946079263672 ], [ -122.409592040775962, 37.810943613688799 ], [ -122.409616496701801, 37.810817547697539 ], [ -122.409552222853762, 37.810808973936524 ], [ -122.409527766835737, 37.810935040463818 ], [ -122.4095103913304, 37.810932574607932 ], [ -122.409534847384165, 37.81080650835878 ], [ -122.409470556252117, 37.810797248385086 ], [ -122.4094443696399, 37.810923342636215 ], [ -122.409426994147125, 37.810920877042648 ], [ -122.409453181134111, 37.810794782789721 ], [ -122.40938717688249, 37.810786237228463 ], [ -122.409360972477401, 37.810911645024227 ], [ -122.409343596990126, 37.810909179418339 ], [ -122.409371532226004, 37.810783743881395 ], [ -122.409307258435504, 37.810775169986833 ], [ -122.409279323454484, 37.810900606052307 ], [ -122.409261948311553, 37.810898140154237 ], [ -122.409289883328043, 37.810772704367388 ], [ -122.409222130673314, 37.810763500569543 ], [ -122.409194195884822, 37.810888936060401 ], [ -122.409178551206097, 37.810886442413199 ], [ -122.409204755910437, 37.810761034657382 ], [ -122.409142194961319, 37.810751746498703 ], [ -122.409114277009948, 37.810877868693844 ], [ -122.409096902238019, 37.810875403314995 ], [ -122.409124837171674, 37.81074996729771 ], [ -122.409062293894237, 37.810741365533815 ], [ -122.409034358851102, 37.810866801261916 ], [ -122.409016983385186, 37.810864335607896 ], [ -122.409044919155974, 37.810738900147257 ], [ -122.408982375890048, 37.810730298066382 ], [ -122.408954440030968, 37.81085573406159 ], [ -122.408937065255401, 37.810853268110044 ], [ -122.408965000457812, 37.810727832404666 ], [ -122.408898979017181, 37.810718600127345 ], [ -122.408871043014514, 37.810844035828495 ], [ -122.408853668258587, 37.8108415704138 ], [ -122.408881603590444, 37.810716134453337 ], [ -122.408815582170575, 37.810706902129297 ], [ -122.408787646031413, 37.810832337810972 ], [ -122.408770288923606, 37.810830558546641 ], [ -122.408798206756401, 37.810704436717558 ], [ -122.408730454910014, 37.810695232351428 ], [ -122.408702518970472, 37.810820667733054 ], [ -122.408686891971527, 37.810818860457857 ], [ -122.408713079833362, 37.810692766372398 ], [ -122.408650536651805, 37.810684164390111 ], [ -122.408622600588473, 37.810809600027646 ], [ -122.408605243143839, 37.810807820744628 ], [ -122.408633161587474, 37.810681698673903 ], [ -122.408556510134844, 37.810663024107164 ], [ -122.408588984612706, 37.810512106294745 ], [ -122.408606359289806, 37.810514572023159 ], [ -122.408587340511048, 37.810650164195629 ], [ -122.408629047705375, 37.810656356501411 ], [ -122.408668902323384, 37.810523174029143 ], [ -122.408686277704945, 37.81052564000916 ], [ -122.40866552792356, 37.81066125993452 ], [ -122.408708965930458, 37.810667424477344 ], [ -122.408748820750048, 37.810534241698186 ], [ -122.40876619543765, 37.81053670740306 ], [ -122.40874717695219, 37.810672299875314 ], [ -122.408794093155748, 37.810679094270796 ], [ -122.408833947835987, 37.810545911737734 ], [ -122.408849592085303, 37.810548405436371 ], [ -122.40883057374208, 37.810683997647232 ], [ -122.408875741869977, 37.810690133853562 ], [ -122.408915614060632, 37.81055763773044 ], [ -122.408932971115192, 37.810559417248072 ], [ -122.408913970565308, 37.81069569563472 ], [ -122.408960869161646, 37.810701804075741 ], [ -122.409000741206668, 37.810569307924148 ], [ -122.409018098597954, 37.810571086874475 ], [ -122.40899736742189, 37.810707393837795 ], [ -122.409040787124908, 37.810712871283229 ], [ -122.409080641733894, 37.810579688936649 ], [ -122.409096286337629, 37.810582182322406 ], [ -122.409077268090201, 37.810717774577761 ], [ -122.40911897536337, 37.810723966710214 ], [ -122.409158829484909, 37.81059078406853 ], [ -122.409176204199355, 37.810593249712966 ], [ -122.409157186441121, 37.810728841975312 ], [ -122.409200623829136, 37.810735006073635 ], [ -122.409240478156264, 37.81060182339904 ], [ -122.409257853229136, 37.810604289300421 ], [ -122.409238852918037, 37.810740567743849 ], [ -122.409285751569428, 37.810746676055665 ], [ -122.409325605404021, 37.810613493358183 ], [ -122.409341250023104, 37.81061598671144 ], [ -122.40932224986912, 37.810752265442567 ], [ -122.4093656699755, 37.81075774303735 ], [ -122.40940554098205, 37.810625246755905 ], [ -122.409422898749284, 37.810627025915643 ], [ -122.409403898742326, 37.810763304659638 ], [ -122.409447336517104, 37.810769468661483 ], [ -122.40948544197218, 37.810635627488516 ], [ -122.409502816715019, 37.810638093359387 ], [ -122.409485547293727, 37.810774343825763 ], [ -122.409528985434875, 37.8107805080665 ], [ -122.409565359949454, 37.810646694615322 ], [ -122.409582735382628, 37.810649160188639 ], [ -122.409567196568673, 37.810785383198734 ], [ -122.409612364812048, 37.81079151884834 ], [ -122.409648756853613, 37.810658392357979 ], [ -122.409666132285238, 37.810660857644436 ], [ -122.409648863165444, 37.8107971084087 ], [ -122.409690552872675, 37.810802613901892 ], [ -122.409730423669671, 37.810670117506156 ], [ -122.409747781109076, 37.81067189662366 ], [ -122.409728781340874, 37.810808175424455 ], [ -122.409772201856015, 37.810813652863935 ], [ -122.409810324407417, 37.810680498024219 ], [ -122.409827699517621, 37.810682963841622 ], [ -122.409810430682086, 37.810819214354417 ], [ -122.4098555989803, 37.810825350459979 ], [ -122.409895451834942, 37.810692167571958 ], [ -122.409912826590485, 37.810694632833282 ], [ -122.409895222374288, 37.810817841328777 ], [ -122.409936876790525, 37.81082197386079 ], [ -122.409973639826163, 37.810703262163521 ], [ -122.409991014940061, 37.810705727682269 ], [ -122.409959938125212, 37.81084357554878 ], [ -122.410048526318235, 37.810855188946014 ], [ -122.41005622518567, 37.810817980946432 ], [ -122.410043511556253, 37.810794838529432 ], [ -122.410054194116455, 37.810739040961913 ], [ -122.410078049482479, 37.810724233171044 ], [ -122.410094488114893, 37.810623018930904 ], [ -122.410081703845862, 37.810597130219826 ], [ -122.410092509988729, 37.810546137980772 ], [ -122.410117989755761, 37.810527183534326 ], [ -122.410136070412563, 37.810422508799753 ], [ -122.410119930917134, 37.810400795044814 ], [ -122.41012762970874, 37.810363587311961 ], [ -122.410156217048225, 37.810330848613937 ], [ -122.41017620465729, 37.81023300994017 ], [ -122.410158299784257, 37.810209951610261 ], [ -122.410179752853338, 37.810101788351538 ], [ -122.410076402542387, 37.809920107344034 ], [ -122.410041882266327, 37.809924099736733 ], [ -122.410019086454341, 37.809912794612728 ], [ -122.409979357246016, 37.809916185169463 ], [ -122.409958274206915, 37.809904165299031 ], [ -122.409922023510461, 37.809908185953802 ], [ -122.409899227375504, 37.80989688081219 ], [ -122.409856019993072, 37.80989964065347 ], [ -122.409833224216882, 37.809888335493483 ], [ -122.409796955869524, 37.80989166994722 ], [ -122.409774159751635, 37.809880364506853 ], [ -122.40973616131653, 37.809883726681605 ], [ -122.409715095991231, 37.809872393479395 ], [ -122.409673618697951, 37.809875125240453 ], [ -122.409650822957047, 37.809863820045173 ], [ -122.409611093758144, 37.809867210477904 ], [ -122.409590028449543, 37.809855876978752 ], [ -122.409552029326491, 37.809859239105428 ], [ -122.40952923395507, 37.809847933880995 ], [ -122.409489504405954, 37.809851324003851 ], [ -122.409466709046484, 37.809840018767318 ], [ -122.409426961850301, 37.809842722706414 ], [ -122.409405896576772, 37.809831389174342 ], [ -122.409362689214092, 37.809834148834945 ], [ -122.409339893540192, 37.80982284385405 ], [ -122.40930537326976, 37.809826836031277 ], [ -122.409282577599768, 37.809815530764716 ], [ -122.409239369556644, 37.809818290665945 ], [ -122.409216574238357, 37.809806985106434 ], [ -122.409183784056154, 37.809810949516532 ], [ -122.409160988755644, 37.809799644220845 ], [ -122.409117781056253, 37.80980240379737 ], [ -122.409096715848435, 37.809791070484557 ], [ -122.409062177941692, 37.809794376702477 ], [ -122.40903938231871, 37.80978307138885 ], [ -122.409001401198537, 37.80978711949534 ], [ -122.408980336012803, 37.809775786161715 ], [ -122.408940588826241, 37.809778489662385 ], [ -122.408917793572726, 37.809767184319618 ], [ -122.408872855464537, 37.809769972088361 ], [ -122.408850059531787, 37.809758666743676 ], [ -122.408812061110055, 37.80976202834627 ], [ -122.408789265535077, 37.809750722984248 ], [ -122.40874778827569, 37.809753454419798 ], [ -122.408724992367041, 37.80974214905094 ], [ -122.408688724387432, 37.809745483158423 ], [ -122.408665928836285, 37.809734177772519 ], [ -122.408627929726592, 37.809737539327024 ], [ -122.408605134533261, 37.809726233923747 ], [ -122.40856886620287, 37.809729567725441 ], [ -122.408546070674888, 37.809718262316345 ], [ -122.408502862660981, 37.80972102194783 ], [ -122.408480067491766, 37.809709716520373 ], [ -122.408442068732256, 37.809713078009395 ], [ -122.408419272882526, 37.809701772581377 ], [ -122.40838475263304, 37.809705765038423 ], [ -122.408363687557454, 37.809694431319926 ], [ -122.408318732173385, 37.809696532434543 ], [ -122.408295936693619, 37.809685226977031 ], [ -122.408254459445629, 37.809687957964584 ], [ -122.408238053815026, 37.809790545390122 ], [ -122.40821721811372, 37.809788135332319 ], [ -122.408256439046454, 37.809562942360742 ], [ -122.408275562248491, 37.809566066566916 ], [ -122.408269450984477, 37.809665053549438 ], [ -122.408286825452777, 37.809667519325309 ], [ -122.40832766898086, 37.809572777430049 ], [ -122.408321557439706, 37.809671764420713 ], [ -122.408342410750109, 37.809674860622998 ], [ -122.408383254218379, 37.809580118983206 ], [ -122.408377142750709, 37.809679105976613 ], [ -122.408394517910963, 37.809681571450852 ], [ -122.408435360963296, 37.809586829524143 ], [ -122.408429249910625, 37.809685816514552 ], [ -122.408451833660507, 37.80968888497187 ], [ -122.408492676297627, 37.809594143031056 ], [ -122.408484852889558, 37.809693844457087 ], [ -122.408503958134872, 37.809696281919784 ], [ -122.408544801055655, 37.809601539955445 ], [ -122.408536959377372, 37.809700554958617 ], [ -122.408557795064482, 37.809702964959982 ], [ -122.408598638259278, 37.809608222696959 ], [ -122.408592544731249, 37.809707896412988 ], [ -122.408615128826568, 37.809710964284278 ], [ -122.40865597161357, 37.809616222281704 ], [ -122.408639231230907, 37.809705767179551 ], [ -122.408663757193779, 37.809717044567101 ], [ -122.408704599922103, 37.80962230254778 ], [ -122.408696758454738, 37.809721317561177 ], [ -122.408722821063833, 37.809725016115578 ], [ -122.408763663375069, 37.80963027408157 ], [ -122.408757553102589, 37.809729261082566 ], [ -122.408776676029532, 37.8097323854876 ], [ -122.408817518615137, 37.809637643154893 ], [ -122.408811408067763, 37.809736630164153 ], [ -122.408839165466787, 37.809738927817939 ], [ -122.408880043284086, 37.809645558612985 ], [ -122.408873932819418, 37.809744545625371 ], [ -122.40889130733342, 37.809747011586715 ], [ -122.408932150126873, 37.809652269208989 ], [ -122.408926057042962, 37.809751942941425 ], [ -122.408946892742989, 37.809754352324887 ], [ -122.408987735476614, 37.809659610202615 ], [ -122.408979894728986, 37.80975862522854 ], [ -122.409002478177683, 37.809761693586005 ], [ -122.409043320837327, 37.809666951170023 ], [ -122.40903548016307, 37.809765966199507 ], [ -122.409052855026459, 37.809768431856902 ], [ -122.409093697286551, 37.809673689703786 ], [ -122.409085856332652, 37.809772704742095 ], [ -122.409106709703295, 37.809775800809213 ], [ -122.409147552244775, 37.809681058631973 ], [ -122.409141441787753, 37.809780045663132 ], [ -122.409162295162758, 37.809783141720409 ], [ -122.409203137637348, 37.809688399524063 ], [ -122.409195297173937, 37.809787414563765 ], [ -122.409214402473708, 37.809789852185943 ], [ -122.409255244539409, 37.809695109977277 ], [ -122.409249134570899, 37.809794097008144 ], [ -122.409268257528154, 37.809797221058851 ], [ -122.409309099536273, 37.809702479106257 ], [ -122.40930298963896, 37.809801466139774 ], [ -122.409325573445983, 37.809804533880602 ], [ -122.409366415377917, 37.809709791633715 ], [ -122.409360305556405, 37.809808778670053 ], [ -122.409379410874138, 37.809811216540062 ], [ -122.409420252741057, 37.809716474274637 ], [ -122.409412429873498, 37.809816175771125 ], [ -122.409431535526792, 37.809818613077915 ], [ -122.409472376985178, 37.809723870800191 ], [ -122.409466267649847, 37.80982285783616 ], [ -122.409488851138192, 37.809825926100473 ], [ -122.409529693219639, 37.809731183791826 ], [ -122.409521853187186, 37.809830198852438 ], [ -122.409544436665897, 37.809833266556943 ], [ -122.409585278680453, 37.809738524229203 ], [ -122.409577438721357, 37.809837539293362 ], [ -122.409600022218754, 37.809840607536366 ], [ -122.409640864166391, 37.809745865189505 ], [ -122.409624124935263, 37.809835409950374 ], [ -122.409648668402042, 37.809847373575664 ], [ -122.409694718878129, 37.809753233598798 ], [ -122.409683400550946, 37.809851618269946 ], [ -122.40970946326199, 37.809855316880828 ], [ -122.409750304385923, 37.809760574507528 ], [ -122.409744195418114, 37.809859561557211 ], [ -122.409763300747386, 37.809861998815862 ], [ -122.409800681301817, 37.809767312459051 ], [ -122.409798050568668, 37.809866929913561 ], [ -122.409813677394268, 37.809868737041889 ], [ -122.409859727674416, 37.809774597001002 ], [ -122.409848409562613, 37.809872981687576 ], [ -122.409872741508423, 37.809876708014343 ], [ -122.409896207540612, 37.809779500054304 ], [ -122.409902917913584, 37.809838449581335 ], [ -122.409927956256155, 37.809869633383848 ], [ -122.410058214833967, 37.809886065459693 ], [ -122.40978805552237, 37.809411107578008 ], [ -122.409692176324654, 37.809452490025258 ], [ -122.409753394315103, 37.809476907533615 ], [ -122.409795083288799, 37.80948241299123 ], [ -122.409790439454952, 37.809503776606206 ], [ -122.409767643810284, 37.809492471432705 ], [ -122.409733123723498, 37.809496464009918 ], [ -122.40971032808983, 37.809485158825325 ], [ -122.40967926884106, 37.809489095348837 ], [ -122.409656473217836, 37.809477790153814 ], [ -122.409630622889722, 37.80948232932171 ], [ -122.409609557687361, 37.809470995825244 ], [ -122.409573289526762, 37.809474329935902 ], [ -122.409550493924201, 37.809463024720365 ], [ -122.40952291317636, 37.809467591881273 ], [ -122.409500117230408, 37.809456286387039 ], [ -122.409465597146067, 37.809460278886 ], [ -122.409442784254765, 37.809448287206727 ], [ -122.409413473087668, 37.809452882357093 ], [ -122.409390677508952, 37.809441576836036 ], [ -122.409354409006824, 37.809444910885041 ], [ -122.409331613792688, 37.809433605621535 ], [ -122.409304033042332, 37.809438172731298 ], [ -122.409281237484791, 37.809426867189075 ], [ -122.409251926309096, 37.809431462024762 ], [ -122.40922913042256, 37.809420156752616 ], [ -122.409192844962547, 37.809422804303409 ], [ -122.409170049433754, 37.809411499014253 ], [ -122.409133798935159, 37.809415519427169 ], [ -122.409110985426068, 37.809403527969394 ], [ -122.409076465338302, 37.809407520079958 ], [ -122.409053670177968, 37.809396214762678 ], [ -122.409027819488273, 37.809400753529559 ], [ -122.409005024337446, 37.809389448202872 ], [ -122.408973965091334, 37.809393384540734 ], [ -122.408951169258785, 37.809382079214799 ], [ -122.40891837994225, 37.80938604354025 ], [ -122.408895584120444, 37.809374738203552 ], [ -122.408862794804193, 37.809378702513534 ], [ -122.408839998993102, 37.809367397166127 ], [ -122.408808940093522, 37.809371333454934 ], [ -122.408786144638981, 37.809360028091476 ], [ -122.408756815463747, 37.809363936372364 ], [ -122.4087340203655, 37.80935263099321 ], [ -122.408701230358204, 37.809356595269499 ], [ -122.408678435270645, 37.809345289879595 ], [ -122.408645645263661, 37.809349254140457 ], [ -122.408622850186802, 37.809337948739781 ], [ -122.408591790941983, 37.809341884977052 ], [ -122.408568995183444, 37.809330579577171 ], [ -122.408536205869268, 37.809334543796403 ], [ -122.408513410121444, 37.809323238385751 ], [ -122.408482351223043, 37.809327174588631 ], [ -122.408459555831755, 37.809315869161935 ], [ -122.408426766172141, 37.809319833356362 ], [ -122.408403970791582, 37.809308527918944 ], [ -122.408371181132239, 37.809312492097938 ], [ -122.408350116177374, 37.809301158650754 ], [ -122.408315578458229, 37.809304464375806 ], [ -122.408292783099327, 37.809293158916844 ], [ -122.408263471569185, 37.80929775351261 ], [ -122.408240676566351, 37.80928644803798 ], [ -122.408207886561954, 37.809290412177198 ], [ -122.408185073925949, 37.809278420254287 ], [ -122.408155762741032, 37.809283014817716 ], [ -122.408132967413039, 37.809271709327838 ], [ -122.408100177755486, 37.809275673431507 ], [ -122.408077382438208, 37.809264367930865 ], [ -122.408039154542493, 37.809258805877114 ], [ -122.408058756181504, 37.809145866471148 ], [ -122.408066594168815, 37.809248747837302 ], [ -122.408087429706811, 37.809251157647353 ], [ -122.408126507222988, 37.809155071214583 ], [ -122.408120448716886, 37.809256117235002 ], [ -122.408137823084502, 37.809258583032992 ], [ -122.408178631290198, 37.80916246830698 ], [ -122.408172554871641, 37.809262828172606 ], [ -122.408196869235468, 37.809265868402413 ], [ -122.408235946617765, 37.809169781933626 ], [ -122.408229888259399, 37.809270827959395 ], [ -122.408254202289157, 37.809273868457552 ], [ -122.408293279587355, 37.809177781420765 ], [ -122.408287221320464, 37.809278827998476 ], [ -122.408308056867014, 37.809281237494979 ], [ -122.408347134113498, 37.809185150989656 ], [ -122.408332158807269, 37.809276040458201 ], [ -122.408356702573101, 37.809288004342378 ], [ -122.408397510165557, 37.809191889546774 ], [ -122.408391452032305, 37.809292935854977 ], [ -122.408412287593251, 37.809295345607659 ], [ -122.408453095124827, 37.809199231067545 ], [ -122.408447037059574, 37.809300277103894 ], [ -122.408471350761801, 37.809303317562879 ], [ -122.408512158553279, 37.809207202447709 ], [ -122.408506100235769, 37.809308249041685 ], [ -122.408521727251397, 37.8093100560612 ], [ -122.408560804236558, 37.809213969485583 ], [ -122.408554745970605, 37.809315015532796 ], [ -122.408577329958945, 37.809318083960704 ], [ -122.408618119627377, 37.809221282377308 ], [ -122.40861206179197, 37.80932232869629 ], [ -122.408636375847209, 37.809325368841058 ], [ -122.408677182759092, 37.809229254229557 ], [ -122.408671125342451, 37.80933030027127 ], [ -122.40868850009889, 37.809332766257086 ], [ -122.408727576866028, 37.809236679077507 ], [ -122.408721501183379, 37.80933703897 ], [ -122.408740606697776, 37.80933947666351 ], [ -122.408781413482515, 37.80924336201619 ], [ -122.408775356206561, 37.809344408062977 ], [ -122.40879620945104, 37.809347504459829 ], [ -122.408837016154081, 37.809251389244281 ], [ -122.408830941310313, 37.809351749130926 ], [ -122.408848316070006, 37.809354214818633 ], [ -122.4088891230695, 37.809258100128716 ], [ -122.40888306559286, 37.80935914618636 ], [ -122.408902170426074, 37.809361583864899 ], [ -122.408942977698928, 37.809265468876312 ], [ -122.408936919955934, 37.809366515216752 ], [ -122.408959503968703, 37.809369583296906 ], [ -122.408998562767209, 37.809272810139959 ], [ -122.408992505092215, 37.809373856208545 ], [ -122.409013358354017, 37.809376952566957 ], [ -122.409054147832379, 37.809280150828236 ], [ -122.409048090239509, 37.809381197174098 ], [ -122.409070674261315, 37.809384265232971 ], [ -122.409109750575112, 37.809288178476827 ], [ -122.40910369305017, 37.809389224550813 ], [ -122.409122798597593, 37.809391662456981 ], [ -122.409161857180791, 37.809294888697217 ], [ -122.409155800079347, 37.809395935042737 ], [ -122.409180113834879, 37.809398975080981 ], [ -122.409220920775525, 37.809302860271487 ], [ -122.409214863400692, 37.809403906350916 ], [ -122.409233968955562, 37.809406344239079 ], [ -122.409273045055528, 37.809310256880117 ], [ -122.409266988111227, 37.80941130350562 ], [ -122.40929130186926, 37.809414343246381 ], [ -122.409332108667385, 37.80931822812412 ], [ -122.409326033795196, 37.809418588046228 ], [ -122.409343408940103, 37.809421053929945 ], [ -122.40938421532131, 37.809324938520824 ], [ -122.409378158527119, 37.809425985151776 ], [ -122.40939901180549, 37.809429080892826 ], [ -122.409438070062492, 37.809332307591447 ], [ -122.409432013326835, 37.809433353675857 ], [ -122.409477180743622, 37.809439489653357 ], [ -122.409529287502835, 37.809446200260403 ], [ -122.409588351243272, 37.809454171101315 ], [ -122.40962830977378, 37.809459704635067 ], [ -122.409632794735771, 37.809432163090825 ], [ -122.409672911837845, 37.809443874825128 ], [ -122.409782563727632, 37.809399522210484 ], [ -122.409759009148317, 37.809358700227392 ], [ -122.409646479104083, 37.809089266648215 ], [ -122.409583548723262, 37.809065563811615 ], [ -122.409522825494292, 37.80906036618412 ], [ -122.409518181262428, 37.809081729795679 ], [ -122.409495386134864, 37.809070424563046 ], [ -122.409466075113144, 37.809075019452258 ], [ -122.409443262001091, 37.809063028052371 ], [ -122.409410472498593, 37.80906699224586 ], [ -122.409387677045885, 37.809055686998015 ], [ -122.409356617959673, 37.80905962343688 ], [ -122.409333822524488, 37.809048318453144 ], [ -122.409299302613846, 37.809052310629191 ], [ -122.40927823759111, 37.809040977347202 ], [ -122.409247178159163, 37.809044913762847 ], [ -122.409226113153551, 37.80903358074611 ], [ -122.409193341651701, 37.809038231311064 ], [ -122.409172276649144, 37.80902689801011 ], [ -122.409141217563558, 37.809030834392281 ], [ -122.409118422162948, 37.809019529092303 ], [ -122.409083884609018, 37.809022835042484 ], [ -122.409061089219591, 37.809011529731414 ], [ -122.409026569318456, 37.809015522102243 ], [ -122.409005504354852, 37.809004189046036 ], [ -122.408972714854954, 37.80900815311788 ], [ -122.408949919486972, 37.808996847785302 ], [ -122.408918860402167, 37.809000784108946 ], [ -122.408896065051678, 37.808989479040513 ], [ -122.408865005613961, 37.808993415081005 ], [ -122.408842210612988, 37.80898210972196 ], [ -122.408807673071223, 37.808985415865877 ], [ -122.408784877735343, 37.808974110501353 ], [ -122.408753818298166, 37.808978046512571 ], [ -122.408732753379752, 37.808966713133003 ], [ -122.40870344269787, 37.808971307827179 ], [ -122.408680647389247, 37.80896000271705 ], [ -122.408653066760635, 37.80896456912587 ], [ -122.408630271454712, 37.808953263731418 ], [ -122.408595751557471, 37.808957255976196 ], [ -122.408574686669112, 37.808945922568363 ], [ -122.40853841837243, 37.808949256366759 ], [ -122.4085173534951, 37.808937922948687 ], [ -122.408484564351539, 37.808941887153871 ], [ -122.408461768739215, 37.80893058200698 ], [ -122.408432440401654, 37.808934489921761 ], [ -122.408409645138534, 37.808923184484605 ], [ -122.408375125243424, 37.808927176664845 ], [ -122.408354060404321, 37.808915843492116 ], [ -122.408319522857553, 37.808919148943978 ], [ -122.408296727616332, 37.808907843484988 ], [ -122.408265686178666, 37.808912466074247 ], [ -122.408242890954767, 37.808901160879408 ], [ -122.408208353409876, 37.808904466298728 ], [ -122.408185558190112, 37.808893160818222 ], [ -122.408154499115199, 37.808897097215251 ], [ -122.40813170390588, 37.808885791724293 ], [ -122.40810064447102, 37.808889727563603 ], [ -122.408077849618252, 37.808878422056637 ], [ -122.408048538584595, 37.808883016593732 ], [ -122.408027473807891, 37.80887168336259 ], [ -122.407989475110696, 37.808875044711961 ], [ -122.407968410338185, 37.808863711195677 ], [ -122.40793908201519, 37.808867619537004 ], [ -122.407916286847737, 37.808856314004366 ], [ -122.407867659098386, 37.808850233137854 ], [ -122.407892470076433, 37.808737895932389 ], [ -122.407895080955839, 37.808839488699526 ], [ -122.407919412118858, 37.808843215435566 ], [ -122.407965428881198, 37.808747703240833 ], [ -122.407954143699186, 37.808847460639832 ], [ -122.407971518664866, 37.808849926725884 ], [ -122.408015804954957, 37.808754442230494 ], [ -122.408004537488765, 37.808854886346353 ], [ -122.408030581417677, 37.80885789835331 ], [ -122.408074867989683, 37.808762414104869 ], [ -122.408063600595128, 37.808862857951631 ], [ -122.408080957579173, 37.808864637589593 ], [ -122.408126991783163, 37.808769811495232 ], [ -122.408115706821903, 37.808869569183827 ], [ -122.408134811496907, 37.808872006712299 ], [ -122.408175637137717, 37.80877657841792 ], [ -122.408167830687617, 37.808876966281417 ], [ -122.408188666131636, 37.808879376348344 ], [ -122.408234682562991, 37.808783863774664 ], [ -122.40822341538842, 37.808884307910851 ], [ -122.4082459985258, 37.808887375864508 ], [ -122.408292014895409, 37.808791863543163 ], [ -122.408280730145464, 37.80889162097256 ], [ -122.408299853182712, 37.808894745449784 ], [ -122.408345869480527, 37.808799232832989 ], [ -122.408334584808884, 37.808898990541991 ], [ -122.40835716795533, 37.808902058474338 ], [ -122.408401454133696, 37.808806574104075 ], [ -122.408390187174248, 37.808907017981177 ], [ -122.408412770332475, 37.808910086177463 ], [ -122.408457056451198, 37.808814602061034 ], [ -122.408447501979367, 37.808914331510991 ], [ -122.408464876962967, 37.808916796975197 ], [ -122.408510893069277, 37.808821284568992 ], [ -122.408499626255633, 37.808921728456291 ], [ -122.408520461722972, 37.808924138464597 ], [ -122.408564747351377, 37.808828653764436 ], [ -122.408553480616533, 37.808929097931319 ], [ -122.40857606412726, 37.808932165816167 ], [ -122.408622080100045, 37.808836653366868 ], [ -122.408610795786757, 37.808936410826988 ], [ -122.408633379309109, 37.808939478975418 ], [ -122.408677664815599, 37.808843994782293 ], [ -122.408666398217051, 37.808944438410528 ], [ -122.408683754881451, 37.808946217690789 ], [ -122.408728058314978, 37.808851419636184 ], [ -122.408718504202398, 37.808951149107379 ], [ -122.40873414881105, 37.808953643085459 ], [ -122.40878016458673, 37.808858130300308 ], [ -122.408768880489617, 37.80895788804974 ], [ -122.408788002858174, 37.808961011909815 ], [ -122.408832288517658, 37.808865527378856 ], [ -122.408822734543293, 37.808965256858244 ], [ -122.40884531843632, 37.808968325235043 ], [ -122.408891334078092, 37.80887281240679 ], [ -122.408880067778369, 37.808973256604034 ], [ -122.40889917250513, 37.808975694008623 ], [ -122.408943458030421, 37.808880209436197 ], [ -122.408933921854199, 37.808980625361755 ], [ -122.408953027290934, 37.808983063295585 ], [ -122.408997312398199, 37.808887578434081 ], [ -122.408987758995764, 37.808987308195377 ], [ -122.409008612134684, 37.808990404005712 ], [ -122.409052897181908, 37.808894919398057 ], [ -122.409041631090304, 37.808995363335725 ], [ -122.40906421464841, 37.808998431401648 ], [ -122.409110230041378, 37.808902919037678 ], [ -122.409098946373874, 37.809002676543273 ], [ -122.409121529583416, 37.809005744329234 ], [ -122.409165814840676, 37.808910259673837 ], [ -122.409154548899522, 37.809010703622 ], [ -122.409175384406026, 37.80901311324002 ], [ -122.4092196692594, 37.808917628844746 ], [ -122.409208385736662, 37.80901738636053 ], [ -122.409229238893218, 37.809020482131849 ], [ -122.409273523674656, 37.808924997441885 ], [ -122.4092622402232, 37.809024754962692 ], [ -122.40927961492774, 37.809027220861601 ], [ -122.409325630047334, 37.808931707864964 ], [ -122.409314364326178, 37.80903215210256 ], [ -122.409336947553612, 37.809035219847274 ], [ -122.409381232551411, 37.808939735111537 ], [ -122.409369949242404, 37.809039492642384 ], [ -122.409390802418955, 37.809042588659686 ], [ -122.409422921195898, 37.808945240701227 ], [ -122.409422903348997, 37.809011853140163 ], [ -122.40946679914822, 37.809035864508125 ], [ -122.409564019832658, 37.809046651478369 ], [ -122.409549629214183, 37.809025596054688 ], [ -122.409548887643922, 37.80899676568643 ], [ -122.409387695818651, 37.808719879048233 ], [ -122.409342422574227, 37.808709624416799 ], [ -122.409302270626966, 37.808696540242821 ], [ -122.409262612300481, 37.808769974638814 ], [ -122.409243366033195, 37.808762045524638 ], [ -122.409286290635848, 37.808681004303558 ], [ -122.409251523749987, 37.808675386616557 ], [ -122.409211865384634, 37.808748820995767 ], [ -122.409192619474325, 37.8087408918677 ], [ -122.409232277847408, 37.808667457220274 ], [ -122.409218046276052, 37.808652579691525 ], [ -122.409199082493714, 37.808655633568947 ], [ -122.409183155837965, 37.808642156922303 ], [ -122.409146746495978, 37.80863999940842 ], [ -122.409132550252011, 37.808626494744182 ], [ -122.409097906968512, 37.808625682074002 ], [ -122.409081980690672, 37.808612205682593 ], [ -122.409045571705349, 37.808610047857293 ], [ -122.409029645094293, 37.808596571464371 ], [ -122.40899498416762, 37.808595072051922 ], [ -122.408979057222851, 37.808581595657749 ], [ -122.408939170155094, 37.808578807372939 ], [ -122.408923243223967, 37.808565330971156 ], [ -122.40887636397639, 37.80855990894463 ], [ -122.408862167796897, 37.808546404247657 ], [ -122.40882402846016, 37.808544274635025 ], [ -122.408771338418944, 37.808649509314336 ], [ -122.408752144836185, 37.80864363943796 ], [ -122.408804834900437, 37.808538404767106 ], [ -122.408755995512777, 37.808524087565431 ], [ -122.40870503613472, 37.808629294204955 ], [ -122.408684130157809, 37.808624138753608 ], [ -122.408736802648747, 37.808518217400646 ], [ -122.408686214896832, 37.808503241742777 ], [ -122.408633542337299, 37.808609162798888 ], [ -122.40861434946801, 37.808603292888833 ], [ -122.408665291301503, 37.808497399575863 ], [ -122.408618182709631, 37.808483054307779 ], [ -122.408565527707552, 37.808589661496853 ], [ -122.408546334502589, 37.808583791581334 ], [ -122.408598989528059, 37.808477184400701 ], [ -122.408550150206281, 37.808462866564483 ], [ -122.408494192805264, 37.808575707944065 ], [ -122.408475017602044, 37.808570524448861 ], [ -122.408530957042373, 37.808456996920889 ], [ -122.408475143235307, 37.808440732021886 ], [ -122.408419203721877, 37.80855425952376 ], [ -122.408400010537662, 37.808548389584381 ], [ -122.40845594972285, 37.808434861822526 ], [ -122.408401884334964, 37.808419255320196 ], [ -122.408345944732787, 37.808532783062383 ], [ -122.408326768858856, 37.808527599554232 ], [ -122.408382691187029, 37.808413385377861 ], [ -122.408326877445205, 37.808397120408593 ], [ -122.40827095504342, 37.808511334558837 ], [ -122.408251779872415, 37.808506151027288 ], [ -122.408325818753553, 37.80835593442692 ], [ -122.408307261690325, 37.808307477072752 ], [ -122.408233773949888, 37.808277076846032 ], [ -122.408190831757594, 37.808290132648246 ], [ -122.408103813680896, 37.80847420912815 ], [ -122.408070707145512, 37.808465817066804 ], [ -122.408167524728952, 37.808258920751598 ], [ -122.408046540290897, 37.80819907276836 ], [ -122.408024204007958, 37.808205614634559 ], [ -122.407919104249203, 37.808427066268948 ], [ -122.407885997416685, 37.80841867443587 ], [ -122.407996041444051, 37.808187528721767 ], [ -122.407913795821727, 37.808153149917878 ], [ -122.407807565173499, 37.808397968053718 ], [ -122.407786659324017, 37.808392812443081 ], [ -122.407868398033912, 37.808205388267609 ], [ -122.407660185387385, 37.808254079991599 ], [ -122.407706584592447, 37.808375566178441 ], [ -122.407613672832028, 37.80839767070411 ], [ -122.407507720833991, 37.808114394328115 ], [ -122.407549056121539, 37.808106171825735 ], [ -122.407536061536263, 37.808072046122568 ], [ -122.407462591282297, 37.808042331588446 ], [ -122.40744611868692, 37.808007575403529 ], [ -122.407487420240358, 37.807930680888951 ], [ -122.407431324879042, 37.807903432764398 ], [ -122.407355431147764, 37.80804887173035 ], [ -122.406644940711814, 37.807817946705647 ], [ -122.406816836689401, 37.809994826134172 ], [ -122.406786252768356, 37.810017295716854 ], [ -122.40617819806161, 37.810068327706666 ], [ -122.406151660268563, 37.810046094760864 ], [ -122.406135997898389, 37.810042914277616 ], [ -122.406123656094778, 37.810034186621294 ], [ -122.405904441804637, 37.807159674056429 ], [ -122.405322208784199, 37.806866923600786 ], [ -122.404400300125417, 37.808853394598287 ], [ -122.404390181819835, 37.80886385881621 ], [ -122.404376497046869, 37.808870260285914 ], [ -122.404359263409262, 37.808873285169796 ], [ -122.404316325011152, 37.808819040682266 ], [ -122.403937477028578, 37.80876197892308 ], [ -122.403923457745378, 37.80875533773979 ], [ -122.403912828869224, 37.808745895483341 ], [ -122.403907320429198, 37.80873362312807 ], [ -122.403906985949291, 37.808720580801918 ], [ -122.404717282916977, 37.806971462592401 ], [ -122.403955936424254, 37.806579276399596 ], [ -122.402761932327437, 37.808014567794245 ], [ -122.402746534430648, 37.808021683436984 ], [ -122.402731014070881, 37.808023993997161 ], [ -122.402715370212889, 37.808021499491424 ], [ -122.40235585639897, 37.807840510524542 ], [ -122.402346922703828, 37.807829667068134 ], [ -122.402341415289797, 37.807817394901065 ], [ -122.402339367950134, 37.807805066923208 ], [ -122.402340764477955, 37.807791996673913 ], [ -122.402345656255733, 37.807780243491045 ], [ -122.403421726415289, 37.806471156550586 ], [ -122.402804368682325, 37.806023074735968 ], [ -122.400943288973451, 37.807638041928655 ], [ -122.40092780379058, 37.807641725129315 ], [ -122.400912142497489, 37.807638543945465 ], [ -122.400398744529411, 37.807261566606726 ], [ -122.400572958659495, 37.806120993590262 ], [ -122.401732349384048, 37.805192215433102 ], [ -122.403194419486127, 37.805118563841738 ], [ -122.403587277644846, 37.805412029499024 ], [ -122.404128809815958, 37.80582849738515 ], [ -122.404696069838451, 37.806264743038192 ], [ -122.405495723806581, 37.806640585378162 ], [ -122.405545441190654, 37.806634177056651 ], [ -122.405362337774832, 37.805695301990511 ], [ -122.405357241074242, 37.805695943874476 ], [ -122.405356257037084, 37.805690948342658 ], [ -122.405173536628851, 37.804763212222298 ], [ -122.404986245080067, 37.803832670552438 ], [ -122.404798316633176, 37.802900762043983 ], [ -122.40352117840483, 37.80305477917063 ], [ -122.40315960682554, 37.803098380641011 ], [ -122.402973676735002, 37.802166749844929 ], [ -122.402973611142329, 37.802166419353441 ], [ -122.402883459886269, 37.801713453423041 ], [ -122.402789664410264, 37.801242172237629 ], [ -122.402604124590809, 37.800307129616797 ], [ -122.402603736644934, 37.800305175692849 ], [ -122.402420666593613, 37.799382141273902 ], [ -122.402228639238132, 37.798429701815799 ], [ -122.402040983242472, 37.797504944420098 ], [ -122.401906946643678, 37.796875708196644 ], [ -122.401853390100442, 37.796626165074152 ], [ -122.402402444702886, 37.796554566975963 ], [ -122.40291796673857, 37.796490379340391 ], [ -122.403496709817034, 37.796417485859841 ], [ -122.404412160626791, 37.796302098196776 ], [ -122.405142977212691, 37.796210954635839 ], [ -122.405862652252878, 37.796122174218517 ], [ -122.406224736410849, 37.796077505131322 ], [ -122.406350669109713, 37.796061968858353 ], [ -122.406652352369846, 37.796024750165536 ], [ -122.407083680819795, 37.795970583772274 ], [ -122.407319877605971, 37.795940921047873 ], [ -122.407432089697608, 37.795926828732469 ], [ -122.407563768850565, 37.795910291726024 ], [ -122.40779730388941, 37.795880962818103 ], [ -122.408253202051654, 37.795823706218044 ], [ -122.408704654154022, 37.795766841471867 ], [ -122.408743234497422, 37.795761981540487 ], [ -122.409075520379659, 37.795720125786943 ], [ -122.409077868767497, 37.795719830108119 ], [ -122.409343544204319, 37.795686363949223 ], [ -122.40954722057397, 37.795660707190791 ], [ -122.40989875147848, 37.795616424537307 ], [ -122.411081667103218, 37.795467382264249 ], [ -122.411541226025591, 37.795408552082151 ], [ -122.411541229133036, 37.795408565216896 ], [ -122.411541531721369, 37.795408526524874 ], [ -122.411893657029495, 37.795363458292385 ], [ -122.412335878555311, 37.795306857217497 ], [ -122.413187771447625, 37.795197816725128 ], [ -122.414825631965456, 37.794988155997579 ], [ -122.415005455310151, 37.795877318912275 ], [ -122.415094279286492, 37.796316514471208 ], [ -122.415172033219093, 37.796700969266084 ], [ -122.41519297245145, 37.796804503853558 ], [ -122.415290513107706, 37.797286788953464 ], [ -122.415384105347158, 37.79774954140936 ], [ -122.415384693800732, 37.797752451808172 ], [ -122.415571551794869, 37.798676329254079 ], [ -122.415572319635913, 37.798680127283284 ], [ -122.415667503417794, 37.799150732537029 ], [ -122.41576151132729, 37.799616465113374 ], [ -122.416491256558686, 37.799525268171301 ], [ -122.417385454528372, 37.799413513042644 ], [ -122.417492539304973, 37.799906258247788 ], [ -122.417586974866069, 37.800340791478632 ], [ -122.417798642975782, 37.801267347943607 ], [ -122.41787748762404, 37.801706751150704 ], [ -122.417966229723234, 37.802201308768375 ], [ -122.418151092101994, 37.803135399210959 ], [ -122.418255886912107, 37.803650215613203 ], [ -122.418215611082957, 37.803687299847837 ], [ -122.418280954876565, 37.804023161939504 ], [ -122.418341342522965, 37.804070022432718 ], [ -122.418530631419571, 37.804999043218864 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":8,"ZIP_CODE":94109,"ID":94109},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.413915879652706, 37.790463115032836 ], [ -122.412266187164306, 37.790672783986288 ], [ -122.412154318600955, 37.79012444884593 ], [ -122.412075867445836, 37.789739906579548 ], [ -122.411885657146456, 37.788807543703371 ], [ -122.413541442066688, 37.788598204045492 ], [ -122.415185269301574, 37.788387930678724 ], [ -122.414995423274036, 37.787453843784689 ], [ -122.414806647966373, 37.786519819325378 ], [ -122.414617207572036, 37.785582474657787 ], [ -122.414430198422409, 37.784657140813145 ], [ -122.414241572919337, 37.783723783021379 ], [ -122.415882538254209, 37.783515640872785 ], [ -122.417528773439201, 37.78331088958533 ], [ -122.419181703937824, 37.783101400150407 ], [ -122.420816620257895, 37.78289417046458 ], [ -122.420817002825672, 37.782894121654586 ], [ -122.422463744273344, 37.782685368786026 ], [ -122.422597534917514, 37.782659914421728 ], [ -122.424108200948226, 37.782477051425644 ], [ -122.427396397680198, 37.782056939506091 ], [ -122.427490665181679, 37.782522998381459 ], [ -122.427584325166535, 37.78298604740867 ], [ -122.427778871361184, 37.783924735360486 ], [ -122.427988927379005, 37.784953879052303 ], [ -122.428148186422831, 37.785784488173462 ], [ -122.428241496400901, 37.78624657727314 ], [ -122.428241829261111, 37.786248226022003 ], [ -122.428335613076769, 37.786712655890966 ], [ -122.428525011003728, 37.78765056176524 ], [ -122.428712111452299, 37.788577067507021 ], [ -122.428905308896674, 37.789533740830485 ], [ -122.429092268257477, 37.790459499306614 ], [ -122.429269817037863, 37.791338636935983 ], [ -122.429447192175289, 37.79221689778025 ], [ -122.429625242377327, 37.793098475947545 ], [ -122.429803981887915, 37.793977244761322 ], [ -122.429989276973558, 37.794894937362344 ], [ -122.430182832162615, 37.795853517593606 ], [ -122.428537813517494, 37.796062892623418 ], [ -122.426892728667355, 37.796272251947869 ], [ -122.425249874473522, 37.79648130315109 ], [ -122.423601877370103, 37.796690947281171 ], [ -122.423601876988513, 37.796690945913937 ], [ -122.42360129621845, 37.796691056748735 ], [ -122.423601296960271, 37.796691058659476 ], [ -122.423792964234153, 37.797616581376253 ], [ -122.423793785438747, 37.7976164776058 ], [ -122.423982396975646, 37.798552421556877 ], [ -122.423982145098208, 37.798552453684835 ], [ -122.42417056430692, 37.799484532744323 ], [ -122.42417056511286, 37.799484537126212 ], [ -122.424242907462499, 37.799842398528341 ], [ -122.424358667137113, 37.800415027771606 ], [ -122.424517597070277, 37.801201189595353 ], [ -122.424538324517613, 37.801303719934985 ], [ -122.424731635083759, 37.802281009278651 ], [ -122.424731259133807, 37.802280983275736 ], [ -122.424808684502352, 37.802662664019884 ], [ -122.424918804152185, 37.803205508171892 ], [ -122.425109521046082, 37.804145845932808 ], [ -122.425204919000421, 37.804616199985951 ], [ -122.425298563577385, 37.80507790289635 ], [ -122.425486832357592, 37.806006120121552 ], [ -122.425487611207828, 37.806009959663712 ], [ -122.425531817297653, 37.806150610629167 ], [ -122.425627533230582, 37.806456787332273 ], [ -122.4257796482039, 37.806715259689653 ], [ -122.426066893674061, 37.80699787612533 ], [ -122.426256728575282, 37.807185221316665 ], [ -122.426357658303132, 37.807388412718332 ], [ -122.426488519796493, 37.807651861239542 ], [ -122.426560904719622, 37.807943556174827 ], [ -122.426613230594512, 37.808152010516238 ], [ -122.426749407153778, 37.80832970781308 ], [ -122.426815901093192, 37.808623913624309 ], [ -122.42681099272437, 37.808701593834883 ], [ -122.426830737473963, 37.808795352699491 ], [ -122.426826276753118, 37.808823581609779 ], [ -122.426828951398363, 37.808859934107588 ], [ -122.426829913470996, 37.808897001584555 ], [ -122.426829127336148, 37.808933411171161 ], [ -122.426830071586494, 37.80896979193826 ], [ -122.426848658020631, 37.809018932542891 ], [ -122.426823913850725, 37.809066034426849 ], [ -122.426821397293551, 37.809102471733105 ], [ -122.426817149990782, 37.809138937589218 ], [ -122.426811172632014, 37.809175431983689 ], [ -122.42680517743706, 37.809211239393754 ], [ -122.426799200066583, 37.80924773378711 ], [ -122.426791474798563, 37.809283569459971 ], [ -122.426783766999961, 37.80932009184702 ], [ -122.426764854928408, 37.809391820287793 ], [ -122.426753650652387, 37.809427026340984 ], [ -122.426742463842274, 37.809462919107801 ], [ -122.42673125988388, 37.809498124878161 ], [ -122.426718325162497, 37.809533359195932 ], [ -122.426703641860442, 37.809567935625843 ], [ -122.426690707106644, 37.80960316966555 ], [ -122.426674294047132, 37.809637774073536 ], [ -122.426659593228109, 37.809671663782375 ], [ -122.426641449382515, 37.809706296733168 ], [ -122.426624999956104, 37.809739528275571 ], [ -122.426606838595305, 37.809773474231129 ], [ -122.426586928644923, 37.809806762295736 ], [ -122.426568749097328, 37.809840022090548 ], [ -122.426547090883986, 37.809872652254199 ], [ -122.426527163066623, 37.80990525387346 ], [ -122.426505504455619, 37.809937883485567 ], [ -122.426482098287991, 37.809969855187106 ], [ -122.426435249574482, 37.810032425717694 ], [ -122.426410094762232, 37.810063739239673 ], [ -122.426384921777455, 37.810094366601653 ], [ -122.426359731637717, 37.810124306962969 ], [ -122.426305889769012, 37.810184245028879 ], [ -122.426277202393095, 37.810212869038814 ], [ -122.426248533505472, 37.810242179739554 ], [ -122.426219828627396, 37.810270117569488 ], [ -122.426165541280753, 37.810312894703067 ], [ -122.426148806543424, 37.810335143220563 ], [ -122.426077517869416, 37.810389871747489 ], [ -122.426029956191201, 37.810424984999884 ], [ -122.426004427087875, 37.810441883304833 ], [ -122.425978879818175, 37.810458095175186 ], [ -122.425953351037933, 37.810474993463338 ], [ -122.425902221511379, 37.810506044020848 ], [ -122.425874926298846, 37.810521597684627 ], [ -122.425847613267436, 37.810536464907365 ], [ -122.425792951557781, 37.810564826464294 ], [ -122.425738254193391, 37.810591815126337 ], [ -122.425709157251291, 37.810604651266786 ], [ -122.425621812948378, 37.810641100340696 ], [ -122.425563512153047, 37.810662654222938 ], [ -122.425532631291532, 37.810673458992433 ], [ -122.425501732623886, 37.810683577593657 ], [ -122.425472546238581, 37.810692981507543 ], [ -122.425441630096913, 37.810702413652621 ], [ -122.425410695451745, 37.810711159366136 ], [ -122.425348791232992, 37.810727278162595 ], [ -122.425317821646317, 37.810734650696368 ], [ -122.42528512127241, 37.810742051749649 ], [ -122.425254133532235, 37.81074873811216 ], [ -122.425221397542259, 37.810754766278279 ], [ -122.425190391643511, 37.810760766194903 ], [ -122.425157620386827, 37.810765421468112 ], [ -122.425124866580816, 37.810770763172656 ], [ -122.425093807273001, 37.810774704034145 ], [ -122.425028228777975, 37.810782641379291 ], [ -122.424962578393604, 37.810787833509224 ], [ -122.424931484149809, 37.810790400897922 ], [ -122.424898623523902, 37.810791623930832 ], [ -122.424876305744775, 37.810798855419677 ], [ -122.424848476260408, 37.810793815800935 ], [ -122.424819040922628, 37.810793609459935 ], [ -122.42478787514149, 37.810793431351755 ], [ -122.424758404216234, 37.810791852400563 ], [ -122.42472891548077, 37.810789586458021 ], [ -122.424699408618324, 37.810786634628094 ], [ -122.424640324731897, 37.810777984365998 ], [ -122.424610747039267, 37.810772286768845 ], [ -122.424582881984065, 37.810765873943147 ], [ -122.42455326835632, 37.810758803192932 ], [ -122.424525367734788, 37.810751018033073 ], [ -122.424497431514737, 37.810741859447681 ], [ -122.42447122609704, 37.810732672889145 ], [ -122.424443254308628, 37.810722141695749 ], [ -122.424406843510837, 37.810719989167595 ], [ -122.424404739729965, 37.810705601989262 ], [ -122.424392430564922, 37.810698249126709 ], [ -122.424380086492334, 37.810689522832604 ], [ -122.424367724289866, 37.810680110382542 ], [ -122.424357092185232, 37.810670669703008 ], [ -122.424346425188247, 37.810659856141378 ], [ -122.424337488288586, 37.810649014350894 ], [ -122.424328533252009, 37.810637486130467 ], [ -122.424321309004071, 37.810625929670387 ], [ -122.424315797750651, 37.810613658536091 ], [ -122.424310250566421, 37.810600014537307 ], [ -122.42430472117745, 37.810587056973155 ], [ -122.4243009222361, 37.810574071450297 ], [ -122.424298835580885, 37.810560370715905 ], [ -122.424298497510776, 37.810547328452351 ], [ -122.424299872431348, 37.810533571515215 ], [ -122.424301264798501, 37.810520501018615 ], [ -122.424304387263248, 37.810507402569137 ], [ -122.424309258634793, 37.810494961760924 ], [ -122.424315860102183, 37.810482492999512 ], [ -122.424324191657433, 37.810469996010013 ], [ -122.424332559488974, 37.810458871878474 ], [ -122.42434440529064, 37.810448377725301 ], [ -122.424354539139387, 37.810438598228359 ], [ -122.424368151310617, 37.810429448977779 ], [ -122.424380050823189, 37.810421013845534 ], [ -122.424395446797789, 37.810413895387818 ], [ -122.424410860570717, 37.810407463637567 ], [ -122.424426309569299, 37.810402404211651 ], [ -122.424441794853934, 37.810398717916826 ], [ -122.42445902802703, 37.810395690099803 ], [ -122.424474548198873, 37.810393376407241 ], [ -122.424495313410532, 37.810393037578869 ], [ -122.424512653696851, 37.810394128357849 ], [ -122.424528280984248, 37.810395933262043 ], [ -122.424545674311858, 37.810399083346539 ], [ -122.424561354987802, 37.810402947551076 ], [ -122.424577071263883, 37.810408184897881 ], [ -122.424591092706251, 37.810414823624235 ], [ -122.424605131932822, 37.810422148234672 ], [ -122.424619206768625, 37.810430846262342 ], [ -122.424631551158143, 37.810439571977035 ], [ -122.424642200368709, 37.810449699078426 ], [ -122.424652868070766, 37.810460512602432 ], [ -122.424661822790284, 37.810472040804292 ], [ -122.424669047076236, 37.810483597243831 ], [ -122.424676306964855, 37.810496526827265 ], [ -122.424683904979332, 37.810522498123575 ], [ -122.424685973208497, 37.810535512153116 ], [ -122.424686685078399, 37.810562969547746 ], [ -122.424688754001352, 37.810575983565833 ], [ -122.424694265313605, 37.810588254682798 ], [ -122.424703220408176, 37.810599783150167 ], [ -122.424713852193449, 37.810609223529688 ], [ -122.424727909273159, 37.81061723483468 ], [ -122.424743643057568, 37.81062315859959 ], [ -122.424759306354005, 37.810626336886287 ], [ -122.424774915898695, 37.810627455322866 ], [ -122.424844204676688, 37.810629071443891 ], [ -122.424883986990039, 37.810627735460123 ], [ -122.424942750746894, 37.810624029768022 ], [ -122.424970402172974, 37.810622204741975 ], [ -122.424999748098813, 37.810618978876803 ], [ -122.425029112521329, 37.810616439702436 ], [ -122.42505844098109, 37.810612527107622 ], [ -122.425086039005805, 37.810608643024629 ], [ -122.425115367473737, 37.810604730964819 ], [ -122.425142947684478, 37.810600160159147 ], [ -122.425172240190349, 37.810594874946659 ], [ -122.42519980259955, 37.810589617967473 ], [ -122.425229077987609, 37.810583646294816 ], [ -122.425311658363697, 37.810563756689383 ], [ -122.425339167350202, 37.810556440647844 ], [ -122.425394149679065, 37.810540434852271 ], [ -122.425449096383744, 37.810523056436082 ], [ -122.425474821139559, 37.810513709039498 ], [ -122.42550225886724, 37.810503646946287 ], [ -122.425553673774345, 37.810483579237776 ], [ -122.425579363239436, 37.810472858943186 ], [ -122.425656378173159, 37.810438638721514 ], [ -122.425680301215294, 37.81042657379389 ], [ -122.425705937577163, 37.810413794436336 ], [ -122.425729843135883, 37.81040104278366 ], [ -122.425777618636445, 37.81037416741794 ], [ -122.425799775930017, 37.810360757570926 ], [ -122.425823645502135, 37.810346633309891 ], [ -122.425845767517558, 37.810331850853636 ], [ -122.425869619617202, 37.810317040417416 ], [ -122.425891740915375, 37.81030225768918 ], [ -122.425912114318606, 37.810286817047619 ], [ -122.425934218490383, 37.810271348139892 ], [ -122.42595457407505, 37.810255221330763 ], [ -122.425976660073871, 37.81023906598594 ], [ -122.426033069704985, 37.810211362243855 ], [ -122.426044381296308, 37.810180274872565 ], [ -122.426071409213066, 37.810154424922551 ], [ -122.426098419287058, 37.810127887982347 ], [ -122.426123698921984, 37.810101379570156 ], [ -122.42617422251692, 37.810046989859728 ], [ -122.426197736051108, 37.810019136822319 ], [ -122.426222979645814, 37.809991255524551 ], [ -122.426244745255502, 37.809962744298282 ], [ -122.426268240925296, 37.809934204811682 ], [ -122.426289987997293, 37.809905007153375 ], [ -122.426310004983833, 37.8098758380223 ], [ -122.426331734895541, 37.809845953635381 ], [ -122.426350003264446, 37.809816126056347 ], [ -122.426370002384175, 37.809786270205322 ], [ -122.42640650446053, 37.80972524214534 ], [ -122.426423024539801, 37.809694756383479 ], [ -122.426439527484902, 37.809663584173109 ], [ -122.426456011918219, 37.809631725811407 ], [ -122.426470784413283, 37.809600581586317 ], [ -122.426485538743833, 37.809568751204715 ], [ -122.426498562648177, 37.809536949086315 ], [ -122.426511568735094, 37.809504460806153 ], [ -122.426524592609866, 37.809472658409931 ], [ -122.426535868255684, 37.809440198117713 ], [ -122.426547125731901, 37.809407051395155 ], [ -122.426556671294222, 37.80937461936086 ], [ -122.42657572607385, 37.809308382431155 ], [ -122.426583523043476, 37.809275292231341 ], [ -122.426589589599459, 37.809242230297407 ], [ -122.426597386209863, 37.809209140101942 ], [ -122.426601704881108, 37.809175419993217 ], [ -122.42660775360666, 37.809141671622967 ], [ -122.426612089737361, 37.809108637953877 ], [ -122.42661985311382, 37.809007562446936 ], [ -122.426622425964752, 37.808906571727555 ], [ -122.426632418849564, 37.808824688117525 ], [ -122.426616150524296, 37.80879817156422 ], [ -122.426607002185577, 37.808712480555535 ], [ -122.426596123115345, 37.808626817267942 ], [ -122.42658353220007, 37.808541869217166 ], [ -122.426569192751245, 37.808456262451642 ], [ -122.426553140769713, 37.808371370658513 ], [ -122.426535358440475, 37.808286507127633 ], [ -122.426521448780022, 37.808150762619441 ], [ -122.42648716178519, 37.808163683754294 ], [ -122.426478316482672, 37.808089661844356 ], [ -122.426472145992449, 37.808051992713068 ], [ -122.426465992974997, 37.808015010021762 ], [ -122.42645810959354, 37.807978055869093 ], [ -122.426450244018099, 37.807941787601465 ], [ -122.426431016184523, 37.807867935277343 ], [ -122.426421420613309, 37.807831695540209 ], [ -122.426410094332368, 37.807795484071661 ], [ -122.426383981060937, 37.807723117657737 ], [ -122.426370941909852, 37.807687620888885 ], [ -122.426356154936116, 37.8076514659409 ], [ -122.42634140359948, 37.807616683860772 ], [ -122.426324904443447, 37.807581243600652 ], [ -122.426289370917274, 37.807546114229226 ], [ -122.426116990256872, 37.807640950874436 ], [ -122.426004575599805, 37.807511622087709 ], [ -122.425948221432193, 37.807541385135394 ], [ -122.426072979790121, 37.807679439549148 ], [ -122.426043902201883, 37.807692962208542 ], [ -122.425788908967789, 37.807405954455511 ], [ -122.425811101339534, 37.807393917738004 ], [ -122.425841407866244, 37.807427759425885 ], [ -122.425860156968014, 37.807416465651144 ], [ -122.425910013941177, 37.807469902573231 ], [ -122.425894653990497, 37.807478394108394 ], [ -122.425932202930852, 37.807524478297722 ], [ -122.425969647726248, 37.80749983141159 ], [ -122.425933954139211, 37.807458524016887 ], [ -122.426097611558333, 37.807361083192824 ], [ -122.42613200511353, 37.807352281054179 ], [ -122.426091315966914, 37.80731860900228 ], [ -122.4260559073373, 37.80728828460429 ], [ -122.425981701022749, 37.807230438026032 ], [ -122.425942884837923, 37.807202229419872 ], [ -122.425865288869659, 37.807147185302298 ], [ -122.425824778720127, 37.807120377771732 ], [ -122.425784286059837, 37.807094256667916 ], [ -122.425743811226624, 37.807068821710658 ], [ -122.425659436564132, 37.807019381954113 ], [ -122.425575133216185, 37.806972687328404 ], [ -122.425531269042693, 37.806950055090923 ], [ -122.425487422692115, 37.806928108997688 ], [ -122.425396304969212, 37.806885646130702 ], [ -122.425305258549756, 37.806845928659463 ], [ -122.425259770989555, 37.806827443179728 ], [ -122.425212552741186, 37.806808985385324 ], [ -122.425165353022919, 37.806791214545072 ], [ -122.425118188573762, 37.806774816287508 ], [ -122.425069293788937, 37.80675844598079 ], [ -122.4250204168317, 37.806742762363598 ], [ -122.424973288049415, 37.806727737193157 ], [ -122.42492444672159, 37.806713426132198 ], [ -122.424873892869243, 37.806699830002309 ], [ -122.424802432493848, 37.806681081528858 ], [ -122.424772802670631, 37.806673324118421 ], [ -122.424744921357572, 37.806666225439869 ], [ -122.424689194317793, 37.806653400109965 ], [ -122.424659600807814, 37.806647015805055 ], [ -122.424631755098972, 37.806641289695882 ], [ -122.42460219684277, 37.806636278252959 ], [ -122.42457436893713, 37.806631238565636 ], [ -122.424544828483292, 37.806626913543731 ], [ -122.424517018379291, 37.806622560278207 ], [ -122.424487495380134, 37.806618921682983 ], [ -122.424428486015572, 37.806613017324239 ], [ -122.424398998964037, 37.806610751846591 ], [ -122.42437124224621, 37.806608457578399 ], [ -122.424341772644766, 37.806606878527504 ], [ -122.424282870046667, 37.806605092433877 ], [ -122.424224002349433, 37.806604679467583 ], [ -122.424165170926941, 37.806605639331515 ], [ -122.424135772832813, 37.80660680569077 ], [ -122.424077012229233, 37.806610511532789 ], [ -122.424018287184794, 37.806615589667317 ], [ -122.42398895989578, 37.806619501737501 ], [ -122.423959615506732, 37.806622727353634 ], [ -122.423932018904594, 37.806626611175993 ], [ -122.423873400581527, 37.806635808400436 ], [ -122.423845839538984, 37.806641064799031 ], [ -122.423816565594137, 37.806647036132823 ], [ -122.423789022338056, 37.806652979228197 ], [ -122.423759766870432, 37.806659637246682 ], [ -122.423706445903605, 37.806672867782268 ], [ -122.423653321266002, 37.806693649347707 ], [ -122.423589920527235, 37.806718718849552 ], [ -122.423526538222887, 37.806744474741464 ], [ -122.423399843925978, 37.80679873217619 ], [ -122.423338262626473, 37.806827205494514 ], [ -122.423215171014846, 37.806886897776501 ], [ -122.423155391052063, 37.806918088524029 ], [ -122.423095628820221, 37.806949965676615 ], [ -122.423037614673063, 37.806982501019867 ], [ -122.422979636035322, 37.807016409205524 ], [ -122.422923387701616, 37.807050289149693 ], [ -122.422867174874767, 37.807085541937973 ], [ -122.422807430162962, 37.807118105379153 ], [ -122.422669617719095, 37.80721100017012 ], [ -122.422538512716017, 37.807295544473774 ], [ -122.422410922154015, 37.807382091240839 ], [ -122.422406568873129, 37.807385156047935 ], [ -122.422285114644055, 37.807470669252126 ], [ -122.422159360151895, 37.8075613064347 ], [ -122.422037101638551, 37.807653259953362 ], [ -122.421916608736879, 37.807746558017001 ], [ -122.421799629592272, 37.807841858870269 ], [ -122.42168270310637, 37.807939218918449 ], [ -122.421532057745097, 37.808071464473507 ], [ -122.421789175548739, 37.808374241220797 ], [ -122.421758561641454, 37.808395342089796 ], [ -122.421493253559859, 37.808110553294661 ], [ -122.421324496714121, 37.808278803348081 ], [ -122.421367127445279, 37.808320685807196 ], [ -122.421400626951964, 37.808344175435167 ], [ -122.421417984134223, 37.808345953110788 ], [ -122.421538848573221, 37.808467594219884 ], [ -122.421521846706554, 37.808479545548913 ], [ -122.421585810928775, 37.808543055557919 ], [ -122.421558551068415, 37.808559981099798 ], [ -122.421494604621685, 37.808497157511823 ], [ -122.421482722503114, 37.808506278522707 ], [ -122.42136546133365, 37.808390072182092 ], [ -122.421343808401488, 37.808356088677073 ], [ -122.421300875659668, 37.808302536803509 ], [ -122.421061625998746, 37.808556401980894 ], [ -122.421102646347336, 37.808803641534986 ], [ -122.421495500883367, 37.809133737012722 ], [ -122.421447795704026, 37.809163356667042 ], [ -122.422886026597482, 37.810219448665336 ], [ -122.422843690020329, 37.8102558485987 ], [ -122.42136637775458, 37.809161249445332 ], [ -122.421209585435776, 37.809189899457976 ], [ -122.421035643651535, 37.808957186122555 ], [ -122.420944163231766, 37.808967603286121 ], [ -122.420910323787112, 37.808797159929568 ], [ -122.420858358549751, 37.808795946109164 ], [ -122.420717381312784, 37.80890056409217 ], [ -122.420760227934167, 37.809084595303112 ], [ -122.420694330112809, 37.809080174685604 ], [ -122.420677247269424, 37.809022081268409 ], [ -122.420415813879998, 37.809020844655912 ], [ -122.420359979289643, 37.809003898946663 ], [ -122.420384124514499, 37.808933459866985 ], [ -122.420668674045118, 37.808958355470025 ], [ -122.420635748727079, 37.808756307812423 ], [ -122.420540860637956, 37.808768840609403 ], [ -122.420461300526242, 37.808303163202581 ], [ -122.419223966222532, 37.808453096037454 ], [ -122.419086067910683, 37.807803117635643 ], [ -122.418908043871269, 37.806863030947284 ], [ -122.418856183917853, 37.806607498073362 ], [ -122.418781854642702, 37.806241248585302 ], [ -122.418781807492508, 37.806241018338142 ], [ -122.418718265666911, 37.805931520041717 ], [ -122.418530631419571, 37.804999043218864 ], [ -122.418341342522965, 37.804070022432718 ], [ -122.418280954876565, 37.804023161939504 ], [ -122.418215611082957, 37.803687299847837 ], [ -122.418255886912107, 37.803650215613203 ], [ -122.418151092101994, 37.803135399210959 ], [ -122.417966229723234, 37.802201308768375 ], [ -122.41787748762404, 37.801706751150704 ], [ -122.417798642975782, 37.801267347943607 ], [ -122.417586974866069, 37.800340791478632 ], [ -122.417492539304973, 37.799906258247788 ], [ -122.417385454528372, 37.799413513042644 ], [ -122.416491256558686, 37.799525268171301 ], [ -122.41576151132729, 37.799616465113374 ], [ -122.415667503417794, 37.799150732537029 ], [ -122.415572319635913, 37.798680127283284 ], [ -122.415571551794869, 37.798676329254079 ], [ -122.415384693800732, 37.797752451808172 ], [ -122.415384105347158, 37.79774954140936 ], [ -122.415290513107706, 37.797286788953464 ], [ -122.41519297245145, 37.796804503853558 ], [ -122.415172033219093, 37.796700969266084 ], [ -122.415094279286492, 37.796316514471208 ], [ -122.415005455310151, 37.795877318912275 ], [ -122.414825631965456, 37.794988155997579 ], [ -122.414647632176155, 37.794109807074861 ], [ -122.414470074462415, 37.79322314646798 ], [ -122.414381908270244, 37.792784070108439 ], [ -122.414293264567746, 37.792342610236801 ], [ -122.414107303557273, 37.79141647884336 ], [ -122.413915879652706, 37.790463115032836 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":9,"ZIP_CODE":94111,"ID":94111},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.400058259594957, 37.793693587424592 ], [ -122.400148778887171, 37.794134234665414 ], [ -122.400149325778898, 37.794134165695652 ], [ -122.401314504615144, 37.793987063215781 ], [ -122.402133431503088, 37.793883778773662 ], [ -122.40215951272063, 37.793880489466119 ], [ -122.402957360909014, 37.793779857671261 ], [ -122.40308689535884, 37.793763518993806 ], [ -122.404016114128936, 37.793646309359175 ], [ -122.404370134182003, 37.793598168205968 ], [ -122.404613421373455, 37.793565084338127 ], [ -122.404710582177955, 37.794021380197684 ], [ -122.404796472837063, 37.794453004909116 ], [ -122.404875610619072, 37.794859533373135 ], [ -122.404957208224928, 37.795326691921687 ], [ -122.405142977212691, 37.796210954635839 ], [ -122.404412160626791, 37.796302098196776 ], [ -122.403496709817034, 37.796417485859841 ], [ -122.40291796673857, 37.796490379340391 ], [ -122.402402444702886, 37.796554566975963 ], [ -122.401853390100442, 37.796626165074152 ], [ -122.401906946643678, 37.796875708196644 ], [ -122.402040983242472, 37.797504944420098 ], [ -122.402228639238132, 37.798429701815799 ], [ -122.402420666593613, 37.799382141273902 ], [ -122.402603736644934, 37.800305175692849 ], [ -122.402604124590809, 37.800307129616797 ], [ -122.402789664410264, 37.801242172237629 ], [ -122.402883459886269, 37.801713453423041 ], [ -122.402973611142329, 37.802166419353441 ], [ -122.402973676735002, 37.802166749844929 ], [ -122.40315960682554, 37.803098380641011 ], [ -122.40352117840483, 37.80305477917063 ], [ -122.404798316633176, 37.802900762043983 ], [ -122.404986245080067, 37.803832670552438 ], [ -122.405173536628851, 37.804763212222298 ], [ -122.405356257037084, 37.805690948342658 ], [ -122.405357241074242, 37.805695943874476 ], [ -122.405362337774832, 37.805695301990511 ], [ -122.405545441190654, 37.806634177056651 ], [ -122.405495723806581, 37.806640585378162 ], [ -122.404696069838451, 37.806264743038192 ], [ -122.404128809815958, 37.80582849738515 ], [ -122.403587277644846, 37.805412029499024 ], [ -122.403194419486127, 37.805118563841738 ], [ -122.401732349384048, 37.805192215433102 ], [ -122.400572958659495, 37.806120993590262 ], [ -122.400963593501643, 37.803563391134098 ], [ -122.400842454396695, 37.803429372376385 ], [ -122.400479886428016, 37.803466118528789 ], [ -122.398551197769294, 37.804602806142064 ], [ -122.398535712754665, 37.804606489036345 ], [ -122.398520052204233, 37.804603307533085 ], [ -122.398559631153262, 37.804526444219782 ], [ -122.398227927335071, 37.804281130126874 ], [ -122.398222420518948, 37.804268857764917 ], [ -122.398225564864617, 37.80425644615601 ], [ -122.399971727587683, 37.803225025895152 ], [ -122.399602741790233, 37.802807948916175 ], [ -122.397824683987196, 37.803810348092696 ], [ -122.397809199101829, 37.803814030892141 ], [ -122.397793538749667, 37.803810849291956 ], [ -122.397517150597622, 37.803494597437428 ], [ -122.397511661501127, 37.80348301148031 ], [ -122.3975148062854, 37.803470600157546 ], [ -122.399615259663278, 37.802282404799911 ], [ -122.39972332623249, 37.802176282179168 ], [ -122.399409670069147, 37.801824238674413 ], [ -122.399371692841143, 37.801828283680663 ], [ -122.399347556878283, 37.801832106025373 ], [ -122.399325151849467, 37.801835900487347 ], [ -122.399302764032285, 37.801840381390434 ], [ -122.39928039377223, 37.801845548729034 ], [ -122.399258040722614, 37.801851402508781 ], [ -122.399235705920944, 37.801857942712921 ], [ -122.399215101014406, 37.801864455053376 ], [ -122.399192800984025, 37.8018723684091 ], [ -122.399172231180287, 37.801880253347079 ], [ -122.399151696503523, 37.801889511710215 ], [ -122.397115576147101, 37.803021039584841 ], [ -122.397100091038084, 37.803024722022734 ], [ -122.397084431235825, 37.80302154059693 ], [ -122.396146888856933, 37.801962584949095 ], [ -122.396143112804936, 37.801950284664713 ], [ -122.396146275276891, 37.801938559540567 ], [ -122.396156183429241, 37.801919858733392 ], [ -122.398383194135846, 37.80067265166084 ], [ -122.398279805658603, 37.800555512940733 ], [ -122.397989357773142, 37.800230561089471 ], [ -122.395767421385884, 37.801472872307706 ], [ -122.395751936546873, 37.801476555118818 ], [ -122.395736277114864, 37.801473372963947 ], [ -122.395444597217249, 37.801167663046662 ], [ -122.395439108270097, 37.801156076993678 ], [ -122.395442253641278, 37.801143665440662 ], [ -122.397525741108808, 37.799970200398498 ], [ -122.397542727338319, 37.799957565794791 ], [ -122.397573204312565, 37.79993098020509 ], [ -122.397588407347527, 37.799916314120374 ], [ -122.397601862985724, 37.799900989703779 ], [ -122.397613588764841, 37.799885693121588 ], [ -122.397625296656045, 37.799869710378033 ], [ -122.397635256446222, 37.799853068765884 ], [ -122.397583045956239, 37.799774248814408 ], [ -122.397381692278955, 37.799548810060863 ], [ -122.397362923291766, 37.799559412884541 ], [ -122.397350478314067, 37.799546565387622 ], [ -122.39725607725606, 37.79944232919879 ], [ -122.396973022275191, 37.799609635784066 ], [ -122.396895724416169, 37.799632854304804 ], [ -122.396944532454214, 37.799578505110418 ], [ -122.39725156444139, 37.799401198172731 ], [ -122.397069823583166, 37.79919810547964 ], [ -122.39674205306757, 37.798834607866056 ], [ -122.396702784737215, 37.798855840868825 ], [ -122.396669034992286, 37.798822047566397 ], [ -122.396624664146429, 37.798846796498019 ], [ -122.396609180236553, 37.798850479143326 ], [ -122.396595251158345, 37.798847269554258 ], [ -122.396579311359616, 37.798833104740751 ], [ -122.395709347701867, 37.79933397933474 ], [ -122.395681634538477, 37.799401037179429 ], [ -122.395581007954107, 37.799459652414193 ], [ -122.395491073098484, 37.799462471471649 ], [ -122.39520444855259, 37.799625711063314 ], [ -122.394470973718072, 37.800049529845779 ], [ -122.394485183177821, 37.80006372301127 ], [ -122.394463863656298, 37.80011007561265 ], [ -122.394495883468409, 37.800143897322769 ], [ -122.394436254505337, 37.800181251519263 ], [ -122.394338714865782, 37.800157409688907 ], [ -122.39425176311174, 37.800073652886503 ], [ -122.394244541007424, 37.799994109133792 ], [ -122.39430588261277, 37.79995604107372 ], [ -122.39433954456824, 37.799986402561352 ], [ -122.394405256913004, 37.79998397351315 ], [ -122.394419466347642, 37.799998166686734 ], [ -122.395383240540369, 37.799442229567333 ], [ -122.3954446687179, 37.79940759283992 ], [ -122.395460481077649, 37.799348967284097 ], [ -122.395564480002861, 37.799286864055659 ], [ -122.395650954616428, 37.799284100562168 ], [ -122.396137291028239, 37.799011206820815 ], [ -122.39652596834469, 37.798777651667436 ], [ -122.396513506102295, 37.798764117365188 ], [ -122.396508017858096, 37.798752531345663 ], [ -122.396511162609784, 37.798740120038758 ], [ -122.396521298172757, 37.798730342643047 ], [ -122.396562296308161, 37.798709081605075 ], [ -122.396530276519627, 37.798675260441449 ], [ -122.396574647301449, 37.798650511819105 ], [ -122.396522999163949, 37.798593657491452 ], [ -122.396499841034597, 37.79856793447253 ], [ -122.396467423337157, 37.798586310883579 ], [ -122.396357190239343, 37.798472027219738 ], [ -122.396393032843889, 37.798452222590186 ], [ -122.395860656588496, 37.797870888391557 ], [ -122.395839947322898, 37.79787328122778 ], [ -122.395814065475506, 37.797876444215788 ], [ -122.395788200806479, 37.797880293644518 ], [ -122.395762353661098, 37.797884829508355 ], [ -122.395738254199486, 37.7978900242679 ], [ -122.395712442099452, 37.797895933002444 ], [ -122.395664348290325, 37.797910440317423 ], [ -122.395640318568425, 37.797918380825799 ], [ -122.395616307044421, 37.797927007209815 ], [ -122.39557006603053, 37.797946292034375 ], [ -122.395547836878862, 37.797956950195463 ], [ -122.395525625244971, 37.797968294793179 ], [ -122.395505143760289, 37.797979611576075 ], [ -122.393842000273821, 37.798938215357374 ], [ -122.393826533722603, 37.798942584352829 ], [ -122.39381087421539, 37.798939401951962 ], [ -122.393557994085199, 37.798661220282753 ], [ -122.393552505963697, 37.798649634131031 ], [ -122.393557381363038, 37.798637194571512 ], [ -122.395454327884067, 37.797548480176857 ], [ -122.395493853667872, 37.797469558194479 ], [ -122.395422650268614, 37.797392416327632 ], [ -122.395305000587612, 37.797394307309993 ], [ -122.395131013605095, 37.797494618186263 ], [ -122.394995545751499, 37.797340909474201 ], [ -122.395176347980751, 37.797236368651362 ], [ -122.395203657816268, 37.797153523030403 ], [ -122.395175134630833, 37.797121018758673 ], [ -122.395015962104765, 37.797123576784635 ], [ -122.394842063300572, 37.797227319439131 ], [ -122.394877471902745, 37.797258339703205 ], [ -122.393211663425149, 37.798247880172283 ], [ -122.393197909634068, 37.798251534593128 ], [ -122.393182250998592, 37.798248352371843 ], [ -122.392924377254829, 37.797977803222231 ], [ -122.392918871782612, 37.79796553059834 ], [ -122.392922034593937, 37.797953805551998 ], [ -122.392933760337485, 37.797938509440698 ], [ -122.393022573378389, 37.797891760094423 ], [ -122.393418332763261, 37.797664281733844 ], [ -122.39349443929828, 37.797594387482981 ], [ -122.393614723501102, 37.797492194551531 ], [ -122.39379620770903, 37.797346441866999 ], [ -122.393858891962495, 37.797293244534764 ], [ -122.39453577454303, 37.796890939592352 ], [ -122.394518070397197, 37.796875429409333 ], [ -122.394797677744066, 37.796708870398604 ], [ -122.394681926486655, 37.796581626428896 ], [ -122.394272580881463, 37.796818941592662 ], [ -122.39351702175675, 37.797258217667746 ], [ -122.39355080472113, 37.797293385033349 ], [ -122.39316857384685, 37.797508285701419 ], [ -122.393092042374221, 37.797425733952373 ], [ -122.393468994757654, 37.797207484670842 ], [ -122.393490421626595, 37.797233236341413 ], [ -122.39412658804784, 37.796863176781166 ], [ -122.393932453058198, 37.796648603921177 ], [ -122.393850369991199, 37.796687691964301 ], [ -122.393741908884792, 37.796574751186853 ], [ -122.393880385256736, 37.796507288896663 ], [ -122.393597295890373, 37.796198002709581 ], [ -122.393523863725633, 37.796236951615114 ], [ -122.393397437145097, 37.796098203833878 ], [ -122.393481197043371, 37.796057028727645 ], [ -122.393264277786542, 37.795831146645604 ], [ -122.39319930347132, 37.795862405337601 ], [ -122.393014017140644, 37.7956552428926 ], [ -122.39305487457618, 37.795628491529783 ], [ -122.392997761288825, 37.795560736430133 ], [ -122.392816418294032, 37.795643993697439 ], [ -122.391589731865537, 37.796205501614423 ], [ -122.391196361068637, 37.795779176166889 ], [ -122.39241116638668, 37.794819563891082 ], [ -122.39226709396803, 37.794667363398794 ], [ -122.391941265746169, 37.794853886332461 ], [ -122.391649609982679, 37.794547480215279 ], [ -122.391828732520565, 37.794445031825084 ], [ -122.391802064349278, 37.794417304057546 ], [ -122.391945361729881, 37.794335345459139 ], [ -122.391890260341384, 37.794278544568918 ], [ -122.392507683750154, 37.79377708635252 ], [ -122.39249932896719, 37.793768814133983 ], [ -122.392702063215523, 37.793608792659974 ], [ -122.39270797067924, 37.793614415765255 ], [ -122.394150899798674, 37.794987788593353 ], [ -122.394745701490038, 37.794478274267938 ], [ -122.394745733667804, 37.794478246556643 ], [ -122.394747579547172, 37.794479718347191 ], [ -122.394971722038662, 37.794300351169447 ], [ -122.395317307728533, 37.794023797689903 ], [ -122.39533276386878, 37.794011429145591 ], [ -122.395622922555773, 37.793779228585429 ], [ -122.395983670970253, 37.793501461560965 ], [ -122.396302004290646, 37.793256350429786 ], [ -122.396302004629632, 37.793256350149633 ], [ -122.396376076969489, 37.793198086984006 ], [ -122.396504486670068, 37.793097082520163 ], [ -122.39738344591872, 37.792405521295422 ], [ -122.397840810091907, 37.792047595331439 ], [ -122.39826444614279, 37.791716060417308 ], [ -122.398264448861653, 37.791716058450703 ], [ -122.399148598683425, 37.79101664916432 ], [ -122.39914859901539, 37.791016648609592 ], [ -122.399148705293825, 37.791016743863253 ], [ -122.399148704954868, 37.791016744143391 ], [ -122.399494165511513, 37.791324916192721 ], [ -122.399572029409299, 37.791326533708947 ], [ -122.399763353084495, 37.792257948007119 ], [ -122.399958735737897, 37.793209101900771 ], [ -122.400058259594957, 37.793693587424592 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":10,"ZIP_CODE":94104,"ID":94104},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.400067228055164, 37.790303858609981 ], [ -122.401375490979433, 37.789264321921429 ], [ -122.4018939793784, 37.788856309111516 ], [ -122.402065730098272, 37.788721152097366 ], [ -122.401960433993054, 37.788922171387867 ], [ -122.401997470431979, 37.789102650051042 ], [ -122.402189645264357, 37.790039096806382 ], [ -122.402532679537515, 37.789995540560724 ], [ -122.40273920526738, 37.789969317269424 ], [ -122.403841563913829, 37.789829338872408 ], [ -122.403934377264903, 37.790286026286218 ], [ -122.404030724679231, 37.790760095776051 ], [ -122.404219835191427, 37.791690583910508 ], [ -122.40441842761642, 37.79263865633952 ], [ -122.404613389070732, 37.793564931583006 ], [ -122.404613421373455, 37.793565084338127 ], [ -122.404370134182003, 37.793598168205968 ], [ -122.404016114128936, 37.793646309359175 ], [ -122.40308689535884, 37.793763518993806 ], [ -122.402957360909014, 37.793779857671261 ], [ -122.40215951272063, 37.793880489466119 ], [ -122.402133431503088, 37.793883778773662 ], [ -122.401314504615144, 37.793987063215781 ], [ -122.400149325778898, 37.794134165695652 ], [ -122.400148778887171, 37.794134234665414 ], [ -122.400058259594957, 37.793693587424592 ], [ -122.399958735737897, 37.793209101900771 ], [ -122.399763353084495, 37.792257948007119 ], [ -122.399572029409299, 37.791326533708947 ], [ -122.399494165511513, 37.791324916192721 ], [ -122.399148704954868, 37.791016744143391 ], [ -122.399148705293825, 37.791016743863253 ], [ -122.39914859901539, 37.791016648609592 ], [ -122.399222136170906, 37.790956214990921 ], [ -122.399480001759599, 37.790744297277485 ], [ -122.399919790020746, 37.790414442896498 ], [ -122.400024135710936, 37.790336179680637 ], [ -122.400067228055164, 37.790303858609981 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":11,"ZIP_CODE":94108,"ID":94108},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.404219835191427, 37.791690583910508 ], [ -122.404030724679231, 37.790760095776051 ], [ -122.403934377264903, 37.790286026286218 ], [ -122.403841563913829, 37.789829338872408 ], [ -122.40273920526738, 37.789969317269424 ], [ -122.402532679537515, 37.789995540560724 ], [ -122.402189645264357, 37.790039096806382 ], [ -122.401997470431979, 37.789102650051042 ], [ -122.401960433993054, 37.788922171387867 ], [ -122.402065730098272, 37.788721152097366 ], [ -122.402404665507532, 37.788463925757384 ], [ -122.402903089488873, 37.788085654318181 ], [ -122.40290309900054, 37.788085647297414 ], [ -122.403239953883428, 37.787802352067843 ], [ -122.403430800369534, 37.787641848645734 ], [ -122.403925775648347, 37.787250481113581 ], [ -122.404583316787637, 37.786730565897571 ], [ -122.404583317133643, 37.786730565891986 ], [ -122.404583317818549, 37.786730565606241 ], [ -122.4045836593057, 37.786730668317922 ], [ -122.404583659644615, 37.786730668037741 ], [ -122.404849901045083, 37.78680995410096 ], [ -122.405346079234604, 37.786747618574395 ], [ -122.40639887788349, 37.786615347203238 ], [ -122.408036236552462, 37.786409613336666 ], [ -122.408226725993813, 37.78735926231473 ], [ -122.408401550373739, 37.788293193957799 ], [ -122.408595045382015, 37.789225614946417 ], [ -122.408595692092703, 37.789225606675593 ], [ -122.410242438640608, 37.789016337723744 ], [ -122.411885657146456, 37.788807543703371 ], [ -122.412075867445836, 37.789739906579548 ], [ -122.412154318600955, 37.79012444884593 ], [ -122.412266187164306, 37.790672783986288 ], [ -122.413915879652706, 37.790463115032836 ], [ -122.414107303557273, 37.79141647884336 ], [ -122.414293264567746, 37.792342610236801 ], [ -122.414381908270244, 37.792784070108439 ], [ -122.414470074462415, 37.79322314646798 ], [ -122.414647632176155, 37.794109807074861 ], [ -122.414825631965456, 37.794988155997579 ], [ -122.413187771447625, 37.795197816725128 ], [ -122.412335878555311, 37.795306857217497 ], [ -122.411893657029495, 37.795363458292385 ], [ -122.411541531721369, 37.795408526524874 ], [ -122.411081667103218, 37.795467382264249 ], [ -122.40989875147848, 37.795616424537307 ], [ -122.40954722057397, 37.795660707190791 ], [ -122.409343544204319, 37.795686363949223 ], [ -122.409077868767497, 37.795719830108119 ], [ -122.409075520379659, 37.795720125786943 ], [ -122.408743234497422, 37.795761981540487 ], [ -122.408704654154022, 37.795766841471867 ], [ -122.408253202051654, 37.795823706218044 ], [ -122.40779730388941, 37.795880962818103 ], [ -122.407563768850565, 37.795910291726024 ], [ -122.407432089697608, 37.795926828732469 ], [ -122.407319877605971, 37.795940921047873 ], [ -122.407083680819795, 37.795970583772274 ], [ -122.406652352369846, 37.796024750165536 ], [ -122.406350669109713, 37.796061968858353 ], [ -122.406224736410849, 37.796077505131322 ], [ -122.405862652252878, 37.796122174218517 ], [ -122.405142977212691, 37.796210954635839 ], [ -122.404957208224928, 37.795326691921687 ], [ -122.404875610619072, 37.794859533373135 ], [ -122.404796472837063, 37.794453004909116 ], [ -122.404710582177955, 37.794021380197684 ], [ -122.404613421373455, 37.793565084338127 ], [ -122.404613389070732, 37.793564931583006 ], [ -122.40441842761642, 37.79263865633952 ], [ -122.404219835191427, 37.791690583910508 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":12,"ZIP_CODE":94103,"ID":94103},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.403877699904385, 37.770062866265505 ], [ -122.403615112128733, 37.769893190404822 ], [ -122.403406518421917, 37.769807099957397 ], [ -122.403037758616776, 37.769828657390953 ], [ -122.402926809989424, 37.76864812762463 ], [ -122.401962350744, 37.768706209224241 ], [ -122.401842503677628, 37.76743077711658 ], [ -122.400877239583821, 37.76748837440357 ], [ -122.400680751363893, 37.767503407870436 ], [ -122.4004285874814, 37.76730030349627 ], [ -122.399677637243116, 37.766695444602661 ], [ -122.39980174760619, 37.766587745781216 ], [ -122.399760960198876, 37.766250252443854 ], [ -122.40075504647362, 37.766190486570189 ], [ -122.401720515816834, 37.766132520250999 ], [ -122.401604204317508, 37.764894634517518 ], [ -122.401598999326723, 37.764839236400867 ], [ -122.402563396844656, 37.764781034314389 ], [ -122.403527034519726, 37.764722870371436 ], [ -122.404496977488066, 37.764664317561468 ], [ -122.404841911264157, 37.764643492872132 ], [ -122.405089602982216, 37.764628538373131 ], [ -122.405089603673972, 37.764628538361961 ], [ -122.405463420216606, 37.764605967981389 ], [ -122.406005237363416, 37.764573252226405 ], [ -122.406429152848446, 37.764547653527842 ], [ -122.406429154577822, 37.764547653499882 ], [ -122.406859230067056, 37.764521681123377 ], [ -122.407419737953433, 37.764487829924626 ], [ -122.407534229395537, 37.765783299286987 ], [ -122.408544242939584, 37.765722599679115 ], [ -122.410486689274492, 37.765605838622655 ], [ -122.411455262151748, 37.765547605227276 ], [ -122.412416426589019, 37.765489809283601 ], [ -122.413105243007919, 37.765447608576679 ], [ -122.415308388038014, 37.765314639624691 ], [ -122.416387522888556, 37.765249494040667 ], [ -122.41748659577631, 37.765183134636899 ], [ -122.418579138459435, 37.765117159398407 ], [ -122.418698425401715, 37.765109955145007 ], [ -122.419668972681833, 37.765051337054757 ], [ -122.420482492120144, 37.765002197009743 ], [ -122.420580607922048, 37.764996270018614 ], [ -122.420901270224292, 37.764976898858535 ], [ -122.421239593012103, 37.764956459387825 ], [ -122.421381475659516, 37.764947887797014 ], [ -122.421886445840627, 37.764917378530825 ], [ -122.42285341443899, 37.764858950163855 ], [ -122.423112421134832, 37.764843298770074 ], [ -122.424102683503691, 37.764783452170008 ], [ -122.424574375550648, 37.764754942537614 ], [ -122.426381062356072, 37.764645726997848 ], [ -122.426381062758907, 37.764645729188807 ], [ -122.426381708477521, 37.764645690891633 ], [ -122.426490697526233, 37.765773605772118 ], [ -122.426518991136163, 37.766066400051031 ], [ -122.426538465047457, 37.766267922745747 ], [ -122.426572006355102, 37.766615035704866 ], [ -122.426615944414863, 37.767069730096857 ], [ -122.426693183296933, 37.76786901846797 ], [ -122.426693183304053, 37.767869018742559 ], [ -122.426902347012131, 37.769049368265463 ], [ -122.426309438735913, 37.769602597220121 ], [ -122.424852598682307, 37.770747745074537 ], [ -122.423971653706317, 37.771401668385572 ], [ -122.423707555870649, 37.771638138620823 ], [ -122.42361952356508, 37.771716961429995 ], [ -122.423479344850293, 37.771827141530693 ], [ -122.423258913662679, 37.772000399157754 ], [ -122.422619690282815, 37.772502817311128 ], [ -122.422169936976104, 37.77285593639396 ], [ -122.421941247178026, 37.773036050819961 ], [ -122.421284370393934, 37.77356039048216 ], [ -122.421008229272687, 37.773780811646674 ], [ -122.420910608715644, 37.773852419132908 ], [ -122.420699239041511, 37.774007568561714 ], [ -122.420698854806645, 37.774007872313192 ], [ -122.42069877383058, 37.774007805509001 ], [ -122.420254278900828, 37.774358674888319 ], [ -122.420254205644639, 37.774358732668077 ], [ -122.419544527888206, 37.774918988504218 ], [ -122.419256088091217, 37.775146694295351 ], [ -122.419256086565611, 37.775146688826375 ], [ -122.419255604623004, 37.775147068879761 ], [ -122.419255606501622, 37.775147074617692 ], [ -122.419255600381447, 37.775147078837719 ], [ -122.418683590110874, 37.775586568849455 ], [ -122.417757669457401, 37.776334062520824 ], [ -122.417501462863584, 37.776540893581355 ], [ -122.416757677810395, 37.777126789723972 ], [ -122.416291701725271, 37.777493842582118 ], [ -122.416291701393504, 37.777493843136881 ], [ -122.416024573316548, 37.777713893977598 ], [ -122.415925978170975, 37.777795112873314 ], [ -122.414741221622947, 37.778719429321896 ], [ -122.412512255967954, 37.78047851222005 ], [ -122.412243715889375, 37.780689421480552 ], [ -122.411972359306191, 37.780902540886757 ], [ -122.411972358960256, 37.78090254089237 ], [ -122.411625130786987, 37.781189627190479 ], [ -122.410716598656492, 37.781899054565059 ], [ -122.410292026384454, 37.782230575136197 ], [ -122.40895215871069, 37.783287852576514 ], [ -122.408597310055299, 37.783569788681966 ], [ -122.408066548174432, 37.783991486066526 ], [ -122.408066547510714, 37.783991487176031 ], [ -122.407625723544982, 37.784337071806426 ], [ -122.406821367207598, 37.78496763543707 ], [ -122.405831011063668, 37.78574398921409 ], [ -122.405371564397683, 37.786107287119592 ], [ -122.404583317818549, 37.786730565606241 ], [ -122.404583317133643, 37.786730565891986 ], [ -122.404583316787637, 37.786730565897571 ], [ -122.403925775648347, 37.787250481113581 ], [ -122.403430800369534, 37.787641848645734 ], [ -122.403342641535644, 37.787274627660381 ], [ -122.403028734856406, 37.78702485040828 ], [ -122.403028193190352, 37.787024418822838 ], [ -122.402575227394536, 37.786678208153539 ], [ -122.402025419766176, 37.786248152290575 ], [ -122.401489835489045, 37.785829214187501 ], [ -122.401480059865179, 37.785821567351917 ], [ -122.400998469557948, 37.785444857061968 ], [ -122.400994549885382, 37.785441790992316 ], [ -122.400468483886854, 37.785030285141588 ], [ -122.399369533643153, 37.785899247741973 ], [ -122.397811613142864, 37.784666586003652 ], [ -122.398930331092998, 37.783784933304034 ], [ -122.399891477967842, 37.783025880124256 ], [ -122.400019020063766, 37.782925153640136 ], [ -122.400374366843309, 37.782644515545172 ], [ -122.401159718585049, 37.782024266952142 ], [ -122.403387209275081, 37.78026497235011 ], [ -122.404431250807633, 37.779440334605447 ], [ -122.405615266425855, 37.778505104539292 ], [ -122.405068508898097, 37.778068981419388 ], [ -122.404605505853894, 37.777699659794813 ], [ -122.404070256642925, 37.777272702482797 ], [ -122.403673439982725, 37.776956165214415 ], [ -122.403505778866929, 37.776822422431877 ], [ -122.40337073826143, 37.776714700215486 ], [ -122.402524096584528, 37.776039321403807 ], [ -122.400981567656032, 37.774808775969753 ], [ -122.400592319049849, 37.774498244536282 ], [ -122.400212340771517, 37.774195105423317 ], [ -122.400212340411557, 37.77419510487973 ], [ -122.399433130909728, 37.773573455617395 ], [ -122.401656680421155, 37.7718171255028 ], [ -122.403877699904385, 37.770062866265505 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":13,"ZIP_CODE":94115,"ID":94115},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.447679208068394, 37.79170289872647 ], [ -122.44720637942703, 37.791763091830468 ], [ -122.446299547924625, 37.791878529215651 ], [ -122.446299573716246, 37.791878694429421 ], [ -122.446446033268856, 37.792810866507708 ], [ -122.446446456540414, 37.792813716046261 ], [ -122.446587034424141, 37.793765298555968 ], [ -122.445035345747925, 37.79396273368863 ], [ -122.443384198876302, 37.794172877898092 ], [ -122.441712771485612, 37.794385578392699 ], [ -122.440870170501768, 37.794492795601883 ], [ -122.440868123190498, 37.794493055920753 ], [ -122.440045216960385, 37.794597761146619 ], [ -122.438402484723895, 37.794806973138577 ], [ -122.436760975027326, 37.795016021968365 ], [ -122.435113289920963, 37.795225833115033 ], [ -122.433469062960725, 37.795435179810816 ], [ -122.431827832563371, 37.79564412085616 ], [ -122.430182832162615, 37.795853517593606 ], [ -122.429989276973558, 37.794894937362344 ], [ -122.429803981887915, 37.793977244761322 ], [ -122.429625242377327, 37.793098475947545 ], [ -122.429447192175289, 37.79221689778025 ], [ -122.429269817037863, 37.791338636935983 ], [ -122.429092268257477, 37.790459499306614 ], [ -122.428905308896674, 37.789533740830485 ], [ -122.428712111452299, 37.788577067507021 ], [ -122.428525011003728, 37.78765056176524 ], [ -122.428335613076769, 37.786712655890966 ], [ -122.428241829261111, 37.786248226022003 ], [ -122.428241496400901, 37.78624657727314 ], [ -122.428148186422831, 37.785784488173462 ], [ -122.427988927379005, 37.784953879052303 ], [ -122.427778871361184, 37.783924735360486 ], [ -122.427584325166535, 37.78298604740867 ], [ -122.427490665181679, 37.782522998381459 ], [ -122.427396397680198, 37.782056939506091 ], [ -122.42720275579525, 37.781117127328834 ], [ -122.427016756808811, 37.780193030481158 ], [ -122.42868554474839, 37.779980201690215 ], [ -122.430233236584385, 37.779782794230314 ], [ -122.431951802315041, 37.779564148987781 ], [ -122.433595938040227, 37.779354585436536 ], [ -122.435241012398947, 37.779144878458894 ], [ -122.436884629197735, 37.778937753600381 ], [ -122.437707163233824, 37.778832380147421 ], [ -122.43855227772093, 37.778724107938281 ], [ -122.440213334218711, 37.778511463388014 ], [ -122.441865640580161, 37.778299553615973 ], [ -122.441865640558632, 37.778299552792262 ], [ -122.441865967212379, 37.778299511152262 ], [ -122.441865967226732, 37.778299511701405 ], [ -122.443506919728407, 37.778089213415292 ], [ -122.445155752336433, 37.777886506805444 ], [ -122.446846469920573, 37.777669108909684 ], [ -122.447039806751391, 37.778622307248391 ], [ -122.447351927163439, 37.780152061280916 ], [ -122.447517982733274, 37.781069510753063 ], [ -122.447576361567485, 37.781175778551805 ], [ -122.447655108274333, 37.781537309189886 ], [ -122.447637300982407, 37.781719177617617 ], [ -122.447450898997985, 37.782195217632704 ], [ -122.447301513844337, 37.78239164221629 ], [ -122.447283893261542, 37.782434393634787 ], [ -122.447225622636566, 37.782575775503396 ], [ -122.447173033991248, 37.782710075581413 ], [ -122.447149436147441, 37.783030677550911 ], [ -122.447549635601661, 37.784906798974511 ], [ -122.447578549915917, 37.784998355250835 ], [ -122.447620107068687, 37.785083635258417 ], [ -122.447621599012791, 37.785194684567394 ], [ -122.447605133356163, 37.785275579171099 ], [ -122.447533801639068, 37.785411415165207 ], [ -122.446849274413296, 37.786186897081585 ], [ -122.446738337622591, 37.786243163870765 ], [ -122.446610465639836, 37.786302298311156 ], [ -122.446792779960703, 37.787261853518181 ], [ -122.4469741664482, 37.788186460801001 ], [ -122.448656220796209, 37.787977164570449 ], [ -122.448835781299294, 37.788856511426609 ], [ -122.449011564525605, 37.789726786022129 ], [ -122.449189583391288, 37.790608108274284 ], [ -122.449367313308201, 37.791487980191171 ], [ -122.447679208068394, 37.79170289872647 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":14,"ZIP_CODE":94102,"ID":94102},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.419255600381447, 37.775147078837719 ], [ -122.419255606501622, 37.775147074617692 ], [ -122.419255604623004, 37.775147068879761 ], [ -122.419256086565611, 37.775146688826375 ], [ -122.419256088091217, 37.775146694295351 ], [ -122.419544527888206, 37.774918988504218 ], [ -122.420254205644639, 37.774358732668077 ], [ -122.420254278900828, 37.774358674888319 ], [ -122.42069877383058, 37.774007805509001 ], [ -122.420698854806645, 37.774007872313192 ], [ -122.420699239041511, 37.774007568561714 ], [ -122.420910608715644, 37.773852419132908 ], [ -122.421008229272687, 37.773780811646674 ], [ -122.421284370393934, 37.77356039048216 ], [ -122.421941247178026, 37.773036050819961 ], [ -122.422169936976104, 37.77285593639396 ], [ -122.422619690282815, 37.772502817311128 ], [ -122.423258913662679, 37.772000399157754 ], [ -122.423479344850293, 37.771827141530693 ], [ -122.42361952356508, 37.771716961429995 ], [ -122.423707555870649, 37.771638138620823 ], [ -122.423971653706317, 37.771401668385572 ], [ -122.424852598682307, 37.770747745074537 ], [ -122.426309438735913, 37.769602597220121 ], [ -122.426683978032827, 37.769533626427062 ], [ -122.428218351470321, 37.769440923680406 ], [ -122.428428952948465, 37.770451409238284 ], [ -122.428426180541749, 37.770451760600665 ], [ -122.428520173517541, 37.770917853912216 ], [ -122.428614043687816, 37.771383330257258 ], [ -122.428708105393241, 37.771849753810166 ], [ -122.428802101899663, 37.772315846507482 ], [ -122.428990051967787, 37.773247800757233 ], [ -122.42917834319843, 37.774181422747475 ], [ -122.429178342852524, 37.774181422753124 ], [ -122.429178383795261, 37.774181626728783 ], [ -122.429178384487102, 37.774181626717471 ], [ -122.429272630354163, 37.774648924607646 ], [ -122.429365859793393, 37.775111180032617 ], [ -122.42955405641294, 37.77604428584678 ], [ -122.429622603726443, 37.776331628240193 ], [ -122.429626330769736, 37.776513151917612 ], [ -122.429686883301301, 37.776976022351889 ], [ -122.429849199803343, 37.777919295570904 ], [ -122.430047265291023, 37.778850928515844 ], [ -122.430233236584385, 37.779782794230314 ], [ -122.42868554474839, 37.779980201690215 ], [ -122.427016756808811, 37.780193030481158 ], [ -122.42720275579525, 37.781117127328834 ], [ -122.427396397680198, 37.782056939506091 ], [ -122.424108200948226, 37.782477051425644 ], [ -122.422597534917514, 37.782659914421728 ], [ -122.422463744273344, 37.782685368786026 ], [ -122.420817002825672, 37.782894121654586 ], [ -122.420816620257895, 37.78289417046458 ], [ -122.419181703937824, 37.783101400150407 ], [ -122.417528773439201, 37.78331088958533 ], [ -122.415882538254209, 37.783515640872785 ], [ -122.414241572919337, 37.783723783021379 ], [ -122.414430198422409, 37.784657140813145 ], [ -122.414617207572036, 37.785582474657787 ], [ -122.414806647966373, 37.786519819325378 ], [ -122.414995423274036, 37.787453843784689 ], [ -122.414995029297003, 37.787453894134082 ], [ -122.415185269301574, 37.788387930678724 ], [ -122.413541442066688, 37.788598204045492 ], [ -122.411885657146456, 37.788807543703371 ], [ -122.410242438640608, 37.789016337723744 ], [ -122.408595692092703, 37.789225606675593 ], [ -122.408595045382015, 37.789225614946417 ], [ -122.408401550373739, 37.788293193957799 ], [ -122.408226725993813, 37.78735926231473 ], [ -122.408036236552462, 37.786409613336666 ], [ -122.40639887788349, 37.786615347203238 ], [ -122.405346079234604, 37.786747618574395 ], [ -122.404849901045083, 37.78680995410096 ], [ -122.404583659644615, 37.786730668037741 ], [ -122.4045836593057, 37.786730668317922 ], [ -122.404583317818549, 37.786730565606241 ], [ -122.405371564397683, 37.786107287119592 ], [ -122.405831011063668, 37.78574398921409 ], [ -122.406821367207598, 37.78496763543707 ], [ -122.407625723544982, 37.784337071806426 ], [ -122.408066547510714, 37.783991487176031 ], [ -122.408066548174432, 37.783991486066526 ], [ -122.408597310055299, 37.783569788681966 ], [ -122.40895215871069, 37.783287852576514 ], [ -122.410292026384454, 37.782230575136197 ], [ -122.410716598656492, 37.781899054565059 ], [ -122.411625130786987, 37.781189627190479 ], [ -122.411972358960256, 37.78090254089237 ], [ -122.411972359306191, 37.780902540886757 ], [ -122.412243715889375, 37.780689421480552 ], [ -122.412512255967954, 37.78047851222005 ], [ -122.413308361492682, 37.779850246537862 ], [ -122.414741221622947, 37.778719429321896 ], [ -122.415925978170975, 37.777795112873314 ], [ -122.416024573316548, 37.777713893977598 ], [ -122.416291701393504, 37.777493843136881 ], [ -122.416291701725271, 37.777493842582118 ], [ -122.416757677810395, 37.777126789723972 ], [ -122.417501462863584, 37.776540893581355 ], [ -122.417757669457401, 37.776334062520824 ], [ -122.418683590110874, 37.775586568849455 ], [ -122.419255600381447, 37.775147078837719 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":15,"ZIP_CODE":94124,"ID":94124},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.398991043085772, 37.715338797679301 ], [ -122.398953101659146, 37.715385829745912 ], [ -122.398839335741798, 37.715526852955328 ], [ -122.398735527529269, 37.715727131371494 ], [ -122.398656056102226, 37.71588045500463 ], [ -122.398643015232707, 37.715917722950913 ], [ -122.398565370170317, 37.716139616445538 ], [ -122.398550700112352, 37.7161815389411 ], [ -122.398499278161879, 37.716543657492224 ], [ -122.398561414050022, 37.716897923924947 ], [ -122.398668885707423, 37.717503589023465 ], [ -122.398686680058731, 37.717603871431201 ], [ -122.39871606167118, 37.717769450850419 ], [ -122.398759937061044, 37.718047446028777 ], [ -122.398787867001658, 37.718224410399863 ], [ -122.398799134608808, 37.718275024173522 ], [ -122.398913161799925, 37.718792447247658 ], [ -122.398923285260594, 37.718836507697276 ], [ -122.398942440206895, 37.718921151552976 ], [ -122.398943601880902, 37.718926286066001 ], [ -122.399066465573654, 37.719469200866385 ], [ -122.399125486878972, 37.719730004239857 ], [ -122.399208340593788, 37.719991530079234 ], [ -122.399309038031902, 37.720278334103305 ], [ -122.399419264352986, 37.720532021245042 ], [ -122.399600300155441, 37.720920363637823 ], [ -122.399830553211288, 37.721427080386505 ], [ -122.399925016822507, 37.721517272170509 ], [ -122.40038213245046, 37.722633285332655 ], [ -122.400661931084002, 37.723316373994798 ], [ -122.400784747286778, 37.723616209251418 ], [ -122.40078474798517, 37.723616209514844 ], [ -122.401182917574161, 37.724588254281116 ], [ -122.401471218295981, 37.725516183407578 ], [ -122.401474642450822, 37.725528485745301 ], [ -122.401822425920514, 37.726775260854211 ], [ -122.401875118236148, 37.726964759399728 ], [ -122.402039596395539, 37.727554690472438 ], [ -122.402105120777605, 37.727789703519925 ], [ -122.402209197740476, 37.728101973566574 ], [ -122.402752244737584, 37.729357163240891 ], [ -122.403021622188092, 37.729901901370539 ], [ -122.403400462440644, 37.730658352585962 ], [ -122.403961731325225, 37.731610333558521 ], [ -122.40405482060109, 37.731789516245591 ], [ -122.40465709692171, 37.732948781873532 ], [ -122.404657097641305, 37.732948782960683 ], [ -122.404878800551302, 37.733336356125804 ], [ -122.405096042524178, 37.733716127227488 ], [ -122.405494571184249, 37.734287050530888 ], [ -122.406294659725731, 37.735306888886043 ], [ -122.406454646881144, 37.735510813404687 ], [ -122.406618861734884, 37.735896873766244 ], [ -122.40670383539134, 37.73630860402433 ], [ -122.406910504104971, 37.737965866913434 ], [ -122.406900092501772, 37.738009155282221 ], [ -122.406867742024218, 37.738143654094841 ], [ -122.406895428755547, 37.738323651840822 ], [ -122.406915744052654, 37.738455725148341 ], [ -122.40693392611557, 37.738601770051126 ], [ -122.406945393527934, 37.738693880058896 ], [ -122.406939830707117, 37.738876165961258 ], [ -122.406936851773693, 37.739087891690275 ], [ -122.406930338448149, 37.739188255204461 ], [ -122.40692734433064, 37.739234393770168 ], [ -122.406923419099328, 37.739294876190314 ], [ -122.406917382338506, 37.739360326809205 ], [ -122.40691098434678, 37.739429695993088 ], [ -122.406910847801768, 37.73943120901172 ], [ -122.406977761294414, 37.739566302699039 ], [ -122.406889400847547, 37.739668564915668 ], [ -122.407641980575562, 37.73960607595005 ], [ -122.407891817991583, 37.739621065115479 ], [ -122.407910235902733, 37.739622169745928 ], [ -122.408137030577961, 37.739635775942595 ], [ -122.408114071971212, 37.739818086787388 ], [ -122.408049229318891, 37.740339110042903 ], [ -122.407964646391505, 37.740662552272049 ], [ -122.407846654253319, 37.741024367104636 ], [ -122.407757062965644, 37.741253133394146 ], [ -122.407625696256517, 37.741528038897464 ], [ -122.407448073794797, 37.741860521932459 ], [ -122.407209491524853, 37.742235666028684 ], [ -122.407179681106143, 37.742274728523746 ], [ -122.406881612449212, 37.742665295031905 ], [ -122.406149889909912, 37.743534947555823 ], [ -122.406047831839984, 37.743656241756561 ], [ -122.405778655290121, 37.743989539741165 ], [ -122.405747110957691, 37.744028598841339 ], [ -122.405475695814175, 37.744427001636382 ], [ -122.405444172050537, 37.744486004341084 ], [ -122.405202201087945, 37.744938889063008 ], [ -122.405179630488661, 37.744981134097749 ], [ -122.405051159825348, 37.745369647465395 ], [ -122.40491012189095, 37.745826558312224 ], [ -122.40472494664624, 37.746505061967419 ], [ -122.404496510435962, 37.747208430674682 ], [ -122.404390053649081, 37.747536214374357 ], [ -122.404249303912664, 37.747969580021021 ], [ -122.404105247604519, 37.748421906188959 ], [ -122.404104297626958, 37.748424888760844 ], [ -122.404103617259366, 37.748427025595028 ], [ -122.404051662308461, 37.74859015799958 ], [ -122.403990987296382, 37.74878066971192 ], [ -122.403865672790147, 37.749174139069758 ], [ -122.403826366530197, 37.749298003881435 ], [ -122.403783562755194, 37.749432891426196 ], [ -122.403667613571599, 37.749458113882532 ], [ -122.403568849778438, 37.749475672986911 ], [ -122.403260968692152, 37.749530409553117 ], [ -122.403203674195439, 37.749534260068266 ], [ -122.402968925612569, 37.749550036933734 ], [ -122.402866309087059, 37.749478458911533 ], [ -122.402866303074774, 37.749478453789486 ], [ -122.402746245055127, 37.749375020002113 ], [ -122.402215286387033, 37.749358244852793 ], [ -122.402063015501824, 37.749396333205695 ], [ -122.40206163398004, 37.749396678541473 ], [ -122.397285415820363, 37.749684622841229 ], [ -122.396273544250747, 37.74974560058007 ], [ -122.395307862010839, 37.749803786070743 ], [ -122.395231400136637, 37.749808114846253 ], [ -122.393340265733656, 37.749915158351328 ], [ -122.393322792145199, 37.749917097944952 ], [ -122.393314555211816, 37.749918012051069 ], [ -122.392381992909165, 37.750021506018193 ], [ -122.392354048972692, 37.750025545503377 ], [ -122.392350740047519, 37.750026024134087 ], [ -122.391929934247997, 37.750086859865874 ], [ -122.391714686151033, 37.750109474739723 ], [ -122.391705979739527, 37.750110389401705 ], [ -122.391693805117924, 37.750111668488358 ], [ -122.391418367221192, 37.750140606282606 ], [ -122.390433038183829, 37.750118341633915 ], [ -122.389478017653872, 37.750145107673561 ], [ -122.388507729357968, 37.750205975353602 ], [ -122.387585270262662, 37.750263378063039 ], [ -122.387633974640565, 37.751559603455405 ], [ -122.387756280477618, 37.752835611637821 ], [ -122.386811646507837, 37.752890377320497 ], [ -122.385845701796796, 37.752946370817803 ], [ -122.38487975596891, 37.753002356118301 ], [ -122.383913808692512, 37.753058333776714 ], [ -122.383438933023925, 37.753085850281579 ], [ -122.382951309683904, 37.753114103639163 ], [ -122.382560989570067, 37.75313671714089 ], [ -122.382560765120331, 37.753136419940226 ], [ -122.381985040410456, 37.753169774197133 ], [ -122.381708677132991, 37.753185861496782 ], [ -122.38168223616799, 37.75316636834409 ], [ -122.381661069503124, 37.753150224878624 ], [ -122.381641614233217, 37.753133367358956 ], [ -122.381622142285593, 37.753115823651214 ], [ -122.381604399103537, 37.753098251789652 ], [ -122.381556374012021, 37.753046140647704 ], [ -122.381542176020147, 37.753031946080576 ], [ -122.381526284033754, 37.753019152008761 ], [ -122.381510409098041, 37.753007044663264 ], [ -122.381492804694034, 37.752994964377287 ], [ -122.381475235761897, 37.75298425724899 ], [ -122.381436673423011, 37.752964271381444 ], [ -122.381417427536135, 37.752955650919624 ], [ -122.381375546404385, 37.752941211547565 ], [ -122.381354640609899, 37.75293536475278 ], [ -122.381333752201158, 37.75293020440273 ], [ -122.381311151719544, 37.752925758105562 ], [ -122.381288586703278, 37.752922684964496 ], [ -122.381266038711004, 37.75292029772389 ], [ -122.381243508115659, 37.752918597476601 ], [ -122.381221011931387, 37.752918269852813 ], [ -122.381184718304496, 37.752919535917627 ], [ -122.381162274601664, 37.752921267347901 ], [ -122.381139865666057, 37.752924371945412 ], [ -122.381117473763211, 37.752928162992639 ], [ -122.381095099929965, 37.752932640473013 ], [ -122.381072743135178, 37.752937804677757 ], [ -122.381050368943576, 37.752942281880571 ], [ -122.381027977030755, 37.752946072910795 ], [ -122.38100556843483, 37.752949177751802 ], [ -122.38098141298515, 37.752951623194257 ], [ -122.380958968929022, 37.752953354865902 ], [ -122.380936508184703, 37.752954400073762 ], [ -122.380889821786923, 37.752955145192665 ], [ -122.380865579793621, 37.752954158637948 ], [ -122.380843066568161, 37.752953144488032 ], [ -122.380797970609038, 37.752948370381233 ], [ -122.380773676141516, 37.752945324467625 ], [ -122.380728475930468, 37.752936431643164 ], [ -122.380707587564899, 37.752931271182163 ], [ -122.380684952713352, 37.752925451862353 ], [ -122.380667539609021, 37.752920922661339 ], [ -122.380641464261203, 37.752915844962516 ], [ -122.380615405953847, 37.752911453986556 ], [ -122.380589365011275, 37.752907748904235 ], [ -122.38056161234158, 37.752904758130924 ], [ -122.38053562319034, 37.752903112662466 ], [ -122.380507905274172, 37.752901494773603 ], [ -122.380480204733729, 37.752900563326783 ], [ -122.380433519056851, 37.752901308253911 ], [ -122.380238268028847, 37.752909917328637 ], [ -122.380029271599042, 37.752922178983432 ], [ -122.379994654613483, 37.752921358032168 ], [ -122.379959933403185, 37.752916418104356 ], [ -122.379944267166053, 37.752912547382195 ], [ -122.379912864887501, 37.752902060691724 ], [ -122.379897129538875, 37.752895444712365 ], [ -122.379883105576184, 37.752888114156903 ], [ -122.37987077565819, 37.752879383675683 ], [ -122.379861869913029, 37.752869224847544 ], [ -122.379854658198184, 37.752857665545626 ], [ -122.379850887331656, 37.752845364357682 ], [ -122.379850574694558, 37.752833008281776 ], [ -122.379853720278177, 37.752820597043424 ], [ -122.37985861234651, 37.752808844946877 ], [ -122.379865250884947, 37.752797751442777 ], [ -122.379882315832674, 37.752788551525661 ], [ -122.379911450501524, 37.752777785898218 ], [ -122.379938873076583, 37.752767734300228 ], [ -122.379980076404905, 37.752755402685878 ], [ -122.379993770314556, 37.752749690431031 ], [ -122.380005682657426, 37.752741946417643 ], [ -122.380015797100285, 37.752731484181091 ], [ -122.380022435608339, 37.752720390667974 ], [ -122.380025580812656, 37.752707979430312 ], [ -122.380025233406471, 37.752694250457282 ], [ -122.380007137303139, 37.752457618747144 ], [ -122.379959987158614, 37.752029854003567 ], [ -122.379883834201038, 37.752034160974858 ], [ -122.376087329752295, 37.752248827801239 ], [ -122.375771286398191, 37.74870623521705 ], [ -122.382681120134976, 37.748282212078522 ], [ -122.384914143794745, 37.748144880283171 ], [ -122.384920340493579, 37.748184611607194 ], [ -122.384650947212847, 37.748201967818915 ], [ -122.384670831989453, 37.748303972394424 ], [ -122.384688156495528, 37.748305068501672 ], [ -122.384721007906435, 37.748304543099884 ], [ -122.384738280527714, 37.748303580123398 ], [ -122.384755518322564, 37.748301244247457 ], [ -122.384771026767297, 37.748298936027936 ], [ -122.384788230079309, 37.748295227244739 ], [ -122.384803704040692, 37.748291546118445 ], [ -122.384819160241221, 37.748287178547208 ], [ -122.384850004018801, 37.748275697588227 ], [ -122.384865408317154, 37.748269270660025 ], [ -122.384882471958647, 37.748260070280949 ], [ -122.384896077598697, 37.748250925484513 ], [ -122.384911429637739, 37.748242438930326 ], [ -122.384926799094799, 37.748234639097134 ], [ -122.384942203039174, 37.748228212438939 ], [ -122.384959354081715, 37.748222444285403 ], [ -122.384976521838055, 37.748217362314264 ], [ -122.384993725120907, 37.748213653501011 ], [ -122.385009181639873, 37.748209285899271 ], [ -122.385022856909728, 37.748202886607288 ], [ -122.385036497346164, 37.748195114416852 ], [ -122.385046610116049, 37.748184651746037 ], [ -122.385053264882572, 37.748174244389467 ], [ -122.385059867399946, 37.748161777687201 ], [ -122.385062977084218, 37.748147993403109 ], [ -122.385067868014104, 37.74813624080646 ], [ -122.38507799784864, 37.748126464861393 ], [ -122.385089892189129, 37.748118033594025 ], [ -122.38510529608827, 37.748111606639817 ], [ -122.385120787757828, 37.748108611914709 ], [ -122.385138077744813, 37.748108335328041 ], [ -122.385155454814836, 37.748111490980968 ], [ -122.385169426138901, 37.748116761295172 ], [ -122.385181755211505, 37.748125491789409 ], [ -122.385192373382367, 37.748134935830123 ], [ -122.385204720216592, 37.748144352490229 ], [ -122.385218761226213, 37.748152368866798 ], [ -122.385234478972677, 37.748158297687098 ], [ -122.385250161900544, 37.748162854157655 ], [ -122.385267521563421, 37.748165323071063 ], [ -122.385284846398747, 37.748166419359649 ], [ -122.385307218551446, 37.748161941354901 ], [ -122.385322623132453, 37.748155514361287 ], [ -122.385336298358496, 37.748149114758291 ], [ -122.385351667751635, 37.748141314869592 ], [ -122.385370425465482, 37.748130713860917 ], [ -122.385385847107514, 37.748124973312947 ], [ -122.38540299740022, 37.748119205105795 ], [ -122.385420183219992, 37.748114809781839 ], [ -122.385437403184611, 37.748111787363236 ], [ -122.385454641265781, 37.748109451653981 ], [ -122.385471896059883, 37.748107801852534 ], [ -122.385494373386805, 37.748107442216863 ], [ -122.38551168079205, 37.748107852023772 ], [ -122.385530752036246, 37.748109607060321 ], [ -122.385548128777415, 37.748112762660895 ], [ -122.385617567456492, 37.748122639221975 ], [ -122.385652269381737, 37.748126891038808 ], [ -122.385685225236202, 37.748130484058379 ], [ -122.385719909747124, 37.748134049406957 ], [ -122.385785855632406, 37.748142608581347 ], [ -122.385801503731642, 37.748145791532721 ], [ -122.385816588465147, 37.748146745865732 ], [ -122.385818828224473, 37.748146887748376 ], [ -122.385834354718469, 37.748145265826139 ], [ -122.38585155760299, 37.748141557167763 ], [ -122.385865250211054, 37.74813584422629 ], [ -122.385878890540098, 37.748128071663686 ], [ -122.3858907496043, 37.748118267698949 ], [ -122.385900844474122, 37.748107118511911 ], [ -122.385902260194882, 37.748094734766624 ], [ -122.385907133219177, 37.748082295692257 ], [ -122.385917263620584, 37.748072519389318 ], [ -122.385930956210871, 37.748066806440157 ], [ -122.385953433177363, 37.748066446722468 ], [ -122.385965727831334, 37.748073804232597 ], [ -122.385981463045027, 37.748080419401688 ], [ -122.385998909841959, 37.748086320723502 ], [ -122.38601630437492, 37.74809016297241 ], [ -122.386033664046266, 37.748092631772991 ], [ -122.386050971451041, 37.748093041500702 ], [ -122.386068226580846, 37.748091391880983 ], [ -122.386087192943762, 37.74808902841783 ], [ -122.386104378709106, 37.748084632719518 ], [ -122.386119835135943, 37.748080264972018 ], [ -122.386135256363829, 37.74807452433145 ], [ -122.386150643429275, 37.748067410781196 ], [ -122.386162536953989, 37.748058979691152 ], [ -122.386174396322502, 37.748049175966834 ], [ -122.386184491486219, 37.748038026749811 ], [ -122.386194569220663, 37.74802619108366 ], [ -122.386201171526452, 37.748013724042565 ], [ -122.386204298419131, 37.748000626176299 ], [ -122.386207059358142, 37.747973112895849 ], [ -122.386211932676204, 37.74796067407766 ], [ -122.386218534973267, 37.747948207035471 ], [ -122.386226883695826, 37.747936399040974 ], [ -122.386236996262895, 37.747925936267578 ], [ -122.386250601668095, 37.747916791039664 ], [ -122.38626425935739, 37.747909705429613 ], [ -122.38627966345058, 37.747903278041591 ], [ -122.386295119836348, 37.747898910545544 ], [ -122.386310628142297, 37.747896601848709 ], [ -122.386338292035447, 37.747896159029516 ], [ -122.386357415873647, 37.747899973271664 ], [ -122.386373115890919, 37.747905215772221 ], [ -122.386388851457951, 37.747911831156145 ], [ -122.386404621538247, 37.747919819440014 ], [ -122.386418680056124, 37.747928521847626 ], [ -122.386427603879639, 37.747939366631606 ], [ -122.386439915980972, 37.747947410266093 ], [ -122.386455564081089, 37.74795059367991 ], [ -122.386471037535358, 37.747946912065444 ], [ -122.386789455008412, 37.747884816204298 ], [ -122.3868315118753, 37.747838131816167 ], [ -122.386850251869276, 37.747826844123239 ], [ -122.386870720848805, 37.747815528743104 ], [ -122.386889443052766, 37.747803554601212 ], [ -122.386908148509548, 37.747790893997063 ], [ -122.386942065866194, 37.74776425526499 ], [ -122.386965801028097, 37.74774533356738 ], [ -122.386981135299891, 37.747736160569232 ], [ -122.386994723145222, 37.747726328806948 ], [ -122.387010022542214, 37.747715782908614 ], [ -122.387037163346392, 37.747694746479311 ], [ -122.387050698881637, 37.747682855640441 ], [ -122.38706252285192, 37.747671678660687 ], [ -122.38707605836494, 37.747659787269711 ], [ -122.387087812590266, 37.747645864494586 ], [ -122.387097942431041, 37.747636088094978 ], [ -122.387109818697425, 37.747626970729563 ], [ -122.387123441368203, 37.747618511574053 ], [ -122.387137098912476, 37.747611425587927 ], [ -122.387154231515737, 37.747604970677259 ], [ -122.387171469418391, 37.747602634442131 ], [ -122.387190435960278, 37.747600270521147 ], [ -122.387209419590647, 37.747598593050817 ], [ -122.387226657490075, 37.747596256807626 ], [ -122.387245658900213, 37.747595265774123 ], [ -122.387264642528066, 37.747593588294905 ], [ -122.387281915296896, 37.747592624939976 ], [ -122.387300916705343, 37.747591633897549 ], [ -122.387316296380376, 37.747591387583803 ], [ -122.38733895439411, 37.747591024699865 ], [ -122.387356261689263, 37.747591434235915 ], [ -122.387375280187655, 37.747591129635204 ], [ -122.387394334251837, 37.747592197916667 ], [ -122.387413370533409, 37.74759257975245 ], [ -122.387430694921051, 37.74759367573126 ], [ -122.387449748986683, 37.747594744003763 ], [ -122.38746882014496, 37.747596498726871 ], [ -122.38748616197239, 37.747598281145677 ], [ -122.387505250916419, 37.747600722305499 ], [ -122.387538363228003, 37.747610492846007 ], [ -122.387550745149639, 37.747621282157453 ], [ -122.387563144167856, 37.747632757921238 ], [ -122.38758451981073, 37.747657137719408 ], [ -122.387602472716026, 37.747682945794239 ], [ -122.387611466439651, 37.747696536281474 ], [ -122.387617002189558, 37.747710182158386 ], [ -122.387624284369664, 37.747724486787845 ], [ -122.387629837563409, 37.747738819112165 ], [ -122.387633661769783, 37.747753179131621 ], [ -122.387635983354997, 37.747776490677239 ], [ -122.387636332144282, 37.747790219639235 ], [ -122.387640121821377, 37.747803206756615 ], [ -122.387649063247679, 37.747814737896427 ], [ -122.38765798689127, 37.747825582592974 ], [ -122.38767204553811, 37.747834284851223 ], [ -122.387686034428512, 37.747840241315451 ], [ -122.387703429329918, 37.74784408303541 ], [ -122.387720806101257, 37.747847238315771 ], [ -122.387738148684832, 37.747849020686374 ], [ -122.387757219915159, 37.747850775362728 ], [ -122.387776255919036, 37.747851157145398 ], [ -122.387793563622978, 37.747851566611679 ], [ -122.38781256509084, 37.747850575486822 ], [ -122.387829820125248, 37.747848925609141 ], [ -122.387848786709029, 37.747846561582286 ], [ -122.387866006512709, 37.747843538808695 ], [ -122.387888379097262, 37.747839060028085 ], [ -122.387903835368149, 37.747834692046453 ], [ -122.387921107500148, 37.747833728883549 ], [ -122.38793675597158, 37.747836911546052 ], [ -122.387950727441307, 37.7478421815308 ], [ -122.387968122011031, 37.747846023217228 ], [ -122.387985481697157, 37.747848492005005 ], [ -122.388002823941576, 37.747850274342177 ], [ -122.388020131300777, 37.747850683780733 ], [ -122.388039132419564, 37.747849692624868 ], [ -122.38805637035118, 37.747847356260422 ], [ -122.388073590146575, 37.74784433345652 ], [ -122.388089046753478, 37.747839965445046 ], [ -122.388109620211083, 37.747832768537954 ], [ -122.388109062008056, 37.747810802201109 ], [ -122.388077940175876, 37.747811300839857 ], [ -122.38807409843713, 37.74779625438692 ], [ -122.388108678243654, 37.747795700344511 ], [ -122.388099616701311, 37.74771137804548 ], [ -122.388148028374744, 37.747710602372756 ], [ -122.388152687991848, 37.747825897938156 ], [ -122.388277000893524, 37.747817039049515 ], [ -122.388487762928946, 37.747806794121068 ], [ -122.388506886854486, 37.747810608014518 ], [ -122.388525975547779, 37.747813049289029 ], [ -122.388546793218978, 37.747815462302533 ], [ -122.388565847011719, 37.747816530400094 ], [ -122.388605613450011, 37.747815893090063 ], [ -122.388626326439876, 37.747814187676354 ], [ -122.388645293335259, 37.747811823515768 ], [ -122.388665971425112, 37.747808745199229 ], [ -122.388684903080716, 37.747805008416485 ], [ -122.388703817271136, 37.747800584633623 ], [ -122.388722696221464, 37.747794788231978 ], [ -122.388738135330243, 37.747789733687412 ], [ -122.388758743610779, 37.74778390956282 ], [ -122.388800029962908, 37.747775007094489 ], [ -122.38882243702561, 37.74777190103795 ], [ -122.38884313255457, 37.74776950941277 ], [ -122.388865591959274, 37.747768462417191 ], [ -122.388886322380927, 37.747767443405706 ], [ -122.388908833806198, 37.747768456300328 ], [ -122.388929616574529, 37.747769496350386 ], [ -122.388945212727961, 37.747770619809877 ], [ -122.388964301079568, 37.747773061018961 ], [ -122.388983355206264, 37.747774128768917 ], [ -122.38900242644678, 37.747775883243818 ], [ -122.389021462783674, 37.747776264819827 ], [ -122.389042245569726, 37.747777305399197 ], [ -122.389080318237873, 37.747778068260708 ], [ -122.389137374546209, 37.7477771536037 ], [ -122.389175377760296, 37.747775171186596 ], [ -122.389196090718727, 37.747773465398161 ], [ -122.38926533756586, 37.747775788884091 ], [ -122.389334549507055, 37.747776739433625 ], [ -122.3894037440012, 37.747777003769272 ], [ -122.389542063148724, 37.747774785978237 ], [ -122.389680277530928, 37.747768449063493 ], [ -122.389818387138831, 37.74775799357456 ], [ -122.38988740700772, 37.747751392873859 ], [ -122.38995468041503, 37.747744133414443 ], [ -122.390039173851804, 37.747733851094473 ], [ -122.390066855117027, 37.747734093573278 ], [ -122.390085856531513, 37.747733102356463 ], [ -122.390103128943423, 37.747732138319044 ], [ -122.390122130349909, 37.747731146821835 ], [ -122.390141096830732, 37.747728782426051 ], [ -122.390158334329385, 37.747726446034243 ], [ -122.390177283337934, 37.747723394910331 ], [ -122.390194485555256, 37.747719685348756 ], [ -122.390213417450141, 37.74771594804033 ], [ -122.390230602546296, 37.747711552020206 ], [ -122.390249481354928, 37.747705755373893 ], [ -122.3902666667924, 37.747701359342962 ], [ -122.390283903927951, 37.747699022663753 ], [ -122.390311567723842, 37.747698578911937 ], [ -122.390328910334858, 37.747700360901341 ], [ -122.390344558542523, 37.747703543524345 ], [ -122.390363664733329, 37.747706670948986 ], [ -122.390381024113694, 37.747709139114932 ], [ -122.390398366728832, 37.747710921094118 ], [ -122.390415726118349, 37.747713389529537 ], [ -122.390433121131167, 37.747717230846696 ], [ -122.390448804284702, 37.74772178662581 ], [ -122.390464522011555, 37.747727714754603 ], [ -122.390476782463509, 37.747733698619065 ], [ -122.390494212070166, 37.747738912828105 ], [ -122.390511589281189, 37.747742067691526 ], [ -122.390527184761183, 37.747743190952775 ], [ -122.390653785454447, 37.747824253927604 ], [ -122.390638206813605, 37.747755831079004 ], [ -122.390653872859318, 37.747759700103025 ], [ -122.390669573495856, 37.747764942025796 ], [ -122.390681886034457, 37.74777298549197 ], [ -122.39069250450811, 37.747782429043276 ], [ -122.390701428591996, 37.747793273509437 ], [ -122.390706912858818, 37.747804859892483 ], [ -122.390710737663227, 37.747819219811937 ], [ -122.390717985513646, 37.7478321513547 ], [ -122.390725250834635, 37.747845769344615 ], [ -122.39073249869017, 37.747858700886397 ], [ -122.390741475546321, 37.747871604961333 ], [ -122.390750434923376, 37.747883822038752 ], [ -122.390771776747243, 37.747906828362581 ], [ -122.390782430195571, 37.747917645075368 ], [ -122.39079481229362, 37.747928434050969 ], [ -122.39082296530907, 37.747947210986922 ], [ -122.390837024342559, 37.747955912592879 ], [ -122.390849337269742, 37.747963955761179 ], [ -122.390865002685743, 37.747967825042672 ], [ -122.390880686250455, 37.747972380209411 ], [ -122.3909120177685, 37.747980118201738 ], [ -122.390943314352953, 37.747986483290504 ], [ -122.390960691640942, 37.747989638087581 ], [ -122.390976339590807, 37.747992820632099 ], [ -122.391007601590601, 37.747997812803085 ], [ -122.391024961067359, 37.748000281148649 ], [ -122.391056188138322, 37.748003900686179 ], [ -122.391073512668584, 37.74800499585487 ], [ -122.391089126375263, 37.748006805478177 ], [ -122.391122029339527, 37.748008337920567 ], [ -122.39113764304112, 37.74801014726286 ], [ -122.391155055286944, 37.748014674926367 ], [ -122.3911690619626, 37.748021317424552 ], [ -122.391183121057651, 37.748030019263688 ], [ -122.391193757118117, 37.748040149766119 ], [ -122.391202716589845, 37.748052366808828 ], [ -122.391208200608148, 37.748063953173585 ], [ -122.391241557893906, 37.74808333321856 ], [ -122.391295995830475, 37.748115422483572 ], [ -122.391962189342451, 37.748397274549454 ], [ -122.391983042262396, 37.748401060399672 ], [ -122.392002166513251, 37.748404873451001 ], [ -122.392021325387503, 37.7484100596741 ], [ -122.392042213267686, 37.748415218134042 ], [ -122.392078889429584, 37.748429050561562 ], [ -122.392113924006139, 37.748446342975576 ], [ -122.392131528713293, 37.748458421690032 ], [ -122.39214384116525, 37.748466464458922 ], [ -122.392159577364851, 37.748473079071736 ], [ -122.392175243295199, 37.748476947898624 ], [ -122.392194332280141, 37.748479388578737 ], [ -122.392215132775206, 37.748481114496656 ], [ -122.392234186445535, 37.748482182006597 ], [ -122.392254951984697, 37.748482535297406 ], [ -122.392294719439334, 37.748481896731604 ], [ -122.392336145620007, 37.748478484604256 ], [ -122.392355112221097, 37.748476119852498 ], [ -122.392375790342101, 37.748473040885386 ], [ -122.392394739456975, 37.748469989679933 ], [ -122.392410230561637, 37.748466994002406 ], [ -122.392430943652641, 37.748465288194843 ], [ -122.392449945215546, 37.748464296322425 ], [ -122.392477609283375, 37.748463852062244 ], [ -122.392496645468526, 37.748464233082473 ], [ -122.392534753839612, 37.748466367717036 ], [ -122.392553842833664, 37.748468808338913 ], [ -122.392571185325409, 37.748470589729116 ], [ -122.392588457883463, 37.748469625602191 ], [ -122.392596639186095, 37.748469494208877 ], [ -122.392610934939555, 37.748469264614883 ], [ -122.39262824212247, 37.74846967338226 ], [ -122.392662927124746, 37.748473236687367 ], [ -122.392680287459143, 37.74847570477781 ], [ -122.392695935930789, 37.748478887088204 ], [ -122.392713348381406, 37.748483414521154 ], [ -122.392729031836424, 37.748487969996233 ], [ -122.39274473277321, 37.748493211641936 ], [ -122.392760450846382, 37.748499139463782 ], [ -122.392774457756872, 37.748505781770611 ], [ -122.392790211508157, 37.748513082746427 ], [ -122.392804253398694, 37.748521097944213 ], [ -122.392825263777468, 37.748531061396008 ], [ -122.392842711223665, 37.748536961704282 ], [ -122.39286010621592, 37.748540802942827 ], [ -122.392879212368058, 37.748543929415632 ], [ -122.392898284250904, 37.748545683528903 ], [ -122.392917320797991, 37.748546064201044 ], [ -122.392936339863667, 37.748545758697475 ], [ -122.392953524990631, 37.748541362280918 ], [ -122.392966938977182, 37.748536367729422 ], [ -122.392968945786251, 37.748535620746658 ], [ -122.392982602941643, 37.748528534084265 ], [ -122.392994513945695, 37.748520788741565 ], [ -122.393006389623011, 37.748511670508776 ], [ -122.393016518457316, 37.748501893607475 ], [ -122.39303324918852, 37.748479649545963 ], [ -122.393038138879703, 37.74846789661926 ], [ -122.393043010740925, 37.74845545752526 ], [ -122.393046136785017, 37.748442359198343 ], [ -122.393047533485998, 37.748429288926303 ], [ -122.393054199696095, 37.748283595463981 ], [ -122.393077928476629, 37.748128700431906 ], [ -122.392979444727942, 37.747588651673503 ], [ -122.39297940856946, 37.747588454476606 ], [ -122.392907366368178, 37.747544287652012 ], [ -122.39290993009746, 37.747441237230703 ], [ -122.392849293374297, 37.747437404131951 ], [ -122.392809823765376, 37.747449712490337 ], [ -122.39276850310074, 37.747457243469029 ], [ -122.392735233137245, 37.747441296365679 ], [ -122.392709245973222, 37.747439653574382 ], [ -122.392606956367715, 37.747430308793902 ], [ -122.392589631603045, 37.747429213856059 ], [ -122.392573983004198, 37.747426031261952 ], [ -122.392558282650754, 37.747420789587025 ], [ -122.392545987120343, 37.747413433318528 ], [ -122.392533639816108, 37.747404017146245 ], [ -122.392522986186506, 37.747393200590786 ], [ -122.392515773033679, 37.747381642052915 ], [ -122.392369749857508, 37.747285098201544 ], [ -122.392309356598403, 37.747222889020321 ], [ -122.391563535628293, 37.747006182915136 ], [ -122.391515981789823, 37.747108581714961 ], [ -122.391549059112705, 37.747116978239831 ], [ -122.39154102623057, 37.747141142664127 ], [ -122.391633378020288, 37.747167816090183 ], [ -122.391610658187417, 37.747226552683614 ], [ -122.391284893471251, 37.747135639523535 ], [ -122.391304260773893, 37.747081077170833 ], [ -122.391400018273714, 37.747105635933018 ], [ -122.391414984907726, 37.747082046956919 ], [ -122.391449669204121, 37.747085610619905 ], [ -122.391496995599269, 37.746974288032909 ], [ -122.390841889233045, 37.746787710251105 ], [ -122.390710603266925, 37.746750702923116 ], [ -122.390692063133784, 37.7467454771745 ], [ -122.390583853899699, 37.746707382782333 ], [ -122.390491852370616, 37.746694437487911 ], [ -122.389167167584475, 37.74677199330884 ], [ -122.389007159419478, 37.746805461394153 ], [ -122.38886264165825, 37.746835933506375 ], [ -122.388798600052468, 37.746834213094125 ], [ -122.388745420841317, 37.746851546922535 ], [ -122.388650571528245, 37.746862681307142 ], [ -122.388568244062029, 37.746890096400243 ], [ -122.388501285688704, 37.746909711129156 ], [ -122.388430153337836, 37.746901236873853 ], [ -122.388403030664151, 37.746922960074855 ], [ -122.388383874714961, 37.746923267046867 ], [ -122.388364993671857, 37.746923569610487 ], [ -122.388206416880053, 37.746945339015134 ], [ -122.388203900596949, 37.746982462626271 ], [ -122.388121154182954, 37.746993402651967 ], [ -122.388116562743861, 37.746948838923466 ], [ -122.387896826491271, 37.746946178902249 ], [ -122.387881213437979, 37.746944369124783 ], [ -122.387867242141994, 37.746939099130984 ], [ -122.387854912604922, 37.746930368921483 ], [ -122.387704648799442, 37.746938956647774 ], [ -122.387598167965407, 37.746968818149767 ], [ -122.387589223776885, 37.747025273076481 ], [ -122.387549736768761, 37.747036893214862 ], [ -122.387544863742193, 37.747049332364881 ], [ -122.387534786009468, 37.747061168154005 ], [ -122.38752465665732, 37.747070944861157 ], [ -122.387511034118646, 37.747079403514647 ], [ -122.387495647733758, 37.747086517238138 ], [ -122.387478445182509, 37.747090226411743 ], [ -122.387461451881805, 37.747102172961299 ], [ -122.387268251932909, 37.747106390211968 ], [ -122.387107064056366, 37.74710990881966 ], [ -122.387091486195246, 37.747109471553998 ], [ -122.387075890554399, 37.747108347843543 ], [ -122.387060207744099, 37.747103791889728 ], [ -122.387046201608655, 37.747097148902206 ], [ -122.387033854715085, 37.747087732433343 ], [ -122.387024930905355, 37.74707688769373 ], [ -122.387021159152255, 37.747064586997716 ], [ -122.387005168327306, 37.746911702839881 ], [ -122.385924087590695, 37.746978453708003 ], [ -122.382764926423121, 37.74715258139431 ], [ -122.382708148125133, 37.747164476159931 ], [ -122.382642308174283, 37.747160034224571 ], [ -122.382018857926923, 37.747061489736957 ], [ -122.379659819974563, 37.747207644757545 ], [ -122.379607354913716, 37.746979801452689 ], [ -122.379559186732763, 37.746990183908736 ], [ -122.379533356297898, 37.746994716256566 ], [ -122.379509237470685, 37.74699853457313 ], [ -122.379483389665921, 37.747002380460607 ], [ -122.379459270487843, 37.747006198772453 ], [ -122.379433405660123, 37.74700935819407 ], [ -122.379407523121102, 37.747011831166098 ], [ -122.379383369216924, 37.747014276838193 ], [ -122.379357487013394, 37.747016749519133 ], [ -122.379331587106719, 37.747018536025081 ], [ -122.379307398466224, 37.747019608508175 ], [ -122.379255564276221, 37.747021808862577 ], [ -122.379229629642097, 37.747022222447264 ], [ -122.379144857745686, 37.747021513827882 ], [ -122.379072223061954, 37.747021985338478 ], [ -122.37899789481213, 37.747023857260928 ], [ -122.378925329913201, 37.747027074747926 ], [ -122.378851035672341, 37.747030319213138 ], [ -122.378706009969704, 37.747040872109451 ], [ -122.378631820547639, 37.747048235671635 ], [ -122.378559359727831, 37.747055571081212 ], [ -122.378486933610205, 37.74706427961987 ], [ -122.378414542183847, 37.747074361013084 ], [ -122.378342168091294, 37.747085128811385 ], [ -122.378269828683315, 37.747097269464334 ], [ -122.378197506610775, 37.747110096797023 ], [ -122.378126930483418, 37.747123582435272 ], [ -122.377700185384086, 37.747142744068015 ], [ -122.377451264431812, 37.747148770308641 ], [ -122.377202256724516, 37.747151363774975 ], [ -122.376953162296658, 37.747150524466448 ], [ -122.376703981182786, 37.747146252382528 ], [ -122.376633214042542, 37.747152186453157 ], [ -122.376586583950242, 37.747154989206692 ], [ -122.376541665151564, 37.747157077964779 ], [ -122.376496729013979, 37.747158480255926 ], [ -122.376406822062478, 37.747159911887174 ], [ -122.3763168457685, 37.747158597650483 ], [ -122.376226800142021, 37.747154537545661 ], [ -122.376181759998943, 37.747151821017589 ], [ -122.376136702533032, 37.747148418296995 ], [ -122.376091627724676, 37.747144328560168 ], [ -122.376046535596004, 37.747139552630784 ], [ -122.376003154781813, 37.747134062989552 ], [ -122.375912901223032, 37.747121764971595 ], [ -122.375869469128858, 37.747114215920412 ], [ -122.375824307704988, 37.747106693831739 ], [ -122.375780857600304, 37.747098458034387 ], [ -122.375737390867457, 37.747089535760047 ], [ -122.375693906470275, 37.747079927025247 ], [ -122.375650404755746, 37.747069631824438 ], [ -122.375606885379298, 37.74705865016309 ], [ -122.375565078011306, 37.747046954511831 ], [ -122.375521542024956, 37.747035286357942 ], [ -122.375484921614671, 37.747023508124926 ], [ -122.375446537240038, 37.747010384502651 ], [ -122.375427328249984, 37.747003136228599 ], [ -122.375409847894304, 37.746995860440805 ], [ -122.375390638220011, 37.746988612171734 ], [ -122.375373140891156, 37.746980649922982 ], [ -122.375353914244343, 37.746972715192399 ], [ -122.375283854298274, 37.746938120381792 ], [ -122.375266321996932, 37.746928785222565 ], [ -122.375250518328926, 37.746919422552502 ], [ -122.375232969057322, 37.746909400932758 ], [ -122.375217148425804, 37.746899352077222 ], [ -122.375199598810724, 37.746889330183407 ], [ -122.375183760856842, 37.746878594598741 ], [ -122.37516794023162, 37.746868545461957 ], [ -122.375152084617042, 37.746857123428462 ], [ -122.375137975649949, 37.746846360325264 ], [ -122.375122120743228, 37.74683493855126 ], [ -122.37510799445424, 37.746823488719798 ], [ -122.37509213920427, 37.746812066672646 ], [ -122.375063852016254, 37.746787794649727 ], [ -122.375051437407549, 37.746775631399466 ], [ -122.375037293817897, 37.746763495109327 ], [ -122.375023132917065, 37.746750672641994 ], [ -122.374998269070602, 37.746724972682053 ], [ -122.374960921021042, 37.746684363387303 ], [ -122.374939480511969, 37.746657235495441 ], [ -122.374896530254759, 37.746600233899152 ], [ -122.374887504692197, 37.746585269533512 ], [ -122.374878496108821, 37.746570991622754 ], [ -122.374851418423177, 37.746526098810385 ], [ -122.374837344197417, 37.746516708296284 ], [ -122.374824981280824, 37.746506604102919 ], [ -122.374812601738441, 37.746495813447105 ], [ -122.374801933498034, 37.746484308838191 ], [ -122.374792994225416, 37.746472776721248 ], [ -122.374785749278871, 37.74645984419638 ], [ -122.374780233298765, 37.746446884164222 ], [ -122.374774699654409, 37.746433237687107 ], [ -122.374770895666941, 37.746419563692001 ], [ -122.374768802977741, 37.746405175745409 ], [ -122.374768439251895, 37.74639076029208 ], [ -122.374769821808755, 37.746377003782186 ], [ -122.374772932981244, 37.74636321977102 ], [ -122.374777773805775, 37.74634940824194 ], [ -122.374790947320705, 37.746323103080407 ], [ -122.374915153489738, 37.745898790876815 ], [ -122.374925284686768, 37.745889015246057 ], [ -122.374935381244654, 37.745877866988621 ], [ -122.374943731527424, 37.745866059789378 ], [ -122.374948606585662, 37.745853621157977 ], [ -122.374953463974592, 37.745840496081698 ], [ -122.374954864154603, 37.745827426013051 ], [ -122.374954517717399, 37.745813697009091 ], [ -122.374952459307565, 37.745800681970202 ], [ -122.37494867264158, 37.745787694429573 ], [ -122.374943174004656, 37.745775420853761 ], [ -122.374925295588895, 37.745752356637837 ], [ -122.374169821595103, 37.745013096467311 ], [ -122.374159170981372, 37.745002278247725 ], [ -122.374148554999209, 37.744992832927991 ], [ -122.374136227057974, 37.744984101560632 ], [ -122.374123917125218, 37.74497605663138 ], [ -122.374109912547326, 37.744969412104211 ], [ -122.374095925285644, 37.7449634540258 ], [ -122.374080226064535, 37.744958209898222 ], [ -122.37406629074772, 37.744954311167561 ], [ -122.374048932546074, 37.744951840322948 ], [ -122.374033320242248, 37.744950028435788 ], [ -122.374017742219408, 37.744949589452929 ], [ -122.373998724342499, 37.744949891898301 ], [ -122.37398319825796, 37.744951512262205 ], [ -122.373967707489385, 37.744954505513952 ], [ -122.373952250998556, 37.744958871670036 ], [ -122.373936811825118, 37.74496392454914 ], [ -122.373923118884619, 37.74496963610779 ], [ -122.373909460559076, 37.744976720291163 ], [ -122.373895819549759, 37.744984491197997 ], [ -122.373883942091524, 37.744993607510423 ], [ -122.373863679651151, 37.745013158045801 ], [ -122.373855311981089, 37.745024278719775 ], [ -122.373848673239934, 37.745035371899974 ], [ -122.373842051808168, 37.745047151530216 ], [ -122.37385341216104, 37.745086114521243 ], [ -122.373444301009826, 37.74532404571449 ], [ -122.373430677195785, 37.74533250301748 ], [ -122.373418781971495, 37.745340932837536 ], [ -122.373405123536585, 37.745348017236601 ], [ -122.373391482406376, 37.745355788084566 ], [ -122.373377806658937, 37.745362186029979 ], [ -122.373364148216169, 37.745369270424256 ], [ -122.373350455156967, 37.745374981916001 ], [ -122.373319611498488, 37.745386459860086 ], [ -122.37330588381964, 37.745390798445655 ], [ -122.373274970231165, 37.745399530587065 ], [ -122.373259496653688, 37.745403210470592 ], [ -122.373244005409106, 37.745406203357881 ], [ -122.373226784891003, 37.745409224281886 ], [ -122.373211276683975, 37.7454115307089 ], [ -122.373195750831584, 37.745413150963429 ], [ -122.373178495692287, 37.7454147987048 ], [ -122.373162952885991, 37.745415732773601 ], [ -122.373130102670643, 37.745416254953994 ], [ -122.373114525240069, 37.745415815566226 ], [ -122.373097201225704, 37.745414717488131 ], [ -122.37308160580649, 37.745413591931054 ], [ -122.373065993781964, 37.745411780184988 ], [ -122.373048652458152, 37.745409995374658 ], [ -122.373033005135582, 37.745406810734146 ], [ -122.373017375795953, 37.745404311981943 ], [ -122.372986047234718, 37.74539656950391 ], [ -122.372970365296936, 37.745392011404839 ], [ -122.372956412653693, 37.745387426092684 ], [ -122.372762203193631, 37.745505195897991 ], [ -122.372470578027816, 37.745199439060684 ], [ -122.369079539125323, 37.741643837671482 ], [ -122.367630267152407, 37.740133359644659 ], [ -122.367867173476, 37.739994319504163 ], [ -122.368285236674282, 37.739975330499902 ], [ -122.368274610769845, 37.73982785299647 ], [ -122.371253871422496, 37.739663833776014 ], [ -122.371264036490402, 37.739792777100682 ], [ -122.373407014055843, 37.739660522763742 ], [ -122.373411889309949, 37.739648084177503 ], [ -122.37342198524702, 37.739636936038039 ], [ -122.373432115793747, 37.739627160799976 ], [ -122.373447518947913, 37.739620735634887 ], [ -122.373462992003653, 37.739617055712138 ], [ -122.373518088785445, 37.739607252232659 ], [ -122.373566287640358, 37.739598245135006 ], [ -122.373590404371257, 37.739594428029896 ], [ -122.373616249911393, 37.739590583704633 ], [ -122.373640366284548, 37.739586766320215 ], [ -122.373666246782193, 37.739584294880729 ], [ -122.373690380805215, 37.739581163931668 ], [ -122.373716260600844, 37.739578692217606 ], [ -122.37374042959101, 37.739576934429572 ], [ -122.373766327038652, 37.739575149150085 ], [ -122.373790512990382, 37.739574077808385 ], [ -122.373816427745723, 37.739572978968987 ], [ -122.373890766330462, 37.739571796757524 ], [ -122.373921919428824, 37.739572674766521 ], [ -122.373937443699504, 37.739571054420232 ], [ -122.373952916727561, 37.739567374707711 ], [ -122.373966608670429, 37.739561663140428 ], [ -122.373980265988422, 37.739554578669413 ], [ -122.373992124908327, 37.7395447758934 ], [ -122.374000509598304, 37.739534341645076 ], [ -122.37400713051376, 37.739522561995074 ], [ -122.374012004966914, 37.739510123394709 ], [ -122.37401135577899, 37.739484381479812 ], [ -122.374005858115922, 37.739472108116395 ], [ -122.373998648611916, 37.739460548430131 ], [ -122.373977383644629, 37.739440284566498 ], [ -122.373964927156109, 37.739426404784517 ], [ -122.373936539281573, 37.739398013754517 ], [ -122.373924065496922, 37.739383447517028 ], [ -122.373886618206512, 37.739338719119822 ], [ -122.373874092510491, 37.73932209352359 ], [ -122.373863330238677, 37.739306813334778 ], [ -122.373841788398252, 37.73927556650299 ], [ -122.373820229273036, 37.739243633490574 ], [ -122.373811178157524, 37.739227639083794 ], [ -122.373793059679699, 37.739194964349537 ], [ -122.37378399162607, 37.739178284033066 ], [ -122.373776661019065, 37.739161919174691 ], [ -122.37376932175367, 37.739145210815664 ], [ -122.373761973843884, 37.739128159505157 ], [ -122.373754634592061, 37.73911145141971 ], [ -122.373747286688968, 37.739094400108158 ], [ -122.373741667582067, 37.739077321304478 ], [ -122.373730515575119, 37.739046595957468 ], [ -122.373715767869712, 37.739010433977029 ], [ -122.373701037487336, 37.738974958445688 ], [ -122.373691943857139, 37.738957248164674 ], [ -122.373664687572003, 37.73890514701592 ], [ -122.373643076699025, 37.738871154340984 ], [ -122.373610686734082, 37.738821194992092 ], [ -122.373585652607346, 37.73878863019344 ], [ -122.373573144731495, 37.738772691284012 ], [ -122.373560645155081, 37.738757095055156 ], [ -122.373546408152151, 37.738741183362713 ], [ -122.373533917247101, 37.738725930631098 ], [ -122.373505477884322, 37.738695480140251 ], [ -122.373491266871952, 37.738680598392399 ], [ -122.373459404583869, 37.738651575494011 ], [ -122.373445210895355, 37.73863738019174 ], [ -122.373429288070284, 37.738623211831154 ], [ -122.3734116544736, 37.738609757670034 ], [ -122.37339574066641, 37.738595932799527 ], [ -122.37337984382502, 37.738582794383632 ], [ -122.373362218906536, 37.738569683715227 ], [ -122.373326985681061, 37.738544148008963 ], [ -122.373309377387599, 37.738531723520261 ], [ -122.373290049663908, 37.73851966972861 ], [ -122.37327245903279, 37.738507931680125 ], [ -122.373253139281985, 37.738496221119 ], [ -122.373235557660152, 37.738484826285116 ], [ -122.37321625557793, 37.738473802438271 ], [ -122.373195233367738, 37.738463149022955 ], [ -122.373175939596308, 37.738452468126042 ], [ -122.37315665516681, 37.738442130166042 ], [ -122.373135650277447, 37.738432163191355 ], [ -122.373116382823142, 37.738422511956102 ], [ -122.373074407684399, 37.738403951165793 ], [ -122.373053428763811, 37.738395013578788 ], [ -122.373032458506373, 37.738386419488315 ], [ -122.373011496911786, 37.738378168894329 ], [ -122.372988815182367, 37.738370288453737 ], [ -122.372967870892026, 37.738362724028732 ], [ -122.372945197483872, 37.738355187085482 ], [ -122.372924270503603, 37.738348309104055 ], [ -122.372901615103871, 37.738341458867346 ], [ -122.372878967999199, 37.738334951308275 ], [ -122.372856329555759, 37.738328787245123 ], [ -122.372833699427503, 37.738322966683377 ], [ -122.372811078630633, 37.738317488782812 ], [ -122.372788466148293, 37.738312354383659 ], [ -122.372765862325963, 37.738307563480433 ], [ -122.372743266796775, 37.738303115254908 ], [ -122.372718943193647, 37.738298694765277 ], [ -122.372673787106677, 37.738291171738332 ], [ -122.372649498109226, 37.738288124137178 ], [ -122.372626937542805, 37.738285049061219 ], [ -122.372602656852706, 37.7382823446816 ], [ -122.372578393462533, 37.738280326748381 ], [ -122.372555858502594, 37.738278281341429 ], [ -122.372531604109625, 37.73827660661879 ], [ -122.372507357674976, 37.738275275127862 ], [ -122.37248484935597, 37.738274259373469 ], [ -122.372460620565761, 37.738273614318871 ], [ -122.372436400424391, 37.738273312484985 ], [ -122.37241391770614, 37.738273326399707 ], [ -122.372389714515705, 37.738273711013171 ], [ -122.372365520664644, 37.738274438836385 ], [ -122.372341334769544, 37.738275509891366 ], [ -122.371417572864843, 37.73819782064686 ], [ -122.371336052232962, 37.738188471129725 ], [ -122.371292703605505, 37.738184009138322 ], [ -122.371247643157346, 37.738180261317709 ], [ -122.371204337055175, 37.738177515159229 ], [ -122.371159311524337, 37.738175139928011 ], [ -122.371116023065696, 37.738173080457798 ], [ -122.37107103176993, 37.738172078376202 ], [ -122.371027777876208, 37.738171391502313 ], [ -122.370982812155077, 37.738171418795432 ], [ -122.370937864408404, 37.738172132512091 ], [ -122.370894662370532, 37.738173505218874 ], [ -122.370849740199262, 37.738175248584916 ], [ -122.370806564080581, 37.738177650936933 ], [ -122.370761676121674, 37.738180767178264 ], [ -122.370718534904626, 37.738184542395913 ], [ -122.370673681844693, 37.738189031501626 ], [ -122.370630565847108, 37.738193836375615 ], [ -122.370585739048508, 37.738199355394492 ], [ -122.37054305620137, 37.738152648632216 ], [ -122.370404226449224, 37.73820257996838 ], [ -122.370322939528947, 37.738202496843449 ], [ -122.370241678523712, 37.738203443340097 ], [ -122.37016044308433, 37.738205419463867 ], [ -122.370080971656222, 37.738208740986281 ], [ -122.369999797012667, 37.738213119575086 ], [ -122.369918647931073, 37.738218528065744 ], [ -122.369839254199036, 37.738224938183691 ], [ -122.369758165884022, 37.738232748865137 ], [ -122.369678823605085, 37.738241218785156 ], [ -122.369597795695725, 37.738251431663087 ], [ -122.369570247557576, 37.738256332765289 ], [ -122.369551300103424, 37.738259380031664 ], [ -122.369532343673868, 37.738262084349124 ], [ -122.369494414578227, 37.738266806506552 ], [ -122.369475441227863, 37.738268824632087 ], [ -122.369456458882269, 37.738270498984953 ], [ -122.369437468599656, 37.738271830372412 ], [ -122.369399470072068, 37.738273806697272 ], [ -122.369380461827461, 37.738274451634652 ], [ -122.369342429106254, 37.738275055031856 ], [ -122.369304361157091, 37.738274285523985 ], [ -122.36926627663955, 37.738272829815514 ], [ -122.369228156883779, 37.738270000652726 ], [ -122.369209088902451, 37.738268243244413 ], [ -122.369170934963606, 37.738264041153812 ], [ -122.369151849020255, 37.738261597020717 ], [ -122.369067113471218, 37.738261911373165 ], [ -122.368994202750471, 37.738251049936494 ], [ -122.368911109321047, 37.73824790450054 ], [ -122.36882805041877, 37.73824613163535 ], [ -122.368745017407647, 37.738245388114983 ], [ -122.368662018929072, 37.738246017714694 ], [ -122.36857731722661, 37.738247704629927 ], [ -122.368494370518377, 37.738250393192978 ], [ -122.368411458330385, 37.738254454876298 ], [ -122.368328572028588, 37.738259546453904 ], [ -122.368245711588798, 37.738265667102112 ], [ -122.36816287702834, 37.738272817644742 ], [ -122.368080076965157, 37.738281341033293 ], [ -122.367798933766665, 37.738311550246465 ], [ -122.367519570533148, 37.738343791024903 ], [ -122.367503864887638, 37.738338202509389 ], [ -122.367488228255993, 37.73833536007497 ], [ -122.367472548152278, 37.738330801513577 ], [ -122.367458562672155, 37.738324842640814 ], [ -122.367444551318144, 37.738317854088145 ], [ -122.367432225963285, 37.738309121998832 ], [ -122.367421611792139, 37.73829967606261 ], [ -122.367412700524838, 37.738289173048365 ], [ -122.367405492161083, 37.738277612956487 ], [ -122.367400003950721, 37.738265682239444 ], [ -122.367396227274725, 37.738253037945974 ], [ -122.367394179016159, 37.738240365710134 ], [ -122.367393859886334, 37.738227666344848 ], [ -122.367395269877491, 37.738214939575492 ], [ -122.367400145351439, 37.738202501245944 ], [ -122.367413544289079, 37.738185120751645 ], [ -122.367428767218343, 37.73817148833826 ], [ -122.367445744452965, 37.738158858481917 ], [ -122.367462730293482, 37.738146571300049 ], [ -122.367481470439287, 37.738135286674201 ], [ -122.36750022852209, 37.738124688486586 ], [ -122.367520732277939, 37.73811474935323 ], [ -122.367541261905686, 37.738105839894565 ], [ -122.367561808780295, 37.738097616884474 ], [ -122.367582381528294, 37.738090423549032 ], [ -122.367604708583698, 37.738084232766695 ], [ -122.367627053565442, 37.738078727872157 ], [ -122.367649424083893, 37.738074252931682 ], [ -122.367766437068838, 37.738050766275428 ], [ -122.367843903943097, 37.738036490753885 ], [ -122.367921396310663, 37.738023244315926 ], [ -122.367998923860597, 37.738011370994791 ], [ -122.368076468296522, 37.738000184080214 ], [ -122.368154047223541, 37.737990370018814 ], [ -122.368231651678144, 37.737981585864489 ], [ -122.368311011449208, 37.737973803365058 ], [ -122.368388676621564, 37.737967421684075 ], [ -122.368447213120319, 37.737956879019784 ], [ -122.368493984461352, 37.737959914324698 ], [ -122.368511237973692, 37.737958267267153 ], [ -122.368526753740483, 37.737956304401699 ], [ -122.368543998275101, 37.737954314118795 ], [ -122.368559514040228, 37.737952351249042 ], [ -122.368575012543431, 37.737949701925182 ], [ -122.36859223981395, 37.737947025183189 ], [ -122.368607738314864, 37.737944375855051 ], [ -122.368624947975661, 37.737941012661715 ], [ -122.368655910793635, 37.737934341085214 ], [ -122.368671383403552, 37.737930662345228 ], [ -122.368688576135014, 37.737926612410497 ], [ -122.368719486808203, 37.737917881466693 ], [ -122.368750380211424, 37.737908464062734 ], [ -122.368765818278675, 37.737903412131701 ], [ -122.368781247712349, 37.737898016972643 ], [ -122.368794948383581, 37.737892649505248 ], [ -122.368810368835511, 37.737886911121841 ], [ -122.368825781337947, 37.737880829224856 ], [ -122.368839464732346, 37.737874775025681 ], [ -122.368854868259206, 37.737868350178935 ], [ -122.368868543017058, 37.737861952750357 ], [ -122.368883937913694, 37.737855184948373 ], [ -122.368897604027694, 37.737848444015853 ], [ -122.368911261520921, 37.737841360404865 ], [ -122.368938559214428, 37.737826505902383 ], [ -122.368952199435157, 37.737818735834644 ], [ -122.368960558042616, 37.737807272000303 ], [ -122.368970654743052, 37.73779612423332 ], [ -122.368982505756449, 37.737785978727096 ], [ -122.368996120067735, 37.737777178976209 ], [ -122.369011506288842, 37.737770067382321 ], [ -122.369028672734785, 37.73776498827452 ], [ -122.369045883019595, 37.737761624734098 ], [ -122.369078712268717, 37.737760417244921 ], [ -122.369096068971245, 37.73776288881907 ], [ -122.369113468840041, 37.737767076520647 ], [ -122.369161848333334, 37.73776527896748 ], [ -122.369191211420912, 37.737763783069852 ], [ -122.369249902712198, 37.73775941835428 ], [ -122.369279231606328, 37.737756549525336 ], [ -122.369306822754865, 37.737753364895219 ], [ -122.369336134037468, 37.737749809880221 ], [ -122.369365436669298, 37.73774591108279 ], [ -122.369394721690568, 37.73774132610621 ], [ -122.369422278297634, 37.737736768819744 ], [ -122.369451546734155, 37.737731497366127 ], [ -122.369479077416202, 37.737725909839305 ], [ -122.369508328229003, 37.737719951925108 ], [ -122.369535841646382, 37.737713678482258 ], [ -122.369565066537618, 37.737706690601534 ], [ -122.369592562667947, 37.737699730418903 ], [ -122.36964752037818, 37.737684437405164 ], [ -122.369674981943263, 37.737676104024878 ], [ -122.369702434873361, 37.737667427686809 ], [ -122.369729879161198, 37.737658408116381 ], [ -122.369755577409364, 37.737648729520856 ], [ -122.369783004411687, 37.737639023486132 ], [ -122.369808694010004, 37.737629001653048 ], [ -122.36983436598301, 37.737618293367909 ], [ -122.369861767054431, 37.73760755763697 ], [ -122.369877075781517, 37.737597357165455 ], [ -122.369888995386347, 37.737589957380784 ], [ -122.369902652730687, 37.737582873380028 ], [ -122.369916335982509, 37.737576819055491 ], [ -122.369931756973841, 37.737571080514087 ], [ -122.369945457494808, 37.737565712638037 ], [ -122.369960912683439, 37.737561347002035 ], [ -122.369976376507211, 37.737557324589964 ], [ -122.369991865894718, 37.737554331859151 ], [ -122.370007364616541, 37.737551682615816 ], [ -122.370022880252051, 37.737549719278675 ], [ -122.370060808948153, 37.737544996950575 ], [ -122.370098721055868, 37.737539588147442 ], [ -122.370119388417834, 37.737536169853662 ], [ -122.370138327019674, 37.737532778995096 ], [ -122.370157256636233, 37.737529044913018 ], [ -122.37017617830449, 37.737524967591014 ], [ -122.37021400367405, 37.737516126771574 ], [ -122.370232907361171, 37.737511362724987 ], [ -122.370251803106058, 37.737506255713058 ], [ -122.370270689864256, 37.737500805477644 ], [ -122.370287847523556, 37.73749538296029 ], [ -122.370306725983596, 37.737489589487708 ], [ -122.370325595449458, 37.737483452517054 ], [ -122.370342727177842, 37.737477000039355 ], [ -122.370361588351471, 37.737470520106122 ], [ -122.370378711780674, 37.737463724391766 ], [ -122.370412941358637, 37.737449446778328 ], [ -122.370464233848367, 37.737425970297551 ], [ -122.370498394270641, 37.737408946577332 ], [ -122.370513745375163, 37.737400462163315 ], [ -122.37052385906631, 37.737390000714299 ], [ -122.370534015260773, 37.737381255404934 ], [ -122.370547663865693, 37.737373828103252 ], [ -122.370561364305786, 37.737368460155437 ], [ -122.370576845682166, 37.737365124110752 ], [ -122.370606243142632, 37.737365000764086 ], [ -122.370621879689367, 37.737367842785233 ], [ -122.370637533178453, 37.737371371536177 ], [ -122.370653178706647, 37.737374556499006 ], [ -122.370670526731246, 37.737376684615533 ], [ -122.370687848836141, 37.737377783051812 ], [ -122.370705153660893, 37.737378195033756 ], [ -122.370720694824087, 37.737377261562422 ], [ -122.370737948151799, 37.737375614178688 ], [ -122.370755183506148, 37.737373280351626 ], [ -122.370770656234214, 37.73736960105559 ], [ -122.370787840087672, 37.737365207862915 ], [ -122.370803277557826, 37.737360155669997 ], [ -122.370818689794845, 37.737354073786427 ], [ -122.370832347014144, 37.737346989952236 ], [ -122.370845986935052, 37.737339219115491 ], [ -122.370859609577963, 37.737330762099973 ], [ -122.37087148583683, 37.737321646086173 ], [ -122.370883345501966, 37.737311843608374 ], [ -122.370893458790221, 37.73730138240758 ], [ -122.370905214055995, 37.73728746095329 ], [ -122.370915232622579, 37.737273223985788 ], [ -122.370938760775033, 37.737246068067016 ], [ -122.370952262410057, 37.737232805878257 ], [ -122.370964052918382, 37.737220257585115 ], [ -122.370979300231937, 37.737207654399519 ], [ -122.370992836419262, 37.737195765109583 ], [ -122.371008110346423, 37.737184191861481 ], [ -122.371021663808406, 37.737172989019946 ], [ -122.371038683399732, 37.737162074224159 ], [ -122.371053991182038, 37.737151873609982 ], [ -122.371071037042427, 37.737141988756214 ], [ -122.371088090848829, 37.737132447136844 ], [ -122.371105162626606, 37.737123591955786 ], [ -122.371122242351063, 37.73711508000909 ], [ -122.371141068795652, 37.737107227047161 ], [ -122.371159903532885, 37.737099717313619 ], [ -122.37117875555127, 37.737092894028791 ], [ -122.371197615863039, 37.737086413972314 ], [ -122.371216494148271, 37.737080620353588 ], [ -122.371237109474734, 37.737075142508274 ], [ -122.371256013343697, 37.737070378840897 ], [ -122.371276663229182, 37.737066273617579 ], [ -122.371297321762341, 37.737062511891089 ], [ -122.371316268832857, 37.737059464068786 ], [ -122.371347308485454, 37.737055880822481 ], [ -122.371363160732827, 37.737067303397573 ], [ -122.371385487850503, 37.737061111612277 ], [ -122.371409819958558, 37.737065875598411 ], [ -122.371432414333356, 37.737070323816937 ], [ -122.371456712218176, 37.737073714884438 ], [ -122.371480992125981, 37.737076419506209 ], [ -122.371505255439089, 37.737078437660294 ], [ -122.371529509424818, 37.737080112869066 ], [ -122.371555466903885, 37.73708073037561 ], [ -122.371579678008715, 37.737080689164763 ], [ -122.371603880469053, 37.737080304723065 ], [ -122.371628056995533, 37.737078890598873 ], [ -122.371652224876399, 37.737077133243893 ], [ -122.371676366821816, 37.737074346206427 ], [ -122.371700500120539, 37.737071215938158 ], [ -122.37172460748225, 37.737067055987431 ], [ -122.371748706203064, 37.737062553080534 ], [ -122.371772778971504, 37.737057019942043 ], [ -122.371791673803557, 37.737051912693794 ], [ -122.371807120477257, 37.737047203583948 ], [ -122.371822584094161, 37.737043180929248 ], [ -122.371838065007339, 37.737039844998783 ], [ -122.371853562850688, 37.737037194974249 ], [ -122.371869078682678, 37.737035231662922 ], [ -122.371884611459564, 37.737033954806734 ], [ -122.371907076518241, 37.737033254815913 ], [ -122.371922652170909, 37.737033693814745 ], [ -122.371938237168152, 37.737034476300948 ], [ -122.371953839112081, 37.737035945242191 ], [ -122.371969466994983, 37.737038443858872 ], [ -122.371985103179384, 37.737041285704763 ], [ -122.372000757348985, 37.737044813989243 ], [ -122.372020067187322, 37.7370561815437 ], [ -122.372035876997472, 37.737065887888214 ], [ -122.372049966365637, 37.737075964928742 ], [ -122.372064081677323, 37.737087071645014 ], [ -122.372076467900058, 37.737098205832325 ], [ -122.372088880758042, 37.737110369684729 ], [ -122.372099573180051, 37.737122904509278 ], [ -122.37211027423858, 37.737135782009496 ], [ -122.372119254860294, 37.737149030482428 ], [ -122.372128244823543, 37.737162622169478 ], [ -122.372145506378345, 37.737161318085484 ], [ -122.372167936525273, 37.737159244598097 ], [ -122.372188603686311, 37.73715582594123 ], [ -122.372209253557884, 37.737151721103693 ], [ -122.372228157715924, 37.737146956725766 ], [ -122.372248764338792, 37.737141135477749 ], [ -122.372267624915224, 37.737134655244574 ], [ -122.372283045287503, 37.737128916400529 ], [ -122.372293192944326, 37.737119827982468 ], [ -122.372299822556045, 37.737108391374868 ], [ -122.372301239987792, 37.73709600777574 ], [ -122.372373414633373, 37.737077692981821 ], [ -122.372418232665979, 37.737071830045089 ], [ -122.372464787747589, 37.737066283124271 ], [ -122.372509631380041, 37.737061450384822 ], [ -122.37255449229049, 37.737057303530676 ], [ -122.372599370500893, 37.737053843385567 ], [ -122.372645994751693, 37.737051042199361 ], [ -122.372690898556655, 37.737048611702214 ], [ -122.372735828999197, 37.737047210854271 ], [ -122.372782496496995, 37.737046126017439 ], [ -122.372808401383125, 37.737044683904415 ], [ -122.372830858125084, 37.737043640231676 ], [ -122.372853323170872, 37.737042939785901 ], [ -122.372899999307762, 37.737042197853711 ], [ -122.37292249030402, 37.737042527072028 ], [ -122.372944989951108, 37.737043199511795 ], [ -122.372969218351344, 37.737043844741514 ], [ -122.373014252244417, 37.737046562227299 ], [ -122.373036786152014, 37.737048607558009 ], [ -122.373061049498276, 37.737050625391774 ], [ -122.373083592412328, 37.73705301420835 ], [ -122.37312871282991, 37.73705916390778 ], [ -122.37317385056528, 37.737066000315984 ], [ -122.373196436400818, 37.737070105245131 ], [ -122.373219031568397, 37.737074552835523 ], [ -122.373239897653349, 37.737079028185967 ], [ -122.373285121933037, 37.737089296808776 ], [ -122.373306013982969, 37.737094801824675 ], [ -122.373328651749006, 37.737100966082771 ], [ -122.373370470468529, 37.737113348723689 ], [ -122.373393126235527, 37.737120199135234 ], [ -122.373434996907847, 37.737134641656631 ], [ -122.373455940892711, 37.737142205725576 ], [ -122.373476893541877, 37.737150113291072 ], [ -122.373496125754656, 37.737158391572102 ], [ -122.373538065688621, 37.73717557958782 ], [ -122.373776518618286, 37.737372998626824 ], [ -122.373949450475536, 37.737509653888004 ], [ -122.374125779894442, 37.737643851318353 ], [ -122.374316078561918, 37.737783320091772 ], [ -122.374328378667045, 37.737791021785021 ], [ -122.374342390568998, 37.737798009519793 ], [ -122.374356385166024, 37.737804311076282 ], [ -122.374372082895462, 37.737809555173321 ], [ -122.374387762959685, 37.737814112547987 ], [ -122.374403417067299, 37.737817640792912 ], [ -122.374419053501768, 37.737820482040924 ], [ -122.374434673327585, 37.73782263737381 ], [ -122.374450266821725, 37.73782376248419 ], [ -122.374467562767649, 37.7378238306935 ], [ -122.374483104668272, 37.737822896715045 ], [ -122.3745003576703, 37.737821248786098 ], [ -122.374522744667573, 37.737817458997327 ], [ -122.374650468637824, 37.737875858898875 ], [ -122.374739734976373, 37.737918045764403 ], [ -122.374827316638459, 37.737961976186384 ], [ -122.374913186617448, 37.738006620783011 ], [ -122.374999090980893, 37.738052637675224 ], [ -122.375048414507546, 37.73808824928939 ], [ -122.375108232298459, 37.738128500964891 ], [ -122.375139852148493, 37.738147912836176 ], [ -122.375171464045508, 37.73816698146242 ], [ -122.375203066606062, 37.738185706865586 ], [ -122.375234661212687, 37.738204089023711 ], [ -122.375266237820483, 37.738221784733298 ], [ -122.375299535245929, 37.738239109683342 ], [ -122.375332823679372, 37.738256091403926 ], [ -122.375366094804107, 37.738272386664057 ], [ -122.375399356935574, 37.738288338694765 ], [ -122.375432611110568, 37.738303947479515 ], [ -122.37546757640348, 37.738318842292436 ], [ -122.375502533047822, 37.738333393869439 ], [ -122.375537481043125, 37.738347602210531 ], [ -122.375572411725926, 37.738361124090282 ], [ -122.375609062188403, 37.738374275220636 ], [ -122.375643966907035, 37.738386767402702 ], [ -122.37568059209606, 37.738398888823312 ], [ -122.375717199624106, 37.7384103237871 ], [ -122.375753798499645, 37.738421415514019 ], [ -122.375790388383365, 37.73843216428417 ], [ -122.375828690404418, 37.738442198509603 ], [ -122.375865245990923, 37.738451574074567 ], [ -122.375903521699868, 37.738460578879355 ], [ -122.375941788753465, 37.738469240446264 ], [ -122.375992156916524, 37.738477709334177 ], [ -122.376007733601398, 37.738478148331104 ], [ -122.376025030039884, 37.738478216031723 ], [ -122.376042317820222, 37.738477940778964 ], [ -122.376057859492079, 37.73847700659843 ], [ -122.376075120930508, 37.738475701670041 ], [ -122.376092365729193, 37.738473710277233 ], [ -122.376107872737933, 37.738471403188342 ], [ -122.376125099858029, 37.738468725345385 ], [ -122.376140580868082, 37.738465388575889 ], [ -122.376157790308596, 37.738462024282761 ], [ -122.376188700679592, 37.738453291649634 ], [ -122.376205866785881, 37.738448211222327 ], [ -122.376221296131305, 37.738442814809545 ], [ -122.376265793698082, 37.738424251349997 ], [ -122.376279450587873, 37.738417166611207 ], [ -122.37629309880883, 37.738409738645394 ], [ -122.37632036057704, 37.738393509807281 ], [ -122.376333982797163, 37.738385052434992 ], [ -122.376357734990449, 37.738366819020342 ], [ -122.376369602073851, 37.738357359228573 ], [ -122.376381452512433, 37.738347212973743 ], [ -122.376391573827405, 37.738337094253737 ], [ -122.376401686479809, 37.738326632582023 ], [ -122.376411790448728, 37.738315827134819 ], [ -122.376421885754795, 37.738304678735901 ], [ -122.376430251938501, 37.738293557872694 ], [ -122.376446950667884, 37.738269943226257 ], [ -122.376453571082962, 37.738258163436321 ], [ -122.376017920759935, 37.737991096533946 ], [ -122.37598688059623, 37.737994681015465 ], [ -122.375962730194601, 37.737997125704617 ], [ -122.375940290890341, 37.737998856694041 ], [ -122.375916122804242, 37.738000614653615 ], [ -122.375891946066474, 37.73800202993192 ], [ -122.375869489077928, 37.738003074187837 ], [ -122.375845295342131, 37.738003802450933 ], [ -122.37582109225724, 37.738004187769143 ], [ -122.375798609973742, 37.738004202598695 ], [ -122.375774389906638, 37.738003901450845 ], [ -122.375750161169094, 37.738003256797974 ], [ -122.375727661205985, 37.738002584893898 ], [ -122.37570341480351, 37.738001254060514 ], [ -122.375679160430039, 37.737999579985654 ], [ -122.375656634485836, 37.737997878666114 ], [ -122.375632362435553, 37.737995517861528 ], [ -122.375609819167565, 37.737993130082067 ], [ -122.375585529448685, 37.737990082822328 ], [ -122.37556296919702, 37.737987008302788 ], [ -122.375540391282939, 37.737983247608021 ], [ -122.37551432983625, 37.737978511718602 ], [ -122.375486496320931, 37.737972087487712 ], [ -122.375460382568676, 37.737965292513373 ], [ -122.375432514421007, 37.737957495642242 ], [ -122.375406358052871, 37.737948984242749 ], [ -122.375380184027932, 37.737939786666473 ], [ -122.375353992685788, 37.737929902633333 ], [ -122.375329512792433, 37.737919304628377 ], [ -122.375305015582782, 37.737908020167239 ], [ -122.37528050105756, 37.737896049249933 ], [ -122.375255969224384, 37.737883392151048 ], [ -122.375233148827334, 37.737870020533251 ], [ -122.375210319784216, 37.737856305960051 ], [ -122.375189193529863, 37.73784153419291 ], [ -122.37516805862289, 37.737826419196367 ], [ -122.375146906409697, 37.737810618019523 ], [ -122.375127474300257, 37.737794445826715 ], [ -122.375108024870912, 37.737777586905018 ], [ -122.375090295558422, 37.737760357517622 ], [ -122.375072548933076, 37.737742441676424 ], [ -122.37505479366277, 37.737724182881529 ], [ -122.375038749481291, 37.737705209578436 ], [ -122.375024434427573, 37.737686209306304 ], [ -122.375010102046858, 37.737666522032093 ], [ -122.374995761020472, 37.737646491805087 ], [ -122.374983140446119, 37.737626090835334 ], [ -122.374961338821961, 37.737584547432398 ], [ -122.374950420699136, 37.737563089278161 ], [ -122.374942960095922, 37.737541576104334 ], [ -122.374933762081014, 37.737519747213518 ], [ -122.374928021582775, 37.737497863303837 ], [ -122.374916523276909, 37.737453409032263 ], [ -122.374908906819144, 37.737425717795361 ], [ -122.374901394283526, 37.737402145264888 ], [ -122.374889826731234, 37.737354945185302 ], [ -122.374887491804515, 37.737330946902453 ], [ -122.3748834277893, 37.737306976407964 ], [ -122.374882821609901, 37.737282950341836 ], [ -122.374880487033479, 37.737258952053075 ], [ -122.374882732189576, 37.737210845452722 ], [ -122.374885583514967, 37.737186764643965 ], [ -122.374888443498122, 37.737163027060632 ], [ -122.374893031881015, 37.737139261974114 ], [ -122.37489934935347, 37.73711546937318 ], [ -122.3749056754816, 37.737092019997398 ], [ -122.374921802888267, 37.737045752947004 ], [ -122.374931603466351, 37.737022935008291 ], [ -122.374941413382857, 37.737000460008709 ], [ -122.37495296035803, 37.736978301004505 ], [ -122.374966236069355, 37.736956114489473 ], [ -122.374979529092755, 37.736934614424079 ], [ -122.375009607247023, 37.736892932445095 ], [ -122.375026392362614, 37.736872749981458 ], [ -122.375043186136296, 37.736852911015554 ], [ -122.37504977201327, 37.736839758673845 ], [ -122.375040807874441, 37.736827196605702 ], [ -122.375029742270328, 37.736799903626249 ], [ -122.375025921408564, 37.736785543166128 ], [ -122.37502556634017, 37.73677147091604 ], [ -122.375026931350064, 37.736757027929769 ], [ -122.375028304673904, 37.736742928174571 ], [ -122.375033136164149, 37.736728773387163 ], [ -122.3750397133647, 37.736715277545557 ], [ -122.37504803628174, 37.736702440924056 ], [ -122.375058114591354, 37.736690605907675 ], [ -122.375071641371591, 37.736678372922562 ], [ -122.375085194128815, 37.73666716961273 ], [ -122.375098729567796, 37.736655280124666 ], [ -122.375110518931734, 37.736642731146382 ], [ -122.375122290631623, 37.736629495995757 ], [ -122.375132325623056, 37.736615945119389 ], [ -122.375140614208931, 37.736601735308589 ], [ -122.375147156735764, 37.736586866558262 ], [ -122.375155332379663, 37.736568194818872 ], [ -122.375160085887146, 37.736550950995301 ], [ -122.375166117416924, 37.736515831932394 ], [ -122.375169124525783, 37.736497929449705 ], [ -122.375168232453305, 37.736462576936368 ], [ -122.375163874266519, 37.736426936496883 ], [ -122.375219437861915, 37.736298664625259 ], [ -122.375236617355156, 37.736225597875112 ], [ -122.375493436762397, 37.736054292153611 ], [ -122.375564665724326, 37.73599856352913 ], [ -122.375665547467477, 37.735884334377992 ], [ -122.375736776137472, 37.735828605647917 ], [ -122.375805543594495, 37.735812402863488 ], [ -122.37590130745248, 37.735838004215466 ], [ -122.375948138753657, 37.735843438862048 ], [ -122.375966461137224, 37.735815678053854 ], [ -122.375965386747623, 37.735773118079564 ], [ -122.375936427668094, 37.735722074898895 ], [ -122.375905272384003, 37.735652524496416 ], [ -122.375880455265374, 37.735628540802992 ], [ -122.375898405065016, 37.735586021302886 ], [ -122.375909891231828, 37.735561459614892 ], [ -122.375897018810662, 37.735531105204046 ], [ -122.375855226545227, 37.735519752858821 ], [ -122.375828603150225, 37.735492707640475 ], [ -122.37586986690205, 37.735483123506768 ], [ -122.375876469825457, 37.735470657017984 ], [ -122.375850080018679, 37.735452878901683 ], [ -122.375875629426574, 37.73543736440692 ], [ -122.375902751563189, 37.735415643772811 ], [ -122.37592791070513, 37.735384683844323 ], [ -122.375963949778878, 37.735305136416706 ], [ -122.375989997452365, 37.735240856058539 ], [ -122.376000720711573, 37.735186090510247 ], [ -122.375916941813387, 37.735087162261337 ], [ -122.375874456680464, 37.735048351870503 ], [ -122.37583223555086, 37.735088510886278 ], [ -122.375790902711827, 37.735095349476808 ], [ -122.375731004666164, 37.735120338792314 ], [ -122.375697972699726, 37.73518198337095 ], [ -122.375629431028628, 37.735207109686826 ], [ -122.375573154825574, 37.735238564895731 ], [ -122.37553454675556, 37.735284846828293 ], [ -122.375502844795335, 37.735330675452381 ], [ -122.375460320132888, 37.735358821434986 ], [ -122.375407345243758, 37.735384043468251 ], [ -122.375373074275174, 37.73539660668353 ], [ -122.375319406071526, 37.735394370629407 ], [ -122.375255063184753, 37.735380286724919 ], [ -122.375204090598487, 37.735347791725545 ], [ -122.375165443829161, 37.735324028264564 ], [ -122.37512657258921, 37.735291340362735 ], [ -122.375075747344539, 37.735264680144091 ], [ -122.375062572554327, 37.735222312735722 ], [ -122.375055042872361, 37.735198053755049 ], [ -122.375042101935179, 37.735164953712463 ], [ -122.375037873785985, 37.735134461646254 ], [ -122.375036955812135, 37.735098079446828 ], [ -122.375058051950944, 37.735043149193146 ], [ -122.375007538650593, 37.735028844794947 ], [ -122.3749660498938, 37.735029505033381 ], [ -122.374934543651534, 37.735014555319857 ], [ -122.374908309749543, 37.735002954785188 ], [ -122.374876500793206, 37.734975991875665 ], [ -122.374871744160856, 37.734924563038625 ], [ -122.374892528974101, 37.73485727640653 ], [ -122.374913772355171, 37.7348081807394 ], [ -122.374946666252242, 37.734741044765023 ], [ -122.374988965601105, 37.734703975095854 ], [ -122.375029917257038, 37.734682034854018 ], [ -122.375070713005826, 37.734653916534754 ], [ -122.375104671911529, 37.734628997279636 ], [ -122.375115698854458, 37.734586244981536 ], [ -122.375146199993921, 37.734561380743287 ], [ -122.375129646198275, 37.734522157113517 ], [ -122.375090930945873, 37.734495647813482 ], [ -122.375036267841509, 37.734453940390075 ], [ -122.374981985833443, 37.734427335148574 ], [ -122.374938543580228, 37.734419099017749 ], [ -122.374912994333698, 37.734434613586529 ], [ -122.374893666730827, 37.734422560335261 ], [ -122.374893060571651, 37.734398534257735 ], [ -122.374907614581076, 37.734358472486285 ], [ -122.374894292846008, 37.734310270489409 ], [ -122.374881421402023, 37.734279915955867 ], [ -122.37487704615539, 37.734243588766795 ], [ -122.374869213561681, 37.734207316868407 ], [ -122.374868295688771, 37.734170934936692 ], [ -122.374926339800538, 37.734072496020858 ], [ -122.374952543818168, 37.734014394217503 ], [ -122.374954780508872, 37.73396594408409 ], [ -122.374957241667502, 37.733926418380705 ], [ -122.374963229775304, 37.733889582909434 ], [ -122.374983289721541, 37.733862137955839 ], [ -122.375012218505518, 37.733843479312256 ], [ -122.375069108753891, 37.733836393394171 ], [ -122.375122463708166, 37.733826273440556 ], [ -122.375153432543385, 37.73381994338358 ], [ -122.375171833015472, 37.733795271716147 ], [ -122.375171062228418, 37.733764724622461 ], [ -122.375229769357603, 37.733624041261521 ], [ -122.375288514453459, 37.733553403441164 ], [ -122.375324856119903, 37.733485869092775 ], [ -122.375361353624825, 37.733424512796418 ], [ -122.375375681648336, 37.73337552709593 ], [ -122.375382713915272, 37.733311549522142 ], [ -122.375463619327064, 37.733228197775681 ], [ -122.375509608742206, 37.733200339972562 ], [ -122.375523633451934, 37.73313934134989 ], [ -122.37550722668901, 37.733105952882383 ], [ -122.375651602500071, 37.732933689521552 ], [ -122.375685404494646, 37.732902592027898 ], [ -122.375688325042901, 37.732881256983333 ], [ -122.375650684266844, 37.732897307862871 ], [ -122.375550384562601, 37.732828858101236 ], [ -122.375617693995721, 37.732754993758505 ], [ -122.375573481700997, 37.732716210488881 ], [ -122.375197427066922, 37.732959117287578 ], [ -122.375009435995196, 37.732773602543226 ], [ -122.374988848118562, 37.732780110729863 ], [ -122.374969139909751, 37.732752955276041 ], [ -122.374890774233947, 37.732799869727202 ], [ -122.374867609109913, 37.732772769268017 ], [ -122.374833347919932, 37.732785675832154 ], [ -122.374804918949508, 37.732755568576273 ], [ -122.374609189594366, 37.732880233977106 ], [ -122.374557526391285, 37.732820280340718 ], [ -122.37490487958712, 37.732604958073601 ], [ -122.374821719829242, 37.732530398040169 ], [ -122.37467574043562, 37.732639163620497 ], [ -122.37439309494539, 37.732540308159429 ], [ -122.374310276013688, 37.732547806255845 ], [ -122.374229713731395, 37.732576213850287 ], [ -122.374176359200263, 37.732586333132673 ], [ -122.374120153956625, 37.732620533463049 ], [ -122.374114165533243, 37.73265736889919 ], [ -122.374052159400549, 37.732667282379175 ], [ -122.374002184525267, 37.73267425782587 ], [ -122.373911483788106, 37.732712096999926 ], [ -122.373893083165825, 37.732736768474979 ], [ -122.373883628328045, 37.732773315665987 ], [ -122.373790281780344, 37.732774800286634 ], [ -122.373761509214617, 37.732799636420175 ], [ -122.373753549290342, 37.732826888733754 ], [ -122.373747327007891, 37.732854456775314 ], [ -122.373725625111732, 37.732885361268295 ], [ -122.373694734433712, 37.732894780258938 ], [ -122.373637610789032, 37.732892598419873 ], [ -122.373568854206965, 37.732909142898315 ], [ -122.37354165442683, 37.732927773970779 ], [ -122.373512804196523, 37.732949521278634 ], [ -122.37350146473058, 37.732979917309954 ], [ -122.373503074145475, 37.733043757608968 ], [ -122.373500309404122, 37.733071270654619 ], [ -122.373481674928072, 37.73308667468919 ], [ -122.373435459514155, 37.733105607832456 ], [ -122.373412831615411, 37.733099787091327 ], [ -122.373389322638175, 37.733127629980004 ], [ -122.373370999608952, 37.73315539040528 ], [ -122.373326815604614, 37.733186309201884 ], [ -122.373292553942591, 37.733199214767993 ], [ -122.373255060257023, 37.73322109971145 ], [ -122.373217868644616, 37.733254997012843 ], [ -122.373184748909821, 37.733313208646514 ], [ -122.373147255135009, 37.733335093555283 ], [ -122.373108032325476, 37.733357005665319 ], [ -122.373055135575555, 37.733385315688466 ], [ -122.373026509933439, 37.733415986475677 ], [ -122.372989171414929, 37.733444049131762 ], [ -122.372947104996001, 37.733490385196987 ], [ -122.372903457602277, 37.733542583556414 ], [ -122.372843059429968, 37.73361633669991 ], [ -122.372787475219468, 37.733675248937253 ], [ -122.372660653342237, 37.733789544305665 ], [ -122.372615406285462, 37.73384691842643 ], [ -122.372571792697812, 37.733900489569244 ], [ -122.372542285196062, 37.733964824408801 ], [ -122.372515465283058, 37.733998556633921 ], [ -122.372467598558771, 37.73402060589649 ], [ -122.372390422139858, 37.734046211198297 ], [ -122.372337516324379, 37.734074177664638 ], [ -122.372263676850309, 37.734163595440648 ], [ -122.372229942026564, 37.734197437754013 ], [ -122.37219905926051, 37.734207199576488 ], [ -122.372135400372358, 37.734220228553554 ], [ -122.372066183983833, 37.734218581449781 ], [ -122.37202454003129, 37.734213062859681 ], [ -122.371977485584694, 37.734198702222137 ], [ -122.371931036017173, 37.73420836793948 ], [ -122.371912020534467, 37.734208670054151 ], [ -122.371892468688813, 37.734187692159942 ], [ -122.371850522169254, 37.73417016004948 ], [ -122.371815256975381, 37.734143251243232 ], [ -122.37178360511767, 37.734122465563011 ], [ -122.371757069813924, 37.734098851958706 ], [ -122.371718425134958, 37.734075087082275 ], [ -122.371658811600753, 37.734042727577382 ], [ -122.37159046796063, 37.734007073362946 ], [ -122.371530163390418, 37.733947255979729 ], [ -122.371503472637912, 37.733917463974464 ], [ -122.371452035953411, 37.733866433138324 ], [ -122.371412863920071, 37.733821731652299 ], [ -122.371365343126712, 37.733788836837448 ], [ -122.371306006337434, 37.733698787998705 ], [ -122.37124803587426, 37.73366296856193 ], [ -122.371181508213965, 37.733630718908138 ], [ -122.371142786185317, 37.733603864806447 ], [ -122.371119319714566, 37.733564750701184 ], [ -122.371068652635969, 37.733544266816153 ], [ -122.37104196222009, 37.733514474978968 ], [ -122.371009541074471, 37.733463141702856 ], [ -122.370970292434578, 37.733415350746299 ], [ -122.370945321772282, 37.733385187940364 ], [ -122.370906375642221, 37.733349409875622 ], [ -122.370882676078168, 37.733301028616602 ], [ -122.370853876981954, 37.733256162236223 ], [ -122.370812000355784, 37.733241375562343 ], [ -122.370762102212552, 37.733251438949395 ], [ -122.3707392498319, 37.733236693541137 ], [ -122.370742015947201, 37.733209180555527 ], [ -122.370734029961071, 37.733166730305776 ], [ -122.370713641007328, 37.733112459546398 ], [ -122.370604476976737, 37.73303521894465 ], [ -122.370512089823777, 37.733006126395267 ], [ -122.370444949736466, 37.73294950753936 ], [ -122.370336702208434, 37.732908648655865 ], [ -122.370231912105666, 37.732867735066925 ], [ -122.37017410658585, 37.732838436949166 ], [ -122.370077726716076, 37.732788118918357 ], [ -122.369991114296425, 37.732713610079365 ], [ -122.369927812152071, 37.732672038006164 ], [ -122.369888943911135, 37.73263934837334 ], [ -122.369823835861169, 37.732594714362811 ], [ -122.369764448866945, 37.732571278048333 ], [ -122.369664767427579, 37.732527192896548 ], [ -122.369608556728025, 37.732490658570462 ], [ -122.369587411983062, 37.732476915661685 ], [ -122.369536133374979, 37.732432062044303 ], [ -122.369522426580374, 37.732368414248455 ], [ -122.369524131442745, 37.732298684450967 ], [ -122.369528168991479, 37.732252953067388 ], [ -122.369514764766407, 37.732201317633788 ], [ -122.369460037420595, 37.732156862346898 ], [ -122.369435499832107, 37.732143860523472 ], [ -122.369412699166176, 37.732131174223944 ], [ -122.369391627493243, 37.732118460761214 ], [ -122.369368818907404, 37.732105431490474 ], [ -122.369347729982366, 37.732092031567248 ], [ -122.369305534888653, 37.732064545256826 ], [ -122.36928614837251, 37.732050088222451 ], [ -122.369265033578955, 37.732035658605412 ], [ -122.369208612399049, 37.731992603257169 ], [ -122.36919310687361, 37.731994909435159 ], [ -122.369177583743095, 37.731996529438547 ], [ -122.369162034700395, 37.731997119211783 ], [ -122.369144739776431, 37.731997050503772 ], [ -122.369129147571257, 37.731995924141103 ], [ -122.369113529476451, 37.731993768371993 ], [ -122.369097893772235, 37.731990926153657 ], [ -122.369082241496287, 37.731987397469659 ], [ -122.369068291609253, 37.731982811686983 ], [ -122.369052587205204, 37.731977223921163 ], [ -122.369038602793921, 37.731971265229653 ], [ -122.369026321118199, 37.73196424943503 ], [ -122.36900353818659, 37.731952249503117 ], [ -122.368984376529525, 37.731946716297898 ], [ -122.368965231792913, 37.731941869547697 ], [ -122.368946113651845, 37.731938052736979 ], [ -122.368927003791569, 37.731934578880427 ], [ -122.368907928458668, 37.731932477926101 ], [ -122.368887133122826, 37.731930747340918 ], [ -122.368868091978015, 37.73193001956556 ], [ -122.368847348437356, 37.731930348605978 ], [ -122.368826613520639, 37.731931020594487 ], [ -122.368807642108294, 37.731933038334546 ], [ -122.368788678980067, 37.731935399303374 ], [ -122.368768013114249, 37.731938817366917 ], [ -122.368749101767222, 37.731943237687446 ], [ -122.368730207333343, 37.731948344463113 ], [ -122.368711330849322, 37.731954137677484 ], [ -122.368694217167373, 37.731961276382087 ], [ -122.368680664304932, 37.731972478965581 ], [ -122.368668865613287, 37.731984683814787 ], [ -122.368657084876617, 37.73199757537909 ], [ -122.368648777958526, 37.732011098297363 ], [ -122.368640488989229, 37.732025307656784 ], [ -122.368633936925264, 37.73203983255609 ], [ -122.368629130411534, 37.732055016771099 ], [ -122.368626053219003, 37.732070173558292 ], [ -122.368624712941653, 37.732085646160606 ], [ -122.368625101296246, 37.732101091346223 ], [ -122.368627218283763, 37.732116509115187 ], [ -122.368631063559619, 37.732131899472847 ], [ -122.368636620901697, 37.732146575949926 ], [ -122.368642134756229, 37.73215953657504 ], [ -122.36864418270045, 37.732172208258227 ], [ -122.368644510648082, 37.732185250859203 ], [ -122.368643101337838, 37.732197977925267 ], [ -122.368638226113163, 37.732210416049476 ], [ -122.368633341924749, 37.732222511501767 ], [ -122.368624983881077, 37.732233974774296 ], [ -122.368616599605744, 37.732244408647276 ], [ -122.368606469086217, 37.732254183488791 ], [ -122.368594576099341, 37.732262612829288 ], [ -122.368580928237833, 37.732270039911 ], [ -122.368565516878832, 37.732276121781609 ], [ -122.368551791336984, 37.732280459548285 ], [ -122.368534574353816, 37.732283479507736 ], [ -122.368503527583357, 37.732286718795137 ], [ -122.368474192879688, 37.732289244196302 ], [ -122.368444831940408, 37.732290739916586 ], [ -122.368417182378593, 37.732291521763315 ], [ -122.368387786921161, 37.732291644563965 ], [ -122.368358365231217, 37.732290737683726 ], [ -122.368330655267144, 37.732289116925642 ], [ -122.368301199755848, 37.732286837114728 ], [ -122.368273446651969, 37.732283500211402 ], [ -122.368243956285454, 37.732279847486197 ], [ -122.368216168673811, 37.732275137663905 ], [ -122.368188355181374, 37.73226939815595 ], [ -122.368160533065264, 37.732263315415068 ], [ -122.368141380018642, 37.732258125299396 ], [ -122.368113230055812, 37.732238999945096 ], [ -122.36808681703171, 37.732220190681751 ], [ -122.368058684352292, 37.732201751767072 ], [ -122.36803056030729, 37.7321836557974 ], [ -122.368002444910147, 37.732165903321956 ], [ -122.367974346780599, 37.732148837292527 ], [ -122.367944520376312, 37.73213179865752 ], [ -122.367916439533545, 37.732115419341561 ], [ -122.367886638690265, 37.732099410376478 ], [ -122.367832352327795, 37.732072458330258 ], [ -122.367819906502248, 37.73205892111374 ], [ -122.367804021362375, 37.732046125146958 ], [ -122.367788153134725, 37.73203401563628 ], [ -122.367772302171431, 37.732022592850853 ], [ -122.36775646811256, 37.732011856247048 ], [ -122.36773719473392, 37.732001860615576 ], [ -122.367719666903668, 37.731992524310549 ], [ -122.367700427353682, 37.731983901864261 ], [ -122.367681205751111, 37.731975965856719 ], [ -122.367660281054071, 37.731969086933262 ], [ -122.367641110867112, 37.73196321028319 ], [ -122.367620229304634, 37.731958047484753 ], [ -122.367599364995712, 37.731953571135463 ], [ -122.367576797935783, 37.73195015186301 ], [ -122.367555976757444, 37.731947391638229 ], [ -122.367533461105907, 37.731946031721549 ], [ -122.367512683055082, 37.731944987621269 ], [ -122.367483296703725, 37.731945453417282 ], [ -122.367460850404399, 37.731946839567364 ], [ -122.367440158593624, 37.731949227444112 ], [ -122.367417755407999, 37.731952329443608 ], [ -122.367397106730152, 37.731956433994185 ], [ -122.367376475284885, 37.731961224444852 ], [ -122.367355869716533, 37.731967044845845 ], [ -122.367335281393224, 37.731973551696129 ], [ -122.367316447568555, 37.731981060824729 ], [ -122.367295902357668, 37.73198928380036 ], [ -122.367278831305327, 37.731998138437078 ], [ -122.367261967911546, 37.732015230495207 ], [ -122.367245095194775, 37.732031979335368 ], [ -122.3672282059146, 37.732048041709206 ], [ -122.367209570402153, 37.732063445029034 ], [ -122.36719092591278, 37.732078505124896 ], [ -122.367170544505385, 37.732093249381123 ], [ -122.367151866198881, 37.732106936553961 ], [ -122.367109296757391, 37.732133363410995 ], [ -122.367093954975161, 37.732142190615349 ], [ -122.367075008646182, 37.732145238041312 ], [ -122.367056088868793, 37.732149314858027 ], [ -122.367037194611967, 37.732154421356583 ], [ -122.367020054502376, 37.732160529869304 ], [ -122.367002940956212, 37.732167668322553 ], [ -122.366985852582928, 37.732175836463647 ], [ -122.366968782142251, 37.732184691044218 ], [ -122.366955194489435, 37.732194520522967 ], [ -122.366939895442201, 37.732205063845008 ], [ -122.366921113252403, 37.732214632268928 ], [ -122.366907922208441, 37.732240250159542 ], [ -122.366903055326574, 37.732253031987497 ], [ -122.36689644254804, 37.732265154204406 ], [ -122.366886346633592, 37.732276301798386 ], [ -122.366876207612776, 37.732285733533743 ], [ -122.366862576812395, 37.732293846594757 ], [ -122.366847157024765, 37.732299584734065 ], [ -122.366829956520121, 37.73230329090832 ], [ -122.366814424990764, 37.732304567093777 ], [ -122.366797104132374, 37.732303468361799 ], [ -122.366781459823102, 37.732300282335181 ], [ -122.366765755862758, 37.732294693984812 ], [ -122.366677289399263, 37.732215062245395 ], [ -122.365834112470068, 37.733139703386506 ], [ -122.365856312715465, 37.733197380427903 ], [ -122.365316308712423, 37.733799605173139 ], [ -122.365299125359911, 37.733803997570533 ], [ -122.365281864478533, 37.733805301201542 ], [ -122.365264543279295, 37.733804201695385 ], [ -122.365248890111999, 37.733800672514192 ], [ -122.365233177335227, 37.733794740734439 ], [ -122.365220860913354, 37.733786351644746 ], [ -122.36520850211312, 37.733776246410308 ], [ -122.365199556897281, 37.733764370320301 ], [ -122.365194052497998, 37.733751753307722 ], [ -122.365191987516951, 37.733738394845759 ], [ -122.366541619606664, 37.732183905191341 ], [ -122.366457610712786, 37.732144032787161 ], [ -122.366314210759612, 37.732287082999953 ], [ -122.3662299863946, 37.73223862977143 ], [ -122.365558974179407, 37.732995040740846 ], [ -122.365446339012479, 37.733054852496743 ], [ -122.365330791791507, 37.732998653575926 ], [ -122.365348830518258, 37.732890552295949 ], [ -122.366182259071422, 37.731990790641241 ], [ -122.366150729675482, 37.731974808623058 ], [ -122.366190760220135, 37.731916146203794 ], [ -122.366000047621938, 37.731827832578617 ], [ -122.365157289100338, 37.732769287028631 ], [ -122.365013538239467, 37.732829590952356 ], [ -122.364937337201866, 37.732756287397883 ], [ -122.364966161751269, 37.732664496598098 ], [ -122.365779063978152, 37.731773647061175 ], [ -122.365808723306458, 37.731715149013056 ], [ -122.36565085480737, 37.73162631442078 ], [ -122.364828209515139, 37.732542382802549 ], [ -122.364733415884473, 37.732486198184951 ], [ -122.36510850587311, 37.732065821885968 ], [ -122.363700263748257, 37.731284294325405 ], [ -122.362990310438022, 37.732074612690823 ], [ -122.362876152103269, 37.73214268678057 ], [ -122.362621964702214, 37.732005583479989 ], [ -122.363403772813015, 37.731115242143439 ], [ -122.362852893371198, 37.730800849481362 ], [ -122.362060297076368, 37.731674875973241 ], [ -122.361775005493385, 37.731538605834466 ], [ -122.362457618945527, 37.730761087830871 ], [ -122.36256707070703, 37.730643300895977 ], [ -122.361976423103286, 37.73032884619532 ], [ -122.362085849184908, 37.730210029743688 ], [ -122.362069397962841, 37.730199017017426 ], [ -122.361906454524132, 37.730089941350215 ], [ -122.361876896198638, 37.7300835409455 ], [ -122.361847355773691, 37.730077827250902 ], [ -122.361816112221945, 37.7300731708266 ], [ -122.361786605500626, 37.73006882976096 ], [ -122.361755405286033, 37.7300658891753 ], [ -122.361724221585348, 37.730063635320825 ], [ -122.361693055759957, 37.73006206735193 ], [ -122.361661915051329, 37.730061529615817 ], [ -122.361630792215976, 37.730061677765306 ], [ -122.36159969448822, 37.730062855873037 ], [ -122.361570343233169, 37.730064693102427 ], [ -122.361539288834621, 37.730067587323632 ], [ -122.361508260224696, 37.730071511217581 ], [ -122.361487577348555, 37.730074241551335 ], [ -122.361465200270104, 37.730078372100991 ], [ -122.36144452599406, 37.730081445928768 ], [ -122.361422114524615, 37.730084203562313 ], [ -122.361399676911404, 37.730085931241504 ], [ -122.361377231405925, 37.730087316227653 ], [ -122.361354776950733, 37.730088357713434 ], [ -122.361334025287775, 37.730088341929708 ], [ -122.361311536447275, 37.730088010499266 ], [ -122.361266507191544, 37.730085288263524 ], [ -122.36124396677755, 37.73008289745821 ], [ -122.361223137761826, 37.730079792886535 ], [ -122.361200571564154, 37.73007637239192 ], [ -122.361179716772469, 37.730072238406137 ], [ -122.361157115844946, 37.730067444726025 ], [ -122.361136235265462, 37.730062280776941 ], [ -122.361115337498504, 37.730056430370134 ], [ -122.361094422544639, 37.73004989350558 ], [ -122.361073490411371, 37.73004267045787 ], [ -122.361054278613267, 37.730035076593815 ], [ -122.361035057871703, 37.730027139230472 ], [ -122.361015811356936, 37.73001817245752 ], [ -122.360991310330121, 37.730006541779254 ], [ -122.360878119757459, 37.729906007842899 ], [ -122.360753350678607, 37.729964633086148 ], [ -122.360767411397134, 37.729973682080846 ], [ -122.360779769645887, 37.729983787501872 ], [ -122.360792153340185, 37.729994922882732 ], [ -122.360802816699632, 37.730006428796685 ], [ -122.360811777948271, 37.730018991681831 ], [ -122.360819018860866, 37.730031925100903 ], [ -122.360824539436592, 37.730045229054205 ], [ -122.360830077893482, 37.730059219450361 ], [ -122.360833887418579, 37.730073237154031 ], [ -122.360834600711755, 37.730101724997503 ], [ -122.360833232727501, 37.73011616811506 ], [ -122.360830128237026, 37.730130294747774 ], [ -122.360825286222877, 37.73014410573559 ], [ -122.360820435267328, 37.730157573501607 ], [ -122.360812119233699, 37.73017075290813 ], [ -122.360803785650091, 37.730183245316248 ], [ -122.36079369735269, 37.730194735624472 ], [ -122.360781872558661, 37.730205909995462 ], [ -122.360768293049901, 37.730216082265592 ], [ -122.360754687743039, 37.730225224303872 ], [ -122.360741056659265, 37.73023333693407 ], [ -122.360665462649848, 37.730253072686551 ], [ -122.360627639840885, 37.730261910451617 ], [ -122.360550239838858, 37.730278584111481 ], [ -122.360510654054025, 37.730286076778114 ], [ -122.360471050717251, 37.730292882433631 ], [ -122.360433168073058, 37.730299317816012 ], [ -122.360393539299068, 37.730305094033461 ], [ -122.360353901588383, 37.730310527290548 ], [ -122.36031424736656, 37.730315273520141 ], [ -122.360274575618163, 37.730319333562264 ], [ -122.36023489527426, 37.730323050363999 ], [ -122.360195197398738, 37.730326080703698 ], [ -122.360155491620617, 37.730328767792003 ], [ -122.36011403972519, 37.730330795984656 ], [ -122.360074299227378, 37.730332109868229 ], [ -122.360034550144817, 37.730333080785911 ], [ -122.359994783535413, 37.730333365241471 ], [ -122.359955000437409, 37.730332963218565 ], [ -122.359915208404431, 37.73033221796058 ], [ -122.359854003265156, 37.730305028433676 ], [ -122.359236184689337, 37.730009873800213 ], [ -122.358789557472875, 37.729783434605018 ], [ -122.358957232902597, 37.729711773403928 ], [ -122.358843527027545, 37.729659659273459 ], [ -122.358967948048644, 37.72951794751873 ], [ -122.361421463309, 37.72895351973942 ], [ -122.361888691367042, 37.728828706580281 ], [ -122.361912779413899, 37.728823862451726 ], [ -122.361935121341887, 37.72881835863901 ], [ -122.361959166726493, 37.728811798085822 ], [ -122.361981474603837, 37.72880492162534 ], [ -122.362003764939914, 37.728797358986661 ], [ -122.3620260473499, 37.728789452556619 ], [ -122.362046575060617, 37.728780544041506 ], [ -122.36206882272441, 37.728771264975364 ], [ -122.362089324633246, 37.728761327046321 ], [ -122.362109817923212, 37.728751045337532 ], [ -122.362128556858551, 37.728739761540034 ], [ -122.362149024344589, 37.728728450417933 ], [ -122.362167737129766, 37.728716137213183 ], [ -122.362184713430636, 37.728703507540494 ], [ -122.36220340934922, 37.728690507870553 ], [ -122.362220359498949, 37.7286768487917 ], [ -122.362237301035364, 37.728662846208799 ], [ -122.362250811264033, 37.72864992822533 ], [ -122.362262661390673, 37.728639783385113 ], [ -122.36227275785032, 37.728628636175188 ], [ -122.362281099606278, 37.728616486612424 ], [ -122.362287695612011, 37.728603678193288 ], [ -122.362292545854572, 37.728590210368907 ], [ -122.362295667196847, 37.728576769873541 ], [ -122.36229531457775, 37.728562697566197 ], [ -122.362293242345899, 37.72854899552955 ], [ -122.362289449824587, 37.728535664323587 ], [ -122.362282165799911, 37.728521014856675 ], [ -122.36224367326102, 37.72850308198516 ], [ -122.36222272423764, 37.72849517213659 ], [ -122.362203512030703, 37.728487578468915 ], [ -122.362182580222708, 37.728480355341809 ], [ -122.362161665625351, 37.728473818939591 ], [ -122.36213904001275, 37.728467995754578 ], [ -122.362118159814372, 37.728462831978135 ], [ -122.362095568274697, 37.728458382247503 ], [ -122.36207471387344, 37.728454247869884 ], [ -122.362052148130076, 37.728450827537444 ], [ -122.362029590642308, 37.728447750433155 ], [ -122.362007059652058, 37.728445703269323 ], [ -122.361984536902597, 37.72844399878452 ], [ -122.361962039957774, 37.728443324251103 ], [ -122.361939551266488, 37.728442992945915 ], [ -122.361917071865491, 37.728443004852515 ], [ -122.361894617914601, 37.72844404644146 ], [ -122.361872181160052, 37.728445774480214 ], [ -122.361849752657179, 37.728447845747191 ], [ -122.361830790542825, 37.728450205592154 ], [ -122.36144874592047, 37.728523885066956 ], [ -122.359253585410741, 37.729046466872113 ], [ -122.358871094316868, 37.729171649615353 ], [ -122.35773138480485, 37.729443027877707 ], [ -122.357479163493281, 37.729245451178592 ], [ -122.357874687244575, 37.728949759623752 ], [ -122.360022133800982, 37.7284550828631 ], [ -122.360041044772572, 37.728450663666095 ], [ -122.360061675709247, 37.728445874222452 ], [ -122.360082280872575, 37.728440055093671 ], [ -122.360102877442358, 37.728433892734103 ], [ -122.360121736868166, 37.728427414435657 ], [ -122.360140578770867, 37.728420249959875 ], [ -122.360159404166396, 37.728412398466652 ], [ -122.36017822062847, 37.728404204023278 ], [ -122.360197019904888, 37.728395323122534 ], [ -122.360214082043697, 37.728386126559464 ], [ -122.360231126982725, 37.728376242990407 ], [ -122.360248163333068, 37.728366016466275 ], [ -122.36026519109457, 37.728355446987074 ], [ -122.360282201662045, 37.728344190776504 ], [ -122.36029747473269, 37.728332618361613 ], [ -122.360312739905595, 37.728320702981229 ], [ -122.36033977808566, 37.728295553906939 ], [ -122.360351645599536, 37.728286095712676 ], [ -122.360365302143265, 37.728279012806425 ], [ -122.360378915726486, 37.728270213762769 ], [ -122.360389029601677, 37.728259753167933 ], [ -122.360397388807456, 37.728248290192134 ], [ -122.360404002281641, 37.728236168057407 ], [ -122.360407132887943, 37.728223070833039 ], [ -122.360408534948149, 37.728210000904646 ], [ -122.360406479925388, 37.728196985842978 ], [ -122.360402696345233, 37.728183997528113 ], [ -122.360395481466924, 37.728172094035642 ], [ -122.360384800897904, 37.728159901357934 ], [ -122.360355252076161, 37.728153844345819 ], [ -122.360324001174106, 37.728148844017177 ], [ -122.360292766760338, 37.728144529870931 ], [ -122.360263287371851, 37.728141218642236 ], [ -122.360232104855839, 37.72813896383753 ], [ -122.360200939536938, 37.728137396028139 ], [ -122.360168062497735, 37.728136541413733 ], [ -122.360136940472302, 37.728136689443289 ], [ -122.360105834935908, 37.728137523929909 ], [ -122.360074755867601, 37.72813938835359 ], [ -122.3600437018695, 37.728142282186987 ], [ -122.360012665740157, 37.728145862455676 ], [ -122.359981646088997, 37.728150128906918 ], [ -122.359962709760239, 37.728153518132949 ], [ -122.357157402740128, 37.728825440588068 ], [ -122.357120443323197, 37.728661209162873 ], [ -122.356966039195882, 37.728710340572775 ], [ -122.357700794819991, 37.726282170189641 ], [ -122.358012892774155, 37.726039297958998 ], [ -122.361640904109578, 37.725218727031361 ], [ -122.361254856267323, 37.72416520811381 ], [ -122.357961297733482, 37.724943754212269 ], [ -122.357837451289754, 37.724623976380613 ], [ -122.361242175061918, 37.723839816434847 ], [ -122.361523474456462, 37.723775023602428 ], [ -122.362006156184762, 37.724061314272362 ], [ -122.362085553062059, 37.723986579862476 ], [ -122.364138473489092, 37.725245158496556 ], [ -122.364903800810126, 37.725700019832075 ], [ -122.364922994995325, 37.725706926339846 ], [ -122.364942154395848, 37.72571246021662 ], [ -122.364961297265722, 37.725717307625388 ], [ -122.364980405349158, 37.725720782403215 ], [ -122.364999487582764, 37.725723226947871 ], [ -122.365020272471824, 37.725724614719347 ], [ -122.365041031523262, 37.725724972806269 ], [ -122.365060035904975, 37.725724328578444 ], [ -122.365080734672432, 37.725722284344187 ], [ -122.365099679446047, 37.725719237235722 ], [ -122.365120326525016, 37.725715133358143 ], [ -122.365139219276756, 37.72571002716159 ], [ -122.365158077572545, 37.72570354805417 ], [ -122.365175190160244, 37.725696410130439 ], [ -122.365192276890355, 37.725688241974169 ], [ -122.365209337782844, 37.725679044409119 ], [ -122.365224644000321, 37.725668844532997 ], [ -122.365239933677543, 37.725657958189977 ], [ -122.365253477293393, 37.725646412763744 ], [ -122.365266995070428, 37.725633837929628 ], [ -122.365277047249194, 37.725620974052937 ], [ -122.365288802072243, 37.725607053401404 ], [ -122.365297091312215, 37.725592844257413 ], [ -122.365305371596236, 37.725578292165878 ], [ -122.365311906499173, 37.725563080433261 ], [ -122.365316704663556, 37.725547553385105 ], [ -122.365321493859298, 37.725531682840639 ], [ -122.365324157971415, 37.725500050955006 ], [ -122.365323753109038, 37.725483919287925 ], [ -122.365321628734094, 37.725468158485079 ], [ -122.365319495386515, 37.725452053911503 ], [ -122.365308348911952, 37.725421327973351 ], [ -122.36530105597663, 37.725406335184097 ], [ -122.365293771671986, 37.725391686170454 ], [ -122.365052724436055, 37.725226224132847 ], [ -122.362366609167395, 37.723678947002448 ], [ -122.362750319199407, 37.723258784478411 ], [ -122.359975808223695, 37.721629071078588 ], [ -122.360235314638061, 37.721358523571041 ], [ -122.362997490302945, 37.722979154853967 ], [ -122.363810654823226, 37.722102046578357 ], [ -122.359221672042082, 37.719406711581087 ], [ -122.359190415962686, 37.719401367722426 ], [ -122.359178102953109, 37.719392977976057 ], [ -122.359165764191417, 37.719383558545161 ], [ -122.359156864943031, 37.719373398101943 ], [ -122.359147948527337, 37.719362551202536 ], [ -122.359140734699196, 37.719350647341678 ], [ -122.359135249212571, 37.719338716202891 ], [ -122.359131474551347, 37.719326071336383 ], [ -122.359129420336572, 37.719313055953705 ], [ -122.359129102699868, 37.719300356526816 ], [ -122.359130504470841, 37.719287286600235 ], [ -122.359133643855102, 37.719274532613021 ], [ -122.359136791138639, 37.719262122138936 ], [ -122.359143412603785, 37.719250343285097 ], [ -122.359151771327333, 37.719238880100924 ], [ -122.359815079156419, 37.718522454511614 ], [ -122.359825208614936, 37.718512680409624 ], [ -122.359837083220526, 37.718503565479963 ], [ -122.359848984278528, 37.718495480221421 ], [ -122.359862639071579, 37.718488397362229 ], [ -122.359878056187881, 37.718482660129546 ], [ -122.359891771100081, 37.718477980135759 ], [ -122.359908985921422, 37.718474961146882 ], [ -122.359924497848894, 37.718472999407822 ], [ -122.359940043783581, 37.718472410583125 ], [ -122.359957353082052, 37.718473167366923 ], [ -122.359972959482164, 37.71847498112659 ], [ -122.359988608480634, 37.718478511028351 ], [ -122.360004292526796, 37.718483413828061 ], [ -122.360018273683508, 37.718489373879351 ], [ -122.360032280595263, 37.718496363062989 ], [ -122.360394084962891, 37.718708825628347 ], [ -122.36271365411622, 37.720070891670908 ], [ -122.36303235937622, 37.719710951141145 ], [ -122.363036490990609, 37.719706284726648 ], [ -122.363048348187263, 37.719696483020158 ], [ -122.363061977094034, 37.719688370383778 ], [ -122.363077377690658, 37.719681945993095 ], [ -122.363092812365167, 37.719676895064836 ], [ -122.363110026642786, 37.719673875619748 ], [ -122.363137662964078, 37.719672751789325 ], [ -122.363153270039291, 37.719674565121885 ], [ -122.363173373533897, 37.719648838527299 ], [ -122.363166176233463, 37.71963762109376 ], [ -122.363158953131787, 37.71962537425204 ], [ -122.363155178117267, 37.719612729509564 ], [ -122.363154851195048, 37.719599687141276 ], [ -122.363156260860393, 37.719586960120296 ], [ -122.363161127909819, 37.719574178689925 ], [ -122.363167748765107, 37.719562399610538 ], [ -122.363176106218731, 37.71955093642692 ], [ -122.363656438242259, 37.719054731797513 ], [ -122.362565556645677, 37.718438823432876 ], [ -122.362551540892355, 37.718431490773646 ], [ -122.362539227318422, 37.718423101382719 ], [ -122.362526897237885, 37.718414025524474 ], [ -122.362514558214372, 37.718404606442824 ], [ -122.36250392996385, 37.718394473583345 ], [ -122.36249501352286, 37.718383626930098 ], [ -122.362486088138667, 37.718372437054043 ], [ -122.362478882472217, 37.718360876623265 ], [ -122.362471659607849, 37.718348629736866 ], [ -122.362466165060482, 37.718336355523718 ], [ -122.362462381629214, 37.718323367528868 ], [ -122.362458606799294, 37.718310722761444 ], [ -122.362456543084349, 37.718297364212575 ], [ -122.362455889483016, 37.71827127891747 ], [ -122.362457290995351, 37.718258208943666 ], [ -122.362463550642957, 37.718232014343421 ], [ -122.362473301309748, 37.71820713800021 ], [ -122.362481650470514, 37.718195331904944 ], [ -122.362488271303789, 37.718183552586531 ], [ -122.362498365618194, 37.718172405349378 ], [ -122.362508477828271, 37.718161944830108 ], [ -122.358583730913253, 37.71588288357988 ], [ -122.358723442672868, 37.715731315969869 ], [ -122.362644996220368, 37.718021067053435 ], [ -122.362786346352422, 37.717866035066777 ], [ -122.363866062384275, 37.716726843144961 ], [ -122.359920053051226, 37.714425844522381 ], [ -122.3600361482696, 37.714297997140655 ], [ -122.36397478584415, 37.716580910244524 ], [ -122.364251293111423, 37.716300126312575 ], [ -122.364263175435909, 37.716291354435697 ], [ -122.364276820788504, 37.716283927560291 ], [ -122.364290517794743, 37.716278560323119 ], [ -122.364305977843998, 37.71627453863573 ], [ -122.364321497804667, 37.716272919544586 ], [ -122.364340525947497, 37.716273305108999 ], [ -122.364356149216732, 37.716275805018348 ], [ -122.364370087250265, 37.716280047868423 ], [ -122.364395976814166, 37.716278264915964 ], [ -122.365216452571488, 37.715351584174513 ], [ -122.365237670931208, 37.715301460414111 ], [ -122.365239473467412, 37.715235505999942 ], [ -122.365193066829221, 37.715177525619964 ], [ -122.364773705990487, 37.714932479640773 ], [ -122.364736623334764, 37.714970493365534 ], [ -122.364580089435904, 37.714864468359181 ], [ -122.364552651047106, 37.714804470653064 ], [ -122.364268407924328, 37.714638661242532 ], [ -122.364188831965635, 37.714636830395087 ], [ -122.364013771393857, 37.714550326239625 ], [ -122.364049082949748, 37.714510623951149 ], [ -122.363306902062419, 37.714077710648965 ], [ -122.363268090521188, 37.714115751260778 ], [ -122.363113289075798, 37.714009696947421 ], [ -122.363085852186202, 37.713949698891518 ], [ -122.362801615602848, 37.713783885919405 ], [ -122.362722040595187, 37.71378205408088 ], [ -122.362546983742845, 37.713695547734027 ], [ -122.362582295682941, 37.71365584615441 ], [ -122.361848935833351, 37.713229308027309 ], [ -122.361811844287786, 37.713266977882924 ], [ -122.361655318485532, 37.713160948681605 ], [ -122.361629610933349, 37.71310092296946 ], [ -122.361345380842891, 37.712935106461451 ], [ -122.361265806779613, 37.712933273639017 ], [ -122.361094407643563, 37.712854605021889 ], [ -122.361124337741387, 37.712807091000208 ], [ -122.361139435636801, 37.712788654437141 ], [ -122.361171360606775, 37.712751753157583 ], [ -122.36134313774096, 37.71284552396822 ], [ -122.361365062017143, 37.71289256197857 ], [ -122.361673856292811, 37.713072754562113 ], [ -122.361737876782101, 37.71307483295093 ], [ -122.361918064233436, 37.713159199186485 ], [ -122.361884368625439, 37.713194411838948 ], [ -122.362612508613324, 37.713619658283974 ], [ -122.362644433215863, 37.713582756884641 ], [ -122.362801089987357, 37.713693933186988 ], [ -122.362823024023626, 37.713741313598298 ], [ -122.363131825365173, 37.713921502610397 ], [ -122.363194118414285, 37.713923607543634 ], [ -122.3633743099209, 37.714007971534919 ], [ -122.36334061461109, 37.714043184324609 ], [ -122.364079295520412, 37.714474435984016 ], [ -122.364111219761938, 37.714437534192207 ], [ -122.364267880521169, 37.714548708254327 ], [ -122.36428981575132, 37.714596088660656 ], [ -122.364598624198337, 37.714776273803345 ], [ -122.3646609180052, 37.714778377960677 ], [ -122.364841113248019, 37.714862739696905 ], [ -122.364807418245547, 37.714897952901332 ], [ -122.365388188712686, 37.715236584611482 ], [ -122.364417662979704, 37.716315691686994 ], [ -122.364424868749381, 37.716327252003005 ], [ -122.364428635197243, 37.716339553209288 ], [ -122.36443069025762, 37.716352568505734 ], [ -122.364429280864911, 37.716365295273981 ], [ -122.364446761552514, 37.716372915954452 ], [ -122.364465978782491, 37.716380852784248 ], [ -122.364483468425433, 37.716388816406734 ], [ -122.364500965996967, 37.716397123539672 ], [ -122.364516744604018, 37.716405801242992 ], [ -122.364534251138338, 37.716414451592989 ], [ -122.364551766293047, 37.716423445442487 ], [ -122.364583357274199, 37.716442173479727 ], [ -122.364621964676815, 37.71646491108153 ], [ -122.364637708534104, 37.71647221613857 ], [ -122.364653409330941, 37.716477804506788 ], [ -122.364670803974548, 37.716481993153423 ], [ -122.36468815555574, 37.716484465110796 ], [ -122.364705455483815, 37.716484877975191 ], [ -122.364722720971017, 37.716483917927022 ], [ -122.364739943405979, 37.716481241738855 ], [ -122.364757122787552, 37.716476849410668 ], [ -122.364774250504041, 37.716470397714986 ], [ -122.364791343775195, 37.716462573106803 ], [ -122.364806691205743, 37.716454089407321 ], [ -122.364822022102643, 37.716444919239876 ], [ -122.364837335428504, 37.716435062620917 ], [ -122.364850911876999, 37.716424890408376 ], [ -122.364864471086165, 37.716414031190091 ], [ -122.364878013083185, 37.716402486064425 ], [ -122.364901605717435, 37.716378076804247 ], [ -122.364911648449322, 37.716364869981213 ], [ -122.364916549084953, 37.716353461387165 ], [ -122.364917950128515, 37.716340391380108 ], [ -122.364921087704161, 37.716327637243623 ], [ -122.364924234581224, 37.716315226323587 ], [ -122.364933983827555, 37.716290349774575 ], [ -122.36494722438934, 37.71626679140374 ], [ -122.364953853285272, 37.716255355719817 ], [ -122.364962219394371, 37.716244235619989 ], [ -122.364972322024684, 37.716233431114844 ], [ -122.364982433270342, 37.716222970110884 ], [ -122.364992553124679, 37.716212852333562 ], [ -122.365002690199319, 37.716203421010327 ], [ -122.365014563801225, 37.716194305555454 ], [ -122.365026455321683, 37.716185876818017 ], [ -122.36504008335524, 37.716177763399081 ], [ -122.365052000352904, 37.716170364072397 ], [ -122.365065654230065, 37.716163280882121 ], [ -122.365094741897337, 37.716151145947677 ], [ -122.365110106446139, 37.716143348388663 ], [ -122.365113201618499, 37.716128878372835 ], [ -122.365116304696627, 37.716114751046177 ], [ -122.365122873261583, 37.716100912485444 ], [ -122.365129459055197, 37.716087760653849 ], [ -122.365139510312659, 37.716074896763658 ], [ -122.365149578106625, 37.716062719613106 ], [ -122.365161392080509, 37.716051201814444 ], [ -122.365176644641494, 37.716038942289195 ], [ -122.365188518887109, 37.71602982680561 ], [ -122.365202138268813, 37.716021370414808 ], [ -122.365217494173905, 37.716013229888688 ], [ -122.365231148006444, 37.716006146679064 ], [ -122.365246539040172, 37.715999378773581 ], [ -122.365263666604179, 37.715992927006241 ], [ -122.365279091398932, 37.715987532291955 ], [ -122.365294534108472, 37.71598282401969 ], [ -122.365311721955024, 37.715978774837772 ], [ -122.365328927025729, 37.715975412108293 ], [ -122.365346149321098, 37.715972735831272 ], [ -122.365363388841544, 37.715970746006697 ], [ -122.365380645587578, 37.715969442634552 ], [ -122.365410025637061, 37.715968977361726 ], [ -122.365427334408309, 37.715969733342163 ], [ -122.365444651102152, 37.715970832558476 ], [ -122.365461994328726, 37.715972961443697 ], [ -122.365479354092372, 37.715975776792263 ], [ -122.365495012131262, 37.715979649180539 ], [ -122.365512406698826, 37.715983837428631 ], [ -122.365528089891654, 37.715988739505875 ], [ -122.365543791005862, 37.715994328024976 ], [ -122.36555950900491, 37.716000603002399 ], [ -122.36557523562081, 37.716007221205196 ], [ -122.365589259822642, 37.716014896460429 ], [ -122.365603292648544, 37.71602291521603 ], [ -122.365617342692417, 37.7160316198757 ], [ -122.365631409975279, 37.716041011263187 ], [ -122.365643757615857, 37.716050773249407 ], [ -122.365654385267973, 37.716060905840358 ], [ -122.365666759104258, 37.716071697501043 ], [ -122.365675684345334, 37.716082887145667 ], [ -122.365686355771075, 37.716094735860018 ], [ -122.36572383810848, 37.716141526396989 ], [ -122.365761311532381, 37.716187973699725 ], [ -122.365800496728525, 37.716233707149122 ], [ -122.365839664050739, 37.716278754141264 ], [ -122.365880551762743, 37.716323430505255 ], [ -122.365923158830057, 37.716367736255741 ], [ -122.365965740100123, 37.716411012308278 ], [ -122.366010040727502, 37.716453917744857 ], [ -122.366059638577141, 37.716501202978222 ], [ -122.366081205013529, 37.716533824258086 ], [ -122.366090251696093, 37.716549819043124 ], [ -122.366102754235541, 37.716565759079053 ], [ -122.366113529199154, 37.716581726482502 ], [ -122.366126023477833, 37.716597323283004 ], [ -122.366136789488536, 37.716612947462366 ], [ -122.366161760837542, 37.716643454602135 ], [ -122.366175966176996, 37.71665833756186 ], [ -122.366188442901887, 37.716673247906257 ], [ -122.366216836381071, 37.716702327637208 ], [ -122.36623102450136, 37.716716523860804 ], [ -122.366245204016678, 37.716730377129863 ], [ -122.366261112159151, 37.716744203009718 ], [ -122.366275291685326, 37.716758056275097 ], [ -122.366322963076229, 37.716797474553488 ], [ -122.366340573678841, 37.716810243632011 ], [ -122.36635644703216, 37.716822696320264 ], [ -122.366374040064969, 37.716834778944495 ], [ -122.366389904811129, 37.716846888400809 ], [ -122.366425073654625, 37.716870366632683 ], [ -122.366444377745808, 37.716881735132603 ], [ -122.36646194494493, 37.716892787786946 ], [ -122.366493510758119, 37.716910485903114 ], [ -122.366623549631328, 37.71699392291945 ], [ -122.366755273981596, 37.717075616265298 ], [ -122.367009737276547, 37.717225410385531 ], [ -122.367367636576219, 37.717431936135505 ], [ -122.367722202011066, 37.717643320779338 ], [ -122.367734498100774, 37.717651023186086 ], [ -122.367746786266892, 37.717658382627967 ], [ -122.36776079374863, 37.717665370893641 ], [ -122.367773072942654, 37.717672386836448 ], [ -122.367787080436401, 37.717679375373592 ], [ -122.367799351010589, 37.717686048086428 ], [ -122.367813349884699, 37.717692693393225 ], [ -122.367827331518725, 37.717698652518493 ], [ -122.367841321766008, 37.717704954320148 ], [ -122.367855303397675, 37.717710913167537 ], [ -122.367883249424608, 37.717722144677452 ], [ -122.367898942111211, 37.717727389659409 ], [ -122.367916388621566, 37.717733636645491 ], [ -122.367933775456365, 37.71773748130223 ], [ -122.367951144357875, 37.717740639787564 ], [ -122.367968522563814, 37.717744140937377 ], [ -122.368003243800771, 37.717749770880694 ], [ -122.368020595449934, 37.717752242626815 ], [ -122.368037939165831, 37.717754371132209 ], [ -122.368062204013668, 37.717756733239703 ], [ -122.368254623550371, 37.717776687237738 ], [ -122.368448797013713, 37.717797642645102 ], [ -122.368467860079036, 37.717799400451433 ], [ -122.368488660073098, 37.717801474067137 ], [ -122.368509442812467, 37.717802861224882 ], [ -122.368528488624563, 37.717803932567065 ], [ -122.368549262744196, 37.717804976765201 ], [ -122.368570028222393, 37.717805677183392 ], [ -122.368590785079604, 37.717806034645328 ], [ -122.368609804662938, 37.717806076298423 ], [ -122.368630552892, 37.717806090526203 ], [ -122.368672014835468, 37.717804746062299 ], [ -122.368691009223568, 37.717803758009893 ], [ -122.36871172294353, 37.717802399589416 ], [ -122.368753133102373, 37.717798995459539 ], [ -122.368773820932461, 37.717796607346749 ], [ -122.368818653167253, 37.717791775447523 ], [ -122.368861774362671, 37.71778765768024 ], [ -122.368906640766554, 37.717784198936094 ], [ -122.368949796818114, 37.717781454039603 ], [ -122.368994689457168, 37.717779025212373 ], [ -122.369037870695294, 37.717777309701347 ], [ -122.369082798189922, 37.717776253468948 ], [ -122.369126014299994, 37.717775911103146 ], [ -122.369170967339741, 37.717775884523917 ], [ -122.369202706794994, 37.71780044645373 ], [ -122.369235000726789, 37.717778302338516 ], [ -122.369269687549945, 37.717782559000163 ], [ -122.36928530265682, 37.717784714478952 ], [ -122.369302663340889, 37.717787529532423 ], [ -122.369353034337394, 37.717796687460655 ], [ -122.369368683984078, 37.717800216111328 ], [ -122.369384341918476, 37.717804087992491 ], [ -122.369401728852594, 37.717807932707132 ], [ -122.369417395761204, 37.717812147530914 ], [ -122.36943307096503, 37.717816705859768 ], [ -122.369450475169117, 37.717821237021361 ], [ -122.36948184319013, 37.717831039842252 ], [ -122.369497544990651, 37.717836627832767 ], [ -122.369513237815312, 37.717841872599593 ], [ -122.369527219606752, 37.717847831248413 ], [ -122.36954292970124, 37.717853762465438 ], [ -122.369558648085317, 37.71786003691291 ], [ -122.36957263852355, 37.71786633905797 ], [ -122.369588366230118, 37.717872956442982 ], [ -122.369602365299343, 37.717879601536971 ], [ -122.369618101305662, 37.71788656242515 ], [ -122.369646133989733, 37.717901225512634 ], [ -122.369674183958367, 37.717916575322121 ], [ -122.369702251198532, 37.717932611304448 ], [ -122.369714565153885, 37.717940999952816 ], [ -122.369728616041627, 37.717949704119498 ], [ -122.369740938290732, 37.717958435997602 ], [ -122.369754989198668, 37.717967140710293 ], [ -122.369767320771899, 37.717976215527116 ], [ -122.369804340049498, 37.718004470496631 ], [ -122.369814960605339, 37.718014259471069 ], [ -122.369827317757029, 37.718024364242766 ], [ -122.369837946607149, 37.718034496447622 ], [ -122.369850303765318, 37.718044601216874 ], [ -122.369882215899651, 37.718076027508822 ], [ -122.369892862378947, 37.71808684615722 ], [ -122.36990178884372, 37.718098035472593 ], [ -122.369912443617807, 37.718109197351708 ], [ -122.369930296561293, 37.718131575978724 ], [ -122.36994816678471, 37.718154641056984 ], [ -122.369957110535211, 37.718166516822102 ], [ -122.369967859963296, 37.718181454198835 ], [ -122.36997176593016, 37.718199247125732 ], [ -122.369979594447685, 37.718235519443965 ], [ -122.370002130211063, 37.718306581422858 ], [ -122.370009483835318, 37.718323976252783 ], [ -122.370015117785968, 37.718341741746322 ], [ -122.370022471423681, 37.718359136849926 ], [ -122.370031544728775, 37.71837616073956 ], [ -122.370038898366815, 37.718393555567452 ], [ -122.370047971693708, 37.718410580004878 ], [ -122.370057036030119, 37.718427260670879 ], [ -122.370066109704041, 37.718444284826738 ], [ -122.370075174401222, 37.718460965760372 ], [ -122.370085967071944, 37.718477619260632 ], [ -122.370107466765518, 37.718507493977114 ], [ -122.370126944899795, 37.718525726405055 ], [ -122.370169322597192, 37.718560763475431 ], [ -122.370190485553579, 37.718577252323918 ], [ -122.370213359219747, 37.718593027280086 ], [ -122.370236224957864, 37.718608459268403 ], [ -122.370260801392277, 37.718623176813935 ], [ -122.370285360570904, 37.718637208174954 ], [ -122.370309902493091, 37.718650553351452 ], [ -122.370336155456755, 37.71866318407794 ], [ -122.370362391163113, 37.718675128619182 ], [ -122.370390329287673, 37.718686016031121 ], [ -122.370416530117836, 37.718696587657909 ], [ -122.370444433710631, 37.71870610214912 ], [ -122.370472320036399, 37.718714930179793 ], [ -122.370501917760691, 37.718723044300269 ], [ -122.370529760919823, 37.718730156457141 ], [ -122.370559323753966, 37.718736897386265 ], [ -122.370588852049892, 37.718742265674756 ], [ -122.370618371366675, 37.718747290734377 ], [ -122.370647865465088, 37.718751286094815 ], [ -122.370679070273212, 37.718754567827233 ], [ -122.370708520488662, 37.718756846774177 ], [ -122.370739682448956, 37.718758412075765 ], [ -122.37076908982813, 37.718758975142002 ], [ -122.370800208258856, 37.718758824572994 ], [ -122.370829572444975, 37.718757671489442 ], [ -122.370860647321152, 37.718755804226205 ], [ -122.370891705615989, 37.718753250764479 ], [ -122.37090882433975, 37.718746454957831 ], [ -122.370925978308406, 37.718741032045394 ], [ -122.370944886167507, 37.718736611366033 ], [ -122.370963836875418, 37.718733906823715 ], [ -122.370982814191592, 37.718732231948131 ], [ -122.371005290654622, 37.718732218311914 ], [ -122.371024337093374, 37.718733289519548 ], [ -122.37104342637177, 37.71873607631499 ], [ -122.371062541577928, 37.718739893062697 ], [ -122.371079963024641, 37.718745110167617 ], [ -122.371097419033674, 37.718751700177599 ], [ -122.371113164004626, 37.718759004092 ], [ -122.371128943539134, 37.718767680911924 ], [ -122.371144757299319, 37.718777730917395 ], [ -122.371169489840725, 37.718798626351749 ], [ -122.371180101358092, 37.718808071985954 ], [ -122.371190696288693, 37.71881683115442 ], [ -122.371201281889995, 37.71882524710599 ], [ -122.371213579227003, 37.718832949137195 ], [ -122.37122759590342, 37.718840280490852 ], [ -122.371239875618699, 37.718847296070983 ], [ -122.371253857737614, 37.718853254513917 ], [ -122.371267831218006, 37.718858869728294 ], [ -122.371281796059677, 37.718864141714128 ], [ -122.371297471952232, 37.718868700063226 ], [ -122.37131140222705, 37.718872598863427 ], [ -122.371327043206463, 37.718875784031958 ], [ -122.371342667596267, 37.718878282733641 ], [ -122.371358283000305, 37.718880438211883 ], [ -122.371373872488391, 37.718881564281979 ], [ -122.371383664521929, 37.718882055893282 ], [ -122.371389452976118, 37.718882346579448 ], [ -122.371405016879592, 37.71888244268473 ], [ -122.371420554513023, 37.718881509112791 ], [ -122.371437794199721, 37.718879518405728 ], [ -122.371451465242302, 37.718873120657591 ], [ -122.371465170849277, 37.718868095815367 ], [ -122.371480639690603, 37.718864416415016 ], [ -122.371497879724302, 37.718862425968247 ], [ -122.371520347584678, 37.71886206900686 ], [ -122.371535954687204, 37.718863880954615 ], [ -122.371551596026961, 37.718867066362435 ], [ -122.371567280564975, 37.718871967353337 ], [ -122.371581271363922, 37.718878269258852 ], [ -122.371591935137346, 37.718889773936951 ], [ -122.371604326899728, 37.718901251433785 ], [ -122.371614991032587, 37.718912756378863 ], [ -122.371627374512514, 37.718923890915455 ], [ -122.37163802965712, 37.718935052362468 ], [ -122.371650413137317, 37.718946186622013 ], [ -122.371662779335963, 37.718956634426526 ], [ -122.371676882506705, 37.718967397995137 ], [ -122.371689248373897, 37.718977846076911 ], [ -122.371706869050627, 37.71899095730106 ], [ -122.371720799369825, 37.718994856052753 ], [ -122.371736440738147, 37.718998041161377 ], [ -122.371767706192628, 37.7190037249187 ], [ -122.371798919792468, 37.719007349306651 ], [ -122.371814508961251, 37.719008475049307 ], [ -122.371830090178449, 37.719009257552102 ], [ -122.371845662406855, 37.719009696831492 ], [ -122.371878500616674, 37.719009175012339 ], [ -122.371894038270653, 37.719008241377971 ], [ -122.371925078656488, 37.719005001201246 ], [ -122.371940582079091, 37.719002694647912 ], [ -122.37195607651114, 37.71900004487118 ], [ -122.371971553653992, 37.71899670863877 ], [ -122.371985302469042, 37.7189933998703 ], [ -122.372011244653535, 37.718993674331507 ], [ -122.372032105590733, 37.718998149908998 ], [ -122.372051212270634, 37.719001623269286 ], [ -122.372072029989994, 37.71900438270557 ], [ -122.372092830421707, 37.719006455684564 ], [ -122.372113604920486, 37.719007498979387 ], [ -122.372134362130282, 37.719007855816933 ], [ -122.372155093405652, 37.71900718297038 ], [ -122.372175798752636, 37.719005480714287 ], [ -122.372196486794678, 37.719003091451768 ], [ -122.372215428886747, 37.719000043756004 ], [ -122.372242952424102, 37.718994455566381 ], [ -122.372228495782323, 37.719038292867332 ], [ -122.372270562418365, 37.718992299913033 ], [ -122.372296686505393, 37.718999782068892 ], [ -122.372315810496232, 37.719003942114455 ], [ -122.372334917183963, 37.719007415154145 ], [ -122.372354014888927, 37.719010545244004 ], [ -122.372373104647863, 37.719013332367552 ], [ -122.372411231581538, 37.719016846431828 ], [ -122.372432006094613, 37.719017889945107 ], [ -122.372451034636384, 37.719018274204856 ], [ -122.372470046576993, 37.719017971996969 ], [ -122.372489049518421, 37.7190173262901 ], [ -122.372508043819963, 37.719016337627984 ], [ -122.372528749154483, 37.719014635035279 ], [ -122.372547708522333, 37.719012273465104 ], [ -122.372566659933526, 37.719009568654101 ], [ -122.372585593703946, 37.719006177391961 ], [ -122.372604518825696, 37.719002442899999 ], [ -122.372623426305779, 37.718998021956914 ], [ -122.372640597508592, 37.718993285523204 ], [ -122.372659479381312, 37.718987834613905 ], [ -122.372676624285006, 37.718982068225515 ], [ -122.372693803775505, 37.718977674741716 ], [ -122.372709280880628, 37.718974338412373 ], [ -122.372726511906819, 37.718972004289988 ], [ -122.372754147821666, 37.718970878203621 ], [ -122.372769737688571, 37.718972003808915 ], [ -122.372787072838463, 37.718973788668045 ], [ -122.372804451214719, 37.718977289109326 ], [ -122.372823557579665, 37.718980762349858 ], [ -122.37284089307164, 37.718982546920991 ], [ -122.372859921952113, 37.718982931109217 ], [ -122.372877179265899, 37.718981626639597 ], [ -122.372896130311645, 37.71897892178108 ], [ -122.372913318098071, 37.718974871772126 ], [ -122.372930471966299, 37.718969448293443 ], [ -122.372945853925259, 37.718962336438636 ], [ -122.372961200941234, 37.718953851680254 ], [ -122.37297652269902, 37.718944337228557 ], [ -122.372988361166023, 37.718933848067003 ], [ -122.373153843085163, 37.718881530021171 ], [ -122.373238802575472, 37.718854668953604 ], [ -122.373255964357725, 37.718849588939769 ], [ -122.37327313547901, 37.718844852139163 ], [ -122.373307494324067, 37.718836064994925 ], [ -122.373341870461658, 37.718827964294142 ], [ -122.373376281193742, 37.718821236490271 ], [ -122.37339522352984, 37.718818188324654 ], [ -122.373412437542669, 37.718815167642909 ], [ -122.37344690016738, 37.718810499178815 ], [ -122.37346585979968, 37.718808137455291 ], [ -122.373483108072492, 37.718806489950246 ], [ -122.373502085343517, 37.718804814394282 ], [ -122.373536599865218, 37.718802205264303 ], [ -122.373555594097851, 37.718801216433278 ], [ -122.373572868314369, 37.718800598320655 ], [ -122.373591880194738, 37.718800295931722 ], [ -122.373626463924381, 37.718800432589219 ], [ -122.373645492769242, 37.718800816925153 ], [ -122.373662792940365, 37.718801228479528 ], [ -122.373681839421252, 37.718802298708354 ], [ -122.373699157242569, 37.718803396705297 ], [ -122.373716483716436, 37.718804837926434 ], [ -122.373735538512435, 37.718806251653383 ], [ -122.373752881946515, 37.718808379328088 ], [ -122.373777165315929, 37.718811426700512 ], [ -122.373794552014559, 37.718815270502617 ], [ -122.373811948058801, 37.718819457517874 ], [ -122.373829360718858, 37.718824330994956 ], [ -122.373845054403262, 37.718829575178432 ], [ -122.373862484719027, 37.718835135098523 ], [ -122.373878195029278, 37.718841066016566 ], [ -122.373893923325326, 37.718847682825754 ], [ -122.373909659945298, 37.71885464341419 ], [ -122.373925413867383, 37.718862290179331 ], [ -122.373939439462958, 37.718869964162415 ], [ -122.373953482381623, 37.71887832514637 ], [ -122.373967533942846, 37.718887028806179 ], [ -122.373981594167574, 37.718896075965546 ], [ -122.373995663049072, 37.718905466349945 ], [ -122.374008012263729, 37.718915227454971 ], [ -122.374020370135099, 37.718925331785385 ], [ -122.374032736317702, 37.718935779346666 ], [ -122.374045111848744, 37.718946570122313 ], [ -122.374055767366514, 37.718957731625189 ], [ -122.374066431541209, 37.71896923635375 ], [ -122.374075367055113, 37.718980768858067 ], [ -122.374086048882475, 37.71899295975809 ], [ -122.374103954872169, 37.719017397114996 ], [ -122.374125681340118, 37.719056194989058 ], [ -122.374131204173437, 37.719069498331429 ], [ -122.374142266462783, 37.719096791479657 ], [ -122.374149872102961, 37.719124139622245 ], [ -122.374153683579266, 37.719138156919946 ], [ -122.3741578498839, 37.719166246785271 ], [ -122.374159941681143, 37.71918063453262 ], [ -122.374161014797295, 37.71922319463841 ], [ -122.374159641286965, 37.719237294429277 ], [ -122.374154923616729, 37.719255911162307 ], [ -122.374151882005847, 37.719272441042889 ], [ -122.374149256482738, 37.719305445791825 ], [ -122.374150087278892, 37.719338395550594 ], [ -122.374152239665406, 37.719355186158822 ], [ -122.374156103078988, 37.719371262815855 ], [ -122.374159975148416, 37.71938768269937 ], [ -122.374165558246304, 37.71940338863147 ], [ -122.374172878343202, 37.719419410566459 ], [ -122.374175234931528, 37.719424358448258 ], [ -122.374180181120835, 37.719434745498482 ], [ -122.374187466599793, 37.719449394251313 ], [ -122.374214300358844, 37.719485020571611 ], [ -122.374235611602799, 37.719507343543832 ], [ -122.374246258574956, 37.719518161801837 ], [ -122.374256896895602, 37.719528636832223 ], [ -122.374269254564041, 37.719538741415626 ], [ -122.374281604258542, 37.719548502210912 ], [ -122.374293944962744, 37.719557920058328 ], [ -122.374308005354067, 37.719566967177798 ], [ -122.374322057100812, 37.719575671343499 ], [ -122.374337854486313, 37.719585033911152 ], [ -122.3744195305989, 37.719669918743051 ], [ -122.374421587846186, 37.719682933852702 ], [ -122.374425381745823, 37.719696264692658 ], [ -122.374436392649173, 37.719721498445345 ], [ -122.374441889282195, 37.71973377237201 ], [ -122.374450833933636, 37.719745647518387 ], [ -122.374459769939222, 37.719757179712012 ], [ -122.374468688290634, 37.719768025457228 ], [ -122.37447931836833, 37.719778157235005 ], [ -122.374491667798353, 37.71978791856256 ], [ -122.374503990904699, 37.719796649665334 ], [ -122.374518034054987, 37.71980501030616 ], [ -122.374532059896538, 37.719812684492133 ], [ -122.374546059779846, 37.719819329271196 ], [ -122.374561771037051, 37.719825259811579 ], [ -122.374577455975697, 37.719830160400981 ], [ -122.374594868929591, 37.719835034038724 ], [ -122.374610562881386, 37.719840278119385 ], [ -122.374626299764742, 37.719847238061817 ], [ -122.374642062627359, 37.719855227956486 ], [ -122.37465612311729, 37.71986427503397 ], [ -122.374668489891121, 37.719874722521432 ], [ -122.374679145289875, 37.719885883971763 ], [ -122.374688099006775, 37.719898102595501 ], [ -122.374697069701313, 37.719911007951758 ], [ -122.374702592354737, 37.719924311271022 ], [ -122.374739822583123, 37.719960801838624 ], [ -122.37475222401271, 37.719972622223445 ], [ -122.374766345137616, 37.719984071873611 ], [ -122.374778737572512, 37.719995549034522 ], [ -122.374806962529064, 37.720017761873571 ], [ -122.374835170187708, 37.720039288252636 ], [ -122.374849265365711, 37.720049708213061 ], [ -122.374865089243499, 37.72006010065806 ], [ -122.37487917577208, 37.720070177388315 ], [ -122.374910788226885, 37.720089589372847 ], [ -122.374942383382447, 37.720108314895747 ], [ -122.374958163650305, 37.720116991200911 ], [ -122.37497395257985, 37.720126010730475 ], [ -122.374991452548869, 37.720134316294761 ], [ -122.375007224169792, 37.720142649366764 ], [ -122.375024715142516, 37.720150611705058 ], [ -122.375040478457933, 37.72015860154054 ], [ -122.375057961125222, 37.720166220641822 ], [ -122.375092909153366, 37.7201807723835 ], [ -122.375127822560231, 37.72019395120865 ], [ -122.375147007628541, 37.720200513379581 ], [ -122.375173261961393, 37.720213143025013 ], [ -122.375207993556202, 37.720219114069216 ], [ -122.375227160967086, 37.720224989504935 ], [ -122.375248074399238, 37.720231523871263 ], [ -122.375269005153854, 37.720238744686874 ], [ -122.375280076764881, 37.720243315652858 ], [ -122.375288225222903, 37.720246679460772 ], [ -122.375307453609949, 37.720254957463524 ], [ -122.375326699320624, 37.720263921916157 ], [ -122.375345953350021, 37.720273229597673 ], [ -122.375365216735446, 37.720282880491496 ], [ -122.3753827687447, 37.72029324535653 ], [ -122.37540033807889, 37.720304296671941 ], [ -122.375416187376842, 37.720315718733033 ], [ -122.375433774387304, 37.720327456490914 ], [ -122.375449641361485, 37.720339564994973 ], [ -122.375463797304775, 37.720352387466882 ], [ -122.375479689931566, 37.720365525926404 ], [ -122.375493863198955, 37.720379034573064 ], [ -122.375506317126977, 37.720392914231198 ], [ -122.375520507732517, 37.720407109602149 ], [ -122.375532978645822, 37.720421675715869 ], [ -122.375543729520388, 37.720436612578425 ], [ -122.375556287403313, 37.720454611223573 ], [ -122.375591629223138, 37.720553280549268 ], [ -122.375625259756632, 37.720652664115185 ], [ -122.375655442655059, 37.720752445930557 ], [ -122.375683906273295, 37.720852598477748 ], [ -122.375710658575045, 37.720953464995517 ], [ -122.375751172610691, 37.721120038334149 ], [ -122.375761845674063, 37.721131886137194 ], [ -122.375772510777281, 37.721143390976373 ], [ -122.375784886582679, 37.721154181570967 ], [ -122.375797236053231, 37.721163942215831 ], [ -122.375811288276211, 37.721172646201708 ], [ -122.375827043223865, 37.721180292429615 ], [ -122.375842875795513, 37.721191027973333 ], [ -122.375853514234834, 37.721201502862243 ], [ -122.37586245097873, 37.721213034941265 ], [ -122.375869667665128, 37.721224937774515 ], [ -122.375880696264161, 37.72125085784436 ], [ -122.375882762127716, 37.72126421615711 ], [ -122.375882828626871, 37.721266851037683 ], [ -122.375883125946686, 37.721278631666706 ], [ -122.37587827898912, 37.721292100060857 ], [ -122.375871711967719, 37.721305939209678 ], [ -122.375866881992167, 37.721320094336214 ], [ -122.37586031495924, 37.721333933209785 ], [ -122.375855484972746, 37.721348088061191 ], [ -122.375852374709183, 37.721361872437875 ], [ -122.375847544719377, 37.721376027288905 ], [ -122.375842723382974, 37.721390525091536 ], [ -122.375836520156881, 37.721418779747594 ], [ -122.375830334257259, 37.721447721130588 ], [ -122.375828969677642, 37.721462163887708 ], [ -122.375825876376013, 37.721476634447164 ], [ -122.375821782997832, 37.721519963536267 ], [ -122.375822146806243, 37.721534379045465 ], [ -122.375820790553732, 37.721549165583347 ], [ -122.375822254450057, 37.721607170846063 ], [ -122.375824355645946, 37.721621901779116 ], [ -122.375824719455352, 37.721636317288059 ], [ -122.375830995701023, 37.721679481253183 ], [ -122.375834816633215, 37.721693841711655 ], [ -122.375836908840029, 37.721708229972535 ], [ -122.375840729422237, 37.721722590161676 ], [ -122.375846503274232, 37.721745846994416 ], [ -122.375861785654777, 37.721803288846772 ], [ -122.375867698808605, 37.72183203728941 ], [ -122.375873620283713, 37.721861128963518 ], [ -122.375886199210129, 37.721948486558446 ], [ -122.375891128963588, 37.722006779991005 ], [ -122.37589187393715, 37.722036297459432 ], [ -122.375894433932729, 37.722069219668136 ], [ -122.375899939635701, 37.722081836473912 ], [ -122.375903725267278, 37.722094824309316 ], [ -122.37590923997503, 37.722107784060896 ], [ -122.375913025948279, 37.722120771615856 ], [ -122.375915092187512, 37.722134129920661 ], [ -122.375918886480093, 37.722147460707269 ], [ -122.375920953066782, 37.722160819006419 ], [ -122.375921290909631, 37.722174204834722 ], [ -122.375923357151819, 37.722187563139258 ], [ -122.375923694995222, 37.722200948967497 ], [ -122.375922304438902, 37.722214362319441 ], [ -122.375922642282234, 37.722227748147617 ], [ -122.375921251379538, 37.722241161504989 ], [ -122.375918210730603, 37.722257691412231 ], [ -122.375915160726379, 37.722273878103998 ], [ -122.375910383010535, 37.722290092308178 ], [ -122.375909052749606, 37.722305908524369 ], [ -122.3759060120953, 37.722322438431114 ], [ -122.375902962078825, 37.722338624847808 ], [ -122.375900319899742, 37.722370943166766 ], [ -122.375899007299083, 37.722387445555256 ], [ -122.375899414439516, 37.72240357719398 ], [ -122.375898101492368, 37.722420079587863 ], [ -122.375899331576733, 37.722468817730004 ], [ -122.3759014761321, 37.722485265065941 ], [ -122.375901883280534, 37.722501396978991 ], [ -122.375904027491728, 37.722517844320301 ], [ -122.375908298246003, 37.722550052555519 ], [ -122.375912171213727, 37.722566472367539 ], [ -122.375914306759483, 37.722582576207579 ], [ -122.375918170721874, 37.722598652798467 ], [ -122.375922026023247, 37.722614386162874 ], [ -122.375925889988949, 37.722630462753436 ], [ -122.375931482020547, 37.722646511825495 ], [ -122.3759353376729, 37.72266224518382 ], [ -122.375946504767398, 37.722693656868394 ], [ -122.37595381690933, 37.722709335457893 ], [ -122.375959392311572, 37.72272469779017 ], [ -122.375988606240981, 37.722786038138061 ], [ -122.37599590106781, 37.72280102999747 ], [ -122.376004915302616, 37.722815651110672 ], [ -122.376013938895468, 37.722830615438454 ], [ -122.376030187680101, 37.722857825817606 ], [ -122.376039254253797, 37.722874506280462 ], [ -122.376050040583777, 37.722890815990674 ], [ -122.376059098502594, 37.722907153225577 ], [ -122.376080671185491, 37.722939772641169 ], [ -122.376093177287544, 37.722955711594906 ], [ -122.376103946313975, 37.722971334847365 ], [ -122.376128941223584, 37.723002526570319 ], [ -122.376153918812676, 37.723033031286057 ], [ -122.376166398954496, 37.723047940552881 ], [ -122.376180598856877, 37.723062479064545 ], [ -122.376194807428803, 37.723077360800765 ], [ -122.376223189933157, 37.723105751362802 ], [ -122.37623737252926, 37.723119603414908 ], [ -122.376253283551748, 37.72313342793673 ], [ -122.376285088285584, 37.723160390521265 ], [ -122.37630098199665, 37.723173528583985 ], [ -122.376332751760657, 37.723199118255842 ], [ -122.376350356927531, 37.723211542324023 ], [ -122.37636795274409, 37.723223623174263 ], [ -122.376420715615595, 37.723258836008263 ], [ -122.376438285466264, 37.723269887443685 ], [ -122.376457584424074, 37.723280910784744 ], [ -122.376475145958864, 37.723291618708295 ], [ -122.376513708562953, 37.723312293030197 ], [ -122.376564456486463, 37.723336207150773 ], [ -122.376580211970165, 37.72334385327531 ], [ -122.376595984457055, 37.723352186404895 ], [ -122.376611774265584, 37.723361205435687 ], [ -122.376625852990443, 37.723370938725466 ], [ -122.37663994038509, 37.723381015239809 ], [ -122.37665232535511, 37.723392148965601 ], [ -122.376666438756033, 37.723403255155475 ], [ -122.376677112293109, 37.723415102871243 ], [ -122.376698494734327, 37.723440171193744 ], [ -122.376707475210537, 37.723453419335712 ], [ -122.376716464010698, 37.72346701070871 ], [ -122.376720284514462, 37.723481371145333 ], [ -122.37671721799309, 37.723496871391177 ], [ -122.376707592383568, 37.723526554064598 ], [ -122.376699305900857, 37.723540764010522 ], [ -122.376689273305857, 37.723554315043828 ], [ -122.376679223374595, 37.723567179623807 ], [ -122.376667418664113, 37.723579042064337 ], [ -122.376655545318613, 37.723588158957362 ], [ -122.377080106636114, 37.724240997344516 ], [ -122.377095367932696, 37.724229079787627 ], [ -122.377110646561107, 37.724217848681064 ], [ -122.37712595084453, 37.724207647256506 ], [ -122.377143001604594, 37.724198105004248 ], [ -122.377161806451838, 37.724189564342446 ], [ -122.377180636962038, 37.724182053636206 ], [ -122.377199502834941, 37.724175915820602 ], [ -122.377218385696736, 37.724170464459789 ], [ -122.377239031676282, 37.724166358457559 ], [ -122.377259703667661, 37.724163282404746 ], [ -122.377280401650879, 37.724161235477631 ], [ -122.377302862761439, 37.724160534182147 ], [ -122.377323664781798, 37.724162606235865 ], [ -122.377346194902287, 37.724164650746829 ], [ -122.377366988255417, 37.724166379566732 ], [ -122.377389501730306, 37.724167737606116 ], [ -122.377412006197545, 37.724168752695128 ], [ -122.377432782206725, 37.724169794776564 ], [ -122.377477756104398, 37.724170451485548 ], [ -122.377520967568458, 37.724169762808955 ], [ -122.377543428679331, 37.724169061467578 ], [ -122.377564152674637, 37.724168044443623 ], [ -122.377586596450428, 37.724166656916339 ], [ -122.377609031195107, 37.724164925615 ], [ -122.37762973784686, 37.724163222127238 ], [ -122.377674573698229, 37.724158387131986 ], [ -122.377695245662423, 37.724155310728172 ], [ -122.377717646069129, 37.724152206770718 ], [ -122.377738309358563, 37.724148787133252 ], [ -122.377760692073096, 37.724144996720867 ], [ -122.377801983955891, 37.724136784522699 ], [ -122.377824341339959, 37.724131964408841 ], [ -122.377861378513643, 37.724092230490051 ], [ -122.37790330341987, 37.724109074037422 ], [ -122.377953072363383, 37.724094202731443 ], [ -122.378002859323317, 37.724080017845608 ], [ -122.378052663257023, 37.724066519121855 ], [ -122.378102484525442, 37.724053707103792 ], [ -122.378152322784231, 37.724041581796904 ], [ -122.378202179051058, 37.724030142360959 ], [ -122.378253789425585, 37.724019705304357 ], [ -122.378303679673081, 37.724009639015357 ], [ -122.378375979604911, 37.723996811837594 ], [ -122.378413918203691, 37.723992773262658 ], [ -122.378431150905413, 37.723990438296809 ], [ -122.378450111707437, 37.723988076047718 ], [ -122.378467326705092, 37.723985054355325 ], [ -122.378486270155207, 37.72398200564826 ], [ -122.378503476136444, 37.723978641004621 ], [ -122.378522411247346, 37.723975248785557 ], [ -122.378573978156382, 37.723963095183649 ], [ -122.378592877874951, 37.723958330334597 ], [ -122.378610049829263, 37.723953592485465 ], [ -122.378644375709996, 37.723943431162333 ], [ -122.378661520946679, 37.723937663913084 ], [ -122.378678675540712, 37.723932239601808 ], [ -122.378695812103444, 37.723926129396091 ], [ -122.378711220902375, 37.723920046192298 ], [ -122.378728349122568, 37.723913592475675 ], [ -122.378745468663908, 37.723906795530496 ], [ -122.378760859771077, 37.723900026422747 ], [ -122.378776242185538, 37.723892913537782 ], [ -122.378793344365533, 37.723885430133492 ], [ -122.378808718111543, 37.723877974567344 ], [ -122.378824083164403, 37.723870175223993 ], [ -122.378854795921512, 37.723853890628249 ], [ -122.378885491312118, 37.723836919572342 ], [ -122.378899101889331, 37.723828118382741 ], [ -122.378914431877035, 37.723818946403391 ], [ -122.378928033770805, 37.723809801984345 ], [ -122.378943355765742, 37.723800286764138 ], [ -122.378956948975699, 37.723790799115662 ], [ -122.378970533505296, 37.723780968239559 ], [ -122.378997685199607, 37.72376062003049 ], [ -122.37900953226108, 37.723750473498114 ], [ -122.379023090751858, 37.723739613212317 ], [ -122.37903492981377, 37.723729123165697 ], [ -122.379050155637117, 37.723715832455909 ], [ -122.379063557916822, 37.723698793821882 ], [ -122.379075214748525, 37.72368109629867 ], [ -122.379086879906424, 37.723663742005776 ], [ -122.379098527703903, 37.723645701259585 ], [ -122.379110183827592, 37.723628003743777 ], [ -122.379120103528408, 37.723609990560298 ], [ -122.37913174263177, 37.723591606584641 ], [ -122.379141653299143, 37.723573250178703 ], [ -122.379151555283926, 37.723554550545835 ], [ -122.379159737512083, 37.723536221709345 ], [ -122.379169630463892, 37.723517178854308 ], [ -122.379177804358278, 37.72349850705946 ], [ -122.379185969211122, 37.723479491494309 ], [ -122.379192405639117, 37.723460503774781 ], [ -122.379200561813079, 37.723441145257027 ], [ -122.37921341729573, 37.723402483363635 ], [ -122.379218107928253, 37.723382836762347 ], [ -122.379224535661635, 37.723363505814724 ], [ -122.379233916574677, 37.723324212890873 ], [ -122.379236870433516, 37.723304250354701 ], [ -122.379241561053661, 37.72328460375217 ], [ -122.379250421598357, 37.723224716982607 ], [ -122.379252871777865, 37.723184847614071 ], [ -122.379253905947536, 37.723157361956225 ], [ -122.379253532794493, 37.723142603509906 ], [ -122.379254879369441, 37.723127473715763 ], [ -122.37925797172656, 37.723113003075639 ], [ -122.379262792162919, 37.723098505142787 ], [ -122.379267621960011, 37.723084350150188 ], [ -122.379275925257346, 37.723070826474732 ], [ -122.379284246592633, 37.723057988965195 ], [ -122.379294304689481, 37.723045467662629 ], [ -122.379306117221759, 37.723033947914878 ], [ -122.379319675538511, 37.723023087593674 ], [ -122.379333259872894, 37.723013256399945 ], [ -122.379348598663228, 37.723004427583476 ], [ -122.379363963140094, 37.722996628448691 ], [ -122.379381091436528, 37.722990174630688 ], [ -122.379398245074995, 37.722984750499421 ], [ -122.379417153855258, 37.722980328457844 ], [ -122.379434368594119, 37.722977307172805 ], [ -122.379455083545309, 37.722975946315401 ], [ -122.37947750088145, 37.722973528474888 ], [ -122.379499892178387, 37.722970080951924 ], [ -122.379523994530487, 37.722965919396081 ], [ -122.37954461400976, 37.722960783310853 ], [ -122.379566935863238, 37.722954589966704 ], [ -122.379589240353653, 37.72294771016621 ], [ -122.379609790385288, 37.722939828261154 ], [ -122.379630314379966, 37.722930916948918 ], [ -122.379649092581033, 37.722921346210235 ], [ -122.379669581838826, 37.72291106171236 ], [ -122.379686587876122, 37.72289980269619 ], [ -122.37970530565336, 37.722887829635219 ], [ -122.379722277304509, 37.722875197704134 ], [ -122.379737503175733, 37.722861906898203 ], [ -122.379752711680695, 37.722847929638164 ], [ -122.379767911153763, 37.722833609155607 ], [ -122.379779628445803, 37.722818314142543 ], [ -122.379793065118861, 37.722802648327246 ], [ -122.379812990079841, 37.722770054111137 ], [ -122.379822935192337, 37.722753070549636 ], [ -122.379814676042812, 37.722699980835564 ], [ -122.379867320110051, 37.722593727839261 ], [ -122.379934313833843, 37.722371188860151 ], [ -122.37993733657764, 37.72235397239195 ], [ -122.379942087368576, 37.72233672807188 ], [ -122.379948575592024, 37.722319799663914 ], [ -122.379956801239857, 37.722303186893228 ], [ -122.379965035219655, 37.722286917353493 ], [ -122.37997327788419, 37.722270991313792 ], [ -122.379983257611954, 37.722255380367073 ], [ -122.379994974077178, 37.722240085342186 ], [ -122.380006708591978, 37.72222547675721 ], [ -122.380020188517861, 37.72221152704482 ], [ -122.380035405172549, 37.7221978929784 ], [ -122.380048911140065, 37.722184973215455 ], [ -122.380065900274673, 37.722173027405468 ], [ -122.380082897401252, 37.72216142510468 ], [ -122.38009991257772, 37.722150509242532 ], [ -122.380116944421857, 37.722140279841042 ], [ -122.380135722713177, 37.722130709292628 ], [ -122.380156255096665, 37.722122140839112 ], [ -122.38018021822036, 37.722112487531497 ], [ -122.380200637722609, 37.722099457131471 ], [ -122.380221048535219, 37.722086083501829 ], [ -122.380241450657905, 37.722072366642536 ], [ -122.380260115357089, 37.722058334421121 ], [ -122.38028050009946, 37.72204393110291 ], [ -122.380299156785668, 37.722029555363576 ], [ -122.38031780442914, 37.722014836126135 ], [ -122.380336443389169, 37.721999773934229 ], [ -122.380353345265689, 37.721984396102023 ], [ -122.380371975527709, 37.721968990678377 ], [ -122.380388868360967, 37.721953269620464 ], [ -122.380405753195106, 37.721937205323023 ], [ -122.38043950478324, 37.721904390279654 ], [ -122.380454643491987, 37.721887667118459 ], [ -122.38046977317164, 37.721870601009314 ], [ -122.380498331188051, 37.721837525213786 ], [ -122.38051707392718, 37.721826581710999 ], [ -122.380535826036024, 37.721815981420185 ], [ -122.380554603852772, 37.721806411084629 ], [ -122.380573407703011, 37.721797869875026 ], [ -122.380593957312428, 37.721789987796839 ], [ -122.380614524292966, 37.721782792441729 ], [ -122.380636845696628, 37.721776598619094 ], [ -122.380657456091583, 37.721771119386688 ], [ -122.380679829595536, 37.721766984912172 ], [ -122.380702211442937, 37.721763193939509 ], [ -122.380724628718468, 37.721760775855728 ], [ -122.380747063016599, 37.721759044225237 ], [ -122.380776445603402, 37.721758575115111 ], [ -122.380798931664657, 37.721758902836477 ], [ -122.380821453165254, 37.721760603721208 ], [ -122.380843991677978, 37.721762990510022 ], [ -122.380866547569951, 37.721766064021175 ], [ -122.380887409825149, 37.721770538303247 ], [ -122.380910017489256, 37.721775671167713 ], [ -122.380930914478753, 37.721781517796998 ], [ -122.380951846221805, 37.721788737601223 ], [ -122.380969304166271, 37.72179532613972 ], [ -122.381209663710422, 37.721932611167148 ], [ -122.381595340270607, 37.722141054219321 ], [ -122.381616306935143, 37.722149646808873 ], [ -122.381637264915469, 37.722157896168731 ], [ -122.381659933573118, 37.722165431470607 ], [ -122.381680856812778, 37.722172308193493 ], [ -122.381703500095611, 37.72217881352352 ], [ -122.381718196203238, 37.722182371993462 ], [ -122.381726116975372, 37.722184289451477 ], [ -122.381748725168919, 37.72218942214915 ], [ -122.381771315640577, 37.722193868396147 ], [ -122.38179561782411, 37.722197600566012 ], [ -122.381818182577149, 37.722201017120689 ], [ -122.381842449666692, 37.722203376657269 ], [ -122.381864970966248, 37.722205076798758 ], [ -122.381889211635382, 37.722206406378888 ], [ -122.38191343562309, 37.7222070497657 ], [ -122.381935913473328, 37.722207033764029 ], [ -122.381960093656375, 37.722205960742578 ], [ -122.381984265148091, 37.722204544490268 ], [ -122.382006690514388, 37.722202469399647 ], [ -122.382131855667623, 37.722160639374017 ], [ -122.382053374975868, 37.722202410560982 ], [ -122.382081246609474, 37.722210549386944 ], [ -122.382107407226997, 37.722219401998011 ], [ -122.382135313638244, 37.722228913714801 ], [ -122.38216150904843, 37.7222391397666 ], [ -122.382186002128265, 37.722250422556726 ], [ -122.38221223231281, 37.72226202122625 ], [ -122.382231488067504, 37.722271327773925 ], [ -122.382247234884744, 37.722278630470704 ], [ -122.382264666284939, 37.722284188875534 ], [ -122.382282081008995, 37.722289061364116 ], [ -122.382301180314499, 37.722292189559724 ], [ -122.382316796753315, 37.722294343584274 ], [ -122.382332404500787, 37.722296154380857 ], [ -122.382348055371921, 37.7222996815849 ], [ -122.382362004260912, 37.722304265802613 ], [ -122.382377707967407, 37.722309851797831 ], [ -122.382389988962331, 37.722316866217334 ], [ -122.382402296728699, 37.722324910302142 ], [ -122.382412893137086, 37.722333668461893 ], [ -122.38242351562603, 37.722343456298312 ], [ -122.382432426756893, 37.722353958210256 ], [ -122.382443110446403, 37.72236614862048 ], [ -122.38245541788794, 37.722374192979785 ], [ -122.382471103884711, 37.722379092516256 ], [ -122.382486702960776, 37.722380560066497 ], [ -122.382502223461259, 37.722378938861951 ], [ -122.382529930032874, 37.722380556015445 ], [ -122.382545607695334, 37.722385112585165 ], [ -122.382559626159036, 37.72239244258634 ], [ -122.382571959345043, 37.722401516341982 ], [ -122.382580879888579, 37.72241236145743 ], [ -122.382586386406132, 37.722424977955527 ], [ -122.382590173914764, 37.722437965564282 ], [ -122.382588775856519, 37.722451035493926 ], [ -122.382590834611065, 37.722464050455052 ], [ -122.382598043802759, 37.722475609647852 ], [ -122.382610377359867, 37.722484683668391 ], [ -122.382624352373682, 37.722490297257906 ], [ -122.382641931997384, 37.722501690715291 ], [ -122.38265777418269, 37.72251276857228 ], [ -122.382675345468627, 37.72252381879327 ], [ -122.382692907374491, 37.722534525796839 ], [ -122.382708732877717, 37.722544917184152 ], [ -122.382726277750848, 37.722554937725484 ], [ -122.382745551041126, 37.722564930914963 ], [ -122.382763086877006, 37.722574607955885 ], [ -122.382780614728389, 37.722583942306464 ], [ -122.382799870630677, 37.722593248486184 ], [ -122.382827994635349, 37.722611340684225 ], [ -122.382840310501109, 37.722619727959788 ], [ -122.382856023011854, 37.722625657391347 ], [ -122.382871674315936, 37.722629184245534 ], [ -122.382901057233255, 37.722628714605619 ], [ -122.382920165354051, 37.722632186201139 ], [ -122.382932481579374, 37.722640573461497 ], [ -122.382939690848261, 37.722652132907662 ], [ -122.382943451985241, 37.722664090283487 ], [ -122.382954144152635, 37.722676623878094 ], [ -122.382966546995732, 37.722688443398582 ], [ -122.382978924448281, 37.722699233229207 ], [ -122.382994731944478, 37.722708938137238 ], [ -122.383008785302238, 37.722717641262442 ], [ -122.383026278422236, 37.722725602123852 ], [ -122.383042008015664, 37.722732217987662 ], [ -122.383057685092282, 37.722736774500049 ], [ -122.38307338894937, 37.722742360676712 ], [ -122.38308910115893, 37.722748290082635 ], [ -122.383103093664104, 37.722754590615885 ], [ -122.383131113444662, 37.722768563756851 ], [ -122.383145140734484, 37.722776236913717 ], [ -122.383173212715235, 37.722792269674038 ], [ -122.383185537691887, 37.722801000133508 ], [ -122.383197871022062, 37.722810073823027 ], [ -122.383210213742984, 37.722819490725982 ], [ -122.383220827716869, 37.72282893553853 ], [ -122.383231459072476, 37.722839066252533 ], [ -122.383252652240699, 37.722856582695023 ], [ -122.383275469111652, 37.722869952249027 ], [ -122.383296549234032, 37.722883006473765 ], [ -122.383319349425548, 37.722895689831176 ], [ -122.383342123188228, 37.72290734351234 ], [ -122.383366616328686, 37.722918626335904 ], [ -122.383389364359843, 37.722929250325038 ], [ -122.383413814380745, 37.722938817278958 ], [ -122.383431263763498, 37.722945061956594 ], [ -122.383518693416903, 37.722983494694461 ], [ -122.38360968436416, 37.72302599052874 ], [ -122.383623746538206, 37.723035036256725 ], [ -122.383636106408431, 37.723045139846334 ], [ -122.383646772299514, 37.723056643431036 ], [ -122.383655727872323, 37.723068861366919 ], [ -122.383661243319395, 37.723081821039202 ], [ -122.383666776856799, 37.723095467151623 ], [ -122.383670581632771, 37.723109140906679 ], [ -122.383676097085413, 37.723122100578188 ], [ -122.383683315208287, 37.723134002929086 ], [ -122.383695684140434, 37.723144449457912 ], [ -122.383708017935533, 37.723153523087994 ], [ -122.383722027960033, 37.72316050972421 ], [ -122.383732835965688, 37.72316905039996 ], [ -122.383734379158653, 37.723170269802985 ], [ -122.38373469231658, 37.723182625929454 ], [ -122.383748702349067, 37.723189612562479 ], [ -122.383764362513205, 37.723193482523506 ], [ -122.383781689859717, 37.723194922268853 ], [ -122.383795343242184, 37.723187836915955 ], [ -122.383821435159561, 37.723193943333669 ], [ -122.383828644613416, 37.723205502449808 ], [ -122.383835888866727, 37.723218434468372 ], [ -122.383841404702011, 37.72323139412638 ], [ -122.383848657659414, 37.723244669369848 ], [ -122.383852462137753, 37.723258343398804 ], [ -122.383857987017038, 37.723271646001557 ], [ -122.383861791837163, 37.723285319750062 ], [ -122.383865605358181, 37.723299336724111 ], [ -122.383867681419986, 37.723313038392696 ], [ -122.38387185196801, 37.723341127615335 ], [ -122.383872226038946, 37.723355886046527 ], [ -122.383879757398802, 37.723380144510621 ], [ -122.383887280063988, 37.723404059748461 ], [ -122.383896426763826, 37.723423828636541 ], [ -122.383903627551987, 37.723435044521956 ], [ -122.383914233002187, 37.723444146045374 ], [ -122.383928243093862, 37.723451132382195 ], [ -122.383956011009261, 37.72345515232913 ], [ -122.383982041442252, 37.723458856142138 ], [ -122.384009791963194, 37.723462189624996 ], [ -122.384035805692207, 37.723465206963674 ], [ -122.384063530109799, 37.723467510482209 ], [ -122.384089526103082, 37.723469841637751 ], [ -122.384136280611983, 37.723472527510232 ], [ -122.384158819757118, 37.723474913938858 ], [ -122.384181376305577, 37.723477986814515 ], [ -122.384203958613327, 37.723482089368453 ], [ -122.384224830245174, 37.723486906009427 ], [ -122.38424745675556, 37.723492724672354 ], [ -122.384268380608177, 37.72349960093424 ], [ -122.384289321860564, 37.723507163369192 ], [ -122.384308551747594, 37.72351543990402 ], [ -122.384327808428154, 37.723524745827085 ], [ -122.384347090879899, 37.723535081704128 ], [ -122.384364653265465, 37.723545788456732 ], [ -122.384377022361861, 37.723556234913332 ], [ -122.38438594261595, 37.723567079901137 ], [ -122.384394846160177, 37.723577238425868 ], [ -122.384405469087795, 37.72358702608161 ], [ -122.384417785645866, 37.723595413459996 ], [ -122.384430084788605, 37.72360311383661 ], [ -122.384444086263514, 37.723609757160801 ], [ -122.384458052932075, 37.723615027580706 ], [ -122.384473782841141, 37.723621643252429 ], [ -122.38448780172817, 37.72362897302272 ], [ -122.384501846725257, 37.723637332468307 ], [ -122.384515900428013, 37.723646035137868 ], [ -122.384528251811574, 37.723655795132643 ], [ -122.384538892173168, 37.723666269227522 ], [ -122.384549541240418, 37.723677086547099 ], [ -122.38456021641889, 37.723688933542604 ], [ -122.384570943824258, 37.723702840165593 ], [ -122.384581645111282, 37.723715716561451 ], [ -122.384595785866907, 37.72372785147779 ], [ -122.384609917924237, 37.723739643166766 ], [ -122.384624023876995, 37.723750405177114 ], [ -122.384639831811498, 37.723760109862766 ], [ -122.384657351467936, 37.723769100432129 ], [ -122.384674853030802, 37.723777404558668 ], [ -122.384688837160766, 37.723783361676922 ], [ -122.384702838685783, 37.723790004695601 ], [ -122.384716875034059, 37.72379802088971 ], [ -122.384727472270853, 37.723806778833662 ], [ -122.38473981501231, 37.723816195854965 ], [ -122.384750446723075, 37.723826326704874 ], [ -122.384759367064078, 37.723837171663916 ], [ -122.38476655931882, 37.723848044270227 ], [ -122.384773760272395, 37.723859259827094 ], [ -122.38478439233964, 37.723869390668334 ], [ -122.384795006310796, 37.723878835068398 ], [ -122.384807314596031, 37.723886878899947 ], [ -122.384821316158124, 37.723893522179033 ], [ -122.384835282906707, 37.723898792553967 ], [ -122.384850942931138, 37.723902662375643 ], [ -122.384889238702442, 37.723912694229192 ], [ -122.384901537953482, 37.723920394830778 ], [ -122.38491387167187, 37.723929468064433 ], [ -122.384922801444858, 37.72394065622548 ], [ -122.384935378901247, 37.72395934004836 ], [ -122.384946228617792, 37.723978051514877 ], [ -122.384957095057587, 37.723997449442578 ], [ -122.384966251165253, 37.724017561465779 ], [ -122.384978611028657, 37.724027664643877 ], [ -122.384989269262093, 37.72403882514314 ], [ -122.384998216130384, 37.724050700029551 ], [ -122.385005451957767, 37.724063288474291 ], [ -122.385012696499402, 37.724076220418716 ], [ -122.385016466753711, 37.724088521225767 ], [ -122.38502538751068, 37.724099366158697 ], [ -122.385037712928536, 37.724108096697165 ], [ -122.385053408173405, 37.724113339388623 ], [ -122.385069016362493, 37.724115149547565 ], [ -122.385084528456687, 37.724113184503125 ], [ -122.385101700039968, 37.72410844598258 ], [ -122.385118888340344, 37.724104393921756 ], [ -122.385137831886752, 37.724101343865193 ], [ -122.385156818620402, 37.72410001021359 ], [ -122.385179288343707, 37.72409965064211 ], [ -122.385196616267564, 37.724101089899079 ], [ -122.385215698411002, 37.724103531450261 ], [ -122.385233087637133, 37.724107373824481 ], [ -122.385250510990446, 37.724112588834913 ], [ -122.385267961148685, 37.724118833233817 ], [ -122.385283708655592, 37.724126135522596 ], [ -122.385301210711177, 37.724134439275502 ], [ -122.385316914686456, 37.724140025157403 ], [ -122.38533260125142, 37.724144924586071 ], [ -122.385348261353599, 37.724148794341509 ], [ -122.385363904735826, 37.724151977632673 ], [ -122.385381250095534, 37.724154103588141 ], [ -122.385396840549205, 37.724155227532641 ], [ -122.38541414272278, 37.724155637349959 ], [ -122.385429689989081, 37.72415504515677 ], [ -122.385446939582977, 37.72415339589606 ], [ -122.385464163048326, 37.724150716681571 ], [ -122.385486461018303, 37.724147348627724 ], [ -122.385517561871112, 37.724142651083937 ], [ -122.385562344261174, 37.724135753744811 ], [ -122.385579620308761, 37.724135133861189 ], [ -122.385595245944231, 37.724137630950658 ], [ -122.38560923890941, 37.724143930635698 ], [ -122.385619835954955, 37.724152688504432 ], [ -122.38562873939226, 37.72416284694048 ], [ -122.385639388343563, 37.724173664166216 ], [ -122.38565002928155, 37.724184138154342 ], [ -122.385662389611269, 37.724194241254921 ], [ -122.385674732182835, 37.724203657908639 ], [ -122.385688794837932, 37.724212703663014 ], [ -122.385702840080384, 37.724221062964645 ], [ -122.385716876624841, 37.724229079313623 ], [ -122.385730887033873, 37.724236065435178 ], [ -122.385746617533329, 37.724242680930779 ], [ -122.385762330273252, 37.724248609978716 ], [ -122.385778025598896, 37.724253852573533 ], [ -122.385798932390358, 37.72426004211173 ], [ -122.385816364866457, 37.72426559998376 ], [ -122.385832086325422, 37.724271872247911 ], [ -122.38584781649574, 37.724278487735482 ], [ -122.38586357244958, 37.724286132903025 ], [ -122.385877617725541, 37.724294492183716 ], [ -122.38589340051098, 37.724303167287317 ], [ -122.385905743122947, 37.724312583642103 ], [ -122.385919823251839, 37.72432231609433 ], [ -122.385932192689026, 37.724332762111779 ], [ -122.38594985163823, 37.724347244101757 ], [ -122.385963914360929, 37.724356290097674 ], [ -122.385979679391255, 37.72436427819499 ], [ -122.385995409594287, 37.724370893662766 ], [ -122.386012824706015, 37.72437576560376 ], [ -122.386028493940515, 37.724379978214039 ], [ -122.38604418931267, 37.724385220773271 ], [ -122.386058173659734, 37.724391177453832 ], [ -122.386072175428609, 37.724397820583704 ], [ -122.386086194619651, 37.724405150162887 ], [ -122.386098511495945, 37.724413537089887 ], [ -122.386110837084971, 37.724422267241074 ], [ -122.386121460359277, 37.724432054740767 ], [ -122.386155140875701, 37.724396492269392 ], [ -122.386142558844625, 37.724445794903964 ], [ -122.386158314864247, 37.724453440031894 ], [ -122.386174045447717, 37.724460055470189 ], [ -122.386191469295412, 37.724465270335628 ], [ -122.386208867014332, 37.724469455522041 ], [ -122.386227957996084, 37.724472240134631 ], [ -122.386245295090333, 37.724474022731769 ], [ -122.38626432544568, 37.724474404754595 ], [ -122.386288541146868, 37.724474703747106 ], [ -122.386305877897456, 37.724476486340883 ], [ -122.386321468785383, 37.724477610432025 ], [ -122.386338779051741, 37.724478363075484 ], [ -122.386354352857126, 37.724478800431207 ], [ -122.386371637343302, 37.724478523662484 ], [ -122.386387184323809, 37.724477931348545 ], [ -122.38640445173273, 37.72447696811853 ], [ -122.386419972931165, 37.7244753463929 ], [ -122.386437213858997, 37.724473353487241 ], [ -122.386452717618937, 37.724471044757188 ], [ -122.386469932064344, 37.724468022175898 ], [ -122.386485410039811, 37.724464684034231 ], [ -122.386500878956426, 37.724461002670601 ], [ -122.38651633915967, 37.724456978079473 ], [ -122.386531781598762, 37.724452267315506 ], [ -122.386547242137226, 37.724448242440204 ], [ -122.386564474343317, 37.72444590629047 ], [ -122.386579960337627, 37.724442911647458 ], [ -122.386595429583735, 37.724439229991283 ], [ -122.386610881065096, 37.724434862162283 ], [ -122.386626315119955, 37.724429807880355 ], [ -122.38664173140225, 37.724424067151048 ], [ -122.386657130948578, 37.724417639957707 ], [ -122.386670792994096, 37.724410897498451 ], [ -122.386684437604913, 37.724403468312111 ], [ -122.386698064780759, 37.724395352398709 ], [ -122.386709954455839, 37.724386921220365 ], [ -122.386721827401047, 37.724377803853415 ], [ -122.386733682558045, 37.724367999490731 ], [ -122.386743808927534, 37.724358223089439 ], [ -122.386753901134114, 37.724347073774396 ], [ -122.386760492536993, 37.724334263702232 ], [ -122.386768838521292, 37.724322455623209 ], [ -122.386780684957245, 37.724312308304832 ], [ -122.386796092835809, 37.724306224324238 ], [ -122.386814983740024, 37.72430111465097 ], [ -122.386833900781468, 37.724297034651016 ], [ -122.38685286104193, 37.724294670780772 ], [ -122.386873576231366, 37.724293308893905 ], [ -122.386890817450478, 37.724291315916268 ], [ -122.38690624274291, 37.724285918372097 ], [ -122.386918141436212, 37.724277830392509 ], [ -122.386928250341739, 37.724267367524348 ], [ -122.386934850421213, 37.724254900667695 ], [ -122.386936248094955, 37.724241830684782 ], [ -122.386934179470913, 37.724228472583448 ], [ -122.386932102818292, 37.724214770970946 ], [ -122.386933491079674, 37.72420135749902 ], [ -122.386933168672044, 37.724188658157658 ], [ -122.386929398441154, 37.724176357406598 ], [ -122.386923908138428, 37.72416442757148 ], [ -122.386916706823882, 37.724153211871986 ], [ -122.386907811932304, 37.724143397033281 ], [ -122.38689548628895, 37.724134666690496 ], [ -122.386883203877176, 37.724127652753772 ], [ -122.386867500139488, 37.724122067349683 ], [ -122.386837811685524, 37.724110524813227 ], [ -122.386792314266742, 37.724089278160726 ], [ -122.386769557372673, 37.724078311594091 ], [ -122.386748519865691, 37.724066974120603 ], [ -122.386725745213752, 37.72405532110006 ], [ -122.386704690294678, 37.724043297167768 ], [ -122.386683626669864, 37.724030930006215 ], [ -122.386641482023506, 37.72400550949537 ], [ -122.386620400988434, 37.723992455596928 ], [ -122.386599311255594, 37.723979058743758 ], [ -122.386579941254908, 37.723965290981276 ], [ -122.386544701706455, 37.723939416215046 ], [ -122.386297403385385, 37.72380190986933 ], [ -122.386051808287206, 37.723663345927129 ], [ -122.386034340737112, 37.723656414643614 ], [ -122.385999441189313, 37.723643925509059 ], [ -122.385964559071653, 37.723632122815218 ], [ -122.385936677777778, 37.723623641958845 ], [ -122.385920974203756, 37.723618055878958 ], [ -122.385906946468538, 37.723610383053618 ], [ -122.385894611983545, 37.723601309659934 ], [ -122.385883963077092, 37.723590492456275 ], [ -122.385875024838413, 37.723578961136361 ], [ -122.38586953474902, 37.723567031250973 ], [ -122.385860622648437, 37.723556529881158 ], [ -122.385846603632743, 37.723549199999539 ], [ -122.385827460305421, 37.723544355976919 ], [ -122.385811791258462, 37.723540143339349 ], [ -122.385796095735444, 37.723534900753975 ], [ -122.385780392190739, 37.723529314655281 ], [ -122.385764662184897, 37.723522699157897 ], [ -122.385750651900182, 37.723515712764971 ], [ -122.385738361343229, 37.723508355751683 ], [ -122.385731151556087, 37.723496796478393 ], [ -122.385722248191556, 37.723486638323564 ], [ -122.385708220501641, 37.723478965474406 ], [ -122.385692534045461, 37.723474065820646 ], [ -122.385680182539247, 37.72346430594763 ], [ -122.385666111318983, 37.723454916965551 ], [ -122.385652048810016, 37.723445871207367 ], [ -122.385637977596772, 37.723436482221878 ], [ -122.385609870011095, 37.723419077148201 ], [ -122.38559409650658, 37.723410745500026 ], [ -122.385580051429457, 37.723402386184311 ], [ -122.385548521852172, 37.723386409328988 ], [ -122.385534494199106, 37.723378736459033 ], [ -122.385510008939335, 37.723367797318083 ], [ -122.385494374422848, 37.723364957271542 ], [ -122.385459753720795, 37.72336345119556 ], [ -122.385444119898509, 37.723360611131262 ], [ -122.385430153207864, 37.723355340828022 ], [ -122.385416142986116, 37.723348354395121 ], [ -122.385403808604508, 37.723339280949688 ], [ -122.385391492330285, 37.723330893943086 ], [ -122.385375701117368, 37.723321876094445 ], [ -122.385359927998408, 37.723313544134655 ], [ -122.385342434828871, 37.723305583340405 ], [ -122.385326695857486, 37.723298624564244 ], [ -122.385309246571239, 37.723292379887567 ], [ -122.385291822714692, 37.723287164896192 ], [ -122.385263732678311, 37.723270446190739 ], [ -122.38524797700147, 37.723262800941718 ], [ -122.385232229687915, 37.723255498921759 ], [ -122.385216491083142, 37.723248540125276 ], [ -122.385185048704614, 37.723235995428482 ], [ -122.385169353635689, 37.723230752753828 ], [ -122.385151929803385, 37.723225537741719 ], [ -122.385134524075497, 37.723221009167226 ], [ -122.385117126370531, 37.723216824101435 ], [ -122.385101466469777, 37.723212954040122 ], [ -122.385082366457212, 37.723209826029851 ], [ -122.385064995564079, 37.723206670622204 ], [ -122.385047580442674, 37.723201798545674 ], [ -122.38502841148815, 37.723195924710531 ], [ -122.385010953200691, 37.723189336769465 ], [ -122.384993460097732, 37.72318137592324 ], [ -122.384977677662462, 37.723172700972079 ], [ -122.384946044204682, 37.723152605241658 ], [ -122.384924989829145, 37.723140580989593 ], [ -122.384905663878186, 37.723128529078224 ], [ -122.384884618220184, 37.723116848044533 ], [ -122.384842544338781, 37.723094172691695 ], [ -122.384800505291054, 37.723072869951821 ], [ -122.384779494472909, 37.7230625615273 ], [ -122.384742788674473, 37.723047010916545 ], [ -122.384730489577436, 37.723039310022727 ], [ -122.384716444674581, 37.723030950878183 ], [ -122.384704119127363, 37.723022220310114 ], [ -122.38469349658682, 37.723012432674857 ], [ -122.384682864654536, 37.723002301824017 ], [ -122.38467394442489, 37.722991456857699 ], [ -122.384663217109889, 37.722977550517093 ], [ -122.384654296194697, 37.722966705560324 ], [ -122.384643682371646, 37.722957261146163 ], [ -122.384633093968816, 37.722948846419143 ], [ -122.384619101304366, 37.722942546342381 ], [ -122.384596345081988, 37.722931579353954 ], [ -122.384578721543591, 37.722918470060556 ], [ -122.384546896507018, 37.722890823537078 ], [ -122.384530966582233, 37.722876313408833 ], [ -122.384518537006088, 37.722863464381859 ], [ -122.38443411130757, 37.722807129900666 ], [ -122.384347983418735, 37.722751852133769 ], [ -122.384239081476991, 37.722684921079754 ], [ -122.384207605050619, 37.722671003487143 ], [ -122.384176119229906, 37.722656742122247 ], [ -122.384144625418941, 37.722642137786686 ], [ -122.384113113527988, 37.722626847002253 ], [ -122.384083322047019, 37.722611185329136 ], [ -122.384051793126986, 37.722595208071212 ], [ -122.384021983580084, 37.722578859942075 ], [ -122.38399213993786, 37.722561138891301 ], [ -122.383974473094511, 37.722546313377947 ], [ -122.383955077860932, 37.722531515778066 ], [ -122.383937428078781, 37.722517376441559 ], [ -122.383918050598027, 37.722503265006914 ], [ -122.383884593268888, 37.722479421152507 ], [ -122.383868863653973, 37.722472805400912 ], [ -122.383854862444593, 37.722466162007116 ], [ -122.383839115090979, 37.722458859805528 ], [ -122.383825087796367, 37.722451187005468 ], [ -122.383809323735065, 37.722443198062706 ], [ -122.383795270342418, 37.722434495307176 ], [ -122.383782945009273, 37.722425764916487 ], [ -122.383768882931093, 37.722416719206592 ], [ -122.383744181117109, 37.722397198772512 ], [ -122.383731812655114, 37.72238675251657 ], [ -122.38372613997241, 37.722367614518575 ], [ -122.383705303481563, 37.722364170691534 ], [ -122.383691206623396, 37.722353751794557 ], [ -122.383675390420279, 37.722343704028198 ], [ -122.383659608655421, 37.72233502861922 ], [ -122.383642115552547, 37.722327067576785 ], [ -122.3836246492464, 37.722320136472625 ], [ -122.383605471580864, 37.722313918910281 ], [ -122.383586328372033, 37.722309074528077 ], [ -122.383570607863348, 37.722302801956744 ], [ -122.383553080331694, 37.722293467992337 ], [ -122.383537272159586, 37.722283763169607 ], [ -122.383521447287507, 37.722273371882082 ], [ -122.383507350472314, 37.722262952962978 ], [ -122.383491507867944, 37.722251875225332 ], [ -122.383477384968415, 37.722240426625198 ], [ -122.38346325337578, 37.72222863479751 ], [ -122.383445508101758, 37.722210720451898 ], [ -122.383434894533281, 37.722201275653106 ], [ -122.383422587021329, 37.722193231670488 ], [ -122.383410305264974, 37.722186217644108 ], [ -122.38339632153793, 37.722180260372568 ], [ -122.383380653254989, 37.722176047130667 ], [ -122.383364967234144, 37.722171147440534 ], [ -122.383350966126613, 37.722164503986562 ], [ -122.38333693893793, 37.722156831128018 ], [ -122.383322885647786, 37.722148128041155 ], [ -122.383310552066504, 37.722139054369293 ], [ -122.383298209445869, 37.722129637475824 ], [ -122.383282367246764, 37.722118559704285 ], [ -122.38326655080327, 37.722108511888187 ], [ -122.383249023002975, 37.722099177609202 ], [ -122.383231530690935, 37.722091216494434 ], [ -122.383212327035437, 37.722083969464926 ], [ -122.383193157822831, 37.722078095341168 ], [ -122.383172277957286, 37.72207293529052 ], [ -122.383156635797775, 37.722069751696246 ], [ -122.383140949814091, 37.722064851976235 ], [ -122.383123517701506, 37.722059293437333 ], [ -122.383107814683271, 37.722053707530257 ], [ -122.383076390550301, 37.722041848445443 ], [ -122.383058941409402, 37.722035603714303 ], [ -122.383027482510172, 37.72202237171301 ], [ -122.383013472765484, 37.722015384992908 ], [ -122.382981979115939, 37.722000780625166 ], [ -122.382967960677476, 37.721993450399175 ], [ -122.382952196466633, 37.721985461621244 ], [ -122.382938160650923, 37.72197744521457 ], [ -122.382922396446673, 37.721969456432632 ], [ -122.382897807697603, 37.721954398035997 ], [ -122.382881913081334, 37.721941260860625 ], [ -122.382867729471926, 37.721927409605762 ], [ -122.38285353717319, 37.721913215123287 ], [ -122.382839327490771, 37.72189833418733 ], [ -122.38282855685857, 37.721882711553377 ], [ -122.382816049838553, 37.721866773306338 ], [ -122.382806990215869, 37.721850436593726 ], [ -122.382797922594165, 37.721833756643434 ], [ -122.382790609101846, 37.721818078751127 ], [ -122.382783313008133, 37.721803087584632 ], [ -122.382772577517116, 37.721788837568752 ], [ -122.382763570078581, 37.721774560207898 ], [ -122.382752843642237, 37.721760653685102 ], [ -122.382740405865931, 37.721747461242323 ], [ -122.382731494418593, 37.721736959358161 ], [ -122.382724293971776, 37.721725743398046 ], [ -122.382720523870901, 37.721713442518464 ], [ -122.382720202193767, 37.721700743160483 ], [ -122.382723346326571, 37.72168833177593 ], [ -122.382726481072993, 37.721675577176406 ], [ -122.382729581733628, 37.721661449662143 ], [ -122.38273230785866, 37.721632563445375 ], [ -122.382731603643052, 37.721604762147862 ], [ -122.382733369644583, 37.721586614972047 ], [ -122.382734347844632, 37.721576562371538 ], [ -122.38274367451254, 37.721535209801523 ], [ -122.382746792545248, 37.72152176846371 ], [ -122.382751629924911, 37.721507956556103 ], [ -122.382756484345322, 37.721494831105609 ], [ -122.382763041407543, 37.721480648347587 ], [ -122.382782164842624, 37.721416476839273 ], [ -122.382798370882199, 37.721373640576992 ], [ -122.382806482416456, 37.721352565673556 ], [ -122.382814602294815, 37.721331834000935 ], [ -122.382824442541889, 37.721310731465771 ], [ -122.382834299480933, 37.721290315392572 ], [ -122.382844148411394, 37.721269556081531 ], [ -122.382854005339539, 37.721249140006542 ], [ -122.382865600022583, 37.721229039519947 ], [ -122.382877185659027, 37.721208595811795 ], [ -122.382900408735608, 37.721169767752777 ], [ -122.38290693965736, 37.721154555308274 ], [ -122.382913479271252, 37.721139686089295 ], [ -122.382921747600108, 37.721124789237969 ], [ -122.382931761341311, 37.72111055121686 ], [ -122.382941783773603, 37.721096656420762 ], [ -122.382951814897126, 37.721083104849697 ], [ -122.382963583082613, 37.721069868876654 ], [ -122.382977097024437, 37.721057291727 ], [ -122.382988899981882, 37.721045428655017 ], [ -122.383004168370334, 37.721033853552548 ], [ -122.383019462839854, 37.721023308125787 ], [ -122.383034765654699, 37.721013105928478 ], [ -122.383050086547513, 37.721003590169914 ], [ -122.383070574806197, 37.7209933050774 ], [ -122.383087649800032, 37.720984791368565 ], [ -122.383102978684576, 37.720975618840036 ], [ -122.383116562158349, 37.720965787756029 ], [ -122.383131839552021, 37.72095455585724 ], [ -122.383143650811689, 37.7209430357264 ], [ -122.383155445374214, 37.720930829406058 ], [ -122.383167222202275, 37.720917936912819 ], [ -122.383198904587886, 37.720871762618749 ], [ -122.38322729544646, 37.720832165418933 ], [ -122.383257414279257, 37.720792540037081 ], [ -122.383305971799075, 37.720729958050264 ], [ -122.38333258199772, 37.720688328826199 ], [ -122.383344140985599, 37.72066685539815 ], [ -122.383355691961356, 37.720645038731924 ], [ -122.383365505527735, 37.720622906477054 ], [ -122.383373590728709, 37.720600801854324 ], [ -122.383381667228008, 37.720578354005049 ], [ -122.383389734679795, 37.720555562934777 ], [ -122.383394337405079, 37.720532483893628 ], [ -122.383400668139274, 37.720509377224332 ], [ -122.383403542162711, 37.720486326096186 ], [ -122.383407970241009, 37.720456382272516 ], [ -122.38340677875901, 37.720409360597294 ], [ -122.383402539659841, 37.720378525251974 ], [ -122.383398682545547, 37.720362792132271 ], [ -122.383398428098104, 37.720361252706262 ], [ -122.383396641447277, 37.720350463627156 ], [ -122.383387721377815, 37.72033961856436 ], [ -122.383358200220172, 37.720334596711098 ], [ -122.383344547327056, 37.720341682291192 ], [ -122.38333615741675, 37.720351774011149 ], [ -122.383322539304771, 37.720360232492368 ], [ -122.383310275938157, 37.720353904619685 ], [ -122.383304777801996, 37.720341631382666 ], [ -122.38331139553371, 37.720329851172949 ], [ -122.383307625413451, 37.720317550583985 ], [ -122.383293624653192, 37.720310906846613 ], [ -122.383277974162851, 37.720307380041632 ], [ -122.383265710124405, 37.720301052449905 ], [ -122.383253377195246, 37.720291978489243 ], [ -122.38324619420213, 37.720281449010265 ], [ -122.383240704778117, 37.720269518996041 ], [ -122.38324039171458, 37.720257162862467 ], [ -122.383243535008134, 37.72024475147218 ], [ -122.383250135348419, 37.720232284813868 ], [ -122.383254981599535, 37.720218816377724 ], [ -122.383258090442638, 37.720205031803125 ], [ -122.38325945354886, 37.720190588682506 ], [ -122.383259097001115, 37.720176516419151 ], [ -122.383255283408985, 37.720162499423914 ], [ -122.383249759553038, 37.720149196500621 ], [ -122.3832425157008, 37.720136264439603 ], [ -122.383233560549201, 37.720124046466523 ], [ -122.38322290383195, 37.720112885790329 ], [ -122.383210553208443, 37.720103125653154 ], [ -122.383196395976469, 37.720090304111586 ], [ -122.383073889931538, 37.72003217363779 ], [ -122.382849809825458, 37.71992313205017 ], [ -122.382825447811499, 37.719916997234385 ], [ -122.38279933973088, 37.719910203866348 ], [ -122.382774952002876, 37.719903039905788 ], [ -122.382750537499561, 37.719894845998688 ], [ -122.382727834641599, 37.719885937725351 ], [ -122.382703394420673, 37.719876714399525 ], [ -122.382680656108263, 37.719866433224148 ], [ -122.382657909806966, 37.719855809081899 ], [ -122.382635145779759, 37.719844498488762 ], [ -122.382614092714974, 37.719832473817299 ], [ -122.382593030963804, 37.71982010591605 ], [ -122.382571951833512, 37.71980705155903 ], [ -122.382552583665785, 37.719793283125171 ], [ -122.382533206466661, 37.719779171467643 ], [ -122.382517347496844, 37.719767407137013 ], [ -122.382329598519163, 37.719659157154716 ], [ -122.382140156862491, 37.71955230738498 ], [ -122.382084189621324, 37.71952710586983 ], [ -122.382026520507765, 37.719502961888537 ], [ -122.382009045965773, 37.719495686772042 ], [ -122.381991562743806, 37.719488068701423 ], [ -122.381975799169183, 37.719480079789612 ], [ -122.381960018217541, 37.719471404423579 ], [ -122.381944228233777, 37.719462385834824 ], [ -122.381928430255144, 37.719453024006853 ], [ -122.381912623244801, 37.719443318956195 ], [ -122.381898535881675, 37.719433243065936 ], [ -122.381884431142637, 37.719422480721789 ], [ -122.381872072119776, 37.719412377217125 ], [ -122.381859773582747, 37.719404676299234 ], [ -122.381847484429258, 37.719397318595092 ], [ -122.381833501358983, 37.719391361409976 ], [ -122.381802095947549, 37.719380188981518 ], [ -122.381786358477399, 37.719373229447925 ], [ -122.381770594949188, 37.719365240508537 ], [ -122.381756533687849, 37.719356194279435 ], [ -122.38174418338258, 37.719346433987333 ], [ -122.381731807013125, 37.719335644015629 ], [ -122.381721141599613, 37.719324139981623 ], [ -122.381712186795909, 37.719311921891311 ], [ -122.381704943292732, 37.719298989734028 ], [ -122.381695910985357, 37.719283682596497 ], [ -122.381688693554523, 37.719271780116451 ], [ -122.381681484814919, 37.719260220862054 ], [ -122.381663628063038, 37.719237844020014 ], [ -122.381645788699373, 37.719216153627443 ], [ -122.381624527445553, 37.719195891351333 ], [ -122.381612168150028, 37.71918578782455 ], [ -122.381601529187748, 37.719175313452254 ], [ -122.381592592151165, 37.719163782073863 ], [ -122.381583646069373, 37.719151906924999 ], [ -122.381576411292528, 37.719139317985587 ], [ -122.381570896501387, 37.71912635820749 ], [ -122.381567092315478, 37.719112684375858 ], [ -122.381559735915829, 37.719095290544253 ], [ -122.38155422912088, 37.719082673727875 ], [ -122.381548731721296, 37.719070400675434 ], [ -122.381541505639575, 37.719058154685285 ], [ -122.38153600789127, 37.719045881363151 ], [ -122.38150713837662, 37.718998271399208 ], [ -122.381498201369013, 37.718986739738739 ], [ -122.381490992686665, 37.71897518047215 ], [ -122.381473118684809, 37.718952117147957 ], [ -122.381464190375866, 37.718940928710964 ], [ -122.381455270757456, 37.718930083499401 ], [ -122.381446342115154, 37.718918895341112 ], [ -122.38143742284764, 37.718908050122621 ], [ -122.381416144356564, 37.718887101081044 ], [ -122.381407233439191, 37.718876599091892 ], [ -122.381385972354465, 37.718856337046212 ], [ -122.381373613486502, 37.71884623321376 ], [ -122.381352369787336, 37.718826657339626 ], [ -122.381327686843449, 37.718807823394606 ], [ -122.38131535405293, 37.718798749234402 ], [ -122.38129421463421, 37.718783292338109 ], [ -122.381275038076012, 37.718777074392875 ], [ -122.381252413579233, 37.718771255149179 ], [ -122.381231552150709, 37.71876678120416 ], [ -122.381208979780382, 37.718763021309094 ], [ -122.381188161789552, 37.718760263487212 ], [ -122.381165632510005, 37.718758219720186 ], [ -122.381143129982078, 37.718757205616299 ], [ -122.381106826627473, 37.718757441991308 ], [ -122.381084384557454, 37.718758830464949 ], [ -122.380998020790415, 37.718762269763332 ], [ -122.380954864960344, 37.718765019067327 ], [ -122.380911726497644, 37.718768454807901 ], [ -122.380818588404082, 37.718777496255818 ], [ -122.380801331270163, 37.71877880161415 ], [ -122.380782345824386, 37.718780134839598 ], [ -122.380765070988232, 37.718780754294905 ], [ -122.380746051141955, 37.718780714329604 ], [ -122.380728750590777, 37.7187803038209 ], [ -122.380709712691541, 37.718779577682966 ], [ -122.380692386433651, 37.718778137484804 ], [ -122.380673314144289, 37.718776038430633 ], [ -122.380655961489964, 37.718773568553999 ], [ -122.380638600152778, 37.718770755448638 ], [ -122.380621221455968, 37.718767256162863 ], [ -122.380603834063052, 37.71876341309914 ], [ -122.380569024561694, 37.718754354608322 ], [ -122.380515107712881, 37.718741824128088 ], [ -122.380459506326716, 37.71873103733904 ], [ -122.380442119303254, 37.718727194520504 ], [ -122.380426442886844, 37.718722637662651 ], [ -122.380409012106568, 37.718717078713624 ], [ -122.380393292279919, 37.718710805720228 ], [ -122.380374046360402, 37.718701842093019 ], [ -122.380356511396428, 37.718692164421441 ], [ -122.38034421348118, 37.718684463338931 ], [ -122.380331889520718, 37.718675732576422 ], [ -122.380321267831235, 37.718665944545648 ], [ -122.380312339384403, 37.718654756026375 ], [ -122.380301657268987, 37.718642565404615 ], [ -122.380291009195389, 37.71863174769787 ], [ -122.380280353133841, 37.718620586752877 ], [ -122.380271407679629, 37.71860871177239 ], [ -122.380262453207322, 37.71859649384507 ], [ -122.380255227383529, 37.718584247775084 ], [ -122.380248018933486, 37.718572688431699 ], [ -122.380240793121359, 37.718560442635365 ], [ -122.380231848026369, 37.718548567646252 ], [ -122.38022120032204, 37.718537749927506 ], [ -122.380208832990292, 37.718527303020664 ], [ -122.380196491707878, 37.718517885791279 ], [ -122.380182448162131, 37.718509525825596 ], [ -122.380168421983186, 37.718501852310723 ], [ -122.380152693540609, 37.718495236058757 ], [ -122.380136999827513, 37.718489992709728 ], [ -122.380119595168225, 37.718485463396448 ], [ -122.380103953548627, 37.718482279400568 ], [ -122.380086617999027, 37.718480495897992 ], [ -122.380053754382303, 37.718479990320766 ], [ -122.380034708231022, 37.718478920841939 ], [ -122.380017337959387, 37.718475764424113 ], [ -122.37999994233742, 37.718471578313881 ], [ -122.379982511302273, 37.718466019307044 ], [ -122.379966765867707, 37.718458716572137 ], [ -122.379950994048144, 37.718450384161848 ], [ -122.379936915819798, 37.718440651261687 ], [ -122.379924539863453, 37.718429861098564 ], [ -122.379912120161947, 37.71841735480826 ], [ -122.379903227227103, 37.718407539426167 ], [ -122.379890903011727, 37.718398808348084 ], [ -122.379878596858461, 37.718390763984829 ], [ -122.379866307723006, 37.718383406078345 ], [ -122.379852316321873, 37.718377105430825 ], [ -122.379838350963936, 37.718371834460527 ], [ -122.379822683339711, 37.718367620748374 ], [ -122.379808770066504, 37.718364409132271 ], [ -122.379793145500187, 37.71836191155316 ], [ -122.379777565026231, 37.718361130092418 ], [ -122.379746464146947, 37.718361969759833 ], [ -122.379729146346136, 37.71836087292629 ], [ -122.379715198352471, 37.718356288119374 ], [ -122.379701189609946, 37.718349301001297 ], [ -122.379690576729757, 37.718339856139472 ], [ -122.379683377077711, 37.718328640261959 ], [ -122.3796778796832, 37.718316366577113 ], [ -122.37967239098387, 37.718304436667452 ], [ -122.37966348037574, 37.718293934270854 ], [ -122.379652884528355, 37.718285176138238 ], [ -122.379638884477515, 37.718278531964394 ], [ -122.379623199871318, 37.718273631767524 ], [ -122.379609182480792, 37.718266301686668 ], [ -122.379598560938021, 37.718256513315531 ], [ -122.379589606611773, 37.718244295061801 ], [ -122.379568259413119, 37.718220600422896 ], [ -122.379555875206677, 37.718209466714256 ], [ -122.379543499344152, 37.718198676510717 ], [ -122.3795311408429, 37.718188572758478 ], [ -122.379517062719074, 37.718178839807734 ], [ -122.379503001963329, 37.71816979358254 ], [ -122.379487230257041, 37.718161461109773 ], [ -122.379473169494304, 37.718152414331819 ], [ -122.379462538975446, 37.718142283276592 ], [ -122.3794518917869, 37.718131465482102 ], [ -122.37944294651696, 37.718119590163212 ], [ -122.379435729559873, 37.718107687542933 ], [ -122.379424700187641, 37.718081767792796 ], [ -122.379422659465391, 37.718069439219867 ], [ -122.379417153461716, 37.718056822570574 ], [ -122.379409936521796, 37.718044920223178 ], [ -122.37940101731057, 37.718034074854529 ], [ -122.379390386804573, 37.718023943243416 ], [ -122.379378072089409, 37.71801555560107 ], [ -122.37936745929791, 37.718006110709609 ], [ -122.379346164299292, 37.71798447511302 ], [ -122.379333796843824, 37.717974028393506 ], [ -122.379323167053869, 37.717963897039802 ], [ -122.379310817292421, 37.717954136215845 ], [ -122.379298475880205, 37.717944719171612 ], [ -122.379286143826207, 37.717935644792249 ], [ -122.379272083137607, 37.717926598264555 ], [ -122.379261435662016, 37.717915780457993 ], [ -122.379250796867041, 37.717905305876819 ], [ -122.379240166752524, 37.717895174521026 ], [ -122.379229553995728, 37.71788572961696 ], [ -122.379217221621232, 37.717876655510366 ], [ -122.379203178306753, 37.717868295427088 ], [ -122.379190871970053, 37.717860250996829 ], [ -122.379175109041569, 37.717852261708209 ], [ -122.379164469922188, 37.717841787124641 ], [ -122.379152137908591, 37.717832713005684 ], [ -122.379138137994644, 37.717826069046431 ], [ -122.379125875056587, 37.717819740741156 ], [ -122.379111857793731, 37.717812410326019 ], [ -122.379101270749828, 37.717803995094904 ], [ -122.379090667046114, 37.717794893399073 ], [ -122.379078291320113, 37.717784103145959 ], [ -122.379062641223001, 37.717780576059667 ], [ -122.379047051849412, 37.717779451006763 ], [ -122.379033086660868, 37.717774179940491 ], [ -122.379022465271206, 37.717764391791221 ], [ -122.379016976365222, 37.717752461580901 ], [ -122.379009785541115, 37.717741588612981 ], [ -122.378990609802273, 37.71773537083854 ], [ -122.378971451059471, 37.717729838970079 ], [ -122.378953994246785, 37.717723250131236 ], [ -122.378936512100381, 37.717715631599603 ], [ -122.37891900323838, 37.7177069833972 ], [ -122.378903197337848, 37.717697277934541 ], [ -122.37888387343952, 37.717685225304997 ], [ -122.378864602279094, 37.717675231470452 ], [ -122.378847076429409, 37.717665896799019 ], [ -122.378827830621148, 37.717656932923234 ], [ -122.378808602859749, 37.717648655486073 ], [ -122.378778909235265, 37.717636768235245 ], [ -122.378761435795425, 37.717629492629342 ], [ -122.378726453548339, 37.717613569064291 ], [ -122.378708953409784, 37.717605264056957 ], [ -122.378693173583002, 37.717596588245186 ], [ -122.378675665123012, 37.717587940000953 ], [ -122.378659867262996, 37.717578577742898 ], [ -122.37864235048211, 37.71756958626176 ], [ -122.378594931951909, 37.717540469771926 ], [ -122.378579117109084, 37.717530421044614 ], [ -122.3785509613637, 37.717510954911866 ], [ -122.378491401169214, 37.717480315188894 ], [ -122.37843182436778, 37.717448988971746 ], [ -122.37837222957846, 37.717416976282458 ], [ -122.378314346472195, 37.717384249540096 ], [ -122.378221298936523, 37.717328391303198 ], [ -122.378163571723618, 37.717301842568197 ], [ -122.378104150956304, 37.717276694266459 ], [ -122.37804646718476, 37.717251861606229 ], [ -122.377987080837755, 37.717228086156695 ], [ -122.377882351983473, 37.717188895399786 ], [ -122.377451299846371, 37.716962278497022 ], [ -122.377409136350764, 37.716935824700762 ], [ -122.377366990222555, 37.71691005734241 ], [ -122.37732312451665, 37.716884660739723 ], [ -122.37727928449992, 37.716860293805809 ], [ -122.377192593728324, 37.716850687700834 ], [ -122.377174053804566, 37.716801195276375 ], [ -122.377135442741164, 37.716778462058606 ], [ -122.377117882304205, 37.716767754227781 ], [ -122.377098594291084, 37.716757073924335 ], [ -122.377077577665531, 37.716746421163919 ], [ -122.377058306652586, 37.716736427312505 ], [ -122.377035544432545, 37.716725115631768 ], [ -122.377004002182673, 37.716708449744992 ], [ -122.376974170891216, 37.716691070132001 ], [ -122.376942602330686, 37.716673374829035 ], [ -122.376912754080166, 37.716655308741679 ], [ -122.376882896832043, 37.716636899425616 ], [ -122.376853030939387, 37.716618147149923 ], [ -122.376824875984553, 37.716598680327252 ], [ -122.376794983771219, 37.716578898087818 ], [ -122.376766811521605, 37.716558745072504 ], [ -122.376740359241694, 37.716538221557123 ], [ -122.376712169684112, 37.71651738180077 ], [ -122.376685699750382, 37.716496171550673 ], [ -122.376645065755298, 37.716461795731668 ], [ -122.376629260077664, 37.716452090242093 ], [ -122.376613463055463, 37.71644272742784 ], [ -122.376597691693803, 37.716434394571444 ], [ -122.376583692278402, 37.716427750581751 ], [ -122.376567912942647, 37.716419074209107 ], [ -122.376553835548819, 37.716409341176096 ], [ -122.376541451404279, 37.716398207158385 ], [ -122.376530778896253, 37.716386359416987 ], [ -122.376520053711957, 37.71637245232575 ], [ -122.376509415869748, 37.716361977488937 ], [ -122.376498794675413, 37.716352189390022 ], [ -122.37648645456278, 37.716342771488634 ], [ -122.376474122785964, 37.71633369736724 ], [ -122.37646180833417, 37.716325309423283 ], [ -122.376449502196934, 37.716317264435602 ], [ -122.376435485481252, 37.716309933700259 ], [ -122.376365488584341, 37.716276712265071 ], [ -122.376304211373494, 37.7162464421762 ], [ -122.376232373365212, 37.716208786249759 ], [ -122.376216559470649, 37.716198737197637 ], [ -122.376202464831138, 37.716188317394391 ], [ -122.376190080782948, 37.716177183613944 ], [ -122.37617768876666, 37.716165706594467 ], [ -122.376165279082414, 37.716153543125806 ], [ -122.376154588659077, 37.716141009182088 ], [ -122.3761438902538, 37.71612813145051 ], [ -122.376134902445671, 37.716114540017813 ], [ -122.376127616916719, 37.716099891652185 ], [ -122.376121444571496, 37.716060846115461 ], [ -122.376121115383214, 37.71604780350129 ], [ -122.376125312585643, 37.716008593078577 ], [ -122.376128439914226, 37.715995495685426 ], [ -122.376133304145654, 37.715982713442855 ], [ -122.376143049597545, 37.715957835965099 ], [ -122.376159466184788, 37.715923238019322 ], [ -122.376179356242673, 37.715889271474957 ], [ -122.376189309582273, 37.715872631433676 ], [ -122.376201000523864, 37.715856307079349 ], [ -122.37621269978483, 37.715840326230605 ], [ -122.376226135941366, 37.715824660529996 ], [ -122.376239589425921, 37.715809681555776 ], [ -122.376254771155516, 37.715794675051384 ], [ -122.376271646475075, 37.715778268109382 ], [ -122.376283440655172, 37.715766062477954 ], [ -122.376310486193518, 37.715741596141669 ], [ -122.376322263732177, 37.715728704316476 ], [ -122.376334049571057, 37.715716155173126 ], [ -122.376345826755966, 37.715703263351031 ], [ -122.376369363764837, 37.715676792426088 ], [ -122.376381123602442, 37.715663213872432 ], [ -122.376401186771318, 37.715636111823081 ], [ -122.376411209340475, 37.715622217575891 ], [ -122.376441252415276, 37.715579505126925 ], [ -122.376454523861156, 37.715557318367054 ], [ -122.37646974881784, 37.715544027967823 ], [ -122.376484964758959, 37.715530394345414 ], [ -122.376515380332151, 37.715502440624682 ], [ -122.376528859694105, 37.715488491296732 ], [ -122.376542321721558, 37.715473855513849 ], [ -122.376557511986263, 37.71545919219632 ], [ -122.37656924576747, 37.715444584217934 ], [ -122.376582699107203, 37.715429604929049 ], [ -122.37659614379038, 37.715414282961056 ], [ -122.376619576292114, 37.715383693270141 ], [ -122.376631284392559, 37.715368055325236 ], [ -122.376654682556946, 37.715336092989432 ], [ -122.376664653392297, 37.715320139354375 ], [ -122.376682927469105, 37.715290662203351 ], [ -122.376687808896733, 37.715278566664409 ], [ -122.376690936088593, 37.715265468980213 ], [ -122.376688878566242, 37.715252453901009 ], [ -122.376681679659114, 37.715241237559951 ], [ -122.376662556398827, 37.715237078495178 ], [ -122.37664688961523, 37.715232864358583 ], [ -122.376639690716317, 37.715221648014925 ], [ -122.376644563481292, 37.715209209250951 ], [ -122.376652953380841, 37.715199118279322 ], [ -122.376664860393532, 37.715191374275555 ], [ -122.376687422784229, 37.715194791816721 ], [ -122.376687067504449, 37.715180719522259 ], [ -122.376702422323845, 37.715172577492581 ], [ -122.376716031573253, 37.715163776542923 ], [ -122.376729623488316, 37.715154289138269 ], [ -122.376741469833547, 37.715144142814424 ], [ -122.376755035744793, 37.715133625726743 ], [ -122.37676513617842, 37.715122820763163 ], [ -122.376776948189416, 37.715111301248839 ], [ -122.376787014292304, 37.715099123096479 ], [ -122.376797028396751, 37.715084885583089 ], [ -122.376822345285078, 37.715060446663202 ], [ -122.376847653490671, 37.715035664511078 ], [ -122.376871224781212, 37.715010566664418 ], [ -122.376894778723212, 37.714984782359565 ], [ -122.376916604418071, 37.714959025588243 ], [ -122.376960238083626, 37.714906825585267 ], [ -122.376997080800365, 37.714859540886621 ], [ -122.377010663964072, 37.714849710496978 ], [ -122.37702423844344, 37.714839536329912 ], [ -122.377036076031359, 37.714829046749252 ], [ -122.377059716529033, 37.714806694677584 ], [ -122.377071528105475, 37.714795175413244 ], [ -122.377101725785408, 37.714758640881662 ], [ -122.377110046572668, 37.71474580378316 ], [ -122.37712317899306, 37.714718125317994 ], [ -122.377131300077295, 37.714697394009583 ], [ -122.377141149035509, 37.714676635164444 ], [ -122.377151007346924, 37.714656219534078 ], [ -122.377160873636086, 37.714636147415113 ], [ -122.377172468820078, 37.71461604719299 ], [ -122.377182335436814, 37.714595974791997 ], [ -122.377193938592001, 37.714576218079934 ], [ -122.377207270307977, 37.714556433818551 ], [ -122.377218882809402, 37.714537020319568 ], [ -122.377232223179533, 37.714517579281953 ], [ -122.37725892123467, 37.71447938365538 ], [ -122.377277350893181, 37.714456084488674 ], [ -122.377283856371662, 37.71443984265948 ], [ -122.377292090065524, 37.714423573286055 ], [ -122.377300340753251, 37.714407990645519 ], [ -122.377310329000593, 37.714392723126743 ], [ -122.377322053797371, 37.714377771844191 ], [ -122.37733379557335, 37.714363506744739 ], [ -122.377347274568308, 37.714349557046042 ], [ -122.377360770908837, 37.714336294348335 ], [ -122.377376004460587, 37.714323346775984 ], [ -122.37739125500535, 37.714311085935115 ], [ -122.37740648820791, 37.714298138638888 ], [ -122.377421729728198, 37.714285534572831 ], [ -122.377436980603278, 37.714273273720465 ], [ -122.377453959342105, 37.714260985325403 ], [ -122.377469218191379, 37.7142490679811 ], [ -122.377486214595891, 37.714237465754614 ], [ -122.3775014911119, 37.714226234579385 ], [ -122.37751849583654, 37.714214975854986 ], [ -122.377549126867919, 37.714195602534218 ], [ -122.377599993609977, 37.714155991753785 ], [ -122.377650877623338, 37.714117066855323 ], [ -122.37770177893016, 37.714078828662608 ], [ -122.377754425395366, 37.714041249630476 ], [ -122.377808826358589, 37.714004672148562 ], [ -122.377878556048842, 37.713958923045773 ], [ -122.37803805055384, 37.713839292710567 ], [ -122.378311443052539, 37.713642992366779 ], [ -122.378326710994585, 37.713631417851289 ], [ -122.37834196991345, 37.713619500112657 ], [ -122.378355483282817, 37.713606923478181 ], [ -122.378367251103185, 37.713593687948453 ], [ -122.378379009900755, 37.713580109196364 ], [ -122.378389032514391, 37.713566214765343 ], [ -122.378399037086837, 37.713551633891143 ], [ -122.378409033673563, 37.71353670977841 ], [ -122.378415564843792, 37.713521497564329 ], [ -122.378423815534646, 37.713505914562745 ], [ -122.378428575143985, 37.713489014049621 ], [ -122.378438562344869, 37.713473746443995 ], [ -122.378446830724755, 37.713458850163093 ], [ -122.378458563459517, 37.713444241448215 ], [ -122.378468586039958, 37.713430347010117 ], [ -122.378482073340123, 37.713416740955331 ], [ -122.378495569294984, 37.713403477576485 ], [ -122.37854455933747, 37.713358058816908 ], [ -122.378586757641585, 37.713317555466887 ], [ -122.378660976502815, 37.71324426535471 ], [ -122.378686622123027, 37.713232868634442 ], [ -122.378712250040763, 37.713220785460798 ], [ -122.378736140733594, 37.713208386350885 ], [ -122.378760006099483, 37.713194958094263 ], [ -122.378783853401998, 37.713180842841368 ], [ -122.378805955855427, 37.713166068959936 ], [ -122.378828040611339, 37.71315060890111 ], [ -122.378850116669099, 37.713134805062303 ], [ -122.378897499585833, 37.713094218893794 ], [ -122.378902259061135, 37.713077318360412 ], [ -122.378913939946415, 37.713060650508481 ], [ -122.378933827973057, 37.713026683209065 ], [ -122.378963633962542, 37.712974702985242 ], [ -122.3789800308884, 37.712939418456834 ], [ -122.378988220659366, 37.712921432553166 ], [ -122.378994682251076, 37.712903474492308 ], [ -122.379002872021474, 37.712885488862113 ], [ -122.379010931305004, 37.712862354837071 ], [ -122.37901923419868, 37.712848831146545 ], [ -122.379027554095487, 37.712835993914254 ], [ -122.379037619176003, 37.712823815570687 ], [ -122.379047693627413, 37.712811980716452 ], [ -122.379059495902879, 37.712800118022507 ], [ -122.37908614901481, 37.712760205563576 ], [ -122.379114530283019, 37.712720265802361 ], [ -122.379142928880469, 37.712681012761955 ], [ -122.379173064293639, 37.712642075095069 ], [ -122.379203208344947, 37.71260348037233 ], [ -122.379256878689148, 37.712538071449124 ], [ -122.379268637502918, 37.712524492600444 ], [ -122.379278650439701, 37.712510254875795 ], [ -122.379298659638835, 37.712481092959536 ], [ -122.379306927729047, 37.71246619634131 ], [ -122.379315186793136, 37.712450956501357 ], [ -122.379321709005382, 37.712435401007788 ], [ -122.37932825724657, 37.712420875193772 ], [ -122.379336368787747, 37.712399800499135 ], [ -122.379346199816894, 37.712378355003281 ], [ -122.379365879212997, 37.712336150462143 ], [ -122.379377455409823, 37.712315364122553 ], [ -122.379389040962025, 37.71229492072279 ], [ -122.379400617477728, 37.712274133826106 ], [ -122.379412211349106, 37.712254033656116 ], [ -122.37943383579011, 37.712220382468807 ], [ -122.379443961457966, 37.712210606401335 ], [ -122.379452350984806, 37.712200515220019 ], [ -122.379460722794221, 37.71218973704115 ], [ -122.379467357765066, 37.712178643485373 ], [ -122.379472247213258, 37.71216689105173 ], [ -122.379480610345027, 37.712155769919313 ], [ -122.379490683937206, 37.712143934762395 ], [ -122.379499030060259, 37.712132127444399 ], [ -122.379507358465077, 37.712119633128815 ], [ -122.379513950039424, 37.712106823711594 ], [ -122.3795205329195, 37.712093670518172 ], [ -122.379525370285052, 37.712079858722241 ], [ -122.379530172590734, 37.712064674025001 ], [ -122.379539812945708, 37.712035677519864 ], [ -122.379548106627041, 37.712021810569162 ], [ -122.379556408637853, 37.712008286850036 ], [ -122.379568185022265, 37.711995394692678 ], [ -122.379580030469796, 37.711985247803753 ], [ -122.379591867242681, 37.711974757961542 ], [ -122.37960195849513, 37.711963609242559 ], [ -122.379612041066054, 37.71195211729605 ], [ -122.379622114962288, 37.711940282396583 ], [ -122.379630451657874, 37.711928131304077 ], [ -122.379638780377292, 37.711915637522473 ], [ -122.379645371896999, 37.711902827548315 ], [ -122.379650226245587, 37.711889702480249 ], [ -122.379656800410586, 37.711876206326664 ], [ -122.379659918603238, 37.711862765324433 ], [ -122.379666440684801, 37.711847209535733 ], [ -122.379678077818568, 37.711828825746096 ], [ -122.379688004133726, 37.711811155438397 ], [ -122.37969966729311, 37.7117938013265 ], [ -122.379726467250435, 37.711759723844118 ], [ -122.379741621412023, 37.711743687200766 ], [ -122.379749992782422, 37.711732909006074 ], [ -122.379758304094665, 37.711719728487729 ], [ -122.379768369250002, 37.711707550074067 ], [ -122.379780179921312, 37.711696030807062 ], [ -122.379792016612967, 37.71168554066967 ], [ -122.379807344332391, 37.711676368550826 ], [ -122.379822698086315, 37.711668226109936 ], [ -122.379838086216196, 37.711661456853747 ], [ -122.379855237891832, 37.711656032360494 ], [ -122.379872414919589, 37.711651637830329 ], [ -122.379889557917664, 37.711645870380011 ], [ -122.379908402687462, 37.71163904594512 ], [ -122.379923765095569, 37.711631246443076 ], [ -122.379940837953981, 37.711622733183106 ], [ -122.379956157314652, 37.71161321808723 ], [ -122.379969722126845, 37.711602700623473 ], [ -122.379983278248133, 37.711591839656897 ], [ -122.37999507983497, 37.71157997687245 ], [ -122.380006864748808, 37.711567427622455 ], [ -122.380016912482191, 37.711554562733966 ], [ -122.380025223388486, 37.711541382476511 ], [ -122.380036947182674, 37.711526430642408 ], [ -122.38004519730535, 37.711510847247801 ], [ -122.380061679847557, 37.711478994558078 ], [ -122.380068175776742, 37.711462409340825 ], [ -122.380072943900714, 37.711445851702329 ], [ -122.380077702996331, 37.711428950842468 ], [ -122.380080724916397, 37.711411734346029 ], [ -122.380091216381629, 37.711348044590686 ], [ -122.38010580681599, 37.711241368202799 ], [ -122.380111373878989, 37.711188057730013 ], [ -122.380119034347572, 37.71108080577428 ], [ -122.380121136424947, 37.711027206969042 ], [ -122.38012151036925, 37.71097363602329 ], [ -122.380118923524051, 37.71087135474918 ], [ -122.380110379014539, 37.710806938200108 ], [ -122.380106523093488, 37.71079120494867 ], [ -122.380104387317047, 37.710775100874208 ], [ -122.380100531751495, 37.710759367891555 ], [ -122.380096667493106, 37.710743291132871 ], [ -122.380092811923888, 37.710727557875288 ], [ -122.380087228225392, 37.710711852202415 ], [ -122.380081653209785, 37.710696489755954 ], [ -122.380077797646152, 37.710680756497752 ], [ -122.380070494504992, 37.710665421635404 ], [ -122.38005934448995, 37.710634696740314 ], [ -122.380050209064109, 37.710615270740703 ], [ -122.380041299331083, 37.710604768634425 ], [ -122.380032397935238, 37.710594609759674 ], [ -122.38002177779228, 37.710584821958371 ], [ -122.38001116562711, 37.710575376844702 ], [ -122.379989959370192, 37.710557173605956 ], [ -122.379977637144137, 37.710548442789609 ], [ -122.379965323255277, 37.71054005520417 ], [ -122.379940729859655, 37.710524652941764 ], [ -122.379928442370812, 37.710517295301628 ], [ -122.379914435085283, 37.710510308200178 ], [ -122.379886455233503, 37.710497706624587 ], [ -122.379872473994169, 37.710491749198276 ], [ -122.379856825041841, 37.710488221944338 ], [ -122.379827508004084, 37.710491093407484 ], [ -122.379813839223587, 37.710497492136078 ], [ -122.379798416283975, 37.71050288903816 ], [ -122.379782897858064, 37.710504509895109 ], [ -122.379767309667471, 37.710503385490924 ], [ -122.379749941954842, 37.710500228744046 ], [ -122.379735969404862, 37.71049461452828 ], [ -122.379723664231022, 37.710486570144241 ], [ -122.37971305247035, 37.710477125272625 ], [ -122.37970236260378, 37.710464591359482 ], [ -122.37969344425926, 37.710453745999907 ], [ -122.379682806125587, 37.710443271450828 ], [ -122.379672177364711, 37.710433140116493 ], [ -122.379661556600993, 37.710423352293517 ], [ -122.379649225750256, 37.710414277941311 ], [ -122.379636903242243, 37.710405547094624 ], [ -122.379624598093869, 37.71039750270014 ], [ -122.379610573502859, 37.710389829108948 ], [ -122.379596566278167, 37.710382842244165 ], [ -122.379582567720405, 37.710376198055286 ], [ -122.379566867083199, 37.710370611396797 ], [ -122.37955117512638, 37.710365367962943 ], [ -122.379535500182058, 37.71036081098601 ], [ -122.379504186047228, 37.710353069916337 ], [ -122.379490239583589, 37.71034848562612 ], [ -122.37947454763686, 37.710343242182041 ], [ -122.379460575130224, 37.710337627658895 ], [ -122.379444865487201, 37.710331697762861 ], [ -122.379430875636984, 37.710325397057247 ], [ -122.379416868434376, 37.710318409896438 ], [ -122.379404589708813, 37.710311395428178 ], [ -122.379390565156754, 37.710303721810703 ], [ -122.379378268729113, 37.710296020617108 ], [ -122.379364226828372, 37.710287660542946 ], [ -122.379351913051934, 37.710279272893054 ], [ -122.379341310038157, 37.710270170939822 ], [ -122.379328978913207, 37.71026109683396 ], [ -122.379307738212361, 37.710241520839027 ], [ -122.37929710884022, 37.710231389481542 ], [ -122.379288208275057, 37.710221230264345 ], [ -122.379275772698335, 37.710208037437084 ], [ -122.379261548615801, 37.710192469588307 ], [ -122.379247341892423, 37.710177588191321 ], [ -122.379231407401903, 37.710162734359407 ], [ -122.379215489925031, 37.710148566984365 ], [ -122.379199589806944, 37.710135086060731 ], [ -122.379181961577132, 37.710121632706517 ], [ -122.379164350706091, 37.710108865803193 ], [ -122.379145029076398, 37.710096812921883 ], [ -122.379125716135945, 37.710085103538738 ], [ -122.379106411517995, 37.710073736835547 ], [ -122.379081871200697, 37.710060393742431 ], [ -122.379067829377789, 37.710052033632635 ], [ -122.379053770213616, 37.710042987342149 ], [ -122.37904143915452, 37.710033912931294 ], [ -122.379027362638922, 37.710024179909425 ], [ -122.379015013896463, 37.710014419322256 ], [ -122.379004376612457, 37.710003944700169 ], [ -122.378992010871215, 37.709993497651439 ], [ -122.378981364572482, 37.709982679805925 ], [ -122.378970709601532, 37.709971518732665 ], [ -122.378961774072408, 37.709959986863232 ], [ -122.378943885326493, 37.709936236674181 ], [ -122.378934932808065, 37.709924018618082 ], [ -122.378927716720895, 37.709912115676609 ], [ -122.378920448592652, 37.709898153648354 ], [ -122.378914899558595, 37.709883820830655 ], [ -122.378911070654652, 37.709869117207219 ], [ -122.378908969518022, 37.709854386021547 ], [ -122.378906859361621, 37.709839311614516 ], [ -122.37890825816865, 37.709826241422213 ], [ -122.378906182713109, 37.709812539922396 ], [ -122.378898593625834, 37.709785878500057 ], [ -122.37889311469489, 37.709774291484649 ], [ -122.378882494466538, 37.709764503310346 ], [ -122.378852995161623, 37.709760166773435 ], [ -122.378837381455881, 37.709758012285448 ], [ -122.378821663310447, 37.709751739078932 ], [ -122.378811043440322, 37.709741950892628 ], [ -122.378800232043204, 37.709724611725996 ], [ -122.378791192829524, 37.709708961390213 ], [ -122.378764047778134, 37.709660979621674 ], [ -122.378756718985287, 37.709644614994865 ], [ -122.378747662435089, 37.709628277927287 ], [ -122.378733004866319, 37.709595548670947 ], [ -122.378727395179027, 37.709578813530399 ], [ -122.378716350309503, 37.709552206945055 ], [ -122.378707440892299, 37.709541704736111 ], [ -122.378700242233577, 37.709530488508285 ], [ -122.378694754332813, 37.709518558261863 ], [ -122.378690976843657, 37.709505914002577 ], [ -122.378687217401875, 37.709493956460406 ], [ -122.378676596888084, 37.709484167998021 ], [ -122.378662607269405, 37.709477867474909 ], [ -122.378646941924686, 37.709473653320337 ], [ -122.378632917608854, 37.70946597961165 ], [ -122.378620586358139, 37.709456905436006 ], [ -122.37861166863793, 37.709446059987314 ], [ -122.378602715880561, 37.709433841635963 ], [ -122.378598947091831, 37.709421540874992 ], [ -122.378593433533567, 37.709408580662952 ], [ -122.378584489118467, 37.709396705817099 ], [ -122.378573843310107, 37.709385887928249 ], [ -122.378559775644788, 37.709376497801813 ], [ -122.378545751356285, 37.709368824082631 ], [ -122.378531770436666, 37.709362866496143 ], [ -122.37851595734179, 37.709352817747309 ], [ -122.378503583104418, 37.709342027419368 ], [ -122.378491191524603, 37.709330550636324 ], [ -122.378478773584177, 37.709318044176833 ], [ -122.378469795190981, 37.709304796129004 ], [ -122.3784625272081, 37.709290834071133 ], [ -122.378455250555135, 37.709276528785921 ], [ -122.378449692984333, 37.709261852718043 ], [ -122.378447583629097, 37.709246778290328 ], [ -122.37844546525632, 37.709231360641176 ], [ -122.378445040296995, 37.709214542798215 ], [ -122.378446447493673, 37.70920181556793 ], [ -122.378445805707855, 37.709176416778014 ], [ -122.378447212565007, 37.70916368982774 ], [ -122.378446882999313, 37.709150647205846 ], [ -122.378444834357168, 37.709137975366076 ], [ -122.378444192579394, 37.709112576850501 ], [ -122.378433947648276, 37.709049217403461 ], [ -122.378430178900032, 37.709036916361775 ], [ -122.378428130263899, 37.709024244521487 ], [ -122.378424361863509, 37.709011943474067 ], [ -122.378420584791698, 37.708999299199597 ], [ -122.378413047997185, 37.708974697103997 ], [ -122.378407551172273, 37.708962423896338 ], [ -122.378403791789637, 37.708950465794935 ], [ -122.37839829531363, 37.708938192581272 ], [ -122.37839280715248, 37.708926262050589 ], [ -122.378381883920852, 37.708904460882493 ], [ -122.37837105540082, 37.708886435220357 ], [ -122.37835849948857, 37.708868437105671 ], [ -122.378344223820761, 37.708850809781346 ], [ -122.378331693592017, 37.708833841349971 ], [ -122.378315707193991, 37.708816928035041 ], [ -122.378301466234504, 37.708800673613098 ], [ -122.378285505520822, 37.708784789980257 ], [ -122.378262511753192, 37.708764211389848 ], [ -122.378217043865007, 37.708743647822331 ], [ -122.378194318256277, 37.708733709264415 ], [ -122.378169882609328, 37.708724484976287 ], [ -122.378147174694149, 37.708715232583032 ], [ -122.378108766623569, 37.708700393880235 ], [ -122.378089549231376, 37.708692459277344 ], [ -122.378072043283993, 37.708683810925692 ], [ -122.378056239066638, 37.708674105341039 ], [ -122.378040425836915, 37.708664056532776 ], [ -122.378029762871009, 37.708652552139604 ], [ -122.378012273597136, 37.70864459051851 ], [ -122.377996469734569, 37.708634884645676 ], [ -122.37798069155609, 37.708626209006241 ], [ -122.377964922044868, 37.708617876317049 ], [ -122.377947441795172, 37.708610257633161 ], [ -122.377929987553088, 37.708603668352943 ], [ -122.377912541998256, 37.708597422846282 ], [ -122.3778951224499, 37.708592206743326 ], [ -122.377875983484813, 37.708587361142648 ], [ -122.37785687054604, 37.708583545768889 ], [ -122.377837783259466, 37.708580759529298 ], [ -122.377818705342307, 37.708578316777135 ], [ -122.377799653089951, 37.708576903708312 ], [ -122.37778062684724, 37.708576520317315 ], [ -122.377751275466451, 37.708578018636814 ], [ -122.37773407231694, 37.708581382915298 ], [ -122.377718632623825, 37.708586092812681 ], [ -122.377701481846131, 37.708591516991923 ], [ -122.377687821894156, 37.70859825842814 ], [ -122.377674179284952, 37.708605686591305 ], [ -122.377657141190483, 37.70861557244023 ], [ -122.377638365993562, 37.708625142614181 ], [ -122.377621302228775, 37.708633998771425 ], [ -122.37760422910678, 37.708642511984849 ], [ -122.377585411236822, 37.708650365729795 ], [ -122.377547740133352, 37.708664700862904 ], [ -122.377527150486301, 37.708670866291307 ], [ -122.377508279906351, 37.708676660947582 ], [ -122.377487664247838, 37.708681796688104 ], [ -122.377468768348663, 37.708686561646054 ], [ -122.377448126680292, 37.708690667698683 ], [ -122.377432642914897, 37.708693661434552 ], [ -122.377360540414671, 37.708713695820649 ], [ -122.377290182950702, 37.708734389078231 ], [ -122.37721985977025, 37.708756455207251 ], [ -122.377122130511736, 37.708788572304698 ], [ -122.377099960038464, 37.708800600058829 ], [ -122.377076061124569, 37.708812655354983 ], [ -122.377053899648615, 37.708825026321882 ], [ -122.377031746485883, 37.70883774051714 ], [ -122.376984053287501, 37.708865969789912 ], [ -122.376966919370915, 37.708872080046966 ], [ -122.376949742820514, 37.708876474429971 ], [ -122.37693425933503, 37.708879467820125 ], [ -122.376896466671624, 37.708888997566206 ], [ -122.376879298426118, 37.708893734896868 ], [ -122.376863901249948, 37.70890016082808 ], [ -122.376850267175342, 37.708907932397054 ], [ -122.376836667745323, 37.708917076323402 ], [ -122.376824822757797, 37.708927222935884 ], [ -122.376814748831492, 37.70893905787635 ], [ -122.376802877136896, 37.70894817426737 ], [ -122.376791014809598, 37.708957634422354 ], [ -122.376755452394264, 37.708987043484797 ], [ -122.376745335469863, 37.7089971622786 ], [ -122.376733490104598, 37.709007308612669 ], [ -122.376716755060258, 37.709029207270859 ], [ -122.376711908706653, 37.709042675731048 ], [ -122.376710535868128, 37.709056775574453 ], [ -122.37670739161139, 37.709069186817985 ], [ -122.37670251024899, 37.709081282375145 ], [ -122.376694138728411, 37.709092060083194 ], [ -122.376684004106508, 37.709101492422995 ], [ -122.376670361304676, 37.709108920469312 ], [ -122.376656744500607, 37.709117378469699 ], [ -122.376650118041127, 37.709128814824965 ], [ -122.376645245682482, 37.709141253875728 ], [ -122.376642127052065, 37.709154694529374 ], [ -122.376632417316515, 37.709180944983316 ], [ -122.376619233705384, 37.709206564055854 ], [ -122.376610896477217, 37.709218714945962 ], [ -122.376602550229492, 37.709230522339361 ], [ -122.376592476565378, 37.709242356980148 ], [ -122.376582384885396, 37.709253505451606 ], [ -122.376570661100516, 37.709268456941743 ], [ -122.376557330163322, 37.709288241147618 ], [ -122.376542262116743, 37.709307709937875 ], [ -122.376527177411774, 37.709326491711906 ], [ -122.376510355603088, 37.709344958344019 ], [ -122.37649688600834, 37.709359250635856 ], [ -122.376465576896948, 37.709420181699592 ], [ -122.37643425907072, 37.709480769527424 ], [ -122.376389592497333, 37.709560455358435 ], [ -122.376388193936847, 37.709573525235768 ], [ -122.376391962028805, 37.709585826347244 ], [ -122.376399160344661, 37.709597042716048 ], [ -122.376402928439646, 37.70960934382714 ], [ -122.376401512215111, 37.709621727530589 ], [ -122.376396631112286, 37.709633823068486 ], [ -122.376388241812876, 37.709643914305353 ], [ -122.376374607552179, 37.709651685818365 ], [ -122.376360903976007, 37.709656711239063 ], [ -122.376340270633293, 37.709661160049372 ], [ -122.376319628632046, 37.709665265903617 ], [ -122.376300706073636, 37.70966900099792 ], [ -122.376281774504847, 37.709672392867645 ], [ -122.376261106515926, 37.709675469305139 ], [ -122.376242166965341, 37.709678517655895 ], [ -122.376221481647946, 37.709680907632375 ], [ -122.376202524423789, 37.709683269528199 ], [ -122.376181830441382, 37.709685316270686 ], [ -122.376162855890229, 37.709686991706079 ], [ -122.376142153236586, 37.70968869493997 ], [ -122.37612144191985, 37.709690054943209 ], [ -122.376102441041382, 37.709690700967826 ], [ -122.376060983764248, 37.70969204832312 ], [ -122.376041966245552, 37.709692007598299 ], [ -122.376021220279497, 37.709691994675758 ], [ -122.375997000772998, 37.709691350345274 ], [ -122.375979685047099, 37.709690252959057 ], [ -122.375962360653403, 37.709688812068713 ], [ -122.375946764362084, 37.709687343377091 ], [ -122.375929430969819, 37.709685559534897 ], [ -122.375913817710057, 37.709683404653902 ], [ -122.375896475997124, 37.709681277299751 ], [ -122.375880853380082, 37.709678778923745 ], [ -122.375863494692936, 37.709675965105127 ], [ -122.375830496078862, 37.709669966721727 ], [ -122.375814856497584, 37.709666782151935 ], [ -122.375799199596415, 37.709662911125946 ], [ -122.375781814588834, 37.709659067619612 ], [ -122.375766157697925, 37.7096551968638 ], [ -122.375750492134401, 37.709650982329691 ], [ -122.37571914370605, 37.709641867350243 ], [ -122.37570345217442, 37.709636623403227 ], [ -122.375687769305102, 37.709631722681216 ], [ -122.375672068772147, 37.709626135508472 ], [ -122.375626688017107, 37.709609003209117 ], [ -122.375612698633404, 37.70960270232392 ], [ -122.375586491256968, 37.709591788341328 ], [ -122.375574203661955, 37.709584430256932 ], [ -122.375561908094213, 37.709576728658583 ], [ -122.375549603516987, 37.7095686835628 ], [ -122.375539018050162, 37.709560268000558 ], [ -122.375526696511997, 37.709551536717242 ], [ -122.375505491645058, 37.709533332668286 ], [ -122.375494871897089, 37.709523544188201 ], [ -122.375485980256698, 37.709513728189755 ], [ -122.375468179326063, 37.709493410016719 ], [ -122.375457507973294, 37.709481561890541 ], [ -122.375445047568775, 37.709467338970569 ], [ -122.375432604141196, 37.709453802508946 ], [ -122.37541844161953, 37.70944063678396 ], [ -122.375402568663233, 37.709428185022126 ], [ -122.375386712684005, 37.709416419717819 ], [ -122.375370874027013, 37.709405340865558 ], [ -122.375353324589767, 37.709394975980821 ], [ -122.375334064026845, 37.709385325068311 ], [ -122.3753165495785, 37.709376333080996 ], [ -122.375297332662143, 37.709368398292526 ], [ -122.375276404964978, 37.709361177469411 ], [ -122.37525895944836, 37.709354931295927 ], [ -122.375243233032052, 37.709348314384421 ], [ -122.375227498651867, 37.709341354232684 ], [ -122.375196011900385, 37.709326747754233 ], [ -122.375180259522494, 37.709319101152943 ], [ -122.375166235593625, 37.709311427031338 ], [ -122.375150475248759, 37.709303436913331 ], [ -122.375122392776206, 37.709286715752803 ], [ -122.375108342887259, 37.709278011942899 ], [ -122.375092564902388, 37.709269335642915 ], [ -122.375080234468939, 37.709260261365458 ], [ -122.375066167268656, 37.709250870821613 ], [ -122.375046820209405, 37.709237787590567 ], [ -122.374989178668883, 37.709214326304803 ], [ -122.374933247603437, 37.709190151032686 ], [ -122.374831814752426, 37.709144037952456 ], [ -122.374807448289985, 37.709137558790196 ], [ -122.374784792602327, 37.709130365112337 ], [ -122.374762119621366, 37.709122485524915 ], [ -122.374739428974408, 37.709113918935145 ], [ -122.374716721719778, 37.709104666150246 ], [ -122.374694005469692, 37.70909507013927 ], [ -122.374673000016784, 37.709084760438706 ], [ -122.374651977245378, 37.709073763730864 ], [ -122.374630937176775, 37.709062080839466 ], [ -122.374611616554063, 37.709050027212591 ], [ -122.374592286937002, 37.709037630360818 ], [ -122.374572932059905, 37.709024204087896 ], [ -122.37455530492376, 37.709010749764424 ], [ -122.374537660498376, 37.708996609533031 ], [ -122.374519998756611, 37.708981782295425 ], [ -122.374504056473583, 37.708966584874155 ], [ -122.37448810553569, 37.708951043948915 ], [ -122.374473874034791, 37.708935132017182 ], [ -122.374445393756574, 37.708902622243208 ], [ -122.37441087248213, 37.708836215748391 ], [ -122.374376333954515, 37.708769122513743 ], [ -122.374372557576578, 37.708756477834406 ], [ -122.374371908539288, 37.708730736067942 ], [ -122.374373316424055, 37.708718008885349 ], [ -122.374376452056026, 37.708705254481714 ], [ -122.374381325118193, 37.708692815793029 ], [ -122.374386206487088, 37.708680720336844 ], [ -122.374392824593912, 37.708668940606316 ], [ -122.374401188091994, 37.708657819828403 ], [ -122.374411296980753, 37.708647358002679 ], [ -122.374421423174923, 37.708637582630523 ], [ -122.374446851154033, 37.708617606150035 ], [ -122.374463828756802, 37.708605318455056 ], [ -122.374482543776409, 37.708593346196544 ], [ -122.374499530354001, 37.708581401168907 ], [ -122.374518253325192, 37.708569772142909 ], [ -122.374535257553518, 37.708558513833601 ], [ -122.374562508759965, 37.708542285323816 ], [ -122.374586545781455, 37.70853572218347 ], [ -122.374610592144961, 37.708529502254436 ], [ -122.374634646468323, 37.708523625558676 ], [ -122.374658710134312, 37.7085180920742 ], [ -122.374682781760811, 37.708512901823013 ], [ -122.374706862737568, 37.708508055057699 ], [ -122.374732662777703, 37.708502837010279 ], [ -122.374853593864671, 37.708499538871287 ], [ -122.374919053196592, 37.70849025581817 ], [ -122.374984547145971, 37.708482345911996 ], [ -122.375051786483155, 37.708475095187325 ], [ -122.375117314688779, 37.708468558121517 ], [ -122.375182869540055, 37.708463050415169 ], [ -122.375307152797603, 37.708455577784022 ], [ -122.375370892619628, 37.708446665496233 ], [ -122.375436334529738, 37.708436695975841 ], [ -122.375501750445025, 37.708425696737649 ], [ -122.375594677055204, 37.708408765528524 ], [ -122.375613633621171, 37.708406403460977 ], [ -122.375651599745083, 37.708403738663016 ], [ -122.375689617134853, 37.708403133226682 ], [ -122.375705187517212, 37.708403572265745 ], [ -122.375746670063037, 37.708403254716799 ], [ -122.375789863380334, 37.70840222372631 ], [ -122.375831311282568, 37.708400533239043 ], [ -122.375872750535976, 37.708398500059232 ], [ -122.375914172451246, 37.708395779861441 ], [ -122.375955577054981, 37.708392373743997 ], [ -122.376026281020401, 37.708385410092347 ], [ -122.376043553148961, 37.708384791885535 ], [ -122.376081570871463, 37.708384186317168 ], [ -122.376098868977905, 37.708384597508989 ], [ -122.376117894810292, 37.708384980902565 ], [ -122.376136930009963, 37.708385708058287 ], [ -122.376154236772265, 37.708386462194504 ], [ -122.376192341117545, 37.708389288861419 ], [ -122.376221804728033, 37.708392253162685 ], [ -122.376289356067019, 37.708397357901482 ], [ -122.376356881066656, 37.708401432376654 ], [ -122.376424388753932, 37.708404820633483 ], [ -122.37649187011074, 37.708407179175936 ], [ -122.376561053904155, 37.708408480459845 ], [ -122.376628483974059, 37.708408779550602 ], [ -122.376747729724002, 37.70840722314199 ], [ -122.376763213450403, 37.708404229221443 ], [ -122.376778714166832, 37.708401922033076 ], [ -122.376794232219382, 37.708400301571331 ], [ -122.376809767242023, 37.708399367018018 ], [ -122.376832232606262, 37.708399009032 ], [ -122.376847802648896, 37.708399447925551 ], [ -122.376863390008594, 37.708400572721949 ], [ -122.376878994361022, 37.708402384250476 ], [ -122.376901555046999, 37.708405801748796 ], [ -122.376925852133638, 37.708409534936841 ], [ -122.376951859969793, 37.708412554126937 ], [ -122.376977850476194, 37.708414886857213 ], [ -122.37700382331353, 37.708416533407728 ], [ -122.377029779497036, 37.708417492938302 ], [ -122.377055709343722, 37.708417423062144 ], [ -122.377081630523975, 37.70841700995323 ], [ -122.377110981861648, 37.708415512075135 ], [ -122.377140437198108, 37.708418132914076 ], [ -122.377199313216423, 37.708422001936356 ], [ -122.377228733890291, 37.708423249845112 ], [ -122.377258145890991, 37.708424154244938 ], [ -122.377289277310766, 37.70842468814115 ], [ -122.37734804933055, 37.708424438364865 ], [ -122.377379146073082, 37.708423599054704 ], [ -122.37742059395805, 37.708421908282823 ], [ -122.377622787821593, 37.70841902848273 ], [ -122.377643542101708, 37.708419384350222 ], [ -122.377662585641644, 37.708420454217361 ], [ -122.377704146218846, 37.708423225296556 ], [ -122.37772493517798, 37.708424954057655 ], [ -122.37774400438326, 37.708427053598058 ], [ -122.377768215169155, 37.708427354337005 ], [ -122.378000106843373, 37.708436705199382 ], [ -122.37830619390914, 37.708440408092009 ], [ -122.37833376512657, 37.708436878380915 ], [ -122.378363081750692, 37.708434007008506 ], [ -122.378390687645833, 37.708431849917247 ], [ -122.378420038963, 37.708430351712977 ], [ -122.378463249251951, 37.708430005927042 ], [ -122.378492652956893, 37.708430567335327 ], [ -122.378520354243449, 37.708432185435299 ], [ -122.378549800963029, 37.708434462694896 ], [ -122.37857753695242, 37.708437453963704 ], [ -122.378607018369593, 37.70844110411668 ], [ -122.378634797731564, 37.7084458115066 ], [ -122.378662594444492, 37.708451205343785 ], [ -122.378692136242478, 37.70845725806938 ], [ -122.378711232196324, 37.708460387122912 ], [ -122.378730310465116, 37.708462829999633 ], [ -122.378768431943271, 37.708466342017964 ], [ -122.378787467182775, 37.708467068470803 ], [ -122.378808221481876, 37.708467424133083 ], [ -122.37882723903445, 37.708467464405793 ], [ -122.378846230556476, 37.708466474720126 ], [ -122.378866950150183, 37.708465457189874 ], [ -122.378885915308302, 37.708463438097219 ], [ -122.378904872467956, 37.708461075214444 ], [ -122.378923820612812, 37.708458369381802 ], [ -122.378949637703641, 37.708453837413678 ], [ -122.378975437088471, 37.708448618717021 ], [ -122.379001245829258, 37.708443742956021 ], [ -122.379028799657206, 37.708439526353885 ], [ -122.379054625403654, 37.708435337315045 ], [ -122.379080468498444, 37.708431834724301 ], [ -122.379108048344705, 37.708428647784281 ], [ -122.379133899764923, 37.708425488414207 ], [ -122.379161496965466, 37.708422988190016 ], [ -122.379201182372455, 37.708419951449862 ], [ -122.379266840650459, 37.708418560198723 ], [ -122.379358446131135, 37.708417785256238 ], [ -122.379379209096214, 37.708418484044785 ], [ -122.37939999809295, 37.708420212510255 ], [ -122.379420813122252, 37.708422970652627 ], [ -122.379439934791137, 37.708427129548738 ], [ -122.379460810565476, 37.708432290272043 ], [ -122.379479983944307, 37.708438507979139 ], [ -122.379497455985685, 37.70844578347802 ], [ -122.379516681782491, 37.708454060534727 ], [ -122.379532477472964, 37.708463422971533 ], [ -122.379550018242554, 37.708473443739265 ], [ -122.379562332087886, 37.708481831365319 ], [ -122.379578066691991, 37.708488790938986 ], [ -122.379593775956252, 37.708494720818962 ], [ -122.37961118692283, 37.708499593443946 ], [ -122.379628563179082, 37.708503093158996 ], [ -122.379654614203474, 37.708507827892014 ], [ -122.379678955199253, 37.708513276640822 ], [ -122.379705041297058, 37.708519384539102 ], [ -122.379729416669221, 37.708526206190314 ], [ -122.379762215471303, 37.708524308990917 ], [ -122.379786946339379, 37.708545202935731 ], [ -122.379809654745344, 37.70855445473304 ], [ -122.379834099571553, 37.70856402217715 ], [ -122.379856842014789, 37.70857464688364 ], [ -122.379891828930511, 37.70859091336267 ], [ -122.379907538241355, 37.708596843200731 ], [ -122.37992494057292, 37.708601372552437 ], [ -122.379945781718234, 37.708605160557006 ], [ -122.379964929495586, 37.708610348773604 ], [ -122.379985822717444, 37.708616195857346 ], [ -122.380006741975436, 37.708623072343208 ], [ -122.380025941841694, 37.708630319910732 ], [ -122.380045167406379, 37.708638597161041 ], [ -122.380062691631167, 37.708647931936689 ], [ -122.380080223835478, 37.708657609398351 ], [ -122.380097782783579, 37.708668316801365 ], [ -122.380111807100121, 37.70867599033663 ], [ -122.380127559503322, 37.708683636284732 ], [ -122.380141575145288, 37.708690966589629 ], [ -122.380173045244604, 37.708704885568586 ], [ -122.380187043533539, 37.708711529414458 ], [ -122.380202769909488, 37.708718145672115 ], [ -122.380218478926409, 37.708724075474095 ], [ -122.380234196281208, 37.708730348506272 ], [ -122.380249896974746, 37.708735935346311 ], [ -122.380267325396161, 37.708741494053129 ], [ -122.380283025396338, 37.708747080625194 ], [ -122.380298717408834, 37.708752323957377 ], [ -122.380316128481965, 37.708757196477961 ], [ -122.380331802444843, 37.708761753363198 ], [ -122.380349205186434, 37.708766282646621 ], [ -122.380364870817246, 37.708770496295159 ], [ -122.380399640892449, 37.708778181953583 ], [ -122.380415288819378, 37.708781709147395 ], [ -122.380450024177094, 37.708788021883869 ], [ -122.380467383521719, 37.708790835015982 ], [ -122.380502084159204, 37.708795774830023 ], [ -122.380519425451766, 37.708797901511986 ], [ -122.380554091366136, 37.708801468403678 ], [ -122.380571407305098, 37.708802565386677 ], [ -122.38058873123596, 37.708804005604904 ], [ -122.38062334505976, 37.708805513115699 ], [ -122.380640643641911, 37.708805923909587 ], [ -122.380657932836172, 37.708805990936078 ], [ -122.380699406909102, 37.70880532869085 ], [ -122.380744406973307, 37.708807357325021 ], [ -122.38079115213398, 37.708810044256637 ], [ -122.380837914326918, 37.708813417903293 ], [ -122.38088296649677, 37.70881750557038 ], [ -122.380929755096815, 37.708821908855221 ], [ -122.380974841668888, 37.708827369399565 ], [ -122.381019936932205, 37.708833173153394 ], [ -122.38105859232931, 37.708838506457845 ], [ -122.381066777313606, 37.708839635749648 ], [ -122.381111907677337, 37.708846812369579 ], [ -122.381195264075259, 37.708861619200029 ], [ -122.381216079294731, 37.708864377024973 ], [ -122.381238613917688, 37.708866764017813 ], [ -122.381259411768738, 37.708868835381693 ], [ -122.381280183563462, 37.708869877061808 ], [ -122.381300946672837, 37.708870575511568 ], [ -122.381323420152597, 37.708870559906792 ], [ -122.381342429462208, 37.708870256266636 ], [ -122.381404605870372, 37.708867889625047 ], [ -122.381505512521713, 37.708893060219943 ], [ -122.381586019961446, 37.708863618143027 ], [ -122.381762346029831, 37.708863204692321 ], [ -122.381781407118979, 37.708864960346808 ], [ -122.381802213679833, 37.708867375116121 ], [ -122.381821317860044, 37.708870846628407 ], [ -122.381842167859006, 37.708874977249344 ], [ -122.381859579414566, 37.708879849810799 ], [ -122.381875262525128, 37.708884749437118 ], [ -122.381890971365024, 37.708890679021408 ], [ -122.381904969842452, 37.708897322662949 ], [ -122.38191898569994, 37.708904652756104 ], [ -122.381933027626729, 37.708913012527532 ], [ -122.381945359191491, 37.708922086357219 ], [ -122.381957699102628, 37.708931503417737 ], [ -122.381968327967215, 37.70894163482285 ], [ -122.381980685608269, 37.708951738328693 ], [ -122.381993034210964, 37.708961498337537 ], [ -122.382005374141627, 37.708970915667607 ], [ -122.382017705026641, 37.70897998922608 ], [ -122.382045788934036, 37.708996708743506 ], [ -122.382059822203018, 37.709004725273097 ], [ -122.382073838096019, 37.709012055347692 ], [ -122.382089582428222, 37.709019357800898 ], [ -122.382105309038593, 37.709025973804216 ], [ -122.382136727169851, 37.709037833178158 ], [ -122.382152419374435, 37.709043076263157 ], [ -122.382168102538699, 37.709047975850353 ], [ -122.382185504767932, 37.709052504873313 ], [ -122.382201170908758, 37.709056718271931 ], [ -122.382218547417111, 37.709060217604623 ], [ -122.382234178116121, 37.709063058378014 ], [ -122.382251537592452, 37.70906587124707 ], [ -122.382268878998048, 37.70906799767139 ], [ -122.382286203707906, 37.709069437354287 ], [ -122.382303519050552, 37.709070534368244 ], [ -122.382320826380379, 37.709071287592842 ], [ -122.382341580865045, 37.709071642632544 ], [ -122.382365730359041, 37.709069540125881 ], [ -122.382388178510126, 37.709068494352529 ], [ -122.382412363104777, 37.709067764462617 ], [ -122.38243483664391, 37.709067748645822 ], [ -122.382459065046888, 37.709068735148399 ], [ -122.382481573697518, 37.709070092223556 ], [ -122.382505827816885, 37.709072107852691 ], [ -122.382528371242771, 37.709074838099873 ], [ -122.38255092334812, 37.709077911020174 ], [ -122.382573501192169, 37.709082013896044 ], [ -122.382596088421835, 37.709086459983112 ], [ -122.382618692692688, 37.709091592524558 ], [ -122.382641314350906, 37.70909741151484 ], [ -122.382662225311549, 37.709103944851186 ], [ -122.382677899491284, 37.709108501423991 ], [ -122.382700504120081, 37.709113633944185 ], [ -122.382724827799791, 37.709118395340859 ], [ -122.382747414358349, 37.709122841409943 ], [ -122.382771729703904, 37.70912725983942 ], [ -122.382794299234817, 37.7091310197154 ], [ -122.382818588161342, 37.709134408460983 ], [ -122.382842868390057, 37.709137453700393 ], [ -122.38286542018875, 37.709140526840578 ], [ -122.382889683387347, 37.709142885886266 ], [ -122.382938191710934, 37.709146917520584 ], [ -122.38296070039398, 37.709148274504173 ], [ -122.382986665264852, 37.70914957622869 ], [ -122.383007411087661, 37.709149588199111 ], [ -122.383029884990066, 37.709149571988654 ], [ -122.383050648193986, 37.709150270129996 ], [ -122.383073139146191, 37.709150940644498 ], [ -122.383093919739352, 37.709152325231301 ], [ -122.383116428772482, 37.709153682179597 ], [ -122.383158007351824, 37.709157137787358 ], [ -122.383180542125842, 37.709159524408562 ], [ -122.38322217288038, 37.709165039352904 ], [ -122.383244725048755, 37.709168112414922 ], [ -122.383265557820081, 37.709171556330674 ], [ -122.38330031099926, 37.709178554953908 ], [ -122.383319389589161, 37.709180996537953 ], [ -122.383354090598218, 37.709185935511563 ], [ -122.383373151814638, 37.709187691182962 ], [ -122.383407818040695, 37.709191256960054 ], [ -122.383426861522594, 37.709192326175256 ], [ -122.38344417758799, 37.709193422461318 ], [ -122.383463212713679, 37.709194148164016 ], [ -122.383497809392168, 37.709194968651609 ], [ -122.383516826773814, 37.709195007623549 ], [ -122.38353410806306, 37.709194731264901 ], [ -122.38355310841149, 37.709194084321595 ], [ -122.383570380651364, 37.709193464462061 ], [ -122.383603179656703, 37.709191566467979 ], [ -122.383625618791854, 37.709190177512419 ], [ -122.383660189372748, 37.709189967998213 ], [ -122.383684400085329, 37.709190267526687 ], [ -122.383706900098034, 37.709191281141187 ], [ -122.383729426202848, 37.709193324430878 ], [ -122.383751960667553, 37.709195711222868 ], [ -122.383774513205751, 37.709198783903318 ], [ -122.383797074104677, 37.709202200086082 ], [ -122.383819661098414, 37.709206645943979 ], [ -122.383842256453889, 37.709211435304148 ], [ -122.383863141444834, 37.709216938198551 ], [ -122.383887517772791, 37.709223758983043 ], [ -122.383918823190285, 37.709231155662387 ], [ -122.383950120607025, 37.709238209095858 ], [ -122.384012679973182, 37.709250943042996 ], [ -122.384043941921391, 37.709256623556676 ], [ -122.38407519587382, 37.709261961099109 ], [ -122.384137668283756, 37.709271262440524 ], [ -122.384168886754026, 37.709275226788684 ], [ -122.384201816616198, 37.709278477019389 ], [ -122.384233018039538, 37.70928175489211 ], [ -122.384265929816848, 37.709284318663009 ], [ -122.384297105498632, 37.709286567108421 ], [ -122.384329991519081, 37.709288100901972 ], [ -122.384361149451607, 37.709289662608477 ], [ -122.384394018088159, 37.7092905104804 ], [ -122.384452807809836, 37.709290943068623 ], [ -122.384475299515429, 37.709291613578934 ], [ -122.384496080167082, 37.709292997643757 ], [ -122.384516886928907, 37.709295411658836 ], [ -122.384534272309892, 37.7092992541508 ], [ -122.384549981442476, 37.709305183105528 ], [ -122.384600688269401, 37.709327720626654 ], [ -122.384651368684075, 37.709349228726715 ], [ -122.384702031710773, 37.709370049802885 ], [ -122.384754405467419, 37.709390157025624 ], [ -122.384806761855017, 37.709409578046774 ], [ -122.384859100858179, 37.709428312317186 ], [ -122.384913150236486, 37.709446332461404 ], [ -122.384967174216499, 37.709463322615903 ], [ -122.385028162503517, 37.709482261754836 ], [ -122.385061327139894, 37.709494778863174 ], [ -122.385077071522119, 37.709502080922022 ], [ -122.385092833321409, 37.709510069706113 ], [ -122.385106884415976, 37.70951877205021 ], [ -122.385135021443745, 37.709537550188017 ], [ -122.38516131723388, 37.709551894035449 ], [ -122.385185875889178, 37.70956592259045 ], [ -122.385212163333733, 37.709579922920014 ], [ -122.385240161144154, 37.709593209410606 ], [ -122.385266422163951, 37.7096061806036 ], [ -122.385294402578083, 37.709618780353921 ], [ -122.38532064620027, 37.709631064807468 ], [ -122.385376554860102, 37.709654205466649 ], [ -122.385427183484424, 37.709673653599111 ], [ -122.385474486504066, 37.709698305432774 ], [ -122.385520087565695, 37.709724014590961 ], [ -122.385565697364569, 37.70975006695771 ], [ -122.385611324607254, 37.709776805759368 ], [ -122.385656969295042, 37.709804230995893 ], [ -122.385720426192663, 37.709852316346286 ], [ -122.38574142470155, 37.709862281398394 ], [ -122.38576260604151, 37.709879453650188 ], [ -122.385783769984741, 37.709895939720084 ], [ -122.385806662054534, 37.709912398391943 ], [ -122.385829545420535, 37.709928513558424 ], [ -122.385852419736807, 37.709944285225092 ], [ -122.385908633553967, 37.709979438551144 ], [ -122.385924326223261, 37.709984681132887 ], [ -122.385940009841704, 37.709989580491779 ], [ -122.385955658638977, 37.709993107217954 ], [ -122.385971289669953, 37.709995947220456 ], [ -122.38598863209009, 37.709998073085792 ], [ -122.386004211215408, 37.709998853446052 ], [ -122.386023237864435, 37.70999923550869 ], [ -122.386043957793987, 37.709998216990876 ], [ -122.386064686430998, 37.709997541695692 ], [ -122.386085397651371, 37.709996179944298 ], [ -122.386126802680138, 37.709992770252597 ], [ -122.386147487765797, 37.709990378536858 ], [ -122.386169900968881, 37.70998795941798 ], [ -122.386190577350149, 37.709985224742994 ], [ -122.386231912690491, 37.709979068929542 ], [ -122.386250834828786, 37.709975332240148 ], [ -122.386271485083554, 37.709971568146692 ], [ -122.386292126613185, 37.709967460274193 ], [ -122.386312759445275, 37.709963009720973 ], [ -122.386333383551687, 37.709958215388703 ], [ -122.386352270849088, 37.709953106052509 ], [ -122.386372886247685, 37.709947968761632 ], [ -122.386393492926942, 37.709942487966288 ], [ -122.386412353741648, 37.709936348947188 ], [ -122.386432951711981, 37.709930525193258 ], [ -122.386451804494854, 37.709924042655906 ], [ -122.386489491932494, 37.709910390856137 ], [ -122.386508326593912, 37.709903221868281 ], [ -122.386545979522182, 37.709888197414408 ], [ -122.386564797097478, 37.709880341959447 ], [ -122.386583605612742, 37.709872143280762 ], [ -122.386602406104558, 37.709863601361754 ], [ -122.386624601143666, 37.709852601505517 ], [ -122.386648585957673, 37.709843976811243 ], [ -122.386694774483402, 37.709824694919647 ], [ -122.386716987264919, 37.709814381492933 ], [ -122.386739173906818, 37.709803038383235 ], [ -122.386759623723719, 37.709791379725885 ], [ -122.386781783879641, 37.709779007209534 ], [ -122.386809006718778, 37.709761745916552 ], [ -122.386819140491724, 37.709752312701141 ], [ -122.386825765435574, 37.70974087550043 ], [ -122.386828898974457, 37.709728120767494 ], [ -122.386826848894813, 37.709715449349289 ], [ -122.386819640282908, 37.709703890391729 ], [ -122.386817598557442, 37.709691561655937 ], [ -122.386819004336886, 37.70967883460122 ], [ -122.386823901170089, 37.709667425084099 ], [ -122.386834025525516, 37.709657648652097 ], [ -122.386847676124134, 37.709650562655604 ], [ -122.386868282692944, 37.709645082051537 ], [ -122.386895766825091, 37.709638117800075 ], [ -122.386923224816215, 37.709630123863455 ], [ -122.386948937619863, 37.709621471147983 ], [ -122.386974623942265, 37.70961178902828 ], [ -122.387000301531728, 37.709601763127544 ], [ -122.387025961350744, 37.709591051048854 ], [ -122.387051595722909, 37.709579309549376 ], [ -122.387075492913056, 37.709567251961815 ], [ -122.387099363971075, 37.709554165239872 ], [ -122.38712149784719, 37.709540762431281 ], [ -122.387143614994557, 37.709526673704133 ], [ -122.387172522192103, 37.709507668506873 ], [ -122.387191252472988, 37.709496380689082 ], [ -122.38723213436316, 37.70947237676026 ], [ -122.387250838140105, 37.709460059259776 ], [ -122.387271261641757, 37.709447370834297 ], [ -122.387308635352881, 37.709421363170897 ], [ -122.38732731330154, 37.709408015699388 ], [ -122.387344254439029, 37.70939435296458 ], [ -122.387362914960519, 37.709380319584099 ], [ -122.387379847018508, 37.709366313348852 ], [ -122.387396771054185, 37.709351964148425 ], [ -122.387413685684905, 37.70933727200498 ], [ -122.387447498167859, 37.709307200423432 ], [ -122.387477837364472, 37.709276498309869 ], [ -122.387504772282938, 37.709247910664018 ], [ -122.387518335595743, 37.709237392327147 ], [ -122.387531890183013, 37.709226530487904 ], [ -122.387555525398113, 37.709204176295842 ], [ -122.387565597996186, 37.70919234043189 ], [ -122.387577389623033, 37.709180133651593 ], [ -122.387587444438822, 37.709167611338806 ], [ -122.387595770813661, 37.709155116725697 ], [ -122.387605817253487, 37.709142251179543 ], [ -122.387614126544804, 37.709129070381714 ], [ -122.387625726420353, 37.709109312619674 ], [ -122.38763581573356, 37.709098163213035 ], [ -122.387647651248827, 37.709087672276503 ], [ -122.387659495137399, 37.7090775248451 ], [ -122.387671356453438, 37.709068063864919 ], [ -122.387684954578489, 37.709058918688022 ], [ -122.387698570117223, 37.709050459412794 ], [ -122.387713905033536, 37.709041629487615 ], [ -122.387727520579759, 37.70903317075819 ], [ -122.387741127400233, 37.709024368526379 ], [ -122.387754716779028, 37.70901487956597 ], [ -122.38776828872976, 37.709004704426171 ], [ -122.387780123872801, 37.708994213756277 ], [ -122.387790213492849, 37.708983064330674 ], [ -122.387800294400918, 37.708971571952546 ], [ -122.387820421322658, 37.708947213465045 ], [ -122.387827011176498, 37.708934403301733 ], [ -122.387835268108802, 37.708919163130588 ], [ -122.387845322493249, 37.708906640526244 ], [ -122.387855368863313, 37.708893775232887 ], [ -122.387863686784897, 37.708880937093966 ], [ -122.387870259192908, 37.708867440475665 ], [ -122.387876822882276, 37.708853600630782 ], [ -122.387881684640561, 37.70884081843792 ], [ -122.387890037417037, 37.708829353201914 ], [ -122.387898407291956, 37.708818574972398 ], [ -122.387908532074746, 37.708808798161094 ], [ -122.387920428182127, 37.708800710060288 ], [ -122.387934078526868, 37.708793624211502 ], [ -122.387949491811682, 37.708787883291222 ], [ -122.387963124704001, 37.708780110437473 ], [ -122.387974994657682, 37.708770992927079 ], [ -122.387986838098541, 37.708760845193225 ], [ -122.38799691929168, 37.70874935279231 ], [ -122.388003535248131, 37.708737572297345 ], [ -122.388025477290896, 37.708716618335004 ], [ -122.388016549225114, 37.708705430376419 ], [ -122.388024919406419, 37.708694651857606 ], [ -122.388035061251031, 37.708685561767766 ], [ -122.388048711556735, 37.70867847563099 ], [ -122.388064142243053, 37.708673421147999 ], [ -122.388079642671812, 37.708671112747226 ], [ -122.388100414499817, 37.708672152950157 ], [ -122.388116071494025, 37.708676022621809 ], [ -122.388131781471785, 37.708681951088387 ], [ -122.388159762030639, 37.708694550434529 ], [ -122.388173769748903, 37.708701536557498 ], [ -122.388201802628828, 37.708716195250794 ], [ -122.388214108081286, 37.708724238756957 ], [ -122.388226422945536, 37.708732625476948 ], [ -122.388238746184868, 37.708741355427378 ], [ -122.388251078145075, 37.708750428602698 ], [ -122.388266944735889, 37.708762535402698 ], [ -122.388279294146272, 37.708772295301998 ], [ -122.388293362910787, 37.708781683719387 ], [ -122.38830914233246, 37.708790358251797 ], [ -122.388323176244768, 37.708798374310007 ], [ -122.388338920792876, 37.708805675659121 ], [ -122.388354647568491, 37.708812290833862 ], [ -122.388372085684821, 37.70881819183667 ], [ -122.388387786655741, 37.70882377732292 ], [ -122.388405189556963, 37.70882830542164 ], [ -122.388422575029637, 37.70883214734004 ], [ -122.388439943052433, 37.70883530225435 ], [ -122.388457293652749, 37.708837771262928 ], [ -122.388476354886436, 37.708839525559505 ], [ -122.388493670259848, 37.708840621388994 ], [ -122.388512688251666, 37.708840659817909 ], [ -122.38852998653293, 37.708841069184182 ], [ -122.388547319691853, 37.708842851452602 ], [ -122.388564687729385, 37.708846006623098 ], [ -122.388580362562081, 37.708850562405146 ], [ -122.388611781644997, 37.70886241977783 ], [ -122.38865901579085, 37.708884324521037 ], [ -122.38867304103168, 37.70889199703673 ], [ -122.388704565133736, 37.708907973092835 ], [ -122.388718607824089, 37.708916332055367 ], [ -122.38873438732395, 37.708925006530642 ], [ -122.388748438741189, 37.708933708715719 ], [ -122.388776559026368, 37.708951799533132 ], [ -122.388804696766371, 37.708970576796062 ], [ -122.388818774369312, 37.708980308925696 ], [ -122.38883113260205, 37.708990411718339 ], [ -122.38884521891903, 37.709000486521759 ], [ -122.388857576813109, 37.70901058931716 ], [ -122.388869944129638, 37.709021035600863 ], [ -122.388894695509904, 37.709042614078506 ], [ -122.388910640750538, 37.709057809551815 ], [ -122.388972423353252, 37.709107980227031 ], [ -122.389081727973931, 37.709191381909299 ], [ -122.389101024813158, 37.709202403484106 ], [ -122.389122041028727, 37.709213054112247 ], [ -122.389141320435243, 37.709223389228221 ], [ -122.389162319218002, 37.709233353396939 ], [ -122.389183309291042, 37.709242974610376 ], [ -122.389223526102853, 37.709260871022344 ], [ -122.389313124685856, 37.70931711930168 ], [ -122.389481987883741, 37.709431155180901 ], [ -122.389492653071912, 37.709442658255767 ], [ -122.389505019851313, 37.709453104208613 ], [ -122.389517378601511, 37.709463206922976 ], [ -122.38952971956148, 37.709472623189463 ], [ -122.389543753727182, 37.709480638826818 ], [ -122.389557892592236, 37.709492773449732 ], [ -122.389586187763769, 37.709517728318737 ], [ -122.389598615991517, 37.709530577112993 ], [ -122.389612772309832, 37.709543397632146 ], [ -122.389625208918304, 37.709556589380568 ], [ -122.389644750565139, 37.709577221189377 ], [ -122.389655398357277, 37.709588038071757 ], [ -122.389667747741427, 37.709597797829758 ], [ -122.389681790670352, 37.709606156676571 ], [ -122.389697518418998, 37.709612771385522 ], [ -122.389713219657295, 37.709618356694392 ], [ -122.389730605029726, 37.709622198150228 ], [ -122.389747947470156, 37.709624323462215 ], [ -122.389765245594901, 37.709624732652614 ], [ -122.389782500792251, 37.709623425973788 ], [ -122.389799720389789, 37.709620746124841 ], [ -122.389816888318393, 37.709616006631549 ], [ -122.389835749113217, 37.709609867058475 ], [ -122.389863163150096, 37.709600156306408 ], [ -122.389890559721536, 37.709589758821316 ], [ -122.389917938840725, 37.709578675152393 ], [ -122.389945300499932, 37.709566905025042 ], [ -122.389970907526418, 37.709554132948654 ], [ -122.389996506509206, 37.709541017629583 ], [ -122.390020350865882, 37.709526900637606 ], [ -122.39004417774683, 37.709512096639571 ], [ -122.390067995898818, 37.709496949685239 ], [ -122.390091787861351, 37.709480773048014 ], [ -122.390113842650052, 37.709464281192048 ], [ -122.390139232126714, 37.709442928142842 ], [ -122.390159716218918, 37.709432641798621 ], [ -122.390178454754334, 37.709421696731738 ], [ -122.3901989126541, 37.709410380702636 ], [ -122.39021589655448, 37.70939843369046 ], [ -122.390234600516706, 37.709386115979576 ], [ -122.390251558562568, 37.709373139004065 ], [ -122.39026850788207, 37.709359819074663 ], [ -122.390285439740609, 37.709345812690756 ], [ -122.390300643497767, 37.709331834039105 ], [ -122.390315821066409, 37.709316825707447 ], [ -122.390329270534636, 37.709301845108946 ], [ -122.390344421562602, 37.709285807101061 ], [ -122.390361327552213, 37.709270771022531 ], [ -122.39037995255471, 37.709255363985214 ], [ -122.39039175211181, 37.709243500154884 ], [ -122.390403604724284, 37.709233695668296 ], [ -122.390415483172134, 37.70922492086406 ], [ -122.390429115893767, 37.709217148000036 ], [ -122.390442766075893, 37.709210061861029 ], [ -122.390456442426085, 37.709204004849276 ], [ -122.390471873057805, 37.709198950051309 ], [ -122.390487338262247, 37.709195268435437 ], [ -122.390504549691016, 37.709192244971604 ], [ -122.39052006760221, 37.7091906224273 ], [ -122.390549453543258, 37.709190494110466 ], [ -122.390566778448914, 37.709191932850082 ], [ -122.390582401104382, 37.709194429009507 ], [ -122.390598058337744, 37.709198298350977 ], [ -122.390613742436898, 37.709203196808069 ], [ -122.390626048230899, 37.70921124006167 ], [ -122.390650826717163, 37.709233847842071 ], [ -122.390663202699358, 37.709244636894077 ], [ -122.390679017412822, 37.709254684012365 ], [ -122.390694814671889, 37.709264044676523 ], [ -122.390710585401109, 37.709272375666167 ], [ -122.39072806745979, 37.70927999244968 ], [ -122.390745513912535, 37.709286236337753 ], [ -122.39076120677656, 37.709291478275702 ], [ -122.390820887340325, 37.709326917004176 ], [ -122.390880550507589, 37.709361669524867 ], [ -122.390955975777842, 37.709404409471233 ], [ -122.390984166616704, 37.709425245293367 ], [ -122.391043969973325, 37.709465489065806 ], [ -122.391073854047875, 37.709484924766009 ], [ -122.39110372905418, 37.709504016963635 ], [ -122.391135324127831, 37.70952273789505 ], [ -122.391198478718835, 37.709558807388859 ], [ -122.391230038228016, 37.709576155676679 ], [ -122.391263317811934, 37.70959313297017 ], [ -122.391294851500007, 37.709609451557228 ], [ -122.391328104225451, 37.709625399165667 ], [ -122.391384067146049, 37.709650596329034 ], [ -122.391403364798364, 37.709661617794914 ], [ -122.39142438147357, 37.709672268011516 ], [ -122.391443670051999, 37.70968294597585 ], [ -122.391473405843797, 37.709696546184524 ], [ -122.391490739272712, 37.709698328019577 ], [ -122.391506239801757, 37.709696018893702 ], [ -122.39153878556094, 37.709684165139144 ], [ -122.391567892571629, 37.709673053334001 ], [ -122.391595262737894, 37.70966162604946 ], [ -122.391624352264017, 37.709649827778549 ], [ -122.391716621681155, 37.709607142187203 ], [ -122.39187696505121, 37.709454172098226 ], [ -122.392088496086032, 37.709274627293134 ], [ -122.392100330316836, 37.709264136195202 ], [ -122.392112147763783, 37.709252958633222 ], [ -122.392122219297448, 37.709241122385279 ], [ -122.392130554000019, 37.709228970672129 ], [ -122.3921406164459, 37.70921679120223 ], [ -122.392147205586284, 37.70920398107237 ], [ -122.392155514411016, 37.709190799399607 ], [ -122.392160357630971, 37.709177330310062 ], [ -122.392166946757442, 37.709164519904434 ], [ -122.392190188120423, 37.709126719606594 ], [ -122.392215174675471, 37.709089577998483 ], [ -122.392281983011671, 37.708997512609393 ], [ -122.392295589286405, 37.70898870985144 ], [ -122.392309213031425, 37.708980593543679 ], [ -122.39232284551727, 37.708972820734765 ], [ -122.392336495460057, 37.708965733826894 ], [ -122.3923518734928, 37.7089586194272 ], [ -122.392365540911214, 37.708952219242256 ], [ -122.392380936412536, 37.708945791290532 ], [ -122.392396349039899, 37.708940049794052 ], [ -122.392411779830567, 37.708934994736204 ], [ -122.39242892962109, 37.708929568690095 ], [ -122.392432645117751, 37.708928100915109 ], [ -122.392656793824756, 37.709119608424643 ], [ -122.391332097355985, 37.710140738310088 ], [ -122.390887824662656, 37.71036523380814 ], [ -122.390835880106437, 37.711169771421694 ], [ -122.392609027560681, 37.711272141276474 ], [ -122.393916838957196, 37.711294747317396 ], [ -122.394130547970391, 37.711308547209811 ], [ -122.394301164504668, 37.711283892996612 ], [ -122.394415018271332, 37.711243467479711 ], [ -122.394533636579439, 37.711181739957787 ], [ -122.394789228222862, 37.711029491236808 ], [ -122.395699524288574, 37.710911289111898 ], [ -122.395804130724926, 37.711357784012904 ], [ -122.395984840101519, 37.711902635542479 ], [ -122.396209567629995, 37.712429108802013 ], [ -122.396615767431044, 37.713094016747043 ], [ -122.396615774145118, 37.713094103716635 ], [ -122.396885665233555, 37.713468431896139 ], [ -122.397834560573045, 37.714650610374164 ], [ -122.398259710629063, 37.715141974251068 ], [ -122.398471400839512, 37.715455433381891 ], [ -122.398552555430172, 37.715443409305585 ], [ -122.398990734294756, 37.715338865287599 ], [ -122.398990733617495, 37.715338865847912 ], [ -122.398991048786399, 37.715338790720075 ], [ -122.398991043085772, 37.715338797679301 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":16,"ZIP_CODE":94110,"ID":94110},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4217053213399, 37.731806501069016 ], [ -122.422820482616018, 37.731641033131751 ], [ -122.423920024119482, 37.731552895324626 ], [ -122.424553925961277, 37.731549131439351 ], [ -122.424645313557747, 37.731548588455745 ], [ -122.424987445865384, 37.731559842008934 ], [ -122.425563267495079, 37.731578779884757 ], [ -122.426103813784607, 37.731651546856703 ], [ -122.426095455082049, 37.731670597839134 ], [ -122.425919712835267, 37.7318157721811 ], [ -122.425781691782262, 37.731929785903453 ], [ -122.425500227991904, 37.7320527573848 ], [ -122.42519868259302, 37.732129150959032 ], [ -122.425046994836066, 37.732129947854176 ], [ -122.424277944077048, 37.732133983506472 ], [ -122.423769382874056, 37.732162707171447 ], [ -122.423486414351174, 37.732261254158729 ], [ -122.423194763566187, 37.732223135593344 ], [ -122.422597636657429, 37.732308431174374 ], [ -122.421964308435761, 37.732433222436505 ], [ -122.421769540807844, 37.732442879558889 ], [ -122.421628644882077, 37.732486581446111 ], [ -122.421573075628018, 37.732579492315836 ], [ -122.421610219449562, 37.732670894611623 ], [ -122.421740792022078, 37.732743282983918 ], [ -122.421779146191113, 37.732885343728064 ], [ -122.42184863663951, 37.732986304256819 ], [ -122.42202732889227, 37.733140443779334 ], [ -122.422262570568407, 37.733475728240066 ], [ -122.42233700854446, 37.733668492264307 ], [ -122.422378321374794, 37.733842795338198 ], [ -122.42251406401526, 37.734049477037892 ], [ -122.422640968014662, 37.73418217013328 ], [ -122.422876476168085, 37.734369596551609 ], [ -122.422737437389159, 37.734490301194434 ], [ -122.422547222688962, 37.734619826084632 ], [ -122.422284286448345, 37.734779711262206 ], [ -122.422205425171413, 37.73485685013258 ], [ -122.422146910860818, 37.734962831393027 ], [ -122.422120806983799, 37.735152847768823 ], [ -122.42260172446116, 37.735176855221177 ], [ -122.422687909096169, 37.735204969342369 ], [ -122.424702562314437, 37.735369870957172 ], [ -122.424930534158477, 37.735266285585048 ], [ -122.427103368742522, 37.735457096504888 ], [ -122.427838803054428, 37.734693898279502 ], [ -122.428436980709748, 37.734950949626743 ], [ -122.428436951461066, 37.734950968784666 ], [ -122.42783624298761, 37.735347761815902 ], [ -122.427738169173168, 37.735412543347451 ], [ -122.42729729676671, 37.735729149898575 ], [ -122.426544994076067, 37.736269396547655 ], [ -122.426500890836181, 37.73630106743056 ], [ -122.425847678890904, 37.736860666965818 ], [ -122.425439441891498, 37.737210392933726 ], [ -122.425110714349969, 37.737550673136937 ], [ -122.424904804743889, 37.737763817504508 ], [ -122.424711669489241, 37.738076607801148 ], [ -122.424696469855888, 37.738101223886673 ], [ -122.424531564221411, 37.738368292265967 ], [ -122.424284283357963, 37.738949691036076 ], [ -122.424063599996956, 37.739784297520274 ], [ -122.424147154179678, 37.739869229183775 ], [ -122.424147154546787, 37.739869230001858 ], [ -122.42414746787631, 37.739869414698418 ], [ -122.424258152196032, 37.739934707389949 ], [ -122.42413709700044, 37.740335654620864 ], [ -122.42417135664968, 37.740713439585669 ], [ -122.424301394893192, 37.742119600447609 ], [ -122.424233478510288, 37.742235956906946 ], [ -122.424233472639315, 37.742235957277522 ], [ -122.424233272287097, 37.742236301993223 ], [ -122.424233277120777, 37.742236301639601 ], [ -122.424309369085989, 37.7430347552692 ], [ -122.424384862816794, 37.743838216035606 ], [ -122.424459208282684, 37.744635998834639 ], [ -122.424538964982034, 37.745435717069675 ], [ -122.424602793343411, 37.746241400149849 ], [ -122.424689793548367, 37.747033402901096 ], [ -122.424768280884535, 37.747830304166378 ], [ -122.424841979744244, 37.748600757493776 ], [ -122.424845018024243, 37.748632519532975 ], [ -122.424845024283727, 37.748632587554638 ], [ -122.424922999639648, 37.749434901505936 ], [ -122.424999224133984, 37.75023271753119 ], [ -122.424999224155329, 37.750232718354916 ], [ -122.425075700414453, 37.751033151258099 ], [ -122.425122809405835, 37.751528900123922 ], [ -122.4251525416649, 37.751841785070944 ], [ -122.425152541686245, 37.751841785894676 ], [ -122.425302616566313, 37.753431589741957 ], [ -122.425302616947704, 37.753431591109177 ], [ -122.425425666412067, 37.754703378159874 ], [ -122.425457179889037, 37.755029078716305 ], [ -122.425491892915787, 37.755387845874338 ], [ -122.425612216172169, 37.756631383038098 ], [ -122.425645855643012, 37.756979041458848 ], [ -122.42568945931761, 37.757429671011749 ], [ -122.425689459367419, 37.757429672933782 ], [ -122.425766807341631, 37.758226828700685 ], [ -122.425843422635126, 37.759029397589842 ], [ -122.425900090784694, 37.759619242549249 ], [ -122.425920302092379, 37.759829613405913 ], [ -122.425985721165645, 37.760498692937027 ], [ -122.426076501462219, 37.761427133668562 ], [ -122.426076501815189, 37.761427133937481 ], [ -122.426145984060597, 37.762160358437526 ], [ -122.426149283375466, 37.762227539381186 ], [ -122.426191463523168, 37.762538363286502 ], [ -122.426204067323269, 37.762631239367813 ], [ -122.426224290129298, 37.762962298008539 ], [ -122.426228478902843, 37.763030870557735 ], [ -122.426317477898522, 37.763970002371671 ], [ -122.426381708399177, 37.764645687871273 ], [ -122.426381708477521, 37.764645690891633 ], [ -122.426381062758907, 37.764645729188807 ], [ -122.426381062356072, 37.764645726997848 ], [ -122.424574375550648, 37.764754942537614 ], [ -122.424102683503691, 37.764783452170008 ], [ -122.423112421134832, 37.764843298770074 ], [ -122.42285341443899, 37.764858950163855 ], [ -122.421886445840627, 37.764917378530825 ], [ -122.421381475659516, 37.764947887797014 ], [ -122.421239593012103, 37.764956459387825 ], [ -122.420901270224292, 37.764976898858535 ], [ -122.420580607922048, 37.764996270018614 ], [ -122.420482492120144, 37.765002197009743 ], [ -122.419668972681833, 37.765051337054757 ], [ -122.418698425401715, 37.765109955145007 ], [ -122.418579138459435, 37.765117159398407 ], [ -122.41748659577631, 37.765183134636899 ], [ -122.416387522888556, 37.765249494040667 ], [ -122.415308388038014, 37.765314639624691 ], [ -122.413105243007919, 37.765447608576679 ], [ -122.412416426589019, 37.765489809283601 ], [ -122.411455262151748, 37.765547605227276 ], [ -122.410486689274492, 37.765605838622655 ], [ -122.408544242939584, 37.765722599679115 ], [ -122.407534229395537, 37.765783299286987 ], [ -122.407419737953433, 37.764487829924626 ], [ -122.406859230067056, 37.764521681123377 ], [ -122.406429154577822, 37.764547653499882 ], [ -122.406429152848446, 37.764547653527842 ], [ -122.406005237363416, 37.764573252226405 ], [ -122.405463420216606, 37.764605967981389 ], [ -122.405089603673972, 37.764628538361961 ], [ -122.405089602982216, 37.764628538373131 ], [ -122.405059622300016, 37.764310557738277 ], [ -122.405104592203571, 37.763852244172895 ], [ -122.405203088479681, 37.763478066930332 ], [ -122.405258413683796, 37.763323129887908 ], [ -122.40532469627189, 37.76313750682079 ], [ -122.405384490436404, 37.76297005284507 ], [ -122.405653838302513, 37.762432552128487 ], [ -122.405925510731336, 37.762011914887523 ], [ -122.406021608630979, 37.761863123291867 ], [ -122.406147061407296, 37.7616371808829 ], [ -122.4062826701159, 37.761392945250627 ], [ -122.406479479731502, 37.760730932047331 ], [ -122.406492697683589, 37.760686469836571 ], [ -122.406492391998796, 37.760255279712112 ], [ -122.406389357641601, 37.759804405761585 ], [ -122.406261953936678, 37.75945211819198 ], [ -122.406247868764623, 37.759429354319998 ], [ -122.406103779268008, 37.759196479511928 ], [ -122.405903135660481, 37.758934413706449 ], [ -122.405545221503274, 37.758536929330724 ], [ -122.405048169961901, 37.758189448369819 ], [ -122.404835145723425, 37.7580339263735 ], [ -122.40472107938929, 37.757950649275713 ], [ -122.404441730762329, 37.757748221369937 ], [ -122.404168659910013, 37.75752977302043 ], [ -122.403774405770974, 37.757138490742172 ], [ -122.403774084903432, 37.757138026202746 ], [ -122.403689260967766, 37.757015002579273 ], [ -122.403543859417937, 37.75680412126377 ], [ -122.403395700993769, 37.756471262485057 ], [ -122.403305530792395, 37.756165877853867 ], [ -122.403245024221292, 37.755760575231484 ], [ -122.403244936870763, 37.755759623462495 ], [ -122.403127143734139, 37.75447773377249 ], [ -122.403011715723153, 37.753221541143297 ], [ -122.40301031565609, 37.753201877425177 ], [ -122.402978169178084, 37.75275045704997 ], [ -122.403006670294943, 37.752445905732571 ], [ -122.403060331379024, 37.751915861053995 ], [ -122.403072643662085, 37.751794247946641 ], [ -122.403175027775376, 37.751281093014263 ], [ -122.403214572776321, 37.751164169122518 ], [ -122.403378511001179, 37.750679445903444 ], [ -122.403514246938869, 37.750281563827826 ], [ -122.403735650894049, 37.749583872707518 ], [ -122.403783562755194, 37.749432891426196 ], [ -122.403826366530197, 37.749298003881435 ], [ -122.403865672790147, 37.749174139069758 ], [ -122.403990987296382, 37.74878066971192 ], [ -122.404051662308461, 37.74859015799958 ], [ -122.404103617259366, 37.748427025595028 ], [ -122.404104297626958, 37.748424888760844 ], [ -122.404105247604519, 37.748421906188959 ], [ -122.404249303912664, 37.747969580021021 ], [ -122.404390053649081, 37.747536214374357 ], [ -122.404496510435962, 37.747208430674682 ], [ -122.40472494664624, 37.746505061967419 ], [ -122.40491012189095, 37.745826558312224 ], [ -122.405051159825348, 37.745369647465395 ], [ -122.405179630488661, 37.744981134097749 ], [ -122.405202201087945, 37.744938889063008 ], [ -122.405444172050537, 37.744486004341084 ], [ -122.405475695814175, 37.744427001636382 ], [ -122.405747110957691, 37.744028598841339 ], [ -122.405778655290121, 37.743989539741165 ], [ -122.406047831839984, 37.743656241756561 ], [ -122.406149889909912, 37.743534947555823 ], [ -122.406881612449212, 37.742665295031905 ], [ -122.407179681106143, 37.742274728523746 ], [ -122.407209491524853, 37.742235666028684 ], [ -122.407448073794797, 37.741860521932459 ], [ -122.407625696256517, 37.741528038897464 ], [ -122.407757062965644, 37.741253133394146 ], [ -122.407846654253319, 37.741024367104636 ], [ -122.407964646391505, 37.740662552272049 ], [ -122.408049229318891, 37.740339110042903 ], [ -122.408114071971212, 37.739818086787388 ], [ -122.408137030577961, 37.739635775942595 ], [ -122.407910235902733, 37.739622169745928 ], [ -122.407891817991583, 37.739621065115479 ], [ -122.407641980575562, 37.73960607595005 ], [ -122.406978585498265, 37.739566272603653 ], [ -122.40691098434678, 37.739429695993088 ], [ -122.406917382338506, 37.739360326809205 ], [ -122.406923419099328, 37.739294876190314 ], [ -122.40692734433064, 37.739234393770168 ], [ -122.406930338448149, 37.739188255204461 ], [ -122.406936851773693, 37.739087891690275 ], [ -122.406939830707117, 37.738876165961258 ], [ -122.406945393527934, 37.738693880058896 ], [ -122.40693392611557, 37.738601770051126 ], [ -122.406915744052654, 37.738455725148341 ], [ -122.406895428755547, 37.738323651840822 ], [ -122.406867742024218, 37.738143654094841 ], [ -122.406900092501772, 37.738009155282221 ], [ -122.406910504104971, 37.737965866913434 ], [ -122.406734307244236, 37.736552960385914 ], [ -122.40670383539134, 37.73630860402433 ], [ -122.406618861734884, 37.735896873766244 ], [ -122.406454646881144, 37.735510813404687 ], [ -122.406382307240833, 37.735418606514493 ], [ -122.406294659725731, 37.735306888886043 ], [ -122.406543556705884, 37.735230631177984 ], [ -122.406646483954859, 37.73519837501037 ], [ -122.406814899797354, 37.735145595835078 ], [ -122.406847917074074, 37.735135248636119 ], [ -122.407130003639637, 37.735046845926902 ], [ -122.407348459866085, 37.73497838329498 ], [ -122.408033938982058, 37.734745520041734 ], [ -122.408486051038935, 37.734591930477059 ], [ -122.409312695053686, 37.734284112011252 ], [ -122.410241243396115, 37.733882628159428 ], [ -122.41165477705286, 37.733366974354652 ], [ -122.413331412339687, 37.732631849917702 ], [ -122.413420514856341, 37.732598164337901 ], [ -122.414376034430035, 37.732236918329072 ], [ -122.414530950551168, 37.732192436697261 ], [ -122.415052879313009, 37.73204257200301 ], [ -122.415897414400035, 37.731880953714693 ], [ -122.416651654342999, 37.731819145397338 ], [ -122.417401517276474, 37.731856484581833 ], [ -122.41846272371707, 37.73186673188021 ], [ -122.419454332152029, 37.731867094633678 ], [ -122.420326686201122, 37.731814347002349 ], [ -122.421718952826723, 37.731607777327895 ], [ -122.4217053213399, 37.731806501069016 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":17,"ZIP_CODE":94134,"ID":94134},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.423335646405121, 37.727792365353856 ], [ -122.423335646419318, 37.727792365903014 ], [ -122.423508669179441, 37.728206721890601 ], [ -122.423584360438809, 37.728387748823138 ], [ -122.423739981620528, 37.728759936840348 ], [ -122.423740585686062, 37.728759904726353 ], [ -122.424198685585807, 37.728735553475715 ], [ -122.424688687008342, 37.728709478304708 ], [ -122.425289939392513, 37.728677480232541 ], [ -122.425963703408243, 37.728641021813154 ], [ -122.426024704407865, 37.729396982427588 ], [ -122.423797638913399, 37.729509407965139 ], [ -122.422942671063694, 37.729241733452504 ], [ -122.422503353186897, 37.729261991833724 ], [ -122.421440856780521, 37.729310979302717 ], [ -122.421182810911759, 37.729745420447983 ], [ -122.421083540431724, 37.729975107309578 ], [ -122.421017374424935, 37.730233164434182 ], [ -122.420964111358728, 37.730677319690216 ], [ -122.420944905836123, 37.73130857523288 ], [ -122.421753180203225, 37.731084669073972 ], [ -122.421730502033157, 37.73135209792499 ], [ -122.421736572397847, 37.731350897661805 ], [ -122.421730663628679, 37.731437047083624 ], [ -122.421718952826723, 37.731607777327895 ], [ -122.420326686201122, 37.731814347002349 ], [ -122.419454332152029, 37.731867094633678 ], [ -122.41846272371707, 37.73186673188021 ], [ -122.417401517276474, 37.731856484581833 ], [ -122.416651654342999, 37.731819145397338 ], [ -122.415897414400035, 37.731880953714693 ], [ -122.415052879313009, 37.73204257200301 ], [ -122.414530950551168, 37.732192436697261 ], [ -122.414376034430035, 37.732236918329072 ], [ -122.413420514856341, 37.732598164337901 ], [ -122.413331412339687, 37.732631849917702 ], [ -122.41165477705286, 37.733366974354652 ], [ -122.410241243396115, 37.733882628159428 ], [ -122.409312695053686, 37.734284112011252 ], [ -122.408486051038935, 37.734591930477059 ], [ -122.408033938982058, 37.734745520041734 ], [ -122.407348459866085, 37.73497838329498 ], [ -122.407130003639637, 37.735046845926902 ], [ -122.406847917074074, 37.735135248636119 ], [ -122.406814899797354, 37.735145595835078 ], [ -122.406646483954859, 37.73519837501037 ], [ -122.406543556705884, 37.735230631177984 ], [ -122.406294659725731, 37.735306888886043 ], [ -122.405494571184249, 37.734287050530888 ], [ -122.405096042524178, 37.733716127227488 ], [ -122.405059585407599, 37.733652395233406 ], [ -122.404878800551302, 37.733336356125804 ], [ -122.404657097641305, 37.732948782960683 ], [ -122.40465709692171, 37.732948781873532 ], [ -122.40405482060109, 37.731789516245591 ], [ -122.403961731325225, 37.731610333558521 ], [ -122.403400462440644, 37.730658352585962 ], [ -122.403021622188092, 37.729901901370539 ], [ -122.402752244737584, 37.729357163240891 ], [ -122.402209197740476, 37.728101973566574 ], [ -122.402105120777605, 37.727789703519925 ], [ -122.402039596395539, 37.727554690472438 ], [ -122.401875118236148, 37.726964759399728 ], [ -122.401822425920514, 37.726775260854211 ], [ -122.401474642450822, 37.725528485745301 ], [ -122.401471218295981, 37.725516183407578 ], [ -122.401182917574161, 37.724588254281116 ], [ -122.40078474798517, 37.723616209514844 ], [ -122.400784747286778, 37.723616209251418 ], [ -122.400661931084002, 37.723316373994798 ], [ -122.40038213245046, 37.722633285332655 ], [ -122.399925016822507, 37.721517272170509 ], [ -122.399830553211288, 37.721427080386505 ], [ -122.399600300155441, 37.720920363637823 ], [ -122.399419264352986, 37.720532021245042 ], [ -122.399309038031902, 37.720278334103305 ], [ -122.399208340593788, 37.719991530079234 ], [ -122.399125486878972, 37.719730004239857 ], [ -122.399066465573654, 37.719469200866385 ], [ -122.398943601880902, 37.718926286066001 ], [ -122.398942440206895, 37.718921151552976 ], [ -122.398923285260594, 37.718836507697276 ], [ -122.398913161799925, 37.718792447247658 ], [ -122.398799134608808, 37.718275024173522 ], [ -122.398787867001658, 37.718224410399863 ], [ -122.398759937061044, 37.718047446028777 ], [ -122.39871606167118, 37.717769450850419 ], [ -122.398686680058731, 37.717603871431201 ], [ -122.398668885707423, 37.717503589023465 ], [ -122.398561414050022, 37.716897923924947 ], [ -122.398499278161879, 37.716543657492224 ], [ -122.398550700112352, 37.7161815389411 ], [ -122.398565370170317, 37.716139616445538 ], [ -122.398643015232707, 37.715917722950913 ], [ -122.398656056102226, 37.71588045500463 ], [ -122.398735527529269, 37.715727131371494 ], [ -122.398839335741798, 37.715526852955328 ], [ -122.398953101659146, 37.715385829745912 ], [ -122.398991043085772, 37.715338797679301 ], [ -122.398991048786399, 37.715338790720075 ], [ -122.398990733617495, 37.715338865847912 ], [ -122.398990734294756, 37.715338865287599 ], [ -122.398552555430172, 37.715443409305585 ], [ -122.398471400839512, 37.715455433381891 ], [ -122.398259710629063, 37.715141974251068 ], [ -122.397834560573045, 37.714650610374164 ], [ -122.396885665233555, 37.713468431896139 ], [ -122.396615774145118, 37.713094103716635 ], [ -122.396615767431044, 37.713094016747043 ], [ -122.396209567629995, 37.712429108802013 ], [ -122.395984840101519, 37.711902635542479 ], [ -122.395804130724926, 37.711357784012904 ], [ -122.395699524288574, 37.710911289111898 ], [ -122.394789228222862, 37.711029491236808 ], [ -122.394533636579439, 37.711181739957787 ], [ -122.394415018271332, 37.711243467479711 ], [ -122.394301164504668, 37.711283892996612 ], [ -122.394130547970391, 37.711308547209811 ], [ -122.393916838957196, 37.711294747317396 ], [ -122.392609027560681, 37.711272141276474 ], [ -122.390835880106437, 37.711169771421694 ], [ -122.390887824662656, 37.71036523380814 ], [ -122.391332097355985, 37.710140738310088 ], [ -122.392656793824756, 37.709119608424643 ], [ -122.392432645117751, 37.708928100915109 ], [ -122.392444333503988, 37.708923483961478 ], [ -122.392459711870288, 37.708916369816677 ], [ -122.392473335584143, 37.708908253489831 ], [ -122.392486941819897, 37.70889945070968 ], [ -122.392498784665378, 37.708889302522401 ], [ -122.392510610730511, 37.708878468145663 ], [ -122.392524068414929, 37.708863830521395 ], [ -122.392559440339639, 37.708827208691588 ], [ -122.392572967908777, 37.708815316868559 ], [ -122.392584776482323, 37.708803796307102 ], [ -122.392598312774226, 37.708792247432399 ], [ -122.392611857807054, 37.708781042056593 ], [ -122.392623674754688, 37.708769864447994 ], [ -122.39263895660568, 37.708758974800666 ], [ -122.392652510357621, 37.708748112371396 ], [ -122.392666072850986, 37.708737593441008 ], [ -122.39268137181341, 37.708727389970818 ], [ -122.39269494304439, 37.708717214537501 ], [ -122.392710242682909, 37.70870701077785 ], [ -122.392756192651433, 37.708678459962563 ], [ -122.392771518490107, 37.708669285872482 ], [ -122.392791975788157, 37.708657969391702 ], [ -122.392832794235133, 37.708631560935011 ], [ -122.392860041474023, 37.708615328192714 ], [ -122.392875393166236, 37.708607184046727 ], [ -122.392889025524426, 37.708599411171832 ], [ -122.392904394682077, 37.708591953199182 ], [ -122.392918035766968, 37.708584523272208 ], [ -122.392941949172211, 37.708573151218971 ], [ -122.392977635730745, 37.708548885387124 ], [ -122.393011585450822, 37.708524304093004 ], [ -122.393045517668241, 37.708499036337294 ], [ -122.393079441122353, 37.708473425345893 ], [ -122.393113355819651, 37.708447471393349 ], [ -122.393167526617077, 37.70840230614084 ], [ -122.393582832216993, 37.708417948939243 ], [ -122.395113504570858, 37.708409867431477 ], [ -122.397085902715403, 37.708399425270557 ], [ -122.399684603917876, 37.708385616773455 ], [ -122.401309241246423, 37.708378554199705 ], [ -122.402497775210733, 37.708373373547339 ], [ -122.40338621311453, 37.708369492971435 ], [ -122.40510200377139, 37.708361979821355 ], [ -122.405343853958243, 37.708354977289922 ], [ -122.405521792033781, 37.708350038400255 ], [ -122.406475878190662, 37.708342152666113 ], [ -122.406591468680915, 37.708342377473876 ], [ -122.407290175418893, 37.708343733713313 ], [ -122.407753446712761, 37.708342067925997 ], [ -122.408110927534096, 37.708327349450251 ], [ -122.40829882656611, 37.708327401816014 ], [ -122.412359860013211, 37.708328460170456 ], [ -122.413340535135291, 37.70832869518982 ], [ -122.413594573052677, 37.708328955439633 ], [ -122.414219950784457, 37.708329593757632 ], [ -122.414374376554221, 37.708329750560253 ], [ -122.415233045955674, 37.708329360822155 ], [ -122.415330384121233, 37.708329316229424 ], [ -122.416223848405949, 37.708328179819176 ], [ -122.417093688537392, 37.708327067084589 ], [ -122.417207468396128, 37.708327057129232 ], [ -122.418047976840626, 37.708326981775464 ], [ -122.418165047871298, 37.708327396090446 ], [ -122.419017914810595, 37.708330411075799 ], [ -122.419120269682026, 37.708330983731479 ], [ -122.419237502940533, 37.708331640189144 ], [ -122.419704274317439, 37.708331586927457 ], [ -122.420073510611971, 37.708332523899031 ], [ -122.420159361284988, 37.708332741426119 ], [ -122.423764571500399, 37.708341826236627 ], [ -122.423361076063088, 37.709234055437079 ], [ -122.423353359735231, 37.709250935907697 ], [ -122.423353331596459, 37.709250997624174 ], [ -122.423820286343911, 37.709573973454503 ], [ -122.423971204711407, 37.709678357430306 ], [ -122.424550951226621, 37.710101873835256 ], [ -122.425118753539664, 37.710464462528329 ], [ -122.425572654326643, 37.710701178146003 ], [ -122.426490332391396, 37.711021642816618 ], [ -122.426849963523566, 37.711156197850272 ], [ -122.425769401653085, 37.714425227128565 ], [ -122.427973857260341, 37.715161057331514 ], [ -122.427571950566247, 37.71699744604517 ], [ -122.426961271013212, 37.717805116783104 ], [ -122.426390269927637, 37.718560725227924 ], [ -122.426390269596226, 37.718560725782737 ], [ -122.426390032692737, 37.718560604670934 ], [ -122.425834816801412, 37.718279388717512 ], [ -122.425605873732934, 37.718131895102509 ], [ -122.425411706342686, 37.717880972693159 ], [ -122.425177444570053, 37.717485960998928 ], [ -122.424942097378548, 37.717261064626705 ], [ -122.424687869969304, 37.717146210464122 ], [ -122.424656181661859, 37.717131894726805 ], [ -122.424528018591516, 37.717064916531086 ], [ -122.424258262597263, 37.717024059120966 ], [ -122.424022457403083, 37.717036533105109 ], [ -122.423774201550728, 37.717092319144726 ], [ -122.423530052223612, 37.717201923868423 ], [ -122.422472988486305, 37.717887379027822 ], [ -122.422642040011837, 37.718030648532753 ], [ -122.422885734123284, 37.71809195842259 ], [ -122.423023908872437, 37.718162895921928 ], [ -122.423452239422744, 37.718705588384864 ], [ -122.423536512782078, 37.718956983348477 ], [ -122.42348866361003, 37.719439263071187 ], [ -122.423554916906838, 37.719668150420404 ], [ -122.423736904433326, 37.71982328246721 ], [ -122.424032169669715, 37.719926258473294 ], [ -122.424800888544937, 37.7200238938456 ], [ -122.425478982693178, 37.720232473267444 ], [ -122.425478983024618, 37.720232472712645 ], [ -122.425479352540037, 37.720232586714161 ], [ -122.425479352547157, 37.72023258698875 ], [ -122.425664999767108, 37.720321846926637 ], [ -122.426022740865662, 37.720493848462766 ], [ -122.42602274262245, 37.720493849532829 ], [ -122.426022741606815, 37.720493850373522 ], [ -122.424918832446721, 37.722087021186233 ], [ -122.424897104558099, 37.722118378784295 ], [ -122.423806549912683, 37.723691155552039 ], [ -122.423577946908821, 37.723750386689403 ], [ -122.423577951775229, 37.723750454459399 ], [ -122.422830067678831, 37.723944194056337 ], [ -122.421846961042462, 37.724198859168652 ], [ -122.421846961049567, 37.724198859443213 ], [ -122.422043387171286, 37.724673029193113 ], [ -122.422342507091699, 37.725395088531037 ], [ -122.422342507113001, 37.725395089354791 ], [ -122.422840471972961, 37.726597115803735 ], [ -122.422840471987186, 37.726597116352892 ], [ -122.42312222730105, 37.727277221300007 ], [ -122.423246600371399, 37.727577430218268 ], [ -122.423335646405121, 37.727792365353856 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":18,"ZIP_CODE":94112,"ID":94112},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.427838803054428, 37.734693898279502 ], [ -122.427103368742522, 37.735457096504888 ], [ -122.424930534158477, 37.735266285585048 ], [ -122.424702562314437, 37.735369870957172 ], [ -122.422687909096169, 37.735204969342369 ], [ -122.42260172446116, 37.735176855221177 ], [ -122.422120806983799, 37.735152847768823 ], [ -122.422146910860818, 37.734962831393027 ], [ -122.422205425171413, 37.73485685013258 ], [ -122.422284286448345, 37.734779711262206 ], [ -122.422547222688962, 37.734619826084632 ], [ -122.422737437389159, 37.734490301194434 ], [ -122.422876476168085, 37.734369596551609 ], [ -122.422640968014662, 37.73418217013328 ], [ -122.42251406401526, 37.734049477037892 ], [ -122.422378321374794, 37.733842795338198 ], [ -122.42233700854446, 37.733668492264307 ], [ -122.422262570568407, 37.733475728240066 ], [ -122.42202732889227, 37.733140443779334 ], [ -122.42184863663951, 37.732986304256819 ], [ -122.421779146191113, 37.732885343728064 ], [ -122.421740792022078, 37.732743282983918 ], [ -122.421610219449562, 37.732670894611623 ], [ -122.421573075628018, 37.732579492315836 ], [ -122.421628644882077, 37.732486581446111 ], [ -122.421769540807844, 37.732442879558889 ], [ -122.421964308435761, 37.732433222436505 ], [ -122.422597636657429, 37.732308431174374 ], [ -122.423194763566187, 37.732223135593344 ], [ -122.423486414351174, 37.732261254158729 ], [ -122.423769382874056, 37.732162707171447 ], [ -122.424277944077048, 37.732133983506472 ], [ -122.425046994836066, 37.732129947854176 ], [ -122.42519868259302, 37.732129150959032 ], [ -122.425500227991904, 37.7320527573848 ], [ -122.425781691782262, 37.731929785903453 ], [ -122.425919712835267, 37.7318157721811 ], [ -122.426095455082049, 37.731670597839134 ], [ -122.426103813784607, 37.731651546856703 ], [ -122.425563267495079, 37.731578779884757 ], [ -122.424987445865384, 37.731559842008934 ], [ -122.424645313557747, 37.731548588455745 ], [ -122.424553925961277, 37.731549131439351 ], [ -122.423920024119482, 37.731552895324626 ], [ -122.422820482616018, 37.731641033131751 ], [ -122.4217053213399, 37.731806501069016 ], [ -122.421718952826723, 37.731607777327895 ], [ -122.421730663628679, 37.731437047083624 ], [ -122.421736572397847, 37.731350897661805 ], [ -122.421730502033157, 37.73135209792499 ], [ -122.421753180203225, 37.731084669073972 ], [ -122.420944905836123, 37.73130857523288 ], [ -122.420964111358728, 37.730677319690216 ], [ -122.421017374424935, 37.730233164434182 ], [ -122.421083540431724, 37.729975107309578 ], [ -122.421182810911759, 37.729745420447983 ], [ -122.421440856780521, 37.729310979302717 ], [ -122.422503353186897, 37.729261991833724 ], [ -122.422942671063694, 37.729241733452504 ], [ -122.423797638913399, 37.729509407965139 ], [ -122.426024704407865, 37.729396982427588 ], [ -122.425963703408243, 37.728641021813154 ], [ -122.425289939392513, 37.728677480232541 ], [ -122.424688687008342, 37.728709478304708 ], [ -122.424198685585807, 37.728735553475715 ], [ -122.423740585686062, 37.728759904726353 ], [ -122.423739981620528, 37.728759936840348 ], [ -122.423584360438809, 37.728387748823138 ], [ -122.423508669179441, 37.728206721890601 ], [ -122.423335646405121, 37.727792365353856 ], [ -122.423246600371399, 37.727577430218268 ], [ -122.42312222730105, 37.727277221300007 ], [ -122.422840471987186, 37.726597116352892 ], [ -122.422840471972961, 37.726597115803735 ], [ -122.422342507113001, 37.725395089354791 ], [ -122.422342507091699, 37.725395088531037 ], [ -122.422043387171286, 37.724673029193113 ], [ -122.421846961042462, 37.724198859168652 ], [ -122.422830067678831, 37.723944194056337 ], [ -122.423577951775229, 37.723750454459399 ], [ -122.423577946908821, 37.723750386689403 ], [ -122.423806549912683, 37.723691155552039 ], [ -122.424897104558099, 37.722118378784295 ], [ -122.424918832446721, 37.722087021186233 ], [ -122.426022741606815, 37.720493850373522 ], [ -122.42602274262245, 37.720493849532829 ], [ -122.426022740865662, 37.720493848462766 ], [ -122.425664999767108, 37.720321846926637 ], [ -122.425479352547157, 37.72023258698875 ], [ -122.425478983024618, 37.720232472712645 ], [ -122.425478982693178, 37.720232473267444 ], [ -122.424800888544937, 37.7200238938456 ], [ -122.424032169669715, 37.719926258473294 ], [ -122.423736904433326, 37.71982328246721 ], [ -122.423554916906838, 37.719668150420404 ], [ -122.42348866361003, 37.719439263071187 ], [ -122.423536512782078, 37.718956983348477 ], [ -122.423452239422744, 37.718705588384864 ], [ -122.423023908872437, 37.718162895921928 ], [ -122.422885734123284, 37.71809195842259 ], [ -122.422642040011837, 37.718030648532753 ], [ -122.422472988486305, 37.717887379027822 ], [ -122.423530052223612, 37.717201923868423 ], [ -122.423774201550728, 37.717092319144726 ], [ -122.424022457403083, 37.717036533105109 ], [ -122.424258262597263, 37.717024059120966 ], [ -122.424528018591516, 37.717064916531086 ], [ -122.424656181661859, 37.717131894726805 ], [ -122.424687869969304, 37.717146210464122 ], [ -122.424942097378548, 37.717261064626705 ], [ -122.425177444570053, 37.717485960998928 ], [ -122.425411706342686, 37.717880972693159 ], [ -122.425605873732934, 37.718131895102509 ], [ -122.425834816801412, 37.718279388717512 ], [ -122.426390032692737, 37.718560604670934 ], [ -122.426390269596226, 37.718560725782737 ], [ -122.426390269927637, 37.718560725227924 ], [ -122.426961271013212, 37.717805116783104 ], [ -122.42757190808544, 37.716997501404578 ], [ -122.427571950566247, 37.71699744604517 ], [ -122.427580759648123, 37.716957196731435 ], [ -122.427810303733594, 37.715908376197518 ], [ -122.427973857260341, 37.715161057331514 ], [ -122.425769401653085, 37.714425227128565 ], [ -122.42684686757103, 37.711165565601846 ], [ -122.426849963523566, 37.711156197850272 ], [ -122.426490332391396, 37.711021642816618 ], [ -122.425572654326643, 37.710701178146003 ], [ -122.425118753539664, 37.710464462528329 ], [ -122.424550951226621, 37.710101873835256 ], [ -122.423971204711407, 37.709678357430306 ], [ -122.423353331596459, 37.709250997624174 ], [ -122.423361076063088, 37.709234055437079 ], [ -122.423764571500399, 37.708341826236627 ], [ -122.423768921768058, 37.708341837314315 ], [ -122.423877843148816, 37.708342118381125 ], [ -122.425994336403065, 37.708310781158126 ], [ -122.426202061368684, 37.708307703589938 ], [ -122.427674537396697, 37.708285876646727 ], [ -122.428354189600114, 37.708305089572242 ], [ -122.429105296742478, 37.708326317449469 ], [ -122.429339593931815, 37.708323251263963 ], [ -122.430449087529411, 37.70830872506928 ], [ -122.43129493119001, 37.708297643647327 ], [ -122.432343143904646, 37.708295922670345 ], [ -122.433778966251097, 37.708293550010708 ], [ -122.434148404329434, 37.708292936416406 ], [ -122.434985771421609, 37.708291542195809 ], [ -122.436248762964979, 37.708289427645774 ], [ -122.438728105043637, 37.708285237562031 ], [ -122.440497203989452, 37.708282215784038 ], [ -122.440711209177138, 37.708281848403743 ], [ -122.441349676712647, 37.708280750220105 ], [ -122.442106190726975, 37.708279444504022 ], [ -122.444671046569766, 37.708274980891133 ], [ -122.44478757213254, 37.708274776994109 ], [ -122.445691081512706, 37.708249897066402 ], [ -122.445824359823575, 37.708249470051783 ], [ -122.447227656612327, 37.708244965564717 ], [ -122.449798855530389, 37.708236668750466 ], [ -122.452354883587788, 37.708228365382816 ], [ -122.454322408844959, 37.70822193637261 ], [ -122.454560786889971, 37.708221155056798 ], [ -122.455565069973886, 37.708215472275576 ], [ -122.455732056485743, 37.708217630626116 ], [ -122.455902300127136, 37.708219830519191 ], [ -122.457184544230842, 37.70823461994447 ], [ -122.457915234279184, 37.708243041121499 ], [ -122.458505268317239, 37.708230883488149 ], [ -122.459062187698038, 37.708219405843458 ], [ -122.459727762092839, 37.708205685584353 ], [ -122.459848666151245, 37.708200651285779 ], [ -122.460029970068362, 37.708193102258491 ], [ -122.46108479110967, 37.708202670088042 ], [ -122.461227604731107, 37.708198848520283 ], [ -122.46139057300131, 37.708194487863473 ], [ -122.461950847900269, 37.70819992107895 ], [ -122.462093547900324, 37.708193760482068 ], [ -122.462235775065267, 37.708187619950934 ], [ -122.462590335310921, 37.70818746608122 ], [ -122.462764782467445, 37.70818738953367 ], [ -122.463939046778805, 37.708202838503169 ], [ -122.464345228799317, 37.708207403972743 ], [ -122.464812351274205, 37.708212652628795 ], [ -122.465768040492705, 37.708210264664245 ], [ -122.466623471256085, 37.708208120693818 ], [ -122.468612008025019, 37.708203113190002 ], [ -122.468634481973396, 37.708203081190824 ], [ -122.468943918748693, 37.708202372165289 ], [ -122.468469108419114, 37.708682445380624 ], [ -122.468442186669975, 37.708710365091008 ], [ -122.46815544621434, 37.708936581998181 ], [ -122.467717389066479, 37.709282172736899 ], [ -122.467202952111606, 37.709607827013201 ], [ -122.467161376112116, 37.709634146029515 ], [ -122.466791287837083, 37.709825747176509 ], [ -122.465994326901708, 37.710153924678359 ], [ -122.464766855714529, 37.710481381431755 ], [ -122.464363457907425, 37.710527001097098 ], [ -122.464175624997623, 37.710548242222522 ], [ -122.462893196389857, 37.710562754126848 ], [ -122.462561257753663, 37.710567393100142 ], [ -122.462558461843784, 37.710567432270715 ], [ -122.462554670587338, 37.71117015272295 ], [ -122.462545712573657, 37.711171028559598 ], [ -122.462063256954337, 37.711372729296876 ], [ -122.462570051320355, 37.711370301468136 ], [ -122.462581299448402, 37.712273520359908 ], [ -122.462580658473911, 37.712523033743715 ], [ -122.46256899895387, 37.713150165038506 ], [ -122.462554985317752, 37.713903926321834 ], [ -122.462588724439357, 37.714029538822885 ], [ -122.462602039439204, 37.714307653173123 ], [ -122.462607827629938, 37.714883950429027 ], [ -122.462615213395566, 37.71561930379395 ], [ -122.462620481465109, 37.716143794339722 ], [ -122.46262477066405, 37.716570820282072 ], [ -122.462633312624419, 37.717421207682776 ], [ -122.462638771382373, 37.717866433871905 ], [ -122.462639625007327, 37.717936035524978 ], [ -122.46263854285489, 37.718211149542661 ], [ -122.462244936309219, 37.718219524954932 ], [ -122.462245294921956, 37.718767790464547 ], [ -122.46226246554707, 37.719928593578096 ], [ -122.462254399326852, 37.72000857322422 ], [ -122.462264896007014, 37.721694985883083 ], [ -122.46226548731488, 37.721827794893429 ], [ -122.462270801151405, 37.723021081969392 ], [ -122.462273544585969, 37.723637216450626 ], [ -122.462276364972297, 37.724270607125867 ], [ -122.462276854232826, 37.724380477322995 ], [ -122.462279017236384, 37.724866230039204 ], [ -122.462279803400207, 37.725042766873585 ], [ -122.462280269039496, 37.725147301470763 ], [ -122.462212628293415, 37.725265491161082 ], [ -122.462561310804759, 37.725391067720956 ], [ -122.462815474472038, 37.725482412532848 ], [ -122.462686726995429, 37.725774916753664 ], [ -122.46262180837526, 37.726335258944708 ], [ -122.462565711889994, 37.726822959746293 ], [ -122.462545638153259, 37.726997475605309 ], [ -122.462546035395761, 37.727106268284892 ], [ -122.462547067236983, 37.727225353979733 ], [ -122.462615761322709, 37.727529244060726 ], [ -122.462714226912738, 37.727738412010282 ], [ -122.462888304160828, 37.72805552868347 ], [ -122.46288814852555, 37.72805550243347 ], [ -122.462888197868679, 37.72805558978888 ], [ -122.462703368909061, 37.728024299159358 ], [ -122.462378284725844, 37.728011300874932 ], [ -122.462089038987699, 37.728047063364642 ], [ -122.461824751209633, 37.728118912555594 ], [ -122.46142222273329, 37.728330263725837 ], [ -122.460815856121073, 37.72868098095028 ], [ -122.461139723962631, 37.728765209783546 ], [ -122.461378769207158, 37.728787306916686 ], [ -122.461378549868385, 37.728787330621202 ], [ -122.461139150327014, 37.728765372338408 ], [ -122.460815517748841, 37.728680936862041 ], [ -122.460412720770037, 37.728739179843977 ], [ -122.460002483633559, 37.728739437629635 ], [ -122.460023966205156, 37.729195728883113 ], [ -122.459983752683073, 37.729522472170189 ], [ -122.459930163903692, 37.729706628889033 ], [ -122.459878403068345, 37.729884503080157 ], [ -122.459783802497654, 37.730109540441724 ], [ -122.459563710785162, 37.730368588301999 ], [ -122.459352156941819, 37.730515761910091 ], [ -122.459193144317396, 37.730602954490251 ], [ -122.458688935885434, 37.730751520241796 ], [ -122.458472470688633, 37.730752827866375 ], [ -122.458222500186622, 37.73077738189027 ], [ -122.457474238952088, 37.730997495241198 ], [ -122.456607498028021, 37.731187733113579 ], [ -122.455762555159509, 37.731348802743547 ], [ -122.454915878760758, 37.731464997636976 ], [ -122.453590911574565, 37.731488405776453 ], [ -122.453411343594681, 37.731530646828205 ], [ -122.451146666771351, 37.731536846888879 ], [ -122.448866265260094, 37.731542959168735 ], [ -122.447291821211039, 37.731547153756608 ], [ -122.446578400413941, 37.7315490470612 ], [ -122.444288854528963, 37.731568915105107 ], [ -122.444294941941365, 37.731069863889161 ], [ -122.444298409699798, 37.730708221303239 ], [ -122.444291303797655, 37.729896860703782 ], [ -122.444284269547836, 37.729093639959018 ], [ -122.44427751391413, 37.728322242080615 ], [ -122.444276984301908, 37.728261755504967 ], [ -122.444131311025359, 37.72831838217401 ], [ -122.443973112888827, 37.728379877183251 ], [ -122.442954953118544, 37.728915555981267 ], [ -122.442595296877187, 37.729101680603421 ], [ -122.442082956691792, 37.729308363921405 ], [ -122.442006614261629, 37.729375267903364 ], [ -122.442010214558891, 37.729910949382834 ], [ -122.440664990612632, 37.729919329476168 ], [ -122.43969146797258, 37.730323477880063 ], [ -122.439686065703896, 37.730325720705899 ], [ -122.438692929843569, 37.730737998359416 ], [ -122.437166749161392, 37.731365897534992 ], [ -122.436835967120587, 37.731467212874229 ], [ -122.436678949019353, 37.731538395224071 ], [ -122.436668162612392, 37.731543298105045 ], [ -122.435457687984979, 37.732093484109448 ], [ -122.434992781477959, 37.732295287547394 ], [ -122.434989951388332, 37.732296516038524 ], [ -122.434823956379304, 37.732249430441868 ], [ -122.434644432402948, 37.732322139093768 ], [ -122.434512093568429, 37.732323526771246 ], [ -122.434440716858973, 37.732534804028113 ], [ -122.432720773871381, 37.733187185661393 ], [ -122.432572047381726, 37.733243596430682 ], [ -122.43132522808267, 37.733716495194997 ], [ -122.430931197463138, 37.733865940717834 ], [ -122.430928172484656, 37.733867087971888 ], [ -122.430400796753801, 37.734118700718604 ], [ -122.429799382942633, 37.734405632509876 ], [ -122.429797927680781, 37.734406452684077 ], [ -122.429606994304805, 37.734482866043706 ], [ -122.429365174143101, 37.734579643964238 ], [ -122.428766264762999, 37.73481932892178 ], [ -122.42843713263963, 37.734951046304573 ], [ -122.428436951461066, 37.734950968784666 ], [ -122.428436980709748, 37.734950949626743 ], [ -122.427838803054428, 37.734693898279502 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":19,"ZIP_CODE":94116,"ID":94116},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.491334899611488, 37.737293023539365 ], [ -122.491211452414888, 37.737221069184358 ], [ -122.491162508402653, 37.737157782139001 ], [ -122.490686267381363, 37.736541968564268 ], [ -122.490552748713441, 37.736251597078756 ], [ -122.490521485540071, 37.736028873151284 ], [ -122.490460674310157, 37.735842274774221 ], [ -122.490270108429897, 37.735606337180243 ], [ -122.490526224357907, 37.735470000646821 ], [ -122.490725734916396, 37.735399781312303 ], [ -122.490973609504408, 37.735348171552815 ], [ -122.491320518441114, 37.735327019185135 ], [ -122.491730212101302, 37.735301758325164 ], [ -122.491805731315921, 37.735279805981911 ], [ -122.492142715245791, 37.735181846965403 ], [ -122.492330945602859, 37.73504482611267 ], [ -122.492843999903116, 37.734842083695071 ], [ -122.493274340840912, 37.734785121286002 ], [ -122.493406966558723, 37.734856121008917 ], [ -122.493407285267097, 37.734856242527158 ], [ -122.493857076611491, 37.73502785037892 ], [ -122.493857150107345, 37.735028823489081 ], [ -122.4940149282546, 37.735024137316628 ], [ -122.494014877350082, 37.735023413250019 ], [ -122.493941607430031, 37.733981341508411 ], [ -122.493941605376719, 37.733981316545631 ], [ -122.494403119131789, 37.733960247035334 ], [ -122.496448643026866, 37.733877460645239 ], [ -122.496635991376749, 37.733770846301013 ], [ -122.496635997172902, 37.733770843181105 ], [ -122.496635997165527, 37.733770842906516 ], [ -122.496636262010625, 37.733770813420726 ], [ -122.496636264393828, 37.733770812006838 ], [ -122.496807213285692, 37.733750829171804 ], [ -122.4970611531011, 37.733738715676616 ], [ -122.497251243304476, 37.7337296478455 ], [ -122.497675024009141, 37.73378860832171 ], [ -122.497707486783483, 37.733793124978028 ], [ -122.498050148013945, 37.73385852689691 ], [ -122.49837749236211, 37.733942575660954 ], [ -122.498483756692679, 37.733969859923228 ], [ -122.498948533172893, 37.734128137325406 ], [ -122.499086082983126, 37.734239092175393 ], [ -122.499180283, 37.734301056816975 ], [ -122.499196335607635, 37.734311616338935 ], [ -122.499430330098079, 37.734471850699563 ], [ -122.500140914702612, 37.734827630984967 ], [ -122.500289079616721, 37.734896880574155 ], [ -122.500571951887039, 37.735029088020617 ], [ -122.500650675572956, 37.735059919015036 ], [ -122.500888239775747, 37.73515295885273 ], [ -122.500970549161394, 37.735174012383368 ], [ -122.501097483002411, 37.735206481213844 ], [ -122.501097483348147, 37.735206481207975 ], [ -122.501214897179494, 37.735242075875206 ], [ -122.501291847576297, 37.735265403511711 ], [ -122.501555214836827, 37.735330188314435 ], [ -122.501556481916552, 37.735330499723666 ], [ -122.502021315734993, 37.73539219398544 ], [ -122.50206735537283, 37.735396211199387 ], [ -122.50249812714712, 37.735433799348435 ], [ -122.503104759187963, 37.735466491452826 ], [ -122.504189206002195, 37.735470928034005 ], [ -122.505257352091178, 37.735475287872006 ], [ -122.505711404999388, 37.735473569905054 ], [ -122.506142139643117, 37.735471938745221 ], [ -122.506541776696594, 37.735470423847289 ], [ -122.506717419598758, 37.735469757763546 ], [ -122.506718392445464, 37.735463437680252 ], [ -122.508528202252251, 37.735448935792135 ], [ -122.50851723304288, 37.735491014374531 ], [ -122.508503948199092, 37.735575367390467 ], [ -122.508509635115971, 37.735593812897228 ], [ -122.508534142132689, 37.735604726176433 ], [ -122.508524280726746, 37.73562377983793 ], [ -122.508510961647445, 37.73564289244193 ], [ -122.50850628586997, 37.735661857701452 ], [ -122.508508623546277, 37.735748348011157 ], [ -122.508514421788533, 37.735770911828716 ], [ -122.508520015957387, 37.735785925179286 ], [ -122.508510052128926, 37.735801203199763 ], [ -122.508477309195854, 37.735805538751634 ], [ -122.508464092111296, 37.735828426720389 ], [ -122.508469983447981, 37.735854422414455 ], [ -122.508474053027456, 37.735877015976307 ], [ -122.508461856322953, 37.735937657650084 ], [ -122.508465576123427, 37.736075286791404 ], [ -122.508449773613393, 37.7361304959501 ], [ -122.508448690994484, 37.73621841805182 ], [ -122.508451371852146, 37.73631760760221 ], [ -122.508490175464019, 37.736473524223285 ], [ -122.508516049607124, 37.736662968752803 ], [ -122.508603414533738, 37.736823895128929 ], [ -122.508662443511639, 37.736960238247853 ], [ -122.50867888000765, 37.737056446014627 ], [ -122.508719731680841, 37.737160135129862 ], [ -122.508734334501312, 37.737316464525655 ], [ -122.508765426520924, 37.737442982668369 ], [ -122.508785682509867, 37.737552516867808 ], [ -122.508770696382811, 37.737637929009765 ], [ -122.508786455872283, 37.737709082028033 ], [ -122.508760949000333, 37.737789179556565 ], [ -122.508763268491435, 37.737874983674544 ], [ -122.50874159008174, 37.737968750866465 ], [ -122.5087476021437, 37.738191154145746 ], [ -122.508756496465509, 37.738392219395308 ], [ -122.508803998140891, 37.738613915588019 ], [ -122.508803138582451, 37.738710074824468 ], [ -122.508864043688376, 37.738915747292424 ], [ -122.5088940788266, 37.739003138823669 ], [ -122.508897419160689, 37.739126696329038 ], [ -122.50889009011712, 37.73923944778879 ], [ -122.508822474607925, 37.739425335507839 ], [ -122.508791610932704, 37.73956321107876 ], [ -122.508779986132339, 37.739708999607267 ], [ -122.508780357262495, 37.739722728217863 ], [ -122.50877604314833, 37.739755078870481 ], [ -122.508764442526711, 37.739773818808054 ], [ -122.508752731253111, 37.739788440149496 ], [ -122.508741502089606, 37.739820908689246 ], [ -122.508753863186314, 37.739830312411385 ], [ -122.508778826631357, 37.739858043722968 ], [ -122.508779958572916, 37.739899915709536 ], [ -122.508761814014846, 37.7399325021469 ], [ -122.508762704722017, 37.739965450811162 ], [ -122.508770491923499, 37.739997595154925 ], [ -122.508776179583251, 37.740016040354824 ], [ -122.508747792652912, 37.740053608631989 ], [ -122.508748423567027, 37.740076947268811 ], [ -122.508737212914269, 37.74011010223709 ], [ -122.508737713932007, 37.740128635860302 ], [ -122.508745501147203, 37.740160780479421 ], [ -122.50873947678167, 37.740193847030952 ], [ -122.508723191132987, 37.740231208721582 ], [ -122.508723822048324, 37.740254547632397 ], [ -122.508732128829621, 37.740305911755783 ], [ -122.508742872573777, 37.740319463533034 ], [ -122.50877339326972, 37.74036083476765 ], [ -122.508810829778682, 37.740402088090121 ], [ -122.508829008239559, 37.740434742019097 ], [ -122.508813223629531, 37.740490637616951 ], [ -122.508861162085935, 37.740536519108112 ], [ -122.508850322907236, 37.740583402687079 ], [ -122.508858110211349, 37.74061554702174 ], [ -122.508869614883267, 37.740657242433585 ], [ -122.508870616992439, 37.740694309675469 ], [ -122.508866692231578, 37.740741075644983 ], [ -122.508879295085322, 37.740759402667216 ], [ -122.508914260413761, 37.740773228492962 ], [ -122.508932680259875, 37.740814805724348 ], [ -122.508928625962866, 37.740856766401905 ], [ -122.508929256940604, 37.740880105034634 ], [ -122.508935445433963, 37.740917083849979 ], [ -122.508953234348851, 37.740935322719352 ], [ -122.508983384240864, 37.740962965288134 ], [ -122.509008589756519, 37.740999619859899 ], [ -122.509026879459341, 37.741036392343048 ], [ -122.509023085376484, 37.741087963041082 ], [ -122.509036559926997, 37.741138552557295 ], [ -122.509054739012925, 37.741171206441557 ], [ -122.509067601488525, 37.741199144021785 ], [ -122.5090958931589, 37.741222010744757 ], [ -122.509133200021253, 37.741258459227247 ], [ -122.50918506342488, 37.741257574887214 ], [ -122.509205212680868, 37.74129912258816 ], [ -122.509246237071991, 37.741345121825837 ], [ -122.509242554147008, 37.741400811115767 ], [ -122.509226769642837, 37.741456706760005 ], [ -122.50922790187596, 37.741498579280254 ], [ -122.509216431361367, 37.741522123988162 ], [ -122.509199662741182, 37.741541638830299 ], [ -122.509177093246976, 37.741602457387373 ], [ -122.509208116202714, 37.741662362111221 ], [ -122.509186903920153, 37.741709422591256 ], [ -122.509189298261234, 37.741797972091135 ], [ -122.509154236925113, 37.741844581962283 ], [ -122.509149811487788, 37.741872814035773 ], [ -122.509151073599824, 37.741919491290815 ], [ -122.509123057336595, 37.741970788250718 ], [ -122.509100375943362, 37.742027488213331 ], [ -122.509101006984949, 37.742050826840561 ], [ -122.509092137481943, 37.742106604551111 ], [ -122.509063378372446, 37.742130444293039 ], [ -122.50905227925395, 37.742167717855253 ], [ -122.509053541309754, 37.742214395109038 ], [ -122.509066774807934, 37.742256061019717 ], [ -122.509073353587084, 37.742307454847364 ], [ -122.509057438852423, 37.742358545723746 ], [ -122.509051785633744, 37.74240534060808 ], [ -122.509053177611264, 37.742456822871205 ], [ -122.509073957471671, 37.742521709498256 ], [ -122.509091988431635, 37.742548871927937 ], [ -122.509110538400861, 37.742595254410702 ], [ -122.509106614374701, 37.74264202008699 ], [ -122.509124533674893, 37.742665064210797 ], [ -122.50913085233006, 37.742706847741204 ], [ -122.509143845016951, 37.742739590042241 ], [ -122.509166932263881, 37.742761859020533 ], [ -122.50919239764383, 37.742808123575315 ], [ -122.509181187122891, 37.742841278564811 ], [ -122.509159213148223, 37.742860195402194 ], [ -122.509185214866079, 37.742990233896222 ], [ -122.509180659445065, 37.743013660954873 ], [ -122.509194023430766, 37.743060131850363 ], [ -122.509212184156269, 37.743092099550239 ], [ -122.509235029879775, 37.74310544465424 ], [ -122.509248023028022, 37.743138186935724 ], [ -122.509243207416404, 37.743152004255805 ], [ -122.509249786389432, 37.743203397791333 ], [ -122.509267947166521, 37.743235365207241 ], [ -122.50930010317154, 37.743337142122911 ], [ -122.509302627635748, 37.743430496606479 ], [ -122.509334412528517, 37.743518545183825 ], [ -122.509352573411604, 37.743550512310456 ], [ -122.509365807315376, 37.74359217817824 ], [ -122.509378299405142, 37.743606386832958 ], [ -122.50939077259082, 37.743619909062254 ], [ -122.509397091484274, 37.74366169284626 ], [ -122.509409824223226, 37.743684825098981 ], [ -122.509422427717567, 37.743703152328656 ], [ -122.509416403366075, 37.743736218895179 ], [ -122.509417405789478, 37.743773286113324 ], [ -122.509442110915671, 37.74379140724664 ], [ -122.509460290482991, 37.743824061059733 ], [ -122.509467837052512, 37.743847281472782 ], [ -122.509478581442835, 37.743860833174935 ], [ -122.509497132326601, 37.74390721558072 ], [ -122.509505050216035, 37.743944165138849 ], [ -122.509522969938899, 37.743967208647867 ], [ -122.509535572817498, 37.743985535876377 ], [ -122.509565966198053, 37.744022101859116 ], [ -122.509567729859413, 37.744087312700294 ], [ -122.50958033276946, 37.744105639923646 ], [ -122.509604330613158, 37.744161543870057 ], [ -122.509617063502262, 37.744184676098449 ], [ -122.509642400382361, 37.744226135524023 ], [ -122.50963585625108, 37.74423998206241 ], [ -122.509631802164265, 37.744281942740074 ], [ -122.509637749945398, 37.744309998183795 ], [ -122.509655669451874, 37.744333041677137 ], [ -122.509651355796905, 37.744365392330948 ], [ -122.509652358345974, 37.744402459543146 ], [ -122.509682770174749, 37.744439711928955 ], [ -122.509684274023797, 37.744495312746096 ], [ -122.509661202059561, 37.74453759777208 ], [ -122.509656906960942, 37.744570634854803 ], [ -122.509652462986452, 37.744598180504454 ], [ -122.509634336575232, 37.744631453474433 ], [ -122.509635079200464, 37.744658910667582 ], [ -122.509630653432438, 37.744687142751694 ], [ -122.509607841992747, 37.744739038046106 ], [ -122.509616019927876, 37.744785597059909 ], [ -122.509592687920644, 37.744818272053067 ], [ -122.509529982316536, 37.744866040185691 ], [ -122.509506149350315, 37.744880181550315 ], [ -122.509466886438972, 37.744899393264149 ], [ -122.509443442946818, 37.744927949648201 ], [ -122.509461493197179, 37.744955798714784 ], [ -122.509462365703229, 37.744988060641646 ], [ -122.50945818152897, 37.745025216299389 ], [ -122.509441783806565, 37.745058459754802 ], [ -122.509435740789897, 37.745090839884973 ], [ -122.509432447662917, 37.745160944171666 ], [ -122.509397957547932, 37.745292700871097 ], [ -122.509353566936483, 37.745697951409504 ], [ -122.509335859850864, 37.745938614544613 ], [ -122.509427065710852, 37.746369022956515 ], [ -122.509460469864493, 37.746452922841264 ], [ -122.509505472532595, 37.746581950726871 ], [ -122.509517033840751, 37.746625705328505 ], [ -122.509530306206301, 37.746668744003671 ], [ -122.509540138624189, 37.746712528086029 ], [ -122.50955170066463, 37.746756282671512 ], [ -122.509559804532088, 37.746800096229578 ], [ -122.509567926974654, 37.746844596216341 ], [ -122.509574301938841, 37.746888439256921 ], [ -122.50958069512302, 37.74693296845772 ], [ -122.509587070448092, 37.746976811491038 ], [ -122.509590005803872, 37.747021399934077 ], [ -122.509594670781297, 37.747065958880377 ], [ -122.509597084346751, 37.747155194721792 ], [ -122.509772363824212, 37.747496265262193 ], [ -122.509783516941724, 37.747524918382545 ], [ -122.509806418075982, 37.747604190625147 ], [ -122.509810433332206, 37.747624724253029 ], [ -122.509816158624176, 37.747644542243904 ], [ -122.509820173546927, 37.747665076151769 ], [ -122.509822459192577, 37.747685639827814 ], [ -122.509826455889467, 37.747705487025407 ], [ -122.509833313854301, 37.747767177210982 ], [ -122.509835523477918, 37.747848862313226 ], [ -122.509834351235696, 37.747869484689943 ], [ -122.509833161123524, 37.747889420899924 ], [ -122.509831989218355, 37.747910042996011 ], [ -122.509829088027573, 37.747930694860493 ], [ -122.509827897905609, 37.74795063079565 ], [ -122.509824997065294, 37.747971282928546 ], [ -122.509778471867705, 37.748297593791527 ], [ -122.509717126110829, 37.748715495135052 ], [ -122.509711528533515, 37.748764349563523 ], [ -122.509708924691878, 37.748795984010961 ], [ -122.509706339422777, 37.748828305162085 ], [ -122.509705464552383, 37.748859910397449 ], [ -122.509704608248597, 37.748892202061995 ], [ -122.50970373303835, 37.748923807577505 ], [ -122.509705738305371, 37.748997941669188 ], [ -122.508363946491727, 37.74907680068609 ], [ -122.507940323213063, 37.749101694546454 ], [ -122.507941547211104, 37.749110937340276 ], [ -122.507539948063609, 37.749128748547342 ], [ -122.50729515180268, 37.749139604462776 ], [ -122.507286878880223, 37.749139971457424 ], [ -122.50728687853443, 37.749139971463322 ], [ -122.507286886587565, 37.749140090270473 ], [ -122.507286887279179, 37.749140090258685 ], [ -122.507416228284868, 37.751003284446853 ], [ -122.506347526734444, 37.751051944046772 ], [ -122.505276576525688, 37.751093151070108 ], [ -122.504203312772219, 37.751143789774702 ], [ -122.503133002600279, 37.751190357338089 ], [ -122.502060320882052, 37.751239765057655 ], [ -122.500987488435712, 37.75128639412403 ], [ -122.499914456955352, 37.751333766429582 ], [ -122.499914122812314, 37.751333781439868 ], [ -122.49937768349335, 37.751357494487337 ], [ -122.498842248697912, 37.751381160579498 ], [ -122.498442545251379, 37.751398004902029 ], [ -122.497770416046876, 37.751426327269549 ], [ -122.497770415009455, 37.751426327287128 ], [ -122.496702184257288, 37.751476079301845 ], [ -122.49581055415868, 37.751518288226762 ], [ -122.495630257074851, 37.751526822572394 ], [ -122.49509879355503, 37.751544749172808 ], [ -122.495098259533435, 37.751544767553312 ], [ -122.49456080780611, 37.751568259028382 ], [ -122.493488045146222, 37.751613904571322 ], [ -122.492417458516726, 37.751662024433998 ], [ -122.491344845233968, 37.751710225381885 ], [ -122.490270381873529, 37.751758499707634 ], [ -122.48919356840311, 37.751806869260896 ], [ -122.488143190546495, 37.751854042116229 ], [ -122.487053067380344, 37.751903269835523 ], [ -122.48598818277614, 37.751950794949664 ], [ -122.48491485069583, 37.751998192013865 ], [ -122.483844155588841, 37.75204546291927 ], [ -122.48276958366516, 37.752092894785363 ], [ -122.48170210782861, 37.752140004119113 ], [ -122.480628878786973, 37.752187357305665 ], [ -122.479557564859533, 37.752234616335052 ], [ -122.478486061226221, 37.752281873458429 ], [ -122.4774149778289, 37.752329102778496 ], [ -122.476292240229284, 37.752378599147249 ], [ -122.476292239846927, 37.752378597780194 ], [ -122.476291890478677, 37.752378612978674 ], [ -122.476291890529794, 37.752378614900692 ], [ -122.475276421588944, 37.752423947680597 ], [ -122.474740669236724, 37.752447861779451 ], [ -122.474205182950101, 37.752471761013865 ], [ -122.473133075589757, 37.752519603580488 ], [ -122.472007574280582, 37.752569817871482 ], [ -122.470907529168414, 37.752615836450325 ], [ -122.471122146869178, 37.753216025593119 ], [ -122.471174197654705, 37.753356133265093 ], [ -122.471187692098596, 37.753493865266243 ], [ -122.471190660490961, 37.753605743703318 ], [ -122.471171093123701, 37.753733616626192 ], [ -122.471132268263645, 37.753877430013475 ], [ -122.471079638048607, 37.753995444111091 ], [ -122.471036498728921, 37.754100284913058 ], [ -122.471016495996267, 37.754217122306045 ], [ -122.471019321832557, 37.754265617625428 ], [ -122.471049094699751, 37.75451479556704 ], [ -122.471016758783364, 37.754797170870887 ], [ -122.470916907310823, 37.75477064959378 ], [ -122.470428100059209, 37.754750285613063 ], [ -122.470075601814969, 37.754705621480454 ], [ -122.470018818714578, 37.754692394187302 ], [ -122.469719537880266, 37.754630546382018 ], [ -122.469359681800768, 37.754536443616175 ], [ -122.469229538348586, 37.754492641945887 ], [ -122.469187312711114, 37.754478429881637 ], [ -122.469043420308736, 37.754428685878558 ], [ -122.468949194118821, 37.754383817642378 ], [ -122.468837396357713, 37.754298754678686 ], [ -122.46875232271276, 37.754192126033097 ], [ -122.468629004224212, 37.753985873398783 ], [ -122.46853368295227, 37.753778395652951 ], [ -122.468440863346331, 37.753541228150766 ], [ -122.468335071492149, 37.753243730756957 ], [ -122.468181079371874, 37.752955569756089 ], [ -122.468031369650532, 37.75278739056494 ], [ -122.467915171465805, 37.752734664618352 ], [ -122.467804242122298, 37.752723264514827 ], [ -122.467642627702773, 37.752756208616617 ], [ -122.46660049988607, 37.752803078204508 ], [ -122.465533177566329, 37.752851071595934 ], [ -122.464462034762747, 37.752899226938901 ], [ -122.464462034791779, 37.752899228037201 ], [ -122.464462004720289, 37.752899229087859 ], [ -122.463398931733735, 37.75298135079364 ], [ -122.463398833027838, 37.752981215914545 ], [ -122.463165642273253, 37.752743295475163 ], [ -122.462772959403608, 37.752449458308092 ], [ -122.462467546932245, 37.752187424267689 ], [ -122.462176881380387, 37.751866525322576 ], [ -122.461851812215116, 37.751624201717213 ], [ -122.461621806880288, 37.751517360697065 ], [ -122.461523602837886, 37.75150356127773 ], [ -122.461357402458418, 37.751255115112428 ], [ -122.461130726036544, 37.75091814728394 ], [ -122.460646598340617, 37.749905586886342 ], [ -122.460488100882344, 37.749710225074402 ], [ -122.459910793377546, 37.749171745450226 ], [ -122.459625716264128, 37.748941671345293 ], [ -122.459200706652084, 37.748504001538066 ], [ -122.458941590023073, 37.748201275736406 ], [ -122.458816156308444, 37.748040115735854 ], [ -122.458785941599359, 37.747811900102363 ], [ -122.458856680033747, 37.7476570668547 ], [ -122.458970102890007, 37.747514391535915 ], [ -122.459174106111192, 37.747286620942795 ], [ -122.459174375277186, 37.74728632007151 ], [ -122.461381097416904, 37.745569497508143 ], [ -122.463685995946705, 37.743749409879626 ], [ -122.464736798394597, 37.743658625608425 ], [ -122.465806989998114, 37.743574050343277 ], [ -122.466043187720601, 37.743555382675872 ], [ -122.4668594971902, 37.743490862582995 ], [ -122.467747743753378, 37.743412622582262 ], [ -122.468561098363182, 37.741503345390441 ], [ -122.468671688881855, 37.741487738762387 ], [ -122.46903011455143, 37.741472060437133 ], [ -122.470104939284042, 37.741425112172415 ], [ -122.471225939871744, 37.741383106823285 ], [ -122.471094271054184, 37.739515149668783 ], [ -122.470962730039105, 37.737648904688974 ], [ -122.472088826157801, 37.737598476381557 ], [ -122.473161338869033, 37.737550437503423 ], [ -122.47327754880429, 37.737518149435381 ], [ -122.474232714891599, 37.737476308128976 ], [ -122.475288554960258, 37.737454742960537 ], [ -122.476368270747585, 37.737407342172453 ], [ -122.477443897267278, 37.737360110526431 ], [ -122.478500149938654, 37.73731300537402 ], [ -122.479601690542523, 37.737266045133403 ], [ -122.480654887744791, 37.73721905491567 ], [ -122.481727269492282, 37.73717192680251 ], [ -122.484981330342137, 37.737106613405395 ], [ -122.485055057260084, 37.737081691563745 ], [ -122.485398323256604, 37.736886930845941 ], [ -122.485767077957547, 37.736757243866982 ], [ -122.486239320534182, 37.736758103009961 ], [ -122.486865148034397, 37.736893072836374 ], [ -122.487473746906744, 37.73696000969079 ], [ -122.487883946457515, 37.736972903025247 ], [ -122.488261361358497, 37.736979897727672 ], [ -122.488518054177234, 37.737001890327612 ], [ -122.488933343471572, 37.73715804150379 ], [ -122.48917282500021, 37.737387715271872 ], [ -122.489310346380378, 37.737544144541232 ], [ -122.489559638156635, 37.737725144708122 ], [ -122.489794342484018, 37.737821521499782 ], [ -122.489970938868055, 37.737956983380037 ], [ -122.490364187143001, 37.737929559098433 ], [ -122.490475969759899, 37.737832474268195 ], [ -122.490695166321217, 37.737732995785407 ], [ -122.490894410355324, 37.737610557460023 ], [ -122.491113859834144, 37.737397356998116 ], [ -122.491198309070924, 37.737311342176547 ], [ -122.491334899611488, 37.737293023539365 ] ], [ [ -122.459625733970427, 37.748941660612438 ], [ -122.459625856985753, 37.74894158961829 ], [ -122.459625856632712, 37.748941589349464 ], [ -122.459625733970427, 37.748941660612438 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":20,"ZIP_CODE":94114,"ID":94114},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.451366939667807, 37.758575670531805 ], [ -122.451372847861364, 37.758604122239966 ], [ -122.451553087455522, 37.759472365763493 ], [ -122.449214958651069, 37.759610853827809 ], [ -122.448576884007139, 37.759648639321185 ], [ -122.448534508559618, 37.759045234831405 ], [ -122.448080121328474, 37.759090506458826 ], [ -122.447681986744499, 37.759189835272018 ], [ -122.447394862769713, 37.759372842727622 ], [ -122.447157396221257, 37.759660681065917 ], [ -122.446952816919733, 37.760170129150154 ], [ -122.446866213158088, 37.76042156830691 ], [ -122.446579328750119, 37.76090155472 ], [ -122.446433636964471, 37.761006719141555 ], [ -122.446409895656728, 37.761094344377824 ], [ -122.44652973647915, 37.761396213495424 ], [ -122.446783403627563, 37.761781413728215 ], [ -122.446783402935864, 37.761781413739634 ], [ -122.44642928686055, 37.76181245987528 ], [ -122.446384044294348, 37.761816426422072 ], [ -122.446401427721412, 37.762069683149655 ], [ -122.446391621016517, 37.76223195154369 ], [ -122.44628722735257, 37.762310164748847 ], [ -122.446246565080784, 37.762246873735464 ], [ -122.446167833254592, 37.762219287792306 ], [ -122.445930590545728, 37.762233223779305 ], [ -122.445825769194499, 37.762264137786076 ], [ -122.445692026290132, 37.762347953618033 ], [ -122.444663866724483, 37.763326501903514 ], [ -122.44441170822752, 37.76398692869914 ], [ -122.443434935848089, 37.763875622244342 ], [ -122.443247528217242, 37.763690608015906 ], [ -122.442951036556252, 37.763677959114567 ], [ -122.44294975946913, 37.764109072128207 ], [ -122.443199827408847, 37.764468898600072 ], [ -122.443215275433289, 37.764557545459958 ], [ -122.443278634379993, 37.764726164248771 ], [ -122.443263297846215, 37.765217752592115 ], [ -122.443347278899211, 37.765332794099429 ], [ -122.443210588891787, 37.765339994614024 ], [ -122.442086687309455, 37.765324419445463 ], [ -122.441931912880605, 37.765295099009755 ], [ -122.441241683591315, 37.765270858517731 ], [ -122.439501839688162, 37.766575524599709 ], [ -122.438555364477878, 37.766297386980668 ], [ -122.438386133953244, 37.766664738151036 ], [ -122.438291383601225, 37.766725780787596 ], [ -122.438219625977609, 37.766701399454838 ], [ -122.437879374385105, 37.76661079550852 ], [ -122.437684727134425, 37.766587115085294 ], [ -122.4374853951944, 37.766644323028956 ], [ -122.437333800177683, 37.766762171805773 ], [ -122.437288601235366, 37.766922046842083 ], [ -122.437291829491301, 37.767045826510717 ], [ -122.43729899343451, 37.767221930124791 ], [ -122.436980399947345, 37.767244348801164 ], [ -122.436478247038266, 37.767274662557512 ], [ -122.436625219679314, 37.768918977544402 ], [ -122.436588267341477, 37.76900080227221 ], [ -122.435794213398353, 37.769058453615109 ], [ -122.43489319213792, 37.769113797429938 ], [ -122.433572207534368, 37.769178369516744 ], [ -122.432464341208131, 37.769249650838944 ], [ -122.431570380896062, 37.769307161387864 ], [ -122.431356624058139, 37.76932091157898 ], [ -122.430247361256178, 37.769392261627225 ], [ -122.429905643091914, 37.769407921549679 ], [ -122.429127985682982, 37.769456128057627 ], [ -122.428991181191208, 37.769394223715665 ], [ -122.428218351470321, 37.769440923680406 ], [ -122.426683978032827, 37.769533626427062 ], [ -122.426309438735913, 37.769602597220121 ], [ -122.426902347012131, 37.769049368265463 ], [ -122.426693183304053, 37.767869018742559 ], [ -122.426693183296933, 37.76786901846797 ], [ -122.426615944414863, 37.767069730096857 ], [ -122.426572006355102, 37.766615035704866 ], [ -122.426538465047457, 37.766267922745747 ], [ -122.426518991136163, 37.766066400051031 ], [ -122.426490697526233, 37.765773605772118 ], [ -122.426381708477521, 37.764645690891633 ], [ -122.426381708399177, 37.764645687871273 ], [ -122.426317477898522, 37.763970002371671 ], [ -122.426228478902843, 37.763030870557735 ], [ -122.426224290129298, 37.762962298008539 ], [ -122.426204067323269, 37.762631239367813 ], [ -122.426191463523168, 37.762538363286502 ], [ -122.426149283375466, 37.762227539381186 ], [ -122.426149283368346, 37.762227539106618 ], [ -122.426145984060597, 37.762160358437526 ], [ -122.426076501815189, 37.761427133937481 ], [ -122.426076501462219, 37.761427133668562 ], [ -122.425985721165645, 37.760498692937027 ], [ -122.425920302092379, 37.759829613405913 ], [ -122.425900090784694, 37.759619242549249 ], [ -122.425843422635126, 37.759029397589842 ], [ -122.425766807348751, 37.758226828975253 ], [ -122.425766807341631, 37.758226828700685 ], [ -122.425689459367419, 37.757429672933782 ], [ -122.42568945931761, 37.757429671011749 ], [ -122.425645855643012, 37.756979041458848 ], [ -122.425612216172169, 37.756631383038098 ], [ -122.425491892915787, 37.755387845874338 ], [ -122.425457179889037, 37.755029078716305 ], [ -122.425425666412067, 37.754703378159874 ], [ -122.425302616947704, 37.753431591109177 ], [ -122.425302616566313, 37.753431589741957 ], [ -122.425152541686245, 37.751841785894676 ], [ -122.4251525416649, 37.751841785070944 ], [ -122.425122809405835, 37.751528900123922 ], [ -122.425075700414453, 37.751033151258099 ], [ -122.424999224155329, 37.750232718354916 ], [ -122.424999224133984, 37.75023271753119 ], [ -122.424922999639648, 37.749434901505936 ], [ -122.427200037712353, 37.749295720374967 ], [ -122.429422761644645, 37.749157853016314 ], [ -122.431639579453815, 37.749028214467948 ], [ -122.433851103876819, 37.748895972089151 ], [ -122.436067172923103, 37.748762035575652 ], [ -122.438139804541592, 37.748636730271706 ], [ -122.438246126408771, 37.748664500736062 ], [ -122.440402009224243, 37.748642072742477 ], [ -122.440693299152798, 37.748639039270962 ], [ -122.4414080949674, 37.748610013081198 ], [ -122.441477149443557, 37.748591599630018 ], [ -122.441916701553239, 37.748474391279807 ], [ -122.442519008868075, 37.748183215938361 ], [ -122.442584207288078, 37.748079345098553 ], [ -122.443161821262549, 37.747504352694399 ], [ -122.443453448246288, 37.747477579218923 ], [ -122.443473512241141, 37.748002572121706 ], [ -122.443473812008847, 37.74801042178742 ], [ -122.443486020026867, 37.748345516454542 ], [ -122.443434635522365, 37.749091646853778 ], [ -122.44259888979461, 37.749156165729936 ], [ -122.442599224378554, 37.749160242994655 ], [ -122.442583534001741, 37.749266790173017 ], [ -122.442693363008104, 37.750413947729008 ], [ -122.442776988488347, 37.750697651678763 ], [ -122.442782695565214, 37.750773110847675 ], [ -122.442782889125965, 37.750775670827849 ], [ -122.442832455660607, 37.751431039472649 ], [ -122.442817470436609, 37.751454127059596 ], [ -122.442982766064986, 37.751545025906275 ], [ -122.442775383396778, 37.752377050296218 ], [ -122.442775038632988, 37.752378432471772 ], [ -122.442524333279991, 37.752382565152622 ], [ -122.442492558984341, 37.752606697266998 ], [ -122.442239114579749, 37.752829681730105 ], [ -122.442056693562165, 37.753070846058556 ], [ -122.441886398393621, 37.753365106672398 ], [ -122.441807410207034, 37.753470934450007 ], [ -122.441501225348532, 37.753721419417111 ], [ -122.441307496038533, 37.753879905149773 ], [ -122.441162634059779, 37.754090414508028 ], [ -122.44107583131526, 37.754178484324051 ], [ -122.440897310558796, 37.754492600197032 ], [ -122.440449630137792, 37.755065428273227 ], [ -122.440344935902942, 37.755227929193452 ], [ -122.440113197925641, 37.755606296679595 ], [ -122.440032113187002, 37.755796618022245 ], [ -122.440028760145466, 37.755956541681734 ], [ -122.440133892987774, 37.756422684783992 ], [ -122.440296908436025, 37.756652260712109 ], [ -122.440975109290761, 37.756855155327102 ], [ -122.441311420390406, 37.75688501757589 ], [ -122.441891917804512, 37.756707900118627 ], [ -122.442226754965375, 37.756642418026821 ], [ -122.442229654337552, 37.756643729156551 ], [ -122.442234277014876, 37.756645819486522 ], [ -122.442241604390318, 37.756649132680884 ], [ -122.442338618241578, 37.756692996803793 ], [ -122.442524865881779, 37.756832757000566 ], [ -122.442618313376656, 37.756939880143335 ], [ -122.442822513313288, 37.757228212937811 ], [ -122.442914855315252, 37.757360460271151 ], [ -122.443513115466942, 37.757015898193345 ], [ -122.44359095735247, 37.756973190948777 ], [ -122.443933292768804, 37.756707199362893 ], [ -122.44469570432544, 37.75722410905459 ], [ -122.444812173070659, 37.757253442709903 ], [ -122.444964327713464, 37.757272877138014 ], [ -122.444969690519684, 37.757271714308636 ], [ -122.444978623456407, 37.757199356159234 ], [ -122.44531471170977, 37.756562327523987 ], [ -122.445646089047287, 37.756449470405634 ], [ -122.445946403378542, 37.756413329216429 ], [ -122.446950354992993, 37.75655039856936 ], [ -122.446777335972257, 37.756299129719707 ], [ -122.446339300582281, 37.75591138652841 ], [ -122.446125719389443, 37.755803738269194 ], [ -122.445929097870021, 37.755830086405965 ], [ -122.445464111666666, 37.75598407248431 ], [ -122.445268371613437, 37.755920565713375 ], [ -122.445221502655059, 37.755736527336694 ], [ -122.445347807952828, 37.755618935076164 ], [ -122.44578153535943, 37.755506535020608 ], [ -122.446152412695255, 37.755464475455021 ], [ -122.446560265846969, 37.755346452369793 ], [ -122.446809203706863, 37.755349269900414 ], [ -122.447004077099621, 37.75543789136227 ], [ -122.447530410096462, 37.755821232451311 ], [ -122.447682922964361, 37.755868400984937 ], [ -122.447851945395087, 37.755820566236046 ], [ -122.447961600338971, 37.755673235404537 ], [ -122.44794315940031, 37.755531524105997 ], [ -122.447698643463639, 37.754829811793044 ], [ -122.447375994048841, 37.754217662794012 ], [ -122.44720983000947, 37.754042891582813 ], [ -122.447450790660298, 37.753903429730649 ], [ -122.447546138718849, 37.753815754469287 ], [ -122.447656226877982, 37.753773037573623 ], [ -122.447842792647691, 37.753750582173005 ], [ -122.447974401539952, 37.753701051764345 ], [ -122.448075396501437, 37.753621892463592 ], [ -122.448145439689242, 37.753500194902855 ], [ -122.448141772510084, 37.753360343523973 ], [ -122.448073149249666, 37.75322587034826 ], [ -122.44795103635677, 37.753120264118444 ], [ -122.447707056312382, 37.752702854501173 ], [ -122.447536095260375, 37.752481955041475 ], [ -122.447740900123705, 37.752288718875811 ], [ -122.448209648267067, 37.752018216178747 ], [ -122.448345547044426, 37.751925564530218 ], [ -122.44842671498688, 37.751814445339285 ], [ -122.448475010516702, 37.751690954837258 ], [ -122.448479024859196, 37.751533756090204 ], [ -122.448535342970942, 37.751302507611712 ], [ -122.448730034866358, 37.750901860878599 ], [ -122.448837529908516, 37.750828266590112 ], [ -122.449185119457937, 37.750637403226534 ], [ -122.449304804219054, 37.750547171075254 ], [ -122.449423303862474, 37.750411755760133 ], [ -122.449497860416159, 37.750255542747738 ], [ -122.449681795644992, 37.749823083722987 ], [ -122.449716548818643, 37.74953978039732 ], [ -122.449640314591349, 37.749314114769071 ], [ -122.449543092528529, 37.749181799119881 ], [ -122.449400479496887, 37.749106035740034 ], [ -122.449245295819139, 37.74910598186397 ], [ -122.449051151579454, 37.749182809813966 ], [ -122.448885055528038, 37.749338875396077 ], [ -122.448264206892432, 37.750168319632976 ], [ -122.448133451017753, 37.75025012344306 ], [ -122.447957681483132, 37.750270249048668 ], [ -122.447060946228802, 37.749998786557995 ], [ -122.446924377309614, 37.749962298069669 ], [ -122.445803050365413, 37.749296324298363 ], [ -122.445657849639957, 37.749137284365275 ], [ -122.445634816186484, 37.748982685093061 ], [ -122.445696556781456, 37.748854668447294 ], [ -122.445900228666389, 37.74876090078547 ], [ -122.446146312903167, 37.748733159469879 ], [ -122.446321171479013, 37.748781931740275 ], [ -122.446513423639288, 37.748873466020136 ], [ -122.44714942379963, 37.749338660628091 ], [ -122.447347720899344, 37.749453771264633 ], [ -122.447558108041335, 37.749512717159995 ], [ -122.447695695115499, 37.749484613169258 ], [ -122.447794029968421, 37.749407650434719 ], [ -122.448271537838281, 37.748586113005615 ], [ -122.448649270998317, 37.747987545863559 ], [ -122.44873793021948, 37.747816100622572 ], [ -122.449048273698679, 37.747075129958219 ], [ -122.449145702641545, 37.746860421020024 ], [ -122.449310056560847, 37.746715637417083 ], [ -122.44944655863172, 37.746660402786539 ], [ -122.449658366925917, 37.746790485969299 ], [ -122.449829421216677, 37.7468448367704 ], [ -122.449121036812883, 37.748486108456696 ], [ -122.450376213037472, 37.748836617132255 ], [ -122.450378440966844, 37.74915691493446 ], [ -122.450359832675659, 37.74936931962273 ], [ -122.450278577377304, 37.749812923634934 ], [ -122.450120041484055, 37.750377135131941 ], [ -122.450039762259507, 37.750789548444018 ], [ -122.450020192405731, 37.751134853236394 ], [ -122.449818467802629, 37.751170814837231 ], [ -122.44965771853829, 37.751260239674203 ], [ -122.449537611901278, 37.75139818204417 ], [ -122.449421587723563, 37.751919823116488 ], [ -122.449322640472062, 37.752393440459898 ], [ -122.449260062142201, 37.752640188644804 ], [ -122.449222626079077, 37.752826418335388 ], [ -122.44920235250531, 37.75298761609767 ], [ -122.449195253073, 37.753141525321581 ], [ -122.44921167048372, 37.753342773463253 ], [ -122.449250446345715, 37.75354718765756 ], [ -122.449338624202724, 37.75376669417966 ], [ -122.449567372082669, 37.754139767157625 ], [ -122.449714539832698, 37.754072287920813 ], [ -122.45001235604478, 37.753935733822416 ], [ -122.450708861489431, 37.753616367449496 ], [ -122.450797400040912, 37.753766170392268 ], [ -122.450940567642817, 37.75387933530601 ], [ -122.451110760292124, 37.753931215767722 ], [ -122.451360262589361, 37.75396141724395 ], [ -122.451594424355719, 37.753898832915297 ], [ -122.452570281407503, 37.75354206761132 ], [ -122.452736650019233, 37.753666208179531 ], [ -122.453410821175368, 37.753818557980566 ], [ -122.454229599548796, 37.754062132001749 ], [ -122.454309928578283, 37.75416682276385 ], [ -122.454154362960978, 37.755029376887862 ], [ -122.454089386335994, 37.755285428850698 ], [ -122.453643273006946, 37.755857139298925 ], [ -122.453512429965073, 37.756126075057203 ], [ -122.453345167458252, 37.756697980973108 ], [ -122.453533591760348, 37.756819465356074 ], [ -122.453617386887871, 37.756948631540013 ], [ -122.453769459328285, 37.75746785416225 ], [ -122.453652871332849, 37.757570195093017 ], [ -122.453594261080696, 37.757621283813904 ], [ -122.453326709060633, 37.757812928758618 ], [ -122.453317408957801, 37.757819578594621 ], [ -122.452876092298638, 37.758073671104697 ], [ -122.45283476350059, 37.758097464572913 ], [ -122.45229781656198, 37.758277073170099 ], [ -122.452047941226652, 37.758343705002019 ], [ -122.451408535854284, 37.758561502025017 ], [ -122.45136693942257, 37.758575661196261 ], [ -122.451366939667807, 37.758575670531805 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":21,"ZIP_CODE":94131,"ID":94131},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.453769459328285, 37.75746785416225 ], [ -122.453617386887871, 37.756948631540013 ], [ -122.453533591760348, 37.756819465356074 ], [ -122.453345167458252, 37.756697980973108 ], [ -122.453512429965073, 37.756126075057203 ], [ -122.453643273006946, 37.755857139298925 ], [ -122.454089386335994, 37.755285428850698 ], [ -122.454154362960978, 37.755029376887862 ], [ -122.454309928578283, 37.75416682276385 ], [ -122.454229599548796, 37.754062132001749 ], [ -122.453410821175368, 37.753818557980566 ], [ -122.452736650019233, 37.753666208179531 ], [ -122.452570281407503, 37.75354206761132 ], [ -122.451594424355719, 37.753898832915297 ], [ -122.451360262589361, 37.75396141724395 ], [ -122.451110760292124, 37.753931215767722 ], [ -122.450940567642817, 37.75387933530601 ], [ -122.450797400040912, 37.753766170392268 ], [ -122.450708861489431, 37.753616367449496 ], [ -122.45001235604478, 37.753935733822416 ], [ -122.449714539832698, 37.754072287920813 ], [ -122.449567372082669, 37.754139767157625 ], [ -122.449338624202724, 37.75376669417966 ], [ -122.449250446345715, 37.75354718765756 ], [ -122.44921167048372, 37.753342773463253 ], [ -122.449195253073, 37.753141525321581 ], [ -122.44920235250531, 37.75298761609767 ], [ -122.449222626079077, 37.752826418335388 ], [ -122.449260062142201, 37.752640188644804 ], [ -122.449322640472062, 37.752393440459898 ], [ -122.449421587723563, 37.751919823116488 ], [ -122.449537611901278, 37.75139818204417 ], [ -122.44965771853829, 37.751260239674203 ], [ -122.449818467802629, 37.751170814837231 ], [ -122.450020192405731, 37.751134853236394 ], [ -122.450039762259507, 37.750789548444018 ], [ -122.450120041484055, 37.750377135131941 ], [ -122.450278577377304, 37.749812923634934 ], [ -122.450359832675659, 37.74936931962273 ], [ -122.450378440966844, 37.74915691493446 ], [ -122.450376213037472, 37.748836617132255 ], [ -122.449121036812883, 37.748486108456696 ], [ -122.449829421216677, 37.7468448367704 ], [ -122.449658366925917, 37.746790485969299 ], [ -122.44944655863172, 37.746660402786539 ], [ -122.449310056560847, 37.746715637417083 ], [ -122.449145702641545, 37.746860421020024 ], [ -122.449048273698679, 37.747075129958219 ], [ -122.44873793021948, 37.747816100622572 ], [ -122.448649270998317, 37.747987545863559 ], [ -122.448271537838281, 37.748586113005615 ], [ -122.447794029968421, 37.749407650434719 ], [ -122.447695695115499, 37.749484613169258 ], [ -122.447558108041335, 37.749512717159995 ], [ -122.447347720899344, 37.749453771264633 ], [ -122.44714942379963, 37.749338660628091 ], [ -122.446513423639288, 37.748873466020136 ], [ -122.446321171479013, 37.748781931740275 ], [ -122.446146312903167, 37.748733159469879 ], [ -122.445900228666389, 37.74876090078547 ], [ -122.445696556781456, 37.748854668447294 ], [ -122.445634816186484, 37.748982685093061 ], [ -122.445657849639957, 37.749137284365275 ], [ -122.445803050365413, 37.749296324298363 ], [ -122.446924377309614, 37.749962298069669 ], [ -122.447060946228802, 37.749998786557995 ], [ -122.447957681483132, 37.750270249048668 ], [ -122.448133451017753, 37.75025012344306 ], [ -122.448264206892432, 37.750168319632976 ], [ -122.448885055528038, 37.749338875396077 ], [ -122.449051151579454, 37.749182809813966 ], [ -122.449245295819139, 37.74910598186397 ], [ -122.449400479496887, 37.749106035740034 ], [ -122.449543092528529, 37.749181799119881 ], [ -122.449640314591349, 37.749314114769071 ], [ -122.449716548818643, 37.74953978039732 ], [ -122.449681795644992, 37.749823083722987 ], [ -122.449497860416159, 37.750255542747738 ], [ -122.449423303862474, 37.750411755760133 ], [ -122.449304804219054, 37.750547171075254 ], [ -122.449185119457937, 37.750637403226534 ], [ -122.448837529908516, 37.750828266590112 ], [ -122.448730034866358, 37.750901860878599 ], [ -122.448535342970942, 37.751302507611712 ], [ -122.448479024859196, 37.751533756090204 ], [ -122.448475010516702, 37.751690954837258 ], [ -122.44842671498688, 37.751814445339285 ], [ -122.448345547044426, 37.751925564530218 ], [ -122.448209648267067, 37.752018216178747 ], [ -122.447740900123705, 37.752288718875811 ], [ -122.447536095260375, 37.752481955041475 ], [ -122.447707056312382, 37.752702854501173 ], [ -122.44795103635677, 37.753120264118444 ], [ -122.448073149249666, 37.75322587034826 ], [ -122.448141772510084, 37.753360343523973 ], [ -122.448145439689242, 37.753500194902855 ], [ -122.448075396501437, 37.753621892463592 ], [ -122.447974401539952, 37.753701051764345 ], [ -122.447842792647691, 37.753750582173005 ], [ -122.447656226877982, 37.753773037573623 ], [ -122.447546138718849, 37.753815754469287 ], [ -122.447450790660298, 37.753903429730649 ], [ -122.44720983000947, 37.754042891582813 ], [ -122.447375994048841, 37.754217662794012 ], [ -122.447698643463639, 37.754829811793044 ], [ -122.44794315940031, 37.755531524105997 ], [ -122.447961600338971, 37.755673235404537 ], [ -122.447851945395087, 37.755820566236046 ], [ -122.447682922964361, 37.755868400984937 ], [ -122.447530410096462, 37.755821232451311 ], [ -122.447004077099621, 37.75543789136227 ], [ -122.446809203706863, 37.755349269900414 ], [ -122.446560265846969, 37.755346452369793 ], [ -122.446152412695255, 37.755464475455021 ], [ -122.44578153535943, 37.755506535020608 ], [ -122.445347807952828, 37.755618935076164 ], [ -122.445221502655059, 37.755736527336694 ], [ -122.445268371613437, 37.755920565713375 ], [ -122.445464111666666, 37.75598407248431 ], [ -122.445929097870021, 37.755830086405965 ], [ -122.446125719389443, 37.755803738269194 ], [ -122.446339300582281, 37.75591138652841 ], [ -122.446777335972257, 37.756299129719707 ], [ -122.446950354992993, 37.75655039856936 ], [ -122.445946403378542, 37.756413329216429 ], [ -122.445646089047287, 37.756449470405634 ], [ -122.44531471170977, 37.756562327523987 ], [ -122.444978623456407, 37.757199356159234 ], [ -122.444969690519684, 37.757271714308636 ], [ -122.444964327713464, 37.757272877138014 ], [ -122.444812173070659, 37.757253442709903 ], [ -122.44469570432544, 37.75722410905459 ], [ -122.443933292768804, 37.756707199362893 ], [ -122.44359095735247, 37.756973190948777 ], [ -122.443513115466942, 37.757015898193345 ], [ -122.442914855315252, 37.757360460271151 ], [ -122.442822513313288, 37.757228212937811 ], [ -122.442618313376656, 37.756939880143335 ], [ -122.442524865881779, 37.756832757000566 ], [ -122.442338618241578, 37.756692996803793 ], [ -122.442241604390318, 37.756649132680884 ], [ -122.442234277014876, 37.756645819486522 ], [ -122.442229654337552, 37.756643729156551 ], [ -122.442226754965375, 37.756642418026821 ], [ -122.441891917804512, 37.756707900118627 ], [ -122.441311420390406, 37.75688501757589 ], [ -122.440975109290761, 37.756855155327102 ], [ -122.440296908436025, 37.756652260712109 ], [ -122.440133892987774, 37.756422684783992 ], [ -122.440028760145466, 37.755956541681734 ], [ -122.440032113187002, 37.755796618022245 ], [ -122.440113197925641, 37.755606296679595 ], [ -122.440344935902942, 37.755227929193452 ], [ -122.440449630137792, 37.755065428273227 ], [ -122.440897310558796, 37.754492600197032 ], [ -122.44107583131526, 37.754178484324051 ], [ -122.441162634059779, 37.754090414508028 ], [ -122.441307496038533, 37.753879905149773 ], [ -122.441501225348532, 37.753721419417111 ], [ -122.441807410207034, 37.753470934450007 ], [ -122.441886398393621, 37.753365106672398 ], [ -122.442056693562165, 37.753070846058556 ], [ -122.442239114579749, 37.752829681730105 ], [ -122.442492558984341, 37.752606697266998 ], [ -122.442524333279991, 37.752382565152622 ], [ -122.442775038632988, 37.752378432471772 ], [ -122.442775383396778, 37.752377050296218 ], [ -122.442982766064986, 37.751545025906275 ], [ -122.442817470436609, 37.751454127059596 ], [ -122.442832455660607, 37.751431039472649 ], [ -122.442782889125965, 37.750775670827849 ], [ -122.442782695565214, 37.750773110847675 ], [ -122.442776988488347, 37.750697651678763 ], [ -122.442693363008104, 37.750413947729008 ], [ -122.442583534001741, 37.749266790173017 ], [ -122.442599224378554, 37.749160242994655 ], [ -122.44259888979461, 37.749156165729936 ], [ -122.443434635522365, 37.749091646853778 ], [ -122.443486020026867, 37.748345516454542 ], [ -122.443473812008847, 37.74801042178742 ], [ -122.443473512241141, 37.748002572121706 ], [ -122.443453448246288, 37.747477579218923 ], [ -122.443161821262549, 37.747504352694399 ], [ -122.442584207288078, 37.748079345098553 ], [ -122.442519008868075, 37.748183215938361 ], [ -122.441916701553239, 37.748474391279807 ], [ -122.441477149443557, 37.748591599630018 ], [ -122.4414080949674, 37.748610013081198 ], [ -122.440693299152798, 37.748639039270962 ], [ -122.440402009224243, 37.748642072742477 ], [ -122.438246126408771, 37.748664500736062 ], [ -122.438139804541592, 37.748636730271706 ], [ -122.436067172923103, 37.748762035575652 ], [ -122.433851103876819, 37.748895972089151 ], [ -122.431639579453815, 37.749028214467948 ], [ -122.429422761644645, 37.749157853016314 ], [ -122.427200037712353, 37.749295720374967 ], [ -122.424922999639648, 37.749434901505936 ], [ -122.424845024283727, 37.748632587554638 ], [ -122.424845018024243, 37.748632519532975 ], [ -122.424841979744244, 37.748600757493776 ], [ -122.424768284589831, 37.747830340365347 ], [ -122.424768280884535, 37.747830304166378 ], [ -122.424689793548367, 37.747033402901096 ], [ -122.424602793343411, 37.746241400149849 ], [ -122.424538964982034, 37.745435717069675 ], [ -122.424459208282684, 37.744635998834639 ], [ -122.424384862816794, 37.743838216035606 ], [ -122.424309369085989, 37.7430347552692 ], [ -122.424233277120777, 37.742236301639601 ], [ -122.424233272287097, 37.742236301993223 ], [ -122.424233472639315, 37.742235957277522 ], [ -122.424233478510288, 37.742235956906946 ], [ -122.424301394893192, 37.742119600447609 ], [ -122.42417135664968, 37.740713439585669 ], [ -122.42413709700044, 37.740335654620864 ], [ -122.424258152196032, 37.739934707389949 ], [ -122.42414746787631, 37.739869414698418 ], [ -122.424147154546787, 37.739869230001858 ], [ -122.424147154179678, 37.739869229183775 ], [ -122.424063599996956, 37.739784297520274 ], [ -122.424284283357963, 37.738949691036076 ], [ -122.424531564221411, 37.738368292265967 ], [ -122.424696469855888, 37.738101223886673 ], [ -122.424711669489241, 37.738076607801148 ], [ -122.424904804743889, 37.737763817504508 ], [ -122.425110714349969, 37.737550673136937 ], [ -122.425230653676863, 37.737426519232308 ], [ -122.425439441891498, 37.737210392933726 ], [ -122.425832974995387, 37.736873263301263 ], [ -122.426500890836181, 37.73630106743056 ], [ -122.426544994076067, 37.736269396547655 ], [ -122.42729729676671, 37.735729149898575 ], [ -122.427738169173168, 37.735412543347451 ], [ -122.42783624298761, 37.735347761815902 ], [ -122.428436951461066, 37.734950968784666 ], [ -122.42843713263963, 37.734951046304573 ], [ -122.428766264762999, 37.73481932892178 ], [ -122.429365174143101, 37.734579643964238 ], [ -122.429606994304805, 37.734482866043706 ], [ -122.429797927680781, 37.734406452684077 ], [ -122.429799382942633, 37.734405632509876 ], [ -122.430400796753801, 37.734118700718604 ], [ -122.430928172484656, 37.733867087971888 ], [ -122.430931197463138, 37.733865940717834 ], [ -122.43132522808267, 37.733716495194997 ], [ -122.432572047381726, 37.733243596430682 ], [ -122.432720773871381, 37.733187185661393 ], [ -122.434440716858973, 37.732534804028113 ], [ -122.434512093568429, 37.732323526771246 ], [ -122.434644432402948, 37.732322139093768 ], [ -122.434823956379304, 37.732249430441868 ], [ -122.434989951388332, 37.732296516038524 ], [ -122.434992781477959, 37.732295287547394 ], [ -122.435457687984979, 37.732093484109448 ], [ -122.436668162612392, 37.731543298105045 ], [ -122.436678949019353, 37.731538395224071 ], [ -122.436835967120587, 37.731467212874229 ], [ -122.437166749161392, 37.731365897534992 ], [ -122.438692929843569, 37.730737998359416 ], [ -122.439686065703896, 37.730325720705899 ], [ -122.43969146797258, 37.730323477880063 ], [ -122.440664990612632, 37.729919329476168 ], [ -122.442010214558891, 37.729910949382834 ], [ -122.442006614261629, 37.729375267903364 ], [ -122.442082956691792, 37.729308363921405 ], [ -122.442595296877187, 37.729101680603421 ], [ -122.442954953118544, 37.728915555981267 ], [ -122.443973112888827, 37.728379877183251 ], [ -122.444131311025359, 37.72831838217401 ], [ -122.444276984301908, 37.728261755504967 ], [ -122.44427751391413, 37.728322242080615 ], [ -122.444284269547836, 37.729093639959018 ], [ -122.444291303797655, 37.729896860703782 ], [ -122.444298409699798, 37.730708221303239 ], [ -122.444294941941365, 37.731069863889161 ], [ -122.444288854528963, 37.731568915105107 ], [ -122.444299518643774, 37.732277163251723 ], [ -122.44431434932487, 37.732346901474607 ], [ -122.444320397855094, 37.733087687518228 ], [ -122.444320121334613, 37.733811072362919 ], [ -122.445605378551107, 37.733800711254226 ], [ -122.445782219446897, 37.733850288395629 ], [ -122.445695180894745, 37.733970768223749 ], [ -122.445385609625191, 37.734245207403205 ], [ -122.445350300553969, 37.734322189420951 ], [ -122.445353637361492, 37.734548793463254 ], [ -122.444336617762318, 37.734557437927307 ], [ -122.442971182760076, 37.734564427784264 ], [ -122.44298838327488, 37.734915120161688 ], [ -122.443241645458286, 37.734935120886668 ], [ -122.443498916758756, 37.735041781619209 ], [ -122.443868794328736, 37.73522293273804 ], [ -122.444190291728404, 37.735407445883219 ], [ -122.444280987817251, 37.735484218369663 ], [ -122.444414926545633, 37.735547154436588 ], [ -122.444456723960371, 37.735604611251425 ], [ -122.444478073435704, 37.735720552668923 ], [ -122.444433832419023, 37.736070356056409 ], [ -122.444405709994072, 37.736218559056141 ], [ -122.444306066715512, 37.736409368208768 ], [ -122.444187688286519, 37.736528330103852 ], [ -122.444038854214782, 37.736575290313169 ], [ -122.443842427221611, 37.736579809812575 ], [ -122.443683487927487, 37.73653803376142 ], [ -122.443602235926093, 37.736502583404238 ], [ -122.442657322787326, 37.737118881702763 ], [ -122.442488947503193, 37.737289169592358 ], [ -122.442421017736137, 37.737438198043598 ], [ -122.442403843641571, 37.737639851367689 ], [ -122.44244617419956, 37.737799536516135 ], [ -122.442579349780331, 37.738171569110513 ], [ -122.442625226229453, 37.738313911390271 ], [ -122.442627783322195, 37.738564600951854 ], [ -122.44250398997913, 37.739238469269011 ], [ -122.442525191527608, 37.739448400155375 ], [ -122.442597107319372, 37.739547858254923 ], [ -122.44271760477325, 37.739682237717481 ], [ -122.442856748556963, 37.739767263698369 ], [ -122.443019593631774, 37.739814475654143 ], [ -122.44341918472557, 37.739902333376541 ], [ -122.443694223373313, 37.739971345925731 ], [ -122.443922038304507, 37.740088462716592 ], [ -122.444098337188322, 37.740234069945657 ], [ -122.444209640252396, 37.740380617798955 ], [ -122.444366170223589, 37.740575544006177 ], [ -122.444518249198694, 37.740692998244214 ], [ -122.444681667799003, 37.740793092051724 ], [ -122.444911120433531, 37.740872114678645 ], [ -122.445195592772691, 37.740920623913645 ], [ -122.445523457193502, 37.740972470791057 ], [ -122.445897881975142, 37.741116602917764 ], [ -122.445964326755799, 37.741198730714288 ], [ -122.445964300022951, 37.741198753406074 ], [ -122.44605943275991, 37.741274575873817 ], [ -122.44609965968975, 37.741357693405078 ], [ -122.446156199006268, 37.741535311478742 ], [ -122.44619443459527, 37.741872554265036 ], [ -122.446256735689062, 37.742072052701658 ], [ -122.446323687641325, 37.742184944882247 ], [ -122.446410971977912, 37.742281706494659 ], [ -122.446516770315029, 37.742358933848621 ], [ -122.446657325560608, 37.742442453734959 ], [ -122.446840940400392, 37.742519081676662 ], [ -122.447110638216571, 37.742580552169777 ], [ -122.447384659150103, 37.742608987228614 ], [ -122.44848892294759, 37.742704730693937 ], [ -122.448820428983325, 37.742748693538836 ], [ -122.44913731277687, 37.742828607669701 ], [ -122.449355958412127, 37.74292182098899 ], [ -122.449582834428256, 37.743065029012413 ], [ -122.449790244582587, 37.743257317336237 ], [ -122.449918612648133, 37.7432716748716 ], [ -122.450592179132485, 37.744090792307063 ], [ -122.450586742649079, 37.744213121547148 ], [ -122.451624634588612, 37.745534387540218 ], [ -122.45169226258335, 37.745606748366605 ], [ -122.45181666119403, 37.745671246259803 ], [ -122.451828632556612, 37.745671851179097 ], [ -122.452091117231191, 37.74568511552728 ], [ -122.45222754649042, 37.74569200904012 ], [ -122.452386953750349, 37.745691424670198 ], [ -122.453376023619995, 37.74568779337109 ], [ -122.453495886255311, 37.745691252478657 ], [ -122.453645157964232, 37.745695560010326 ], [ -122.453916002908102, 37.745699915076791 ], [ -122.453916429980183, 37.745699922279499 ], [ -122.454184426826714, 37.745845539203287 ], [ -122.454664096869323, 37.746106168082655 ], [ -122.454664097215115, 37.746106168076913 ], [ -122.455466732538028, 37.746327980692172 ], [ -122.455687935660293, 37.746380796419501 ], [ -122.456314708164584, 37.746530446031059 ], [ -122.457089836487938, 37.746682896092409 ], [ -122.457166741019165, 37.746698021157933 ], [ -122.457301186299645, 37.746714064689691 ], [ -122.457457161051892, 37.746732677593577 ], [ -122.457582024204598, 37.746744476612157 ], [ -122.457949639713704, 37.746779214661537 ], [ -122.458499844031735, 37.746781514247793 ], [ -122.458509634961302, 37.746778882011192 ], [ -122.458610345848541, 37.746751806518411 ], [ -122.45872851739027, 37.746755429911865 ], [ -122.459174375277186, 37.74728632007151 ], [ -122.459174106111192, 37.747286620942795 ], [ -122.458970102890007, 37.747514391535915 ], [ -122.458856680033747, 37.7476570668547 ], [ -122.458785941599359, 37.747811900102363 ], [ -122.458816156308444, 37.748040115735854 ], [ -122.458941590023073, 37.748201275736406 ], [ -122.459200706652084, 37.748504001538066 ], [ -122.459625716264128, 37.748941671345293 ], [ -122.459724182852014, 37.749021140146965 ], [ -122.459910557162914, 37.749171866124314 ], [ -122.460150106375522, 37.749394963907797 ], [ -122.460488100882344, 37.749710225074402 ], [ -122.460574698392477, 37.749816963786891 ], [ -122.460646032705213, 37.749905429557089 ], [ -122.460872188804359, 37.750377416930355 ], [ -122.461130726036544, 37.75091814728394 ], [ -122.461357402458418, 37.751255115112428 ], [ -122.461523490818323, 37.75150339365527 ], [ -122.461523490133942, 37.751503393941363 ], [ -122.461523602837886, 37.75150356127773 ], [ -122.461621806880288, 37.751517360697065 ], [ -122.461851812215116, 37.751624201717213 ], [ -122.462014174664134, 37.751745235464952 ], [ -122.462176783557467, 37.751866685725204 ], [ -122.462467214248704, 37.7521873638808 ], [ -122.462572755978741, 37.752277690485144 ], [ -122.462772959403608, 37.752449458308092 ], [ -122.463129733530764, 37.752716425489766 ], [ -122.463165176689103, 37.75274298458443 ], [ -122.463398089008777, 37.752981523058104 ], [ -122.463399006031565, 37.752981452291863 ], [ -122.463640406958334, 37.753310851043111 ], [ -122.463777683069083, 37.753601657228067 ], [ -122.463842129576008, 37.753808596342253 ], [ -122.463838893966539, 37.75414750585891 ], [ -122.463722821262465, 37.754601920791259 ], [ -122.46367889740506, 37.754738571878264 ], [ -122.463627289771182, 37.754788065181785 ], [ -122.463580718915097, 37.755014148901829 ], [ -122.463554499932727, 37.755298102249476 ], [ -122.463651620775778, 37.756677450683235 ], [ -122.463781528402038, 37.758538181378015 ], [ -122.463911891482155, 37.760405344350922 ], [ -122.46284191307069, 37.760452254741963 ], [ -122.461770200794135, 37.760499231230455 ], [ -122.461770397151241, 37.760502041661596 ], [ -122.460684658382874, 37.760546523892096 ], [ -122.46084509456081, 37.762627108799968 ], [ -122.460842964058216, 37.762627642539876 ], [ -122.459790374597731, 37.762925938047687 ], [ -122.457827081738984, 37.763482288038738 ], [ -122.45765013969168, 37.76353311613984 ], [ -122.456669912105653, 37.763814688946653 ], [ -122.455781065686594, 37.764070070210742 ], [ -122.455466091062405, 37.764160565952579 ], [ -122.454217265424234, 37.764310945798535 ], [ -122.454179864833876, 37.763912200042988 ], [ -122.454845151642289, 37.763732313486969 ], [ -122.454945541962573, 37.76366305305779 ], [ -122.454946081907835, 37.7631787014639 ], [ -122.454009611320302, 37.762667869264533 ], [ -122.453744673977482, 37.761878784498755 ], [ -122.453114639516684, 37.762361563728888 ], [ -122.45351591398105, 37.764395394431268 ], [ -122.452569575903098, 37.764509334437378 ], [ -122.452569519449398, 37.764509056008684 ], [ -122.452400386663143, 37.763669233221897 ], [ -122.45223333012629, 37.762842423991209 ], [ -122.452096203587132, 37.762166887302627 ], [ -122.451957007208804, 37.761478336720671 ], [ -122.45155310706329, 37.759472203369178 ], [ -122.45136693770776, 37.758575661774039 ], [ -122.451408535854284, 37.758561502025017 ], [ -122.452047941226652, 37.758343705002019 ], [ -122.45229781656198, 37.758277073170099 ], [ -122.45283476350059, 37.758097464572913 ], [ -122.452876092298638, 37.758073671104697 ], [ -122.453317408957801, 37.757819578594621 ], [ -122.453326709060633, 37.757812928758618 ], [ -122.453652871332849, 37.757570195093017 ], [ -122.453769459328285, 37.75746785416225 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":22,"ZIP_CODE":94122,"ID":94122},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.463399006031565, 37.752981452291863 ], [ -122.464461497345539, 37.752899248258529 ], [ -122.464461497323754, 37.752899247434819 ], [ -122.464462034791779, 37.752899228037201 ], [ -122.464462034762747, 37.752899226938901 ], [ -122.465533177566329, 37.752851071595934 ], [ -122.46660049988607, 37.752803078204508 ], [ -122.467642627702773, 37.752756208616617 ], [ -122.467804242122298, 37.752723264514827 ], [ -122.467915171465805, 37.752734664618352 ], [ -122.468031369650532, 37.75278739056494 ], [ -122.468181079371874, 37.752955569756089 ], [ -122.468335071492149, 37.753243730756957 ], [ -122.468440863346331, 37.753541228150766 ], [ -122.46853368295227, 37.753778395652951 ], [ -122.468629004224212, 37.753985873398783 ], [ -122.46875232271276, 37.754192126033097 ], [ -122.468837396357713, 37.754298754678686 ], [ -122.468949194118821, 37.754383817642378 ], [ -122.469043420308736, 37.754428685878558 ], [ -122.469187312711114, 37.754478429881637 ], [ -122.469229538348586, 37.754492641945887 ], [ -122.469359681800768, 37.754536443616175 ], [ -122.469719537880266, 37.754630546382018 ], [ -122.470018818714578, 37.754692394187302 ], [ -122.470075601814969, 37.754705621480454 ], [ -122.470428100059209, 37.754750285613063 ], [ -122.470916907310823, 37.75477064959378 ], [ -122.471016758783364, 37.754797170870887 ], [ -122.471049094699751, 37.75451479556704 ], [ -122.471019321832557, 37.754265617625428 ], [ -122.471016495996267, 37.754217122306045 ], [ -122.471036498728921, 37.754100284913058 ], [ -122.471079638048607, 37.753995444111091 ], [ -122.471132268263645, 37.753877430013475 ], [ -122.471171093123701, 37.753733616626192 ], [ -122.471190660490961, 37.753605743703318 ], [ -122.471187692098596, 37.753493865266243 ], [ -122.471174197654705, 37.753356133265093 ], [ -122.471122146869178, 37.753216025593119 ], [ -122.470907529168414, 37.752615836450325 ], [ -122.472007574280582, 37.752569817871482 ], [ -122.473133075589757, 37.752519603580488 ], [ -122.474205182950101, 37.752471761013865 ], [ -122.474740669236724, 37.752447861779451 ], [ -122.475276421588944, 37.752423947680597 ], [ -122.476291890529794, 37.752378614900692 ], [ -122.476291890478677, 37.752378612978674 ], [ -122.476292239846927, 37.752378597780194 ], [ -122.476292240229284, 37.752378599147249 ], [ -122.4774149778289, 37.752329102778496 ], [ -122.478486061226221, 37.752281873458429 ], [ -122.479557564859533, 37.752234616335052 ], [ -122.480628878786973, 37.752187357305665 ], [ -122.48170210782861, 37.752140004119113 ], [ -122.48276958366516, 37.752092894785363 ], [ -122.483844155588841, 37.75204546291927 ], [ -122.48491485069583, 37.751998192013865 ], [ -122.48598818277614, 37.751950794949664 ], [ -122.487053067380344, 37.751903269835523 ], [ -122.488143190546495, 37.751854042116229 ], [ -122.48919356840311, 37.751806869260896 ], [ -122.490270381873529, 37.751758499707634 ], [ -122.491344845233968, 37.751710225381885 ], [ -122.492417458516726, 37.751662024433998 ], [ -122.493488045146222, 37.751613904571322 ], [ -122.49456080780611, 37.751568259028382 ], [ -122.495098259533435, 37.751544767553312 ], [ -122.49509879355503, 37.751544749172808 ], [ -122.495630257074851, 37.751526822572394 ], [ -122.49581055415868, 37.751518288226762 ], [ -122.496702184257288, 37.751476079301845 ], [ -122.497770415009455, 37.751426327287128 ], [ -122.497770416046876, 37.751426327269549 ], [ -122.498442545251379, 37.751398004902029 ], [ -122.498842248697912, 37.751381160579498 ], [ -122.49937768349335, 37.751357494487337 ], [ -122.499914122812314, 37.751333781439868 ], [ -122.499914456955352, 37.751333766429582 ], [ -122.500987488435712, 37.75128639412403 ], [ -122.502060320882052, 37.751239765057655 ], [ -122.503133002600279, 37.751190357338089 ], [ -122.504203312772219, 37.751143789774702 ], [ -122.505276576525688, 37.751093151070108 ], [ -122.506347526734444, 37.751051944046772 ], [ -122.507416228284868, 37.751003284446853 ], [ -122.507286887279179, 37.749140090258685 ], [ -122.507286886587565, 37.749140090270473 ], [ -122.50728687853443, 37.749139971463322 ], [ -122.507286878880223, 37.749139971457424 ], [ -122.50729515180268, 37.749139604462776 ], [ -122.507539948063609, 37.749128748547342 ], [ -122.507941547211104, 37.749110937340276 ], [ -122.507940323213063, 37.749101694546454 ], [ -122.508363946491727, 37.74907680068609 ], [ -122.509705738305371, 37.748997941669188 ], [ -122.509710663420336, 37.749052110606286 ], [ -122.509713246503537, 37.749083657142556 ], [ -122.509729549623728, 37.749110848942742 ], [ -122.509729362100501, 37.749167851780079 ], [ -122.509735273166726, 37.749194534062582 ], [ -122.509750516130779, 37.749246466794162 ], [ -122.509778567561426, 37.749324277699941 ], [ -122.509789628452893, 37.749349498384071 ], [ -122.509798960033251, 37.749374748835095 ], [ -122.509811768849048, 37.749400627001869 ], [ -122.509822811194553, 37.749425161253306 ], [ -122.509835600759672, 37.749450352725269 ], [ -122.509848372456204, 37.749474857754677 ], [ -122.509862872798479, 37.749499333300058 ], [ -122.509875644166641, 37.74952383833223 ], [ -122.509890144527432, 37.749548313874023 ], [ -122.509938776915888, 37.749619592731861 ], [ -122.50997116142004, 37.749665739100415 ], [ -122.509989082682068, 37.749688783065459 ], [ -122.51000698537004, 37.749711140049378 ], [ -122.510074896863927, 37.74979170473398 ], [ -122.510112524214264, 37.749839821874914 ], [ -122.510150170185028, 37.749888625432611 ], [ -122.510222041423717, 37.749987664081871 ], [ -122.510254537700391, 37.750037928944337 ], [ -122.510319567532292, 37.750139831499247 ], [ -122.510350372089775, 37.750191498687315 ], [ -122.510379447689871, 37.750243195362941 ], [ -122.510406812903227, 37.750295607956453 ], [ -122.510434196383827, 37.75034870697808 ], [ -122.510450965102024, 37.750393059386766 ], [ -122.51046407081715, 37.750429920079867 ], [ -122.510475448231503, 37.75046681025696 ], [ -122.510486843547952, 37.750504387148105 ], [ -122.510515843893401, 37.750617205185918 ], [ -122.510523781572246, 37.750654840788101 ], [ -122.510529990248557, 37.75069250588782 ], [ -122.510536217506655, 37.75073085741591 ], [ -122.510540697183259, 37.750768552012921 ], [ -122.510545195439974, 37.750806933038461 ], [ -122.510549675125716, 37.750844627634628 ], [ -122.510552444030878, 37.750883038163828 ], [ -122.510555546179489, 37.75099767207351 ], [ -122.510554168969648, 37.751074611106283 ], [ -122.510551732248842, 37.751112423700818 ], [ -122.510547585771619, 37.751150952210686 ], [ -122.510543420361202, 37.751188794022582 ], [ -122.510539273529616, 37.751227322537567 ], [ -122.510534624806738, 37.751247317477244 ], [ -122.51052982817599, 37.751261821248107 ], [ -122.510526778782435, 37.751276981406193 ], [ -122.510523710819541, 37.75129145540982 ], [ -122.510522371541924, 37.751305900195682 ], [ -122.510519303915359, 37.751320373918666 ], [ -122.510517983550216, 37.751335504852847 ], [ -122.510514915590633, 37.75134997913068 ], [ -122.510513595216636, 37.751365109790179 ], [ -122.510513985300733, 37.75137952479723 ], [ -122.510512664933444, 37.751394655731197 ], [ -122.510513055017512, 37.751409070738212 ], [ -122.510511734303734, 37.751424201677992 ], [ -122.510512533054808, 37.751453718395311 ], [ -122.510514671081651, 37.751468790052584 ], [ -122.510515061166473, 37.751483205059415 ], [ -122.51051719886371, 37.751498277271601 ], [ -122.510519317971443, 37.751512662505696 ], [ -122.510521455317175, 37.751527734449049 ], [ -122.510523574787243, 37.751542120226226 ], [ -122.510527441503768, 37.751557162390775 ], [ -122.51052956027678, 37.751571547905016 ], [ -122.510541105080137, 37.751614615928503 ], [ -122.510546682275447, 37.751628942714049 ], [ -122.51055053042532, 37.751643298448748 ], [ -122.510567261661492, 37.751686277985172 ], [ -122.51057282063698, 37.751699918334559 ], [ -122.510580126864298, 37.751714215070294 ], [ -122.510587414533077, 37.751727825925812 ], [ -122.510592973154687, 37.751741465730937 ], [ -122.510600260828497, 37.751755076585596 ], [ -122.510609277525731, 37.751768657391231 ], [ -122.510616565205183, 37.751782268244845 ], [ -122.510623834295913, 37.751795192119978 ], [ -122.510632850671371, 37.75180877347875 ], [ -122.510650847293675, 37.751834562495105 ], [ -122.510666910213118, 37.751852830846786 ], [ -122.510679329278858, 37.751864293359795 ], [ -122.510690018971971, 37.751875785652558 ], [ -122.510697288092032, 37.751888709797527 ], [ -122.510704575791962, 37.751902320370817 ], [ -122.51070842433974, 37.751916676368367 ], [ -122.510710543503862, 37.751931061872575 ], [ -122.51070920459685, 37.751945506653065 ], [ -122.510724225875535, 37.751989202088765 ], [ -122.510730100360817, 37.752014511176412 ], [ -122.510737685321715, 37.752039104608144 ], [ -122.510743559477149, 37.752064413975368 ], [ -122.510825714104442, 37.752223710988055 ], [ -122.510880260867467, 37.752321671638327 ], [ -122.510889277338805, 37.75233525242713 ], [ -122.51089827594069, 37.752348147323836 ], [ -122.510919693380217, 37.752372504437815 ], [ -122.510932112233405, 37.752383967203627 ], [ -122.510956913829162, 37.752405519856168 ], [ -122.510971006350204, 37.752414893821253 ], [ -122.510979967462688, 37.75242641558544 ], [ -122.510987199526895, 37.75243796685389 ], [ -122.510992721122207, 37.752450234055644 ], [ -122.510999971778375, 37.752462472026544 ], [ -122.511005493370178, 37.752474738953069 ], [ -122.511011033205719, 37.752487692588488 ], [ -122.511014844689754, 37.752500675991762 ], [ -122.511020366286843, 37.752512942917527 ], [ -122.511024177420595, 37.752525926051767 ], [ -122.511026259163927, 37.752538938971881 ], [ -122.511028360165199, 37.752552637759649 ], [ -122.511032524332322, 37.752578663038605 ], [ -122.511033248973078, 37.752605433757282 ], [ -122.511030496930232, 37.752631577332984 ], [ -122.511029139131608, 37.75264533514347 ], [ -122.511030233600934, 37.752813569447106 ], [ -122.511027591948121, 37.752907698414738 ], [ -122.511023202651316, 37.753001170732233 ], [ -122.511017102857721, 37.753095358982122 ], [ -122.511007544911607, 37.753189606240724 ], [ -122.511045097099611, 37.75342657943726 ], [ -122.511071439929921, 37.753568973002693 ], [ -122.511099511595958, 37.7537113370581 ], [ -122.511110666857206, 37.753739990285347 ], [ -122.51113816393935, 37.753797207403004 ], [ -122.511167297244739, 37.753850963138049 ], [ -122.511191001766875, 37.753895883818785 ], [ -122.511212977231722, 37.753940834002691 ], [ -122.511234971305953, 37.753986470610634 ], [ -122.511275501018872, 37.754077803112054 ], [ -122.511285596295252, 37.754131196705785 ], [ -122.511275500500716, 37.754141670188282 ], [ -122.511267152377243, 37.754152800589303 ], [ -122.511258841417288, 37.754165303846627 ], [ -122.51125398864481, 37.754177748360249 ], [ -122.511249154438758, 37.754190878752958 ], [ -122.511246439571536, 37.754218394908946 ], [ -122.511248521739574, 37.754231407540907 ], [ -122.511252351238468, 37.754245077098325 ], [ -122.511256162847417, 37.754258060215321 ], [ -122.511263413723356, 37.754270298166247 ], [ -122.511270646011127, 37.75428184941368 ], [ -122.511281336136037, 37.754293341373469 ], [ -122.511290279285674, 37.754304176676023 ], [ -122.511297511580892, 37.754315727921757 ], [ -122.511301304272081, 37.754328024614594 ], [ -122.51130511555543, 37.7543410080103 ], [ -122.511305450050784, 37.754353363447571 ], [ -122.511302344945619, 37.754366464607017 ], [ -122.511299221255896, 37.754378879337885 ], [ -122.511292620796496, 37.754390666933737 ], [ -122.511284272301779, 37.754401797341401 ], [ -122.511274158225476, 37.754411584114365 ], [ -122.511262296127953, 37.754420714247495 ], [ -122.51124864918124, 37.754427814602913 ], [ -122.511234965066222, 37.754433542099882 ], [ -122.511205457998457, 37.754493792524343 ], [ -122.511174612954918, 37.754504620093513 ], [ -122.511188723552863, 37.754578547809551 ], [ -122.511196847828685, 37.754623047899784 ], [ -122.511172119152874, 37.754668108364662 ], [ -122.511186378431859, 37.754747527231643 ], [ -122.511164047430796, 37.754817269614293 ], [ -122.511168079798153, 37.754966224575647 ], [ -122.511187639253137, 37.754985806682214 ], [ -122.511182209413036, 37.755040838983689 ], [ -122.511152553395789, 37.755095597687138 ], [ -122.511140988488648, 37.755115710660888 ], [ -122.511131170290469, 37.755200347899923 ], [ -122.511137026593502, 37.755224970799595 ], [ -122.511151546101601, 37.755313999934657 ], [ -122.511172052652412, 37.755368589625292 ], [ -122.511185234625046, 37.75540819590843 ], [ -122.511212230658316, 37.755446879976844 ], [ -122.511220633780624, 37.755501676208965 ], [ -122.511245788883045, 37.755536270664308 ], [ -122.511246718045257, 37.755570592079458 ], [ -122.511273603014288, 37.755605157557042 ], [ -122.511268303269489, 37.755664994580059 ], [ -122.511302921291062, 37.755793511928204 ], [ -122.51129135632344, 37.755813625188885 ], [ -122.511297751657864, 37.755858154497574 ], [ -122.51132993529248, 37.755896749458273 ], [ -122.511344307286322, 37.755916419796833 ], [ -122.51135098142602, 37.755971245525423 ], [ -122.511358975860517, 37.756010940596234 ], [ -122.511372157693486, 37.756050546585421 ], [ -122.51138067251722, 37.756109461644371 ], [ -122.51138760653366, 37.756173897095294 ], [ -122.511415290932803, 37.756237978675102 ], [ -122.51144193355438, 37.756327487882515 ], [ -122.511450857327816, 37.756401503804241 ], [ -122.511444739922965, 37.756431138262307 ], [ -122.511465507194529, 37.756495337885667 ], [ -122.511475248786056, 37.756599556916427 ], [ -122.511489639220827, 37.756683781260584 ], [ -122.511510945933878, 37.756767887008252 ], [ -122.511505516202988, 37.756822919307787 ], [ -122.511507114604001, 37.756881952399702 ], [ -122.511540803935873, 37.756976147977831 ], [ -122.51151021846853, 37.756996585892097 ], [ -122.511537215240679, 37.757035269600948 ], [ -122.511550805913657, 37.75708997726138 ], [ -122.511552014025696, 37.757134594811419 ], [ -122.51153474073044, 37.7571994439623 ], [ -122.511545151615906, 37.757328374109882 ], [ -122.511565380212119, 37.7573726672926 ], [ -122.511548775980131, 37.757462227577349 ], [ -122.511570621660383, 37.757566239995974 ], [ -122.511588991755985, 37.757605757952987 ], [ -122.511636236094873, 37.757689420961349 ], [ -122.511627217721312, 37.75780357460139 ], [ -122.511645866365058, 37.757853388698848 ], [ -122.511694113049955, 37.758229588585031 ], [ -122.511742993592506, 37.758437524775317 ], [ -122.511846760303001, 37.759011245676845 ], [ -122.511857097632088, 37.75913743032006 ], [ -122.511865631081335, 37.759260898772276 ], [ -122.511870706825988, 37.759384426245269 ], [ -122.511867805759621, 37.759468945686322 ], [ -122.511886956563586, 37.759537293011533 ], [ -122.511894319592614, 37.759553649204342 ], [ -122.511899972344324, 37.759570721336786 ], [ -122.511907335379505, 37.759587077528693 ], [ -122.511912969200509, 37.759603463238605 ], [ -122.511924273692642, 37.75963760779338 ], [ -122.511928197239044, 37.759654709442891 ], [ -122.511933831069797, 37.759671095151603 ], [ -122.511941677473203, 37.759705298186844 ], [ -122.511943890051924, 37.759723115788141 ], [ -122.511947812915679, 37.759740217448552 ], [ -122.511954395243222, 37.75979161123707 ], [ -122.511954878597919, 37.75980945808243 ], [ -122.51195707224619, 37.759826589261372 ], [ -122.511958020381513, 37.759861597073268 ], [ -122.511956756283539, 37.759878787553092 ], [ -122.511957221055894, 37.759895948245067 ], [ -122.511955975187334, 37.759913824609214 ], [ -122.511953445935674, 37.759948205037048 ], [ -122.511904504571447, 37.760440750181104 ], [ -122.511896527982401, 37.760465608886555 ], [ -122.511890205925951, 37.76048769264321 ], [ -122.511883865275365, 37.760509089971798 ], [ -122.511879272104622, 37.760531144215527 ], [ -122.511874661032579, 37.760552512019558 ], [ -122.511865475369248, 37.760596620493857 ], [ -122.511856884580055, 37.760662694650442 ], [ -122.511852347147268, 37.760750675453501 ], [ -122.51185415039285, 37.760817258929578 ], [ -122.51185647452489, 37.76083919509459 ], [ -122.511857069411604, 37.760861160777161 ], [ -122.511859412136133, 37.760883783369522 ], [ -122.511863465519539, 37.760905690016429 ], [ -122.511865789657108, 37.760927626180887 ], [ -122.511869842698943, 37.760949532833308 ], [ -122.511875625684155, 37.760971409955765 ], [ -122.511879679077154, 37.760993316601748 ], [ -122.511885442786451, 37.761014507307813 ], [ -122.511897008433721, 37.761058261556201 ], [ -122.511926981734348, 37.761142906550255 ], [ -122.511936204314608, 37.76116403793533 ], [ -122.511954649505725, 37.76120630125228 ], [ -122.511963853517884, 37.761226746482016 ], [ -122.511996653008623, 37.761287993613372 ], [ -122.51202705467847, 37.761324558853467 ], [ -122.512064168550651, 37.761353455306384 ], [ -122.512085012456453, 37.761420400744697 ], [ -122.512126086793671, 37.761531638678171 ], [ -122.51214611271017, 37.76156838129576 ], [ -122.512202471774316, 37.761605190090663 ], [ -122.51220306676943, 37.761627155768551 ], [ -122.512286833872011, 37.761909350986301 ], [ -122.512330121233489, 37.762102273976545 ], [ -122.512359816513452, 37.762176622160425 ], [ -122.512400687481886, 37.762280309551663 ], [ -122.512412755489066, 37.762406464549109 ], [ -122.512472852658917, 37.762517377837653 ], [ -122.51242023100265, 37.762682408319826 ], [ -122.512395388918449, 37.762787217676667 ], [ -122.5123251575382, 37.763004741639399 ], [ -122.512318128822102, 37.763064608432281 ], [ -122.512275063725824, 37.763199258620396 ], [ -122.512347657434475, 37.763452114765002 ], [ -122.512370305614013, 37.763585643570899 ], [ -122.51245827791935, 37.763703634850181 ], [ -122.51249862900157, 37.763851969475809 ], [ -122.512536692779477, 37.763915873550189 ], [ -122.512547533618658, 37.763932857061576 ], [ -122.512582157093107, 37.763997506608895 ], [ -122.512647704491329, 37.764117941165772 ], [ -122.512695196290764, 37.764146660498668 ], [ -122.512734264345909, 37.764183764321103 ], [ -122.512737091420831, 37.764288101230889 ], [ -122.512775416013923, 37.764361614927097 ], [ -122.512777034178313, 37.764421334077248 ], [ -122.512751987430036, 37.764518593055108 ], [ -122.512781479493952, 37.764585390130065 ], [ -122.512774860188117, 37.764660358327284 ], [ -122.51278551563432, 37.764734344784699 ], [ -122.512761491760273, 37.764869356967338 ], [ -122.512743882579386, 37.764921850254765 ], [ -122.512717422071987, 37.76496694049434 ], [ -122.512684621435739, 37.765161162553468 ], [ -122.512669634563863, 37.765310442023306 ], [ -122.512654461644431, 37.765452857218328 ], [ -122.512646410035117, 37.765474970525723 ], [ -122.51263958593637, 37.765542388282462 ], [ -122.512631627607334, 37.765631800678314 ], [ -122.512652064044445, 37.76568364430058 ], [ -122.512693345840233, 37.765802432929902 ], [ -122.512704615499302, 37.765899071734495 ], [ -122.512725051707562, 37.765950915073049 ], [ -122.512700618145246, 37.766070825824592 ], [ -122.512768157254058, 37.76613697348678 ], [ -122.512789393732405, 37.766218333432967 ], [ -122.512782253924286, 37.766337948881301 ], [ -122.512802690660749, 37.766389792471095 ], [ -122.512831774306832, 37.766441488397447 ], [ -122.512880476379308, 37.766514825114292 ], [ -122.512887749430135, 37.76678321796404 ], [ -122.512892604360289, 37.766962375332177 ], [ -122.512931655400493, 37.766998792918841 ], [ -122.512961259283941, 37.767005841271946 ], [ -122.513017009002525, 37.767019997837075 ], [ -122.513065321321278, 37.767078919504563 ], [ -122.513078915989027, 37.767197493825428 ], [ -122.513107814109816, 37.767242325410123 ], [ -122.513081743662724, 37.767301830672046 ], [ -122.51310340834894, 37.767398978362927 ], [ -122.513123716454487, 37.7675098841043 ], [ -122.513078250436607, 37.767555985727952 ], [ -122.513071017262462, 37.76760830182581 ], [ -122.513091249913373, 37.767652594661705 ], [ -122.513076058720628, 37.767794323426109 ], [ -122.513058653709876, 37.76785436770038 ], [ -122.513040634413983, 37.767891759352018 ], [ -122.513052220422765, 37.767936200135772 ], [ -122.513081118807335, 37.767981031446666 ], [ -122.513072546502798, 37.768047792039297 ], [ -122.513084307659341, 37.768800949561466 ], [ -122.513105545245466, 37.768882309412746 ], [ -122.513112428659511, 37.76913628718308 ], [ -122.513087380753205, 37.769233545877434 ], [ -122.51312531757408, 37.76929264499158 ], [ -122.513091827049578, 37.769397602054994 ], [ -122.513085691671151, 37.769554284209093 ], [ -122.513145317112162, 37.770030553014749 ], [ -122.513104072344461, 37.770232473669928 ], [ -122.513083675037265, 37.770501338904026 ], [ -122.513146087813496, 37.77076123543462 ], [ -122.513127217898258, 37.771214121925311 ], [ -122.51313192303401, 37.771260053409627 ], [ -122.511055400217217, 37.771347479926334 ], [ -122.510495195112867, 37.771371059784514 ], [ -122.509894781266311, 37.771396329054475 ], [ -122.509894749698645, 37.771396032095495 ], [ -122.508867990729883, 37.771443447055226 ], [ -122.508823330922013, 37.771445496187766 ], [ -122.508780633594597, 37.771447480819759 ], [ -122.507750665782908, 37.771495034103232 ], [ -122.507750664399296, 37.771495034126787 ], [ -122.506991972993774, 37.771528822999358 ], [ -122.506685577396198, 37.771542340610623 ], [ -122.505610663486351, 37.771591537709703 ], [ -122.504544396347384, 37.771640577944709 ], [ -122.503472690942445, 37.771689380369601 ], [ -122.503472688521128, 37.771689380410749 ], [ -122.502399732131124, 37.771738148994636 ], [ -122.502399595949868, 37.771738155153713 ], [ -122.501328271899965, 37.77178724800941 ], [ -122.50025681025997, 37.771836337560785 ], [ -122.499183617695707, 37.771885446705888 ], [ -122.498113882732468, 37.771934487449556 ], [ -122.497047586931203, 37.771982773731914 ], [ -122.495972660610278, 37.77203188267292 ], [ -122.495971990075716, 37.772031913255347 ], [ -122.495972015995989, 37.772032015003532 ], [ -122.494903299427449, 37.772080795311069 ], [ -122.494902921073546, 37.772080894286702 ], [ -122.493833180817205, 37.772129896182108 ], [ -122.493832498174271, 37.772129926957135 ], [ -122.493832479293559, 37.77212966191987 ], [ -122.493316307377469, 37.772153213706439 ], [ -122.492761690869486, 37.772178231184974 ], [ -122.491688488076463, 37.772227272380952 ], [ -122.490617013718605, 37.772276274046327 ], [ -122.489539486385709, 37.772325343661755 ], [ -122.489539480863627, 37.772325473411478 ], [ -122.488471323394165, 37.772374169626119 ], [ -122.488470602075608, 37.772374307055074 ], [ -122.487399123482518, 37.77242327974907 ], [ -122.487398306387334, 37.772423316873983 ], [ -122.487398288926627, 37.772423078182946 ], [ -122.486678527930636, 37.772455879683093 ], [ -122.486334543235188, 37.772471439976606 ], [ -122.485261332297384, 37.772520422109807 ], [ -122.485152053625171, 37.772525429693054 ], [ -122.484194201052048, 37.772569061919981 ], [ -122.484194219251819, 37.772569315707138 ], [ -122.483119139145145, 37.772618264154566 ], [ -122.483119121668807, 37.772618024364625 ], [ -122.482048961146063, 37.772667157434498 ], [ -122.481947659007389, 37.77267180789157 ], [ -122.480978851643016, 37.772716079930653 ], [ -122.479904580478745, 37.772765580938412 ], [ -122.478848714480989, 37.772814028910268 ], [ -122.47883762078969, 37.772814536530767 ], [ -122.477766129509902, 37.772863421949047 ], [ -122.477069824745385, 37.772895630732648 ], [ -122.476694205661246, 37.772912858094969 ], [ -122.475613625589148, 37.772962410314676 ], [ -122.475613644972711, 37.772962670675476 ], [ -122.475612802305008, 37.772962709520556 ], [ -122.47455168367884, 37.773011391539193 ], [ -122.474550931211951, 37.773011425844139 ], [ -122.474550910293516, 37.773011133644289 ], [ -122.473737577092777, 37.773048416620476 ], [ -122.473427836194134, 37.773062613687692 ], [ -122.472297341321692, 37.773114423074823 ], [ -122.472219951938214, 37.773117969260745 ], [ -122.471762122569857, 37.773138947752848 ], [ -122.47124006836178, 37.773161981865066 ], [ -122.471240089434815, 37.773162280380667 ], [ -122.470162712316579, 37.773209791534974 ], [ -122.470162692059887, 37.773209510586071 ], [ -122.469517084069324, 37.773237987003441 ], [ -122.469092496140973, 37.773256712542192 ], [ -122.468348575135167, 37.773289518371953 ], [ -122.468023916207073, 37.773303833556405 ], [ -122.466952500298319, 37.773351323464517 ], [ -122.466951728424362, 37.773351356945881 ], [ -122.466373346760548, 37.773376599548058 ], [ -122.465883163277454, 37.773398204721545 ], [ -122.465331676538511, 37.773422509669793 ], [ -122.464811670328331, 37.773488744378348 ], [ -122.463755675044126, 37.773623241600568 ], [ -122.463749210177951, 37.773624065149079 ], [ -122.462683796526321, 37.773759751788596 ], [ -122.462535340858068, 37.773778657528119 ], [ -122.461620188227315, 37.77389548164836 ], [ -122.461619775372085, 37.773895534117642 ], [ -122.461619755154771, 37.7738952534419 ], [ -122.460552661960989, 37.774031133779268 ], [ -122.460552700773292, 37.774031358657659 ], [ -122.459486938645284, 37.774167197254911 ], [ -122.459486145343419, 37.77416729779403 ], [ -122.459486118442314, 37.77416693399686 ], [ -122.458795325509186, 37.774254885425997 ], [ -122.458371099123696, 37.774308895694055 ], [ -122.457134751103212, 37.774454490912483 ], [ -122.456283917173579, 37.774554834704738 ], [ -122.456283671603558, 37.774554866249353 ], [ -122.456283639851293, 37.774554711848936 ], [ -122.455898178089939, 37.774604132119862 ], [ -122.45525254468275, 37.774686906456331 ], [ -122.455033749574639, 37.77471323536281 ], [ -122.454683295611602, 37.774755406979118 ], [ -122.45468264773983, 37.77475548474694 ], [ -122.454642052912618, 37.774646438033749 ], [ -122.454474386066082, 37.77382381381878 ], [ -122.454383433186777, 37.773377561015685 ], [ -122.454285116857562, 37.772895177759331 ], [ -122.454083217765842, 37.771930404296491 ], [ -122.454018233133866, 37.771616238745679 ], [ -122.453979522461594, 37.771428395389663 ], [ -122.453902454621286, 37.771053837806122 ], [ -122.453902388799008, 37.771053479872258 ], [ -122.453726227138517, 37.770098080109292 ], [ -122.45361853828534, 37.769567547950977 ], [ -122.453536875229432, 37.769165225996225 ], [ -122.453536875207789, 37.7691652251725 ], [ -122.453445551985865, 37.76871045824668 ], [ -122.453352918070834, 37.768246336273791 ], [ -122.453352855873561, 37.76824602387866 ], [ -122.453165568246916, 37.767306553969036 ], [ -122.453075053112784, 37.766861619151193 ], [ -122.452996675368553, 37.766476342546461 ], [ -122.452947274458694, 37.766374150789915 ], [ -122.454592351139084, 37.766165584782662 ], [ -122.454592931223331, 37.766165511159706 ], [ -122.455121527013688, 37.766098468178491 ], [ -122.456616092088495, 37.765909015262118 ], [ -122.456823880275138, 37.765884275950789 ], [ -122.456913422826119, 37.76587361486397 ], [ -122.457189364808954, 37.765880549298529 ], [ -122.457438759694597, 37.76592231265932 ], [ -122.457489671310725, 37.765930838098136 ], [ -122.45751185755033, 37.765937046103922 ], [ -122.457789624362519, 37.766014767234282 ], [ -122.457788627971766, 37.765820072733575 ], [ -122.457756133601251, 37.765354151194842 ], [ -122.457718187977903, 37.764810068512688 ], [ -122.457700034267219, 37.764549766072378 ], [ -122.457702640928829, 37.764546749210723 ], [ -122.45765013969168, 37.76353311613984 ], [ -122.457827081738984, 37.763482288038738 ], [ -122.459790374597731, 37.762925938047687 ], [ -122.460842964058216, 37.762627642539876 ], [ -122.46084509456081, 37.762627108799968 ], [ -122.460684658382874, 37.760546523892096 ], [ -122.461770397151241, 37.760502041661596 ], [ -122.461770200794135, 37.760499231230455 ], [ -122.46284191307069, 37.760452254741963 ], [ -122.463911891482155, 37.760405344350922 ], [ -122.463781528402038, 37.758538181378015 ], [ -122.463651620775778, 37.756677450683235 ], [ -122.463554499932727, 37.755298102249476 ], [ -122.463580718915097, 37.755014148901829 ], [ -122.463627289771182, 37.754788065181785 ], [ -122.46367889740506, 37.754738571878264 ], [ -122.463722821262465, 37.754601920791259 ], [ -122.463838893966539, 37.75414750585891 ], [ -122.463842129576008, 37.753808596342253 ], [ -122.463777683069083, 37.753601657228067 ], [ -122.463640406958334, 37.753310851043111 ], [ -122.463399006031565, 37.752981452291863 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":23,"ZIP_CODE":94127,"ID":94127},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.458688935885434, 37.730751520241796 ], [ -122.459193144317396, 37.730602954490251 ], [ -122.459352156941819, 37.730515761910091 ], [ -122.459563710785162, 37.730368588301999 ], [ -122.459783802497654, 37.730109540441724 ], [ -122.459878403068345, 37.729884503080157 ], [ -122.459930163903692, 37.729706628889033 ], [ -122.459983752683073, 37.729522472170189 ], [ -122.460023966205156, 37.729195728883113 ], [ -122.460002483633559, 37.728739437629635 ], [ -122.460412720770037, 37.728739179843977 ], [ -122.460815517748841, 37.728680936862041 ], [ -122.460816315573013, 37.728681144164341 ], [ -122.460816314413918, 37.72868110023223 ], [ -122.460815856121073, 37.72868098095028 ], [ -122.46142222273329, 37.728330263725837 ], [ -122.461824751209633, 37.728118912555594 ], [ -122.462068476892256, 37.72804961327914 ], [ -122.462089038987699, 37.728047063364642 ], [ -122.462378284725844, 37.728011300874932 ], [ -122.462703368909061, 37.728024299159358 ], [ -122.462888197868679, 37.72805558978888 ], [ -122.46288814852555, 37.72805550243347 ], [ -122.462888304160828, 37.72805552868347 ], [ -122.462735876702908, 37.727784058577058 ], [ -122.462714226912738, 37.727738412010282 ], [ -122.462615761322709, 37.727529244060726 ], [ -122.462547067236983, 37.727225353979733 ], [ -122.462546035395761, 37.727106268284892 ], [ -122.462545638153259, 37.726997475605309 ], [ -122.46262180837526, 37.726335258944708 ], [ -122.462686726995429, 37.725774916753664 ], [ -122.462815474472038, 37.725482412532848 ], [ -122.462561310804759, 37.725391067720956 ], [ -122.46221285915388, 37.725265563681397 ], [ -122.462212628293415, 37.725265491161082 ], [ -122.462280269039496, 37.725147301470763 ], [ -122.462279803400207, 37.725042766873585 ], [ -122.462279017236384, 37.724866230039204 ], [ -122.462276854232826, 37.724380477322995 ], [ -122.462276505002905, 37.72427060589213 ], [ -122.462276504226139, 37.724270445482276 ], [ -122.46227362197132, 37.723637318172813 ], [ -122.462271183905713, 37.723021052793868 ], [ -122.462431367748181, 37.72300886812026 ], [ -122.462654991355222, 37.722947907918154 ], [ -122.46284032675716, 37.72280173266644 ], [ -122.463189003103793, 37.722604614839412 ], [ -122.463751413929884, 37.722395206040865 ], [ -122.463981569397532, 37.722327034291936 ], [ -122.464293670852172, 37.722113739171022 ], [ -122.464434759676408, 37.721907819106278 ], [ -122.464484214240997, 37.721680008850619 ], [ -122.465390989272279, 37.721673877359507 ], [ -122.46556367354151, 37.721672709140641 ], [ -122.4659783260431, 37.721669902411627 ], [ -122.466277766029194, 37.721667874912988 ], [ -122.46658847710232, 37.721665769467251 ], [ -122.467028877336375, 37.721662784936917 ], [ -122.467185158975667, 37.721661725062667 ], [ -122.467615322899292, 37.721658807641923 ], [ -122.467922730856742, 37.721656721708847 ], [ -122.468076091423683, 37.72165575669883 ], [ -122.468660023251203, 37.721651832680671 ], [ -122.468660429184538, 37.721651830291869 ], [ -122.468975070634144, 37.721649661930378 ], [ -122.469739202269693, 37.721644441148221 ], [ -122.469739672850537, 37.721644437949429 ], [ -122.469877506730057, 37.721643501943454 ], [ -122.470778213987501, 37.721637364239811 ], [ -122.47077894458495, 37.721637359433757 ], [ -122.47167373604637, 37.72163130643554 ], [ -122.471759517799796, 37.721671075214203 ], [ -122.471759949192219, 37.721671054807977 ], [ -122.471760271986454, 37.721671203510112 ], [ -122.471983398728909, 37.721660603850793 ], [ -122.472161906508475, 37.721641204494453 ], [ -122.472321961375684, 37.721623810905996 ], [ -122.472322354823248, 37.721623768058436 ], [ -122.472214746614711, 37.723731792113433 ], [ -122.472056885104323, 37.726824049746483 ], [ -122.471915497296948, 37.728810174564472 ], [ -122.47190716730239, 37.728927188202036 ], [ -122.471594286340178, 37.728902143540118 ], [ -122.47154865397853, 37.729783977184617 ], [ -122.471866468726006, 37.729784522464136 ], [ -122.471849871701991, 37.730103151702181 ], [ -122.471838445445158, 37.730322499137451 ], [ -122.471797435951885, 37.731032354724164 ], [ -122.471741907147091, 37.731926920887339 ], [ -122.471660927786132, 37.733231459533314 ], [ -122.47162189337304, 37.733860262567148 ], [ -122.471569341481938, 37.734706810815084 ], [ -122.471400819161929, 37.735001415396148 ], [ -122.471068098407827, 37.73560670794447 ], [ -122.470574087980822, 37.736589028767121 ], [ -122.470679955794623, 37.736646992229609 ], [ -122.470805946330771, 37.736773656566506 ], [ -122.470869802376484, 37.736951620802394 ], [ -122.470924096654457, 37.737574149498428 ], [ -122.470962730039105, 37.737648904688974 ], [ -122.471094271054184, 37.739515149668783 ], [ -122.471225939871744, 37.741383106823285 ], [ -122.470104939284042, 37.741425112172415 ], [ -122.46903011455143, 37.741472060437133 ], [ -122.468671688881855, 37.741487738762387 ], [ -122.468561098363182, 37.741503345390441 ], [ -122.467747743753378, 37.743412622582262 ], [ -122.4668594971902, 37.743490862582995 ], [ -122.466043187720601, 37.743555382675872 ], [ -122.465806989998114, 37.743574050343277 ], [ -122.464736798394597, 37.743658625608425 ], [ -122.463685995946705, 37.743749409879626 ], [ -122.461381097416904, 37.745569497508143 ], [ -122.459174375277186, 37.74728632007151 ], [ -122.45872851739027, 37.746755429911865 ], [ -122.458610345848541, 37.746751806518411 ], [ -122.458509634961302, 37.746778882011192 ], [ -122.458499844031735, 37.746781514247793 ], [ -122.457949639713704, 37.746779214661537 ], [ -122.457582024204598, 37.746744476612157 ], [ -122.457457161051892, 37.746732677593577 ], [ -122.457301186299645, 37.746714064689691 ], [ -122.457166741019165, 37.746698021157933 ], [ -122.457089836487938, 37.746682896092409 ], [ -122.456314708164584, 37.746530446031059 ], [ -122.455687935660293, 37.746380796419501 ], [ -122.455466732538028, 37.746327980692172 ], [ -122.454664097215115, 37.746106168076913 ], [ -122.454664096869323, 37.746106168082655 ], [ -122.454184426826714, 37.745845539203287 ], [ -122.453916429980183, 37.745699922279499 ], [ -122.453916002908102, 37.745699915076791 ], [ -122.453645157964232, 37.745695560010326 ], [ -122.453495886255311, 37.745691252478657 ], [ -122.453376023619995, 37.74568779337109 ], [ -122.452386953750349, 37.745691424670198 ], [ -122.45222754649042, 37.74569200904012 ], [ -122.452091117231191, 37.74568511552728 ], [ -122.451828632556612, 37.745671851179097 ], [ -122.45181666119403, 37.745671246259803 ], [ -122.45169226258335, 37.745606748366605 ], [ -122.451624634588612, 37.745534387540218 ], [ -122.451624359716789, 37.745534037461439 ], [ -122.450586742649079, 37.744213121547148 ], [ -122.450592179132485, 37.744090792307063 ], [ -122.449918612648133, 37.7432716748716 ], [ -122.449790244582587, 37.743257317336237 ], [ -122.449582834428256, 37.743065029012413 ], [ -122.449355958412127, 37.74292182098899 ], [ -122.44913731277687, 37.742828607669701 ], [ -122.448820428983325, 37.742748693538836 ], [ -122.44848892294759, 37.742704730693937 ], [ -122.447384659150103, 37.742608987228614 ], [ -122.447110638216571, 37.742580552169777 ], [ -122.446840940400392, 37.742519081676662 ], [ -122.446657325560608, 37.742442453734959 ], [ -122.446516770315029, 37.742358933848621 ], [ -122.446410971977912, 37.742281706494659 ], [ -122.446323687641325, 37.742184944882247 ], [ -122.446256735689062, 37.742072052701658 ], [ -122.44619443459527, 37.741872554265036 ], [ -122.446156199006268, 37.741535311478742 ], [ -122.44609965968975, 37.741357693405078 ], [ -122.44605943275991, 37.741274575873817 ], [ -122.445964300022951, 37.741198753406074 ], [ -122.445964326755799, 37.741198730714288 ], [ -122.445897881975142, 37.741116602917764 ], [ -122.445523457193502, 37.740972470791057 ], [ -122.445195592772691, 37.740920623913645 ], [ -122.444911120433531, 37.740872114678645 ], [ -122.444681667799003, 37.740793092051724 ], [ -122.444518249198694, 37.740692998244214 ], [ -122.444366170223589, 37.740575544006177 ], [ -122.444209640252396, 37.740380617798955 ], [ -122.444098337188322, 37.740234069945657 ], [ -122.443922038304507, 37.740088462716592 ], [ -122.443694223373313, 37.739971345925731 ], [ -122.44341918472557, 37.739902333376541 ], [ -122.443019593631774, 37.739814475654143 ], [ -122.442856748556963, 37.739767263698369 ], [ -122.44271760477325, 37.739682237717481 ], [ -122.442597107319372, 37.739547858254923 ], [ -122.442525191527608, 37.739448400155375 ], [ -122.44250398997913, 37.739238469269011 ], [ -122.442627783322195, 37.738564600951854 ], [ -122.442625226229453, 37.738313911390271 ], [ -122.442579349780331, 37.738171569110513 ], [ -122.44244617419956, 37.737799536516135 ], [ -122.442403843641571, 37.737639851367689 ], [ -122.442421017736137, 37.737438198043598 ], [ -122.442488947503193, 37.737289169592358 ], [ -122.442657322787326, 37.737118881702763 ], [ -122.443602235926093, 37.736502583404238 ], [ -122.443683487927487, 37.73653803376142 ], [ -122.443842427221611, 37.736579809812575 ], [ -122.444038854214782, 37.736575290313169 ], [ -122.444187688286519, 37.736528330103852 ], [ -122.444306066715512, 37.736409368208768 ], [ -122.444405709994072, 37.736218559056141 ], [ -122.444433832419023, 37.736070356056409 ], [ -122.444478073435704, 37.735720552668923 ], [ -122.444456723960371, 37.735604611251425 ], [ -122.444414926545633, 37.735547154436588 ], [ -122.444280987817251, 37.735484218369663 ], [ -122.444190291728404, 37.735407445883219 ], [ -122.443868794328736, 37.73522293273804 ], [ -122.443498916758756, 37.735041781619209 ], [ -122.443241645458286, 37.734935120886668 ], [ -122.44298838327488, 37.734915120161688 ], [ -122.442971182760076, 37.734564427784264 ], [ -122.444336617762318, 37.734557437927307 ], [ -122.445353637361492, 37.734548793463254 ], [ -122.445350300553969, 37.734322189420951 ], [ -122.445385609625191, 37.734245207403205 ], [ -122.445695180894745, 37.733970768223749 ], [ -122.445782219446897, 37.733850288395629 ], [ -122.445605378551107, 37.733800711254226 ], [ -122.444320121334613, 37.733811072362919 ], [ -122.444320397855094, 37.733087687518228 ], [ -122.44431434932487, 37.732346901474607 ], [ -122.444299518643774, 37.732277163251723 ], [ -122.444288854528963, 37.731568915105107 ], [ -122.446578400413941, 37.7315490470612 ], [ -122.447291821211039, 37.731547153756608 ], [ -122.448866265260094, 37.731542959168735 ], [ -122.451146666771351, 37.731536846888879 ], [ -122.453411343594681, 37.731530646828205 ], [ -122.453590911574565, 37.731488405776453 ], [ -122.454915878760758, 37.731464997636976 ], [ -122.455762555159509, 37.731348802743547 ], [ -122.456607498028021, 37.731187733113579 ], [ -122.457474238952088, 37.730997495241198 ], [ -122.458222500186622, 37.73077738189027 ], [ -122.458472470688633, 37.730752827866375 ], [ -122.458688935885434, 37.730751520241796 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":24,"ZIP_CODE":94117,"ID":94117},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.456669912105653, 37.763814688946653 ], [ -122.45765013969168, 37.76353311613984 ], [ -122.457702640928829, 37.764546749210723 ], [ -122.457700034267219, 37.764549766072378 ], [ -122.457718187977903, 37.764810068512688 ], [ -122.457756133601251, 37.765354151194842 ], [ -122.457788627971766, 37.765820072733575 ], [ -122.457789624362519, 37.766014767234282 ], [ -122.45751185755033, 37.765937046103922 ], [ -122.457489349789753, 37.765930717627668 ], [ -122.457438759694597, 37.76592231265932 ], [ -122.457189364808954, 37.765880549298529 ], [ -122.456913422826119, 37.76587361486397 ], [ -122.456823880275138, 37.765884275950789 ], [ -122.456616092088495, 37.765909015262118 ], [ -122.455121527013688, 37.766098468178491 ], [ -122.454592923214804, 37.766165469813686 ], [ -122.452947253369459, 37.766374046206209 ], [ -122.452946199816822, 37.766368851617294 ], [ -122.452945976378615, 37.766368855319321 ], [ -122.452947033686613, 37.766374074293772 ], [ -122.452996080750566, 37.76647606094825 ], [ -122.453164789642727, 37.767306895129927 ], [ -122.453352288400112, 37.768246025041712 ], [ -122.453445551985865, 37.76871045824668 ], [ -122.453536875207789, 37.7691652251725 ], [ -122.453536875229432, 37.769165225996225 ], [ -122.45361853828534, 37.769567547950977 ], [ -122.453726227138517, 37.770098080109292 ], [ -122.453902388799008, 37.771053479872258 ], [ -122.453902454621286, 37.771053837806122 ], [ -122.453979522461594, 37.771428395389663 ], [ -122.454018233133866, 37.771616238745679 ], [ -122.454083217765842, 37.771930404296491 ], [ -122.454285116857562, 37.772895177759331 ], [ -122.454383433186777, 37.773377561015685 ], [ -122.454474386066082, 37.77382381381878 ], [ -122.454642052912618, 37.774646438033749 ], [ -122.45468264773983, 37.77475548474694 ], [ -122.453003330637316, 37.774970754669006 ], [ -122.452810237317621, 37.774995318605924 ], [ -122.452963825070867, 37.775750129254348 ], [ -122.45318832797058, 37.776853425180988 ], [ -122.453384996187339, 37.777826863341367 ], [ -122.452431111623397, 37.777939652339285 ], [ -122.451543139139602, 37.778052106408275 ], [ -122.450826415883952, 37.778142868140662 ], [ -122.450654812483819, 37.778164598609756 ], [ -122.449767079183658, 37.778277008331997 ], [ -122.448885763577039, 37.778388598994987 ], [ -122.448879206948348, 37.778389428728616 ], [ -122.447997721370214, 37.778501033647089 ], [ -122.447039806751391, 37.778622307248391 ], [ -122.446846469920573, 37.777669108909684 ], [ -122.445155752336433, 37.777886506805444 ], [ -122.443506919728407, 37.778089213415292 ], [ -122.441865967226732, 37.778299511701405 ], [ -122.441865967212379, 37.778299511152262 ], [ -122.441865640558632, 37.778299552792262 ], [ -122.441865640580161, 37.778299553615973 ], [ -122.440213334218711, 37.778511463388014 ], [ -122.43855227772093, 37.778724107938281 ], [ -122.437707163233824, 37.778832380147421 ], [ -122.436884629197735, 37.778937753600381 ], [ -122.435241012398947, 37.779144878458894 ], [ -122.433595938040227, 37.779354585436536 ], [ -122.431951802315041, 37.779564148987781 ], [ -122.430233236584385, 37.779782794230314 ], [ -122.430047265291023, 37.778850928515844 ], [ -122.429849199803343, 37.777919295570904 ], [ -122.429686883301301, 37.776976022351889 ], [ -122.429626330769736, 37.776513151917612 ], [ -122.429622603726443, 37.776331628240193 ], [ -122.42955405641294, 37.77604428584678 ], [ -122.429365859793393, 37.775111180032617 ], [ -122.429272630354163, 37.774648924607646 ], [ -122.429178384487102, 37.774181626717471 ], [ -122.429178383795261, 37.774181626728783 ], [ -122.42917834319843, 37.774181422747475 ], [ -122.428990051967787, 37.773247800757233 ], [ -122.428802101899663, 37.772315846507482 ], [ -122.428708105393241, 37.771849753810166 ], [ -122.428614043687816, 37.771383330257258 ], [ -122.428520173517541, 37.770917853912216 ], [ -122.428426180541749, 37.770451760600665 ], [ -122.428428952948465, 37.770451409238284 ], [ -122.428218351470321, 37.769440923680406 ], [ -122.428991181191208, 37.769394223715665 ], [ -122.429127985682982, 37.769456128057627 ], [ -122.429905643091914, 37.769407921549679 ], [ -122.430247361256178, 37.769392261627225 ], [ -122.431356624058139, 37.76932091157898 ], [ -122.431570380896062, 37.769307161387864 ], [ -122.432464341208131, 37.769249650838944 ], [ -122.433572207534368, 37.769178369516744 ], [ -122.43489319213792, 37.769113797429938 ], [ -122.435794213398353, 37.769058453615109 ], [ -122.436588267341477, 37.76900080227221 ], [ -122.436625219679314, 37.768918977544402 ], [ -122.436478247038266, 37.767274662557512 ], [ -122.436980399947345, 37.767244348801164 ], [ -122.43729899343451, 37.767221930124791 ], [ -122.437291829491301, 37.767045826510717 ], [ -122.437288601235366, 37.766922046842083 ], [ -122.437333800177683, 37.766762171805773 ], [ -122.4374853951944, 37.766644323028956 ], [ -122.437684727134425, 37.766587115085294 ], [ -122.437879374385105, 37.76661079550852 ], [ -122.438219625977609, 37.766701399454838 ], [ -122.438291383601225, 37.766725780787596 ], [ -122.438386133953244, 37.766664738151036 ], [ -122.438555364477878, 37.766297386980668 ], [ -122.439501839688162, 37.766575524599709 ], [ -122.441241683591315, 37.765270858517731 ], [ -122.441931912880605, 37.765295099009755 ], [ -122.442086687309455, 37.765324419445463 ], [ -122.443210588891787, 37.765339994614024 ], [ -122.443347278899211, 37.765332794099429 ], [ -122.443263297846215, 37.765217752592115 ], [ -122.443278634379993, 37.764726164248771 ], [ -122.443215275433289, 37.764557545459958 ], [ -122.443199827408847, 37.764468898600072 ], [ -122.44294975946913, 37.764109072128207 ], [ -122.442951036556252, 37.763677959114567 ], [ -122.443247528217242, 37.763690608015906 ], [ -122.443434935848089, 37.763875622244342 ], [ -122.44441170822752, 37.76398692869914 ], [ -122.444663866724483, 37.763326501903514 ], [ -122.445692026290132, 37.762347953618033 ], [ -122.445825769194499, 37.762264137786076 ], [ -122.445930590545728, 37.762233223779305 ], [ -122.446167833254592, 37.762219287792306 ], [ -122.446246565080784, 37.762246873735464 ], [ -122.44628722735257, 37.762310164748847 ], [ -122.446391621016517, 37.76223195154369 ], [ -122.446401427721412, 37.762069683149655 ], [ -122.446384044294348, 37.761816426422072 ], [ -122.44642928686055, 37.76181245987528 ], [ -122.446783402935864, 37.761781413739634 ], [ -122.446783403627563, 37.761781413728215 ], [ -122.44652973647915, 37.761396213495424 ], [ -122.446409895656728, 37.761094344377824 ], [ -122.446433636964471, 37.761006719141555 ], [ -122.446579328750119, 37.76090155472 ], [ -122.446866213158088, 37.76042156830691 ], [ -122.446952816919733, 37.760170129150154 ], [ -122.447157396221257, 37.759660681065917 ], [ -122.447394862769713, 37.759372842727622 ], [ -122.447681986744499, 37.759189835272018 ], [ -122.448080121328474, 37.759090506458826 ], [ -122.448534508559618, 37.759045234831405 ], [ -122.448576884007139, 37.759648639321185 ], [ -122.449214958651069, 37.759610853827809 ], [ -122.451553087455522, 37.759472365763493 ], [ -122.451578365088082, 37.759597660221687 ], [ -122.451956989358152, 37.761478249938222 ], [ -122.451957007208804, 37.761478336720671 ], [ -122.452096188532394, 37.76216681475799 ], [ -122.452096203587132, 37.762166887302627 ], [ -122.452181289886042, 37.762586053251901 ], [ -122.452233043763783, 37.762842560862168 ], [ -122.452399889409662, 37.763669482365366 ], [ -122.452569353429794, 37.764509361471809 ], [ -122.452569580477117, 37.764510482582956 ], [ -122.452569807022613, 37.764510478830069 ], [ -122.452569575903098, 37.764509334437378 ], [ -122.45351591398105, 37.764395394431268 ], [ -122.453114639516684, 37.762361563728888 ], [ -122.453744673977482, 37.761878784498755 ], [ -122.454009611320302, 37.762667869264533 ], [ -122.454946081907835, 37.7631787014639 ], [ -122.454945541962573, 37.76366305305779 ], [ -122.454845151642289, 37.763732313486969 ], [ -122.454179864833876, 37.763912200042988 ], [ -122.454217265424234, 37.764310945798535 ], [ -122.455466091062405, 37.764160565952579 ], [ -122.455781065686594, 37.764070070210742 ], [ -122.456669912105653, 37.763814688946653 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":25,"ZIP_CODE":94132,"ID":94132},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.508287627239582, 37.733266432915535 ], [ -122.508283610098232, 37.733309766760698 ], [ -122.508258422649121, 37.733337665998171 ], [ -122.50825465624375, 37.73339026610973 ], [ -122.508261381386347, 37.733447151520778 ], [ -122.508260632832361, 37.733547429417492 ], [ -122.508268595371646, 37.733586094926054 ], [ -122.508272540744613, 37.733668094001438 ], [ -122.508265010681669, 37.733709427205042 ], [ -122.508286802179072, 37.733747856989588 ], [ -122.508296363517715, 37.733781688010566 ], [ -122.508300683356651, 37.733813548133803 ], [ -122.508285681955428, 37.733834406267761 ], [ -122.508267344574577, 37.733859785121595 ], [ -122.508247213289522, 37.733882790933777 ], [ -122.508237692618366, 37.73429843541993 ], [ -122.508237373460645, 37.734350633938469 ], [ -122.5082471948962, 37.734394074716711 ], [ -122.508256635722688, 37.734423443934411 ], [ -122.508245332959405, 37.734453167005526 ], [ -122.50826415897464, 37.734509845871564 ], [ -122.508256016313609, 37.734528526845153 ], [ -122.50825693455738, 37.734562505189558 ], [ -122.508280334704608, 37.734596443696226 ], [ -122.508271010987045, 37.734635403850064 ], [ -122.508266062787172, 37.734708283416225 ], [ -122.508267732334318, 37.734770062222154 ], [ -122.508272423230224, 37.734815650964592 ], [ -122.508314825176313, 37.734912789977905 ], [ -122.508324461220354, 37.734949366434215 ], [ -122.508350693626355, 37.735024118117309 ], [ -122.508408601293198, 37.735055064766357 ], [ -122.508454835865138, 37.735102005566297 ], [ -122.508462371966132, 37.735124883136479 ], [ -122.508476933993705, 37.735151761694588 ], [ -122.508477796681021, 37.735183680465923 ], [ -122.508497058717865, 37.735256490973484 ], [ -122.508537000388259, 37.735326545054548 ], [ -122.508539031954456, 37.735401708981378 ], [ -122.508528202252251, 37.735448935792135 ], [ -122.506718399360096, 37.735463437562494 ], [ -122.506718392445464, 37.735463437680252 ], [ -122.506717419598758, 37.735469757763546 ], [ -122.506541776696594, 37.735470423847289 ], [ -122.506142139643117, 37.735471938745221 ], [ -122.505711404999388, 37.735473569905054 ], [ -122.505257352091178, 37.735475287872006 ], [ -122.504189206002195, 37.735470928034005 ], [ -122.503104759187963, 37.735466491452826 ], [ -122.50249812714712, 37.735433799348435 ], [ -122.50206735537283, 37.735396211199387 ], [ -122.502021315734993, 37.73539219398544 ], [ -122.501556481916552, 37.735330499723666 ], [ -122.501555214836827, 37.735330188314435 ], [ -122.501291847576297, 37.735265403511711 ], [ -122.501214897179494, 37.735242075875206 ], [ -122.501097483348147, 37.735206481207975 ], [ -122.501097483002411, 37.735206481213844 ], [ -122.500970549161394, 37.735174012383368 ], [ -122.500888239775747, 37.73515295885273 ], [ -122.500650675572956, 37.735059919015036 ], [ -122.500571951887039, 37.735029088020617 ], [ -122.500289079616721, 37.734896880574155 ], [ -122.500140914702612, 37.734827630984967 ], [ -122.499430330098079, 37.734471850699563 ], [ -122.499196335607635, 37.734311616338935 ], [ -122.499180283, 37.734301056816975 ], [ -122.499086082983126, 37.734239092175393 ], [ -122.498948533172893, 37.734128137325406 ], [ -122.498483756692679, 37.733969859923228 ], [ -122.49837749236211, 37.733942575660954 ], [ -122.498050148013945, 37.73385852689691 ], [ -122.497707486783483, 37.733793124978028 ], [ -122.497675024009141, 37.73378860832171 ], [ -122.497251243304476, 37.7337296478455 ], [ -122.4970611531011, 37.733738715676616 ], [ -122.496807213285692, 37.733750829171804 ], [ -122.496636264393828, 37.733770812006838 ], [ -122.496636262010625, 37.733770813420726 ], [ -122.496635997165527, 37.733770842906516 ], [ -122.496635997172902, 37.733770843181105 ], [ -122.496635991376749, 37.733770846301013 ], [ -122.496448643026866, 37.733877460645239 ], [ -122.494403119131789, 37.733960247035334 ], [ -122.493941605376719, 37.733981316545631 ], [ -122.493941607430031, 37.733981341508411 ], [ -122.494014877350082, 37.735023413250019 ], [ -122.4940149282546, 37.735024137316628 ], [ -122.493857150107345, 37.735028823489081 ], [ -122.493857076611491, 37.73502785037892 ], [ -122.493407285267097, 37.734856242527158 ], [ -122.493406966558723, 37.734856121008917 ], [ -122.493274340840912, 37.734785121286002 ], [ -122.492843999903116, 37.734842083695071 ], [ -122.492330945602859, 37.73504482611267 ], [ -122.492142715245791, 37.735181846965403 ], [ -122.491805731315921, 37.735279805981911 ], [ -122.491730212101302, 37.735301758325164 ], [ -122.491320518441114, 37.735327019185135 ], [ -122.490973609504408, 37.735348171552815 ], [ -122.490725734916396, 37.735399781312303 ], [ -122.490526224357907, 37.735470000646821 ], [ -122.490270108429897, 37.735606337180243 ], [ -122.490460674310157, 37.735842274774221 ], [ -122.490521485540071, 37.736028873151284 ], [ -122.490552748713441, 37.736251597078756 ], [ -122.490686267381363, 37.736541968564268 ], [ -122.491162508402653, 37.737157782139001 ], [ -122.491211452414888, 37.737221069184358 ], [ -122.491334899611488, 37.737293023539365 ], [ -122.491198309070924, 37.737311342176547 ], [ -122.491113859834144, 37.737397356998116 ], [ -122.490894410355324, 37.737610557460023 ], [ -122.490695166321217, 37.737732995785407 ], [ -122.490475969759899, 37.737832474268195 ], [ -122.490364187143001, 37.737929559098433 ], [ -122.489970938868055, 37.737956983380037 ], [ -122.489794342484018, 37.737821521499782 ], [ -122.489559638156635, 37.737725144708122 ], [ -122.489310346380378, 37.737544144541232 ], [ -122.48917282500021, 37.737387715271872 ], [ -122.488933343471572, 37.73715804150379 ], [ -122.488518054177234, 37.737001890327612 ], [ -122.488261361358497, 37.736979897727672 ], [ -122.487883946457515, 37.736972903025247 ], [ -122.487473746906744, 37.73696000969079 ], [ -122.486865148034397, 37.736893072836374 ], [ -122.486239320534182, 37.736758103009961 ], [ -122.485767077957547, 37.736757243866982 ], [ -122.485398323256604, 37.736886930845941 ], [ -122.485055057260084, 37.737081691563745 ], [ -122.484981330342137, 37.737106613405395 ], [ -122.481727269492282, 37.73717192680251 ], [ -122.480654887744791, 37.73721905491567 ], [ -122.479601690542523, 37.737266045133403 ], [ -122.478500149938654, 37.73731300537402 ], [ -122.477443897267278, 37.737360110526431 ], [ -122.476368270747585, 37.737407342172453 ], [ -122.475288554960258, 37.737454742960537 ], [ -122.474232714891599, 37.737476308128976 ], [ -122.47327754880429, 37.737518149435381 ], [ -122.473161338869033, 37.737550437503423 ], [ -122.472088826157801, 37.737598476381557 ], [ -122.470962730039105, 37.737648904688974 ], [ -122.470924096654457, 37.737574149498428 ], [ -122.470869802376484, 37.736951620802394 ], [ -122.470805946330771, 37.736773656566506 ], [ -122.470679955794623, 37.736646992229609 ], [ -122.470574087980822, 37.736589028767121 ], [ -122.471068098407827, 37.73560670794447 ], [ -122.471400819161929, 37.735001415396148 ], [ -122.471569341481938, 37.734706810815084 ], [ -122.47162189337304, 37.733860262567148 ], [ -122.471660927786132, 37.733231459533314 ], [ -122.471741907147091, 37.731926920887339 ], [ -122.471797435951885, 37.731032354724164 ], [ -122.471838445445158, 37.730322499137451 ], [ -122.471849871701991, 37.730103151702181 ], [ -122.471866468726006, 37.729784522464136 ], [ -122.47154865397853, 37.729783977184617 ], [ -122.471594286340178, 37.728902143540118 ], [ -122.47190716730239, 37.728927188202036 ], [ -122.471915497296948, 37.728810174564472 ], [ -122.472056885104323, 37.726824049746483 ], [ -122.472214746614711, 37.723731792113433 ], [ -122.472322354823248, 37.721623768058436 ], [ -122.472321961375684, 37.721623810905996 ], [ -122.472161906508475, 37.721641204494453 ], [ -122.471983398728909, 37.721660603850793 ], [ -122.471760271986454, 37.721671203510112 ], [ -122.471759949192219, 37.721671054807977 ], [ -122.471673586030391, 37.721631204836193 ], [ -122.470779028465699, 37.721637301442819 ], [ -122.469876768913451, 37.721643443134909 ], [ -122.469739691960783, 37.721644376097736 ], [ -122.46897449401726, 37.721649578720722 ], [ -122.468660059213846, 37.721651715058712 ], [ -122.46807558495307, 37.721655684399515 ], [ -122.467922730856742, 37.721656721708847 ], [ -122.467615322899292, 37.721658807641923 ], [ -122.467185158975667, 37.721661725062667 ], [ -122.467028877336375, 37.721662784936917 ], [ -122.46658847710232, 37.721665769467251 ], [ -122.466277766029194, 37.721667874912988 ], [ -122.4659783260431, 37.721669902411627 ], [ -122.465564132461637, 37.72167263116085 ], [ -122.465391251749992, 37.721673798812127 ], [ -122.465390987937923, 37.721673800741335 ], [ -122.46448421418296, 37.721680006654026 ], [ -122.464483630192618, 37.721680010624304 ], [ -122.464483033412463, 37.721680014807887 ], [ -122.464479920172778, 37.721680035685075 ], [ -122.464479920230843, 37.721680037881669 ], [ -122.464483033470529, 37.721680017004481 ], [ -122.464484214240997, 37.721680008850619 ], [ -122.464434759676408, 37.721907819106278 ], [ -122.464293670852172, 37.722113739171022 ], [ -122.463981569397532, 37.722327034291936 ], [ -122.463751413929884, 37.722395206040865 ], [ -122.463189003103793, 37.722604614839412 ], [ -122.46284032675716, 37.72280173266644 ], [ -122.462654991355222, 37.722947907918154 ], [ -122.462431367748181, 37.72300886812026 ], [ -122.462271183905713, 37.723021052793868 ], [ -122.462271183761132, 37.723021008020723 ], [ -122.462265621163738, 37.721827887159478 ], [ -122.46226557117231, 37.721695003479546 ], [ -122.462267174469247, 37.721694992704748 ], [ -122.462267173874807, 37.721694970189525 ], [ -122.462264896007014, 37.721694985883083 ], [ -122.462254399326852, 37.72000857322422 ], [ -122.46226246554707, 37.719928593578096 ], [ -122.462245294921956, 37.718767790464547 ], [ -122.462244936309219, 37.718219524954932 ], [ -122.46263854285489, 37.718211149542661 ], [ -122.462639625007327, 37.717936035524978 ], [ -122.462638771382373, 37.717866433871905 ], [ -122.462633312624419, 37.717421207682776 ], [ -122.46262477066405, 37.716570820282072 ], [ -122.462620481465109, 37.716143794339722 ], [ -122.462615213395566, 37.71561930379395 ], [ -122.462607827629938, 37.714883950429027 ], [ -122.462602039439204, 37.714307653173123 ], [ -122.462588724439357, 37.714029538822885 ], [ -122.462554985317752, 37.713903926321834 ], [ -122.46256899895387, 37.713150165038506 ], [ -122.462580658473911, 37.712523033743715 ], [ -122.462581299448402, 37.712273520359908 ], [ -122.462570051320355, 37.711370301468136 ], [ -122.462063256954337, 37.711372729296876 ], [ -122.462545712573657, 37.711171028559598 ], [ -122.462554670587338, 37.71117015272295 ], [ -122.462558461843784, 37.710567432270715 ], [ -122.462893196389857, 37.710562754126848 ], [ -122.464175624997623, 37.710548242222522 ], [ -122.464766855714529, 37.710481381431755 ], [ -122.465994326901708, 37.710153924678359 ], [ -122.466791287837083, 37.709825747176509 ], [ -122.467161376112116, 37.709634146029515 ], [ -122.467717389066479, 37.709282172736899 ], [ -122.468442186669975, 37.708710365091008 ], [ -122.468469108419114, 37.708682445380624 ], [ -122.468919327757234, 37.708227236298555 ], [ -122.468936765178938, 37.708230944115137 ], [ -122.469206218211681, 37.708201815905348 ], [ -122.469249900139204, 37.708201720375776 ], [ -122.469298321590273, 37.708202284245147 ], [ -122.470831636978247, 37.708197238849166 ], [ -122.471323400170547, 37.708198733212157 ], [ -122.471333181497599, 37.708198762882461 ], [ -122.471352032181699, 37.708198820402657 ], [ -122.472828567745367, 37.708203294119777 ], [ -122.475753134738511, 37.70818173979459 ], [ -122.478975890370975, 37.708191500643373 ], [ -122.481681250730091, 37.708183096324262 ], [ -122.482448808625776, 37.708181853858243 ], [ -122.484067695750653, 37.708165047020167 ], [ -122.485639305786634, 37.708148710071598 ], [ -122.485678792700227, 37.708148575886831 ], [ -122.485857818531997, 37.708147968478251 ], [ -122.493439707434533, 37.708121990011122 ], [ -122.498399514345707, 37.70810473139138 ], [ -122.502773696653762, 37.708089337426266 ], [ -122.502794335644097, 37.708342053909199 ], [ -122.502870002532575, 37.708519665129593 ], [ -122.502919824088835, 37.708764674445675 ], [ -122.502952891728171, 37.708965329397188 ], [ -122.502970627807798, 37.709110275269509 ], [ -122.503182081004425, 37.70964337370075 ], [ -122.503220569589601, 37.710045154472041 ], [ -122.503285115419118, 37.710323219970874 ], [ -122.503377921169559, 37.710623467751866 ], [ -122.503454573963339, 37.710901670868985 ], [ -122.50338876186548, 37.711025718699396 ], [ -122.503480367063446, 37.71128134783477 ], [ -122.503538681827621, 37.71139229600675 ], [ -122.503607152393855, 37.711815885652477 ], [ -122.50392442753342, 37.711977024740428 ], [ -122.50398926023928, 37.712137307747028 ], [ -122.504018884937224, 37.712338364595105 ], [ -122.504050960348835, 37.712566162951994 ], [ -122.504083766615167, 37.712821075451494 ], [ -122.50415623472351, 37.713008011664755 ], [ -122.504154839245047, 37.713276897967987 ], [ -122.504262407999079, 37.713483152309799 ], [ -122.504310222769533, 37.713717550242542 ], [ -122.504341216541519, 37.713905192080865 ], [ -122.504415861257201, 37.714172784107312 ], [ -122.504527957268053, 37.714546871585753 ], [ -122.504619249107378, 37.714854698366167 ], [ -122.504734681128681, 37.715160054242361 ], [ -122.50484307775433, 37.715396854580646 ], [ -122.504983687289311, 37.715738179098203 ], [ -122.505015183177221, 37.715944354142479 ], [ -122.505064940330996, 37.716122405267939 ], [ -122.505277983345735, 37.716713159786387 ], [ -122.505378665806077, 37.716920217389642 ], [ -122.50544954257559, 37.71711198714339 ], [ -122.505534236338548, 37.717303178231596 ], [ -122.505550939969169, 37.717537761949714 ], [ -122.505627533936476, 37.717813217613234 ], [ -122.505733499538735, 37.718087829999391 ], [ -122.505795361000153, 37.718329885441641 ], [ -122.50575895814147, 37.718518674479142 ], [ -122.505846981170734, 37.71870500140907 ], [ -122.505947348818779, 37.718836178428148 ], [ -122.50603889798937, 37.719089059528848 ], [ -122.50604605833162, 37.719354365984017 ], [ -122.506067045042258, 37.719619436964734 ], [ -122.506098310388239, 37.719752820508575 ], [ -122.506085112584401, 37.71990447335908 ], [ -122.506073138870676, 37.719973352141601 ], [ -122.506058509098679, 37.720136017347265 ], [ -122.506066050462266, 37.720287316996625 ], [ -122.506093067115529, 37.720455453693035 ], [ -122.506119272327297, 37.720657598256366 ], [ -122.506215620201345, 37.720895976024821 ], [ -122.50629167450829, 37.721023102978798 ], [ -122.506401700968937, 37.721383832251519 ], [ -122.506521510466683, 37.721658550935217 ], [ -122.507655277014294, 37.728423963999113 ], [ -122.507663331414165, 37.728466062015535 ], [ -122.507703574614794, 37.728547442310145 ], [ -122.507748947428013, 37.728626675201951 ], [ -122.507757146370523, 37.728738132019352 ], [ -122.507784794329567, 37.728865395952631 ], [ -122.50778664879924, 37.728934039418284 ], [ -122.507794848177895, 37.729045496221595 ], [ -122.507815341525188, 37.729163954079155 ], [ -122.50786205937635, 37.729292953229624 ], [ -122.507900514994574, 37.72943617151067 ], [ -122.507937978539388, 37.729542665673854 ], [ -122.507979524242614, 37.729608229023043 ], [ -122.508001314382625, 37.729646658611678 ], [ -122.508029211854279, 37.729655111115953 ], [ -122.5080286514508, 37.729698385786008 ], [ -122.508045757198687, 37.729755437677454 ], [ -122.508054266358684, 37.729814352687157 ], [ -122.508053396658397, 37.729910168841855 ], [ -122.508060436991443, 37.729978723905262 ], [ -122.508062096980282, 37.730040159271667 ], [ -122.508075550679465, 37.730090062827138 ], [ -122.508077646560039, 37.730167629612303 ], [ -122.508084862782624, 37.730242705229408 ], [ -122.508102701340974, 37.730326871159861 ], [ -122.508101275259605, 37.730402094356123 ], [ -122.508118432954731, 37.730525073140598 ], [ -122.508154289380698, 37.730636058484791 ], [ -122.508159291744406, 37.730757184482151 ], [ -122.508147188358009, 37.730821258058114 ], [ -122.508157490852682, 37.730882546377835 ], [ -122.508176687224534, 37.73095295419229 ], [ -122.508155505168105, 37.731001044217557 ], [ -122.508070616958207, 37.731059491187089 ], [ -122.508063151964294, 37.731103226906185 ], [ -122.50803827155984, 37.731142452222485 ], [ -122.508010240050936, 37.731193062852363 ], [ -122.508020236798259, 37.731243025052876 ], [ -122.508042824992458, 37.73131097145712 ], [ -122.508040601277514, 37.731356677807476 ], [ -122.508006517533232, 37.731439325082015 ], [ -122.508021273414599, 37.731473410969826 ], [ -122.50803497807641, 37.731532581064045 ], [ -122.508027744858111, 37.731584897172127 ], [ -122.508025706262629, 37.731637468116226 ], [ -122.508040152865036, 37.731724095470533 ], [ -122.508058978047401, 37.731780774943978 ], [ -122.508063043647368, 37.731867235581163 ], [ -122.508091810132555, 37.731971817943496 ], [ -122.508115264680967, 37.732007815523275 ], [ -122.508158104591416, 37.732057217905187 ], [ -122.508170145127792, 37.732118820238121 ], [ -122.508180754565259, 37.732191434375828 ], [ -122.508206800359858, 37.732259321810233 ], [ -122.508252110705484, 37.732336151955884 ], [ -122.508247422336822, 37.732418641589092 ], [ -122.508261368501763, 37.73248673525643 ], [ -122.508297786010743, 37.732554445876552 ], [ -122.50831883177085, 37.732629285992957 ], [ -122.508349701883319, 37.732683699580726 ], [ -122.508381054023317, 37.73275596038183 ], [ -122.508401673597731, 37.732815012827984 ], [ -122.508412291945035, 37.732887970164001 ], [ -122.508377095537298, 37.732929431631767 ], [ -122.50834351603902, 37.732966745040173 ], [ -122.508312026503646, 37.733017414665078 ], [ -122.508294180910255, 37.733060983682996 ], [ -122.508292383963067, 37.733122478220693 ], [ -122.508302816757165, 37.733188571798578 ], [ -122.50828645856835, 37.733223187740961 ], [ -122.508287627239582, 37.733266432915535 ] ] ] }} ]} ================================================ FILE: bindings/kepler.gl-jupyter/pyproject.toml ================================================ [build-system] requires = ["geopandas~=0.14.3", "ipywidgets~=8.1.5", "notebook~=6.0.1", "jupyter_packaging~=0.12.3", "jupyter-contrib-nbextensions~=0.7.0", "jupyterlab~=4.1.6", "pyarrow~=16.0.0", "setuptools>=69.5.1", "wheel"] build-backend = "setuptools.build_meta" ================================================ FILE: bindings/kepler.gl-jupyter/requirements.txt ================================================ geopandas==0.14.3 ipywidgets==7.8.1 ipykernel==6.29.4 Shapely==2.0.4 jupyter_packaging==0.12.3 jupyter-contrib-nbextensions==0.7.0 notebook==6.0.1 setuptools==70.0.0 jupyter==1.0.0 jupyterlab==4.1.6 pyarrow==16.0.0 ================================================ FILE: bindings/kepler.gl-jupyter/setup.cfg ================================================ [bdist_wheel] universal=1 ================================================ FILE: bindings/kepler.gl-jupyter/setup.py ================================================ # SPDX-License-Identifier: MIT # Copyright contributors to the kepler.gl project from __future__ import print_function from distutils import log from setuptools import setup, find_packages import os from jupyter_packaging import ( create_cmdclass, install_npm, ensure_targets, combine_commands, get_version, skip_if_exists ) # Name of the project name = 'keplergl' here = os.path.dirname(os.path.abspath(__file__)) long_description = 'Keplergl Jupyter Extension' log.info('setup.py entered') log.info('$PATH=%s' % os.environ['PATH']) # Get version version = get_version(os.path.join(name, '_version.py')) js_dir = os.path.join(here, 'js') # Representative files that should exist after a successful build jstargets = [ os.path.join('keplergl', 'static', 'index.js'), os.path.join('keplergl-jupyter', 'labextension', 'package.json'), ] data_files_spec = [ ('share/jupyter/nbextensions/keplergl-jupyter', 'keplergl/static', '**'), ('share/jupyter/labextensions/keplergl-jupyter', 'keplergl-jupyter/labextension', "**"), ('etc/jupyter/nbconfig/notebook.d', '.', 'keplergl-jupyter.json'), ] cmdclass = create_cmdclass('jsdeps', data_files_spec=data_files_spec) js_command = combine_commands( install_npm(js_dir, npm=["yarn"], build_cmd='build'), ensure_targets(jstargets), ) is_repo = os.path.exists(os.path.join(here, '.git')) if is_repo: cmdclass['jsdeps'] = js_command else: cmdclass['jsdeps'] = skip_if_exists(jstargets, js_command) LONG_DESCRIPTION = 'A jupyter widget for kepler.gl, an advanced geospatial visualization tool, to render large-scale interactive maps.' setup_args = { 'name': 'keplergl', 'version': version, 'description': 'This is a simple jupyter widget for kepler.gl, an advanced geospatial visualization tool, to render large-scale interactive maps.', 'long_description': LONG_DESCRIPTION, 'include_package_data': True, 'install_requires': [ 'ipywidgets>=8.1.5', 'traittypes>=0.2.1', 'traitlets>=4.3.2', 'geopandas>=0.14.3', 'Shapely>=1.6.4.post2', 'jupyter_packaging>=0.12.3', 'jupyter>=1.0.0', 'jupyterlab>=4.1.6', 'notebook>=6.0.1', 'pyarrow>=16.0.0', 'geoarrow-pyarrow>=0.1.2', 'geoarrow-pandas>=0.1.1', ], 'packages': find_packages(), 'zip_safe': False, 'cmdclass': cmdclass, 'author': 'Shan He', 'author_email': 'shan@uber.com', 'url': 'https://github.com/keplergl/kepler.gl/tree/master/bindings/kepler.gl-jupyter', 'keywords': [ 'ipython', 'jupyter', 'widgets', 'geospatial', 'visualization', 'webGL' ], 'classifiers': [ 'Development Status :: 4 - Beta', 'Framework :: IPython', 'Intended Audience :: Developers', 'Intended Audience :: Science/Research', 'Topic :: Multimedia :: Graphics', 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11', 'Programming Language :: Python :: 3.12', ], } setup(**setup_args) ================================================ FILE: bindings/python/DEVELOPMENT.md ================================================ # Development Guide This guide explains how to set up kepler.gl for Jupyter for local development. ## Prerequisites - Python >= 3.9 - Node.js (for building the frontend) - JupyterLab >= 4.0 or Notebook >= 7.0 ## Installation Navigate to the `bindings/python` directory: ```bash cd bindings/python ``` ### 1. Install JavaScript dependencies and build the frontend ```bash npm install npm run build ``` ### 2. Install Python package in development mode Using **uv** (recommended): ```bash uv sync --dev ``` Or using **pip**: ```bash pip install -e ".[dev]" ``` ### 3. Start Jupyter ```bash # With uv uv run jupyter lab # Or with pip jupyter lab ``` ## Development with Hot Reload For active development with automatic rebuilding of the TypeScript/JavaScript: ```bash # Terminal 1: Watch for TypeScript changes npm run dev # Terminal 2: Run Jupyter uv run jupyter lab ``` The `npm run dev` command watches for changes in the `src/` directory and automatically rebuilds the widget JavaScript. ## Quick Test ```python from keplergl import KeplerGl # Create a map map = KeplerGl(height=400) map ``` ## Running Tests ```bash uv run pytest ``` ## Available npm Scripts - `npm run build` - Build TypeScript to `keplergl/static/` - `npm run dev` - Build with watch mode for development - `npm run typecheck` - Run TypeScript type checking - `npm run lint` - Run ESLint on source files ## Publishing to PyPI Publishing is done manually via GitHub Actions using the "Run workflow" button. ### Version Format The version in `pyproject.toml` determines what type of release you can publish: - **Prerelease versions**: Must have a suffix like `a`, `b`, `rc`, or `dev` followed by a number - Examples: `0.4.0a1` (alpha), `0.4.0b1` (beta), `0.4.0rc1` (release candidate), `0.4.0.dev1` (development) - **Official versions**: Clean semantic versions without any suffix - Examples: `0.4.0`, `1.0.0` ### Publishing Steps 1. **Update the version** in both files: - `pyproject.toml` (line: `version = "x.x.x"`) - `keplergl/_version.py` (line: `__version__ = "x.x.x"`) 2. **Go to GitHub Actions** → "Build and Publish KeplerGL Python Package" workflow 3. **Click "Run workflow"** and select the appropriate option: - **Prerelease** (checked by default): Publishes to PyPI as a prerelease. Version must have a prerelease suffix. - **Official release** (unchecked): Publishes to PyPI as an official release. Version must be a clean version. 4. The workflow will: - Build and test the package - Validate that the version format matches the publish type - Publish to PyPI if validation passes ### Validation Rules | Checkbox | Version | Result | |----------|---------|--------| | ✓ Prerelease | `0.4.0a1` | ✅ Publishes | | ✓ Prerelease | `0.4.0` | ❌ Fails (version must have prerelease suffix) | | ☐ Official | `0.4.0` | ✅ Publishes | | ☐ Official | `0.4.0a1` | ❌ Fails (version must not have prerelease suffix) | ================================================ FILE: bindings/python/README.md ================================================ # kepler.gl for Jupyter [![PyPI version](https://img.shields.io/pypi/v/keplergl.svg)](https://pypi.org/project/keplergl/) [![PyPI prerelease](https://img.shields.io/pypi/v/keplergl.svg?include_prereleases&label=prerelease)](https://pypi.org/project/keplergl/#history) This is the [kepler.gl](http://kepler.gl) Jupyter widget, an advanced geospatial visualization tool for rendering large-scale interactive maps in Jupyter Notebook and JupyterLab. ## Installation ```shell pip install keplergl ``` ### Prerequisites - Python >= 3.9 - JupyterLab >= 4.0 or Notebook >= 7.0 ## Quick Start ```python from keplergl import KeplerGl # Create a map map = KeplerGl(height=400) # Add data map.add_data(data=df, name='my_data') # Display the map map ``` ## Documentation For full documentation, visit [https://docs.kepler.gl/docs/keplergl-jupyter](https://docs.kepler.gl/docs/keplergl-jupyter). ## License MIT ================================================ FILE: bindings/python/esbuild.config.mjs ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import * as esbuild from 'esbuild'; import path from 'path'; import {fileURLToPath} from 'url'; import {createRequire} from 'module'; const require = createRequire(import.meta.url); const __dirname = path.dirname(fileURLToPath(import.meta.url)); const isWatch = process.argv.includes('--watch'); // Resolve apache-arrow to a single location const arrowPath = path.dirname(require.resolve('apache-arrow')); // Resolve browser polyfills for Node.js built-ins (point to actual entry files) const assertPath = require.resolve('assert/'); const eventsPath = require.resolve('events/'); const buildOptions = { entryPoints: {widget: 'src/index.ts'}, bundle: true, format: 'esm', outdir: 'keplergl/static', loader: { '.ts': 'ts', '.tsx': 'tsx', '.css': 'css' }, external: [], minify: !isWatch, sourcemap: isWatch, target: ['es2020'], define: { 'process.env.NODE_ENV': isWatch ? '"development"' : '"production"', 'global': 'globalThis' }, inject: ['./src/process-shim.js'], // Use alias to ensure single instance of apache-arrow and provide browser polyfills alias: { 'apache-arrow': arrowPath, 'assert': assertPath, 'events': eventsPath } }; async function build() { if (isWatch) { const ctx = await esbuild.context(buildOptions); await ctx.watch(); console.log('Watching for changes...'); } else { await esbuild.build(buildOptions); console.log('Build complete!'); } } build().catch(() => process.exit(1)); ================================================ FILE: bindings/python/keplergl/__init__.py ================================================ # SPDX-License-Identifier: MIT # Copyright contributors to the kepler.gl project """Kepler.gl Jupyter Widget.""" from .widget import KeplerGl from ._version import __version__ __all__ = ["KeplerGl", "__version__"] ================================================ FILE: bindings/python/keplergl/_version.py ================================================ # SPDX-License-Identifier: MIT # Copyright contributors to the kepler.gl project """Version information.""" __version__ = "0.4.0rc1" ================================================ FILE: bindings/python/keplergl/serializers.py ================================================ # SPDX-License-Identifier: MIT # Copyright contributors to the kepler.gl project """Data serialization for Python <-> JavaScript communication.""" import base64 from typing import Any, Optional import pandas as pd import geopandas as gpd import pyarrow as pa DEBUG = False def _debug(msg): if DEBUG: print(f"[keplergl-serializer] {msg}") def _try_parse_geojson(data: str) -> Optional[dict]: """Try to parse a string as GeoJSON. Returns parsed dict if valid GeoJSON, None otherwise.""" import json try: parsed = json.loads(data) if isinstance(parsed, dict): # Check for GeoJSON indicators geojson_types = {"FeatureCollection", "Feature", "Point", "MultiPoint", "LineString", "MultiLineString", "Polygon", "MultiPolygon", "GeometryCollection"} if parsed.get("type") in geojson_types: return parsed except (json.JSONDecodeError, TypeError): pass return None def data_to_json(data: dict, widget) -> dict: """Serialize Python data for JavaScript consumption.""" _debug(f"data_to_json called with {len(data)} datasets") result = {} for name, dataset in data.items(): _debug(f" Serializing dataset '{name}' of type {type(dataset).__name__}") result[name] = serialize_dataset(dataset, name) _debug(f" Result format: {result[name].get('format')}") _debug(f"data_to_json result: {list(result.keys())}") return result def data_from_json(data: dict, widget) -> dict: """Deserialize JavaScript data to Python (passthrough).""" return data def serialize_dataset(data: Any, name: str) -> dict: """Serialize a single dataset.""" if isinstance(data, gpd.GeoDataFrame): return serialize_geodataframe(data, name) elif isinstance(data, pd.DataFrame): return serialize_dataframe(data, name) elif isinstance(data, str): # Try to detect if the string is GeoJSON geojson_data = _try_parse_geojson(data) if geojson_data is not None: _debug(f" Detected GeoJSON string for '{name}'") return {"id": name, "data": geojson_data, "format": "geojson"} # Otherwise treat as CSV return {"id": name, "data": data, "format": "csv"} elif isinstance(data, dict): return {"id": name, "data": data, "format": "geojson"} else: raise ValueError(f"Unsupported data type: {type(data)}") def serialize_dataframe(df: pd.DataFrame, name: str) -> dict: """Serialize DataFrame to JSON format for kepler.gl. We use JSON format instead of Arrow to avoid version mismatch issues between the apache-arrow package used here and the one bundled with kepler.gl. """ columns = df.columns.tolist() rows = df.values.tolist() _debug(f"serialize_dataframe: {len(columns)} columns, {len(rows)} rows") _debug(f" columns: {columns}") _debug(f" first row: {rows[0] if rows else 'empty'}") return { "id": name, "data": { "columns": columns, "data": rows, }, "format": "df", } def serialize_geodataframe(gdf: gpd.GeoDataFrame, name: str) -> dict: """Serialize GeoDataFrame to GeoArrow format.""" import geoarrow.pyarrow as ga # Convert geometry column to geoarrow format geom_col = gdf.geometry.name geom_array = ga.as_geoarrow(gdf.geometry) # Build table with non-geometry columns as regular Arrow arrays non_geom_cols = [c for c in gdf.columns if c != geom_col] arrays = [pa.array(gdf[c]) for c in non_geom_cols] arrays.append(geom_array) col_names = non_geom_cols + [geom_col] table = pa.table(dict(zip(col_names, arrays))) sink = pa.BufferOutputStream() with pa.ipc.new_stream(sink, table.schema) as writer: writer.write_table(table) arrow_bytes = sink.getvalue().to_pybytes() return { "id": name, "data": base64.b64encode(arrow_bytes).decode("utf-8"), "format": "geoarrow", } ================================================ FILE: bindings/python/keplergl/widget.py ================================================ # SPDX-License-Identifier: MIT # Copyright contributors to the kepler.gl project """Kepler.gl Jupyter Widget using anywidget.""" import pathlib import copy import anywidget import traitlets from .serializers import data_to_json, data_from_json _STATIC_DIR = pathlib.Path(__file__).parent / "static" class KeplerGl(anywidget.AnyWidget): """Kepler.gl Jupyter Widget using anywidget.""" _esm = _STATIC_DIR / "widget.js" _css = _STATIC_DIR / "widget.css" data = traitlets.Dict({}).tag(sync=True, to_json=data_to_json, from_json=data_from_json) config = traitlets.Dict({}).tag(sync=True) height = traitlets.Int(400).tag(sync=True) def __init__(self, data=None, config=None, height=400, show_docs=False, **kwargs): """ Initialize KeplerGl widget. Args: data: Dict of dataset name to data (DataFrame, GeoDataFrame, CSV, GeoJSON) config: Kepler.gl config dict height: Widget height in pixels show_docs: Deprecated, kept for compatibility """ super().__init__(**kwargs) self.height = height if config: self.config = config if data: self._add_data_dict(data) def add_data(self, data, name="data"): """Add data to the map.""" updated = copy.deepcopy(self.data) updated[name] = data self.data = updated def _add_data_dict(self, data_dict): """Add multiple datasets from a dict.""" updated = copy.deepcopy(self.data) for name, data in data_dict.items(): updated[name] = data self.data = updated def save_to_html( self, file_name="keplergl_map.html", data=None, config=None, read_only=False, center_map=False, ): """Export the map to a standalone HTML file. Note: This method is no longer supported in the new anywidget-based implementation. Please use the "Share" button in the map config panel to export your map. """ print( "save_to_html() is no longer supported in this version.\n" "Please use the 'Share' button in the map config panel to export your map to HTML." ) ================================================ FILE: bindings/python/notebooks/DataFrame.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "df = pd.DataFrame(\n", " {'City': ['Buenos Aires', 'Brasilia', 'Santiago', 'Bogota', 'Caracas'],\n", " 'Country': ['Argentina', 'Brazil', 'Chile', 'Colombia', 'Venezuela'],\n", " 'Latitude': [-34.58, -15.78, -33.45, 4.60, 10.48],\n", " 'Longitude': [-58.66, -47.91, -70.66, -74.08, -66.86],\n", " 'Time': ['2019-09-01 08:00','2019-09-01 09:00','2019-09-01 10:00','2019-09-01 11:00', '2019-09-01 12:00']\n", " })" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "37198f4ae24b463db826f3e81de6d4b3", "version_major": 2, "version_minor": 1 }, "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import keplergl\n", "w1 = keplergl.KeplerGl(height=600, data={'data_1': df})\n", "w1" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "save_to_html() is no longer supported in this version.\n", "Please use the 'Share' button in the map config panel to export your map to HTML.\n" ] } ], "source": [ "w1.save_to_html(file_name='keplergl_map.html')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.5" } }, "nbformat": 4, "nbformat_minor": 4 } ================================================ FILE: bindings/python/notebooks/GeoDataFrame.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import geopandas" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "df = pd.DataFrame(\n", " {'City': ['Buenos Aires', 'Brasilia', 'Santiago', 'Bogota', 'Caracas'],\n", " 'Country': ['Argentina', 'Brazil', 'Chile', 'Colombia', 'Venezuela'],\n", " 'Latitude': [-34.58, -15.78, -33.45, 4.60, 10.48],\n", " 'Longitude': [-58.66, -47.91, -70.66, -74.08, -66.86]})" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "point_gdf = geopandas.GeoDataFrame(df, geometry=geopandas.points_from_xy(df.Longitude, df.Latitude))" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OBJECTIDZIP_CODEIDgeometry
019410794107POLYGON ((-122.40116 37.78202, -122.40037 37.7...
129410594105POLYGON ((-122.3925 37.79377, -122.39189 37.79...
239412994129POLYGON ((-122.47099 37.78753, -122.47229 37.7...
349412194121POLYGON ((-122.50446 37.78807, -122.50415 37.7...
459411894118POLYGON ((-122.44889 37.77839, -122.44977 37.7...
\n", "
" ], "text/plain": [ " OBJECTID ZIP_CODE ID \\\n", "0 1 94107 94107 \n", "1 2 94105 94105 \n", "2 3 94129 94129 \n", "3 4 94121 94121 \n", "4 5 94118 94118 \n", "\n", " geometry \n", "0 POLYGON ((-122.40116 37.78202, -122.40037 37.7... \n", "1 POLYGON ((-122.3925 37.79377, -122.39189 37.79... \n", "2 POLYGON ((-122.47099 37.78753, -122.47229 37.7... \n", "3 POLYGON ((-122.50446 37.78807, -122.50415 37.7... \n", "4 POLYGON ((-122.44889 37.77839, -122.44977 37.7... " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "zipcode_gdf = geopandas.read_file('sf_zip_geo.json')\n", "display(zipcode_gdf.head(5))" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "0de352dc6ee744e7b073abff5b4d2d8c", "version_major": 2, "version_minor": 1 }, "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import keplergl\n", "w1 = keplergl.KeplerGl(height=500)\n", "w1" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "w1.add_data(data=zipcode_gdf, name=\"zipcode\")" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "w1.add_data(data=point_gdf, name='cities')" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "save_to_html() is no longer supported in this version.\n", "Please use the 'Share' button in the map config panel to export your map to HTML.\n" ] } ], "source": [ "w1.save_to_html(file_name='city_map.html', read_only=True)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.5" } }, "nbformat": 4, "nbformat_minor": 4 } ================================================ FILE: bindings/python/notebooks/GeoJSON.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "with open('geojson-data.json', 'r') as f:\n", " geojson = f.read()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "4e568feadd104e7fa7b957693328369c", "version_major": 2, "version_minor": 1 }, "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import keplergl\n", "map_1 = keplergl.KeplerGl(height=600)\n", "map_1" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "map_1.add_data(geojson, \"geojson\")" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "save_to_html() is no longer supported in this version.\n", "Please use the 'Share' button in the map config panel to export your map to HTML.\n" ] } ], "source": [ "map_1.save_to_html(file_name=\"geojson_map.html\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.5" } }, "nbformat": 4, "nbformat_minor": 4 } ================================================ FILE: bindings/python/notebooks/Load kepler.gl.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " hex_id value is_true float_value empty time\n", "0 89283082c2fffff 64 True 64.1 11/1/17 11:00\n", "1 8928308288fffff 73 True 73.1 11/1/17 11:00\n", "2 89283082c07ffff 65 True 65.1 11/1/17 11:00\n", "3 89283082817ffff 74 True 74.1 11/1/17 11:00\n", "4 89283082c3bffff 66 True 66.1 11/1/17 11:00\n", ".. ... ... ... ... ... ...\n", "83 8928309537bffff 4 True 4.1 11/1/17 11:00\n", "84 89283082d93ffff 6 True 6.1 11/1/17 11:00\n", "85 89283082d73ffff 1 True 1.1 11/1/17 13:00\n", "86 8928309530bffff 1 True 1.1 11/1/17 11:00\n", "87 8928309532bffff 1 True 1.1 11/1/17 11:00\n", "\n", "[88 rows x 6 columns]\n" ] } ], "source": [ "import pandas as pd\n", "df = pd.read_csv('hex-data.csv')\n", "df = df.fillna('')\n", "print(df)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import json\n", "with open('sf_zip_geo.json', 'r') as f:\n", " geojson = f.read()\n", "\n", "json_data=json.loads(geojson)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# assign config = hex_config\n", "%run hex_config.py" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "bb5e76638fab46b39b476ad048984097", "version_major": 2, "version_minor": 1 }, "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import keplergl\n", "w1 = keplergl.KeplerGl(height=500, data={\"data_1\": df}, config=config)\n", "# w1 = keplergl.KeplerGl(height=500)\n", "w1" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": true }, "outputs": [], "source": [ "w1.add_data(df, 'data_1')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'version': 'v1',\n", " 'config': {'visState': {'layers': [{'type': 'hexagonId',\n", " 'visualChannels': {'sizeField': {'type': 'integer', 'name': 'value'},\n", " 'coverageField': None,\n", " 'colorScale': 'quantize',\n", " 'coverageScale': 'linear',\n", " 'colorField': {'type': 'integer', 'name': 'value'},\n", " 'sizeScale': 'linear'},\n", " 'config': {'dataId': 'data_1',\n", " 'color': [250, 116, 0],\n", " 'textLabel': {'color': [255, 255, 255],\n", " 'field': None,\n", " 'size': 50,\n", " 'anchor': 'middle',\n", " 'offset': [0, 0]},\n", " 'label': 'H3 Hexagon',\n", " 'isVisible': True,\n", " 'visConfig': {'coverageRange': [0, 1],\n", " 'opacity': 0.8,\n", " 'elevationScale': 5,\n", " 'hi-precision': False,\n", " 'coverage': 1,\n", " 'enable3d': True,\n", " 'sizeRange': [0, 500],\n", " 'colorRange': {'category': 'Uber',\n", " 'type': 'sequential',\n", " 'colors': ['#194266',\n", " '#355C7D',\n", " '#63617F',\n", " '#916681',\n", " '#C06C84',\n", " '#D28389',\n", " '#E59A8F',\n", " '#F8B195'],\n", " 'reversed': False,\n", " 'name': 'Sunrise 8'}},\n", " 'columns': {'hex_id': 'hex_id'}},\n", " 'id': 'jdys7lp'}],\n", " 'interactionConfig': {'brush': {'enabled': False, 'size': 0.5},\n", " 'tooltip': {'fieldsToShow': {'data_1': ['hex_id', 'value']},\n", " 'enabled': True}},\n", " 'splitMaps': [],\n", " 'layerBlending': 'normal',\n", " 'filters': []},\n", " 'mapState': {'bearing': 2.6192893401015205,\n", " 'dragRotate': True,\n", " 'zoom': 12.32053899007826,\n", " 'longitude': -122.42590232651203,\n", " 'isSplit': False,\n", " 'pitch': 37.374216241015446,\n", " 'latitude': 37.76209132041332},\n", " 'mapStyle': {'mapStyles': {},\n", " 'topLayerGroups': {},\n", " 'styleType': 'dark',\n", " 'visibleLayerGroups': {'building': True,\n", " 'land': True,\n", " '3d building': False,\n", " 'label': True,\n", " 'water': True,\n", " 'border': False,\n", " 'road': True}}}}" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w1.config" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "w1.add_data(json_data, 'geojson')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "w1.save_to_html(file_name='first_map.html', data={\"data_1\": df}, config=config)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.5" } }, "nbformat": 4, "nbformat_minor": 4 } ================================================ FILE: bindings/python/notebooks/geojson-data.json ================================================ { "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": { "fill": true }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 2.331032753, 48.8411359942 ], [ 2.3269987106, 48.8425764529 ], [ 2.3253250122, 48.8431130838 ], [ 2.3240375519, 48.8435367357 ], [ 2.3217630386, 48.8443840288 ], [ 2.3203468323, 48.8448923977 ], [ 2.3189735413, 48.8453160346 ], [ 2.3167848587, 48.846558682 ], [ 2.3136520386, 48.8456831836 ], [ 2.3111844063, 48.8450618529 ], [ 2.3070859909, 48.8438897762 ], [ 2.2969740629, 48.8408994443 ], [ 2.2952359915, 48.8427106112 ], [ 2.2949945927, 48.84285183 ], [ 2.2928863764, 48.8436249961 ], [ 2.2912180424, 48.844327543 ], [ 2.2873932123, 48.8458173336 ], [ 2.2863632441, 48.8462833253 ], [ 2.2854137421, 48.8467704938 ], [ 2.2820448875, 48.849008584 ], [ 2.2804355621, 48.8498063649 ], [ 2.2793841362, 48.8498204848 ], [ 2.2790408134, 48.8506535519 ], [ 2.2756505013, 48.8526585039 ], [ 2.2742128372, 48.8531667889 ], [ 2.2726249695, 48.8535197615 ], [ 2.2703289986, 48.8542539366 ], [ 2.2671747208, 48.8551434035 ], [ 2.2649002075, 48.855694018 ], [ 2.2637414932, 48.8544233601 ], [ 2.2617030144, 48.8551010483 ], [ 2.2633981705, 48.8576564152 ], [ 2.2649002075, 48.8599434285 ], [ 2.2664451599, 48.8626538275 ], [ 2.2666811943, 48.8631902432 ], [ 2.267947197, 48.8647006461 ], [ 2.2694063187, 48.8667897264 ], [ 2.2713589668, 48.8690480934 ], [ 2.2736120224, 48.871009967 ], [ 2.2753071785, 48.8723507717 ], [ 2.2773456573, 48.8737197667 ], [ 2.2782897949, 48.8750040476 ], [ 2.2804999352, 48.8774737258 ], [ 2.2818946838, 48.8795058267 ], [ 2.2835040092, 48.8808605148 ], [ 2.2857570648, 48.882229277 ], [ 2.2899627686, 48.8848396989 ], [ 2.2913146019, 48.8857568418 ], [ 2.294511795, 48.8876475141 ], [ 2.2955846786, 48.8878732613 ], [ 2.2964859009, 48.8878027154 ], [ 2.297065258, 48.8876192956 ], [ 2.2975587845, 48.8874923124 ], [ 2.298116684, 48.8875064216 ], [ 2.298438549, 48.8875910772 ], [ 2.2989320755, 48.8879296979 ], [ 2.2997903824, 48.8882965344 ], [ 2.3006701469, 48.8886210414 ], [ 2.3015713692, 48.889270049 ], [ 2.3037815094, 48.8903423041 ], [ 2.3057985306, 48.8900742425 ], [ 2.3074293137, 48.8893405928 ], [ 2.3093390465, 48.8887762396 ], [ 2.311205864, 48.8880566801 ], [ 2.314145565, 48.8876051864 ], [ 2.3184370995, 48.8917954552 ], [ 2.3220419884, 48.8897497449 ], [ 2.325668335, 48.887703951 ], [ 2.3268485069, 48.8851924481 ], [ 2.3274922371, 48.8838378774 ], [ 2.328063794, 48.883946667 ], [ 2.329651662, 48.88493438 ], [ 2.336046047, 48.88318471 ], [ 2.339479275, 48.882422738 ], [ 2.342912503, 48.882987163 ], [ 2.345744913, 48.883551581 ], [ 2.34951366, 48.884013132 ], [ 2.35071529, 48.882827858 ], [ 2.351959835, 48.881501444 ], [ 2.352954691, 48.880503646 ], [ 2.354234348, 48.8790743 ], [ 2.355393062, 48.877752921 ], [ 2.35625137, 48.876623947 ], [ 2.3603439331, 48.8759495959 ], [ 2.3634767532, 48.875413317 ], [ 2.3630905151, 48.8741996118 ], [ 2.3636484146, 48.8733528233 ], [ 2.3643350601, 48.8725060204 ], [ 2.3652791977, 48.8711511061 ], [ 2.3658370972, 48.8704171788 ], [ 2.3668670654, 48.8691468946 ], [ 2.3678970337, 48.8694432972 ], [ 2.3685836792, 48.8686105428 ], [ 2.368991375, 48.8680459556 ], [ 2.3677682877, 48.8677636597 ], [ 2.3687553406, 48.8666626902 ], [ 2.3702573776, 48.8647994559 ], [ 2.371544838, 48.8632184755 ], [ 2.3724031448, 48.8618350766 ], [ 2.3724031448, 48.8604516395 ], [ 2.3719739914, 48.8594634467 ], [ 2.371544838, 48.8586164088 ], [ 2.3711585999, 48.8575434736 ], [ 2.3706436157, 48.8566681672 ], [ 2.3701715469, 48.8555951902 ], [ 2.3698282242, 48.8546916128 ], [ 2.3700428009, 48.8529126471 ], [ 2.3684120178, 48.8526302657 ], [ 2.3662662506, 48.8520654983 ], [ 2.3646354675, 48.8515007245 ], [ 2.3644798994, 48.8514583662 ], [ 2.3643136024, 48.8514195377 ], [ 2.3640614748, 48.8513312911 ], [ 2.3639059067, 48.8512854028 ], [ 2.3637878895, 48.8512395145 ], [ 2.3636591434, 48.8511759767 ], [ 2.3634928465, 48.8511159687 ], [ 2.363294363, 48.8510594905 ], [ 2.3630422354, 48.8509888927 ], [ 2.3628437519, 48.8509394742 ], [ 2.3625648022, 48.8507806287 ], [ 2.3624360561, 48.8507100305 ], [ 2.3620980978, 48.8506641416 ], [ 2.3619157076, 48.8506394322 ], [ 2.3615992069, 48.8506217826 ], [ 2.361395359, 48.8505829535 ], [ 2.3611968756, 48.8505441243 ], [ 2.3611646891, 48.8504982353 ], [ 2.361100316, 48.8504452864 ], [ 2.3609608412, 48.8503888075 ], [ 2.3608535528, 48.8503287985 ], [ 2.3607730865, 48.8502970291 ], [ 2.3605155945, 48.8502299602 ], [ 2.360419035, 48.8501805409 ], [ 2.3603439331, 48.8501523013 ], [ 2.3601508141, 48.8500287529 ], [ 2.3589706421, 48.8495804459 ], [ 2.3583698273, 48.8491850853 ], [ 2.365322113, 48.8442710572 ], [ 2.3629188538, 48.8400909296 ], [ 2.3513317108, 48.8363624133 ], [ 2.3368692398, 48.8393000554 ], [ 2.3351955414, 48.8398367214 ], [ 2.3342084885, 48.8402039106 ], [ 2.3331356049, 48.8405146071 ], [ 2.331032753, 48.8411359942 ] ] ] } } ] } ================================================ FILE: bindings/python/notebooks/hex-data.csv ================================================ hex_id,value,is_true,float_value,empty,time 89283082c2fffff,64,true,64.1,,11/1/17 11:00 8928308288fffff,73,true,73.1,,11/1/17 11:00 89283082c07ffff,65,true,65.1,,11/1/17 11:00 89283082817ffff,74,true,74.1,,11/1/17 11:00 89283082c3bffff,66,true,66.1,,11/1/17 11:00 89283082883ffff,76,true,76.1,,11/1/17 11:00 89283082c03ffff,60,true,60.1,,11/1/17 11:00 89283082807ffff,68,true,68.1,,11/1/17 10:00 8928308289bffff,49,true,49.1,,11/1/17 11:00 89283082c0fffff,41,true,41.1,,11/1/17 11:00 89283082c87ffff,50,true,50.1,,11/1/17 11:00 89283082d4fffff,45,true,45.1,,11/1/17 11:00 89283082c77ffff,41,true,41.1,,11/1/17 11:00 89283082c2bffff,53,true,53.1,,11/1/17 11:00 89283082803ffff,41,true,41.1,,11/1/17 11:00 89283082813ffff,43,true,43.1,,11/1/17 11:00 89283082d5bffff,45,true,45.1,,11/1/17 11:00 89283082897ffff,40,true,40.1,,11/1/17 11:00 89283082c67ffff,42,true,42.1,,11/1/17 11:00 89283082d47ffff,51,true,51.1,,11/1/17 11:00 89283082dc3ffff,52,true,52.1,,11/1/17 11:00 89283082c33ffff,43,true,43.1,,11/1/17 11:00 89283082c23ffff,40,true,40.1,,11/1/17 11:00 89283082887ffff,36,true,36.1,,11/1/17 11:00 89283082d4bffff,36,true,36.1,,11/1/17 11:00 892830828bbffff,48,true,48.1,,11/1/17 11:00 892830828b7ffff,28,true,28.1,,11/1/17 11:00 89283082c17ffff,34,true,34.1,,11/1/17 11:00 89283082c6fffff,21,true,21.1,,11/1/17 12:00 8928308288bffff,25,true,25.1,,11/1/17 11:00 892830828abffff,26,true,26.1,,11/1/17 11:00 89283082c27ffff,27,true,27.1,,11/1/17 11:00 89283082c8fffff,33,true,33.1,,11/1/17 11:00 89283082cafffff,29,true,29.1,,11/1/17 11:00 89283082c13ffff,27,true,27.1,,11/1/17 11:00 89283082cabffff,22,true,22.1,,11/1/17 11:00 89283082c63ffff,26,true,26.1,,11/1/17 11:00 89283082d43ffff,30,true,30.1,,11/1/17 11:00 89283082d53ffff,19,true,19.1,,11/1/17 11:00 892830828a3ffff,28,false,28.1,,11/1/17 11:00 89283082d1bffff,20,false,20.1,,11/1/17 11:00 89283095367ffff,17,false,17.1,,11/1/17 11:00 8928309536bffff,26,false,26.1,,11/1/17 11:00 89283082c37ffff,16,false,16.1,,11/1/17 11:00 89283082c73ffff,17,false,17.1,,11/1/17 11:00 89283082c8bffff,15,false,15.1,,11/1/17 11:00 89283082ca7ffff,27,false,27.1,,11/1/17 11:00 89283082cb3ffff,32,false,32.1,,11/1/17 11:00 89283082c0bffff,26,false,26.1,,11/1/17 11:00 89283082ca3ffff,19,false,19.1,,11/1/17 11:00 89283082dcfffff,18,false,18.1,,11/1/17 11:00 89283082c1bffff,20,false,20.1,,11/1/17 15:00 89283082ddbffff,18,false,18.1,,11/1/17 11:00 8928309534fffff,16,false,16.1,,11/1/17 11:00 89283082d03ffff,15,false,15.1,,11/1/17 11:00 89283082cbbffff,21,false,21.1,,11/1/17 11:00 89283082cd7ffff,9,true,9.1,,11/1/17 11:00 8928309534bffff,9,true,9.1,,11/1/17 11:00 892830828c7ffff,13,true,13.1,,11/1/17 11:00 89283082cc7ffff,12,true,12.1,,11/1/17 11:00 89283082d0bffff,19,true,19.1,,11/1/17 11:00 89283082dcbffff,19,true,19.1,,11/1/17 11:00 89283082dd3ffff,15,true,15.1,,11/1/17 11:00 89283082dd7ffff,15,true,15.1,,11/1/17 11:00 892830828d7ffff,13,true,13.1,,11/1/17 11:00 89283082d17ffff,5,true,5.1,,11/1/17 11:00 8928309536fffff,8,true,8.1,,11/1/17 11:00 89283095373ffff,6,true,6.1,,11/1/17 11:00 89283082cb7ffff,15,true,15.1,,11/1/17 11:00 89283082d83ffff,9,true,9.1,,11/1/17 11:00 89283082d07ffff,4,true,4.1,,11/1/17 11:00 89283082d0fffff,3,true,3.1,,11/1/17 11:00 89283082d13ffff,6,true,6.1,,11/1/17 11:00 89283082d9bffff,5,true,5.1,,11/1/17 11:00 89283082c83ffff,11,true,11.1,,11/1/17 11:00 89283082d8bffff,4,true,4.1,,11/1/17 11:00 89283082dc7ffff,5,true,5.1,,11/1/17 11:00 89283095377ffff,5,true,5.1,,11/1/17 11:00 89283082c97ffff,4,true,4.1,,11/1/17 11:00 89283082d7bffff,2,true,2.1,,11/1/17 11:00 89283082d8fffff,1,true,1.1,,11/1/17 11:00 89283095347ffff,3,true,3.1,,11/1/17 11:00 89283095363ffff,2,true,2.1,,11/1/17 11:00 8928309537bffff,4,true,4.1,,11/1/17 11:00 89283082d93ffff,6,true,6.1,,11/1/17 11:00 89283082d73ffff,1,true,1.1,,11/1/17 13:00 8928309530bffff,1,true,1.1,,11/1/17 11:00 8928309532bffff,1,true,1.1,,11/1/17 11:00 ================================================ FILE: bindings/python/notebooks/hex_config.py ================================================ # SPDX-License-Identifier: MIT # Copyright contributors to the kepler.gl project config = {u'version': u'v1', u'config': {u'visState': {u'layers': [{u'type': u'hexagonId', u'visualChannels': {u'sizeField': {u'type': u'integer', u'name': u'value'}, u'coverageField': None, u'colorScale': u'quantize', u'coverageScale': u'linear', u'colorField': {u'type': u'integer', u'name': u'value'}, u'sizeScale': u'linear'}, u'config': {u'dataId': u'data_1', u'color': [250, 116, 0], u'textLabel': {u'color': [255, 255, 255], u'field': None, u'size': 50, u'anchor': u'middle', u'offset': [0, 0]}, u'label': u'H3 Hexagon', u'isVisible': True, u'visConfig': {u'coverageRange': [0, 1], u'opacity': 0.8, u'elevationScale': 5, u'hi-precision': False, u'coverage': 1, u'enable3d': True, u'sizeRange': [0, 500], u'colorRange': {u'category': u'Uber', u'type': u'sequential', u'colors': [u'#194266', u'#355C7D', u'#63617F', u'#916681', u'#C06C84', u'#D28389', u'#E59A8F', u'#F8B195'], u'reversed': False, u'name': u'Sunrise 8'}}, u'columns': {u'hex_id': u'hex_id'}}, u'id': u'jdys7lp'}], u'interactionConfig': {u'brush': {u'enabled': False, u'size': 0.5}, u'tooltip': {u'fieldsToShow': {u'data_1': [u'hex_id', u'value']}, u'enabled': True}}, u'splitMaps': [], u'layerBlending': u'normal', u'filters': []}, u'mapState': {u'bearing': 2.6192893401015205, u'dragRotate': True, u'zoom': 12.32053899007826, u'longitude': -122.42590232651203, u'isSplit': False, u'pitch': 37.374216241015446, u'latitude': 37.76209132041332}, u'mapStyle': {u'mapStyles': {}, u'topLayerGroups': {}, u'styleType': u'dark', u'visibleLayerGroups': {u'building': True, u'land': True, u'3d building': False, u'label': True, u'water': True, u'border': False, u'road': True}}}} ================================================ FILE: bindings/python/notebooks/sf_zip_geo.json ================================================ {"type": "FeatureCollection","features": [ {"type": "Feature", "properties": {"OBJECTID":1,"ZIP_CODE":94107,"ID":94107},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.401159718585049, 37.782024266952142 ], [ -122.400374366843309, 37.782644515545172 ], [ -122.400019020063766, 37.782925153640136 ], [ -122.399891477967842, 37.783025880124256 ], [ -122.398930331092998, 37.783784933304034 ], [ -122.397811613142864, 37.784666586003652 ], [ -122.396705177550587, 37.785542130425938 ], [ -122.395895701657864, 37.784896929203114 ], [ -122.395160622349934, 37.78431101230386 ], [ -122.394398389309941, 37.783701667981575 ], [ -122.39343711789931, 37.784459123881106 ], [ -122.39286959393705, 37.78478280203197 ], [ -122.39285700396303, 37.784773072758867 ], [ -122.392216553530702, 37.784278123341721 ], [ -122.392215026316663, 37.784279352365694 ], [ -122.392118766536498, 37.784205306785267 ], [ -122.392032919786118, 37.784168354830349 ], [ -122.391600764141245, 37.783823989838545 ], [ -122.391599105853345, 37.783822668268179 ], [ -122.390856721023212, 37.784410569188324 ], [ -122.389846392025618, 37.783609176617361 ], [ -122.389843136047602, 37.783611740842574 ], [ -122.388306939892615, 37.782385221520776 ], [ -122.388304301898813, 37.782356717503951 ], [ -122.388231340039766, 37.782146697467269 ], [ -122.388106738902522, 37.781931906493995 ], [ -122.388094863959623, 37.781887241816527 ], [ -122.387765464889313, 37.78194244138043 ], [ -122.387754811744713, 37.781795652877442 ], [ -122.385560654233757, 37.781935833609538 ], [ -122.385544999019174, 37.781932650370386 ], [ -122.38553439339303, 37.781923892586839 ], [ -122.385511671392734, 37.781778670688965 ], [ -122.384922372713746, 37.781810068903333 ], [ -122.384901998602373, 37.781825502544642 ], [ -122.384858074907243, 37.781799422577222 ], [ -122.384893494062709, 37.781763146995921 ], [ -122.38491634743859, 37.781777202531266 ], [ -122.38550727073536, 37.781741658296774 ], [ -122.385491676395333, 37.781604563077408 ], [ -122.385493075388183, 37.781591492690396 ], [ -122.38550321006835, 37.781581716485675 ], [ -122.385518655734231, 37.781576662678262 ], [ -122.38762837564704, 37.781450881969413 ], [ -122.387583140105036, 37.780964719298666 ], [ -122.387467577483136, 37.780979617487112 ], [ -122.387479366190874, 37.781103038700273 ], [ -122.387462086323822, 37.781104002067416 ], [ -122.387450297298699, 37.780980580858106 ], [ -122.387337984465276, 37.780987185935416 ], [ -122.387348026094102, 37.781109948402708 ], [ -122.387330746223768, 37.781110911750616 ], [ -122.387320704623349, 37.780988149281868 ], [ -122.387206644553231, 37.780994095205941 ], [ -122.387216703416328, 37.781117544403045 ], [ -122.387199423542512, 37.781118507731705 ], [ -122.387189364714985, 37.780995058807726 ], [ -122.387068420460224, 37.78100248851576 ], [ -122.387080191758074, 37.781125223313062 ], [ -122.387062911534741, 37.78112618662724 ], [ -122.387051140611234, 37.78100345182272 ], [ -122.386937097943829, 37.781010084204837 ], [ -122.386948869025886, 37.781132819015049 ], [ -122.386931588799087, 37.78113378231 ], [ -122.386919818091386, 37.781011047492527 ], [ -122.386812677010425, 37.7810168822962 ], [ -122.386824465334769, 37.781140303837503 ], [ -122.386807185104601, 37.781141267114201 ], [ -122.386795397161777, 37.781017845840225 ], [ -122.386676165495402, 37.781024560738594 ], [ -122.386687953248156, 37.781147982298883 ], [ -122.386670672668515, 37.781148945561135 ], [ -122.386658885297223, 37.781025524268173 ], [ -122.386543112789369, 37.781032183675542 ], [ -122.386554900668202, 37.781155605243434 ], [ -122.386537620431014, 37.781156568480647 ], [ -122.386525832933643, 37.781033147180089 ], [ -122.386411790166775, 37.781039778779515 ], [ -122.386423577828609, 37.781163200360375 ], [ -122.386406297587911, 37.781164163578339 ], [ -122.386394510307582, 37.7810407422648 ], [ -122.386282162758775, 37.781045973167615 ], [ -122.386293984730017, 37.781170767655468 ], [ -122.386276704139945, 37.78117173085996 ], [ -122.386264917419695, 37.781048309528096 ], [ -122.386147415421732, 37.781054996216575 ], [ -122.386159201954754, 37.781178417834589 ], [ -122.386141922053085, 37.781179381008279 ], [ -122.386130135209612, 37.78105595966862 ], [ -122.386019552249252, 37.781062535536719 ], [ -122.386031321484509, 37.781185270717479 ], [ -122.386014040887659, 37.781186233883489 ], [ -122.386002272033735, 37.781063498970049 ], [ -122.385879580345062, 37.78107026841095 ], [ -122.385891367127385, 37.781193690044354 ], [ -122.385874086872718, 37.781194653184308 ], [ -122.385862300471871, 37.781071231818238 ], [ -122.385755176650932, 37.781077752105325 ], [ -122.385766945797698, 37.781200487306606 ], [ -122.385749665539848, 37.78120145042832 ], [ -122.385737896774387, 37.781078715494381 ], [ -122.385622107018349, 37.781084687547477 ], [ -122.385633892683231, 37.781208109217374 ], [ -122.385616612767805, 37.781209072314041 ], [ -122.385604844221021, 37.781086337366979 ], [ -122.385487342103474, 37.781093023397624 ], [ -122.385499110464124, 37.781215758630843 ], [ -122.38548182985329, 37.781216721718849 ], [ -122.385470061873946, 37.781093986752957 ], [ -122.385352559732169, 37.781100672649266 ], [ -122.38536432752538, 37.781223407901315 ], [ -122.385347047602892, 37.781224370958491 ], [ -122.385335279499117, 37.781101635984861 ], [ -122.385219507099919, 37.781108294087041 ], [ -122.385231275020445, 37.781231029346657 ], [ -122.385213994748526, 37.781231992389863 ], [ -122.385202226517421, 37.781109257408659 ], [ -122.385086454440369, 37.781115915374649 ], [ -122.385098222142247, 37.781238650647374 ], [ -122.385080941520883, 37.781239613676604 ], [ -122.385069174200339, 37.781116878671227 ], [ -122.38495511409829, 37.781122822411653 ], [ -122.384966899006869, 37.781246244141819 ], [ -122.384949618382038, 37.781247207151821 ], [ -122.384937851277286, 37.781124472133506 ], [ -122.384823791153082, 37.781130415746894 ], [ -122.384835575844662, 37.781253837490027 ], [ -122.384818295216348, 37.781254800480774 ], [ -122.384792264836477, 37.780979154238715 ], [ -122.384809545055035, 37.780978191257269 ], [ -122.384831743135436, 37.781102819695278 ], [ -122.384925045670656, 37.781097207947639 ], [ -122.384923587517477, 37.780971560938383 ], [ -122.384940867732567, 37.780970597937682 ], [ -122.384963066031062, 37.781095226351141 ], [ -122.385056368546813, 37.781089614499592 ], [ -122.385054910171618, 37.780963967491779 ], [ -122.385072190383269, 37.780963004471836 ], [ -122.385094388899816, 37.781087632860746 ], [ -122.385189421508272, 37.781081993240349 ], [ -122.385187962562227, 37.780956346239556 ], [ -122.385205242424405, 37.780955383205644 ], [ -122.38522744150788, 37.781080011564157 ], [ -122.385322474096498, 37.781074371836517 ], [ -122.385321014925523, 37.780948724837195 ], [ -122.385338295130154, 37.780947761778229 ], [ -122.385360493742681, 37.78107239012293 ], [ -122.385457256077231, 37.781066722624757 ], [ -122.385455797024363, 37.780941075621371 ], [ -122.38547307722547, 37.78094011254268 ], [ -122.385495276407823, 37.781064740856642 ], [ -122.385592038722095, 37.781059073247853 ], [ -122.385590579095435, 37.780933426251508 ], [ -122.385607859293003, 37.780932463153057 ], [ -122.385630058353271, 37.781057091447337 ], [ -122.38572509122794, 37.781051451389651 ], [ -122.385723631030388, 37.780925804400319 ], [ -122.385740911570423, 37.780924841276843 ], [ -122.385763111197619, 37.781049469540704 ], [ -122.385849512311808, 37.781044654171389 ], [ -122.385848051896943, 37.78091900690886 ], [ -122.385865332440758, 37.780918044041726 ], [ -122.385887514843574, 37.781041985837916 ], [ -122.385989466046908, 37.781036234899503 ], [ -122.385988006094351, 37.780910587902042 ], [ -122.386005286281474, 37.780909624745334 ], [ -122.386027486347686, 37.781034252959756 ], [ -122.38611734695634, 37.781029382050761 ], [ -122.386115886434652, 37.78090373478566 ], [ -122.386133166625513, 37.780902771884811 ], [ -122.386155349124707, 37.781026713636507 ], [ -122.386250399355106, 37.78102175959976 ], [ -122.386248938262554, 37.780896112341686 ], [ -122.386266218795839, 37.780895149415798 ], [ -122.386288401860739, 37.781019091137082 ], [ -122.386381721962337, 37.781014164675518 ], [ -122.386380260647812, 37.780888517418902 ], [ -122.386397541177601, 37.780887554473743 ], [ -122.386419741895395, 37.781012182614816 ], [ -122.386513044542724, 37.781006569605005 ], [ -122.386511583006197, 37.780880922349844 ], [ -122.386528863532533, 37.780879959385452 ], [ -122.386551064468406, 37.781004587501954 ], [ -122.386646096514042, 37.780998946712984 ], [ -122.386644635444497, 37.780873299448245 ], [ -122.386661915621403, 37.780872336469891 ], [ -122.386684116778227, 37.780996964561524 ], [ -122.386782608677009, 37.780991268294322 ], [ -122.386781146684797, 37.780865621042153 ], [ -122.386798427204084, 37.780864658038261 ], [ -122.386820628587657, 37.780989286104372 ], [ -122.386907012122748, 37.780983783515829 ], [ -122.386905549920243, 37.780858136265046 ], [ -122.386922830436163, 37.780857173242921 ], [ -122.386945032026247, 37.780981801285769 ], [ -122.387038334595715, 37.780976187860247 ], [ -122.387036872171194, 37.780850540610921 ], [ -122.387054152683675, 37.780849577569541 ], [ -122.387076354491839, 37.780974205587825 ], [ -122.387174846330339, 37.780968508992949 ], [ -122.387173384021025, 37.7808428617396 ], [ -122.387190664183962, 37.780841898683754 ], [ -122.387212865872911, 37.78096652668205 ], [ -122.387306168748907, 37.78096091303906 ], [ -122.387304706217577, 37.780835265787175 ], [ -122.387321986377088, 37.780834302712059 ], [ -122.387344188284104, 37.780958930685784 ], [ -122.387435761378228, 37.780953344631229 ], [ -122.387434316073197, 37.780828383824961 ], [ -122.387451578437933, 37.780826734292219 ], [ -122.387473781252041, 37.780951362230645 ], [ -122.387582651602727, 37.780945499137275 ], [ -122.38754001837809, 37.780493630652451 ], [ -122.38744131821305, 37.780491090765793 ], [ -122.387419058221624, 37.780500374265543 ], [ -122.387330736209734, 37.780497667864211 ], [ -122.387308476209526, 37.780506951617653 ], [ -122.387208063026961, 37.780505125406954 ], [ -122.387184073602839, 37.780514436820333 ], [ -122.387081931006932, 37.780512638185321 ], [ -122.387059670971126, 37.780521921891747 ], [ -122.386964429936867, 37.780519325963184 ], [ -122.386942169884378, 37.780528609647433 ], [ -122.386852118103619, 37.780525930572708 ], [ -122.386829875474817, 37.780535900680007 ], [ -122.386736346744712, 37.780532590439464 ], [ -122.386712374345294, 37.780542588206671 ], [ -122.386618863049748, 37.780539964317235 ], [ -122.386594873201545, 37.780549275890777 ], [ -122.386499632141522, 37.780546679312224 ], [ -122.386475659366695, 37.780556677311395 ], [ -122.386383878154234, 37.780554025277233 ], [ -122.386359888272054, 37.780563336802956 ], [ -122.386266376955888, 37.780560712359396 ], [ -122.386242404491071, 37.780570710305611 ], [ -122.386143703562112, 37.780568168794694 ], [ -122.386119713984229, 37.780577479991436 ], [ -122.386022743164474, 37.78057491124985 ], [ -122.386000500402702, 37.780584880926071 ], [ -122.385901799477139, 37.780582339761835 ], [ -122.385877827288269, 37.780592337079185 ], [ -122.385784298190572, 37.780589026363579 ], [ -122.38576205573851, 37.780598995989244 ], [ -122.385668544412525, 37.780596371620753 ], [ -122.385646283822041, 37.780605654791167 ], [ -122.385554502585677, 37.780603002386016 ], [ -122.385532242331863, 37.780612285803919 ], [ -122.385433541724893, 37.780609743967645 ], [ -122.385411298534606, 37.78061971381274 ], [ -122.385310868512505, 37.780617199530866 ], [ -122.385288625649494, 37.780627169347277 ], [ -122.385191654786624, 37.780624599647666 ], [ -122.38516766472523, 37.780633910656128 ], [ -122.385079342290652, 37.780631202574007 ], [ -122.385057082314987, 37.780640485896626 ], [ -122.384960111442751, 37.78063791600659 ], [ -122.384936138770243, 37.780647913412501 ], [ -122.384835917442729, 37.780653636341071 ], [ -122.384842007573795, 37.78075723388941 ], [ -122.384817825799914, 37.78075899421075 ], [ -122.38480325384981, 37.78052574104445 ], [ -122.384827435209161, 37.780523981006105 ], [ -122.384843799331136, 37.780623294238858 ], [ -122.384923281326039, 37.780618589884874 ], [ -122.384925926962097, 37.780518286009212 ], [ -122.384957841591557, 37.780616663880899 ], [ -122.385044241908545, 37.780611849106826 ], [ -122.385045157967028, 37.780511572605498 ], [ -122.385078784737303, 37.780609236348262 ], [ -122.385154824277294, 37.780605273878329 ], [ -122.385157469939188, 37.780504969717121 ], [ -122.38518938452367, 37.780603347531915 ], [ -122.385275768076681, 37.780597846132551 ], [ -122.385276683130513, 37.780497569640254 ], [ -122.385310328316436, 37.780595919750695 ], [ -122.385398458680143, 37.78059107677575 ], [ -122.385399356494702, 37.780490114106904 ], [ -122.385433018927529, 37.78058915090709 ], [ -122.385519402086118, 37.780583648785594 ], [ -122.385520317170744, 37.78048337283478 ], [ -122.385553962326881, 37.780581722881479 ], [ -122.385633443879414, 37.780577017779677 ], [ -122.385634358810009, 37.780476741827854 ], [ -122.385666274013943, 37.780575119514069 ], [ -122.385749215060514, 37.780570359001402 ], [ -122.385750112750941, 37.780469396598548 ], [ -122.385783775282164, 37.780568432755352 ], [ -122.385864986912736, 37.780563700098369 ], [ -122.385865884092837, 37.780462737425502 ], [ -122.38589954712829, 37.780561773818384 ], [ -122.385987659981154, 37.780556243958578 ], [ -122.385988556648442, 37.780455281290152 ], [ -122.386022220190043, 37.78055431764264 ], [ -122.386106890951012, 37.780549529481313 ], [ -122.386107787802118, 37.780448566806321 ], [ -122.386141451153719, 37.780547603130415 ], [ -122.386229563971753, 37.780542073089819 ], [ -122.386232190406915, 37.780441082739081 ], [ -122.386264124167781, 37.780540146702961 ], [ -122.386347065143937, 37.780535386044313 ], [ -122.386349691419113, 37.78043439569084 ], [ -122.386381625333826, 37.780533459623001 ], [ -122.386462836549086, 37.780528726834362 ], [ -122.386465444877402, 37.780427049764754 ], [ -122.386497396725886, 37.780526800104532 ], [ -122.386582067431817, 37.780522011876563 ], [ -122.386584675942643, 37.78042033479867 ], [ -122.386616627602407, 37.780520085111789 ], [ -122.386699551102055, 37.78051463803542 ], [ -122.386702159451801, 37.78041296095477 ], [ -122.386734111266165, 37.780512711236199 ], [ -122.386817052181556, 37.780507950246935 ], [ -122.386817930281353, 37.780406301126988 ], [ -122.386851612353468, 37.780506023962438 ], [ -122.386929363990731, 37.7805013456708 ], [ -122.386930242282716, 37.780399696544364 ], [ -122.386963924156646, 37.780499419353383 ], [ -122.387046865035501, 37.780494657927875 ], [ -122.387047743173568, 37.78039300907502 ], [ -122.387081425188285, 37.780492731301436 ], [ -122.387171267622861, 37.780487172869918 ], [ -122.387173875339855, 37.780385496327504 ], [ -122.387205827768923, 37.780485246207022 ], [ -122.387295687629134, 37.780480374124949 ], [ -122.387296547982558, 37.780378038825731 ], [ -122.387330247768816, 37.780478447425573 ], [ -122.387406269602806, 37.780473796784797 ], [ -122.38740712980379, 37.780371461484656 ], [ -122.38744082973659, 37.78047187005302 ], [ -122.387527230063114, 37.780467053179258 ], [ -122.38749949992625, 37.780056836734332 ], [ -122.387400782538194, 37.780053609825671 ], [ -122.387378540131436, 37.780063580311925 ], [ -122.387290201196578, 37.780060187435744 ], [ -122.387267941315415, 37.780069470907662 ], [ -122.387167511635454, 37.780066958487033 ], [ -122.387143539437361, 37.780076956068172 ], [ -122.387041380009435, 37.780074471228168 ], [ -122.387019120092901, 37.780083754653084 ], [ -122.386922167327057, 37.780081873095298 ], [ -122.386901619695664, 37.780090442368873 ], [ -122.386811551008179, 37.78008707681861 ], [ -122.386787578762636, 37.780097074601919 ], [ -122.386695780329632, 37.780093736646045 ], [ -122.386671790289242, 37.780103048241536 ], [ -122.386578279887487, 37.780100424039603 ], [ -122.386554289830215, 37.78010973561117 ], [ -122.386459049681108, 37.780107138994076 ], [ -122.386435059945711, 37.780116450261254 ], [ -122.386343278946669, 37.780113798749966 ], [ -122.386319288841676, 37.780123109724549 ], [ -122.386225778441045, 37.780120485792217 ], [ -122.386201788319156, 37.780129796742877 ], [ -122.38610135893272, 37.780127283134078 ], [ -122.386079098889809, 37.780136566656026 ], [ -122.385982128640109, 37.780133997606264 ], [ -122.38595813883623, 37.780143308776367 ], [ -122.385859438837869, 37.78014076729638 ], [ -122.385837196191162, 37.780150737217127 ], [ -122.385743667990269, 37.780147426188911 ], [ -122.385719678159148, 37.780156737585067 ], [ -122.385627896776001, 37.780154084973319 ], [ -122.385603907274145, 37.780163396340377 ], [ -122.385513855977493, 37.78016071596884 ], [ -122.385489865760334, 37.780170027049152 ], [ -122.385392895494292, 37.780167457789418 ], [ -122.385368905944745, 37.780176768559457 ], [ -122.385270205929046, 37.780174226860836 ], [ -122.385246216015972, 37.78018353761145 ], [ -122.385150975133058, 37.78018094022346 ], [ -122.385126985555786, 37.780190251218855 ], [ -122.385038663996198, 37.78018754310051 ], [ -122.385014674056748, 37.780196854078561 ], [ -122.384919433510831, 37.780194256498035 ], [ -122.38489544320835, 37.780203567457356 ], [ -122.384795222823172, 37.780209290346271 ], [ -122.384801312515108, 37.780312887910483 ], [ -122.384777113810173, 37.780313961773459 ], [ -122.384762559495741, 37.780081395028191 ], [ -122.384786741057312, 37.780079634992532 ], [ -122.384803105027004, 37.780178948238863 ], [ -122.384882586203048, 37.780174243917422 ], [ -122.384885231532309, 37.780073940040232 ], [ -122.384917146262893, 37.780172317925249 ], [ -122.385001816666616, 37.780167530831704 ], [ -122.385004462173583, 37.780067226671626 ], [ -122.385036376713245, 37.780165604530019 ], [ -122.38511414553922, 37.780161614154224 ], [ -122.385116790908242, 37.780061310540667 ], [ -122.385148705594133, 37.780159688368748 ], [ -122.385233375608649, 37.780154900565314 ], [ -122.385236021162356, 37.780054596943422 ], [ -122.385267935657353, 37.780152974744887 ], [ -122.385356065837257, 37.780148131521123 ], [ -122.385358710872126, 37.780047827627314 ], [ -122.385390625872631, 37.780146205390146 ], [ -122.385477025953321, 37.780141390018422 ], [ -122.385479653051561, 37.780040399682747 ], [ -122.385511585982442, 37.780139463852002 ], [ -122.385591067071402, 37.78013475905297 ], [ -122.385593711788431, 37.78003445515364 ], [ -122.38562562709447, 37.78013283285312 ], [ -122.385706855349099, 37.780128787029341 ], [ -122.385709482473402, 37.780027796408206 ], [ -122.385741415359448, 37.780126860520987 ], [ -122.385824355914565, 37.780122100504215 ], [ -122.385825252791648, 37.780021137554606 ], [ -122.38585891591876, 37.780120173961421 ], [ -122.385945315592835, 37.780115358252047 ], [ -122.385947942745361, 37.780014367894388 ], [ -122.38597987560469, 37.780113432222926 ], [ -122.386066275948011, 37.78010861613928 ], [ -122.38606717251001, 37.780007653736739 ], [ -122.38610083595357, 37.78010669007471 ], [ -122.386188965678286, 37.780101846233919 ], [ -122.386191574380462, 37.780000169711762 ], [ -122.386223525670573, 37.780099919858799 ], [ -122.386306466157762, 37.780095159228338 ], [ -122.386309092126623, 37.77999416887333 ], [ -122.386341026143853, 37.780093232818778 ], [ -122.386422253963318, 37.780089186233084 ], [ -122.386424863030612, 37.77998750941989 ], [ -122.386456813943639, 37.780087259789596 ], [ -122.386541484497073, 37.780082471584841 ], [ -122.386544092702067, 37.77998079450537 ], [ -122.386576044464221, 37.780080544831833 ], [ -122.386658984914163, 37.780075784227932 ], [ -122.386661592958049, 37.779974107145748 ], [ -122.386693544875143, 37.780073857440478 ], [ -122.386776485303088, 37.780069096479352 ], [ -122.386777363799169, 37.779967447346195 ], [ -122.386809315183925, 37.780067197895306 ], [ -122.386888813892412, 37.780063178385696 ], [ -122.386889674448653, 37.77996084281277 ], [ -122.38692337384856, 37.780061251805442 ], [ -122.387006314247685, 37.780056490682639 ], [ -122.387007174648929, 37.779954155383322 ], [ -122.38704087419768, 37.780054564067953 ], [ -122.387130733547679, 37.78004969211122 ], [ -122.387133323862429, 37.779947329117419 ], [ -122.38716529349125, 37.780047765460061 ], [ -122.387255152824864, 37.780042893408485 ], [ -122.387256012876136, 37.779940557832525 ], [ -122.387289712762055, 37.78004096672084 ], [ -122.387365734157797, 37.780036316380411 ], [ -122.387366594049666, 37.779933980528931 ], [ -122.387400294082084, 37.78003438938579 ], [ -122.387486693563403, 37.780029572821469 ], [ -122.387461810378028, 37.779663260524117 ], [ -122.387378661112308, 37.779659784635669 ], [ -122.387356418813553, 37.779669754843859 ], [ -122.387276728664503, 37.779666223506673 ], [ -122.387252739526915, 37.779675535209975 ], [ -122.387173049376599, 37.779672003802716 ], [ -122.387150789943092, 37.779681287247612 ], [ -122.387067640671745, 37.779677811139862 ], [ -122.387043668592767, 37.779687808975972 ], [ -122.386969150543408, 37.779683507921064 ], [ -122.386945178103403, 37.779693505742671 ], [ -122.386868930320873, 37.779689232309579 ], [ -122.386844958564382, 37.779699230374298 ], [ -122.386765268401049, 37.779695698416859 ], [ -122.386741279182857, 37.779705009741512 ], [ -122.386659859644624, 37.77970150593859 ], [ -122.386635887496141, 37.77971150341719 ], [ -122.386556180245535, 37.77970728514304 ], [ -122.386533937822136, 37.779717255195997 ], [ -122.386452518273302, 37.779713750975354 ], [ -122.386428528664126, 37.77972306224185 ], [ -122.38635402805015, 37.779719447242712 ], [ -122.386331768168034, 37.779728731087609 ], [ -122.386245159413448, 37.779725309752138 ], [ -122.386222916935935, 37.779735279471808 ], [ -122.386151858355305, 37.779730922551266 ], [ -122.386127868702886, 37.77974023375657 ], [ -122.386048178882604, 37.779736701583559 ], [ -122.386025936036276, 37.779746671546171 ], [ -122.385946246559868, 37.779743139298724 ], [ -122.385922256538748, 37.779752450742315 ], [ -122.385842567054112, 37.779748918150233 ], [ -122.385818577011165, 37.779758229298103 ], [ -122.385742346663463, 37.779754641855682 ], [ -122.385718357291026, 37.779763952697529 ], [ -122.385635207994184, 37.779760475579685 ], [ -122.385611235349785, 37.779770473129936 ], [ -122.385528086050684, 37.779766995936541 ], [ -122.385504096654358, 37.779776307009364 ], [ -122.38542267708938, 37.779772802077623 ], [ -122.385400434501221, 37.779782772191204 ], [ -122.385319014927063, 37.779779266913316 ], [ -122.385296754890703, 37.779788550288139 ], [ -122.385225696313427, 37.779784192809487 ], [ -122.385201723952207, 37.779794190270913 ], [ -122.385120304035951, 37.779790685135936 ], [ -122.38509804431726, 37.779799968467685 ], [ -122.385020084218212, 37.779796407941809 ], [ -122.38499609406378, 37.779805719196837 ], [ -122.384916404566042, 37.779802185978852 ], [ -122.384894161901101, 37.779812155996879 ], [ -122.38480257260197, 37.779817053634027 ], [ -122.384809835241697, 37.779898657585051 ], [ -122.384782194261888, 37.779900472932383 ], [ -122.384761383067243, 37.779694102231538 ], [ -122.384789023963819, 37.779692286614427 ], [ -122.384808725038937, 37.779786739726958 ], [ -122.384879557453601, 37.779782173395887 ], [ -122.384880595342565, 37.779686702548538 ], [ -122.384914117331078, 37.779780247404453 ], [ -122.384983237080689, 37.779776395391224 ], [ -122.384984274829336, 37.77968092426827 ], [ -122.385017796952795, 37.779774469369393 ], [ -122.385085186616962, 37.779770645233363 ], [ -122.38508622457347, 37.779675173829325 ], [ -122.385119746476775, 37.779768718907071 ], [ -122.385188848787607, 37.77976418060323 ], [ -122.385189886610789, 37.779668709198148 ], [ -122.385223408641721, 37.779762254246563 ], [ -122.385283897452879, 37.779759226795328 ], [ -122.385284934821826, 37.779663755944007 ], [ -122.385318457309211, 37.779757300685375 ], [ -122.385385847281285, 37.779753476097383 ], [ -122.385386866740049, 37.779657318531406 ], [ -122.3854203897058, 37.77975086351293 ], [ -122.385491239136826, 37.779746983539091 ], [ -122.385492276232114, 37.779651512411178 ], [ -122.385525798982087, 37.779745057368359 ], [ -122.385598378143868, 37.779741149940357 ], [ -122.385599415094418, 37.779645678536831 ], [ -122.385632937976666, 37.779739223463643 ], [ -122.385705499691042, 37.779734629250548 ], [ -122.385706536510781, 37.779639158120546 ], [ -122.385740059531955, 37.779732703291586 ], [ -122.385805719718547, 37.779728905856508 ], [ -122.385806756416358, 37.779633435000086 ], [ -122.385840279547224, 37.779726979593605 ], [ -122.385909399199221, 37.7797231270374 ], [ -122.385910435756728, 37.779627655905408 ], [ -122.385943959022555, 37.779721200744085 ], [ -122.386013061231836, 37.779716661682606 ], [ -122.386014097656016, 37.779621190549562 ], [ -122.386047621049443, 37.779714735358894 ], [ -122.38611501060636, 37.779710910634236 ], [ -122.386116047238417, 37.779615439220123 ], [ -122.386149570411703, 37.779708984006099 ], [ -122.386208311974158, 37.779705297309562 ], [ -122.386211077885747, 37.779609798774842 ], [ -122.386242871788397, 37.779703371203219 ], [ -122.386317180591391, 37.779699435108718 ], [ -122.38631821662446, 37.77960396397274 ], [ -122.386351740393124, 37.779697508695882 ], [ -122.386415670790853, 37.779693738872112 ], [ -122.386416706351284, 37.779598267740703 ], [ -122.386450230587357, 37.779691812430414 ], [ -122.386519350181956, 37.779687959791211 ], [ -122.386520385602097, 37.779592488384218 ], [ -122.386553892529193, 37.77968534660009 ], [ -122.386623012105417, 37.779681493625532 ], [ -122.386624047399195, 37.779586022492111 ], [ -122.386657571897828, 37.779679567397658 ], [ -122.386728421189233, 37.779675686405767 ], [ -122.386729456700351, 37.779580215540342 ], [ -122.386762980969223, 37.779673759872402 ], [ -122.386832100523861, 37.779669906775261 ], [ -122.386833135894662, 37.779574435634252 ], [ -122.386866660298466, 37.779667980211499 ], [ -122.386932302936756, 37.779663495979172 ], [ -122.386933338178679, 37.779568024837168 ], [ -122.386966862705819, 37.779661569386036 ], [ -122.387030793048368, 37.779657799503305 ], [ -122.38704566565184, 37.779562106599087 ], [ -122.387054991513921, 37.779656725452249 ], [ -122.387136202059708, 37.779651991644378 ], [ -122.387139193519673, 37.77956541658935 ], [ -122.387170761825075, 37.779650065266061 ], [ -122.387239881329535, 37.779646211655297 ], [ -122.387241125495137, 37.779558977842669 ], [ -122.387274441082525, 37.779644284971994 ], [ -122.387341830851355, 37.779640459266005 ], [ -122.387344804633926, 37.779553198035785 ], [ -122.387376373154481, 37.7796378461085 ], [ -122.387448951768221, 37.779633937546841 ], [ -122.387428243590108, 37.779295714050406 ], [ -122.387339905566151, 37.779292321211003 ], [ -122.38731766337223, 37.779302291412563 ], [ -122.387236244241279, 37.77929878773282 ], [ -122.387212254525394, 37.779308099439604 ], [ -122.387132565463105, 37.779304567993648 ], [ -122.387108575718415, 37.779313879130164 ], [ -122.387028886654846, 37.779310347614164 ], [ -122.387004914343294, 37.779320345448582 ], [ -122.386932126735232, 37.779316016678415 ], [ -122.386908154408829, 37.779326014493151 ], [ -122.386828447902374, 37.779321796397241 ], [ -122.386804475567118, 37.779331794465456 ], [ -122.386726516216612, 37.779328234787421 ], [ -122.3867025267663, 37.779337546110341 ], [ -122.386624566736728, 37.779333986925117 ], [ -122.386600577610722, 37.779343297947158 ], [ -122.386520887847865, 37.7793397660989 ], [ -122.386496916150335, 37.779349763818921 ], [ -122.386417208949837, 37.779345545456096 ], [ -122.386393237236504, 37.77935554315502 ], [ -122.386318719558147, 37.779351241688801 ], [ -122.386296477216476, 37.779361211972173 ], [ -122.386211598617734, 37.779357762936172 ], [ -122.386187609086349, 37.779367073879669 ], [ -122.386113108495195, 37.779363458733613 ], [ -122.386089119302554, 37.779372769926113 ], [ -122.386011159604379, 37.779369210055243 ], [ -122.385987187482783, 37.779379207677103 ], [ -122.385909210351812, 37.779374961294259 ], [ -122.385885237875669, 37.779384959175481 ], [ -122.385802088988314, 37.779381481900515 ], [ -122.385778099750866, 37.779390793029705 ], [ -122.385698409983121, 37.779387260900187 ], [ -122.385676150450635, 37.779396544067176 ], [ -122.385598190747288, 37.779392983923266 ], [ -122.385574218216505, 37.779402981466639 ], [ -122.3854945117032, 37.779398762469064 ], [ -122.3854705391566, 37.779408759991362 ], [ -122.38538912034204, 37.779405255030689 ], [ -122.385366860087544, 37.779414538699463 ], [ -122.385285441271535, 37.779411033667223 ], [ -122.385261469031803, 37.779421030866885 ], [ -122.385190410808178, 37.779416673366669 ], [ -122.38516642079081, 37.779425984382435 ], [ -122.385088461426918, 37.77942242389598 ], [ -122.38506448916398, 37.779432421330149 ], [ -122.384984782302112, 37.779428201993547 ], [ -122.384960810030293, 37.779438199681202 ], [ -122.384881120582591, 37.779434666444651 ], [ -122.38485713086655, 37.779443977391921 ], [ -122.384765559446308, 37.779449561719943 ], [ -122.384771214222269, 37.779535998445006 ], [ -122.384747015071127, 37.779537072038458 ], [ -122.38473308847739, 37.779329217537743 ], [ -122.384757287215081, 37.779328143952647 ], [ -122.384773494195869, 37.779421279213679 ], [ -122.384846073080865, 37.779417372248531 ], [ -122.384848858140316, 37.779322559636441 ], [ -122.384880632782526, 37.779415445992221 ], [ -122.384949752194402, 37.77941159399834 ], [ -122.384952537135234, 37.779316781932884 ], [ -122.384984294475274, 37.779408981541515 ], [ -122.385051684148522, 37.779405157144254 ], [ -122.385056216100068, 37.779311003588973 ], [ -122.385086243853095, 37.779403231376833 ], [ -122.385155363235981, 37.779399378987847 ], [ -122.385158147906921, 37.779304566642743 ], [ -122.38518992292822, 37.779397452915447 ], [ -122.385248663600038, 37.779393766707848 ], [ -122.385253195301217, 37.779299613144822 ], [ -122.385283223287274, 37.779391840608099 ], [ -122.385354072735922, 37.779387960985474 ], [ -122.385358586870339, 37.779293120699045 ], [ -122.385388632410709, 37.779386034580241 ], [ -122.385459481495417, 37.779382154625232 ], [ -122.385462265784483, 37.779287342547207 ], [ -122.385494023751633, 37.779379542293618 ], [ -122.385561413364954, 37.77937571733046 ], [ -122.385565944668585, 37.779281563755077 ], [ -122.385595973035649, 37.779373791139029 ], [ -122.385663362299539, 37.779369966397688 ], [ -122.385667876044934, 37.779275126373676 ], [ -122.385697921964919, 37.779368040176379 ], [ -122.385765311917211, 37.779364215640285 ], [ -122.385769825525102, 37.779269375337698 ], [ -122.385799871570299, 37.779362289114509 ], [ -122.385874162638899, 37.779357667403531 ], [ -122.38587696382136, 37.779263541485342 ], [ -122.385908722286104, 37.779355740845865 ], [ -122.385976111863471, 37.779351915920223 ], [ -122.385978912570593, 37.779257790005062 ], [ -122.386010671519301, 37.779349989881837 ], [ -122.386078060733283, 37.77934616462889 ], [ -122.386080844570401, 37.779251352255542 ], [ -122.386112620376821, 37.779344238286029 ], [ -122.386174820757347, 37.779340496265526 ], [ -122.386179333847906, 37.779245656221427 ], [ -122.386209380395755, 37.779338569894314 ], [ -122.386283671761092, 37.779333947919731 ], [ -122.386288202139696, 37.779239794041324 ], [ -122.386318231386639, 37.779332021242034 ], [ -122.386380431746588, 37.779328279113052 ], [ -122.386384962016137, 37.779234125779993 ], [ -122.386414991380946, 37.77932635295614 ], [ -122.38648584000218, 37.779322472115325 ], [ -122.386488640754166, 37.779228346176467 ], [ -122.386520399624118, 37.779320545652922 ], [ -122.386589518862621, 37.779316692697755 ], [ -122.386592302045827, 37.779221880311852 ], [ -122.386624078479215, 37.779314766204962 ], [ -122.386691468335471, 37.779310941139499 ], [ -122.386694251035379, 37.779216128482069 ], [ -122.386726027939744, 37.77930901434226 ], [ -122.386793400000514, 37.779304502779596 ], [ -122.38679620001615, 37.779210376838677 ], [ -122.386827959599159, 37.779302575952464 ], [ -122.386897078804992, 37.779298722816996 ], [ -122.386901608410881, 37.779204569189005 ], [ -122.386931638412193, 37.779296796508632 ], [ -122.386992108980877, 37.779293081467337 ], [ -122.386996638465945, 37.779198927835616 ], [ -122.387026668576013, 37.779291154856551 ], [ -122.387095787760913, 37.779287301604562 ], [ -122.38710029967234, 37.779192461524332 ], [ -122.387130347350677, 37.779285374963401 ], [ -122.387199466531811, 37.779281521925199 ], [ -122.387204309717603, 37.779199724010219 ], [ -122.387234026109212, 37.779279594979052 ], [ -122.387304857552181, 37.779275027470717 ], [ -122.387309700628478, 37.779193229825893 ], [ -122.387339417137795, 37.779273101042833 ], [ -122.387415455175415, 37.779269136564935 ], [ -122.387394991136247, 37.778940523542531 ], [ -122.387315302113649, 37.778936992225411 ], [ -122.387291312863496, 37.778946303668732 ], [ -122.387218525259328, 37.778941975080627 ], [ -122.38719628281504, 37.778951945540015 ], [ -122.38712349555685, 37.77894761688772 ], [ -122.387099505926273, 37.778956928022971 ], [ -122.387025006394012, 37.778953313441747 ], [ -122.387002746472433, 37.778962597145551 ], [ -122.386929976655324, 37.778958954818265 ], [ -122.386905987003843, 37.778968266188713 ], [ -122.386836658833175, 37.778963881995679 ], [ -122.386812687306417, 37.778973880055133 ], [ -122.386736440270226, 37.778969606535817 ], [ -122.386712468022296, 37.778979604036806 ], [ -122.386637951048542, 37.77897530276654 ], [ -122.386613979138446, 37.778985300516517 ], [ -122.386549822682738, 37.778980146669305 ], [ -122.386527580483204, 37.778990116996944 ], [ -122.386449603383866, 37.778985870976705 ], [ -122.386425631783965, 37.778995868408273 ], [ -122.386356303615884, 37.778991483932835 ], [ -122.386332313881979, 37.779000795186512 ], [ -122.386256084279836, 37.778997207801154 ], [ -122.386233824940902, 37.779006491348653 ], [ -122.386164496774228, 37.779002106760423 ], [ -122.386140524798748, 37.779012104688697 ], [ -122.386067737197138, 37.779007775390234 ], [ -122.386043765192852, 37.779017772749661 ], [ -122.385962346433857, 37.779014268190103 ], [ -122.385938356643209, 37.779023579363574 ], [ -122.385865569388116, 37.779019249934791 ], [ -122.385841597013936, 37.779029247533202 ], [ -122.385768809758915, 37.779024918044691 ], [ -122.385744837376848, 37.779034915898023 ], [ -122.385675509212518, 37.779030531022293 ], [ -122.385651520065593, 37.779039841851741 ], [ -122.385578749547165, 37.77903619870164 ], [ -122.385554760393234, 37.779045509785973 ], [ -122.385481989874023, 37.779041866576151 ], [ -122.385458000713072, 37.779051177915363 ], [ -122.385385212767062, 37.779046848201126 ], [ -122.385361223578457, 37.779056158971507 ], [ -122.385286723685297, 37.779052543297539 ], [ -122.385262734143524, 37.779061854327978 ], [ -122.385195135701593, 37.77905744150933 ], [ -122.385171163224882, 37.779067438971381 ], [ -122.385094916187072, 37.779063164390635 ], [ -122.385070944393846, 37.779073162095791 ], [ -122.385001616233609, 37.779068776823863 ], [ -122.38497935636353, 37.77907805986537 ], [ -122.384906586186588, 37.779074416294911 ], [ -122.384884326309916, 37.779083699593059 ], [ -122.384796197708141, 37.779088542459625 ], [ -122.384801451464668, 37.77915919068996 ], [ -122.384780712232896, 37.779160209251955 ], [ -122.384765734942761, 37.778979153747279 ], [ -122.384786456703722, 37.778977448743071 ], [ -122.384804149136215, 37.779060946405302 ], [ -122.384871538841949, 37.779057121830682 ], [ -122.384874585188271, 37.778972606432866 ], [ -122.384906098382288, 37.779055195841352 ], [ -122.384966568862538, 37.779051482113282 ], [ -122.384969632515677, 37.778967652883104 ], [ -122.385001128397789, 37.779049556096091 ], [ -122.385058156860921, 37.779046584353601 ], [ -122.385061202980566, 37.778962068401654 ], [ -122.385092716384577, 37.779044658035005 ], [ -122.385158376003019, 37.779040861234485 ], [ -122.38516315173905, 37.77895631817001 ], [ -122.385192918111116, 37.779038248990936 ], [ -122.385249946543951, 37.779035276606521 ], [ -122.385253009876607, 37.778951447368748 ], [ -122.385284506064338, 37.779033350506261 ], [ -122.385350165317007, 37.779029553604488 ], [ -122.385353228882295, 37.778945724358508 ], [ -122.385382995459778, 37.779027655131593 ], [ -122.385445195618914, 37.779023913770359 ], [ -122.385448258723784, 37.778940084252753 ], [ -122.385479755121978, 37.779021987338304 ], [ -122.385541972691954, 37.779018932096108 ], [ -122.385545018273902, 37.778934416680386 ], [ -122.385576532197149, 37.779017005910269 ], [ -122.385638732330676, 37.779013264172356 ], [ -122.385641777795314, 37.77892874847948 ], [ -122.385673291830699, 37.779011337958153 ], [ -122.38573203252615, 37.779007651778535 ], [ -122.385735094960694, 37.77892382225879 ], [ -122.385766592014193, 37.779005725262394 ], [ -122.385828792128677, 37.779001983424223 ], [ -122.385831854467739, 37.778918154451013 ], [ -122.385863351625531, 37.779000057428874 ], [ -122.385925569154423, 37.778997001709705 ], [ -122.385930344007448, 37.778912458338894 ], [ -122.385960128639468, 37.778995075411409 ], [ -122.386030959889439, 37.778990508668088 ], [ -122.386034022338819, 37.778906679409381 ], [ -122.386065519368728, 37.778988582338918 ], [ -122.386127736893627, 37.778985527062204 ], [ -122.386132511508848, 37.778900983408484 ], [ -122.386162278927955, 37.778982913985502 ], [ -122.386221036657432, 37.7789799137378 ], [ -122.386224081811065, 37.778895398298431 ], [ -122.386255596133822, 37.778977987627471 ], [ -122.386319526256145, 37.778974217575232 ], [ -122.386322588033238, 37.778890388314295 ], [ -122.38635408572037, 37.778972291161459 ], [ -122.386412826344156, 37.778968604368089 ], [ -122.386417618076294, 37.778884747421706 ], [ -122.386447385803351, 37.778966677926974 ], [ -122.386514775006972, 37.77896285296778 ], [ -122.386517836902243, 37.778879023421496 ], [ -122.386549334453889, 37.778960926222204 ], [ -122.386602903347566, 37.778958008816609 ], [ -122.386605964804218, 37.778874179548069 ], [ -122.386637462796912, 37.778956082319787 ], [ -122.386699662825961, 37.778952340022151 ], [ -122.386702724173148, 37.778868510751018 ], [ -122.386734222270135, 37.778950413496958 ], [ -122.386799881728336, 37.778946616056871 ], [ -122.386804673015121, 37.778862758819848 ], [ -122.386834441160303, 37.778944689227728 ], [ -122.386894928894066, 37.778941660955091 ], [ -122.38689797293344, 37.778857145503274 ], [ -122.386929488335198, 37.77893973464726 ], [ -122.386989958613299, 37.77893601960681 ], [ -122.386993002191389, 37.778851503883409 ], [ -122.387024518042367, 37.778934092996543 ], [ -122.387086718033501, 37.778930350494704 ], [ -122.387091509002346, 37.778846493520362 ], [ -122.387121277457396, 37.778928423856051 ], [ -122.387183477445888, 37.778924681577777 ], [ -122.387186764992791, 37.77884977579707 ], [ -122.387218036857675, 37.778922754636191 ], [ -122.387280254273051, 37.778919698476713 ], [ -122.387283524285621, 37.778844106523373 ], [ -122.387314813687013, 37.77891777178133 ], [ -122.387382202448663, 37.778913946057301 ], [ -122.387364166474967, 37.778612763090031 ], [ -122.387286207520319, 37.778609204336291 ], [ -122.387262218365407, 37.778618515499687 ], [ -122.387185989110648, 37.778614928715285 ], [ -122.387161999948319, 37.778624240132871 ], [ -122.387092672083611, 37.778619856090089 ], [ -122.387070429718904, 37.778629826526299 ], [ -122.386994183021031, 37.778625553173391 ], [ -122.386971941319302, 37.778635523030793 ], [ -122.386900883746804, 37.778631166560793 ], [ -122.386876911637231, 37.778641164370391 ], [ -122.38679893557611, 37.778636918569845 ], [ -122.386774963796881, 37.778646916353182 ], [ -122.386707365642749, 37.778642504401184 ], [ -122.386683376072511, 37.77865181600145 ], [ -122.386614065647606, 37.778648118121843 ], [ -122.386590076741811, 37.778657429142889 ], [ -122.386510387715276, 37.778653897287107 ], [ -122.386486398801594, 37.778663208561632 ], [ -122.386417070940411, 37.778658824121642 ], [ -122.386393098756784, 37.778668821832838 ], [ -122.38631686949239, 37.77866523448656 ], [ -122.386292880557747, 37.778674545996267 ], [ -122.38622009293212, 37.778670216797138 ], [ -122.386197851113138, 37.778680186508431 ], [ -122.386125063833461, 37.778675857245105 ], [ -122.38610282131512, 37.778685827224102 ], [ -122.386028304671399, 37.778681525568288 ], [ -122.38600433277405, 37.778691523194873 ], [ -122.385931545494543, 37.77868719381209 ], [ -122.385909285516078, 37.778696477309893 ], [ -122.385834786309914, 37.778692862251056 ], [ -122.385810796946046, 37.778702173118987 ], [ -122.385741486517588, 37.778698474726497 ], [ -122.385717497147184, 37.778707785850045 ], [ -122.385642980157812, 37.778703483956278 ], [ -122.385619007862559, 37.778713481784578 ], [ -122.385549680005639, 37.778709096834618 ], [ -122.385525708373962, 37.778719094083733 ], [ -122.385451191384348, 37.778714792068747 ], [ -122.385428949109837, 37.778724761915029 ], [ -122.385354432120124, 37.778720459838901 ], [ -122.385330442694098, 37.778729770883643 ], [ -122.385257672841163, 37.778726127529652 ], [ -122.385235413119702, 37.778735411169237 ], [ -122.385147302363819, 37.778740940194126 ], [ -122.385154355852308, 37.778814307082541 ], [ -122.385130156934849, 37.778815380480168 ], [ -122.385113449499144, 37.778634352661491 ], [ -122.385137630588289, 37.778632592828004 ], [ -122.385155236200447, 37.778712657669637 ], [ -122.385222625586081, 37.778708833443275 ], [ -122.385225758626859, 37.778627749705855 ], [ -122.38525718494833, 37.778706907076334 ], [ -122.38531938483824, 37.778703165506691 ], [ -122.385322517780125, 37.778622082041188 ], [ -122.385352214498553, 37.778701267322347 ], [ -122.385416144082598, 37.778697497765265 ], [ -122.385419276918626, 37.778616414297126 ], [ -122.385450703441506, 37.77869557161619 ], [ -122.38551290331219, 37.778691829944421 ], [ -122.385517765757882, 37.778610719084014 ], [ -122.38554746266594, 37.778689903767003 ], [ -122.385606220534413, 37.778686903820002 ], [ -122.385611082870923, 37.77860579268107 ], [ -122.385640779890451, 37.778684977889775 ], [ -122.385704709445832, 37.778681208176224 ], [ -122.385707841966195, 37.778600124700183 ], [ -122.385739268789678, 37.778679281942566 ], [ -122.385798008866331, 37.778675595460832 ], [ -122.385801141637501, 37.77859451225126 ], [ -122.385832568205146, 37.778673669199819 ], [ -122.385896498100962, 37.77866989992588 ], [ -122.385899630058546, 37.778588816175542 ], [ -122.385931057427598, 37.778667973361443 ], [ -122.385991527195401, 37.778664259112972 ], [ -122.385994659747908, 37.778583175623524 ], [ -122.386026086530904, 37.778662333069811 ], [ -122.386090016393183, 37.778658563141803 ], [ -122.386093148146045, 37.778577479660726 ], [ -122.386124575716508, 37.778656636795191 ], [ -122.386185062898718, 37.778653608892128 ], [ -122.386202015472293, 37.778571617834082 ], [ -122.386209244307707, 37.778651848558759 ], [ -122.386280092656236, 37.778647968384718 ], [ -122.386284954247373, 37.778566856942867 ], [ -122.386314651962735, 37.778646041707809 ], [ -122.386380311166334, 37.778642244226567 ], [ -122.386385172654656, 37.778561133055092 ], [ -122.386414870481516, 37.778640318069463 ], [ -122.386473610832795, 37.778636630970986 ], [ -122.386476742511945, 37.778555547473879 ], [ -122.386508170135954, 37.778634704511973 ], [ -122.386577288736902, 37.778630851563484 ], [ -122.386580420309613, 37.778549768338095 ], [ -122.386611848034704, 37.778628925074045 ], [ -122.386670588381151, 37.778625238426613 ], [ -122.386673719491867, 37.778544154655052 ], [ -122.386705147666916, 37.778623311635243 ], [ -122.386762158289017, 37.778619652349228 ], [ -122.386765307091096, 37.778539255288756 ], [ -122.386796717583763, 37.778617726080171 ], [ -122.386864106438878, 37.778613900371958 ], [ -122.386867237344845, 37.778532816869664 ], [ -122.386898665721333, 37.778611973798455 ], [ -122.386959152842579, 37.77860894577281 ], [ -122.386962284329485, 37.778527861982276 ], [ -122.38699369467254, 37.778606332452348 ], [ -122.387057641885832, 37.778603248718746 ], [ -122.387060772580114, 37.778522165211164 ], [ -122.387092183716675, 37.778600635643997 ], [ -122.38715094145212, 37.778597634927166 ], [ -122.387154334023649, 37.778526848079068 ], [ -122.387183771011991, 37.778595735958248 ], [ -122.38724942978078, 37.778591937998534 ], [ -122.387254551963991, 37.778521123457843 ], [ -122.387283989043027, 37.778590011312069 ], [ -122.387351378207768, 37.778586185868939 ], [ -122.387340432224974, 37.778359741993853 ], [ -122.385336224880277, 37.778480397809368 ], [ -122.385292215885698, 37.77845088576418 ], [ -122.385332752982109, 37.778411780987071 ], [ -122.385371486072913, 37.77843794377425 ], [ -122.387505436887736, 37.778315896876499 ], [ -122.387507690304943, 37.778336462786434 ], [ -122.387691125877438, 37.77833695908997 ], [ -122.387623881872372, 37.778210305157842 ], [ -122.390410335866818, 37.777142437885963 ], [ -122.390374260520773, 37.777113759158638 ], [ -122.390348522259259, 37.777093298197975 ], [ -122.389857561580598, 37.776499598895249 ], [ -122.389810930692391, 37.776503093591124 ], [ -122.389821814335647, 37.776590819837281 ], [ -122.38767762612953, 37.776716506820485 ], [ -122.387616143310936, 37.776748393866363 ], [ -122.387584974466847, 37.776747519757691 ], [ -122.387567625478937, 37.776745737093393 ], [ -122.387552006163176, 37.776743927007061 ], [ -122.387536369402838, 37.776741430474004 ], [ -122.387505026105131, 37.776733691622944 ], [ -122.387489337013818, 37.776729135749626 ], [ -122.387475360143554, 37.776723865736592 ], [ -122.387461365830632, 37.776717909277224 ], [ -122.387447354082425, 37.776711266646082 ], [ -122.387419295684069, 37.77669660766567 ], [ -122.387406978711525, 37.776688564173618 ], [ -122.387394643958672, 37.776679834515676 ], [ -122.387373399569938, 37.776660946088832 ], [ -122.387362760285328, 37.776650815560998 ], [ -122.38735385031967, 37.776640657346583 ], [ -122.387344922566982, 37.776629812692306 ], [ -122.387335978065309, 37.776618281581548 ], [ -122.387328762881694, 37.776606722784834 ], [ -122.387323277015341, 37.77659513630249 ], [ -122.387316044392662, 37.776582891060237 ], [ -122.387312271446064, 37.776570590705511 ], [ -122.387306768480713, 37.776558317497482 ], [ -122.387304707400645, 37.776545302738185 ], [ -122.387302663771393, 37.776532974698164 ], [ -122.387298541607819, 37.776506944904682 ], [ -122.387299939508821, 37.776493875044565 ], [ -122.387299608083069, 37.776480832320061 ], [ -122.387311076202096, 37.776319268586136 ], [ -122.387103587414643, 37.776325337046984 ], [ -122.387082386717438, 37.776103864569507 ], [ -122.385027425864848, 37.776335891081246 ], [ -122.385011788936296, 37.776333394493314 ], [ -122.384999507467228, 37.776326723359297 ], [ -122.384988868215274, 37.776316592896777 ], [ -122.385025875302759, 37.776274797468226 ], [ -122.384827030762366, 37.775394163410851 ], [ -122.384880527469605, 37.775388501004997 ], [ -122.384877317104468, 37.775330181090084 ], [ -122.386995863440688, 37.775082030997162 ], [ -122.386923061819843, 37.774327799469994 ], [ -122.381813822024597, 37.774615486663201 ], [ -122.381456516831207, 37.771917559332238 ], [ -122.384671101595274, 37.773340605158566 ], [ -122.384690336061794, 37.773348538332996 ], [ -122.384706059111224, 37.773354467747083 ], [ -122.38472349432422, 37.773359682786399 ], [ -122.384740912113955, 37.773364211103086 ], [ -122.384758312493929, 37.773368053246259 ], [ -122.384775695456668, 37.773371208941398 ], [ -122.384793061001673, 37.77337367818847 ], [ -122.384812120957065, 37.773374747168276 ], [ -122.384829452003999, 37.773375843238945 ], [ -122.384848494879705, 37.773376225487283 ], [ -122.38486577332894, 37.77337526249628 ], [ -122.386759568868584, 37.773272861257844 ], [ -122.386575835242937, 37.772851405934894 ], [ -122.38657206225551, 37.772839105279289 ], [ -122.386575190127743, 37.772826007459408 ], [ -122.386581812023351, 37.772814227444925 ], [ -122.386593692364443, 37.772805109622055 ], [ -122.386717419519911, 37.772771540111776 ], [ -122.386708370613761, 37.772755890279406 ], [ -122.386704597609267, 37.772743589627844 ], [ -122.386699094688865, 37.772731316663254 ], [ -122.386691548686684, 37.772706715359256 ], [ -122.38668746217553, 37.772682058686371 ], [ -122.386685401318488, 37.772669044181889 ], [ -122.386683357538772, 37.772656715579039 ], [ -122.386682694959006, 37.772630630932561 ], [ -122.386684111009814, 37.772618246955815 ], [ -122.386683779716421, 37.772605204495207 ], [ -122.386685195434609, 37.772592821073083 ], [ -122.386688340360166, 37.772580409425913 ], [ -122.386661929793348, 37.772494305123679 ], [ -122.386659886368264, 37.772481976514491 ], [ -122.386661302081109, 37.772469592817821 ], [ -122.38666965348915, 37.772457784842032 ], [ -122.386681551212874, 37.772449354004202 ], [ -122.386714186256512, 37.772439903990914 ], [ -122.386679336788333, 37.772362175448528 ], [ -122.386644902453284, 37.772368906802633 ], [ -122.386631976023693, 37.772336837636807 ], [ -122.386620901217455, 37.772309545906367 ], [ -122.386592865526183, 37.772227587668034 ], [ -122.386585249868389, 37.772200240573625 ], [ -122.386577616780784, 37.772172207033208 ], [ -122.386570001134302, 37.772144859937534 ], [ -122.386558193761417, 37.772088737774723 ], [ -122.386541497954923, 37.771976381892166 ], [ -122.386539053911875, 37.771948265304715 ], [ -122.386438565499603, 37.771943006477983 ], [ -122.386459543589496, 37.771678968587629 ], [ -122.386414488196351, 37.771676255706971 ], [ -122.386416883827636, 37.771634327179655 ], [ -122.386370064064607, 37.77163026961771 ], [ -122.386370799901215, 37.771591114275026 ], [ -122.386346586274058, 37.771591501747267 ], [ -122.386349295737674, 37.771561929239198 ], [ -122.386373509355195, 37.77156154176641 ], [ -122.386383018231356, 37.77145906765827 ], [ -122.386277185313745, 37.771447713434846 ], [ -122.386286481744634, 37.771404987761201 ], [ -122.386248187810011, 37.771395986654248 ], [ -122.386213474980906, 37.771391735029944 ], [ -122.386175916991888, 37.77134357828146 ], [ -122.386158586399219, 37.771342482408336 ], [ -122.386142916299207, 37.771338612516935 ], [ -122.386128940538697, 37.771333342339254 ], [ -122.386116624249169, 37.771325298710295 ], [ -122.38610598590013, 37.771315168059481 ], [ -122.386097059315517, 37.771304323294956 ], [ -122.386091556948031, 37.771292050293354 ], [ -122.386142815223778, 37.771266508342599 ], [ -122.38608534348306, 37.771183647247369 ], [ -122.386039082134474, 37.771201555805888 ], [ -122.386023428808656, 37.771198372355109 ], [ -122.386011095814837, 37.771189642258307 ], [ -122.386041843996964, 37.771174042639558 ], [ -122.38589549059256, 37.770997835524099 ], [ -122.385920430782591, 37.770821635056869 ], [ -122.385847920885212, 37.770691630725352 ], [ -122.385837299399952, 37.770682186505887 ], [ -122.385823306356514, 37.770676229845748 ], [ -122.385795755972097, 37.770681477661917 ], [ -122.3857856231634, 37.770691253905198 ], [ -122.385782477468226, 37.770703665268918 ], [ -122.385798079922523, 37.771250048587049 ], [ -122.385622255652152, 37.772162083932052 ], [ -122.385554576344688, 37.772154239361129 ], [ -122.385681891861481, 37.771444190077446 ], [ -122.385515420224039, 37.771429684819722 ], [ -122.38546780756441, 37.771530707856108 ], [ -122.385335917119292, 37.771651620630855 ], [ -122.385287036807085, 37.771634547559174 ], [ -122.385642517132254, 37.770847369439849 ], [ -122.385683664105002, 37.770764304300435 ], [ -122.385720236601344, 37.770637361956886 ], [ -122.385724274638122, 37.77059197382043 ], [ -122.385559320924514, 37.770637189122013 ], [ -122.383154992189901, 37.769708715839762 ], [ -122.383375582677616, 37.76933298733065 ], [ -122.385570199525418, 37.770179656618097 ], [ -122.385492733315886, 37.769990673321502 ], [ -122.38547497668678, 37.769836444052352 ], [ -122.38501929687861, 37.768856908704215 ], [ -122.384893636964136, 37.768882266758567 ], [ -122.384787561607197, 37.76865665734794 ], [ -122.38500549801104, 37.768585873156887 ], [ -122.385007528170945, 37.768529529274218 ], [ -122.385037840293677, 37.768496768478933 ], [ -122.385006697245259, 37.768428594043755 ], [ -122.38508052413836, 37.768406124957501 ], [ -122.385042550658142, 37.768341493386622 ], [ -122.38510771303342, 37.768318476117585 ], [ -122.385167686616882, 37.76829554179551 ], [ -122.385149073018809, 37.768175662662372 ], [ -122.385147029970554, 37.768163334292169 ], [ -122.385144812710706, 37.768144141461285 ], [ -122.38470084491486, 37.768171155877575 ], [ -122.384624005099198, 37.768074869544797 ], [ -122.383881223535184, 37.768121766230543 ], [ -122.383842264982363, 37.767745376829602 ], [ -122.382456893000523, 37.767832748125578 ], [ -122.382439473722869, 37.767691561099248 ], [ -122.384901003015941, 37.7675361686969 ], [ -122.384848518174209, 37.767018283287165 ], [ -122.384847918040649, 37.767012360130963 ], [ -122.382854528282635, 37.767138299649837 ], [ -122.382800567665527, 37.766784124750316 ], [ -122.385859942984411, 37.766599245791156 ], [ -122.385894343938588, 37.766523155929399 ], [ -122.385924379700455, 37.76641142564803 ], [ -122.385933483994975, 37.766361149056699 ], [ -122.385914237836445, 37.766284543788501 ], [ -122.385992644580284, 37.766169979928648 ], [ -122.386291877422522, 37.765689977677845 ], [ -122.386372587962043, 37.765598038596792 ], [ -122.386520103480208, 37.765411635088689 ], [ -122.386541125110512, 37.765285627921941 ], [ -122.386469993174757, 37.765277839225583 ], [ -122.386436744413672, 37.76505861928149 ], [ -122.386447302231559, 37.764929345689509 ], [ -122.386483096429387, 37.76490817106005 ], [ -122.386501478211272, 37.764814482226171 ], [ -122.386491269379732, 37.764616868735338 ], [ -122.38644793023208, 37.764613442288407 ], [ -122.386451155646682, 37.764399819097633 ], [ -122.386482284438713, 37.7643993208899 ], [ -122.386481482527714, 37.764367744084808 ], [ -122.386603169586195, 37.764322532741204 ], [ -122.386601548243974, 37.76425869323451 ], [ -122.386585931922852, 37.764256883010674 ], [ -122.386571940029569, 37.764250926432666 ], [ -122.38656131971895, 37.764241482262236 ], [ -122.38655581779787, 37.764229209267128 ], [ -122.38655550400469, 37.764216853507875 ], [ -122.386720358990686, 37.764100218114386 ], [ -122.386739211018067, 37.764025063281011 ], [ -122.386733691302794, 37.764012103852934 ], [ -122.38672476584992, 37.764001259116526 ], [ -122.386714128120815, 37.763991128513133 ], [ -122.38670010140504, 37.763983799331974 ], [ -122.386686126988522, 37.763978529213567 ], [ -122.386670492591179, 37.763976032291019 ], [ -122.386649740182264, 37.763976364463595 ], [ -122.386634036749314, 37.763971122014347 ], [ -122.386621721632579, 37.763963078702353 ], [ -122.386611066835059, 37.763952261637705 ], [ -122.386603852994298, 37.763940702770881 ], [ -122.386600062668251, 37.763927715381541 ], [ -122.386601461140231, 37.763914645215138 ], [ -122.386604606072254, 37.763902234094914 ], [ -122.386738907102767, 37.763808749639459 ], [ -122.386828889531799, 37.763741383598706 ], [ -122.386840716091143, 37.763730206671987 ], [ -122.386855983933643, 37.763718287929905 ], [ -122.386869539846316, 37.763707083316298 ], [ -122.386884824769794, 37.763695851022327 ], [ -122.386900145253236, 37.763685991607943 ], [ -122.38691721218359, 37.763676790958648 ], [ -122.386934296546428, 37.763668276753165 ], [ -122.386951398349183, 37.763660449266119 ], [ -122.386970246931185, 37.763653279988162 ], [ -122.386989112953756, 37.763646797428088 ], [ -122.387007996064526, 37.763641001316863 ], [ -122.387026897301666, 37.763635891637833 ], [ -122.387047562432002, 37.763632127441824 ], [ -122.387066515625051, 37.76362907682639 ], [ -122.387271786163467, 37.763605188503739 ], [ -122.387241692331358, 37.763510215504958 ], [ -122.386905339639924, 37.763549936808673 ], [ -122.386894896912324, 37.763479371256736 ], [ -122.386775626938885, 37.763415354890846 ], [ -122.386725141086345, 37.763471101073094 ], [ -122.386629276523749, 37.763443106355105 ], [ -122.386635775530237, 37.763426520918784 ], [ -122.386503316054672, 37.763388124513462 ], [ -122.386596764100844, 37.763184731253212 ], [ -122.386314395824243, 37.763102036396099 ], [ -122.386214308919619, 37.763316522997265 ], [ -122.385510514730285, 37.763329843761532 ], [ -122.385502904472929, 37.763234510683318 ], [ -122.385278141497096, 37.763240166132988 ], [ -122.385288368966343, 37.763370480347639 ], [ -122.38518118352205, 37.763373568175126 ], [ -122.385104258477085, 37.762319301701545 ], [ -122.384682038971576, 37.762111108737756 ], [ -122.384291646501694, 37.762134518628663 ], [ -122.384461265879253, 37.764047083641032 ], [ -122.384304084745608, 37.764057150214732 ], [ -122.384132119672074, 37.762256559028991 ], [ -122.383427389000644, 37.762300785113965 ], [ -122.383450606038608, 37.762465914870035 ], [ -122.383630300057192, 37.762456862777178 ], [ -122.3836690703355, 37.762553071423532 ], [ -122.383744969614881, 37.762544304446941 ], [ -122.383904907669475, 37.764143878058199 ], [ -122.383832343655854, 37.764147784454543 ], [ -122.383810360659879, 37.764236036587789 ], [ -122.383580701961776, 37.764253441592125 ], [ -122.383538646212543, 37.764164152408867 ], [ -122.383462623420698, 37.764168114122675 ], [ -122.383459954192517, 37.764131073630139 ], [ -122.383299279201026, 37.764139821513076 ], [ -122.383109557752064, 37.762320284660944 ], [ -122.382290828789408, 37.762371818989514 ], [ -122.38251353675102, 37.764606298459128 ], [ -122.382344144468703, 37.764612437347246 ], [ -122.382121545934865, 37.762382076243206 ], [ -122.38174844490716, 37.762405201559091 ], [ -122.381695087947634, 37.764738170521944 ], [ -122.381631135065035, 37.764740565182315 ], [ -122.381630936164214, 37.764801000118787 ], [ -122.381492672008349, 37.764806640579245 ], [ -122.381450941763589, 37.76493503772344 ], [ -122.381172352882004, 37.76493330344676 ], [ -122.381123981911756, 37.764799477425129 ], [ -122.380983831900423, 37.764798967139676 ], [ -122.381029346103958, 37.762223710202747 ], [ -122.38330764917707, 37.762081573209855 ], [ -122.382185556454559, 37.760879873475361 ], [ -122.382168402620636, 37.760885641207267 ], [ -122.382152908506868, 37.760888635257665 ], [ -122.382137362223574, 37.760889570238476 ], [ -122.382121780810863, 37.760889132328003 ], [ -122.38210441862546, 37.760886662951151 ], [ -122.382090445117498, 37.760881392285128 ], [ -122.382076454213362, 37.760875434895482 ], [ -122.382064140442054, 37.760867390822959 ], [ -122.382053521188098, 37.760857946240883 ], [ -122.382044596105573, 37.76084710115525 ], [ -122.382023253267107, 37.760824093302155 ], [ -122.382014294110562, 37.760811875582888 ], [ -122.382005317206719, 37.760798970871889 ], [ -122.381998069607818, 37.76078603882209 ], [ -122.381986997879679, 37.76075874660679 ], [ -122.381983174441103, 37.760744386430567 ], [ -122.381981079958692, 37.760729998921875 ], [ -122.381980366958516, 37.760701854577775 ], [ -122.381981731049137, 37.76068741129496 ], [ -122.381984824092612, 37.760672940679711 ], [ -122.38198793521687, 37.760659156500736 ], [ -122.381992775285752, 37.760645344714604 ], [ -122.381695267558513, 37.760647347915544 ], [ -122.381838070964363, 37.762118779804872 ], [ -122.381335375976406, 37.762148093200558 ], [ -122.381148296266858, 37.760157516712624 ], [ -122.380611046370689, 37.760188065470565 ], [ -122.380912187127535, 37.763336013717719 ], [ -122.380701275367471, 37.763342126118935 ], [ -122.380400282533174, 37.760199669192616 ], [ -122.379507164112297, 37.760250310896886 ], [ -122.379808005517475, 37.763456637815253 ], [ -122.379779318273378, 37.763485250755494 ], [ -122.379565016753276, 37.763494162073435 ], [ -122.379533176547326, 37.763466514378344 ], [ -122.379201704975202, 37.759937914686475 ], [ -122.381256986630419, 37.759667520373661 ], [ -122.381256577752055, 37.759583059710486 ], [ -122.381469121143184, 37.759573486743299 ], [ -122.381446760180623, 37.75930533388199 ], [ -122.381389798546991, 37.759310363785765 ], [ -122.381303248927566, 37.759308311423226 ], [ -122.381202252005025, 37.758325846274602 ], [ -122.381200105587652, 37.758309399127988 ], [ -122.381197941449869, 37.758292265813587 ], [ -122.381197089710227, 37.758258629870305 ], [ -122.381199679398975, 37.758224251997007 ], [ -122.381200991455458, 37.758207749648136 ], [ -122.38120401536365, 37.75819053325035 ], [ -122.381207056652954, 37.758174003300283 ], [ -122.381221367866601, 37.758124330651064 ], [ -122.381234402126012, 37.75809253323947 ], [ -122.381242648836448, 37.758076607200529 ], [ -122.381262669528837, 37.75804744489573 ], [ -122.381289433303067, 37.758011307974613 ], [ -122.381302797797105, 37.757992553063836 ], [ -122.381314432708805, 37.757973825759706 ], [ -122.381327797196747, 37.757955071120548 ], [ -122.381337703552219, 37.757936371131194 ], [ -122.381360938912749, 37.75789754361324 ], [ -122.381380716140868, 37.757858771292213 ], [ -122.381390587715856, 37.757838698951588 ], [ -122.381398729699725, 37.757818653670306 ], [ -122.381408600911726, 37.757798581058942 ], [ -122.381416742893265, 37.757778536050878 ], [ -122.381423155645805, 37.757758518646433 ], [ -122.381431297626008, 37.7577384739118 ], [ -122.381444088336707, 37.757697065930351 ], [ -122.381450501074838, 37.757677048524144 ], [ -122.381464499104396, 37.757615019779642 ], [ -122.381469148185403, 37.757593657075738 ], [ -122.381475021977749, 37.757552359783979 ], [ -122.381477941486636, 37.757531024690024 ], [ -122.381480843608969, 37.757509003148037 ], [ -122.381427480867771, 37.75751946944429 ], [ -122.381405721286413, 37.757343328372727 ], [ -122.381468641764485, 37.757300433411309 ], [ -122.381446638421224, 37.75711468207534 ], [ -122.381323864533158, 37.757116641937891 ], [ -122.381323169199888, 37.757089184020202 ], [ -122.381364426846005, 37.75707891127486 ], [ -122.381321992818584, 37.756564544822638 ], [ -122.381321662531036, 37.756551502035926 ], [ -122.38132307883005, 37.756539118369027 ], [ -122.381326206602509, 37.756526020931318 ], [ -122.381331099013835, 37.756514268226432 ], [ -122.381339449129754, 37.756502460600949 ], [ -122.381347834701543, 37.756492025859821 ], [ -122.381357966510507, 37.756482250242897 ], [ -122.381369844881263, 37.756473132920476 ], [ -122.381383504601786, 37.756466047611781 ], [ -122.381397181710526, 37.756459649024094 ], [ -122.381399266420004, 37.75640536415446 ], [ -122.381383669266881, 37.756404239961626 ], [ -122.381368019603769, 37.756401055879024 ], [ -122.381354081758502, 37.756397158017677 ], [ -122.381338379955181, 37.756391914861666 ], [ -122.381324389963666, 37.756385957652711 ], [ -122.38129976407464, 37.756369869336808 ], [ -122.381289145560629, 37.756360424678547 ], [ -122.381280238512659, 37.756350265974667 ], [ -122.381265813968113, 37.756327147557755 ], [ -122.381260331236177, 37.756315560741236 ], [ -122.381258271437829, 37.756302546110341 ], [ -122.381256229700497, 37.756290217367201 ], [ -122.381255916815178, 37.756277861302344 ], [ -122.381240855709805, 37.755888041607285 ], [ -122.381237067430561, 37.75587505429101 ], [ -122.381229855216972, 37.755863495353786 ], [ -122.381219219049328, 37.755853363971241 ], [ -122.381205211793798, 37.755846720574091 ], [ -122.381189545219783, 37.75584285001387 ], [ -122.381023178934683, 37.755831084166076 ], [ -122.381005052890941, 37.755798410637965 ], [ -122.380939344081298, 37.755799459348452 ], [ -122.380938179657051, 37.755753467322073 ], [ -122.381031311951133, 37.755742366765169 ], [ -122.381010248974547, 37.755730341878809 ], [ -122.38098743910173, 37.755717658143908 ], [ -122.380924145958886, 37.755677464760758 ], [ -122.380881915817497, 37.755649296531168 ], [ -122.380862530269653, 37.755635184397235 ], [ -122.380841397836633, 37.755620413687737 ], [ -122.380821994593731, 37.755605615653565 ], [ -122.380802573973469, 37.755590130893374 ], [ -122.38078488252836, 37.755574618260482 ], [ -122.380758354080839, 37.755551693216646 ], [ -122.380751124581494, 37.755539447252119 ], [ -122.380745589509232, 37.755525801070959 ], [ -122.38074007147074, 37.755512841343261 ], [ -122.380736283298162, 37.75549985401004 ], [ -122.38073074823852, 37.755486208102681 ], [ -122.380728671510397, 37.755472506457778 ], [ -122.380724865279745, 37.755458832961516 ], [ -122.380718635462969, 37.755417728569704 ], [ -122.380718270538722, 37.755403313156876 ], [ -122.380719652161702, 37.755389556598288 ], [ -122.380719304614729, 37.755375827633614 ], [ -122.380722067512963, 37.755348314521783 ], [ -122.380728289091294, 37.755320746216135 ], [ -122.380731417602021, 37.755307648505891 ], [ -122.380736257562816, 37.755293837033165 ], [ -122.38074597221329, 37.755267586159846 ], [ -122.380759145196464, 37.755241280371166 ], [ -122.380767425749198, 37.755226726990642 ], [ -122.380777557807846, 37.755216951415953 ], [ -122.380789436047536, 37.755207834150042 ], [ -122.3808030608416, 37.755199376285184 ], [ -122.380814973485883, 37.755191631918663 ], [ -122.380828633023739, 37.75518454667273 ], [ -122.380844056826504, 37.755178806720394 ], [ -122.380857751116352, 37.755173094367549 ], [ -122.380873209326097, 37.755168727313375 ], [ -122.380888684919853, 37.755165046980004 ], [ -122.380905907041537, 37.755162024947012 ], [ -122.380921434762783, 37.75516040367944 ], [ -122.380952524623297, 37.755158534314724 ], [ -122.380976698502963, 37.755156774772679 ], [ -122.380999125498533, 37.755154356655588 ], [ -122.381021534766717, 37.755151252091551 ], [ -122.381043927344422, 37.755147461063977 ], [ -122.381066302193489, 37.755142983589487 ], [ -122.38108865965917, 37.755137819662529 ], [ -122.38111099939502, 37.755131969288627 ], [ -122.38113332243789, 37.755125432451251 ], [ -122.381153915967687, 37.755118923215505 ], [ -122.381176203900949, 37.755111013753655 ], [ -122.38119676265265, 37.755103131339425 ], [ -122.381225828164943, 37.755089619604064 ], [ -122.381246943141264, 37.755103703797808 ], [ -122.381242963358787, 37.755083165829973 ], [ -122.38126015068255, 37.755078770848776 ], [ -122.381277355393678, 37.755075062587856 ], [ -122.381292865706087, 37.755072754823154 ], [ -122.38131010484075, 37.755070419733926 ], [ -122.381327362035009, 37.75506877053013 ], [ -122.381361945276268, 37.755068218467898 ], [ -122.381396598051168, 37.755070412188203 ], [ -122.381413958860932, 37.755072881946376 ], [ -122.381448715950555, 37.755079194614936 ], [ -122.381480084590436, 37.755088307721437 ], [ -122.381497532329476, 37.755094209708098 ], [ -122.381511539483228, 37.755100853620512 ], [ -122.381527276134307, 37.755107469370813 ], [ -122.381548321633034, 37.755118807717949 ], [ -122.381562363566104, 37.755126824520609 ], [ -122.381579829044853, 37.755133412663042 ], [ -122.381595565024199, 37.755140028689837 ], [ -122.381612996090695, 37.755145244200165 ], [ -122.381630391696547, 37.755149086822691 ], [ -122.381647770609987, 37.755152242983492 ], [ -122.381665131447221, 37.755154712704652 ], [ -122.381684187368847, 37.755155781907895 ], [ -122.38170149639484, 37.755156192273823 ], [ -122.382833235564902, 37.755035795269471 ], [ -122.383668861276263, 37.754971624407645 ], [ -122.383685978819074, 37.754964483555838 ], [ -122.38372028351472, 37.754952947636127 ], [ -122.383737470668777, 37.75494855256818 ], [ -122.383756404038564, 37.75494481631263 ], [ -122.383773626345388, 37.754941794129564 ], [ -122.383792594868737, 37.754939430758334 ], [ -122.383811580457817, 37.754937754111957 ], [ -122.38384268824322, 37.754936570147059 ], [ -122.383861726388119, 37.754936952556008 ], [ -122.383880781586896, 37.754938021140639 ], [ -122.383896396575224, 37.754939831714687 ], [ -122.384073136269635, 37.754951427650568 ], [ -122.384099862744918, 37.754913917176538 ], [ -122.384076095308828, 37.754658835300546 ], [ -122.383998950777894, 37.754618177983438 ], [ -122.383899356302948, 37.754647239093948 ], [ -122.383797997440993, 37.754674954869053 ], [ -122.383696604385719, 37.754701297650087 ], [ -122.383569360630759, 37.75473148712782 ], [ -122.383548680403266, 37.754734564546567 ], [ -122.3835279827709, 37.754736955513799 ], [ -122.383505538587656, 37.754738687938882 ], [ -122.38348480614728, 37.754739706002738 ], [ -122.383441577306456, 37.754740396857535 ], [ -122.383400008003704, 37.754738313997002 ], [ -122.38337920595491, 37.754736586250608 ], [ -122.383356657006146, 37.754734199690795 ], [ -122.383335820163737, 37.754731099315492 ], [ -122.383314965907985, 37.754727311939398 ], [ -122.383295841160447, 37.754723497196949 ], [ -122.383254063070865, 37.754713177184357 ], [ -122.383234885782983, 37.75470730309371 ], [ -122.383213961945074, 37.754700770182538 ], [ -122.383194767270453, 37.754694209911989 ], [ -122.383175537439726, 37.754686276198775 ], [ -122.383158037470992, 37.754678315390812 ], [ -122.383138807994129, 37.754670381666052 ], [ -122.383103737780345, 37.754651713981168 ], [ -122.383086185277548, 37.75464169354953 ], [ -122.383068615380594, 37.754630986667287 ], [ -122.383052774639708, 37.754620252154247 ], [ -122.383036916504807, 37.754608831191064 ], [ -122.383015731729387, 37.754592001250259 ], [ -122.38299259130558, 37.754566275663684 ], [ -122.382971180378888, 37.754540521890775 ], [ -122.382949752076243, 37.754514081940449 ], [ -122.382930053282664, 37.754487614354218 ], [ -122.382908625009904, 37.754461174396191 ], [ -122.382888908501968, 37.754434020360335 ], [ -122.382870920808742, 37.754406838701115 ], [ -122.382842850708954, 37.754363390808408 ], [ -122.382816907001839, 37.754323234339928 ], [ -122.382797016608123, 37.754289216082142 ], [ -122.382791480900465, 37.754275569725095 ], [ -122.382785928504248, 37.754261237457797 ], [ -122.38278210489284, 37.754246877022375 ], [ -122.382781722177867, 37.754231775164968 ], [ -122.382784449823419, 37.754202889097733 ], [ -122.382789271581657, 37.754188390821014 ], [ -122.382795840220822, 37.754174551362205 ], [ -122.382804155740061, 37.754161370721022 ], [ -122.382814217447034, 37.754148848908173 ], [ -122.382826043083483, 37.754137672365715 ], [ -122.382839615252593, 37.75412715464509 ], [ -122.382853204821586, 37.754117323645531 ], [ -122.382868575702929, 37.754109523814002 ], [ -122.382885693124038, 37.754102383077345 ], [ -122.382904591526582, 37.754097274061955 ], [ -122.382896892098685, 37.754066494402807 ], [ -122.382890922160428, 37.754035687111681 ], [ -122.382884969278336, 37.754005566273698 ], [ -122.382876487005475, 37.753943896449059 ], [ -122.382873975008934, 37.75391303391072 ], [ -122.382869733880582, 37.753882198997694 ], [ -122.382868951022118, 37.753851308833418 ], [ -122.382866421635015, 37.753819759846344 ], [ -122.382865638778583, 37.753788869681728 ], [ -122.38286753098933, 37.753727034381221 ], [ -122.382869667430043, 37.75367480879347 ], [ -122.382867485984363, 37.753656988767865 ], [ -122.382865286797127, 37.753638482299571 ], [ -122.382861376571569, 37.753620689893637 ], [ -122.382850096841622, 37.753585160622798 ], [ -122.382842745420064, 37.753568109920103 ], [ -122.382833665214591, 37.753551086561764 ], [ -122.382822855548582, 37.753534091107603 ], [ -122.382812063283737, 37.753517782100509 ], [ -122.382801288419827, 37.753502159540567 ], [ -122.382788801838672, 37.753487251326646 ], [ -122.382774586124242, 37.75347237018628 ], [ -122.382742765715449, 37.753445409495008 ], [ -122.382726873440859, 37.753432615860532 ], [ -122.382709269084074, 37.753420535751609 ], [ -122.382691682135089, 37.753409142362763 ], [ -122.382672383117907, 37.753398463047603 ], [ -122.382653119587403, 37.753389156614546 ], [ -122.382611168393765, 37.753371971889877 ], [ -122.382590227592559, 37.7533647524183 ], [ -122.382569321590282, 37.753358906113988 ], [ -122.382546703510585, 37.753353773605845 ], [ -122.382524103512239, 37.753349327255975 ], [ -122.382501520571083, 37.75334556763007 ], [ -122.382478972425403, 37.753343181170841 ], [ -122.382456441314361, 37.753341480611873 ], [ -122.382433945688362, 37.753341153208574 ], [ -122.382402821501856, 37.753341650348268 ], [ -122.38237864858533, 37.753343409903252 ], [ -122.382356222188207, 37.753345828558139 ], [ -122.382297501266095, 37.753349513077993 ], [ -122.38226810654271, 37.753349982559506 ], [ -122.382240423203967, 37.753349737974666 ], [ -122.382210993352999, 37.753348834550927 ], [ -122.382181546112378, 37.753347244671602 ], [ -122.382152081137065, 37.753344968342162 ], [ -122.382124328241176, 37.753341977937026 ], [ -122.382094811792641, 37.753337642237426 ], [ -122.38206700673382, 37.753332592473967 ], [ -122.382039184289724, 37.753326856255676 ], [ -122.38201134446112, 37.753320433582523 ], [ -122.38200001736864, 37.75331754288009 ], [ -122.381983487255724, 37.753313324729064 ], [ -122.381957341428489, 37.753305501265011 ], [ -122.3819294494578, 37.75329701950217 ], [ -122.38187705455077, 37.753277254112369 ], [ -122.381850839550978, 37.753266685100435 ], [ -122.3818017982653, 37.753242746046119 ], [ -122.381777242861062, 37.753229403614625 ], [ -122.381754416238635, 37.753216033574361 ], [ -122.381731572936843, 37.753201977344837 ], [ -122.381708677132991, 37.753185861496782 ], [ -122.381985040410456, 37.753169774197133 ], [ -122.382560765120331, 37.753136419940226 ], [ -122.382560989570067, 37.75313671714089 ], [ -122.382951309683904, 37.753114103639163 ], [ -122.383438933023925, 37.753085850281579 ], [ -122.383914427464433, 37.753058600498669 ], [ -122.384879974685347, 37.753002645165687 ], [ -122.385845520438053, 37.752946681373402 ], [ -122.385845731512404, 37.752946669205699 ], [ -122.386811064397406, 37.752890709951139 ], [ -122.386811676199414, 37.752890674609837 ], [ -122.387755875750031, 37.752835749697695 ], [ -122.387756291326852, 37.752835725460692 ], [ -122.387756280477618, 37.752835611637821 ], [ -122.387633974640565, 37.751559603455405 ], [ -122.387585270262662, 37.750263378063039 ], [ -122.388507729357968, 37.750205975353602 ], [ -122.389478017653872, 37.750145107673561 ], [ -122.390433038183829, 37.750118341633915 ], [ -122.391418367221192, 37.750140606282606 ], [ -122.391693805117924, 37.750111668488358 ], [ -122.391705979739527, 37.750110389401705 ], [ -122.391714686151033, 37.750109474739723 ], [ -122.391929934247997, 37.750086859865874 ], [ -122.392350740047519, 37.750026024134087 ], [ -122.392354048972692, 37.750025545503377 ], [ -122.392381992909165, 37.750021506018193 ], [ -122.393314555211816, 37.749918012051069 ], [ -122.393322792145199, 37.749917097944952 ], [ -122.393340265733656, 37.749915158351328 ], [ -122.395231400136637, 37.749808114846253 ], [ -122.395307862010839, 37.749803786070743 ], [ -122.396273544250747, 37.74974560058007 ], [ -122.397285415820363, 37.749684622841229 ], [ -122.40206163398004, 37.749396678541473 ], [ -122.402063015501824, 37.749396333205695 ], [ -122.402215286387033, 37.749358244852793 ], [ -122.402746245055127, 37.749375020002113 ], [ -122.402866303074774, 37.749478453789486 ], [ -122.402866309087059, 37.749478458911533 ], [ -122.402968925612569, 37.749550036933734 ], [ -122.403054692816028, 37.74954427306843 ], [ -122.403203674195439, 37.749534260068266 ], [ -122.403260968692152, 37.749530409553117 ], [ -122.403568849778438, 37.749475672986911 ], [ -122.403592456970202, 37.749471475909672 ], [ -122.403667613571599, 37.749458113882532 ], [ -122.403783562755194, 37.749432891426196 ], [ -122.403735650894049, 37.749583872707518 ], [ -122.403514246938869, 37.750281563827826 ], [ -122.403378511001179, 37.750679445903444 ], [ -122.403214572776321, 37.751164169122518 ], [ -122.403175027775376, 37.751281093014263 ], [ -122.403072643662085, 37.751794247946641 ], [ -122.403060331379024, 37.751915861053995 ], [ -122.403006670294943, 37.752445905732571 ], [ -122.402978169178084, 37.75275045704997 ], [ -122.40301031565609, 37.753201877425177 ], [ -122.403011715723153, 37.753221541143297 ], [ -122.403127143734139, 37.75447773377249 ], [ -122.403244936870763, 37.755759623462495 ], [ -122.403245024221292, 37.755760575231484 ], [ -122.403305530792395, 37.756165877853867 ], [ -122.403395700993769, 37.756471262485057 ], [ -122.403543859417937, 37.75680412126377 ], [ -122.403689260967766, 37.757015002579273 ], [ -122.403774084903432, 37.757138026202746 ], [ -122.403774405770974, 37.757138490742172 ], [ -122.404168659910013, 37.75752977302043 ], [ -122.404441730762329, 37.757748221369937 ], [ -122.40472107938929, 37.757950649275713 ], [ -122.404835145723425, 37.7580339263735 ], [ -122.405048169961901, 37.758189448369819 ], [ -122.405545221503274, 37.758536929330724 ], [ -122.405903135660481, 37.758934413706449 ], [ -122.406103779268008, 37.759196479511928 ], [ -122.406247868764623, 37.759429354319998 ], [ -122.406261953936678, 37.75945211819198 ], [ -122.406389357641601, 37.759804405761585 ], [ -122.406492391998796, 37.760255279712112 ], [ -122.406492697683589, 37.760686469836571 ], [ -122.406479479731502, 37.760730932047331 ], [ -122.4062826701159, 37.761392945250627 ], [ -122.406147061407296, 37.7616371808829 ], [ -122.406021608630979, 37.761863123291867 ], [ -122.405925510731336, 37.762011914887523 ], [ -122.405653838302513, 37.762432552128487 ], [ -122.405384490436404, 37.76297005284507 ], [ -122.40532469627189, 37.76313750682079 ], [ -122.405258413683796, 37.763323129887908 ], [ -122.405203088479681, 37.763478066930332 ], [ -122.405104592203571, 37.763852244172895 ], [ -122.405059622300016, 37.764310557738277 ], [ -122.405089602982216, 37.764628538373131 ], [ -122.404841911264157, 37.764643492872132 ], [ -122.404496977488066, 37.764664317561468 ], [ -122.403527034519726, 37.764722870371436 ], [ -122.402563396844656, 37.764781034314389 ], [ -122.401598999326723, 37.764839236400867 ], [ -122.401604204317508, 37.764894634517518 ], [ -122.401720515816834, 37.766132520250999 ], [ -122.40075504647362, 37.766190486570189 ], [ -122.399760960198876, 37.766250252443854 ], [ -122.39980174760619, 37.766587745781216 ], [ -122.399677637243116, 37.766695444602661 ], [ -122.4004285874814, 37.76730030349627 ], [ -122.400680751363893, 37.767503407870436 ], [ -122.400877239583821, 37.76748837440357 ], [ -122.401842503677628, 37.76743077711658 ], [ -122.401962350744, 37.768706209224241 ], [ -122.402926809989424, 37.76864812762463 ], [ -122.403037758616776, 37.769828657390953 ], [ -122.403406518421917, 37.769807099957397 ], [ -122.403615112128733, 37.769893190404822 ], [ -122.403877699904385, 37.770062866265505 ], [ -122.403531054507056, 37.770336670466769 ], [ -122.401656665936628, 37.77181711392474 ], [ -122.399647849152032, 37.773403860176856 ], [ -122.399516440682405, 37.773507653276255 ], [ -122.399433130909728, 37.773573455617395 ], [ -122.400212340411557, 37.77419510487973 ], [ -122.400592319049849, 37.774498244536282 ], [ -122.400981567656032, 37.774808775969753 ], [ -122.402524096584528, 37.776039321403807 ], [ -122.40337073826143, 37.776714700215486 ], [ -122.403505778866929, 37.776822422431877 ], [ -122.403673439982725, 37.776956165214415 ], [ -122.404070256642925, 37.777272702482797 ], [ -122.404605505853894, 37.777699659794813 ], [ -122.405068508898097, 37.778068981419388 ], [ -122.405615266425855, 37.778505104539292 ], [ -122.404431250807633, 37.779440334605447 ], [ -122.403387209275081, 37.78026497235011 ], [ -122.401159718585049, 37.782024266952142 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":2,"ZIP_CODE":94105,"ID":94105},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.39249932896719, 37.793768814133983 ], [ -122.391890260341384, 37.794278544568918 ], [ -122.391788865572423, 37.794170982455135 ], [ -122.39173429034625, 37.79420276052317 ], [ -122.391666728649753, 37.794132425256194 ], [ -122.391723034266192, 37.79410061945832 ], [ -122.391673228351905, 37.794047854124599 ], [ -122.391982015107928, 37.793871906128679 ], [ -122.391589022782, 37.793527982873798 ], [ -122.391723231555744, 37.793429001692992 ], [ -122.390805927608938, 37.792657675413892 ], [ -122.388808599369057, 37.790978116182679 ], [ -122.388930714411984, 37.790880018842998 ], [ -122.388611692601799, 37.790313089306778 ], [ -122.388048971491713, 37.790507516256234 ], [ -122.388012417064502, 37.790431188672287 ], [ -122.388369268465311, 37.790308044637399 ], [ -122.388285919009036, 37.790161047422416 ], [ -122.388320274159014, 37.790150883121463 ], [ -122.388243932142601, 37.790007207265845 ], [ -122.388219415789919, 37.789995925591761 ], [ -122.388076857804336, 37.790038725053051 ], [ -122.38779803320179, 37.790149885537438 ], [ -122.385731305877229, 37.790973806479329 ], [ -122.385715648397209, 37.790970622998962 ], [ -122.385703294724394, 37.790961206457723 ], [ -122.385509561738004, 37.790556391724344 ], [ -122.385507518014222, 37.790544063409705 ], [ -122.385514141658973, 37.790532283492631 ], [ -122.385686917933171, 37.79045260764569 ], [ -122.387606646474296, 37.789787359176458 ], [ -122.387348795424046, 37.789311467853956 ], [ -122.38734757309517, 37.78931176210844 ], [ -122.385363735345749, 37.789788908162748 ], [ -122.385346470166525, 37.789790557672781 ], [ -122.385330865935444, 37.789789433734306 ], [ -122.3853151742195, 37.789784877582385 ], [ -122.385301142770246, 37.789777548268411 ], [ -122.385290501190326, 37.789767417313975 ], [ -122.385283285054584, 37.789755858694043 ], [ -122.385108047186435, 37.789329458915937 ], [ -122.385106003217075, 37.789317130597112 ], [ -122.385109132387825, 37.789304032849302 ], [ -122.385115773404124, 37.789292939120834 ], [ -122.385127656568173, 37.78928382174719 ], [ -122.385141339390941, 37.789277422487608 ], [ -122.385148542800621, 37.789220309385662 ], [ -122.387188020139192, 37.788773590697055 ], [ -122.387049561519532, 37.788228488916552 ], [ -122.385265755459955, 37.788520039162925 ], [ -122.385250134063114, 37.78851822849537 ], [ -122.385234425193858, 37.78851298588809 ], [ -122.385222089078539, 37.788504256015905 ], [ -122.385214890495845, 37.788493383558084 ], [ -122.385126670096767, 37.788154179856562 ], [ -122.385126356426341, 37.788141823596902 ], [ -122.385129502623784, 37.788129412294914 ], [ -122.385137873116122, 37.788118290909864 ], [ -122.385149773868434, 37.788109860244717 ], [ -122.385165203482913, 37.788104119771369 ], [ -122.38712311120571, 37.787785749180493 ], [ -122.387152415559953, 37.787781160094404 ], [ -122.38716964498991, 37.787778137163613 ], [ -122.38718858690207, 37.78777440037284 ], [ -122.387205798545097, 37.787770691273494 ], [ -122.387224740799539, 37.787766954471365 ], [ -122.387241935339802, 37.787762558917869 ], [ -122.387260859452994, 37.787758135677656 ], [ -122.387278054335084, 37.787753740113331 ], [ -122.387312408509445, 37.787743576101576 ], [ -122.387329567801103, 37.787737807654125 ], [ -122.387346745228243, 37.787732725636424 ], [ -122.387363887068403, 37.787726270740649 ], [ -122.38738104704403, 37.787720502274603 ], [ -122.38740694457185, 37.787241442038656 ], [ -122.387019444956891, 37.787247644385083 ], [ -122.384558944804354, 37.787400993480382 ], [ -122.384543323667074, 37.787399182993411 ], [ -122.384527632511421, 37.787394627009306 ], [ -122.384515296650974, 37.787385896512234 ], [ -122.384504655873897, 37.787375765751548 ], [ -122.384499135159118, 37.787362806267062 ], [ -122.384342210870813, 37.785748083262355 ], [ -122.384341897348037, 37.785735727269817 ], [ -122.384346773449252, 37.785723288336335 ], [ -122.38435689108006, 37.785712825798925 ], [ -122.384370521056837, 37.785704367292539 ], [ -122.384385968349036, 37.785699313626168 ], [ -122.387217967726542, 37.785525599931667 ], [ -122.387242186237785, 37.785525212275893 ], [ -122.387269846695702, 37.785524082797316 ], [ -122.387295742393547, 37.78552160811531 ], [ -122.387323367958444, 37.785519105736952 ], [ -122.387349245861117, 37.785515944605116 ], [ -122.387375089561743, 37.785511410569285 ], [ -122.387402662781668, 37.785506848841521 ], [ -122.387454279688384, 37.785495034977437 ], [ -122.387478323373855, 37.785487782842686 ], [ -122.387504079475306, 37.785479816566138 ], [ -122.387528105357717, 37.785471877983142 ], [ -122.387553826899222, 37.785462538802953 ], [ -122.387580894103834, 37.785438070169313 ], [ -122.387630346985745, 37.78486455148672 ], [ -122.385458308223278, 37.78499338709468 ], [ -122.385413881876744, 37.784606785946664 ], [ -122.387221366105805, 37.784501641660896 ], [ -122.387418079949683, 37.784479264504995 ], [ -122.38743876829875, 37.784476186423468 ], [ -122.387483534893533, 37.784467229088612 ], [ -122.387528231689217, 37.784455525961853 ], [ -122.387550562288524, 37.78444898795393 ], [ -122.387571145938807, 37.78444179118685 ], [ -122.387593442333781, 37.784433880546885 ], [ -122.387613991073025, 37.784425310610295 ], [ -122.38765505365474, 37.784406798388098 ], [ -122.387673819852623, 37.78439619708557 ], [ -122.387677823231684, 37.784349435820396 ], [ -122.387709046749492, 37.783875783688671 ], [ -122.386286930602978, 37.783958976243902 ], [ -122.386236533710786, 37.783405597391891 ], [ -122.387525601081578, 37.78333071590594 ], [ -122.387695596747974, 37.783278550154108 ], [ -122.387751878035047, 37.783246059476667 ], [ -122.387776877347846, 37.78286796141245 ], [ -122.3875502225155, 37.782801544578085 ], [ -122.387525883466154, 37.782797127453357 ], [ -122.387484228568439, 37.78279230054234 ], [ -122.387463418560699, 37.782790573250665 ], [ -122.387440913647538, 37.782790246810194 ], [ -122.387420138539767, 37.78278989267335 ], [ -122.387388984601131, 37.782789704683182 ], [ -122.387368261829351, 37.782791409869013 ], [ -122.387347521611616, 37.782792428607252 ], [ -122.384758972173714, 37.782940280456494 ], [ -122.384743316428853, 37.782937096842417 ], [ -122.384732711445736, 37.782928338977264 ], [ -122.384679972094801, 37.782554918115103 ], [ -122.384681388329753, 37.782542534464426 ], [ -122.384691505480149, 37.782532071892298 ], [ -122.384705187096728, 37.782525672675533 ], [ -122.387509249137921, 37.78234690330077 ], [ -122.387528224534123, 37.782344539065186 ], [ -122.387554136561661, 37.78234275076899 ], [ -122.38762294594062, 37.782322839482177 ], [ -122.387787765874378, 37.782275144853472 ], [ -122.387765464889313, 37.78194244138043 ], [ -122.388106738902522, 37.781931906493995 ], [ -122.388231340039766, 37.782146697467269 ], [ -122.388304301898813, 37.782356717503951 ], [ -122.388306939892615, 37.782385221520776 ], [ -122.389843136047602, 37.783611740842574 ], [ -122.389846392025618, 37.783609176617361 ], [ -122.390856721023212, 37.784410569188324 ], [ -122.391599105853345, 37.783822668268179 ], [ -122.391600764141245, 37.783823989838545 ], [ -122.392032919786118, 37.784168354830349 ], [ -122.392118766536498, 37.784205306785267 ], [ -122.392215026316663, 37.784279352365694 ], [ -122.392216553530702, 37.784278123341721 ], [ -122.39285700396303, 37.784773072758867 ], [ -122.39286959393705, 37.78478280203197 ], [ -122.39343711789931, 37.784459123881106 ], [ -122.394398389309941, 37.783701667981575 ], [ -122.395160622349934, 37.78431101230386 ], [ -122.395895701657864, 37.784896929203114 ], [ -122.396705177550587, 37.785542130425938 ], [ -122.397811613142864, 37.784666586003652 ], [ -122.399369533643153, 37.785899247741973 ], [ -122.400468483886854, 37.785030285141588 ], [ -122.400994549885382, 37.785441790992316 ], [ -122.400998469557948, 37.785444857061968 ], [ -122.401480059865179, 37.785821567351917 ], [ -122.401489835489045, 37.785829214187501 ], [ -122.402025419766176, 37.786248152290575 ], [ -122.402575227394536, 37.786678208153539 ], [ -122.403028193190352, 37.787024418822838 ], [ -122.403028734856406, 37.78702485040828 ], [ -122.403342641535644, 37.787274627660381 ], [ -122.403430800369534, 37.787641848645734 ], [ -122.403239953883428, 37.787802352067843 ], [ -122.40290309900054, 37.788085647297414 ], [ -122.402903089488873, 37.788085654318181 ], [ -122.402404665507532, 37.788463925757384 ], [ -122.402065730098272, 37.788721152097366 ], [ -122.401375490979433, 37.789264321921429 ], [ -122.400067228055164, 37.790303858609981 ], [ -122.399919790020746, 37.790414442896498 ], [ -122.399480001759599, 37.790744297277485 ], [ -122.399222136170906, 37.790956214990921 ], [ -122.39914859901539, 37.791016648609592 ], [ -122.399148598683425, 37.79101664916432 ], [ -122.398264448861653, 37.791716058450703 ], [ -122.39826444614279, 37.791716060417308 ], [ -122.397840810091907, 37.792047595331439 ], [ -122.39738344591872, 37.792405521295422 ], [ -122.396504486670068, 37.793097082520163 ], [ -122.396376076969489, 37.793198086984006 ], [ -122.396302004629632, 37.793256350149633 ], [ -122.396302004290646, 37.793256350429786 ], [ -122.395983670970253, 37.793501461560965 ], [ -122.395622922555773, 37.793779228585429 ], [ -122.39533276386878, 37.794011429145591 ], [ -122.395317307728533, 37.794023797689903 ], [ -122.394971722038662, 37.794300351169447 ], [ -122.394747579547172, 37.794479718347191 ], [ -122.394745733667804, 37.794478246556643 ], [ -122.394745701490038, 37.794478274267938 ], [ -122.394150899798674, 37.794987788593353 ], [ -122.39270797067924, 37.793614415765255 ], [ -122.392702063215523, 37.793608792659974 ], [ -122.39249932896719, 37.793768814133983 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":3,"ZIP_CODE":94129,"ID":94129},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.470990721149789, 37.787534455433345 ], [ -122.472290534181823, 37.787395917162272 ], [ -122.472401902490546, 37.787384046501884 ], [ -122.47254342327507, 37.787368961705944 ], [ -122.472782224474642, 37.787331534391747 ], [ -122.473316434470121, 37.787247805418339 ], [ -122.474432824368861, 37.787072820298278 ], [ -122.474584006514732, 37.787049123020516 ], [ -122.47616220885665, 37.786978730627588 ], [ -122.478707989065171, 37.78691405835 ], [ -122.481375583614479, 37.787198893328011 ], [ -122.483910676418589, 37.787705653817092 ], [ -122.483911841345289, 37.78771598691722 ], [ -122.484019551359538, 37.788671434543716 ], [ -122.484071292407094, 37.789571562974182 ], [ -122.484214987310182, 37.789767611906584 ], [ -122.484758163249651, 37.789969442365155 ], [ -122.485095392905748, 37.790094746949087 ], [ -122.486221786002261, 37.790513270391187 ], [ -122.486196663014411, 37.790544596769486 ], [ -122.486148110204482, 37.790605847513199 ], [ -122.486108757859654, 37.790687545376898 ], [ -122.486034586054117, 37.790761588869977 ], [ -122.48595999185838, 37.790819844471812 ], [ -122.485896199163861, 37.790893713055688 ], [ -122.485740384038749, 37.791021323419344 ], [ -122.48558351329909, 37.791238913899868 ], [ -122.485411383576832, 37.791468435611826 ], [ -122.485284654257228, 37.791712987869268 ], [ -122.484994993901111, 37.791948608146861 ], [ -122.484752903676167, 37.79221570331633 ], [ -122.484541285320944, 37.792522116372695 ], [ -122.484363647892437, 37.79274005429609 ], [ -122.484183607122475, 37.793062416612024 ], [ -122.484072129345151, 37.793295035940602 ], [ -122.483858237133077, 37.793646123471206 ], [ -122.483593432919847, 37.794035150786577 ], [ -122.48329368676049, 37.794671303481294 ], [ -122.483518531231283, 37.794730014502065 ], [ -122.48308859662535, 37.79561146099627 ], [ -122.482999467368202, 37.795903449272551 ], [ -122.48285101972256, 37.796177893057802 ], [ -122.482765752291186, 37.796484924353678 ], [ -122.482667211606753, 37.796813467545597 ], [ -122.482504820847737, 37.797149264997877 ], [ -122.482349642968302, 37.797495928150028 ], [ -122.482180347467406, 37.797832527598885 ], [ -122.482169137762298, 37.797996159399602 ], [ -122.482136359830861, 37.798129936813986 ], [ -122.482085493238017, 37.798234488898757 ], [ -122.482121580114068, 37.798289507917929 ], [ -122.482129545147487, 37.798328517967903 ], [ -122.482111649834962, 37.798371396374968 ], [ -122.482102148276397, 37.798404519393337 ], [ -122.482087585279373, 37.798442534909526 ], [ -122.482079722552115, 37.798472196426395 ], [ -122.482040900643639, 37.798509246213612 ], [ -122.481958513784505, 37.798535353148957 ], [ -122.481870239865685, 37.798535463289312 ], [ -122.481831454802517, 37.798573885582073 ], [ -122.48191348856912, 37.79872908258961 ], [ -122.481933747767386, 37.798774753652147 ], [ -122.481894064444091, 37.798779540742402 ], [ -122.481782518807989, 37.79868595916038 ], [ -122.481759479485277, 37.798795537302446 ], [ -122.481735532663109, 37.798806240772073 ], [ -122.481729674725472, 37.79884616987701 ], [ -122.481697076819628, 37.79885701872184 ], [ -122.481553967429107, 37.798748172710248 ], [ -122.481544740366218, 37.798791592096414 ], [ -122.481675391067768, 37.798887599511232 ], [ -122.481685177680191, 37.798930012650303 ], [ -122.481641997341171, 37.798933485499177 ], [ -122.481619981772425, 37.798951710306021 ], [ -122.481601609693158, 37.798976741512377 ], [ -122.481583384160913, 37.799007264136819 ], [ -122.481561643359143, 37.799035785621555 ], [ -122.481552599461594, 37.799086069282282 ], [ -122.48153672724159, 37.799139901359283 ], [ -122.481507471077649, 37.799211126714575 ], [ -122.481470873600131, 37.799266680501994 ], [ -122.481417267273812, 37.799333507835762 ], [ -122.481380082795965, 37.799367095921824 ], [ -122.481394839952742, 37.799401184738606 ], [ -122.48138749011072, 37.799450066445814 ], [ -122.481313103352264, 37.799516556146521 ], [ -122.481199920275785, 37.799556228466017 ], [ -122.481106226731853, 37.799612741364335 ], [ -122.481068868952889, 37.799704704484391 ], [ -122.481063386681015, 37.799823601791012 ], [ -122.481042139949025, 37.799870656721012 ], [ -122.48098682060791, 37.799938199625082 ], [ -122.480980184705871, 37.800013851703859 ], [ -122.480977156432658, 37.800224730569639 ], [ -122.480974804661557, 37.800331213761126 ], [ -122.480860274222692, 37.800385329797535 ], [ -122.480757965088657, 37.800443360304584 ], [ -122.48067857879505, 37.800582040732152 ], [ -122.48065611449222, 37.800648344612128 ], [ -122.480592381330325, 37.800724956178229 ], [ -122.480537665874181, 37.800815150409605 ], [ -122.480468568377589, 37.800950224199951 ], [ -122.480375485908439, 37.801094628286094 ], [ -122.480295978813317, 37.801293743123836 ], [ -122.480202328037436, 37.801416867810858 ], [ -122.480181840275407, 37.801557305763211 ], [ -122.480071801739967, 37.801844835145566 ], [ -122.480027318791514, 37.802059156846411 ], [ -122.480044134726015, 37.802235365083838 ], [ -122.480004943470632, 37.80238847850972 ], [ -122.479965705600534, 37.802604771748101 ], [ -122.479928024203545, 37.802749618690633 ], [ -122.479899085376999, 37.802897752511299 ], [ -122.479813341330441, 37.803057827736559 ], [ -122.479734279947053, 37.803208863153962 ], [ -122.479678141843124, 37.803310755542739 ], [ -122.479612025097651, 37.803427923840943 ], [ -122.479496444899141, 37.803572704736546 ], [ -122.479357004588351, 37.803861413494445 ], [ -122.479173928312875, 37.80433146553451 ], [ -122.479146809127258, 37.804483001950985 ], [ -122.479060667102701, 37.804693214811543 ], [ -122.478953175659996, 37.804881810346664 ], [ -122.478815220557294, 37.805291358623961 ], [ -122.47872883882674, 37.805492647931004 ], [ -122.478723432948883, 37.805679530333919 ], [ -122.47869664200617, 37.805843422292654 ], [ -122.478685946257201, 37.805961720018743 ], [ -122.478628322791295, 37.806008011253461 ], [ -122.478654742843744, 37.806089976088074 ], [ -122.478631304779441, 37.806119899160173 ], [ -122.478660343597923, 37.806170230012903 ], [ -122.478638955177018, 37.806277032642242 ], [ -122.478627125019798, 37.806352771870088 ], [ -122.478625044107972, 37.806469551574978 ], [ -122.47857586751384, 37.806637939992576 ], [ -122.478562516078711, 37.80678649853526 ], [ -122.478544650108333, 37.806960541692234 ], [ -122.478526703332861, 37.807066600081164 ], [ -122.478526389161814, 37.807184723319764 ], [ -122.478521297177736, 37.807253482414033 ], [ -122.478488208711909, 37.807311036148292 ], [ -122.478483958170003, 37.807411370608691 ], [ -122.478496304822514, 37.807549883734964 ], [ -122.478476156109295, 37.807833156107016 ], [ -122.478405186887699, 37.808093245296376 ], [ -122.478343748883177, 37.808126216988313 ], [ -122.478060427750734, 37.808278265895638 ], [ -122.477897062640963, 37.80844925522419 ], [ -122.477885395973601, 37.808531172189731 ], [ -122.477923697644769, 37.808669250052077 ], [ -122.477956528906134, 37.809251736581921 ], [ -122.477922196862778, 37.80978247039468 ], [ -122.477956931601639, 37.810111519960003 ], [ -122.477924513902849, 37.810324264541741 ], [ -122.477975357212003, 37.810543166576302 ], [ -122.477691959274622, 37.810627579828761 ], [ -122.477738440983671, 37.81094269802653 ], [ -122.477669662799912, 37.810960332923507 ], [ -122.477465352217308, 37.810997758254302 ], [ -122.4773147668257, 37.811025342092201 ], [ -122.476951827952391, 37.810983355163785 ], [ -122.476621797907725, 37.810876948869407 ], [ -122.47656163509636, 37.810893065263848 ], [ -122.476466638674822, 37.81083628492037 ], [ -122.47639876264958, 37.810757761311969 ], [ -122.476244453139699, 37.810423848047549 ], [ -122.476192907539087, 37.810243414175943 ], [ -122.47615497008627, 37.809858792499412 ], [ -122.47604874198008, 37.809640130705603 ], [ -122.475967371125094, 37.809574880888988 ], [ -122.475790153494444, 37.809485827869665 ], [ -122.475539966877108, 37.809387008587656 ], [ -122.474949730564461, 37.809260233883315 ], [ -122.474802168498073, 37.809179610065499 ], [ -122.474477490769161, 37.809143842083898 ], [ -122.474059299537672, 37.809106891534391 ], [ -122.473248913495638, 37.809099164155811 ], [ -122.472667246163553, 37.80903404071298 ], [ -122.472248345244111, 37.80897031306057 ], [ -122.471807567969009, 37.808865058985567 ], [ -122.471692590128313, 37.808861156356251 ], [ -122.471577117792876, 37.808857237159089 ], [ -122.471241422813662, 37.80879760884919 ], [ -122.470932885927255, 37.808717610499883 ], [ -122.47066006806898, 37.808613665617798 ], [ -122.470600816238615, 37.80859886080146 ], [ -122.470032562336371, 37.809430372877515 ], [ -122.469989867152222, 37.809452374737276 ], [ -122.469923620349192, 37.809434939483481 ], [ -122.469403337873828, 37.809203958897747 ], [ -122.469386781047135, 37.809167151824653 ], [ -122.469446470968407, 37.809067952374448 ], [ -122.469513627885206, 37.809054469737255 ], [ -122.470046113471852, 37.809288679655658 ], [ -122.470536336868321, 37.808582769832967 ], [ -122.47042036446561, 37.808452854807648 ], [ -122.470227327454069, 37.808354443608728 ], [ -122.470098624189163, 37.80826663136105 ], [ -122.470013817898405, 37.808202121652926 ], [ -122.469815463486142, 37.808098991213633 ], [ -122.469586546186093, 37.807953106986339 ], [ -122.469305300471973, 37.807727061403774 ], [ -122.469233592741006, 37.807568936815628 ], [ -122.469112342826094, 37.807370435141976 ], [ -122.46886886007195, 37.807066844008062 ], [ -122.468789265438318, 37.807002933173059 ], [ -122.468641769161479, 37.806924361175163 ], [ -122.468442727148087, 37.806860383444018 ], [ -122.468303117397753, 37.806818075943092 ], [ -122.46814816670377, 37.806980670547468 ], [ -122.46804250856195, 37.806913074050627 ], [ -122.468204198687829, 37.806743499513175 ], [ -122.468154584727131, 37.80670037662253 ], [ -122.467927641872478, 37.806563383834956 ], [ -122.4677672527434, 37.806455496134681 ], [ -122.467355591928154, 37.806141659736177 ], [ -122.467203291926239, 37.806012347645776 ], [ -122.466996296046148, 37.805909356729394 ], [ -122.466671493417238, 37.805802836197401 ], [ -122.466463320033583, 37.805982110961864 ], [ -122.466652133036774, 37.805790797867139 ], [ -122.466274152924925, 37.805653990321176 ], [ -122.466075349709101, 37.80558203392561 ], [ -122.465895016150796, 37.805570618742252 ], [ -122.465648753037854, 37.805488195293123 ], [ -122.46546102999136, 37.805393808021854 ], [ -122.464551731906468, 37.805113664168701 ], [ -122.464230324554308, 37.805004333527904 ], [ -122.463987997870177, 37.804939695859083 ], [ -122.463579617827847, 37.804879883064366 ], [ -122.463271699005631, 37.804887756693624 ], [ -122.462952230341088, 37.804917109899002 ], [ -122.4624302743036, 37.805013698161765 ], [ -122.462214023782167, 37.805018669869817 ], [ -122.462027122615794, 37.804955166469341 ], [ -122.461896643188638, 37.804930554615567 ], [ -122.461601325019004, 37.804956755736356 ], [ -122.461272453201914, 37.805023344559039 ], [ -122.461007547032963, 37.805086808651389 ], [ -122.459772513833471, 37.805253612450713 ], [ -122.45957795006224, 37.805293241948746 ], [ -122.459540191073017, 37.805305543773983 ], [ -122.45950068434351, 37.805317187894794 ], [ -122.459462907558404, 37.805328803259258 ], [ -122.459423363879012, 37.805339074505127 ], [ -122.45938555118417, 37.805349316978521 ], [ -122.459306427886148, 37.805368486538775 ], [ -122.459227232780066, 37.805384910313265 ], [ -122.459185886621981, 37.805392464497949 ], [ -122.459106618316682, 37.805406142481793 ], [ -122.459065217794489, 37.805411637333286 ], [ -122.459025547917307, 37.805417103422087 ], [ -122.458984129270405, 37.80542191181479 ], [ -122.458944422811243, 37.805426005021417 ], [ -122.458902967930442, 37.80542944052501 ], [ -122.458861494934339, 37.805432189583698 ], [ -122.458788912310027, 37.805436828799479 ], [ -122.458735345621889, 37.80544046541047 ], [ -122.458683526998115, 37.80544475969581 ], [ -122.458631726477662, 37.805449740388731 ], [ -122.458578213760234, 37.805455436499734 ], [ -122.458526449095928, 37.805461790012899 ], [ -122.458474703215558, 37.805468829647623 ], [ -122.458371283182728, 37.805485655405761 ], [ -122.458319609004732, 37.805495440705506 ], [ -122.458269665819927, 37.805505197514321 ], [ -122.45821802818655, 37.805516356173719 ], [ -122.458168120492331, 37.805527485811837 ], [ -122.458116519376176, 37.805540017007239 ], [ -122.458066648197928, 37.805552519182882 ], [ -122.457989327072951, 37.805574405126777 ], [ -122.45793619470966, 37.805594515430641 ], [ -122.457883043876322, 37.805613939560359 ], [ -122.457829874920449, 37.805632677510189 ], [ -122.457774957510779, 37.805650757180459 ], [ -122.457721751946011, 37.805668121951648 ], [ -122.457666780196845, 37.805684142829186 ], [ -122.457610078443324, 37.805700191847833 ], [ -122.457500062415335, 37.80572948720183 ], [ -122.457443287865871, 37.805742790973085 ], [ -122.457386495190917, 37.805755408011883 ], [ -122.457329684053221, 37.805767338598564 ], [ -122.457272855492562, 37.805778582715845 ], [ -122.457186701695477, 37.805793746855791 ], [ -122.457077909022615, 37.805803793319789 ], [ -122.456970882463025, 37.805815183288864 ], [ -122.456862180533747, 37.805828661426311 ], [ -122.456755226634087, 37.80584279746536 ], [ -122.456648326952561, 37.805858992150092 ], [ -122.456541463411881, 37.805876559873688 ], [ -122.456434635998889, 37.805895500361686 ], [ -122.45632959276756, 37.805916471347693 ], [ -122.456224568256204, 37.805938128659257 ], [ -122.456119597596228, 37.80596184517497 ], [ -122.456014644961741, 37.805986248302439 ], [ -122.45591147681688, 37.806012681382633 ], [ -122.455806614105612, 37.806040516209428 ], [ -122.455705248815832, 37.806069666405428 ], [ -122.455564429228914, 37.806112518618505 ], [ -122.45530695988451, 37.806195761893825 ], [ -122.454600415883462, 37.806430130022392 ], [ -122.454483234784888, 37.806468999744823 ], [ -122.454353658700001, 37.806478701096999 ], [ -122.454308145719423, 37.806459540393945 ], [ -122.454293829263207, 37.806375996256122 ], [ -122.454085665791084, 37.806359530611644 ], [ -122.454069929877903, 37.806353610767474 ], [ -122.453815604080873, 37.806293271483817 ], [ -122.453295386032664, 37.806259311412973 ], [ -122.452781551105744, 37.806270567825713 ], [ -122.452438711570082, 37.806267316310901 ], [ -122.451653324871984, 37.806353109244483 ], [ -122.450906745259303, 37.80653233722969 ], [ -122.450459653590798, 37.806646175036533 ], [ -122.44991286747026, 37.806721142700994 ], [ -122.449819483247254, 37.806724746830461 ], [ -122.449720673642986, 37.806719513093618 ], [ -122.449631038513971, 37.806734042766898 ], [ -122.449554038474531, 37.806768278664137 ], [ -122.44947869660497, 37.806799740182214 ], [ -122.449399659671798, 37.806822335243758 ], [ -122.449304851007483, 37.806837636909691 ], [ -122.449171524916196, 37.806836407131136 ], [ -122.449109070409847, 37.806831258752986 ], [ -122.449048183710957, 37.806819903592029 ], [ -122.449010891791161, 37.806784123494651 ], [ -122.448891660899136, 37.806726348099637 ], [ -122.448806459828916, 37.806711961234221 ], [ -122.448728288255808, 37.806701578532227 ], [ -122.448565239272398, 37.806755090545202 ], [ -122.448529100304583, 37.806763241657009 ], [ -122.448455091339923, 37.806133486140737 ], [ -122.448455258275729, 37.806133277363898 ], [ -122.448323332142422, 37.805007750605469 ], [ -122.448321161555853, 37.804993824977359 ], [ -122.448279145759457, 37.80472422506687 ], [ -122.44824552349904, 37.804508484024247 ], [ -122.448240728857812, 37.804477717258706 ], [ -122.448240723025904, 37.804477679722268 ], [ -122.448245764546613, 37.8044754914729 ], [ -122.448316879890498, 37.804444627382082 ], [ -122.448814547024654, 37.804228638340902 ], [ -122.448954929708933, 37.80412855834809 ], [ -122.449124213448584, 37.804007874392056 ], [ -122.449253815658196, 37.803861977230383 ], [ -122.449388062152011, 37.803710849923448 ], [ -122.449495662264184, 37.803470319431604 ], [ -122.449583722697156, 37.803153095621241 ], [ -122.449583713807527, 37.803152915295549 ], [ -122.449565462756809, 37.802791419060213 ], [ -122.449536106109235, 37.802697377072583 ], [ -122.449460220896157, 37.80245428555321 ], [ -122.449178591741017, 37.802073857413127 ], [ -122.449043488821943, 37.801965383441527 ], [ -122.448802640091088, 37.801772003872607 ], [ -122.448359651469772, 37.801586782043685 ], [ -122.447921599691895, 37.801532283988202 ], [ -122.447857007904148, 37.801596177616553 ], [ -122.447819731578562, 37.801633051558142 ], [ -122.447819572978844, 37.801633208279924 ], [ -122.447802865090509, 37.801525678628579 ], [ -122.447614227653389, 37.80032479990944 ], [ -122.447613279369918, 37.80032370169468 ], [ -122.447466030932901, 37.799389886853575 ], [ -122.447400275900733, 37.798948048802856 ], [ -122.447341437979304, 37.798552685345861 ], [ -122.447327769221047, 37.798519415660031 ], [ -122.447303043858923, 37.798459232650295 ], [ -122.447209582420982, 37.797849561838987 ], [ -122.44715829626513, 37.797515005478481 ], [ -122.44715829625072, 37.79751500492933 ], [ -122.447014738232738, 37.796578510197754 ], [ -122.447014738218328, 37.796578509648619 ], [ -122.446928896449293, 37.796018515191513 ], [ -122.44687098056005, 37.795640691997477 ], [ -122.446751148304088, 37.794858932799087 ], [ -122.446727777275527, 37.794706465308671 ], [ -122.446727777261131, 37.794706464759514 ], [ -122.446587862952981, 37.793765120337646 ], [ -122.446446456540414, 37.792813716046261 ], [ -122.446446033268856, 37.792810866507708 ], [ -122.446299573716246, 37.791878694429421 ], [ -122.446299547924625, 37.791878529215651 ], [ -122.44720637942703, 37.791763091830468 ], [ -122.447679208068394, 37.79170289872647 ], [ -122.449367313308201, 37.791487980191171 ], [ -122.449385188501296, 37.791484927305568 ], [ -122.450995459060991, 37.791209906278311 ], [ -122.452035629818212, 37.790998907609811 ], [ -122.454248357567437, 37.79059310209788 ], [ -122.455878319348855, 37.790294143976332 ], [ -122.457498733292852, 37.789996912625632 ], [ -122.459011873160264, 37.789719335764374 ], [ -122.459028627866218, 37.789715983297555 ], [ -122.459250455476877, 37.789713291862398 ], [ -122.45947565027717, 37.789710559160014 ], [ -122.459781586189493, 37.789596250165474 ], [ -122.459925547070256, 37.789542753604124 ], [ -122.468653534340191, 37.787783523544832 ], [ -122.470990721149789, 37.787534455433345 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":4,"ZIP_CODE":94121,"ID":94121},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.504456509027335, 37.788067554312491 ], [ -122.504150949920984, 37.788096097763379 ], [ -122.504066815467581, 37.788120877294119 ], [ -122.504049145771674, 37.78810744254686 ], [ -122.503997231067004, 37.788107638193928 ], [ -122.503846231021797, 37.788091662877633 ], [ -122.503713944876083, 37.788063694207068 ], [ -122.503612889329972, 37.788038628655784 ], [ -122.503526395190363, 37.78804009845387 ], [ -122.503485137277139, 37.78805041389267 ], [ -122.503463545305024, 37.78801987747579 ], [ -122.503373498826377, 37.788017973822534 ], [ -122.503335534005146, 37.788022052592311 ], [ -122.503263415949803, 37.788043193399247 ], [ -122.503234378285072, 37.788057421563131 ], [ -122.503243398050046, 37.788071003120102 ], [ -122.503209152201507, 37.78808463302547 ], [ -122.503179577522019, 37.788078954832578 ], [ -122.503144887269229, 37.788076110778647 ], [ -122.503077958752755, 37.78809716302807 ], [ -122.503049013609541, 37.788114823274398 ], [ -122.503006581160705, 37.78814576070333 ], [ -122.502956321560973, 37.788143180813591 ], [ -122.502925535751373, 37.788156752131144 ], [ -122.502902751007483, 37.788146151342978 ], [ -122.502865053026014, 37.788095972678335 ], [ -122.502836115946863, 37.78804976589835 ], [ -122.502789020665148, 37.78803614434397 ], [ -122.502704311593945, 37.788039643712104 ], [ -122.502589076168022, 37.788066323379901 ], [ -122.502515190951499, 37.788086120259166 ], [ -122.502425496104195, 37.788097257971025 ], [ -122.502376106845503, 37.788126939838207 ], [ -122.502316846531585, 37.7881114644726 ], [ -122.502255070395776, 37.788131055545016 ], [ -122.502169528699341, 37.788103665363288 ], [ -122.502105689513968, 37.788110929794158 ], [ -122.50207398762231, 37.788154733004774 ], [ -122.502071249254328, 37.788181562090124 ], [ -122.501989944924048, 37.788182942633284 ], [ -122.501951813392949, 37.78818084312524 ], [ -122.501912664088508, 37.788140990459205 ], [ -122.501912016401619, 37.788116965280736 ], [ -122.501877326179624, 37.788114120853955 ], [ -122.501877973840479, 37.788138145483494 ], [ -122.501858399507697, 37.788182429188559 ], [ -122.501842192404723, 37.788223222019695 ], [ -122.501801304245816, 37.788247265660054 ], [ -122.501766151357245, 37.788227260005755 ], [ -122.501756965310037, 37.788207500503631 ], [ -122.50172600293584, 37.788150340007959 ], [ -122.501700517223497, 37.788167941185236 ], [ -122.50167957356264, 37.788161429621908 ], [ -122.501619212555269, 37.788169321478662 ], [ -122.501569767420492, 37.788196943730178 ], [ -122.501591358665465, 37.788227480492822 ], [ -122.501533078675976, 37.788248385310276 ], [ -122.501514596042369, 37.788204747707923 ], [ -122.50145942465268, 37.788212551659868 ], [ -122.501437657642668, 37.788239704012419 ], [ -122.501335150234794, 37.788224962263008 ], [ -122.501268313574613, 37.788249445888859 ], [ -122.50115878458611, 37.788295256277053 ], [ -122.501091780980232, 37.788313561975109 ], [ -122.501021937979715, 37.788290711431223 ], [ -122.501006184350814, 37.78828411139213 ], [ -122.50097195648992, 37.788298427073251 ], [ -122.500993621505359, 37.788331709648567 ], [ -122.500947376526028, 37.788349663239131 ], [ -122.500879097304491, 37.788320605139283 ], [ -122.500861336013799, 37.788303738053742 ], [ -122.500826830696198, 37.788307757577726 ], [ -122.500806349431429, 37.788318405959657 ], [ -122.500754452719278, 37.788319286610971 ], [ -122.500738328529678, 37.78829895802815 ], [ -122.500712935348687, 37.788319991115557 ], [ -122.500640723790397, 37.788337698187455 ], [ -122.500593831459696, 37.788331626454848 ], [ -122.500550140713713, 37.78831588602435 ], [ -122.500538567416584, 37.788335997845735 ], [ -122.50048939950284, 37.78837391630227 ], [ -122.500458095017024, 37.788368266503305 ], [ -122.500446429574566, 37.788384946179491 ], [ -122.50034045177307, 37.788434129242091 ], [ -122.500272801380206, 37.788428409551436 ], [ -122.500256870701349, 37.788479498553457 ], [ -122.500250772830086, 37.788574372083048 ], [ -122.500192399744307, 37.788591844106463 ], [ -122.500174472488098, 37.788568799078057 ], [ -122.500178293975864, 37.788517915512088 ], [ -122.500130319126384, 37.788535897847389 ], [ -122.500091521884229, 37.788509086399898 ], [ -122.500099172636652, 37.788471872673249 ], [ -122.500066212558522, 37.788468998362944 ], [ -122.50006658231419, 37.788482726609828 ], [ -122.500011040812936, 37.788476801362307 ], [ -122.499966794796208, 37.788440467945314 ], [ -122.499878115891249, 37.788489357153694 ], [ -122.499810631863213, 37.788489815307436 ], [ -122.499785570748472, 37.78852320387022 ], [ -122.499760324750355, 37.788549727891812 ], [ -122.499797151337432, 37.788567645255235 ], [ -122.499803450517931, 37.788608742793357 ], [ -122.49976162645244, 37.788662331112889 ], [ -122.499733393517658, 37.788642207768127 ], [ -122.499727335024716, 37.788610033760072 ], [ -122.49968724080243, 37.78866359271359 ], [ -122.499634371443463, 37.788692645687142 ], [ -122.499577562358439, 37.788703910220832 ], [ -122.499554630056736, 37.788687817377856 ], [ -122.499511356576448, 37.788623310977023 ], [ -122.499481164550005, 37.788530426400044 ], [ -122.499432590648397, 37.788461889419303 ], [ -122.499336411156918, 37.788425062960037 ], [ -122.499266771879846, 37.788409762065221 ], [ -122.499202877060384, 37.788414965914313 ], [ -122.499128103233858, 37.788401812217707 ], [ -122.499099500985864, 37.788367960195586 ], [ -122.499041638784547, 37.788340098176221 ], [ -122.498955421371278, 37.788351861015244 ], [ -122.498920128036829, 37.788390916780045 ], [ -122.498889600061332, 37.788414096736403 ], [ -122.498846352726645, 37.788414829911119 ], [ -122.498829249780883, 37.788358120749585 ], [ -122.498858133988094, 37.78827384858316 ], [ -122.49881028141921, 37.788232082242921 ], [ -122.498779365121052, 37.788240846950437 ], [ -122.498721638945739, 37.788282343161484 ], [ -122.498684745303493, 37.788326233159403 ], [ -122.498610415395817, 37.78832955335983 ], [ -122.498598336042235, 37.788266578082698 ], [ -122.498619439354101, 37.78821471490064 ], [ -122.498602392043921, 37.788160064708592 ], [ -122.498537684539031, 37.788135065438439 ], [ -122.498508608985759, 37.788147919585676 ], [ -122.498480069151427, 37.788180680090115 ], [ -122.498393075984339, 37.788163612611328 ], [ -122.498359007071954, 37.788119551978269 ], [ -122.498367465612489, 37.788047987710556 ], [ -122.498258002596998, 37.788031987711385 ], [ -122.498205083784299, 37.787930560386634 ], [ -122.498141496631646, 37.787882879514228 ], [ -122.498020127555392, 37.787874635204304 ], [ -122.497965657850202, 37.7879085217278 ], [ -122.497937733854386, 37.787835513791961 ], [ -122.497862794972676, 37.787816181447418 ], [ -122.497833152644503, 37.787872309616162 ], [ -122.497858996475657, 37.787932304773527 ], [ -122.497838976582202, 37.787960113577462 ], [ -122.497779058543074, 37.787984477979037 ], [ -122.497727525397508, 37.787934532426668 ], [ -122.4976806523715, 37.787929145955836 ], [ -122.497620549305267, 37.78794664601778 ], [ -122.497594065916346, 37.787927179270163 ], [ -122.49754290189, 37.78789096244769 ], [ -122.49750382929264, 37.787853853467084 ], [ -122.497544349339876, 37.787816083058736 ], [ -122.497526053110533, 37.787779309105126 ], [ -122.497500930399411, 37.787746084497506 ], [ -122.497517139436695, 37.787705292265386 ], [ -122.497507659501551, 37.787674549599402 ], [ -122.497485331532715, 37.787616555022737 ], [ -122.497458570647495, 37.787586791856477 ], [ -122.497406323956653, 37.787574629197884 ], [ -122.49735786900257, 37.787574763042187 ], [ -122.497315176016556, 37.787596088453697 ], [ -122.497275259657627, 37.787591957457558 ], [ -122.497216443565691, 37.787592953772126 ], [ -122.497168648080745, 37.787553245760044 ], [ -122.497138187607533, 37.787514617578381 ], [ -122.497106127216909, 37.787480823939255 ], [ -122.497044990964866, 37.787459883810421 ], [ -122.496999885071403, 37.787455840347057 ], [ -122.496923235404381, 37.787437223130333 ], [ -122.496894579157143, 37.787401311287425 ], [ -122.49685734707576, 37.787368291637833 ], [ -122.496811927818939, 37.787352579117055 ], [ -122.496751769988833, 37.787368019451996 ], [ -122.496728617227618, 37.787343688934776 ], [ -122.496685721170834, 37.787357463425209 ], [ -122.496639544906756, 37.787313607347343 ], [ -122.496583690806744, 37.787296011229486 ], [ -122.496547105206147, 37.787287016686854 ], [ -122.496516354783793, 37.787301958649365 ], [ -122.49646797383916, 37.787304838384266 ], [ -122.496443903661216, 37.787310739875238 ], [ -122.496383616604291, 37.787321374760424 ], [ -122.496337075877918, 37.787328343443079 ], [ -122.496276530804948, 37.787329368567015 ], [ -122.496247565545247, 37.787346340725328 ], [ -122.496197934785357, 37.787367096454552 ], [ -122.496141439524379, 37.787390028597343 ], [ -122.496086747911505, 37.787415677408667 ], [ -122.496068420456311, 37.787442083500181 ], [ -122.496016690354622, 37.787449139908034 ], [ -122.495972174940263, 37.787467062259353 ], [ -122.495951842506244, 37.787478615416269 ], [ -122.495939786703687, 37.787485465489738 ], [ -122.495905650481646, 37.787503211836551 ], [ -122.495879794980965, 37.787507083489736 ], [ -122.495820979283494, 37.78750807910243 ], [ -122.49579201419597, 37.787525051142431 ], [ -122.495771716907484, 37.787542562920031 ], [ -122.495716453167731, 37.787546932051697 ], [ -122.495690597288615, 37.78755080339463 ], [ -122.495618108578682, 37.787558210990248 ], [ -122.495602871400223, 37.787570830192877 ], [ -122.495572047584162, 37.787583026463722 ], [ -122.495539604212951, 37.787599370571847 ], [ -122.495514135330879, 37.787617657121146 ], [ -122.495483182354334, 37.787625048105859 ], [ -122.495437195053938, 37.787652609233902 ], [ -122.495395954684781, 37.787663608544698 ], [ -122.495370190617706, 37.787670911683094 ], [ -122.495333314088882, 37.787715487058371 ], [ -122.495282044474621, 37.787739703822119 ], [ -122.495193913200154, 37.787744628911668 ], [ -122.495147390885393, 37.787752283545302 ], [ -122.495107603658113, 37.787752956804084 ], [ -122.495081894872186, 37.787762319709344 ], [ -122.495049506978233, 37.787780722682484 ], [ -122.494942531016747, 37.787792833838672 ], [ -122.494936422880045, 37.787823153702263 ], [ -122.49487624549289, 37.787837906657984 ], [ -122.494850021018962, 37.787828049271276 ], [ -122.494803406419749, 37.787832271634258 ], [ -122.494754880927445, 37.787894212652994 ], [ -122.494747761584406, 37.787951332156055 ], [ -122.494723178126165, 37.788002566741419 ], [ -122.494687204176572, 37.788080776838861 ], [ -122.494700862218465, 37.788138231843071 ], [ -122.494641953469724, 37.788135794738686 ], [ -122.494554921507401, 37.788052798168373 ], [ -122.494515868416002, 37.788016374906285 ], [ -122.4945350783522, 37.787958364153376 ], [ -122.494513047598829, 37.787911351574522 ], [ -122.494517883781597, 37.787833668269109 ], [ -122.494492854234224, 37.787803875161934 ], [ -122.494463538439888, 37.787807804761236 ], [ -122.494432676774579, 37.787818627891369 ], [ -122.494408993418205, 37.787838943934148 ], [ -122.494413448366132, 37.787875952476604 ], [ -122.494396887310245, 37.787903702167263 ], [ -122.49434981175834, 37.787890763675087 ], [ -122.494353194757167, 37.787823406042577 ], [ -122.494335895597104, 37.78782369865479 ], [ -122.49430957902598, 37.787810409012593 ], [ -122.494266331651687, 37.787811140513561 ], [ -122.49416034840992, 37.787795764612234 ], [ -122.494129594818148, 37.787746152815927 ], [ -122.494106737724252, 37.787732804619111 ], [ -122.494080878906914, 37.78767212220432 ], [ -122.494005791021607, 37.787582742860096 ], [ -122.49397989817011, 37.78758524069908 ], [ -122.493937148914341, 37.787604505606133 ], [ -122.49390314117592, 37.787627056362858 ], [ -122.493853140270886, 37.787634082573049 ], [ -122.493776804515477, 37.787627132573334 ], [ -122.493743568607016, 37.787613959813378 ], [ -122.493738061048077, 37.787613306047696 ], [ -122.493682801772195, 37.787606746485388 ], [ -122.493586205100101, 37.787618680905503 ], [ -122.493496509486093, 37.787629812101237 ], [ -122.493461856653141, 37.787628337503875 ], [ -122.493419162517711, 37.787649661504638 ], [ -122.493384362282285, 37.787642696015901 ], [ -122.493336275791464, 37.787656556752133 ], [ -122.493293636533849, 37.787679939994845 ], [ -122.493241832649318, 37.78768424947036 ], [ -122.493193617141287, 37.7876933054322 ], [ -122.493182042295089, 37.787713416527986 ], [ -122.493127220447846, 37.787734258699906 ], [ -122.493090653466112, 37.787725949238315 ], [ -122.493056424336842, 37.787740262623288 ], [ -122.493004582859115, 37.787743199151691 ], [ -122.492969929990394, 37.787741724684366 ], [ -122.492955061461288, 37.787768072078173 ], [ -122.492913931184304, 37.787783188809769 ], [ -122.492855170492433, 37.787786242224989 ], [ -122.492860417128782, 37.787852767193691 ], [ -122.492830071355925, 37.787882810136729 ], [ -122.492771255320051, 37.787883804228279 ], [ -122.492769800087729, 37.787829576197716 ], [ -122.492735920840914, 37.787856931882516 ], [ -122.49268687433684, 37.78777054473629 ], [ -122.492679439061774, 37.787751441716487 ], [ -122.492627892968244, 37.787765361179233 ], [ -122.492565672509713, 37.787768472646512 ], [ -122.492506929887313, 37.787772212321414 ], [ -122.492446513322577, 37.787778040470201 ], [ -122.492381054094224, 37.787789447708391 ], [ -122.492305602297094, 37.78781544526975 ], [ -122.492216274554934, 37.787840303764064 ], [ -122.492178548608294, 37.787853302497936 ], [ -122.492118555140365, 37.787874918314273 ], [ -122.492079412316457, 37.787899615509929 ], [ -122.492057605141056, 37.787925393277668 ], [ -122.491876207129678, 37.788001938945712 ], [ -122.491812827679937, 37.788026359033061 ], [ -122.491772083659185, 37.788055890066879 ], [ -122.491719745560601, 37.788104846164785 ], [ -122.491654323091851, 37.788117625573307 ], [ -122.491646041850075, 37.7881315002275 ], [ -122.491614039214184, 37.788164317512276 ], [ -122.491501375628616, 37.788222533071625 ], [ -122.491447583651606, 37.788217260993214 ], [ -122.491404851437281, 37.788237211413325 ], [ -122.491281422016286, 37.788281187084038 ], [ -122.491218428658357, 37.788320021552913 ], [ -122.491190014384841, 37.788357585284182 ], [ -122.491137087049111, 37.788384575161345 ], [ -122.491061983912687, 37.788423614320799 ], [ -122.490946338544006, 37.788499734606098 ], [ -122.490859530409139, 37.788554079246722 ], [ -122.490843207112334, 37.788590751992317 ], [ -122.490818381167585, 37.788633062206074 ], [ -122.490696422877051, 37.78873195173508 ], [ -122.490605105739689, 37.78881178134435 ], [ -122.490527498874997, 37.788886572527467 ], [ -122.490413287423564, 37.788951680519325 ], [ -122.490407103746506, 37.78897925443183 ], [ -122.490354139232181, 37.78900487109366 ], [ -122.490306437661019, 37.789033145843504 ], [ -122.490251889996458, 37.789064283086574 ], [ -122.490252239550742, 37.789077325209703 ], [ -122.490220015123754, 37.789101904980171 ], [ -122.490046709329732, 37.789222262378196 ], [ -122.489918657120555, 37.789352156846768 ], [ -122.489828681483118, 37.789482095324693 ], [ -122.489700630133797, 37.789482882790033 ], [ -122.489592566089883, 37.789454489856745 ], [ -122.489300670464104, 37.789412030065776 ], [ -122.489191447548507, 37.789340391834585 ], [ -122.488990889258972, 37.789283342302205 ], [ -122.48848285911852, 37.789442306771541 ], [ -122.488100013149761, 37.789428847345718 ], [ -122.488028309941384, 37.789530320047362 ], [ -122.487863707315668, 37.789588034282978 ], [ -122.487736999824023, 37.789574375465854 ], [ -122.487584402186499, 37.78949866010057 ], [ -122.487564674856429, 37.789472896340307 ], [ -122.487563664349921, 37.78943514280558 ], [ -122.487464302267156, 37.789473215069947 ], [ -122.48744759425297, 37.789430918694578 ], [ -122.487369692668253, 37.789430171560369 ], [ -122.487296628705792, 37.789480848156245 ], [ -122.487120114954962, 37.789610869819036 ], [ -122.487051777894393, 37.789708851205745 ], [ -122.4869376141597, 37.789840568479555 ], [ -122.486809390152729, 37.789964281705743 ], [ -122.486730121786451, 37.790041845235905 ], [ -122.486553036429143, 37.790150586495734 ], [ -122.486429009493079, 37.790237144752382 ], [ -122.486335272657072, 37.790356155991162 ], [ -122.486245109599949, 37.790414674064778 ], [ -122.486236878145661, 37.790495160989501 ], [ -122.486221786002261, 37.790513270391187 ], [ -122.485095392905748, 37.790094746949087 ], [ -122.484316748868366, 37.789805424389257 ], [ -122.484214987310182, 37.789767611906584 ], [ -122.484071292407094, 37.789571562974182 ], [ -122.484019551359538, 37.788671434543716 ], [ -122.483911841345289, 37.78771598691722 ], [ -122.483910676418589, 37.787705653817092 ], [ -122.481375583614479, 37.787198893328011 ], [ -122.479861181106074, 37.787037199203986 ], [ -122.478707989065171, 37.78691405835 ], [ -122.477707716230128, 37.786939475526701 ], [ -122.476637454822679, 37.786966661899442 ], [ -122.476572244768761, 37.786128658440397 ], [ -122.476575166016133, 37.786128513873635 ], [ -122.476575148769683, 37.786128282045887 ], [ -122.476436803741322, 37.784271125057622 ], [ -122.476306551695615, 37.782405954593735 ], [ -122.476169188584777, 37.78047585000003 ], [ -122.476025278884237, 37.778553841183147 ], [ -122.475888270951586, 37.776692974324831 ], [ -122.475750968701433, 37.774828017958995 ], [ -122.475613644972711, 37.772962670675476 ], [ -122.475613625589148, 37.772962410314676 ], [ -122.476694205661246, 37.772912858094969 ], [ -122.477069824745385, 37.772895630732648 ], [ -122.477766947236773, 37.772863655180586 ], [ -122.478836951668541, 37.772814568639937 ], [ -122.47883762078969, 37.772814536530767 ], [ -122.478848715172788, 37.772814028898644 ], [ -122.479904580478745, 37.772765580938412 ], [ -122.480978851643016, 37.772716079930653 ], [ -122.481947659007389, 37.77267180789157 ], [ -122.482048961146063, 37.772667157434498 ], [ -122.483119121668807, 37.772618024364625 ], [ -122.483119139145145, 37.772618264154566 ], [ -122.484194219251819, 37.772569315707138 ], [ -122.484194201052048, 37.772569061919981 ], [ -122.485152053625171, 37.772525429693054 ], [ -122.485261332297384, 37.772520422109807 ], [ -122.485262022888591, 37.772520390701253 ], [ -122.486334053115812, 37.772471462244795 ], [ -122.486678527930636, 37.772455879683093 ], [ -122.487398288926627, 37.772423078182946 ], [ -122.487398306387334, 37.772423316873983 ], [ -122.487399123482518, 37.77242327974907 ], [ -122.488470602075608, 37.772374307055074 ], [ -122.488471323394165, 37.772374169626119 ], [ -122.489539486385709, 37.772325343661755 ], [ -122.49061689309373, 37.772276279654356 ], [ -122.490617013718605, 37.772276274046327 ], [ -122.491688031137627, 37.772227293012065 ], [ -122.492761363210761, 37.772178246338406 ], [ -122.493316307377469, 37.772153213706439 ], [ -122.493832479293559, 37.77212966191987 ], [ -122.493832498174271, 37.772129926957135 ], [ -122.493833180817205, 37.772129896182108 ], [ -122.494902921073546, 37.772080894286702 ], [ -122.494903299427449, 37.772080795311069 ], [ -122.495971990075716, 37.772031913255347 ], [ -122.497046812008847, 37.771982808835908 ], [ -122.497412740335307, 37.771966238858134 ], [ -122.498113882732468, 37.771934487449556 ], [ -122.499183042122894, 37.771885392463027 ], [ -122.500200291234236, 37.771838923903807 ], [ -122.500257545202601, 37.771836308607973 ], [ -122.501327700223527, 37.771787274197017 ], [ -122.502399595949868, 37.771738155153713 ], [ -122.502399732131124, 37.771738148994636 ], [ -122.503472688521128, 37.771689380410749 ], [ -122.503472690942445, 37.771689380369601 ], [ -122.504544396347384, 37.771640577944709 ], [ -122.505611140464779, 37.771591516134151 ], [ -122.50668530503512, 37.771542352938617 ], [ -122.506685577396198, 37.771542340610623 ], [ -122.506991972993774, 37.771528822999358 ], [ -122.507750664399296, 37.771495034126787 ], [ -122.507750665782908, 37.771495034103232 ], [ -122.508780633594597, 37.771447480819759 ], [ -122.508823169175031, 37.771445503888728 ], [ -122.508823330922013, 37.771445496187766 ], [ -122.508867990729883, 37.771443447055226 ], [ -122.509894749698645, 37.771396032095495 ], [ -122.509894781266311, 37.771396329054475 ], [ -122.511053819156686, 37.771347546731022 ], [ -122.511055400217217, 37.771347479926334 ], [ -122.512571364940968, 37.771283657974607 ], [ -122.51313192303401, 37.771260053409627 ], [ -122.51314077587368, 37.771331323581165 ], [ -122.513103639776702, 37.771429475690731 ], [ -122.513116974838326, 37.771538439951165 ], [ -122.5131111559662, 37.771706791559524 ], [ -122.513101727800077, 37.771741976505247 ], [ -122.513108516285712, 37.771800920539754 ], [ -122.513097415135022, 37.771902061732895 ], [ -122.513158379126494, 37.77223615155534 ], [ -122.513150048202618, 37.772247968474822 ], [ -122.513145175599931, 37.772259726057939 ], [ -122.513142070416649, 37.772272827219133 ], [ -122.513140694405962, 37.772285899124284 ], [ -122.513142777404809, 37.77229891140734 ], [ -122.51314831943732, 37.772311864891819 ], [ -122.513155553774638, 37.772323415987366 ], [ -122.513162806726825, 37.772335653782996 ], [ -122.513171807785298, 37.772348547918142 ], [ -122.513179470052052, 37.772375886809904 ], [ -122.513181590285754, 37.772390272493183 ], [ -122.513180232870297, 37.772404030275354 ], [ -122.513177164205956, 37.772418504300951 ], [ -122.513164035088622, 37.772444825057953 ], [ -122.513153956021, 37.772455985088065 ], [ -122.513145624725894, 37.77246780201267 ], [ -122.513139041542303, 37.772480275551658 ], [ -122.513134206485844, 37.772493406254469 ], [ -122.513132830469672, 37.772506478159016 ], [ -122.513133202560653, 37.772520206404018 ], [ -122.513137015097556, 37.772533189699409 ], [ -122.513142557139105, 37.772546142909071 ], [ -122.513149791498321, 37.772557694004483 ], [ -122.513128650263695, 37.772862969521874 ], [ -122.513143974877181, 37.772917647305441 ], [ -122.513134546565453, 37.772952831971672 ], [ -122.513140759176039, 37.773054363934854 ], [ -122.513127629925961, 37.773080684410282 ], [ -122.513121083909837, 37.773094531347873 ], [ -122.513117996938973, 37.773108318663766 ], [ -122.513113180104355, 37.773122136070647 ], [ -122.513110502783931, 37.773151024750284 ], [ -122.513109145348821, 37.773164782804365 ], [ -122.513109926760848, 37.773193612966814 ], [ -122.513112046989562, 37.773207998100119 ], [ -122.513115877809639, 37.773221667551859 ], [ -122.513119727927929, 37.77323602341751 ], [ -122.513123558750877, 37.773249692868944 ], [ -122.513130848990954, 37.773263303241755 ], [ -122.513136372841529, 37.773275570567371 ], [ -122.513136837962776, 37.773292730939929 ], [ -122.513139032281771, 37.773309862056486 ], [ -122.513139962541018, 37.773344183350439 ], [ -122.513137434071865, 37.77337856371112 ], [ -122.513137899208886, 37.773395724632501 ], [ -122.51313663480029, 37.773412914815644 ], [ -122.513133622247153, 37.773429448109219 ], [ -122.513132357829548, 37.773446638017631 ], [ -122.513129363533338, 37.773463857742755 ], [ -122.513124956674076, 37.773492776231812 ], [ -122.513123636099678, 37.773507907142864 ], [ -122.513125756700802, 37.773522292818349 ], [ -122.513127895547086, 37.773537364376381 ], [ -122.513130108829742, 37.773555182186904 ], [ -122.51313457258631, 37.77359218983559 ], [ -122.513137102897502, 37.773685543750098 ], [ -122.51313464849045, 37.773722669817865 ], [ -122.513133402680765, 37.77374054642582 ], [ -122.513130445590789, 37.773759139276294 ], [ -122.513129218723165, 37.773777702029449 ], [ -122.513126261969134, 37.773796294599215 ], [ -122.513121575665878, 37.773814916705028 ], [ -122.513118599957409, 37.773832822854594 ], [ -122.513113913995852, 37.773851444954062 ], [ -122.513110938637425, 37.773869351371971 ], [ -122.513106251972374, 37.773887973208282 ], [ -122.513098199929146, 37.77391008650784 ], [ -122.513115558504083, 37.774550522030069 ], [ -122.513135161617555, 37.77469921031755 ], [ -122.513164585532962, 37.774890995995399 ], [ -122.513170483591551, 37.775108592933201 ], [ -122.513148799533084, 37.77520236034195 ], [ -122.513166877896921, 37.775294761967629 ], [ -122.513138108336719, 37.775382469681844 ], [ -122.513154511511672, 37.775413093012311 ], [ -122.513118656446565, 37.775494741304421 ], [ -122.513116560550898, 37.775991978980805 ], [ -122.513220716743945, 37.77664260637399 ], [ -122.513262136135666, 37.776766199546913 ], [ -122.513273147342474, 37.776853227885702 ], [ -122.513301250635152, 37.776996277263876 ], [ -122.513336088063554, 37.777196211308791 ], [ -122.513350113009579, 37.777330573444466 ], [ -122.513418927986152, 37.77744339753194 ], [ -122.513485622738756, 37.777541836186963 ], [ -122.513511493535475, 37.777602514461641 ], [ -122.513605787519069, 37.777633867571893 ], [ -122.513789576977686, 37.777711077145469 ], [ -122.513970390041706, 37.777742325491253 ], [ -122.514130469394843, 37.777902348781886 ], [ -122.514271487815051, 37.77812519117407 ], [ -122.514413862528215, 37.778270408245596 ], [ -122.514604595643718, 37.77847591891544 ], [ -122.51462964838835, 37.778506394234036 ], [ -122.514661065627067, 37.778643892998048 ], [ -122.514636184118331, 37.778747329407956 ], [ -122.514564452996041, 37.778846072735902 ], [ -122.514578405995934, 37.778977688986053 ], [ -122.51449838155861, 37.779153489214309 ], [ -122.5144938833634, 37.779242842682805 ], [ -122.514567855611702, 37.77941807161681 ], [ -122.514670725915678, 37.779446530659044 ], [ -122.514854558211539, 37.779525111397355 ], [ -122.514948079566921, 37.779719234525949 ], [ -122.514897941861832, 37.779848512679017 ], [ -122.514749765647835, 37.779872333834206 ], [ -122.514641072918508, 37.779820625636908 ], [ -122.514565266573783, 37.77989677577483 ], [ -122.514533951466817, 37.780082044762075 ], [ -122.514511340895595, 37.780269225221183 ], [ -122.514474054726847, 37.780425753002312 ], [ -122.51446673230646, 37.780602371059075 ], [ -122.514648527113849, 37.780860913612862 ], [ -122.51472341591213, 37.781133644263413 ], [ -122.514586047991969, 37.781300809991649 ], [ -122.514468426928062, 37.781302819849991 ], [ -122.514292998946104, 37.781279034300063 ], [ -122.514303621052633, 37.781351647553429 ], [ -122.514284968188448, 37.781429568185636 ], [ -122.514242655950966, 37.781464628517519 ], [ -122.513867881152649, 37.781428452669296 ], [ -122.513760174171992, 37.78147699096975 ], [ -122.513883322187127, 37.781614982927096 ], [ -122.513812238767187, 37.78173775061245 ], [ -122.513697000270085, 37.781891489394212 ], [ -122.513670014693673, 37.78198122658408 ], [ -122.513522169917209, 37.782081269425682 ], [ -122.513466336763443, 37.782192101792845 ], [ -122.513546762127802, 37.782286185176545 ], [ -122.513589561336119, 37.782396706497991 ], [ -122.513504004159799, 37.782432504856651 ], [ -122.51345966482603, 37.782520478406092 ], [ -122.513490615272289, 37.782576949453883 ], [ -122.51349907897729, 37.782633804536587 ], [ -122.513499154475824, 37.782700417272132 ], [ -122.513444212427984, 37.782780331251374 ], [ -122.513311970586869, 37.782817613200059 ], [ -122.513176844047379, 37.782748499450129 ], [ -122.513099674895386, 37.782774539876293 ], [ -122.513082211268937, 37.782896391754747 ], [ -122.512985625061674, 37.783036075867919 ], [ -122.513019551763222, 37.783138507955194 ], [ -122.513026396706579, 37.783199511429288 ], [ -122.512878567398928, 37.783236372275823 ], [ -122.512854035372925, 37.783352850568228 ], [ -122.512805434943459, 37.783475233699562 ], [ -122.512705462306386, 37.783553855572684 ], [ -122.512518627902452, 37.783620225547125 ], [ -122.512466567525493, 37.783742667306889 ], [ -122.512644903191074, 37.783873537806549 ], [ -122.512713964283492, 37.783931418677646 ], [ -122.512652381073622, 37.784021746473734 ], [ -122.512681006779928, 37.784120148680003 ], [ -122.512565948104239, 37.784153016218092 ], [ -122.512295468592697, 37.783942683042248 ], [ -122.512111442218099, 37.7837933668308 ], [ -122.511916645881882, 37.783949148187006 ], [ -122.511936379260646, 37.784102641671865 ], [ -122.512002036912364, 37.7841626409828 ], [ -122.51201098319315, 37.784237343198853 ], [ -122.511976089219957, 37.784290817818842 ], [ -122.511911287292179, 37.784326260764388 ], [ -122.511796674312308, 37.784311734732256 ], [ -122.511643280924901, 37.784334954352396 ], [ -122.511486279442096, 37.784288874386938 ], [ -122.511300968574147, 37.78428379521467 ], [ -122.511334223422679, 37.784425383212891 ], [ -122.511306545033449, 37.784553589399493 ], [ -122.511229614678896, 37.784588552121491 ], [ -122.51102434727656, 37.784485608568794 ], [ -122.510971002039966, 37.784496819600761 ], [ -122.510838401528204, 37.784584923981406 ], [ -122.510747296660981, 37.784671633775218 ], [ -122.510491862112929, 37.784697278857706 ], [ -122.510370776300974, 37.784699343616424 ], [ -122.510236724687886, 37.784733906185757 ], [ -122.510168389422006, 37.784702794445394 ], [ -122.510020323714343, 37.784723420804994 ], [ -122.509994254968106, 37.784727052267002 ], [ -122.509808028924709, 37.784816069670107 ], [ -122.509716922917022, 37.784902778658349 ], [ -122.509665899527562, 37.784999792217178 ], [ -122.509574233553352, 37.78512977535155 ], [ -122.509483405510977, 37.78522678080374 ], [ -122.50935080157798, 37.785314883231258 ], [ -122.509270075574662, 37.785337547981477 ], [ -122.509233168789549, 37.785444621876991 ], [ -122.509117710773396, 37.785590805131108 ], [ -122.508796514633275, 37.785744614237508 ], [ -122.508661532747013, 37.785744853745925 ], [ -122.508565980602214, 37.785795240243836 ], [ -122.508486275275231, 37.785855657828165 ], [ -122.50845217664569, 37.785938647661681 ], [ -122.508258558155333, 37.786074486851589 ], [ -122.50824179847983, 37.786094687819457 ], [ -122.508218230136194, 37.78611912520401 ], [ -122.508132741023516, 37.786157665329803 ], [ -122.508102962554631, 37.786144437693665 ], [ -122.508035220497703, 37.78613529033418 ], [ -122.507963402235234, 37.786167416830274 ], [ -122.507918608664951, 37.786238914034136 ], [ -122.507884921314982, 37.786273138055307 ], [ -122.507810998339579, 37.786355432403496 ], [ -122.507791149628716, 37.786389420730835 ], [ -122.507786702460081, 37.786416966109108 ], [ -122.507753742643061, 37.786414093677742 ], [ -122.507723143657557, 37.786434530234523 ], [ -122.507686905785704, 37.786502447942446 ], [ -122.50771513615085, 37.786586436657288 ], [ -122.507634122264022, 37.786726537606768 ], [ -122.507529970492527, 37.786842996798164 ], [ -122.507416802174745, 37.786882007667536 ], [ -122.507337150418977, 37.786944484013162 ], [ -122.507251469686537, 37.787040025961154 ], [ -122.50719904571541, 37.787149423517022 ], [ -122.507107186903028, 37.787272540712486 ], [ -122.507053654233644, 37.787276885429115 ], [ -122.506971891727119, 37.787453396158277 ], [ -122.506896872053431, 37.78749519083452 ], [ -122.50673936089315, 37.787494438084011 ], [ -122.506717248362293, 37.787444682355584 ], [ -122.506653688773341, 37.787462245895419 ], [ -122.506526049480186, 37.787478152978885 ], [ -122.506492546406875, 37.787519241120947 ], [ -122.506427084531083, 37.787594522862221 ], [ -122.506343785965981, 37.787650192878154 ], [ -122.506284872420196, 37.787711628562818 ], [ -122.506271997783998, 37.787747558158287 ], [ -122.506258863502353, 37.787773877799495 ], [ -122.50624035413243, 37.787793421492793 ], [ -122.506219873800518, 37.787804071365088 ], [ -122.506177628287418, 37.787841873914068 ], [ -122.506131292484596, 37.787856397132735 ], [ -122.506163876746712, 37.787909408764172 ], [ -122.506122372558949, 37.787974668305665 ], [ -122.506121008614969, 37.788052293211784 ], [ -122.506089600492331, 37.788170947004069 ], [ -122.506052098981115, 37.788192187283286 ], [ -122.505852340805589, 37.788229236102978 ], [ -122.505747263058424, 37.788247505451196 ], [ -122.505657587040744, 37.788259332046266 ], [ -122.505605226952582, 37.788243054476361 ], [ -122.505520554840288, 37.788247928168715 ], [ -122.505423328958457, 37.788236533825454 ], [ -122.505330267621474, 37.78825116471306 ], [ -122.505202440987361, 37.788260206114757 ], [ -122.505107748523827, 37.788214431400775 ], [ -122.505021260444238, 37.788152035322256 ], [ -122.50498134335804, 37.788147906935059 ], [ -122.504941407743146, 37.788143092108974 ], [ -122.504896245414301, 37.788136992665024 ], [ -122.504877161086682, 37.788135256957062 ], [ -122.504859843370596, 37.788134864962309 ], [ -122.504835625333357, 37.788135276762382 ], [ -122.504801138826153, 37.7881399833256 ], [ -122.504785514269201, 37.788138188774688 ], [ -122.504771508408268, 37.788132246255898 ], [ -122.504759158308161, 37.788123528620481 ], [ -122.5047502309164, 37.788113379306509 ], [ -122.504739555111996, 37.788102572979582 ], [ -122.504727204674595, 37.788093855346673 ], [ -122.504711432227211, 37.788086569376937 ], [ -122.504695715029484, 37.788081342687157 ], [ -122.504680053426, 37.788078175271465 ], [ -122.50466269900177, 37.788076410116517 ], [ -122.50464541869988, 37.788077390660611 ], [ -122.504626408521617, 37.788078400888217 ], [ -122.504609090805303, 37.788078008307494 ], [ -122.504591755258659, 37.788076929561612 ], [ -122.504576093667978, 37.788073762406697 ], [ -122.504558683651112, 37.788069937685613 ], [ -122.504543003526479, 37.788066083826294 ], [ -122.504525593174549, 37.788062259380773 ], [ -122.504508220574564, 37.788059807771766 ], [ -122.50449088434911, 37.788058729297397 ], [ -122.504468396217547, 37.788059111612547 ], [ -122.504456509027335, 37.788067554312491 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":5,"ZIP_CODE":94118,"ID":94118},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.448885763577039, 37.778388598994987 ], [ -122.449767079183658, 37.778277008331997 ], [ -122.450654812483819, 37.778164598609756 ], [ -122.450826415883952, 37.778142868140662 ], [ -122.451543139139602, 37.778052106408275 ], [ -122.452431111623397, 37.777939652339285 ], [ -122.453384996187339, 37.777826863341367 ], [ -122.45318832797058, 37.776853425180988 ], [ -122.452963825070867, 37.775750129254348 ], [ -122.452810237317621, 37.774995318605924 ], [ -122.453003330637316, 37.774970754669006 ], [ -122.45468264773983, 37.77475548474694 ], [ -122.454683295611602, 37.774755406979118 ], [ -122.455033749574639, 37.77471323536281 ], [ -122.45525254468275, 37.774686906456331 ], [ -122.455898178089939, 37.774604132119862 ], [ -122.456283639851293, 37.774554711848936 ], [ -122.456283671603558, 37.774554866249353 ], [ -122.456283917173579, 37.774554834704738 ], [ -122.457134751103212, 37.774454490912483 ], [ -122.458371099123696, 37.774308895694055 ], [ -122.458795325509186, 37.774254885425997 ], [ -122.459486118442314, 37.77416693399686 ], [ -122.459486145343419, 37.77416729779403 ], [ -122.459486938645284, 37.774167197254911 ], [ -122.460552700773292, 37.774031358657659 ], [ -122.460552661960989, 37.774031133779268 ], [ -122.461619755154771, 37.7738952534419 ], [ -122.461619775372085, 37.773895534117642 ], [ -122.461620188227315, 37.77389548164836 ], [ -122.462535340858068, 37.773778657528119 ], [ -122.462683796526321, 37.773759751788596 ], [ -122.463749210177951, 37.773624065149079 ], [ -122.464811670328331, 37.773488744378348 ], [ -122.465331676538511, 37.773422509669793 ], [ -122.465883163277454, 37.773398204721545 ], [ -122.466373346760548, 37.773376599548058 ], [ -122.466951728424362, 37.773351356945881 ], [ -122.466952500298319, 37.773351323464517 ], [ -122.468023916207073, 37.773303833556405 ], [ -122.468348575135167, 37.773289518371953 ], [ -122.469092496140973, 37.773256712542192 ], [ -122.469517084069324, 37.773237987003441 ], [ -122.470162692059887, 37.773209510586071 ], [ -122.470162712316579, 37.773209791534974 ], [ -122.471240089434815, 37.773162280380667 ], [ -122.47124006836178, 37.773161981865066 ], [ -122.471762122569857, 37.773138947752848 ], [ -122.472219951938214, 37.773117969260745 ], [ -122.472297341321692, 37.773114423074823 ], [ -122.473427836194134, 37.773062613687692 ], [ -122.473737577092777, 37.773048416620476 ], [ -122.474550910293516, 37.773011133644289 ], [ -122.474550931211951, 37.773011425844139 ], [ -122.47455168367884, 37.773011391539193 ], [ -122.475612802305008, 37.772962709520556 ], [ -122.475613644972711, 37.772962670675476 ], [ -122.475750968701433, 37.774828017958995 ], [ -122.475888270951586, 37.776692974324831 ], [ -122.476025278884237, 37.778553841183147 ], [ -122.476169188584777, 37.78047585000003 ], [ -122.476306551695615, 37.782405954593735 ], [ -122.476436803741322, 37.784271125057622 ], [ -122.476575148769683, 37.786128282045887 ], [ -122.476575166016133, 37.786128513873635 ], [ -122.476572244768761, 37.786128658440397 ], [ -122.476637454822679, 37.786966661899442 ], [ -122.47616220885665, 37.786978730627588 ], [ -122.475567725323828, 37.787005248954515 ], [ -122.475136959985235, 37.787024462123846 ], [ -122.474584006514732, 37.787049123020516 ], [ -122.474432824368861, 37.787072820298278 ], [ -122.473333621918172, 37.787245111436654 ], [ -122.473316434470121, 37.787247805418339 ], [ -122.472782224474642, 37.787331534391747 ], [ -122.47254342327507, 37.787368961705944 ], [ -122.472401902490546, 37.787384046501884 ], [ -122.472290534181823, 37.787395917162272 ], [ -122.468653534340191, 37.787783523544832 ], [ -122.466942641213976, 37.788133153852705 ], [ -122.465882841138949, 37.788349715761562 ], [ -122.4648365613821, 37.788563504283978 ], [ -122.463771243725489, 37.788781172337565 ], [ -122.459781586189493, 37.789596250165474 ], [ -122.45947565027717, 37.789710559160014 ], [ -122.459250455476877, 37.789713291862398 ], [ -122.459028627866218, 37.789715983297555 ], [ -122.459011873160264, 37.789719335764374 ], [ -122.457498733292852, 37.789996912625632 ], [ -122.455878319348855, 37.790294143976332 ], [ -122.454248357567437, 37.79059310209788 ], [ -122.452035629818212, 37.790998907609811 ], [ -122.450995459060991, 37.791209906278311 ], [ -122.449385188501296, 37.791484927305568 ], [ -122.449367313308201, 37.791487980191171 ], [ -122.449189583391288, 37.790608108274284 ], [ -122.449011564525605, 37.789726786022129 ], [ -122.448835781299294, 37.788856511426609 ], [ -122.448656220796209, 37.787977164570449 ], [ -122.4469741664482, 37.788186460801001 ], [ -122.446792779960703, 37.787261853518181 ], [ -122.446610465639836, 37.786302298311156 ], [ -122.446738337622591, 37.786243163870765 ], [ -122.446849274413296, 37.786186897081585 ], [ -122.447533801639068, 37.785411415165207 ], [ -122.447605133356163, 37.785275579171099 ], [ -122.447621599012791, 37.785194684567394 ], [ -122.447620107068687, 37.785083635258417 ], [ -122.447578549915917, 37.784998355250835 ], [ -122.447549635601661, 37.784906798974511 ], [ -122.447149436147441, 37.783030677550911 ], [ -122.447173033991248, 37.782710075581413 ], [ -122.447225622636566, 37.782575775503396 ], [ -122.447283893261542, 37.782434393634787 ], [ -122.447301513844337, 37.78239164221629 ], [ -122.447450898997985, 37.782195217632704 ], [ -122.447637300982407, 37.781719177617617 ], [ -122.447655108274333, 37.781537309189886 ], [ -122.447576361567485, 37.781175778551805 ], [ -122.447517982733274, 37.781069510753063 ], [ -122.447351927163439, 37.780152061280916 ], [ -122.447039806751391, 37.778622307248391 ], [ -122.447997721370214, 37.778501033647089 ], [ -122.448879206948348, 37.778389428728616 ], [ -122.448885763577039, 37.778388598994987 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":6,"ZIP_CODE":94123,"ID":94123},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.438402484723895, 37.794806973138577 ], [ -122.440045216960385, 37.794597761146619 ], [ -122.440868123190498, 37.794493055920753 ], [ -122.440870170501768, 37.794492795601883 ], [ -122.441712771485612, 37.794385578392699 ], [ -122.443384198876302, 37.794172877898092 ], [ -122.445035345747925, 37.79396273368863 ], [ -122.446587034424141, 37.793765298555968 ], [ -122.446446456540414, 37.792813716046261 ], [ -122.446587862952981, 37.793765120337646 ], [ -122.446727777261131, 37.794706464759514 ], [ -122.446727777275527, 37.794706465308671 ], [ -122.446751148304088, 37.794858932799087 ], [ -122.44687098056005, 37.795640691997477 ], [ -122.446928896449293, 37.796018515191513 ], [ -122.447014738218328, 37.796578509648619 ], [ -122.447014738232738, 37.796578510197754 ], [ -122.44715829625072, 37.79751500492933 ], [ -122.44715829626513, 37.797515005478481 ], [ -122.447209582420982, 37.797849561838987 ], [ -122.447303043858923, 37.798459232650295 ], [ -122.447327769221047, 37.798519415660031 ], [ -122.447341437979304, 37.798552685345861 ], [ -122.447400275900733, 37.798948048802856 ], [ -122.447466030932901, 37.799389886853575 ], [ -122.447613279369918, 37.80032370169468 ], [ -122.447614227653389, 37.80032479990944 ], [ -122.447802865090509, 37.801525678628579 ], [ -122.447819572978844, 37.801633208279924 ], [ -122.447819731578562, 37.801633051558142 ], [ -122.447857007904148, 37.801596177616553 ], [ -122.447921599691895, 37.801532283988202 ], [ -122.448359651469772, 37.801586782043685 ], [ -122.448802640091088, 37.801772003872607 ], [ -122.449043488821943, 37.801965383441527 ], [ -122.449178591741017, 37.802073857413127 ], [ -122.449460220896157, 37.80245428555321 ], [ -122.449536106109235, 37.802697377072583 ], [ -122.449565462756809, 37.802791419060213 ], [ -122.449583713807527, 37.803152915295549 ], [ -122.449583722697156, 37.803153095621241 ], [ -122.449495662264184, 37.803470319431604 ], [ -122.449388062152011, 37.803710849923448 ], [ -122.449253815658196, 37.803861977230383 ], [ -122.449124213448584, 37.804007874392056 ], [ -122.448954929708933, 37.80412855834809 ], [ -122.448814547024654, 37.804228638340902 ], [ -122.448316879890498, 37.804444627382082 ], [ -122.448245764546613, 37.8044754914729 ], [ -122.448240723025904, 37.804477679722268 ], [ -122.448240728857812, 37.804477717258706 ], [ -122.44824552349904, 37.804508484024247 ], [ -122.448279145759457, 37.80472422506687 ], [ -122.448321161555853, 37.804993824977359 ], [ -122.448323332142422, 37.805007750605469 ], [ -122.448455258275729, 37.806133277363898 ], [ -122.448456716038393, 37.806145711376217 ], [ -122.448529100304583, 37.806763241657009 ], [ -122.448398315024306, 37.806792871575105 ], [ -122.448372486009177, 37.806798105392311 ], [ -122.448348405000459, 37.806803997055574 ], [ -122.44832261235274, 37.806810603719661 ], [ -122.448274523063262, 37.806825132736471 ], [ -122.448250514438882, 37.806833770101044 ], [ -122.448204281209826, 37.806853075532878 ], [ -122.448182039290586, 37.806863057432189 ], [ -122.448159833037835, 37.806874411921982 ], [ -122.448139357121818, 37.80688573782485 ], [ -122.448117186873532, 37.806898464895561 ], [ -122.448103560271292, 37.806906930735266 ], [ -122.447833857922845, 37.807052164926837 ], [ -122.447528276286675, 37.807250818574119 ], [ -122.447180260711605, 37.80747705551984 ], [ -122.446637954280746, 37.807525151443585 ], [ -122.446476742583258, 37.807516824572637 ], [ -122.445255735074412, 37.807626931568663 ], [ -122.444832951299077, 37.807611928844082 ], [ -122.444812115030089, 37.807609525524043 ], [ -122.444789548054757, 37.807607150739592 ], [ -122.443882698723485, 37.807700913966812 ], [ -122.443762319418525, 37.807713359922936 ], [ -122.443684632386478, 37.807721507559208 ], [ -122.442739197031372, 37.807965235732532 ], [ -122.442711389346584, 37.807972404225552 ], [ -122.442625660786931, 37.808004032657479 ], [ -122.442524054141913, 37.808024247618199 ], [ -122.442354908341343, 37.808043514915532 ], [ -122.441767928096084, 37.808104685164672 ], [ -122.44153654297466, 37.808127036445633 ], [ -122.441200035212404, 37.808167598495942 ], [ -122.44095148917647, 37.808195724629321 ], [ -122.44065270005224, 37.808288542686931 ], [ -122.440627067703531, 37.808301325835579 ], [ -122.440575873699515, 37.808329637315019 ], [ -122.440528212527582, 37.808360637280757 ], [ -122.440504418161254, 37.808377510253422 ], [ -122.440482353473598, 37.808394354762264 ], [ -122.440462037446096, 37.808411857223902 ], [ -122.440440008975642, 37.808430074859068 ], [ -122.440419728804599, 37.808448949904253 ], [ -122.440401196955307, 37.808468483183979 ], [ -122.440382683383717, 37.808488702887828 ], [ -122.440369270902693, 37.808505405024498 ], [ -122.440221248842576, 37.808670595014306 ], [ -122.440123020723803, 37.808753931536479 ], [ -122.440031607015868, 37.808833035512706 ], [ -122.439928060968157, 37.808779113775664 ], [ -122.440270312303127, 37.808229595265985 ], [ -122.440282155842453, 37.808219099502388 ], [ -122.440294017657806, 37.80820928989008 ], [ -122.440307609508267, 37.808199452089056 ], [ -122.440319488926107, 37.808190329461823 ], [ -122.440334864961784, 37.808182522213436 ], [ -122.440348510624844, 37.808174743706033 ], [ -122.440379298231178, 37.808160502620083 ], [ -122.440394728431826, 37.80815475493111 ], [ -122.440410176225527, 37.808149693678615 ], [ -122.440427371995767, 37.808145290667582 ], [ -122.440444586383592, 37.808141573526278 ], [ -122.440470613795014, 37.808143892481645 ], [ -122.440632371579539, 37.808106894262245 ], [ -122.440777543613365, 37.808097638147814 ], [ -122.441785658321223, 37.807988336182923 ], [ -122.441808099289275, 37.807985906519384 ], [ -122.441799274649981, 37.807913258896662 ], [ -122.441490202960892, 37.807943755875684 ], [ -122.441489843938655, 37.807930027497129 ], [ -122.441472521937172, 37.807929625920565 ], [ -122.441480832705722, 37.807916441000579 ], [ -122.441399010156047, 37.807832633902123 ], [ -122.441414331805831, 37.807822767220159 ], [ -122.441512177188741, 37.807923479293905 ], [ -122.44162439956051, 37.807912017357232 ], [ -122.441545678197272, 37.807814424464247 ], [ -122.441557557740268, 37.807805301431408 ], [ -122.441658935146762, 37.807908701878773 ], [ -122.441779792066384, 37.807896411186228 ], [ -122.441788084829597, 37.807882540086432 ], [ -122.441704477043643, 37.807796702127824 ], [ -122.441718086585212, 37.807787550596132 ], [ -122.44181950044613, 37.807892323765437 ], [ -122.441935183814792, 37.807880804821842 ], [ -122.441943476554428, 37.807866933985672 ], [ -122.441859851343693, 37.807780409692931 ], [ -122.441873460855945, 37.807771257868716 ], [ -122.441976640855827, 37.807877375557908 ], [ -122.441977107703579, 37.807895222530654 ], [ -122.441816542778795, 37.807911600852826 ], [ -122.441823637077619, 37.807984277513498 ], [ -122.442320834639688, 37.807932139640414 ], [ -122.442377595612399, 37.807918156721222 ], [ -122.442423345751081, 37.807880319904761 ], [ -122.442454552098894, 37.807815940203007 ], [ -122.442446930178193, 37.807789283331502 ], [ -122.442372794146465, 37.807800805256427 ], [ -122.442345413582302, 37.807812930576347 ], [ -122.442346006240967, 37.807835582850217 ], [ -122.442033707111619, 37.807875062158132 ], [ -122.442009243703154, 37.807733999234173 ], [ -122.442027954502791, 37.807721329750571 ], [ -122.442048400903616, 37.807841170516582 ], [ -122.442059070073554, 37.807851982482966 ], [ -122.442207469058346, 37.807833743991878 ], [ -122.442217473805144, 37.807819158213746 ], [ -122.442189585584913, 37.807679524627673 ], [ -122.44220852946296, 37.807675779293724 ], [ -122.442236490235743, 37.807818158319698 ], [ -122.442248872177956, 37.807828255059988 ], [ -122.442314446214397, 37.807820307862364 ], [ -122.442321008509211, 37.807806465496753 ], [ -122.442293084181387, 37.807665459069689 ], [ -122.442311884371406, 37.807656221984004 ], [ -122.442337612108403, 37.807779409372287 ], [ -122.442355041151117, 37.807783929703042 ], [ -122.442395115206907, 37.807727644711157 ], [ -122.442384613878218, 37.807657084644539 ], [ -122.44241012033585, 37.80763949635341 ], [ -122.442685954576561, 37.807595809313327 ], [ -122.442711892175168, 37.807793159839584 ], [ -122.442714242657956, 37.807793886686525 ], [ -122.442762503926971, 37.807808807618663 ], [ -122.442779771325021, 37.807807149719757 ], [ -122.442902339949939, 37.807794142945916 ], [ -122.442998755417392, 37.807774012900218 ], [ -122.44305537242154, 37.807754538469467 ], [ -122.44312779660163, 37.807743731320251 ], [ -122.443201717191158, 37.807723971451296 ], [ -122.443260064122327, 37.807704468417526 ], [ -122.443291085252142, 37.807699150180341 ], [ -122.443284905918816, 37.807661481932094 ], [ -122.443264195467847, 37.807663883640146 ], [ -122.443274020298077, 37.807642433173122 ], [ -122.443270056810988, 37.807623269807593 ], [ -122.44314383017317, 37.807628783225987 ], [ -122.443254016387542, 37.807605679164965 ], [ -122.44326198542305, 37.807579452177009 ], [ -122.443135758859114, 37.807584965586791 ], [ -122.443242483942598, 37.807561918560637 ], [ -122.443256021380762, 37.807550021121365 ], [ -122.443252111820613, 37.807532917601364 ], [ -122.443237999416624, 37.807522848927505 ], [ -122.443246112189684, 37.807502113399792 ], [ -122.443244040453081, 37.807489099968812 ], [ -122.443229963993403, 37.807480404158795 ], [ -122.443238040829058, 37.80745829576658 ], [ -122.443234130578546, 37.807441191982505 ], [ -122.443218162072228, 37.807426347064215 ], [ -122.443264702406339, 37.807418712940589 ], [ -122.443256517776859, 37.807436702740098 ], [ -122.443274647533997, 37.807467993526231 ], [ -122.44326455321054, 37.80747914750733 ], [ -122.443284610988869, 37.807517960537304 ], [ -122.443274498692247, 37.807528428086727 ], [ -122.443278390296598, 37.807544845448142 ], [ -122.443294466994871, 37.807563808946817 ], [ -122.443284389944367, 37.807575649647809 ], [ -122.443286551537625, 37.807592095514579 ], [ -122.443302628241014, 37.807611058737429 ], [ -122.443292551178217, 37.80762289916445 ], [ -122.443296353650368, 37.807635884626045 ], [ -122.443302173270908, 37.807659823956676 ], [ -122.443308298708217, 37.807695432906783 ], [ -122.443434058250361, 37.807672072344801 ], [ -122.443672727711146, 37.807597406163168 ], [ -122.443654441112585, 37.80749401124762 ], [ -122.443659326683914, 37.80748225662078 ], [ -122.443872884696731, 37.807440280106206 ], [ -122.443843293810986, 37.807367974319583 ], [ -122.44370731452436, 37.807397684591926 ], [ -122.443671444290359, 37.807416130974829 ], [ -122.443653888762242, 37.807406805822907 ], [ -122.443615857187666, 37.807408806048031 ], [ -122.443601726794256, 37.807398051259632 ], [ -122.443646374280576, 37.807384267621238 ], [ -122.443657912040536, 37.807362102160489 ], [ -122.443677395248955, 37.807378949282132 ], [ -122.443708397548889, 37.807372944513865 ], [ -122.443719917316642, 37.807350092614648 ], [ -122.443739400535989, 37.807366939726066 ], [ -122.443768690788104, 37.807361649886793 ], [ -122.443780246134452, 37.8073401708521 ], [ -122.443799711046125, 37.807356331526904 ], [ -122.443829001635834, 37.807351041666962 ], [ -122.443838790315425, 37.807328218286891 ], [ -122.443858291875273, 37.807345751805421 ], [ -122.443944431867095, 37.807329910704055 ], [ -122.443955915261199, 37.807305685922557 ], [ -122.44397716482635, 37.807323877338213 ], [ -122.444023687043469, 37.8073155564826 ], [ -122.444033511615373, 37.807294106225484 ], [ -122.444052976916183, 37.807310266852966 ], [ -122.444104672197867, 37.807301173690028 ], [ -122.444114316981555, 37.807272858828142 ], [ -122.444139117510247, 37.80729442532332 ], [ -122.444173580792466, 37.807288363378881 ], [ -122.444194201234893, 37.80728252962394 ], [ -122.444071355206816, 37.80715270277112 ], [ -122.444216516082363, 37.807275294750141 ], [ -122.444262912050363, 37.807262168504906 ], [ -122.444272682607831, 37.807238658656139 ], [ -122.444290381984246, 37.807253474900222 ], [ -122.444329892128806, 37.807241835878372 ], [ -122.444341267517572, 37.807213492465038 ], [ -122.444362535128633, 37.807232370243902 ], [ -122.44440375797123, 37.807220016231902 ], [ -122.444415151652876, 37.807192359237938 ], [ -122.444436401305339, 37.807210550845831 ], [ -122.444546334776021, 37.807177835248929 ], [ -122.444557764011307, 37.807151551111282 ], [ -122.444577265002437, 37.807169084522954 ], [ -122.444645975607855, 37.807148723180354 ], [ -122.444656807573693, 37.807165712792234 ], [ -122.444442095756031, 37.807229685090327 ], [ -122.444483781319875, 37.807301104324431 ], [ -122.444798026960797, 37.807203901149613 ], [ -122.445256739502199, 37.807070664930905 ], [ -122.445225848727588, 37.807014862399406 ], [ -122.445091259282876, 37.807031503517287 ], [ -122.445058382323012, 37.807032045740513 ], [ -122.44505631062799, 37.807019032334502 ], [ -122.445158131368714, 37.807007052095038 ], [ -122.44517833798561, 37.806985429952121 ], [ -122.445116858617496, 37.806951420767781 ], [ -122.445030629048986, 37.806963830570979 ], [ -122.445058875964975, 37.806918727340673 ], [ -122.445006173970214, 37.806889380441703 ], [ -122.444888888156058, 37.806905735960221 ], [ -122.444874654156408, 37.80682493696483 ], [ -122.444919463246819, 37.806817330453363 ], [ -122.445007311205075, 37.806866699909307 ], [ -122.444974402625263, 37.806799942930326 ], [ -122.444993292526533, 37.806794137571423 ], [ -122.445038942963123, 37.806884719639513 ], [ -122.445121510119179, 37.806930742460146 ], [ -122.445046609432765, 37.806780897144854 ], [ -122.445065498977499, 37.806775091780075 ], [ -122.445153141586133, 37.806948762165227 ], [ -122.44523217658535, 37.806992095976476 ], [ -122.44535586222473, 37.80695571941591 ], [ -122.445247620593648, 37.806722643522114 ], [ -122.445266510453877, 37.806716838119371 ], [ -122.445374751789728, 37.806949914001784 ], [ -122.445469219634987, 37.806921573283674 ], [ -122.445352433919155, 37.8066927587953 ], [ -122.445373036116507, 37.806686238401404 ], [ -122.44548810952854, 37.806915767845673 ], [ -122.445561992695104, 37.80689463390474 ], [ -122.445445188748025, 37.806665133074851 ], [ -122.445464060244248, 37.8066586412139 ], [ -122.445580882228484, 37.806888828457545 ], [ -122.44570454953481, 37.806851765098479 ], [ -122.445651671462073, 37.806749628119896 ], [ -122.44565282578796, 37.806727633749716 ], [ -122.445895754405569, 37.806815647477016 ], [ -122.445736019894767, 37.806863607021306 ], [ -122.445754222526631, 37.806897643432812 ], [ -122.446384760166481, 37.806715556411739 ], [ -122.446258463322081, 37.806718327435846 ], [ -122.446193213892712, 37.806738632616792 ], [ -122.446170395914976, 37.806726648309962 ], [ -122.445981443875837, 37.806782644077451 ], [ -122.445970540045622, 37.80676290912637 ], [ -122.445598235532685, 37.806626211997774 ], [ -122.445606509444289, 37.806611653919497 ], [ -122.446001524256076, 37.806756217316881 ], [ -122.446149253941641, 37.806712575605459 ], [ -122.445708764584751, 37.806550221539489 ], [ -122.445717038134546, 37.806535664008109 ], [ -122.446176741453044, 37.806704568267236 ], [ -122.446283248720263, 37.80667328102048 ], [ -122.446005194935296, 37.806500006546784 ], [ -122.446020461726192, 37.80648808024214 ], [ -122.446305581169554, 37.806666731908173 ], [ -122.446420668040176, 37.806632556303882 ], [ -122.446151409366294, 37.806464630848126 ], [ -122.446166694812902, 37.806453390945222 ], [ -122.446443000465095, 37.806626007165498 ], [ -122.446554662537906, 37.806593261684583 ], [ -122.446391023698155, 37.806492266360543 ], [ -122.446406290771549, 37.806480340000242 ], [ -122.446524184932926, 37.806553247425605 ], [ -122.446620237835958, 37.806519385773647 ], [ -122.446642693746213, 37.806583567659246 ], [ -122.44670978090322, 37.806567352265269 ], [ -122.446939773843297, 37.806492135834091 ], [ -122.446948929215651, 37.806511213110113 ], [ -122.446720738906919, 37.806589146719396 ], [ -122.446733553252031, 37.806615717634571 ], [ -122.446996260681743, 37.80653378052115 ], [ -122.44699045975274, 37.806444601492437 ], [ -122.446974562378131, 37.806432503088267 ], [ -122.446987792972394, 37.806408935599343 ], [ -122.446983774594216, 37.806387713332704 ], [ -122.44696966191627, 37.806377645652319 ], [ -122.446979503500458, 37.806356881028954 ], [ -122.446973448766144, 37.806324017983009 ], [ -122.446942374816217, 37.806327277888172 ], [ -122.44695713738291, 37.806296131639499 ], [ -122.446941332573715, 37.806221538794638 ], [ -122.446922047288439, 37.806212242955326 ], [ -122.446935223870369, 37.806186616724325 ], [ -122.446919473110199, 37.806114083171188 ], [ -122.446903683817155, 37.806106103074534 ], [ -122.446913508081977, 37.806084652286692 ], [ -122.446909453048207, 37.80606205716353 ], [ -122.446700318081568, 37.806074437190453 ], [ -122.446888239127603, 37.80604523913599 ], [ -122.446903488381423, 37.806032626547122 ], [ -122.446899451700631, 37.806010717849745 ], [ -122.446881914446337, 37.806002079602202 ], [ -122.446893486335398, 37.805981286694831 ], [ -122.446879430339621, 37.805907352248376 ], [ -122.446670313096035, 37.805920418116813 ], [ -122.446859964791457, 37.805891192083081 ], [ -122.446873519346127, 37.805879980657039 ], [ -122.446859427027746, 37.80580467279912 ], [ -122.446845404479788, 37.805798037263322 ], [ -122.446855228367411, 37.805776586210264 ], [ -122.446849425403357, 37.805753333484326 ], [ -122.446649086514796, 37.805771061515294 ], [ -122.446833420536592, 37.805737116186556 ], [ -122.446845280397781, 37.805727305922368 ], [ -122.446841244096817, 37.805705397216052 ], [ -122.446823724582785, 37.805697445671754 ], [ -122.446835297139998, 37.805676653032066 ], [ -122.446831332492664, 37.805657489784885 ], [ -122.446817327967949, 37.805651540403126 ], [ -122.446825403536536, 37.805629431757723 ], [ -122.446805830072663, 37.805609152989824 ], [ -122.446817348267402, 37.805586300786253 ], [ -122.446809113007006, 37.805536305492353 ], [ -122.446789863569947, 37.805528382500277 ], [ -122.446803112068949, 37.805505501734793 ], [ -122.446787107265692, 37.805489284429996 ], [ -122.446700807332093, 37.805498949734627 ], [ -122.446698645389645, 37.80548250391827 ], [ -122.446795308825045, 37.805471980811141 ], [ -122.446771068810406, 37.805405768207393 ], [ -122.446462225224153, 37.805444515694951 ], [ -122.445989505497494, 37.805505194954378 ], [ -122.446003707846955, 37.805518695189633 ], [ -122.4460087518259, 37.805579044127001 ], [ -122.446547025898894, 37.805509728799308 ], [ -122.446550972467278, 37.805528205624398 ], [ -122.446518204506802, 37.805532866567553 ], [ -122.446489185128556, 37.80554845357441 ], [ -122.446462996481614, 37.80553995860523 ], [ -122.446437419711515, 37.805554801776253 ], [ -122.446402597499727, 37.805547136014376 ], [ -122.446377002372941, 37.805561292745764 ], [ -122.446359483641928, 37.805553341395452 ], [ -122.446335312891549, 37.805555800213412 ], [ -122.446311412770896, 37.805568555772986 ], [ -122.446295642000578, 37.805561262020625 ], [ -122.44627666253902, 37.805563635428271 ], [ -122.446249319434344, 37.805577134798497 ], [ -122.446231800006771, 37.805569182891531 ], [ -122.446148996869667, 37.805580163541499 ], [ -122.446123402382483, 37.805594320480907 ], [ -122.446104135009989, 37.805585710944754 ], [ -122.44608171290129, 37.805588827858948 ], [ -122.44605783038071, 37.805602270079603 ], [ -122.446038580653479, 37.805594346696139 ], [ -122.446017870868147, 37.805596748888597 ], [ -122.445994006657656, 37.805610876973709 ], [ -122.445976469264281, 37.80560223887116 ], [ -122.445950586862267, 37.805605412856671 ], [ -122.445928452266116, 37.805619512663846 ], [ -122.445909185255772, 37.805610903090184 ], [ -122.445885032816534, 37.805614048516972 ], [ -122.445861132260902, 37.80562680426543 ], [ -122.445845361169205, 37.805619510184115 ], [ -122.445814305801534, 37.805623456219109 ], [ -122.44579215352951, 37.805636869562669 ], [ -122.445772886191605, 37.805628260247033 ], [ -122.445750464048956, 37.80563137682369 ], [ -122.445724833141924, 37.805644160817579 ], [ -122.445709062413187, 37.805636866986909 ], [ -122.445683179641605, 37.805640040919442 ], [ -122.445655872372569, 37.805654912741964 ], [ -122.445638335008098, 37.805646274589208 ], [ -122.445605549302542, 37.805650249115246 ], [ -122.445581648680047, 37.80566300453242 ], [ -122.445565859972788, 37.805655024250306 ], [ -122.445531361592955, 37.805659714013281 ], [ -122.445505730631226, 37.805672497684945 ], [ -122.445489959918007, 37.805665203825008 ], [ -122.445462346810999, 37.80566840625292 ], [ -122.445436715841595, 37.805681190184124 ], [ -122.445420945133293, 37.805673896314971 ], [ -122.445391619690682, 37.8056778137015 ], [ -122.445362527733508, 37.805690654981625 ], [ -122.445346757369364, 37.8056833608223 ], [ -122.44531225895534, 37.805688050246587 ], [ -122.445290052615164, 37.805699404198599 ], [ -122.445276030220143, 37.805692768201546 ], [ -122.445243244128591, 37.805696742632556 ], [ -122.445217576794818, 37.805708153657022 ], [ -122.445203554404628, 37.805701517651372 ], [ -122.445170786636353, 37.80570617848889 ], [ -122.445148507984058, 37.805714786690388 ], [ -122.445105232410981, 37.805714813715646 ], [ -122.445083008046993, 37.805725481196227 ], [ -122.44507071598305, 37.80571881663689 ], [ -122.445037947513853, 37.80572347772349 ], [ -122.445017471439073, 37.805734803086857 ], [ -122.445001701099429, 37.805727508881461 ], [ -122.444908551660831, 37.805740032744836 ], [ -122.44488456097811, 37.805749355858453 ], [ -122.444846440036883, 37.805747924599146 ], [ -122.444825945937126, 37.805758563222234 ], [ -122.444811923572402, 37.805751927170057 ], [ -122.44478259772076, 37.805755844410804 ], [ -122.44476037365142, 37.805766512099389 ], [ -122.444713600749751, 37.805765222919185 ], [ -122.444691394641026, 37.805776576752621 ], [ -122.444677372284929, 37.805769940684463 ], [ -122.444653201761611, 37.805772399426502 ], [ -122.444630958989393, 37.805782380395051 ], [ -122.444585917098436, 37.805781062896116 ], [ -122.444563710619391, 37.805792416711171 ], [ -122.444549688278883, 37.80578578090244 ], [ -122.444518632419573, 37.805789726327305 ], [ -122.444494659650545, 37.805799735794025 ], [ -122.444451329400607, 37.805797703293351 ], [ -122.444429141227388, 37.805809743784408 ], [ -122.444413370583575, 37.805802449506146 ], [ -122.444390948345657, 37.805805566373394 ], [ -122.44436699318581, 37.805816262252314 ], [ -122.444352970844008, 37.805809625871085 ], [ -122.444327105931421, 37.805813485938437 ], [ -122.44430666567736, 37.805826184043205 ], [ -122.444289129128734, 37.805817545953296 ], [ -122.444266706866628, 37.805820662247768 ], [ -122.444242769660434, 37.805832044533943 ], [ -122.444228747333952, 37.805825408412545 ], [ -122.444206307444119, 37.80582783853189 ], [ -122.444182406178044, 37.805840593670816 ], [ -122.44416661758342, 37.805832613201659 ], [ -122.44414592563939, 37.805835701223295 ], [ -122.444121953151352, 37.805845710608445 ], [ -122.444025145055349, 37.805850740063669 ], [ -122.444001189835404, 37.805861436142784 ], [ -122.443959572249256, 37.805858688226643 ], [ -122.443935671622995, 37.805871443304085 ], [ -122.443919900675667, 37.805864149240215 ], [ -122.443902651728223, 37.805866493739174 ], [ -122.443880499045548, 37.805879906997674 ], [ -122.443864710121758, 37.805871926219289 ], [ -122.44378192426916, 37.805883591639486 ], [ -122.443756257338379, 37.805895002334175 ], [ -122.443714639749658, 37.805892254606199 ], [ -122.443692432758084, 37.80590360826271 ], [ -122.4436766621739, 37.805896314160641 ], [ -122.443654240222742, 37.805899430882093 ], [ -122.443630320868039, 37.805911499476395 ], [ -122.443614550281069, 37.80590420509148 ], [ -122.44359211035453, 37.805906635368508 ], [ -122.443568208950381, 37.805919390108215 ], [ -122.443552420405013, 37.80591140955697 ], [ -122.443535171434974, 37.805913754002177 ], [ -122.443511270025937, 37.805926509004905 ], [ -122.443495481838426, 37.805918528714912 ], [ -122.443473041543214, 37.805920958425858 ], [ -122.443450852475209, 37.80593299846943 ], [ -122.443435081915695, 37.805925704609677 ], [ -122.443407468616002, 37.805928906281792 ], [ -122.443388776471963, 37.805942262421105 ], [ -122.443369509665189, 37.805933652158522 ], [ -122.443347069022408, 37.805936082125754 ], [ -122.443328395172557, 37.80595012440785 ], [ -122.443309128031871, 37.805941514415672 ], [ -122.443291878362203, 37.805943859111288 ], [ -122.443267959626397, 37.805955927620595 ], [ -122.443252189065603, 37.805948633187285 ], [ -122.443233209414942, 37.805951006379615 ], [ -122.443207595577817, 37.805964475989526 ], [ -122.443174557723637, 37.805958839788218 ], [ -122.443148908639841, 37.80597093678324 ], [ -122.443134868425886, 37.805963614373887 ], [ -122.443058967715231, 37.805973792109128 ], [ -122.443036832460166, 37.805987891372702 ], [ -122.443017547724423, 37.805978594894604 ], [ -122.442981318355606, 37.805983312150161 ], [ -122.442948532359026, 37.805987285937427 ], [ -122.442926379114695, 37.806000698747546 ], [ -122.44290884267825, 37.805992060178127 ], [ -122.442839827294776, 37.806000751431881 ], [ -122.442815943694384, 37.806014192451634 ], [ -122.442798425230706, 37.806006240298515 ], [ -122.442734582834518, 37.806014159544731 ], [ -122.442707256867862, 37.806028343976273 ], [ -122.44268971976544, 37.806019705660304 ], [ -122.442636241331058, 37.806026767128834 ], [ -122.442610646012994, 37.806040923030253 ], [ -122.442591378939156, 37.80603231319558 ], [ -122.442551688858117, 37.806037087047187 ], [ -122.442547725650329, 37.806017923926198 ], [ -122.443029120691975, 37.805957802366279 ], [ -122.443387985849299, 37.805912059110995 ], [ -122.443753825765924, 37.805868259987832 ], [ -122.443769345089194, 37.805865944017846 ], [ -122.443957339015583, 37.805839496905513 ], [ -122.444492227815289, 37.805772993462419 ], [ -122.444668235229059, 37.805751549942215 ], [ -122.445284142224111, 37.805672032526566 ], [ -122.445279062855903, 37.805610310694497 ], [ -122.44527006920417, 37.805597411188494 ], [ -122.444483346869873, 37.805698286438428 ], [ -122.443744945559246, 37.805793553184138 ], [ -122.443018600699929, 37.805886555905765 ], [ -122.442516549650193, 37.805951138305055 ], [ -122.442427410705633, 37.806050808392641 ], [ -122.442522464016989, 37.806507977467341 ], [ -122.442586642075881, 37.806579026869471 ], [ -122.443131937777821, 37.806513045572309 ], [ -122.443499493172467, 37.806468532301039 ], [ -122.443667282141945, 37.806463706682081 ], [ -122.443846679856065, 37.806439461357343 ], [ -122.443959061743129, 37.806434175357609 ], [ -122.443938050605254, 37.806358981524156 ], [ -122.443116244562106, 37.806442570813587 ], [ -122.442613848569025, 37.80649411140103 ], [ -122.442611615303633, 37.806474919513256 ], [ -122.442654765933469, 37.806470088368528 ], [ -122.442661399886077, 37.806458991436592 ], [ -122.442687570467214, 37.806466801090252 ], [ -122.442708298579689, 37.80646508646474 ], [ -122.442716537115061, 37.806449155723413 ], [ -122.442746276492144, 37.806461026947929 ], [ -122.442770051771902, 37.806443467084335 ], [ -122.44279979080919, 37.80645533830107 ], [ -122.442874033560784, 37.806447934694987 ], [ -122.442882218173921, 37.806429944918698 ], [ -122.442912011462568, 37.806443875399388 ], [ -122.442927548550728, 37.806442245978758 ], [ -122.442937481103471, 37.806424914130673 ], [ -122.442965543726487, 37.806438873384522 ], [ -122.442990995725921, 37.806419225391323 ], [ -122.443019058349662, 37.806433184357886 ], [ -122.443039786445084, 37.806431469674095 ], [ -122.443047971009094, 37.806413479611678 ], [ -122.443077764322211, 37.806427410050546 ], [ -122.443098474448703, 37.80642500892381 ], [ -122.443108388985991, 37.806406990354105 ], [ -122.443136451627183, 37.806420949292765 ], [ -122.443157179716479, 37.806419234588326 ], [ -122.443165418150457, 37.806403303815522 ], [ -122.443193426900422, 37.806415203442874 ], [ -122.443215885660081, 37.806413459937652 ], [ -122.443222483596756, 37.806400990383416 ], [ -122.443248689797912, 37.806410172509004 ], [ -122.443329817859791, 37.806401281706691 ], [ -122.443338074230084, 37.806386037628911 ], [ -122.443366083001223, 37.806397937215287 ], [ -122.443447229004846, 37.806389732764778 ], [ -122.443455467380517, 37.806373802246185 ], [ -122.443480033821288, 37.806386445534933 ], [ -122.443505916940026, 37.806383271811711 ], [ -122.443512496848314, 37.806370115534087 ], [ -122.443538721058857, 37.806379984576957 ], [ -122.443562892155768, 37.806377525783311 ], [ -122.443569490023762, 37.806365055935018 ], [ -122.44359742694175, 37.80637420973634 ], [ -122.443676842221919, 37.806366033924192 ], [ -122.443672164594389, 37.806253487231395 ], [ -122.443695462542081, 37.806349932284753 ], [ -122.443707916670277, 37.806362774599044 ], [ -122.44379596596373, 37.806353769679554 ], [ -122.443802527838344, 37.806339926678575 ], [ -122.443830500721077, 37.806350453289745 ], [ -122.443861574478419, 37.806347194484687 ], [ -122.443868190266627, 37.806335411052103 ], [ -122.443896109229783, 37.80634387807568 ], [ -122.443922010642723, 37.806341390962501 ], [ -122.443913871646629, 37.806228901600704 ], [ -122.443940541034891, 37.806321857121844 ], [ -122.443956527422003, 37.806337388377891 ], [ -122.44398415881686, 37.80633487273537 ], [ -122.444004419522869, 37.806315310362876 ], [ -122.444018675589732, 37.806330870132562 ], [ -122.444044576647997, 37.806328382998174 ], [ -122.444051174437902, 37.806315913397398 ], [ -122.444077344761538, 37.806323722474062 ], [ -122.444106688857119, 37.806320492116114 ], [ -122.444113268646205, 37.806307335530214 ], [ -122.444137744599871, 37.806316546256639 ], [ -122.444163610043603, 37.806312686225482 ], [ -122.444171919814423, 37.806299501392182 ], [ -122.444198126803698, 37.806308683844726 ], [ -122.44422572221977, 37.806304795006142 ], [ -122.444232302000771, 37.806291638962733 ], [ -122.444258508634277, 37.806300820858432 ], [ -122.444287834382735, 37.806296903754081 ], [ -122.44429446807581, 37.806285806729939 ], [ -122.444320620790435, 37.806292929589091 ], [ -122.444410328338193, 37.806281149679826 ], [ -122.444398674018615, 37.806166658108886 ], [ -122.444430732743257, 37.806267078693303 ], [ -122.444443114393508, 37.806277175761053 ], [ -122.44453626493052, 37.806264652260793 ], [ -122.444546322932027, 37.806252125028941 ], [ -122.444572511964111, 37.80626062069139 ], [ -122.44466566211247, 37.806248097094617 ], [ -122.444654277108668, 37.8061439020343 ], [ -122.444684317803762, 37.806233368169231 ], [ -122.444698448132328, 37.806244122830272 ], [ -122.444729504511017, 37.806240177078124 ], [ -122.444737832507585, 37.806227678906012 ], [ -122.444765733548039, 37.806235459291536 ], [ -122.444782982907213, 37.806233114935374 ], [ -122.44479131087958, 37.806220616210318 ], [ -122.444819211930195, 37.806228396857783 ], [ -122.444886496978683, 37.806219733530369 ], [ -122.44488089641429, 37.806138105148783 ], [ -122.444906901269448, 37.806205662186763 ], [ -122.444919282967007, 37.806215758930051 ], [ -122.444986568338436, 37.806207095539854 ], [ -122.444994931901647, 37.806195969945342 ], [ -122.445021067006977, 37.806202405936702 ], [ -122.445093525002505, 37.8061929701732 ], [ -122.445087942204026, 37.80611202850794 ], [ -122.445113929253864, 37.806178899068257 ], [ -122.445128041656801, 37.806188967520207 ], [ -122.445202229600525, 37.806179502882479 ], [ -122.445210557849578, 37.806167004396592 ], [ -122.445236728249824, 37.806174813490792 ], [ -122.44525743822885, 37.806172411710314 ], [ -122.445265766467799, 37.80615991322049 ], [ -122.445267302625481, 37.806086407881679 ], [ -122.445285033545986, 37.806168522898403 ], [ -122.445310916864869, 37.806165349047845 ], [ -122.445305315838027, 37.806083720685585 ], [ -122.445331267107818, 37.80614921860834 ], [ -122.445347145482373, 37.806160631088311 ], [ -122.445366125472304, 37.806158257824791 ], [ -122.445374453006437, 37.806145759613244 ], [ -122.44540062410141, 37.806153568385149 ], [ -122.445424776743849, 37.806150423332426 ], [ -122.445433086611402, 37.80613723812958 ], [ -122.445434730189021, 37.806067851662334 ], [ -122.445459293346119, 37.806146420033315 ], [ -122.445479985322095, 37.806143331781477 ], [ -122.445489989537165, 37.806128745440887 ], [ -122.445516214271365, 37.806138614038851 ], [ -122.445543827543716, 37.806135411324078 ], [ -122.445560788683153, 37.80612208366891 ], [ -122.445567131287589, 37.806165929693421 ], [ -122.445546061556797, 37.806154603157502 ], [ -122.445523639245678, 37.806157719690731 ], [ -122.445501522738013, 37.806172505842895 ], [ -122.445489122634442, 37.806161722734075 ], [ -122.44546670032598, 37.806164839531021 ], [ -122.445442817508763, 37.806178281625698 ], [ -122.445432201695837, 37.806169528989997 ], [ -122.445352822460961, 37.806179079403755 ], [ -122.445327226916191, 37.806193235905667 ], [ -122.445316593481564, 37.806183797096139 ], [ -122.445244135177305, 37.806193233002396 ], [ -122.44522027063509, 37.806207361203953 ], [ -122.445207906544567, 37.80619795120483 ], [ -122.445188926532239, 37.806200324168309 ], [ -122.445161708883106, 37.806218628036419 ], [ -122.445135448551525, 37.806207386764015 ], [ -122.445111565653477, 37.806220828516935 ], [ -122.44509921920563, 37.806212104669896 ], [ -122.445030203866864, 37.80622079693034 ], [ -122.445008123555382, 37.806236955848796 ], [ -122.444978438202398, 37.806227144485362 ], [ -122.444954644838973, 37.806244018373903 ], [ -122.444924959836314, 37.806234206991327 ], [ -122.444902861169254, 37.806249679463384 ], [ -122.444888730810021, 37.806238924826829 ], [ -122.444823175735436, 37.806247559901692 ], [ -122.444801113352611, 37.806264405213646 ], [ -122.444785216712205, 37.806252306233745 ], [ -122.444723104639422, 37.806260197747797 ], [ -122.444699383130299, 37.80627981731422 ], [ -122.444681702577071, 37.806265687549761 ], [ -122.444619590489268, 37.806273579283847 ], [ -122.444597491739671, 37.806289051423988 ], [ -122.444583361417187, 37.806278296750953 ], [ -122.444519536610485, 37.806286903400981 ], [ -122.444493959540637, 37.806301746142793 ], [ -122.44447984720945, 37.80629167788976 ], [ -122.444386678651156, 37.806303514912976 ], [ -122.444361209083098, 37.806322476775328 ], [ -122.444343546554336, 37.806309033118175 ], [ -122.444324566500356, 37.806311406491666 ], [ -122.444297366567298, 37.806330396317819 ], [ -122.444279722039454, 37.806317639632702 ], [ -122.444255568948051, 37.806320784456545 ], [ -122.444233506414719, 37.806337629662124 ], [ -122.444217609851108, 37.806325530605875 ], [ -122.444126171547992, 37.806337339172615 ], [ -122.444102396615747, 37.806354899035341 ], [ -122.444084751416256, 37.806342142057929 ], [ -122.444034733554687, 37.806349147388161 ], [ -122.443955318332002, 37.806357323441311 ], [ -122.443976328801966, 37.806432517557667 ], [ -122.444009133253417, 37.806429229637253 ], [ -122.44401497169018, 37.80645385590833 ], [ -122.443983915176943, 37.806457801197638 ], [ -122.443991501564284, 37.806483085111559 ], [ -122.444006566508079, 37.806529534342857 ], [ -122.443998364182022, 37.80654683776438 ], [ -122.444012889909018, 37.806572694020851 ], [ -122.444137456251781, 37.806569953925113 ], [ -122.444004705900142, 37.806590683869416 ], [ -122.444008597616772, 37.806607101209622 ], [ -122.444028224510816, 37.8066294400098 ], [ -122.444014687364202, 37.806641337539759 ], [ -122.444016813135761, 37.806656410256579 ], [ -122.444032907804939, 37.806676060090197 ], [ -122.4440210291, 37.806685183643154 ], [ -122.444025100564104, 37.806708465032258 ], [ -122.444042961537718, 37.806729459206764 ], [ -122.444031118428768, 37.806739955631187 ], [ -122.444035226540592, 37.806764609873134 ], [ -122.444052799240296, 37.806774621138679 ], [ -122.444173599989711, 37.806760268693552 ], [ -122.444175761756156, 37.806776714546551 ], [ -122.443903104192728, 37.806809364848277 ], [ -122.443899212488802, 37.80679294750523 ], [ -122.443999302417467, 37.806780996791801 ], [ -122.444012857566491, 37.806769785696332 ], [ -122.443998457621589, 37.806748734467796 ], [ -122.444004821781832, 37.806727340974426 ], [ -122.443985267126379, 37.806707748443934 ], [ -122.443996768032036, 37.80668420981921 ], [ -122.443979015619519, 37.806667334220748 ], [ -122.443988858092823, 37.806646570397213 ], [ -122.443972709865449, 37.806624861254427 ], [ -122.443980822328029, 37.806604125398131 ], [ -122.443978768461875, 37.806591798410317 ], [ -122.443966422424324, 37.806583074165033 ], [ -122.443972768605505, 37.806560994240272 ], [ -122.443949501347888, 37.806531848697659 ], [ -122.443975330928197, 37.806526615843026 ], [ -122.443974234501226, 37.806484743188264 ], [ -122.443966666100792, 37.806460145980267 ], [ -122.443854499850644, 37.806473669177059 ], [ -122.443860373479154, 37.806499667782823 ], [ -122.443717402901086, 37.806526746415607 ], [ -122.443667420469765, 37.806535124185942 ], [ -122.443645087827377, 37.806541672798915 ], [ -122.443622719585392, 37.806546848536961 ], [ -122.443600333023568, 37.806551337843935 ], [ -122.443577910179286, 37.806554454561891 ], [ -122.443581820462299, 37.80657155833741 ], [ -122.443586556699174, 37.806620238019541 ], [ -122.443637961503612, 37.806864552713115 ], [ -122.443633273319165, 37.806883858652405 ], [ -122.443607138425932, 37.806877421799527 ], [ -122.443529794028962, 37.806898611546323 ], [ -122.443526675114754, 37.806911710787858 ], [ -122.443502306167488, 37.806906618541966 ], [ -122.443424944087113, 37.80692712178169 ], [ -122.443421824461069, 37.806940221031809 ], [ -122.443397438234925, 37.806934442320348 ], [ -122.443318380993759, 37.806956346879609 ], [ -122.443315262039832, 37.806969446115438 ], [ -122.443289162740911, 37.806964382337512 ], [ -122.443211818508658, 37.806985571869724 ], [ -122.443208734784008, 37.807000044253662 ], [ -122.443180869538779, 37.806993635816845 ], [ -122.443103524899072, 37.807014825283645 ], [ -122.443102154219687, 37.807028582437368 ], [ -122.443076036948625, 37.80702283217979 ], [ -122.442998692594642, 37.807044021572032 ], [ -122.442995572888506, 37.807057120810583 ], [ -122.442969456307765, 37.807051370518039 ], [ -122.442895554290288, 37.807071816676462 ], [ -122.442876807520932, 37.807083113165248 ], [ -122.442860372447001, 37.807050420945309 ], [ -122.44288643546534, 37.807054111684081 ], [ -122.442950027240173, 37.807036582576075 ], [ -122.442956535452808, 37.807020680875418 ], [ -122.44298955579778, 37.807025630704103 ], [ -122.443044549671924, 37.807010303103709 ], [ -122.443051093786181, 37.806995773988241 ], [ -122.443080653430101, 37.80700078080757 ], [ -122.443137377283094, 37.806985425210136 ], [ -122.443143903403268, 37.806970209382371 ], [ -122.443176924084369, 37.806975159152948 ], [ -122.443230187542511, 37.806959860250316 ], [ -122.443236731623188, 37.806945331399028 ], [ -122.443266291259548, 37.806950338171859 ], [ -122.443323015021249, 37.806934981935846 ], [ -122.443327829074263, 37.806920481311195 ], [ -122.443311249747254, 37.806882297698685 ], [ -122.443357388360823, 37.806925488066938 ], [ -122.443415825168074, 37.806909417378883 ], [ -122.443402365072131, 37.806858134260111 ], [ -122.443446755408701, 37.806900666674323 ], [ -122.443506922515155, 37.806884567152593 ], [ -122.443513466527847, 37.806870038011155 ], [ -122.443541295807862, 37.80687507323001 ], [ -122.443611772372606, 37.806856057118701 ], [ -122.443568098366953, 37.806642517527813 ], [ -122.443490717910933, 37.80666233411602 ], [ -122.443464637369544, 37.806657956797729 ], [ -122.443447387531151, 37.806660301241159 ], [ -122.443394142301429, 37.806676286675255 ], [ -122.443369792101194, 37.80667188082289 ], [ -122.443307715462936, 37.806681144456071 ], [ -122.443302883453555, 37.806694958647995 ], [ -122.443274946458374, 37.806685805052041 ], [ -122.443204469968975, 37.806704820962679 ], [ -122.443178370770624, 37.806699757160004 ], [ -122.443107894250431, 37.806718773287464 ], [ -122.44308352539521, 37.806713680954857 ], [ -122.443013048491437, 37.806732697031315 ], [ -122.442985237265603, 37.806728348120288 ], [ -122.442950738216922, 37.806733036852982 ], [ -122.44291647270785, 37.806746649473865 ], [ -122.442888625547027, 37.806740927400313 ], [ -122.442821555362244, 37.806757827053026 ], [ -122.442793726174969, 37.806752791664266 ], [ -122.442731613479054, 37.806760682403457 ], [ -122.442721537132741, 37.806772522772178 ], [ -122.442695384049358, 37.806765399290242 ], [ -122.442678134861055, 37.806767743884308 ], [ -122.442671608648851, 37.806782959137742 ], [ -122.442640174735473, 37.806772489262421 ], [ -122.44262290758212, 37.806774147415787 ], [ -122.442611226258151, 37.806790821310969 ], [ -122.442619566601024, 37.806844935481941 ], [ -122.4425572741916, 37.806845961528367 ], [ -122.442543113877818, 37.806767907443565 ], [ -122.442812274930034, 37.80673394443496 ], [ -122.442895043918895, 37.806721593264598 ], [ -122.44288439854499, 37.806645541768312 ], [ -122.44286390392358, 37.80665618032328 ], [ -122.442620734223425, 37.806691089066426 ], [ -122.442586432743397, 37.80670332845169 ], [ -122.442569254711358, 37.806708418497294 ], [ -122.442553843632766, 37.806714852893514 ], [ -122.44253845015912, 37.806721973451488 ], [ -122.442524957636692, 37.80672882453954 ], [ -122.442523074304333, 37.806729780720396 ], [ -122.44251132146853, 37.806743708869504 ], [ -122.442504741349737, 37.806756865090371 ], [ -122.442501639536246, 37.806770651023797 ], [ -122.442501980779383, 37.80678369296961 ], [ -122.442511153361352, 37.806803457290563 ], [ -122.442513800037688, 37.806838436574978 ], [ -122.442498190669355, 37.806837320216118 ], [ -122.442500262610309, 37.806850333930662 ], [ -122.442500855308538, 37.806872986207821 ], [ -122.442513308640088, 37.806885829207545 ], [ -122.442543448720272, 37.807045340228143 ], [ -122.442550657494735, 37.807056209147177 ], [ -122.442552729104918, 37.807069222865962 ], [ -122.442549574089071, 37.807080949216051 ], [ -122.442542975993348, 37.807093419280186 ], [ -122.442532880918762, 37.80710457321085 ], [ -122.442521020253452, 37.807114382489758 ], [ -122.442507375020014, 37.80712216152461 ], [ -122.442493693848277, 37.807128567143486 ], [ -122.442476479790699, 37.807132284309965 ], [ -122.44245921255002, 37.807133942439243 ], [ -122.442443603113219, 37.807132825798654 ], [ -122.442426210144987, 37.807129678620242 ], [ -122.442401877121071, 37.807125959012424 ], [ -122.442394668361601, 37.807115090084459 ], [ -122.442382322776425, 37.807106365943092 ], [ -122.442371670941014, 37.807096240723055 ], [ -122.442357217513063, 37.80707312972298 ], [ -122.442353415933297, 37.807060144492915 ], [ -122.442352751441661, 37.807034746485243 ], [ -122.442355888527402, 37.807022333707671 ], [ -122.442327317913012, 37.80685661596673 ], [ -122.442325228043273, 37.806842915816503 ], [ -122.442319678177554, 37.80682927264953 ], [ -122.442314163892661, 37.806817002627895 ], [ -122.442303476176264, 37.806805503986638 ], [ -122.442292807121106, 37.806794692040256 ], [ -122.442278730911681, 37.806785996390175 ], [ -122.44225259583861, 37.806779559791913 ], [ -122.442263912071212, 37.806815083032639 ], [ -122.442334351220893, 37.807191623601256 ], [ -122.442574008114292, 37.807154713430769 ], [ -122.442579917970377, 37.807182085225314 ], [ -122.442316125837024, 37.807222826535309 ], [ -122.442296128149565, 37.807120146892402 ], [ -122.442249660075092, 37.807130526084627 ], [ -122.442243205590515, 37.807148487593025 ], [ -122.442218675723581, 37.80713721717698 ], [ -122.442177362768064, 37.807146137987679 ], [ -122.442169249735414, 37.807166873443258 ], [ -122.44214120495144, 37.807153600709071 ], [ -122.442110219881215, 37.807160291509724 ], [ -122.442102143088249, 37.807182399820256 ], [ -122.442074080353734, 37.807168440637511 ], [ -122.441951871381676, 37.807195175211561 ], [ -122.441943758626778, 37.807215910645752 ], [ -122.441915713871779, 37.807202638132658 ], [ -122.441829644720443, 37.807221223495034 ], [ -122.441823243975179, 37.807241243729116 ], [ -122.441796947879098, 37.807228628850183 ], [ -122.441714321769382, 37.807246470710545 ], [ -122.441706226203735, 37.807267892572305 ], [ -122.441678163511327, 37.807253933295577 ], [ -122.441590382530393, 37.807273233392451 ], [ -122.441583945818934, 37.807291881022437 ], [ -122.441559397367783, 37.80727992432282 ], [ -122.441528412884566, 37.807286614959068 ], [ -122.441522065914484, 37.807308694749302 ], [ -122.4414922725324, 37.807294763645217 ], [ -122.441459575632209, 37.807302169181312 ], [ -122.441451444085047, 37.807322218159875 ], [ -122.441425148030646, 37.807309603472838 ], [ -122.441347676557456, 37.807325986488941 ], [ -122.441341185930639, 37.807342574807244 ], [ -122.441318422046436, 37.807332648592578 ], [ -122.441240951224984, 37.807349031801699 ], [ -122.441234550317162, 37.807369052277899 ], [ -122.441208253583667, 37.807356437279445 ], [ -122.44112907030356, 37.807373535328814 ], [ -122.44112095660725, 37.807394270717083 ], [ -122.44109464263579, 37.807380969523756 ], [ -122.440999993407189, 37.807402442127575 ], [ -122.440987126791967, 37.807373811300785 ], [ -122.441006340540554, 37.807380362365826 ], [ -122.441088966969374, 37.807362521001856 ], [ -122.441071293907683, 37.807282464951484 ], [ -122.441105839449861, 37.807345761826411 ], [ -122.441121664279194, 37.807355115562864 ], [ -122.441199135479366, 37.807338732426437 ], [ -122.441181426400448, 37.807257303252058 ], [ -122.441215936141603, 37.807319227778606 ], [ -122.441235275185775, 37.807330583566994 ], [ -122.44130240044376, 37.80731574411066 ], [ -122.44131244119076, 37.80730253099884 ], [ -122.441289899930467, 37.807234916217887 ], [ -122.441336846017577, 37.807308996562313 ], [ -122.441403970896872, 37.807294157328393 ], [ -122.441389758204977, 37.807214043807704 ], [ -122.441424286396526, 37.807276654700864 ], [ -122.441440110897986, 37.807286008125857 ], [ -122.441505522979043, 37.807271883482372 ], [ -122.441489561884524, 37.807191112300579 ], [ -122.441524179900497, 37.807257155053932 ], [ -122.441538238159126, 37.807265164360558 ], [ -122.441610518456187, 37.807248866405487 ], [ -122.441598394609557, 37.807182453357271 ], [ -122.441630905705154, 37.807234109473121 ], [ -122.441643233270554, 37.80724214726019 ], [ -122.441715531475523, 37.807226535673394 ], [ -122.441722129729229, 37.807214065930424 ], [ -122.441749959016704, 37.807219101571583 ], [ -122.44181537098703, 37.807204977030693 ], [ -122.441821969214871, 37.8071925070075 ], [ -122.441804977662258, 37.807138535507519 ], [ -122.441848068147848, 37.807197571115559 ], [ -122.441911750066581, 37.807183474731303 ], [ -122.441901356658576, 37.80711703321635 ], [ -122.441942735164389, 37.807176783982825 ], [ -122.442002974305893, 37.807163431240092 ], [ -122.44201133876993, 37.807152305853435 ], [ -122.442037401781846, 37.80715599677972 ], [ -122.442094216092357, 37.807144073567486 ], [ -122.44210250836673, 37.807130202449336 ], [ -122.442130373562975, 37.807136610866159 ], [ -122.442190612977058, 37.807123257747243 ], [ -122.4421768301127, 37.807059618983033 ], [ -122.442207521070316, 37.807107871278774 ], [ -122.442221597332434, 37.80711656693682 ], [ -122.442292164942742, 37.807100983492141 ], [ -122.442243704644795, 37.806836704402386 ], [ -122.442167767011739, 37.806845508971712 ], [ -122.442147308147, 37.806857520267137 ], [ -122.442072831477645, 37.806855999790052 ], [ -122.442050696118415, 37.806870098860529 ], [ -122.442038314362932, 37.806860002097636 ], [ -122.44197618353418, 37.806867205731571 ], [ -122.44195577849186, 37.806881276017322 ], [ -122.441943396394166, 37.806871178975598 ], [ -122.441881247592036, 37.806877696126804 ], [ -122.441859148445275, 37.806893168021055 ], [ -122.44184673044974, 37.806881698103723 ], [ -122.441786329930238, 37.806888873147223 ], [ -122.441762464513715, 37.80690300092192 ], [ -122.441750082438688, 37.806892903859939 ], [ -122.441684509153674, 37.806900850470612 ], [ -122.441658930973958, 37.80691569315082 ], [ -122.441646530958224, 37.806904909645212 ], [ -122.441572305572137, 37.806912998636243 ], [ -122.441548386244634, 37.806925066794669 ], [ -122.441465311637984, 37.806925747662177 ], [ -122.441443158191802, 37.806939160185685 ], [ -122.44142908206166, 37.806930464709019 ], [ -122.44136529221457, 37.806940441967662 ], [ -122.441344958843104, 37.806957258153332 ], [ -122.441327368515545, 37.806946560051927 ], [ -122.441311849243505, 37.806948875968999 ], [ -122.441293246205632, 37.806965663663163 ], [ -122.441275637234966, 37.806954278858043 ], [ -122.44126011795251, 37.806956594493755 ], [ -122.441239730706059, 37.80697135136279 ], [ -122.441223906642946, 37.806961997904651 ], [ -122.441151465000161, 37.806972117453661 ], [ -122.441129311490656, 37.806985530192655 ], [ -122.441115235374099, 37.806976834129472 ], [ -122.441037621302598, 37.806987725743447 ], [ -122.44101719810962, 37.807001109708246 ], [ -122.441003139964337, 37.806993100613703 ], [ -122.440922064462001, 37.807004048844455 ], [ -122.440901659189493, 37.807018119222057 ], [ -122.440895696481135, 37.806988688312863 ], [ -122.441218230630383, 37.806943549393232 ], [ -122.441263058469275, 37.806936630972665 ], [ -122.441435464921327, 37.80690975751326 ], [ -122.441433016200833, 37.806882328691337 ], [ -122.441372490336036, 37.806884698487615 ], [ -122.441304935046745, 37.806883063866231 ], [ -122.441274237201611, 37.806900737372722 ], [ -122.441242947719005, 37.806895758576474 ], [ -122.44119330612007, 37.806917177241274 ], [ -122.441110393048419, 37.806924035754299 ], [ -122.441042945411667, 37.806926519579946 ], [ -122.440998117551175, 37.806933437642307 ], [ -122.440918593700744, 37.806937493327403 ], [ -122.440899792827196, 37.80694673020367 ], [ -122.440782200958282, 37.806951412279737 ], [ -122.440680218094201, 37.806957210845738 ], [ -122.44054721454367, 37.806968326842338 ], [ -122.440468121234176, 37.806988856613863 ], [ -122.440371365223044, 37.806995942367976 ], [ -122.440134737571853, 37.807016316747912 ], [ -122.43989673886324, 37.807050447763743 ], [ -122.43967267172718, 37.807087782808438 ], [ -122.439538386124013, 37.807116087220599 ], [ -122.439408914197855, 37.80712989048353 ], [ -122.439239537222377, 37.807140229675355 ], [ -122.439104802429114, 37.807151372502958 ], [ -122.438766800452754, 37.807200879974303 ], [ -122.438299128879564, 37.807256638299236 ], [ -122.437960892936687, 37.807297219553782 ], [ -122.437688625577763, 37.807344957007658 ], [ -122.437514504314919, 37.807372539848515 ], [ -122.437376577168436, 37.807394034049501 ], [ -122.437259217227975, 37.807407636246566 ], [ -122.437146815479664, 37.80741222942855 ], [ -122.437031382840118, 37.807433353744614 ], [ -122.436885215537345, 37.80747077743743 ], [ -122.436714393247598, 37.807492124635075 ], [ -122.436614801865048, 37.807523289038706 ], [ -122.436563088290782, 37.807531692199284 ], [ -122.436507376472989, 37.80751955916309 ], [ -122.436298557575597, 37.807544276277241 ], [ -122.436240083275962, 37.807558970839189 ], [ -122.436155205939471, 37.807556930640864 ], [ -122.435982097955772, 37.80755702547102 ], [ -122.435828364056036, 37.807569849863164 ], [ -122.435859235962624, 37.807691580598309 ], [ -122.433925269093152, 37.807945122059223 ], [ -122.433817271048738, 37.80791942385212 ], [ -122.433787568621852, 37.807908923241605 ], [ -122.433755903391244, 37.807889527355464 ], [ -122.43376416154652, 37.807874283957823 ], [ -122.433933527911989, 37.807929878638532 ], [ -122.435838185171932, 37.807680938490563 ], [ -122.435834169572829, 37.807659716129535 ], [ -122.435737591220459, 37.807673662142683 ], [ -122.433917274710794, 37.807904049527295 ], [ -122.433913385157453, 37.807887631858222 ], [ -122.434041074707324, 37.807871803440726 ], [ -122.434044035083929, 37.807852526536877 ], [ -122.434070401961165, 37.807867888872153 ], [ -122.434160130921143, 37.807856803195897 ], [ -122.434164803061421, 37.807836811488876 ], [ -122.434189457816743, 37.807852888603414 ], [ -122.434284359969311, 37.807841031264509 ], [ -122.434289032075128, 37.807821039552501 ], [ -122.434313686852093, 37.80783711664111 ], [ -122.434406858247897, 37.807825287589175 ], [ -122.434411548897913, 37.80780598229466 ], [ -122.434437915834692, 37.807821344547961 ], [ -122.434520741089443, 37.807811058557668 ], [ -122.434525413482959, 37.8077910671051 ], [ -122.434551797979211, 37.80780711577237 ], [ -122.434636336023075, 37.807796114603541 ], [ -122.434641025919433, 37.807776809311157 ], [ -122.434665680757917, 37.807792886326304 ], [ -122.434750218436946, 37.807781885630661 ], [ -122.434754908641708, 37.807762580053435 ], [ -122.434779544918584, 37.807777970622496 ], [ -122.434871004379232, 37.807766856012883 ], [ -122.434875676329611, 37.807746864551945 ], [ -122.434900331208965, 37.807762941518149 ], [ -122.434976252743482, 37.807753454920828 ], [ -122.434979194289198, 37.807733491570779 ], [ -122.435005579555238, 37.807749540125371 ], [ -122.435084943914418, 37.807739310518855 ], [ -122.43508961579829, 37.807719318774772 ], [ -122.435116018975634, 37.807736053738346 ], [ -122.435191922576223, 37.807725881117662 ], [ -122.435196576876137, 37.807705202655406 ], [ -122.43522297972649, 37.807721937600746 ], [ -122.435302361927597, 37.807712394556091 ], [ -122.435306998308789, 37.807691029930353 ], [ -122.435333419066353, 37.8077084510101 ], [ -122.435402436929863, 37.807699764700374 ], [ -122.435407055040258, 37.807677713642711 ], [ -122.435433494058017, 37.807695821128007 ], [ -122.435507685095942, 37.807686362859421 ], [ -122.435514015990663, 37.807663596960829 ], [ -122.43554045469773, 37.807681704977007 ], [ -122.435609472497859, 37.807673017996969 ], [ -122.435614072648008, 37.807650280497519 ], [ -122.435642259638655, 37.807669046525525 ], [ -122.435711277415109, 37.807660359485872 ], [ -122.43572966745738, 37.807635335465775 ], [ -122.435735467093281, 37.807658589004994 ], [ -122.435830350851532, 37.807646043988242 ], [ -122.435804210559851, 37.807572993499143 ], [ -122.435788619382777, 37.807572562680427 ], [ -122.435772938706066, 37.807568699417203 ], [ -122.435758952605468, 37.807563435158237 ], [ -122.435746625277645, 37.807555396762375 ], [ -122.435735992180923, 37.807545957377542 ], [ -122.435727054339125, 37.807535116438025 ], [ -122.435721558628927, 37.807523531999962 ], [ -122.435719488549438, 37.807510518156661 ], [ -122.435678807510797, 37.807410923656249 ], [ -122.435671271850225, 37.807321086052454 ], [ -122.435659314380757, 37.807260850297496 ], [ -122.435635232905554, 37.807266739353338 ], [ -122.435635716129568, 37.807285273061382 ], [ -122.435609349135348, 37.807269911074314 ], [ -122.435543792417761, 37.807278540984541 ], [ -122.43552006850399, 37.80729815869541 ], [ -122.435504101570785, 37.807283312732451 ], [ -122.435441987649398, 37.807291199357643 ], [ -122.435419994063011, 37.807310788651876 ], [ -122.43540402680101, 37.807295942681101 ], [ -122.435341912858448, 37.807303829253563 ], [ -122.435318189229335, 37.807323446918055 ], [ -122.435302222331032, 37.807308600927854 ], [ -122.435234935185079, 37.80731725906076 ], [ -122.435212941536335, 37.807336848316268 ], [ -122.435196974310131, 37.807322002317541 ], [ -122.435127956788023, 37.807330689056798 ], [ -122.435105963445992, 37.807350278012088 ], [ -122.435089996584352, 37.807335431993209 ], [ -122.435019248678017, 37.807344147060114 ], [ -122.4349972725025, 37.807364422440152 ], [ -122.434981288114457, 37.807348889967201 ], [ -122.434910540175395, 37.807357604694324 ], [ -122.434888564319408, 37.807377880322939 ], [ -122.434872579266241, 37.807362348121238 ], [ -122.434798388810123, 37.807371805710694 ], [ -122.434776412580376, 37.807392081598607 ], [ -122.434758697865377, 37.807376577207712 ], [ -122.434691410594411, 37.807385235030431 ], [ -122.434667704309632, 37.80740553900322 ], [ -122.434651719289548, 37.807390006497108 ], [ -122.434575798078043, 37.807399492611601 ], [ -122.434552092103161, 37.807419796555429 ], [ -122.434536125337331, 37.807404950461788 ], [ -122.434461916577604, 37.807413721960565 ], [ -122.434439940575373, 37.80743399723081 ], [ -122.434423973489999, 37.807419151402279 ], [ -122.434349765034597, 37.807427922275664 ], [ -122.43432605864993, 37.807448226454213 ], [ -122.434310074038208, 37.807432693896239 ], [ -122.434230709546782, 37.807442922713086 ], [ -122.434208733825983, 37.807463198209049 ], [ -122.434192749235578, 37.807447665635237 ], [ -122.434111654710136, 37.807457923293533 ], [ -122.434087948236439, 37.807478226874963 ], [ -122.434071963321998, 37.807462694290493 ], [ -122.433992599465014, 37.807472923210291 ], [ -122.433970605449531, 37.807492512508169 ], [ -122.433954638431118, 37.807477666067122 ], [ -122.433870083452888, 37.807487980028228 ], [ -122.433846376910722, 37.807508283835588 ], [ -122.433830409920873, 37.80749343765234 ], [ -122.43374412454402, 37.807503779895939 ], [ -122.433722148333416, 37.807524055581261 ], [ -122.433706163485638, 37.807508522947344 ], [ -122.433606088798641, 37.807521151358706 ], [ -122.433584112530909, 37.807541426469101 ], [ -122.433574191011218, 37.807492831512612 ], [ -122.433602216513336, 37.807505419848866 ], [ -122.433678120078412, 37.807495247927321 ], [ -122.433686343139499, 37.80747863165486 ], [ -122.433714368662436, 37.807491220239072 ], [ -122.433795462933048, 37.807480962859643 ], [ -122.433803685966325, 37.807464346578953 ], [ -122.433831693616042, 37.80747624842688 ], [ -122.433911075733292, 37.807466706318117 ], [ -122.433919280165583, 37.807449403606796 ], [ -122.433947305702674, 37.807461991586599 ], [ -122.434024939884253, 37.807451791061574 ], [ -122.434034892878572, 37.807435146394688 ], [ -122.434062900561514, 37.80744704846235 ], [ -122.434135379039915, 37.807438305591944 ], [ -122.434143601646298, 37.807421689293108 ], [ -122.434171609334427, 37.807433591060409 ], [ -122.434245800271043, 37.807424133585066 ], [ -122.434254022851178, 37.80740751727847 ], [ -122.434282048436359, 37.807420105453431 ], [ -122.434352778623364, 37.807410704669572 ], [ -122.434361000831984, 37.807394088361185 ], [ -122.434389026430239, 37.807406676510716 ], [ -122.43446148730483, 37.807397247549531 ], [ -122.434471439847925, 37.807380602851318 ], [ -122.43449944756594, 37.807392504266289 ], [ -122.434571926300066, 37.807383761671048 ], [ -122.434581860921966, 37.807366430255094 ], [ -122.434609886547221, 37.807379018352258 ], [ -122.434682347359626, 37.807369588980769 ], [ -122.434690569836022, 37.807352972643585 ], [ -122.434718577593046, 37.807364874555745 ], [ -122.434784152364955, 37.807356931263477 ], [ -122.43479237481715, 37.807340314919166 ], [ -122.434820382585727, 37.807352216807175 ], [ -122.434884226976308, 37.807344301846562 ], [ -122.434894179763575, 37.807327657106839 ], [ -122.434922187543705, 37.807339558970696 ], [ -122.434987762271462, 37.807331615565204 ], [ -122.434997697142578, 37.807314284382969 ], [ -122.435025722825799, 37.807326872656006 ], [ -122.43509127963911, 37.807318242759216 ], [ -122.435101232376525, 37.807301598001935 ], [ -122.435129240172827, 37.807313499542126 ], [ -122.43519308450432, 37.807305584688869 ], [ -122.435201306859327, 37.807288968315881 ], [ -122.435231044678986, 37.807300841444686 ], [ -122.435296619692778, 37.807292898136311 ], [ -122.4353048420232, 37.807276281756089 ], [ -122.435332849842581, 37.807288183247969 ], [ -122.435398406593208, 37.807279553455011 ], [ -122.435406628899386, 37.80726293706762 ], [ -122.435436384982893, 37.8072754965727 ], [ -122.435451904167508, 37.80727318170905 ], [ -122.435460126807058, 37.807256565312237 ], [ -122.435488134643933, 37.807268466767304 ], [ -122.435508433635007, 37.807250278724965 ], [ -122.435536459373509, 37.807262866602237 ], [ -122.435602016078107, 37.80725423669606 ], [ -122.435615572581426, 37.80724302656666 ], [ -122.435634803373304, 37.807250264946127 ], [ -122.435655496065394, 37.807247178418407 ], [ -122.435588180541416, 37.806922774713847 ], [ -122.435582667693723, 37.80691050382292 ], [ -122.435534182131477, 37.806909926104069 ], [ -122.435571873987683, 37.806894886513319 ], [ -122.435559492755871, 37.80688478880149 ], [ -122.435545453103273, 37.806877464940861 ], [ -122.435529719250937, 37.806871542612598 ], [ -122.435514074542013, 37.806869052731017 ], [ -122.435493292470525, 37.806868707065597 ], [ -122.435344768504805, 37.806882132076758 ], [ -122.435121911744176, 37.806899523218981 ], [ -122.434871780421872, 37.806933156410132 ], [ -122.434433666315243, 37.806993908011997 ], [ -122.434416381034183, 37.806994878255509 ], [ -122.434278149661878, 37.807004699734037 ], [ -122.434260827915324, 37.807004297098374 ], [ -122.434243471085438, 37.807002521306472 ], [ -122.434227808507927, 37.806999344820447 ], [ -122.434210379805293, 37.806994823568417 ], [ -122.434194645688478, 37.806988901067868 ], [ -122.434180606150846, 37.806981577044944 ], [ -122.434166548746745, 37.806973567135586 ], [ -122.434154185915276, 37.806964155430045 ], [ -122.434143535561248, 37.806954029186485 ], [ -122.434134579447857, 37.806942501702544 ], [ -122.434125606153387, 37.806930288047226 ], [ -122.434123142595496, 37.806902172634167 ], [ -122.434101162359013, 37.806855835376808 ], [ -122.434090404384904, 37.806841590530418 ], [ -122.434081359579054, 37.806826631135792 ], [ -122.43406669419322, 37.806795281911626 ], [ -122.434061091508866, 37.806779579065555 ], [ -122.434055471636611, 37.80676318977391 ], [ -122.434051599648825, 37.806747458545502 ], [ -122.434049475890433, 37.80673238537485 ], [ -122.434047316368137, 37.806715939336222 ], [ -122.434046440132462, 37.806682304072865 ], [ -122.43401902773472, 37.806493903623902 ], [ -122.434011784506907, 37.806481661588982 ], [ -122.434004523385283, 37.806468732570444 ], [ -122.433998992958308, 37.806455775445059 ], [ -122.433995192532976, 37.806442790224423 ], [ -122.433964135838224, 37.806446732869858 ], [ -122.433932703641176, 37.806436260667759 ], [ -122.433886127202001, 37.806442518242726 ], [ -122.433858853036313, 37.806458760199753 ], [ -122.433839551447093, 37.806448775787949 ], [ -122.433791244999313, 37.806455061692688 ], [ -122.4337639708083, 37.80647130362771 ], [ -122.433744668882483, 37.806461319206093 ], [ -122.433694632079209, 37.806467633442772 ], [ -122.433667357862433, 37.806483875355433 ], [ -122.43364805594635, 37.806473890918021 ], [ -122.433596288440668, 37.806480233488799 ], [ -122.433569014197744, 37.806496475378673 ], [ -122.433549712637699, 37.806486490919518 ], [ -122.433503136480809, 37.806492748337497 ], [ -122.433477574676203, 37.806508275404134 ], [ -122.433458272433256, 37.806498290941384 ], [ -122.433404793122563, 37.806505348218124 ], [ -122.43337751882855, 37.806521590063653 ], [ -122.433358216941642, 37.806511605578869 ], [ -122.4333047372658, 37.806518662815925 ], [ -122.433279192939949, 37.806534876279215 ], [ -122.433259891408895, 37.80652489177271 ], [ -122.433206393839583, 37.806531262531053 ], [ -122.433179119492635, 37.806547504330624 ], [ -122.433159817625679, 37.806537519813411 ], [ -122.43309943408164, 37.806545377123399 ], [ -122.43307215969898, 37.806561618623626 ], [ -122.433052858195936, 37.806551634357852 ], [ -122.432990744619175, 37.806559519418741 ], [ -122.432963470221836, 37.806575761442943 ], [ -122.43294416836936, 37.80656577661594 ], [ -122.432885515114464, 37.806573605181946 ], [ -122.432858276424469, 37.806591219775477 ], [ -122.432851977723161, 37.806548745928424 ], [ -122.432876452705358, 37.806557958985486 ], [ -122.432950642939176, 37.806548502597778 ], [ -122.432958937194059, 37.806534631840726 ], [ -122.432985142526235, 37.806543816515223 ], [ -122.433055872042729, 37.806534416507489 ], [ -122.433064219557167, 37.806522605325611 ], [ -122.433088659156226, 37.806530445464773 ], [ -122.43316111864155, 37.80652101703766 ], [ -122.433169413207281, 37.806507146534614 ], [ -122.433195618216885, 37.806516331442637 ], [ -122.433259444532922, 37.80650773092048 ], [ -122.433269469079946, 37.806493832326176 ], [ -122.433293944088703, 37.806503045022133 ], [ -122.433357787918965, 37.806495131161043 ], [ -122.433366082106133, 37.806481260924372 ], [ -122.433392287462695, 37.806490445233919 ], [ -122.433454400931879, 37.806482559686899 ], [ -122.433462695099607, 37.806468689443392 ], [ -122.433488900463672, 37.806477873731517 ], [ -122.433552726373762, 37.806469273330841 ], [ -122.433561038053369, 37.806456089520083 ], [ -122.433587243771214, 37.806465273780709 ], [ -122.433649339320041, 37.806456701696959 ], [ -122.43365765098109, 37.806443517879387 ], [ -122.433683838827505, 37.806452015684521 ], [ -122.433745952233608, 37.806444129983937 ], [ -122.433754245996482, 37.806430259725488 ], [ -122.43378045172912, 37.806439443943233 ], [ -122.433842565114432, 37.806431558191733 ], [ -122.433850858857866, 37.806417687926462 ], [ -122.433877064598036, 37.806426872122742 ], [ -122.433932274491454, 37.806419786251801 ], [ -122.433954393037553, 37.806405002549944 ], [ -122.433958408377592, 37.806426224974288 ], [ -122.43399121327684, 37.806422940114579 ], [ -122.433989124957407, 37.806409239815579 ], [ -122.433988785204093, 37.806396197569725 ], [ -122.433991530954188, 37.80636868345389 ], [ -122.433981985185667, 37.806334503629429 ], [ -122.433942822534163, 37.806226642930824 ], [ -122.433950330141514, 37.806182569274938 ], [ -122.433940283395017, 37.806129169298679 ], [ -122.433873424076822, 37.805821925113698 ], [ -122.433853509955952, 37.80572198947479 ], [ -122.433844483207295, 37.805707716218421 ], [ -122.433823004146618, 37.805680599328511 ], [ -122.433808821860836, 37.805667784061214 ], [ -122.433796405313814, 37.805656313293774 ], [ -122.433780528829729, 37.805644899532474 ], [ -122.433766418068998, 37.805634829721896 ], [ -122.43374886455932, 37.805625503361618 ], [ -122.433731328933206, 37.805616863432853 ], [ -122.433713811190202, 37.805608909935621 ], [ -122.433675422356743, 37.805597178553839 ], [ -122.433656263344702, 37.805592685320363 ], [ -122.433637140790879, 37.805589565215314 ], [ -122.433616323330028, 37.805587846350818 ], [ -122.43359552375523, 37.805586814191379 ], [ -122.433576472363242, 37.805586439544221 ], [ -122.433535016220674, 37.805589866131839 ], [ -122.433516072105618, 37.805593610629053 ], [ -122.433498858293476, 37.805597326206154 ], [ -122.432719648836795, 37.805721348282255 ], [ -122.432704236424613, 37.805727781678655 ], [ -122.432688842557212, 37.805734900946824 ], [ -122.432673484086777, 37.805743393361759 ], [ -122.432659891674504, 37.805753230287664 ], [ -122.432648029581884, 37.805763038856455 ], [ -122.432637933547895, 37.805774191937303 ], [ -122.432627855379891, 37.805786031451547 ], [ -122.432619525401748, 37.805798529044132 ], [ -122.432612943621251, 37.805811684990026 ], [ -122.432606379692928, 37.805825526820627 ], [ -122.432603276080599, 37.805839312496055 ], [ -122.432600137407348, 37.805851724742368 ], [ -122.432500317433352, 37.805940575058216 ], [ -122.432391913920043, 37.805965699763121 ], [ -122.432397426855275, 37.805977970519415 ], [ -122.432516390332239, 37.805959539768239 ], [ -122.432628376560629, 37.805872550799698 ], [ -122.432642540805432, 37.805884679499613 ], [ -122.432527165744716, 37.805974471194816 ], [ -122.432403189584164, 37.805999851361079 ], [ -122.43238951051228, 37.806072868560939 ], [ -122.432404443045669, 37.806114514237365 ], [ -122.432490452847844, 37.806359639916195 ], [ -122.43244910342851, 37.806367184726966 ], [ -122.432520431119073, 37.806580274784345 ], [ -122.432498061398036, 37.806585448423995 ], [ -122.432424985907915, 37.806371700265615 ], [ -122.432400868391511, 37.806376216073893 ], [ -122.432301460176419, 37.806081865240721 ], [ -122.43236869294482, 37.806071149476409 ], [ -122.432380802509087, 37.806004338539104 ], [ -122.43235326017701, 37.806010283635004 ], [ -122.432347175872593, 37.805976047248159 ], [ -122.432319651407369, 37.805982678495994 ], [ -122.432302633632929, 37.805993944955773 ], [ -122.432282173360747, 37.806005686719168 ], [ -122.432280461289963, 37.806006669320666 ], [ -122.432265120589491, 37.806015848390899 ], [ -122.432249654811855, 37.806020221869829 ], [ -122.432227231644546, 37.806023336155739 ], [ -122.432194784491401, 37.806040349205666 ], [ -122.432179693529363, 37.806059138076137 ], [ -122.432171560304809, 37.806079186408191 ], [ -122.432165157068255, 37.806099206671476 ], [ -122.432169117939694, 37.806118369860684 ], [ -122.432192469776069, 37.806150950175152 ], [ -122.432209844223067, 37.806153412703416 ], [ -122.432227007583123, 37.806214250207013 ], [ -122.432213468614208, 37.806226146108848 ], [ -122.432203354593938, 37.806236612991817 ], [ -122.432202178080502, 37.806257920803567 ], [ -122.43220649593593, 37.806290812956746 ], [ -122.432221571326565, 37.806337949854225 ], [ -122.432306430556167, 37.806804907302421 ], [ -122.432383452345448, 37.807103744994606 ], [ -122.432564682589728, 37.808479722911237 ], [ -122.432615131844727, 37.808489197136744 ], [ -122.432610261989339, 37.808501638018015 ], [ -122.432598381927761, 37.808510760137189 ], [ -122.432584628175405, 37.80851441914389 ], [ -122.432342320320956, 37.808516329227118 ], [ -122.432078432185492, 37.807223425689031 ], [ -122.431999351719028, 37.807178023752513 ], [ -122.431443837686672, 37.8072509882197 ], [ -122.431386630568454, 37.807314417209206 ], [ -122.431727121174518, 37.8090235974717 ], [ -122.431341938476805, 37.809056687748011 ], [ -122.430994999022246, 37.807365467556572 ], [ -122.430915919059899, 37.807320064620313 ], [ -122.430360402907354, 37.807393024257635 ], [ -122.430303194747026, 37.8074564524454 ], [ -122.43062118366457, 37.809166690185819 ], [ -122.430108306409053, 37.8092156017048 ], [ -122.429835000067499, 37.807825332620489 ], [ -122.429264030219372, 37.807903346686288 ], [ -122.429270969868725, 37.807970532619663 ], [ -122.428236680346103, 37.808405663457563 ], [ -122.427001622006514, 37.808109268493716 ], [ -122.426995537909036, 37.808141644021028 ], [ -122.427545144293163, 37.808640840008444 ], [ -122.428014153033857, 37.808569308327186 ], [ -122.428043639051282, 37.808704798333089 ], [ -122.427533242566099, 37.808782500069931 ], [ -122.427523467767188, 37.808739396087624 ], [ -122.427301030953672, 37.808773247159571 ], [ -122.427287243070779, 37.808708920235645 ], [ -122.427490716316399, 37.808678126013014 ], [ -122.426909232318224, 37.808151294840016 ], [ -122.426839001555635, 37.808113298884024 ], [ -122.426613230594512, 37.808152010516238 ], [ -122.426560904719622, 37.807943556174827 ], [ -122.426488519796493, 37.807651861239542 ], [ -122.426357658303132, 37.807388412718332 ], [ -122.426257507799036, 37.807185417079722 ], [ -122.426066893674061, 37.80699787612533 ], [ -122.4257796482039, 37.806715259689653 ], [ -122.425627533230582, 37.806456787332273 ], [ -122.425531817297653, 37.806150610629167 ], [ -122.425487611207828, 37.806009959663712 ], [ -122.425486832357592, 37.806006120121552 ], [ -122.425298563577385, 37.80507790289635 ], [ -122.425204919000421, 37.804616199985951 ], [ -122.425109521046082, 37.804145845932808 ], [ -122.424918804152185, 37.803205508171892 ], [ -122.424808684502352, 37.802662664019884 ], [ -122.424731259133807, 37.802280983275736 ], [ -122.424731635083759, 37.802281009278651 ], [ -122.424538324517613, 37.801303719934985 ], [ -122.424517597070277, 37.801201189595353 ], [ -122.424358667137113, 37.800415027771606 ], [ -122.424242907462499, 37.799842398528341 ], [ -122.42417056511286, 37.799484537126212 ], [ -122.42417056430692, 37.799484532744323 ], [ -122.423982145098208, 37.798552453684835 ], [ -122.423982396975646, 37.798552421556877 ], [ -122.423793785438747, 37.7976164776058 ], [ -122.423792964234153, 37.797616581376253 ], [ -122.423601296960271, 37.796691058659476 ], [ -122.42360129621845, 37.796691056748735 ], [ -122.423601876988513, 37.796690945913937 ], [ -122.423601877370103, 37.796690947281171 ], [ -122.425249874473522, 37.79648130315109 ], [ -122.426892728667355, 37.796272251947869 ], [ -122.428537813517494, 37.796062892623418 ], [ -122.430182832162615, 37.795853517593606 ], [ -122.431827832563371, 37.79564412085616 ], [ -122.433469062960725, 37.795435179810816 ], [ -122.435113289920963, 37.795225833115033 ], [ -122.436760975027326, 37.795016021968365 ], [ -122.438402484723895, 37.794806973138577 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":7,"ZIP_CODE":94133,"ID":94133},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.418530631419571, 37.804999043218864 ], [ -122.418718265666911, 37.805931520041717 ], [ -122.418781807492508, 37.806241018338142 ], [ -122.418781854642702, 37.806241248585302 ], [ -122.418856183917853, 37.806607498073362 ], [ -122.418908043871269, 37.806863030947284 ], [ -122.419086067910683, 37.807803117635643 ], [ -122.419223966222532, 37.808453096037454 ], [ -122.419103158585543, 37.808467422639801 ], [ -122.419122467317635, 37.808544708340989 ], [ -122.418980965776527, 37.808562118993599 ], [ -122.418965099874526, 37.808484090255142 ], [ -122.417886530686005, 37.80861494396968 ], [ -122.417923033396889, 37.808821741173873 ], [ -122.417843612318336, 37.80882989992265 ], [ -122.417811191268285, 37.808647071958433 ], [ -122.417726330574766, 37.808645704666795 ], [ -122.417731886802656, 37.808592736810425 ], [ -122.417624531730937, 37.808591735208473 ], [ -122.417601699719071, 37.808579058949235 ], [ -122.41748929463067, 37.808583633129054 ], [ -122.417485092698755, 37.808420948020817 ], [ -122.417586902421718, 37.808408305143338 ], [ -122.417575917233663, 37.808385134844094 ], [ -122.417669145522396, 37.808375378317514 ], [ -122.41765313920358, 37.808291858459306 ], [ -122.41737529132557, 37.808325217992042 ], [ -122.417344584298249, 37.808141675039998 ], [ -122.416347061956941, 37.808260209523006 ], [ -122.416354024690548, 37.808328768820694 ], [ -122.416305697821443, 37.808334361125667 ], [ -122.416338782629509, 37.80847597548388 ], [ -122.41718410046191, 37.808496573566089 ], [ -122.417183326975007, 37.808533669258267 ], [ -122.416327431803367, 37.808505689336052 ], [ -122.416281962820022, 37.808487886292838 ], [ -122.416150789583881, 37.80850306555427 ], [ -122.416144807019506, 37.808539558863203 ], [ -122.416207242955323, 37.808544038257011 ], [ -122.416187547333237, 37.808854071166344 ], [ -122.41742892570683, 37.808927290365972 ], [ -122.417412600540189, 37.80916653558441 ], [ -122.418193962887401, 37.809680962781762 ], [ -122.41929170565983, 37.810403664792204 ], [ -122.41931534577914, 37.810380618458765 ], [ -122.419422885954745, 37.810454266609824 ], [ -122.419833484960733, 37.810735462513406 ], [ -122.419807989843818, 37.810753732347422 ], [ -122.420595101766708, 37.811266948659416 ], [ -122.420353825913267, 37.811509857466909 ], [ -122.420001661760068, 37.81128073132367 ], [ -122.419845148459302, 37.811320361929653 ], [ -122.419951835473171, 37.811563099184333 ], [ -122.419915762044113, 37.811573987538154 ], [ -122.419724362099529, 37.811134852199615 ], [ -122.41972295750638, 37.81113418613959 ], [ -122.419216088646508, 37.810893843097361 ], [ -122.419185739151644, 37.810925239548666 ], [ -122.419097184597589, 37.810915006165231 ], [ -122.418987802638568, 37.810835752698928 ], [ -122.418935347953351, 37.810882616404598 ], [ -122.419125945102621, 37.811023040645175 ], [ -122.419048154317267, 37.811094352280243 ], [ -122.419465867632354, 37.811381473037407 ], [ -122.419350858543552, 37.811486353332427 ], [ -122.418846744437559, 37.811473267417028 ], [ -122.416831664498375, 37.810133272229294 ], [ -122.415352404138332, 37.809160867759147 ], [ -122.415205531523597, 37.809171493557926 ], [ -122.415205867990196, 37.809184535850846 ], [ -122.415200978155667, 37.80919628956385 ], [ -122.415187329670815, 37.809204065160294 ], [ -122.415151663626474, 37.809230739831797 ], [ -122.415171052667063, 37.809244159741915 ], [ -122.415194871121983, 37.809227978313764 ], [ -122.415413019588954, 37.809363153673537 ], [ -122.415370856947149, 37.809406415569271 ], [ -122.415142166917732, 37.809265230241984 ], [ -122.415155744585249, 37.809254708904987 ], [ -122.415139781310558, 37.809239860465802 ], [ -122.415039713249854, 37.809185860695372 ], [ -122.41488880052961, 37.80924118848273 ], [ -122.414968316086458, 37.80930376277346 ], [ -122.414992913705149, 37.809317784591791 ], [ -122.415006420575594, 37.809304517526144 ], [ -122.415222785388849, 37.809437662297633 ], [ -122.415180622939999, 37.809480924119129 ], [ -122.41496425806919, 37.809347778996823 ], [ -122.414981136896941, 37.8093310235652 ], [ -122.41495316698277, 37.809320490118694 ], [ -122.414845930117963, 37.809256992445782 ], [ -122.414780776445994, 37.809281398852669 ], [ -122.414774461081151, 37.809372149219335 ], [ -122.415340036749569, 37.80975508488244 ], [ -122.415288518799699, 37.809838328383556 ], [ -122.41456302792659, 37.80956443044294 ], [ -122.414023978762671, 37.809471544827012 ], [ -122.413420668373689, 37.809236173514122 ], [ -122.41337430449579, 37.809317959368158 ], [ -122.413395600212141, 37.809338215320878 ], [ -122.413411510435665, 37.809351004954635 ], [ -122.413425672211702, 37.809363136228626 ], [ -122.413441564407123, 37.809375239427176 ], [ -122.413455726199771, 37.809387370972054 ], [ -122.413471618398191, 37.809399473891929 ], [ -122.413487492569899, 37.80941089065314 ], [ -122.413505097854454, 37.809422279326348 ], [ -122.413520972382244, 37.809433696077356 ], [ -122.413538559637843, 37.80944439831444 ], [ -122.413554416481929, 37.809455128624236 ], [ -122.413572003401356, 37.809465830861896 ], [ -122.413607142559428, 37.809485862444731 ], [ -122.413624694804525, 37.809495192064489 ], [ -122.414282035042135, 37.809946003161961 ], [ -122.414200903764723, 37.81002217256772 ], [ -122.414027337823839, 37.810138985552911 ], [ -122.413780738047123, 37.809907441000853 ], [ -122.413857049972947, 37.809845771015681 ], [ -122.412616832608151, 37.809078904365926 ], [ -122.412498775807535, 37.80906571088461 ], [ -122.412398060995869, 37.809120908451149 ], [ -122.412400109349747, 37.809133236262518 ], [ -122.412396967167027, 37.809145648237823 ], [ -122.412390346141294, 37.809157430172931 ], [ -122.412380210884578, 37.809167208369729 ], [ -122.412426492762847, 37.809216588736774 ], [ -122.412450629760414, 37.809212763732177 ], [ -122.41262839277087, 37.809393236325491 ], [ -122.412573868329858, 37.809427083257212 ], [ -122.412396105370902, 37.809246610582868 ], [ -122.412412861666652, 37.809225050449037 ], [ -122.412356250722411, 37.809177897728922 ], [ -122.41234073008107, 37.809180209833173 ], [ -122.412323390603305, 37.809179117259049 ], [ -122.412307675451856, 37.809173878278465 ], [ -122.412099340782589, 37.809285071655154 ], [ -122.412099676704088, 37.809298113956672 ], [ -122.412096516784118, 37.809309839486673 ], [ -122.412089895696084, 37.809321621404543 ], [ -122.412078012629308, 37.8093307411864 ], [ -122.412124294062423, 37.809380121676121 ], [ -122.412148413801376, 37.809375610565525 ], [ -122.412315935400727, 37.809561743172587 ], [ -122.412252793608843, 37.809597103119742 ], [ -122.412093889154491, 37.809409457275514 ], [ -122.41211066290181, 37.809388583353197 ], [ -122.412057512853792, 37.809341374382768 ], [ -122.412040244067796, 37.809343027789311 ], [ -122.412024634631933, 37.809341907398313 ], [ -122.412008919813204, 37.809336668372488 ], [ -122.411894272206808, 37.809388657747697 ], [ -122.412861765933144, 37.810522545447967 ], [ -122.412718336607824, 37.810599724430624 ], [ -122.412705816724809, 37.810584132828346 ], [ -122.411509089676429, 37.81123738012537 ], [ -122.41148957739901, 37.811219154555417 ], [ -122.412686215557258, 37.810562475550952 ], [ -122.411452462026304, 37.809105334882879 ], [ -122.411423380532113, 37.809118854220145 ], [ -122.411248622782082, 37.808920476073887 ], [ -122.411085557936261, 37.808907323817536 ], [ -122.411283571142818, 37.809134854169606 ], [ -122.411256255700124, 37.809149718017444 ], [ -122.411031438641331, 37.808889659210472 ], [ -122.410955336187001, 37.808892265747417 ], [ -122.410765573350616, 37.808850703243849 ], [ -122.410736033164511, 37.808846374759867 ], [ -122.410731512966407, 37.808872543480319 ], [ -122.410649866328171, 37.808861505447226 ], [ -122.410652655797975, 37.808835364493682 ], [ -122.410546641899074, 37.808819227353638 ], [ -122.410441958004114, 37.809325664485378 ], [ -122.410406413493931, 37.809289843904054 ], [ -122.410401787512413, 37.809311893981061 ], [ -122.410630331289113, 37.809716792194763 ], [ -122.410709259423612, 37.809689418065965 ], [ -122.410633083668301, 37.809554681184579 ], [ -122.41064851611452, 37.809548937394226 ], [ -122.410729547478269, 37.809670547859675 ], [ -122.410757004560026, 37.809661175631867 ], [ -122.410712947997226, 37.809563688219221 ], [ -122.410728380093076, 37.809557944424022 ], [ -122.410791312651469, 37.80964894551029 ], [ -122.410822177556227, 37.809637457886339 ], [ -122.410778085579025, 37.80953859734884 ], [ -122.410793518010678, 37.809532853539501 ], [ -122.410858216047515, 37.809625199709956 ], [ -122.410889098254941, 37.809614398511123 ], [ -122.410843240792332, 37.809514193154044 ], [ -122.410858672867818, 37.809508449341749 ], [ -122.410923406302985, 37.809602168351013 ], [ -122.410950845665482, 37.809592109640889 ], [ -122.410904952795121, 37.809490531433248 ], [ -122.410920384860916, 37.809484787612853 ], [ -122.410985153693048, 37.809579879462774 ], [ -122.411024617975485, 37.809566192280315 ], [ -122.410978689334627, 37.809463241232329 ], [ -122.410994104065225, 37.809456810959603 ], [ -122.411058925978935, 37.809553962080649 ], [ -122.411089808473605, 37.809543160823544 ], [ -122.411042113998747, 37.809438864964896 ], [ -122.411057546043196, 37.809433121126496 ], [ -122.411195348876859, 37.80967536169041 ], [ -122.41117818636998, 37.809681133587063 ], [ -122.411116453591873, 37.809569511282646 ], [ -122.41104955067469, 37.80959325722408 ], [ -122.41111476155065, 37.809705510201134 ], [ -122.411097598684464, 37.809711282091641 ], [ -122.411034100233891, 37.80959831463543 ], [ -122.410977509113948, 37.809619146556997 ], [ -122.411041007143098, 37.809732113774253 ], [ -122.411025592359422, 37.809738544052792 ], [ -122.410960346257056, 37.809624918427609 ], [ -122.410907162593759, 37.809643635209717 ], [ -122.410972426300958, 37.809757947300923 ], [ -122.410956993836351, 37.80976369113344 ], [ -122.410891730147881, 37.809649379033807 ], [ -122.410835138249837, 37.809670210623501 ], [ -122.410900419538606, 37.809785209191027 ], [ -122.410884987408849, 37.809790953008481 ], [ -122.410819706138938, 37.809675954432528 ], [ -122.410764809648242, 37.809695385622547 ], [ -122.410830108511632, 37.809811070390921 ], [ -122.41081467602497, 37.809816814204737 ], [ -122.410747646757216, 37.80970115746215 ], [ -122.410639354408318, 37.809731067210933 ], [ -122.410896947885561, 37.810188372007936 ], [ -122.410975841429376, 37.810159624823598 ], [ -122.410901536485113, 37.810030351311333 ], [ -122.410916969009435, 37.810024607486383 ], [ -122.410997965998874, 37.810144845157168 ], [ -122.41103912533255, 37.810129757339681 ], [ -122.410977003992286, 37.810003033077805 ], [ -122.410992436505126, 37.809997289242951 ], [ -122.411075146003029, 37.810116812392209 ], [ -122.411112880121649, 37.810103153220581 ], [ -122.411050758345823, 37.809976429551675 ], [ -122.411066208857108, 37.809971371863952 ], [ -122.411147188358683, 37.810090922996501 ], [ -122.411190078057032, 37.810075806811575 ], [ -122.411127956511336, 37.809949082902484 ], [ -122.411143389001253, 37.809943339047805 ], [ -122.411224368596535, 37.81006289012803 ], [ -122.411256964037719, 37.810051374350031 ], [ -122.411194842059288, 37.809924650755768 ], [ -122.41121027488505, 37.809918906886708 ], [ -122.4112929849924, 37.810038429879377 ], [ -122.411332431435511, 37.81002405588923 ], [ -122.411270309344076, 37.809897332059471 ], [ -122.411285742158299, 37.809891588180513 ], [ -122.411366721926342, 37.810011139164168 ], [ -122.411401047752832, 37.809999595302976 ], [ -122.411337195490745, 37.809872899820583 ], [ -122.411354358375661, 37.809867127895387 ], [ -122.411435338227506, 37.809986678832487 ], [ -122.411471359105562, 37.809973733758071 ], [ -122.411409237165202, 37.809847009994684 ], [ -122.411424669612117, 37.809841266103092 ], [ -122.41150566722375, 37.80996150342942 ], [ -122.411546826352634, 37.809946415434261 ], [ -122.411484704299241, 37.809819691435401 ], [ -122.411500136734659, 37.809813947533918 ], [ -122.411582846845619, 37.809933470331323 ], [ -122.4116188680253, 37.809920525480692 ], [ -122.411556745877689, 37.809793801793724 ], [ -122.411572177956074, 37.809788057888397 ], [ -122.411653176094603, 37.809908295109032 ], [ -122.4116909096619, 37.809894636032141 ], [ -122.411628787405917, 37.809767912107915 ], [ -122.411644219819436, 37.809762168187518 ], [ -122.411725217707357, 37.809882405639449 ], [ -122.411759525734439, 37.809870174962185 ], [ -122.411697403388885, 37.809743451348098 ], [ -122.411712835792031, 37.809737707418712 ], [ -122.411881278427131, 37.810026834486933 ], [ -122.41186411554628, 37.81003260648864 ], [ -122.411782586611622, 37.809891776308959 ], [ -122.411719126796399, 37.80991478009306 ], [ -122.411802385721074, 37.810055582271964 ], [ -122.411785222827419, 37.810061354262146 ], [ -122.411703694356945, 37.809920524023092 ], [ -122.411645389734517, 37.809942070760108 ], [ -122.411726900787329, 37.810082214596392 ], [ -122.411711467967621, 37.810087958532876 ], [ -122.411628227200978, 37.809947842721932 ], [ -122.41156305384375, 37.809971560917056 ], [ -122.411644564773539, 37.810111704809465 ], [ -122.411629131941311, 37.810117448735141 ], [ -122.411547621726527, 37.809977304820983 ], [ -122.411485874174801, 37.809999594002001 ], [ -122.411567384297499, 37.810139737958238 ], [ -122.411551952145643, 37.810145481862563 ], [ -122.411470441699677, 37.81000533790143 ], [ -122.411408676427612, 37.810026940604999 ], [ -122.411490204455376, 37.81016777104513 ], [ -122.41147477194562, 37.81017351494495 ], [ -122.411393243940836, 37.810032684494281 ], [ -122.411328070780158, 37.81005640255357 ], [ -122.41140959834128, 37.810197233054254 ], [ -122.411394148491496, 37.81020229050096 ], [ -122.41131090784944, 37.810062174474744 ], [ -122.411249177828495, 37.810085149968437 ], [ -122.411330687944414, 37.810225294080347 ], [ -122.4113152554104, 37.810231037959227 ], [ -122.411232014885002, 37.810090921878086 ], [ -122.411175405434363, 37.810111067735896 ], [ -122.411256933104966, 37.81025189806045 ], [ -122.411241500559697, 37.810257641929645 ], [ -122.411159972912074, 37.810116811594561 ], [ -122.411103380733024, 37.810137643311123 ], [ -122.411184890977466, 37.810277787516789 ], [ -122.411169458075165, 37.810283531382133 ], [ -122.411087948545713, 37.810143387154753 ], [ -122.411017619235537, 37.810168562307894 ], [ -122.411099128998927, 37.810308706303054 ], [ -122.411083696429642, 37.810314450151544 ], [ -122.411004005467134, 37.81017771001823 ], [ -122.410905971459442, 37.810202646996828 ], [ -122.411216101543474, 37.810750434096292 ], [ -122.411307020324173, 37.810718058221234 ], [ -122.411214614556201, 37.8105581756828 ], [ -122.411231794935318, 37.81055309021869 ], [ -122.411325542368957, 37.810697843090367 ], [ -122.411366719609191, 37.810683441322411 ], [ -122.411291830600106, 37.810531515646439 ], [ -122.411307262852333, 37.810525771776568 ], [ -122.411402864908169, 37.810675301597549 ], [ -122.411522935608915, 37.810632152260467 ], [ -122.411446209498621, 37.810476136111049 ], [ -122.411461659747943, 37.810471078652185 ], [ -122.411555407533228, 37.810615831617966 ], [ -122.41160859172949, 37.810597114547022 ], [ -122.411624041992908, 37.810592057067005 ], [ -122.411677226161913, 37.810573340239586 ], [ -122.411600605842565, 37.810421442809904 ], [ -122.411617768833821, 37.810415670846979 ], [ -122.411711534523249, 37.810561109852458 ], [ -122.411738974133357, 37.810551050960818 ], [ -122.411686385419046, 37.810391210096554 ], [ -122.411701817957677, 37.810385466169308 ], [ -122.411764700631707, 37.810541706828857 ], [ -122.411829892102887, 37.810518674961713 ], [ -122.41176529620391, 37.810363148827776 ], [ -122.411780746061879, 37.81035809133261 ], [ -122.411847054752684, 37.810512902971148 ], [ -122.411915671345156, 37.810488441813206 ], [ -122.411840781416544, 37.810336516754752 ], [ -122.411856213585779, 37.81033077281284 ], [ -122.411935941632692, 37.810468884965481 ], [ -122.411921351800245, 37.810305681309181 ], [ -122.411938638145514, 37.810304714362765 ], [ -122.411953405498025, 37.81047478237366 ], [ -122.412071780474818, 37.810433033401743 ], [ -122.412010591984938, 37.810275392256564 ], [ -122.412115642263785, 37.810455670909619 ], [ -122.412100192408317, 37.810460728448561 ], [ -122.412084406280471, 37.810452743692409 ], [ -122.41176878056207, 37.810565675738737 ], [ -122.41175334799118, 37.810571419674538 ], [ -122.411684748938015, 37.810596566899896 ], [ -122.411669298331702, 37.810601624393506 ], [ -122.411598969130708, 37.810626799885483 ], [ -122.411583536533968, 37.810632543799024 ], [ -122.411518344886403, 37.810655575529537 ], [ -122.411502912623547, 37.810661319426885 ], [ -122.411432582949345, 37.810686494275835 ], [ -122.411417150327338, 37.81069223816754 ], [ -122.411223323763636, 37.810761991358582 ], [ -122.41132311146211, 37.810939609065692 ], [ -122.411244573940635, 37.811116682909216 ], [ -122.410949479920689, 37.811220352571489 ], [ -122.410930216342933, 37.811279036146971 ], [ -122.410681455051716, 37.81136684679597 ], [ -122.410613578346386, 37.811352838185535 ], [ -122.410419696661208, 37.811420531005773 ], [ -122.410148367227194, 37.811505958616635 ], [ -122.408511879957302, 37.811283856992631 ], [ -122.407577358643394, 37.808803424612513 ], [ -122.407596251976869, 37.808797625245276 ], [ -122.408535735474004, 37.811269050069917 ], [ -122.410153064417187, 37.811486654300801 ], [ -122.41040703579597, 37.811399447392162 ], [ -122.410397994853795, 37.811384485925792 ], [ -122.410199185064457, 37.81132796106332 ], [ -122.410033026138677, 37.811396577420801 ], [ -122.410028523199003, 37.811423432538689 ], [ -122.408569038736545, 37.811217693403208 ], [ -122.408604939400348, 37.811065346992223 ], [ -122.408622314546491, 37.811067812437848 ], [ -122.408601547208733, 37.811202746444437 ], [ -122.408639776140404, 37.811208308039326 ], [ -122.408681379486623, 37.811075784005041 ], [ -122.408700502750108, 37.811078908147074 ], [ -122.408681466003685, 37.811213813888727 ], [ -122.408723173522517, 37.811220006160561 ], [ -122.408763046269982, 37.811087510102226 ], [ -122.408782169539933, 37.811090634230986 ], [ -122.40876313259281, 37.811225539991135 ], [ -122.408803092361268, 37.811231073796982 ], [ -122.408842964625947, 37.811098577717516 ], [ -122.408862088248199, 37.811101701827724 ], [ -122.408843051796623, 37.811236607869454 ], [ -122.408881280424794, 37.811242169666208 ], [ -122.408921153248102, 37.811109673549396 ], [ -122.408942006980325, 37.811112769370261 ], [ -122.408921240203938, 37.811247703157434 ], [ -122.408964677875915, 37.811253867342053 ], [ -122.409004568208587, 37.811122057634492 ], [ -122.409025404309773, 37.811124467552588 ], [ -122.409006385440833, 37.811260059513721 ], [ -122.409042866672721, 37.811264962818356 ], [ -122.409082738873835, 37.811132466653085 ], [ -122.409101862168811, 37.811135590729982 ], [ -122.409082825791046, 37.81127049654058 ], [ -122.409126264189027, 37.81127666092906 ], [ -122.409166136247578, 37.811144164735886 ], [ -122.409185259542042, 37.811147288524687 ], [ -122.409166223312823, 37.811282194348451 ], [ -122.409211409832309, 37.811289016857089 ], [ -122.409251281745554, 37.811156520635443 ], [ -122.40927213551177, 37.811159616672512 ], [ -122.40925136932222, 37.811294550516585 ], [ -122.409279162626277, 37.81129822094033 ], [ -122.40932078253644, 37.811166383119904 ], [ -122.409339888202226, 37.811168820995697 ], [ -122.409320870242325, 37.811304413000762 ], [ -122.409364308333835, 37.811310577307111 ], [ -122.409405910098016, 37.811178053025465 ], [ -122.409425033757373, 37.811181176769772 ], [ -122.409405998308287, 37.811316082900326 ], [ -122.40944074878638, 37.811321014101964 ], [ -122.40948063795679, 37.811189203966087 ], [ -122.409501474085218, 37.811191613525516 ], [ -122.409480725959895, 37.811327233846249 ], [ -122.409527624648632, 37.811333341792235 ], [ -122.409567496367472, 37.811200845459226 ], [ -122.409588350159311, 37.811203941440354 ], [ -122.40956758453207, 37.81133887533899 ], [ -122.409607544075371, 37.811344408877801 ], [ -122.409647432976385, 37.811212599235269 ], [ -122.409666538650669, 37.811215036508962 ], [ -122.4096475212896, 37.811350629114692 ], [ -122.409687480492039, 37.811356162357413 ], [ -122.409729082397121, 37.811223637951706 ], [ -122.409748205742758, 37.811226761923784 ], [ -122.40972917051603, 37.811361667836366 ], [ -122.40976739996718, 37.811367229334621 ], [ -122.409807270930216, 37.811234732926998 ], [ -122.409826394289098, 37.811237857160975 ], [ -122.409807359540622, 37.811372762805725 ], [ -122.409849067242604, 37.811378954679277 ], [ -122.409888938066231, 37.811246458244362 ], [ -122.409909791884289, 37.81124955416864 ], [ -122.409890757298484, 37.811384460375677 ], [ -122.409934195469972, 37.811390623922954 ], [ -122.409972335687982, 37.811258155482349 ], [ -122.409991388408557, 37.811258533667043 ], [ -122.410051001542016, 37.811355083215751 ], [ -122.410080225111116, 37.811347055723829 ], [ -122.410039452733983, 37.811242647397464 ], [ -122.410060076955276, 37.811236819614464 ], [ -122.410111355764599, 37.81134586484395 ], [ -122.410186754248173, 37.811315801374953 ], [ -122.410002034752523, 37.810999466686859 ], [ -122.410015948336749, 37.810934689402742 ], [ -122.410036236914948, 37.810915819594705 ], [ -122.410045418985376, 37.810868973454134 ], [ -122.40995683043738, 37.810857360334786 ], [ -122.409929090780366, 37.810990347084882 ], [ -122.409911715601922, 37.810987881557118 ], [ -122.409936471227283, 37.810873484930354 ], [ -122.409873927744698, 37.810864883322409 ], [ -122.409849172039969, 37.810979280485419 ], [ -122.409831796859692, 37.810976814671307 ], [ -122.409859730943055, 37.810851378751366 ], [ -122.409793708942289, 37.810842147255194 ], [ -122.409767522509881, 37.810968241308018 ], [ -122.409751878141279, 37.810965747731309 ], [ -122.409778063900148, 37.81083965341854 ], [ -122.409713790367476, 37.810831080014538 ], [ -122.409685856045158, 37.810956515900401 ], [ -122.409668480889763, 37.810954050611365 ], [ -122.409696415233427, 37.810828614454991 ], [ -122.40963387182353, 37.810820012994292 ], [ -122.409609415933446, 37.810946079263672 ], [ -122.409592040775962, 37.810943613688799 ], [ -122.409616496701801, 37.810817547697539 ], [ -122.409552222853762, 37.810808973936524 ], [ -122.409527766835737, 37.810935040463818 ], [ -122.4095103913304, 37.810932574607932 ], [ -122.409534847384165, 37.81080650835878 ], [ -122.409470556252117, 37.810797248385086 ], [ -122.4094443696399, 37.810923342636215 ], [ -122.409426994147125, 37.810920877042648 ], [ -122.409453181134111, 37.810794782789721 ], [ -122.40938717688249, 37.810786237228463 ], [ -122.409360972477401, 37.810911645024227 ], [ -122.409343596990126, 37.810909179418339 ], [ -122.409371532226004, 37.810783743881395 ], [ -122.409307258435504, 37.810775169986833 ], [ -122.409279323454484, 37.810900606052307 ], [ -122.409261948311553, 37.810898140154237 ], [ -122.409289883328043, 37.810772704367388 ], [ -122.409222130673314, 37.810763500569543 ], [ -122.409194195884822, 37.810888936060401 ], [ -122.409178551206097, 37.810886442413199 ], [ -122.409204755910437, 37.810761034657382 ], [ -122.409142194961319, 37.810751746498703 ], [ -122.409114277009948, 37.810877868693844 ], [ -122.409096902238019, 37.810875403314995 ], [ -122.409124837171674, 37.81074996729771 ], [ -122.409062293894237, 37.810741365533815 ], [ -122.409034358851102, 37.810866801261916 ], [ -122.409016983385186, 37.810864335607896 ], [ -122.409044919155974, 37.810738900147257 ], [ -122.408982375890048, 37.810730298066382 ], [ -122.408954440030968, 37.81085573406159 ], [ -122.408937065255401, 37.810853268110044 ], [ -122.408965000457812, 37.810727832404666 ], [ -122.408898979017181, 37.810718600127345 ], [ -122.408871043014514, 37.810844035828495 ], [ -122.408853668258587, 37.8108415704138 ], [ -122.408881603590444, 37.810716134453337 ], [ -122.408815582170575, 37.810706902129297 ], [ -122.408787646031413, 37.810832337810972 ], [ -122.408770288923606, 37.810830558546641 ], [ -122.408798206756401, 37.810704436717558 ], [ -122.408730454910014, 37.810695232351428 ], [ -122.408702518970472, 37.810820667733054 ], [ -122.408686891971527, 37.810818860457857 ], [ -122.408713079833362, 37.810692766372398 ], [ -122.408650536651805, 37.810684164390111 ], [ -122.408622600588473, 37.810809600027646 ], [ -122.408605243143839, 37.810807820744628 ], [ -122.408633161587474, 37.810681698673903 ], [ -122.408556510134844, 37.810663024107164 ], [ -122.408588984612706, 37.810512106294745 ], [ -122.408606359289806, 37.810514572023159 ], [ -122.408587340511048, 37.810650164195629 ], [ -122.408629047705375, 37.810656356501411 ], [ -122.408668902323384, 37.810523174029143 ], [ -122.408686277704945, 37.81052564000916 ], [ -122.40866552792356, 37.81066125993452 ], [ -122.408708965930458, 37.810667424477344 ], [ -122.408748820750048, 37.810534241698186 ], [ -122.40876619543765, 37.81053670740306 ], [ -122.40874717695219, 37.810672299875314 ], [ -122.408794093155748, 37.810679094270796 ], [ -122.408833947835987, 37.810545911737734 ], [ -122.408849592085303, 37.810548405436371 ], [ -122.40883057374208, 37.810683997647232 ], [ -122.408875741869977, 37.810690133853562 ], [ -122.408915614060632, 37.81055763773044 ], [ -122.408932971115192, 37.810559417248072 ], [ -122.408913970565308, 37.81069569563472 ], [ -122.408960869161646, 37.810701804075741 ], [ -122.409000741206668, 37.810569307924148 ], [ -122.409018098597954, 37.810571086874475 ], [ -122.40899736742189, 37.810707393837795 ], [ -122.409040787124908, 37.810712871283229 ], [ -122.409080641733894, 37.810579688936649 ], [ -122.409096286337629, 37.810582182322406 ], [ -122.409077268090201, 37.810717774577761 ], [ -122.40911897536337, 37.810723966710214 ], [ -122.409158829484909, 37.81059078406853 ], [ -122.409176204199355, 37.810593249712966 ], [ -122.409157186441121, 37.810728841975312 ], [ -122.409200623829136, 37.810735006073635 ], [ -122.409240478156264, 37.81060182339904 ], [ -122.409257853229136, 37.810604289300421 ], [ -122.409238852918037, 37.810740567743849 ], [ -122.409285751569428, 37.810746676055665 ], [ -122.409325605404021, 37.810613493358183 ], [ -122.409341250023104, 37.81061598671144 ], [ -122.40932224986912, 37.810752265442567 ], [ -122.4093656699755, 37.81075774303735 ], [ -122.40940554098205, 37.810625246755905 ], [ -122.409422898749284, 37.810627025915643 ], [ -122.409403898742326, 37.810763304659638 ], [ -122.409447336517104, 37.810769468661483 ], [ -122.40948544197218, 37.810635627488516 ], [ -122.409502816715019, 37.810638093359387 ], [ -122.409485547293727, 37.810774343825763 ], [ -122.409528985434875, 37.8107805080665 ], [ -122.409565359949454, 37.810646694615322 ], [ -122.409582735382628, 37.810649160188639 ], [ -122.409567196568673, 37.810785383198734 ], [ -122.409612364812048, 37.81079151884834 ], [ -122.409648756853613, 37.810658392357979 ], [ -122.409666132285238, 37.810660857644436 ], [ -122.409648863165444, 37.8107971084087 ], [ -122.409690552872675, 37.810802613901892 ], [ -122.409730423669671, 37.810670117506156 ], [ -122.409747781109076, 37.81067189662366 ], [ -122.409728781340874, 37.810808175424455 ], [ -122.409772201856015, 37.810813652863935 ], [ -122.409810324407417, 37.810680498024219 ], [ -122.409827699517621, 37.810682963841622 ], [ -122.409810430682086, 37.810819214354417 ], [ -122.4098555989803, 37.810825350459979 ], [ -122.409895451834942, 37.810692167571958 ], [ -122.409912826590485, 37.810694632833282 ], [ -122.409895222374288, 37.810817841328777 ], [ -122.409936876790525, 37.81082197386079 ], [ -122.409973639826163, 37.810703262163521 ], [ -122.409991014940061, 37.810705727682269 ], [ -122.409959938125212, 37.81084357554878 ], [ -122.410048526318235, 37.810855188946014 ], [ -122.41005622518567, 37.810817980946432 ], [ -122.410043511556253, 37.810794838529432 ], [ -122.410054194116455, 37.810739040961913 ], [ -122.410078049482479, 37.810724233171044 ], [ -122.410094488114893, 37.810623018930904 ], [ -122.410081703845862, 37.810597130219826 ], [ -122.410092509988729, 37.810546137980772 ], [ -122.410117989755761, 37.810527183534326 ], [ -122.410136070412563, 37.810422508799753 ], [ -122.410119930917134, 37.810400795044814 ], [ -122.41012762970874, 37.810363587311961 ], [ -122.410156217048225, 37.810330848613937 ], [ -122.41017620465729, 37.81023300994017 ], [ -122.410158299784257, 37.810209951610261 ], [ -122.410179752853338, 37.810101788351538 ], [ -122.410076402542387, 37.809920107344034 ], [ -122.410041882266327, 37.809924099736733 ], [ -122.410019086454341, 37.809912794612728 ], [ -122.409979357246016, 37.809916185169463 ], [ -122.409958274206915, 37.809904165299031 ], [ -122.409922023510461, 37.809908185953802 ], [ -122.409899227375504, 37.80989688081219 ], [ -122.409856019993072, 37.80989964065347 ], [ -122.409833224216882, 37.809888335493483 ], [ -122.409796955869524, 37.80989166994722 ], [ -122.409774159751635, 37.809880364506853 ], [ -122.40973616131653, 37.809883726681605 ], [ -122.409715095991231, 37.809872393479395 ], [ -122.409673618697951, 37.809875125240453 ], [ -122.409650822957047, 37.809863820045173 ], [ -122.409611093758144, 37.809867210477904 ], [ -122.409590028449543, 37.809855876978752 ], [ -122.409552029326491, 37.809859239105428 ], [ -122.40952923395507, 37.809847933880995 ], [ -122.409489504405954, 37.809851324003851 ], [ -122.409466709046484, 37.809840018767318 ], [ -122.409426961850301, 37.809842722706414 ], [ -122.409405896576772, 37.809831389174342 ], [ -122.409362689214092, 37.809834148834945 ], [ -122.409339893540192, 37.80982284385405 ], [ -122.40930537326976, 37.809826836031277 ], [ -122.409282577599768, 37.809815530764716 ], [ -122.409239369556644, 37.809818290665945 ], [ -122.409216574238357, 37.809806985106434 ], [ -122.409183784056154, 37.809810949516532 ], [ -122.409160988755644, 37.809799644220845 ], [ -122.409117781056253, 37.80980240379737 ], [ -122.409096715848435, 37.809791070484557 ], [ -122.409062177941692, 37.809794376702477 ], [ -122.40903938231871, 37.80978307138885 ], [ -122.409001401198537, 37.80978711949534 ], [ -122.408980336012803, 37.809775786161715 ], [ -122.408940588826241, 37.809778489662385 ], [ -122.408917793572726, 37.809767184319618 ], [ -122.408872855464537, 37.809769972088361 ], [ -122.408850059531787, 37.809758666743676 ], [ -122.408812061110055, 37.80976202834627 ], [ -122.408789265535077, 37.809750722984248 ], [ -122.40874778827569, 37.809753454419798 ], [ -122.408724992367041, 37.80974214905094 ], [ -122.408688724387432, 37.809745483158423 ], [ -122.408665928836285, 37.809734177772519 ], [ -122.408627929726592, 37.809737539327024 ], [ -122.408605134533261, 37.809726233923747 ], [ -122.40856886620287, 37.809729567725441 ], [ -122.408546070674888, 37.809718262316345 ], [ -122.408502862660981, 37.80972102194783 ], [ -122.408480067491766, 37.809709716520373 ], [ -122.408442068732256, 37.809713078009395 ], [ -122.408419272882526, 37.809701772581377 ], [ -122.40838475263304, 37.809705765038423 ], [ -122.408363687557454, 37.809694431319926 ], [ -122.408318732173385, 37.809696532434543 ], [ -122.408295936693619, 37.809685226977031 ], [ -122.408254459445629, 37.809687957964584 ], [ -122.408238053815026, 37.809790545390122 ], [ -122.40821721811372, 37.809788135332319 ], [ -122.408256439046454, 37.809562942360742 ], [ -122.408275562248491, 37.809566066566916 ], [ -122.408269450984477, 37.809665053549438 ], [ -122.408286825452777, 37.809667519325309 ], [ -122.40832766898086, 37.809572777430049 ], [ -122.408321557439706, 37.809671764420713 ], [ -122.408342410750109, 37.809674860622998 ], [ -122.408383254218379, 37.809580118983206 ], [ -122.408377142750709, 37.809679105976613 ], [ -122.408394517910963, 37.809681571450852 ], [ -122.408435360963296, 37.809586829524143 ], [ -122.408429249910625, 37.809685816514552 ], [ -122.408451833660507, 37.80968888497187 ], [ -122.408492676297627, 37.809594143031056 ], [ -122.408484852889558, 37.809693844457087 ], [ -122.408503958134872, 37.809696281919784 ], [ -122.408544801055655, 37.809601539955445 ], [ -122.408536959377372, 37.809700554958617 ], [ -122.408557795064482, 37.809702964959982 ], [ -122.408598638259278, 37.809608222696959 ], [ -122.408592544731249, 37.809707896412988 ], [ -122.408615128826568, 37.809710964284278 ], [ -122.40865597161357, 37.809616222281704 ], [ -122.408639231230907, 37.809705767179551 ], [ -122.408663757193779, 37.809717044567101 ], [ -122.408704599922103, 37.80962230254778 ], [ -122.408696758454738, 37.809721317561177 ], [ -122.408722821063833, 37.809725016115578 ], [ -122.408763663375069, 37.80963027408157 ], [ -122.408757553102589, 37.809729261082566 ], [ -122.408776676029532, 37.8097323854876 ], [ -122.408817518615137, 37.809637643154893 ], [ -122.408811408067763, 37.809736630164153 ], [ -122.408839165466787, 37.809738927817939 ], [ -122.408880043284086, 37.809645558612985 ], [ -122.408873932819418, 37.809744545625371 ], [ -122.40889130733342, 37.809747011586715 ], [ -122.408932150126873, 37.809652269208989 ], [ -122.408926057042962, 37.809751942941425 ], [ -122.408946892742989, 37.809754352324887 ], [ -122.408987735476614, 37.809659610202615 ], [ -122.408979894728986, 37.80975862522854 ], [ -122.409002478177683, 37.809761693586005 ], [ -122.409043320837327, 37.809666951170023 ], [ -122.40903548016307, 37.809765966199507 ], [ -122.409052855026459, 37.809768431856902 ], [ -122.409093697286551, 37.809673689703786 ], [ -122.409085856332652, 37.809772704742095 ], [ -122.409106709703295, 37.809775800809213 ], [ -122.409147552244775, 37.809681058631973 ], [ -122.409141441787753, 37.809780045663132 ], [ -122.409162295162758, 37.809783141720409 ], [ -122.409203137637348, 37.809688399524063 ], [ -122.409195297173937, 37.809787414563765 ], [ -122.409214402473708, 37.809789852185943 ], [ -122.409255244539409, 37.809695109977277 ], [ -122.409249134570899, 37.809794097008144 ], [ -122.409268257528154, 37.809797221058851 ], [ -122.409309099536273, 37.809702479106257 ], [ -122.40930298963896, 37.809801466139774 ], [ -122.409325573445983, 37.809804533880602 ], [ -122.409366415377917, 37.809709791633715 ], [ -122.409360305556405, 37.809808778670053 ], [ -122.409379410874138, 37.809811216540062 ], [ -122.409420252741057, 37.809716474274637 ], [ -122.409412429873498, 37.809816175771125 ], [ -122.409431535526792, 37.809818613077915 ], [ -122.409472376985178, 37.809723870800191 ], [ -122.409466267649847, 37.80982285783616 ], [ -122.409488851138192, 37.809825926100473 ], [ -122.409529693219639, 37.809731183791826 ], [ -122.409521853187186, 37.809830198852438 ], [ -122.409544436665897, 37.809833266556943 ], [ -122.409585278680453, 37.809738524229203 ], [ -122.409577438721357, 37.809837539293362 ], [ -122.409600022218754, 37.809840607536366 ], [ -122.409640864166391, 37.809745865189505 ], [ -122.409624124935263, 37.809835409950374 ], [ -122.409648668402042, 37.809847373575664 ], [ -122.409694718878129, 37.809753233598798 ], [ -122.409683400550946, 37.809851618269946 ], [ -122.40970946326199, 37.809855316880828 ], [ -122.409750304385923, 37.809760574507528 ], [ -122.409744195418114, 37.809859561557211 ], [ -122.409763300747386, 37.809861998815862 ], [ -122.409800681301817, 37.809767312459051 ], [ -122.409798050568668, 37.809866929913561 ], [ -122.409813677394268, 37.809868737041889 ], [ -122.409859727674416, 37.809774597001002 ], [ -122.409848409562613, 37.809872981687576 ], [ -122.409872741508423, 37.809876708014343 ], [ -122.409896207540612, 37.809779500054304 ], [ -122.409902917913584, 37.809838449581335 ], [ -122.409927956256155, 37.809869633383848 ], [ -122.410058214833967, 37.809886065459693 ], [ -122.40978805552237, 37.809411107578008 ], [ -122.409692176324654, 37.809452490025258 ], [ -122.409753394315103, 37.809476907533615 ], [ -122.409795083288799, 37.80948241299123 ], [ -122.409790439454952, 37.809503776606206 ], [ -122.409767643810284, 37.809492471432705 ], [ -122.409733123723498, 37.809496464009918 ], [ -122.40971032808983, 37.809485158825325 ], [ -122.40967926884106, 37.809489095348837 ], [ -122.409656473217836, 37.809477790153814 ], [ -122.409630622889722, 37.80948232932171 ], [ -122.409609557687361, 37.809470995825244 ], [ -122.409573289526762, 37.809474329935902 ], [ -122.409550493924201, 37.809463024720365 ], [ -122.40952291317636, 37.809467591881273 ], [ -122.409500117230408, 37.809456286387039 ], [ -122.409465597146067, 37.809460278886 ], [ -122.409442784254765, 37.809448287206727 ], [ -122.409413473087668, 37.809452882357093 ], [ -122.409390677508952, 37.809441576836036 ], [ -122.409354409006824, 37.809444910885041 ], [ -122.409331613792688, 37.809433605621535 ], [ -122.409304033042332, 37.809438172731298 ], [ -122.409281237484791, 37.809426867189075 ], [ -122.409251926309096, 37.809431462024762 ], [ -122.40922913042256, 37.809420156752616 ], [ -122.409192844962547, 37.809422804303409 ], [ -122.409170049433754, 37.809411499014253 ], [ -122.409133798935159, 37.809415519427169 ], [ -122.409110985426068, 37.809403527969394 ], [ -122.409076465338302, 37.809407520079958 ], [ -122.409053670177968, 37.809396214762678 ], [ -122.409027819488273, 37.809400753529559 ], [ -122.409005024337446, 37.809389448202872 ], [ -122.408973965091334, 37.809393384540734 ], [ -122.408951169258785, 37.809382079214799 ], [ -122.40891837994225, 37.80938604354025 ], [ -122.408895584120444, 37.809374738203552 ], [ -122.408862794804193, 37.809378702513534 ], [ -122.408839998993102, 37.809367397166127 ], [ -122.408808940093522, 37.809371333454934 ], [ -122.408786144638981, 37.809360028091476 ], [ -122.408756815463747, 37.809363936372364 ], [ -122.4087340203655, 37.80935263099321 ], [ -122.408701230358204, 37.809356595269499 ], [ -122.408678435270645, 37.809345289879595 ], [ -122.408645645263661, 37.809349254140457 ], [ -122.408622850186802, 37.809337948739781 ], [ -122.408591790941983, 37.809341884977052 ], [ -122.408568995183444, 37.809330579577171 ], [ -122.408536205869268, 37.809334543796403 ], [ -122.408513410121444, 37.809323238385751 ], [ -122.408482351223043, 37.809327174588631 ], [ -122.408459555831755, 37.809315869161935 ], [ -122.408426766172141, 37.809319833356362 ], [ -122.408403970791582, 37.809308527918944 ], [ -122.408371181132239, 37.809312492097938 ], [ -122.408350116177374, 37.809301158650754 ], [ -122.408315578458229, 37.809304464375806 ], [ -122.408292783099327, 37.809293158916844 ], [ -122.408263471569185, 37.80929775351261 ], [ -122.408240676566351, 37.80928644803798 ], [ -122.408207886561954, 37.809290412177198 ], [ -122.408185073925949, 37.809278420254287 ], [ -122.408155762741032, 37.809283014817716 ], [ -122.408132967413039, 37.809271709327838 ], [ -122.408100177755486, 37.809275673431507 ], [ -122.408077382438208, 37.809264367930865 ], [ -122.408039154542493, 37.809258805877114 ], [ -122.408058756181504, 37.809145866471148 ], [ -122.408066594168815, 37.809248747837302 ], [ -122.408087429706811, 37.809251157647353 ], [ -122.408126507222988, 37.809155071214583 ], [ -122.408120448716886, 37.809256117235002 ], [ -122.408137823084502, 37.809258583032992 ], [ -122.408178631290198, 37.80916246830698 ], [ -122.408172554871641, 37.809262828172606 ], [ -122.408196869235468, 37.809265868402413 ], [ -122.408235946617765, 37.809169781933626 ], [ -122.408229888259399, 37.809270827959395 ], [ -122.408254202289157, 37.809273868457552 ], [ -122.408293279587355, 37.809177781420765 ], [ -122.408287221320464, 37.809278827998476 ], [ -122.408308056867014, 37.809281237494979 ], [ -122.408347134113498, 37.809185150989656 ], [ -122.408332158807269, 37.809276040458201 ], [ -122.408356702573101, 37.809288004342378 ], [ -122.408397510165557, 37.809191889546774 ], [ -122.408391452032305, 37.809292935854977 ], [ -122.408412287593251, 37.809295345607659 ], [ -122.408453095124827, 37.809199231067545 ], [ -122.408447037059574, 37.809300277103894 ], [ -122.408471350761801, 37.809303317562879 ], [ -122.408512158553279, 37.809207202447709 ], [ -122.408506100235769, 37.809308249041685 ], [ -122.408521727251397, 37.8093100560612 ], [ -122.408560804236558, 37.809213969485583 ], [ -122.408554745970605, 37.809315015532796 ], [ -122.408577329958945, 37.809318083960704 ], [ -122.408618119627377, 37.809221282377308 ], [ -122.40861206179197, 37.80932232869629 ], [ -122.408636375847209, 37.809325368841058 ], [ -122.408677182759092, 37.809229254229557 ], [ -122.408671125342451, 37.80933030027127 ], [ -122.40868850009889, 37.809332766257086 ], [ -122.408727576866028, 37.809236679077507 ], [ -122.408721501183379, 37.80933703897 ], [ -122.408740606697776, 37.80933947666351 ], [ -122.408781413482515, 37.80924336201619 ], [ -122.408775356206561, 37.809344408062977 ], [ -122.40879620945104, 37.809347504459829 ], [ -122.408837016154081, 37.809251389244281 ], [ -122.408830941310313, 37.809351749130926 ], [ -122.408848316070006, 37.809354214818633 ], [ -122.4088891230695, 37.809258100128716 ], [ -122.40888306559286, 37.80935914618636 ], [ -122.408902170426074, 37.809361583864899 ], [ -122.408942977698928, 37.809265468876312 ], [ -122.408936919955934, 37.809366515216752 ], [ -122.408959503968703, 37.809369583296906 ], [ -122.408998562767209, 37.809272810139959 ], [ -122.408992505092215, 37.809373856208545 ], [ -122.409013358354017, 37.809376952566957 ], [ -122.409054147832379, 37.809280150828236 ], [ -122.409048090239509, 37.809381197174098 ], [ -122.409070674261315, 37.809384265232971 ], [ -122.409109750575112, 37.809288178476827 ], [ -122.40910369305017, 37.809389224550813 ], [ -122.409122798597593, 37.809391662456981 ], [ -122.409161857180791, 37.809294888697217 ], [ -122.409155800079347, 37.809395935042737 ], [ -122.409180113834879, 37.809398975080981 ], [ -122.409220920775525, 37.809302860271487 ], [ -122.409214863400692, 37.809403906350916 ], [ -122.409233968955562, 37.809406344239079 ], [ -122.409273045055528, 37.809310256880117 ], [ -122.409266988111227, 37.80941130350562 ], [ -122.40929130186926, 37.809414343246381 ], [ -122.409332108667385, 37.80931822812412 ], [ -122.409326033795196, 37.809418588046228 ], [ -122.409343408940103, 37.809421053929945 ], [ -122.40938421532131, 37.809324938520824 ], [ -122.409378158527119, 37.809425985151776 ], [ -122.40939901180549, 37.809429080892826 ], [ -122.409438070062492, 37.809332307591447 ], [ -122.409432013326835, 37.809433353675857 ], [ -122.409477180743622, 37.809439489653357 ], [ -122.409529287502835, 37.809446200260403 ], [ -122.409588351243272, 37.809454171101315 ], [ -122.40962830977378, 37.809459704635067 ], [ -122.409632794735771, 37.809432163090825 ], [ -122.409672911837845, 37.809443874825128 ], [ -122.409782563727632, 37.809399522210484 ], [ -122.409759009148317, 37.809358700227392 ], [ -122.409646479104083, 37.809089266648215 ], [ -122.409583548723262, 37.809065563811615 ], [ -122.409522825494292, 37.80906036618412 ], [ -122.409518181262428, 37.809081729795679 ], [ -122.409495386134864, 37.809070424563046 ], [ -122.409466075113144, 37.809075019452258 ], [ -122.409443262001091, 37.809063028052371 ], [ -122.409410472498593, 37.80906699224586 ], [ -122.409387677045885, 37.809055686998015 ], [ -122.409356617959673, 37.80905962343688 ], [ -122.409333822524488, 37.809048318453144 ], [ -122.409299302613846, 37.809052310629191 ], [ -122.40927823759111, 37.809040977347202 ], [ -122.409247178159163, 37.809044913762847 ], [ -122.409226113153551, 37.80903358074611 ], [ -122.409193341651701, 37.809038231311064 ], [ -122.409172276649144, 37.80902689801011 ], [ -122.409141217563558, 37.809030834392281 ], [ -122.409118422162948, 37.809019529092303 ], [ -122.409083884609018, 37.809022835042484 ], [ -122.409061089219591, 37.809011529731414 ], [ -122.409026569318456, 37.809015522102243 ], [ -122.409005504354852, 37.809004189046036 ], [ -122.408972714854954, 37.80900815311788 ], [ -122.408949919486972, 37.808996847785302 ], [ -122.408918860402167, 37.809000784108946 ], [ -122.408896065051678, 37.808989479040513 ], [ -122.408865005613961, 37.808993415081005 ], [ -122.408842210612988, 37.80898210972196 ], [ -122.408807673071223, 37.808985415865877 ], [ -122.408784877735343, 37.808974110501353 ], [ -122.408753818298166, 37.808978046512571 ], [ -122.408732753379752, 37.808966713133003 ], [ -122.40870344269787, 37.808971307827179 ], [ -122.408680647389247, 37.80896000271705 ], [ -122.408653066760635, 37.80896456912587 ], [ -122.408630271454712, 37.808953263731418 ], [ -122.408595751557471, 37.808957255976196 ], [ -122.408574686669112, 37.808945922568363 ], [ -122.40853841837243, 37.808949256366759 ], [ -122.4085173534951, 37.808937922948687 ], [ -122.408484564351539, 37.808941887153871 ], [ -122.408461768739215, 37.80893058200698 ], [ -122.408432440401654, 37.808934489921761 ], [ -122.408409645138534, 37.808923184484605 ], [ -122.408375125243424, 37.808927176664845 ], [ -122.408354060404321, 37.808915843492116 ], [ -122.408319522857553, 37.808919148943978 ], [ -122.408296727616332, 37.808907843484988 ], [ -122.408265686178666, 37.808912466074247 ], [ -122.408242890954767, 37.808901160879408 ], [ -122.408208353409876, 37.808904466298728 ], [ -122.408185558190112, 37.808893160818222 ], [ -122.408154499115199, 37.808897097215251 ], [ -122.40813170390588, 37.808885791724293 ], [ -122.40810064447102, 37.808889727563603 ], [ -122.408077849618252, 37.808878422056637 ], [ -122.408048538584595, 37.808883016593732 ], [ -122.408027473807891, 37.80887168336259 ], [ -122.407989475110696, 37.808875044711961 ], [ -122.407968410338185, 37.808863711195677 ], [ -122.40793908201519, 37.808867619537004 ], [ -122.407916286847737, 37.808856314004366 ], [ -122.407867659098386, 37.808850233137854 ], [ -122.407892470076433, 37.808737895932389 ], [ -122.407895080955839, 37.808839488699526 ], [ -122.407919412118858, 37.808843215435566 ], [ -122.407965428881198, 37.808747703240833 ], [ -122.407954143699186, 37.808847460639832 ], [ -122.407971518664866, 37.808849926725884 ], [ -122.408015804954957, 37.808754442230494 ], [ -122.408004537488765, 37.808854886346353 ], [ -122.408030581417677, 37.80885789835331 ], [ -122.408074867989683, 37.808762414104869 ], [ -122.408063600595128, 37.808862857951631 ], [ -122.408080957579173, 37.808864637589593 ], [ -122.408126991783163, 37.808769811495232 ], [ -122.408115706821903, 37.808869569183827 ], [ -122.408134811496907, 37.808872006712299 ], [ -122.408175637137717, 37.80877657841792 ], [ -122.408167830687617, 37.808876966281417 ], [ -122.408188666131636, 37.808879376348344 ], [ -122.408234682562991, 37.808783863774664 ], [ -122.40822341538842, 37.808884307910851 ], [ -122.4082459985258, 37.808887375864508 ], [ -122.408292014895409, 37.808791863543163 ], [ -122.408280730145464, 37.80889162097256 ], [ -122.408299853182712, 37.808894745449784 ], [ -122.408345869480527, 37.808799232832989 ], [ -122.408334584808884, 37.808898990541991 ], [ -122.40835716795533, 37.808902058474338 ], [ -122.408401454133696, 37.808806574104075 ], [ -122.408390187174248, 37.808907017981177 ], [ -122.408412770332475, 37.808910086177463 ], [ -122.408457056451198, 37.808814602061034 ], [ -122.408447501979367, 37.808914331510991 ], [ -122.408464876962967, 37.808916796975197 ], [ -122.408510893069277, 37.808821284568992 ], [ -122.408499626255633, 37.808921728456291 ], [ -122.408520461722972, 37.808924138464597 ], [ -122.408564747351377, 37.808828653764436 ], [ -122.408553480616533, 37.808929097931319 ], [ -122.40857606412726, 37.808932165816167 ], [ -122.408622080100045, 37.808836653366868 ], [ -122.408610795786757, 37.808936410826988 ], [ -122.408633379309109, 37.808939478975418 ], [ -122.408677664815599, 37.808843994782293 ], [ -122.408666398217051, 37.808944438410528 ], [ -122.408683754881451, 37.808946217690789 ], [ -122.408728058314978, 37.808851419636184 ], [ -122.408718504202398, 37.808951149107379 ], [ -122.40873414881105, 37.808953643085459 ], [ -122.40878016458673, 37.808858130300308 ], [ -122.408768880489617, 37.80895788804974 ], [ -122.408788002858174, 37.808961011909815 ], [ -122.408832288517658, 37.808865527378856 ], [ -122.408822734543293, 37.808965256858244 ], [ -122.40884531843632, 37.808968325235043 ], [ -122.408891334078092, 37.80887281240679 ], [ -122.408880067778369, 37.808973256604034 ], [ -122.40889917250513, 37.808975694008623 ], [ -122.408943458030421, 37.808880209436197 ], [ -122.408933921854199, 37.808980625361755 ], [ -122.408953027290934, 37.808983063295585 ], [ -122.408997312398199, 37.808887578434081 ], [ -122.408987758995764, 37.808987308195377 ], [ -122.409008612134684, 37.808990404005712 ], [ -122.409052897181908, 37.808894919398057 ], [ -122.409041631090304, 37.808995363335725 ], [ -122.40906421464841, 37.808998431401648 ], [ -122.409110230041378, 37.808902919037678 ], [ -122.409098946373874, 37.809002676543273 ], [ -122.409121529583416, 37.809005744329234 ], [ -122.409165814840676, 37.808910259673837 ], [ -122.409154548899522, 37.809010703622 ], [ -122.409175384406026, 37.80901311324002 ], [ -122.4092196692594, 37.808917628844746 ], [ -122.409208385736662, 37.80901738636053 ], [ -122.409229238893218, 37.809020482131849 ], [ -122.409273523674656, 37.808924997441885 ], [ -122.4092622402232, 37.809024754962692 ], [ -122.40927961492774, 37.809027220861601 ], [ -122.409325630047334, 37.808931707864964 ], [ -122.409314364326178, 37.80903215210256 ], [ -122.409336947553612, 37.809035219847274 ], [ -122.409381232551411, 37.808939735111537 ], [ -122.409369949242404, 37.809039492642384 ], [ -122.409390802418955, 37.809042588659686 ], [ -122.409422921195898, 37.808945240701227 ], [ -122.409422903348997, 37.809011853140163 ], [ -122.40946679914822, 37.809035864508125 ], [ -122.409564019832658, 37.809046651478369 ], [ -122.409549629214183, 37.809025596054688 ], [ -122.409548887643922, 37.80899676568643 ], [ -122.409387695818651, 37.808719879048233 ], [ -122.409342422574227, 37.808709624416799 ], [ -122.409302270626966, 37.808696540242821 ], [ -122.409262612300481, 37.808769974638814 ], [ -122.409243366033195, 37.808762045524638 ], [ -122.409286290635848, 37.808681004303558 ], [ -122.409251523749987, 37.808675386616557 ], [ -122.409211865384634, 37.808748820995767 ], [ -122.409192619474325, 37.8087408918677 ], [ -122.409232277847408, 37.808667457220274 ], [ -122.409218046276052, 37.808652579691525 ], [ -122.409199082493714, 37.808655633568947 ], [ -122.409183155837965, 37.808642156922303 ], [ -122.409146746495978, 37.80863999940842 ], [ -122.409132550252011, 37.808626494744182 ], [ -122.409097906968512, 37.808625682074002 ], [ -122.409081980690672, 37.808612205682593 ], [ -122.409045571705349, 37.808610047857293 ], [ -122.409029645094293, 37.808596571464371 ], [ -122.40899498416762, 37.808595072051922 ], [ -122.408979057222851, 37.808581595657749 ], [ -122.408939170155094, 37.808578807372939 ], [ -122.408923243223967, 37.808565330971156 ], [ -122.40887636397639, 37.80855990894463 ], [ -122.408862167796897, 37.808546404247657 ], [ -122.40882402846016, 37.808544274635025 ], [ -122.408771338418944, 37.808649509314336 ], [ -122.408752144836185, 37.80864363943796 ], [ -122.408804834900437, 37.808538404767106 ], [ -122.408755995512777, 37.808524087565431 ], [ -122.40870503613472, 37.808629294204955 ], [ -122.408684130157809, 37.808624138753608 ], [ -122.408736802648747, 37.808518217400646 ], [ -122.408686214896832, 37.808503241742777 ], [ -122.408633542337299, 37.808609162798888 ], [ -122.40861434946801, 37.808603292888833 ], [ -122.408665291301503, 37.808497399575863 ], [ -122.408618182709631, 37.808483054307779 ], [ -122.408565527707552, 37.808589661496853 ], [ -122.408546334502589, 37.808583791581334 ], [ -122.408598989528059, 37.808477184400701 ], [ -122.408550150206281, 37.808462866564483 ], [ -122.408494192805264, 37.808575707944065 ], [ -122.408475017602044, 37.808570524448861 ], [ -122.408530957042373, 37.808456996920889 ], [ -122.408475143235307, 37.808440732021886 ], [ -122.408419203721877, 37.80855425952376 ], [ -122.408400010537662, 37.808548389584381 ], [ -122.40845594972285, 37.808434861822526 ], [ -122.408401884334964, 37.808419255320196 ], [ -122.408345944732787, 37.808532783062383 ], [ -122.408326768858856, 37.808527599554232 ], [ -122.408382691187029, 37.808413385377861 ], [ -122.408326877445205, 37.808397120408593 ], [ -122.40827095504342, 37.808511334558837 ], [ -122.408251779872415, 37.808506151027288 ], [ -122.408325818753553, 37.80835593442692 ], [ -122.408307261690325, 37.808307477072752 ], [ -122.408233773949888, 37.808277076846032 ], [ -122.408190831757594, 37.808290132648246 ], [ -122.408103813680896, 37.80847420912815 ], [ -122.408070707145512, 37.808465817066804 ], [ -122.408167524728952, 37.808258920751598 ], [ -122.408046540290897, 37.80819907276836 ], [ -122.408024204007958, 37.808205614634559 ], [ -122.407919104249203, 37.808427066268948 ], [ -122.407885997416685, 37.80841867443587 ], [ -122.407996041444051, 37.808187528721767 ], [ -122.407913795821727, 37.808153149917878 ], [ -122.407807565173499, 37.808397968053718 ], [ -122.407786659324017, 37.808392812443081 ], [ -122.407868398033912, 37.808205388267609 ], [ -122.407660185387385, 37.808254079991599 ], [ -122.407706584592447, 37.808375566178441 ], [ -122.407613672832028, 37.80839767070411 ], [ -122.407507720833991, 37.808114394328115 ], [ -122.407549056121539, 37.808106171825735 ], [ -122.407536061536263, 37.808072046122568 ], [ -122.407462591282297, 37.808042331588446 ], [ -122.40744611868692, 37.808007575403529 ], [ -122.407487420240358, 37.807930680888951 ], [ -122.407431324879042, 37.807903432764398 ], [ -122.407355431147764, 37.80804887173035 ], [ -122.406644940711814, 37.807817946705647 ], [ -122.406816836689401, 37.809994826134172 ], [ -122.406786252768356, 37.810017295716854 ], [ -122.40617819806161, 37.810068327706666 ], [ -122.406151660268563, 37.810046094760864 ], [ -122.406135997898389, 37.810042914277616 ], [ -122.406123656094778, 37.810034186621294 ], [ -122.405904441804637, 37.807159674056429 ], [ -122.405322208784199, 37.806866923600786 ], [ -122.404400300125417, 37.808853394598287 ], [ -122.404390181819835, 37.80886385881621 ], [ -122.404376497046869, 37.808870260285914 ], [ -122.404359263409262, 37.808873285169796 ], [ -122.404316325011152, 37.808819040682266 ], [ -122.403937477028578, 37.80876197892308 ], [ -122.403923457745378, 37.80875533773979 ], [ -122.403912828869224, 37.808745895483341 ], [ -122.403907320429198, 37.80873362312807 ], [ -122.403906985949291, 37.808720580801918 ], [ -122.404717282916977, 37.806971462592401 ], [ -122.403955936424254, 37.806579276399596 ], [ -122.402761932327437, 37.808014567794245 ], [ -122.402746534430648, 37.808021683436984 ], [ -122.402731014070881, 37.808023993997161 ], [ -122.402715370212889, 37.808021499491424 ], [ -122.40235585639897, 37.807840510524542 ], [ -122.402346922703828, 37.807829667068134 ], [ -122.402341415289797, 37.807817394901065 ], [ -122.402339367950134, 37.807805066923208 ], [ -122.402340764477955, 37.807791996673913 ], [ -122.402345656255733, 37.807780243491045 ], [ -122.403421726415289, 37.806471156550586 ], [ -122.402804368682325, 37.806023074735968 ], [ -122.400943288973451, 37.807638041928655 ], [ -122.40092780379058, 37.807641725129315 ], [ -122.400912142497489, 37.807638543945465 ], [ -122.400398744529411, 37.807261566606726 ], [ -122.400572958659495, 37.806120993590262 ], [ -122.401732349384048, 37.805192215433102 ], [ -122.403194419486127, 37.805118563841738 ], [ -122.403587277644846, 37.805412029499024 ], [ -122.404128809815958, 37.80582849738515 ], [ -122.404696069838451, 37.806264743038192 ], [ -122.405495723806581, 37.806640585378162 ], [ -122.405545441190654, 37.806634177056651 ], [ -122.405362337774832, 37.805695301990511 ], [ -122.405357241074242, 37.805695943874476 ], [ -122.405356257037084, 37.805690948342658 ], [ -122.405173536628851, 37.804763212222298 ], [ -122.404986245080067, 37.803832670552438 ], [ -122.404798316633176, 37.802900762043983 ], [ -122.40352117840483, 37.80305477917063 ], [ -122.40315960682554, 37.803098380641011 ], [ -122.402973676735002, 37.802166749844929 ], [ -122.402973611142329, 37.802166419353441 ], [ -122.402883459886269, 37.801713453423041 ], [ -122.402789664410264, 37.801242172237629 ], [ -122.402604124590809, 37.800307129616797 ], [ -122.402603736644934, 37.800305175692849 ], [ -122.402420666593613, 37.799382141273902 ], [ -122.402228639238132, 37.798429701815799 ], [ -122.402040983242472, 37.797504944420098 ], [ -122.401906946643678, 37.796875708196644 ], [ -122.401853390100442, 37.796626165074152 ], [ -122.402402444702886, 37.796554566975963 ], [ -122.40291796673857, 37.796490379340391 ], [ -122.403496709817034, 37.796417485859841 ], [ -122.404412160626791, 37.796302098196776 ], [ -122.405142977212691, 37.796210954635839 ], [ -122.405862652252878, 37.796122174218517 ], [ -122.406224736410849, 37.796077505131322 ], [ -122.406350669109713, 37.796061968858353 ], [ -122.406652352369846, 37.796024750165536 ], [ -122.407083680819795, 37.795970583772274 ], [ -122.407319877605971, 37.795940921047873 ], [ -122.407432089697608, 37.795926828732469 ], [ -122.407563768850565, 37.795910291726024 ], [ -122.40779730388941, 37.795880962818103 ], [ -122.408253202051654, 37.795823706218044 ], [ -122.408704654154022, 37.795766841471867 ], [ -122.408743234497422, 37.795761981540487 ], [ -122.409075520379659, 37.795720125786943 ], [ -122.409077868767497, 37.795719830108119 ], [ -122.409343544204319, 37.795686363949223 ], [ -122.40954722057397, 37.795660707190791 ], [ -122.40989875147848, 37.795616424537307 ], [ -122.411081667103218, 37.795467382264249 ], [ -122.411541226025591, 37.795408552082151 ], [ -122.411541229133036, 37.795408565216896 ], [ -122.411541531721369, 37.795408526524874 ], [ -122.411893657029495, 37.795363458292385 ], [ -122.412335878555311, 37.795306857217497 ], [ -122.413187771447625, 37.795197816725128 ], [ -122.414825631965456, 37.794988155997579 ], [ -122.415005455310151, 37.795877318912275 ], [ -122.415094279286492, 37.796316514471208 ], [ -122.415172033219093, 37.796700969266084 ], [ -122.41519297245145, 37.796804503853558 ], [ -122.415290513107706, 37.797286788953464 ], [ -122.415384105347158, 37.79774954140936 ], [ -122.415384693800732, 37.797752451808172 ], [ -122.415571551794869, 37.798676329254079 ], [ -122.415572319635913, 37.798680127283284 ], [ -122.415667503417794, 37.799150732537029 ], [ -122.41576151132729, 37.799616465113374 ], [ -122.416491256558686, 37.799525268171301 ], [ -122.417385454528372, 37.799413513042644 ], [ -122.417492539304973, 37.799906258247788 ], [ -122.417586974866069, 37.800340791478632 ], [ -122.417798642975782, 37.801267347943607 ], [ -122.41787748762404, 37.801706751150704 ], [ -122.417966229723234, 37.802201308768375 ], [ -122.418151092101994, 37.803135399210959 ], [ -122.418255886912107, 37.803650215613203 ], [ -122.418215611082957, 37.803687299847837 ], [ -122.418280954876565, 37.804023161939504 ], [ -122.418341342522965, 37.804070022432718 ], [ -122.418530631419571, 37.804999043218864 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":8,"ZIP_CODE":94109,"ID":94109},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.413915879652706, 37.790463115032836 ], [ -122.412266187164306, 37.790672783986288 ], [ -122.412154318600955, 37.79012444884593 ], [ -122.412075867445836, 37.789739906579548 ], [ -122.411885657146456, 37.788807543703371 ], [ -122.413541442066688, 37.788598204045492 ], [ -122.415185269301574, 37.788387930678724 ], [ -122.414995423274036, 37.787453843784689 ], [ -122.414806647966373, 37.786519819325378 ], [ -122.414617207572036, 37.785582474657787 ], [ -122.414430198422409, 37.784657140813145 ], [ -122.414241572919337, 37.783723783021379 ], [ -122.415882538254209, 37.783515640872785 ], [ -122.417528773439201, 37.78331088958533 ], [ -122.419181703937824, 37.783101400150407 ], [ -122.420816620257895, 37.78289417046458 ], [ -122.420817002825672, 37.782894121654586 ], [ -122.422463744273344, 37.782685368786026 ], [ -122.422597534917514, 37.782659914421728 ], [ -122.424108200948226, 37.782477051425644 ], [ -122.427396397680198, 37.782056939506091 ], [ -122.427490665181679, 37.782522998381459 ], [ -122.427584325166535, 37.78298604740867 ], [ -122.427778871361184, 37.783924735360486 ], [ -122.427988927379005, 37.784953879052303 ], [ -122.428148186422831, 37.785784488173462 ], [ -122.428241496400901, 37.78624657727314 ], [ -122.428241829261111, 37.786248226022003 ], [ -122.428335613076769, 37.786712655890966 ], [ -122.428525011003728, 37.78765056176524 ], [ -122.428712111452299, 37.788577067507021 ], [ -122.428905308896674, 37.789533740830485 ], [ -122.429092268257477, 37.790459499306614 ], [ -122.429269817037863, 37.791338636935983 ], [ -122.429447192175289, 37.79221689778025 ], [ -122.429625242377327, 37.793098475947545 ], [ -122.429803981887915, 37.793977244761322 ], [ -122.429989276973558, 37.794894937362344 ], [ -122.430182832162615, 37.795853517593606 ], [ -122.428537813517494, 37.796062892623418 ], [ -122.426892728667355, 37.796272251947869 ], [ -122.425249874473522, 37.79648130315109 ], [ -122.423601877370103, 37.796690947281171 ], [ -122.423601876988513, 37.796690945913937 ], [ -122.42360129621845, 37.796691056748735 ], [ -122.423601296960271, 37.796691058659476 ], [ -122.423792964234153, 37.797616581376253 ], [ -122.423793785438747, 37.7976164776058 ], [ -122.423982396975646, 37.798552421556877 ], [ -122.423982145098208, 37.798552453684835 ], [ -122.42417056430692, 37.799484532744323 ], [ -122.42417056511286, 37.799484537126212 ], [ -122.424242907462499, 37.799842398528341 ], [ -122.424358667137113, 37.800415027771606 ], [ -122.424517597070277, 37.801201189595353 ], [ -122.424538324517613, 37.801303719934985 ], [ -122.424731635083759, 37.802281009278651 ], [ -122.424731259133807, 37.802280983275736 ], [ -122.424808684502352, 37.802662664019884 ], [ -122.424918804152185, 37.803205508171892 ], [ -122.425109521046082, 37.804145845932808 ], [ -122.425204919000421, 37.804616199985951 ], [ -122.425298563577385, 37.80507790289635 ], [ -122.425486832357592, 37.806006120121552 ], [ -122.425487611207828, 37.806009959663712 ], [ -122.425531817297653, 37.806150610629167 ], [ -122.425627533230582, 37.806456787332273 ], [ -122.4257796482039, 37.806715259689653 ], [ -122.426066893674061, 37.80699787612533 ], [ -122.426256728575282, 37.807185221316665 ], [ -122.426357658303132, 37.807388412718332 ], [ -122.426488519796493, 37.807651861239542 ], [ -122.426560904719622, 37.807943556174827 ], [ -122.426613230594512, 37.808152010516238 ], [ -122.426749407153778, 37.80832970781308 ], [ -122.426815901093192, 37.808623913624309 ], [ -122.42681099272437, 37.808701593834883 ], [ -122.426830737473963, 37.808795352699491 ], [ -122.426826276753118, 37.808823581609779 ], [ -122.426828951398363, 37.808859934107588 ], [ -122.426829913470996, 37.808897001584555 ], [ -122.426829127336148, 37.808933411171161 ], [ -122.426830071586494, 37.80896979193826 ], [ -122.426848658020631, 37.809018932542891 ], [ -122.426823913850725, 37.809066034426849 ], [ -122.426821397293551, 37.809102471733105 ], [ -122.426817149990782, 37.809138937589218 ], [ -122.426811172632014, 37.809175431983689 ], [ -122.42680517743706, 37.809211239393754 ], [ -122.426799200066583, 37.80924773378711 ], [ -122.426791474798563, 37.809283569459971 ], [ -122.426783766999961, 37.80932009184702 ], [ -122.426764854928408, 37.809391820287793 ], [ -122.426753650652387, 37.809427026340984 ], [ -122.426742463842274, 37.809462919107801 ], [ -122.42673125988388, 37.809498124878161 ], [ -122.426718325162497, 37.809533359195932 ], [ -122.426703641860442, 37.809567935625843 ], [ -122.426690707106644, 37.80960316966555 ], [ -122.426674294047132, 37.809637774073536 ], [ -122.426659593228109, 37.809671663782375 ], [ -122.426641449382515, 37.809706296733168 ], [ -122.426624999956104, 37.809739528275571 ], [ -122.426606838595305, 37.809773474231129 ], [ -122.426586928644923, 37.809806762295736 ], [ -122.426568749097328, 37.809840022090548 ], [ -122.426547090883986, 37.809872652254199 ], [ -122.426527163066623, 37.80990525387346 ], [ -122.426505504455619, 37.809937883485567 ], [ -122.426482098287991, 37.809969855187106 ], [ -122.426435249574482, 37.810032425717694 ], [ -122.426410094762232, 37.810063739239673 ], [ -122.426384921777455, 37.810094366601653 ], [ -122.426359731637717, 37.810124306962969 ], [ -122.426305889769012, 37.810184245028879 ], [ -122.426277202393095, 37.810212869038814 ], [ -122.426248533505472, 37.810242179739554 ], [ -122.426219828627396, 37.810270117569488 ], [ -122.426165541280753, 37.810312894703067 ], [ -122.426148806543424, 37.810335143220563 ], [ -122.426077517869416, 37.810389871747489 ], [ -122.426029956191201, 37.810424984999884 ], [ -122.426004427087875, 37.810441883304833 ], [ -122.425978879818175, 37.810458095175186 ], [ -122.425953351037933, 37.810474993463338 ], [ -122.425902221511379, 37.810506044020848 ], [ -122.425874926298846, 37.810521597684627 ], [ -122.425847613267436, 37.810536464907365 ], [ -122.425792951557781, 37.810564826464294 ], [ -122.425738254193391, 37.810591815126337 ], [ -122.425709157251291, 37.810604651266786 ], [ -122.425621812948378, 37.810641100340696 ], [ -122.425563512153047, 37.810662654222938 ], [ -122.425532631291532, 37.810673458992433 ], [ -122.425501732623886, 37.810683577593657 ], [ -122.425472546238581, 37.810692981507543 ], [ -122.425441630096913, 37.810702413652621 ], [ -122.425410695451745, 37.810711159366136 ], [ -122.425348791232992, 37.810727278162595 ], [ -122.425317821646317, 37.810734650696368 ], [ -122.42528512127241, 37.810742051749649 ], [ -122.425254133532235, 37.81074873811216 ], [ -122.425221397542259, 37.810754766278279 ], [ -122.425190391643511, 37.810760766194903 ], [ -122.425157620386827, 37.810765421468112 ], [ -122.425124866580816, 37.810770763172656 ], [ -122.425093807273001, 37.810774704034145 ], [ -122.425028228777975, 37.810782641379291 ], [ -122.424962578393604, 37.810787833509224 ], [ -122.424931484149809, 37.810790400897922 ], [ -122.424898623523902, 37.810791623930832 ], [ -122.424876305744775, 37.810798855419677 ], [ -122.424848476260408, 37.810793815800935 ], [ -122.424819040922628, 37.810793609459935 ], [ -122.42478787514149, 37.810793431351755 ], [ -122.424758404216234, 37.810791852400563 ], [ -122.42472891548077, 37.810789586458021 ], [ -122.424699408618324, 37.810786634628094 ], [ -122.424640324731897, 37.810777984365998 ], [ -122.424610747039267, 37.810772286768845 ], [ -122.424582881984065, 37.810765873943147 ], [ -122.42455326835632, 37.810758803192932 ], [ -122.424525367734788, 37.810751018033073 ], [ -122.424497431514737, 37.810741859447681 ], [ -122.42447122609704, 37.810732672889145 ], [ -122.424443254308628, 37.810722141695749 ], [ -122.424406843510837, 37.810719989167595 ], [ -122.424404739729965, 37.810705601989262 ], [ -122.424392430564922, 37.810698249126709 ], [ -122.424380086492334, 37.810689522832604 ], [ -122.424367724289866, 37.810680110382542 ], [ -122.424357092185232, 37.810670669703008 ], [ -122.424346425188247, 37.810659856141378 ], [ -122.424337488288586, 37.810649014350894 ], [ -122.424328533252009, 37.810637486130467 ], [ -122.424321309004071, 37.810625929670387 ], [ -122.424315797750651, 37.810613658536091 ], [ -122.424310250566421, 37.810600014537307 ], [ -122.42430472117745, 37.810587056973155 ], [ -122.4243009222361, 37.810574071450297 ], [ -122.424298835580885, 37.810560370715905 ], [ -122.424298497510776, 37.810547328452351 ], [ -122.424299872431348, 37.810533571515215 ], [ -122.424301264798501, 37.810520501018615 ], [ -122.424304387263248, 37.810507402569137 ], [ -122.424309258634793, 37.810494961760924 ], [ -122.424315860102183, 37.810482492999512 ], [ -122.424324191657433, 37.810469996010013 ], [ -122.424332559488974, 37.810458871878474 ], [ -122.42434440529064, 37.810448377725301 ], [ -122.424354539139387, 37.810438598228359 ], [ -122.424368151310617, 37.810429448977779 ], [ -122.424380050823189, 37.810421013845534 ], [ -122.424395446797789, 37.810413895387818 ], [ -122.424410860570717, 37.810407463637567 ], [ -122.424426309569299, 37.810402404211651 ], [ -122.424441794853934, 37.810398717916826 ], [ -122.42445902802703, 37.810395690099803 ], [ -122.424474548198873, 37.810393376407241 ], [ -122.424495313410532, 37.810393037578869 ], [ -122.424512653696851, 37.810394128357849 ], [ -122.424528280984248, 37.810395933262043 ], [ -122.424545674311858, 37.810399083346539 ], [ -122.424561354987802, 37.810402947551076 ], [ -122.424577071263883, 37.810408184897881 ], [ -122.424591092706251, 37.810414823624235 ], [ -122.424605131932822, 37.810422148234672 ], [ -122.424619206768625, 37.810430846262342 ], [ -122.424631551158143, 37.810439571977035 ], [ -122.424642200368709, 37.810449699078426 ], [ -122.424652868070766, 37.810460512602432 ], [ -122.424661822790284, 37.810472040804292 ], [ -122.424669047076236, 37.810483597243831 ], [ -122.424676306964855, 37.810496526827265 ], [ -122.424683904979332, 37.810522498123575 ], [ -122.424685973208497, 37.810535512153116 ], [ -122.424686685078399, 37.810562969547746 ], [ -122.424688754001352, 37.810575983565833 ], [ -122.424694265313605, 37.810588254682798 ], [ -122.424703220408176, 37.810599783150167 ], [ -122.424713852193449, 37.810609223529688 ], [ -122.424727909273159, 37.81061723483468 ], [ -122.424743643057568, 37.81062315859959 ], [ -122.424759306354005, 37.810626336886287 ], [ -122.424774915898695, 37.810627455322866 ], [ -122.424844204676688, 37.810629071443891 ], [ -122.424883986990039, 37.810627735460123 ], [ -122.424942750746894, 37.810624029768022 ], [ -122.424970402172974, 37.810622204741975 ], [ -122.424999748098813, 37.810618978876803 ], [ -122.425029112521329, 37.810616439702436 ], [ -122.42505844098109, 37.810612527107622 ], [ -122.425086039005805, 37.810608643024629 ], [ -122.425115367473737, 37.810604730964819 ], [ -122.425142947684478, 37.810600160159147 ], [ -122.425172240190349, 37.810594874946659 ], [ -122.42519980259955, 37.810589617967473 ], [ -122.425229077987609, 37.810583646294816 ], [ -122.425311658363697, 37.810563756689383 ], [ -122.425339167350202, 37.810556440647844 ], [ -122.425394149679065, 37.810540434852271 ], [ -122.425449096383744, 37.810523056436082 ], [ -122.425474821139559, 37.810513709039498 ], [ -122.42550225886724, 37.810503646946287 ], [ -122.425553673774345, 37.810483579237776 ], [ -122.425579363239436, 37.810472858943186 ], [ -122.425656378173159, 37.810438638721514 ], [ -122.425680301215294, 37.81042657379389 ], [ -122.425705937577163, 37.810413794436336 ], [ -122.425729843135883, 37.81040104278366 ], [ -122.425777618636445, 37.81037416741794 ], [ -122.425799775930017, 37.810360757570926 ], [ -122.425823645502135, 37.810346633309891 ], [ -122.425845767517558, 37.810331850853636 ], [ -122.425869619617202, 37.810317040417416 ], [ -122.425891740915375, 37.81030225768918 ], [ -122.425912114318606, 37.810286817047619 ], [ -122.425934218490383, 37.810271348139892 ], [ -122.42595457407505, 37.810255221330763 ], [ -122.425976660073871, 37.81023906598594 ], [ -122.426033069704985, 37.810211362243855 ], [ -122.426044381296308, 37.810180274872565 ], [ -122.426071409213066, 37.810154424922551 ], [ -122.426098419287058, 37.810127887982347 ], [ -122.426123698921984, 37.810101379570156 ], [ -122.42617422251692, 37.810046989859728 ], [ -122.426197736051108, 37.810019136822319 ], [ -122.426222979645814, 37.809991255524551 ], [ -122.426244745255502, 37.809962744298282 ], [ -122.426268240925296, 37.809934204811682 ], [ -122.426289987997293, 37.809905007153375 ], [ -122.426310004983833, 37.8098758380223 ], [ -122.426331734895541, 37.809845953635381 ], [ -122.426350003264446, 37.809816126056347 ], [ -122.426370002384175, 37.809786270205322 ], [ -122.42640650446053, 37.80972524214534 ], [ -122.426423024539801, 37.809694756383479 ], [ -122.426439527484902, 37.809663584173109 ], [ -122.426456011918219, 37.809631725811407 ], [ -122.426470784413283, 37.809600581586317 ], [ -122.426485538743833, 37.809568751204715 ], [ -122.426498562648177, 37.809536949086315 ], [ -122.426511568735094, 37.809504460806153 ], [ -122.426524592609866, 37.809472658409931 ], [ -122.426535868255684, 37.809440198117713 ], [ -122.426547125731901, 37.809407051395155 ], [ -122.426556671294222, 37.80937461936086 ], [ -122.42657572607385, 37.809308382431155 ], [ -122.426583523043476, 37.809275292231341 ], [ -122.426589589599459, 37.809242230297407 ], [ -122.426597386209863, 37.809209140101942 ], [ -122.426601704881108, 37.809175419993217 ], [ -122.42660775360666, 37.809141671622967 ], [ -122.426612089737361, 37.809108637953877 ], [ -122.42661985311382, 37.809007562446936 ], [ -122.426622425964752, 37.808906571727555 ], [ -122.426632418849564, 37.808824688117525 ], [ -122.426616150524296, 37.80879817156422 ], [ -122.426607002185577, 37.808712480555535 ], [ -122.426596123115345, 37.808626817267942 ], [ -122.42658353220007, 37.808541869217166 ], [ -122.426569192751245, 37.808456262451642 ], [ -122.426553140769713, 37.808371370658513 ], [ -122.426535358440475, 37.808286507127633 ], [ -122.426521448780022, 37.808150762619441 ], [ -122.42648716178519, 37.808163683754294 ], [ -122.426478316482672, 37.808089661844356 ], [ -122.426472145992449, 37.808051992713068 ], [ -122.426465992974997, 37.808015010021762 ], [ -122.42645810959354, 37.807978055869093 ], [ -122.426450244018099, 37.807941787601465 ], [ -122.426431016184523, 37.807867935277343 ], [ -122.426421420613309, 37.807831695540209 ], [ -122.426410094332368, 37.807795484071661 ], [ -122.426383981060937, 37.807723117657737 ], [ -122.426370941909852, 37.807687620888885 ], [ -122.426356154936116, 37.8076514659409 ], [ -122.42634140359948, 37.807616683860772 ], [ -122.426324904443447, 37.807581243600652 ], [ -122.426289370917274, 37.807546114229226 ], [ -122.426116990256872, 37.807640950874436 ], [ -122.426004575599805, 37.807511622087709 ], [ -122.425948221432193, 37.807541385135394 ], [ -122.426072979790121, 37.807679439549148 ], [ -122.426043902201883, 37.807692962208542 ], [ -122.425788908967789, 37.807405954455511 ], [ -122.425811101339534, 37.807393917738004 ], [ -122.425841407866244, 37.807427759425885 ], [ -122.425860156968014, 37.807416465651144 ], [ -122.425910013941177, 37.807469902573231 ], [ -122.425894653990497, 37.807478394108394 ], [ -122.425932202930852, 37.807524478297722 ], [ -122.425969647726248, 37.80749983141159 ], [ -122.425933954139211, 37.807458524016887 ], [ -122.426097611558333, 37.807361083192824 ], [ -122.42613200511353, 37.807352281054179 ], [ -122.426091315966914, 37.80731860900228 ], [ -122.4260559073373, 37.80728828460429 ], [ -122.425981701022749, 37.807230438026032 ], [ -122.425942884837923, 37.807202229419872 ], [ -122.425865288869659, 37.807147185302298 ], [ -122.425824778720127, 37.807120377771732 ], [ -122.425784286059837, 37.807094256667916 ], [ -122.425743811226624, 37.807068821710658 ], [ -122.425659436564132, 37.807019381954113 ], [ -122.425575133216185, 37.806972687328404 ], [ -122.425531269042693, 37.806950055090923 ], [ -122.425487422692115, 37.806928108997688 ], [ -122.425396304969212, 37.806885646130702 ], [ -122.425305258549756, 37.806845928659463 ], [ -122.425259770989555, 37.806827443179728 ], [ -122.425212552741186, 37.806808985385324 ], [ -122.425165353022919, 37.806791214545072 ], [ -122.425118188573762, 37.806774816287508 ], [ -122.425069293788937, 37.80675844598079 ], [ -122.4250204168317, 37.806742762363598 ], [ -122.424973288049415, 37.806727737193157 ], [ -122.42492444672159, 37.806713426132198 ], [ -122.424873892869243, 37.806699830002309 ], [ -122.424802432493848, 37.806681081528858 ], [ -122.424772802670631, 37.806673324118421 ], [ -122.424744921357572, 37.806666225439869 ], [ -122.424689194317793, 37.806653400109965 ], [ -122.424659600807814, 37.806647015805055 ], [ -122.424631755098972, 37.806641289695882 ], [ -122.42460219684277, 37.806636278252959 ], [ -122.42457436893713, 37.806631238565636 ], [ -122.424544828483292, 37.806626913543731 ], [ -122.424517018379291, 37.806622560278207 ], [ -122.424487495380134, 37.806618921682983 ], [ -122.424428486015572, 37.806613017324239 ], [ -122.424398998964037, 37.806610751846591 ], [ -122.42437124224621, 37.806608457578399 ], [ -122.424341772644766, 37.806606878527504 ], [ -122.424282870046667, 37.806605092433877 ], [ -122.424224002349433, 37.806604679467583 ], [ -122.424165170926941, 37.806605639331515 ], [ -122.424135772832813, 37.80660680569077 ], [ -122.424077012229233, 37.806610511532789 ], [ -122.424018287184794, 37.806615589667317 ], [ -122.42398895989578, 37.806619501737501 ], [ -122.423959615506732, 37.806622727353634 ], [ -122.423932018904594, 37.806626611175993 ], [ -122.423873400581527, 37.806635808400436 ], [ -122.423845839538984, 37.806641064799031 ], [ -122.423816565594137, 37.806647036132823 ], [ -122.423789022338056, 37.806652979228197 ], [ -122.423759766870432, 37.806659637246682 ], [ -122.423706445903605, 37.806672867782268 ], [ -122.423653321266002, 37.806693649347707 ], [ -122.423589920527235, 37.806718718849552 ], [ -122.423526538222887, 37.806744474741464 ], [ -122.423399843925978, 37.80679873217619 ], [ -122.423338262626473, 37.806827205494514 ], [ -122.423215171014846, 37.806886897776501 ], [ -122.423155391052063, 37.806918088524029 ], [ -122.423095628820221, 37.806949965676615 ], [ -122.423037614673063, 37.806982501019867 ], [ -122.422979636035322, 37.807016409205524 ], [ -122.422923387701616, 37.807050289149693 ], [ -122.422867174874767, 37.807085541937973 ], [ -122.422807430162962, 37.807118105379153 ], [ -122.422669617719095, 37.80721100017012 ], [ -122.422538512716017, 37.807295544473774 ], [ -122.422410922154015, 37.807382091240839 ], [ -122.422406568873129, 37.807385156047935 ], [ -122.422285114644055, 37.807470669252126 ], [ -122.422159360151895, 37.8075613064347 ], [ -122.422037101638551, 37.807653259953362 ], [ -122.421916608736879, 37.807746558017001 ], [ -122.421799629592272, 37.807841858870269 ], [ -122.42168270310637, 37.807939218918449 ], [ -122.421532057745097, 37.808071464473507 ], [ -122.421789175548739, 37.808374241220797 ], [ -122.421758561641454, 37.808395342089796 ], [ -122.421493253559859, 37.808110553294661 ], [ -122.421324496714121, 37.808278803348081 ], [ -122.421367127445279, 37.808320685807196 ], [ -122.421400626951964, 37.808344175435167 ], [ -122.421417984134223, 37.808345953110788 ], [ -122.421538848573221, 37.808467594219884 ], [ -122.421521846706554, 37.808479545548913 ], [ -122.421585810928775, 37.808543055557919 ], [ -122.421558551068415, 37.808559981099798 ], [ -122.421494604621685, 37.808497157511823 ], [ -122.421482722503114, 37.808506278522707 ], [ -122.42136546133365, 37.808390072182092 ], [ -122.421343808401488, 37.808356088677073 ], [ -122.421300875659668, 37.808302536803509 ], [ -122.421061625998746, 37.808556401980894 ], [ -122.421102646347336, 37.808803641534986 ], [ -122.421495500883367, 37.809133737012722 ], [ -122.421447795704026, 37.809163356667042 ], [ -122.422886026597482, 37.810219448665336 ], [ -122.422843690020329, 37.8102558485987 ], [ -122.42136637775458, 37.809161249445332 ], [ -122.421209585435776, 37.809189899457976 ], [ -122.421035643651535, 37.808957186122555 ], [ -122.420944163231766, 37.808967603286121 ], [ -122.420910323787112, 37.808797159929568 ], [ -122.420858358549751, 37.808795946109164 ], [ -122.420717381312784, 37.80890056409217 ], [ -122.420760227934167, 37.809084595303112 ], [ -122.420694330112809, 37.809080174685604 ], [ -122.420677247269424, 37.809022081268409 ], [ -122.420415813879998, 37.809020844655912 ], [ -122.420359979289643, 37.809003898946663 ], [ -122.420384124514499, 37.808933459866985 ], [ -122.420668674045118, 37.808958355470025 ], [ -122.420635748727079, 37.808756307812423 ], [ -122.420540860637956, 37.808768840609403 ], [ -122.420461300526242, 37.808303163202581 ], [ -122.419223966222532, 37.808453096037454 ], [ -122.419086067910683, 37.807803117635643 ], [ -122.418908043871269, 37.806863030947284 ], [ -122.418856183917853, 37.806607498073362 ], [ -122.418781854642702, 37.806241248585302 ], [ -122.418781807492508, 37.806241018338142 ], [ -122.418718265666911, 37.805931520041717 ], [ -122.418530631419571, 37.804999043218864 ], [ -122.418341342522965, 37.804070022432718 ], [ -122.418280954876565, 37.804023161939504 ], [ -122.418215611082957, 37.803687299847837 ], [ -122.418255886912107, 37.803650215613203 ], [ -122.418151092101994, 37.803135399210959 ], [ -122.417966229723234, 37.802201308768375 ], [ -122.41787748762404, 37.801706751150704 ], [ -122.417798642975782, 37.801267347943607 ], [ -122.417586974866069, 37.800340791478632 ], [ -122.417492539304973, 37.799906258247788 ], [ -122.417385454528372, 37.799413513042644 ], [ -122.416491256558686, 37.799525268171301 ], [ -122.41576151132729, 37.799616465113374 ], [ -122.415667503417794, 37.799150732537029 ], [ -122.415572319635913, 37.798680127283284 ], [ -122.415571551794869, 37.798676329254079 ], [ -122.415384693800732, 37.797752451808172 ], [ -122.415384105347158, 37.79774954140936 ], [ -122.415290513107706, 37.797286788953464 ], [ -122.41519297245145, 37.796804503853558 ], [ -122.415172033219093, 37.796700969266084 ], [ -122.415094279286492, 37.796316514471208 ], [ -122.415005455310151, 37.795877318912275 ], [ -122.414825631965456, 37.794988155997579 ], [ -122.414647632176155, 37.794109807074861 ], [ -122.414470074462415, 37.79322314646798 ], [ -122.414381908270244, 37.792784070108439 ], [ -122.414293264567746, 37.792342610236801 ], [ -122.414107303557273, 37.79141647884336 ], [ -122.413915879652706, 37.790463115032836 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":9,"ZIP_CODE":94111,"ID":94111},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.400058259594957, 37.793693587424592 ], [ -122.400148778887171, 37.794134234665414 ], [ -122.400149325778898, 37.794134165695652 ], [ -122.401314504615144, 37.793987063215781 ], [ -122.402133431503088, 37.793883778773662 ], [ -122.40215951272063, 37.793880489466119 ], [ -122.402957360909014, 37.793779857671261 ], [ -122.40308689535884, 37.793763518993806 ], [ -122.404016114128936, 37.793646309359175 ], [ -122.404370134182003, 37.793598168205968 ], [ -122.404613421373455, 37.793565084338127 ], [ -122.404710582177955, 37.794021380197684 ], [ -122.404796472837063, 37.794453004909116 ], [ -122.404875610619072, 37.794859533373135 ], [ -122.404957208224928, 37.795326691921687 ], [ -122.405142977212691, 37.796210954635839 ], [ -122.404412160626791, 37.796302098196776 ], [ -122.403496709817034, 37.796417485859841 ], [ -122.40291796673857, 37.796490379340391 ], [ -122.402402444702886, 37.796554566975963 ], [ -122.401853390100442, 37.796626165074152 ], [ -122.401906946643678, 37.796875708196644 ], [ -122.402040983242472, 37.797504944420098 ], [ -122.402228639238132, 37.798429701815799 ], [ -122.402420666593613, 37.799382141273902 ], [ -122.402603736644934, 37.800305175692849 ], [ -122.402604124590809, 37.800307129616797 ], [ -122.402789664410264, 37.801242172237629 ], [ -122.402883459886269, 37.801713453423041 ], [ -122.402973611142329, 37.802166419353441 ], [ -122.402973676735002, 37.802166749844929 ], [ -122.40315960682554, 37.803098380641011 ], [ -122.40352117840483, 37.80305477917063 ], [ -122.404798316633176, 37.802900762043983 ], [ -122.404986245080067, 37.803832670552438 ], [ -122.405173536628851, 37.804763212222298 ], [ -122.405356257037084, 37.805690948342658 ], [ -122.405357241074242, 37.805695943874476 ], [ -122.405362337774832, 37.805695301990511 ], [ -122.405545441190654, 37.806634177056651 ], [ -122.405495723806581, 37.806640585378162 ], [ -122.404696069838451, 37.806264743038192 ], [ -122.404128809815958, 37.80582849738515 ], [ -122.403587277644846, 37.805412029499024 ], [ -122.403194419486127, 37.805118563841738 ], [ -122.401732349384048, 37.805192215433102 ], [ -122.400572958659495, 37.806120993590262 ], [ -122.400963593501643, 37.803563391134098 ], [ -122.400842454396695, 37.803429372376385 ], [ -122.400479886428016, 37.803466118528789 ], [ -122.398551197769294, 37.804602806142064 ], [ -122.398535712754665, 37.804606489036345 ], [ -122.398520052204233, 37.804603307533085 ], [ -122.398559631153262, 37.804526444219782 ], [ -122.398227927335071, 37.804281130126874 ], [ -122.398222420518948, 37.804268857764917 ], [ -122.398225564864617, 37.80425644615601 ], [ -122.399971727587683, 37.803225025895152 ], [ -122.399602741790233, 37.802807948916175 ], [ -122.397824683987196, 37.803810348092696 ], [ -122.397809199101829, 37.803814030892141 ], [ -122.397793538749667, 37.803810849291956 ], [ -122.397517150597622, 37.803494597437428 ], [ -122.397511661501127, 37.80348301148031 ], [ -122.3975148062854, 37.803470600157546 ], [ -122.399615259663278, 37.802282404799911 ], [ -122.39972332623249, 37.802176282179168 ], [ -122.399409670069147, 37.801824238674413 ], [ -122.399371692841143, 37.801828283680663 ], [ -122.399347556878283, 37.801832106025373 ], [ -122.399325151849467, 37.801835900487347 ], [ -122.399302764032285, 37.801840381390434 ], [ -122.39928039377223, 37.801845548729034 ], [ -122.399258040722614, 37.801851402508781 ], [ -122.399235705920944, 37.801857942712921 ], [ -122.399215101014406, 37.801864455053376 ], [ -122.399192800984025, 37.8018723684091 ], [ -122.399172231180287, 37.801880253347079 ], [ -122.399151696503523, 37.801889511710215 ], [ -122.397115576147101, 37.803021039584841 ], [ -122.397100091038084, 37.803024722022734 ], [ -122.397084431235825, 37.80302154059693 ], [ -122.396146888856933, 37.801962584949095 ], [ -122.396143112804936, 37.801950284664713 ], [ -122.396146275276891, 37.801938559540567 ], [ -122.396156183429241, 37.801919858733392 ], [ -122.398383194135846, 37.80067265166084 ], [ -122.398279805658603, 37.800555512940733 ], [ -122.397989357773142, 37.800230561089471 ], [ -122.395767421385884, 37.801472872307706 ], [ -122.395751936546873, 37.801476555118818 ], [ -122.395736277114864, 37.801473372963947 ], [ -122.395444597217249, 37.801167663046662 ], [ -122.395439108270097, 37.801156076993678 ], [ -122.395442253641278, 37.801143665440662 ], [ -122.397525741108808, 37.799970200398498 ], [ -122.397542727338319, 37.799957565794791 ], [ -122.397573204312565, 37.79993098020509 ], [ -122.397588407347527, 37.799916314120374 ], [ -122.397601862985724, 37.799900989703779 ], [ -122.397613588764841, 37.799885693121588 ], [ -122.397625296656045, 37.799869710378033 ], [ -122.397635256446222, 37.799853068765884 ], [ -122.397583045956239, 37.799774248814408 ], [ -122.397381692278955, 37.799548810060863 ], [ -122.397362923291766, 37.799559412884541 ], [ -122.397350478314067, 37.799546565387622 ], [ -122.39725607725606, 37.79944232919879 ], [ -122.396973022275191, 37.799609635784066 ], [ -122.396895724416169, 37.799632854304804 ], [ -122.396944532454214, 37.799578505110418 ], [ -122.39725156444139, 37.799401198172731 ], [ -122.397069823583166, 37.79919810547964 ], [ -122.39674205306757, 37.798834607866056 ], [ -122.396702784737215, 37.798855840868825 ], [ -122.396669034992286, 37.798822047566397 ], [ -122.396624664146429, 37.798846796498019 ], [ -122.396609180236553, 37.798850479143326 ], [ -122.396595251158345, 37.798847269554258 ], [ -122.396579311359616, 37.798833104740751 ], [ -122.395709347701867, 37.79933397933474 ], [ -122.395681634538477, 37.799401037179429 ], [ -122.395581007954107, 37.799459652414193 ], [ -122.395491073098484, 37.799462471471649 ], [ -122.39520444855259, 37.799625711063314 ], [ -122.394470973718072, 37.800049529845779 ], [ -122.394485183177821, 37.80006372301127 ], [ -122.394463863656298, 37.80011007561265 ], [ -122.394495883468409, 37.800143897322769 ], [ -122.394436254505337, 37.800181251519263 ], [ -122.394338714865782, 37.800157409688907 ], [ -122.39425176311174, 37.800073652886503 ], [ -122.394244541007424, 37.799994109133792 ], [ -122.39430588261277, 37.79995604107372 ], [ -122.39433954456824, 37.799986402561352 ], [ -122.394405256913004, 37.79998397351315 ], [ -122.394419466347642, 37.799998166686734 ], [ -122.395383240540369, 37.799442229567333 ], [ -122.3954446687179, 37.79940759283992 ], [ -122.395460481077649, 37.799348967284097 ], [ -122.395564480002861, 37.799286864055659 ], [ -122.395650954616428, 37.799284100562168 ], [ -122.396137291028239, 37.799011206820815 ], [ -122.39652596834469, 37.798777651667436 ], [ -122.396513506102295, 37.798764117365188 ], [ -122.396508017858096, 37.798752531345663 ], [ -122.396511162609784, 37.798740120038758 ], [ -122.396521298172757, 37.798730342643047 ], [ -122.396562296308161, 37.798709081605075 ], [ -122.396530276519627, 37.798675260441449 ], [ -122.396574647301449, 37.798650511819105 ], [ -122.396522999163949, 37.798593657491452 ], [ -122.396499841034597, 37.79856793447253 ], [ -122.396467423337157, 37.798586310883579 ], [ -122.396357190239343, 37.798472027219738 ], [ -122.396393032843889, 37.798452222590186 ], [ -122.395860656588496, 37.797870888391557 ], [ -122.395839947322898, 37.79787328122778 ], [ -122.395814065475506, 37.797876444215788 ], [ -122.395788200806479, 37.797880293644518 ], [ -122.395762353661098, 37.797884829508355 ], [ -122.395738254199486, 37.7978900242679 ], [ -122.395712442099452, 37.797895933002444 ], [ -122.395664348290325, 37.797910440317423 ], [ -122.395640318568425, 37.797918380825799 ], [ -122.395616307044421, 37.797927007209815 ], [ -122.39557006603053, 37.797946292034375 ], [ -122.395547836878862, 37.797956950195463 ], [ -122.395525625244971, 37.797968294793179 ], [ -122.395505143760289, 37.797979611576075 ], [ -122.393842000273821, 37.798938215357374 ], [ -122.393826533722603, 37.798942584352829 ], [ -122.39381087421539, 37.798939401951962 ], [ -122.393557994085199, 37.798661220282753 ], [ -122.393552505963697, 37.798649634131031 ], [ -122.393557381363038, 37.798637194571512 ], [ -122.395454327884067, 37.797548480176857 ], [ -122.395493853667872, 37.797469558194479 ], [ -122.395422650268614, 37.797392416327632 ], [ -122.395305000587612, 37.797394307309993 ], [ -122.395131013605095, 37.797494618186263 ], [ -122.394995545751499, 37.797340909474201 ], [ -122.395176347980751, 37.797236368651362 ], [ -122.395203657816268, 37.797153523030403 ], [ -122.395175134630833, 37.797121018758673 ], [ -122.395015962104765, 37.797123576784635 ], [ -122.394842063300572, 37.797227319439131 ], [ -122.394877471902745, 37.797258339703205 ], [ -122.393211663425149, 37.798247880172283 ], [ -122.393197909634068, 37.798251534593128 ], [ -122.393182250998592, 37.798248352371843 ], [ -122.392924377254829, 37.797977803222231 ], [ -122.392918871782612, 37.79796553059834 ], [ -122.392922034593937, 37.797953805551998 ], [ -122.392933760337485, 37.797938509440698 ], [ -122.393022573378389, 37.797891760094423 ], [ -122.393418332763261, 37.797664281733844 ], [ -122.39349443929828, 37.797594387482981 ], [ -122.393614723501102, 37.797492194551531 ], [ -122.39379620770903, 37.797346441866999 ], [ -122.393858891962495, 37.797293244534764 ], [ -122.39453577454303, 37.796890939592352 ], [ -122.394518070397197, 37.796875429409333 ], [ -122.394797677744066, 37.796708870398604 ], [ -122.394681926486655, 37.796581626428896 ], [ -122.394272580881463, 37.796818941592662 ], [ -122.39351702175675, 37.797258217667746 ], [ -122.39355080472113, 37.797293385033349 ], [ -122.39316857384685, 37.797508285701419 ], [ -122.393092042374221, 37.797425733952373 ], [ -122.393468994757654, 37.797207484670842 ], [ -122.393490421626595, 37.797233236341413 ], [ -122.39412658804784, 37.796863176781166 ], [ -122.393932453058198, 37.796648603921177 ], [ -122.393850369991199, 37.796687691964301 ], [ -122.393741908884792, 37.796574751186853 ], [ -122.393880385256736, 37.796507288896663 ], [ -122.393597295890373, 37.796198002709581 ], [ -122.393523863725633, 37.796236951615114 ], [ -122.393397437145097, 37.796098203833878 ], [ -122.393481197043371, 37.796057028727645 ], [ -122.393264277786542, 37.795831146645604 ], [ -122.39319930347132, 37.795862405337601 ], [ -122.393014017140644, 37.7956552428926 ], [ -122.39305487457618, 37.795628491529783 ], [ -122.392997761288825, 37.795560736430133 ], [ -122.392816418294032, 37.795643993697439 ], [ -122.391589731865537, 37.796205501614423 ], [ -122.391196361068637, 37.795779176166889 ], [ -122.39241116638668, 37.794819563891082 ], [ -122.39226709396803, 37.794667363398794 ], [ -122.391941265746169, 37.794853886332461 ], [ -122.391649609982679, 37.794547480215279 ], [ -122.391828732520565, 37.794445031825084 ], [ -122.391802064349278, 37.794417304057546 ], [ -122.391945361729881, 37.794335345459139 ], [ -122.391890260341384, 37.794278544568918 ], [ -122.392507683750154, 37.79377708635252 ], [ -122.39249932896719, 37.793768814133983 ], [ -122.392702063215523, 37.793608792659974 ], [ -122.39270797067924, 37.793614415765255 ], [ -122.394150899798674, 37.794987788593353 ], [ -122.394745701490038, 37.794478274267938 ], [ -122.394745733667804, 37.794478246556643 ], [ -122.394747579547172, 37.794479718347191 ], [ -122.394971722038662, 37.794300351169447 ], [ -122.395317307728533, 37.794023797689903 ], [ -122.39533276386878, 37.794011429145591 ], [ -122.395622922555773, 37.793779228585429 ], [ -122.395983670970253, 37.793501461560965 ], [ -122.396302004290646, 37.793256350429786 ], [ -122.396302004629632, 37.793256350149633 ], [ -122.396376076969489, 37.793198086984006 ], [ -122.396504486670068, 37.793097082520163 ], [ -122.39738344591872, 37.792405521295422 ], [ -122.397840810091907, 37.792047595331439 ], [ -122.39826444614279, 37.791716060417308 ], [ -122.398264448861653, 37.791716058450703 ], [ -122.399148598683425, 37.79101664916432 ], [ -122.39914859901539, 37.791016648609592 ], [ -122.399148705293825, 37.791016743863253 ], [ -122.399148704954868, 37.791016744143391 ], [ -122.399494165511513, 37.791324916192721 ], [ -122.399572029409299, 37.791326533708947 ], [ -122.399763353084495, 37.792257948007119 ], [ -122.399958735737897, 37.793209101900771 ], [ -122.400058259594957, 37.793693587424592 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":10,"ZIP_CODE":94104,"ID":94104},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.400067228055164, 37.790303858609981 ], [ -122.401375490979433, 37.789264321921429 ], [ -122.4018939793784, 37.788856309111516 ], [ -122.402065730098272, 37.788721152097366 ], [ -122.401960433993054, 37.788922171387867 ], [ -122.401997470431979, 37.789102650051042 ], [ -122.402189645264357, 37.790039096806382 ], [ -122.402532679537515, 37.789995540560724 ], [ -122.40273920526738, 37.789969317269424 ], [ -122.403841563913829, 37.789829338872408 ], [ -122.403934377264903, 37.790286026286218 ], [ -122.404030724679231, 37.790760095776051 ], [ -122.404219835191427, 37.791690583910508 ], [ -122.40441842761642, 37.79263865633952 ], [ -122.404613389070732, 37.793564931583006 ], [ -122.404613421373455, 37.793565084338127 ], [ -122.404370134182003, 37.793598168205968 ], [ -122.404016114128936, 37.793646309359175 ], [ -122.40308689535884, 37.793763518993806 ], [ -122.402957360909014, 37.793779857671261 ], [ -122.40215951272063, 37.793880489466119 ], [ -122.402133431503088, 37.793883778773662 ], [ -122.401314504615144, 37.793987063215781 ], [ -122.400149325778898, 37.794134165695652 ], [ -122.400148778887171, 37.794134234665414 ], [ -122.400058259594957, 37.793693587424592 ], [ -122.399958735737897, 37.793209101900771 ], [ -122.399763353084495, 37.792257948007119 ], [ -122.399572029409299, 37.791326533708947 ], [ -122.399494165511513, 37.791324916192721 ], [ -122.399148704954868, 37.791016744143391 ], [ -122.399148705293825, 37.791016743863253 ], [ -122.39914859901539, 37.791016648609592 ], [ -122.399222136170906, 37.790956214990921 ], [ -122.399480001759599, 37.790744297277485 ], [ -122.399919790020746, 37.790414442896498 ], [ -122.400024135710936, 37.790336179680637 ], [ -122.400067228055164, 37.790303858609981 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":11,"ZIP_CODE":94108,"ID":94108},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.404219835191427, 37.791690583910508 ], [ -122.404030724679231, 37.790760095776051 ], [ -122.403934377264903, 37.790286026286218 ], [ -122.403841563913829, 37.789829338872408 ], [ -122.40273920526738, 37.789969317269424 ], [ -122.402532679537515, 37.789995540560724 ], [ -122.402189645264357, 37.790039096806382 ], [ -122.401997470431979, 37.789102650051042 ], [ -122.401960433993054, 37.788922171387867 ], [ -122.402065730098272, 37.788721152097366 ], [ -122.402404665507532, 37.788463925757384 ], [ -122.402903089488873, 37.788085654318181 ], [ -122.40290309900054, 37.788085647297414 ], [ -122.403239953883428, 37.787802352067843 ], [ -122.403430800369534, 37.787641848645734 ], [ -122.403925775648347, 37.787250481113581 ], [ -122.404583316787637, 37.786730565897571 ], [ -122.404583317133643, 37.786730565891986 ], [ -122.404583317818549, 37.786730565606241 ], [ -122.4045836593057, 37.786730668317922 ], [ -122.404583659644615, 37.786730668037741 ], [ -122.404849901045083, 37.78680995410096 ], [ -122.405346079234604, 37.786747618574395 ], [ -122.40639887788349, 37.786615347203238 ], [ -122.408036236552462, 37.786409613336666 ], [ -122.408226725993813, 37.78735926231473 ], [ -122.408401550373739, 37.788293193957799 ], [ -122.408595045382015, 37.789225614946417 ], [ -122.408595692092703, 37.789225606675593 ], [ -122.410242438640608, 37.789016337723744 ], [ -122.411885657146456, 37.788807543703371 ], [ -122.412075867445836, 37.789739906579548 ], [ -122.412154318600955, 37.79012444884593 ], [ -122.412266187164306, 37.790672783986288 ], [ -122.413915879652706, 37.790463115032836 ], [ -122.414107303557273, 37.79141647884336 ], [ -122.414293264567746, 37.792342610236801 ], [ -122.414381908270244, 37.792784070108439 ], [ -122.414470074462415, 37.79322314646798 ], [ -122.414647632176155, 37.794109807074861 ], [ -122.414825631965456, 37.794988155997579 ], [ -122.413187771447625, 37.795197816725128 ], [ -122.412335878555311, 37.795306857217497 ], [ -122.411893657029495, 37.795363458292385 ], [ -122.411541531721369, 37.795408526524874 ], [ -122.411081667103218, 37.795467382264249 ], [ -122.40989875147848, 37.795616424537307 ], [ -122.40954722057397, 37.795660707190791 ], [ -122.409343544204319, 37.795686363949223 ], [ -122.409077868767497, 37.795719830108119 ], [ -122.409075520379659, 37.795720125786943 ], [ -122.408743234497422, 37.795761981540487 ], [ -122.408704654154022, 37.795766841471867 ], [ -122.408253202051654, 37.795823706218044 ], [ -122.40779730388941, 37.795880962818103 ], [ -122.407563768850565, 37.795910291726024 ], [ -122.407432089697608, 37.795926828732469 ], [ -122.407319877605971, 37.795940921047873 ], [ -122.407083680819795, 37.795970583772274 ], [ -122.406652352369846, 37.796024750165536 ], [ -122.406350669109713, 37.796061968858353 ], [ -122.406224736410849, 37.796077505131322 ], [ -122.405862652252878, 37.796122174218517 ], [ -122.405142977212691, 37.796210954635839 ], [ -122.404957208224928, 37.795326691921687 ], [ -122.404875610619072, 37.794859533373135 ], [ -122.404796472837063, 37.794453004909116 ], [ -122.404710582177955, 37.794021380197684 ], [ -122.404613421373455, 37.793565084338127 ], [ -122.404613389070732, 37.793564931583006 ], [ -122.40441842761642, 37.79263865633952 ], [ -122.404219835191427, 37.791690583910508 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":12,"ZIP_CODE":94103,"ID":94103},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.403877699904385, 37.770062866265505 ], [ -122.403615112128733, 37.769893190404822 ], [ -122.403406518421917, 37.769807099957397 ], [ -122.403037758616776, 37.769828657390953 ], [ -122.402926809989424, 37.76864812762463 ], [ -122.401962350744, 37.768706209224241 ], [ -122.401842503677628, 37.76743077711658 ], [ -122.400877239583821, 37.76748837440357 ], [ -122.400680751363893, 37.767503407870436 ], [ -122.4004285874814, 37.76730030349627 ], [ -122.399677637243116, 37.766695444602661 ], [ -122.39980174760619, 37.766587745781216 ], [ -122.399760960198876, 37.766250252443854 ], [ -122.40075504647362, 37.766190486570189 ], [ -122.401720515816834, 37.766132520250999 ], [ -122.401604204317508, 37.764894634517518 ], [ -122.401598999326723, 37.764839236400867 ], [ -122.402563396844656, 37.764781034314389 ], [ -122.403527034519726, 37.764722870371436 ], [ -122.404496977488066, 37.764664317561468 ], [ -122.404841911264157, 37.764643492872132 ], [ -122.405089602982216, 37.764628538373131 ], [ -122.405089603673972, 37.764628538361961 ], [ -122.405463420216606, 37.764605967981389 ], [ -122.406005237363416, 37.764573252226405 ], [ -122.406429152848446, 37.764547653527842 ], [ -122.406429154577822, 37.764547653499882 ], [ -122.406859230067056, 37.764521681123377 ], [ -122.407419737953433, 37.764487829924626 ], [ -122.407534229395537, 37.765783299286987 ], [ -122.408544242939584, 37.765722599679115 ], [ -122.410486689274492, 37.765605838622655 ], [ -122.411455262151748, 37.765547605227276 ], [ -122.412416426589019, 37.765489809283601 ], [ -122.413105243007919, 37.765447608576679 ], [ -122.415308388038014, 37.765314639624691 ], [ -122.416387522888556, 37.765249494040667 ], [ -122.41748659577631, 37.765183134636899 ], [ -122.418579138459435, 37.765117159398407 ], [ -122.418698425401715, 37.765109955145007 ], [ -122.419668972681833, 37.765051337054757 ], [ -122.420482492120144, 37.765002197009743 ], [ -122.420580607922048, 37.764996270018614 ], [ -122.420901270224292, 37.764976898858535 ], [ -122.421239593012103, 37.764956459387825 ], [ -122.421381475659516, 37.764947887797014 ], [ -122.421886445840627, 37.764917378530825 ], [ -122.42285341443899, 37.764858950163855 ], [ -122.423112421134832, 37.764843298770074 ], [ -122.424102683503691, 37.764783452170008 ], [ -122.424574375550648, 37.764754942537614 ], [ -122.426381062356072, 37.764645726997848 ], [ -122.426381062758907, 37.764645729188807 ], [ -122.426381708477521, 37.764645690891633 ], [ -122.426490697526233, 37.765773605772118 ], [ -122.426518991136163, 37.766066400051031 ], [ -122.426538465047457, 37.766267922745747 ], [ -122.426572006355102, 37.766615035704866 ], [ -122.426615944414863, 37.767069730096857 ], [ -122.426693183296933, 37.76786901846797 ], [ -122.426693183304053, 37.767869018742559 ], [ -122.426902347012131, 37.769049368265463 ], [ -122.426309438735913, 37.769602597220121 ], [ -122.424852598682307, 37.770747745074537 ], [ -122.423971653706317, 37.771401668385572 ], [ -122.423707555870649, 37.771638138620823 ], [ -122.42361952356508, 37.771716961429995 ], [ -122.423479344850293, 37.771827141530693 ], [ -122.423258913662679, 37.772000399157754 ], [ -122.422619690282815, 37.772502817311128 ], [ -122.422169936976104, 37.77285593639396 ], [ -122.421941247178026, 37.773036050819961 ], [ -122.421284370393934, 37.77356039048216 ], [ -122.421008229272687, 37.773780811646674 ], [ -122.420910608715644, 37.773852419132908 ], [ -122.420699239041511, 37.774007568561714 ], [ -122.420698854806645, 37.774007872313192 ], [ -122.42069877383058, 37.774007805509001 ], [ -122.420254278900828, 37.774358674888319 ], [ -122.420254205644639, 37.774358732668077 ], [ -122.419544527888206, 37.774918988504218 ], [ -122.419256088091217, 37.775146694295351 ], [ -122.419256086565611, 37.775146688826375 ], [ -122.419255604623004, 37.775147068879761 ], [ -122.419255606501622, 37.775147074617692 ], [ -122.419255600381447, 37.775147078837719 ], [ -122.418683590110874, 37.775586568849455 ], [ -122.417757669457401, 37.776334062520824 ], [ -122.417501462863584, 37.776540893581355 ], [ -122.416757677810395, 37.777126789723972 ], [ -122.416291701725271, 37.777493842582118 ], [ -122.416291701393504, 37.777493843136881 ], [ -122.416024573316548, 37.777713893977598 ], [ -122.415925978170975, 37.777795112873314 ], [ -122.414741221622947, 37.778719429321896 ], [ -122.412512255967954, 37.78047851222005 ], [ -122.412243715889375, 37.780689421480552 ], [ -122.411972359306191, 37.780902540886757 ], [ -122.411972358960256, 37.78090254089237 ], [ -122.411625130786987, 37.781189627190479 ], [ -122.410716598656492, 37.781899054565059 ], [ -122.410292026384454, 37.782230575136197 ], [ -122.40895215871069, 37.783287852576514 ], [ -122.408597310055299, 37.783569788681966 ], [ -122.408066548174432, 37.783991486066526 ], [ -122.408066547510714, 37.783991487176031 ], [ -122.407625723544982, 37.784337071806426 ], [ -122.406821367207598, 37.78496763543707 ], [ -122.405831011063668, 37.78574398921409 ], [ -122.405371564397683, 37.786107287119592 ], [ -122.404583317818549, 37.786730565606241 ], [ -122.404583317133643, 37.786730565891986 ], [ -122.404583316787637, 37.786730565897571 ], [ -122.403925775648347, 37.787250481113581 ], [ -122.403430800369534, 37.787641848645734 ], [ -122.403342641535644, 37.787274627660381 ], [ -122.403028734856406, 37.78702485040828 ], [ -122.403028193190352, 37.787024418822838 ], [ -122.402575227394536, 37.786678208153539 ], [ -122.402025419766176, 37.786248152290575 ], [ -122.401489835489045, 37.785829214187501 ], [ -122.401480059865179, 37.785821567351917 ], [ -122.400998469557948, 37.785444857061968 ], [ -122.400994549885382, 37.785441790992316 ], [ -122.400468483886854, 37.785030285141588 ], [ -122.399369533643153, 37.785899247741973 ], [ -122.397811613142864, 37.784666586003652 ], [ -122.398930331092998, 37.783784933304034 ], [ -122.399891477967842, 37.783025880124256 ], [ -122.400019020063766, 37.782925153640136 ], [ -122.400374366843309, 37.782644515545172 ], [ -122.401159718585049, 37.782024266952142 ], [ -122.403387209275081, 37.78026497235011 ], [ -122.404431250807633, 37.779440334605447 ], [ -122.405615266425855, 37.778505104539292 ], [ -122.405068508898097, 37.778068981419388 ], [ -122.404605505853894, 37.777699659794813 ], [ -122.404070256642925, 37.777272702482797 ], [ -122.403673439982725, 37.776956165214415 ], [ -122.403505778866929, 37.776822422431877 ], [ -122.40337073826143, 37.776714700215486 ], [ -122.402524096584528, 37.776039321403807 ], [ -122.400981567656032, 37.774808775969753 ], [ -122.400592319049849, 37.774498244536282 ], [ -122.400212340771517, 37.774195105423317 ], [ -122.400212340411557, 37.77419510487973 ], [ -122.399433130909728, 37.773573455617395 ], [ -122.401656680421155, 37.7718171255028 ], [ -122.403877699904385, 37.770062866265505 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":13,"ZIP_CODE":94115,"ID":94115},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.447679208068394, 37.79170289872647 ], [ -122.44720637942703, 37.791763091830468 ], [ -122.446299547924625, 37.791878529215651 ], [ -122.446299573716246, 37.791878694429421 ], [ -122.446446033268856, 37.792810866507708 ], [ -122.446446456540414, 37.792813716046261 ], [ -122.446587034424141, 37.793765298555968 ], [ -122.445035345747925, 37.79396273368863 ], [ -122.443384198876302, 37.794172877898092 ], [ -122.441712771485612, 37.794385578392699 ], [ -122.440870170501768, 37.794492795601883 ], [ -122.440868123190498, 37.794493055920753 ], [ -122.440045216960385, 37.794597761146619 ], [ -122.438402484723895, 37.794806973138577 ], [ -122.436760975027326, 37.795016021968365 ], [ -122.435113289920963, 37.795225833115033 ], [ -122.433469062960725, 37.795435179810816 ], [ -122.431827832563371, 37.79564412085616 ], [ -122.430182832162615, 37.795853517593606 ], [ -122.429989276973558, 37.794894937362344 ], [ -122.429803981887915, 37.793977244761322 ], [ -122.429625242377327, 37.793098475947545 ], [ -122.429447192175289, 37.79221689778025 ], [ -122.429269817037863, 37.791338636935983 ], [ -122.429092268257477, 37.790459499306614 ], [ -122.428905308896674, 37.789533740830485 ], [ -122.428712111452299, 37.788577067507021 ], [ -122.428525011003728, 37.78765056176524 ], [ -122.428335613076769, 37.786712655890966 ], [ -122.428241829261111, 37.786248226022003 ], [ -122.428241496400901, 37.78624657727314 ], [ -122.428148186422831, 37.785784488173462 ], [ -122.427988927379005, 37.784953879052303 ], [ -122.427778871361184, 37.783924735360486 ], [ -122.427584325166535, 37.78298604740867 ], [ -122.427490665181679, 37.782522998381459 ], [ -122.427396397680198, 37.782056939506091 ], [ -122.42720275579525, 37.781117127328834 ], [ -122.427016756808811, 37.780193030481158 ], [ -122.42868554474839, 37.779980201690215 ], [ -122.430233236584385, 37.779782794230314 ], [ -122.431951802315041, 37.779564148987781 ], [ -122.433595938040227, 37.779354585436536 ], [ -122.435241012398947, 37.779144878458894 ], [ -122.436884629197735, 37.778937753600381 ], [ -122.437707163233824, 37.778832380147421 ], [ -122.43855227772093, 37.778724107938281 ], [ -122.440213334218711, 37.778511463388014 ], [ -122.441865640580161, 37.778299553615973 ], [ -122.441865640558632, 37.778299552792262 ], [ -122.441865967212379, 37.778299511152262 ], [ -122.441865967226732, 37.778299511701405 ], [ -122.443506919728407, 37.778089213415292 ], [ -122.445155752336433, 37.777886506805444 ], [ -122.446846469920573, 37.777669108909684 ], [ -122.447039806751391, 37.778622307248391 ], [ -122.447351927163439, 37.780152061280916 ], [ -122.447517982733274, 37.781069510753063 ], [ -122.447576361567485, 37.781175778551805 ], [ -122.447655108274333, 37.781537309189886 ], [ -122.447637300982407, 37.781719177617617 ], [ -122.447450898997985, 37.782195217632704 ], [ -122.447301513844337, 37.78239164221629 ], [ -122.447283893261542, 37.782434393634787 ], [ -122.447225622636566, 37.782575775503396 ], [ -122.447173033991248, 37.782710075581413 ], [ -122.447149436147441, 37.783030677550911 ], [ -122.447549635601661, 37.784906798974511 ], [ -122.447578549915917, 37.784998355250835 ], [ -122.447620107068687, 37.785083635258417 ], [ -122.447621599012791, 37.785194684567394 ], [ -122.447605133356163, 37.785275579171099 ], [ -122.447533801639068, 37.785411415165207 ], [ -122.446849274413296, 37.786186897081585 ], [ -122.446738337622591, 37.786243163870765 ], [ -122.446610465639836, 37.786302298311156 ], [ -122.446792779960703, 37.787261853518181 ], [ -122.4469741664482, 37.788186460801001 ], [ -122.448656220796209, 37.787977164570449 ], [ -122.448835781299294, 37.788856511426609 ], [ -122.449011564525605, 37.789726786022129 ], [ -122.449189583391288, 37.790608108274284 ], [ -122.449367313308201, 37.791487980191171 ], [ -122.447679208068394, 37.79170289872647 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":14,"ZIP_CODE":94102,"ID":94102},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.419255600381447, 37.775147078837719 ], [ -122.419255606501622, 37.775147074617692 ], [ -122.419255604623004, 37.775147068879761 ], [ -122.419256086565611, 37.775146688826375 ], [ -122.419256088091217, 37.775146694295351 ], [ -122.419544527888206, 37.774918988504218 ], [ -122.420254205644639, 37.774358732668077 ], [ -122.420254278900828, 37.774358674888319 ], [ -122.42069877383058, 37.774007805509001 ], [ -122.420698854806645, 37.774007872313192 ], [ -122.420699239041511, 37.774007568561714 ], [ -122.420910608715644, 37.773852419132908 ], [ -122.421008229272687, 37.773780811646674 ], [ -122.421284370393934, 37.77356039048216 ], [ -122.421941247178026, 37.773036050819961 ], [ -122.422169936976104, 37.77285593639396 ], [ -122.422619690282815, 37.772502817311128 ], [ -122.423258913662679, 37.772000399157754 ], [ -122.423479344850293, 37.771827141530693 ], [ -122.42361952356508, 37.771716961429995 ], [ -122.423707555870649, 37.771638138620823 ], [ -122.423971653706317, 37.771401668385572 ], [ -122.424852598682307, 37.770747745074537 ], [ -122.426309438735913, 37.769602597220121 ], [ -122.426683978032827, 37.769533626427062 ], [ -122.428218351470321, 37.769440923680406 ], [ -122.428428952948465, 37.770451409238284 ], [ -122.428426180541749, 37.770451760600665 ], [ -122.428520173517541, 37.770917853912216 ], [ -122.428614043687816, 37.771383330257258 ], [ -122.428708105393241, 37.771849753810166 ], [ -122.428802101899663, 37.772315846507482 ], [ -122.428990051967787, 37.773247800757233 ], [ -122.42917834319843, 37.774181422747475 ], [ -122.429178342852524, 37.774181422753124 ], [ -122.429178383795261, 37.774181626728783 ], [ -122.429178384487102, 37.774181626717471 ], [ -122.429272630354163, 37.774648924607646 ], [ -122.429365859793393, 37.775111180032617 ], [ -122.42955405641294, 37.77604428584678 ], [ -122.429622603726443, 37.776331628240193 ], [ -122.429626330769736, 37.776513151917612 ], [ -122.429686883301301, 37.776976022351889 ], [ -122.429849199803343, 37.777919295570904 ], [ -122.430047265291023, 37.778850928515844 ], [ -122.430233236584385, 37.779782794230314 ], [ -122.42868554474839, 37.779980201690215 ], [ -122.427016756808811, 37.780193030481158 ], [ -122.42720275579525, 37.781117127328834 ], [ -122.427396397680198, 37.782056939506091 ], [ -122.424108200948226, 37.782477051425644 ], [ -122.422597534917514, 37.782659914421728 ], [ -122.422463744273344, 37.782685368786026 ], [ -122.420817002825672, 37.782894121654586 ], [ -122.420816620257895, 37.78289417046458 ], [ -122.419181703937824, 37.783101400150407 ], [ -122.417528773439201, 37.78331088958533 ], [ -122.415882538254209, 37.783515640872785 ], [ -122.414241572919337, 37.783723783021379 ], [ -122.414430198422409, 37.784657140813145 ], [ -122.414617207572036, 37.785582474657787 ], [ -122.414806647966373, 37.786519819325378 ], [ -122.414995423274036, 37.787453843784689 ], [ -122.414995029297003, 37.787453894134082 ], [ -122.415185269301574, 37.788387930678724 ], [ -122.413541442066688, 37.788598204045492 ], [ -122.411885657146456, 37.788807543703371 ], [ -122.410242438640608, 37.789016337723744 ], [ -122.408595692092703, 37.789225606675593 ], [ -122.408595045382015, 37.789225614946417 ], [ -122.408401550373739, 37.788293193957799 ], [ -122.408226725993813, 37.78735926231473 ], [ -122.408036236552462, 37.786409613336666 ], [ -122.40639887788349, 37.786615347203238 ], [ -122.405346079234604, 37.786747618574395 ], [ -122.404849901045083, 37.78680995410096 ], [ -122.404583659644615, 37.786730668037741 ], [ -122.4045836593057, 37.786730668317922 ], [ -122.404583317818549, 37.786730565606241 ], [ -122.405371564397683, 37.786107287119592 ], [ -122.405831011063668, 37.78574398921409 ], [ -122.406821367207598, 37.78496763543707 ], [ -122.407625723544982, 37.784337071806426 ], [ -122.408066547510714, 37.783991487176031 ], [ -122.408066548174432, 37.783991486066526 ], [ -122.408597310055299, 37.783569788681966 ], [ -122.40895215871069, 37.783287852576514 ], [ -122.410292026384454, 37.782230575136197 ], [ -122.410716598656492, 37.781899054565059 ], [ -122.411625130786987, 37.781189627190479 ], [ -122.411972358960256, 37.78090254089237 ], [ -122.411972359306191, 37.780902540886757 ], [ -122.412243715889375, 37.780689421480552 ], [ -122.412512255967954, 37.78047851222005 ], [ -122.413308361492682, 37.779850246537862 ], [ -122.414741221622947, 37.778719429321896 ], [ -122.415925978170975, 37.777795112873314 ], [ -122.416024573316548, 37.777713893977598 ], [ -122.416291701393504, 37.777493843136881 ], [ -122.416291701725271, 37.777493842582118 ], [ -122.416757677810395, 37.777126789723972 ], [ -122.417501462863584, 37.776540893581355 ], [ -122.417757669457401, 37.776334062520824 ], [ -122.418683590110874, 37.775586568849455 ], [ -122.419255600381447, 37.775147078837719 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":15,"ZIP_CODE":94124,"ID":94124},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.398991043085772, 37.715338797679301 ], [ -122.398953101659146, 37.715385829745912 ], [ -122.398839335741798, 37.715526852955328 ], [ -122.398735527529269, 37.715727131371494 ], [ -122.398656056102226, 37.71588045500463 ], [ -122.398643015232707, 37.715917722950913 ], [ -122.398565370170317, 37.716139616445538 ], [ -122.398550700112352, 37.7161815389411 ], [ -122.398499278161879, 37.716543657492224 ], [ -122.398561414050022, 37.716897923924947 ], [ -122.398668885707423, 37.717503589023465 ], [ -122.398686680058731, 37.717603871431201 ], [ -122.39871606167118, 37.717769450850419 ], [ -122.398759937061044, 37.718047446028777 ], [ -122.398787867001658, 37.718224410399863 ], [ -122.398799134608808, 37.718275024173522 ], [ -122.398913161799925, 37.718792447247658 ], [ -122.398923285260594, 37.718836507697276 ], [ -122.398942440206895, 37.718921151552976 ], [ -122.398943601880902, 37.718926286066001 ], [ -122.399066465573654, 37.719469200866385 ], [ -122.399125486878972, 37.719730004239857 ], [ -122.399208340593788, 37.719991530079234 ], [ -122.399309038031902, 37.720278334103305 ], [ -122.399419264352986, 37.720532021245042 ], [ -122.399600300155441, 37.720920363637823 ], [ -122.399830553211288, 37.721427080386505 ], [ -122.399925016822507, 37.721517272170509 ], [ -122.40038213245046, 37.722633285332655 ], [ -122.400661931084002, 37.723316373994798 ], [ -122.400784747286778, 37.723616209251418 ], [ -122.40078474798517, 37.723616209514844 ], [ -122.401182917574161, 37.724588254281116 ], [ -122.401471218295981, 37.725516183407578 ], [ -122.401474642450822, 37.725528485745301 ], [ -122.401822425920514, 37.726775260854211 ], [ -122.401875118236148, 37.726964759399728 ], [ -122.402039596395539, 37.727554690472438 ], [ -122.402105120777605, 37.727789703519925 ], [ -122.402209197740476, 37.728101973566574 ], [ -122.402752244737584, 37.729357163240891 ], [ -122.403021622188092, 37.729901901370539 ], [ -122.403400462440644, 37.730658352585962 ], [ -122.403961731325225, 37.731610333558521 ], [ -122.40405482060109, 37.731789516245591 ], [ -122.40465709692171, 37.732948781873532 ], [ -122.404657097641305, 37.732948782960683 ], [ -122.404878800551302, 37.733336356125804 ], [ -122.405096042524178, 37.733716127227488 ], [ -122.405494571184249, 37.734287050530888 ], [ -122.406294659725731, 37.735306888886043 ], [ -122.406454646881144, 37.735510813404687 ], [ -122.406618861734884, 37.735896873766244 ], [ -122.40670383539134, 37.73630860402433 ], [ -122.406910504104971, 37.737965866913434 ], [ -122.406900092501772, 37.738009155282221 ], [ -122.406867742024218, 37.738143654094841 ], [ -122.406895428755547, 37.738323651840822 ], [ -122.406915744052654, 37.738455725148341 ], [ -122.40693392611557, 37.738601770051126 ], [ -122.406945393527934, 37.738693880058896 ], [ -122.406939830707117, 37.738876165961258 ], [ -122.406936851773693, 37.739087891690275 ], [ -122.406930338448149, 37.739188255204461 ], [ -122.40692734433064, 37.739234393770168 ], [ -122.406923419099328, 37.739294876190314 ], [ -122.406917382338506, 37.739360326809205 ], [ -122.40691098434678, 37.739429695993088 ], [ -122.406910847801768, 37.73943120901172 ], [ -122.406977761294414, 37.739566302699039 ], [ -122.406889400847547, 37.739668564915668 ], [ -122.407641980575562, 37.73960607595005 ], [ -122.407891817991583, 37.739621065115479 ], [ -122.407910235902733, 37.739622169745928 ], [ -122.408137030577961, 37.739635775942595 ], [ -122.408114071971212, 37.739818086787388 ], [ -122.408049229318891, 37.740339110042903 ], [ -122.407964646391505, 37.740662552272049 ], [ -122.407846654253319, 37.741024367104636 ], [ -122.407757062965644, 37.741253133394146 ], [ -122.407625696256517, 37.741528038897464 ], [ -122.407448073794797, 37.741860521932459 ], [ -122.407209491524853, 37.742235666028684 ], [ -122.407179681106143, 37.742274728523746 ], [ -122.406881612449212, 37.742665295031905 ], [ -122.406149889909912, 37.743534947555823 ], [ -122.406047831839984, 37.743656241756561 ], [ -122.405778655290121, 37.743989539741165 ], [ -122.405747110957691, 37.744028598841339 ], [ -122.405475695814175, 37.744427001636382 ], [ -122.405444172050537, 37.744486004341084 ], [ -122.405202201087945, 37.744938889063008 ], [ -122.405179630488661, 37.744981134097749 ], [ -122.405051159825348, 37.745369647465395 ], [ -122.40491012189095, 37.745826558312224 ], [ -122.40472494664624, 37.746505061967419 ], [ -122.404496510435962, 37.747208430674682 ], [ -122.404390053649081, 37.747536214374357 ], [ -122.404249303912664, 37.747969580021021 ], [ -122.404105247604519, 37.748421906188959 ], [ -122.404104297626958, 37.748424888760844 ], [ -122.404103617259366, 37.748427025595028 ], [ -122.404051662308461, 37.74859015799958 ], [ -122.403990987296382, 37.74878066971192 ], [ -122.403865672790147, 37.749174139069758 ], [ -122.403826366530197, 37.749298003881435 ], [ -122.403783562755194, 37.749432891426196 ], [ -122.403667613571599, 37.749458113882532 ], [ -122.403568849778438, 37.749475672986911 ], [ -122.403260968692152, 37.749530409553117 ], [ -122.403203674195439, 37.749534260068266 ], [ -122.402968925612569, 37.749550036933734 ], [ -122.402866309087059, 37.749478458911533 ], [ -122.402866303074774, 37.749478453789486 ], [ -122.402746245055127, 37.749375020002113 ], [ -122.402215286387033, 37.749358244852793 ], [ -122.402063015501824, 37.749396333205695 ], [ -122.40206163398004, 37.749396678541473 ], [ -122.397285415820363, 37.749684622841229 ], [ -122.396273544250747, 37.74974560058007 ], [ -122.395307862010839, 37.749803786070743 ], [ -122.395231400136637, 37.749808114846253 ], [ -122.393340265733656, 37.749915158351328 ], [ -122.393322792145199, 37.749917097944952 ], [ -122.393314555211816, 37.749918012051069 ], [ -122.392381992909165, 37.750021506018193 ], [ -122.392354048972692, 37.750025545503377 ], [ -122.392350740047519, 37.750026024134087 ], [ -122.391929934247997, 37.750086859865874 ], [ -122.391714686151033, 37.750109474739723 ], [ -122.391705979739527, 37.750110389401705 ], [ -122.391693805117924, 37.750111668488358 ], [ -122.391418367221192, 37.750140606282606 ], [ -122.390433038183829, 37.750118341633915 ], [ -122.389478017653872, 37.750145107673561 ], [ -122.388507729357968, 37.750205975353602 ], [ -122.387585270262662, 37.750263378063039 ], [ -122.387633974640565, 37.751559603455405 ], [ -122.387756280477618, 37.752835611637821 ], [ -122.386811646507837, 37.752890377320497 ], [ -122.385845701796796, 37.752946370817803 ], [ -122.38487975596891, 37.753002356118301 ], [ -122.383913808692512, 37.753058333776714 ], [ -122.383438933023925, 37.753085850281579 ], [ -122.382951309683904, 37.753114103639163 ], [ -122.382560989570067, 37.75313671714089 ], [ -122.382560765120331, 37.753136419940226 ], [ -122.381985040410456, 37.753169774197133 ], [ -122.381708677132991, 37.753185861496782 ], [ -122.38168223616799, 37.75316636834409 ], [ -122.381661069503124, 37.753150224878624 ], [ -122.381641614233217, 37.753133367358956 ], [ -122.381622142285593, 37.753115823651214 ], [ -122.381604399103537, 37.753098251789652 ], [ -122.381556374012021, 37.753046140647704 ], [ -122.381542176020147, 37.753031946080576 ], [ -122.381526284033754, 37.753019152008761 ], [ -122.381510409098041, 37.753007044663264 ], [ -122.381492804694034, 37.752994964377287 ], [ -122.381475235761897, 37.75298425724899 ], [ -122.381436673423011, 37.752964271381444 ], [ -122.381417427536135, 37.752955650919624 ], [ -122.381375546404385, 37.752941211547565 ], [ -122.381354640609899, 37.75293536475278 ], [ -122.381333752201158, 37.75293020440273 ], [ -122.381311151719544, 37.752925758105562 ], [ -122.381288586703278, 37.752922684964496 ], [ -122.381266038711004, 37.75292029772389 ], [ -122.381243508115659, 37.752918597476601 ], [ -122.381221011931387, 37.752918269852813 ], [ -122.381184718304496, 37.752919535917627 ], [ -122.381162274601664, 37.752921267347901 ], [ -122.381139865666057, 37.752924371945412 ], [ -122.381117473763211, 37.752928162992639 ], [ -122.381095099929965, 37.752932640473013 ], [ -122.381072743135178, 37.752937804677757 ], [ -122.381050368943576, 37.752942281880571 ], [ -122.381027977030755, 37.752946072910795 ], [ -122.38100556843483, 37.752949177751802 ], [ -122.38098141298515, 37.752951623194257 ], [ -122.380958968929022, 37.752953354865902 ], [ -122.380936508184703, 37.752954400073762 ], [ -122.380889821786923, 37.752955145192665 ], [ -122.380865579793621, 37.752954158637948 ], [ -122.380843066568161, 37.752953144488032 ], [ -122.380797970609038, 37.752948370381233 ], [ -122.380773676141516, 37.752945324467625 ], [ -122.380728475930468, 37.752936431643164 ], [ -122.380707587564899, 37.752931271182163 ], [ -122.380684952713352, 37.752925451862353 ], [ -122.380667539609021, 37.752920922661339 ], [ -122.380641464261203, 37.752915844962516 ], [ -122.380615405953847, 37.752911453986556 ], [ -122.380589365011275, 37.752907748904235 ], [ -122.38056161234158, 37.752904758130924 ], [ -122.38053562319034, 37.752903112662466 ], [ -122.380507905274172, 37.752901494773603 ], [ -122.380480204733729, 37.752900563326783 ], [ -122.380433519056851, 37.752901308253911 ], [ -122.380238268028847, 37.752909917328637 ], [ -122.380029271599042, 37.752922178983432 ], [ -122.379994654613483, 37.752921358032168 ], [ -122.379959933403185, 37.752916418104356 ], [ -122.379944267166053, 37.752912547382195 ], [ -122.379912864887501, 37.752902060691724 ], [ -122.379897129538875, 37.752895444712365 ], [ -122.379883105576184, 37.752888114156903 ], [ -122.37987077565819, 37.752879383675683 ], [ -122.379861869913029, 37.752869224847544 ], [ -122.379854658198184, 37.752857665545626 ], [ -122.379850887331656, 37.752845364357682 ], [ -122.379850574694558, 37.752833008281776 ], [ -122.379853720278177, 37.752820597043424 ], [ -122.37985861234651, 37.752808844946877 ], [ -122.379865250884947, 37.752797751442777 ], [ -122.379882315832674, 37.752788551525661 ], [ -122.379911450501524, 37.752777785898218 ], [ -122.379938873076583, 37.752767734300228 ], [ -122.379980076404905, 37.752755402685878 ], [ -122.379993770314556, 37.752749690431031 ], [ -122.380005682657426, 37.752741946417643 ], [ -122.380015797100285, 37.752731484181091 ], [ -122.380022435608339, 37.752720390667974 ], [ -122.380025580812656, 37.752707979430312 ], [ -122.380025233406471, 37.752694250457282 ], [ -122.380007137303139, 37.752457618747144 ], [ -122.379959987158614, 37.752029854003567 ], [ -122.379883834201038, 37.752034160974858 ], [ -122.376087329752295, 37.752248827801239 ], [ -122.375771286398191, 37.74870623521705 ], [ -122.382681120134976, 37.748282212078522 ], [ -122.384914143794745, 37.748144880283171 ], [ -122.384920340493579, 37.748184611607194 ], [ -122.384650947212847, 37.748201967818915 ], [ -122.384670831989453, 37.748303972394424 ], [ -122.384688156495528, 37.748305068501672 ], [ -122.384721007906435, 37.748304543099884 ], [ -122.384738280527714, 37.748303580123398 ], [ -122.384755518322564, 37.748301244247457 ], [ -122.384771026767297, 37.748298936027936 ], [ -122.384788230079309, 37.748295227244739 ], [ -122.384803704040692, 37.748291546118445 ], [ -122.384819160241221, 37.748287178547208 ], [ -122.384850004018801, 37.748275697588227 ], [ -122.384865408317154, 37.748269270660025 ], [ -122.384882471958647, 37.748260070280949 ], [ -122.384896077598697, 37.748250925484513 ], [ -122.384911429637739, 37.748242438930326 ], [ -122.384926799094799, 37.748234639097134 ], [ -122.384942203039174, 37.748228212438939 ], [ -122.384959354081715, 37.748222444285403 ], [ -122.384976521838055, 37.748217362314264 ], [ -122.384993725120907, 37.748213653501011 ], [ -122.385009181639873, 37.748209285899271 ], [ -122.385022856909728, 37.748202886607288 ], [ -122.385036497346164, 37.748195114416852 ], [ -122.385046610116049, 37.748184651746037 ], [ -122.385053264882572, 37.748174244389467 ], [ -122.385059867399946, 37.748161777687201 ], [ -122.385062977084218, 37.748147993403109 ], [ -122.385067868014104, 37.74813624080646 ], [ -122.38507799784864, 37.748126464861393 ], [ -122.385089892189129, 37.748118033594025 ], [ -122.38510529608827, 37.748111606639817 ], [ -122.385120787757828, 37.748108611914709 ], [ -122.385138077744813, 37.748108335328041 ], [ -122.385155454814836, 37.748111490980968 ], [ -122.385169426138901, 37.748116761295172 ], [ -122.385181755211505, 37.748125491789409 ], [ -122.385192373382367, 37.748134935830123 ], [ -122.385204720216592, 37.748144352490229 ], [ -122.385218761226213, 37.748152368866798 ], [ -122.385234478972677, 37.748158297687098 ], [ -122.385250161900544, 37.748162854157655 ], [ -122.385267521563421, 37.748165323071063 ], [ -122.385284846398747, 37.748166419359649 ], [ -122.385307218551446, 37.748161941354901 ], [ -122.385322623132453, 37.748155514361287 ], [ -122.385336298358496, 37.748149114758291 ], [ -122.385351667751635, 37.748141314869592 ], [ -122.385370425465482, 37.748130713860917 ], [ -122.385385847107514, 37.748124973312947 ], [ -122.38540299740022, 37.748119205105795 ], [ -122.385420183219992, 37.748114809781839 ], [ -122.385437403184611, 37.748111787363236 ], [ -122.385454641265781, 37.748109451653981 ], [ -122.385471896059883, 37.748107801852534 ], [ -122.385494373386805, 37.748107442216863 ], [ -122.38551168079205, 37.748107852023772 ], [ -122.385530752036246, 37.748109607060321 ], [ -122.385548128777415, 37.748112762660895 ], [ -122.385617567456492, 37.748122639221975 ], [ -122.385652269381737, 37.748126891038808 ], [ -122.385685225236202, 37.748130484058379 ], [ -122.385719909747124, 37.748134049406957 ], [ -122.385785855632406, 37.748142608581347 ], [ -122.385801503731642, 37.748145791532721 ], [ -122.385816588465147, 37.748146745865732 ], [ -122.385818828224473, 37.748146887748376 ], [ -122.385834354718469, 37.748145265826139 ], [ -122.38585155760299, 37.748141557167763 ], [ -122.385865250211054, 37.74813584422629 ], [ -122.385878890540098, 37.748128071663686 ], [ -122.3858907496043, 37.748118267698949 ], [ -122.385900844474122, 37.748107118511911 ], [ -122.385902260194882, 37.748094734766624 ], [ -122.385907133219177, 37.748082295692257 ], [ -122.385917263620584, 37.748072519389318 ], [ -122.385930956210871, 37.748066806440157 ], [ -122.385953433177363, 37.748066446722468 ], [ -122.385965727831334, 37.748073804232597 ], [ -122.385981463045027, 37.748080419401688 ], [ -122.385998909841959, 37.748086320723502 ], [ -122.38601630437492, 37.74809016297241 ], [ -122.386033664046266, 37.748092631772991 ], [ -122.386050971451041, 37.748093041500702 ], [ -122.386068226580846, 37.748091391880983 ], [ -122.386087192943762, 37.74808902841783 ], [ -122.386104378709106, 37.748084632719518 ], [ -122.386119835135943, 37.748080264972018 ], [ -122.386135256363829, 37.74807452433145 ], [ -122.386150643429275, 37.748067410781196 ], [ -122.386162536953989, 37.748058979691152 ], [ -122.386174396322502, 37.748049175966834 ], [ -122.386184491486219, 37.748038026749811 ], [ -122.386194569220663, 37.74802619108366 ], [ -122.386201171526452, 37.748013724042565 ], [ -122.386204298419131, 37.748000626176299 ], [ -122.386207059358142, 37.747973112895849 ], [ -122.386211932676204, 37.74796067407766 ], [ -122.386218534973267, 37.747948207035471 ], [ -122.386226883695826, 37.747936399040974 ], [ -122.386236996262895, 37.747925936267578 ], [ -122.386250601668095, 37.747916791039664 ], [ -122.38626425935739, 37.747909705429613 ], [ -122.38627966345058, 37.747903278041591 ], [ -122.386295119836348, 37.747898910545544 ], [ -122.386310628142297, 37.747896601848709 ], [ -122.386338292035447, 37.747896159029516 ], [ -122.386357415873647, 37.747899973271664 ], [ -122.386373115890919, 37.747905215772221 ], [ -122.386388851457951, 37.747911831156145 ], [ -122.386404621538247, 37.747919819440014 ], [ -122.386418680056124, 37.747928521847626 ], [ -122.386427603879639, 37.747939366631606 ], [ -122.386439915980972, 37.747947410266093 ], [ -122.386455564081089, 37.74795059367991 ], [ -122.386471037535358, 37.747946912065444 ], [ -122.386789455008412, 37.747884816204298 ], [ -122.3868315118753, 37.747838131816167 ], [ -122.386850251869276, 37.747826844123239 ], [ -122.386870720848805, 37.747815528743104 ], [ -122.386889443052766, 37.747803554601212 ], [ -122.386908148509548, 37.747790893997063 ], [ -122.386942065866194, 37.74776425526499 ], [ -122.386965801028097, 37.74774533356738 ], [ -122.386981135299891, 37.747736160569232 ], [ -122.386994723145222, 37.747726328806948 ], [ -122.387010022542214, 37.747715782908614 ], [ -122.387037163346392, 37.747694746479311 ], [ -122.387050698881637, 37.747682855640441 ], [ -122.38706252285192, 37.747671678660687 ], [ -122.38707605836494, 37.747659787269711 ], [ -122.387087812590266, 37.747645864494586 ], [ -122.387097942431041, 37.747636088094978 ], [ -122.387109818697425, 37.747626970729563 ], [ -122.387123441368203, 37.747618511574053 ], [ -122.387137098912476, 37.747611425587927 ], [ -122.387154231515737, 37.747604970677259 ], [ -122.387171469418391, 37.747602634442131 ], [ -122.387190435960278, 37.747600270521147 ], [ -122.387209419590647, 37.747598593050817 ], [ -122.387226657490075, 37.747596256807626 ], [ -122.387245658900213, 37.747595265774123 ], [ -122.387264642528066, 37.747593588294905 ], [ -122.387281915296896, 37.747592624939976 ], [ -122.387300916705343, 37.747591633897549 ], [ -122.387316296380376, 37.747591387583803 ], [ -122.38733895439411, 37.747591024699865 ], [ -122.387356261689263, 37.747591434235915 ], [ -122.387375280187655, 37.747591129635204 ], [ -122.387394334251837, 37.747592197916667 ], [ -122.387413370533409, 37.74759257975245 ], [ -122.387430694921051, 37.74759367573126 ], [ -122.387449748986683, 37.747594744003763 ], [ -122.38746882014496, 37.747596498726871 ], [ -122.38748616197239, 37.747598281145677 ], [ -122.387505250916419, 37.747600722305499 ], [ -122.387538363228003, 37.747610492846007 ], [ -122.387550745149639, 37.747621282157453 ], [ -122.387563144167856, 37.747632757921238 ], [ -122.38758451981073, 37.747657137719408 ], [ -122.387602472716026, 37.747682945794239 ], [ -122.387611466439651, 37.747696536281474 ], [ -122.387617002189558, 37.747710182158386 ], [ -122.387624284369664, 37.747724486787845 ], [ -122.387629837563409, 37.747738819112165 ], [ -122.387633661769783, 37.747753179131621 ], [ -122.387635983354997, 37.747776490677239 ], [ -122.387636332144282, 37.747790219639235 ], [ -122.387640121821377, 37.747803206756615 ], [ -122.387649063247679, 37.747814737896427 ], [ -122.38765798689127, 37.747825582592974 ], [ -122.38767204553811, 37.747834284851223 ], [ -122.387686034428512, 37.747840241315451 ], [ -122.387703429329918, 37.74784408303541 ], [ -122.387720806101257, 37.747847238315771 ], [ -122.387738148684832, 37.747849020686374 ], [ -122.387757219915159, 37.747850775362728 ], [ -122.387776255919036, 37.747851157145398 ], [ -122.387793563622978, 37.747851566611679 ], [ -122.38781256509084, 37.747850575486822 ], [ -122.387829820125248, 37.747848925609141 ], [ -122.387848786709029, 37.747846561582286 ], [ -122.387866006512709, 37.747843538808695 ], [ -122.387888379097262, 37.747839060028085 ], [ -122.387903835368149, 37.747834692046453 ], [ -122.387921107500148, 37.747833728883549 ], [ -122.38793675597158, 37.747836911546052 ], [ -122.387950727441307, 37.7478421815308 ], [ -122.387968122011031, 37.747846023217228 ], [ -122.387985481697157, 37.747848492005005 ], [ -122.388002823941576, 37.747850274342177 ], [ -122.388020131300777, 37.747850683780733 ], [ -122.388039132419564, 37.747849692624868 ], [ -122.38805637035118, 37.747847356260422 ], [ -122.388073590146575, 37.74784433345652 ], [ -122.388089046753478, 37.747839965445046 ], [ -122.388109620211083, 37.747832768537954 ], [ -122.388109062008056, 37.747810802201109 ], [ -122.388077940175876, 37.747811300839857 ], [ -122.38807409843713, 37.74779625438692 ], [ -122.388108678243654, 37.747795700344511 ], [ -122.388099616701311, 37.74771137804548 ], [ -122.388148028374744, 37.747710602372756 ], [ -122.388152687991848, 37.747825897938156 ], [ -122.388277000893524, 37.747817039049515 ], [ -122.388487762928946, 37.747806794121068 ], [ -122.388506886854486, 37.747810608014518 ], [ -122.388525975547779, 37.747813049289029 ], [ -122.388546793218978, 37.747815462302533 ], [ -122.388565847011719, 37.747816530400094 ], [ -122.388605613450011, 37.747815893090063 ], [ -122.388626326439876, 37.747814187676354 ], [ -122.388645293335259, 37.747811823515768 ], [ -122.388665971425112, 37.747808745199229 ], [ -122.388684903080716, 37.747805008416485 ], [ -122.388703817271136, 37.747800584633623 ], [ -122.388722696221464, 37.747794788231978 ], [ -122.388738135330243, 37.747789733687412 ], [ -122.388758743610779, 37.74778390956282 ], [ -122.388800029962908, 37.747775007094489 ], [ -122.38882243702561, 37.74777190103795 ], [ -122.38884313255457, 37.74776950941277 ], [ -122.388865591959274, 37.747768462417191 ], [ -122.388886322380927, 37.747767443405706 ], [ -122.388908833806198, 37.747768456300328 ], [ -122.388929616574529, 37.747769496350386 ], [ -122.388945212727961, 37.747770619809877 ], [ -122.388964301079568, 37.747773061018961 ], [ -122.388983355206264, 37.747774128768917 ], [ -122.38900242644678, 37.747775883243818 ], [ -122.389021462783674, 37.747776264819827 ], [ -122.389042245569726, 37.747777305399197 ], [ -122.389080318237873, 37.747778068260708 ], [ -122.389137374546209, 37.7477771536037 ], [ -122.389175377760296, 37.747775171186596 ], [ -122.389196090718727, 37.747773465398161 ], [ -122.38926533756586, 37.747775788884091 ], [ -122.389334549507055, 37.747776739433625 ], [ -122.3894037440012, 37.747777003769272 ], [ -122.389542063148724, 37.747774785978237 ], [ -122.389680277530928, 37.747768449063493 ], [ -122.389818387138831, 37.74775799357456 ], [ -122.38988740700772, 37.747751392873859 ], [ -122.38995468041503, 37.747744133414443 ], [ -122.390039173851804, 37.747733851094473 ], [ -122.390066855117027, 37.747734093573278 ], [ -122.390085856531513, 37.747733102356463 ], [ -122.390103128943423, 37.747732138319044 ], [ -122.390122130349909, 37.747731146821835 ], [ -122.390141096830732, 37.747728782426051 ], [ -122.390158334329385, 37.747726446034243 ], [ -122.390177283337934, 37.747723394910331 ], [ -122.390194485555256, 37.747719685348756 ], [ -122.390213417450141, 37.74771594804033 ], [ -122.390230602546296, 37.747711552020206 ], [ -122.390249481354928, 37.747705755373893 ], [ -122.3902666667924, 37.747701359342962 ], [ -122.390283903927951, 37.747699022663753 ], [ -122.390311567723842, 37.747698578911937 ], [ -122.390328910334858, 37.747700360901341 ], [ -122.390344558542523, 37.747703543524345 ], [ -122.390363664733329, 37.747706670948986 ], [ -122.390381024113694, 37.747709139114932 ], [ -122.390398366728832, 37.747710921094118 ], [ -122.390415726118349, 37.747713389529537 ], [ -122.390433121131167, 37.747717230846696 ], [ -122.390448804284702, 37.74772178662581 ], [ -122.390464522011555, 37.747727714754603 ], [ -122.390476782463509, 37.747733698619065 ], [ -122.390494212070166, 37.747738912828105 ], [ -122.390511589281189, 37.747742067691526 ], [ -122.390527184761183, 37.747743190952775 ], [ -122.390653785454447, 37.747824253927604 ], [ -122.390638206813605, 37.747755831079004 ], [ -122.390653872859318, 37.747759700103025 ], [ -122.390669573495856, 37.747764942025796 ], [ -122.390681886034457, 37.74777298549197 ], [ -122.39069250450811, 37.747782429043276 ], [ -122.390701428591996, 37.747793273509437 ], [ -122.390706912858818, 37.747804859892483 ], [ -122.390710737663227, 37.747819219811937 ], [ -122.390717985513646, 37.7478321513547 ], [ -122.390725250834635, 37.747845769344615 ], [ -122.39073249869017, 37.747858700886397 ], [ -122.390741475546321, 37.747871604961333 ], [ -122.390750434923376, 37.747883822038752 ], [ -122.390771776747243, 37.747906828362581 ], [ -122.390782430195571, 37.747917645075368 ], [ -122.39079481229362, 37.747928434050969 ], [ -122.39082296530907, 37.747947210986922 ], [ -122.390837024342559, 37.747955912592879 ], [ -122.390849337269742, 37.747963955761179 ], [ -122.390865002685743, 37.747967825042672 ], [ -122.390880686250455, 37.747972380209411 ], [ -122.3909120177685, 37.747980118201738 ], [ -122.390943314352953, 37.747986483290504 ], [ -122.390960691640942, 37.747989638087581 ], [ -122.390976339590807, 37.747992820632099 ], [ -122.391007601590601, 37.747997812803085 ], [ -122.391024961067359, 37.748000281148649 ], [ -122.391056188138322, 37.748003900686179 ], [ -122.391073512668584, 37.74800499585487 ], [ -122.391089126375263, 37.748006805478177 ], [ -122.391122029339527, 37.748008337920567 ], [ -122.39113764304112, 37.74801014726286 ], [ -122.391155055286944, 37.748014674926367 ], [ -122.3911690619626, 37.748021317424552 ], [ -122.391183121057651, 37.748030019263688 ], [ -122.391193757118117, 37.748040149766119 ], [ -122.391202716589845, 37.748052366808828 ], [ -122.391208200608148, 37.748063953173585 ], [ -122.391241557893906, 37.74808333321856 ], [ -122.391295995830475, 37.748115422483572 ], [ -122.391962189342451, 37.748397274549454 ], [ -122.391983042262396, 37.748401060399672 ], [ -122.392002166513251, 37.748404873451001 ], [ -122.392021325387503, 37.7484100596741 ], [ -122.392042213267686, 37.748415218134042 ], [ -122.392078889429584, 37.748429050561562 ], [ -122.392113924006139, 37.748446342975576 ], [ -122.392131528713293, 37.748458421690032 ], [ -122.39214384116525, 37.748466464458922 ], [ -122.392159577364851, 37.748473079071736 ], [ -122.392175243295199, 37.748476947898624 ], [ -122.392194332280141, 37.748479388578737 ], [ -122.392215132775206, 37.748481114496656 ], [ -122.392234186445535, 37.748482182006597 ], [ -122.392254951984697, 37.748482535297406 ], [ -122.392294719439334, 37.748481896731604 ], [ -122.392336145620007, 37.748478484604256 ], [ -122.392355112221097, 37.748476119852498 ], [ -122.392375790342101, 37.748473040885386 ], [ -122.392394739456975, 37.748469989679933 ], [ -122.392410230561637, 37.748466994002406 ], [ -122.392430943652641, 37.748465288194843 ], [ -122.392449945215546, 37.748464296322425 ], [ -122.392477609283375, 37.748463852062244 ], [ -122.392496645468526, 37.748464233082473 ], [ -122.392534753839612, 37.748466367717036 ], [ -122.392553842833664, 37.748468808338913 ], [ -122.392571185325409, 37.748470589729116 ], [ -122.392588457883463, 37.748469625602191 ], [ -122.392596639186095, 37.748469494208877 ], [ -122.392610934939555, 37.748469264614883 ], [ -122.39262824212247, 37.74846967338226 ], [ -122.392662927124746, 37.748473236687367 ], [ -122.392680287459143, 37.74847570477781 ], [ -122.392695935930789, 37.748478887088204 ], [ -122.392713348381406, 37.748483414521154 ], [ -122.392729031836424, 37.748487969996233 ], [ -122.39274473277321, 37.748493211641936 ], [ -122.392760450846382, 37.748499139463782 ], [ -122.392774457756872, 37.748505781770611 ], [ -122.392790211508157, 37.748513082746427 ], [ -122.392804253398694, 37.748521097944213 ], [ -122.392825263777468, 37.748531061396008 ], [ -122.392842711223665, 37.748536961704282 ], [ -122.39286010621592, 37.748540802942827 ], [ -122.392879212368058, 37.748543929415632 ], [ -122.392898284250904, 37.748545683528903 ], [ -122.392917320797991, 37.748546064201044 ], [ -122.392936339863667, 37.748545758697475 ], [ -122.392953524990631, 37.748541362280918 ], [ -122.392966938977182, 37.748536367729422 ], [ -122.392968945786251, 37.748535620746658 ], [ -122.392982602941643, 37.748528534084265 ], [ -122.392994513945695, 37.748520788741565 ], [ -122.393006389623011, 37.748511670508776 ], [ -122.393016518457316, 37.748501893607475 ], [ -122.39303324918852, 37.748479649545963 ], [ -122.393038138879703, 37.74846789661926 ], [ -122.393043010740925, 37.74845545752526 ], [ -122.393046136785017, 37.748442359198343 ], [ -122.393047533485998, 37.748429288926303 ], [ -122.393054199696095, 37.748283595463981 ], [ -122.393077928476629, 37.748128700431906 ], [ -122.392979444727942, 37.747588651673503 ], [ -122.39297940856946, 37.747588454476606 ], [ -122.392907366368178, 37.747544287652012 ], [ -122.39290993009746, 37.747441237230703 ], [ -122.392849293374297, 37.747437404131951 ], [ -122.392809823765376, 37.747449712490337 ], [ -122.39276850310074, 37.747457243469029 ], [ -122.392735233137245, 37.747441296365679 ], [ -122.392709245973222, 37.747439653574382 ], [ -122.392606956367715, 37.747430308793902 ], [ -122.392589631603045, 37.747429213856059 ], [ -122.392573983004198, 37.747426031261952 ], [ -122.392558282650754, 37.747420789587025 ], [ -122.392545987120343, 37.747413433318528 ], [ -122.392533639816108, 37.747404017146245 ], [ -122.392522986186506, 37.747393200590786 ], [ -122.392515773033679, 37.747381642052915 ], [ -122.392369749857508, 37.747285098201544 ], [ -122.392309356598403, 37.747222889020321 ], [ -122.391563535628293, 37.747006182915136 ], [ -122.391515981789823, 37.747108581714961 ], [ -122.391549059112705, 37.747116978239831 ], [ -122.39154102623057, 37.747141142664127 ], [ -122.391633378020288, 37.747167816090183 ], [ -122.391610658187417, 37.747226552683614 ], [ -122.391284893471251, 37.747135639523535 ], [ -122.391304260773893, 37.747081077170833 ], [ -122.391400018273714, 37.747105635933018 ], [ -122.391414984907726, 37.747082046956919 ], [ -122.391449669204121, 37.747085610619905 ], [ -122.391496995599269, 37.746974288032909 ], [ -122.390841889233045, 37.746787710251105 ], [ -122.390710603266925, 37.746750702923116 ], [ -122.390692063133784, 37.7467454771745 ], [ -122.390583853899699, 37.746707382782333 ], [ -122.390491852370616, 37.746694437487911 ], [ -122.389167167584475, 37.74677199330884 ], [ -122.389007159419478, 37.746805461394153 ], [ -122.38886264165825, 37.746835933506375 ], [ -122.388798600052468, 37.746834213094125 ], [ -122.388745420841317, 37.746851546922535 ], [ -122.388650571528245, 37.746862681307142 ], [ -122.388568244062029, 37.746890096400243 ], [ -122.388501285688704, 37.746909711129156 ], [ -122.388430153337836, 37.746901236873853 ], [ -122.388403030664151, 37.746922960074855 ], [ -122.388383874714961, 37.746923267046867 ], [ -122.388364993671857, 37.746923569610487 ], [ -122.388206416880053, 37.746945339015134 ], [ -122.388203900596949, 37.746982462626271 ], [ -122.388121154182954, 37.746993402651967 ], [ -122.388116562743861, 37.746948838923466 ], [ -122.387896826491271, 37.746946178902249 ], [ -122.387881213437979, 37.746944369124783 ], [ -122.387867242141994, 37.746939099130984 ], [ -122.387854912604922, 37.746930368921483 ], [ -122.387704648799442, 37.746938956647774 ], [ -122.387598167965407, 37.746968818149767 ], [ -122.387589223776885, 37.747025273076481 ], [ -122.387549736768761, 37.747036893214862 ], [ -122.387544863742193, 37.747049332364881 ], [ -122.387534786009468, 37.747061168154005 ], [ -122.38752465665732, 37.747070944861157 ], [ -122.387511034118646, 37.747079403514647 ], [ -122.387495647733758, 37.747086517238138 ], [ -122.387478445182509, 37.747090226411743 ], [ -122.387461451881805, 37.747102172961299 ], [ -122.387268251932909, 37.747106390211968 ], [ -122.387107064056366, 37.74710990881966 ], [ -122.387091486195246, 37.747109471553998 ], [ -122.387075890554399, 37.747108347843543 ], [ -122.387060207744099, 37.747103791889728 ], [ -122.387046201608655, 37.747097148902206 ], [ -122.387033854715085, 37.747087732433343 ], [ -122.387024930905355, 37.74707688769373 ], [ -122.387021159152255, 37.747064586997716 ], [ -122.387005168327306, 37.746911702839881 ], [ -122.385924087590695, 37.746978453708003 ], [ -122.382764926423121, 37.74715258139431 ], [ -122.382708148125133, 37.747164476159931 ], [ -122.382642308174283, 37.747160034224571 ], [ -122.382018857926923, 37.747061489736957 ], [ -122.379659819974563, 37.747207644757545 ], [ -122.379607354913716, 37.746979801452689 ], [ -122.379559186732763, 37.746990183908736 ], [ -122.379533356297898, 37.746994716256566 ], [ -122.379509237470685, 37.74699853457313 ], [ -122.379483389665921, 37.747002380460607 ], [ -122.379459270487843, 37.747006198772453 ], [ -122.379433405660123, 37.74700935819407 ], [ -122.379407523121102, 37.747011831166098 ], [ -122.379383369216924, 37.747014276838193 ], [ -122.379357487013394, 37.747016749519133 ], [ -122.379331587106719, 37.747018536025081 ], [ -122.379307398466224, 37.747019608508175 ], [ -122.379255564276221, 37.747021808862577 ], [ -122.379229629642097, 37.747022222447264 ], [ -122.379144857745686, 37.747021513827882 ], [ -122.379072223061954, 37.747021985338478 ], [ -122.37899789481213, 37.747023857260928 ], [ -122.378925329913201, 37.747027074747926 ], [ -122.378851035672341, 37.747030319213138 ], [ -122.378706009969704, 37.747040872109451 ], [ -122.378631820547639, 37.747048235671635 ], [ -122.378559359727831, 37.747055571081212 ], [ -122.378486933610205, 37.74706427961987 ], [ -122.378414542183847, 37.747074361013084 ], [ -122.378342168091294, 37.747085128811385 ], [ -122.378269828683315, 37.747097269464334 ], [ -122.378197506610775, 37.747110096797023 ], [ -122.378126930483418, 37.747123582435272 ], [ -122.377700185384086, 37.747142744068015 ], [ -122.377451264431812, 37.747148770308641 ], [ -122.377202256724516, 37.747151363774975 ], [ -122.376953162296658, 37.747150524466448 ], [ -122.376703981182786, 37.747146252382528 ], [ -122.376633214042542, 37.747152186453157 ], [ -122.376586583950242, 37.747154989206692 ], [ -122.376541665151564, 37.747157077964779 ], [ -122.376496729013979, 37.747158480255926 ], [ -122.376406822062478, 37.747159911887174 ], [ -122.3763168457685, 37.747158597650483 ], [ -122.376226800142021, 37.747154537545661 ], [ -122.376181759998943, 37.747151821017589 ], [ -122.376136702533032, 37.747148418296995 ], [ -122.376091627724676, 37.747144328560168 ], [ -122.376046535596004, 37.747139552630784 ], [ -122.376003154781813, 37.747134062989552 ], [ -122.375912901223032, 37.747121764971595 ], [ -122.375869469128858, 37.747114215920412 ], [ -122.375824307704988, 37.747106693831739 ], [ -122.375780857600304, 37.747098458034387 ], [ -122.375737390867457, 37.747089535760047 ], [ -122.375693906470275, 37.747079927025247 ], [ -122.375650404755746, 37.747069631824438 ], [ -122.375606885379298, 37.74705865016309 ], [ -122.375565078011306, 37.747046954511831 ], [ -122.375521542024956, 37.747035286357942 ], [ -122.375484921614671, 37.747023508124926 ], [ -122.375446537240038, 37.747010384502651 ], [ -122.375427328249984, 37.747003136228599 ], [ -122.375409847894304, 37.746995860440805 ], [ -122.375390638220011, 37.746988612171734 ], [ -122.375373140891156, 37.746980649922982 ], [ -122.375353914244343, 37.746972715192399 ], [ -122.375283854298274, 37.746938120381792 ], [ -122.375266321996932, 37.746928785222565 ], [ -122.375250518328926, 37.746919422552502 ], [ -122.375232969057322, 37.746909400932758 ], [ -122.375217148425804, 37.746899352077222 ], [ -122.375199598810724, 37.746889330183407 ], [ -122.375183760856842, 37.746878594598741 ], [ -122.37516794023162, 37.746868545461957 ], [ -122.375152084617042, 37.746857123428462 ], [ -122.375137975649949, 37.746846360325264 ], [ -122.375122120743228, 37.74683493855126 ], [ -122.37510799445424, 37.746823488719798 ], [ -122.37509213920427, 37.746812066672646 ], [ -122.375063852016254, 37.746787794649727 ], [ -122.375051437407549, 37.746775631399466 ], [ -122.375037293817897, 37.746763495109327 ], [ -122.375023132917065, 37.746750672641994 ], [ -122.374998269070602, 37.746724972682053 ], [ -122.374960921021042, 37.746684363387303 ], [ -122.374939480511969, 37.746657235495441 ], [ -122.374896530254759, 37.746600233899152 ], [ -122.374887504692197, 37.746585269533512 ], [ -122.374878496108821, 37.746570991622754 ], [ -122.374851418423177, 37.746526098810385 ], [ -122.374837344197417, 37.746516708296284 ], [ -122.374824981280824, 37.746506604102919 ], [ -122.374812601738441, 37.746495813447105 ], [ -122.374801933498034, 37.746484308838191 ], [ -122.374792994225416, 37.746472776721248 ], [ -122.374785749278871, 37.74645984419638 ], [ -122.374780233298765, 37.746446884164222 ], [ -122.374774699654409, 37.746433237687107 ], [ -122.374770895666941, 37.746419563692001 ], [ -122.374768802977741, 37.746405175745409 ], [ -122.374768439251895, 37.74639076029208 ], [ -122.374769821808755, 37.746377003782186 ], [ -122.374772932981244, 37.74636321977102 ], [ -122.374777773805775, 37.74634940824194 ], [ -122.374790947320705, 37.746323103080407 ], [ -122.374915153489738, 37.745898790876815 ], [ -122.374925284686768, 37.745889015246057 ], [ -122.374935381244654, 37.745877866988621 ], [ -122.374943731527424, 37.745866059789378 ], [ -122.374948606585662, 37.745853621157977 ], [ -122.374953463974592, 37.745840496081698 ], [ -122.374954864154603, 37.745827426013051 ], [ -122.374954517717399, 37.745813697009091 ], [ -122.374952459307565, 37.745800681970202 ], [ -122.37494867264158, 37.745787694429573 ], [ -122.374943174004656, 37.745775420853761 ], [ -122.374925295588895, 37.745752356637837 ], [ -122.374169821595103, 37.745013096467311 ], [ -122.374159170981372, 37.745002278247725 ], [ -122.374148554999209, 37.744992832927991 ], [ -122.374136227057974, 37.744984101560632 ], [ -122.374123917125218, 37.74497605663138 ], [ -122.374109912547326, 37.744969412104211 ], [ -122.374095925285644, 37.7449634540258 ], [ -122.374080226064535, 37.744958209898222 ], [ -122.37406629074772, 37.744954311167561 ], [ -122.374048932546074, 37.744951840322948 ], [ -122.374033320242248, 37.744950028435788 ], [ -122.374017742219408, 37.744949589452929 ], [ -122.373998724342499, 37.744949891898301 ], [ -122.37398319825796, 37.744951512262205 ], [ -122.373967707489385, 37.744954505513952 ], [ -122.373952250998556, 37.744958871670036 ], [ -122.373936811825118, 37.74496392454914 ], [ -122.373923118884619, 37.74496963610779 ], [ -122.373909460559076, 37.744976720291163 ], [ -122.373895819549759, 37.744984491197997 ], [ -122.373883942091524, 37.744993607510423 ], [ -122.373863679651151, 37.745013158045801 ], [ -122.373855311981089, 37.745024278719775 ], [ -122.373848673239934, 37.745035371899974 ], [ -122.373842051808168, 37.745047151530216 ], [ -122.37385341216104, 37.745086114521243 ], [ -122.373444301009826, 37.74532404571449 ], [ -122.373430677195785, 37.74533250301748 ], [ -122.373418781971495, 37.745340932837536 ], [ -122.373405123536585, 37.745348017236601 ], [ -122.373391482406376, 37.745355788084566 ], [ -122.373377806658937, 37.745362186029979 ], [ -122.373364148216169, 37.745369270424256 ], [ -122.373350455156967, 37.745374981916001 ], [ -122.373319611498488, 37.745386459860086 ], [ -122.37330588381964, 37.745390798445655 ], [ -122.373274970231165, 37.745399530587065 ], [ -122.373259496653688, 37.745403210470592 ], [ -122.373244005409106, 37.745406203357881 ], [ -122.373226784891003, 37.745409224281886 ], [ -122.373211276683975, 37.7454115307089 ], [ -122.373195750831584, 37.745413150963429 ], [ -122.373178495692287, 37.7454147987048 ], [ -122.373162952885991, 37.745415732773601 ], [ -122.373130102670643, 37.745416254953994 ], [ -122.373114525240069, 37.745415815566226 ], [ -122.373097201225704, 37.745414717488131 ], [ -122.37308160580649, 37.745413591931054 ], [ -122.373065993781964, 37.745411780184988 ], [ -122.373048652458152, 37.745409995374658 ], [ -122.373033005135582, 37.745406810734146 ], [ -122.373017375795953, 37.745404311981943 ], [ -122.372986047234718, 37.74539656950391 ], [ -122.372970365296936, 37.745392011404839 ], [ -122.372956412653693, 37.745387426092684 ], [ -122.372762203193631, 37.745505195897991 ], [ -122.372470578027816, 37.745199439060684 ], [ -122.369079539125323, 37.741643837671482 ], [ -122.367630267152407, 37.740133359644659 ], [ -122.367867173476, 37.739994319504163 ], [ -122.368285236674282, 37.739975330499902 ], [ -122.368274610769845, 37.73982785299647 ], [ -122.371253871422496, 37.739663833776014 ], [ -122.371264036490402, 37.739792777100682 ], [ -122.373407014055843, 37.739660522763742 ], [ -122.373411889309949, 37.739648084177503 ], [ -122.37342198524702, 37.739636936038039 ], [ -122.373432115793747, 37.739627160799976 ], [ -122.373447518947913, 37.739620735634887 ], [ -122.373462992003653, 37.739617055712138 ], [ -122.373518088785445, 37.739607252232659 ], [ -122.373566287640358, 37.739598245135006 ], [ -122.373590404371257, 37.739594428029896 ], [ -122.373616249911393, 37.739590583704633 ], [ -122.373640366284548, 37.739586766320215 ], [ -122.373666246782193, 37.739584294880729 ], [ -122.373690380805215, 37.739581163931668 ], [ -122.373716260600844, 37.739578692217606 ], [ -122.37374042959101, 37.739576934429572 ], [ -122.373766327038652, 37.739575149150085 ], [ -122.373790512990382, 37.739574077808385 ], [ -122.373816427745723, 37.739572978968987 ], [ -122.373890766330462, 37.739571796757524 ], [ -122.373921919428824, 37.739572674766521 ], [ -122.373937443699504, 37.739571054420232 ], [ -122.373952916727561, 37.739567374707711 ], [ -122.373966608670429, 37.739561663140428 ], [ -122.373980265988422, 37.739554578669413 ], [ -122.373992124908327, 37.7395447758934 ], [ -122.374000509598304, 37.739534341645076 ], [ -122.37400713051376, 37.739522561995074 ], [ -122.374012004966914, 37.739510123394709 ], [ -122.37401135577899, 37.739484381479812 ], [ -122.374005858115922, 37.739472108116395 ], [ -122.373998648611916, 37.739460548430131 ], [ -122.373977383644629, 37.739440284566498 ], [ -122.373964927156109, 37.739426404784517 ], [ -122.373936539281573, 37.739398013754517 ], [ -122.373924065496922, 37.739383447517028 ], [ -122.373886618206512, 37.739338719119822 ], [ -122.373874092510491, 37.73932209352359 ], [ -122.373863330238677, 37.739306813334778 ], [ -122.373841788398252, 37.73927556650299 ], [ -122.373820229273036, 37.739243633490574 ], [ -122.373811178157524, 37.739227639083794 ], [ -122.373793059679699, 37.739194964349537 ], [ -122.37378399162607, 37.739178284033066 ], [ -122.373776661019065, 37.739161919174691 ], [ -122.37376932175367, 37.739145210815664 ], [ -122.373761973843884, 37.739128159505157 ], [ -122.373754634592061, 37.73911145141971 ], [ -122.373747286688968, 37.739094400108158 ], [ -122.373741667582067, 37.739077321304478 ], [ -122.373730515575119, 37.739046595957468 ], [ -122.373715767869712, 37.739010433977029 ], [ -122.373701037487336, 37.738974958445688 ], [ -122.373691943857139, 37.738957248164674 ], [ -122.373664687572003, 37.73890514701592 ], [ -122.373643076699025, 37.738871154340984 ], [ -122.373610686734082, 37.738821194992092 ], [ -122.373585652607346, 37.73878863019344 ], [ -122.373573144731495, 37.738772691284012 ], [ -122.373560645155081, 37.738757095055156 ], [ -122.373546408152151, 37.738741183362713 ], [ -122.373533917247101, 37.738725930631098 ], [ -122.373505477884322, 37.738695480140251 ], [ -122.373491266871952, 37.738680598392399 ], [ -122.373459404583869, 37.738651575494011 ], [ -122.373445210895355, 37.73863738019174 ], [ -122.373429288070284, 37.738623211831154 ], [ -122.3734116544736, 37.738609757670034 ], [ -122.37339574066641, 37.738595932799527 ], [ -122.37337984382502, 37.738582794383632 ], [ -122.373362218906536, 37.738569683715227 ], [ -122.373326985681061, 37.738544148008963 ], [ -122.373309377387599, 37.738531723520261 ], [ -122.373290049663908, 37.73851966972861 ], [ -122.37327245903279, 37.738507931680125 ], [ -122.373253139281985, 37.738496221119 ], [ -122.373235557660152, 37.738484826285116 ], [ -122.37321625557793, 37.738473802438271 ], [ -122.373195233367738, 37.738463149022955 ], [ -122.373175939596308, 37.738452468126042 ], [ -122.37315665516681, 37.738442130166042 ], [ -122.373135650277447, 37.738432163191355 ], [ -122.373116382823142, 37.738422511956102 ], [ -122.373074407684399, 37.738403951165793 ], [ -122.373053428763811, 37.738395013578788 ], [ -122.373032458506373, 37.738386419488315 ], [ -122.373011496911786, 37.738378168894329 ], [ -122.372988815182367, 37.738370288453737 ], [ -122.372967870892026, 37.738362724028732 ], [ -122.372945197483872, 37.738355187085482 ], [ -122.372924270503603, 37.738348309104055 ], [ -122.372901615103871, 37.738341458867346 ], [ -122.372878967999199, 37.738334951308275 ], [ -122.372856329555759, 37.738328787245123 ], [ -122.372833699427503, 37.738322966683377 ], [ -122.372811078630633, 37.738317488782812 ], [ -122.372788466148293, 37.738312354383659 ], [ -122.372765862325963, 37.738307563480433 ], [ -122.372743266796775, 37.738303115254908 ], [ -122.372718943193647, 37.738298694765277 ], [ -122.372673787106677, 37.738291171738332 ], [ -122.372649498109226, 37.738288124137178 ], [ -122.372626937542805, 37.738285049061219 ], [ -122.372602656852706, 37.7382823446816 ], [ -122.372578393462533, 37.738280326748381 ], [ -122.372555858502594, 37.738278281341429 ], [ -122.372531604109625, 37.73827660661879 ], [ -122.372507357674976, 37.738275275127862 ], [ -122.37248484935597, 37.738274259373469 ], [ -122.372460620565761, 37.738273614318871 ], [ -122.372436400424391, 37.738273312484985 ], [ -122.37241391770614, 37.738273326399707 ], [ -122.372389714515705, 37.738273711013171 ], [ -122.372365520664644, 37.738274438836385 ], [ -122.372341334769544, 37.738275509891366 ], [ -122.371417572864843, 37.73819782064686 ], [ -122.371336052232962, 37.738188471129725 ], [ -122.371292703605505, 37.738184009138322 ], [ -122.371247643157346, 37.738180261317709 ], [ -122.371204337055175, 37.738177515159229 ], [ -122.371159311524337, 37.738175139928011 ], [ -122.371116023065696, 37.738173080457798 ], [ -122.37107103176993, 37.738172078376202 ], [ -122.371027777876208, 37.738171391502313 ], [ -122.370982812155077, 37.738171418795432 ], [ -122.370937864408404, 37.738172132512091 ], [ -122.370894662370532, 37.738173505218874 ], [ -122.370849740199262, 37.738175248584916 ], [ -122.370806564080581, 37.738177650936933 ], [ -122.370761676121674, 37.738180767178264 ], [ -122.370718534904626, 37.738184542395913 ], [ -122.370673681844693, 37.738189031501626 ], [ -122.370630565847108, 37.738193836375615 ], [ -122.370585739048508, 37.738199355394492 ], [ -122.37054305620137, 37.738152648632216 ], [ -122.370404226449224, 37.73820257996838 ], [ -122.370322939528947, 37.738202496843449 ], [ -122.370241678523712, 37.738203443340097 ], [ -122.37016044308433, 37.738205419463867 ], [ -122.370080971656222, 37.738208740986281 ], [ -122.369999797012667, 37.738213119575086 ], [ -122.369918647931073, 37.738218528065744 ], [ -122.369839254199036, 37.738224938183691 ], [ -122.369758165884022, 37.738232748865137 ], [ -122.369678823605085, 37.738241218785156 ], [ -122.369597795695725, 37.738251431663087 ], [ -122.369570247557576, 37.738256332765289 ], [ -122.369551300103424, 37.738259380031664 ], [ -122.369532343673868, 37.738262084349124 ], [ -122.369494414578227, 37.738266806506552 ], [ -122.369475441227863, 37.738268824632087 ], [ -122.369456458882269, 37.738270498984953 ], [ -122.369437468599656, 37.738271830372412 ], [ -122.369399470072068, 37.738273806697272 ], [ -122.369380461827461, 37.738274451634652 ], [ -122.369342429106254, 37.738275055031856 ], [ -122.369304361157091, 37.738274285523985 ], [ -122.36926627663955, 37.738272829815514 ], [ -122.369228156883779, 37.738270000652726 ], [ -122.369209088902451, 37.738268243244413 ], [ -122.369170934963606, 37.738264041153812 ], [ -122.369151849020255, 37.738261597020717 ], [ -122.369067113471218, 37.738261911373165 ], [ -122.368994202750471, 37.738251049936494 ], [ -122.368911109321047, 37.73824790450054 ], [ -122.36882805041877, 37.73824613163535 ], [ -122.368745017407647, 37.738245388114983 ], [ -122.368662018929072, 37.738246017714694 ], [ -122.36857731722661, 37.738247704629927 ], [ -122.368494370518377, 37.738250393192978 ], [ -122.368411458330385, 37.738254454876298 ], [ -122.368328572028588, 37.738259546453904 ], [ -122.368245711588798, 37.738265667102112 ], [ -122.36816287702834, 37.738272817644742 ], [ -122.368080076965157, 37.738281341033293 ], [ -122.367798933766665, 37.738311550246465 ], [ -122.367519570533148, 37.738343791024903 ], [ -122.367503864887638, 37.738338202509389 ], [ -122.367488228255993, 37.73833536007497 ], [ -122.367472548152278, 37.738330801513577 ], [ -122.367458562672155, 37.738324842640814 ], [ -122.367444551318144, 37.738317854088145 ], [ -122.367432225963285, 37.738309121998832 ], [ -122.367421611792139, 37.73829967606261 ], [ -122.367412700524838, 37.738289173048365 ], [ -122.367405492161083, 37.738277612956487 ], [ -122.367400003950721, 37.738265682239444 ], [ -122.367396227274725, 37.738253037945974 ], [ -122.367394179016159, 37.738240365710134 ], [ -122.367393859886334, 37.738227666344848 ], [ -122.367395269877491, 37.738214939575492 ], [ -122.367400145351439, 37.738202501245944 ], [ -122.367413544289079, 37.738185120751645 ], [ -122.367428767218343, 37.73817148833826 ], [ -122.367445744452965, 37.738158858481917 ], [ -122.367462730293482, 37.738146571300049 ], [ -122.367481470439287, 37.738135286674201 ], [ -122.36750022852209, 37.738124688486586 ], [ -122.367520732277939, 37.73811474935323 ], [ -122.367541261905686, 37.738105839894565 ], [ -122.367561808780295, 37.738097616884474 ], [ -122.367582381528294, 37.738090423549032 ], [ -122.367604708583698, 37.738084232766695 ], [ -122.367627053565442, 37.738078727872157 ], [ -122.367649424083893, 37.738074252931682 ], [ -122.367766437068838, 37.738050766275428 ], [ -122.367843903943097, 37.738036490753885 ], [ -122.367921396310663, 37.738023244315926 ], [ -122.367998923860597, 37.738011370994791 ], [ -122.368076468296522, 37.738000184080214 ], [ -122.368154047223541, 37.737990370018814 ], [ -122.368231651678144, 37.737981585864489 ], [ -122.368311011449208, 37.737973803365058 ], [ -122.368388676621564, 37.737967421684075 ], [ -122.368447213120319, 37.737956879019784 ], [ -122.368493984461352, 37.737959914324698 ], [ -122.368511237973692, 37.737958267267153 ], [ -122.368526753740483, 37.737956304401699 ], [ -122.368543998275101, 37.737954314118795 ], [ -122.368559514040228, 37.737952351249042 ], [ -122.368575012543431, 37.737949701925182 ], [ -122.36859223981395, 37.737947025183189 ], [ -122.368607738314864, 37.737944375855051 ], [ -122.368624947975661, 37.737941012661715 ], [ -122.368655910793635, 37.737934341085214 ], [ -122.368671383403552, 37.737930662345228 ], [ -122.368688576135014, 37.737926612410497 ], [ -122.368719486808203, 37.737917881466693 ], [ -122.368750380211424, 37.737908464062734 ], [ -122.368765818278675, 37.737903412131701 ], [ -122.368781247712349, 37.737898016972643 ], [ -122.368794948383581, 37.737892649505248 ], [ -122.368810368835511, 37.737886911121841 ], [ -122.368825781337947, 37.737880829224856 ], [ -122.368839464732346, 37.737874775025681 ], [ -122.368854868259206, 37.737868350178935 ], [ -122.368868543017058, 37.737861952750357 ], [ -122.368883937913694, 37.737855184948373 ], [ -122.368897604027694, 37.737848444015853 ], [ -122.368911261520921, 37.737841360404865 ], [ -122.368938559214428, 37.737826505902383 ], [ -122.368952199435157, 37.737818735834644 ], [ -122.368960558042616, 37.737807272000303 ], [ -122.368970654743052, 37.73779612423332 ], [ -122.368982505756449, 37.737785978727096 ], [ -122.368996120067735, 37.737777178976209 ], [ -122.369011506288842, 37.737770067382321 ], [ -122.369028672734785, 37.73776498827452 ], [ -122.369045883019595, 37.737761624734098 ], [ -122.369078712268717, 37.737760417244921 ], [ -122.369096068971245, 37.73776288881907 ], [ -122.369113468840041, 37.737767076520647 ], [ -122.369161848333334, 37.73776527896748 ], [ -122.369191211420912, 37.737763783069852 ], [ -122.369249902712198, 37.73775941835428 ], [ -122.369279231606328, 37.737756549525336 ], [ -122.369306822754865, 37.737753364895219 ], [ -122.369336134037468, 37.737749809880221 ], [ -122.369365436669298, 37.73774591108279 ], [ -122.369394721690568, 37.73774132610621 ], [ -122.369422278297634, 37.737736768819744 ], [ -122.369451546734155, 37.737731497366127 ], [ -122.369479077416202, 37.737725909839305 ], [ -122.369508328229003, 37.737719951925108 ], [ -122.369535841646382, 37.737713678482258 ], [ -122.369565066537618, 37.737706690601534 ], [ -122.369592562667947, 37.737699730418903 ], [ -122.36964752037818, 37.737684437405164 ], [ -122.369674981943263, 37.737676104024878 ], [ -122.369702434873361, 37.737667427686809 ], [ -122.369729879161198, 37.737658408116381 ], [ -122.369755577409364, 37.737648729520856 ], [ -122.369783004411687, 37.737639023486132 ], [ -122.369808694010004, 37.737629001653048 ], [ -122.36983436598301, 37.737618293367909 ], [ -122.369861767054431, 37.73760755763697 ], [ -122.369877075781517, 37.737597357165455 ], [ -122.369888995386347, 37.737589957380784 ], [ -122.369902652730687, 37.737582873380028 ], [ -122.369916335982509, 37.737576819055491 ], [ -122.369931756973841, 37.737571080514087 ], [ -122.369945457494808, 37.737565712638037 ], [ -122.369960912683439, 37.737561347002035 ], [ -122.369976376507211, 37.737557324589964 ], [ -122.369991865894718, 37.737554331859151 ], [ -122.370007364616541, 37.737551682615816 ], [ -122.370022880252051, 37.737549719278675 ], [ -122.370060808948153, 37.737544996950575 ], [ -122.370098721055868, 37.737539588147442 ], [ -122.370119388417834, 37.737536169853662 ], [ -122.370138327019674, 37.737532778995096 ], [ -122.370157256636233, 37.737529044913018 ], [ -122.37017617830449, 37.737524967591014 ], [ -122.37021400367405, 37.737516126771574 ], [ -122.370232907361171, 37.737511362724987 ], [ -122.370251803106058, 37.737506255713058 ], [ -122.370270689864256, 37.737500805477644 ], [ -122.370287847523556, 37.73749538296029 ], [ -122.370306725983596, 37.737489589487708 ], [ -122.370325595449458, 37.737483452517054 ], [ -122.370342727177842, 37.737477000039355 ], [ -122.370361588351471, 37.737470520106122 ], [ -122.370378711780674, 37.737463724391766 ], [ -122.370412941358637, 37.737449446778328 ], [ -122.370464233848367, 37.737425970297551 ], [ -122.370498394270641, 37.737408946577332 ], [ -122.370513745375163, 37.737400462163315 ], [ -122.37052385906631, 37.737390000714299 ], [ -122.370534015260773, 37.737381255404934 ], [ -122.370547663865693, 37.737373828103252 ], [ -122.370561364305786, 37.737368460155437 ], [ -122.370576845682166, 37.737365124110752 ], [ -122.370606243142632, 37.737365000764086 ], [ -122.370621879689367, 37.737367842785233 ], [ -122.370637533178453, 37.737371371536177 ], [ -122.370653178706647, 37.737374556499006 ], [ -122.370670526731246, 37.737376684615533 ], [ -122.370687848836141, 37.737377783051812 ], [ -122.370705153660893, 37.737378195033756 ], [ -122.370720694824087, 37.737377261562422 ], [ -122.370737948151799, 37.737375614178688 ], [ -122.370755183506148, 37.737373280351626 ], [ -122.370770656234214, 37.73736960105559 ], [ -122.370787840087672, 37.737365207862915 ], [ -122.370803277557826, 37.737360155669997 ], [ -122.370818689794845, 37.737354073786427 ], [ -122.370832347014144, 37.737346989952236 ], [ -122.370845986935052, 37.737339219115491 ], [ -122.370859609577963, 37.737330762099973 ], [ -122.37087148583683, 37.737321646086173 ], [ -122.370883345501966, 37.737311843608374 ], [ -122.370893458790221, 37.73730138240758 ], [ -122.370905214055995, 37.73728746095329 ], [ -122.370915232622579, 37.737273223985788 ], [ -122.370938760775033, 37.737246068067016 ], [ -122.370952262410057, 37.737232805878257 ], [ -122.370964052918382, 37.737220257585115 ], [ -122.370979300231937, 37.737207654399519 ], [ -122.370992836419262, 37.737195765109583 ], [ -122.371008110346423, 37.737184191861481 ], [ -122.371021663808406, 37.737172989019946 ], [ -122.371038683399732, 37.737162074224159 ], [ -122.371053991182038, 37.737151873609982 ], [ -122.371071037042427, 37.737141988756214 ], [ -122.371088090848829, 37.737132447136844 ], [ -122.371105162626606, 37.737123591955786 ], [ -122.371122242351063, 37.73711508000909 ], [ -122.371141068795652, 37.737107227047161 ], [ -122.371159903532885, 37.737099717313619 ], [ -122.37117875555127, 37.737092894028791 ], [ -122.371197615863039, 37.737086413972314 ], [ -122.371216494148271, 37.737080620353588 ], [ -122.371237109474734, 37.737075142508274 ], [ -122.371256013343697, 37.737070378840897 ], [ -122.371276663229182, 37.737066273617579 ], [ -122.371297321762341, 37.737062511891089 ], [ -122.371316268832857, 37.737059464068786 ], [ -122.371347308485454, 37.737055880822481 ], [ -122.371363160732827, 37.737067303397573 ], [ -122.371385487850503, 37.737061111612277 ], [ -122.371409819958558, 37.737065875598411 ], [ -122.371432414333356, 37.737070323816937 ], [ -122.371456712218176, 37.737073714884438 ], [ -122.371480992125981, 37.737076419506209 ], [ -122.371505255439089, 37.737078437660294 ], [ -122.371529509424818, 37.737080112869066 ], [ -122.371555466903885, 37.73708073037561 ], [ -122.371579678008715, 37.737080689164763 ], [ -122.371603880469053, 37.737080304723065 ], [ -122.371628056995533, 37.737078890598873 ], [ -122.371652224876399, 37.737077133243893 ], [ -122.371676366821816, 37.737074346206427 ], [ -122.371700500120539, 37.737071215938158 ], [ -122.37172460748225, 37.737067055987431 ], [ -122.371748706203064, 37.737062553080534 ], [ -122.371772778971504, 37.737057019942043 ], [ -122.371791673803557, 37.737051912693794 ], [ -122.371807120477257, 37.737047203583948 ], [ -122.371822584094161, 37.737043180929248 ], [ -122.371838065007339, 37.737039844998783 ], [ -122.371853562850688, 37.737037194974249 ], [ -122.371869078682678, 37.737035231662922 ], [ -122.371884611459564, 37.737033954806734 ], [ -122.371907076518241, 37.737033254815913 ], [ -122.371922652170909, 37.737033693814745 ], [ -122.371938237168152, 37.737034476300948 ], [ -122.371953839112081, 37.737035945242191 ], [ -122.371969466994983, 37.737038443858872 ], [ -122.371985103179384, 37.737041285704763 ], [ -122.372000757348985, 37.737044813989243 ], [ -122.372020067187322, 37.7370561815437 ], [ -122.372035876997472, 37.737065887888214 ], [ -122.372049966365637, 37.737075964928742 ], [ -122.372064081677323, 37.737087071645014 ], [ -122.372076467900058, 37.737098205832325 ], [ -122.372088880758042, 37.737110369684729 ], [ -122.372099573180051, 37.737122904509278 ], [ -122.37211027423858, 37.737135782009496 ], [ -122.372119254860294, 37.737149030482428 ], [ -122.372128244823543, 37.737162622169478 ], [ -122.372145506378345, 37.737161318085484 ], [ -122.372167936525273, 37.737159244598097 ], [ -122.372188603686311, 37.73715582594123 ], [ -122.372209253557884, 37.737151721103693 ], [ -122.372228157715924, 37.737146956725766 ], [ -122.372248764338792, 37.737141135477749 ], [ -122.372267624915224, 37.737134655244574 ], [ -122.372283045287503, 37.737128916400529 ], [ -122.372293192944326, 37.737119827982468 ], [ -122.372299822556045, 37.737108391374868 ], [ -122.372301239987792, 37.73709600777574 ], [ -122.372373414633373, 37.737077692981821 ], [ -122.372418232665979, 37.737071830045089 ], [ -122.372464787747589, 37.737066283124271 ], [ -122.372509631380041, 37.737061450384822 ], [ -122.37255449229049, 37.737057303530676 ], [ -122.372599370500893, 37.737053843385567 ], [ -122.372645994751693, 37.737051042199361 ], [ -122.372690898556655, 37.737048611702214 ], [ -122.372735828999197, 37.737047210854271 ], [ -122.372782496496995, 37.737046126017439 ], [ -122.372808401383125, 37.737044683904415 ], [ -122.372830858125084, 37.737043640231676 ], [ -122.372853323170872, 37.737042939785901 ], [ -122.372899999307762, 37.737042197853711 ], [ -122.37292249030402, 37.737042527072028 ], [ -122.372944989951108, 37.737043199511795 ], [ -122.372969218351344, 37.737043844741514 ], [ -122.373014252244417, 37.737046562227299 ], [ -122.373036786152014, 37.737048607558009 ], [ -122.373061049498276, 37.737050625391774 ], [ -122.373083592412328, 37.73705301420835 ], [ -122.37312871282991, 37.73705916390778 ], [ -122.37317385056528, 37.737066000315984 ], [ -122.373196436400818, 37.737070105245131 ], [ -122.373219031568397, 37.737074552835523 ], [ -122.373239897653349, 37.737079028185967 ], [ -122.373285121933037, 37.737089296808776 ], [ -122.373306013982969, 37.737094801824675 ], [ -122.373328651749006, 37.737100966082771 ], [ -122.373370470468529, 37.737113348723689 ], [ -122.373393126235527, 37.737120199135234 ], [ -122.373434996907847, 37.737134641656631 ], [ -122.373455940892711, 37.737142205725576 ], [ -122.373476893541877, 37.737150113291072 ], [ -122.373496125754656, 37.737158391572102 ], [ -122.373538065688621, 37.73717557958782 ], [ -122.373776518618286, 37.737372998626824 ], [ -122.373949450475536, 37.737509653888004 ], [ -122.374125779894442, 37.737643851318353 ], [ -122.374316078561918, 37.737783320091772 ], [ -122.374328378667045, 37.737791021785021 ], [ -122.374342390568998, 37.737798009519793 ], [ -122.374356385166024, 37.737804311076282 ], [ -122.374372082895462, 37.737809555173321 ], [ -122.374387762959685, 37.737814112547987 ], [ -122.374403417067299, 37.737817640792912 ], [ -122.374419053501768, 37.737820482040924 ], [ -122.374434673327585, 37.73782263737381 ], [ -122.374450266821725, 37.73782376248419 ], [ -122.374467562767649, 37.7378238306935 ], [ -122.374483104668272, 37.737822896715045 ], [ -122.3745003576703, 37.737821248786098 ], [ -122.374522744667573, 37.737817458997327 ], [ -122.374650468637824, 37.737875858898875 ], [ -122.374739734976373, 37.737918045764403 ], [ -122.374827316638459, 37.737961976186384 ], [ -122.374913186617448, 37.738006620783011 ], [ -122.374999090980893, 37.738052637675224 ], [ -122.375048414507546, 37.73808824928939 ], [ -122.375108232298459, 37.738128500964891 ], [ -122.375139852148493, 37.738147912836176 ], [ -122.375171464045508, 37.73816698146242 ], [ -122.375203066606062, 37.738185706865586 ], [ -122.375234661212687, 37.738204089023711 ], [ -122.375266237820483, 37.738221784733298 ], [ -122.375299535245929, 37.738239109683342 ], [ -122.375332823679372, 37.738256091403926 ], [ -122.375366094804107, 37.738272386664057 ], [ -122.375399356935574, 37.738288338694765 ], [ -122.375432611110568, 37.738303947479515 ], [ -122.37546757640348, 37.738318842292436 ], [ -122.375502533047822, 37.738333393869439 ], [ -122.375537481043125, 37.738347602210531 ], [ -122.375572411725926, 37.738361124090282 ], [ -122.375609062188403, 37.738374275220636 ], [ -122.375643966907035, 37.738386767402702 ], [ -122.37568059209606, 37.738398888823312 ], [ -122.375717199624106, 37.7384103237871 ], [ -122.375753798499645, 37.738421415514019 ], [ -122.375790388383365, 37.73843216428417 ], [ -122.375828690404418, 37.738442198509603 ], [ -122.375865245990923, 37.738451574074567 ], [ -122.375903521699868, 37.738460578879355 ], [ -122.375941788753465, 37.738469240446264 ], [ -122.375992156916524, 37.738477709334177 ], [ -122.376007733601398, 37.738478148331104 ], [ -122.376025030039884, 37.738478216031723 ], [ -122.376042317820222, 37.738477940778964 ], [ -122.376057859492079, 37.73847700659843 ], [ -122.376075120930508, 37.738475701670041 ], [ -122.376092365729193, 37.738473710277233 ], [ -122.376107872737933, 37.738471403188342 ], [ -122.376125099858029, 37.738468725345385 ], [ -122.376140580868082, 37.738465388575889 ], [ -122.376157790308596, 37.738462024282761 ], [ -122.376188700679592, 37.738453291649634 ], [ -122.376205866785881, 37.738448211222327 ], [ -122.376221296131305, 37.738442814809545 ], [ -122.376265793698082, 37.738424251349997 ], [ -122.376279450587873, 37.738417166611207 ], [ -122.37629309880883, 37.738409738645394 ], [ -122.37632036057704, 37.738393509807281 ], [ -122.376333982797163, 37.738385052434992 ], [ -122.376357734990449, 37.738366819020342 ], [ -122.376369602073851, 37.738357359228573 ], [ -122.376381452512433, 37.738347212973743 ], [ -122.376391573827405, 37.738337094253737 ], [ -122.376401686479809, 37.738326632582023 ], [ -122.376411790448728, 37.738315827134819 ], [ -122.376421885754795, 37.738304678735901 ], [ -122.376430251938501, 37.738293557872694 ], [ -122.376446950667884, 37.738269943226257 ], [ -122.376453571082962, 37.738258163436321 ], [ -122.376017920759935, 37.737991096533946 ], [ -122.37598688059623, 37.737994681015465 ], [ -122.375962730194601, 37.737997125704617 ], [ -122.375940290890341, 37.737998856694041 ], [ -122.375916122804242, 37.738000614653615 ], [ -122.375891946066474, 37.73800202993192 ], [ -122.375869489077928, 37.738003074187837 ], [ -122.375845295342131, 37.738003802450933 ], [ -122.37582109225724, 37.738004187769143 ], [ -122.375798609973742, 37.738004202598695 ], [ -122.375774389906638, 37.738003901450845 ], [ -122.375750161169094, 37.738003256797974 ], [ -122.375727661205985, 37.738002584893898 ], [ -122.37570341480351, 37.738001254060514 ], [ -122.375679160430039, 37.737999579985654 ], [ -122.375656634485836, 37.737997878666114 ], [ -122.375632362435553, 37.737995517861528 ], [ -122.375609819167565, 37.737993130082067 ], [ -122.375585529448685, 37.737990082822328 ], [ -122.37556296919702, 37.737987008302788 ], [ -122.375540391282939, 37.737983247608021 ], [ -122.37551432983625, 37.737978511718602 ], [ -122.375486496320931, 37.737972087487712 ], [ -122.375460382568676, 37.737965292513373 ], [ -122.375432514421007, 37.737957495642242 ], [ -122.375406358052871, 37.737948984242749 ], [ -122.375380184027932, 37.737939786666473 ], [ -122.375353992685788, 37.737929902633333 ], [ -122.375329512792433, 37.737919304628377 ], [ -122.375305015582782, 37.737908020167239 ], [ -122.37528050105756, 37.737896049249933 ], [ -122.375255969224384, 37.737883392151048 ], [ -122.375233148827334, 37.737870020533251 ], [ -122.375210319784216, 37.737856305960051 ], [ -122.375189193529863, 37.73784153419291 ], [ -122.37516805862289, 37.737826419196367 ], [ -122.375146906409697, 37.737810618019523 ], [ -122.375127474300257, 37.737794445826715 ], [ -122.375108024870912, 37.737777586905018 ], [ -122.375090295558422, 37.737760357517622 ], [ -122.375072548933076, 37.737742441676424 ], [ -122.37505479366277, 37.737724182881529 ], [ -122.375038749481291, 37.737705209578436 ], [ -122.375024434427573, 37.737686209306304 ], [ -122.375010102046858, 37.737666522032093 ], [ -122.374995761020472, 37.737646491805087 ], [ -122.374983140446119, 37.737626090835334 ], [ -122.374961338821961, 37.737584547432398 ], [ -122.374950420699136, 37.737563089278161 ], [ -122.374942960095922, 37.737541576104334 ], [ -122.374933762081014, 37.737519747213518 ], [ -122.374928021582775, 37.737497863303837 ], [ -122.374916523276909, 37.737453409032263 ], [ -122.374908906819144, 37.737425717795361 ], [ -122.374901394283526, 37.737402145264888 ], [ -122.374889826731234, 37.737354945185302 ], [ -122.374887491804515, 37.737330946902453 ], [ -122.3748834277893, 37.737306976407964 ], [ -122.374882821609901, 37.737282950341836 ], [ -122.374880487033479, 37.737258952053075 ], [ -122.374882732189576, 37.737210845452722 ], [ -122.374885583514967, 37.737186764643965 ], [ -122.374888443498122, 37.737163027060632 ], [ -122.374893031881015, 37.737139261974114 ], [ -122.37489934935347, 37.73711546937318 ], [ -122.3749056754816, 37.737092019997398 ], [ -122.374921802888267, 37.737045752947004 ], [ -122.374931603466351, 37.737022935008291 ], [ -122.374941413382857, 37.737000460008709 ], [ -122.37495296035803, 37.736978301004505 ], [ -122.374966236069355, 37.736956114489473 ], [ -122.374979529092755, 37.736934614424079 ], [ -122.375009607247023, 37.736892932445095 ], [ -122.375026392362614, 37.736872749981458 ], [ -122.375043186136296, 37.736852911015554 ], [ -122.37504977201327, 37.736839758673845 ], [ -122.375040807874441, 37.736827196605702 ], [ -122.375029742270328, 37.736799903626249 ], [ -122.375025921408564, 37.736785543166128 ], [ -122.37502556634017, 37.73677147091604 ], [ -122.375026931350064, 37.736757027929769 ], [ -122.375028304673904, 37.736742928174571 ], [ -122.375033136164149, 37.736728773387163 ], [ -122.3750397133647, 37.736715277545557 ], [ -122.37504803628174, 37.736702440924056 ], [ -122.375058114591354, 37.736690605907675 ], [ -122.375071641371591, 37.736678372922562 ], [ -122.375085194128815, 37.73666716961273 ], [ -122.375098729567796, 37.736655280124666 ], [ -122.375110518931734, 37.736642731146382 ], [ -122.375122290631623, 37.736629495995757 ], [ -122.375132325623056, 37.736615945119389 ], [ -122.375140614208931, 37.736601735308589 ], [ -122.375147156735764, 37.736586866558262 ], [ -122.375155332379663, 37.736568194818872 ], [ -122.375160085887146, 37.736550950995301 ], [ -122.375166117416924, 37.736515831932394 ], [ -122.375169124525783, 37.736497929449705 ], [ -122.375168232453305, 37.736462576936368 ], [ -122.375163874266519, 37.736426936496883 ], [ -122.375219437861915, 37.736298664625259 ], [ -122.375236617355156, 37.736225597875112 ], [ -122.375493436762397, 37.736054292153611 ], [ -122.375564665724326, 37.73599856352913 ], [ -122.375665547467477, 37.735884334377992 ], [ -122.375736776137472, 37.735828605647917 ], [ -122.375805543594495, 37.735812402863488 ], [ -122.37590130745248, 37.735838004215466 ], [ -122.375948138753657, 37.735843438862048 ], [ -122.375966461137224, 37.735815678053854 ], [ -122.375965386747623, 37.735773118079564 ], [ -122.375936427668094, 37.735722074898895 ], [ -122.375905272384003, 37.735652524496416 ], [ -122.375880455265374, 37.735628540802992 ], [ -122.375898405065016, 37.735586021302886 ], [ -122.375909891231828, 37.735561459614892 ], [ -122.375897018810662, 37.735531105204046 ], [ -122.375855226545227, 37.735519752858821 ], [ -122.375828603150225, 37.735492707640475 ], [ -122.37586986690205, 37.735483123506768 ], [ -122.375876469825457, 37.735470657017984 ], [ -122.375850080018679, 37.735452878901683 ], [ -122.375875629426574, 37.73543736440692 ], [ -122.375902751563189, 37.735415643772811 ], [ -122.37592791070513, 37.735384683844323 ], [ -122.375963949778878, 37.735305136416706 ], [ -122.375989997452365, 37.735240856058539 ], [ -122.376000720711573, 37.735186090510247 ], [ -122.375916941813387, 37.735087162261337 ], [ -122.375874456680464, 37.735048351870503 ], [ -122.37583223555086, 37.735088510886278 ], [ -122.375790902711827, 37.735095349476808 ], [ -122.375731004666164, 37.735120338792314 ], [ -122.375697972699726, 37.73518198337095 ], [ -122.375629431028628, 37.735207109686826 ], [ -122.375573154825574, 37.735238564895731 ], [ -122.37553454675556, 37.735284846828293 ], [ -122.375502844795335, 37.735330675452381 ], [ -122.375460320132888, 37.735358821434986 ], [ -122.375407345243758, 37.735384043468251 ], [ -122.375373074275174, 37.73539660668353 ], [ -122.375319406071526, 37.735394370629407 ], [ -122.375255063184753, 37.735380286724919 ], [ -122.375204090598487, 37.735347791725545 ], [ -122.375165443829161, 37.735324028264564 ], [ -122.37512657258921, 37.735291340362735 ], [ -122.375075747344539, 37.735264680144091 ], [ -122.375062572554327, 37.735222312735722 ], [ -122.375055042872361, 37.735198053755049 ], [ -122.375042101935179, 37.735164953712463 ], [ -122.375037873785985, 37.735134461646254 ], [ -122.375036955812135, 37.735098079446828 ], [ -122.375058051950944, 37.735043149193146 ], [ -122.375007538650593, 37.735028844794947 ], [ -122.3749660498938, 37.735029505033381 ], [ -122.374934543651534, 37.735014555319857 ], [ -122.374908309749543, 37.735002954785188 ], [ -122.374876500793206, 37.734975991875665 ], [ -122.374871744160856, 37.734924563038625 ], [ -122.374892528974101, 37.73485727640653 ], [ -122.374913772355171, 37.7348081807394 ], [ -122.374946666252242, 37.734741044765023 ], [ -122.374988965601105, 37.734703975095854 ], [ -122.375029917257038, 37.734682034854018 ], [ -122.375070713005826, 37.734653916534754 ], [ -122.375104671911529, 37.734628997279636 ], [ -122.375115698854458, 37.734586244981536 ], [ -122.375146199993921, 37.734561380743287 ], [ -122.375129646198275, 37.734522157113517 ], [ -122.375090930945873, 37.734495647813482 ], [ -122.375036267841509, 37.734453940390075 ], [ -122.374981985833443, 37.734427335148574 ], [ -122.374938543580228, 37.734419099017749 ], [ -122.374912994333698, 37.734434613586529 ], [ -122.374893666730827, 37.734422560335261 ], [ -122.374893060571651, 37.734398534257735 ], [ -122.374907614581076, 37.734358472486285 ], [ -122.374894292846008, 37.734310270489409 ], [ -122.374881421402023, 37.734279915955867 ], [ -122.37487704615539, 37.734243588766795 ], [ -122.374869213561681, 37.734207316868407 ], [ -122.374868295688771, 37.734170934936692 ], [ -122.374926339800538, 37.734072496020858 ], [ -122.374952543818168, 37.734014394217503 ], [ -122.374954780508872, 37.73396594408409 ], [ -122.374957241667502, 37.733926418380705 ], [ -122.374963229775304, 37.733889582909434 ], [ -122.374983289721541, 37.733862137955839 ], [ -122.375012218505518, 37.733843479312256 ], [ -122.375069108753891, 37.733836393394171 ], [ -122.375122463708166, 37.733826273440556 ], [ -122.375153432543385, 37.73381994338358 ], [ -122.375171833015472, 37.733795271716147 ], [ -122.375171062228418, 37.733764724622461 ], [ -122.375229769357603, 37.733624041261521 ], [ -122.375288514453459, 37.733553403441164 ], [ -122.375324856119903, 37.733485869092775 ], [ -122.375361353624825, 37.733424512796418 ], [ -122.375375681648336, 37.73337552709593 ], [ -122.375382713915272, 37.733311549522142 ], [ -122.375463619327064, 37.733228197775681 ], [ -122.375509608742206, 37.733200339972562 ], [ -122.375523633451934, 37.73313934134989 ], [ -122.37550722668901, 37.733105952882383 ], [ -122.375651602500071, 37.732933689521552 ], [ -122.375685404494646, 37.732902592027898 ], [ -122.375688325042901, 37.732881256983333 ], [ -122.375650684266844, 37.732897307862871 ], [ -122.375550384562601, 37.732828858101236 ], [ -122.375617693995721, 37.732754993758505 ], [ -122.375573481700997, 37.732716210488881 ], [ -122.375197427066922, 37.732959117287578 ], [ -122.375009435995196, 37.732773602543226 ], [ -122.374988848118562, 37.732780110729863 ], [ -122.374969139909751, 37.732752955276041 ], [ -122.374890774233947, 37.732799869727202 ], [ -122.374867609109913, 37.732772769268017 ], [ -122.374833347919932, 37.732785675832154 ], [ -122.374804918949508, 37.732755568576273 ], [ -122.374609189594366, 37.732880233977106 ], [ -122.374557526391285, 37.732820280340718 ], [ -122.37490487958712, 37.732604958073601 ], [ -122.374821719829242, 37.732530398040169 ], [ -122.37467574043562, 37.732639163620497 ], [ -122.37439309494539, 37.732540308159429 ], [ -122.374310276013688, 37.732547806255845 ], [ -122.374229713731395, 37.732576213850287 ], [ -122.374176359200263, 37.732586333132673 ], [ -122.374120153956625, 37.732620533463049 ], [ -122.374114165533243, 37.73265736889919 ], [ -122.374052159400549, 37.732667282379175 ], [ -122.374002184525267, 37.73267425782587 ], [ -122.373911483788106, 37.732712096999926 ], [ -122.373893083165825, 37.732736768474979 ], [ -122.373883628328045, 37.732773315665987 ], [ -122.373790281780344, 37.732774800286634 ], [ -122.373761509214617, 37.732799636420175 ], [ -122.373753549290342, 37.732826888733754 ], [ -122.373747327007891, 37.732854456775314 ], [ -122.373725625111732, 37.732885361268295 ], [ -122.373694734433712, 37.732894780258938 ], [ -122.373637610789032, 37.732892598419873 ], [ -122.373568854206965, 37.732909142898315 ], [ -122.37354165442683, 37.732927773970779 ], [ -122.373512804196523, 37.732949521278634 ], [ -122.37350146473058, 37.732979917309954 ], [ -122.373503074145475, 37.733043757608968 ], [ -122.373500309404122, 37.733071270654619 ], [ -122.373481674928072, 37.73308667468919 ], [ -122.373435459514155, 37.733105607832456 ], [ -122.373412831615411, 37.733099787091327 ], [ -122.373389322638175, 37.733127629980004 ], [ -122.373370999608952, 37.73315539040528 ], [ -122.373326815604614, 37.733186309201884 ], [ -122.373292553942591, 37.733199214767993 ], [ -122.373255060257023, 37.73322109971145 ], [ -122.373217868644616, 37.733254997012843 ], [ -122.373184748909821, 37.733313208646514 ], [ -122.373147255135009, 37.733335093555283 ], [ -122.373108032325476, 37.733357005665319 ], [ -122.373055135575555, 37.733385315688466 ], [ -122.373026509933439, 37.733415986475677 ], [ -122.372989171414929, 37.733444049131762 ], [ -122.372947104996001, 37.733490385196987 ], [ -122.372903457602277, 37.733542583556414 ], [ -122.372843059429968, 37.73361633669991 ], [ -122.372787475219468, 37.733675248937253 ], [ -122.372660653342237, 37.733789544305665 ], [ -122.372615406285462, 37.73384691842643 ], [ -122.372571792697812, 37.733900489569244 ], [ -122.372542285196062, 37.733964824408801 ], [ -122.372515465283058, 37.733998556633921 ], [ -122.372467598558771, 37.73402060589649 ], [ -122.372390422139858, 37.734046211198297 ], [ -122.372337516324379, 37.734074177664638 ], [ -122.372263676850309, 37.734163595440648 ], [ -122.372229942026564, 37.734197437754013 ], [ -122.37219905926051, 37.734207199576488 ], [ -122.372135400372358, 37.734220228553554 ], [ -122.372066183983833, 37.734218581449781 ], [ -122.37202454003129, 37.734213062859681 ], [ -122.371977485584694, 37.734198702222137 ], [ -122.371931036017173, 37.73420836793948 ], [ -122.371912020534467, 37.734208670054151 ], [ -122.371892468688813, 37.734187692159942 ], [ -122.371850522169254, 37.73417016004948 ], [ -122.371815256975381, 37.734143251243232 ], [ -122.37178360511767, 37.734122465563011 ], [ -122.371757069813924, 37.734098851958706 ], [ -122.371718425134958, 37.734075087082275 ], [ -122.371658811600753, 37.734042727577382 ], [ -122.37159046796063, 37.734007073362946 ], [ -122.371530163390418, 37.733947255979729 ], [ -122.371503472637912, 37.733917463974464 ], [ -122.371452035953411, 37.733866433138324 ], [ -122.371412863920071, 37.733821731652299 ], [ -122.371365343126712, 37.733788836837448 ], [ -122.371306006337434, 37.733698787998705 ], [ -122.37124803587426, 37.73366296856193 ], [ -122.371181508213965, 37.733630718908138 ], [ -122.371142786185317, 37.733603864806447 ], [ -122.371119319714566, 37.733564750701184 ], [ -122.371068652635969, 37.733544266816153 ], [ -122.37104196222009, 37.733514474978968 ], [ -122.371009541074471, 37.733463141702856 ], [ -122.370970292434578, 37.733415350746299 ], [ -122.370945321772282, 37.733385187940364 ], [ -122.370906375642221, 37.733349409875622 ], [ -122.370882676078168, 37.733301028616602 ], [ -122.370853876981954, 37.733256162236223 ], [ -122.370812000355784, 37.733241375562343 ], [ -122.370762102212552, 37.733251438949395 ], [ -122.3707392498319, 37.733236693541137 ], [ -122.370742015947201, 37.733209180555527 ], [ -122.370734029961071, 37.733166730305776 ], [ -122.370713641007328, 37.733112459546398 ], [ -122.370604476976737, 37.73303521894465 ], [ -122.370512089823777, 37.733006126395267 ], [ -122.370444949736466, 37.73294950753936 ], [ -122.370336702208434, 37.732908648655865 ], [ -122.370231912105666, 37.732867735066925 ], [ -122.37017410658585, 37.732838436949166 ], [ -122.370077726716076, 37.732788118918357 ], [ -122.369991114296425, 37.732713610079365 ], [ -122.369927812152071, 37.732672038006164 ], [ -122.369888943911135, 37.73263934837334 ], [ -122.369823835861169, 37.732594714362811 ], [ -122.369764448866945, 37.732571278048333 ], [ -122.369664767427579, 37.732527192896548 ], [ -122.369608556728025, 37.732490658570462 ], [ -122.369587411983062, 37.732476915661685 ], [ -122.369536133374979, 37.732432062044303 ], [ -122.369522426580374, 37.732368414248455 ], [ -122.369524131442745, 37.732298684450967 ], [ -122.369528168991479, 37.732252953067388 ], [ -122.369514764766407, 37.732201317633788 ], [ -122.369460037420595, 37.732156862346898 ], [ -122.369435499832107, 37.732143860523472 ], [ -122.369412699166176, 37.732131174223944 ], [ -122.369391627493243, 37.732118460761214 ], [ -122.369368818907404, 37.732105431490474 ], [ -122.369347729982366, 37.732092031567248 ], [ -122.369305534888653, 37.732064545256826 ], [ -122.36928614837251, 37.732050088222451 ], [ -122.369265033578955, 37.732035658605412 ], [ -122.369208612399049, 37.731992603257169 ], [ -122.36919310687361, 37.731994909435159 ], [ -122.369177583743095, 37.731996529438547 ], [ -122.369162034700395, 37.731997119211783 ], [ -122.369144739776431, 37.731997050503772 ], [ -122.369129147571257, 37.731995924141103 ], [ -122.369113529476451, 37.731993768371993 ], [ -122.369097893772235, 37.731990926153657 ], [ -122.369082241496287, 37.731987397469659 ], [ -122.369068291609253, 37.731982811686983 ], [ -122.369052587205204, 37.731977223921163 ], [ -122.369038602793921, 37.731971265229653 ], [ -122.369026321118199, 37.73196424943503 ], [ -122.36900353818659, 37.731952249503117 ], [ -122.368984376529525, 37.731946716297898 ], [ -122.368965231792913, 37.731941869547697 ], [ -122.368946113651845, 37.731938052736979 ], [ -122.368927003791569, 37.731934578880427 ], [ -122.368907928458668, 37.731932477926101 ], [ -122.368887133122826, 37.731930747340918 ], [ -122.368868091978015, 37.73193001956556 ], [ -122.368847348437356, 37.731930348605978 ], [ -122.368826613520639, 37.731931020594487 ], [ -122.368807642108294, 37.731933038334546 ], [ -122.368788678980067, 37.731935399303374 ], [ -122.368768013114249, 37.731938817366917 ], [ -122.368749101767222, 37.731943237687446 ], [ -122.368730207333343, 37.731948344463113 ], [ -122.368711330849322, 37.731954137677484 ], [ -122.368694217167373, 37.731961276382087 ], [ -122.368680664304932, 37.731972478965581 ], [ -122.368668865613287, 37.731984683814787 ], [ -122.368657084876617, 37.73199757537909 ], [ -122.368648777958526, 37.732011098297363 ], [ -122.368640488989229, 37.732025307656784 ], [ -122.368633936925264, 37.73203983255609 ], [ -122.368629130411534, 37.732055016771099 ], [ -122.368626053219003, 37.732070173558292 ], [ -122.368624712941653, 37.732085646160606 ], [ -122.368625101296246, 37.732101091346223 ], [ -122.368627218283763, 37.732116509115187 ], [ -122.368631063559619, 37.732131899472847 ], [ -122.368636620901697, 37.732146575949926 ], [ -122.368642134756229, 37.73215953657504 ], [ -122.36864418270045, 37.732172208258227 ], [ -122.368644510648082, 37.732185250859203 ], [ -122.368643101337838, 37.732197977925267 ], [ -122.368638226113163, 37.732210416049476 ], [ -122.368633341924749, 37.732222511501767 ], [ -122.368624983881077, 37.732233974774296 ], [ -122.368616599605744, 37.732244408647276 ], [ -122.368606469086217, 37.732254183488791 ], [ -122.368594576099341, 37.732262612829288 ], [ -122.368580928237833, 37.732270039911 ], [ -122.368565516878832, 37.732276121781609 ], [ -122.368551791336984, 37.732280459548285 ], [ -122.368534574353816, 37.732283479507736 ], [ -122.368503527583357, 37.732286718795137 ], [ -122.368474192879688, 37.732289244196302 ], [ -122.368444831940408, 37.732290739916586 ], [ -122.368417182378593, 37.732291521763315 ], [ -122.368387786921161, 37.732291644563965 ], [ -122.368358365231217, 37.732290737683726 ], [ -122.368330655267144, 37.732289116925642 ], [ -122.368301199755848, 37.732286837114728 ], [ -122.368273446651969, 37.732283500211402 ], [ -122.368243956285454, 37.732279847486197 ], [ -122.368216168673811, 37.732275137663905 ], [ -122.368188355181374, 37.73226939815595 ], [ -122.368160533065264, 37.732263315415068 ], [ -122.368141380018642, 37.732258125299396 ], [ -122.368113230055812, 37.732238999945096 ], [ -122.36808681703171, 37.732220190681751 ], [ -122.368058684352292, 37.732201751767072 ], [ -122.36803056030729, 37.7321836557974 ], [ -122.368002444910147, 37.732165903321956 ], [ -122.367974346780599, 37.732148837292527 ], [ -122.367944520376312, 37.73213179865752 ], [ -122.367916439533545, 37.732115419341561 ], [ -122.367886638690265, 37.732099410376478 ], [ -122.367832352327795, 37.732072458330258 ], [ -122.367819906502248, 37.73205892111374 ], [ -122.367804021362375, 37.732046125146958 ], [ -122.367788153134725, 37.73203401563628 ], [ -122.367772302171431, 37.732022592850853 ], [ -122.36775646811256, 37.732011856247048 ], [ -122.36773719473392, 37.732001860615576 ], [ -122.367719666903668, 37.731992524310549 ], [ -122.367700427353682, 37.731983901864261 ], [ -122.367681205751111, 37.731975965856719 ], [ -122.367660281054071, 37.731969086933262 ], [ -122.367641110867112, 37.73196321028319 ], [ -122.367620229304634, 37.731958047484753 ], [ -122.367599364995712, 37.731953571135463 ], [ -122.367576797935783, 37.73195015186301 ], [ -122.367555976757444, 37.731947391638229 ], [ -122.367533461105907, 37.731946031721549 ], [ -122.367512683055082, 37.731944987621269 ], [ -122.367483296703725, 37.731945453417282 ], [ -122.367460850404399, 37.731946839567364 ], [ -122.367440158593624, 37.731949227444112 ], [ -122.367417755407999, 37.731952329443608 ], [ -122.367397106730152, 37.731956433994185 ], [ -122.367376475284885, 37.731961224444852 ], [ -122.367355869716533, 37.731967044845845 ], [ -122.367335281393224, 37.731973551696129 ], [ -122.367316447568555, 37.731981060824729 ], [ -122.367295902357668, 37.73198928380036 ], [ -122.367278831305327, 37.731998138437078 ], [ -122.367261967911546, 37.732015230495207 ], [ -122.367245095194775, 37.732031979335368 ], [ -122.3672282059146, 37.732048041709206 ], [ -122.367209570402153, 37.732063445029034 ], [ -122.36719092591278, 37.732078505124896 ], [ -122.367170544505385, 37.732093249381123 ], [ -122.367151866198881, 37.732106936553961 ], [ -122.367109296757391, 37.732133363410995 ], [ -122.367093954975161, 37.732142190615349 ], [ -122.367075008646182, 37.732145238041312 ], [ -122.367056088868793, 37.732149314858027 ], [ -122.367037194611967, 37.732154421356583 ], [ -122.367020054502376, 37.732160529869304 ], [ -122.367002940956212, 37.732167668322553 ], [ -122.366985852582928, 37.732175836463647 ], [ -122.366968782142251, 37.732184691044218 ], [ -122.366955194489435, 37.732194520522967 ], [ -122.366939895442201, 37.732205063845008 ], [ -122.366921113252403, 37.732214632268928 ], [ -122.366907922208441, 37.732240250159542 ], [ -122.366903055326574, 37.732253031987497 ], [ -122.36689644254804, 37.732265154204406 ], [ -122.366886346633592, 37.732276301798386 ], [ -122.366876207612776, 37.732285733533743 ], [ -122.366862576812395, 37.732293846594757 ], [ -122.366847157024765, 37.732299584734065 ], [ -122.366829956520121, 37.73230329090832 ], [ -122.366814424990764, 37.732304567093777 ], [ -122.366797104132374, 37.732303468361799 ], [ -122.366781459823102, 37.732300282335181 ], [ -122.366765755862758, 37.732294693984812 ], [ -122.366677289399263, 37.732215062245395 ], [ -122.365834112470068, 37.733139703386506 ], [ -122.365856312715465, 37.733197380427903 ], [ -122.365316308712423, 37.733799605173139 ], [ -122.365299125359911, 37.733803997570533 ], [ -122.365281864478533, 37.733805301201542 ], [ -122.365264543279295, 37.733804201695385 ], [ -122.365248890111999, 37.733800672514192 ], [ -122.365233177335227, 37.733794740734439 ], [ -122.365220860913354, 37.733786351644746 ], [ -122.36520850211312, 37.733776246410308 ], [ -122.365199556897281, 37.733764370320301 ], [ -122.365194052497998, 37.733751753307722 ], [ -122.365191987516951, 37.733738394845759 ], [ -122.366541619606664, 37.732183905191341 ], [ -122.366457610712786, 37.732144032787161 ], [ -122.366314210759612, 37.732287082999953 ], [ -122.3662299863946, 37.73223862977143 ], [ -122.365558974179407, 37.732995040740846 ], [ -122.365446339012479, 37.733054852496743 ], [ -122.365330791791507, 37.732998653575926 ], [ -122.365348830518258, 37.732890552295949 ], [ -122.366182259071422, 37.731990790641241 ], [ -122.366150729675482, 37.731974808623058 ], [ -122.366190760220135, 37.731916146203794 ], [ -122.366000047621938, 37.731827832578617 ], [ -122.365157289100338, 37.732769287028631 ], [ -122.365013538239467, 37.732829590952356 ], [ -122.364937337201866, 37.732756287397883 ], [ -122.364966161751269, 37.732664496598098 ], [ -122.365779063978152, 37.731773647061175 ], [ -122.365808723306458, 37.731715149013056 ], [ -122.36565085480737, 37.73162631442078 ], [ -122.364828209515139, 37.732542382802549 ], [ -122.364733415884473, 37.732486198184951 ], [ -122.36510850587311, 37.732065821885968 ], [ -122.363700263748257, 37.731284294325405 ], [ -122.362990310438022, 37.732074612690823 ], [ -122.362876152103269, 37.73214268678057 ], [ -122.362621964702214, 37.732005583479989 ], [ -122.363403772813015, 37.731115242143439 ], [ -122.362852893371198, 37.730800849481362 ], [ -122.362060297076368, 37.731674875973241 ], [ -122.361775005493385, 37.731538605834466 ], [ -122.362457618945527, 37.730761087830871 ], [ -122.36256707070703, 37.730643300895977 ], [ -122.361976423103286, 37.73032884619532 ], [ -122.362085849184908, 37.730210029743688 ], [ -122.362069397962841, 37.730199017017426 ], [ -122.361906454524132, 37.730089941350215 ], [ -122.361876896198638, 37.7300835409455 ], [ -122.361847355773691, 37.730077827250902 ], [ -122.361816112221945, 37.7300731708266 ], [ -122.361786605500626, 37.73006882976096 ], [ -122.361755405286033, 37.7300658891753 ], [ -122.361724221585348, 37.730063635320825 ], [ -122.361693055759957, 37.73006206735193 ], [ -122.361661915051329, 37.730061529615817 ], [ -122.361630792215976, 37.730061677765306 ], [ -122.36159969448822, 37.730062855873037 ], [ -122.361570343233169, 37.730064693102427 ], [ -122.361539288834621, 37.730067587323632 ], [ -122.361508260224696, 37.730071511217581 ], [ -122.361487577348555, 37.730074241551335 ], [ -122.361465200270104, 37.730078372100991 ], [ -122.36144452599406, 37.730081445928768 ], [ -122.361422114524615, 37.730084203562313 ], [ -122.361399676911404, 37.730085931241504 ], [ -122.361377231405925, 37.730087316227653 ], [ -122.361354776950733, 37.730088357713434 ], [ -122.361334025287775, 37.730088341929708 ], [ -122.361311536447275, 37.730088010499266 ], [ -122.361266507191544, 37.730085288263524 ], [ -122.36124396677755, 37.73008289745821 ], [ -122.361223137761826, 37.730079792886535 ], [ -122.361200571564154, 37.73007637239192 ], [ -122.361179716772469, 37.730072238406137 ], [ -122.361157115844946, 37.730067444726025 ], [ -122.361136235265462, 37.730062280776941 ], [ -122.361115337498504, 37.730056430370134 ], [ -122.361094422544639, 37.73004989350558 ], [ -122.361073490411371, 37.73004267045787 ], [ -122.361054278613267, 37.730035076593815 ], [ -122.361035057871703, 37.730027139230472 ], [ -122.361015811356936, 37.73001817245752 ], [ -122.360991310330121, 37.730006541779254 ], [ -122.360878119757459, 37.729906007842899 ], [ -122.360753350678607, 37.729964633086148 ], [ -122.360767411397134, 37.729973682080846 ], [ -122.360779769645887, 37.729983787501872 ], [ -122.360792153340185, 37.729994922882732 ], [ -122.360802816699632, 37.730006428796685 ], [ -122.360811777948271, 37.730018991681831 ], [ -122.360819018860866, 37.730031925100903 ], [ -122.360824539436592, 37.730045229054205 ], [ -122.360830077893482, 37.730059219450361 ], [ -122.360833887418579, 37.730073237154031 ], [ -122.360834600711755, 37.730101724997503 ], [ -122.360833232727501, 37.73011616811506 ], [ -122.360830128237026, 37.730130294747774 ], [ -122.360825286222877, 37.73014410573559 ], [ -122.360820435267328, 37.730157573501607 ], [ -122.360812119233699, 37.73017075290813 ], [ -122.360803785650091, 37.730183245316248 ], [ -122.36079369735269, 37.730194735624472 ], [ -122.360781872558661, 37.730205909995462 ], [ -122.360768293049901, 37.730216082265592 ], [ -122.360754687743039, 37.730225224303872 ], [ -122.360741056659265, 37.73023333693407 ], [ -122.360665462649848, 37.730253072686551 ], [ -122.360627639840885, 37.730261910451617 ], [ -122.360550239838858, 37.730278584111481 ], [ -122.360510654054025, 37.730286076778114 ], [ -122.360471050717251, 37.730292882433631 ], [ -122.360433168073058, 37.730299317816012 ], [ -122.360393539299068, 37.730305094033461 ], [ -122.360353901588383, 37.730310527290548 ], [ -122.36031424736656, 37.730315273520141 ], [ -122.360274575618163, 37.730319333562264 ], [ -122.36023489527426, 37.730323050363999 ], [ -122.360195197398738, 37.730326080703698 ], [ -122.360155491620617, 37.730328767792003 ], [ -122.36011403972519, 37.730330795984656 ], [ -122.360074299227378, 37.730332109868229 ], [ -122.360034550144817, 37.730333080785911 ], [ -122.359994783535413, 37.730333365241471 ], [ -122.359955000437409, 37.730332963218565 ], [ -122.359915208404431, 37.73033221796058 ], [ -122.359854003265156, 37.730305028433676 ], [ -122.359236184689337, 37.730009873800213 ], [ -122.358789557472875, 37.729783434605018 ], [ -122.358957232902597, 37.729711773403928 ], [ -122.358843527027545, 37.729659659273459 ], [ -122.358967948048644, 37.72951794751873 ], [ -122.361421463309, 37.72895351973942 ], [ -122.361888691367042, 37.728828706580281 ], [ -122.361912779413899, 37.728823862451726 ], [ -122.361935121341887, 37.72881835863901 ], [ -122.361959166726493, 37.728811798085822 ], [ -122.361981474603837, 37.72880492162534 ], [ -122.362003764939914, 37.728797358986661 ], [ -122.3620260473499, 37.728789452556619 ], [ -122.362046575060617, 37.728780544041506 ], [ -122.36206882272441, 37.728771264975364 ], [ -122.362089324633246, 37.728761327046321 ], [ -122.362109817923212, 37.728751045337532 ], [ -122.362128556858551, 37.728739761540034 ], [ -122.362149024344589, 37.728728450417933 ], [ -122.362167737129766, 37.728716137213183 ], [ -122.362184713430636, 37.728703507540494 ], [ -122.36220340934922, 37.728690507870553 ], [ -122.362220359498949, 37.7286768487917 ], [ -122.362237301035364, 37.728662846208799 ], [ -122.362250811264033, 37.72864992822533 ], [ -122.362262661390673, 37.728639783385113 ], [ -122.36227275785032, 37.728628636175188 ], [ -122.362281099606278, 37.728616486612424 ], [ -122.362287695612011, 37.728603678193288 ], [ -122.362292545854572, 37.728590210368907 ], [ -122.362295667196847, 37.728576769873541 ], [ -122.36229531457775, 37.728562697566197 ], [ -122.362293242345899, 37.72854899552955 ], [ -122.362289449824587, 37.728535664323587 ], [ -122.362282165799911, 37.728521014856675 ], [ -122.36224367326102, 37.72850308198516 ], [ -122.36222272423764, 37.72849517213659 ], [ -122.362203512030703, 37.728487578468915 ], [ -122.362182580222708, 37.728480355341809 ], [ -122.362161665625351, 37.728473818939591 ], [ -122.36213904001275, 37.728467995754578 ], [ -122.362118159814372, 37.728462831978135 ], [ -122.362095568274697, 37.728458382247503 ], [ -122.36207471387344, 37.728454247869884 ], [ -122.362052148130076, 37.728450827537444 ], [ -122.362029590642308, 37.728447750433155 ], [ -122.362007059652058, 37.728445703269323 ], [ -122.361984536902597, 37.72844399878452 ], [ -122.361962039957774, 37.728443324251103 ], [ -122.361939551266488, 37.728442992945915 ], [ -122.361917071865491, 37.728443004852515 ], [ -122.361894617914601, 37.72844404644146 ], [ -122.361872181160052, 37.728445774480214 ], [ -122.361849752657179, 37.728447845747191 ], [ -122.361830790542825, 37.728450205592154 ], [ -122.36144874592047, 37.728523885066956 ], [ -122.359253585410741, 37.729046466872113 ], [ -122.358871094316868, 37.729171649615353 ], [ -122.35773138480485, 37.729443027877707 ], [ -122.357479163493281, 37.729245451178592 ], [ -122.357874687244575, 37.728949759623752 ], [ -122.360022133800982, 37.7284550828631 ], [ -122.360041044772572, 37.728450663666095 ], [ -122.360061675709247, 37.728445874222452 ], [ -122.360082280872575, 37.728440055093671 ], [ -122.360102877442358, 37.728433892734103 ], [ -122.360121736868166, 37.728427414435657 ], [ -122.360140578770867, 37.728420249959875 ], [ -122.360159404166396, 37.728412398466652 ], [ -122.36017822062847, 37.728404204023278 ], [ -122.360197019904888, 37.728395323122534 ], [ -122.360214082043697, 37.728386126559464 ], [ -122.360231126982725, 37.728376242990407 ], [ -122.360248163333068, 37.728366016466275 ], [ -122.36026519109457, 37.728355446987074 ], [ -122.360282201662045, 37.728344190776504 ], [ -122.36029747473269, 37.728332618361613 ], [ -122.360312739905595, 37.728320702981229 ], [ -122.36033977808566, 37.728295553906939 ], [ -122.360351645599536, 37.728286095712676 ], [ -122.360365302143265, 37.728279012806425 ], [ -122.360378915726486, 37.728270213762769 ], [ -122.360389029601677, 37.728259753167933 ], [ -122.360397388807456, 37.728248290192134 ], [ -122.360404002281641, 37.728236168057407 ], [ -122.360407132887943, 37.728223070833039 ], [ -122.360408534948149, 37.728210000904646 ], [ -122.360406479925388, 37.728196985842978 ], [ -122.360402696345233, 37.728183997528113 ], [ -122.360395481466924, 37.728172094035642 ], [ -122.360384800897904, 37.728159901357934 ], [ -122.360355252076161, 37.728153844345819 ], [ -122.360324001174106, 37.728148844017177 ], [ -122.360292766760338, 37.728144529870931 ], [ -122.360263287371851, 37.728141218642236 ], [ -122.360232104855839, 37.72813896383753 ], [ -122.360200939536938, 37.728137396028139 ], [ -122.360168062497735, 37.728136541413733 ], [ -122.360136940472302, 37.728136689443289 ], [ -122.360105834935908, 37.728137523929909 ], [ -122.360074755867601, 37.72813938835359 ], [ -122.3600437018695, 37.728142282186987 ], [ -122.360012665740157, 37.728145862455676 ], [ -122.359981646088997, 37.728150128906918 ], [ -122.359962709760239, 37.728153518132949 ], [ -122.357157402740128, 37.728825440588068 ], [ -122.357120443323197, 37.728661209162873 ], [ -122.356966039195882, 37.728710340572775 ], [ -122.357700794819991, 37.726282170189641 ], [ -122.358012892774155, 37.726039297958998 ], [ -122.361640904109578, 37.725218727031361 ], [ -122.361254856267323, 37.72416520811381 ], [ -122.357961297733482, 37.724943754212269 ], [ -122.357837451289754, 37.724623976380613 ], [ -122.361242175061918, 37.723839816434847 ], [ -122.361523474456462, 37.723775023602428 ], [ -122.362006156184762, 37.724061314272362 ], [ -122.362085553062059, 37.723986579862476 ], [ -122.364138473489092, 37.725245158496556 ], [ -122.364903800810126, 37.725700019832075 ], [ -122.364922994995325, 37.725706926339846 ], [ -122.364942154395848, 37.72571246021662 ], [ -122.364961297265722, 37.725717307625388 ], [ -122.364980405349158, 37.725720782403215 ], [ -122.364999487582764, 37.725723226947871 ], [ -122.365020272471824, 37.725724614719347 ], [ -122.365041031523262, 37.725724972806269 ], [ -122.365060035904975, 37.725724328578444 ], [ -122.365080734672432, 37.725722284344187 ], [ -122.365099679446047, 37.725719237235722 ], [ -122.365120326525016, 37.725715133358143 ], [ -122.365139219276756, 37.72571002716159 ], [ -122.365158077572545, 37.72570354805417 ], [ -122.365175190160244, 37.725696410130439 ], [ -122.365192276890355, 37.725688241974169 ], [ -122.365209337782844, 37.725679044409119 ], [ -122.365224644000321, 37.725668844532997 ], [ -122.365239933677543, 37.725657958189977 ], [ -122.365253477293393, 37.725646412763744 ], [ -122.365266995070428, 37.725633837929628 ], [ -122.365277047249194, 37.725620974052937 ], [ -122.365288802072243, 37.725607053401404 ], [ -122.365297091312215, 37.725592844257413 ], [ -122.365305371596236, 37.725578292165878 ], [ -122.365311906499173, 37.725563080433261 ], [ -122.365316704663556, 37.725547553385105 ], [ -122.365321493859298, 37.725531682840639 ], [ -122.365324157971415, 37.725500050955006 ], [ -122.365323753109038, 37.725483919287925 ], [ -122.365321628734094, 37.725468158485079 ], [ -122.365319495386515, 37.725452053911503 ], [ -122.365308348911952, 37.725421327973351 ], [ -122.36530105597663, 37.725406335184097 ], [ -122.365293771671986, 37.725391686170454 ], [ -122.365052724436055, 37.725226224132847 ], [ -122.362366609167395, 37.723678947002448 ], [ -122.362750319199407, 37.723258784478411 ], [ -122.359975808223695, 37.721629071078588 ], [ -122.360235314638061, 37.721358523571041 ], [ -122.362997490302945, 37.722979154853967 ], [ -122.363810654823226, 37.722102046578357 ], [ -122.359221672042082, 37.719406711581087 ], [ -122.359190415962686, 37.719401367722426 ], [ -122.359178102953109, 37.719392977976057 ], [ -122.359165764191417, 37.719383558545161 ], [ -122.359156864943031, 37.719373398101943 ], [ -122.359147948527337, 37.719362551202536 ], [ -122.359140734699196, 37.719350647341678 ], [ -122.359135249212571, 37.719338716202891 ], [ -122.359131474551347, 37.719326071336383 ], [ -122.359129420336572, 37.719313055953705 ], [ -122.359129102699868, 37.719300356526816 ], [ -122.359130504470841, 37.719287286600235 ], [ -122.359133643855102, 37.719274532613021 ], [ -122.359136791138639, 37.719262122138936 ], [ -122.359143412603785, 37.719250343285097 ], [ -122.359151771327333, 37.719238880100924 ], [ -122.359815079156419, 37.718522454511614 ], [ -122.359825208614936, 37.718512680409624 ], [ -122.359837083220526, 37.718503565479963 ], [ -122.359848984278528, 37.718495480221421 ], [ -122.359862639071579, 37.718488397362229 ], [ -122.359878056187881, 37.718482660129546 ], [ -122.359891771100081, 37.718477980135759 ], [ -122.359908985921422, 37.718474961146882 ], [ -122.359924497848894, 37.718472999407822 ], [ -122.359940043783581, 37.718472410583125 ], [ -122.359957353082052, 37.718473167366923 ], [ -122.359972959482164, 37.71847498112659 ], [ -122.359988608480634, 37.718478511028351 ], [ -122.360004292526796, 37.718483413828061 ], [ -122.360018273683508, 37.718489373879351 ], [ -122.360032280595263, 37.718496363062989 ], [ -122.360394084962891, 37.718708825628347 ], [ -122.36271365411622, 37.720070891670908 ], [ -122.36303235937622, 37.719710951141145 ], [ -122.363036490990609, 37.719706284726648 ], [ -122.363048348187263, 37.719696483020158 ], [ -122.363061977094034, 37.719688370383778 ], [ -122.363077377690658, 37.719681945993095 ], [ -122.363092812365167, 37.719676895064836 ], [ -122.363110026642786, 37.719673875619748 ], [ -122.363137662964078, 37.719672751789325 ], [ -122.363153270039291, 37.719674565121885 ], [ -122.363173373533897, 37.719648838527299 ], [ -122.363166176233463, 37.71963762109376 ], [ -122.363158953131787, 37.71962537425204 ], [ -122.363155178117267, 37.719612729509564 ], [ -122.363154851195048, 37.719599687141276 ], [ -122.363156260860393, 37.719586960120296 ], [ -122.363161127909819, 37.719574178689925 ], [ -122.363167748765107, 37.719562399610538 ], [ -122.363176106218731, 37.71955093642692 ], [ -122.363656438242259, 37.719054731797513 ], [ -122.362565556645677, 37.718438823432876 ], [ -122.362551540892355, 37.718431490773646 ], [ -122.362539227318422, 37.718423101382719 ], [ -122.362526897237885, 37.718414025524474 ], [ -122.362514558214372, 37.718404606442824 ], [ -122.36250392996385, 37.718394473583345 ], [ -122.36249501352286, 37.718383626930098 ], [ -122.362486088138667, 37.718372437054043 ], [ -122.362478882472217, 37.718360876623265 ], [ -122.362471659607849, 37.718348629736866 ], [ -122.362466165060482, 37.718336355523718 ], [ -122.362462381629214, 37.718323367528868 ], [ -122.362458606799294, 37.718310722761444 ], [ -122.362456543084349, 37.718297364212575 ], [ -122.362455889483016, 37.71827127891747 ], [ -122.362457290995351, 37.718258208943666 ], [ -122.362463550642957, 37.718232014343421 ], [ -122.362473301309748, 37.71820713800021 ], [ -122.362481650470514, 37.718195331904944 ], [ -122.362488271303789, 37.718183552586531 ], [ -122.362498365618194, 37.718172405349378 ], [ -122.362508477828271, 37.718161944830108 ], [ -122.358583730913253, 37.71588288357988 ], [ -122.358723442672868, 37.715731315969869 ], [ -122.362644996220368, 37.718021067053435 ], [ -122.362786346352422, 37.717866035066777 ], [ -122.363866062384275, 37.716726843144961 ], [ -122.359920053051226, 37.714425844522381 ], [ -122.3600361482696, 37.714297997140655 ], [ -122.36397478584415, 37.716580910244524 ], [ -122.364251293111423, 37.716300126312575 ], [ -122.364263175435909, 37.716291354435697 ], [ -122.364276820788504, 37.716283927560291 ], [ -122.364290517794743, 37.716278560323119 ], [ -122.364305977843998, 37.71627453863573 ], [ -122.364321497804667, 37.716272919544586 ], [ -122.364340525947497, 37.716273305108999 ], [ -122.364356149216732, 37.716275805018348 ], [ -122.364370087250265, 37.716280047868423 ], [ -122.364395976814166, 37.716278264915964 ], [ -122.365216452571488, 37.715351584174513 ], [ -122.365237670931208, 37.715301460414111 ], [ -122.365239473467412, 37.715235505999942 ], [ -122.365193066829221, 37.715177525619964 ], [ -122.364773705990487, 37.714932479640773 ], [ -122.364736623334764, 37.714970493365534 ], [ -122.364580089435904, 37.714864468359181 ], [ -122.364552651047106, 37.714804470653064 ], [ -122.364268407924328, 37.714638661242532 ], [ -122.364188831965635, 37.714636830395087 ], [ -122.364013771393857, 37.714550326239625 ], [ -122.364049082949748, 37.714510623951149 ], [ -122.363306902062419, 37.714077710648965 ], [ -122.363268090521188, 37.714115751260778 ], [ -122.363113289075798, 37.714009696947421 ], [ -122.363085852186202, 37.713949698891518 ], [ -122.362801615602848, 37.713783885919405 ], [ -122.362722040595187, 37.71378205408088 ], [ -122.362546983742845, 37.713695547734027 ], [ -122.362582295682941, 37.71365584615441 ], [ -122.361848935833351, 37.713229308027309 ], [ -122.361811844287786, 37.713266977882924 ], [ -122.361655318485532, 37.713160948681605 ], [ -122.361629610933349, 37.71310092296946 ], [ -122.361345380842891, 37.712935106461451 ], [ -122.361265806779613, 37.712933273639017 ], [ -122.361094407643563, 37.712854605021889 ], [ -122.361124337741387, 37.712807091000208 ], [ -122.361139435636801, 37.712788654437141 ], [ -122.361171360606775, 37.712751753157583 ], [ -122.36134313774096, 37.71284552396822 ], [ -122.361365062017143, 37.71289256197857 ], [ -122.361673856292811, 37.713072754562113 ], [ -122.361737876782101, 37.71307483295093 ], [ -122.361918064233436, 37.713159199186485 ], [ -122.361884368625439, 37.713194411838948 ], [ -122.362612508613324, 37.713619658283974 ], [ -122.362644433215863, 37.713582756884641 ], [ -122.362801089987357, 37.713693933186988 ], [ -122.362823024023626, 37.713741313598298 ], [ -122.363131825365173, 37.713921502610397 ], [ -122.363194118414285, 37.713923607543634 ], [ -122.3633743099209, 37.714007971534919 ], [ -122.36334061461109, 37.714043184324609 ], [ -122.364079295520412, 37.714474435984016 ], [ -122.364111219761938, 37.714437534192207 ], [ -122.364267880521169, 37.714548708254327 ], [ -122.36428981575132, 37.714596088660656 ], [ -122.364598624198337, 37.714776273803345 ], [ -122.3646609180052, 37.714778377960677 ], [ -122.364841113248019, 37.714862739696905 ], [ -122.364807418245547, 37.714897952901332 ], [ -122.365388188712686, 37.715236584611482 ], [ -122.364417662979704, 37.716315691686994 ], [ -122.364424868749381, 37.716327252003005 ], [ -122.364428635197243, 37.716339553209288 ], [ -122.36443069025762, 37.716352568505734 ], [ -122.364429280864911, 37.716365295273981 ], [ -122.364446761552514, 37.716372915954452 ], [ -122.364465978782491, 37.716380852784248 ], [ -122.364483468425433, 37.716388816406734 ], [ -122.364500965996967, 37.716397123539672 ], [ -122.364516744604018, 37.716405801242992 ], [ -122.364534251138338, 37.716414451592989 ], [ -122.364551766293047, 37.716423445442487 ], [ -122.364583357274199, 37.716442173479727 ], [ -122.364621964676815, 37.71646491108153 ], [ -122.364637708534104, 37.71647221613857 ], [ -122.364653409330941, 37.716477804506788 ], [ -122.364670803974548, 37.716481993153423 ], [ -122.36468815555574, 37.716484465110796 ], [ -122.364705455483815, 37.716484877975191 ], [ -122.364722720971017, 37.716483917927022 ], [ -122.364739943405979, 37.716481241738855 ], [ -122.364757122787552, 37.716476849410668 ], [ -122.364774250504041, 37.716470397714986 ], [ -122.364791343775195, 37.716462573106803 ], [ -122.364806691205743, 37.716454089407321 ], [ -122.364822022102643, 37.716444919239876 ], [ -122.364837335428504, 37.716435062620917 ], [ -122.364850911876999, 37.716424890408376 ], [ -122.364864471086165, 37.716414031190091 ], [ -122.364878013083185, 37.716402486064425 ], [ -122.364901605717435, 37.716378076804247 ], [ -122.364911648449322, 37.716364869981213 ], [ -122.364916549084953, 37.716353461387165 ], [ -122.364917950128515, 37.716340391380108 ], [ -122.364921087704161, 37.716327637243623 ], [ -122.364924234581224, 37.716315226323587 ], [ -122.364933983827555, 37.716290349774575 ], [ -122.36494722438934, 37.71626679140374 ], [ -122.364953853285272, 37.716255355719817 ], [ -122.364962219394371, 37.716244235619989 ], [ -122.364972322024684, 37.716233431114844 ], [ -122.364982433270342, 37.716222970110884 ], [ -122.364992553124679, 37.716212852333562 ], [ -122.365002690199319, 37.716203421010327 ], [ -122.365014563801225, 37.716194305555454 ], [ -122.365026455321683, 37.716185876818017 ], [ -122.36504008335524, 37.716177763399081 ], [ -122.365052000352904, 37.716170364072397 ], [ -122.365065654230065, 37.716163280882121 ], [ -122.365094741897337, 37.716151145947677 ], [ -122.365110106446139, 37.716143348388663 ], [ -122.365113201618499, 37.716128878372835 ], [ -122.365116304696627, 37.716114751046177 ], [ -122.365122873261583, 37.716100912485444 ], [ -122.365129459055197, 37.716087760653849 ], [ -122.365139510312659, 37.716074896763658 ], [ -122.365149578106625, 37.716062719613106 ], [ -122.365161392080509, 37.716051201814444 ], [ -122.365176644641494, 37.716038942289195 ], [ -122.365188518887109, 37.71602982680561 ], [ -122.365202138268813, 37.716021370414808 ], [ -122.365217494173905, 37.716013229888688 ], [ -122.365231148006444, 37.716006146679064 ], [ -122.365246539040172, 37.715999378773581 ], [ -122.365263666604179, 37.715992927006241 ], [ -122.365279091398932, 37.715987532291955 ], [ -122.365294534108472, 37.71598282401969 ], [ -122.365311721955024, 37.715978774837772 ], [ -122.365328927025729, 37.715975412108293 ], [ -122.365346149321098, 37.715972735831272 ], [ -122.365363388841544, 37.715970746006697 ], [ -122.365380645587578, 37.715969442634552 ], [ -122.365410025637061, 37.715968977361726 ], [ -122.365427334408309, 37.715969733342163 ], [ -122.365444651102152, 37.715970832558476 ], [ -122.365461994328726, 37.715972961443697 ], [ -122.365479354092372, 37.715975776792263 ], [ -122.365495012131262, 37.715979649180539 ], [ -122.365512406698826, 37.715983837428631 ], [ -122.365528089891654, 37.715988739505875 ], [ -122.365543791005862, 37.715994328024976 ], [ -122.36555950900491, 37.716000603002399 ], [ -122.36557523562081, 37.716007221205196 ], [ -122.365589259822642, 37.716014896460429 ], [ -122.365603292648544, 37.71602291521603 ], [ -122.365617342692417, 37.7160316198757 ], [ -122.365631409975279, 37.716041011263187 ], [ -122.365643757615857, 37.716050773249407 ], [ -122.365654385267973, 37.716060905840358 ], [ -122.365666759104258, 37.716071697501043 ], [ -122.365675684345334, 37.716082887145667 ], [ -122.365686355771075, 37.716094735860018 ], [ -122.36572383810848, 37.716141526396989 ], [ -122.365761311532381, 37.716187973699725 ], [ -122.365800496728525, 37.716233707149122 ], [ -122.365839664050739, 37.716278754141264 ], [ -122.365880551762743, 37.716323430505255 ], [ -122.365923158830057, 37.716367736255741 ], [ -122.365965740100123, 37.716411012308278 ], [ -122.366010040727502, 37.716453917744857 ], [ -122.366059638577141, 37.716501202978222 ], [ -122.366081205013529, 37.716533824258086 ], [ -122.366090251696093, 37.716549819043124 ], [ -122.366102754235541, 37.716565759079053 ], [ -122.366113529199154, 37.716581726482502 ], [ -122.366126023477833, 37.716597323283004 ], [ -122.366136789488536, 37.716612947462366 ], [ -122.366161760837542, 37.716643454602135 ], [ -122.366175966176996, 37.71665833756186 ], [ -122.366188442901887, 37.716673247906257 ], [ -122.366216836381071, 37.716702327637208 ], [ -122.36623102450136, 37.716716523860804 ], [ -122.366245204016678, 37.716730377129863 ], [ -122.366261112159151, 37.716744203009718 ], [ -122.366275291685326, 37.716758056275097 ], [ -122.366322963076229, 37.716797474553488 ], [ -122.366340573678841, 37.716810243632011 ], [ -122.36635644703216, 37.716822696320264 ], [ -122.366374040064969, 37.716834778944495 ], [ -122.366389904811129, 37.716846888400809 ], [ -122.366425073654625, 37.716870366632683 ], [ -122.366444377745808, 37.716881735132603 ], [ -122.36646194494493, 37.716892787786946 ], [ -122.366493510758119, 37.716910485903114 ], [ -122.366623549631328, 37.71699392291945 ], [ -122.366755273981596, 37.717075616265298 ], [ -122.367009737276547, 37.717225410385531 ], [ -122.367367636576219, 37.717431936135505 ], [ -122.367722202011066, 37.717643320779338 ], [ -122.367734498100774, 37.717651023186086 ], [ -122.367746786266892, 37.717658382627967 ], [ -122.36776079374863, 37.717665370893641 ], [ -122.367773072942654, 37.717672386836448 ], [ -122.367787080436401, 37.717679375373592 ], [ -122.367799351010589, 37.717686048086428 ], [ -122.367813349884699, 37.717692693393225 ], [ -122.367827331518725, 37.717698652518493 ], [ -122.367841321766008, 37.717704954320148 ], [ -122.367855303397675, 37.717710913167537 ], [ -122.367883249424608, 37.717722144677452 ], [ -122.367898942111211, 37.717727389659409 ], [ -122.367916388621566, 37.717733636645491 ], [ -122.367933775456365, 37.71773748130223 ], [ -122.367951144357875, 37.717740639787564 ], [ -122.367968522563814, 37.717744140937377 ], [ -122.368003243800771, 37.717749770880694 ], [ -122.368020595449934, 37.717752242626815 ], [ -122.368037939165831, 37.717754371132209 ], [ -122.368062204013668, 37.717756733239703 ], [ -122.368254623550371, 37.717776687237738 ], [ -122.368448797013713, 37.717797642645102 ], [ -122.368467860079036, 37.717799400451433 ], [ -122.368488660073098, 37.717801474067137 ], [ -122.368509442812467, 37.717802861224882 ], [ -122.368528488624563, 37.717803932567065 ], [ -122.368549262744196, 37.717804976765201 ], [ -122.368570028222393, 37.717805677183392 ], [ -122.368590785079604, 37.717806034645328 ], [ -122.368609804662938, 37.717806076298423 ], [ -122.368630552892, 37.717806090526203 ], [ -122.368672014835468, 37.717804746062299 ], [ -122.368691009223568, 37.717803758009893 ], [ -122.36871172294353, 37.717802399589416 ], [ -122.368753133102373, 37.717798995459539 ], [ -122.368773820932461, 37.717796607346749 ], [ -122.368818653167253, 37.717791775447523 ], [ -122.368861774362671, 37.71778765768024 ], [ -122.368906640766554, 37.717784198936094 ], [ -122.368949796818114, 37.717781454039603 ], [ -122.368994689457168, 37.717779025212373 ], [ -122.369037870695294, 37.717777309701347 ], [ -122.369082798189922, 37.717776253468948 ], [ -122.369126014299994, 37.717775911103146 ], [ -122.369170967339741, 37.717775884523917 ], [ -122.369202706794994, 37.71780044645373 ], [ -122.369235000726789, 37.717778302338516 ], [ -122.369269687549945, 37.717782559000163 ], [ -122.36928530265682, 37.717784714478952 ], [ -122.369302663340889, 37.717787529532423 ], [ -122.369353034337394, 37.717796687460655 ], [ -122.369368683984078, 37.717800216111328 ], [ -122.369384341918476, 37.717804087992491 ], [ -122.369401728852594, 37.717807932707132 ], [ -122.369417395761204, 37.717812147530914 ], [ -122.36943307096503, 37.717816705859768 ], [ -122.369450475169117, 37.717821237021361 ], [ -122.36948184319013, 37.717831039842252 ], [ -122.369497544990651, 37.717836627832767 ], [ -122.369513237815312, 37.717841872599593 ], [ -122.369527219606752, 37.717847831248413 ], [ -122.36954292970124, 37.717853762465438 ], [ -122.369558648085317, 37.71786003691291 ], [ -122.36957263852355, 37.71786633905797 ], [ -122.369588366230118, 37.717872956442982 ], [ -122.369602365299343, 37.717879601536971 ], [ -122.369618101305662, 37.71788656242515 ], [ -122.369646133989733, 37.717901225512634 ], [ -122.369674183958367, 37.717916575322121 ], [ -122.369702251198532, 37.717932611304448 ], [ -122.369714565153885, 37.717940999952816 ], [ -122.369728616041627, 37.717949704119498 ], [ -122.369740938290732, 37.717958435997602 ], [ -122.369754989198668, 37.717967140710293 ], [ -122.369767320771899, 37.717976215527116 ], [ -122.369804340049498, 37.718004470496631 ], [ -122.369814960605339, 37.718014259471069 ], [ -122.369827317757029, 37.718024364242766 ], [ -122.369837946607149, 37.718034496447622 ], [ -122.369850303765318, 37.718044601216874 ], [ -122.369882215899651, 37.718076027508822 ], [ -122.369892862378947, 37.71808684615722 ], [ -122.36990178884372, 37.718098035472593 ], [ -122.369912443617807, 37.718109197351708 ], [ -122.369930296561293, 37.718131575978724 ], [ -122.36994816678471, 37.718154641056984 ], [ -122.369957110535211, 37.718166516822102 ], [ -122.369967859963296, 37.718181454198835 ], [ -122.36997176593016, 37.718199247125732 ], [ -122.369979594447685, 37.718235519443965 ], [ -122.370002130211063, 37.718306581422858 ], [ -122.370009483835318, 37.718323976252783 ], [ -122.370015117785968, 37.718341741746322 ], [ -122.370022471423681, 37.718359136849926 ], [ -122.370031544728775, 37.71837616073956 ], [ -122.370038898366815, 37.718393555567452 ], [ -122.370047971693708, 37.718410580004878 ], [ -122.370057036030119, 37.718427260670879 ], [ -122.370066109704041, 37.718444284826738 ], [ -122.370075174401222, 37.718460965760372 ], [ -122.370085967071944, 37.718477619260632 ], [ -122.370107466765518, 37.718507493977114 ], [ -122.370126944899795, 37.718525726405055 ], [ -122.370169322597192, 37.718560763475431 ], [ -122.370190485553579, 37.718577252323918 ], [ -122.370213359219747, 37.718593027280086 ], [ -122.370236224957864, 37.718608459268403 ], [ -122.370260801392277, 37.718623176813935 ], [ -122.370285360570904, 37.718637208174954 ], [ -122.370309902493091, 37.718650553351452 ], [ -122.370336155456755, 37.71866318407794 ], [ -122.370362391163113, 37.718675128619182 ], [ -122.370390329287673, 37.718686016031121 ], [ -122.370416530117836, 37.718696587657909 ], [ -122.370444433710631, 37.71870610214912 ], [ -122.370472320036399, 37.718714930179793 ], [ -122.370501917760691, 37.718723044300269 ], [ -122.370529760919823, 37.718730156457141 ], [ -122.370559323753966, 37.718736897386265 ], [ -122.370588852049892, 37.718742265674756 ], [ -122.370618371366675, 37.718747290734377 ], [ -122.370647865465088, 37.718751286094815 ], [ -122.370679070273212, 37.718754567827233 ], [ -122.370708520488662, 37.718756846774177 ], [ -122.370739682448956, 37.718758412075765 ], [ -122.37076908982813, 37.718758975142002 ], [ -122.370800208258856, 37.718758824572994 ], [ -122.370829572444975, 37.718757671489442 ], [ -122.370860647321152, 37.718755804226205 ], [ -122.370891705615989, 37.718753250764479 ], [ -122.37090882433975, 37.718746454957831 ], [ -122.370925978308406, 37.718741032045394 ], [ -122.370944886167507, 37.718736611366033 ], [ -122.370963836875418, 37.718733906823715 ], [ -122.370982814191592, 37.718732231948131 ], [ -122.371005290654622, 37.718732218311914 ], [ -122.371024337093374, 37.718733289519548 ], [ -122.37104342637177, 37.71873607631499 ], [ -122.371062541577928, 37.718739893062697 ], [ -122.371079963024641, 37.718745110167617 ], [ -122.371097419033674, 37.718751700177599 ], [ -122.371113164004626, 37.718759004092 ], [ -122.371128943539134, 37.718767680911924 ], [ -122.371144757299319, 37.718777730917395 ], [ -122.371169489840725, 37.718798626351749 ], [ -122.371180101358092, 37.718808071985954 ], [ -122.371190696288693, 37.71881683115442 ], [ -122.371201281889995, 37.71882524710599 ], [ -122.371213579227003, 37.718832949137195 ], [ -122.37122759590342, 37.718840280490852 ], [ -122.371239875618699, 37.718847296070983 ], [ -122.371253857737614, 37.718853254513917 ], [ -122.371267831218006, 37.718858869728294 ], [ -122.371281796059677, 37.718864141714128 ], [ -122.371297471952232, 37.718868700063226 ], [ -122.37131140222705, 37.718872598863427 ], [ -122.371327043206463, 37.718875784031958 ], [ -122.371342667596267, 37.718878282733641 ], [ -122.371358283000305, 37.718880438211883 ], [ -122.371373872488391, 37.718881564281979 ], [ -122.371383664521929, 37.718882055893282 ], [ -122.371389452976118, 37.718882346579448 ], [ -122.371405016879592, 37.71888244268473 ], [ -122.371420554513023, 37.718881509112791 ], [ -122.371437794199721, 37.718879518405728 ], [ -122.371451465242302, 37.718873120657591 ], [ -122.371465170849277, 37.718868095815367 ], [ -122.371480639690603, 37.718864416415016 ], [ -122.371497879724302, 37.718862425968247 ], [ -122.371520347584678, 37.71886206900686 ], [ -122.371535954687204, 37.718863880954615 ], [ -122.371551596026961, 37.718867066362435 ], [ -122.371567280564975, 37.718871967353337 ], [ -122.371581271363922, 37.718878269258852 ], [ -122.371591935137346, 37.718889773936951 ], [ -122.371604326899728, 37.718901251433785 ], [ -122.371614991032587, 37.718912756378863 ], [ -122.371627374512514, 37.718923890915455 ], [ -122.37163802965712, 37.718935052362468 ], [ -122.371650413137317, 37.718946186622013 ], [ -122.371662779335963, 37.718956634426526 ], [ -122.371676882506705, 37.718967397995137 ], [ -122.371689248373897, 37.718977846076911 ], [ -122.371706869050627, 37.71899095730106 ], [ -122.371720799369825, 37.718994856052753 ], [ -122.371736440738147, 37.718998041161377 ], [ -122.371767706192628, 37.7190037249187 ], [ -122.371798919792468, 37.719007349306651 ], [ -122.371814508961251, 37.719008475049307 ], [ -122.371830090178449, 37.719009257552102 ], [ -122.371845662406855, 37.719009696831492 ], [ -122.371878500616674, 37.719009175012339 ], [ -122.371894038270653, 37.719008241377971 ], [ -122.371925078656488, 37.719005001201246 ], [ -122.371940582079091, 37.719002694647912 ], [ -122.37195607651114, 37.71900004487118 ], [ -122.371971553653992, 37.71899670863877 ], [ -122.371985302469042, 37.7189933998703 ], [ -122.372011244653535, 37.718993674331507 ], [ -122.372032105590733, 37.718998149908998 ], [ -122.372051212270634, 37.719001623269286 ], [ -122.372072029989994, 37.71900438270557 ], [ -122.372092830421707, 37.719006455684564 ], [ -122.372113604920486, 37.719007498979387 ], [ -122.372134362130282, 37.719007855816933 ], [ -122.372155093405652, 37.71900718297038 ], [ -122.372175798752636, 37.719005480714287 ], [ -122.372196486794678, 37.719003091451768 ], [ -122.372215428886747, 37.719000043756004 ], [ -122.372242952424102, 37.718994455566381 ], [ -122.372228495782323, 37.719038292867332 ], [ -122.372270562418365, 37.718992299913033 ], [ -122.372296686505393, 37.718999782068892 ], [ -122.372315810496232, 37.719003942114455 ], [ -122.372334917183963, 37.719007415154145 ], [ -122.372354014888927, 37.719010545244004 ], [ -122.372373104647863, 37.719013332367552 ], [ -122.372411231581538, 37.719016846431828 ], [ -122.372432006094613, 37.719017889945107 ], [ -122.372451034636384, 37.719018274204856 ], [ -122.372470046576993, 37.719017971996969 ], [ -122.372489049518421, 37.7190173262901 ], [ -122.372508043819963, 37.719016337627984 ], [ -122.372528749154483, 37.719014635035279 ], [ -122.372547708522333, 37.719012273465104 ], [ -122.372566659933526, 37.719009568654101 ], [ -122.372585593703946, 37.719006177391961 ], [ -122.372604518825696, 37.719002442899999 ], [ -122.372623426305779, 37.718998021956914 ], [ -122.372640597508592, 37.718993285523204 ], [ -122.372659479381312, 37.718987834613905 ], [ -122.372676624285006, 37.718982068225515 ], [ -122.372693803775505, 37.718977674741716 ], [ -122.372709280880628, 37.718974338412373 ], [ -122.372726511906819, 37.718972004289988 ], [ -122.372754147821666, 37.718970878203621 ], [ -122.372769737688571, 37.718972003808915 ], [ -122.372787072838463, 37.718973788668045 ], [ -122.372804451214719, 37.718977289109326 ], [ -122.372823557579665, 37.718980762349858 ], [ -122.37284089307164, 37.718982546920991 ], [ -122.372859921952113, 37.718982931109217 ], [ -122.372877179265899, 37.718981626639597 ], [ -122.372896130311645, 37.71897892178108 ], [ -122.372913318098071, 37.718974871772126 ], [ -122.372930471966299, 37.718969448293443 ], [ -122.372945853925259, 37.718962336438636 ], [ -122.372961200941234, 37.718953851680254 ], [ -122.37297652269902, 37.718944337228557 ], [ -122.372988361166023, 37.718933848067003 ], [ -122.373153843085163, 37.718881530021171 ], [ -122.373238802575472, 37.718854668953604 ], [ -122.373255964357725, 37.718849588939769 ], [ -122.37327313547901, 37.718844852139163 ], [ -122.373307494324067, 37.718836064994925 ], [ -122.373341870461658, 37.718827964294142 ], [ -122.373376281193742, 37.718821236490271 ], [ -122.37339522352984, 37.718818188324654 ], [ -122.373412437542669, 37.718815167642909 ], [ -122.37344690016738, 37.718810499178815 ], [ -122.37346585979968, 37.718808137455291 ], [ -122.373483108072492, 37.718806489950246 ], [ -122.373502085343517, 37.718804814394282 ], [ -122.373536599865218, 37.718802205264303 ], [ -122.373555594097851, 37.718801216433278 ], [ -122.373572868314369, 37.718800598320655 ], [ -122.373591880194738, 37.718800295931722 ], [ -122.373626463924381, 37.718800432589219 ], [ -122.373645492769242, 37.718800816925153 ], [ -122.373662792940365, 37.718801228479528 ], [ -122.373681839421252, 37.718802298708354 ], [ -122.373699157242569, 37.718803396705297 ], [ -122.373716483716436, 37.718804837926434 ], [ -122.373735538512435, 37.718806251653383 ], [ -122.373752881946515, 37.718808379328088 ], [ -122.373777165315929, 37.718811426700512 ], [ -122.373794552014559, 37.718815270502617 ], [ -122.373811948058801, 37.718819457517874 ], [ -122.373829360718858, 37.718824330994956 ], [ -122.373845054403262, 37.718829575178432 ], [ -122.373862484719027, 37.718835135098523 ], [ -122.373878195029278, 37.718841066016566 ], [ -122.373893923325326, 37.718847682825754 ], [ -122.373909659945298, 37.71885464341419 ], [ -122.373925413867383, 37.718862290179331 ], [ -122.373939439462958, 37.718869964162415 ], [ -122.373953482381623, 37.71887832514637 ], [ -122.373967533942846, 37.718887028806179 ], [ -122.373981594167574, 37.718896075965546 ], [ -122.373995663049072, 37.718905466349945 ], [ -122.374008012263729, 37.718915227454971 ], [ -122.374020370135099, 37.718925331785385 ], [ -122.374032736317702, 37.718935779346666 ], [ -122.374045111848744, 37.718946570122313 ], [ -122.374055767366514, 37.718957731625189 ], [ -122.374066431541209, 37.71896923635375 ], [ -122.374075367055113, 37.718980768858067 ], [ -122.374086048882475, 37.71899295975809 ], [ -122.374103954872169, 37.719017397114996 ], [ -122.374125681340118, 37.719056194989058 ], [ -122.374131204173437, 37.719069498331429 ], [ -122.374142266462783, 37.719096791479657 ], [ -122.374149872102961, 37.719124139622245 ], [ -122.374153683579266, 37.719138156919946 ], [ -122.3741578498839, 37.719166246785271 ], [ -122.374159941681143, 37.71918063453262 ], [ -122.374161014797295, 37.71922319463841 ], [ -122.374159641286965, 37.719237294429277 ], [ -122.374154923616729, 37.719255911162307 ], [ -122.374151882005847, 37.719272441042889 ], [ -122.374149256482738, 37.719305445791825 ], [ -122.374150087278892, 37.719338395550594 ], [ -122.374152239665406, 37.719355186158822 ], [ -122.374156103078988, 37.719371262815855 ], [ -122.374159975148416, 37.71938768269937 ], [ -122.374165558246304, 37.71940338863147 ], [ -122.374172878343202, 37.719419410566459 ], [ -122.374175234931528, 37.719424358448258 ], [ -122.374180181120835, 37.719434745498482 ], [ -122.374187466599793, 37.719449394251313 ], [ -122.374214300358844, 37.719485020571611 ], [ -122.374235611602799, 37.719507343543832 ], [ -122.374246258574956, 37.719518161801837 ], [ -122.374256896895602, 37.719528636832223 ], [ -122.374269254564041, 37.719538741415626 ], [ -122.374281604258542, 37.719548502210912 ], [ -122.374293944962744, 37.719557920058328 ], [ -122.374308005354067, 37.719566967177798 ], [ -122.374322057100812, 37.719575671343499 ], [ -122.374337854486313, 37.719585033911152 ], [ -122.3744195305989, 37.719669918743051 ], [ -122.374421587846186, 37.719682933852702 ], [ -122.374425381745823, 37.719696264692658 ], [ -122.374436392649173, 37.719721498445345 ], [ -122.374441889282195, 37.71973377237201 ], [ -122.374450833933636, 37.719745647518387 ], [ -122.374459769939222, 37.719757179712012 ], [ -122.374468688290634, 37.719768025457228 ], [ -122.37447931836833, 37.719778157235005 ], [ -122.374491667798353, 37.71978791856256 ], [ -122.374503990904699, 37.719796649665334 ], [ -122.374518034054987, 37.71980501030616 ], [ -122.374532059896538, 37.719812684492133 ], [ -122.374546059779846, 37.719819329271196 ], [ -122.374561771037051, 37.719825259811579 ], [ -122.374577455975697, 37.719830160400981 ], [ -122.374594868929591, 37.719835034038724 ], [ -122.374610562881386, 37.719840278119385 ], [ -122.374626299764742, 37.719847238061817 ], [ -122.374642062627359, 37.719855227956486 ], [ -122.37465612311729, 37.71986427503397 ], [ -122.374668489891121, 37.719874722521432 ], [ -122.374679145289875, 37.719885883971763 ], [ -122.374688099006775, 37.719898102595501 ], [ -122.374697069701313, 37.719911007951758 ], [ -122.374702592354737, 37.719924311271022 ], [ -122.374739822583123, 37.719960801838624 ], [ -122.37475222401271, 37.719972622223445 ], [ -122.374766345137616, 37.719984071873611 ], [ -122.374778737572512, 37.719995549034522 ], [ -122.374806962529064, 37.720017761873571 ], [ -122.374835170187708, 37.720039288252636 ], [ -122.374849265365711, 37.720049708213061 ], [ -122.374865089243499, 37.72006010065806 ], [ -122.37487917577208, 37.720070177388315 ], [ -122.374910788226885, 37.720089589372847 ], [ -122.374942383382447, 37.720108314895747 ], [ -122.374958163650305, 37.720116991200911 ], [ -122.37497395257985, 37.720126010730475 ], [ -122.374991452548869, 37.720134316294761 ], [ -122.375007224169792, 37.720142649366764 ], [ -122.375024715142516, 37.720150611705058 ], [ -122.375040478457933, 37.72015860154054 ], [ -122.375057961125222, 37.720166220641822 ], [ -122.375092909153366, 37.7201807723835 ], [ -122.375127822560231, 37.72019395120865 ], [ -122.375147007628541, 37.720200513379581 ], [ -122.375173261961393, 37.720213143025013 ], [ -122.375207993556202, 37.720219114069216 ], [ -122.375227160967086, 37.720224989504935 ], [ -122.375248074399238, 37.720231523871263 ], [ -122.375269005153854, 37.720238744686874 ], [ -122.375280076764881, 37.720243315652858 ], [ -122.375288225222903, 37.720246679460772 ], [ -122.375307453609949, 37.720254957463524 ], [ -122.375326699320624, 37.720263921916157 ], [ -122.375345953350021, 37.720273229597673 ], [ -122.375365216735446, 37.720282880491496 ], [ -122.3753827687447, 37.72029324535653 ], [ -122.37540033807889, 37.720304296671941 ], [ -122.375416187376842, 37.720315718733033 ], [ -122.375433774387304, 37.720327456490914 ], [ -122.375449641361485, 37.720339564994973 ], [ -122.375463797304775, 37.720352387466882 ], [ -122.375479689931566, 37.720365525926404 ], [ -122.375493863198955, 37.720379034573064 ], [ -122.375506317126977, 37.720392914231198 ], [ -122.375520507732517, 37.720407109602149 ], [ -122.375532978645822, 37.720421675715869 ], [ -122.375543729520388, 37.720436612578425 ], [ -122.375556287403313, 37.720454611223573 ], [ -122.375591629223138, 37.720553280549268 ], [ -122.375625259756632, 37.720652664115185 ], [ -122.375655442655059, 37.720752445930557 ], [ -122.375683906273295, 37.720852598477748 ], [ -122.375710658575045, 37.720953464995517 ], [ -122.375751172610691, 37.721120038334149 ], [ -122.375761845674063, 37.721131886137194 ], [ -122.375772510777281, 37.721143390976373 ], [ -122.375784886582679, 37.721154181570967 ], [ -122.375797236053231, 37.721163942215831 ], [ -122.375811288276211, 37.721172646201708 ], [ -122.375827043223865, 37.721180292429615 ], [ -122.375842875795513, 37.721191027973333 ], [ -122.375853514234834, 37.721201502862243 ], [ -122.37586245097873, 37.721213034941265 ], [ -122.375869667665128, 37.721224937774515 ], [ -122.375880696264161, 37.72125085784436 ], [ -122.375882762127716, 37.72126421615711 ], [ -122.375882828626871, 37.721266851037683 ], [ -122.375883125946686, 37.721278631666706 ], [ -122.37587827898912, 37.721292100060857 ], [ -122.375871711967719, 37.721305939209678 ], [ -122.375866881992167, 37.721320094336214 ], [ -122.37586031495924, 37.721333933209785 ], [ -122.375855484972746, 37.721348088061191 ], [ -122.375852374709183, 37.721361872437875 ], [ -122.375847544719377, 37.721376027288905 ], [ -122.375842723382974, 37.721390525091536 ], [ -122.375836520156881, 37.721418779747594 ], [ -122.375830334257259, 37.721447721130588 ], [ -122.375828969677642, 37.721462163887708 ], [ -122.375825876376013, 37.721476634447164 ], [ -122.375821782997832, 37.721519963536267 ], [ -122.375822146806243, 37.721534379045465 ], [ -122.375820790553732, 37.721549165583347 ], [ -122.375822254450057, 37.721607170846063 ], [ -122.375824355645946, 37.721621901779116 ], [ -122.375824719455352, 37.721636317288059 ], [ -122.375830995701023, 37.721679481253183 ], [ -122.375834816633215, 37.721693841711655 ], [ -122.375836908840029, 37.721708229972535 ], [ -122.375840729422237, 37.721722590161676 ], [ -122.375846503274232, 37.721745846994416 ], [ -122.375861785654777, 37.721803288846772 ], [ -122.375867698808605, 37.72183203728941 ], [ -122.375873620283713, 37.721861128963518 ], [ -122.375886199210129, 37.721948486558446 ], [ -122.375891128963588, 37.722006779991005 ], [ -122.37589187393715, 37.722036297459432 ], [ -122.375894433932729, 37.722069219668136 ], [ -122.375899939635701, 37.722081836473912 ], [ -122.375903725267278, 37.722094824309316 ], [ -122.37590923997503, 37.722107784060896 ], [ -122.375913025948279, 37.722120771615856 ], [ -122.375915092187512, 37.722134129920661 ], [ -122.375918886480093, 37.722147460707269 ], [ -122.375920953066782, 37.722160819006419 ], [ -122.375921290909631, 37.722174204834722 ], [ -122.375923357151819, 37.722187563139258 ], [ -122.375923694995222, 37.722200948967497 ], [ -122.375922304438902, 37.722214362319441 ], [ -122.375922642282234, 37.722227748147617 ], [ -122.375921251379538, 37.722241161504989 ], [ -122.375918210730603, 37.722257691412231 ], [ -122.375915160726379, 37.722273878103998 ], [ -122.375910383010535, 37.722290092308178 ], [ -122.375909052749606, 37.722305908524369 ], [ -122.3759060120953, 37.722322438431114 ], [ -122.375902962078825, 37.722338624847808 ], [ -122.375900319899742, 37.722370943166766 ], [ -122.375899007299083, 37.722387445555256 ], [ -122.375899414439516, 37.72240357719398 ], [ -122.375898101492368, 37.722420079587863 ], [ -122.375899331576733, 37.722468817730004 ], [ -122.3759014761321, 37.722485265065941 ], [ -122.375901883280534, 37.722501396978991 ], [ -122.375904027491728, 37.722517844320301 ], [ -122.375908298246003, 37.722550052555519 ], [ -122.375912171213727, 37.722566472367539 ], [ -122.375914306759483, 37.722582576207579 ], [ -122.375918170721874, 37.722598652798467 ], [ -122.375922026023247, 37.722614386162874 ], [ -122.375925889988949, 37.722630462753436 ], [ -122.375931482020547, 37.722646511825495 ], [ -122.3759353376729, 37.72266224518382 ], [ -122.375946504767398, 37.722693656868394 ], [ -122.37595381690933, 37.722709335457893 ], [ -122.375959392311572, 37.72272469779017 ], [ -122.375988606240981, 37.722786038138061 ], [ -122.37599590106781, 37.72280102999747 ], [ -122.376004915302616, 37.722815651110672 ], [ -122.376013938895468, 37.722830615438454 ], [ -122.376030187680101, 37.722857825817606 ], [ -122.376039254253797, 37.722874506280462 ], [ -122.376050040583777, 37.722890815990674 ], [ -122.376059098502594, 37.722907153225577 ], [ -122.376080671185491, 37.722939772641169 ], [ -122.376093177287544, 37.722955711594906 ], [ -122.376103946313975, 37.722971334847365 ], [ -122.376128941223584, 37.723002526570319 ], [ -122.376153918812676, 37.723033031286057 ], [ -122.376166398954496, 37.723047940552881 ], [ -122.376180598856877, 37.723062479064545 ], [ -122.376194807428803, 37.723077360800765 ], [ -122.376223189933157, 37.723105751362802 ], [ -122.37623737252926, 37.723119603414908 ], [ -122.376253283551748, 37.72313342793673 ], [ -122.376285088285584, 37.723160390521265 ], [ -122.37630098199665, 37.723173528583985 ], [ -122.376332751760657, 37.723199118255842 ], [ -122.376350356927531, 37.723211542324023 ], [ -122.37636795274409, 37.723223623174263 ], [ -122.376420715615595, 37.723258836008263 ], [ -122.376438285466264, 37.723269887443685 ], [ -122.376457584424074, 37.723280910784744 ], [ -122.376475145958864, 37.723291618708295 ], [ -122.376513708562953, 37.723312293030197 ], [ -122.376564456486463, 37.723336207150773 ], [ -122.376580211970165, 37.72334385327531 ], [ -122.376595984457055, 37.723352186404895 ], [ -122.376611774265584, 37.723361205435687 ], [ -122.376625852990443, 37.723370938725466 ], [ -122.37663994038509, 37.723381015239809 ], [ -122.37665232535511, 37.723392148965601 ], [ -122.376666438756033, 37.723403255155475 ], [ -122.376677112293109, 37.723415102871243 ], [ -122.376698494734327, 37.723440171193744 ], [ -122.376707475210537, 37.723453419335712 ], [ -122.376716464010698, 37.72346701070871 ], [ -122.376720284514462, 37.723481371145333 ], [ -122.37671721799309, 37.723496871391177 ], [ -122.376707592383568, 37.723526554064598 ], [ -122.376699305900857, 37.723540764010522 ], [ -122.376689273305857, 37.723554315043828 ], [ -122.376679223374595, 37.723567179623807 ], [ -122.376667418664113, 37.723579042064337 ], [ -122.376655545318613, 37.723588158957362 ], [ -122.377080106636114, 37.724240997344516 ], [ -122.377095367932696, 37.724229079787627 ], [ -122.377110646561107, 37.724217848681064 ], [ -122.37712595084453, 37.724207647256506 ], [ -122.377143001604594, 37.724198105004248 ], [ -122.377161806451838, 37.724189564342446 ], [ -122.377180636962038, 37.724182053636206 ], [ -122.377199502834941, 37.724175915820602 ], [ -122.377218385696736, 37.724170464459789 ], [ -122.377239031676282, 37.724166358457559 ], [ -122.377259703667661, 37.724163282404746 ], [ -122.377280401650879, 37.724161235477631 ], [ -122.377302862761439, 37.724160534182147 ], [ -122.377323664781798, 37.724162606235865 ], [ -122.377346194902287, 37.724164650746829 ], [ -122.377366988255417, 37.724166379566732 ], [ -122.377389501730306, 37.724167737606116 ], [ -122.377412006197545, 37.724168752695128 ], [ -122.377432782206725, 37.724169794776564 ], [ -122.377477756104398, 37.724170451485548 ], [ -122.377520967568458, 37.724169762808955 ], [ -122.377543428679331, 37.724169061467578 ], [ -122.377564152674637, 37.724168044443623 ], [ -122.377586596450428, 37.724166656916339 ], [ -122.377609031195107, 37.724164925615 ], [ -122.37762973784686, 37.724163222127238 ], [ -122.377674573698229, 37.724158387131986 ], [ -122.377695245662423, 37.724155310728172 ], [ -122.377717646069129, 37.724152206770718 ], [ -122.377738309358563, 37.724148787133252 ], [ -122.377760692073096, 37.724144996720867 ], [ -122.377801983955891, 37.724136784522699 ], [ -122.377824341339959, 37.724131964408841 ], [ -122.377861378513643, 37.724092230490051 ], [ -122.37790330341987, 37.724109074037422 ], [ -122.377953072363383, 37.724094202731443 ], [ -122.378002859323317, 37.724080017845608 ], [ -122.378052663257023, 37.724066519121855 ], [ -122.378102484525442, 37.724053707103792 ], [ -122.378152322784231, 37.724041581796904 ], [ -122.378202179051058, 37.724030142360959 ], [ -122.378253789425585, 37.724019705304357 ], [ -122.378303679673081, 37.724009639015357 ], [ -122.378375979604911, 37.723996811837594 ], [ -122.378413918203691, 37.723992773262658 ], [ -122.378431150905413, 37.723990438296809 ], [ -122.378450111707437, 37.723988076047718 ], [ -122.378467326705092, 37.723985054355325 ], [ -122.378486270155207, 37.72398200564826 ], [ -122.378503476136444, 37.723978641004621 ], [ -122.378522411247346, 37.723975248785557 ], [ -122.378573978156382, 37.723963095183649 ], [ -122.378592877874951, 37.723958330334597 ], [ -122.378610049829263, 37.723953592485465 ], [ -122.378644375709996, 37.723943431162333 ], [ -122.378661520946679, 37.723937663913084 ], [ -122.378678675540712, 37.723932239601808 ], [ -122.378695812103444, 37.723926129396091 ], [ -122.378711220902375, 37.723920046192298 ], [ -122.378728349122568, 37.723913592475675 ], [ -122.378745468663908, 37.723906795530496 ], [ -122.378760859771077, 37.723900026422747 ], [ -122.378776242185538, 37.723892913537782 ], [ -122.378793344365533, 37.723885430133492 ], [ -122.378808718111543, 37.723877974567344 ], [ -122.378824083164403, 37.723870175223993 ], [ -122.378854795921512, 37.723853890628249 ], [ -122.378885491312118, 37.723836919572342 ], [ -122.378899101889331, 37.723828118382741 ], [ -122.378914431877035, 37.723818946403391 ], [ -122.378928033770805, 37.723809801984345 ], [ -122.378943355765742, 37.723800286764138 ], [ -122.378956948975699, 37.723790799115662 ], [ -122.378970533505296, 37.723780968239559 ], [ -122.378997685199607, 37.72376062003049 ], [ -122.37900953226108, 37.723750473498114 ], [ -122.379023090751858, 37.723739613212317 ], [ -122.37903492981377, 37.723729123165697 ], [ -122.379050155637117, 37.723715832455909 ], [ -122.379063557916822, 37.723698793821882 ], [ -122.379075214748525, 37.72368109629867 ], [ -122.379086879906424, 37.723663742005776 ], [ -122.379098527703903, 37.723645701259585 ], [ -122.379110183827592, 37.723628003743777 ], [ -122.379120103528408, 37.723609990560298 ], [ -122.37913174263177, 37.723591606584641 ], [ -122.379141653299143, 37.723573250178703 ], [ -122.379151555283926, 37.723554550545835 ], [ -122.379159737512083, 37.723536221709345 ], [ -122.379169630463892, 37.723517178854308 ], [ -122.379177804358278, 37.72349850705946 ], [ -122.379185969211122, 37.723479491494309 ], [ -122.379192405639117, 37.723460503774781 ], [ -122.379200561813079, 37.723441145257027 ], [ -122.37921341729573, 37.723402483363635 ], [ -122.379218107928253, 37.723382836762347 ], [ -122.379224535661635, 37.723363505814724 ], [ -122.379233916574677, 37.723324212890873 ], [ -122.379236870433516, 37.723304250354701 ], [ -122.379241561053661, 37.72328460375217 ], [ -122.379250421598357, 37.723224716982607 ], [ -122.379252871777865, 37.723184847614071 ], [ -122.379253905947536, 37.723157361956225 ], [ -122.379253532794493, 37.723142603509906 ], [ -122.379254879369441, 37.723127473715763 ], [ -122.37925797172656, 37.723113003075639 ], [ -122.379262792162919, 37.723098505142787 ], [ -122.379267621960011, 37.723084350150188 ], [ -122.379275925257346, 37.723070826474732 ], [ -122.379284246592633, 37.723057988965195 ], [ -122.379294304689481, 37.723045467662629 ], [ -122.379306117221759, 37.723033947914878 ], [ -122.379319675538511, 37.723023087593674 ], [ -122.379333259872894, 37.723013256399945 ], [ -122.379348598663228, 37.723004427583476 ], [ -122.379363963140094, 37.722996628448691 ], [ -122.379381091436528, 37.722990174630688 ], [ -122.379398245074995, 37.722984750499421 ], [ -122.379417153855258, 37.722980328457844 ], [ -122.379434368594119, 37.722977307172805 ], [ -122.379455083545309, 37.722975946315401 ], [ -122.37947750088145, 37.722973528474888 ], [ -122.379499892178387, 37.722970080951924 ], [ -122.379523994530487, 37.722965919396081 ], [ -122.37954461400976, 37.722960783310853 ], [ -122.379566935863238, 37.722954589966704 ], [ -122.379589240353653, 37.72294771016621 ], [ -122.379609790385288, 37.722939828261154 ], [ -122.379630314379966, 37.722930916948918 ], [ -122.379649092581033, 37.722921346210235 ], [ -122.379669581838826, 37.72291106171236 ], [ -122.379686587876122, 37.72289980269619 ], [ -122.37970530565336, 37.722887829635219 ], [ -122.379722277304509, 37.722875197704134 ], [ -122.379737503175733, 37.722861906898203 ], [ -122.379752711680695, 37.722847929638164 ], [ -122.379767911153763, 37.722833609155607 ], [ -122.379779628445803, 37.722818314142543 ], [ -122.379793065118861, 37.722802648327246 ], [ -122.379812990079841, 37.722770054111137 ], [ -122.379822935192337, 37.722753070549636 ], [ -122.379814676042812, 37.722699980835564 ], [ -122.379867320110051, 37.722593727839261 ], [ -122.379934313833843, 37.722371188860151 ], [ -122.37993733657764, 37.72235397239195 ], [ -122.379942087368576, 37.72233672807188 ], [ -122.379948575592024, 37.722319799663914 ], [ -122.379956801239857, 37.722303186893228 ], [ -122.379965035219655, 37.722286917353493 ], [ -122.37997327788419, 37.722270991313792 ], [ -122.379983257611954, 37.722255380367073 ], [ -122.379994974077178, 37.722240085342186 ], [ -122.380006708591978, 37.72222547675721 ], [ -122.380020188517861, 37.72221152704482 ], [ -122.380035405172549, 37.7221978929784 ], [ -122.380048911140065, 37.722184973215455 ], [ -122.380065900274673, 37.722173027405468 ], [ -122.380082897401252, 37.72216142510468 ], [ -122.38009991257772, 37.722150509242532 ], [ -122.380116944421857, 37.722140279841042 ], [ -122.380135722713177, 37.722130709292628 ], [ -122.380156255096665, 37.722122140839112 ], [ -122.38018021822036, 37.722112487531497 ], [ -122.380200637722609, 37.722099457131471 ], [ -122.380221048535219, 37.722086083501829 ], [ -122.380241450657905, 37.722072366642536 ], [ -122.380260115357089, 37.722058334421121 ], [ -122.38028050009946, 37.72204393110291 ], [ -122.380299156785668, 37.722029555363576 ], [ -122.38031780442914, 37.722014836126135 ], [ -122.380336443389169, 37.721999773934229 ], [ -122.380353345265689, 37.721984396102023 ], [ -122.380371975527709, 37.721968990678377 ], [ -122.380388868360967, 37.721953269620464 ], [ -122.380405753195106, 37.721937205323023 ], [ -122.38043950478324, 37.721904390279654 ], [ -122.380454643491987, 37.721887667118459 ], [ -122.38046977317164, 37.721870601009314 ], [ -122.380498331188051, 37.721837525213786 ], [ -122.38051707392718, 37.721826581710999 ], [ -122.380535826036024, 37.721815981420185 ], [ -122.380554603852772, 37.721806411084629 ], [ -122.380573407703011, 37.721797869875026 ], [ -122.380593957312428, 37.721789987796839 ], [ -122.380614524292966, 37.721782792441729 ], [ -122.380636845696628, 37.721776598619094 ], [ -122.380657456091583, 37.721771119386688 ], [ -122.380679829595536, 37.721766984912172 ], [ -122.380702211442937, 37.721763193939509 ], [ -122.380724628718468, 37.721760775855728 ], [ -122.380747063016599, 37.721759044225237 ], [ -122.380776445603402, 37.721758575115111 ], [ -122.380798931664657, 37.721758902836477 ], [ -122.380821453165254, 37.721760603721208 ], [ -122.380843991677978, 37.721762990510022 ], [ -122.380866547569951, 37.721766064021175 ], [ -122.380887409825149, 37.721770538303247 ], [ -122.380910017489256, 37.721775671167713 ], [ -122.380930914478753, 37.721781517796998 ], [ -122.380951846221805, 37.721788737601223 ], [ -122.380969304166271, 37.72179532613972 ], [ -122.381209663710422, 37.721932611167148 ], [ -122.381595340270607, 37.722141054219321 ], [ -122.381616306935143, 37.722149646808873 ], [ -122.381637264915469, 37.722157896168731 ], [ -122.381659933573118, 37.722165431470607 ], [ -122.381680856812778, 37.722172308193493 ], [ -122.381703500095611, 37.72217881352352 ], [ -122.381718196203238, 37.722182371993462 ], [ -122.381726116975372, 37.722184289451477 ], [ -122.381748725168919, 37.72218942214915 ], [ -122.381771315640577, 37.722193868396147 ], [ -122.38179561782411, 37.722197600566012 ], [ -122.381818182577149, 37.722201017120689 ], [ -122.381842449666692, 37.722203376657269 ], [ -122.381864970966248, 37.722205076798758 ], [ -122.381889211635382, 37.722206406378888 ], [ -122.38191343562309, 37.7222070497657 ], [ -122.381935913473328, 37.722207033764029 ], [ -122.381960093656375, 37.722205960742578 ], [ -122.381984265148091, 37.722204544490268 ], [ -122.382006690514388, 37.722202469399647 ], [ -122.382131855667623, 37.722160639374017 ], [ -122.382053374975868, 37.722202410560982 ], [ -122.382081246609474, 37.722210549386944 ], [ -122.382107407226997, 37.722219401998011 ], [ -122.382135313638244, 37.722228913714801 ], [ -122.38216150904843, 37.7222391397666 ], [ -122.382186002128265, 37.722250422556726 ], [ -122.38221223231281, 37.72226202122625 ], [ -122.382231488067504, 37.722271327773925 ], [ -122.382247234884744, 37.722278630470704 ], [ -122.382264666284939, 37.722284188875534 ], [ -122.382282081008995, 37.722289061364116 ], [ -122.382301180314499, 37.722292189559724 ], [ -122.382316796753315, 37.722294343584274 ], [ -122.382332404500787, 37.722296154380857 ], [ -122.382348055371921, 37.7222996815849 ], [ -122.382362004260912, 37.722304265802613 ], [ -122.382377707967407, 37.722309851797831 ], [ -122.382389988962331, 37.722316866217334 ], [ -122.382402296728699, 37.722324910302142 ], [ -122.382412893137086, 37.722333668461893 ], [ -122.38242351562603, 37.722343456298312 ], [ -122.382432426756893, 37.722353958210256 ], [ -122.382443110446403, 37.72236614862048 ], [ -122.38245541788794, 37.722374192979785 ], [ -122.382471103884711, 37.722379092516256 ], [ -122.382486702960776, 37.722380560066497 ], [ -122.382502223461259, 37.722378938861951 ], [ -122.382529930032874, 37.722380556015445 ], [ -122.382545607695334, 37.722385112585165 ], [ -122.382559626159036, 37.72239244258634 ], [ -122.382571959345043, 37.722401516341982 ], [ -122.382580879888579, 37.72241236145743 ], [ -122.382586386406132, 37.722424977955527 ], [ -122.382590173914764, 37.722437965564282 ], [ -122.382588775856519, 37.722451035493926 ], [ -122.382590834611065, 37.722464050455052 ], [ -122.382598043802759, 37.722475609647852 ], [ -122.382610377359867, 37.722484683668391 ], [ -122.382624352373682, 37.722490297257906 ], [ -122.382641931997384, 37.722501690715291 ], [ -122.38265777418269, 37.72251276857228 ], [ -122.382675345468627, 37.72252381879327 ], [ -122.382692907374491, 37.722534525796839 ], [ -122.382708732877717, 37.722544917184152 ], [ -122.382726277750848, 37.722554937725484 ], [ -122.382745551041126, 37.722564930914963 ], [ -122.382763086877006, 37.722574607955885 ], [ -122.382780614728389, 37.722583942306464 ], [ -122.382799870630677, 37.722593248486184 ], [ -122.382827994635349, 37.722611340684225 ], [ -122.382840310501109, 37.722619727959788 ], [ -122.382856023011854, 37.722625657391347 ], [ -122.382871674315936, 37.722629184245534 ], [ -122.382901057233255, 37.722628714605619 ], [ -122.382920165354051, 37.722632186201139 ], [ -122.382932481579374, 37.722640573461497 ], [ -122.382939690848261, 37.722652132907662 ], [ -122.382943451985241, 37.722664090283487 ], [ -122.382954144152635, 37.722676623878094 ], [ -122.382966546995732, 37.722688443398582 ], [ -122.382978924448281, 37.722699233229207 ], [ -122.382994731944478, 37.722708938137238 ], [ -122.383008785302238, 37.722717641262442 ], [ -122.383026278422236, 37.722725602123852 ], [ -122.383042008015664, 37.722732217987662 ], [ -122.383057685092282, 37.722736774500049 ], [ -122.38307338894937, 37.722742360676712 ], [ -122.38308910115893, 37.722748290082635 ], [ -122.383103093664104, 37.722754590615885 ], [ -122.383131113444662, 37.722768563756851 ], [ -122.383145140734484, 37.722776236913717 ], [ -122.383173212715235, 37.722792269674038 ], [ -122.383185537691887, 37.722801000133508 ], [ -122.383197871022062, 37.722810073823027 ], [ -122.383210213742984, 37.722819490725982 ], [ -122.383220827716869, 37.72282893553853 ], [ -122.383231459072476, 37.722839066252533 ], [ -122.383252652240699, 37.722856582695023 ], [ -122.383275469111652, 37.722869952249027 ], [ -122.383296549234032, 37.722883006473765 ], [ -122.383319349425548, 37.722895689831176 ], [ -122.383342123188228, 37.72290734351234 ], [ -122.383366616328686, 37.722918626335904 ], [ -122.383389364359843, 37.722929250325038 ], [ -122.383413814380745, 37.722938817278958 ], [ -122.383431263763498, 37.722945061956594 ], [ -122.383518693416903, 37.722983494694461 ], [ -122.38360968436416, 37.72302599052874 ], [ -122.383623746538206, 37.723035036256725 ], [ -122.383636106408431, 37.723045139846334 ], [ -122.383646772299514, 37.723056643431036 ], [ -122.383655727872323, 37.723068861366919 ], [ -122.383661243319395, 37.723081821039202 ], [ -122.383666776856799, 37.723095467151623 ], [ -122.383670581632771, 37.723109140906679 ], [ -122.383676097085413, 37.723122100578188 ], [ -122.383683315208287, 37.723134002929086 ], [ -122.383695684140434, 37.723144449457912 ], [ -122.383708017935533, 37.723153523087994 ], [ -122.383722027960033, 37.72316050972421 ], [ -122.383732835965688, 37.72316905039996 ], [ -122.383734379158653, 37.723170269802985 ], [ -122.38373469231658, 37.723182625929454 ], [ -122.383748702349067, 37.723189612562479 ], [ -122.383764362513205, 37.723193482523506 ], [ -122.383781689859717, 37.723194922268853 ], [ -122.383795343242184, 37.723187836915955 ], [ -122.383821435159561, 37.723193943333669 ], [ -122.383828644613416, 37.723205502449808 ], [ -122.383835888866727, 37.723218434468372 ], [ -122.383841404702011, 37.72323139412638 ], [ -122.383848657659414, 37.723244669369848 ], [ -122.383852462137753, 37.723258343398804 ], [ -122.383857987017038, 37.723271646001557 ], [ -122.383861791837163, 37.723285319750062 ], [ -122.383865605358181, 37.723299336724111 ], [ -122.383867681419986, 37.723313038392696 ], [ -122.38387185196801, 37.723341127615335 ], [ -122.383872226038946, 37.723355886046527 ], [ -122.383879757398802, 37.723380144510621 ], [ -122.383887280063988, 37.723404059748461 ], [ -122.383896426763826, 37.723423828636541 ], [ -122.383903627551987, 37.723435044521956 ], [ -122.383914233002187, 37.723444146045374 ], [ -122.383928243093862, 37.723451132382195 ], [ -122.383956011009261, 37.72345515232913 ], [ -122.383982041442252, 37.723458856142138 ], [ -122.384009791963194, 37.723462189624996 ], [ -122.384035805692207, 37.723465206963674 ], [ -122.384063530109799, 37.723467510482209 ], [ -122.384089526103082, 37.723469841637751 ], [ -122.384136280611983, 37.723472527510232 ], [ -122.384158819757118, 37.723474913938858 ], [ -122.384181376305577, 37.723477986814515 ], [ -122.384203958613327, 37.723482089368453 ], [ -122.384224830245174, 37.723486906009427 ], [ -122.38424745675556, 37.723492724672354 ], [ -122.384268380608177, 37.72349960093424 ], [ -122.384289321860564, 37.723507163369192 ], [ -122.384308551747594, 37.72351543990402 ], [ -122.384327808428154, 37.723524745827085 ], [ -122.384347090879899, 37.723535081704128 ], [ -122.384364653265465, 37.723545788456732 ], [ -122.384377022361861, 37.723556234913332 ], [ -122.38438594261595, 37.723567079901137 ], [ -122.384394846160177, 37.723577238425868 ], [ -122.384405469087795, 37.72358702608161 ], [ -122.384417785645866, 37.723595413459996 ], [ -122.384430084788605, 37.72360311383661 ], [ -122.384444086263514, 37.723609757160801 ], [ -122.384458052932075, 37.723615027580706 ], [ -122.384473782841141, 37.723621643252429 ], [ -122.38448780172817, 37.72362897302272 ], [ -122.384501846725257, 37.723637332468307 ], [ -122.384515900428013, 37.723646035137868 ], [ -122.384528251811574, 37.723655795132643 ], [ -122.384538892173168, 37.723666269227522 ], [ -122.384549541240418, 37.723677086547099 ], [ -122.38456021641889, 37.723688933542604 ], [ -122.384570943824258, 37.723702840165593 ], [ -122.384581645111282, 37.723715716561451 ], [ -122.384595785866907, 37.72372785147779 ], [ -122.384609917924237, 37.723739643166766 ], [ -122.384624023876995, 37.723750405177114 ], [ -122.384639831811498, 37.723760109862766 ], [ -122.384657351467936, 37.723769100432129 ], [ -122.384674853030802, 37.723777404558668 ], [ -122.384688837160766, 37.723783361676922 ], [ -122.384702838685783, 37.723790004695601 ], [ -122.384716875034059, 37.72379802088971 ], [ -122.384727472270853, 37.723806778833662 ], [ -122.38473981501231, 37.723816195854965 ], [ -122.384750446723075, 37.723826326704874 ], [ -122.384759367064078, 37.723837171663916 ], [ -122.38476655931882, 37.723848044270227 ], [ -122.384773760272395, 37.723859259827094 ], [ -122.38478439233964, 37.723869390668334 ], [ -122.384795006310796, 37.723878835068398 ], [ -122.384807314596031, 37.723886878899947 ], [ -122.384821316158124, 37.723893522179033 ], [ -122.384835282906707, 37.723898792553967 ], [ -122.384850942931138, 37.723902662375643 ], [ -122.384889238702442, 37.723912694229192 ], [ -122.384901537953482, 37.723920394830778 ], [ -122.38491387167187, 37.723929468064433 ], [ -122.384922801444858, 37.72394065622548 ], [ -122.384935378901247, 37.72395934004836 ], [ -122.384946228617792, 37.723978051514877 ], [ -122.384957095057587, 37.723997449442578 ], [ -122.384966251165253, 37.724017561465779 ], [ -122.384978611028657, 37.724027664643877 ], [ -122.384989269262093, 37.72403882514314 ], [ -122.384998216130384, 37.724050700029551 ], [ -122.385005451957767, 37.724063288474291 ], [ -122.385012696499402, 37.724076220418716 ], [ -122.385016466753711, 37.724088521225767 ], [ -122.38502538751068, 37.724099366158697 ], [ -122.385037712928536, 37.724108096697165 ], [ -122.385053408173405, 37.724113339388623 ], [ -122.385069016362493, 37.724115149547565 ], [ -122.385084528456687, 37.724113184503125 ], [ -122.385101700039968, 37.72410844598258 ], [ -122.385118888340344, 37.724104393921756 ], [ -122.385137831886752, 37.724101343865193 ], [ -122.385156818620402, 37.72410001021359 ], [ -122.385179288343707, 37.72409965064211 ], [ -122.385196616267564, 37.724101089899079 ], [ -122.385215698411002, 37.724103531450261 ], [ -122.385233087637133, 37.724107373824481 ], [ -122.385250510990446, 37.724112588834913 ], [ -122.385267961148685, 37.724118833233817 ], [ -122.385283708655592, 37.724126135522596 ], [ -122.385301210711177, 37.724134439275502 ], [ -122.385316914686456, 37.724140025157403 ], [ -122.38533260125142, 37.724144924586071 ], [ -122.385348261353599, 37.724148794341509 ], [ -122.385363904735826, 37.724151977632673 ], [ -122.385381250095534, 37.724154103588141 ], [ -122.385396840549205, 37.724155227532641 ], [ -122.38541414272278, 37.724155637349959 ], [ -122.385429689989081, 37.72415504515677 ], [ -122.385446939582977, 37.72415339589606 ], [ -122.385464163048326, 37.724150716681571 ], [ -122.385486461018303, 37.724147348627724 ], [ -122.385517561871112, 37.724142651083937 ], [ -122.385562344261174, 37.724135753744811 ], [ -122.385579620308761, 37.724135133861189 ], [ -122.385595245944231, 37.724137630950658 ], [ -122.38560923890941, 37.724143930635698 ], [ -122.385619835954955, 37.724152688504432 ], [ -122.38562873939226, 37.72416284694048 ], [ -122.385639388343563, 37.724173664166216 ], [ -122.38565002928155, 37.724184138154342 ], [ -122.385662389611269, 37.724194241254921 ], [ -122.385674732182835, 37.724203657908639 ], [ -122.385688794837932, 37.724212703663014 ], [ -122.385702840080384, 37.724221062964645 ], [ -122.385716876624841, 37.724229079313623 ], [ -122.385730887033873, 37.724236065435178 ], [ -122.385746617533329, 37.724242680930779 ], [ -122.385762330273252, 37.724248609978716 ], [ -122.385778025598896, 37.724253852573533 ], [ -122.385798932390358, 37.72426004211173 ], [ -122.385816364866457, 37.72426559998376 ], [ -122.385832086325422, 37.724271872247911 ], [ -122.38584781649574, 37.724278487735482 ], [ -122.38586357244958, 37.724286132903025 ], [ -122.385877617725541, 37.724294492183716 ], [ -122.38589340051098, 37.724303167287317 ], [ -122.385905743122947, 37.724312583642103 ], [ -122.385919823251839, 37.72432231609433 ], [ -122.385932192689026, 37.724332762111779 ], [ -122.38594985163823, 37.724347244101757 ], [ -122.385963914360929, 37.724356290097674 ], [ -122.385979679391255, 37.72436427819499 ], [ -122.385995409594287, 37.724370893662766 ], [ -122.386012824706015, 37.72437576560376 ], [ -122.386028493940515, 37.724379978214039 ], [ -122.38604418931267, 37.724385220773271 ], [ -122.386058173659734, 37.724391177453832 ], [ -122.386072175428609, 37.724397820583704 ], [ -122.386086194619651, 37.724405150162887 ], [ -122.386098511495945, 37.724413537089887 ], [ -122.386110837084971, 37.724422267241074 ], [ -122.386121460359277, 37.724432054740767 ], [ -122.386155140875701, 37.724396492269392 ], [ -122.386142558844625, 37.724445794903964 ], [ -122.386158314864247, 37.724453440031894 ], [ -122.386174045447717, 37.724460055470189 ], [ -122.386191469295412, 37.724465270335628 ], [ -122.386208867014332, 37.724469455522041 ], [ -122.386227957996084, 37.724472240134631 ], [ -122.386245295090333, 37.724474022731769 ], [ -122.38626432544568, 37.724474404754595 ], [ -122.386288541146868, 37.724474703747106 ], [ -122.386305877897456, 37.724476486340883 ], [ -122.386321468785383, 37.724477610432025 ], [ -122.386338779051741, 37.724478363075484 ], [ -122.386354352857126, 37.724478800431207 ], [ -122.386371637343302, 37.724478523662484 ], [ -122.386387184323809, 37.724477931348545 ], [ -122.38640445173273, 37.72447696811853 ], [ -122.386419972931165, 37.7244753463929 ], [ -122.386437213858997, 37.724473353487241 ], [ -122.386452717618937, 37.724471044757188 ], [ -122.386469932064344, 37.724468022175898 ], [ -122.386485410039811, 37.724464684034231 ], [ -122.386500878956426, 37.724461002670601 ], [ -122.38651633915967, 37.724456978079473 ], [ -122.386531781598762, 37.724452267315506 ], [ -122.386547242137226, 37.724448242440204 ], [ -122.386564474343317, 37.72444590629047 ], [ -122.386579960337627, 37.724442911647458 ], [ -122.386595429583735, 37.724439229991283 ], [ -122.386610881065096, 37.724434862162283 ], [ -122.386626315119955, 37.724429807880355 ], [ -122.38664173140225, 37.724424067151048 ], [ -122.386657130948578, 37.724417639957707 ], [ -122.386670792994096, 37.724410897498451 ], [ -122.386684437604913, 37.724403468312111 ], [ -122.386698064780759, 37.724395352398709 ], [ -122.386709954455839, 37.724386921220365 ], [ -122.386721827401047, 37.724377803853415 ], [ -122.386733682558045, 37.724367999490731 ], [ -122.386743808927534, 37.724358223089439 ], [ -122.386753901134114, 37.724347073774396 ], [ -122.386760492536993, 37.724334263702232 ], [ -122.386768838521292, 37.724322455623209 ], [ -122.386780684957245, 37.724312308304832 ], [ -122.386796092835809, 37.724306224324238 ], [ -122.386814983740024, 37.72430111465097 ], [ -122.386833900781468, 37.724297034651016 ], [ -122.38685286104193, 37.724294670780772 ], [ -122.386873576231366, 37.724293308893905 ], [ -122.386890817450478, 37.724291315916268 ], [ -122.38690624274291, 37.724285918372097 ], [ -122.386918141436212, 37.724277830392509 ], [ -122.386928250341739, 37.724267367524348 ], [ -122.386934850421213, 37.724254900667695 ], [ -122.386936248094955, 37.724241830684782 ], [ -122.386934179470913, 37.724228472583448 ], [ -122.386932102818292, 37.724214770970946 ], [ -122.386933491079674, 37.72420135749902 ], [ -122.386933168672044, 37.724188658157658 ], [ -122.386929398441154, 37.724176357406598 ], [ -122.386923908138428, 37.72416442757148 ], [ -122.386916706823882, 37.724153211871986 ], [ -122.386907811932304, 37.724143397033281 ], [ -122.38689548628895, 37.724134666690496 ], [ -122.386883203877176, 37.724127652753772 ], [ -122.386867500139488, 37.724122067349683 ], [ -122.386837811685524, 37.724110524813227 ], [ -122.386792314266742, 37.724089278160726 ], [ -122.386769557372673, 37.724078311594091 ], [ -122.386748519865691, 37.724066974120603 ], [ -122.386725745213752, 37.72405532110006 ], [ -122.386704690294678, 37.724043297167768 ], [ -122.386683626669864, 37.724030930006215 ], [ -122.386641482023506, 37.72400550949537 ], [ -122.386620400988434, 37.723992455596928 ], [ -122.386599311255594, 37.723979058743758 ], [ -122.386579941254908, 37.723965290981276 ], [ -122.386544701706455, 37.723939416215046 ], [ -122.386297403385385, 37.72380190986933 ], [ -122.386051808287206, 37.723663345927129 ], [ -122.386034340737112, 37.723656414643614 ], [ -122.385999441189313, 37.723643925509059 ], [ -122.385964559071653, 37.723632122815218 ], [ -122.385936677777778, 37.723623641958845 ], [ -122.385920974203756, 37.723618055878958 ], [ -122.385906946468538, 37.723610383053618 ], [ -122.385894611983545, 37.723601309659934 ], [ -122.385883963077092, 37.723590492456275 ], [ -122.385875024838413, 37.723578961136361 ], [ -122.38586953474902, 37.723567031250973 ], [ -122.385860622648437, 37.723556529881158 ], [ -122.385846603632743, 37.723549199999539 ], [ -122.385827460305421, 37.723544355976919 ], [ -122.385811791258462, 37.723540143339349 ], [ -122.385796095735444, 37.723534900753975 ], [ -122.385780392190739, 37.723529314655281 ], [ -122.385764662184897, 37.723522699157897 ], [ -122.385750651900182, 37.723515712764971 ], [ -122.385738361343229, 37.723508355751683 ], [ -122.385731151556087, 37.723496796478393 ], [ -122.385722248191556, 37.723486638323564 ], [ -122.385708220501641, 37.723478965474406 ], [ -122.385692534045461, 37.723474065820646 ], [ -122.385680182539247, 37.72346430594763 ], [ -122.385666111318983, 37.723454916965551 ], [ -122.385652048810016, 37.723445871207367 ], [ -122.385637977596772, 37.723436482221878 ], [ -122.385609870011095, 37.723419077148201 ], [ -122.38559409650658, 37.723410745500026 ], [ -122.385580051429457, 37.723402386184311 ], [ -122.385548521852172, 37.723386409328988 ], [ -122.385534494199106, 37.723378736459033 ], [ -122.385510008939335, 37.723367797318083 ], [ -122.385494374422848, 37.723364957271542 ], [ -122.385459753720795, 37.72336345119556 ], [ -122.385444119898509, 37.723360611131262 ], [ -122.385430153207864, 37.723355340828022 ], [ -122.385416142986116, 37.723348354395121 ], [ -122.385403808604508, 37.723339280949688 ], [ -122.385391492330285, 37.723330893943086 ], [ -122.385375701117368, 37.723321876094445 ], [ -122.385359927998408, 37.723313544134655 ], [ -122.385342434828871, 37.723305583340405 ], [ -122.385326695857486, 37.723298624564244 ], [ -122.385309246571239, 37.723292379887567 ], [ -122.385291822714692, 37.723287164896192 ], [ -122.385263732678311, 37.723270446190739 ], [ -122.38524797700147, 37.723262800941718 ], [ -122.385232229687915, 37.723255498921759 ], [ -122.385216491083142, 37.723248540125276 ], [ -122.385185048704614, 37.723235995428482 ], [ -122.385169353635689, 37.723230752753828 ], [ -122.385151929803385, 37.723225537741719 ], [ -122.385134524075497, 37.723221009167226 ], [ -122.385117126370531, 37.723216824101435 ], [ -122.385101466469777, 37.723212954040122 ], [ -122.385082366457212, 37.723209826029851 ], [ -122.385064995564079, 37.723206670622204 ], [ -122.385047580442674, 37.723201798545674 ], [ -122.38502841148815, 37.723195924710531 ], [ -122.385010953200691, 37.723189336769465 ], [ -122.384993460097732, 37.72318137592324 ], [ -122.384977677662462, 37.723172700972079 ], [ -122.384946044204682, 37.723152605241658 ], [ -122.384924989829145, 37.723140580989593 ], [ -122.384905663878186, 37.723128529078224 ], [ -122.384884618220184, 37.723116848044533 ], [ -122.384842544338781, 37.723094172691695 ], [ -122.384800505291054, 37.723072869951821 ], [ -122.384779494472909, 37.7230625615273 ], [ -122.384742788674473, 37.723047010916545 ], [ -122.384730489577436, 37.723039310022727 ], [ -122.384716444674581, 37.723030950878183 ], [ -122.384704119127363, 37.723022220310114 ], [ -122.38469349658682, 37.723012432674857 ], [ -122.384682864654536, 37.723002301824017 ], [ -122.38467394442489, 37.722991456857699 ], [ -122.384663217109889, 37.722977550517093 ], [ -122.384654296194697, 37.722966705560324 ], [ -122.384643682371646, 37.722957261146163 ], [ -122.384633093968816, 37.722948846419143 ], [ -122.384619101304366, 37.722942546342381 ], [ -122.384596345081988, 37.722931579353954 ], [ -122.384578721543591, 37.722918470060556 ], [ -122.384546896507018, 37.722890823537078 ], [ -122.384530966582233, 37.722876313408833 ], [ -122.384518537006088, 37.722863464381859 ], [ -122.38443411130757, 37.722807129900666 ], [ -122.384347983418735, 37.722751852133769 ], [ -122.384239081476991, 37.722684921079754 ], [ -122.384207605050619, 37.722671003487143 ], [ -122.384176119229906, 37.722656742122247 ], [ -122.384144625418941, 37.722642137786686 ], [ -122.384113113527988, 37.722626847002253 ], [ -122.384083322047019, 37.722611185329136 ], [ -122.384051793126986, 37.722595208071212 ], [ -122.384021983580084, 37.722578859942075 ], [ -122.38399213993786, 37.722561138891301 ], [ -122.383974473094511, 37.722546313377947 ], [ -122.383955077860932, 37.722531515778066 ], [ -122.383937428078781, 37.722517376441559 ], [ -122.383918050598027, 37.722503265006914 ], [ -122.383884593268888, 37.722479421152507 ], [ -122.383868863653973, 37.722472805400912 ], [ -122.383854862444593, 37.722466162007116 ], [ -122.383839115090979, 37.722458859805528 ], [ -122.383825087796367, 37.722451187005468 ], [ -122.383809323735065, 37.722443198062706 ], [ -122.383795270342418, 37.722434495307176 ], [ -122.383782945009273, 37.722425764916487 ], [ -122.383768882931093, 37.722416719206592 ], [ -122.383744181117109, 37.722397198772512 ], [ -122.383731812655114, 37.72238675251657 ], [ -122.38372613997241, 37.722367614518575 ], [ -122.383705303481563, 37.722364170691534 ], [ -122.383691206623396, 37.722353751794557 ], [ -122.383675390420279, 37.722343704028198 ], [ -122.383659608655421, 37.72233502861922 ], [ -122.383642115552547, 37.722327067576785 ], [ -122.3836246492464, 37.722320136472625 ], [ -122.383605471580864, 37.722313918910281 ], [ -122.383586328372033, 37.722309074528077 ], [ -122.383570607863348, 37.722302801956744 ], [ -122.383553080331694, 37.722293467992337 ], [ -122.383537272159586, 37.722283763169607 ], [ -122.383521447287507, 37.722273371882082 ], [ -122.383507350472314, 37.722262952962978 ], [ -122.383491507867944, 37.722251875225332 ], [ -122.383477384968415, 37.722240426625198 ], [ -122.38346325337578, 37.72222863479751 ], [ -122.383445508101758, 37.722210720451898 ], [ -122.383434894533281, 37.722201275653106 ], [ -122.383422587021329, 37.722193231670488 ], [ -122.383410305264974, 37.722186217644108 ], [ -122.38339632153793, 37.722180260372568 ], [ -122.383380653254989, 37.722176047130667 ], [ -122.383364967234144, 37.722171147440534 ], [ -122.383350966126613, 37.722164503986562 ], [ -122.38333693893793, 37.722156831128018 ], [ -122.383322885647786, 37.722148128041155 ], [ -122.383310552066504, 37.722139054369293 ], [ -122.383298209445869, 37.722129637475824 ], [ -122.383282367246764, 37.722118559704285 ], [ -122.38326655080327, 37.722108511888187 ], [ -122.383249023002975, 37.722099177609202 ], [ -122.383231530690935, 37.722091216494434 ], [ -122.383212327035437, 37.722083969464926 ], [ -122.383193157822831, 37.722078095341168 ], [ -122.383172277957286, 37.72207293529052 ], [ -122.383156635797775, 37.722069751696246 ], [ -122.383140949814091, 37.722064851976235 ], [ -122.383123517701506, 37.722059293437333 ], [ -122.383107814683271, 37.722053707530257 ], [ -122.383076390550301, 37.722041848445443 ], [ -122.383058941409402, 37.722035603714303 ], [ -122.383027482510172, 37.72202237171301 ], [ -122.383013472765484, 37.722015384992908 ], [ -122.382981979115939, 37.722000780625166 ], [ -122.382967960677476, 37.721993450399175 ], [ -122.382952196466633, 37.721985461621244 ], [ -122.382938160650923, 37.72197744521457 ], [ -122.382922396446673, 37.721969456432632 ], [ -122.382897807697603, 37.721954398035997 ], [ -122.382881913081334, 37.721941260860625 ], [ -122.382867729471926, 37.721927409605762 ], [ -122.38285353717319, 37.721913215123287 ], [ -122.382839327490771, 37.72189833418733 ], [ -122.38282855685857, 37.721882711553377 ], [ -122.382816049838553, 37.721866773306338 ], [ -122.382806990215869, 37.721850436593726 ], [ -122.382797922594165, 37.721833756643434 ], [ -122.382790609101846, 37.721818078751127 ], [ -122.382783313008133, 37.721803087584632 ], [ -122.382772577517116, 37.721788837568752 ], [ -122.382763570078581, 37.721774560207898 ], [ -122.382752843642237, 37.721760653685102 ], [ -122.382740405865931, 37.721747461242323 ], [ -122.382731494418593, 37.721736959358161 ], [ -122.382724293971776, 37.721725743398046 ], [ -122.382720523870901, 37.721713442518464 ], [ -122.382720202193767, 37.721700743160483 ], [ -122.382723346326571, 37.72168833177593 ], [ -122.382726481072993, 37.721675577176406 ], [ -122.382729581733628, 37.721661449662143 ], [ -122.38273230785866, 37.721632563445375 ], [ -122.382731603643052, 37.721604762147862 ], [ -122.382733369644583, 37.721586614972047 ], [ -122.382734347844632, 37.721576562371538 ], [ -122.38274367451254, 37.721535209801523 ], [ -122.382746792545248, 37.72152176846371 ], [ -122.382751629924911, 37.721507956556103 ], [ -122.382756484345322, 37.721494831105609 ], [ -122.382763041407543, 37.721480648347587 ], [ -122.382782164842624, 37.721416476839273 ], [ -122.382798370882199, 37.721373640576992 ], [ -122.382806482416456, 37.721352565673556 ], [ -122.382814602294815, 37.721331834000935 ], [ -122.382824442541889, 37.721310731465771 ], [ -122.382834299480933, 37.721290315392572 ], [ -122.382844148411394, 37.721269556081531 ], [ -122.382854005339539, 37.721249140006542 ], [ -122.382865600022583, 37.721229039519947 ], [ -122.382877185659027, 37.721208595811795 ], [ -122.382900408735608, 37.721169767752777 ], [ -122.38290693965736, 37.721154555308274 ], [ -122.382913479271252, 37.721139686089295 ], [ -122.382921747600108, 37.721124789237969 ], [ -122.382931761341311, 37.72111055121686 ], [ -122.382941783773603, 37.721096656420762 ], [ -122.382951814897126, 37.721083104849697 ], [ -122.382963583082613, 37.721069868876654 ], [ -122.382977097024437, 37.721057291727 ], [ -122.382988899981882, 37.721045428655017 ], [ -122.383004168370334, 37.721033853552548 ], [ -122.383019462839854, 37.721023308125787 ], [ -122.383034765654699, 37.721013105928478 ], [ -122.383050086547513, 37.721003590169914 ], [ -122.383070574806197, 37.7209933050774 ], [ -122.383087649800032, 37.720984791368565 ], [ -122.383102978684576, 37.720975618840036 ], [ -122.383116562158349, 37.720965787756029 ], [ -122.383131839552021, 37.72095455585724 ], [ -122.383143650811689, 37.7209430357264 ], [ -122.383155445374214, 37.720930829406058 ], [ -122.383167222202275, 37.720917936912819 ], [ -122.383198904587886, 37.720871762618749 ], [ -122.38322729544646, 37.720832165418933 ], [ -122.383257414279257, 37.720792540037081 ], [ -122.383305971799075, 37.720729958050264 ], [ -122.38333258199772, 37.720688328826199 ], [ -122.383344140985599, 37.72066685539815 ], [ -122.383355691961356, 37.720645038731924 ], [ -122.383365505527735, 37.720622906477054 ], [ -122.383373590728709, 37.720600801854324 ], [ -122.383381667228008, 37.720578354005049 ], [ -122.383389734679795, 37.720555562934777 ], [ -122.383394337405079, 37.720532483893628 ], [ -122.383400668139274, 37.720509377224332 ], [ -122.383403542162711, 37.720486326096186 ], [ -122.383407970241009, 37.720456382272516 ], [ -122.38340677875901, 37.720409360597294 ], [ -122.383402539659841, 37.720378525251974 ], [ -122.383398682545547, 37.720362792132271 ], [ -122.383398428098104, 37.720361252706262 ], [ -122.383396641447277, 37.720350463627156 ], [ -122.383387721377815, 37.72033961856436 ], [ -122.383358200220172, 37.720334596711098 ], [ -122.383344547327056, 37.720341682291192 ], [ -122.38333615741675, 37.720351774011149 ], [ -122.383322539304771, 37.720360232492368 ], [ -122.383310275938157, 37.720353904619685 ], [ -122.383304777801996, 37.720341631382666 ], [ -122.38331139553371, 37.720329851172949 ], [ -122.383307625413451, 37.720317550583985 ], [ -122.383293624653192, 37.720310906846613 ], [ -122.383277974162851, 37.720307380041632 ], [ -122.383265710124405, 37.720301052449905 ], [ -122.383253377195246, 37.720291978489243 ], [ -122.38324619420213, 37.720281449010265 ], [ -122.383240704778117, 37.720269518996041 ], [ -122.38324039171458, 37.720257162862467 ], [ -122.383243535008134, 37.72024475147218 ], [ -122.383250135348419, 37.720232284813868 ], [ -122.383254981599535, 37.720218816377724 ], [ -122.383258090442638, 37.720205031803125 ], [ -122.38325945354886, 37.720190588682506 ], [ -122.383259097001115, 37.720176516419151 ], [ -122.383255283408985, 37.720162499423914 ], [ -122.383249759553038, 37.720149196500621 ], [ -122.3832425157008, 37.720136264439603 ], [ -122.383233560549201, 37.720124046466523 ], [ -122.38322290383195, 37.720112885790329 ], [ -122.383210553208443, 37.720103125653154 ], [ -122.383196395976469, 37.720090304111586 ], [ -122.383073889931538, 37.72003217363779 ], [ -122.382849809825458, 37.71992313205017 ], [ -122.382825447811499, 37.719916997234385 ], [ -122.38279933973088, 37.719910203866348 ], [ -122.382774952002876, 37.719903039905788 ], [ -122.382750537499561, 37.719894845998688 ], [ -122.382727834641599, 37.719885937725351 ], [ -122.382703394420673, 37.719876714399525 ], [ -122.382680656108263, 37.719866433224148 ], [ -122.382657909806966, 37.719855809081899 ], [ -122.382635145779759, 37.719844498488762 ], [ -122.382614092714974, 37.719832473817299 ], [ -122.382593030963804, 37.71982010591605 ], [ -122.382571951833512, 37.71980705155903 ], [ -122.382552583665785, 37.719793283125171 ], [ -122.382533206466661, 37.719779171467643 ], [ -122.382517347496844, 37.719767407137013 ], [ -122.382329598519163, 37.719659157154716 ], [ -122.382140156862491, 37.71955230738498 ], [ -122.382084189621324, 37.71952710586983 ], [ -122.382026520507765, 37.719502961888537 ], [ -122.382009045965773, 37.719495686772042 ], [ -122.381991562743806, 37.719488068701423 ], [ -122.381975799169183, 37.719480079789612 ], [ -122.381960018217541, 37.719471404423579 ], [ -122.381944228233777, 37.719462385834824 ], [ -122.381928430255144, 37.719453024006853 ], [ -122.381912623244801, 37.719443318956195 ], [ -122.381898535881675, 37.719433243065936 ], [ -122.381884431142637, 37.719422480721789 ], [ -122.381872072119776, 37.719412377217125 ], [ -122.381859773582747, 37.719404676299234 ], [ -122.381847484429258, 37.719397318595092 ], [ -122.381833501358983, 37.719391361409976 ], [ -122.381802095947549, 37.719380188981518 ], [ -122.381786358477399, 37.719373229447925 ], [ -122.381770594949188, 37.719365240508537 ], [ -122.381756533687849, 37.719356194279435 ], [ -122.38174418338258, 37.719346433987333 ], [ -122.381731807013125, 37.719335644015629 ], [ -122.381721141599613, 37.719324139981623 ], [ -122.381712186795909, 37.719311921891311 ], [ -122.381704943292732, 37.719298989734028 ], [ -122.381695910985357, 37.719283682596497 ], [ -122.381688693554523, 37.719271780116451 ], [ -122.381681484814919, 37.719260220862054 ], [ -122.381663628063038, 37.719237844020014 ], [ -122.381645788699373, 37.719216153627443 ], [ -122.381624527445553, 37.719195891351333 ], [ -122.381612168150028, 37.71918578782455 ], [ -122.381601529187748, 37.719175313452254 ], [ -122.381592592151165, 37.719163782073863 ], [ -122.381583646069373, 37.719151906924999 ], [ -122.381576411292528, 37.719139317985587 ], [ -122.381570896501387, 37.71912635820749 ], [ -122.381567092315478, 37.719112684375858 ], [ -122.381559735915829, 37.719095290544253 ], [ -122.38155422912088, 37.719082673727875 ], [ -122.381548731721296, 37.719070400675434 ], [ -122.381541505639575, 37.719058154685285 ], [ -122.38153600789127, 37.719045881363151 ], [ -122.38150713837662, 37.718998271399208 ], [ -122.381498201369013, 37.718986739738739 ], [ -122.381490992686665, 37.71897518047215 ], [ -122.381473118684809, 37.718952117147957 ], [ -122.381464190375866, 37.718940928710964 ], [ -122.381455270757456, 37.718930083499401 ], [ -122.381446342115154, 37.718918895341112 ], [ -122.38143742284764, 37.718908050122621 ], [ -122.381416144356564, 37.718887101081044 ], [ -122.381407233439191, 37.718876599091892 ], [ -122.381385972354465, 37.718856337046212 ], [ -122.381373613486502, 37.71884623321376 ], [ -122.381352369787336, 37.718826657339626 ], [ -122.381327686843449, 37.718807823394606 ], [ -122.38131535405293, 37.718798749234402 ], [ -122.38129421463421, 37.718783292338109 ], [ -122.381275038076012, 37.718777074392875 ], [ -122.381252413579233, 37.718771255149179 ], [ -122.381231552150709, 37.71876678120416 ], [ -122.381208979780382, 37.718763021309094 ], [ -122.381188161789552, 37.718760263487212 ], [ -122.381165632510005, 37.718758219720186 ], [ -122.381143129982078, 37.718757205616299 ], [ -122.381106826627473, 37.718757441991308 ], [ -122.381084384557454, 37.718758830464949 ], [ -122.380998020790415, 37.718762269763332 ], [ -122.380954864960344, 37.718765019067327 ], [ -122.380911726497644, 37.718768454807901 ], [ -122.380818588404082, 37.718777496255818 ], [ -122.380801331270163, 37.71877880161415 ], [ -122.380782345824386, 37.718780134839598 ], [ -122.380765070988232, 37.718780754294905 ], [ -122.380746051141955, 37.718780714329604 ], [ -122.380728750590777, 37.7187803038209 ], [ -122.380709712691541, 37.718779577682966 ], [ -122.380692386433651, 37.718778137484804 ], [ -122.380673314144289, 37.718776038430633 ], [ -122.380655961489964, 37.718773568553999 ], [ -122.380638600152778, 37.718770755448638 ], [ -122.380621221455968, 37.718767256162863 ], [ -122.380603834063052, 37.71876341309914 ], [ -122.380569024561694, 37.718754354608322 ], [ -122.380515107712881, 37.718741824128088 ], [ -122.380459506326716, 37.71873103733904 ], [ -122.380442119303254, 37.718727194520504 ], [ -122.380426442886844, 37.718722637662651 ], [ -122.380409012106568, 37.718717078713624 ], [ -122.380393292279919, 37.718710805720228 ], [ -122.380374046360402, 37.718701842093019 ], [ -122.380356511396428, 37.718692164421441 ], [ -122.38034421348118, 37.718684463338931 ], [ -122.380331889520718, 37.718675732576422 ], [ -122.380321267831235, 37.718665944545648 ], [ -122.380312339384403, 37.718654756026375 ], [ -122.380301657268987, 37.718642565404615 ], [ -122.380291009195389, 37.71863174769787 ], [ -122.380280353133841, 37.718620586752877 ], [ -122.380271407679629, 37.71860871177239 ], [ -122.380262453207322, 37.71859649384507 ], [ -122.380255227383529, 37.718584247775084 ], [ -122.380248018933486, 37.718572688431699 ], [ -122.380240793121359, 37.718560442635365 ], [ -122.380231848026369, 37.718548567646252 ], [ -122.38022120032204, 37.718537749927506 ], [ -122.380208832990292, 37.718527303020664 ], [ -122.380196491707878, 37.718517885791279 ], [ -122.380182448162131, 37.718509525825596 ], [ -122.380168421983186, 37.718501852310723 ], [ -122.380152693540609, 37.718495236058757 ], [ -122.380136999827513, 37.718489992709728 ], [ -122.380119595168225, 37.718485463396448 ], [ -122.380103953548627, 37.718482279400568 ], [ -122.380086617999027, 37.718480495897992 ], [ -122.380053754382303, 37.718479990320766 ], [ -122.380034708231022, 37.718478920841939 ], [ -122.380017337959387, 37.718475764424113 ], [ -122.37999994233742, 37.718471578313881 ], [ -122.379982511302273, 37.718466019307044 ], [ -122.379966765867707, 37.718458716572137 ], [ -122.379950994048144, 37.718450384161848 ], [ -122.379936915819798, 37.718440651261687 ], [ -122.379924539863453, 37.718429861098564 ], [ -122.379912120161947, 37.71841735480826 ], [ -122.379903227227103, 37.718407539426167 ], [ -122.379890903011727, 37.718398808348084 ], [ -122.379878596858461, 37.718390763984829 ], [ -122.379866307723006, 37.718383406078345 ], [ -122.379852316321873, 37.718377105430825 ], [ -122.379838350963936, 37.718371834460527 ], [ -122.379822683339711, 37.718367620748374 ], [ -122.379808770066504, 37.718364409132271 ], [ -122.379793145500187, 37.71836191155316 ], [ -122.379777565026231, 37.718361130092418 ], [ -122.379746464146947, 37.718361969759833 ], [ -122.379729146346136, 37.71836087292629 ], [ -122.379715198352471, 37.718356288119374 ], [ -122.379701189609946, 37.718349301001297 ], [ -122.379690576729757, 37.718339856139472 ], [ -122.379683377077711, 37.718328640261959 ], [ -122.3796778796832, 37.718316366577113 ], [ -122.37967239098387, 37.718304436667452 ], [ -122.37966348037574, 37.718293934270854 ], [ -122.379652884528355, 37.718285176138238 ], [ -122.379638884477515, 37.718278531964394 ], [ -122.379623199871318, 37.718273631767524 ], [ -122.379609182480792, 37.718266301686668 ], [ -122.379598560938021, 37.718256513315531 ], [ -122.379589606611773, 37.718244295061801 ], [ -122.379568259413119, 37.718220600422896 ], [ -122.379555875206677, 37.718209466714256 ], [ -122.379543499344152, 37.718198676510717 ], [ -122.3795311408429, 37.718188572758478 ], [ -122.379517062719074, 37.718178839807734 ], [ -122.379503001963329, 37.71816979358254 ], [ -122.379487230257041, 37.718161461109773 ], [ -122.379473169494304, 37.718152414331819 ], [ -122.379462538975446, 37.718142283276592 ], [ -122.3794518917869, 37.718131465482102 ], [ -122.37944294651696, 37.718119590163212 ], [ -122.379435729559873, 37.718107687542933 ], [ -122.379424700187641, 37.718081767792796 ], [ -122.379422659465391, 37.718069439219867 ], [ -122.379417153461716, 37.718056822570574 ], [ -122.379409936521796, 37.718044920223178 ], [ -122.37940101731057, 37.718034074854529 ], [ -122.379390386804573, 37.718023943243416 ], [ -122.379378072089409, 37.71801555560107 ], [ -122.37936745929791, 37.718006110709609 ], [ -122.379346164299292, 37.71798447511302 ], [ -122.379333796843824, 37.717974028393506 ], [ -122.379323167053869, 37.717963897039802 ], [ -122.379310817292421, 37.717954136215845 ], [ -122.379298475880205, 37.717944719171612 ], [ -122.379286143826207, 37.717935644792249 ], [ -122.379272083137607, 37.717926598264555 ], [ -122.379261435662016, 37.717915780457993 ], [ -122.379250796867041, 37.717905305876819 ], [ -122.379240166752524, 37.717895174521026 ], [ -122.379229553995728, 37.71788572961696 ], [ -122.379217221621232, 37.717876655510366 ], [ -122.379203178306753, 37.717868295427088 ], [ -122.379190871970053, 37.717860250996829 ], [ -122.379175109041569, 37.717852261708209 ], [ -122.379164469922188, 37.717841787124641 ], [ -122.379152137908591, 37.717832713005684 ], [ -122.379138137994644, 37.717826069046431 ], [ -122.379125875056587, 37.717819740741156 ], [ -122.379111857793731, 37.717812410326019 ], [ -122.379101270749828, 37.717803995094904 ], [ -122.379090667046114, 37.717794893399073 ], [ -122.379078291320113, 37.717784103145959 ], [ -122.379062641223001, 37.717780576059667 ], [ -122.379047051849412, 37.717779451006763 ], [ -122.379033086660868, 37.717774179940491 ], [ -122.379022465271206, 37.717764391791221 ], [ -122.379016976365222, 37.717752461580901 ], [ -122.379009785541115, 37.717741588612981 ], [ -122.378990609802273, 37.71773537083854 ], [ -122.378971451059471, 37.717729838970079 ], [ -122.378953994246785, 37.717723250131236 ], [ -122.378936512100381, 37.717715631599603 ], [ -122.37891900323838, 37.7177069833972 ], [ -122.378903197337848, 37.717697277934541 ], [ -122.37888387343952, 37.717685225304997 ], [ -122.378864602279094, 37.717675231470452 ], [ -122.378847076429409, 37.717665896799019 ], [ -122.378827830621148, 37.717656932923234 ], [ -122.378808602859749, 37.717648655486073 ], [ -122.378778909235265, 37.717636768235245 ], [ -122.378761435795425, 37.717629492629342 ], [ -122.378726453548339, 37.717613569064291 ], [ -122.378708953409784, 37.717605264056957 ], [ -122.378693173583002, 37.717596588245186 ], [ -122.378675665123012, 37.717587940000953 ], [ -122.378659867262996, 37.717578577742898 ], [ -122.37864235048211, 37.71756958626176 ], [ -122.378594931951909, 37.717540469771926 ], [ -122.378579117109084, 37.717530421044614 ], [ -122.3785509613637, 37.717510954911866 ], [ -122.378491401169214, 37.717480315188894 ], [ -122.37843182436778, 37.717448988971746 ], [ -122.37837222957846, 37.717416976282458 ], [ -122.378314346472195, 37.717384249540096 ], [ -122.378221298936523, 37.717328391303198 ], [ -122.378163571723618, 37.717301842568197 ], [ -122.378104150956304, 37.717276694266459 ], [ -122.37804646718476, 37.717251861606229 ], [ -122.377987080837755, 37.717228086156695 ], [ -122.377882351983473, 37.717188895399786 ], [ -122.377451299846371, 37.716962278497022 ], [ -122.377409136350764, 37.716935824700762 ], [ -122.377366990222555, 37.71691005734241 ], [ -122.37732312451665, 37.716884660739723 ], [ -122.37727928449992, 37.716860293805809 ], [ -122.377192593728324, 37.716850687700834 ], [ -122.377174053804566, 37.716801195276375 ], [ -122.377135442741164, 37.716778462058606 ], [ -122.377117882304205, 37.716767754227781 ], [ -122.377098594291084, 37.716757073924335 ], [ -122.377077577665531, 37.716746421163919 ], [ -122.377058306652586, 37.716736427312505 ], [ -122.377035544432545, 37.716725115631768 ], [ -122.377004002182673, 37.716708449744992 ], [ -122.376974170891216, 37.716691070132001 ], [ -122.376942602330686, 37.716673374829035 ], [ -122.376912754080166, 37.716655308741679 ], [ -122.376882896832043, 37.716636899425616 ], [ -122.376853030939387, 37.716618147149923 ], [ -122.376824875984553, 37.716598680327252 ], [ -122.376794983771219, 37.716578898087818 ], [ -122.376766811521605, 37.716558745072504 ], [ -122.376740359241694, 37.716538221557123 ], [ -122.376712169684112, 37.71651738180077 ], [ -122.376685699750382, 37.716496171550673 ], [ -122.376645065755298, 37.716461795731668 ], [ -122.376629260077664, 37.716452090242093 ], [ -122.376613463055463, 37.71644272742784 ], [ -122.376597691693803, 37.716434394571444 ], [ -122.376583692278402, 37.716427750581751 ], [ -122.376567912942647, 37.716419074209107 ], [ -122.376553835548819, 37.716409341176096 ], [ -122.376541451404279, 37.716398207158385 ], [ -122.376530778896253, 37.716386359416987 ], [ -122.376520053711957, 37.71637245232575 ], [ -122.376509415869748, 37.716361977488937 ], [ -122.376498794675413, 37.716352189390022 ], [ -122.37648645456278, 37.716342771488634 ], [ -122.376474122785964, 37.71633369736724 ], [ -122.37646180833417, 37.716325309423283 ], [ -122.376449502196934, 37.716317264435602 ], [ -122.376435485481252, 37.716309933700259 ], [ -122.376365488584341, 37.716276712265071 ], [ -122.376304211373494, 37.7162464421762 ], [ -122.376232373365212, 37.716208786249759 ], [ -122.376216559470649, 37.716198737197637 ], [ -122.376202464831138, 37.716188317394391 ], [ -122.376190080782948, 37.716177183613944 ], [ -122.37617768876666, 37.716165706594467 ], [ -122.376165279082414, 37.716153543125806 ], [ -122.376154588659077, 37.716141009182088 ], [ -122.3761438902538, 37.71612813145051 ], [ -122.376134902445671, 37.716114540017813 ], [ -122.376127616916719, 37.716099891652185 ], [ -122.376121444571496, 37.716060846115461 ], [ -122.376121115383214, 37.71604780350129 ], [ -122.376125312585643, 37.716008593078577 ], [ -122.376128439914226, 37.715995495685426 ], [ -122.376133304145654, 37.715982713442855 ], [ -122.376143049597545, 37.715957835965099 ], [ -122.376159466184788, 37.715923238019322 ], [ -122.376179356242673, 37.715889271474957 ], [ -122.376189309582273, 37.715872631433676 ], [ -122.376201000523864, 37.715856307079349 ], [ -122.37621269978483, 37.715840326230605 ], [ -122.376226135941366, 37.715824660529996 ], [ -122.376239589425921, 37.715809681555776 ], [ -122.376254771155516, 37.715794675051384 ], [ -122.376271646475075, 37.715778268109382 ], [ -122.376283440655172, 37.715766062477954 ], [ -122.376310486193518, 37.715741596141669 ], [ -122.376322263732177, 37.715728704316476 ], [ -122.376334049571057, 37.715716155173126 ], [ -122.376345826755966, 37.715703263351031 ], [ -122.376369363764837, 37.715676792426088 ], [ -122.376381123602442, 37.715663213872432 ], [ -122.376401186771318, 37.715636111823081 ], [ -122.376411209340475, 37.715622217575891 ], [ -122.376441252415276, 37.715579505126925 ], [ -122.376454523861156, 37.715557318367054 ], [ -122.37646974881784, 37.715544027967823 ], [ -122.376484964758959, 37.715530394345414 ], [ -122.376515380332151, 37.715502440624682 ], [ -122.376528859694105, 37.715488491296732 ], [ -122.376542321721558, 37.715473855513849 ], [ -122.376557511986263, 37.71545919219632 ], [ -122.37656924576747, 37.715444584217934 ], [ -122.376582699107203, 37.715429604929049 ], [ -122.37659614379038, 37.715414282961056 ], [ -122.376619576292114, 37.715383693270141 ], [ -122.376631284392559, 37.715368055325236 ], [ -122.376654682556946, 37.715336092989432 ], [ -122.376664653392297, 37.715320139354375 ], [ -122.376682927469105, 37.715290662203351 ], [ -122.376687808896733, 37.715278566664409 ], [ -122.376690936088593, 37.715265468980213 ], [ -122.376688878566242, 37.715252453901009 ], [ -122.376681679659114, 37.715241237559951 ], [ -122.376662556398827, 37.715237078495178 ], [ -122.37664688961523, 37.715232864358583 ], [ -122.376639690716317, 37.715221648014925 ], [ -122.376644563481292, 37.715209209250951 ], [ -122.376652953380841, 37.715199118279322 ], [ -122.376664860393532, 37.715191374275555 ], [ -122.376687422784229, 37.715194791816721 ], [ -122.376687067504449, 37.715180719522259 ], [ -122.376702422323845, 37.715172577492581 ], [ -122.376716031573253, 37.715163776542923 ], [ -122.376729623488316, 37.715154289138269 ], [ -122.376741469833547, 37.715144142814424 ], [ -122.376755035744793, 37.715133625726743 ], [ -122.37676513617842, 37.715122820763163 ], [ -122.376776948189416, 37.715111301248839 ], [ -122.376787014292304, 37.715099123096479 ], [ -122.376797028396751, 37.715084885583089 ], [ -122.376822345285078, 37.715060446663202 ], [ -122.376847653490671, 37.715035664511078 ], [ -122.376871224781212, 37.715010566664418 ], [ -122.376894778723212, 37.714984782359565 ], [ -122.376916604418071, 37.714959025588243 ], [ -122.376960238083626, 37.714906825585267 ], [ -122.376997080800365, 37.714859540886621 ], [ -122.377010663964072, 37.714849710496978 ], [ -122.37702423844344, 37.714839536329912 ], [ -122.377036076031359, 37.714829046749252 ], [ -122.377059716529033, 37.714806694677584 ], [ -122.377071528105475, 37.714795175413244 ], [ -122.377101725785408, 37.714758640881662 ], [ -122.377110046572668, 37.71474580378316 ], [ -122.37712317899306, 37.714718125317994 ], [ -122.377131300077295, 37.714697394009583 ], [ -122.377141149035509, 37.714676635164444 ], [ -122.377151007346924, 37.714656219534078 ], [ -122.377160873636086, 37.714636147415113 ], [ -122.377172468820078, 37.71461604719299 ], [ -122.377182335436814, 37.714595974791997 ], [ -122.377193938592001, 37.714576218079934 ], [ -122.377207270307977, 37.714556433818551 ], [ -122.377218882809402, 37.714537020319568 ], [ -122.377232223179533, 37.714517579281953 ], [ -122.37725892123467, 37.71447938365538 ], [ -122.377277350893181, 37.714456084488674 ], [ -122.377283856371662, 37.71443984265948 ], [ -122.377292090065524, 37.714423573286055 ], [ -122.377300340753251, 37.714407990645519 ], [ -122.377310329000593, 37.714392723126743 ], [ -122.377322053797371, 37.714377771844191 ], [ -122.37733379557335, 37.714363506744739 ], [ -122.377347274568308, 37.714349557046042 ], [ -122.377360770908837, 37.714336294348335 ], [ -122.377376004460587, 37.714323346775984 ], [ -122.37739125500535, 37.714311085935115 ], [ -122.37740648820791, 37.714298138638888 ], [ -122.377421729728198, 37.714285534572831 ], [ -122.377436980603278, 37.714273273720465 ], [ -122.377453959342105, 37.714260985325403 ], [ -122.377469218191379, 37.7142490679811 ], [ -122.377486214595891, 37.714237465754614 ], [ -122.3775014911119, 37.714226234579385 ], [ -122.37751849583654, 37.714214975854986 ], [ -122.377549126867919, 37.714195602534218 ], [ -122.377599993609977, 37.714155991753785 ], [ -122.377650877623338, 37.714117066855323 ], [ -122.37770177893016, 37.714078828662608 ], [ -122.377754425395366, 37.714041249630476 ], [ -122.377808826358589, 37.714004672148562 ], [ -122.377878556048842, 37.713958923045773 ], [ -122.37803805055384, 37.713839292710567 ], [ -122.378311443052539, 37.713642992366779 ], [ -122.378326710994585, 37.713631417851289 ], [ -122.37834196991345, 37.713619500112657 ], [ -122.378355483282817, 37.713606923478181 ], [ -122.378367251103185, 37.713593687948453 ], [ -122.378379009900755, 37.713580109196364 ], [ -122.378389032514391, 37.713566214765343 ], [ -122.378399037086837, 37.713551633891143 ], [ -122.378409033673563, 37.71353670977841 ], [ -122.378415564843792, 37.713521497564329 ], [ -122.378423815534646, 37.713505914562745 ], [ -122.378428575143985, 37.713489014049621 ], [ -122.378438562344869, 37.713473746443995 ], [ -122.378446830724755, 37.713458850163093 ], [ -122.378458563459517, 37.713444241448215 ], [ -122.378468586039958, 37.713430347010117 ], [ -122.378482073340123, 37.713416740955331 ], [ -122.378495569294984, 37.713403477576485 ], [ -122.37854455933747, 37.713358058816908 ], [ -122.378586757641585, 37.713317555466887 ], [ -122.378660976502815, 37.71324426535471 ], [ -122.378686622123027, 37.713232868634442 ], [ -122.378712250040763, 37.713220785460798 ], [ -122.378736140733594, 37.713208386350885 ], [ -122.378760006099483, 37.713194958094263 ], [ -122.378783853401998, 37.713180842841368 ], [ -122.378805955855427, 37.713166068959936 ], [ -122.378828040611339, 37.71315060890111 ], [ -122.378850116669099, 37.713134805062303 ], [ -122.378897499585833, 37.713094218893794 ], [ -122.378902259061135, 37.713077318360412 ], [ -122.378913939946415, 37.713060650508481 ], [ -122.378933827973057, 37.713026683209065 ], [ -122.378963633962542, 37.712974702985242 ], [ -122.3789800308884, 37.712939418456834 ], [ -122.378988220659366, 37.712921432553166 ], [ -122.378994682251076, 37.712903474492308 ], [ -122.379002872021474, 37.712885488862113 ], [ -122.379010931305004, 37.712862354837071 ], [ -122.37901923419868, 37.712848831146545 ], [ -122.379027554095487, 37.712835993914254 ], [ -122.379037619176003, 37.712823815570687 ], [ -122.379047693627413, 37.712811980716452 ], [ -122.379059495902879, 37.712800118022507 ], [ -122.37908614901481, 37.712760205563576 ], [ -122.379114530283019, 37.712720265802361 ], [ -122.379142928880469, 37.712681012761955 ], [ -122.379173064293639, 37.712642075095069 ], [ -122.379203208344947, 37.71260348037233 ], [ -122.379256878689148, 37.712538071449124 ], [ -122.379268637502918, 37.712524492600444 ], [ -122.379278650439701, 37.712510254875795 ], [ -122.379298659638835, 37.712481092959536 ], [ -122.379306927729047, 37.71246619634131 ], [ -122.379315186793136, 37.712450956501357 ], [ -122.379321709005382, 37.712435401007788 ], [ -122.37932825724657, 37.712420875193772 ], [ -122.379336368787747, 37.712399800499135 ], [ -122.379346199816894, 37.712378355003281 ], [ -122.379365879212997, 37.712336150462143 ], [ -122.379377455409823, 37.712315364122553 ], [ -122.379389040962025, 37.71229492072279 ], [ -122.379400617477728, 37.712274133826106 ], [ -122.379412211349106, 37.712254033656116 ], [ -122.37943383579011, 37.712220382468807 ], [ -122.379443961457966, 37.712210606401335 ], [ -122.379452350984806, 37.712200515220019 ], [ -122.379460722794221, 37.71218973704115 ], [ -122.379467357765066, 37.712178643485373 ], [ -122.379472247213258, 37.71216689105173 ], [ -122.379480610345027, 37.712155769919313 ], [ -122.379490683937206, 37.712143934762395 ], [ -122.379499030060259, 37.712132127444399 ], [ -122.379507358465077, 37.712119633128815 ], [ -122.379513950039424, 37.712106823711594 ], [ -122.3795205329195, 37.712093670518172 ], [ -122.379525370285052, 37.712079858722241 ], [ -122.379530172590734, 37.712064674025001 ], [ -122.379539812945708, 37.712035677519864 ], [ -122.379548106627041, 37.712021810569162 ], [ -122.379556408637853, 37.712008286850036 ], [ -122.379568185022265, 37.711995394692678 ], [ -122.379580030469796, 37.711985247803753 ], [ -122.379591867242681, 37.711974757961542 ], [ -122.37960195849513, 37.711963609242559 ], [ -122.379612041066054, 37.71195211729605 ], [ -122.379622114962288, 37.711940282396583 ], [ -122.379630451657874, 37.711928131304077 ], [ -122.379638780377292, 37.711915637522473 ], [ -122.379645371896999, 37.711902827548315 ], [ -122.379650226245587, 37.711889702480249 ], [ -122.379656800410586, 37.711876206326664 ], [ -122.379659918603238, 37.711862765324433 ], [ -122.379666440684801, 37.711847209535733 ], [ -122.379678077818568, 37.711828825746096 ], [ -122.379688004133726, 37.711811155438397 ], [ -122.37969966729311, 37.7117938013265 ], [ -122.379726467250435, 37.711759723844118 ], [ -122.379741621412023, 37.711743687200766 ], [ -122.379749992782422, 37.711732909006074 ], [ -122.379758304094665, 37.711719728487729 ], [ -122.379768369250002, 37.711707550074067 ], [ -122.379780179921312, 37.711696030807062 ], [ -122.379792016612967, 37.71168554066967 ], [ -122.379807344332391, 37.711676368550826 ], [ -122.379822698086315, 37.711668226109936 ], [ -122.379838086216196, 37.711661456853747 ], [ -122.379855237891832, 37.711656032360494 ], [ -122.379872414919589, 37.711651637830329 ], [ -122.379889557917664, 37.711645870380011 ], [ -122.379908402687462, 37.71163904594512 ], [ -122.379923765095569, 37.711631246443076 ], [ -122.379940837953981, 37.711622733183106 ], [ -122.379956157314652, 37.71161321808723 ], [ -122.379969722126845, 37.711602700623473 ], [ -122.379983278248133, 37.711591839656897 ], [ -122.37999507983497, 37.71157997687245 ], [ -122.380006864748808, 37.711567427622455 ], [ -122.380016912482191, 37.711554562733966 ], [ -122.380025223388486, 37.711541382476511 ], [ -122.380036947182674, 37.711526430642408 ], [ -122.38004519730535, 37.711510847247801 ], [ -122.380061679847557, 37.711478994558078 ], [ -122.380068175776742, 37.711462409340825 ], [ -122.380072943900714, 37.711445851702329 ], [ -122.380077702996331, 37.711428950842468 ], [ -122.380080724916397, 37.711411734346029 ], [ -122.380091216381629, 37.711348044590686 ], [ -122.38010580681599, 37.711241368202799 ], [ -122.380111373878989, 37.711188057730013 ], [ -122.380119034347572, 37.71108080577428 ], [ -122.380121136424947, 37.711027206969042 ], [ -122.38012151036925, 37.71097363602329 ], [ -122.380118923524051, 37.71087135474918 ], [ -122.380110379014539, 37.710806938200108 ], [ -122.380106523093488, 37.71079120494867 ], [ -122.380104387317047, 37.710775100874208 ], [ -122.380100531751495, 37.710759367891555 ], [ -122.380096667493106, 37.710743291132871 ], [ -122.380092811923888, 37.710727557875288 ], [ -122.380087228225392, 37.710711852202415 ], [ -122.380081653209785, 37.710696489755954 ], [ -122.380077797646152, 37.710680756497752 ], [ -122.380070494504992, 37.710665421635404 ], [ -122.38005934448995, 37.710634696740314 ], [ -122.380050209064109, 37.710615270740703 ], [ -122.380041299331083, 37.710604768634425 ], [ -122.380032397935238, 37.710594609759674 ], [ -122.38002177779228, 37.710584821958371 ], [ -122.38001116562711, 37.710575376844702 ], [ -122.379989959370192, 37.710557173605956 ], [ -122.379977637144137, 37.710548442789609 ], [ -122.379965323255277, 37.71054005520417 ], [ -122.379940729859655, 37.710524652941764 ], [ -122.379928442370812, 37.710517295301628 ], [ -122.379914435085283, 37.710510308200178 ], [ -122.379886455233503, 37.710497706624587 ], [ -122.379872473994169, 37.710491749198276 ], [ -122.379856825041841, 37.710488221944338 ], [ -122.379827508004084, 37.710491093407484 ], [ -122.379813839223587, 37.710497492136078 ], [ -122.379798416283975, 37.71050288903816 ], [ -122.379782897858064, 37.710504509895109 ], [ -122.379767309667471, 37.710503385490924 ], [ -122.379749941954842, 37.710500228744046 ], [ -122.379735969404862, 37.71049461452828 ], [ -122.379723664231022, 37.710486570144241 ], [ -122.37971305247035, 37.710477125272625 ], [ -122.37970236260378, 37.710464591359482 ], [ -122.37969344425926, 37.710453745999907 ], [ -122.379682806125587, 37.710443271450828 ], [ -122.379672177364711, 37.710433140116493 ], [ -122.379661556600993, 37.710423352293517 ], [ -122.379649225750256, 37.710414277941311 ], [ -122.379636903242243, 37.710405547094624 ], [ -122.379624598093869, 37.71039750270014 ], [ -122.379610573502859, 37.710389829108948 ], [ -122.379596566278167, 37.710382842244165 ], [ -122.379582567720405, 37.710376198055286 ], [ -122.379566867083199, 37.710370611396797 ], [ -122.37955117512638, 37.710365367962943 ], [ -122.379535500182058, 37.71036081098601 ], [ -122.379504186047228, 37.710353069916337 ], [ -122.379490239583589, 37.71034848562612 ], [ -122.37947454763686, 37.710343242182041 ], [ -122.379460575130224, 37.710337627658895 ], [ -122.379444865487201, 37.710331697762861 ], [ -122.379430875636984, 37.710325397057247 ], [ -122.379416868434376, 37.710318409896438 ], [ -122.379404589708813, 37.710311395428178 ], [ -122.379390565156754, 37.710303721810703 ], [ -122.379378268729113, 37.710296020617108 ], [ -122.379364226828372, 37.710287660542946 ], [ -122.379351913051934, 37.710279272893054 ], [ -122.379341310038157, 37.710270170939822 ], [ -122.379328978913207, 37.71026109683396 ], [ -122.379307738212361, 37.710241520839027 ], [ -122.37929710884022, 37.710231389481542 ], [ -122.379288208275057, 37.710221230264345 ], [ -122.379275772698335, 37.710208037437084 ], [ -122.379261548615801, 37.710192469588307 ], [ -122.379247341892423, 37.710177588191321 ], [ -122.379231407401903, 37.710162734359407 ], [ -122.379215489925031, 37.710148566984365 ], [ -122.379199589806944, 37.710135086060731 ], [ -122.379181961577132, 37.710121632706517 ], [ -122.379164350706091, 37.710108865803193 ], [ -122.379145029076398, 37.710096812921883 ], [ -122.379125716135945, 37.710085103538738 ], [ -122.379106411517995, 37.710073736835547 ], [ -122.379081871200697, 37.710060393742431 ], [ -122.379067829377789, 37.710052033632635 ], [ -122.379053770213616, 37.710042987342149 ], [ -122.37904143915452, 37.710033912931294 ], [ -122.379027362638922, 37.710024179909425 ], [ -122.379015013896463, 37.710014419322256 ], [ -122.379004376612457, 37.710003944700169 ], [ -122.378992010871215, 37.709993497651439 ], [ -122.378981364572482, 37.709982679805925 ], [ -122.378970709601532, 37.709971518732665 ], [ -122.378961774072408, 37.709959986863232 ], [ -122.378943885326493, 37.709936236674181 ], [ -122.378934932808065, 37.709924018618082 ], [ -122.378927716720895, 37.709912115676609 ], [ -122.378920448592652, 37.709898153648354 ], [ -122.378914899558595, 37.709883820830655 ], [ -122.378911070654652, 37.709869117207219 ], [ -122.378908969518022, 37.709854386021547 ], [ -122.378906859361621, 37.709839311614516 ], [ -122.37890825816865, 37.709826241422213 ], [ -122.378906182713109, 37.709812539922396 ], [ -122.378898593625834, 37.709785878500057 ], [ -122.37889311469489, 37.709774291484649 ], [ -122.378882494466538, 37.709764503310346 ], [ -122.378852995161623, 37.709760166773435 ], [ -122.378837381455881, 37.709758012285448 ], [ -122.378821663310447, 37.709751739078932 ], [ -122.378811043440322, 37.709741950892628 ], [ -122.378800232043204, 37.709724611725996 ], [ -122.378791192829524, 37.709708961390213 ], [ -122.378764047778134, 37.709660979621674 ], [ -122.378756718985287, 37.709644614994865 ], [ -122.378747662435089, 37.709628277927287 ], [ -122.378733004866319, 37.709595548670947 ], [ -122.378727395179027, 37.709578813530399 ], [ -122.378716350309503, 37.709552206945055 ], [ -122.378707440892299, 37.709541704736111 ], [ -122.378700242233577, 37.709530488508285 ], [ -122.378694754332813, 37.709518558261863 ], [ -122.378690976843657, 37.709505914002577 ], [ -122.378687217401875, 37.709493956460406 ], [ -122.378676596888084, 37.709484167998021 ], [ -122.378662607269405, 37.709477867474909 ], [ -122.378646941924686, 37.709473653320337 ], [ -122.378632917608854, 37.70946597961165 ], [ -122.378620586358139, 37.709456905436006 ], [ -122.37861166863793, 37.709446059987314 ], [ -122.378602715880561, 37.709433841635963 ], [ -122.378598947091831, 37.709421540874992 ], [ -122.378593433533567, 37.709408580662952 ], [ -122.378584489118467, 37.709396705817099 ], [ -122.378573843310107, 37.709385887928249 ], [ -122.378559775644788, 37.709376497801813 ], [ -122.378545751356285, 37.709368824082631 ], [ -122.378531770436666, 37.709362866496143 ], [ -122.37851595734179, 37.709352817747309 ], [ -122.378503583104418, 37.709342027419368 ], [ -122.378491191524603, 37.709330550636324 ], [ -122.378478773584177, 37.709318044176833 ], [ -122.378469795190981, 37.709304796129004 ], [ -122.3784625272081, 37.709290834071133 ], [ -122.378455250555135, 37.709276528785921 ], [ -122.378449692984333, 37.709261852718043 ], [ -122.378447583629097, 37.709246778290328 ], [ -122.37844546525632, 37.709231360641176 ], [ -122.378445040296995, 37.709214542798215 ], [ -122.378446447493673, 37.70920181556793 ], [ -122.378445805707855, 37.709176416778014 ], [ -122.378447212565007, 37.70916368982774 ], [ -122.378446882999313, 37.709150647205846 ], [ -122.378444834357168, 37.709137975366076 ], [ -122.378444192579394, 37.709112576850501 ], [ -122.378433947648276, 37.709049217403461 ], [ -122.378430178900032, 37.709036916361775 ], [ -122.378428130263899, 37.709024244521487 ], [ -122.378424361863509, 37.709011943474067 ], [ -122.378420584791698, 37.708999299199597 ], [ -122.378413047997185, 37.708974697103997 ], [ -122.378407551172273, 37.708962423896338 ], [ -122.378403791789637, 37.708950465794935 ], [ -122.37839829531363, 37.708938192581272 ], [ -122.37839280715248, 37.708926262050589 ], [ -122.378381883920852, 37.708904460882493 ], [ -122.37837105540082, 37.708886435220357 ], [ -122.37835849948857, 37.708868437105671 ], [ -122.378344223820761, 37.708850809781346 ], [ -122.378331693592017, 37.708833841349971 ], [ -122.378315707193991, 37.708816928035041 ], [ -122.378301466234504, 37.708800673613098 ], [ -122.378285505520822, 37.708784789980257 ], [ -122.378262511753192, 37.708764211389848 ], [ -122.378217043865007, 37.708743647822331 ], [ -122.378194318256277, 37.708733709264415 ], [ -122.378169882609328, 37.708724484976287 ], [ -122.378147174694149, 37.708715232583032 ], [ -122.378108766623569, 37.708700393880235 ], [ -122.378089549231376, 37.708692459277344 ], [ -122.378072043283993, 37.708683810925692 ], [ -122.378056239066638, 37.708674105341039 ], [ -122.378040425836915, 37.708664056532776 ], [ -122.378029762871009, 37.708652552139604 ], [ -122.378012273597136, 37.70864459051851 ], [ -122.377996469734569, 37.708634884645676 ], [ -122.37798069155609, 37.708626209006241 ], [ -122.377964922044868, 37.708617876317049 ], [ -122.377947441795172, 37.708610257633161 ], [ -122.377929987553088, 37.708603668352943 ], [ -122.377912541998256, 37.708597422846282 ], [ -122.3778951224499, 37.708592206743326 ], [ -122.377875983484813, 37.708587361142648 ], [ -122.37785687054604, 37.708583545768889 ], [ -122.377837783259466, 37.708580759529298 ], [ -122.377818705342307, 37.708578316777135 ], [ -122.377799653089951, 37.708576903708312 ], [ -122.37778062684724, 37.708576520317315 ], [ -122.377751275466451, 37.708578018636814 ], [ -122.37773407231694, 37.708581382915298 ], [ -122.377718632623825, 37.708586092812681 ], [ -122.377701481846131, 37.708591516991923 ], [ -122.377687821894156, 37.70859825842814 ], [ -122.377674179284952, 37.708605686591305 ], [ -122.377657141190483, 37.70861557244023 ], [ -122.377638365993562, 37.708625142614181 ], [ -122.377621302228775, 37.708633998771425 ], [ -122.37760422910678, 37.708642511984849 ], [ -122.377585411236822, 37.708650365729795 ], [ -122.377547740133352, 37.708664700862904 ], [ -122.377527150486301, 37.708670866291307 ], [ -122.377508279906351, 37.708676660947582 ], [ -122.377487664247838, 37.708681796688104 ], [ -122.377468768348663, 37.708686561646054 ], [ -122.377448126680292, 37.708690667698683 ], [ -122.377432642914897, 37.708693661434552 ], [ -122.377360540414671, 37.708713695820649 ], [ -122.377290182950702, 37.708734389078231 ], [ -122.37721985977025, 37.708756455207251 ], [ -122.377122130511736, 37.708788572304698 ], [ -122.377099960038464, 37.708800600058829 ], [ -122.377076061124569, 37.708812655354983 ], [ -122.377053899648615, 37.708825026321882 ], [ -122.377031746485883, 37.70883774051714 ], [ -122.376984053287501, 37.708865969789912 ], [ -122.376966919370915, 37.708872080046966 ], [ -122.376949742820514, 37.708876474429971 ], [ -122.37693425933503, 37.708879467820125 ], [ -122.376896466671624, 37.708888997566206 ], [ -122.376879298426118, 37.708893734896868 ], [ -122.376863901249948, 37.70890016082808 ], [ -122.376850267175342, 37.708907932397054 ], [ -122.376836667745323, 37.708917076323402 ], [ -122.376824822757797, 37.708927222935884 ], [ -122.376814748831492, 37.70893905787635 ], [ -122.376802877136896, 37.70894817426737 ], [ -122.376791014809598, 37.708957634422354 ], [ -122.376755452394264, 37.708987043484797 ], [ -122.376745335469863, 37.7089971622786 ], [ -122.376733490104598, 37.709007308612669 ], [ -122.376716755060258, 37.709029207270859 ], [ -122.376711908706653, 37.709042675731048 ], [ -122.376710535868128, 37.709056775574453 ], [ -122.37670739161139, 37.709069186817985 ], [ -122.37670251024899, 37.709081282375145 ], [ -122.376694138728411, 37.709092060083194 ], [ -122.376684004106508, 37.709101492422995 ], [ -122.376670361304676, 37.709108920469312 ], [ -122.376656744500607, 37.709117378469699 ], [ -122.376650118041127, 37.709128814824965 ], [ -122.376645245682482, 37.709141253875728 ], [ -122.376642127052065, 37.709154694529374 ], [ -122.376632417316515, 37.709180944983316 ], [ -122.376619233705384, 37.709206564055854 ], [ -122.376610896477217, 37.709218714945962 ], [ -122.376602550229492, 37.709230522339361 ], [ -122.376592476565378, 37.709242356980148 ], [ -122.376582384885396, 37.709253505451606 ], [ -122.376570661100516, 37.709268456941743 ], [ -122.376557330163322, 37.709288241147618 ], [ -122.376542262116743, 37.709307709937875 ], [ -122.376527177411774, 37.709326491711906 ], [ -122.376510355603088, 37.709344958344019 ], [ -122.37649688600834, 37.709359250635856 ], [ -122.376465576896948, 37.709420181699592 ], [ -122.37643425907072, 37.709480769527424 ], [ -122.376389592497333, 37.709560455358435 ], [ -122.376388193936847, 37.709573525235768 ], [ -122.376391962028805, 37.709585826347244 ], [ -122.376399160344661, 37.709597042716048 ], [ -122.376402928439646, 37.70960934382714 ], [ -122.376401512215111, 37.709621727530589 ], [ -122.376396631112286, 37.709633823068486 ], [ -122.376388241812876, 37.709643914305353 ], [ -122.376374607552179, 37.709651685818365 ], [ -122.376360903976007, 37.709656711239063 ], [ -122.376340270633293, 37.709661160049372 ], [ -122.376319628632046, 37.709665265903617 ], [ -122.376300706073636, 37.70966900099792 ], [ -122.376281774504847, 37.709672392867645 ], [ -122.376261106515926, 37.709675469305139 ], [ -122.376242166965341, 37.709678517655895 ], [ -122.376221481647946, 37.709680907632375 ], [ -122.376202524423789, 37.709683269528199 ], [ -122.376181830441382, 37.709685316270686 ], [ -122.376162855890229, 37.709686991706079 ], [ -122.376142153236586, 37.70968869493997 ], [ -122.37612144191985, 37.709690054943209 ], [ -122.376102441041382, 37.709690700967826 ], [ -122.376060983764248, 37.70969204832312 ], [ -122.376041966245552, 37.709692007598299 ], [ -122.376021220279497, 37.709691994675758 ], [ -122.375997000772998, 37.709691350345274 ], [ -122.375979685047099, 37.709690252959057 ], [ -122.375962360653403, 37.709688812068713 ], [ -122.375946764362084, 37.709687343377091 ], [ -122.375929430969819, 37.709685559534897 ], [ -122.375913817710057, 37.709683404653902 ], [ -122.375896475997124, 37.709681277299751 ], [ -122.375880853380082, 37.709678778923745 ], [ -122.375863494692936, 37.709675965105127 ], [ -122.375830496078862, 37.709669966721727 ], [ -122.375814856497584, 37.709666782151935 ], [ -122.375799199596415, 37.709662911125946 ], [ -122.375781814588834, 37.709659067619612 ], [ -122.375766157697925, 37.7096551968638 ], [ -122.375750492134401, 37.709650982329691 ], [ -122.37571914370605, 37.709641867350243 ], [ -122.37570345217442, 37.709636623403227 ], [ -122.375687769305102, 37.709631722681216 ], [ -122.375672068772147, 37.709626135508472 ], [ -122.375626688017107, 37.709609003209117 ], [ -122.375612698633404, 37.70960270232392 ], [ -122.375586491256968, 37.709591788341328 ], [ -122.375574203661955, 37.709584430256932 ], [ -122.375561908094213, 37.709576728658583 ], [ -122.375549603516987, 37.7095686835628 ], [ -122.375539018050162, 37.709560268000558 ], [ -122.375526696511997, 37.709551536717242 ], [ -122.375505491645058, 37.709533332668286 ], [ -122.375494871897089, 37.709523544188201 ], [ -122.375485980256698, 37.709513728189755 ], [ -122.375468179326063, 37.709493410016719 ], [ -122.375457507973294, 37.709481561890541 ], [ -122.375445047568775, 37.709467338970569 ], [ -122.375432604141196, 37.709453802508946 ], [ -122.37541844161953, 37.70944063678396 ], [ -122.375402568663233, 37.709428185022126 ], [ -122.375386712684005, 37.709416419717819 ], [ -122.375370874027013, 37.709405340865558 ], [ -122.375353324589767, 37.709394975980821 ], [ -122.375334064026845, 37.709385325068311 ], [ -122.3753165495785, 37.709376333080996 ], [ -122.375297332662143, 37.709368398292526 ], [ -122.375276404964978, 37.709361177469411 ], [ -122.37525895944836, 37.709354931295927 ], [ -122.375243233032052, 37.709348314384421 ], [ -122.375227498651867, 37.709341354232684 ], [ -122.375196011900385, 37.709326747754233 ], [ -122.375180259522494, 37.709319101152943 ], [ -122.375166235593625, 37.709311427031338 ], [ -122.375150475248759, 37.709303436913331 ], [ -122.375122392776206, 37.709286715752803 ], [ -122.375108342887259, 37.709278011942899 ], [ -122.375092564902388, 37.709269335642915 ], [ -122.375080234468939, 37.709260261365458 ], [ -122.375066167268656, 37.709250870821613 ], [ -122.375046820209405, 37.709237787590567 ], [ -122.374989178668883, 37.709214326304803 ], [ -122.374933247603437, 37.709190151032686 ], [ -122.374831814752426, 37.709144037952456 ], [ -122.374807448289985, 37.709137558790196 ], [ -122.374784792602327, 37.709130365112337 ], [ -122.374762119621366, 37.709122485524915 ], [ -122.374739428974408, 37.709113918935145 ], [ -122.374716721719778, 37.709104666150246 ], [ -122.374694005469692, 37.70909507013927 ], [ -122.374673000016784, 37.709084760438706 ], [ -122.374651977245378, 37.709073763730864 ], [ -122.374630937176775, 37.709062080839466 ], [ -122.374611616554063, 37.709050027212591 ], [ -122.374592286937002, 37.709037630360818 ], [ -122.374572932059905, 37.709024204087896 ], [ -122.37455530492376, 37.709010749764424 ], [ -122.374537660498376, 37.708996609533031 ], [ -122.374519998756611, 37.708981782295425 ], [ -122.374504056473583, 37.708966584874155 ], [ -122.37448810553569, 37.708951043948915 ], [ -122.374473874034791, 37.708935132017182 ], [ -122.374445393756574, 37.708902622243208 ], [ -122.37441087248213, 37.708836215748391 ], [ -122.374376333954515, 37.708769122513743 ], [ -122.374372557576578, 37.708756477834406 ], [ -122.374371908539288, 37.708730736067942 ], [ -122.374373316424055, 37.708718008885349 ], [ -122.374376452056026, 37.708705254481714 ], [ -122.374381325118193, 37.708692815793029 ], [ -122.374386206487088, 37.708680720336844 ], [ -122.374392824593912, 37.708668940606316 ], [ -122.374401188091994, 37.708657819828403 ], [ -122.374411296980753, 37.708647358002679 ], [ -122.374421423174923, 37.708637582630523 ], [ -122.374446851154033, 37.708617606150035 ], [ -122.374463828756802, 37.708605318455056 ], [ -122.374482543776409, 37.708593346196544 ], [ -122.374499530354001, 37.708581401168907 ], [ -122.374518253325192, 37.708569772142909 ], [ -122.374535257553518, 37.708558513833601 ], [ -122.374562508759965, 37.708542285323816 ], [ -122.374586545781455, 37.70853572218347 ], [ -122.374610592144961, 37.708529502254436 ], [ -122.374634646468323, 37.708523625558676 ], [ -122.374658710134312, 37.7085180920742 ], [ -122.374682781760811, 37.708512901823013 ], [ -122.374706862737568, 37.708508055057699 ], [ -122.374732662777703, 37.708502837010279 ], [ -122.374853593864671, 37.708499538871287 ], [ -122.374919053196592, 37.70849025581817 ], [ -122.374984547145971, 37.708482345911996 ], [ -122.375051786483155, 37.708475095187325 ], [ -122.375117314688779, 37.708468558121517 ], [ -122.375182869540055, 37.708463050415169 ], [ -122.375307152797603, 37.708455577784022 ], [ -122.375370892619628, 37.708446665496233 ], [ -122.375436334529738, 37.708436695975841 ], [ -122.375501750445025, 37.708425696737649 ], [ -122.375594677055204, 37.708408765528524 ], [ -122.375613633621171, 37.708406403460977 ], [ -122.375651599745083, 37.708403738663016 ], [ -122.375689617134853, 37.708403133226682 ], [ -122.375705187517212, 37.708403572265745 ], [ -122.375746670063037, 37.708403254716799 ], [ -122.375789863380334, 37.70840222372631 ], [ -122.375831311282568, 37.708400533239043 ], [ -122.375872750535976, 37.708398500059232 ], [ -122.375914172451246, 37.708395779861441 ], [ -122.375955577054981, 37.708392373743997 ], [ -122.376026281020401, 37.708385410092347 ], [ -122.376043553148961, 37.708384791885535 ], [ -122.376081570871463, 37.708384186317168 ], [ -122.376098868977905, 37.708384597508989 ], [ -122.376117894810292, 37.708384980902565 ], [ -122.376136930009963, 37.708385708058287 ], [ -122.376154236772265, 37.708386462194504 ], [ -122.376192341117545, 37.708389288861419 ], [ -122.376221804728033, 37.708392253162685 ], [ -122.376289356067019, 37.708397357901482 ], [ -122.376356881066656, 37.708401432376654 ], [ -122.376424388753932, 37.708404820633483 ], [ -122.37649187011074, 37.708407179175936 ], [ -122.376561053904155, 37.708408480459845 ], [ -122.376628483974059, 37.708408779550602 ], [ -122.376747729724002, 37.70840722314199 ], [ -122.376763213450403, 37.708404229221443 ], [ -122.376778714166832, 37.708401922033076 ], [ -122.376794232219382, 37.708400301571331 ], [ -122.376809767242023, 37.708399367018018 ], [ -122.376832232606262, 37.708399009032 ], [ -122.376847802648896, 37.708399447925551 ], [ -122.376863390008594, 37.708400572721949 ], [ -122.376878994361022, 37.708402384250476 ], [ -122.376901555046999, 37.708405801748796 ], [ -122.376925852133638, 37.708409534936841 ], [ -122.376951859969793, 37.708412554126937 ], [ -122.376977850476194, 37.708414886857213 ], [ -122.37700382331353, 37.708416533407728 ], [ -122.377029779497036, 37.708417492938302 ], [ -122.377055709343722, 37.708417423062144 ], [ -122.377081630523975, 37.70841700995323 ], [ -122.377110981861648, 37.708415512075135 ], [ -122.377140437198108, 37.708418132914076 ], [ -122.377199313216423, 37.708422001936356 ], [ -122.377228733890291, 37.708423249845112 ], [ -122.377258145890991, 37.708424154244938 ], [ -122.377289277310766, 37.70842468814115 ], [ -122.37734804933055, 37.708424438364865 ], [ -122.377379146073082, 37.708423599054704 ], [ -122.37742059395805, 37.708421908282823 ], [ -122.377622787821593, 37.70841902848273 ], [ -122.377643542101708, 37.708419384350222 ], [ -122.377662585641644, 37.708420454217361 ], [ -122.377704146218846, 37.708423225296556 ], [ -122.37772493517798, 37.708424954057655 ], [ -122.37774400438326, 37.708427053598058 ], [ -122.377768215169155, 37.708427354337005 ], [ -122.378000106843373, 37.708436705199382 ], [ -122.37830619390914, 37.708440408092009 ], [ -122.37833376512657, 37.708436878380915 ], [ -122.378363081750692, 37.708434007008506 ], [ -122.378390687645833, 37.708431849917247 ], [ -122.378420038963, 37.708430351712977 ], [ -122.378463249251951, 37.708430005927042 ], [ -122.378492652956893, 37.708430567335327 ], [ -122.378520354243449, 37.708432185435299 ], [ -122.378549800963029, 37.708434462694896 ], [ -122.37857753695242, 37.708437453963704 ], [ -122.378607018369593, 37.70844110411668 ], [ -122.378634797731564, 37.7084458115066 ], [ -122.378662594444492, 37.708451205343785 ], [ -122.378692136242478, 37.70845725806938 ], [ -122.378711232196324, 37.708460387122912 ], [ -122.378730310465116, 37.708462829999633 ], [ -122.378768431943271, 37.708466342017964 ], [ -122.378787467182775, 37.708467068470803 ], [ -122.378808221481876, 37.708467424133083 ], [ -122.37882723903445, 37.708467464405793 ], [ -122.378846230556476, 37.708466474720126 ], [ -122.378866950150183, 37.708465457189874 ], [ -122.378885915308302, 37.708463438097219 ], [ -122.378904872467956, 37.708461075214444 ], [ -122.378923820612812, 37.708458369381802 ], [ -122.378949637703641, 37.708453837413678 ], [ -122.378975437088471, 37.708448618717021 ], [ -122.379001245829258, 37.708443742956021 ], [ -122.379028799657206, 37.708439526353885 ], [ -122.379054625403654, 37.708435337315045 ], [ -122.379080468498444, 37.708431834724301 ], [ -122.379108048344705, 37.708428647784281 ], [ -122.379133899764923, 37.708425488414207 ], [ -122.379161496965466, 37.708422988190016 ], [ -122.379201182372455, 37.708419951449862 ], [ -122.379266840650459, 37.708418560198723 ], [ -122.379358446131135, 37.708417785256238 ], [ -122.379379209096214, 37.708418484044785 ], [ -122.37939999809295, 37.708420212510255 ], [ -122.379420813122252, 37.708422970652627 ], [ -122.379439934791137, 37.708427129548738 ], [ -122.379460810565476, 37.708432290272043 ], [ -122.379479983944307, 37.708438507979139 ], [ -122.379497455985685, 37.70844578347802 ], [ -122.379516681782491, 37.708454060534727 ], [ -122.379532477472964, 37.708463422971533 ], [ -122.379550018242554, 37.708473443739265 ], [ -122.379562332087886, 37.708481831365319 ], [ -122.379578066691991, 37.708488790938986 ], [ -122.379593775956252, 37.708494720818962 ], [ -122.37961118692283, 37.708499593443946 ], [ -122.379628563179082, 37.708503093158996 ], [ -122.379654614203474, 37.708507827892014 ], [ -122.379678955199253, 37.708513276640822 ], [ -122.379705041297058, 37.708519384539102 ], [ -122.379729416669221, 37.708526206190314 ], [ -122.379762215471303, 37.708524308990917 ], [ -122.379786946339379, 37.708545202935731 ], [ -122.379809654745344, 37.70855445473304 ], [ -122.379834099571553, 37.70856402217715 ], [ -122.379856842014789, 37.70857464688364 ], [ -122.379891828930511, 37.70859091336267 ], [ -122.379907538241355, 37.708596843200731 ], [ -122.37992494057292, 37.708601372552437 ], [ -122.379945781718234, 37.708605160557006 ], [ -122.379964929495586, 37.708610348773604 ], [ -122.379985822717444, 37.708616195857346 ], [ -122.380006741975436, 37.708623072343208 ], [ -122.380025941841694, 37.708630319910732 ], [ -122.380045167406379, 37.708638597161041 ], [ -122.380062691631167, 37.708647931936689 ], [ -122.380080223835478, 37.708657609398351 ], [ -122.380097782783579, 37.708668316801365 ], [ -122.380111807100121, 37.70867599033663 ], [ -122.380127559503322, 37.708683636284732 ], [ -122.380141575145288, 37.708690966589629 ], [ -122.380173045244604, 37.708704885568586 ], [ -122.380187043533539, 37.708711529414458 ], [ -122.380202769909488, 37.708718145672115 ], [ -122.380218478926409, 37.708724075474095 ], [ -122.380234196281208, 37.708730348506272 ], [ -122.380249896974746, 37.708735935346311 ], [ -122.380267325396161, 37.708741494053129 ], [ -122.380283025396338, 37.708747080625194 ], [ -122.380298717408834, 37.708752323957377 ], [ -122.380316128481965, 37.708757196477961 ], [ -122.380331802444843, 37.708761753363198 ], [ -122.380349205186434, 37.708766282646621 ], [ -122.380364870817246, 37.708770496295159 ], [ -122.380399640892449, 37.708778181953583 ], [ -122.380415288819378, 37.708781709147395 ], [ -122.380450024177094, 37.708788021883869 ], [ -122.380467383521719, 37.708790835015982 ], [ -122.380502084159204, 37.708795774830023 ], [ -122.380519425451766, 37.708797901511986 ], [ -122.380554091366136, 37.708801468403678 ], [ -122.380571407305098, 37.708802565386677 ], [ -122.38058873123596, 37.708804005604904 ], [ -122.38062334505976, 37.708805513115699 ], [ -122.380640643641911, 37.708805923909587 ], [ -122.380657932836172, 37.708805990936078 ], [ -122.380699406909102, 37.70880532869085 ], [ -122.380744406973307, 37.708807357325021 ], [ -122.38079115213398, 37.708810044256637 ], [ -122.380837914326918, 37.708813417903293 ], [ -122.38088296649677, 37.70881750557038 ], [ -122.380929755096815, 37.708821908855221 ], [ -122.380974841668888, 37.708827369399565 ], [ -122.381019936932205, 37.708833173153394 ], [ -122.38105859232931, 37.708838506457845 ], [ -122.381066777313606, 37.708839635749648 ], [ -122.381111907677337, 37.708846812369579 ], [ -122.381195264075259, 37.708861619200029 ], [ -122.381216079294731, 37.708864377024973 ], [ -122.381238613917688, 37.708866764017813 ], [ -122.381259411768738, 37.708868835381693 ], [ -122.381280183563462, 37.708869877061808 ], [ -122.381300946672837, 37.708870575511568 ], [ -122.381323420152597, 37.708870559906792 ], [ -122.381342429462208, 37.708870256266636 ], [ -122.381404605870372, 37.708867889625047 ], [ -122.381505512521713, 37.708893060219943 ], [ -122.381586019961446, 37.708863618143027 ], [ -122.381762346029831, 37.708863204692321 ], [ -122.381781407118979, 37.708864960346808 ], [ -122.381802213679833, 37.708867375116121 ], [ -122.381821317860044, 37.708870846628407 ], [ -122.381842167859006, 37.708874977249344 ], [ -122.381859579414566, 37.708879849810799 ], [ -122.381875262525128, 37.708884749437118 ], [ -122.381890971365024, 37.708890679021408 ], [ -122.381904969842452, 37.708897322662949 ], [ -122.38191898569994, 37.708904652756104 ], [ -122.381933027626729, 37.708913012527532 ], [ -122.381945359191491, 37.708922086357219 ], [ -122.381957699102628, 37.708931503417737 ], [ -122.381968327967215, 37.70894163482285 ], [ -122.381980685608269, 37.708951738328693 ], [ -122.381993034210964, 37.708961498337537 ], [ -122.382005374141627, 37.708970915667607 ], [ -122.382017705026641, 37.70897998922608 ], [ -122.382045788934036, 37.708996708743506 ], [ -122.382059822203018, 37.709004725273097 ], [ -122.382073838096019, 37.709012055347692 ], [ -122.382089582428222, 37.709019357800898 ], [ -122.382105309038593, 37.709025973804216 ], [ -122.382136727169851, 37.709037833178158 ], [ -122.382152419374435, 37.709043076263157 ], [ -122.382168102538699, 37.709047975850353 ], [ -122.382185504767932, 37.709052504873313 ], [ -122.382201170908758, 37.709056718271931 ], [ -122.382218547417111, 37.709060217604623 ], [ -122.382234178116121, 37.709063058378014 ], [ -122.382251537592452, 37.70906587124707 ], [ -122.382268878998048, 37.70906799767139 ], [ -122.382286203707906, 37.709069437354287 ], [ -122.382303519050552, 37.709070534368244 ], [ -122.382320826380379, 37.709071287592842 ], [ -122.382341580865045, 37.709071642632544 ], [ -122.382365730359041, 37.709069540125881 ], [ -122.382388178510126, 37.709068494352529 ], [ -122.382412363104777, 37.709067764462617 ], [ -122.38243483664391, 37.709067748645822 ], [ -122.382459065046888, 37.709068735148399 ], [ -122.382481573697518, 37.709070092223556 ], [ -122.382505827816885, 37.709072107852691 ], [ -122.382528371242771, 37.709074838099873 ], [ -122.38255092334812, 37.709077911020174 ], [ -122.382573501192169, 37.709082013896044 ], [ -122.382596088421835, 37.709086459983112 ], [ -122.382618692692688, 37.709091592524558 ], [ -122.382641314350906, 37.70909741151484 ], [ -122.382662225311549, 37.709103944851186 ], [ -122.382677899491284, 37.709108501423991 ], [ -122.382700504120081, 37.709113633944185 ], [ -122.382724827799791, 37.709118395340859 ], [ -122.382747414358349, 37.709122841409943 ], [ -122.382771729703904, 37.70912725983942 ], [ -122.382794299234817, 37.7091310197154 ], [ -122.382818588161342, 37.709134408460983 ], [ -122.382842868390057, 37.709137453700393 ], [ -122.38286542018875, 37.709140526840578 ], [ -122.382889683387347, 37.709142885886266 ], [ -122.382938191710934, 37.709146917520584 ], [ -122.38296070039398, 37.709148274504173 ], [ -122.382986665264852, 37.70914957622869 ], [ -122.383007411087661, 37.709149588199111 ], [ -122.383029884990066, 37.709149571988654 ], [ -122.383050648193986, 37.709150270129996 ], [ -122.383073139146191, 37.709150940644498 ], [ -122.383093919739352, 37.709152325231301 ], [ -122.383116428772482, 37.709153682179597 ], [ -122.383158007351824, 37.709157137787358 ], [ -122.383180542125842, 37.709159524408562 ], [ -122.38322217288038, 37.709165039352904 ], [ -122.383244725048755, 37.709168112414922 ], [ -122.383265557820081, 37.709171556330674 ], [ -122.38330031099926, 37.709178554953908 ], [ -122.383319389589161, 37.709180996537953 ], [ -122.383354090598218, 37.709185935511563 ], [ -122.383373151814638, 37.709187691182962 ], [ -122.383407818040695, 37.709191256960054 ], [ -122.383426861522594, 37.709192326175256 ], [ -122.38344417758799, 37.709193422461318 ], [ -122.383463212713679, 37.709194148164016 ], [ -122.383497809392168, 37.709194968651609 ], [ -122.383516826773814, 37.709195007623549 ], [ -122.38353410806306, 37.709194731264901 ], [ -122.38355310841149, 37.709194084321595 ], [ -122.383570380651364, 37.709193464462061 ], [ -122.383603179656703, 37.709191566467979 ], [ -122.383625618791854, 37.709190177512419 ], [ -122.383660189372748, 37.709189967998213 ], [ -122.383684400085329, 37.709190267526687 ], [ -122.383706900098034, 37.709191281141187 ], [ -122.383729426202848, 37.709193324430878 ], [ -122.383751960667553, 37.709195711222868 ], [ -122.383774513205751, 37.709198783903318 ], [ -122.383797074104677, 37.709202200086082 ], [ -122.383819661098414, 37.709206645943979 ], [ -122.383842256453889, 37.709211435304148 ], [ -122.383863141444834, 37.709216938198551 ], [ -122.383887517772791, 37.709223758983043 ], [ -122.383918823190285, 37.709231155662387 ], [ -122.383950120607025, 37.709238209095858 ], [ -122.384012679973182, 37.709250943042996 ], [ -122.384043941921391, 37.709256623556676 ], [ -122.38407519587382, 37.709261961099109 ], [ -122.384137668283756, 37.709271262440524 ], [ -122.384168886754026, 37.709275226788684 ], [ -122.384201816616198, 37.709278477019389 ], [ -122.384233018039538, 37.70928175489211 ], [ -122.384265929816848, 37.709284318663009 ], [ -122.384297105498632, 37.709286567108421 ], [ -122.384329991519081, 37.709288100901972 ], [ -122.384361149451607, 37.709289662608477 ], [ -122.384394018088159, 37.7092905104804 ], [ -122.384452807809836, 37.709290943068623 ], [ -122.384475299515429, 37.709291613578934 ], [ -122.384496080167082, 37.709292997643757 ], [ -122.384516886928907, 37.709295411658836 ], [ -122.384534272309892, 37.7092992541508 ], [ -122.384549981442476, 37.709305183105528 ], [ -122.384600688269401, 37.709327720626654 ], [ -122.384651368684075, 37.709349228726715 ], [ -122.384702031710773, 37.709370049802885 ], [ -122.384754405467419, 37.709390157025624 ], [ -122.384806761855017, 37.709409578046774 ], [ -122.384859100858179, 37.709428312317186 ], [ -122.384913150236486, 37.709446332461404 ], [ -122.384967174216499, 37.709463322615903 ], [ -122.385028162503517, 37.709482261754836 ], [ -122.385061327139894, 37.709494778863174 ], [ -122.385077071522119, 37.709502080922022 ], [ -122.385092833321409, 37.709510069706113 ], [ -122.385106884415976, 37.70951877205021 ], [ -122.385135021443745, 37.709537550188017 ], [ -122.38516131723388, 37.709551894035449 ], [ -122.385185875889178, 37.70956592259045 ], [ -122.385212163333733, 37.709579922920014 ], [ -122.385240161144154, 37.709593209410606 ], [ -122.385266422163951, 37.7096061806036 ], [ -122.385294402578083, 37.709618780353921 ], [ -122.38532064620027, 37.709631064807468 ], [ -122.385376554860102, 37.709654205466649 ], [ -122.385427183484424, 37.709673653599111 ], [ -122.385474486504066, 37.709698305432774 ], [ -122.385520087565695, 37.709724014590961 ], [ -122.385565697364569, 37.70975006695771 ], [ -122.385611324607254, 37.709776805759368 ], [ -122.385656969295042, 37.709804230995893 ], [ -122.385720426192663, 37.709852316346286 ], [ -122.38574142470155, 37.709862281398394 ], [ -122.38576260604151, 37.709879453650188 ], [ -122.385783769984741, 37.709895939720084 ], [ -122.385806662054534, 37.709912398391943 ], [ -122.385829545420535, 37.709928513558424 ], [ -122.385852419736807, 37.709944285225092 ], [ -122.385908633553967, 37.709979438551144 ], [ -122.385924326223261, 37.709984681132887 ], [ -122.385940009841704, 37.709989580491779 ], [ -122.385955658638977, 37.709993107217954 ], [ -122.385971289669953, 37.709995947220456 ], [ -122.38598863209009, 37.709998073085792 ], [ -122.386004211215408, 37.709998853446052 ], [ -122.386023237864435, 37.70999923550869 ], [ -122.386043957793987, 37.709998216990876 ], [ -122.386064686430998, 37.709997541695692 ], [ -122.386085397651371, 37.709996179944298 ], [ -122.386126802680138, 37.709992770252597 ], [ -122.386147487765797, 37.709990378536858 ], [ -122.386169900968881, 37.70998795941798 ], [ -122.386190577350149, 37.709985224742994 ], [ -122.386231912690491, 37.709979068929542 ], [ -122.386250834828786, 37.709975332240148 ], [ -122.386271485083554, 37.709971568146692 ], [ -122.386292126613185, 37.709967460274193 ], [ -122.386312759445275, 37.709963009720973 ], [ -122.386333383551687, 37.709958215388703 ], [ -122.386352270849088, 37.709953106052509 ], [ -122.386372886247685, 37.709947968761632 ], [ -122.386393492926942, 37.709942487966288 ], [ -122.386412353741648, 37.709936348947188 ], [ -122.386432951711981, 37.709930525193258 ], [ -122.386451804494854, 37.709924042655906 ], [ -122.386489491932494, 37.709910390856137 ], [ -122.386508326593912, 37.709903221868281 ], [ -122.386545979522182, 37.709888197414408 ], [ -122.386564797097478, 37.709880341959447 ], [ -122.386583605612742, 37.709872143280762 ], [ -122.386602406104558, 37.709863601361754 ], [ -122.386624601143666, 37.709852601505517 ], [ -122.386648585957673, 37.709843976811243 ], [ -122.386694774483402, 37.709824694919647 ], [ -122.386716987264919, 37.709814381492933 ], [ -122.386739173906818, 37.709803038383235 ], [ -122.386759623723719, 37.709791379725885 ], [ -122.386781783879641, 37.709779007209534 ], [ -122.386809006718778, 37.709761745916552 ], [ -122.386819140491724, 37.709752312701141 ], [ -122.386825765435574, 37.70974087550043 ], [ -122.386828898974457, 37.709728120767494 ], [ -122.386826848894813, 37.709715449349289 ], [ -122.386819640282908, 37.709703890391729 ], [ -122.386817598557442, 37.709691561655937 ], [ -122.386819004336886, 37.70967883460122 ], [ -122.386823901170089, 37.709667425084099 ], [ -122.386834025525516, 37.709657648652097 ], [ -122.386847676124134, 37.709650562655604 ], [ -122.386868282692944, 37.709645082051537 ], [ -122.386895766825091, 37.709638117800075 ], [ -122.386923224816215, 37.709630123863455 ], [ -122.386948937619863, 37.709621471147983 ], [ -122.386974623942265, 37.70961178902828 ], [ -122.387000301531728, 37.709601763127544 ], [ -122.387025961350744, 37.709591051048854 ], [ -122.387051595722909, 37.709579309549376 ], [ -122.387075492913056, 37.709567251961815 ], [ -122.387099363971075, 37.709554165239872 ], [ -122.38712149784719, 37.709540762431281 ], [ -122.387143614994557, 37.709526673704133 ], [ -122.387172522192103, 37.709507668506873 ], [ -122.387191252472988, 37.709496380689082 ], [ -122.38723213436316, 37.70947237676026 ], [ -122.387250838140105, 37.709460059259776 ], [ -122.387271261641757, 37.709447370834297 ], [ -122.387308635352881, 37.709421363170897 ], [ -122.38732731330154, 37.709408015699388 ], [ -122.387344254439029, 37.70939435296458 ], [ -122.387362914960519, 37.709380319584099 ], [ -122.387379847018508, 37.709366313348852 ], [ -122.387396771054185, 37.709351964148425 ], [ -122.387413685684905, 37.70933727200498 ], [ -122.387447498167859, 37.709307200423432 ], [ -122.387477837364472, 37.709276498309869 ], [ -122.387504772282938, 37.709247910664018 ], [ -122.387518335595743, 37.709237392327147 ], [ -122.387531890183013, 37.709226530487904 ], [ -122.387555525398113, 37.709204176295842 ], [ -122.387565597996186, 37.70919234043189 ], [ -122.387577389623033, 37.709180133651593 ], [ -122.387587444438822, 37.709167611338806 ], [ -122.387595770813661, 37.709155116725697 ], [ -122.387605817253487, 37.709142251179543 ], [ -122.387614126544804, 37.709129070381714 ], [ -122.387625726420353, 37.709109312619674 ], [ -122.38763581573356, 37.709098163213035 ], [ -122.387647651248827, 37.709087672276503 ], [ -122.387659495137399, 37.7090775248451 ], [ -122.387671356453438, 37.709068063864919 ], [ -122.387684954578489, 37.709058918688022 ], [ -122.387698570117223, 37.709050459412794 ], [ -122.387713905033536, 37.709041629487615 ], [ -122.387727520579759, 37.70903317075819 ], [ -122.387741127400233, 37.709024368526379 ], [ -122.387754716779028, 37.70901487956597 ], [ -122.38776828872976, 37.709004704426171 ], [ -122.387780123872801, 37.708994213756277 ], [ -122.387790213492849, 37.708983064330674 ], [ -122.387800294400918, 37.708971571952546 ], [ -122.387820421322658, 37.708947213465045 ], [ -122.387827011176498, 37.708934403301733 ], [ -122.387835268108802, 37.708919163130588 ], [ -122.387845322493249, 37.708906640526244 ], [ -122.387855368863313, 37.708893775232887 ], [ -122.387863686784897, 37.708880937093966 ], [ -122.387870259192908, 37.708867440475665 ], [ -122.387876822882276, 37.708853600630782 ], [ -122.387881684640561, 37.70884081843792 ], [ -122.387890037417037, 37.708829353201914 ], [ -122.387898407291956, 37.708818574972398 ], [ -122.387908532074746, 37.708808798161094 ], [ -122.387920428182127, 37.708800710060288 ], [ -122.387934078526868, 37.708793624211502 ], [ -122.387949491811682, 37.708787883291222 ], [ -122.387963124704001, 37.708780110437473 ], [ -122.387974994657682, 37.708770992927079 ], [ -122.387986838098541, 37.708760845193225 ], [ -122.38799691929168, 37.70874935279231 ], [ -122.388003535248131, 37.708737572297345 ], [ -122.388025477290896, 37.708716618335004 ], [ -122.388016549225114, 37.708705430376419 ], [ -122.388024919406419, 37.708694651857606 ], [ -122.388035061251031, 37.708685561767766 ], [ -122.388048711556735, 37.70867847563099 ], [ -122.388064142243053, 37.708673421147999 ], [ -122.388079642671812, 37.708671112747226 ], [ -122.388100414499817, 37.708672152950157 ], [ -122.388116071494025, 37.708676022621809 ], [ -122.388131781471785, 37.708681951088387 ], [ -122.388159762030639, 37.708694550434529 ], [ -122.388173769748903, 37.708701536557498 ], [ -122.388201802628828, 37.708716195250794 ], [ -122.388214108081286, 37.708724238756957 ], [ -122.388226422945536, 37.708732625476948 ], [ -122.388238746184868, 37.708741355427378 ], [ -122.388251078145075, 37.708750428602698 ], [ -122.388266944735889, 37.708762535402698 ], [ -122.388279294146272, 37.708772295301998 ], [ -122.388293362910787, 37.708781683719387 ], [ -122.38830914233246, 37.708790358251797 ], [ -122.388323176244768, 37.708798374310007 ], [ -122.388338920792876, 37.708805675659121 ], [ -122.388354647568491, 37.708812290833862 ], [ -122.388372085684821, 37.70881819183667 ], [ -122.388387786655741, 37.70882377732292 ], [ -122.388405189556963, 37.70882830542164 ], [ -122.388422575029637, 37.70883214734004 ], [ -122.388439943052433, 37.70883530225435 ], [ -122.388457293652749, 37.708837771262928 ], [ -122.388476354886436, 37.708839525559505 ], [ -122.388493670259848, 37.708840621388994 ], [ -122.388512688251666, 37.708840659817909 ], [ -122.38852998653293, 37.708841069184182 ], [ -122.388547319691853, 37.708842851452602 ], [ -122.388564687729385, 37.708846006623098 ], [ -122.388580362562081, 37.708850562405146 ], [ -122.388611781644997, 37.70886241977783 ], [ -122.38865901579085, 37.708884324521037 ], [ -122.38867304103168, 37.70889199703673 ], [ -122.388704565133736, 37.708907973092835 ], [ -122.388718607824089, 37.708916332055367 ], [ -122.38873438732395, 37.708925006530642 ], [ -122.388748438741189, 37.708933708715719 ], [ -122.388776559026368, 37.708951799533132 ], [ -122.388804696766371, 37.708970576796062 ], [ -122.388818774369312, 37.708980308925696 ], [ -122.38883113260205, 37.708990411718339 ], [ -122.38884521891903, 37.709000486521759 ], [ -122.388857576813109, 37.70901058931716 ], [ -122.388869944129638, 37.709021035600863 ], [ -122.388894695509904, 37.709042614078506 ], [ -122.388910640750538, 37.709057809551815 ], [ -122.388972423353252, 37.709107980227031 ], [ -122.389081727973931, 37.709191381909299 ], [ -122.389101024813158, 37.709202403484106 ], [ -122.389122041028727, 37.709213054112247 ], [ -122.389141320435243, 37.709223389228221 ], [ -122.389162319218002, 37.709233353396939 ], [ -122.389183309291042, 37.709242974610376 ], [ -122.389223526102853, 37.709260871022344 ], [ -122.389313124685856, 37.70931711930168 ], [ -122.389481987883741, 37.709431155180901 ], [ -122.389492653071912, 37.709442658255767 ], [ -122.389505019851313, 37.709453104208613 ], [ -122.389517378601511, 37.709463206922976 ], [ -122.38952971956148, 37.709472623189463 ], [ -122.389543753727182, 37.709480638826818 ], [ -122.389557892592236, 37.709492773449732 ], [ -122.389586187763769, 37.709517728318737 ], [ -122.389598615991517, 37.709530577112993 ], [ -122.389612772309832, 37.709543397632146 ], [ -122.389625208918304, 37.709556589380568 ], [ -122.389644750565139, 37.709577221189377 ], [ -122.389655398357277, 37.709588038071757 ], [ -122.389667747741427, 37.709597797829758 ], [ -122.389681790670352, 37.709606156676571 ], [ -122.389697518418998, 37.709612771385522 ], [ -122.389713219657295, 37.709618356694392 ], [ -122.389730605029726, 37.709622198150228 ], [ -122.389747947470156, 37.709624323462215 ], [ -122.389765245594901, 37.709624732652614 ], [ -122.389782500792251, 37.709623425973788 ], [ -122.389799720389789, 37.709620746124841 ], [ -122.389816888318393, 37.709616006631549 ], [ -122.389835749113217, 37.709609867058475 ], [ -122.389863163150096, 37.709600156306408 ], [ -122.389890559721536, 37.709589758821316 ], [ -122.389917938840725, 37.709578675152393 ], [ -122.389945300499932, 37.709566905025042 ], [ -122.389970907526418, 37.709554132948654 ], [ -122.389996506509206, 37.709541017629583 ], [ -122.390020350865882, 37.709526900637606 ], [ -122.39004417774683, 37.709512096639571 ], [ -122.390067995898818, 37.709496949685239 ], [ -122.390091787861351, 37.709480773048014 ], [ -122.390113842650052, 37.709464281192048 ], [ -122.390139232126714, 37.709442928142842 ], [ -122.390159716218918, 37.709432641798621 ], [ -122.390178454754334, 37.709421696731738 ], [ -122.3901989126541, 37.709410380702636 ], [ -122.39021589655448, 37.70939843369046 ], [ -122.390234600516706, 37.709386115979576 ], [ -122.390251558562568, 37.709373139004065 ], [ -122.39026850788207, 37.709359819074663 ], [ -122.390285439740609, 37.709345812690756 ], [ -122.390300643497767, 37.709331834039105 ], [ -122.390315821066409, 37.709316825707447 ], [ -122.390329270534636, 37.709301845108946 ], [ -122.390344421562602, 37.709285807101061 ], [ -122.390361327552213, 37.709270771022531 ], [ -122.39037995255471, 37.709255363985214 ], [ -122.39039175211181, 37.709243500154884 ], [ -122.390403604724284, 37.709233695668296 ], [ -122.390415483172134, 37.70922492086406 ], [ -122.390429115893767, 37.709217148000036 ], [ -122.390442766075893, 37.709210061861029 ], [ -122.390456442426085, 37.709204004849276 ], [ -122.390471873057805, 37.709198950051309 ], [ -122.390487338262247, 37.709195268435437 ], [ -122.390504549691016, 37.709192244971604 ], [ -122.39052006760221, 37.7091906224273 ], [ -122.390549453543258, 37.709190494110466 ], [ -122.390566778448914, 37.709191932850082 ], [ -122.390582401104382, 37.709194429009507 ], [ -122.390598058337744, 37.709198298350977 ], [ -122.390613742436898, 37.709203196808069 ], [ -122.390626048230899, 37.70921124006167 ], [ -122.390650826717163, 37.709233847842071 ], [ -122.390663202699358, 37.709244636894077 ], [ -122.390679017412822, 37.709254684012365 ], [ -122.390694814671889, 37.709264044676523 ], [ -122.390710585401109, 37.709272375666167 ], [ -122.39072806745979, 37.70927999244968 ], [ -122.390745513912535, 37.709286236337753 ], [ -122.39076120677656, 37.709291478275702 ], [ -122.390820887340325, 37.709326917004176 ], [ -122.390880550507589, 37.709361669524867 ], [ -122.390955975777842, 37.709404409471233 ], [ -122.390984166616704, 37.709425245293367 ], [ -122.391043969973325, 37.709465489065806 ], [ -122.391073854047875, 37.709484924766009 ], [ -122.39110372905418, 37.709504016963635 ], [ -122.391135324127831, 37.70952273789505 ], [ -122.391198478718835, 37.709558807388859 ], [ -122.391230038228016, 37.709576155676679 ], [ -122.391263317811934, 37.70959313297017 ], [ -122.391294851500007, 37.709609451557228 ], [ -122.391328104225451, 37.709625399165667 ], [ -122.391384067146049, 37.709650596329034 ], [ -122.391403364798364, 37.709661617794914 ], [ -122.39142438147357, 37.709672268011516 ], [ -122.391443670051999, 37.70968294597585 ], [ -122.391473405843797, 37.709696546184524 ], [ -122.391490739272712, 37.709698328019577 ], [ -122.391506239801757, 37.709696018893702 ], [ -122.39153878556094, 37.709684165139144 ], [ -122.391567892571629, 37.709673053334001 ], [ -122.391595262737894, 37.70966162604946 ], [ -122.391624352264017, 37.709649827778549 ], [ -122.391716621681155, 37.709607142187203 ], [ -122.39187696505121, 37.709454172098226 ], [ -122.392088496086032, 37.709274627293134 ], [ -122.392100330316836, 37.709264136195202 ], [ -122.392112147763783, 37.709252958633222 ], [ -122.392122219297448, 37.709241122385279 ], [ -122.392130554000019, 37.709228970672129 ], [ -122.3921406164459, 37.70921679120223 ], [ -122.392147205586284, 37.70920398107237 ], [ -122.392155514411016, 37.709190799399607 ], [ -122.392160357630971, 37.709177330310062 ], [ -122.392166946757442, 37.709164519904434 ], [ -122.392190188120423, 37.709126719606594 ], [ -122.392215174675471, 37.709089577998483 ], [ -122.392281983011671, 37.708997512609393 ], [ -122.392295589286405, 37.70898870985144 ], [ -122.392309213031425, 37.708980593543679 ], [ -122.39232284551727, 37.708972820734765 ], [ -122.392336495460057, 37.708965733826894 ], [ -122.3923518734928, 37.7089586194272 ], [ -122.392365540911214, 37.708952219242256 ], [ -122.392380936412536, 37.708945791290532 ], [ -122.392396349039899, 37.708940049794052 ], [ -122.392411779830567, 37.708934994736204 ], [ -122.39242892962109, 37.708929568690095 ], [ -122.392432645117751, 37.708928100915109 ], [ -122.392656793824756, 37.709119608424643 ], [ -122.391332097355985, 37.710140738310088 ], [ -122.390887824662656, 37.71036523380814 ], [ -122.390835880106437, 37.711169771421694 ], [ -122.392609027560681, 37.711272141276474 ], [ -122.393916838957196, 37.711294747317396 ], [ -122.394130547970391, 37.711308547209811 ], [ -122.394301164504668, 37.711283892996612 ], [ -122.394415018271332, 37.711243467479711 ], [ -122.394533636579439, 37.711181739957787 ], [ -122.394789228222862, 37.711029491236808 ], [ -122.395699524288574, 37.710911289111898 ], [ -122.395804130724926, 37.711357784012904 ], [ -122.395984840101519, 37.711902635542479 ], [ -122.396209567629995, 37.712429108802013 ], [ -122.396615767431044, 37.713094016747043 ], [ -122.396615774145118, 37.713094103716635 ], [ -122.396885665233555, 37.713468431896139 ], [ -122.397834560573045, 37.714650610374164 ], [ -122.398259710629063, 37.715141974251068 ], [ -122.398471400839512, 37.715455433381891 ], [ -122.398552555430172, 37.715443409305585 ], [ -122.398990734294756, 37.715338865287599 ], [ -122.398990733617495, 37.715338865847912 ], [ -122.398991048786399, 37.715338790720075 ], [ -122.398991043085772, 37.715338797679301 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":16,"ZIP_CODE":94110,"ID":94110},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.4217053213399, 37.731806501069016 ], [ -122.422820482616018, 37.731641033131751 ], [ -122.423920024119482, 37.731552895324626 ], [ -122.424553925961277, 37.731549131439351 ], [ -122.424645313557747, 37.731548588455745 ], [ -122.424987445865384, 37.731559842008934 ], [ -122.425563267495079, 37.731578779884757 ], [ -122.426103813784607, 37.731651546856703 ], [ -122.426095455082049, 37.731670597839134 ], [ -122.425919712835267, 37.7318157721811 ], [ -122.425781691782262, 37.731929785903453 ], [ -122.425500227991904, 37.7320527573848 ], [ -122.42519868259302, 37.732129150959032 ], [ -122.425046994836066, 37.732129947854176 ], [ -122.424277944077048, 37.732133983506472 ], [ -122.423769382874056, 37.732162707171447 ], [ -122.423486414351174, 37.732261254158729 ], [ -122.423194763566187, 37.732223135593344 ], [ -122.422597636657429, 37.732308431174374 ], [ -122.421964308435761, 37.732433222436505 ], [ -122.421769540807844, 37.732442879558889 ], [ -122.421628644882077, 37.732486581446111 ], [ -122.421573075628018, 37.732579492315836 ], [ -122.421610219449562, 37.732670894611623 ], [ -122.421740792022078, 37.732743282983918 ], [ -122.421779146191113, 37.732885343728064 ], [ -122.42184863663951, 37.732986304256819 ], [ -122.42202732889227, 37.733140443779334 ], [ -122.422262570568407, 37.733475728240066 ], [ -122.42233700854446, 37.733668492264307 ], [ -122.422378321374794, 37.733842795338198 ], [ -122.42251406401526, 37.734049477037892 ], [ -122.422640968014662, 37.73418217013328 ], [ -122.422876476168085, 37.734369596551609 ], [ -122.422737437389159, 37.734490301194434 ], [ -122.422547222688962, 37.734619826084632 ], [ -122.422284286448345, 37.734779711262206 ], [ -122.422205425171413, 37.73485685013258 ], [ -122.422146910860818, 37.734962831393027 ], [ -122.422120806983799, 37.735152847768823 ], [ -122.42260172446116, 37.735176855221177 ], [ -122.422687909096169, 37.735204969342369 ], [ -122.424702562314437, 37.735369870957172 ], [ -122.424930534158477, 37.735266285585048 ], [ -122.427103368742522, 37.735457096504888 ], [ -122.427838803054428, 37.734693898279502 ], [ -122.428436980709748, 37.734950949626743 ], [ -122.428436951461066, 37.734950968784666 ], [ -122.42783624298761, 37.735347761815902 ], [ -122.427738169173168, 37.735412543347451 ], [ -122.42729729676671, 37.735729149898575 ], [ -122.426544994076067, 37.736269396547655 ], [ -122.426500890836181, 37.73630106743056 ], [ -122.425847678890904, 37.736860666965818 ], [ -122.425439441891498, 37.737210392933726 ], [ -122.425110714349969, 37.737550673136937 ], [ -122.424904804743889, 37.737763817504508 ], [ -122.424711669489241, 37.738076607801148 ], [ -122.424696469855888, 37.738101223886673 ], [ -122.424531564221411, 37.738368292265967 ], [ -122.424284283357963, 37.738949691036076 ], [ -122.424063599996956, 37.739784297520274 ], [ -122.424147154179678, 37.739869229183775 ], [ -122.424147154546787, 37.739869230001858 ], [ -122.42414746787631, 37.739869414698418 ], [ -122.424258152196032, 37.739934707389949 ], [ -122.42413709700044, 37.740335654620864 ], [ -122.42417135664968, 37.740713439585669 ], [ -122.424301394893192, 37.742119600447609 ], [ -122.424233478510288, 37.742235956906946 ], [ -122.424233472639315, 37.742235957277522 ], [ -122.424233272287097, 37.742236301993223 ], [ -122.424233277120777, 37.742236301639601 ], [ -122.424309369085989, 37.7430347552692 ], [ -122.424384862816794, 37.743838216035606 ], [ -122.424459208282684, 37.744635998834639 ], [ -122.424538964982034, 37.745435717069675 ], [ -122.424602793343411, 37.746241400149849 ], [ -122.424689793548367, 37.747033402901096 ], [ -122.424768280884535, 37.747830304166378 ], [ -122.424841979744244, 37.748600757493776 ], [ -122.424845018024243, 37.748632519532975 ], [ -122.424845024283727, 37.748632587554638 ], [ -122.424922999639648, 37.749434901505936 ], [ -122.424999224133984, 37.75023271753119 ], [ -122.424999224155329, 37.750232718354916 ], [ -122.425075700414453, 37.751033151258099 ], [ -122.425122809405835, 37.751528900123922 ], [ -122.4251525416649, 37.751841785070944 ], [ -122.425152541686245, 37.751841785894676 ], [ -122.425302616566313, 37.753431589741957 ], [ -122.425302616947704, 37.753431591109177 ], [ -122.425425666412067, 37.754703378159874 ], [ -122.425457179889037, 37.755029078716305 ], [ -122.425491892915787, 37.755387845874338 ], [ -122.425612216172169, 37.756631383038098 ], [ -122.425645855643012, 37.756979041458848 ], [ -122.42568945931761, 37.757429671011749 ], [ -122.425689459367419, 37.757429672933782 ], [ -122.425766807341631, 37.758226828700685 ], [ -122.425843422635126, 37.759029397589842 ], [ -122.425900090784694, 37.759619242549249 ], [ -122.425920302092379, 37.759829613405913 ], [ -122.425985721165645, 37.760498692937027 ], [ -122.426076501462219, 37.761427133668562 ], [ -122.426076501815189, 37.761427133937481 ], [ -122.426145984060597, 37.762160358437526 ], [ -122.426149283375466, 37.762227539381186 ], [ -122.426191463523168, 37.762538363286502 ], [ -122.426204067323269, 37.762631239367813 ], [ -122.426224290129298, 37.762962298008539 ], [ -122.426228478902843, 37.763030870557735 ], [ -122.426317477898522, 37.763970002371671 ], [ -122.426381708399177, 37.764645687871273 ], [ -122.426381708477521, 37.764645690891633 ], [ -122.426381062758907, 37.764645729188807 ], [ -122.426381062356072, 37.764645726997848 ], [ -122.424574375550648, 37.764754942537614 ], [ -122.424102683503691, 37.764783452170008 ], [ -122.423112421134832, 37.764843298770074 ], [ -122.42285341443899, 37.764858950163855 ], [ -122.421886445840627, 37.764917378530825 ], [ -122.421381475659516, 37.764947887797014 ], [ -122.421239593012103, 37.764956459387825 ], [ -122.420901270224292, 37.764976898858535 ], [ -122.420580607922048, 37.764996270018614 ], [ -122.420482492120144, 37.765002197009743 ], [ -122.419668972681833, 37.765051337054757 ], [ -122.418698425401715, 37.765109955145007 ], [ -122.418579138459435, 37.765117159398407 ], [ -122.41748659577631, 37.765183134636899 ], [ -122.416387522888556, 37.765249494040667 ], [ -122.415308388038014, 37.765314639624691 ], [ -122.413105243007919, 37.765447608576679 ], [ -122.412416426589019, 37.765489809283601 ], [ -122.411455262151748, 37.765547605227276 ], [ -122.410486689274492, 37.765605838622655 ], [ -122.408544242939584, 37.765722599679115 ], [ -122.407534229395537, 37.765783299286987 ], [ -122.407419737953433, 37.764487829924626 ], [ -122.406859230067056, 37.764521681123377 ], [ -122.406429154577822, 37.764547653499882 ], [ -122.406429152848446, 37.764547653527842 ], [ -122.406005237363416, 37.764573252226405 ], [ -122.405463420216606, 37.764605967981389 ], [ -122.405089603673972, 37.764628538361961 ], [ -122.405089602982216, 37.764628538373131 ], [ -122.405059622300016, 37.764310557738277 ], [ -122.405104592203571, 37.763852244172895 ], [ -122.405203088479681, 37.763478066930332 ], [ -122.405258413683796, 37.763323129887908 ], [ -122.40532469627189, 37.76313750682079 ], [ -122.405384490436404, 37.76297005284507 ], [ -122.405653838302513, 37.762432552128487 ], [ -122.405925510731336, 37.762011914887523 ], [ -122.406021608630979, 37.761863123291867 ], [ -122.406147061407296, 37.7616371808829 ], [ -122.4062826701159, 37.761392945250627 ], [ -122.406479479731502, 37.760730932047331 ], [ -122.406492697683589, 37.760686469836571 ], [ -122.406492391998796, 37.760255279712112 ], [ -122.406389357641601, 37.759804405761585 ], [ -122.406261953936678, 37.75945211819198 ], [ -122.406247868764623, 37.759429354319998 ], [ -122.406103779268008, 37.759196479511928 ], [ -122.405903135660481, 37.758934413706449 ], [ -122.405545221503274, 37.758536929330724 ], [ -122.405048169961901, 37.758189448369819 ], [ -122.404835145723425, 37.7580339263735 ], [ -122.40472107938929, 37.757950649275713 ], [ -122.404441730762329, 37.757748221369937 ], [ -122.404168659910013, 37.75752977302043 ], [ -122.403774405770974, 37.757138490742172 ], [ -122.403774084903432, 37.757138026202746 ], [ -122.403689260967766, 37.757015002579273 ], [ -122.403543859417937, 37.75680412126377 ], [ -122.403395700993769, 37.756471262485057 ], [ -122.403305530792395, 37.756165877853867 ], [ -122.403245024221292, 37.755760575231484 ], [ -122.403244936870763, 37.755759623462495 ], [ -122.403127143734139, 37.75447773377249 ], [ -122.403011715723153, 37.753221541143297 ], [ -122.40301031565609, 37.753201877425177 ], [ -122.402978169178084, 37.75275045704997 ], [ -122.403006670294943, 37.752445905732571 ], [ -122.403060331379024, 37.751915861053995 ], [ -122.403072643662085, 37.751794247946641 ], [ -122.403175027775376, 37.751281093014263 ], [ -122.403214572776321, 37.751164169122518 ], [ -122.403378511001179, 37.750679445903444 ], [ -122.403514246938869, 37.750281563827826 ], [ -122.403735650894049, 37.749583872707518 ], [ -122.403783562755194, 37.749432891426196 ], [ -122.403826366530197, 37.749298003881435 ], [ -122.403865672790147, 37.749174139069758 ], [ -122.403990987296382, 37.74878066971192 ], [ -122.404051662308461, 37.74859015799958 ], [ -122.404103617259366, 37.748427025595028 ], [ -122.404104297626958, 37.748424888760844 ], [ -122.404105247604519, 37.748421906188959 ], [ -122.404249303912664, 37.747969580021021 ], [ -122.404390053649081, 37.747536214374357 ], [ -122.404496510435962, 37.747208430674682 ], [ -122.40472494664624, 37.746505061967419 ], [ -122.40491012189095, 37.745826558312224 ], [ -122.405051159825348, 37.745369647465395 ], [ -122.405179630488661, 37.744981134097749 ], [ -122.405202201087945, 37.744938889063008 ], [ -122.405444172050537, 37.744486004341084 ], [ -122.405475695814175, 37.744427001636382 ], [ -122.405747110957691, 37.744028598841339 ], [ -122.405778655290121, 37.743989539741165 ], [ -122.406047831839984, 37.743656241756561 ], [ -122.406149889909912, 37.743534947555823 ], [ -122.406881612449212, 37.742665295031905 ], [ -122.407179681106143, 37.742274728523746 ], [ -122.407209491524853, 37.742235666028684 ], [ -122.407448073794797, 37.741860521932459 ], [ -122.407625696256517, 37.741528038897464 ], [ -122.407757062965644, 37.741253133394146 ], [ -122.407846654253319, 37.741024367104636 ], [ -122.407964646391505, 37.740662552272049 ], [ -122.408049229318891, 37.740339110042903 ], [ -122.408114071971212, 37.739818086787388 ], [ -122.408137030577961, 37.739635775942595 ], [ -122.407910235902733, 37.739622169745928 ], [ -122.407891817991583, 37.739621065115479 ], [ -122.407641980575562, 37.73960607595005 ], [ -122.406978585498265, 37.739566272603653 ], [ -122.40691098434678, 37.739429695993088 ], [ -122.406917382338506, 37.739360326809205 ], [ -122.406923419099328, 37.739294876190314 ], [ -122.40692734433064, 37.739234393770168 ], [ -122.406930338448149, 37.739188255204461 ], [ -122.406936851773693, 37.739087891690275 ], [ -122.406939830707117, 37.738876165961258 ], [ -122.406945393527934, 37.738693880058896 ], [ -122.40693392611557, 37.738601770051126 ], [ -122.406915744052654, 37.738455725148341 ], [ -122.406895428755547, 37.738323651840822 ], [ -122.406867742024218, 37.738143654094841 ], [ -122.406900092501772, 37.738009155282221 ], [ -122.406910504104971, 37.737965866913434 ], [ -122.406734307244236, 37.736552960385914 ], [ -122.40670383539134, 37.73630860402433 ], [ -122.406618861734884, 37.735896873766244 ], [ -122.406454646881144, 37.735510813404687 ], [ -122.406382307240833, 37.735418606514493 ], [ -122.406294659725731, 37.735306888886043 ], [ -122.406543556705884, 37.735230631177984 ], [ -122.406646483954859, 37.73519837501037 ], [ -122.406814899797354, 37.735145595835078 ], [ -122.406847917074074, 37.735135248636119 ], [ -122.407130003639637, 37.735046845926902 ], [ -122.407348459866085, 37.73497838329498 ], [ -122.408033938982058, 37.734745520041734 ], [ -122.408486051038935, 37.734591930477059 ], [ -122.409312695053686, 37.734284112011252 ], [ -122.410241243396115, 37.733882628159428 ], [ -122.41165477705286, 37.733366974354652 ], [ -122.413331412339687, 37.732631849917702 ], [ -122.413420514856341, 37.732598164337901 ], [ -122.414376034430035, 37.732236918329072 ], [ -122.414530950551168, 37.732192436697261 ], [ -122.415052879313009, 37.73204257200301 ], [ -122.415897414400035, 37.731880953714693 ], [ -122.416651654342999, 37.731819145397338 ], [ -122.417401517276474, 37.731856484581833 ], [ -122.41846272371707, 37.73186673188021 ], [ -122.419454332152029, 37.731867094633678 ], [ -122.420326686201122, 37.731814347002349 ], [ -122.421718952826723, 37.731607777327895 ], [ -122.4217053213399, 37.731806501069016 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":17,"ZIP_CODE":94134,"ID":94134},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.423335646405121, 37.727792365353856 ], [ -122.423335646419318, 37.727792365903014 ], [ -122.423508669179441, 37.728206721890601 ], [ -122.423584360438809, 37.728387748823138 ], [ -122.423739981620528, 37.728759936840348 ], [ -122.423740585686062, 37.728759904726353 ], [ -122.424198685585807, 37.728735553475715 ], [ -122.424688687008342, 37.728709478304708 ], [ -122.425289939392513, 37.728677480232541 ], [ -122.425963703408243, 37.728641021813154 ], [ -122.426024704407865, 37.729396982427588 ], [ -122.423797638913399, 37.729509407965139 ], [ -122.422942671063694, 37.729241733452504 ], [ -122.422503353186897, 37.729261991833724 ], [ -122.421440856780521, 37.729310979302717 ], [ -122.421182810911759, 37.729745420447983 ], [ -122.421083540431724, 37.729975107309578 ], [ -122.421017374424935, 37.730233164434182 ], [ -122.420964111358728, 37.730677319690216 ], [ -122.420944905836123, 37.73130857523288 ], [ -122.421753180203225, 37.731084669073972 ], [ -122.421730502033157, 37.73135209792499 ], [ -122.421736572397847, 37.731350897661805 ], [ -122.421730663628679, 37.731437047083624 ], [ -122.421718952826723, 37.731607777327895 ], [ -122.420326686201122, 37.731814347002349 ], [ -122.419454332152029, 37.731867094633678 ], [ -122.41846272371707, 37.73186673188021 ], [ -122.417401517276474, 37.731856484581833 ], [ -122.416651654342999, 37.731819145397338 ], [ -122.415897414400035, 37.731880953714693 ], [ -122.415052879313009, 37.73204257200301 ], [ -122.414530950551168, 37.732192436697261 ], [ -122.414376034430035, 37.732236918329072 ], [ -122.413420514856341, 37.732598164337901 ], [ -122.413331412339687, 37.732631849917702 ], [ -122.41165477705286, 37.733366974354652 ], [ -122.410241243396115, 37.733882628159428 ], [ -122.409312695053686, 37.734284112011252 ], [ -122.408486051038935, 37.734591930477059 ], [ -122.408033938982058, 37.734745520041734 ], [ -122.407348459866085, 37.73497838329498 ], [ -122.407130003639637, 37.735046845926902 ], [ -122.406847917074074, 37.735135248636119 ], [ -122.406814899797354, 37.735145595835078 ], [ -122.406646483954859, 37.73519837501037 ], [ -122.406543556705884, 37.735230631177984 ], [ -122.406294659725731, 37.735306888886043 ], [ -122.405494571184249, 37.734287050530888 ], [ -122.405096042524178, 37.733716127227488 ], [ -122.405059585407599, 37.733652395233406 ], [ -122.404878800551302, 37.733336356125804 ], [ -122.404657097641305, 37.732948782960683 ], [ -122.40465709692171, 37.732948781873532 ], [ -122.40405482060109, 37.731789516245591 ], [ -122.403961731325225, 37.731610333558521 ], [ -122.403400462440644, 37.730658352585962 ], [ -122.403021622188092, 37.729901901370539 ], [ -122.402752244737584, 37.729357163240891 ], [ -122.402209197740476, 37.728101973566574 ], [ -122.402105120777605, 37.727789703519925 ], [ -122.402039596395539, 37.727554690472438 ], [ -122.401875118236148, 37.726964759399728 ], [ -122.401822425920514, 37.726775260854211 ], [ -122.401474642450822, 37.725528485745301 ], [ -122.401471218295981, 37.725516183407578 ], [ -122.401182917574161, 37.724588254281116 ], [ -122.40078474798517, 37.723616209514844 ], [ -122.400784747286778, 37.723616209251418 ], [ -122.400661931084002, 37.723316373994798 ], [ -122.40038213245046, 37.722633285332655 ], [ -122.399925016822507, 37.721517272170509 ], [ -122.399830553211288, 37.721427080386505 ], [ -122.399600300155441, 37.720920363637823 ], [ -122.399419264352986, 37.720532021245042 ], [ -122.399309038031902, 37.720278334103305 ], [ -122.399208340593788, 37.719991530079234 ], [ -122.399125486878972, 37.719730004239857 ], [ -122.399066465573654, 37.719469200866385 ], [ -122.398943601880902, 37.718926286066001 ], [ -122.398942440206895, 37.718921151552976 ], [ -122.398923285260594, 37.718836507697276 ], [ -122.398913161799925, 37.718792447247658 ], [ -122.398799134608808, 37.718275024173522 ], [ -122.398787867001658, 37.718224410399863 ], [ -122.398759937061044, 37.718047446028777 ], [ -122.39871606167118, 37.717769450850419 ], [ -122.398686680058731, 37.717603871431201 ], [ -122.398668885707423, 37.717503589023465 ], [ -122.398561414050022, 37.716897923924947 ], [ -122.398499278161879, 37.716543657492224 ], [ -122.398550700112352, 37.7161815389411 ], [ -122.398565370170317, 37.716139616445538 ], [ -122.398643015232707, 37.715917722950913 ], [ -122.398656056102226, 37.71588045500463 ], [ -122.398735527529269, 37.715727131371494 ], [ -122.398839335741798, 37.715526852955328 ], [ -122.398953101659146, 37.715385829745912 ], [ -122.398991043085772, 37.715338797679301 ], [ -122.398991048786399, 37.715338790720075 ], [ -122.398990733617495, 37.715338865847912 ], [ -122.398990734294756, 37.715338865287599 ], [ -122.398552555430172, 37.715443409305585 ], [ -122.398471400839512, 37.715455433381891 ], [ -122.398259710629063, 37.715141974251068 ], [ -122.397834560573045, 37.714650610374164 ], [ -122.396885665233555, 37.713468431896139 ], [ -122.396615774145118, 37.713094103716635 ], [ -122.396615767431044, 37.713094016747043 ], [ -122.396209567629995, 37.712429108802013 ], [ -122.395984840101519, 37.711902635542479 ], [ -122.395804130724926, 37.711357784012904 ], [ -122.395699524288574, 37.710911289111898 ], [ -122.394789228222862, 37.711029491236808 ], [ -122.394533636579439, 37.711181739957787 ], [ -122.394415018271332, 37.711243467479711 ], [ -122.394301164504668, 37.711283892996612 ], [ -122.394130547970391, 37.711308547209811 ], [ -122.393916838957196, 37.711294747317396 ], [ -122.392609027560681, 37.711272141276474 ], [ -122.390835880106437, 37.711169771421694 ], [ -122.390887824662656, 37.71036523380814 ], [ -122.391332097355985, 37.710140738310088 ], [ -122.392656793824756, 37.709119608424643 ], [ -122.392432645117751, 37.708928100915109 ], [ -122.392444333503988, 37.708923483961478 ], [ -122.392459711870288, 37.708916369816677 ], [ -122.392473335584143, 37.708908253489831 ], [ -122.392486941819897, 37.70889945070968 ], [ -122.392498784665378, 37.708889302522401 ], [ -122.392510610730511, 37.708878468145663 ], [ -122.392524068414929, 37.708863830521395 ], [ -122.392559440339639, 37.708827208691588 ], [ -122.392572967908777, 37.708815316868559 ], [ -122.392584776482323, 37.708803796307102 ], [ -122.392598312774226, 37.708792247432399 ], [ -122.392611857807054, 37.708781042056593 ], [ -122.392623674754688, 37.708769864447994 ], [ -122.39263895660568, 37.708758974800666 ], [ -122.392652510357621, 37.708748112371396 ], [ -122.392666072850986, 37.708737593441008 ], [ -122.39268137181341, 37.708727389970818 ], [ -122.39269494304439, 37.708717214537501 ], [ -122.392710242682909, 37.70870701077785 ], [ -122.392756192651433, 37.708678459962563 ], [ -122.392771518490107, 37.708669285872482 ], [ -122.392791975788157, 37.708657969391702 ], [ -122.392832794235133, 37.708631560935011 ], [ -122.392860041474023, 37.708615328192714 ], [ -122.392875393166236, 37.708607184046727 ], [ -122.392889025524426, 37.708599411171832 ], [ -122.392904394682077, 37.708591953199182 ], [ -122.392918035766968, 37.708584523272208 ], [ -122.392941949172211, 37.708573151218971 ], [ -122.392977635730745, 37.708548885387124 ], [ -122.393011585450822, 37.708524304093004 ], [ -122.393045517668241, 37.708499036337294 ], [ -122.393079441122353, 37.708473425345893 ], [ -122.393113355819651, 37.708447471393349 ], [ -122.393167526617077, 37.70840230614084 ], [ -122.393582832216993, 37.708417948939243 ], [ -122.395113504570858, 37.708409867431477 ], [ -122.397085902715403, 37.708399425270557 ], [ -122.399684603917876, 37.708385616773455 ], [ -122.401309241246423, 37.708378554199705 ], [ -122.402497775210733, 37.708373373547339 ], [ -122.40338621311453, 37.708369492971435 ], [ -122.40510200377139, 37.708361979821355 ], [ -122.405343853958243, 37.708354977289922 ], [ -122.405521792033781, 37.708350038400255 ], [ -122.406475878190662, 37.708342152666113 ], [ -122.406591468680915, 37.708342377473876 ], [ -122.407290175418893, 37.708343733713313 ], [ -122.407753446712761, 37.708342067925997 ], [ -122.408110927534096, 37.708327349450251 ], [ -122.40829882656611, 37.708327401816014 ], [ -122.412359860013211, 37.708328460170456 ], [ -122.413340535135291, 37.70832869518982 ], [ -122.413594573052677, 37.708328955439633 ], [ -122.414219950784457, 37.708329593757632 ], [ -122.414374376554221, 37.708329750560253 ], [ -122.415233045955674, 37.708329360822155 ], [ -122.415330384121233, 37.708329316229424 ], [ -122.416223848405949, 37.708328179819176 ], [ -122.417093688537392, 37.708327067084589 ], [ -122.417207468396128, 37.708327057129232 ], [ -122.418047976840626, 37.708326981775464 ], [ -122.418165047871298, 37.708327396090446 ], [ -122.419017914810595, 37.708330411075799 ], [ -122.419120269682026, 37.708330983731479 ], [ -122.419237502940533, 37.708331640189144 ], [ -122.419704274317439, 37.708331586927457 ], [ -122.420073510611971, 37.708332523899031 ], [ -122.420159361284988, 37.708332741426119 ], [ -122.423764571500399, 37.708341826236627 ], [ -122.423361076063088, 37.709234055437079 ], [ -122.423353359735231, 37.709250935907697 ], [ -122.423353331596459, 37.709250997624174 ], [ -122.423820286343911, 37.709573973454503 ], [ -122.423971204711407, 37.709678357430306 ], [ -122.424550951226621, 37.710101873835256 ], [ -122.425118753539664, 37.710464462528329 ], [ -122.425572654326643, 37.710701178146003 ], [ -122.426490332391396, 37.711021642816618 ], [ -122.426849963523566, 37.711156197850272 ], [ -122.425769401653085, 37.714425227128565 ], [ -122.427973857260341, 37.715161057331514 ], [ -122.427571950566247, 37.71699744604517 ], [ -122.426961271013212, 37.717805116783104 ], [ -122.426390269927637, 37.718560725227924 ], [ -122.426390269596226, 37.718560725782737 ], [ -122.426390032692737, 37.718560604670934 ], [ -122.425834816801412, 37.718279388717512 ], [ -122.425605873732934, 37.718131895102509 ], [ -122.425411706342686, 37.717880972693159 ], [ -122.425177444570053, 37.717485960998928 ], [ -122.424942097378548, 37.717261064626705 ], [ -122.424687869969304, 37.717146210464122 ], [ -122.424656181661859, 37.717131894726805 ], [ -122.424528018591516, 37.717064916531086 ], [ -122.424258262597263, 37.717024059120966 ], [ -122.424022457403083, 37.717036533105109 ], [ -122.423774201550728, 37.717092319144726 ], [ -122.423530052223612, 37.717201923868423 ], [ -122.422472988486305, 37.717887379027822 ], [ -122.422642040011837, 37.718030648532753 ], [ -122.422885734123284, 37.71809195842259 ], [ -122.423023908872437, 37.718162895921928 ], [ -122.423452239422744, 37.718705588384864 ], [ -122.423536512782078, 37.718956983348477 ], [ -122.42348866361003, 37.719439263071187 ], [ -122.423554916906838, 37.719668150420404 ], [ -122.423736904433326, 37.71982328246721 ], [ -122.424032169669715, 37.719926258473294 ], [ -122.424800888544937, 37.7200238938456 ], [ -122.425478982693178, 37.720232473267444 ], [ -122.425478983024618, 37.720232472712645 ], [ -122.425479352540037, 37.720232586714161 ], [ -122.425479352547157, 37.72023258698875 ], [ -122.425664999767108, 37.720321846926637 ], [ -122.426022740865662, 37.720493848462766 ], [ -122.42602274262245, 37.720493849532829 ], [ -122.426022741606815, 37.720493850373522 ], [ -122.424918832446721, 37.722087021186233 ], [ -122.424897104558099, 37.722118378784295 ], [ -122.423806549912683, 37.723691155552039 ], [ -122.423577946908821, 37.723750386689403 ], [ -122.423577951775229, 37.723750454459399 ], [ -122.422830067678831, 37.723944194056337 ], [ -122.421846961042462, 37.724198859168652 ], [ -122.421846961049567, 37.724198859443213 ], [ -122.422043387171286, 37.724673029193113 ], [ -122.422342507091699, 37.725395088531037 ], [ -122.422342507113001, 37.725395089354791 ], [ -122.422840471972961, 37.726597115803735 ], [ -122.422840471987186, 37.726597116352892 ], [ -122.42312222730105, 37.727277221300007 ], [ -122.423246600371399, 37.727577430218268 ], [ -122.423335646405121, 37.727792365353856 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":18,"ZIP_CODE":94112,"ID":94112},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.427838803054428, 37.734693898279502 ], [ -122.427103368742522, 37.735457096504888 ], [ -122.424930534158477, 37.735266285585048 ], [ -122.424702562314437, 37.735369870957172 ], [ -122.422687909096169, 37.735204969342369 ], [ -122.42260172446116, 37.735176855221177 ], [ -122.422120806983799, 37.735152847768823 ], [ -122.422146910860818, 37.734962831393027 ], [ -122.422205425171413, 37.73485685013258 ], [ -122.422284286448345, 37.734779711262206 ], [ -122.422547222688962, 37.734619826084632 ], [ -122.422737437389159, 37.734490301194434 ], [ -122.422876476168085, 37.734369596551609 ], [ -122.422640968014662, 37.73418217013328 ], [ -122.42251406401526, 37.734049477037892 ], [ -122.422378321374794, 37.733842795338198 ], [ -122.42233700854446, 37.733668492264307 ], [ -122.422262570568407, 37.733475728240066 ], [ -122.42202732889227, 37.733140443779334 ], [ -122.42184863663951, 37.732986304256819 ], [ -122.421779146191113, 37.732885343728064 ], [ -122.421740792022078, 37.732743282983918 ], [ -122.421610219449562, 37.732670894611623 ], [ -122.421573075628018, 37.732579492315836 ], [ -122.421628644882077, 37.732486581446111 ], [ -122.421769540807844, 37.732442879558889 ], [ -122.421964308435761, 37.732433222436505 ], [ -122.422597636657429, 37.732308431174374 ], [ -122.423194763566187, 37.732223135593344 ], [ -122.423486414351174, 37.732261254158729 ], [ -122.423769382874056, 37.732162707171447 ], [ -122.424277944077048, 37.732133983506472 ], [ -122.425046994836066, 37.732129947854176 ], [ -122.42519868259302, 37.732129150959032 ], [ -122.425500227991904, 37.7320527573848 ], [ -122.425781691782262, 37.731929785903453 ], [ -122.425919712835267, 37.7318157721811 ], [ -122.426095455082049, 37.731670597839134 ], [ -122.426103813784607, 37.731651546856703 ], [ -122.425563267495079, 37.731578779884757 ], [ -122.424987445865384, 37.731559842008934 ], [ -122.424645313557747, 37.731548588455745 ], [ -122.424553925961277, 37.731549131439351 ], [ -122.423920024119482, 37.731552895324626 ], [ -122.422820482616018, 37.731641033131751 ], [ -122.4217053213399, 37.731806501069016 ], [ -122.421718952826723, 37.731607777327895 ], [ -122.421730663628679, 37.731437047083624 ], [ -122.421736572397847, 37.731350897661805 ], [ -122.421730502033157, 37.73135209792499 ], [ -122.421753180203225, 37.731084669073972 ], [ -122.420944905836123, 37.73130857523288 ], [ -122.420964111358728, 37.730677319690216 ], [ -122.421017374424935, 37.730233164434182 ], [ -122.421083540431724, 37.729975107309578 ], [ -122.421182810911759, 37.729745420447983 ], [ -122.421440856780521, 37.729310979302717 ], [ -122.422503353186897, 37.729261991833724 ], [ -122.422942671063694, 37.729241733452504 ], [ -122.423797638913399, 37.729509407965139 ], [ -122.426024704407865, 37.729396982427588 ], [ -122.425963703408243, 37.728641021813154 ], [ -122.425289939392513, 37.728677480232541 ], [ -122.424688687008342, 37.728709478304708 ], [ -122.424198685585807, 37.728735553475715 ], [ -122.423740585686062, 37.728759904726353 ], [ -122.423739981620528, 37.728759936840348 ], [ -122.423584360438809, 37.728387748823138 ], [ -122.423508669179441, 37.728206721890601 ], [ -122.423335646405121, 37.727792365353856 ], [ -122.423246600371399, 37.727577430218268 ], [ -122.42312222730105, 37.727277221300007 ], [ -122.422840471987186, 37.726597116352892 ], [ -122.422840471972961, 37.726597115803735 ], [ -122.422342507113001, 37.725395089354791 ], [ -122.422342507091699, 37.725395088531037 ], [ -122.422043387171286, 37.724673029193113 ], [ -122.421846961042462, 37.724198859168652 ], [ -122.422830067678831, 37.723944194056337 ], [ -122.423577951775229, 37.723750454459399 ], [ -122.423577946908821, 37.723750386689403 ], [ -122.423806549912683, 37.723691155552039 ], [ -122.424897104558099, 37.722118378784295 ], [ -122.424918832446721, 37.722087021186233 ], [ -122.426022741606815, 37.720493850373522 ], [ -122.42602274262245, 37.720493849532829 ], [ -122.426022740865662, 37.720493848462766 ], [ -122.425664999767108, 37.720321846926637 ], [ -122.425479352547157, 37.72023258698875 ], [ -122.425478983024618, 37.720232472712645 ], [ -122.425478982693178, 37.720232473267444 ], [ -122.424800888544937, 37.7200238938456 ], [ -122.424032169669715, 37.719926258473294 ], [ -122.423736904433326, 37.71982328246721 ], [ -122.423554916906838, 37.719668150420404 ], [ -122.42348866361003, 37.719439263071187 ], [ -122.423536512782078, 37.718956983348477 ], [ -122.423452239422744, 37.718705588384864 ], [ -122.423023908872437, 37.718162895921928 ], [ -122.422885734123284, 37.71809195842259 ], [ -122.422642040011837, 37.718030648532753 ], [ -122.422472988486305, 37.717887379027822 ], [ -122.423530052223612, 37.717201923868423 ], [ -122.423774201550728, 37.717092319144726 ], [ -122.424022457403083, 37.717036533105109 ], [ -122.424258262597263, 37.717024059120966 ], [ -122.424528018591516, 37.717064916531086 ], [ -122.424656181661859, 37.717131894726805 ], [ -122.424687869969304, 37.717146210464122 ], [ -122.424942097378548, 37.717261064626705 ], [ -122.425177444570053, 37.717485960998928 ], [ -122.425411706342686, 37.717880972693159 ], [ -122.425605873732934, 37.718131895102509 ], [ -122.425834816801412, 37.718279388717512 ], [ -122.426390032692737, 37.718560604670934 ], [ -122.426390269596226, 37.718560725782737 ], [ -122.426390269927637, 37.718560725227924 ], [ -122.426961271013212, 37.717805116783104 ], [ -122.42757190808544, 37.716997501404578 ], [ -122.427571950566247, 37.71699744604517 ], [ -122.427580759648123, 37.716957196731435 ], [ -122.427810303733594, 37.715908376197518 ], [ -122.427973857260341, 37.715161057331514 ], [ -122.425769401653085, 37.714425227128565 ], [ -122.42684686757103, 37.711165565601846 ], [ -122.426849963523566, 37.711156197850272 ], [ -122.426490332391396, 37.711021642816618 ], [ -122.425572654326643, 37.710701178146003 ], [ -122.425118753539664, 37.710464462528329 ], [ -122.424550951226621, 37.710101873835256 ], [ -122.423971204711407, 37.709678357430306 ], [ -122.423353331596459, 37.709250997624174 ], [ -122.423361076063088, 37.709234055437079 ], [ -122.423764571500399, 37.708341826236627 ], [ -122.423768921768058, 37.708341837314315 ], [ -122.423877843148816, 37.708342118381125 ], [ -122.425994336403065, 37.708310781158126 ], [ -122.426202061368684, 37.708307703589938 ], [ -122.427674537396697, 37.708285876646727 ], [ -122.428354189600114, 37.708305089572242 ], [ -122.429105296742478, 37.708326317449469 ], [ -122.429339593931815, 37.708323251263963 ], [ -122.430449087529411, 37.70830872506928 ], [ -122.43129493119001, 37.708297643647327 ], [ -122.432343143904646, 37.708295922670345 ], [ -122.433778966251097, 37.708293550010708 ], [ -122.434148404329434, 37.708292936416406 ], [ -122.434985771421609, 37.708291542195809 ], [ -122.436248762964979, 37.708289427645774 ], [ -122.438728105043637, 37.708285237562031 ], [ -122.440497203989452, 37.708282215784038 ], [ -122.440711209177138, 37.708281848403743 ], [ -122.441349676712647, 37.708280750220105 ], [ -122.442106190726975, 37.708279444504022 ], [ -122.444671046569766, 37.708274980891133 ], [ -122.44478757213254, 37.708274776994109 ], [ -122.445691081512706, 37.708249897066402 ], [ -122.445824359823575, 37.708249470051783 ], [ -122.447227656612327, 37.708244965564717 ], [ -122.449798855530389, 37.708236668750466 ], [ -122.452354883587788, 37.708228365382816 ], [ -122.454322408844959, 37.70822193637261 ], [ -122.454560786889971, 37.708221155056798 ], [ -122.455565069973886, 37.708215472275576 ], [ -122.455732056485743, 37.708217630626116 ], [ -122.455902300127136, 37.708219830519191 ], [ -122.457184544230842, 37.70823461994447 ], [ -122.457915234279184, 37.708243041121499 ], [ -122.458505268317239, 37.708230883488149 ], [ -122.459062187698038, 37.708219405843458 ], [ -122.459727762092839, 37.708205685584353 ], [ -122.459848666151245, 37.708200651285779 ], [ -122.460029970068362, 37.708193102258491 ], [ -122.46108479110967, 37.708202670088042 ], [ -122.461227604731107, 37.708198848520283 ], [ -122.46139057300131, 37.708194487863473 ], [ -122.461950847900269, 37.70819992107895 ], [ -122.462093547900324, 37.708193760482068 ], [ -122.462235775065267, 37.708187619950934 ], [ -122.462590335310921, 37.70818746608122 ], [ -122.462764782467445, 37.70818738953367 ], [ -122.463939046778805, 37.708202838503169 ], [ -122.464345228799317, 37.708207403972743 ], [ -122.464812351274205, 37.708212652628795 ], [ -122.465768040492705, 37.708210264664245 ], [ -122.466623471256085, 37.708208120693818 ], [ -122.468612008025019, 37.708203113190002 ], [ -122.468634481973396, 37.708203081190824 ], [ -122.468943918748693, 37.708202372165289 ], [ -122.468469108419114, 37.708682445380624 ], [ -122.468442186669975, 37.708710365091008 ], [ -122.46815544621434, 37.708936581998181 ], [ -122.467717389066479, 37.709282172736899 ], [ -122.467202952111606, 37.709607827013201 ], [ -122.467161376112116, 37.709634146029515 ], [ -122.466791287837083, 37.709825747176509 ], [ -122.465994326901708, 37.710153924678359 ], [ -122.464766855714529, 37.710481381431755 ], [ -122.464363457907425, 37.710527001097098 ], [ -122.464175624997623, 37.710548242222522 ], [ -122.462893196389857, 37.710562754126848 ], [ -122.462561257753663, 37.710567393100142 ], [ -122.462558461843784, 37.710567432270715 ], [ -122.462554670587338, 37.71117015272295 ], [ -122.462545712573657, 37.711171028559598 ], [ -122.462063256954337, 37.711372729296876 ], [ -122.462570051320355, 37.711370301468136 ], [ -122.462581299448402, 37.712273520359908 ], [ -122.462580658473911, 37.712523033743715 ], [ -122.46256899895387, 37.713150165038506 ], [ -122.462554985317752, 37.713903926321834 ], [ -122.462588724439357, 37.714029538822885 ], [ -122.462602039439204, 37.714307653173123 ], [ -122.462607827629938, 37.714883950429027 ], [ -122.462615213395566, 37.71561930379395 ], [ -122.462620481465109, 37.716143794339722 ], [ -122.46262477066405, 37.716570820282072 ], [ -122.462633312624419, 37.717421207682776 ], [ -122.462638771382373, 37.717866433871905 ], [ -122.462639625007327, 37.717936035524978 ], [ -122.46263854285489, 37.718211149542661 ], [ -122.462244936309219, 37.718219524954932 ], [ -122.462245294921956, 37.718767790464547 ], [ -122.46226246554707, 37.719928593578096 ], [ -122.462254399326852, 37.72000857322422 ], [ -122.462264896007014, 37.721694985883083 ], [ -122.46226548731488, 37.721827794893429 ], [ -122.462270801151405, 37.723021081969392 ], [ -122.462273544585969, 37.723637216450626 ], [ -122.462276364972297, 37.724270607125867 ], [ -122.462276854232826, 37.724380477322995 ], [ -122.462279017236384, 37.724866230039204 ], [ -122.462279803400207, 37.725042766873585 ], [ -122.462280269039496, 37.725147301470763 ], [ -122.462212628293415, 37.725265491161082 ], [ -122.462561310804759, 37.725391067720956 ], [ -122.462815474472038, 37.725482412532848 ], [ -122.462686726995429, 37.725774916753664 ], [ -122.46262180837526, 37.726335258944708 ], [ -122.462565711889994, 37.726822959746293 ], [ -122.462545638153259, 37.726997475605309 ], [ -122.462546035395761, 37.727106268284892 ], [ -122.462547067236983, 37.727225353979733 ], [ -122.462615761322709, 37.727529244060726 ], [ -122.462714226912738, 37.727738412010282 ], [ -122.462888304160828, 37.72805552868347 ], [ -122.46288814852555, 37.72805550243347 ], [ -122.462888197868679, 37.72805558978888 ], [ -122.462703368909061, 37.728024299159358 ], [ -122.462378284725844, 37.728011300874932 ], [ -122.462089038987699, 37.728047063364642 ], [ -122.461824751209633, 37.728118912555594 ], [ -122.46142222273329, 37.728330263725837 ], [ -122.460815856121073, 37.72868098095028 ], [ -122.461139723962631, 37.728765209783546 ], [ -122.461378769207158, 37.728787306916686 ], [ -122.461378549868385, 37.728787330621202 ], [ -122.461139150327014, 37.728765372338408 ], [ -122.460815517748841, 37.728680936862041 ], [ -122.460412720770037, 37.728739179843977 ], [ -122.460002483633559, 37.728739437629635 ], [ -122.460023966205156, 37.729195728883113 ], [ -122.459983752683073, 37.729522472170189 ], [ -122.459930163903692, 37.729706628889033 ], [ -122.459878403068345, 37.729884503080157 ], [ -122.459783802497654, 37.730109540441724 ], [ -122.459563710785162, 37.730368588301999 ], [ -122.459352156941819, 37.730515761910091 ], [ -122.459193144317396, 37.730602954490251 ], [ -122.458688935885434, 37.730751520241796 ], [ -122.458472470688633, 37.730752827866375 ], [ -122.458222500186622, 37.73077738189027 ], [ -122.457474238952088, 37.730997495241198 ], [ -122.456607498028021, 37.731187733113579 ], [ -122.455762555159509, 37.731348802743547 ], [ -122.454915878760758, 37.731464997636976 ], [ -122.453590911574565, 37.731488405776453 ], [ -122.453411343594681, 37.731530646828205 ], [ -122.451146666771351, 37.731536846888879 ], [ -122.448866265260094, 37.731542959168735 ], [ -122.447291821211039, 37.731547153756608 ], [ -122.446578400413941, 37.7315490470612 ], [ -122.444288854528963, 37.731568915105107 ], [ -122.444294941941365, 37.731069863889161 ], [ -122.444298409699798, 37.730708221303239 ], [ -122.444291303797655, 37.729896860703782 ], [ -122.444284269547836, 37.729093639959018 ], [ -122.44427751391413, 37.728322242080615 ], [ -122.444276984301908, 37.728261755504967 ], [ -122.444131311025359, 37.72831838217401 ], [ -122.443973112888827, 37.728379877183251 ], [ -122.442954953118544, 37.728915555981267 ], [ -122.442595296877187, 37.729101680603421 ], [ -122.442082956691792, 37.729308363921405 ], [ -122.442006614261629, 37.729375267903364 ], [ -122.442010214558891, 37.729910949382834 ], [ -122.440664990612632, 37.729919329476168 ], [ -122.43969146797258, 37.730323477880063 ], [ -122.439686065703896, 37.730325720705899 ], [ -122.438692929843569, 37.730737998359416 ], [ -122.437166749161392, 37.731365897534992 ], [ -122.436835967120587, 37.731467212874229 ], [ -122.436678949019353, 37.731538395224071 ], [ -122.436668162612392, 37.731543298105045 ], [ -122.435457687984979, 37.732093484109448 ], [ -122.434992781477959, 37.732295287547394 ], [ -122.434989951388332, 37.732296516038524 ], [ -122.434823956379304, 37.732249430441868 ], [ -122.434644432402948, 37.732322139093768 ], [ -122.434512093568429, 37.732323526771246 ], [ -122.434440716858973, 37.732534804028113 ], [ -122.432720773871381, 37.733187185661393 ], [ -122.432572047381726, 37.733243596430682 ], [ -122.43132522808267, 37.733716495194997 ], [ -122.430931197463138, 37.733865940717834 ], [ -122.430928172484656, 37.733867087971888 ], [ -122.430400796753801, 37.734118700718604 ], [ -122.429799382942633, 37.734405632509876 ], [ -122.429797927680781, 37.734406452684077 ], [ -122.429606994304805, 37.734482866043706 ], [ -122.429365174143101, 37.734579643964238 ], [ -122.428766264762999, 37.73481932892178 ], [ -122.42843713263963, 37.734951046304573 ], [ -122.428436951461066, 37.734950968784666 ], [ -122.428436980709748, 37.734950949626743 ], [ -122.427838803054428, 37.734693898279502 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":19,"ZIP_CODE":94116,"ID":94116},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.491334899611488, 37.737293023539365 ], [ -122.491211452414888, 37.737221069184358 ], [ -122.491162508402653, 37.737157782139001 ], [ -122.490686267381363, 37.736541968564268 ], [ -122.490552748713441, 37.736251597078756 ], [ -122.490521485540071, 37.736028873151284 ], [ -122.490460674310157, 37.735842274774221 ], [ -122.490270108429897, 37.735606337180243 ], [ -122.490526224357907, 37.735470000646821 ], [ -122.490725734916396, 37.735399781312303 ], [ -122.490973609504408, 37.735348171552815 ], [ -122.491320518441114, 37.735327019185135 ], [ -122.491730212101302, 37.735301758325164 ], [ -122.491805731315921, 37.735279805981911 ], [ -122.492142715245791, 37.735181846965403 ], [ -122.492330945602859, 37.73504482611267 ], [ -122.492843999903116, 37.734842083695071 ], [ -122.493274340840912, 37.734785121286002 ], [ -122.493406966558723, 37.734856121008917 ], [ -122.493407285267097, 37.734856242527158 ], [ -122.493857076611491, 37.73502785037892 ], [ -122.493857150107345, 37.735028823489081 ], [ -122.4940149282546, 37.735024137316628 ], [ -122.494014877350082, 37.735023413250019 ], [ -122.493941607430031, 37.733981341508411 ], [ -122.493941605376719, 37.733981316545631 ], [ -122.494403119131789, 37.733960247035334 ], [ -122.496448643026866, 37.733877460645239 ], [ -122.496635991376749, 37.733770846301013 ], [ -122.496635997172902, 37.733770843181105 ], [ -122.496635997165527, 37.733770842906516 ], [ -122.496636262010625, 37.733770813420726 ], [ -122.496636264393828, 37.733770812006838 ], [ -122.496807213285692, 37.733750829171804 ], [ -122.4970611531011, 37.733738715676616 ], [ -122.497251243304476, 37.7337296478455 ], [ -122.497675024009141, 37.73378860832171 ], [ -122.497707486783483, 37.733793124978028 ], [ -122.498050148013945, 37.73385852689691 ], [ -122.49837749236211, 37.733942575660954 ], [ -122.498483756692679, 37.733969859923228 ], [ -122.498948533172893, 37.734128137325406 ], [ -122.499086082983126, 37.734239092175393 ], [ -122.499180283, 37.734301056816975 ], [ -122.499196335607635, 37.734311616338935 ], [ -122.499430330098079, 37.734471850699563 ], [ -122.500140914702612, 37.734827630984967 ], [ -122.500289079616721, 37.734896880574155 ], [ -122.500571951887039, 37.735029088020617 ], [ -122.500650675572956, 37.735059919015036 ], [ -122.500888239775747, 37.73515295885273 ], [ -122.500970549161394, 37.735174012383368 ], [ -122.501097483002411, 37.735206481213844 ], [ -122.501097483348147, 37.735206481207975 ], [ -122.501214897179494, 37.735242075875206 ], [ -122.501291847576297, 37.735265403511711 ], [ -122.501555214836827, 37.735330188314435 ], [ -122.501556481916552, 37.735330499723666 ], [ -122.502021315734993, 37.73539219398544 ], [ -122.50206735537283, 37.735396211199387 ], [ -122.50249812714712, 37.735433799348435 ], [ -122.503104759187963, 37.735466491452826 ], [ -122.504189206002195, 37.735470928034005 ], [ -122.505257352091178, 37.735475287872006 ], [ -122.505711404999388, 37.735473569905054 ], [ -122.506142139643117, 37.735471938745221 ], [ -122.506541776696594, 37.735470423847289 ], [ -122.506717419598758, 37.735469757763546 ], [ -122.506718392445464, 37.735463437680252 ], [ -122.508528202252251, 37.735448935792135 ], [ -122.50851723304288, 37.735491014374531 ], [ -122.508503948199092, 37.735575367390467 ], [ -122.508509635115971, 37.735593812897228 ], [ -122.508534142132689, 37.735604726176433 ], [ -122.508524280726746, 37.73562377983793 ], [ -122.508510961647445, 37.73564289244193 ], [ -122.50850628586997, 37.735661857701452 ], [ -122.508508623546277, 37.735748348011157 ], [ -122.508514421788533, 37.735770911828716 ], [ -122.508520015957387, 37.735785925179286 ], [ -122.508510052128926, 37.735801203199763 ], [ -122.508477309195854, 37.735805538751634 ], [ -122.508464092111296, 37.735828426720389 ], [ -122.508469983447981, 37.735854422414455 ], [ -122.508474053027456, 37.735877015976307 ], [ -122.508461856322953, 37.735937657650084 ], [ -122.508465576123427, 37.736075286791404 ], [ -122.508449773613393, 37.7361304959501 ], [ -122.508448690994484, 37.73621841805182 ], [ -122.508451371852146, 37.73631760760221 ], [ -122.508490175464019, 37.736473524223285 ], [ -122.508516049607124, 37.736662968752803 ], [ -122.508603414533738, 37.736823895128929 ], [ -122.508662443511639, 37.736960238247853 ], [ -122.50867888000765, 37.737056446014627 ], [ -122.508719731680841, 37.737160135129862 ], [ -122.508734334501312, 37.737316464525655 ], [ -122.508765426520924, 37.737442982668369 ], [ -122.508785682509867, 37.737552516867808 ], [ -122.508770696382811, 37.737637929009765 ], [ -122.508786455872283, 37.737709082028033 ], [ -122.508760949000333, 37.737789179556565 ], [ -122.508763268491435, 37.737874983674544 ], [ -122.50874159008174, 37.737968750866465 ], [ -122.5087476021437, 37.738191154145746 ], [ -122.508756496465509, 37.738392219395308 ], [ -122.508803998140891, 37.738613915588019 ], [ -122.508803138582451, 37.738710074824468 ], [ -122.508864043688376, 37.738915747292424 ], [ -122.5088940788266, 37.739003138823669 ], [ -122.508897419160689, 37.739126696329038 ], [ -122.50889009011712, 37.73923944778879 ], [ -122.508822474607925, 37.739425335507839 ], [ -122.508791610932704, 37.73956321107876 ], [ -122.508779986132339, 37.739708999607267 ], [ -122.508780357262495, 37.739722728217863 ], [ -122.50877604314833, 37.739755078870481 ], [ -122.508764442526711, 37.739773818808054 ], [ -122.508752731253111, 37.739788440149496 ], [ -122.508741502089606, 37.739820908689246 ], [ -122.508753863186314, 37.739830312411385 ], [ -122.508778826631357, 37.739858043722968 ], [ -122.508779958572916, 37.739899915709536 ], [ -122.508761814014846, 37.7399325021469 ], [ -122.508762704722017, 37.739965450811162 ], [ -122.508770491923499, 37.739997595154925 ], [ -122.508776179583251, 37.740016040354824 ], [ -122.508747792652912, 37.740053608631989 ], [ -122.508748423567027, 37.740076947268811 ], [ -122.508737212914269, 37.74011010223709 ], [ -122.508737713932007, 37.740128635860302 ], [ -122.508745501147203, 37.740160780479421 ], [ -122.50873947678167, 37.740193847030952 ], [ -122.508723191132987, 37.740231208721582 ], [ -122.508723822048324, 37.740254547632397 ], [ -122.508732128829621, 37.740305911755783 ], [ -122.508742872573777, 37.740319463533034 ], [ -122.50877339326972, 37.74036083476765 ], [ -122.508810829778682, 37.740402088090121 ], [ -122.508829008239559, 37.740434742019097 ], [ -122.508813223629531, 37.740490637616951 ], [ -122.508861162085935, 37.740536519108112 ], [ -122.508850322907236, 37.740583402687079 ], [ -122.508858110211349, 37.74061554702174 ], [ -122.508869614883267, 37.740657242433585 ], [ -122.508870616992439, 37.740694309675469 ], [ -122.508866692231578, 37.740741075644983 ], [ -122.508879295085322, 37.740759402667216 ], [ -122.508914260413761, 37.740773228492962 ], [ -122.508932680259875, 37.740814805724348 ], [ -122.508928625962866, 37.740856766401905 ], [ -122.508929256940604, 37.740880105034634 ], [ -122.508935445433963, 37.740917083849979 ], [ -122.508953234348851, 37.740935322719352 ], [ -122.508983384240864, 37.740962965288134 ], [ -122.509008589756519, 37.740999619859899 ], [ -122.509026879459341, 37.741036392343048 ], [ -122.509023085376484, 37.741087963041082 ], [ -122.509036559926997, 37.741138552557295 ], [ -122.509054739012925, 37.741171206441557 ], [ -122.509067601488525, 37.741199144021785 ], [ -122.5090958931589, 37.741222010744757 ], [ -122.509133200021253, 37.741258459227247 ], [ -122.50918506342488, 37.741257574887214 ], [ -122.509205212680868, 37.74129912258816 ], [ -122.509246237071991, 37.741345121825837 ], [ -122.509242554147008, 37.741400811115767 ], [ -122.509226769642837, 37.741456706760005 ], [ -122.50922790187596, 37.741498579280254 ], [ -122.509216431361367, 37.741522123988162 ], [ -122.509199662741182, 37.741541638830299 ], [ -122.509177093246976, 37.741602457387373 ], [ -122.509208116202714, 37.741662362111221 ], [ -122.509186903920153, 37.741709422591256 ], [ -122.509189298261234, 37.741797972091135 ], [ -122.509154236925113, 37.741844581962283 ], [ -122.509149811487788, 37.741872814035773 ], [ -122.509151073599824, 37.741919491290815 ], [ -122.509123057336595, 37.741970788250718 ], [ -122.509100375943362, 37.742027488213331 ], [ -122.509101006984949, 37.742050826840561 ], [ -122.509092137481943, 37.742106604551111 ], [ -122.509063378372446, 37.742130444293039 ], [ -122.50905227925395, 37.742167717855253 ], [ -122.509053541309754, 37.742214395109038 ], [ -122.509066774807934, 37.742256061019717 ], [ -122.509073353587084, 37.742307454847364 ], [ -122.509057438852423, 37.742358545723746 ], [ -122.509051785633744, 37.74240534060808 ], [ -122.509053177611264, 37.742456822871205 ], [ -122.509073957471671, 37.742521709498256 ], [ -122.509091988431635, 37.742548871927937 ], [ -122.509110538400861, 37.742595254410702 ], [ -122.509106614374701, 37.74264202008699 ], [ -122.509124533674893, 37.742665064210797 ], [ -122.50913085233006, 37.742706847741204 ], [ -122.509143845016951, 37.742739590042241 ], [ -122.509166932263881, 37.742761859020533 ], [ -122.50919239764383, 37.742808123575315 ], [ -122.509181187122891, 37.742841278564811 ], [ -122.509159213148223, 37.742860195402194 ], [ -122.509185214866079, 37.742990233896222 ], [ -122.509180659445065, 37.743013660954873 ], [ -122.509194023430766, 37.743060131850363 ], [ -122.509212184156269, 37.743092099550239 ], [ -122.509235029879775, 37.74310544465424 ], [ -122.509248023028022, 37.743138186935724 ], [ -122.509243207416404, 37.743152004255805 ], [ -122.509249786389432, 37.743203397791333 ], [ -122.509267947166521, 37.743235365207241 ], [ -122.50930010317154, 37.743337142122911 ], [ -122.509302627635748, 37.743430496606479 ], [ -122.509334412528517, 37.743518545183825 ], [ -122.509352573411604, 37.743550512310456 ], [ -122.509365807315376, 37.74359217817824 ], [ -122.509378299405142, 37.743606386832958 ], [ -122.50939077259082, 37.743619909062254 ], [ -122.509397091484274, 37.74366169284626 ], [ -122.509409824223226, 37.743684825098981 ], [ -122.509422427717567, 37.743703152328656 ], [ -122.509416403366075, 37.743736218895179 ], [ -122.509417405789478, 37.743773286113324 ], [ -122.509442110915671, 37.74379140724664 ], [ -122.509460290482991, 37.743824061059733 ], [ -122.509467837052512, 37.743847281472782 ], [ -122.509478581442835, 37.743860833174935 ], [ -122.509497132326601, 37.74390721558072 ], [ -122.509505050216035, 37.743944165138849 ], [ -122.509522969938899, 37.743967208647867 ], [ -122.509535572817498, 37.743985535876377 ], [ -122.509565966198053, 37.744022101859116 ], [ -122.509567729859413, 37.744087312700294 ], [ -122.50958033276946, 37.744105639923646 ], [ -122.509604330613158, 37.744161543870057 ], [ -122.509617063502262, 37.744184676098449 ], [ -122.509642400382361, 37.744226135524023 ], [ -122.50963585625108, 37.74423998206241 ], [ -122.509631802164265, 37.744281942740074 ], [ -122.509637749945398, 37.744309998183795 ], [ -122.509655669451874, 37.744333041677137 ], [ -122.509651355796905, 37.744365392330948 ], [ -122.509652358345974, 37.744402459543146 ], [ -122.509682770174749, 37.744439711928955 ], [ -122.509684274023797, 37.744495312746096 ], [ -122.509661202059561, 37.74453759777208 ], [ -122.509656906960942, 37.744570634854803 ], [ -122.509652462986452, 37.744598180504454 ], [ -122.509634336575232, 37.744631453474433 ], [ -122.509635079200464, 37.744658910667582 ], [ -122.509630653432438, 37.744687142751694 ], [ -122.509607841992747, 37.744739038046106 ], [ -122.509616019927876, 37.744785597059909 ], [ -122.509592687920644, 37.744818272053067 ], [ -122.509529982316536, 37.744866040185691 ], [ -122.509506149350315, 37.744880181550315 ], [ -122.509466886438972, 37.744899393264149 ], [ -122.509443442946818, 37.744927949648201 ], [ -122.509461493197179, 37.744955798714784 ], [ -122.509462365703229, 37.744988060641646 ], [ -122.50945818152897, 37.745025216299389 ], [ -122.509441783806565, 37.745058459754802 ], [ -122.509435740789897, 37.745090839884973 ], [ -122.509432447662917, 37.745160944171666 ], [ -122.509397957547932, 37.745292700871097 ], [ -122.509353566936483, 37.745697951409504 ], [ -122.509335859850864, 37.745938614544613 ], [ -122.509427065710852, 37.746369022956515 ], [ -122.509460469864493, 37.746452922841264 ], [ -122.509505472532595, 37.746581950726871 ], [ -122.509517033840751, 37.746625705328505 ], [ -122.509530306206301, 37.746668744003671 ], [ -122.509540138624189, 37.746712528086029 ], [ -122.50955170066463, 37.746756282671512 ], [ -122.509559804532088, 37.746800096229578 ], [ -122.509567926974654, 37.746844596216341 ], [ -122.509574301938841, 37.746888439256921 ], [ -122.50958069512302, 37.74693296845772 ], [ -122.509587070448092, 37.746976811491038 ], [ -122.509590005803872, 37.747021399934077 ], [ -122.509594670781297, 37.747065958880377 ], [ -122.509597084346751, 37.747155194721792 ], [ -122.509772363824212, 37.747496265262193 ], [ -122.509783516941724, 37.747524918382545 ], [ -122.509806418075982, 37.747604190625147 ], [ -122.509810433332206, 37.747624724253029 ], [ -122.509816158624176, 37.747644542243904 ], [ -122.509820173546927, 37.747665076151769 ], [ -122.509822459192577, 37.747685639827814 ], [ -122.509826455889467, 37.747705487025407 ], [ -122.509833313854301, 37.747767177210982 ], [ -122.509835523477918, 37.747848862313226 ], [ -122.509834351235696, 37.747869484689943 ], [ -122.509833161123524, 37.747889420899924 ], [ -122.509831989218355, 37.747910042996011 ], [ -122.509829088027573, 37.747930694860493 ], [ -122.509827897905609, 37.74795063079565 ], [ -122.509824997065294, 37.747971282928546 ], [ -122.509778471867705, 37.748297593791527 ], [ -122.509717126110829, 37.748715495135052 ], [ -122.509711528533515, 37.748764349563523 ], [ -122.509708924691878, 37.748795984010961 ], [ -122.509706339422777, 37.748828305162085 ], [ -122.509705464552383, 37.748859910397449 ], [ -122.509704608248597, 37.748892202061995 ], [ -122.50970373303835, 37.748923807577505 ], [ -122.509705738305371, 37.748997941669188 ], [ -122.508363946491727, 37.74907680068609 ], [ -122.507940323213063, 37.749101694546454 ], [ -122.507941547211104, 37.749110937340276 ], [ -122.507539948063609, 37.749128748547342 ], [ -122.50729515180268, 37.749139604462776 ], [ -122.507286878880223, 37.749139971457424 ], [ -122.50728687853443, 37.749139971463322 ], [ -122.507286886587565, 37.749140090270473 ], [ -122.507286887279179, 37.749140090258685 ], [ -122.507416228284868, 37.751003284446853 ], [ -122.506347526734444, 37.751051944046772 ], [ -122.505276576525688, 37.751093151070108 ], [ -122.504203312772219, 37.751143789774702 ], [ -122.503133002600279, 37.751190357338089 ], [ -122.502060320882052, 37.751239765057655 ], [ -122.500987488435712, 37.75128639412403 ], [ -122.499914456955352, 37.751333766429582 ], [ -122.499914122812314, 37.751333781439868 ], [ -122.49937768349335, 37.751357494487337 ], [ -122.498842248697912, 37.751381160579498 ], [ -122.498442545251379, 37.751398004902029 ], [ -122.497770416046876, 37.751426327269549 ], [ -122.497770415009455, 37.751426327287128 ], [ -122.496702184257288, 37.751476079301845 ], [ -122.49581055415868, 37.751518288226762 ], [ -122.495630257074851, 37.751526822572394 ], [ -122.49509879355503, 37.751544749172808 ], [ -122.495098259533435, 37.751544767553312 ], [ -122.49456080780611, 37.751568259028382 ], [ -122.493488045146222, 37.751613904571322 ], [ -122.492417458516726, 37.751662024433998 ], [ -122.491344845233968, 37.751710225381885 ], [ -122.490270381873529, 37.751758499707634 ], [ -122.48919356840311, 37.751806869260896 ], [ -122.488143190546495, 37.751854042116229 ], [ -122.487053067380344, 37.751903269835523 ], [ -122.48598818277614, 37.751950794949664 ], [ -122.48491485069583, 37.751998192013865 ], [ -122.483844155588841, 37.75204546291927 ], [ -122.48276958366516, 37.752092894785363 ], [ -122.48170210782861, 37.752140004119113 ], [ -122.480628878786973, 37.752187357305665 ], [ -122.479557564859533, 37.752234616335052 ], [ -122.478486061226221, 37.752281873458429 ], [ -122.4774149778289, 37.752329102778496 ], [ -122.476292240229284, 37.752378599147249 ], [ -122.476292239846927, 37.752378597780194 ], [ -122.476291890478677, 37.752378612978674 ], [ -122.476291890529794, 37.752378614900692 ], [ -122.475276421588944, 37.752423947680597 ], [ -122.474740669236724, 37.752447861779451 ], [ -122.474205182950101, 37.752471761013865 ], [ -122.473133075589757, 37.752519603580488 ], [ -122.472007574280582, 37.752569817871482 ], [ -122.470907529168414, 37.752615836450325 ], [ -122.471122146869178, 37.753216025593119 ], [ -122.471174197654705, 37.753356133265093 ], [ -122.471187692098596, 37.753493865266243 ], [ -122.471190660490961, 37.753605743703318 ], [ -122.471171093123701, 37.753733616626192 ], [ -122.471132268263645, 37.753877430013475 ], [ -122.471079638048607, 37.753995444111091 ], [ -122.471036498728921, 37.754100284913058 ], [ -122.471016495996267, 37.754217122306045 ], [ -122.471019321832557, 37.754265617625428 ], [ -122.471049094699751, 37.75451479556704 ], [ -122.471016758783364, 37.754797170870887 ], [ -122.470916907310823, 37.75477064959378 ], [ -122.470428100059209, 37.754750285613063 ], [ -122.470075601814969, 37.754705621480454 ], [ -122.470018818714578, 37.754692394187302 ], [ -122.469719537880266, 37.754630546382018 ], [ -122.469359681800768, 37.754536443616175 ], [ -122.469229538348586, 37.754492641945887 ], [ -122.469187312711114, 37.754478429881637 ], [ -122.469043420308736, 37.754428685878558 ], [ -122.468949194118821, 37.754383817642378 ], [ -122.468837396357713, 37.754298754678686 ], [ -122.46875232271276, 37.754192126033097 ], [ -122.468629004224212, 37.753985873398783 ], [ -122.46853368295227, 37.753778395652951 ], [ -122.468440863346331, 37.753541228150766 ], [ -122.468335071492149, 37.753243730756957 ], [ -122.468181079371874, 37.752955569756089 ], [ -122.468031369650532, 37.75278739056494 ], [ -122.467915171465805, 37.752734664618352 ], [ -122.467804242122298, 37.752723264514827 ], [ -122.467642627702773, 37.752756208616617 ], [ -122.46660049988607, 37.752803078204508 ], [ -122.465533177566329, 37.752851071595934 ], [ -122.464462034762747, 37.752899226938901 ], [ -122.464462034791779, 37.752899228037201 ], [ -122.464462004720289, 37.752899229087859 ], [ -122.463398931733735, 37.75298135079364 ], [ -122.463398833027838, 37.752981215914545 ], [ -122.463165642273253, 37.752743295475163 ], [ -122.462772959403608, 37.752449458308092 ], [ -122.462467546932245, 37.752187424267689 ], [ -122.462176881380387, 37.751866525322576 ], [ -122.461851812215116, 37.751624201717213 ], [ -122.461621806880288, 37.751517360697065 ], [ -122.461523602837886, 37.75150356127773 ], [ -122.461357402458418, 37.751255115112428 ], [ -122.461130726036544, 37.75091814728394 ], [ -122.460646598340617, 37.749905586886342 ], [ -122.460488100882344, 37.749710225074402 ], [ -122.459910793377546, 37.749171745450226 ], [ -122.459625716264128, 37.748941671345293 ], [ -122.459200706652084, 37.748504001538066 ], [ -122.458941590023073, 37.748201275736406 ], [ -122.458816156308444, 37.748040115735854 ], [ -122.458785941599359, 37.747811900102363 ], [ -122.458856680033747, 37.7476570668547 ], [ -122.458970102890007, 37.747514391535915 ], [ -122.459174106111192, 37.747286620942795 ], [ -122.459174375277186, 37.74728632007151 ], [ -122.461381097416904, 37.745569497508143 ], [ -122.463685995946705, 37.743749409879626 ], [ -122.464736798394597, 37.743658625608425 ], [ -122.465806989998114, 37.743574050343277 ], [ -122.466043187720601, 37.743555382675872 ], [ -122.4668594971902, 37.743490862582995 ], [ -122.467747743753378, 37.743412622582262 ], [ -122.468561098363182, 37.741503345390441 ], [ -122.468671688881855, 37.741487738762387 ], [ -122.46903011455143, 37.741472060437133 ], [ -122.470104939284042, 37.741425112172415 ], [ -122.471225939871744, 37.741383106823285 ], [ -122.471094271054184, 37.739515149668783 ], [ -122.470962730039105, 37.737648904688974 ], [ -122.472088826157801, 37.737598476381557 ], [ -122.473161338869033, 37.737550437503423 ], [ -122.47327754880429, 37.737518149435381 ], [ -122.474232714891599, 37.737476308128976 ], [ -122.475288554960258, 37.737454742960537 ], [ -122.476368270747585, 37.737407342172453 ], [ -122.477443897267278, 37.737360110526431 ], [ -122.478500149938654, 37.73731300537402 ], [ -122.479601690542523, 37.737266045133403 ], [ -122.480654887744791, 37.73721905491567 ], [ -122.481727269492282, 37.73717192680251 ], [ -122.484981330342137, 37.737106613405395 ], [ -122.485055057260084, 37.737081691563745 ], [ -122.485398323256604, 37.736886930845941 ], [ -122.485767077957547, 37.736757243866982 ], [ -122.486239320534182, 37.736758103009961 ], [ -122.486865148034397, 37.736893072836374 ], [ -122.487473746906744, 37.73696000969079 ], [ -122.487883946457515, 37.736972903025247 ], [ -122.488261361358497, 37.736979897727672 ], [ -122.488518054177234, 37.737001890327612 ], [ -122.488933343471572, 37.73715804150379 ], [ -122.48917282500021, 37.737387715271872 ], [ -122.489310346380378, 37.737544144541232 ], [ -122.489559638156635, 37.737725144708122 ], [ -122.489794342484018, 37.737821521499782 ], [ -122.489970938868055, 37.737956983380037 ], [ -122.490364187143001, 37.737929559098433 ], [ -122.490475969759899, 37.737832474268195 ], [ -122.490695166321217, 37.737732995785407 ], [ -122.490894410355324, 37.737610557460023 ], [ -122.491113859834144, 37.737397356998116 ], [ -122.491198309070924, 37.737311342176547 ], [ -122.491334899611488, 37.737293023539365 ] ], [ [ -122.459625733970427, 37.748941660612438 ], [ -122.459625856985753, 37.74894158961829 ], [ -122.459625856632712, 37.748941589349464 ], [ -122.459625733970427, 37.748941660612438 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":20,"ZIP_CODE":94114,"ID":94114},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.451366939667807, 37.758575670531805 ], [ -122.451372847861364, 37.758604122239966 ], [ -122.451553087455522, 37.759472365763493 ], [ -122.449214958651069, 37.759610853827809 ], [ -122.448576884007139, 37.759648639321185 ], [ -122.448534508559618, 37.759045234831405 ], [ -122.448080121328474, 37.759090506458826 ], [ -122.447681986744499, 37.759189835272018 ], [ -122.447394862769713, 37.759372842727622 ], [ -122.447157396221257, 37.759660681065917 ], [ -122.446952816919733, 37.760170129150154 ], [ -122.446866213158088, 37.76042156830691 ], [ -122.446579328750119, 37.76090155472 ], [ -122.446433636964471, 37.761006719141555 ], [ -122.446409895656728, 37.761094344377824 ], [ -122.44652973647915, 37.761396213495424 ], [ -122.446783403627563, 37.761781413728215 ], [ -122.446783402935864, 37.761781413739634 ], [ -122.44642928686055, 37.76181245987528 ], [ -122.446384044294348, 37.761816426422072 ], [ -122.446401427721412, 37.762069683149655 ], [ -122.446391621016517, 37.76223195154369 ], [ -122.44628722735257, 37.762310164748847 ], [ -122.446246565080784, 37.762246873735464 ], [ -122.446167833254592, 37.762219287792306 ], [ -122.445930590545728, 37.762233223779305 ], [ -122.445825769194499, 37.762264137786076 ], [ -122.445692026290132, 37.762347953618033 ], [ -122.444663866724483, 37.763326501903514 ], [ -122.44441170822752, 37.76398692869914 ], [ -122.443434935848089, 37.763875622244342 ], [ -122.443247528217242, 37.763690608015906 ], [ -122.442951036556252, 37.763677959114567 ], [ -122.44294975946913, 37.764109072128207 ], [ -122.443199827408847, 37.764468898600072 ], [ -122.443215275433289, 37.764557545459958 ], [ -122.443278634379993, 37.764726164248771 ], [ -122.443263297846215, 37.765217752592115 ], [ -122.443347278899211, 37.765332794099429 ], [ -122.443210588891787, 37.765339994614024 ], [ -122.442086687309455, 37.765324419445463 ], [ -122.441931912880605, 37.765295099009755 ], [ -122.441241683591315, 37.765270858517731 ], [ -122.439501839688162, 37.766575524599709 ], [ -122.438555364477878, 37.766297386980668 ], [ -122.438386133953244, 37.766664738151036 ], [ -122.438291383601225, 37.766725780787596 ], [ -122.438219625977609, 37.766701399454838 ], [ -122.437879374385105, 37.76661079550852 ], [ -122.437684727134425, 37.766587115085294 ], [ -122.4374853951944, 37.766644323028956 ], [ -122.437333800177683, 37.766762171805773 ], [ -122.437288601235366, 37.766922046842083 ], [ -122.437291829491301, 37.767045826510717 ], [ -122.43729899343451, 37.767221930124791 ], [ -122.436980399947345, 37.767244348801164 ], [ -122.436478247038266, 37.767274662557512 ], [ -122.436625219679314, 37.768918977544402 ], [ -122.436588267341477, 37.76900080227221 ], [ -122.435794213398353, 37.769058453615109 ], [ -122.43489319213792, 37.769113797429938 ], [ -122.433572207534368, 37.769178369516744 ], [ -122.432464341208131, 37.769249650838944 ], [ -122.431570380896062, 37.769307161387864 ], [ -122.431356624058139, 37.76932091157898 ], [ -122.430247361256178, 37.769392261627225 ], [ -122.429905643091914, 37.769407921549679 ], [ -122.429127985682982, 37.769456128057627 ], [ -122.428991181191208, 37.769394223715665 ], [ -122.428218351470321, 37.769440923680406 ], [ -122.426683978032827, 37.769533626427062 ], [ -122.426309438735913, 37.769602597220121 ], [ -122.426902347012131, 37.769049368265463 ], [ -122.426693183304053, 37.767869018742559 ], [ -122.426693183296933, 37.76786901846797 ], [ -122.426615944414863, 37.767069730096857 ], [ -122.426572006355102, 37.766615035704866 ], [ -122.426538465047457, 37.766267922745747 ], [ -122.426518991136163, 37.766066400051031 ], [ -122.426490697526233, 37.765773605772118 ], [ -122.426381708477521, 37.764645690891633 ], [ -122.426381708399177, 37.764645687871273 ], [ -122.426317477898522, 37.763970002371671 ], [ -122.426228478902843, 37.763030870557735 ], [ -122.426224290129298, 37.762962298008539 ], [ -122.426204067323269, 37.762631239367813 ], [ -122.426191463523168, 37.762538363286502 ], [ -122.426149283375466, 37.762227539381186 ], [ -122.426149283368346, 37.762227539106618 ], [ -122.426145984060597, 37.762160358437526 ], [ -122.426076501815189, 37.761427133937481 ], [ -122.426076501462219, 37.761427133668562 ], [ -122.425985721165645, 37.760498692937027 ], [ -122.425920302092379, 37.759829613405913 ], [ -122.425900090784694, 37.759619242549249 ], [ -122.425843422635126, 37.759029397589842 ], [ -122.425766807348751, 37.758226828975253 ], [ -122.425766807341631, 37.758226828700685 ], [ -122.425689459367419, 37.757429672933782 ], [ -122.42568945931761, 37.757429671011749 ], [ -122.425645855643012, 37.756979041458848 ], [ -122.425612216172169, 37.756631383038098 ], [ -122.425491892915787, 37.755387845874338 ], [ -122.425457179889037, 37.755029078716305 ], [ -122.425425666412067, 37.754703378159874 ], [ -122.425302616947704, 37.753431591109177 ], [ -122.425302616566313, 37.753431589741957 ], [ -122.425152541686245, 37.751841785894676 ], [ -122.4251525416649, 37.751841785070944 ], [ -122.425122809405835, 37.751528900123922 ], [ -122.425075700414453, 37.751033151258099 ], [ -122.424999224155329, 37.750232718354916 ], [ -122.424999224133984, 37.75023271753119 ], [ -122.424922999639648, 37.749434901505936 ], [ -122.427200037712353, 37.749295720374967 ], [ -122.429422761644645, 37.749157853016314 ], [ -122.431639579453815, 37.749028214467948 ], [ -122.433851103876819, 37.748895972089151 ], [ -122.436067172923103, 37.748762035575652 ], [ -122.438139804541592, 37.748636730271706 ], [ -122.438246126408771, 37.748664500736062 ], [ -122.440402009224243, 37.748642072742477 ], [ -122.440693299152798, 37.748639039270962 ], [ -122.4414080949674, 37.748610013081198 ], [ -122.441477149443557, 37.748591599630018 ], [ -122.441916701553239, 37.748474391279807 ], [ -122.442519008868075, 37.748183215938361 ], [ -122.442584207288078, 37.748079345098553 ], [ -122.443161821262549, 37.747504352694399 ], [ -122.443453448246288, 37.747477579218923 ], [ -122.443473512241141, 37.748002572121706 ], [ -122.443473812008847, 37.74801042178742 ], [ -122.443486020026867, 37.748345516454542 ], [ -122.443434635522365, 37.749091646853778 ], [ -122.44259888979461, 37.749156165729936 ], [ -122.442599224378554, 37.749160242994655 ], [ -122.442583534001741, 37.749266790173017 ], [ -122.442693363008104, 37.750413947729008 ], [ -122.442776988488347, 37.750697651678763 ], [ -122.442782695565214, 37.750773110847675 ], [ -122.442782889125965, 37.750775670827849 ], [ -122.442832455660607, 37.751431039472649 ], [ -122.442817470436609, 37.751454127059596 ], [ -122.442982766064986, 37.751545025906275 ], [ -122.442775383396778, 37.752377050296218 ], [ -122.442775038632988, 37.752378432471772 ], [ -122.442524333279991, 37.752382565152622 ], [ -122.442492558984341, 37.752606697266998 ], [ -122.442239114579749, 37.752829681730105 ], [ -122.442056693562165, 37.753070846058556 ], [ -122.441886398393621, 37.753365106672398 ], [ -122.441807410207034, 37.753470934450007 ], [ -122.441501225348532, 37.753721419417111 ], [ -122.441307496038533, 37.753879905149773 ], [ -122.441162634059779, 37.754090414508028 ], [ -122.44107583131526, 37.754178484324051 ], [ -122.440897310558796, 37.754492600197032 ], [ -122.440449630137792, 37.755065428273227 ], [ -122.440344935902942, 37.755227929193452 ], [ -122.440113197925641, 37.755606296679595 ], [ -122.440032113187002, 37.755796618022245 ], [ -122.440028760145466, 37.755956541681734 ], [ -122.440133892987774, 37.756422684783992 ], [ -122.440296908436025, 37.756652260712109 ], [ -122.440975109290761, 37.756855155327102 ], [ -122.441311420390406, 37.75688501757589 ], [ -122.441891917804512, 37.756707900118627 ], [ -122.442226754965375, 37.756642418026821 ], [ -122.442229654337552, 37.756643729156551 ], [ -122.442234277014876, 37.756645819486522 ], [ -122.442241604390318, 37.756649132680884 ], [ -122.442338618241578, 37.756692996803793 ], [ -122.442524865881779, 37.756832757000566 ], [ -122.442618313376656, 37.756939880143335 ], [ -122.442822513313288, 37.757228212937811 ], [ -122.442914855315252, 37.757360460271151 ], [ -122.443513115466942, 37.757015898193345 ], [ -122.44359095735247, 37.756973190948777 ], [ -122.443933292768804, 37.756707199362893 ], [ -122.44469570432544, 37.75722410905459 ], [ -122.444812173070659, 37.757253442709903 ], [ -122.444964327713464, 37.757272877138014 ], [ -122.444969690519684, 37.757271714308636 ], [ -122.444978623456407, 37.757199356159234 ], [ -122.44531471170977, 37.756562327523987 ], [ -122.445646089047287, 37.756449470405634 ], [ -122.445946403378542, 37.756413329216429 ], [ -122.446950354992993, 37.75655039856936 ], [ -122.446777335972257, 37.756299129719707 ], [ -122.446339300582281, 37.75591138652841 ], [ -122.446125719389443, 37.755803738269194 ], [ -122.445929097870021, 37.755830086405965 ], [ -122.445464111666666, 37.75598407248431 ], [ -122.445268371613437, 37.755920565713375 ], [ -122.445221502655059, 37.755736527336694 ], [ -122.445347807952828, 37.755618935076164 ], [ -122.44578153535943, 37.755506535020608 ], [ -122.446152412695255, 37.755464475455021 ], [ -122.446560265846969, 37.755346452369793 ], [ -122.446809203706863, 37.755349269900414 ], [ -122.447004077099621, 37.75543789136227 ], [ -122.447530410096462, 37.755821232451311 ], [ -122.447682922964361, 37.755868400984937 ], [ -122.447851945395087, 37.755820566236046 ], [ -122.447961600338971, 37.755673235404537 ], [ -122.44794315940031, 37.755531524105997 ], [ -122.447698643463639, 37.754829811793044 ], [ -122.447375994048841, 37.754217662794012 ], [ -122.44720983000947, 37.754042891582813 ], [ -122.447450790660298, 37.753903429730649 ], [ -122.447546138718849, 37.753815754469287 ], [ -122.447656226877982, 37.753773037573623 ], [ -122.447842792647691, 37.753750582173005 ], [ -122.447974401539952, 37.753701051764345 ], [ -122.448075396501437, 37.753621892463592 ], [ -122.448145439689242, 37.753500194902855 ], [ -122.448141772510084, 37.753360343523973 ], [ -122.448073149249666, 37.75322587034826 ], [ -122.44795103635677, 37.753120264118444 ], [ -122.447707056312382, 37.752702854501173 ], [ -122.447536095260375, 37.752481955041475 ], [ -122.447740900123705, 37.752288718875811 ], [ -122.448209648267067, 37.752018216178747 ], [ -122.448345547044426, 37.751925564530218 ], [ -122.44842671498688, 37.751814445339285 ], [ -122.448475010516702, 37.751690954837258 ], [ -122.448479024859196, 37.751533756090204 ], [ -122.448535342970942, 37.751302507611712 ], [ -122.448730034866358, 37.750901860878599 ], [ -122.448837529908516, 37.750828266590112 ], [ -122.449185119457937, 37.750637403226534 ], [ -122.449304804219054, 37.750547171075254 ], [ -122.449423303862474, 37.750411755760133 ], [ -122.449497860416159, 37.750255542747738 ], [ -122.449681795644992, 37.749823083722987 ], [ -122.449716548818643, 37.74953978039732 ], [ -122.449640314591349, 37.749314114769071 ], [ -122.449543092528529, 37.749181799119881 ], [ -122.449400479496887, 37.749106035740034 ], [ -122.449245295819139, 37.74910598186397 ], [ -122.449051151579454, 37.749182809813966 ], [ -122.448885055528038, 37.749338875396077 ], [ -122.448264206892432, 37.750168319632976 ], [ -122.448133451017753, 37.75025012344306 ], [ -122.447957681483132, 37.750270249048668 ], [ -122.447060946228802, 37.749998786557995 ], [ -122.446924377309614, 37.749962298069669 ], [ -122.445803050365413, 37.749296324298363 ], [ -122.445657849639957, 37.749137284365275 ], [ -122.445634816186484, 37.748982685093061 ], [ -122.445696556781456, 37.748854668447294 ], [ -122.445900228666389, 37.74876090078547 ], [ -122.446146312903167, 37.748733159469879 ], [ -122.446321171479013, 37.748781931740275 ], [ -122.446513423639288, 37.748873466020136 ], [ -122.44714942379963, 37.749338660628091 ], [ -122.447347720899344, 37.749453771264633 ], [ -122.447558108041335, 37.749512717159995 ], [ -122.447695695115499, 37.749484613169258 ], [ -122.447794029968421, 37.749407650434719 ], [ -122.448271537838281, 37.748586113005615 ], [ -122.448649270998317, 37.747987545863559 ], [ -122.44873793021948, 37.747816100622572 ], [ -122.449048273698679, 37.747075129958219 ], [ -122.449145702641545, 37.746860421020024 ], [ -122.449310056560847, 37.746715637417083 ], [ -122.44944655863172, 37.746660402786539 ], [ -122.449658366925917, 37.746790485969299 ], [ -122.449829421216677, 37.7468448367704 ], [ -122.449121036812883, 37.748486108456696 ], [ -122.450376213037472, 37.748836617132255 ], [ -122.450378440966844, 37.74915691493446 ], [ -122.450359832675659, 37.74936931962273 ], [ -122.450278577377304, 37.749812923634934 ], [ -122.450120041484055, 37.750377135131941 ], [ -122.450039762259507, 37.750789548444018 ], [ -122.450020192405731, 37.751134853236394 ], [ -122.449818467802629, 37.751170814837231 ], [ -122.44965771853829, 37.751260239674203 ], [ -122.449537611901278, 37.75139818204417 ], [ -122.449421587723563, 37.751919823116488 ], [ -122.449322640472062, 37.752393440459898 ], [ -122.449260062142201, 37.752640188644804 ], [ -122.449222626079077, 37.752826418335388 ], [ -122.44920235250531, 37.75298761609767 ], [ -122.449195253073, 37.753141525321581 ], [ -122.44921167048372, 37.753342773463253 ], [ -122.449250446345715, 37.75354718765756 ], [ -122.449338624202724, 37.75376669417966 ], [ -122.449567372082669, 37.754139767157625 ], [ -122.449714539832698, 37.754072287920813 ], [ -122.45001235604478, 37.753935733822416 ], [ -122.450708861489431, 37.753616367449496 ], [ -122.450797400040912, 37.753766170392268 ], [ -122.450940567642817, 37.75387933530601 ], [ -122.451110760292124, 37.753931215767722 ], [ -122.451360262589361, 37.75396141724395 ], [ -122.451594424355719, 37.753898832915297 ], [ -122.452570281407503, 37.75354206761132 ], [ -122.452736650019233, 37.753666208179531 ], [ -122.453410821175368, 37.753818557980566 ], [ -122.454229599548796, 37.754062132001749 ], [ -122.454309928578283, 37.75416682276385 ], [ -122.454154362960978, 37.755029376887862 ], [ -122.454089386335994, 37.755285428850698 ], [ -122.453643273006946, 37.755857139298925 ], [ -122.453512429965073, 37.756126075057203 ], [ -122.453345167458252, 37.756697980973108 ], [ -122.453533591760348, 37.756819465356074 ], [ -122.453617386887871, 37.756948631540013 ], [ -122.453769459328285, 37.75746785416225 ], [ -122.453652871332849, 37.757570195093017 ], [ -122.453594261080696, 37.757621283813904 ], [ -122.453326709060633, 37.757812928758618 ], [ -122.453317408957801, 37.757819578594621 ], [ -122.452876092298638, 37.758073671104697 ], [ -122.45283476350059, 37.758097464572913 ], [ -122.45229781656198, 37.758277073170099 ], [ -122.452047941226652, 37.758343705002019 ], [ -122.451408535854284, 37.758561502025017 ], [ -122.45136693942257, 37.758575661196261 ], [ -122.451366939667807, 37.758575670531805 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":21,"ZIP_CODE":94131,"ID":94131},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.453769459328285, 37.75746785416225 ], [ -122.453617386887871, 37.756948631540013 ], [ -122.453533591760348, 37.756819465356074 ], [ -122.453345167458252, 37.756697980973108 ], [ -122.453512429965073, 37.756126075057203 ], [ -122.453643273006946, 37.755857139298925 ], [ -122.454089386335994, 37.755285428850698 ], [ -122.454154362960978, 37.755029376887862 ], [ -122.454309928578283, 37.75416682276385 ], [ -122.454229599548796, 37.754062132001749 ], [ -122.453410821175368, 37.753818557980566 ], [ -122.452736650019233, 37.753666208179531 ], [ -122.452570281407503, 37.75354206761132 ], [ -122.451594424355719, 37.753898832915297 ], [ -122.451360262589361, 37.75396141724395 ], [ -122.451110760292124, 37.753931215767722 ], [ -122.450940567642817, 37.75387933530601 ], [ -122.450797400040912, 37.753766170392268 ], [ -122.450708861489431, 37.753616367449496 ], [ -122.45001235604478, 37.753935733822416 ], [ -122.449714539832698, 37.754072287920813 ], [ -122.449567372082669, 37.754139767157625 ], [ -122.449338624202724, 37.75376669417966 ], [ -122.449250446345715, 37.75354718765756 ], [ -122.44921167048372, 37.753342773463253 ], [ -122.449195253073, 37.753141525321581 ], [ -122.44920235250531, 37.75298761609767 ], [ -122.449222626079077, 37.752826418335388 ], [ -122.449260062142201, 37.752640188644804 ], [ -122.449322640472062, 37.752393440459898 ], [ -122.449421587723563, 37.751919823116488 ], [ -122.449537611901278, 37.75139818204417 ], [ -122.44965771853829, 37.751260239674203 ], [ -122.449818467802629, 37.751170814837231 ], [ -122.450020192405731, 37.751134853236394 ], [ -122.450039762259507, 37.750789548444018 ], [ -122.450120041484055, 37.750377135131941 ], [ -122.450278577377304, 37.749812923634934 ], [ -122.450359832675659, 37.74936931962273 ], [ -122.450378440966844, 37.74915691493446 ], [ -122.450376213037472, 37.748836617132255 ], [ -122.449121036812883, 37.748486108456696 ], [ -122.449829421216677, 37.7468448367704 ], [ -122.449658366925917, 37.746790485969299 ], [ -122.44944655863172, 37.746660402786539 ], [ -122.449310056560847, 37.746715637417083 ], [ -122.449145702641545, 37.746860421020024 ], [ -122.449048273698679, 37.747075129958219 ], [ -122.44873793021948, 37.747816100622572 ], [ -122.448649270998317, 37.747987545863559 ], [ -122.448271537838281, 37.748586113005615 ], [ -122.447794029968421, 37.749407650434719 ], [ -122.447695695115499, 37.749484613169258 ], [ -122.447558108041335, 37.749512717159995 ], [ -122.447347720899344, 37.749453771264633 ], [ -122.44714942379963, 37.749338660628091 ], [ -122.446513423639288, 37.748873466020136 ], [ -122.446321171479013, 37.748781931740275 ], [ -122.446146312903167, 37.748733159469879 ], [ -122.445900228666389, 37.74876090078547 ], [ -122.445696556781456, 37.748854668447294 ], [ -122.445634816186484, 37.748982685093061 ], [ -122.445657849639957, 37.749137284365275 ], [ -122.445803050365413, 37.749296324298363 ], [ -122.446924377309614, 37.749962298069669 ], [ -122.447060946228802, 37.749998786557995 ], [ -122.447957681483132, 37.750270249048668 ], [ -122.448133451017753, 37.75025012344306 ], [ -122.448264206892432, 37.750168319632976 ], [ -122.448885055528038, 37.749338875396077 ], [ -122.449051151579454, 37.749182809813966 ], [ -122.449245295819139, 37.74910598186397 ], [ -122.449400479496887, 37.749106035740034 ], [ -122.449543092528529, 37.749181799119881 ], [ -122.449640314591349, 37.749314114769071 ], [ -122.449716548818643, 37.74953978039732 ], [ -122.449681795644992, 37.749823083722987 ], [ -122.449497860416159, 37.750255542747738 ], [ -122.449423303862474, 37.750411755760133 ], [ -122.449304804219054, 37.750547171075254 ], [ -122.449185119457937, 37.750637403226534 ], [ -122.448837529908516, 37.750828266590112 ], [ -122.448730034866358, 37.750901860878599 ], [ -122.448535342970942, 37.751302507611712 ], [ -122.448479024859196, 37.751533756090204 ], [ -122.448475010516702, 37.751690954837258 ], [ -122.44842671498688, 37.751814445339285 ], [ -122.448345547044426, 37.751925564530218 ], [ -122.448209648267067, 37.752018216178747 ], [ -122.447740900123705, 37.752288718875811 ], [ -122.447536095260375, 37.752481955041475 ], [ -122.447707056312382, 37.752702854501173 ], [ -122.44795103635677, 37.753120264118444 ], [ -122.448073149249666, 37.75322587034826 ], [ -122.448141772510084, 37.753360343523973 ], [ -122.448145439689242, 37.753500194902855 ], [ -122.448075396501437, 37.753621892463592 ], [ -122.447974401539952, 37.753701051764345 ], [ -122.447842792647691, 37.753750582173005 ], [ -122.447656226877982, 37.753773037573623 ], [ -122.447546138718849, 37.753815754469287 ], [ -122.447450790660298, 37.753903429730649 ], [ -122.44720983000947, 37.754042891582813 ], [ -122.447375994048841, 37.754217662794012 ], [ -122.447698643463639, 37.754829811793044 ], [ -122.44794315940031, 37.755531524105997 ], [ -122.447961600338971, 37.755673235404537 ], [ -122.447851945395087, 37.755820566236046 ], [ -122.447682922964361, 37.755868400984937 ], [ -122.447530410096462, 37.755821232451311 ], [ -122.447004077099621, 37.75543789136227 ], [ -122.446809203706863, 37.755349269900414 ], [ -122.446560265846969, 37.755346452369793 ], [ -122.446152412695255, 37.755464475455021 ], [ -122.44578153535943, 37.755506535020608 ], [ -122.445347807952828, 37.755618935076164 ], [ -122.445221502655059, 37.755736527336694 ], [ -122.445268371613437, 37.755920565713375 ], [ -122.445464111666666, 37.75598407248431 ], [ -122.445929097870021, 37.755830086405965 ], [ -122.446125719389443, 37.755803738269194 ], [ -122.446339300582281, 37.75591138652841 ], [ -122.446777335972257, 37.756299129719707 ], [ -122.446950354992993, 37.75655039856936 ], [ -122.445946403378542, 37.756413329216429 ], [ -122.445646089047287, 37.756449470405634 ], [ -122.44531471170977, 37.756562327523987 ], [ -122.444978623456407, 37.757199356159234 ], [ -122.444969690519684, 37.757271714308636 ], [ -122.444964327713464, 37.757272877138014 ], [ -122.444812173070659, 37.757253442709903 ], [ -122.44469570432544, 37.75722410905459 ], [ -122.443933292768804, 37.756707199362893 ], [ -122.44359095735247, 37.756973190948777 ], [ -122.443513115466942, 37.757015898193345 ], [ -122.442914855315252, 37.757360460271151 ], [ -122.442822513313288, 37.757228212937811 ], [ -122.442618313376656, 37.756939880143335 ], [ -122.442524865881779, 37.756832757000566 ], [ -122.442338618241578, 37.756692996803793 ], [ -122.442241604390318, 37.756649132680884 ], [ -122.442234277014876, 37.756645819486522 ], [ -122.442229654337552, 37.756643729156551 ], [ -122.442226754965375, 37.756642418026821 ], [ -122.441891917804512, 37.756707900118627 ], [ -122.441311420390406, 37.75688501757589 ], [ -122.440975109290761, 37.756855155327102 ], [ -122.440296908436025, 37.756652260712109 ], [ -122.440133892987774, 37.756422684783992 ], [ -122.440028760145466, 37.755956541681734 ], [ -122.440032113187002, 37.755796618022245 ], [ -122.440113197925641, 37.755606296679595 ], [ -122.440344935902942, 37.755227929193452 ], [ -122.440449630137792, 37.755065428273227 ], [ -122.440897310558796, 37.754492600197032 ], [ -122.44107583131526, 37.754178484324051 ], [ -122.441162634059779, 37.754090414508028 ], [ -122.441307496038533, 37.753879905149773 ], [ -122.441501225348532, 37.753721419417111 ], [ -122.441807410207034, 37.753470934450007 ], [ -122.441886398393621, 37.753365106672398 ], [ -122.442056693562165, 37.753070846058556 ], [ -122.442239114579749, 37.752829681730105 ], [ -122.442492558984341, 37.752606697266998 ], [ -122.442524333279991, 37.752382565152622 ], [ -122.442775038632988, 37.752378432471772 ], [ -122.442775383396778, 37.752377050296218 ], [ -122.442982766064986, 37.751545025906275 ], [ -122.442817470436609, 37.751454127059596 ], [ -122.442832455660607, 37.751431039472649 ], [ -122.442782889125965, 37.750775670827849 ], [ -122.442782695565214, 37.750773110847675 ], [ -122.442776988488347, 37.750697651678763 ], [ -122.442693363008104, 37.750413947729008 ], [ -122.442583534001741, 37.749266790173017 ], [ -122.442599224378554, 37.749160242994655 ], [ -122.44259888979461, 37.749156165729936 ], [ -122.443434635522365, 37.749091646853778 ], [ -122.443486020026867, 37.748345516454542 ], [ -122.443473812008847, 37.74801042178742 ], [ -122.443473512241141, 37.748002572121706 ], [ -122.443453448246288, 37.747477579218923 ], [ -122.443161821262549, 37.747504352694399 ], [ -122.442584207288078, 37.748079345098553 ], [ -122.442519008868075, 37.748183215938361 ], [ -122.441916701553239, 37.748474391279807 ], [ -122.441477149443557, 37.748591599630018 ], [ -122.4414080949674, 37.748610013081198 ], [ -122.440693299152798, 37.748639039270962 ], [ -122.440402009224243, 37.748642072742477 ], [ -122.438246126408771, 37.748664500736062 ], [ -122.438139804541592, 37.748636730271706 ], [ -122.436067172923103, 37.748762035575652 ], [ -122.433851103876819, 37.748895972089151 ], [ -122.431639579453815, 37.749028214467948 ], [ -122.429422761644645, 37.749157853016314 ], [ -122.427200037712353, 37.749295720374967 ], [ -122.424922999639648, 37.749434901505936 ], [ -122.424845024283727, 37.748632587554638 ], [ -122.424845018024243, 37.748632519532975 ], [ -122.424841979744244, 37.748600757493776 ], [ -122.424768284589831, 37.747830340365347 ], [ -122.424768280884535, 37.747830304166378 ], [ -122.424689793548367, 37.747033402901096 ], [ -122.424602793343411, 37.746241400149849 ], [ -122.424538964982034, 37.745435717069675 ], [ -122.424459208282684, 37.744635998834639 ], [ -122.424384862816794, 37.743838216035606 ], [ -122.424309369085989, 37.7430347552692 ], [ -122.424233277120777, 37.742236301639601 ], [ -122.424233272287097, 37.742236301993223 ], [ -122.424233472639315, 37.742235957277522 ], [ -122.424233478510288, 37.742235956906946 ], [ -122.424301394893192, 37.742119600447609 ], [ -122.42417135664968, 37.740713439585669 ], [ -122.42413709700044, 37.740335654620864 ], [ -122.424258152196032, 37.739934707389949 ], [ -122.42414746787631, 37.739869414698418 ], [ -122.424147154546787, 37.739869230001858 ], [ -122.424147154179678, 37.739869229183775 ], [ -122.424063599996956, 37.739784297520274 ], [ -122.424284283357963, 37.738949691036076 ], [ -122.424531564221411, 37.738368292265967 ], [ -122.424696469855888, 37.738101223886673 ], [ -122.424711669489241, 37.738076607801148 ], [ -122.424904804743889, 37.737763817504508 ], [ -122.425110714349969, 37.737550673136937 ], [ -122.425230653676863, 37.737426519232308 ], [ -122.425439441891498, 37.737210392933726 ], [ -122.425832974995387, 37.736873263301263 ], [ -122.426500890836181, 37.73630106743056 ], [ -122.426544994076067, 37.736269396547655 ], [ -122.42729729676671, 37.735729149898575 ], [ -122.427738169173168, 37.735412543347451 ], [ -122.42783624298761, 37.735347761815902 ], [ -122.428436951461066, 37.734950968784666 ], [ -122.42843713263963, 37.734951046304573 ], [ -122.428766264762999, 37.73481932892178 ], [ -122.429365174143101, 37.734579643964238 ], [ -122.429606994304805, 37.734482866043706 ], [ -122.429797927680781, 37.734406452684077 ], [ -122.429799382942633, 37.734405632509876 ], [ -122.430400796753801, 37.734118700718604 ], [ -122.430928172484656, 37.733867087971888 ], [ -122.430931197463138, 37.733865940717834 ], [ -122.43132522808267, 37.733716495194997 ], [ -122.432572047381726, 37.733243596430682 ], [ -122.432720773871381, 37.733187185661393 ], [ -122.434440716858973, 37.732534804028113 ], [ -122.434512093568429, 37.732323526771246 ], [ -122.434644432402948, 37.732322139093768 ], [ -122.434823956379304, 37.732249430441868 ], [ -122.434989951388332, 37.732296516038524 ], [ -122.434992781477959, 37.732295287547394 ], [ -122.435457687984979, 37.732093484109448 ], [ -122.436668162612392, 37.731543298105045 ], [ -122.436678949019353, 37.731538395224071 ], [ -122.436835967120587, 37.731467212874229 ], [ -122.437166749161392, 37.731365897534992 ], [ -122.438692929843569, 37.730737998359416 ], [ -122.439686065703896, 37.730325720705899 ], [ -122.43969146797258, 37.730323477880063 ], [ -122.440664990612632, 37.729919329476168 ], [ -122.442010214558891, 37.729910949382834 ], [ -122.442006614261629, 37.729375267903364 ], [ -122.442082956691792, 37.729308363921405 ], [ -122.442595296877187, 37.729101680603421 ], [ -122.442954953118544, 37.728915555981267 ], [ -122.443973112888827, 37.728379877183251 ], [ -122.444131311025359, 37.72831838217401 ], [ -122.444276984301908, 37.728261755504967 ], [ -122.44427751391413, 37.728322242080615 ], [ -122.444284269547836, 37.729093639959018 ], [ -122.444291303797655, 37.729896860703782 ], [ -122.444298409699798, 37.730708221303239 ], [ -122.444294941941365, 37.731069863889161 ], [ -122.444288854528963, 37.731568915105107 ], [ -122.444299518643774, 37.732277163251723 ], [ -122.44431434932487, 37.732346901474607 ], [ -122.444320397855094, 37.733087687518228 ], [ -122.444320121334613, 37.733811072362919 ], [ -122.445605378551107, 37.733800711254226 ], [ -122.445782219446897, 37.733850288395629 ], [ -122.445695180894745, 37.733970768223749 ], [ -122.445385609625191, 37.734245207403205 ], [ -122.445350300553969, 37.734322189420951 ], [ -122.445353637361492, 37.734548793463254 ], [ -122.444336617762318, 37.734557437927307 ], [ -122.442971182760076, 37.734564427784264 ], [ -122.44298838327488, 37.734915120161688 ], [ -122.443241645458286, 37.734935120886668 ], [ -122.443498916758756, 37.735041781619209 ], [ -122.443868794328736, 37.73522293273804 ], [ -122.444190291728404, 37.735407445883219 ], [ -122.444280987817251, 37.735484218369663 ], [ -122.444414926545633, 37.735547154436588 ], [ -122.444456723960371, 37.735604611251425 ], [ -122.444478073435704, 37.735720552668923 ], [ -122.444433832419023, 37.736070356056409 ], [ -122.444405709994072, 37.736218559056141 ], [ -122.444306066715512, 37.736409368208768 ], [ -122.444187688286519, 37.736528330103852 ], [ -122.444038854214782, 37.736575290313169 ], [ -122.443842427221611, 37.736579809812575 ], [ -122.443683487927487, 37.73653803376142 ], [ -122.443602235926093, 37.736502583404238 ], [ -122.442657322787326, 37.737118881702763 ], [ -122.442488947503193, 37.737289169592358 ], [ -122.442421017736137, 37.737438198043598 ], [ -122.442403843641571, 37.737639851367689 ], [ -122.44244617419956, 37.737799536516135 ], [ -122.442579349780331, 37.738171569110513 ], [ -122.442625226229453, 37.738313911390271 ], [ -122.442627783322195, 37.738564600951854 ], [ -122.44250398997913, 37.739238469269011 ], [ -122.442525191527608, 37.739448400155375 ], [ -122.442597107319372, 37.739547858254923 ], [ -122.44271760477325, 37.739682237717481 ], [ -122.442856748556963, 37.739767263698369 ], [ -122.443019593631774, 37.739814475654143 ], [ -122.44341918472557, 37.739902333376541 ], [ -122.443694223373313, 37.739971345925731 ], [ -122.443922038304507, 37.740088462716592 ], [ -122.444098337188322, 37.740234069945657 ], [ -122.444209640252396, 37.740380617798955 ], [ -122.444366170223589, 37.740575544006177 ], [ -122.444518249198694, 37.740692998244214 ], [ -122.444681667799003, 37.740793092051724 ], [ -122.444911120433531, 37.740872114678645 ], [ -122.445195592772691, 37.740920623913645 ], [ -122.445523457193502, 37.740972470791057 ], [ -122.445897881975142, 37.741116602917764 ], [ -122.445964326755799, 37.741198730714288 ], [ -122.445964300022951, 37.741198753406074 ], [ -122.44605943275991, 37.741274575873817 ], [ -122.44609965968975, 37.741357693405078 ], [ -122.446156199006268, 37.741535311478742 ], [ -122.44619443459527, 37.741872554265036 ], [ -122.446256735689062, 37.742072052701658 ], [ -122.446323687641325, 37.742184944882247 ], [ -122.446410971977912, 37.742281706494659 ], [ -122.446516770315029, 37.742358933848621 ], [ -122.446657325560608, 37.742442453734959 ], [ -122.446840940400392, 37.742519081676662 ], [ -122.447110638216571, 37.742580552169777 ], [ -122.447384659150103, 37.742608987228614 ], [ -122.44848892294759, 37.742704730693937 ], [ -122.448820428983325, 37.742748693538836 ], [ -122.44913731277687, 37.742828607669701 ], [ -122.449355958412127, 37.74292182098899 ], [ -122.449582834428256, 37.743065029012413 ], [ -122.449790244582587, 37.743257317336237 ], [ -122.449918612648133, 37.7432716748716 ], [ -122.450592179132485, 37.744090792307063 ], [ -122.450586742649079, 37.744213121547148 ], [ -122.451624634588612, 37.745534387540218 ], [ -122.45169226258335, 37.745606748366605 ], [ -122.45181666119403, 37.745671246259803 ], [ -122.451828632556612, 37.745671851179097 ], [ -122.452091117231191, 37.74568511552728 ], [ -122.45222754649042, 37.74569200904012 ], [ -122.452386953750349, 37.745691424670198 ], [ -122.453376023619995, 37.74568779337109 ], [ -122.453495886255311, 37.745691252478657 ], [ -122.453645157964232, 37.745695560010326 ], [ -122.453916002908102, 37.745699915076791 ], [ -122.453916429980183, 37.745699922279499 ], [ -122.454184426826714, 37.745845539203287 ], [ -122.454664096869323, 37.746106168082655 ], [ -122.454664097215115, 37.746106168076913 ], [ -122.455466732538028, 37.746327980692172 ], [ -122.455687935660293, 37.746380796419501 ], [ -122.456314708164584, 37.746530446031059 ], [ -122.457089836487938, 37.746682896092409 ], [ -122.457166741019165, 37.746698021157933 ], [ -122.457301186299645, 37.746714064689691 ], [ -122.457457161051892, 37.746732677593577 ], [ -122.457582024204598, 37.746744476612157 ], [ -122.457949639713704, 37.746779214661537 ], [ -122.458499844031735, 37.746781514247793 ], [ -122.458509634961302, 37.746778882011192 ], [ -122.458610345848541, 37.746751806518411 ], [ -122.45872851739027, 37.746755429911865 ], [ -122.459174375277186, 37.74728632007151 ], [ -122.459174106111192, 37.747286620942795 ], [ -122.458970102890007, 37.747514391535915 ], [ -122.458856680033747, 37.7476570668547 ], [ -122.458785941599359, 37.747811900102363 ], [ -122.458816156308444, 37.748040115735854 ], [ -122.458941590023073, 37.748201275736406 ], [ -122.459200706652084, 37.748504001538066 ], [ -122.459625716264128, 37.748941671345293 ], [ -122.459724182852014, 37.749021140146965 ], [ -122.459910557162914, 37.749171866124314 ], [ -122.460150106375522, 37.749394963907797 ], [ -122.460488100882344, 37.749710225074402 ], [ -122.460574698392477, 37.749816963786891 ], [ -122.460646032705213, 37.749905429557089 ], [ -122.460872188804359, 37.750377416930355 ], [ -122.461130726036544, 37.75091814728394 ], [ -122.461357402458418, 37.751255115112428 ], [ -122.461523490818323, 37.75150339365527 ], [ -122.461523490133942, 37.751503393941363 ], [ -122.461523602837886, 37.75150356127773 ], [ -122.461621806880288, 37.751517360697065 ], [ -122.461851812215116, 37.751624201717213 ], [ -122.462014174664134, 37.751745235464952 ], [ -122.462176783557467, 37.751866685725204 ], [ -122.462467214248704, 37.7521873638808 ], [ -122.462572755978741, 37.752277690485144 ], [ -122.462772959403608, 37.752449458308092 ], [ -122.463129733530764, 37.752716425489766 ], [ -122.463165176689103, 37.75274298458443 ], [ -122.463398089008777, 37.752981523058104 ], [ -122.463399006031565, 37.752981452291863 ], [ -122.463640406958334, 37.753310851043111 ], [ -122.463777683069083, 37.753601657228067 ], [ -122.463842129576008, 37.753808596342253 ], [ -122.463838893966539, 37.75414750585891 ], [ -122.463722821262465, 37.754601920791259 ], [ -122.46367889740506, 37.754738571878264 ], [ -122.463627289771182, 37.754788065181785 ], [ -122.463580718915097, 37.755014148901829 ], [ -122.463554499932727, 37.755298102249476 ], [ -122.463651620775778, 37.756677450683235 ], [ -122.463781528402038, 37.758538181378015 ], [ -122.463911891482155, 37.760405344350922 ], [ -122.46284191307069, 37.760452254741963 ], [ -122.461770200794135, 37.760499231230455 ], [ -122.461770397151241, 37.760502041661596 ], [ -122.460684658382874, 37.760546523892096 ], [ -122.46084509456081, 37.762627108799968 ], [ -122.460842964058216, 37.762627642539876 ], [ -122.459790374597731, 37.762925938047687 ], [ -122.457827081738984, 37.763482288038738 ], [ -122.45765013969168, 37.76353311613984 ], [ -122.456669912105653, 37.763814688946653 ], [ -122.455781065686594, 37.764070070210742 ], [ -122.455466091062405, 37.764160565952579 ], [ -122.454217265424234, 37.764310945798535 ], [ -122.454179864833876, 37.763912200042988 ], [ -122.454845151642289, 37.763732313486969 ], [ -122.454945541962573, 37.76366305305779 ], [ -122.454946081907835, 37.7631787014639 ], [ -122.454009611320302, 37.762667869264533 ], [ -122.453744673977482, 37.761878784498755 ], [ -122.453114639516684, 37.762361563728888 ], [ -122.45351591398105, 37.764395394431268 ], [ -122.452569575903098, 37.764509334437378 ], [ -122.452569519449398, 37.764509056008684 ], [ -122.452400386663143, 37.763669233221897 ], [ -122.45223333012629, 37.762842423991209 ], [ -122.452096203587132, 37.762166887302627 ], [ -122.451957007208804, 37.761478336720671 ], [ -122.45155310706329, 37.759472203369178 ], [ -122.45136693770776, 37.758575661774039 ], [ -122.451408535854284, 37.758561502025017 ], [ -122.452047941226652, 37.758343705002019 ], [ -122.45229781656198, 37.758277073170099 ], [ -122.45283476350059, 37.758097464572913 ], [ -122.452876092298638, 37.758073671104697 ], [ -122.453317408957801, 37.757819578594621 ], [ -122.453326709060633, 37.757812928758618 ], [ -122.453652871332849, 37.757570195093017 ], [ -122.453769459328285, 37.75746785416225 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":22,"ZIP_CODE":94122,"ID":94122},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.463399006031565, 37.752981452291863 ], [ -122.464461497345539, 37.752899248258529 ], [ -122.464461497323754, 37.752899247434819 ], [ -122.464462034791779, 37.752899228037201 ], [ -122.464462034762747, 37.752899226938901 ], [ -122.465533177566329, 37.752851071595934 ], [ -122.46660049988607, 37.752803078204508 ], [ -122.467642627702773, 37.752756208616617 ], [ -122.467804242122298, 37.752723264514827 ], [ -122.467915171465805, 37.752734664618352 ], [ -122.468031369650532, 37.75278739056494 ], [ -122.468181079371874, 37.752955569756089 ], [ -122.468335071492149, 37.753243730756957 ], [ -122.468440863346331, 37.753541228150766 ], [ -122.46853368295227, 37.753778395652951 ], [ -122.468629004224212, 37.753985873398783 ], [ -122.46875232271276, 37.754192126033097 ], [ -122.468837396357713, 37.754298754678686 ], [ -122.468949194118821, 37.754383817642378 ], [ -122.469043420308736, 37.754428685878558 ], [ -122.469187312711114, 37.754478429881637 ], [ -122.469229538348586, 37.754492641945887 ], [ -122.469359681800768, 37.754536443616175 ], [ -122.469719537880266, 37.754630546382018 ], [ -122.470018818714578, 37.754692394187302 ], [ -122.470075601814969, 37.754705621480454 ], [ -122.470428100059209, 37.754750285613063 ], [ -122.470916907310823, 37.75477064959378 ], [ -122.471016758783364, 37.754797170870887 ], [ -122.471049094699751, 37.75451479556704 ], [ -122.471019321832557, 37.754265617625428 ], [ -122.471016495996267, 37.754217122306045 ], [ -122.471036498728921, 37.754100284913058 ], [ -122.471079638048607, 37.753995444111091 ], [ -122.471132268263645, 37.753877430013475 ], [ -122.471171093123701, 37.753733616626192 ], [ -122.471190660490961, 37.753605743703318 ], [ -122.471187692098596, 37.753493865266243 ], [ -122.471174197654705, 37.753356133265093 ], [ -122.471122146869178, 37.753216025593119 ], [ -122.470907529168414, 37.752615836450325 ], [ -122.472007574280582, 37.752569817871482 ], [ -122.473133075589757, 37.752519603580488 ], [ -122.474205182950101, 37.752471761013865 ], [ -122.474740669236724, 37.752447861779451 ], [ -122.475276421588944, 37.752423947680597 ], [ -122.476291890529794, 37.752378614900692 ], [ -122.476291890478677, 37.752378612978674 ], [ -122.476292239846927, 37.752378597780194 ], [ -122.476292240229284, 37.752378599147249 ], [ -122.4774149778289, 37.752329102778496 ], [ -122.478486061226221, 37.752281873458429 ], [ -122.479557564859533, 37.752234616335052 ], [ -122.480628878786973, 37.752187357305665 ], [ -122.48170210782861, 37.752140004119113 ], [ -122.48276958366516, 37.752092894785363 ], [ -122.483844155588841, 37.75204546291927 ], [ -122.48491485069583, 37.751998192013865 ], [ -122.48598818277614, 37.751950794949664 ], [ -122.487053067380344, 37.751903269835523 ], [ -122.488143190546495, 37.751854042116229 ], [ -122.48919356840311, 37.751806869260896 ], [ -122.490270381873529, 37.751758499707634 ], [ -122.491344845233968, 37.751710225381885 ], [ -122.492417458516726, 37.751662024433998 ], [ -122.493488045146222, 37.751613904571322 ], [ -122.49456080780611, 37.751568259028382 ], [ -122.495098259533435, 37.751544767553312 ], [ -122.49509879355503, 37.751544749172808 ], [ -122.495630257074851, 37.751526822572394 ], [ -122.49581055415868, 37.751518288226762 ], [ -122.496702184257288, 37.751476079301845 ], [ -122.497770415009455, 37.751426327287128 ], [ -122.497770416046876, 37.751426327269549 ], [ -122.498442545251379, 37.751398004902029 ], [ -122.498842248697912, 37.751381160579498 ], [ -122.49937768349335, 37.751357494487337 ], [ -122.499914122812314, 37.751333781439868 ], [ -122.499914456955352, 37.751333766429582 ], [ -122.500987488435712, 37.75128639412403 ], [ -122.502060320882052, 37.751239765057655 ], [ -122.503133002600279, 37.751190357338089 ], [ -122.504203312772219, 37.751143789774702 ], [ -122.505276576525688, 37.751093151070108 ], [ -122.506347526734444, 37.751051944046772 ], [ -122.507416228284868, 37.751003284446853 ], [ -122.507286887279179, 37.749140090258685 ], [ -122.507286886587565, 37.749140090270473 ], [ -122.50728687853443, 37.749139971463322 ], [ -122.507286878880223, 37.749139971457424 ], [ -122.50729515180268, 37.749139604462776 ], [ -122.507539948063609, 37.749128748547342 ], [ -122.507941547211104, 37.749110937340276 ], [ -122.507940323213063, 37.749101694546454 ], [ -122.508363946491727, 37.74907680068609 ], [ -122.509705738305371, 37.748997941669188 ], [ -122.509710663420336, 37.749052110606286 ], [ -122.509713246503537, 37.749083657142556 ], [ -122.509729549623728, 37.749110848942742 ], [ -122.509729362100501, 37.749167851780079 ], [ -122.509735273166726, 37.749194534062582 ], [ -122.509750516130779, 37.749246466794162 ], [ -122.509778567561426, 37.749324277699941 ], [ -122.509789628452893, 37.749349498384071 ], [ -122.509798960033251, 37.749374748835095 ], [ -122.509811768849048, 37.749400627001869 ], [ -122.509822811194553, 37.749425161253306 ], [ -122.509835600759672, 37.749450352725269 ], [ -122.509848372456204, 37.749474857754677 ], [ -122.509862872798479, 37.749499333300058 ], [ -122.509875644166641, 37.74952383833223 ], [ -122.509890144527432, 37.749548313874023 ], [ -122.509938776915888, 37.749619592731861 ], [ -122.50997116142004, 37.749665739100415 ], [ -122.509989082682068, 37.749688783065459 ], [ -122.51000698537004, 37.749711140049378 ], [ -122.510074896863927, 37.74979170473398 ], [ -122.510112524214264, 37.749839821874914 ], [ -122.510150170185028, 37.749888625432611 ], [ -122.510222041423717, 37.749987664081871 ], [ -122.510254537700391, 37.750037928944337 ], [ -122.510319567532292, 37.750139831499247 ], [ -122.510350372089775, 37.750191498687315 ], [ -122.510379447689871, 37.750243195362941 ], [ -122.510406812903227, 37.750295607956453 ], [ -122.510434196383827, 37.75034870697808 ], [ -122.510450965102024, 37.750393059386766 ], [ -122.51046407081715, 37.750429920079867 ], [ -122.510475448231503, 37.75046681025696 ], [ -122.510486843547952, 37.750504387148105 ], [ -122.510515843893401, 37.750617205185918 ], [ -122.510523781572246, 37.750654840788101 ], [ -122.510529990248557, 37.75069250588782 ], [ -122.510536217506655, 37.75073085741591 ], [ -122.510540697183259, 37.750768552012921 ], [ -122.510545195439974, 37.750806933038461 ], [ -122.510549675125716, 37.750844627634628 ], [ -122.510552444030878, 37.750883038163828 ], [ -122.510555546179489, 37.75099767207351 ], [ -122.510554168969648, 37.751074611106283 ], [ -122.510551732248842, 37.751112423700818 ], [ -122.510547585771619, 37.751150952210686 ], [ -122.510543420361202, 37.751188794022582 ], [ -122.510539273529616, 37.751227322537567 ], [ -122.510534624806738, 37.751247317477244 ], [ -122.51052982817599, 37.751261821248107 ], [ -122.510526778782435, 37.751276981406193 ], [ -122.510523710819541, 37.75129145540982 ], [ -122.510522371541924, 37.751305900195682 ], [ -122.510519303915359, 37.751320373918666 ], [ -122.510517983550216, 37.751335504852847 ], [ -122.510514915590633, 37.75134997913068 ], [ -122.510513595216636, 37.751365109790179 ], [ -122.510513985300733, 37.75137952479723 ], [ -122.510512664933444, 37.751394655731197 ], [ -122.510513055017512, 37.751409070738212 ], [ -122.510511734303734, 37.751424201677992 ], [ -122.510512533054808, 37.751453718395311 ], [ -122.510514671081651, 37.751468790052584 ], [ -122.510515061166473, 37.751483205059415 ], [ -122.51051719886371, 37.751498277271601 ], [ -122.510519317971443, 37.751512662505696 ], [ -122.510521455317175, 37.751527734449049 ], [ -122.510523574787243, 37.751542120226226 ], [ -122.510527441503768, 37.751557162390775 ], [ -122.51052956027678, 37.751571547905016 ], [ -122.510541105080137, 37.751614615928503 ], [ -122.510546682275447, 37.751628942714049 ], [ -122.51055053042532, 37.751643298448748 ], [ -122.510567261661492, 37.751686277985172 ], [ -122.51057282063698, 37.751699918334559 ], [ -122.510580126864298, 37.751714215070294 ], [ -122.510587414533077, 37.751727825925812 ], [ -122.510592973154687, 37.751741465730937 ], [ -122.510600260828497, 37.751755076585596 ], [ -122.510609277525731, 37.751768657391231 ], [ -122.510616565205183, 37.751782268244845 ], [ -122.510623834295913, 37.751795192119978 ], [ -122.510632850671371, 37.75180877347875 ], [ -122.510650847293675, 37.751834562495105 ], [ -122.510666910213118, 37.751852830846786 ], [ -122.510679329278858, 37.751864293359795 ], [ -122.510690018971971, 37.751875785652558 ], [ -122.510697288092032, 37.751888709797527 ], [ -122.510704575791962, 37.751902320370817 ], [ -122.51070842433974, 37.751916676368367 ], [ -122.510710543503862, 37.751931061872575 ], [ -122.51070920459685, 37.751945506653065 ], [ -122.510724225875535, 37.751989202088765 ], [ -122.510730100360817, 37.752014511176412 ], [ -122.510737685321715, 37.752039104608144 ], [ -122.510743559477149, 37.752064413975368 ], [ -122.510825714104442, 37.752223710988055 ], [ -122.510880260867467, 37.752321671638327 ], [ -122.510889277338805, 37.75233525242713 ], [ -122.51089827594069, 37.752348147323836 ], [ -122.510919693380217, 37.752372504437815 ], [ -122.510932112233405, 37.752383967203627 ], [ -122.510956913829162, 37.752405519856168 ], [ -122.510971006350204, 37.752414893821253 ], [ -122.510979967462688, 37.75242641558544 ], [ -122.510987199526895, 37.75243796685389 ], [ -122.510992721122207, 37.752450234055644 ], [ -122.510999971778375, 37.752462472026544 ], [ -122.511005493370178, 37.752474738953069 ], [ -122.511011033205719, 37.752487692588488 ], [ -122.511014844689754, 37.752500675991762 ], [ -122.511020366286843, 37.752512942917527 ], [ -122.511024177420595, 37.752525926051767 ], [ -122.511026259163927, 37.752538938971881 ], [ -122.511028360165199, 37.752552637759649 ], [ -122.511032524332322, 37.752578663038605 ], [ -122.511033248973078, 37.752605433757282 ], [ -122.511030496930232, 37.752631577332984 ], [ -122.511029139131608, 37.75264533514347 ], [ -122.511030233600934, 37.752813569447106 ], [ -122.511027591948121, 37.752907698414738 ], [ -122.511023202651316, 37.753001170732233 ], [ -122.511017102857721, 37.753095358982122 ], [ -122.511007544911607, 37.753189606240724 ], [ -122.511045097099611, 37.75342657943726 ], [ -122.511071439929921, 37.753568973002693 ], [ -122.511099511595958, 37.7537113370581 ], [ -122.511110666857206, 37.753739990285347 ], [ -122.51113816393935, 37.753797207403004 ], [ -122.511167297244739, 37.753850963138049 ], [ -122.511191001766875, 37.753895883818785 ], [ -122.511212977231722, 37.753940834002691 ], [ -122.511234971305953, 37.753986470610634 ], [ -122.511275501018872, 37.754077803112054 ], [ -122.511285596295252, 37.754131196705785 ], [ -122.511275500500716, 37.754141670188282 ], [ -122.511267152377243, 37.754152800589303 ], [ -122.511258841417288, 37.754165303846627 ], [ -122.51125398864481, 37.754177748360249 ], [ -122.511249154438758, 37.754190878752958 ], [ -122.511246439571536, 37.754218394908946 ], [ -122.511248521739574, 37.754231407540907 ], [ -122.511252351238468, 37.754245077098325 ], [ -122.511256162847417, 37.754258060215321 ], [ -122.511263413723356, 37.754270298166247 ], [ -122.511270646011127, 37.75428184941368 ], [ -122.511281336136037, 37.754293341373469 ], [ -122.511290279285674, 37.754304176676023 ], [ -122.511297511580892, 37.754315727921757 ], [ -122.511301304272081, 37.754328024614594 ], [ -122.51130511555543, 37.7543410080103 ], [ -122.511305450050784, 37.754353363447571 ], [ -122.511302344945619, 37.754366464607017 ], [ -122.511299221255896, 37.754378879337885 ], [ -122.511292620796496, 37.754390666933737 ], [ -122.511284272301779, 37.754401797341401 ], [ -122.511274158225476, 37.754411584114365 ], [ -122.511262296127953, 37.754420714247495 ], [ -122.51124864918124, 37.754427814602913 ], [ -122.511234965066222, 37.754433542099882 ], [ -122.511205457998457, 37.754493792524343 ], [ -122.511174612954918, 37.754504620093513 ], [ -122.511188723552863, 37.754578547809551 ], [ -122.511196847828685, 37.754623047899784 ], [ -122.511172119152874, 37.754668108364662 ], [ -122.511186378431859, 37.754747527231643 ], [ -122.511164047430796, 37.754817269614293 ], [ -122.511168079798153, 37.754966224575647 ], [ -122.511187639253137, 37.754985806682214 ], [ -122.511182209413036, 37.755040838983689 ], [ -122.511152553395789, 37.755095597687138 ], [ -122.511140988488648, 37.755115710660888 ], [ -122.511131170290469, 37.755200347899923 ], [ -122.511137026593502, 37.755224970799595 ], [ -122.511151546101601, 37.755313999934657 ], [ -122.511172052652412, 37.755368589625292 ], [ -122.511185234625046, 37.75540819590843 ], [ -122.511212230658316, 37.755446879976844 ], [ -122.511220633780624, 37.755501676208965 ], [ -122.511245788883045, 37.755536270664308 ], [ -122.511246718045257, 37.755570592079458 ], [ -122.511273603014288, 37.755605157557042 ], [ -122.511268303269489, 37.755664994580059 ], [ -122.511302921291062, 37.755793511928204 ], [ -122.51129135632344, 37.755813625188885 ], [ -122.511297751657864, 37.755858154497574 ], [ -122.51132993529248, 37.755896749458273 ], [ -122.511344307286322, 37.755916419796833 ], [ -122.51135098142602, 37.755971245525423 ], [ -122.511358975860517, 37.756010940596234 ], [ -122.511372157693486, 37.756050546585421 ], [ -122.51138067251722, 37.756109461644371 ], [ -122.51138760653366, 37.756173897095294 ], [ -122.511415290932803, 37.756237978675102 ], [ -122.51144193355438, 37.756327487882515 ], [ -122.511450857327816, 37.756401503804241 ], [ -122.511444739922965, 37.756431138262307 ], [ -122.511465507194529, 37.756495337885667 ], [ -122.511475248786056, 37.756599556916427 ], [ -122.511489639220827, 37.756683781260584 ], [ -122.511510945933878, 37.756767887008252 ], [ -122.511505516202988, 37.756822919307787 ], [ -122.511507114604001, 37.756881952399702 ], [ -122.511540803935873, 37.756976147977831 ], [ -122.51151021846853, 37.756996585892097 ], [ -122.511537215240679, 37.757035269600948 ], [ -122.511550805913657, 37.75708997726138 ], [ -122.511552014025696, 37.757134594811419 ], [ -122.51153474073044, 37.7571994439623 ], [ -122.511545151615906, 37.757328374109882 ], [ -122.511565380212119, 37.7573726672926 ], [ -122.511548775980131, 37.757462227577349 ], [ -122.511570621660383, 37.757566239995974 ], [ -122.511588991755985, 37.757605757952987 ], [ -122.511636236094873, 37.757689420961349 ], [ -122.511627217721312, 37.75780357460139 ], [ -122.511645866365058, 37.757853388698848 ], [ -122.511694113049955, 37.758229588585031 ], [ -122.511742993592506, 37.758437524775317 ], [ -122.511846760303001, 37.759011245676845 ], [ -122.511857097632088, 37.75913743032006 ], [ -122.511865631081335, 37.759260898772276 ], [ -122.511870706825988, 37.759384426245269 ], [ -122.511867805759621, 37.759468945686322 ], [ -122.511886956563586, 37.759537293011533 ], [ -122.511894319592614, 37.759553649204342 ], [ -122.511899972344324, 37.759570721336786 ], [ -122.511907335379505, 37.759587077528693 ], [ -122.511912969200509, 37.759603463238605 ], [ -122.511924273692642, 37.75963760779338 ], [ -122.511928197239044, 37.759654709442891 ], [ -122.511933831069797, 37.759671095151603 ], [ -122.511941677473203, 37.759705298186844 ], [ -122.511943890051924, 37.759723115788141 ], [ -122.511947812915679, 37.759740217448552 ], [ -122.511954395243222, 37.75979161123707 ], [ -122.511954878597919, 37.75980945808243 ], [ -122.51195707224619, 37.759826589261372 ], [ -122.511958020381513, 37.759861597073268 ], [ -122.511956756283539, 37.759878787553092 ], [ -122.511957221055894, 37.759895948245067 ], [ -122.511955975187334, 37.759913824609214 ], [ -122.511953445935674, 37.759948205037048 ], [ -122.511904504571447, 37.760440750181104 ], [ -122.511896527982401, 37.760465608886555 ], [ -122.511890205925951, 37.76048769264321 ], [ -122.511883865275365, 37.760509089971798 ], [ -122.511879272104622, 37.760531144215527 ], [ -122.511874661032579, 37.760552512019558 ], [ -122.511865475369248, 37.760596620493857 ], [ -122.511856884580055, 37.760662694650442 ], [ -122.511852347147268, 37.760750675453501 ], [ -122.51185415039285, 37.760817258929578 ], [ -122.51185647452489, 37.76083919509459 ], [ -122.511857069411604, 37.760861160777161 ], [ -122.511859412136133, 37.760883783369522 ], [ -122.511863465519539, 37.760905690016429 ], [ -122.511865789657108, 37.760927626180887 ], [ -122.511869842698943, 37.760949532833308 ], [ -122.511875625684155, 37.760971409955765 ], [ -122.511879679077154, 37.760993316601748 ], [ -122.511885442786451, 37.761014507307813 ], [ -122.511897008433721, 37.761058261556201 ], [ -122.511926981734348, 37.761142906550255 ], [ -122.511936204314608, 37.76116403793533 ], [ -122.511954649505725, 37.76120630125228 ], [ -122.511963853517884, 37.761226746482016 ], [ -122.511996653008623, 37.761287993613372 ], [ -122.51202705467847, 37.761324558853467 ], [ -122.512064168550651, 37.761353455306384 ], [ -122.512085012456453, 37.761420400744697 ], [ -122.512126086793671, 37.761531638678171 ], [ -122.51214611271017, 37.76156838129576 ], [ -122.512202471774316, 37.761605190090663 ], [ -122.51220306676943, 37.761627155768551 ], [ -122.512286833872011, 37.761909350986301 ], [ -122.512330121233489, 37.762102273976545 ], [ -122.512359816513452, 37.762176622160425 ], [ -122.512400687481886, 37.762280309551663 ], [ -122.512412755489066, 37.762406464549109 ], [ -122.512472852658917, 37.762517377837653 ], [ -122.51242023100265, 37.762682408319826 ], [ -122.512395388918449, 37.762787217676667 ], [ -122.5123251575382, 37.763004741639399 ], [ -122.512318128822102, 37.763064608432281 ], [ -122.512275063725824, 37.763199258620396 ], [ -122.512347657434475, 37.763452114765002 ], [ -122.512370305614013, 37.763585643570899 ], [ -122.51245827791935, 37.763703634850181 ], [ -122.51249862900157, 37.763851969475809 ], [ -122.512536692779477, 37.763915873550189 ], [ -122.512547533618658, 37.763932857061576 ], [ -122.512582157093107, 37.763997506608895 ], [ -122.512647704491329, 37.764117941165772 ], [ -122.512695196290764, 37.764146660498668 ], [ -122.512734264345909, 37.764183764321103 ], [ -122.512737091420831, 37.764288101230889 ], [ -122.512775416013923, 37.764361614927097 ], [ -122.512777034178313, 37.764421334077248 ], [ -122.512751987430036, 37.764518593055108 ], [ -122.512781479493952, 37.764585390130065 ], [ -122.512774860188117, 37.764660358327284 ], [ -122.51278551563432, 37.764734344784699 ], [ -122.512761491760273, 37.764869356967338 ], [ -122.512743882579386, 37.764921850254765 ], [ -122.512717422071987, 37.76496694049434 ], [ -122.512684621435739, 37.765161162553468 ], [ -122.512669634563863, 37.765310442023306 ], [ -122.512654461644431, 37.765452857218328 ], [ -122.512646410035117, 37.765474970525723 ], [ -122.51263958593637, 37.765542388282462 ], [ -122.512631627607334, 37.765631800678314 ], [ -122.512652064044445, 37.76568364430058 ], [ -122.512693345840233, 37.765802432929902 ], [ -122.512704615499302, 37.765899071734495 ], [ -122.512725051707562, 37.765950915073049 ], [ -122.512700618145246, 37.766070825824592 ], [ -122.512768157254058, 37.76613697348678 ], [ -122.512789393732405, 37.766218333432967 ], [ -122.512782253924286, 37.766337948881301 ], [ -122.512802690660749, 37.766389792471095 ], [ -122.512831774306832, 37.766441488397447 ], [ -122.512880476379308, 37.766514825114292 ], [ -122.512887749430135, 37.76678321796404 ], [ -122.512892604360289, 37.766962375332177 ], [ -122.512931655400493, 37.766998792918841 ], [ -122.512961259283941, 37.767005841271946 ], [ -122.513017009002525, 37.767019997837075 ], [ -122.513065321321278, 37.767078919504563 ], [ -122.513078915989027, 37.767197493825428 ], [ -122.513107814109816, 37.767242325410123 ], [ -122.513081743662724, 37.767301830672046 ], [ -122.51310340834894, 37.767398978362927 ], [ -122.513123716454487, 37.7675098841043 ], [ -122.513078250436607, 37.767555985727952 ], [ -122.513071017262462, 37.76760830182581 ], [ -122.513091249913373, 37.767652594661705 ], [ -122.513076058720628, 37.767794323426109 ], [ -122.513058653709876, 37.76785436770038 ], [ -122.513040634413983, 37.767891759352018 ], [ -122.513052220422765, 37.767936200135772 ], [ -122.513081118807335, 37.767981031446666 ], [ -122.513072546502798, 37.768047792039297 ], [ -122.513084307659341, 37.768800949561466 ], [ -122.513105545245466, 37.768882309412746 ], [ -122.513112428659511, 37.76913628718308 ], [ -122.513087380753205, 37.769233545877434 ], [ -122.51312531757408, 37.76929264499158 ], [ -122.513091827049578, 37.769397602054994 ], [ -122.513085691671151, 37.769554284209093 ], [ -122.513145317112162, 37.770030553014749 ], [ -122.513104072344461, 37.770232473669928 ], [ -122.513083675037265, 37.770501338904026 ], [ -122.513146087813496, 37.77076123543462 ], [ -122.513127217898258, 37.771214121925311 ], [ -122.51313192303401, 37.771260053409627 ], [ -122.511055400217217, 37.771347479926334 ], [ -122.510495195112867, 37.771371059784514 ], [ -122.509894781266311, 37.771396329054475 ], [ -122.509894749698645, 37.771396032095495 ], [ -122.508867990729883, 37.771443447055226 ], [ -122.508823330922013, 37.771445496187766 ], [ -122.508780633594597, 37.771447480819759 ], [ -122.507750665782908, 37.771495034103232 ], [ -122.507750664399296, 37.771495034126787 ], [ -122.506991972993774, 37.771528822999358 ], [ -122.506685577396198, 37.771542340610623 ], [ -122.505610663486351, 37.771591537709703 ], [ -122.504544396347384, 37.771640577944709 ], [ -122.503472690942445, 37.771689380369601 ], [ -122.503472688521128, 37.771689380410749 ], [ -122.502399732131124, 37.771738148994636 ], [ -122.502399595949868, 37.771738155153713 ], [ -122.501328271899965, 37.77178724800941 ], [ -122.50025681025997, 37.771836337560785 ], [ -122.499183617695707, 37.771885446705888 ], [ -122.498113882732468, 37.771934487449556 ], [ -122.497047586931203, 37.771982773731914 ], [ -122.495972660610278, 37.77203188267292 ], [ -122.495971990075716, 37.772031913255347 ], [ -122.495972015995989, 37.772032015003532 ], [ -122.494903299427449, 37.772080795311069 ], [ -122.494902921073546, 37.772080894286702 ], [ -122.493833180817205, 37.772129896182108 ], [ -122.493832498174271, 37.772129926957135 ], [ -122.493832479293559, 37.77212966191987 ], [ -122.493316307377469, 37.772153213706439 ], [ -122.492761690869486, 37.772178231184974 ], [ -122.491688488076463, 37.772227272380952 ], [ -122.490617013718605, 37.772276274046327 ], [ -122.489539486385709, 37.772325343661755 ], [ -122.489539480863627, 37.772325473411478 ], [ -122.488471323394165, 37.772374169626119 ], [ -122.488470602075608, 37.772374307055074 ], [ -122.487399123482518, 37.77242327974907 ], [ -122.487398306387334, 37.772423316873983 ], [ -122.487398288926627, 37.772423078182946 ], [ -122.486678527930636, 37.772455879683093 ], [ -122.486334543235188, 37.772471439976606 ], [ -122.485261332297384, 37.772520422109807 ], [ -122.485152053625171, 37.772525429693054 ], [ -122.484194201052048, 37.772569061919981 ], [ -122.484194219251819, 37.772569315707138 ], [ -122.483119139145145, 37.772618264154566 ], [ -122.483119121668807, 37.772618024364625 ], [ -122.482048961146063, 37.772667157434498 ], [ -122.481947659007389, 37.77267180789157 ], [ -122.480978851643016, 37.772716079930653 ], [ -122.479904580478745, 37.772765580938412 ], [ -122.478848714480989, 37.772814028910268 ], [ -122.47883762078969, 37.772814536530767 ], [ -122.477766129509902, 37.772863421949047 ], [ -122.477069824745385, 37.772895630732648 ], [ -122.476694205661246, 37.772912858094969 ], [ -122.475613625589148, 37.772962410314676 ], [ -122.475613644972711, 37.772962670675476 ], [ -122.475612802305008, 37.772962709520556 ], [ -122.47455168367884, 37.773011391539193 ], [ -122.474550931211951, 37.773011425844139 ], [ -122.474550910293516, 37.773011133644289 ], [ -122.473737577092777, 37.773048416620476 ], [ -122.473427836194134, 37.773062613687692 ], [ -122.472297341321692, 37.773114423074823 ], [ -122.472219951938214, 37.773117969260745 ], [ -122.471762122569857, 37.773138947752848 ], [ -122.47124006836178, 37.773161981865066 ], [ -122.471240089434815, 37.773162280380667 ], [ -122.470162712316579, 37.773209791534974 ], [ -122.470162692059887, 37.773209510586071 ], [ -122.469517084069324, 37.773237987003441 ], [ -122.469092496140973, 37.773256712542192 ], [ -122.468348575135167, 37.773289518371953 ], [ -122.468023916207073, 37.773303833556405 ], [ -122.466952500298319, 37.773351323464517 ], [ -122.466951728424362, 37.773351356945881 ], [ -122.466373346760548, 37.773376599548058 ], [ -122.465883163277454, 37.773398204721545 ], [ -122.465331676538511, 37.773422509669793 ], [ -122.464811670328331, 37.773488744378348 ], [ -122.463755675044126, 37.773623241600568 ], [ -122.463749210177951, 37.773624065149079 ], [ -122.462683796526321, 37.773759751788596 ], [ -122.462535340858068, 37.773778657528119 ], [ -122.461620188227315, 37.77389548164836 ], [ -122.461619775372085, 37.773895534117642 ], [ -122.461619755154771, 37.7738952534419 ], [ -122.460552661960989, 37.774031133779268 ], [ -122.460552700773292, 37.774031358657659 ], [ -122.459486938645284, 37.774167197254911 ], [ -122.459486145343419, 37.77416729779403 ], [ -122.459486118442314, 37.77416693399686 ], [ -122.458795325509186, 37.774254885425997 ], [ -122.458371099123696, 37.774308895694055 ], [ -122.457134751103212, 37.774454490912483 ], [ -122.456283917173579, 37.774554834704738 ], [ -122.456283671603558, 37.774554866249353 ], [ -122.456283639851293, 37.774554711848936 ], [ -122.455898178089939, 37.774604132119862 ], [ -122.45525254468275, 37.774686906456331 ], [ -122.455033749574639, 37.77471323536281 ], [ -122.454683295611602, 37.774755406979118 ], [ -122.45468264773983, 37.77475548474694 ], [ -122.454642052912618, 37.774646438033749 ], [ -122.454474386066082, 37.77382381381878 ], [ -122.454383433186777, 37.773377561015685 ], [ -122.454285116857562, 37.772895177759331 ], [ -122.454083217765842, 37.771930404296491 ], [ -122.454018233133866, 37.771616238745679 ], [ -122.453979522461594, 37.771428395389663 ], [ -122.453902454621286, 37.771053837806122 ], [ -122.453902388799008, 37.771053479872258 ], [ -122.453726227138517, 37.770098080109292 ], [ -122.45361853828534, 37.769567547950977 ], [ -122.453536875229432, 37.769165225996225 ], [ -122.453536875207789, 37.7691652251725 ], [ -122.453445551985865, 37.76871045824668 ], [ -122.453352918070834, 37.768246336273791 ], [ -122.453352855873561, 37.76824602387866 ], [ -122.453165568246916, 37.767306553969036 ], [ -122.453075053112784, 37.766861619151193 ], [ -122.452996675368553, 37.766476342546461 ], [ -122.452947274458694, 37.766374150789915 ], [ -122.454592351139084, 37.766165584782662 ], [ -122.454592931223331, 37.766165511159706 ], [ -122.455121527013688, 37.766098468178491 ], [ -122.456616092088495, 37.765909015262118 ], [ -122.456823880275138, 37.765884275950789 ], [ -122.456913422826119, 37.76587361486397 ], [ -122.457189364808954, 37.765880549298529 ], [ -122.457438759694597, 37.76592231265932 ], [ -122.457489671310725, 37.765930838098136 ], [ -122.45751185755033, 37.765937046103922 ], [ -122.457789624362519, 37.766014767234282 ], [ -122.457788627971766, 37.765820072733575 ], [ -122.457756133601251, 37.765354151194842 ], [ -122.457718187977903, 37.764810068512688 ], [ -122.457700034267219, 37.764549766072378 ], [ -122.457702640928829, 37.764546749210723 ], [ -122.45765013969168, 37.76353311613984 ], [ -122.457827081738984, 37.763482288038738 ], [ -122.459790374597731, 37.762925938047687 ], [ -122.460842964058216, 37.762627642539876 ], [ -122.46084509456081, 37.762627108799968 ], [ -122.460684658382874, 37.760546523892096 ], [ -122.461770397151241, 37.760502041661596 ], [ -122.461770200794135, 37.760499231230455 ], [ -122.46284191307069, 37.760452254741963 ], [ -122.463911891482155, 37.760405344350922 ], [ -122.463781528402038, 37.758538181378015 ], [ -122.463651620775778, 37.756677450683235 ], [ -122.463554499932727, 37.755298102249476 ], [ -122.463580718915097, 37.755014148901829 ], [ -122.463627289771182, 37.754788065181785 ], [ -122.46367889740506, 37.754738571878264 ], [ -122.463722821262465, 37.754601920791259 ], [ -122.463838893966539, 37.75414750585891 ], [ -122.463842129576008, 37.753808596342253 ], [ -122.463777683069083, 37.753601657228067 ], [ -122.463640406958334, 37.753310851043111 ], [ -122.463399006031565, 37.752981452291863 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":23,"ZIP_CODE":94127,"ID":94127},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.458688935885434, 37.730751520241796 ], [ -122.459193144317396, 37.730602954490251 ], [ -122.459352156941819, 37.730515761910091 ], [ -122.459563710785162, 37.730368588301999 ], [ -122.459783802497654, 37.730109540441724 ], [ -122.459878403068345, 37.729884503080157 ], [ -122.459930163903692, 37.729706628889033 ], [ -122.459983752683073, 37.729522472170189 ], [ -122.460023966205156, 37.729195728883113 ], [ -122.460002483633559, 37.728739437629635 ], [ -122.460412720770037, 37.728739179843977 ], [ -122.460815517748841, 37.728680936862041 ], [ -122.460816315573013, 37.728681144164341 ], [ -122.460816314413918, 37.72868110023223 ], [ -122.460815856121073, 37.72868098095028 ], [ -122.46142222273329, 37.728330263725837 ], [ -122.461824751209633, 37.728118912555594 ], [ -122.462068476892256, 37.72804961327914 ], [ -122.462089038987699, 37.728047063364642 ], [ -122.462378284725844, 37.728011300874932 ], [ -122.462703368909061, 37.728024299159358 ], [ -122.462888197868679, 37.72805558978888 ], [ -122.46288814852555, 37.72805550243347 ], [ -122.462888304160828, 37.72805552868347 ], [ -122.462735876702908, 37.727784058577058 ], [ -122.462714226912738, 37.727738412010282 ], [ -122.462615761322709, 37.727529244060726 ], [ -122.462547067236983, 37.727225353979733 ], [ -122.462546035395761, 37.727106268284892 ], [ -122.462545638153259, 37.726997475605309 ], [ -122.46262180837526, 37.726335258944708 ], [ -122.462686726995429, 37.725774916753664 ], [ -122.462815474472038, 37.725482412532848 ], [ -122.462561310804759, 37.725391067720956 ], [ -122.46221285915388, 37.725265563681397 ], [ -122.462212628293415, 37.725265491161082 ], [ -122.462280269039496, 37.725147301470763 ], [ -122.462279803400207, 37.725042766873585 ], [ -122.462279017236384, 37.724866230039204 ], [ -122.462276854232826, 37.724380477322995 ], [ -122.462276505002905, 37.72427060589213 ], [ -122.462276504226139, 37.724270445482276 ], [ -122.46227362197132, 37.723637318172813 ], [ -122.462271183905713, 37.723021052793868 ], [ -122.462431367748181, 37.72300886812026 ], [ -122.462654991355222, 37.722947907918154 ], [ -122.46284032675716, 37.72280173266644 ], [ -122.463189003103793, 37.722604614839412 ], [ -122.463751413929884, 37.722395206040865 ], [ -122.463981569397532, 37.722327034291936 ], [ -122.464293670852172, 37.722113739171022 ], [ -122.464434759676408, 37.721907819106278 ], [ -122.464484214240997, 37.721680008850619 ], [ -122.465390989272279, 37.721673877359507 ], [ -122.46556367354151, 37.721672709140641 ], [ -122.4659783260431, 37.721669902411627 ], [ -122.466277766029194, 37.721667874912988 ], [ -122.46658847710232, 37.721665769467251 ], [ -122.467028877336375, 37.721662784936917 ], [ -122.467185158975667, 37.721661725062667 ], [ -122.467615322899292, 37.721658807641923 ], [ -122.467922730856742, 37.721656721708847 ], [ -122.468076091423683, 37.72165575669883 ], [ -122.468660023251203, 37.721651832680671 ], [ -122.468660429184538, 37.721651830291869 ], [ -122.468975070634144, 37.721649661930378 ], [ -122.469739202269693, 37.721644441148221 ], [ -122.469739672850537, 37.721644437949429 ], [ -122.469877506730057, 37.721643501943454 ], [ -122.470778213987501, 37.721637364239811 ], [ -122.47077894458495, 37.721637359433757 ], [ -122.47167373604637, 37.72163130643554 ], [ -122.471759517799796, 37.721671075214203 ], [ -122.471759949192219, 37.721671054807977 ], [ -122.471760271986454, 37.721671203510112 ], [ -122.471983398728909, 37.721660603850793 ], [ -122.472161906508475, 37.721641204494453 ], [ -122.472321961375684, 37.721623810905996 ], [ -122.472322354823248, 37.721623768058436 ], [ -122.472214746614711, 37.723731792113433 ], [ -122.472056885104323, 37.726824049746483 ], [ -122.471915497296948, 37.728810174564472 ], [ -122.47190716730239, 37.728927188202036 ], [ -122.471594286340178, 37.728902143540118 ], [ -122.47154865397853, 37.729783977184617 ], [ -122.471866468726006, 37.729784522464136 ], [ -122.471849871701991, 37.730103151702181 ], [ -122.471838445445158, 37.730322499137451 ], [ -122.471797435951885, 37.731032354724164 ], [ -122.471741907147091, 37.731926920887339 ], [ -122.471660927786132, 37.733231459533314 ], [ -122.47162189337304, 37.733860262567148 ], [ -122.471569341481938, 37.734706810815084 ], [ -122.471400819161929, 37.735001415396148 ], [ -122.471068098407827, 37.73560670794447 ], [ -122.470574087980822, 37.736589028767121 ], [ -122.470679955794623, 37.736646992229609 ], [ -122.470805946330771, 37.736773656566506 ], [ -122.470869802376484, 37.736951620802394 ], [ -122.470924096654457, 37.737574149498428 ], [ -122.470962730039105, 37.737648904688974 ], [ -122.471094271054184, 37.739515149668783 ], [ -122.471225939871744, 37.741383106823285 ], [ -122.470104939284042, 37.741425112172415 ], [ -122.46903011455143, 37.741472060437133 ], [ -122.468671688881855, 37.741487738762387 ], [ -122.468561098363182, 37.741503345390441 ], [ -122.467747743753378, 37.743412622582262 ], [ -122.4668594971902, 37.743490862582995 ], [ -122.466043187720601, 37.743555382675872 ], [ -122.465806989998114, 37.743574050343277 ], [ -122.464736798394597, 37.743658625608425 ], [ -122.463685995946705, 37.743749409879626 ], [ -122.461381097416904, 37.745569497508143 ], [ -122.459174375277186, 37.74728632007151 ], [ -122.45872851739027, 37.746755429911865 ], [ -122.458610345848541, 37.746751806518411 ], [ -122.458509634961302, 37.746778882011192 ], [ -122.458499844031735, 37.746781514247793 ], [ -122.457949639713704, 37.746779214661537 ], [ -122.457582024204598, 37.746744476612157 ], [ -122.457457161051892, 37.746732677593577 ], [ -122.457301186299645, 37.746714064689691 ], [ -122.457166741019165, 37.746698021157933 ], [ -122.457089836487938, 37.746682896092409 ], [ -122.456314708164584, 37.746530446031059 ], [ -122.455687935660293, 37.746380796419501 ], [ -122.455466732538028, 37.746327980692172 ], [ -122.454664097215115, 37.746106168076913 ], [ -122.454664096869323, 37.746106168082655 ], [ -122.454184426826714, 37.745845539203287 ], [ -122.453916429980183, 37.745699922279499 ], [ -122.453916002908102, 37.745699915076791 ], [ -122.453645157964232, 37.745695560010326 ], [ -122.453495886255311, 37.745691252478657 ], [ -122.453376023619995, 37.74568779337109 ], [ -122.452386953750349, 37.745691424670198 ], [ -122.45222754649042, 37.74569200904012 ], [ -122.452091117231191, 37.74568511552728 ], [ -122.451828632556612, 37.745671851179097 ], [ -122.45181666119403, 37.745671246259803 ], [ -122.45169226258335, 37.745606748366605 ], [ -122.451624634588612, 37.745534387540218 ], [ -122.451624359716789, 37.745534037461439 ], [ -122.450586742649079, 37.744213121547148 ], [ -122.450592179132485, 37.744090792307063 ], [ -122.449918612648133, 37.7432716748716 ], [ -122.449790244582587, 37.743257317336237 ], [ -122.449582834428256, 37.743065029012413 ], [ -122.449355958412127, 37.74292182098899 ], [ -122.44913731277687, 37.742828607669701 ], [ -122.448820428983325, 37.742748693538836 ], [ -122.44848892294759, 37.742704730693937 ], [ -122.447384659150103, 37.742608987228614 ], [ -122.447110638216571, 37.742580552169777 ], [ -122.446840940400392, 37.742519081676662 ], [ -122.446657325560608, 37.742442453734959 ], [ -122.446516770315029, 37.742358933848621 ], [ -122.446410971977912, 37.742281706494659 ], [ -122.446323687641325, 37.742184944882247 ], [ -122.446256735689062, 37.742072052701658 ], [ -122.44619443459527, 37.741872554265036 ], [ -122.446156199006268, 37.741535311478742 ], [ -122.44609965968975, 37.741357693405078 ], [ -122.44605943275991, 37.741274575873817 ], [ -122.445964300022951, 37.741198753406074 ], [ -122.445964326755799, 37.741198730714288 ], [ -122.445897881975142, 37.741116602917764 ], [ -122.445523457193502, 37.740972470791057 ], [ -122.445195592772691, 37.740920623913645 ], [ -122.444911120433531, 37.740872114678645 ], [ -122.444681667799003, 37.740793092051724 ], [ -122.444518249198694, 37.740692998244214 ], [ -122.444366170223589, 37.740575544006177 ], [ -122.444209640252396, 37.740380617798955 ], [ -122.444098337188322, 37.740234069945657 ], [ -122.443922038304507, 37.740088462716592 ], [ -122.443694223373313, 37.739971345925731 ], [ -122.44341918472557, 37.739902333376541 ], [ -122.443019593631774, 37.739814475654143 ], [ -122.442856748556963, 37.739767263698369 ], [ -122.44271760477325, 37.739682237717481 ], [ -122.442597107319372, 37.739547858254923 ], [ -122.442525191527608, 37.739448400155375 ], [ -122.44250398997913, 37.739238469269011 ], [ -122.442627783322195, 37.738564600951854 ], [ -122.442625226229453, 37.738313911390271 ], [ -122.442579349780331, 37.738171569110513 ], [ -122.44244617419956, 37.737799536516135 ], [ -122.442403843641571, 37.737639851367689 ], [ -122.442421017736137, 37.737438198043598 ], [ -122.442488947503193, 37.737289169592358 ], [ -122.442657322787326, 37.737118881702763 ], [ -122.443602235926093, 37.736502583404238 ], [ -122.443683487927487, 37.73653803376142 ], [ -122.443842427221611, 37.736579809812575 ], [ -122.444038854214782, 37.736575290313169 ], [ -122.444187688286519, 37.736528330103852 ], [ -122.444306066715512, 37.736409368208768 ], [ -122.444405709994072, 37.736218559056141 ], [ -122.444433832419023, 37.736070356056409 ], [ -122.444478073435704, 37.735720552668923 ], [ -122.444456723960371, 37.735604611251425 ], [ -122.444414926545633, 37.735547154436588 ], [ -122.444280987817251, 37.735484218369663 ], [ -122.444190291728404, 37.735407445883219 ], [ -122.443868794328736, 37.73522293273804 ], [ -122.443498916758756, 37.735041781619209 ], [ -122.443241645458286, 37.734935120886668 ], [ -122.44298838327488, 37.734915120161688 ], [ -122.442971182760076, 37.734564427784264 ], [ -122.444336617762318, 37.734557437927307 ], [ -122.445353637361492, 37.734548793463254 ], [ -122.445350300553969, 37.734322189420951 ], [ -122.445385609625191, 37.734245207403205 ], [ -122.445695180894745, 37.733970768223749 ], [ -122.445782219446897, 37.733850288395629 ], [ -122.445605378551107, 37.733800711254226 ], [ -122.444320121334613, 37.733811072362919 ], [ -122.444320397855094, 37.733087687518228 ], [ -122.44431434932487, 37.732346901474607 ], [ -122.444299518643774, 37.732277163251723 ], [ -122.444288854528963, 37.731568915105107 ], [ -122.446578400413941, 37.7315490470612 ], [ -122.447291821211039, 37.731547153756608 ], [ -122.448866265260094, 37.731542959168735 ], [ -122.451146666771351, 37.731536846888879 ], [ -122.453411343594681, 37.731530646828205 ], [ -122.453590911574565, 37.731488405776453 ], [ -122.454915878760758, 37.731464997636976 ], [ -122.455762555159509, 37.731348802743547 ], [ -122.456607498028021, 37.731187733113579 ], [ -122.457474238952088, 37.730997495241198 ], [ -122.458222500186622, 37.73077738189027 ], [ -122.458472470688633, 37.730752827866375 ], [ -122.458688935885434, 37.730751520241796 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":24,"ZIP_CODE":94117,"ID":94117},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.456669912105653, 37.763814688946653 ], [ -122.45765013969168, 37.76353311613984 ], [ -122.457702640928829, 37.764546749210723 ], [ -122.457700034267219, 37.764549766072378 ], [ -122.457718187977903, 37.764810068512688 ], [ -122.457756133601251, 37.765354151194842 ], [ -122.457788627971766, 37.765820072733575 ], [ -122.457789624362519, 37.766014767234282 ], [ -122.45751185755033, 37.765937046103922 ], [ -122.457489349789753, 37.765930717627668 ], [ -122.457438759694597, 37.76592231265932 ], [ -122.457189364808954, 37.765880549298529 ], [ -122.456913422826119, 37.76587361486397 ], [ -122.456823880275138, 37.765884275950789 ], [ -122.456616092088495, 37.765909015262118 ], [ -122.455121527013688, 37.766098468178491 ], [ -122.454592923214804, 37.766165469813686 ], [ -122.452947253369459, 37.766374046206209 ], [ -122.452946199816822, 37.766368851617294 ], [ -122.452945976378615, 37.766368855319321 ], [ -122.452947033686613, 37.766374074293772 ], [ -122.452996080750566, 37.76647606094825 ], [ -122.453164789642727, 37.767306895129927 ], [ -122.453352288400112, 37.768246025041712 ], [ -122.453445551985865, 37.76871045824668 ], [ -122.453536875207789, 37.7691652251725 ], [ -122.453536875229432, 37.769165225996225 ], [ -122.45361853828534, 37.769567547950977 ], [ -122.453726227138517, 37.770098080109292 ], [ -122.453902388799008, 37.771053479872258 ], [ -122.453902454621286, 37.771053837806122 ], [ -122.453979522461594, 37.771428395389663 ], [ -122.454018233133866, 37.771616238745679 ], [ -122.454083217765842, 37.771930404296491 ], [ -122.454285116857562, 37.772895177759331 ], [ -122.454383433186777, 37.773377561015685 ], [ -122.454474386066082, 37.77382381381878 ], [ -122.454642052912618, 37.774646438033749 ], [ -122.45468264773983, 37.77475548474694 ], [ -122.453003330637316, 37.774970754669006 ], [ -122.452810237317621, 37.774995318605924 ], [ -122.452963825070867, 37.775750129254348 ], [ -122.45318832797058, 37.776853425180988 ], [ -122.453384996187339, 37.777826863341367 ], [ -122.452431111623397, 37.777939652339285 ], [ -122.451543139139602, 37.778052106408275 ], [ -122.450826415883952, 37.778142868140662 ], [ -122.450654812483819, 37.778164598609756 ], [ -122.449767079183658, 37.778277008331997 ], [ -122.448885763577039, 37.778388598994987 ], [ -122.448879206948348, 37.778389428728616 ], [ -122.447997721370214, 37.778501033647089 ], [ -122.447039806751391, 37.778622307248391 ], [ -122.446846469920573, 37.777669108909684 ], [ -122.445155752336433, 37.777886506805444 ], [ -122.443506919728407, 37.778089213415292 ], [ -122.441865967226732, 37.778299511701405 ], [ -122.441865967212379, 37.778299511152262 ], [ -122.441865640558632, 37.778299552792262 ], [ -122.441865640580161, 37.778299553615973 ], [ -122.440213334218711, 37.778511463388014 ], [ -122.43855227772093, 37.778724107938281 ], [ -122.437707163233824, 37.778832380147421 ], [ -122.436884629197735, 37.778937753600381 ], [ -122.435241012398947, 37.779144878458894 ], [ -122.433595938040227, 37.779354585436536 ], [ -122.431951802315041, 37.779564148987781 ], [ -122.430233236584385, 37.779782794230314 ], [ -122.430047265291023, 37.778850928515844 ], [ -122.429849199803343, 37.777919295570904 ], [ -122.429686883301301, 37.776976022351889 ], [ -122.429626330769736, 37.776513151917612 ], [ -122.429622603726443, 37.776331628240193 ], [ -122.42955405641294, 37.77604428584678 ], [ -122.429365859793393, 37.775111180032617 ], [ -122.429272630354163, 37.774648924607646 ], [ -122.429178384487102, 37.774181626717471 ], [ -122.429178383795261, 37.774181626728783 ], [ -122.42917834319843, 37.774181422747475 ], [ -122.428990051967787, 37.773247800757233 ], [ -122.428802101899663, 37.772315846507482 ], [ -122.428708105393241, 37.771849753810166 ], [ -122.428614043687816, 37.771383330257258 ], [ -122.428520173517541, 37.770917853912216 ], [ -122.428426180541749, 37.770451760600665 ], [ -122.428428952948465, 37.770451409238284 ], [ -122.428218351470321, 37.769440923680406 ], [ -122.428991181191208, 37.769394223715665 ], [ -122.429127985682982, 37.769456128057627 ], [ -122.429905643091914, 37.769407921549679 ], [ -122.430247361256178, 37.769392261627225 ], [ -122.431356624058139, 37.76932091157898 ], [ -122.431570380896062, 37.769307161387864 ], [ -122.432464341208131, 37.769249650838944 ], [ -122.433572207534368, 37.769178369516744 ], [ -122.43489319213792, 37.769113797429938 ], [ -122.435794213398353, 37.769058453615109 ], [ -122.436588267341477, 37.76900080227221 ], [ -122.436625219679314, 37.768918977544402 ], [ -122.436478247038266, 37.767274662557512 ], [ -122.436980399947345, 37.767244348801164 ], [ -122.43729899343451, 37.767221930124791 ], [ -122.437291829491301, 37.767045826510717 ], [ -122.437288601235366, 37.766922046842083 ], [ -122.437333800177683, 37.766762171805773 ], [ -122.4374853951944, 37.766644323028956 ], [ -122.437684727134425, 37.766587115085294 ], [ -122.437879374385105, 37.76661079550852 ], [ -122.438219625977609, 37.766701399454838 ], [ -122.438291383601225, 37.766725780787596 ], [ -122.438386133953244, 37.766664738151036 ], [ -122.438555364477878, 37.766297386980668 ], [ -122.439501839688162, 37.766575524599709 ], [ -122.441241683591315, 37.765270858517731 ], [ -122.441931912880605, 37.765295099009755 ], [ -122.442086687309455, 37.765324419445463 ], [ -122.443210588891787, 37.765339994614024 ], [ -122.443347278899211, 37.765332794099429 ], [ -122.443263297846215, 37.765217752592115 ], [ -122.443278634379993, 37.764726164248771 ], [ -122.443215275433289, 37.764557545459958 ], [ -122.443199827408847, 37.764468898600072 ], [ -122.44294975946913, 37.764109072128207 ], [ -122.442951036556252, 37.763677959114567 ], [ -122.443247528217242, 37.763690608015906 ], [ -122.443434935848089, 37.763875622244342 ], [ -122.44441170822752, 37.76398692869914 ], [ -122.444663866724483, 37.763326501903514 ], [ -122.445692026290132, 37.762347953618033 ], [ -122.445825769194499, 37.762264137786076 ], [ -122.445930590545728, 37.762233223779305 ], [ -122.446167833254592, 37.762219287792306 ], [ -122.446246565080784, 37.762246873735464 ], [ -122.44628722735257, 37.762310164748847 ], [ -122.446391621016517, 37.76223195154369 ], [ -122.446401427721412, 37.762069683149655 ], [ -122.446384044294348, 37.761816426422072 ], [ -122.44642928686055, 37.76181245987528 ], [ -122.446783402935864, 37.761781413739634 ], [ -122.446783403627563, 37.761781413728215 ], [ -122.44652973647915, 37.761396213495424 ], [ -122.446409895656728, 37.761094344377824 ], [ -122.446433636964471, 37.761006719141555 ], [ -122.446579328750119, 37.76090155472 ], [ -122.446866213158088, 37.76042156830691 ], [ -122.446952816919733, 37.760170129150154 ], [ -122.447157396221257, 37.759660681065917 ], [ -122.447394862769713, 37.759372842727622 ], [ -122.447681986744499, 37.759189835272018 ], [ -122.448080121328474, 37.759090506458826 ], [ -122.448534508559618, 37.759045234831405 ], [ -122.448576884007139, 37.759648639321185 ], [ -122.449214958651069, 37.759610853827809 ], [ -122.451553087455522, 37.759472365763493 ], [ -122.451578365088082, 37.759597660221687 ], [ -122.451956989358152, 37.761478249938222 ], [ -122.451957007208804, 37.761478336720671 ], [ -122.452096188532394, 37.76216681475799 ], [ -122.452096203587132, 37.762166887302627 ], [ -122.452181289886042, 37.762586053251901 ], [ -122.452233043763783, 37.762842560862168 ], [ -122.452399889409662, 37.763669482365366 ], [ -122.452569353429794, 37.764509361471809 ], [ -122.452569580477117, 37.764510482582956 ], [ -122.452569807022613, 37.764510478830069 ], [ -122.452569575903098, 37.764509334437378 ], [ -122.45351591398105, 37.764395394431268 ], [ -122.453114639516684, 37.762361563728888 ], [ -122.453744673977482, 37.761878784498755 ], [ -122.454009611320302, 37.762667869264533 ], [ -122.454946081907835, 37.7631787014639 ], [ -122.454945541962573, 37.76366305305779 ], [ -122.454845151642289, 37.763732313486969 ], [ -122.454179864833876, 37.763912200042988 ], [ -122.454217265424234, 37.764310945798535 ], [ -122.455466091062405, 37.764160565952579 ], [ -122.455781065686594, 37.764070070210742 ], [ -122.456669912105653, 37.763814688946653 ] ] ] }}, {"type": "Feature", "properties": {"OBJECTID":25,"ZIP_CODE":94132,"ID":94132},"geometry": { "type": "Polygon", "coordinates": [ [ [ -122.508287627239582, 37.733266432915535 ], [ -122.508283610098232, 37.733309766760698 ], [ -122.508258422649121, 37.733337665998171 ], [ -122.50825465624375, 37.73339026610973 ], [ -122.508261381386347, 37.733447151520778 ], [ -122.508260632832361, 37.733547429417492 ], [ -122.508268595371646, 37.733586094926054 ], [ -122.508272540744613, 37.733668094001438 ], [ -122.508265010681669, 37.733709427205042 ], [ -122.508286802179072, 37.733747856989588 ], [ -122.508296363517715, 37.733781688010566 ], [ -122.508300683356651, 37.733813548133803 ], [ -122.508285681955428, 37.733834406267761 ], [ -122.508267344574577, 37.733859785121595 ], [ -122.508247213289522, 37.733882790933777 ], [ -122.508237692618366, 37.73429843541993 ], [ -122.508237373460645, 37.734350633938469 ], [ -122.5082471948962, 37.734394074716711 ], [ -122.508256635722688, 37.734423443934411 ], [ -122.508245332959405, 37.734453167005526 ], [ -122.50826415897464, 37.734509845871564 ], [ -122.508256016313609, 37.734528526845153 ], [ -122.50825693455738, 37.734562505189558 ], [ -122.508280334704608, 37.734596443696226 ], [ -122.508271010987045, 37.734635403850064 ], [ -122.508266062787172, 37.734708283416225 ], [ -122.508267732334318, 37.734770062222154 ], [ -122.508272423230224, 37.734815650964592 ], [ -122.508314825176313, 37.734912789977905 ], [ -122.508324461220354, 37.734949366434215 ], [ -122.508350693626355, 37.735024118117309 ], [ -122.508408601293198, 37.735055064766357 ], [ -122.508454835865138, 37.735102005566297 ], [ -122.508462371966132, 37.735124883136479 ], [ -122.508476933993705, 37.735151761694588 ], [ -122.508477796681021, 37.735183680465923 ], [ -122.508497058717865, 37.735256490973484 ], [ -122.508537000388259, 37.735326545054548 ], [ -122.508539031954456, 37.735401708981378 ], [ -122.508528202252251, 37.735448935792135 ], [ -122.506718399360096, 37.735463437562494 ], [ -122.506718392445464, 37.735463437680252 ], [ -122.506717419598758, 37.735469757763546 ], [ -122.506541776696594, 37.735470423847289 ], [ -122.506142139643117, 37.735471938745221 ], [ -122.505711404999388, 37.735473569905054 ], [ -122.505257352091178, 37.735475287872006 ], [ -122.504189206002195, 37.735470928034005 ], [ -122.503104759187963, 37.735466491452826 ], [ -122.50249812714712, 37.735433799348435 ], [ -122.50206735537283, 37.735396211199387 ], [ -122.502021315734993, 37.73539219398544 ], [ -122.501556481916552, 37.735330499723666 ], [ -122.501555214836827, 37.735330188314435 ], [ -122.501291847576297, 37.735265403511711 ], [ -122.501214897179494, 37.735242075875206 ], [ -122.501097483348147, 37.735206481207975 ], [ -122.501097483002411, 37.735206481213844 ], [ -122.500970549161394, 37.735174012383368 ], [ -122.500888239775747, 37.73515295885273 ], [ -122.500650675572956, 37.735059919015036 ], [ -122.500571951887039, 37.735029088020617 ], [ -122.500289079616721, 37.734896880574155 ], [ -122.500140914702612, 37.734827630984967 ], [ -122.499430330098079, 37.734471850699563 ], [ -122.499196335607635, 37.734311616338935 ], [ -122.499180283, 37.734301056816975 ], [ -122.499086082983126, 37.734239092175393 ], [ -122.498948533172893, 37.734128137325406 ], [ -122.498483756692679, 37.733969859923228 ], [ -122.49837749236211, 37.733942575660954 ], [ -122.498050148013945, 37.73385852689691 ], [ -122.497707486783483, 37.733793124978028 ], [ -122.497675024009141, 37.73378860832171 ], [ -122.497251243304476, 37.7337296478455 ], [ -122.4970611531011, 37.733738715676616 ], [ -122.496807213285692, 37.733750829171804 ], [ -122.496636264393828, 37.733770812006838 ], [ -122.496636262010625, 37.733770813420726 ], [ -122.496635997165527, 37.733770842906516 ], [ -122.496635997172902, 37.733770843181105 ], [ -122.496635991376749, 37.733770846301013 ], [ -122.496448643026866, 37.733877460645239 ], [ -122.494403119131789, 37.733960247035334 ], [ -122.493941605376719, 37.733981316545631 ], [ -122.493941607430031, 37.733981341508411 ], [ -122.494014877350082, 37.735023413250019 ], [ -122.4940149282546, 37.735024137316628 ], [ -122.493857150107345, 37.735028823489081 ], [ -122.493857076611491, 37.73502785037892 ], [ -122.493407285267097, 37.734856242527158 ], [ -122.493406966558723, 37.734856121008917 ], [ -122.493274340840912, 37.734785121286002 ], [ -122.492843999903116, 37.734842083695071 ], [ -122.492330945602859, 37.73504482611267 ], [ -122.492142715245791, 37.735181846965403 ], [ -122.491805731315921, 37.735279805981911 ], [ -122.491730212101302, 37.735301758325164 ], [ -122.491320518441114, 37.735327019185135 ], [ -122.490973609504408, 37.735348171552815 ], [ -122.490725734916396, 37.735399781312303 ], [ -122.490526224357907, 37.735470000646821 ], [ -122.490270108429897, 37.735606337180243 ], [ -122.490460674310157, 37.735842274774221 ], [ -122.490521485540071, 37.736028873151284 ], [ -122.490552748713441, 37.736251597078756 ], [ -122.490686267381363, 37.736541968564268 ], [ -122.491162508402653, 37.737157782139001 ], [ -122.491211452414888, 37.737221069184358 ], [ -122.491334899611488, 37.737293023539365 ], [ -122.491198309070924, 37.737311342176547 ], [ -122.491113859834144, 37.737397356998116 ], [ -122.490894410355324, 37.737610557460023 ], [ -122.490695166321217, 37.737732995785407 ], [ -122.490475969759899, 37.737832474268195 ], [ -122.490364187143001, 37.737929559098433 ], [ -122.489970938868055, 37.737956983380037 ], [ -122.489794342484018, 37.737821521499782 ], [ -122.489559638156635, 37.737725144708122 ], [ -122.489310346380378, 37.737544144541232 ], [ -122.48917282500021, 37.737387715271872 ], [ -122.488933343471572, 37.73715804150379 ], [ -122.488518054177234, 37.737001890327612 ], [ -122.488261361358497, 37.736979897727672 ], [ -122.487883946457515, 37.736972903025247 ], [ -122.487473746906744, 37.73696000969079 ], [ -122.486865148034397, 37.736893072836374 ], [ -122.486239320534182, 37.736758103009961 ], [ -122.485767077957547, 37.736757243866982 ], [ -122.485398323256604, 37.736886930845941 ], [ -122.485055057260084, 37.737081691563745 ], [ -122.484981330342137, 37.737106613405395 ], [ -122.481727269492282, 37.73717192680251 ], [ -122.480654887744791, 37.73721905491567 ], [ -122.479601690542523, 37.737266045133403 ], [ -122.478500149938654, 37.73731300537402 ], [ -122.477443897267278, 37.737360110526431 ], [ -122.476368270747585, 37.737407342172453 ], [ -122.475288554960258, 37.737454742960537 ], [ -122.474232714891599, 37.737476308128976 ], [ -122.47327754880429, 37.737518149435381 ], [ -122.473161338869033, 37.737550437503423 ], [ -122.472088826157801, 37.737598476381557 ], [ -122.470962730039105, 37.737648904688974 ], [ -122.470924096654457, 37.737574149498428 ], [ -122.470869802376484, 37.736951620802394 ], [ -122.470805946330771, 37.736773656566506 ], [ -122.470679955794623, 37.736646992229609 ], [ -122.470574087980822, 37.736589028767121 ], [ -122.471068098407827, 37.73560670794447 ], [ -122.471400819161929, 37.735001415396148 ], [ -122.471569341481938, 37.734706810815084 ], [ -122.47162189337304, 37.733860262567148 ], [ -122.471660927786132, 37.733231459533314 ], [ -122.471741907147091, 37.731926920887339 ], [ -122.471797435951885, 37.731032354724164 ], [ -122.471838445445158, 37.730322499137451 ], [ -122.471849871701991, 37.730103151702181 ], [ -122.471866468726006, 37.729784522464136 ], [ -122.47154865397853, 37.729783977184617 ], [ -122.471594286340178, 37.728902143540118 ], [ -122.47190716730239, 37.728927188202036 ], [ -122.471915497296948, 37.728810174564472 ], [ -122.472056885104323, 37.726824049746483 ], [ -122.472214746614711, 37.723731792113433 ], [ -122.472322354823248, 37.721623768058436 ], [ -122.472321961375684, 37.721623810905996 ], [ -122.472161906508475, 37.721641204494453 ], [ -122.471983398728909, 37.721660603850793 ], [ -122.471760271986454, 37.721671203510112 ], [ -122.471759949192219, 37.721671054807977 ], [ -122.471673586030391, 37.721631204836193 ], [ -122.470779028465699, 37.721637301442819 ], [ -122.469876768913451, 37.721643443134909 ], [ -122.469739691960783, 37.721644376097736 ], [ -122.46897449401726, 37.721649578720722 ], [ -122.468660059213846, 37.721651715058712 ], [ -122.46807558495307, 37.721655684399515 ], [ -122.467922730856742, 37.721656721708847 ], [ -122.467615322899292, 37.721658807641923 ], [ -122.467185158975667, 37.721661725062667 ], [ -122.467028877336375, 37.721662784936917 ], [ -122.46658847710232, 37.721665769467251 ], [ -122.466277766029194, 37.721667874912988 ], [ -122.4659783260431, 37.721669902411627 ], [ -122.465564132461637, 37.72167263116085 ], [ -122.465391251749992, 37.721673798812127 ], [ -122.465390987937923, 37.721673800741335 ], [ -122.46448421418296, 37.721680006654026 ], [ -122.464483630192618, 37.721680010624304 ], [ -122.464483033412463, 37.721680014807887 ], [ -122.464479920172778, 37.721680035685075 ], [ -122.464479920230843, 37.721680037881669 ], [ -122.464483033470529, 37.721680017004481 ], [ -122.464484214240997, 37.721680008850619 ], [ -122.464434759676408, 37.721907819106278 ], [ -122.464293670852172, 37.722113739171022 ], [ -122.463981569397532, 37.722327034291936 ], [ -122.463751413929884, 37.722395206040865 ], [ -122.463189003103793, 37.722604614839412 ], [ -122.46284032675716, 37.72280173266644 ], [ -122.462654991355222, 37.722947907918154 ], [ -122.462431367748181, 37.72300886812026 ], [ -122.462271183905713, 37.723021052793868 ], [ -122.462271183761132, 37.723021008020723 ], [ -122.462265621163738, 37.721827887159478 ], [ -122.46226557117231, 37.721695003479546 ], [ -122.462267174469247, 37.721694992704748 ], [ -122.462267173874807, 37.721694970189525 ], [ -122.462264896007014, 37.721694985883083 ], [ -122.462254399326852, 37.72000857322422 ], [ -122.46226246554707, 37.719928593578096 ], [ -122.462245294921956, 37.718767790464547 ], [ -122.462244936309219, 37.718219524954932 ], [ -122.46263854285489, 37.718211149542661 ], [ -122.462639625007327, 37.717936035524978 ], [ -122.462638771382373, 37.717866433871905 ], [ -122.462633312624419, 37.717421207682776 ], [ -122.46262477066405, 37.716570820282072 ], [ -122.462620481465109, 37.716143794339722 ], [ -122.462615213395566, 37.71561930379395 ], [ -122.462607827629938, 37.714883950429027 ], [ -122.462602039439204, 37.714307653173123 ], [ -122.462588724439357, 37.714029538822885 ], [ -122.462554985317752, 37.713903926321834 ], [ -122.46256899895387, 37.713150165038506 ], [ -122.462580658473911, 37.712523033743715 ], [ -122.462581299448402, 37.712273520359908 ], [ -122.462570051320355, 37.711370301468136 ], [ -122.462063256954337, 37.711372729296876 ], [ -122.462545712573657, 37.711171028559598 ], [ -122.462554670587338, 37.71117015272295 ], [ -122.462558461843784, 37.710567432270715 ], [ -122.462893196389857, 37.710562754126848 ], [ -122.464175624997623, 37.710548242222522 ], [ -122.464766855714529, 37.710481381431755 ], [ -122.465994326901708, 37.710153924678359 ], [ -122.466791287837083, 37.709825747176509 ], [ -122.467161376112116, 37.709634146029515 ], [ -122.467717389066479, 37.709282172736899 ], [ -122.468442186669975, 37.708710365091008 ], [ -122.468469108419114, 37.708682445380624 ], [ -122.468919327757234, 37.708227236298555 ], [ -122.468936765178938, 37.708230944115137 ], [ -122.469206218211681, 37.708201815905348 ], [ -122.469249900139204, 37.708201720375776 ], [ -122.469298321590273, 37.708202284245147 ], [ -122.470831636978247, 37.708197238849166 ], [ -122.471323400170547, 37.708198733212157 ], [ -122.471333181497599, 37.708198762882461 ], [ -122.471352032181699, 37.708198820402657 ], [ -122.472828567745367, 37.708203294119777 ], [ -122.475753134738511, 37.70818173979459 ], [ -122.478975890370975, 37.708191500643373 ], [ -122.481681250730091, 37.708183096324262 ], [ -122.482448808625776, 37.708181853858243 ], [ -122.484067695750653, 37.708165047020167 ], [ -122.485639305786634, 37.708148710071598 ], [ -122.485678792700227, 37.708148575886831 ], [ -122.485857818531997, 37.708147968478251 ], [ -122.493439707434533, 37.708121990011122 ], [ -122.498399514345707, 37.70810473139138 ], [ -122.502773696653762, 37.708089337426266 ], [ -122.502794335644097, 37.708342053909199 ], [ -122.502870002532575, 37.708519665129593 ], [ -122.502919824088835, 37.708764674445675 ], [ -122.502952891728171, 37.708965329397188 ], [ -122.502970627807798, 37.709110275269509 ], [ -122.503182081004425, 37.70964337370075 ], [ -122.503220569589601, 37.710045154472041 ], [ -122.503285115419118, 37.710323219970874 ], [ -122.503377921169559, 37.710623467751866 ], [ -122.503454573963339, 37.710901670868985 ], [ -122.50338876186548, 37.711025718699396 ], [ -122.503480367063446, 37.71128134783477 ], [ -122.503538681827621, 37.71139229600675 ], [ -122.503607152393855, 37.711815885652477 ], [ -122.50392442753342, 37.711977024740428 ], [ -122.50398926023928, 37.712137307747028 ], [ -122.504018884937224, 37.712338364595105 ], [ -122.504050960348835, 37.712566162951994 ], [ -122.504083766615167, 37.712821075451494 ], [ -122.50415623472351, 37.713008011664755 ], [ -122.504154839245047, 37.713276897967987 ], [ -122.504262407999079, 37.713483152309799 ], [ -122.504310222769533, 37.713717550242542 ], [ -122.504341216541519, 37.713905192080865 ], [ -122.504415861257201, 37.714172784107312 ], [ -122.504527957268053, 37.714546871585753 ], [ -122.504619249107378, 37.714854698366167 ], [ -122.504734681128681, 37.715160054242361 ], [ -122.50484307775433, 37.715396854580646 ], [ -122.504983687289311, 37.715738179098203 ], [ -122.505015183177221, 37.715944354142479 ], [ -122.505064940330996, 37.716122405267939 ], [ -122.505277983345735, 37.716713159786387 ], [ -122.505378665806077, 37.716920217389642 ], [ -122.50544954257559, 37.71711198714339 ], [ -122.505534236338548, 37.717303178231596 ], [ -122.505550939969169, 37.717537761949714 ], [ -122.505627533936476, 37.717813217613234 ], [ -122.505733499538735, 37.718087829999391 ], [ -122.505795361000153, 37.718329885441641 ], [ -122.50575895814147, 37.718518674479142 ], [ -122.505846981170734, 37.71870500140907 ], [ -122.505947348818779, 37.718836178428148 ], [ -122.50603889798937, 37.719089059528848 ], [ -122.50604605833162, 37.719354365984017 ], [ -122.506067045042258, 37.719619436964734 ], [ -122.506098310388239, 37.719752820508575 ], [ -122.506085112584401, 37.71990447335908 ], [ -122.506073138870676, 37.719973352141601 ], [ -122.506058509098679, 37.720136017347265 ], [ -122.506066050462266, 37.720287316996625 ], [ -122.506093067115529, 37.720455453693035 ], [ -122.506119272327297, 37.720657598256366 ], [ -122.506215620201345, 37.720895976024821 ], [ -122.50629167450829, 37.721023102978798 ], [ -122.506401700968937, 37.721383832251519 ], [ -122.506521510466683, 37.721658550935217 ], [ -122.507655277014294, 37.728423963999113 ], [ -122.507663331414165, 37.728466062015535 ], [ -122.507703574614794, 37.728547442310145 ], [ -122.507748947428013, 37.728626675201951 ], [ -122.507757146370523, 37.728738132019352 ], [ -122.507784794329567, 37.728865395952631 ], [ -122.50778664879924, 37.728934039418284 ], [ -122.507794848177895, 37.729045496221595 ], [ -122.507815341525188, 37.729163954079155 ], [ -122.50786205937635, 37.729292953229624 ], [ -122.507900514994574, 37.72943617151067 ], [ -122.507937978539388, 37.729542665673854 ], [ -122.507979524242614, 37.729608229023043 ], [ -122.508001314382625, 37.729646658611678 ], [ -122.508029211854279, 37.729655111115953 ], [ -122.5080286514508, 37.729698385786008 ], [ -122.508045757198687, 37.729755437677454 ], [ -122.508054266358684, 37.729814352687157 ], [ -122.508053396658397, 37.729910168841855 ], [ -122.508060436991443, 37.729978723905262 ], [ -122.508062096980282, 37.730040159271667 ], [ -122.508075550679465, 37.730090062827138 ], [ -122.508077646560039, 37.730167629612303 ], [ -122.508084862782624, 37.730242705229408 ], [ -122.508102701340974, 37.730326871159861 ], [ -122.508101275259605, 37.730402094356123 ], [ -122.508118432954731, 37.730525073140598 ], [ -122.508154289380698, 37.730636058484791 ], [ -122.508159291744406, 37.730757184482151 ], [ -122.508147188358009, 37.730821258058114 ], [ -122.508157490852682, 37.730882546377835 ], [ -122.508176687224534, 37.73095295419229 ], [ -122.508155505168105, 37.731001044217557 ], [ -122.508070616958207, 37.731059491187089 ], [ -122.508063151964294, 37.731103226906185 ], [ -122.50803827155984, 37.731142452222485 ], [ -122.508010240050936, 37.731193062852363 ], [ -122.508020236798259, 37.731243025052876 ], [ -122.508042824992458, 37.73131097145712 ], [ -122.508040601277514, 37.731356677807476 ], [ -122.508006517533232, 37.731439325082015 ], [ -122.508021273414599, 37.731473410969826 ], [ -122.50803497807641, 37.731532581064045 ], [ -122.508027744858111, 37.731584897172127 ], [ -122.508025706262629, 37.731637468116226 ], [ -122.508040152865036, 37.731724095470533 ], [ -122.508058978047401, 37.731780774943978 ], [ -122.508063043647368, 37.731867235581163 ], [ -122.508091810132555, 37.731971817943496 ], [ -122.508115264680967, 37.732007815523275 ], [ -122.508158104591416, 37.732057217905187 ], [ -122.508170145127792, 37.732118820238121 ], [ -122.508180754565259, 37.732191434375828 ], [ -122.508206800359858, 37.732259321810233 ], [ -122.508252110705484, 37.732336151955884 ], [ -122.508247422336822, 37.732418641589092 ], [ -122.508261368501763, 37.73248673525643 ], [ -122.508297786010743, 37.732554445876552 ], [ -122.50831883177085, 37.732629285992957 ], [ -122.508349701883319, 37.732683699580726 ], [ -122.508381054023317, 37.73275596038183 ], [ -122.508401673597731, 37.732815012827984 ], [ -122.508412291945035, 37.732887970164001 ], [ -122.508377095537298, 37.732929431631767 ], [ -122.50834351603902, 37.732966745040173 ], [ -122.508312026503646, 37.733017414665078 ], [ -122.508294180910255, 37.733060983682996 ], [ -122.508292383963067, 37.733122478220693 ], [ -122.508302816757165, 37.733188571798578 ], [ -122.50828645856835, 37.733223187740961 ], [ -122.508287627239582, 37.733266432915535 ] ] ] }} ]} ================================================ FILE: bindings/python/package.json ================================================ { "name": "keplergl-jupyter", "version": "0.0.0", "scripts": { "build": "node esbuild.config.mjs", "dev": "node esbuild.config.mjs --watch", "typecheck": "tsc --noEmit", "lint": "eslint src/", "prettier": "prettier --write 'src/**/*.{ts,tsx}'" }, "devDependencies": { "@anywidget/types": "^0.2.0", "@types/react": "^18.2.0", "@types/react-dom": "^18.2.0", "esbuild": "^0.20.0", "typescript": "^5.4.0", "eslint": "^8.57.0", "@typescript-eslint/eslint-plugin": "^7.0.0", "@typescript-eslint/parser": "^7.0.0", "prettier": "^3.2.0" }, "dependencies": { "@kepler.gl/actions": "^3.2.0", "@kepler.gl/components": "^3.2.0", "@kepler.gl/processors": "^3.2.0", "@kepler.gl/reducers": "^3.2.0", "@kepler.gl/schemas": "^3.2.0", "@kepler.gl/styles": "^3.2.0", "react": "^18.2.0", "react-dom": "^18.2.0", "redux": "^4.2.1", "react-redux": "^8.0.5", "styled-components": "^6.1.8", "apache-arrow": "^21.0.0", "assert": "^2.1.0", "events": "^3.3.0" } } ================================================ FILE: bindings/python/pyproject.toml ================================================ [project] name = "keplergl" version = "0.4.0rc1" description = "Kepler.gl Jupyter Widget" readme = "README.md" requires-python = ">=3.9" license = {text = "MIT"} authors = [{name = "Uber Technologies, Inc."}] classifiers = [ "Framework :: Jupyter", "Programming Language :: Python :: 3", ] dependencies = [ "anywidget>=0.9.0", "traitlets>=5.0", "geopandas>=0.14.3", "pyarrow>=16.0.0", "geoarrow-pyarrow>=0.1.2", "geoarrow-pandas>=0.1.1", ] [project.optional-dependencies] dev = [ "pytest>=8.0", "pytest-cov>=4.0", "jupyterlab>=4.0", "notebook>=7.0", ] [build-system] requires = ["hatchling", "hatch-jupyter-builder>=0.9.0"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["keplergl"] [tool.hatch.build.targets.wheel.shared-data] "keplergl/static" = "share/jupyter/nbextensions/keplergl-jupyter" [tool.hatch.build.hooks.jupyter-builder] dependencies = ["hatch-jupyter-builder>=0.9.0"] build-function = "hatch_jupyter_builder.npm_builder" ensured-targets = ["keplergl/static/widget.js", "keplergl/static/widget.css"] [tool.hatch.build.hooks.jupyter-builder.build-kwargs] npm = ["npm"] build_cmd = "build" [tool.uv] dev-dependencies = [ "pytest>=8.0", "pytest-cov>=4.0", "jupyterlab>=4.0", "notebook>=7.0", ] ================================================ FILE: bindings/python/src/components/App.tsx ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import React, {useEffect, useState, useRef} from 'react'; import {injectComponents} from '@kepler.gl/components'; import {KEPLER_ID} from '../store'; import type {WidgetModel} from '../types'; // Get the KeplerGl container component via dependency injection const KeplerGl = injectComponents(); interface AppProps { model: WidgetModel; } export function App({model}: AppProps) { const [height, setHeight] = useState(model.get('height')); const [width, setWidth] = useState(800); const containerRef = useRef(null); useEffect(() => { const handleHeightChange = () => setHeight(model.get('height')); model.on('change:height', handleHeightChange); return () => model.off('change:height', handleHeightChange); }, [model]); // Observe container width changes useEffect(() => { if (!containerRef.current) return; const resizeObserver = new ResizeObserver(entries => { for (const entry of entries) { if (entry.contentRect.width > 0) { setWidth(entry.contentRect.width); } } }); resizeObserver.observe(containerRef.current); return () => resizeObserver.disconnect(); }, []); return (
); } ================================================ FILE: bindings/python/src/index.ts ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import type {WidgetModel} from './types'; import {KeplerGlWidget} from './widget'; import './styles.css'; export default { initialize({model}: {model: WidgetModel}) { return () => {}; }, render({model, el}: {model: WidgetModel; el: HTMLElement}) { const widget = new KeplerGlWidget(model, el); widget.mount(); model.on('change:data', () => widget.onDataChange()); model.on('change:config', () => widget.onConfigChange()); model.on('change:height', () => widget.onHeightChange()); return () => { widget.unmount(); }; } }; ================================================ FILE: bindings/python/src/process-shim.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project export const process = { env: { NODE_ENV: typeof window !== 'undefined' ? 'production' : 'development' }, browser: true, version: '', platform: 'browser', nextTick: (fn, ...args) => queueMicrotask(() => fn(...args)), cwd: () => '/', argv: [] }; ================================================ FILE: bindings/python/src/store.ts ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import {createStore as createReduxStore, combineReducers, applyMiddleware, compose} from 'redux'; import {keplerGlReducer, enhanceReduxMiddleware} from '@kepler.gl/reducers'; export const KEPLER_ID = 'jupyter_kepler'; const customizedKeplerGlReducer = keplerGlReducer.initialState({ uiState: { currentModal: null, activeSidePanel: null } }); const reducers = combineReducers({ keplerGl: customizedKeplerGlReducer }); export function createStore() { const middlewares = enhanceReduxMiddleware([]); const enhancers = [applyMiddleware(...middlewares)]; // @ts-expect-error Redux types are not compatible with TypeScript return createReduxStore(reducers, {}, compose(...enhancers)); } ================================================ FILE: bindings/python/src/styles.css ================================================ .kepler-gl { font-family: ff-clan-web-pro, "Helvetica Neue", Helvetica, sans-serif; width: 100%; height: 100%; } /* Ensure the map container has proper dimensions */ .kepler-gl .map-container { width: 100%; height: 100%; } /* Fix for maplibre-gl canvas */ .maplibregl-canvas { position: absolute; top: 0; left: 0; } .maplibregl-map { width: 100%; height: 100%; } ================================================ FILE: bindings/python/src/types.ts ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import type {AnyModel} from '@anywidget/types'; export interface KeplerGlWidgetModel { data: Record; config: KeplerGlConfig; height: number; } export interface DatasetPayload { id: string; data: unknown; format: 'csv' | 'json' | 'df' | 'arrow' | 'geojson' | 'geoarrow'; } export interface KeplerGlConfig { version?: string; config?: { visState?: Record; mapState?: Record; mapStyle?: Record; }; } export type WidgetModel = AnyModel; ================================================ FILE: bindings/python/src/utils/data.ts ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import {tableFromIPC} from 'apache-arrow'; import {processCsvData, processGeojson} from '@kepler.gl/processors'; import type {ProcessorResult} from '@kepler.gl/types'; import {ALL_FIELD_TYPES} from '@kepler.gl/constants'; import type {DatasetPayload} from '../types'; const DEBUG = true; function debug(...args: unknown[]) { if (DEBUG) { console.log('[keplergl-data]', ...args); } } // GeoArrow extension metadata key const GEOARROW_METADATA_KEY = 'ARROW:extension:name'; export async function processDataset(payload: DatasetPayload): Promise { const {id, data, format} = payload; debug('processDataset called:', {id, format, dataType: typeof data}); try { let result: ProcessorResult | null = null; switch (format) { case 'arrow': case 'geoarrow': debug('Processing as arrow/geoarrow'); result = processGeoArrowData(data as string); break; case 'csv': debug('Processing as CSV'); result = processCsvData(data as string); break; case 'geojson': debug('Processing as GeoJSON'); result = processGeojson(data as object); break; case 'json': case 'df': debug('Processing as JSON/DataFrame', data); result = processJsonData(data); break; default: throw new Error(`Unknown data format: ${format}`); } debug( 'processDataset result:', result ? {fields: result.fields?.length, rows: result.rows?.length} : null ); return result; } catch (error) { console.error('[keplergl-data] Error processing dataset:', error); throw error; } } /** * Process GeoArrow data by converting to row-based format. * This avoids Arrow version mismatch issues between our code and kepler.gl's internal Arrow. */ function processGeoArrowData(base64Data: string): ProcessorResult | null { debug('processGeoArrowData: decoding base64 data, length:', base64Data.length); const bytes = Uint8Array.from(atob(base64Data), c => c.charCodeAt(0)); debug('processGeoArrowData: decoded to', bytes.length, 'bytes'); const table = tableFromIPC(bytes); debug('processGeoArrowData: created table with', table.numRows, 'rows and', table.numCols, 'columns'); if (table.numRows === 0) { return null; } // Build fields from schema, detecting geoarrow columns from metadata const fields = table.schema.fields.map((field, fieldIndex) => { const extensionName = field.metadata?.get(GEOARROW_METADATA_KEY); const isGeoArrow = extensionName?.startsWith('geoarrow'); debug(`Field ${field.name}: type=${field.type.toString()}, extensionName=${extensionName}, isGeoArrow=${isGeoArrow}`); let type: string; let analyzerType: string; if (isGeoArrow) { type = ALL_FIELD_TYPES.geoarrow; analyzerType = 'GEOMETRY'; } else { type = arrowTypeToKeplerType(field.type); analyzerType = arrowTypeToAnalyzerType(field.type); } return { name: field.name, id: field.name, displayName: field.name, format: '', fieldIdx: fieldIndex, type, analyzerType }; }); // Convert Arrow table to row-based format // For geometry columns, convert to GeoJSON strings that kepler.gl can parse const rows: any[][] = []; for (let rowIdx = 0; rowIdx < table.numRows; rowIdx++) { const row: any[] = []; for (let colIdx = 0; colIdx < table.numCols; colIdx++) { const field = fields[colIdx]; const value = table.getChildAt(colIdx)?.get(rowIdx); if (field.type === ALL_FIELD_TYPES.geoarrow && value !== null) { // Convert geoarrow geometry to GeoJSON string row.push(arrowGeometryToGeoJSON(value)); } else { row.push(value); } } rows.push(row); } debug('processGeoArrowData: converted to', rows.length, 'rows'); debug('processGeoArrowData: first row sample:', rows[0]?.slice(0, 3)); // Update field types for geometry columns to geojson since we converted them const updatedFields = fields.map(f => { if (f.type === ALL_FIELD_TYPES.geoarrow) { return {...f, type: ALL_FIELD_TYPES.geojson, analyzerType: 'GEOMETRY'}; } return f; }); return { fields: updatedFields, rows }; } /** * Convert Arrow geometry value to GeoJSON string. * Handles various geoarrow geometry types (point, polygon, etc.) */ function arrowGeometryToGeoJSON(geom: any): string { try { // The geometry is stored as nested Arrow structures // We need to extract coordinates and build GeoJSON if (geom === null || geom === undefined) { return ''; } // For geoarrow polygon type, the structure is: // List>> for polygon rings // We need to recursively extract the coordinates const coords = extractCoordinates(geom); if (!coords || coords.length === 0) { return ''; } // Determine geometry type based on structure let geojson: any; if (typeof coords[0] === 'number') { // Point: [x, y] geojson = {type: 'Point', coordinates: coords}; } else if (typeof coords[0][0] === 'number') { // LineString or Polygon ring: [[x, y], ...] // Check if it's closed (polygon) or open (linestring) const first = coords[0]; const last = coords[coords.length - 1]; if (coords.length >= 4 && first[0] === last[0] && first[1] === last[1]) { geojson = {type: 'Polygon', coordinates: [coords]}; } else { geojson = {type: 'LineString', coordinates: coords}; } } else if (Array.isArray(coords[0][0])) { // Polygon with rings or MultiLineString if (typeof coords[0][0][0] === 'number') { geojson = {type: 'Polygon', coordinates: coords}; } else { geojson = {type: 'MultiPolygon', coordinates: coords}; } } else { // Fallback - try to make a polygon geojson = {type: 'Polygon', coordinates: coords}; } return JSON.stringify(geojson); } catch (e) { debug('arrowGeometryToGeoJSON error:', e); return ''; } } /** * Recursively extract coordinates from Arrow geometry structure */ function extractCoordinates(value: any): any { if (value === null || value === undefined) { return null; } // If it's a simple object with x, y properties (Point struct) if (typeof value === 'object' && 'x' in value && 'y' in value) { return [value.x, value.y]; } // If it's an array-like structure (Arrow Vector or Array) if (Array.isArray(value) || (typeof value === 'object' && typeof value.length === 'number')) { const result: any[] = []; const len = value.length; for (let i = 0; i < len; i++) { const item = Array.isArray(value) ? value[i] : value.get?.(i) ?? value[i]; const extracted = extractCoordinates(item); if (extracted !== null) { result.push(extracted); } } return result; } // If it has a toArray method (Arrow Vector) if (typeof value.toArray === 'function') { return extractCoordinates(value.toArray()); } // If it has a get method but no length (might be a struct) if (typeof value.get === 'function') { // Try to get x, y from struct const x = value.get('x') ?? value.get(0); const y = value.get('y') ?? value.get(1); if (x !== undefined && y !== undefined) { return [x, y]; } } return null; } /** * Map Arrow data type to Kepler field type */ function arrowTypeToKeplerType(arrowType: any): string { const typeStr = arrowType.toString(); if (typeStr.startsWith('Int') || typeStr.startsWith('Uint')) { return ALL_FIELD_TYPES.integer; } if (typeStr.startsWith('Float') || typeStr === 'Decimal') { return ALL_FIELD_TYPES.real; } if (typeStr === 'Bool') { return ALL_FIELD_TYPES.boolean; } if (typeStr.startsWith('Timestamp') || typeStr.startsWith('Date')) { return ALL_FIELD_TYPES.timestamp; } if (typeStr === 'Utf8' || typeStr === 'LargeUtf8') { return ALL_FIELD_TYPES.string; } return ALL_FIELD_TYPES.string; } /** * Map Arrow data type to type-analyzer type */ function arrowTypeToAnalyzerType(arrowType: any): string { const typeStr = arrowType.toString(); if (typeStr.startsWith('Int') || typeStr.startsWith('Uint')) { return 'INT'; } if (typeStr.startsWith('Float') || typeStr === 'Decimal') { return 'FLOAT'; } if (typeStr === 'Bool') { return 'BOOLEAN'; } if (typeStr.startsWith('Timestamp') || typeStr.startsWith('Date')) { return 'DATETIME'; } return 'STRING'; } function processJsonData(data: unknown): ProcessorResult | null { debug('processJsonData input:', data); if (typeof data === 'object' && data !== null && 'columns' in data) { const {columns, data: rows} = data as {columns: string[]; data: unknown[][]}; debug('processJsonData parsed:', {columns, rowCount: rows?.length, firstRow: rows?.[0]}); const result = { fields: columns.map(name => ({name})), rows: rows as any[][] }; debug('processJsonData result:', { fieldCount: result.fields.length, rowCount: result.rows.length }); return result; } debug('processJsonData: data does not have expected structure'); return null; } ================================================ FILE: bindings/python/src/utils/serialization.ts ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project export function decodeBase64ToBytes(base64: string): Uint8Array { const binaryString = atob(base64); const bytes = new Uint8Array(binaryString.length); for (let i = 0; i < binaryString.length; i++) { bytes[i] = binaryString.charCodeAt(i); } return bytes; } export function encodeToBase64(bytes: Uint8Array): string { let binary = ''; for (let i = 0; i < bytes.byteLength; i++) { binary += String.fromCharCode(bytes[i]); } return btoa(binary); } ================================================ FILE: bindings/python/src/widget.ts ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import {createRoot, Root} from 'react-dom/client'; import React from 'react'; import {Provider} from 'react-redux'; import {createStore, KEPLER_ID} from './store'; import {App} from './components/App'; import {processDataset} from './utils/data'; import type {WidgetModel, DatasetPayload} from './types'; import type {ParsedConfig} from '@kepler.gl/types'; import {addDataToMap, receiveMapConfig, wrapTo} from '@kepler.gl/actions'; const DEBUG = false; function debug(...args: unknown[]) { if (DEBUG) { console.log('[keplergl-widget]', ...args); } } export class KeplerGlWidget { private model: WidgetModel; private el: HTMLElement; private root: Root | null = null; private store: ReturnType; constructor(model: WidgetModel, el: HTMLElement) { debug('KeplerGlWidget constructor'); this.model = model; this.el = el; this.store = createStore(); } mount() { debug('mount() called'); this.el.style.height = `${this.model.get('height')}px`; this.root = createRoot(this.el); this.root.render( React.createElement(Provider, { store: this.store, children: React.createElement(App, {model: this.model}) }) ); this.loadData(); this.loadConfig(); this.store.subscribe(() => this.syncConfigToPython()); } unmount() { debug('unmount() called'); this.root?.unmount(); this.root = null; } onDataChange() { debug('onDataChange() called'); this.loadData(); } onConfigChange() { debug('onConfigChange() called'); this.loadConfig(); } onHeightChange() { this.el.style.height = `${this.model.get('height')}px`; } private async loadData() { const data = this.model.get('data'); debug('loadData() called, data keys:', Object.keys(data)); debug('loadData() raw data:', JSON.stringify(data, null, 2)); // Wait for the KeplerGl component to register itself await this.waitForInstance(); for (const [name, payload] of Object.entries(data)) { debug(`Processing dataset '${name}'...`); try { const processed = await processDataset(payload as DatasetPayload); debug( `Dataset '${name}' processed:`, processed ? {fields: processed.fields, rowCount: processed.rows?.length} : null ); if (!processed) { debug(`Dataset '${name}' returned null, skipping`); continue; } const action = addDataToMap({ datasets: { info: {id: name, label: name}, data: processed } }); // Wrap the action to target the specific kepler.gl instance const wrappedAction = wrapTo(KEPLER_ID, action); debug(`Dispatching addDataToMap for '${name}'`, wrappedAction); this.store.dispatch(wrappedAction); debug(`addDataToMap dispatched for '${name}'`); } catch (error) { console.error(`[keplergl-widget] Error processing dataset '${name}':`, error); } } debug('loadData() complete, store state:', this.store.getState()); } private waitForInstance(): Promise { return new Promise(resolve => { const checkInstance = () => { const state = this.store.getState() as {keplerGl?: Record}; if (state.keplerGl && state.keplerGl[KEPLER_ID]) { debug('Instance registered:', KEPLER_ID); resolve(); return true; } return false; }; // Check immediately if (checkInstance()) return; // Otherwise subscribe and wait const unsubscribe = this.store.subscribe(() => { if (checkInstance()) { unsubscribe(); } }); // Timeout after 5 seconds setTimeout(() => { unsubscribe(); console.warn('[keplergl-widget] Timeout waiting for instance registration'); resolve(); }, 5000); }); } private loadConfig() { const config = this.model.get('config'); debug('loadConfig() called, config:', config); if (config && Object.keys(config).length > 0) { this.store.dispatch(wrapTo(KEPLER_ID, receiveMapConfig(config as ParsedConfig, {}))); } } private syncConfigToPython() { // TODO: Extract config from store and sync back } } ================================================ FILE: bindings/python/tests/conftest.py ================================================ # SPDX-License-Identifier: MIT # Copyright contributors to the kepler.gl project """Pytest configuration.""" import pytest import pandas as pd import geopandas as gpd from shapely.geometry import Point @pytest.fixture def sample_df(): return pd.DataFrame({ "lat": [37.7749, 34.0522], "lng": [-122.4194, -118.2437], "value": [100, 200], }) @pytest.fixture def sample_gdf(): return gpd.GeoDataFrame( {"name": ["SF", "LA"]}, geometry=[Point(-122.4194, 37.7749), Point(-118.2437, 34.0522)], crs="EPSG:4326", ) ================================================ FILE: bindings/python/tests/test_serializers.py ================================================ # SPDX-License-Identifier: MIT # Copyright contributors to the kepler.gl project """Serializer tests.""" import json import pytest import pandas as pd import geopandas as gpd from shapely.geometry import Point, Polygon from keplergl.serializers import serialize_dataset class TestDataFrameSerialization: """Tests for DataFrame serialization (from DataFrame.ipynb).""" def test_serialize_dataframe(self, sample_df): result = serialize_dataset(sample_df, "test") assert result["id"] == "test" assert result["format"] == "df" assert "data" in result def test_serialize_dataframe_with_cities(self): """Test DataFrame with city data (from DataFrame.ipynb).""" df = pd.DataFrame({ 'City': ['Buenos Aires', 'Brasilia', 'Santiago', 'Bogota', 'Caracas'], 'Country': ['Argentina', 'Brazil', 'Chile', 'Colombia', 'Venezuela'], 'Latitude': [-34.58, -15.78, -33.45, 4.60, 10.48], 'Longitude': [-58.66, -47.91, -70.66, -74.08, -66.86], 'Time': ['2019-09-01 08:00', '2019-09-01 09:00', '2019-09-01 10:00', '2019-09-01 11:00', '2019-09-01 12:00'], }) result = serialize_dataset(df, "data_1") assert result["id"] == "data_1" assert result["format"] == "df" assert result["data"]["columns"] == ['City', 'Country', 'Latitude', 'Longitude', 'Time'] assert len(result["data"]["data"]) == 5 def test_serialize_dataframe_with_hex_data(self): """Test DataFrame with H3 hex IDs and mixed types (from Load kepler.gl.ipynb).""" df = pd.DataFrame({ 'hex_id': ['89283082c2fffff', '8928308288fffff', '89283082c07ffff'], 'value': [64, 73, 65], 'is_true': [True, True, True], 'float_value': [64.1, 73.1, 65.1], 'empty': ['', '', ''], 'time': ['11/1/17 11:00', '11/1/17 11:00', '11/1/17 11:00'], }) result = serialize_dataset(df, "data_1") assert result["id"] == "data_1" assert result["format"] == "df" assert 'hex_id' in result["data"]["columns"] assert 'value' in result["data"]["columns"] assert 'is_true' in result["data"]["columns"] def test_serialize_dataframe_with_nan_filled(self): """Test DataFrame with NaN values filled with empty string.""" df = pd.DataFrame({ 'col1': [1, 2, 3], 'col2': ['a', None, 'c'], }) df = df.fillna('') result = serialize_dataset(df, "test") assert result["format"] == "df" assert result["data"]["data"][1][1] == '' class TestGeoDataFrameSerialization: """Tests for GeoDataFrame serialization (from GeoDataFrame.ipynb).""" def test_serialize_geodataframe(self, sample_gdf): result = serialize_dataset(sample_gdf, "test") assert result["id"] == "test" assert result["format"] == "geoarrow" assert "data" in result def test_serialize_geodataframe_with_timestamp(self): """Test GeoDataFrame with pd.Timestamp column. Regression test for issue where GeoDataFrame containing Timestamp columns would fail during Arrow serialization. """ df = pd.DataFrame({ 'City': ['Buenos Aires'], 'Country': ['Argentina'], 'Latitude': [-34.58], 'Longitude': [-58.66], 'Timestamp': pd.Timestamp(2002, 3, 3), }) gdf = gpd.GeoDataFrame( df, geometry=gpd.points_from_xy(df.Longitude, df.Latitude), ) result = serialize_dataset(gdf, "cities") assert result["id"] == "cities" assert result["format"] == "geoarrow" assert "data" in result def test_serialize_geodataframe_points_from_xy(self): """Test GeoDataFrame created with points_from_xy (from GeoDataFrame.ipynb).""" df = pd.DataFrame({ 'City': ['Buenos Aires', 'Brasilia', 'Santiago', 'Bogota', 'Caracas'], 'Country': ['Argentina', 'Brazil', 'Chile', 'Colombia', 'Venezuela'], 'Latitude': [-34.58, -15.78, -33.45, 4.60, 10.48], 'Longitude': [-58.66, -47.91, -70.66, -74.08, -66.86], }) gdf = gpd.GeoDataFrame( df, geometry=gpd.points_from_xy(df.Longitude, df.Latitude), ) result = serialize_dataset(gdf, "cities") assert result["id"] == "cities" assert result["format"] == "geoarrow" assert "data" in result def test_serialize_geodataframe_with_polygons(self): """Test GeoDataFrame with Polygon geometries (like zipcode boundaries).""" gdf = gpd.GeoDataFrame({ 'ZIP_CODE': ['94107', '94105'], 'geometry': [ Polygon([(-122.40, 37.78), (-122.39, 37.78), (-122.39, 37.77), (-122.40, 37.77)]), Polygon([(-122.39, 37.79), (-122.38, 37.79), (-122.38, 37.78), (-122.39, 37.78)]), ], }) result = serialize_dataset(gdf, "zipcode") assert result["id"] == "zipcode" assert result["format"] == "geoarrow" assert "data" in result def test_serialize_geodataframe_with_crs(self): """Test GeoDataFrame with explicit CRS.""" gdf = gpd.GeoDataFrame( {"name": ["SF", "LA"]}, geometry=[Point(-122.4194, 37.7749), Point(-118.2437, 34.0522)], crs="EPSG:4326", ) result = serialize_dataset(gdf, "test") assert result["format"] == "geoarrow" assert "data" in result class TestGeoJSONSerialization: """Tests for GeoJSON serialization (from GeoJSON.ipynb).""" def test_serialize_geojson_dict(self): """Test GeoJSON as dict.""" geojson = {"type": "FeatureCollection", "features": []} result = serialize_dataset(geojson, "test") assert result["format"] == "geojson" assert result["data"] == geojson def test_serialize_geojson_feature_collection(self): """Test GeoJSON FeatureCollection with features.""" geojson = { "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": {"type": "Point", "coordinates": [-122.4, 37.8]}, "properties": {"name": "San Francisco"}, }, { "type": "Feature", "geometry": {"type": "Point", "coordinates": [-118.2, 34.0]}, "properties": {"name": "Los Angeles"}, }, ], } result = serialize_dataset(geojson, "geojson") assert result["id"] == "geojson" assert result["format"] == "geojson" assert result["data"]["type"] == "FeatureCollection" assert len(result["data"]["features"]) == 2 def test_serialize_geojson_string(self): """Test GeoJSON as string (from GeoJSON.ipynb - reading from file).""" geojson_str = json.dumps({ "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": {"type": "Point", "coordinates": [-122.4, 37.8]}, "properties": {"name": "Test"}, }, ], }) result = serialize_dataset(geojson_str, "geojson") assert result["id"] == "geojson" assert result["format"] == "geojson" assert result["data"]["type"] == "FeatureCollection" def test_serialize_geojson_polygon(self): """Test GeoJSON with Polygon geometry.""" geojson = { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [[ [-122.4, 37.8], [-122.3, 37.8], [-122.3, 37.7], [-122.4, 37.7], [-122.4, 37.8], ]], }, "properties": {"name": "Test Area"}, } result = serialize_dataset(geojson, "polygon") assert result["format"] == "geojson" class TestCSVSerialization: """Tests for CSV string serialization.""" def test_serialize_csv(self): csv_data = "lat,lng\n37.7749,-122.4194" result = serialize_dataset(csv_data, "test") assert result["format"] == "csv" assert result["data"] == csv_data def test_serialize_csv_multirow(self): """Test CSV with multiple rows.""" csv_data = "City,Latitude,Longitude\nSF,37.77,-122.42\nLA,34.05,-118.24" result = serialize_dataset(csv_data, "cities") assert result["id"] == "cities" assert result["format"] == "csv" assert result["data"] == csv_data class TestEdgeCases: """Tests for edge cases and error handling.""" def test_serialize_unsupported_type(self): """Test that unsupported types raise ValueError.""" with pytest.raises(ValueError, match="Unsupported data type"): serialize_dataset([1, 2, 3], "test") def test_serialize_empty_dataframe(self): """Test serializing empty DataFrame.""" df = pd.DataFrame({'col1': [], 'col2': []}) result = serialize_dataset(df, "empty") assert result["format"] == "df" assert result["data"]["columns"] == ['col1', 'col2'] assert result["data"]["data"] == [] def test_serialize_single_row_dataframe(self): """Test serializing single-row DataFrame.""" df = pd.DataFrame({'lat': [37.77], 'lng': [-122.42]}) result = serialize_dataset(df, "single") assert result["format"] == "df" assert len(result["data"]["data"]) == 1 def test_serialize_dataframe_with_various_dtypes(self): """Test DataFrame with various data types.""" df = pd.DataFrame({ 'int_col': [1, 2, 3], 'float_col': [1.1, 2.2, 3.3], 'str_col': ['a', 'b', 'c'], 'bool_col': [True, False, True], }) result = serialize_dataset(df, "mixed") assert result["format"] == "df" assert len(result["data"]["columns"]) == 4 ================================================ FILE: bindings/python/tests/test_widget.py ================================================ # SPDX-License-Identifier: MIT # Copyright contributors to the kepler.gl project """Widget tests.""" import pytest from keplergl import KeplerGl def test_widget_creation(): widget = KeplerGl() assert widget.height == 400 assert widget.data == {} assert widget.config == {} def test_widget_with_height(): widget = KeplerGl(height=600) assert widget.height == 600 def test_widget_with_dataframe(sample_df): widget = KeplerGl(data={"cities": sample_df}) assert "cities" in widget.data def test_widget_with_geodataframe(sample_gdf): widget = KeplerGl(data={"points": sample_gdf}) assert "points" in widget.data def test_add_data(sample_df): widget = KeplerGl() widget.add_data(sample_df, name="test") assert "test" in widget.data def test_widget_with_config(): config = {"version": "v1", "config": {"mapState": {"zoom": 10}}} widget = KeplerGl(config=config) assert widget.config == config ================================================ FILE: bindings/python/tsconfig.json ================================================ { "compilerOptions": { "target": "ES2020", "module": "ESNext", "moduleResolution": "bundler", "jsx": "react-jsx", "strict": true, "esModuleInterop": true, "skipLibCheck": true, "declaration": true, "outDir": "./dist", "rootDir": "./src", "resolveJsonModule": true, "isolatedModules": true }, "include": ["src/**/*"], "exclude": ["node_modules", "keplergl/static"] } ================================================ FILE: contributing/CODE_OF_CONDUCT.md ================================================ # Code of Conduct kepler.gl is an [OpenJS Foundation](https://openjsf.org/) project. Please be mindful of and adhere to the OpenJS Foundation's [Code of Conduct](https://github.com/openjs-foundation/cross-project-council/blob/main/CODE_OF_CONDUCT.md) when contributing to kepler.gl. ================================================ FILE: contributing/DEVELOPERS.md ================================================ # Developing Kepler.gl ## Table of contents - [Development Setup](./#development-setup) - [Running Tests](./#running-tests) - [Coding Rules](./#coding-rules) - [Commit Message Guidelines](./#git-commit-guidelines) - [Writing Documentation](./#writing-documentation-this-part-is-not-available-yet) - [Developing kepler.gl Website](./#develop-the-kepler-gl-website) - [Publish the website](./#publish-the-website) - [Publish a new version](./#publish-kepler-gl-package-to-npm) ## Development Setup This document describes how to set up your development environment to build and test Kepler.gl, and explains the basic mechanics of using `git`, `node`, `yarn`. ### Installing Dependencies Before you can build Kepler.gl, you must install and configure the following dependencies on your machine: - [Git](http://git-scm.com/): The [Github Guide to Installing Git][git-setup] is a good source of information. - [Node.js ^18.x](http://nodejs.org): We use Node to generate the documentation, run a development web server, run tests, and generate distributable files. Depending on your system, you can install Node either from source or as a pre-packaged bundle. We recommend using [nvm](https://github.com/creationix/nvm) (or [nvm-windows](https://github.com/coreybutler/nvm-windows)) to manage and install Node.js, which makes it easy to change the version of Node.js per project. - [Yarn 4.4.0](https://yarnpkg.com): We use Yarn to install our Node.js module dependencies (rather than using npm). See the detailed [installation instructions][yarn-install]. - [Volta](https://volta.sh/): We use Volta to manage Node and Yarn versions without you manually switching them #### Fork Kepler.gl Repo If you plan to contribute code to kepler.gl, you must have a [GitHub account](https://github.com/signup/free) so you can push code and open Pull Requests in the [GitHub Repository][github]. You must [fork](http://help.github.com/forking) the [main kepler.gl repository][github] to [create a Pull Request][github-pr]. #### Developing kepler.gl If you are using Windows then using `WSL (Windows Subsystem for Linux)` is recommended. You can download a Linux Distribution like e.g. `Ubuntu` and inside of that distribution you can follow along with the next steps. You can find the detailed instructions about `WSL` [here](https://learn.microsoft.com/en-us/windows/wsl/). If you are using MacOS or Linux then you can follow along. Also please make sure the code editor you are using it has proper support for [EditorConfig](https://editorconfig.org/).VSCode has the [EditorConfig for VS Code](https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig) Plugin. Please install necessary support for EditorConfig for your editor so that other code formatters do not have an effect on the Kepler.GL code. To develop features, debug code, run tests, we use webpack to start a local web server and serve the kepler.gl demo app from the src directory. ```bash # Clone your kepler.gl fork repository: git clone git@github.com:/kepler.gl.git # Go to the kepler.gl directory: cd kepler.gl # Add the main kepler.gl repository as an upstream remote to your repository: git remote add upstream "git@github.com:keplergl/kepler.gl.git" ``` Install [volta](https://docs.volta.sh/guide/getting-started) On Unix, MacOS ```bash # install Volta on Unix curl https://get.volta.sh | bash ``` On Windows ```bash winget install Volta.Volta ``` Install `nvm` to set the proper Node.js version for the project. Follow instructions to install nvm [here](https://github.com/nvm-sh/nvm). ```bash # Install the proper Node.js version for the Kepler.gl project nvm install # Use the downloaded Node.js version for the Kepler.gl project nvm use # Enable Yarn corepack enable ``` Install dependencies with Yarn ```bash # Install Puppeteer yarn dlx puppeteer # Install JavaScript dependencies: yarn install yarn bootstrap # Setup Mapbox access token locally export MapboxAccessToken= # Set up other environment variables export DropboxClientId= export MapboxExportToken= export CartoClientId= export FoursquareClientId= export FoursquareDomain= export FoursquareAPIURL= export FoursquareUserMapsURL= # Start the kepler.gl demo app yarn start ``` An demo app will be served at `http://localhost:8080/` This is the demo app we hosted on [http://kepler.gl/#/demo][demo-app]. By default, it serves non-minified source code inside the src directory. #### Develop with deck.gl When develop, upgrade, debug deck.gl, Demo app can load deck.gl directly from src ``` // load deck.gl from node_modules/deck.gl/src, sub-modules from node_modules/@deck.gl//src npm run start:deck // load deck.gl src from the deck.gl folder parallel to kepler.gl npm run start:deck-src ``` ## Running Tests - We write node and browser tests with [Tape][tape], [Enzyme][enzyme], [jsDom](https://www.npmjs.com/package/jsdom) and [@probe.gl/test-util](https://uber-web.github.io/probe.gl/docs/modules/test-utils/browser-driver), and lint with [ESLint][eslint]. Make sure to run test before submitting your PR. To run all of the tests once ```bash yarn test ``` - Yarn test runs lint and 3 tests in different env. To run them separately ```bash # lint yarn lint # node tests yarn test-node # jsdom tests yarn test-browser # headless browser tests, uses probe.gl to run browser tests with puppeteer yarn test-headless ``` - Here are some handy scripts / tricks for debugging tests 1. add `.only` to errored tests to only run 1 test at a time ```js test.only('MapContainerFactory', t => { // tests } ``` 2. run all tests in chromium browser. This runs node, browser and headless browser tests in chromium browser and logs the output, you can step through the code with chrome developer tools ```bash yarn test-browser-drive ``` 3. Fast tests, runs node and browser tests without tap-spec output ```bash yarn test-fast ``` To generate a coverage report ```bash yarn cover ``` ## Test React components Enzyme is no longer supported therefore we are now transitioning to [testing library](https://testing-library.com/). We have introduced an eslint rule to deprecate the usage of enzyme so if you attempt to create new tests using enzyme it will throw an error when running lint. In order to create new tests cases please take advantage of [Testing Library](https://testing-library.com/). All necessary dependencies are already installed, you can start testing your React components by following this [doc](https://testing-library.com/docs/react-testing-library/intro); ### Migrating enzyme to React testing library If you are interested in migrating enzyme tests to RTL (react testing library) feel free to check the [official migration guidelines](https://testing-library.com/docs/react-testing-library/migrate-from-enzyme/) ## Coding Rules To ensure consistency throughout the source code, keep these rules in mind as you are working: - All features or bug fixes **must be tested** by one or more [specs][unit-testing]. - All public API methods **must be documented** with using jsdoc. To see how we document our APIs, please check out the existing source code and see the section about [writing documentation](#documentation) This project use Eslint together Prettier. The linter should automatically inform you if you break any rules (like incorrect indenting, line breaking or if you forget a semicolon). Before doing a pull request, make sure to run the linter. ```bash # To run the linter yarn lint ``` ## Git Commit Guidelines To commit your changes, please follow our rules over how our git commit messages can be formatted. This leads to **more readable and unified messages** that are easy to follow. But also, we use the git commit messages to **generate the kepler.gl change log**. ### Commit Message Format Each commit message consists of a **header** and a **body**. The header has a special format that includes a **type** and a **subject**. The **PR** # will be auto-generated once the PR is merged. ``` []() #e.g. [Enhancement] Upgrade type-analyzer to pass 0/1 as integer (#317) * Upgrade to type-analyzer@0.2.1 * Add test ``` The **header** is mandatory and the **scope** of the header is optional. Any line of the commit message cannot be longer 100 characters! This allows the message to be easier to read on GitHub as well as in various git tools. ### Revert If the commit reverts a previous commit, it should begin with `revert: `, followed by the header of the reverted commit. In the body it should say: `This reverts commit .`, where the hash is the SHA of the commit being reverted. A commit with this format is automatically created by the [`git revert`][git-revert] command. ### Type Must be one of the following, capitalized. - **[Feat]**: A new feature - **[Enhancement]**: An update of a existing feature - **[Bug]**: A bug fix - **[Docs]**: Documentation only changes - **[Style]**: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, typos, etc) - **[Refactor]**: A code change that neither fixes a bug nor adds a feature - **[Perf]**: A code change that improves performance - **[Test]**: Adding missing or correcting existing tests - **[Chore]**: Changes to the build process or auxiliary tools and libraries such as documentation generation ### Subject The subject contains succinct description of the change: - use the imperative, present tense: "change" not "changed" nor "changes" - don't capitalize first letter - no dot (.) at the end ### Body Just as in the **subject**, use the imperative, present tense: "change" not "changed" nor "changes". The body should include the motivation for the change and contrast this with previous behavior. **Breaking Changes** should start with the word `BREAKING CHANGE:` with a space or two newlines. The rest of the commit message is then used for this. ## Writing Documentation (THIS PART IS NOT AVAILABLE YET) The Kepler.gl project uses [jsdoc](http://usejsdoc.org/) This means that all the docs are stored inline in the source code and so are kept in sync as it changes. There is also extra content (the developer guide, error pages, the tutorial, and misceallenous pages) that live inside the Kepler.gl repository as markdown files. This means that since we generate the documentation from the source code, we can easily provide version-specific documentation by simply checking out a version of Kepler.gl and running the build. ### Building and viewing the docs locally We build Api docs from scratch using [documentation.js][documentationjs]. It generates docs from jsdoc: ```bash yarn docs ``` ### Writing jsdoc You can find JSDoc instructions [here][jsDoc]. Documentation.js is interested in the following block tags: - `@param {type} name description` - describes a parameter of a function - `@returns {type} description` - describes what a function returns - `@property` - describes a property of an object - `@description` - used to provide a description of a component in markdown - `@example` - specifies an example. - `@public` - Only methods with @public tag will be included in the docs The `type` in `@param` and `@returns` must be wrapped in `{}` curly braces, e.g. `{Object|Array}`. Parameters can be made optional by _either_ appending a `=` to the type, e.g. `{Object=}`, _or_ by putting the `[name]` in square brackets. Default values are only possible with the second syntax by appending `=` to the parameter name, e.g. `@param {boolean} [ownPropsOnly=false]`. ## Develop The kepler.gl Website Make sure to export mapbox token in the same terminal before start the server. ```bash $ export MapboxAccessToken= ``` In order to start ```bash $ yarn web ``` To checkout the build ```bash $ cd website && yarn build ``` ## Publish the website [Netlify](https://www.netlify.com/) is used to support kepler.gl demo website. Netlify is connected to the following github triggers: - Create a new PR - Updated an existing PR - Merge PR onto master A new production version of kepler.gl website is automatically created and deployed every time a PR is merged onto master. In order to support testing environment, Netlify is setup to generate build every time a PR is created or updated. By generating builds for new and updated PRs we support CI/CD so developers can test their own build in a production like environment ### Publish kepler.gl package to NPM #### Requirements To prepare a new release you need the following tool: - [gh-release](https://www.npmjs.com/package/gh-release): this tool facilitates the creation of a new git tag (using package.json version number) and a github release (different from npm release) Setup `gh-release` with your github api token ([instructions](https://www.npmjs.com/package/gh-release#command-line-interface)) ### Push a new release In order to publish a new version of kepler.gl a developer must perform the following steps: 1. Update **package.json** file with the new version value. Run `npm version major | minor | patch` to update version accordingly. 2. Update **CHANGELOG.md** with the latest commit changes. Print commits with `git log --pretty=oneline --abbrev-commit` 3. Create a new PR for review. 4. Once the PR is reviewed and merged, pull the latest changes locally. 5. Run `gh-release`: this command will create a new Github Release with the new updated CHANGELOG.md section. 6. Once the new Github Release is created, Github will automatically trigger a new Github Action flow that will automatically build and publish the new package version to NPM registry. **After Release is completed and pushed** - Update each of the example folder package.json kepler.gl dependency with the newer. To update all examples, run ```bash npm run example-version ``` This step is required after the new version is published otherwise it would fail. ## Gitbook documentation Kepler.gl documentation is hosted on [gitbook](https://kepler-gl.gitbook.io/kepler-gl/). For more information [read here](https://docs.gitbook.com/) ### Documentation structure The documentation layout is defined by **SUMMARY.md** file where the table of contents define each entry has the following structure ```markdown - [ENTRY_LABEL](FILE_PATH) e.g. - [Welcome](README.md) ``` The above file is used by Gitbook to generate the doc navigation visible on the left-hand side of Kepler.gl doc website. Gitbook also has the ability to show description for each folder/section of the documentation by creating an entry in **SUMMARY.md** and create a new **README.md** file within said folder. The README.md file is a Gitbook convention that treats README files as if they were the main entry file for each folder. The following is an example of doc section in SUMMARY.md file: ```markdown - [User guides](docs/user-guides/README.md) ``` ### Update Documentation The integration with Gitbook allows to update the documentation in two different ways: - Update doc files in the Kepler.gl repo. Follow the PR flow like any other changes - Update documentation directly on Gitbook. For both scenarios, changes will be propagated from one system to the other and vice versa. When updating Gitbook, a new git commit will be push to the Kepler.gl master branch. [demo-app]: http://kepler.gl/#/demo [documentationjs]: https://documentation.js.org/ [eslint]: https://eslint.org/ [enzyme]: https://airbnb.io/enzyme/ [git-revert]: https://git-scm.com/docs/git-revert [git-setup]: https://help.github.com/articles/set-up-git [github]: https://github.com/keplergl/kepler.gl [github-pr]: https://help.github.com/articles/creating-a-pull-request/ [jsDoc]: http://usejsdoc.org/ [tape]: https://github.com/substack/tape [yarn-install]: https://yarnpkg.com/getting-started/install ================================================ FILE: contributing/README.md ================================================ # CONTRIBUTING Great to have you here. Here are a few ways you can help make kepler.gl even better! * [Developer Certification of Origin \(DCO\)](./#developer-certification-of-origin-dco) * [Code of Conduct](./#code-of-conduct) * [Questions and Problems](./#questions-and-problems) * [Issues and Bugs](./#issues-and-bugs) * [Feature Requests](./#feature-requests) * [Improving Documentation](./#improving-documentation) * [Submitting Pull Request](./#submit-pr) ## Developer Certification of Origin (DCO) When committing code, kepler.gl requires [Developer Certificate of Origin (DCO)][dco] process to be followed. The DCO is a lightweight way for contributors to certify that they wrote or otherwise have the right to submit the code they are contributing to the project. Here is the full text of the DCO, reformatted for readability: ``` By making a contribution to this project, I certify that: (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or (b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. (d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. ``` ### DCO Sign-Off Methods Contributors sign-off that they adhere to these requirements by adding a Signed-off-by line to commit messages. ``` Signed-off-by: Shan He ``` Use the `-s` or `--signoff` command line to append this automatically to your commit message: ``` $ git commit -s -m 'This is my commit message' ``` ## Code of Conduct Help us keep kepler.gl open and inclusive. Please read and follow our [Code of Conduct](./CODE_OF_CONDUCT.md). ## Questions and Problems We are trying to keep our Github page for issues, bugs and feature requests only. You've got much better chances of getting supports on [Stack Overflow][stack]. Many people including our engineers are ready to answer questions on Stack Overflow. Your question might already been answered there. ## Issues and Bugs If you find a bug, you can help us by submitting an [Issue][git-iss] to our GitHub Repository. Please use the github [Bug Report Template][git-bug] and fill in as much as information as possible. Even better, you can submit a [Pull Request][git-pr] with a fix. # Feature Requests If you want to contribute or add new features, please use [Issue][git-iss] on github projects to start a new discussion using the [Feature Request Template][git-feature]. If this receive a Go ahead, you can submit your patch as PR to the repository. If you would like to implement a new feature then consider what kind of change it is: * **Take a look at our [roadmap][roadmap]** It lists out the items we are planning to work on * **Pick your item** Pick an item to execute * **Claim the item** Reply in the ticket linked in the roadmap to claim the item, one of the member of the technical team will respond * **Major Changes** that you wish to contribute to the project should be discussed first in an [GitHub issue][github-issues] that clearly outlines the changes and benefits of the feature. * **Small Changes** can directly be crafted and submitted to the [GitHub Repository][github] as a Pull Request. See the section about [Pull Request Submission Guidelines](#submit-pr), and for detailed information the [core development documentation][developers]. * **Let's review your code** Create a pull request ## Improving Documentation Questions about kepler.gl? you can checkout the examples and medium articles on [kepler.gl][website]. [User Guides][user-guide] and API Docs are saved in the [docs][api-docs] folder on Github. Help us improve documentation here by submitting a Pull Request. ## Submitting Pull Request First, follow the [development documentation][developers] for detailed guidance on environment setup, code style, testing and commit message conventions. * Search [GitHub][git-pr] for an open or closed Pull Request that relates to your submission. You don't want to duplicate effort. * Create the [development environment][developers.setup] * Make your changes in a new git branch: ```bash $ git checkout -b my-fix-branch master ``` * Create your patch commit, **including appropriate test cases**. * If the changes affect public APIs, change or add relevant [documentation][developers.documentation]. * Run [tests][developers.tests], and ensure that all tests pass. * Commit your changes using a descriptive commit message that follows our [commit message conventions][developers.commits]. Adherence to the conventions is required, because release notes are automatically generated from these messages. [cla]: https://cla-assistant.io/keplergl/kepler.gl [github]: https://github.com/keplergl/kepler.gl [git-iss]: https://github.com/keplergl/kepler.gl/issues [git-pr]: https://github.com/keplergl/kepler.gl/pulls [git-feature]: https://github.com/keplergl/kepler.gl/issues/new?template=feature_request.md [git-bug]: https://github.com/keplergl/kepler.gl/issues/new?template=bug_report.md [stack]: https://stackoverflow.com/questions/tagged/kepler.gl [api-docs]: https://github.com/keplergl/kepler.gl/tree/master/docs [website]: https://keplergl.github.io/kepler.gl [user-guide]: https://github.com/keplergl/kepler.gl/blob/master/docs/a-introduction.md [roadmap]: https://github.com/keplergl/kepler.gl/wiki/Roadmap [developers]: DEVELOPERS.md [developers.commits]: ./#commits [developers.documentation]: ./#documentation [developers.rules]: ./#rules [developers.setup]: ./#setup [developers.tests]: ./#tests [dco]: https://probot.github.io/apps/dco/ ================================================ FILE: docs/README.md ================================================ # Docs ## Table of contents - [What's new?](./release-notes.md) - [API References](./api-reference/README.md) - [User Guides](./user-guides/README.md) - [Jupyter Notebook](./keplergl-jupyter/README.md) ================================================ FILE: docs/RFC/table-class.md ================================================ Replace kepler.gl dataset with table class ## Current Dataset structure ```js export type KeplerDataset = { id: string; label?: string; color: RGBColor; // fields and data fields: KeplerField[]; dataContainer: DataContainer; allIndexes: number[]; filteredIndex: number[]; filteredIdxCPU: number[]; filteredIndexForDomain: number[]; fieldPairs: { defaultName: string; pair: any; suffix: string[]; }[]; gpuFilter: { filterRange: number[][]; filterValueUpdateTriggers: any; filterValueAccessor: any; }; filterRecord: FilterRecord; filterRecordCPU: FilterRecord; changedFilters: any; // table-injected metadata sortColumn?: { // column name: sorted idx [key: string]: number[]; }; sortOrder?: string; // ASCENDING | DESCENDING | UNSORT pinnedColumns?: string[]; // table-injected metadata metadata?: object; }; export type KeplerField = { analyzerType: string; id: string; name: string; format: string; fieldIdx: number; type: string; // meta data, storing domain and mappedValues filterProps?: any; }; ``` ### Table class should handle: #### Add and remove columns (partially supported) Missing features - Copy over column meta, if replacing an existing column - Recompute fieldPairs #### Current kepler.gl methods: 1. `initalize` to replace utils/dataset-utils `createNewDataEntry` This table method takes a `ProtoTable` and returns a `Table` to be saved in kepler state. ```js table.initalize(protoTable); // following meta data should be initialized table.allIndexes, table.filteredIndex, table.filteredIndexForDomain, table.fieldPairs, table.gpuFilter; ``` 2. `getValue(columnName, rowIdx)` Get the value of a cell Should be a curried function getValue(columName) = idx => value 3. `getColumnDomain(columnName)` to replace `filter-utils.js` `getFieldDomain` Get the value domain of a specific column used in filter 4. `getColumnScaleDomain(columnName, scaleType)` to replace `base-layer.js` `layer.calculateLayerDomain` Get the domain of this column based on scale type 5. `getSampleData(rows)` Get a sample of rows to calculate layer boundaries 6. `parseFieldValue(value, type) => string` Parse cell value based on column type and return a string representation Value the field value, type the field type 7. `sortDatasetByColumn` Sort a column, return an sorted index, assign to `sortColumn`, `sortOrder` 8. `filterDataset(filters, layers, opt)` to replace `filter-utils.js` `filterDataset` Apply filters to dataset, return the filtered dataset with updated `gpuFilter`, `filterRecord`, `filteredIndex`, `filteredIndexForDomain` 9. `filterDatasetCPU(filters)` to replace `filter-utils.js` `filterDatasetCPU` Apply filters to a dataset all on CPU, assign to `filteredIdxCPU`, `filterRecordCPU` ================================================ FILE: docs/api-reference/README.md ================================================ # API Reference ## Table of Contents - [Overview](./#overview) - [Ecosystem](./ecosystem.md) - [Component](./ecosystem.md#component) - [Reducer and Forward Dispatcher](./ecosystem.md#reducer-and-forward-dispatcher) - [Actions and Updaters](./ecosystem.md#actions-and-updaters) - [Processors and Schema Manager](./ecosystem.md#processors-and-schema-manager) - [Get Started](./get-started.md) - Advanced Usage - [Using reducer plugin](./advanced-usages/reducer-plugin.md) - [Custom reducer initial state](./advanced-usages/custom-initial-state.md) - [Using updaters to modify kepler.gl state](./advanced-usages/using-updaters.md) - [Forward actions](./advanced-usages/forward-actions.md) - [Saving and loading maps with schema manager](./advanced-usages/saving-loading-w-schema.md) - [Replace UI component](./advanced-usages/replace-ui-component.md) - [Custom Mapbox Host](./advanced-usages/custom-mapbox-host.md) - [Custom Map Styles](./advanced-usages/custom-map-styles.md) - [Localization](./localization/README.md) - API - [Components](./components/README.md) - [Reducers](./reducers/README.md) - [Actions and Updaters](./actions/actions.md) - [Data Processor](./processors/processors.md) - [Schemas](./schemas/README.md) ## Overview Kepler.gl is a __Redux-connected__ component. You can embed kepler.gl in your App, which uses redux to manage its state. The basic implementation of kepler.gl reducer is simple. However, to make the most of it, it's recommended to have basic knowledge on: - [React](https://reactjs.org/) - [Redux](https://redux.js.org/) state container - [React Redux connect](https://react-redux.js.org/) To start out with kepler.gl, you simply need to add the Kepler.gl UI component and mount the Kepler.gl reducer. To give the user full access of all the functionalities of kepler.gl, this package also includes actions, schema managers and a set of utilities to load and save map data. ================================================ FILE: docs/api-reference/actions/README.md ================================================ # Actions ...Coming soon ================================================ FILE: docs/api-reference/actions/actions.md ================================================ ### Table of Contents - [forwardActions][1] - [forwardTo][2] - [isForwardAction][5] - [unwrap][7] - [wrapTo][9] - [ActionTypes][12] - [mapStyleActions][14] - [addCustomMapStyle][15] - [inputMapStyle][16] - [loadCustomMapStyle][18] - [loadMapStyleErr][20] - [loadMapStyles][22] - [mapConfigChange][24] - [mapStyleChange][26] - [requestMapStyles][28] - [set3dBuildingColor][30] - [main][32] - [addDataToMap][33] - [keplerGlInit][36] - [receiveMapConfig][38] - [resetMapConfig][41] - [visStateActions][42] - [addFilter][43] - [addLayer][45] - [applyCPUFilter][47] - [enlargeFilter][49] - [interactionConfigChange][51] - [layerConfigChange][53] - [layerTextLabelChange][55] - [layerTypeChange][57] - [layerVisConfigChange][59] - [layerVisualChannelConfigChange][61] - [loadFiles][63] - [loadFilesErr][65] - [onLayerClick][67] - [onLayerHover][69] - [onMapClick][71] - [onMouseMove][72] - [removeDataset][74] - [removeFilter][76] - [removeLayer][78] - [reorderLayer][80] - [setEditorMode][83] - [setFilter][86] - [setFilterPlot][88] - [setMapInfo][90] - [showDatasetTable][92] - [toggleFilterAnimation][94] - [toggleLayerForMap][96] - [updateAnimationTime][98] - [updateFilterAnimationSpeed][100] - [updateLayerAnimationSpeed][102] - [updateLayerBlending][104] - [updateVisData][106] - [uiStateActions][108] - [addNotification][109] - [cleanupExportImage][111] - [hideExportDropdown][112] - [openDeleteModal][113] - [removeNotification][115] - [setExportData][117] - [setExportDataType][118] - [setExportFiltered][120] - [setExportImageDataUri][122] - [setExportImageSetting][124] - [setExportSelectedDataset][126] - [setUserMapboxAccessToken][128] - [showExportDropdown][130] - [startExportingImage][132] - [toggleMapControl][133] - [toggleModal][135] - [toggleSidePanel][137] - [rootActions][139] - [deleteEntry][140] - [registerEntry][142] - [renameEntry][144] - [mapStateActions][146] - [fitBounds][147] - [togglePerspective][150] - [toggleSplitMap][152] - [updateMap][155] - [layerColorUIChange][158] - [setExportMapFormat][160] ## forwardActions A set of helpers to forward dispatch actions to a specific instance reducer ### forwardTo Returns an action dispatcher that wraps and forwards the actions to a specific instance **Parameters** - `id` **[string][162]** instance id - `dispatch` **[Function][163]** action dispatcher **Examples** ```javascript // action and forward dispatcher import {toggleSplitMap, forwardTo} from '@kepler.gl/actions'; import {connect} from 'react-redux'; const MapContainer = props => (
) const mapDispatchToProps = (dispatch, props) => ({ dispatch, keplerGlDispatch: forwardTo(‘foo’, dispatch) }); export default connect( state => state, mapDispatchToProps )(MapContainer); ``` ### isForwardAction Whether an action is a forward action **Parameters** - `action` **[Object][164]** the action object Returns **[boolean][165]** boolean - whether the action is a forward action ### unwrap Unwrap an action **Parameters** - `action` **[Object][164]** the action object Returns **[Object][164]** unwrapped action ### wrapTo Wrap an action into a forward action that only modify the state of a specific kepler.gl instance. kepler.gl reducer will look for signatures in the action to determine whether it needs to be forwarded to a specific instance reducer. wrapTo can be curried. You can create a curried action wrapper by only supply the `id` argument A forward action looks like this ```js { type: "@@kepler.gl/LAYER_CONFIG_CHANGE", payload: { type: '@@kepler.gl/LAYER_CONFIG_CHANGE', payload: {}, meta: { // id of instance _id_: id // other meta } }, meta: { _forward_: '@redux-forward/FORWARD', _addr_: '@@KG_id' } }; ``` **Parameters** - `id` **[string][162]** The id to forward to - `action` **[Object][164]** the action object {type: string, payload: \*} **Examples** ```javascript import {wrapTo, togglePerspective} from '@kepler.gl/actions'; // This action will only dispatch to the KeplerGl instance with `id: map_1` this.props.dispatch(wrapTo('map_1', togglePerspective())); // You can also create a curried action for each instance const wrapToMap1 = wrapTo('map_1'); this.props.dispatch(wrapToMap1(togglePerspective())); ``` ## ActionTypes Kepler.gl action types, can be listened by reducers to perform additional tasks whenever an action is called in kepler.gl Type: [Object][164] **Examples** ```javascript // store.js import {handleActions} from 'redux-actions'; import {createStore, combineReducers, applyMiddleware} from 'redux'; import {taskMiddleware} from 'react-palm/tasks'; import keplerGlReducer from '@kepler.gl/reducers'; import {ActionTypes} from '@kepler.gl/actions'; const appReducer = handleActions( { // listen on kepler.gl map update action to store a copy of viewport in app state [ActionTypes.UPDATE_MAP]: (state, action) => ({ ...state, viewport: action.payload }) }, {} ); const reducers = combineReducers({ app: appReducer, keplerGl: keplerGlReducer }); export default createStore(reducers, {}, applyMiddleware(taskMiddleware)); ``` ## mapStyleActions Actions handled mostly by `mapStyle` reducer. They manage the display of base map, such as loading and receiving base map styles, hiding and showing map layers, user input of custom map style url. ### addCustomMapStyle Add map style from user input to reducer and set it to current style This action is called when user click confirm after putting in a valid style url in the custom map style dialog. It should not be called from outside kepler.gl without a valid `inputStyle` in the `mapStyle` reducer. param {void} - **ActionTypes**: [`ActionTypes.ADD_CUSTOM_MAP_STYLE`][12] - **Updaters**: [`mapStyleUpdaters.addCustomMapStyleUpdater`][166] ### inputMapStyle Input a custom map style object - **ActionTypes**: [`ActionTypes.INPUT_MAP_STYLE`][12] - **Updaters**: [`mapStyleUpdaters.inputMapStyleUpdater`][167] **Parameters** - `inputStyle` **[Object][164]** - `inputStyle.url` **[string][162]** style url e.g. `'mapbox://styles/heshan/xxxxxyyyyzzz'` - `inputStyle.id` **[string][162]** style url e.g. `'custom_style_1'` - `inputStyle.style` **[Object][164]** actual mapbox style json - `inputStyle.name` **[string][162]** style name - `inputStyle.layerGroups` **[Object][164]** layer groups that can be used to set map layer visibility - `inputStyle.icon` **[Object][164]** icon image data url - `mapState` **[Object][164]** mapState is optional ### loadCustomMapStyle Callback when a custom map style object is received - **ActionTypes**: [`ActionTypes.LOAD_CUSTOM_MAP_STYLE`][12] - **Updaters**: [`mapStyleUpdaters.loadCustomMapStyleUpdater`][168] **Parameters** - `customMapStyle` **[Object][164]** - `customMapStyle.icon` **[string][162]** - `customMapStyle.style` **[Object][164]** - `customMapStyle.error` **any** ### loadMapStyleErr Callback when load map style error - **ActionTypes**: [`ActionTypes.LOAD_MAP_STYLE_ERR`][12] - **Updaters**: [`mapStyleUpdaters.loadMapStyleErrUpdater`][169] **Parameters** - `error` **any** ### loadMapStyles Callback when load map style success - **ActionTypes**: [`ActionTypes.LOAD_MAP_STYLES`][12] - **Updaters**: [`mapStyleUpdaters.loadMapStylesUpdater`][170] **Parameters** - `newStyles` **[Object][164]** a `{[id]: style}` mapping ### mapConfigChange Update `visibleLayerGroups`to change layer group visibility - **ActionTypes**: [`ActionTypes.MAP_CONFIG_CHANGE`][12] - **Updaters**: [`mapStyleUpdaters.mapConfigChangeUpdater`][171] **Parameters** - `mapStyle` **[Object][164]** new config `{visibleLayerGroups: {label: false, road: true, background: true}}` ### mapStyleChange Change to another map style. The selected style should already been loaded into `mapStyle.mapStyles` - **ActionTypes**: [`ActionTypes.MAP_STYLE_CHANGE`][12] - **Updaters**: [`mapStyleUpdaters.mapStyleChangeUpdater`][172] **Parameters** - `styleType` **[string][162]** the style to change to ### requestMapStyles Request map style style object based on style.url. - **ActionTypes**: [`ActionTypes.REQUEST_MAP_STYLES`][12] - **Updaters**: [`mapStyleUpdaters.requestMapStylesUpdater`][173] **Parameters** - `mapStyles` **[Array][174]<[Object][164]>** ### set3dBuildingColor Set 3d building layer group color - **ActionTypes**: [`ActionTypes.SET_3D_BUILDING_COLOR`][12] - **Updaters**: [`mapStyleUpdaters.set3dBuildingColorUpdater`][175] **Parameters** - `color` **[Array][174]** [r, g, b] ## main Main kepler.gl actions, these actions handles loading data and config into kepler.gl reducer. These actions is listened by all subreducers, ### addDataToMap Add data to kepler.gl reducer, prepare map with preset configuration if config is passed. Kepler.gl provides a handy set of utils to parse data from different formats to the `data` object required in dataset. You rarely need to manually format the data obejct. Use `KeplerGlSchema.getConfigToSave` to generate a json blob of the currents instance config. The config object value will always have higher precedence than the options properties. Kepler.gl uses `dataId` in the config to match with loaded dataset. If you pass a config object, you need to match the `info.id` of your dataset to the `dataId` in each `layer`, `filter` and `interactionConfig.tooltips.fieldsToShow` - **ActionTypes**: [`ActionTypes.ADD_DATA_TO_MAP`][12] - **Updaters**: [`combinedUpdaters.addDataToMapUpdater`][176] **Parameters** - `data` **[Object][164]** - `data.datasets` **([Array][174]<[Object][164]> | [Object][164])** **\*required** datasets can be a dataset or an array of datasets Each dataset object needs to have `info` and `data` property. - `data.datasets.info` **[Object][164]** \-info of a dataset - `data.datasets.info.id` **[string][162]** id of this dataset. If config is defined, `id` should matches the `dataId` in config. - `data.datasets.info.label` **[string][162]** A display name of this dataset - `data.datasets.data` **[Object][164]** **\*required** The data object, in a tabular format with 2 properties `fields` and `rows` - `data.datasets.data.fields` **[Array][174]<[Object][164]>** **\*required** Array of fields, - `data.datasets.data.fields.name` **[string][162]** **\*required** Name of the field, - `data.datasets.data.rows` **[Array][174]<[Array][174]>** **\*required** Array of rows, in a tabular format with `fields` and `rows` - `data.options` **[Object][164]** - `data.options.centerMap` **[boolean][165]** `default: true` if `centerMap` is set to `true` kepler.gl will place the map view within the data points boundaries. `options.centerMap` will override `config.mapState` if passed in. - `data.options.readOnly` **[boolean][165]** `default: false` if `readOnly` is set to `true` the left setting panel will be hidden - `data.options.keepExistingConfig` **[boolean][165]** whether to keep exiting map data and associated layer filter interaction config `default: false`. - `data.config` **[Object][164]** this object will contain the full kepler.gl instance configuration {mapState, mapStyle, visState} **Examples** ```javascript // app.js import {addDataToMap} from '@kepler.gl/actions'; const sampleTripData = { fields: [ {name: 'tpep_pickup_datetime', format: 'YYYY-M-D H:m:s', type: 'timestamp'}, {name: 'pickup_longitude', format: '', type: 'real'}, {name: 'pickup_latitude', format: '', type: 'real'} ], rows: [ ['2015-01-15 19:05:39 +00:00', -73.99389648, 40.75011063], ['2015-01-15 19:05:39 +00:00', -73.97642517, 40.73981094], ['2015-01-15 19:05:40 +00:00', -73.96870422, 40.75424576] ] }; const sampleConfig = { visState: { filters: [ { id: 'me', dataId: 'test_trip_data', name: 'tpep_pickup_datetime', type: 'timeRange', view: 'enlarged' } ] } }; this.props.dispatch( addDataToMap({ datasets: { info: { label: 'Sample Taxi Trips in New York City', id: 'test_trip_data' }, data: sampleTripData }, options: { centerMap: true, readOnly: false, keepExistingConfig: false }, info: { title: 'Taro and Blue', description: 'This is my map' }, config: sampleConfig }) ); ``` ### keplerGlInit Initialize kepler.gl reducer. It is used to pass in `mapboxApiAccessToken` to `mapStyle` reducer. - **ActionTypes**: [`ActionTypes.INIT`][12] - **Updaters**: [`mapStyleUpdaters.initMapStyleUpdater`][177] **Parameters** - `payload` **[Object][164]** - `payload.mapboxApiAccessToken` **[string][162]** mapboxApiAccessToken to be saved to mapStyle reducer - `payload.mapboxApiUrl` **[string][162]** mapboxApiUrl to be saved to mapStyle reducer. - `payload.mapStylesReplaceDefault` **[Boolean][165]** mapStylesReplaceDefault to be saved to mapStyle reducer ### receiveMapConfig Pass config to kepler.gl instance, prepare the state with preset configs. Calling `KeplerGlSchema.parseSavedConfig` to convert saved config before passing it in is required. You can call `receiveMapConfig` before passing in any data. The reducer will store layer and filter config, waiting for data to come in. When data arrives, you can call `addDataToMap` without passing any config, and the reducer will try to match preloaded configs. This behavior is designed to allow asynchronous data loading. It is also useful when you want to prepare the kepler.gl instance with some preset layer and filter settings. **Note** Sequence is important, `receiveMapConfig` needs to be called **before** data is loaded. Currently kepler.gl doesn't allow calling `receiveMapConfig` after data is loaded. It will reset current configuration first then apply config to it. - **ActionTypes**: [`ActionTypes.RECEIVE_MAP_CONFIG`][12] - **Updaters**: [`mapStateUpdaters.receiveMapConfigUpdater`][178], [`mapStyleUpdaters.receiveMapConfigUpdater`][179], [`visStateUpdaters.receiveMapConfigUpdater`][180] **Parameters** - `config` **[Object][164]** **\*required** The Config Object - `options` **[Object][164]** **\*optional** The Option object - `options.centerMap` **[boolean][165]** `default: true` if `centerMap` is set to `true` kepler.gl will place the map view within the data points boundaries - `options.readOnly` **[boolean][165]** `default: false` if `readOnly` is set to `true` the left setting panel will be hidden - `options.keepExistingConfig` **[boolean][165]** whether to keep exiting layer filter and interaction config `default: false`. **Examples** ```javascript import {receiveMapConfig} from '@kepler.gl/actions'; import KeplerGlSchema from '@kepler.gl/schemas'; const parsedConfig = KeplerGlSchema.parseSavedConfig(config); this.props.dispatch(receiveMapConfig(parsedConfig)); ``` ### resetMapConfig Reset all sub-reducers to its initial state. This can be used to clear out all configuration in the reducer. - **ActionTypes**: [`ActionTypes.RESET_MAP_CONFIG`][12] - **Updaters**: [`mapStateUpdaters.resetMapConfigUpdater`][181], [`mapStyleUpdaters.resetMapConfigMapStyleUpdater`][182], [`mapStyleUpdaters.resetMapConfigMapStyleUpdater`][182], [`visStateUpdaters.resetMapConfigUpdater`][183] ## visStateActions Actions handled mostly by `visState` reducer. They manage how data is processed, filtered and displayed on the map by operates on layers, filters and interaction settings. ### addFilter Add a new filter - **ActionTypes**: [`ActionTypes.ADD_FILTER`][12] - **Updaters**: [`visStateUpdaters.addFilterUpdater`][184] **Parameters** - `dataId` **[string][162]** dataset `id` this new filter is associated with Returns **{type: ActionTypes.ADD_FILTER, dataId: dataId}** ### addLayer Add a new layer - **ActionTypes**: [`ActionTypes.ADD_LAYER`][12] - **Updaters**: [`visStateUpdaters.addLayerUpdater`][185] **Parameters** - `props` **[Object][164]** new layer props Returns **{type: ActionTypes.ADD_LAYER, props: props}** ### applyCPUFilter Trigger CPU filter of selected dataset - **ActionTypes**: [`ActionTypes.APPLY_CPU_FILTER`][12] - **Updaters**: [`visStateUpdaters.applyCPUFilterUpdater`][186] **Parameters** - `dataId` **([string][162] | Arrary<[string][162]>)** single dataId or an array of dataIds Returns **{type: ActionTypes.APPLY_CPU_FILTER, dataId: [string][162]}** ### enlargeFilter Show larger time filter at bottom for time playback (apply to time filter only) - **ActionTypes**: [`ActionTypes.ENLARGE_FILTER`][12] - **Updaters**: [`visStateUpdaters.enlargeFilterUpdater`][187] **Parameters** - `idx` **[Number][188]** index of filter to enlarge Returns **{type: ActionTypes.ENLARGE_FILTER, idx: idx}** ### interactionConfigChange Update `interactionConfig` - **ActionTypes**: [`ActionTypes.INTERACTION_CONFIG_CHANGE`][12] - **Updaters**: [`visStateUpdaters.interactionConfigChangeUpdater`][189] **Parameters** - `config` **[Object][164]** new config as key value map: `{tooltip: {enabled: true}}` Returns **{type: ActionTypes.INTERACTION_CONFIG_CHANGE, config: config}** ### layerConfigChange Update layer base config: dataId, label, column, isVisible - **ActionTypes**: [`ActionTypes.LAYER_CONFIG_CHANGE`][12] - **Updaters**: [`visStateUpdaters.layerConfigChangeUpdater`][190] **Parameters** - `oldLayer` **[Object][164]** layer to be updated - `newConfig` **[Object][164]** new config Returns **{type: ActionTypes.LAYER_CONFIG_CHANGE, oldLayer: oldLayer, newConfig: newConfig}** ### layerTextLabelChange Update layer text label - **ActionTypes**: [`ActionTypes.LAYER_TEXT_LABEL_CHANGE`][12] - **Updaters**: [`visStateUpdaters.layerTextLabelChangeUpdater`][191] **Parameters** - `oldLayer` **[Object][164]** layer to be updated - `idx` **[Number][188]** \-`idx` of text label to be updated - `prop` **[string][162]** `prop` of text label, e,g, `anchor`, `alignment`, `color`, `size`, `field` - `value` **any** new value ### layerTypeChange Update layer type. Previews layer config will be copied if applicable. - **ActionTypes**: [`ActionTypes.LAYER_TYPE_CHANGE`][12] - **Updaters**: [`visStateUpdaters.layerTypeChangeUpdater`][192] **Parameters** - `oldLayer` **[Object][164]** layer to be updated - `newType` **[string][162]** new type Returns **{type: ActionTypes.LAYER_TYPE_CHANGE, oldLayer: oldLayer, newType: newType}** ### layerVisConfigChange Update layer `visConfig` - **ActionTypes**: [`ActionTypes.LAYER_VIS_CONFIG_CHANGE`][12] - **Updaters**: [`visStateUpdaters.layerVisConfigChangeUpdater`][193] **Parameters** - `oldLayer` **[Object][164]** layer to be updated - `newVisConfig` **[Object][164]** new visConfig as a key value map: e.g. `{opacity: 0.8}` Returns **{type: ActionTypes.LAYER_VIS_CONFIG_CHANGE, oldLayer: oldLayer, newVisConfig: newVisConfig}** ### layerVisualChannelConfigChange Update layer visual channel - **ActionTypes**: [`ActionTypes.LAYER_VISUAL_CHANNEL_CHANGE`][12] - **Updaters**: [`visStateUpdaters.layerVisualChannelChangeUpdater`][194] **Parameters** - `oldLayer` **[Object][164]** layer to be updated - `newConfig` **[Object][164]** new visual channel config - `channel` **[string][162]** channel to be updated Returns **{type: ActionTypes.LAYER_VISUAL_CHANNEL_CHANGE, oldLayer: oldLayer, newConfig: newConfig, channel: channel}** ### loadFiles Trigger file loading dispatch `addDataToMap` if succeed, or `loadFilesErr` if failed - **ActionTypes**: [`ActionTypes.LOAD_FILES`][12] - **Updaters**: [`uiStateUpdaters.loadFilesUpdater`][195], [`visStateUpdaters.loadFilesUpdater`][196] **Parameters** - `files` **[Array][174]<[Object][164]>** array of fileblob Returns **{type: ActionTypes.LOAD_FILES, files: any}** ### loadFilesErr Trigger loading file error - **ActionTypes**: [`ActionTypes.LOAD_FILES_ERR`][12] - **Updaters**: [`uiStateUpdaters.loadFilesErrUpdater`][197], [`visStateUpdaters.loadFilesErrUpdater`][198] **Parameters** - `error` **any** Returns **{type: ActionTypes.LOAD_FILES_ERR, error: [Object][164]}** ### onLayerClick Trigger layer click event with clicked object - **ActionTypes**: [`ActionTypes.LAYER_CLICK`][12] - **Updaters**: [`visStateUpdaters.layerClickUpdater`][199] **Parameters** - `info` **[Object][164]** Object clicked, returned by deck.gl Returns **{type: ActionTypes.LAYER_CLICK, info: info}** ### onLayerHover Trigger layer hover event with hovered object - **ActionTypes**: [`ActionTypes.LAYER_HOVER`][12] - **Updaters**: [`visStateUpdaters.layerHoverUpdater`][200] **Parameters** - `info` **[Object][164]** Object hovered, returned by deck.gl Returns **{type: ActionTypes.LAYER_HOVER, info: info}** ### onMapClick Trigger map click event, unselect clicked object - **ActionTypes**: [`ActionTypes.MAP_CLICK`][12] - **Updaters**: [`visStateUpdaters.mapClickUpdater`][201] Returns **{type: ActionTypes.MAP_CLICK}** ### onMouseMove Trigger map mouse moveevent, payload would be React-map-gl MapLayerMouseEvent [https://visgl.github.io/react-map-gl/docs/api-reference/types#maplayermouseevent][202] - **ActionTypes**: [`ActionTypes.MOUSE_MOVE`][12] - **Updaters**: [`visStateUpdaters.mouseMoveUpdater`][203] **Parameters** - `evt` **[Object][164]** MapLayerMouseEvent Returns **{type: ActionTypes.MAP_CLICK}** ### removeDataset Remove a dataset and all layers, filters, tooltip configs that based on it - **ActionTypes**: [`ActionTypes.REMOVE_DATASET`][12] - **Updaters**: [`visStateUpdaters.removeDatasetUpdater`][204] **Parameters** - `key` **[string][162]** dataset id Returns **{type: ActionTypes.REMOVE_DATASET, key: key}** ### removeFilter Remove a filter from `visState.filters`, once a filter is removed, data will be re-filtered and layer will be updated - **ActionTypes**: [`ActionTypes.REMOVE_FILTER`][12] - **Updaters**: [`visStateUpdaters.removeFilterUpdater`][205] **Parameters** - `idx` **[Number][188]** idx of filter to be removed Returns **{type: ActionTypes.REMOVE_FILTER, idx: idx}** ### removeLayer Remove a layer - **ActionTypes**: [`ActionTypes.REMOVE_LAYER`][12] - **Updaters**: [`visStateUpdaters.removeLayerUpdater`][206] **Parameters** - `idx` **[Number][188]** idx of layer to be removed Returns **{type: ActionTypes.REMOVE_LAYER, idx: idx}** ### reorderLayer Reorder layer, order is an array of layer indexes, index 0 will be the one at the bottom - **ActionTypes**: [`ActionTypes.REORDER_LAYER`][12] - **Updaters**: [`visStateUpdaters.reorderLayerUpdater`][207] **Parameters** - `order` **[Array][174]<[Number][188]>** an array of layer indexes **Examples** ```javascript // bring `layers[1]` below `layers[0]`, the sequence layers will be rendered is `1`, `0`, `2`, `3`. // `1` will be at the bottom, `3` will be at the top. this.props.dispatch(reorderLayer([1, 0, 2, 3])); ``` Returns **{type: ActionTypes.REORDER_LAYER, order: order}** ### setEditorMode Set the map mode - **ActionTypes**: [`ActionTypes.SET_EDITOR_MODE`][12] - **Updaters**: [`visStateUpdaters.setEditorModeUpdater`][208] **Parameters** - `mode` **[string][162]** one of EDITOR_MODES **Examples** ```javascript import {setMapMode} from '@kepler.gl/actions'; import {EDITOR_MODES} from '@kepler.gl/constants'; this.props.dispatch(setMapMode(EDITOR_MODES.DRAW_POLYGON)); ``` ### setFilter Update filter property - **ActionTypes**: [`ActionTypes.SET_FILTER`][12] - **Updaters**: [`visStateUpdaters.setFilterUpdater`][209] **Parameters** - `idx` **[Number][188]** \-`idx` of filter to be updated - `prop` **[string][162]** `prop` of filter, e,g, `dataId`, `name`, `value` - `value` **any** new value - `valueIndex` **[Number][188]** array properties like dataset require index in order to improve performance Returns **{type: ActionTypes.SET_FILTER, idx: idx, prop: prop, value: value}** ### setFilterPlot Set the property of a filter plot - **ActionTypes**: [`ActionTypes.SET_FILTER_PLOT`][12] - **Updaters**: [`visStateUpdaters.setFilterPlotUpdater`][210] **Parameters** - `idx` **[Number][188]** - `newProp` **[Object][164]** key value mapping of new prop `{yAxis: 'histogram'}` Returns **{type: ActionTypes.SET_FILTER_PLOT, idx: any, newProp: any}** ### setMapInfo Set the property of a filter plot - **ActionTypes**: [`ActionTypes.SET_MAP_INFO`][12] - **Updaters**: [`visStateUpdaters.setMapInfoUpdater`][211] **Parameters** - `info` - `idx` **[Number][188]** - `newProp` **[Object][164]** key value mapping of new prop `{yAxis: 'histogram'}` Returns **{type: ActionTypes.SET_FILTER_PLOT, idx: any, newProp: any}** ### showDatasetTable Display dataset table in a modal - **ActionTypes**: [`ActionTypes.SHOW_DATASET_TABLE`][12] - **Updaters**: [`visStateUpdaters.showDatasetTableUpdater`][212] **Parameters** - `dataId` **[string][162]** dataset id to show in table Returns **{type: ActionTypes.SHOW_DATASET_TABLE, dataId: dataId}** ### toggleFilterAnimation Start and end filter animation - **ActionTypes**: [`ActionTypes.TOGGLE_FILTER_ANIMATION`][12] - **Updaters**: [`visStateUpdaters.toggleFilterAnimationUpdater`][213] **Parameters** - `idx` **[Number][188]** idx of filter Returns **{type: ActionTypes.TOGGLE_FILTER_ANIMATION, idx: idx}** ### toggleLayerForMap Toggle visibility of a layer in a split map - **ActionTypes**: [`ActionTypes.TOGGLE_LAYER_FOR_MAP`][12] - **Updaters**: [`visStateUpdaters.toggleLayerForMapUpdater`][214] **Parameters** - `mapIndex` **[Number][188]** index of the split map - `layerId` **[string][162]** id of the layer Returns **{type: ActionTypes.TOGGLE_LAYER_FOR_MAP, mapIndex: any, layerId: any}** ### updateAnimationTime Reset animation - **ActionTypes**: [`ActionTypes.UPDATE_ANIMATION_TIME`][12] - **Updaters**: [`visStateUpdaters.updateAnimationTimeUpdater`][215] **Parameters** - `value` **[Number][188]** Current value of the slider Returns **{type: ActionTypes.UPDATE_ANIMATION_TIME, value: value}** ### updateFilterAnimationSpeed Change filter animation speed - **ActionTypes**: [`ActionTypes.UPDATE_FILTER_ANIMATION_SPEED`][12] - **Updaters**: [`visStateUpdaters.updateFilterAnimationSpeedUpdater`][216] **Parameters** - `idx` **[Number][188]** `idx` of filter - `speed` **[Number][188]** `speed` to change it to. `speed` is a multiplier Returns **{type: ActionTypes.UPDATE_FILTER_ANIMATION_SPEED, idx: idx, speed: speed}** ### updateLayerAnimationSpeed update trip layer animation speed - **ActionTypes**: [`ActionTypes.UPDATE_LAYER_ANIMATION_SPEED`][12] - **Updaters**: [`visStateUpdaters.updateLayerAnimationSpeedUpdater`][217] **Parameters** - `speed` **[Number][188]** `speed` to change it to. `speed` is a multiplier Returns **{type: ActionTypes.UPDATE_LAYER_ANIMATION_SPEED, speed: speed}** ### updateLayerBlending Update layer blending mode - **ActionTypes**: [`ActionTypes.UPDATE_LAYER_BLENDING`][12] - **Updaters**: [`visStateUpdaters.updateLayerBlendingUpdater`][218] **Parameters** - `mode` **[string][162]** one of `additive`, `normal` and `subtractive` Returns **{type: ActionTypes.UPDATE_LAYER_BLENDING, mode: mode}** ### updateVisData Add new dataset to `visState`, with option to load a map config along with the datasets - **ActionTypes**: [`ActionTypes.UPDATE_VIS_DATA`][12] - **Updaters**: [`visStateUpdaters.updateVisDataUpdater`][219] **Parameters** - `datasets` **([Array][174]<[Object][164]> | [Object][164])** **\*required** datasets can be a dataset or an array of datasets Each dataset object needs to have `info` and `data` property. - `datasets.info` **[Object][164]** \-info of a dataset - `datasets.info.id` **[string][162]** id of this dataset. If config is defined, `id` should matches the `dataId` in config. - `datasets.info.label` **[string][162]** A display name of this dataset - `datasets.data` **[Object][164]** **\*required** The data object, in a tabular format with 2 properties `fields` and `rows` - `datasets.data.fields` **[Array][174]<[Object][164]>** **\*required** Array of fields, - `datasets.data.fields.name` **[string][162]** **\*required** Name of the field, - `datasets.data.rows` **[Array][174]<[Array][174]>** **\*required** Array of rows, in a tabular format with `fields` and `rows` - `options` **[Object][164]** - `options.centerMap` **[boolean][165]** `default: true` if `centerMap` is set to `true` kepler.gl will place the map view within the data points boundaries - `options.readOnly` **[boolean][165]** `default: false` if `readOnly` is set to `true` the left setting panel will be hidden - `config` **[Object][164]** this object will contain the full kepler.gl instance configuration {mapState, mapStyle, visState} Returns **{type: ActionTypes.UPDATE_VIS_DATA, datasets: datasets, options: options, config: config}** ## uiStateActions Actions handled mostly by `uiState` reducer. They manage UI changes in tha app, such as open and close side panel, switch between tabs in the side panel, open and close modal dialog for exporting data / images etc. It also manges which settings are selected during image and map export ### addNotification Add a notification to be displayed. Existing notification is going to be updated in case of matching ids. - **ActionTypes**: [`ActionTypes.ADD_NOTIFICATION`][12] - **Updaters**: [`uiStateUpdaters.addNotificationUpdater`][220] **Parameters** - `notification` **[Object][164]** The `notification` object to be added ### cleanupExportImage Delete cached export image - **ActionTypes**: [`ActionTypes.CLEANUP_EXPORT_IMAGE`][12] - **Updaters**: [`uiStateUpdaters.cleanupExportImage`][221] ### hideExportDropdown Hide side panel header dropdown, activated by clicking the share link on top of the side panel - **ActionTypes**: [`ActionTypes.HIDE_EXPORT_DROPDOWN`][12] - **Updaters**: [`uiStateUpdaters.hideExportDropdownUpdater`][222] ### openDeleteModal Toggle active map control panel - **ActionTypes**: [`ActionTypes.OPEN_DELETE_MODAL`][12] - **Updaters**: [`uiStateUpdaters.openDeleteModalUpdater`][223] **Parameters** - `datasetId` **[string][162]** `id` of the dataset to be deleted ### removeNotification Remove a notification - **ActionTypes**: [`ActionTypes.REMOVE_NOTIFICATION`][12] - **Updaters**: [`uiStateUpdaters.removeNotificationUpdater`][224] **Parameters** - `id` **[string][162]** `id` of the notification to be removed ### setExportData Whether to including data in map config, toggle between `true` or `false` - **ActionTypes**: [`ActionTypes.SET_EXPORT_DATA`][12] - **Updaters**: [`uiStateUpdaters.setExportDataUpdater`][225] ### setExportDataType Set data format for exporting data - **ActionTypes**: [`ActionTypes.SET_EXPORT_DATA_TYPE`][12] - **Updaters**: [`uiStateUpdaters.setExportDataTypeUpdater`][226] **Parameters** - `dataType` **[string][162]** one of `'text/csv'` ### setExportFiltered Whether to export filtered data, `true` or `false` - **ActionTypes**: [`ActionTypes.SET_EXPORT_FILTERED`][12] - **Updaters**: [`uiStateUpdaters.setExportFilteredUpdater`][227] **Parameters** - `payload` **[boolean][165]** set `true` to ony export filtered data ### setExportImageDataUri Set `exportImage.setExportImageDataUri` to a dataUri - **ActionTypes**: [`ActionTypes.SET_EXPORT_IMAGE_DATA_URI`][12] - **Updaters**: [`uiStateUpdaters.setExportImageDataUri`][228] **Parameters** - `dataUri` **[string][162]** export image data uri ### setExportImageSetting Set `exportImage` settings: ratio, resolution, legend - **ActionTypes**: [`ActionTypes.SET_EXPORT_IMAGE_SETTING`][12] - **Updaters**: [`uiStateUpdaters.setExportImageSetting`][229] **Parameters** - `newSetting` **[Object][164]** {ratio: '1x'} ### setExportSelectedDataset Set selected dataset for export - **ActionTypes**: [`ActionTypes.SET_EXPORT_SELECTED_DATASET`][12] - **Updaters**: [`uiStateUpdaters.setExportSelectedDatasetUpdater`][230] **Parameters** - `datasetId` **[string][162]** dataset id ### setUserMapboxAccessToken Whether we export a mapbox access token used to create a single map html file - **ActionTypes**: [`ActionTypes.SET_USER_MAPBOX_ACCESS_TOKEN`][12] - **Updaters**: [`uiStateUpdaters.setUserMapboxAccessTokenUpdater`][231] **Parameters** - `payload` **[string][162]** mapbox access token ### showExportDropdown Hide and show side panel header dropdown, activated by clicking the share link on top of the side panel - **ActionTypes**: [`ActionTypes.SHOW_EXPORT_DROPDOWN`][12] - **Updaters**: [`uiStateUpdaters.showExportDropdownUpdater`][232] **Parameters** - `id` **[string][162]** id of the dropdown ### startExportingImage Set `exportImage.exporting` to true - **ActionTypes**: [`ActionTypes.START_EXPORTING_IMAGE`][12] - **Updaters**: [`uiStateUpdaters.startExportingImage`][233] ### toggleMapControl Toggle active map control panel - **ActionTypes**: [`ActionTypes.TOGGLE_MAP_CONTROL`][12] - **Updaters**: [`uiStateUpdaters.toggleMapControlUpdater`][234] **Parameters** - `panelId` **[string][162]** map control panel id, one of the keys of: [`DEFAULT_MAP_CONTROLS`][235] ### toggleModal Show and hide modal dialog - **ActionTypes**: [`ActionTypes.TOGGLE_MODAL`][12] - **Updaters**: [`uiStateUpdaters.toggleModalUpdater`][236] **Parameters** - `id` **([string][162] | null)** id of modal to be shown, null to hide modals. One of:- [`DATA_TABLE_ID`][237] - [`DELETE_DATA_ID`][238] - [`ADD_DATA_ID`][239] - [`EXPORT_IMAGE_ID`][240] - [`EXPORT_DATA_ID`][241] - [`ADD_MAP_STYLE_ID`][242] ### toggleSidePanel Toggle active side panel - **ActionTypes**: [`ActionTypes.TOGGLE_SIDE_PANEL`][12] - **Updaters**: [`uiStateUpdaters.toggleSidePanelUpdater`][243] **Parameters** - `id` **[string][162]** id of side panel to be shown, one of `layer`, `filter`, `interaction`, `map` ## rootActions Root actions managers adding and removing instances in root reducer. Under-the-hood, when a `KeplerGl` component is mounted or unmounted, it will automatically calls these actions to add itself to the root reducer. However, sometimes the data is ready before the component is registered in the reducer, in this case, you can manually call these actions or the corresponding updater to add it to the reducer. ### deleteEntry Delete an instance from `keplerGlReducer`. This action is called under-the-hood when a `KeplerGl` component is **un-mounted** to the dom. If `mint` is set to be `true` in the component prop, the instance state will be deleted from the root reducer. Otherwise, the root reducer will keep the instance state and later transfer it to a newly mounted component with the same `id` - **ActionTypes**: [`ActionTypes.DELETE_ENTRY`][12] - **Updaters**: **Parameters** - `id` **[string][162]** the id of the instance to be deleted ### registerEntry Add a new kepler.gl instance in `keplerGlReducer`. This action is called under-the-hood when a `KeplerGl` component is **mounted** to the dom. Note that if you dispatch actions such as adding data to a kepler.gl instance before the React component is mounted, the action will not be performed. Instance reducer can only handle actions when it is instantiated. - **ActionTypes**: [`ActionTypes.REGISTER_ENTRY`][12] - **Updaters**: **Parameters** - `payload` **[Object][164]** - `payload.id` **[string][162]** **\*required** The id of the instance - `payload.mint` **[boolean][165]** Whether to use a fresh empty state, when `mint: true` it will _always_ load a fresh state when the component is re-mounted. When `mint: false` it will register with existing instance state under the same `id`, when the component is unmounted then mounted again. Default: `true` - `payload.mapboxApiAccessToken` **[string][162]** mapboxApiAccessToken to be saved in `map-style` reducer. - `payload.mapboxApiUrl` **[string][162]** mapboxApiUrl to be saved in `map-style` reducer. - `payload.mapStylesReplaceDefault` **[Boolean][165]** mapStylesReplaceDefault to be saved in `map-style` reducer. ### renameEntry Rename an instance in the root reducer, keep its entire state - **ActionTypes**: [`ActionTypes.RENAME_ENTRY`][12] - **Updaters**: **Parameters** - `oldId` **[string][162]** **\*required** old id - `newId` **[string][162]** **\*required** new id ## mapStateActions Actions handled mostly by `mapState` reducer. They manage map viewport update, toggle between 2d and 3d map, toggle between single and split maps. ### fitBounds Fit map viewport to bounds - **ActionTypes**: [`ActionTypes.FIT_BOUNDS`][12] - **Updaters**: [`mapStateUpdaters.fitBoundsUpdater`][244] **Parameters** - `bounds` **[Array][174]<[Number][188]>** as `[lngMin, latMin, lngMax, latMax]` **Examples** ```javascript import {fitBounds} from '@kepler.gl/actions'; this.props.dispatch(fitBounds([-122.23, 37.127, -122.11, 37.456])); ``` ### togglePerspective Toggle between 3d and 2d map. - **ActionTypes**: [`ActionTypes.TOGGLE_PERSPECTIVE`][12] - **Updaters**: [`mapStateUpdaters.togglePerspectiveUpdater`][245] **Examples** ```javascript import {togglePerspective} from '@kepler.gl/actions'; this.props.dispatch(togglePerspective()); ``` ### toggleSplitMap Toggle between single map or split maps - **ActionTypes**: [`ActionTypes.TOGGLE_SPLIT_MAP`][12] - **Updaters**: [`mapStateUpdaters.toggleSplitMapUpdater`][246], [`uiStateUpdaters.toggleSplitMapUpdater`][247], [`visStateUpdaters.toggleSplitMapUpdater`][248] **Parameters** - `index` **[Number][188]?** index is provided, close split map at index **Examples** ```javascript import {toggleSplitMap} from '@kepler.gl/actions'; this.props.dispatch(toggleSplitMap()); ``` ### updateMap Update map viewport - **ActionTypes**: [`ActionTypes.UPDATE_MAP`][12] - **Updaters**: [`mapStateUpdaters.updateMapUpdater`][249] **Parameters** - `viewport` **[Object][164]** viewport object container one or any of these properties `width`, `height`, `latitude` `longitude`, `zoom`, `pitch`, `bearing`, `dragRotate` - `viewport.width` **[Number][188]?** Width of viewport - `viewport.height` **[Number][188]?** Height of viewport - `viewport.zoom` **[Number][188]?** Zoom of viewport - `viewport.pitch` **[Number][188]?** Camera angle in degrees (0 is straight down) - `viewport.bearing` **[Number][188]?** Map rotation in degrees (0 means north is up) - `viewport.latitude` **[Number][188]?** Latitude center of viewport on map in mercator projection - `viewport.longitude` **[Number][188]?** Longitude Center of viewport on map in mercator projection - `viewport.dragRotate` **[boolean][165]?** Whether to enable drag and rotate map into perspective viewport **Examples** ```javascript import {updateMap} from '@kepler.gl/actions'; this.props.dispatch( updateMap({latitude: 37.75043, longitude: -122.34679, width: 800, height: 1200}) ); ``` ## layerColorUIChange Set the color palette ui for layer color - **ActionTypes**: [`ActionTypes.LAYER_COLOR_UI_CHANGE`][12] - **Updaters**: [`visStateUpdaters.layerColorUIChangeUpdater`][250] **Parameters** - `oldLayer` **[Object][164]** layer to be updated - `prop` **[String][162]** which color prop - `newConfig` **[object][164]** to be merged ## setExportMapFormat Set the export map format (html, json) - **ActionTypes**: [`ActionTypes.SET_EXPORT_MAP_FORMAT`][12] - **Updaters**: [`uiStateUpdaters.setExportMapFormatUpdater`][251] **Parameters** - `payload` **[string][162]** map format [1]: #forwardactions [2]: #forwardto [3]: #parameters [4]: #examples [5]: #isforwardaction [6]: #parameters-1 [7]: #unwrap [8]: #parameters-2 [9]: #wrapto [10]: #parameters-3 [11]: #examples-1 [12]: #actiontypes [13]: #examples-2 [14]: #mapstyleactions [15]: #addcustommapstyle [16]: #inputmapstyle [17]: #parameters-4 [18]: #loadcustommapstyle [19]: #parameters-5 [20]: #loadmapstyleerr [21]: #parameters-6 [22]: #loadmapstyles [23]: #parameters-7 [24]: #mapconfigchange [25]: #parameters-8 [26]: #mapstylechange [27]: #parameters-9 [28]: #requestmapstyles [29]: #parameters-10 [30]: #set3dbuildingcolor [31]: #parameters-11 [32]: #main [33]: #adddatatomap [34]: #parameters-12 [35]: #examples-3 [36]: #keplerglinit [37]: #parameters-13 [38]: #receivemapconfig [39]: #parameters-14 [40]: #examples-4 [41]: #resetmapconfig [42]: #visstateactions [43]: #addfilter [44]: #parameters-15 [45]: #addlayer [46]: #parameters-16 [47]: #applycpufilter [48]: #parameters-17 [49]: #enlargefilter [50]: #parameters-18 [51]: #interactionconfigchange [52]: #parameters-19 [53]: #layerconfigchange [54]: #parameters-20 [55]: #layertextlabelchange [56]: #parameters-21 [57]: #layertypechange [58]: #parameters-22 [59]: #layervisconfigchange [60]: #parameters-23 [61]: #layervisualchannelconfigchange [62]: #parameters-24 [63]: #loadfiles [64]: #parameters-25 [65]: #loadfileserr [66]: #parameters-26 [67]: #onlayerclick [68]: #parameters-27 [69]: #onlayerhover [70]: #parameters-28 [71]: #onmapclick [72]: #onmousemove [73]: #parameters-29 [74]: #removedataset [75]: #parameters-30 [76]: #removefilter [77]: #parameters-31 [78]: #removelayer [79]: #parameters-32 [80]: #reorderlayer [81]: #parameters-33 [82]: #examples-5 [83]: #seteditormode [84]: #parameters-34 [85]: #examples-6 [86]: #setfilter [87]: #parameters-35 [88]: #setfilterplot [89]: #parameters-36 [90]: #setmapinfo [91]: #parameters-37 [92]: #showdatasettable [93]: #parameters-38 [94]: #togglefilteranimation [95]: #parameters-39 [96]: #togglelayerformap [97]: #parameters-40 [98]: #updateanimationtime [99]: #parameters-41 [100]: #updatefilteranimationspeed [101]: #parameters-42 [102]: #updatelayeranimationspeed [103]: #parameters-43 [104]: #updatelayerblending [105]: #parameters-44 [106]: #updatevisdata [107]: #parameters-45 [108]: #uistateactions [109]: #addnotification [110]: #parameters-46 [111]: #cleanupexportimage [112]: #hideexportdropdown [113]: #opendeletemodal [114]: #parameters-47 [115]: #removenotification [116]: #parameters-48 [117]: #setexportdata [118]: #setexportdatatype [119]: #parameters-49 [120]: #setexportfiltered [121]: #parameters-50 [122]: #setexportimagedatauri [123]: #parameters-51 [124]: #setexportimagesetting [125]: #parameters-52 [126]: #setexportselecteddataset [127]: #parameters-53 [128]: #setusermapboxaccesstoken [129]: #parameters-54 [130]: #showexportdropdown [131]: #parameters-55 [132]: #startexportingimage [133]: #togglemapcontrol [134]: #parameters-56 [135]: #togglemodal [136]: #parameters-57 [137]: #togglesidepanel [138]: #parameters-58 [139]: #rootactions [140]: #deleteentry [141]: #parameters-59 [142]: #registerentry [143]: #parameters-60 [144]: #renameentry [145]: #parameters-61 [146]: #mapstateactions [147]: #fitbounds [148]: #parameters-62 [149]: #examples-7 [150]: #toggleperspective [151]: #examples-8 [152]: #togglesplitmap [153]: #parameters-63 [154]: #examples-9 [155]: #updatemap [156]: #parameters-64 [157]: #examples-10 [158]: #layercoloruichange [159]: #parameters-65 [160]: #setexportmapformat [161]: #parameters-66 [162]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String [163]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function [164]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object [165]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean [166]: ../reducers/map-style.md#mapstyleupdatersaddcustommapstyleupdater [167]: ../reducers/map-style.md#mapstyleupdatersinputmapstyleupdater [168]: ../reducers/map-style.md#mapstyleupdatersloadcustommapstyleupdater [169]: ../reducers/map-style.md#mapstyleupdatersloadmapstyleerrupdater [170]: ../reducers/map-style.md#mapstyleupdatersloadmapstylesupdater [171]: ../reducers/map-style.md#mapstyleupdatersmapconfigchangeupdater [172]: ../reducers/map-style.md#mapstyleupdatersmapstylechangeupdater [173]: ../reducers/map-style.md#mapstyleupdatersrequestmapstylesupdater [174]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array [175]: ../reducers/map-style.md#mapstyleupdatersset3dbuildingcolorupdater [176]: ../reducers/composers.md#combinedupdatersadddatatomapupdater [177]: ../reducers/map-style.md#mapstyleupdatersinitmapstyleupdater [178]: ../reducers/map-state.md#mapstateupdatersreceivemapconfigupdater [179]: ../reducers/map-style.md#mapstyleupdatersreceivemapconfigupdater [180]: ../reducers/vis-state.md#visstateupdatersreceivemapconfigupdater [181]: ../reducers/map-state.md#mapstateupdatersresetmapconfigupdater [182]: ../reducers/map-style.md#mapstyleupdatersresetmapconfigmapstyleupdater [183]: ../reducers/vis-state.md#visstateupdatersresetmapconfigupdater [184]: ../reducers/vis-state.md#visstateupdatersaddfilterupdater [185]: ../reducers/vis-state.md#visstateupdatersaddlayerupdater [186]: ../reducers/vis-state.md#visstateupdatersapplycpufilterupdater [187]: ../reducers/vis-state.md#visstateupdatersenlargefilterupdater [188]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number [189]: ../reducers/vis-state.md#visstateupdatersinteractionconfigchangeupdater [190]: ../reducers/vis-state.md#visstateupdaterslayerconfigchangeupdater [191]: ../reducers/vis-state.md#visstateupdaterslayertextlabelchangeupdater [192]: ../reducers/vis-state.md#visstateupdaterslayertypechangeupdater [193]: ../reducers/vis-state.md#visstateupdaterslayervisconfigchangeupdater [194]: ../reducers/vis-state.md#visstateupdaterslayervisualchannelchangeupdater [195]: ../reducers/ui-state.md#uistateupdatersloadfilesupdater [196]: ../reducers/vis-state.md#visstateupdatersloadfilesupdater [197]: ../reducers/ui-state.md#uistateupdatersloadfileserrupdater [198]: ../reducers/vis-state.md#visstateupdatersloadfileserrupdater [199]: ../reducers/vis-state.md#visstateupdaterslayerclickupdater [200]: ../reducers/vis-state.md#visstateupdaterslayerhoverupdater [201]: ../reducers/vis-state.md#visstateupdatersmapclickupdater [202]: https://visgl.github.io/react-map-gl/docs/api-reference/types#maplayermouseevent [203]: ../reducers/vis-state.md#visstateupdatersmousemoveupdater [204]: ../reducers/vis-state.md#visstateupdatersremovedatasetupdater [205]: ../reducers/vis-state.md#visstateupdatersremovefilterupdater [206]: ../reducers/vis-state.md#visstateupdatersremovelayerupdater [207]: ../reducers/vis-state.md#visstateupdatersreorderlayerupdater [208]: ../reducers/vis-state.md#visstateupdatersseteditormodeupdater [209]: ../reducers/vis-state.md#visstateupdaterssetfilterupdater [210]: ../reducers/vis-state.md#visstateupdaterssetfilterplotupdater [211]: ../reducers/vis-state.md#visstateupdaterssetmapinfoupdater [212]: ../reducers/vis-state.md#visstateupdatersshowdatasettableupdater [213]: ../reducers/vis-state.md#visstateupdaterstogglefilteranimationupdater [214]: ../reducers/vis-state.md#visstateupdaterstogglelayerformapupdater [215]: ../reducers/vis-state.md#visstateupdatersupdateanimationtimeupdater [216]: ../reducers/vis-state.md#visstateupdatersupdatefilteranimationspeedupdater [217]: ../reducers/vis-state.md#visstateupdatersupdatelayeranimationspeedupdater [218]: ../reducers/vis-state.md#visstateupdatersupdatelayerblendingupdater [219]: ../reducers/vis-state.md#visstateupdatersupdatevisdataupdater [220]: ../reducers/ui-state.md#uistateupdatersaddnotificationupdater [221]: ../reducers/ui-state.md#uistateupdaterscleanupexportimage [222]: ../reducers/ui-state.md#uistateupdatershideexportdropdownupdater [223]: ../reducers/ui-state.md#uistateupdatersopendeletemodalupdater [224]: ../reducers/ui-state.md#uistateupdatersremovenotificationupdater [225]: ../reducers/ui-state.md#uistateupdaterssetexportdataupdater [226]: ../reducers/ui-state.md#uistateupdaterssetexportdatatypeupdater [227]: ../reducers/ui-state.md#uistateupdaterssetexportfilteredupdater [228]: ../reducers/ui-state.md#uistateupdaterssetexportimagedatauri [229]: ../reducers/ui-state.md#uistateupdaterssetexportimagesetting [230]: ../reducers/ui-state.md#uistateupdaterssetexportselecteddatasetupdater [231]: ../reducers/ui-state.md#uistateupdaterssetusermapboxaccesstokenupdater [232]: ../reducers/ui-state.md#uistateupdatersshowexportdropdownupdater [233]: ../reducers/ui-state.md#uistateupdatersstartexportingimage [234]: ../reducers/ui-state.md#uistateupdaterstogglemapcontrolupdater [235]: #default_map_controls [236]: ../reducers/ui-state.md#uistateupdaterstogglemodalupdater [237]: ../constants/default-settings.md#data_table_id [238]: ../constants/default-settings.md#delete_data_id [239]: ../constants/default-settings.md#add_data_id [240]: ../constants/default-settings.md#export_image_id [241]: ../constants/default-settings.md#export_data_id [242]: ../constants/default-settings.md#add_map_style_id [243]: ../reducers/ui-state.md#uistateupdaterstogglesidepanelupdater [244]: ../reducers/map-state.md#mapstateupdatersfitboundsupdater [245]: ../reducers/map-state.md#mapstateupdaterstoggleperspectiveupdater [246]: ../reducers/map-state.md#mapstateupdaterstogglesplitmapupdater [247]: ../reducers/ui-state.md#uistateupdaterstogglesplitmapupdater [248]: ../reducers/vis-state.md#visstateupdaterstogglesplitmapupdater [249]: ../reducers/map-state.md#mapstateupdatersupdatemapupdater [250]: ../reducers/vis-state.md#visstateupdaterslayercoloruichangeupdater [251]: ../reducers/ui-state.md#uistateupdaterssetexportmapformatupdater ================================================ FILE: docs/api-reference/advanced-usages/custom-initial-state.md ================================================ # Custom reducer initial state For advanced users who wish to modify the initial state of kepler.gl reducer, kepler.gl provides a reducer `initialState` function. `Reducer.initialState` will take the custom state and return a new reducer function. `initialState` is only meant to be called where the store is initialized. The custom state passed in will be shallow merged with the default `initialState`. Here is an example modify `uiState` `initialState` to hide side panel, and selectively display map control button. ```js import {combineReducers} from 'redux'; import {keplerGlReducer} from '@kepler.gl/reducers'; const customizedKeplerGlReducer = keplerGlReducer .initialState({ uiState: { // hide side panel to disallow user customize the map readOnly: true, // customize which map control button to show mapControls: { visibleLayers: { show: false }, mapLegend: { show: true, active: true }, toggle3d: { show: false }, splitMap: { show: false } } } }); const reducers = combineReducers({ keplerGl: customizedKeplerGlReducer, app: appReducer }); ``` For full implementation, take a look at the [custom reducer example][custom-reducer-example] [custom-reducer-example]: https://github.com/keplergl/kepler.gl/tree/master/examples/custom-reducer ================================================ FILE: docs/api-reference/advanced-usages/custom-map-styles.md ================================================ # Using kepler.gl with basemap services other than Mapbox By default, kepler.gl uses mapbox-gl.js to render its base maps, displayed in [map style selection panel](https://github.com/keplergl/kepler.gl/blob/master/docs/user-guides/f-map-styles/1-base-map-styles.md). ![base map panel](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/f-map-styles-1.png "base map panel") You can custom kepler.gl to use other base map services, by passing in style.json written in [Mapbox GL Style Spec](https://docs.mapbox.com/mapbox-gl-js/style-spec/). With custom style.json kepler.gl can render base map independent of mapbox vector tile service. For instance. there is a example [style.json](https://raw.githubusercontent.com/heshan0131/kepler.gl-data/master/style/basic.json). It points to the tile server described in the `sources` field. ```json "sources": { "openmaptiles": { "url": "https://api.maptiler.com/tiles/v3/tiles.json?key=xxxx", "type": "vector" } } ``` ### 1. The `mapStyle` object. Your custom map style should be an object as below ```js // custom map style { id: 'voyager', label: 'Voyager', url: 'https://api.maptiler.com/maps/voyager/style.json?key=xxxx', icon: 'https://api.maptiler.com/maps/voyager/256/0/0/0.png?key=xxx', layerGroups: [ { slug: 'label', filter: ({id}) => id.match(/(?=(label|place-|poi-))/), defaultVisibility: true }, { slug: 'road', filter: ({id}) => id.match(/(?=(road|railway|tunnel|street|bridge))(?!.*label)/), defaultVisibility: true } ] } ``` __style properties__ - `id` (String, required) unique string. - `label` (String, required) name to be displayed in map style selection panel - `url` (String, required) a url pointing to the map style json object written in [Mapbox GL Style Spec](https://docs.mapbox.com/mapbox-gl-js/style-spec/). - `icon` (String, optional) image icon of the style, it can be a url, or an [image data url](https://flaviocopes.com/data-urls/#how-does-a-data-url-look) - `layerGroups` (Array, optional) Supply your own `layerGroups` to override default for more accurate layer grouping. When `undefined` kepler.gl will attempt to group layers of your style based on its `id` naming convention and use it to allow toggle visibility of [base map layers](https://github.com/keplergl/kepler.gl/blob/master/docs/user-guides/f-map-styles/2-map-layers.md). ### 2. Two Ways to supply kepler.gl with custom base map styles #### Option 1. `mapStyles` prop Pass `mapStyles` and `mapStylesReplaceDefault` prop to `KeplerGl` component. ```js const mapStyles = [{ id: 'voyager', label: 'Voyager', url: 'https://api.maptiler.com/maps/voyager/style.json?key=xxxx', icon: 'https://api.maptiler.com/maps/voyager/256/0/0/0.png?key=xxx' }]; const App = () => ( ) ``` - `mapStyles` (Array) array of custom map styles. - `mapStylesReplaceDefault` (Boolean) pass `true` if you want to replace all default kepler.gl base map options. - `mapboxApiAccessToken`. Optional if `mapStylesReplaceDefault` is `true` and your `mapStyles` does not use Mapbox services #### Option 2. Reducer `initialState` Pass custom `mapStyles` to kepler.gl `mapStyle` reducer using the `initialState` plugin. And set default style by passing `styleType`. This method is demoed in the example app [Custom Map Style](https://github.com/keplergl/kepler.gl/tree/master/examples/custom-map-style) ```js const customizedKeplerGlReducer = keplerGlReducer.initialState({ mapStyle: { mapStyles: { voyager: { id: 'voyager', label: 'Voyager', url: 'https://api.maptiler.com/maps/voyager/style.json?key=xxxx', icon: 'https://api.maptiler.com/maps/voyager/256/0/0/0.png?key=xxx' }, terrain: { id: 'terrain', label: 'Outdoor', url: 'https://api.maptiler.com/maps/outdoor/style.json?key=xxx', icon: 'https://openmaptiles.org/img/styles/terrain.jpg', layerGroups: [ { slug: 'label', filter: ({id}) => id.match(/(?=(label|place-|poi-))/), defaultVisibility: true }, { slug: 'road', filter: ({id}) => id.match(/(?=(road|railway|tunnel|street|bridge))(?!.*label)/), defaultVisibility: true } ] } }, // Set initial map style styleType: 'voyager' } }); ``` - `mapStyles` (Object) - `id` as key, and `style` as value. - `styleType` (string) - Initial map style. __Which option is for me?__ If you want to replace all basemap styles, we recommends __Option 2__. So you can also set the initial style with `styleType`. If you are adding more options as basemaps, __Option 1__ is ideal. ### 3. `mapboxApiAccessToken` If your map styles are not using Mapbox services, and you replaced all kepler.gl default map styles. `mapboxApiAccessToken` will not be required in `KeplerGl` component. #### 4. `DEFAULT_LAYER_GROUPS` If `layerGroups` is not suppied, kepler.gl uses the default layer groups below. ```js export const DEFAULT_LAYER_GROUPS = [ { slug: 'label', filter: ({id}) => id.match(/(?=(label|place-|poi-))/), defaultVisibility: true }, { slug: 'road', filter: ({id}) => id.match(/(?=(road|railway|tunnel|street|bridge))(?!.*label)/), defaultVisibility: true }, { slug: 'border', filter: ({id}) => id.match(/border|boundaries/), defaultVisibility: false }, { slug: 'building', filter: ({id}) => id.match(/building/), defaultVisibility: true }, { slug: 'water', filter: ({id}) => id.match(/(?=(water|stream|ferry))/), defaultVisibility: true }, { slug: 'land', filter: ({id}) => id.match(/(?=(parks|landcover|industrial|sand|hillshade))/), defaultVisibility: true }, { slug: '3d building', filter: () => false, defaultVisibility: false } ]; ``` #### 5. Geocoder #### ================================================ FILE: docs/api-reference/advanced-usages/custom-mapbox-host.md ================================================ ### 1. Configuring Mapbox API hostname The KeplerGL component accepts an optional parameter `mapboxApiUrl` to override the default value of `https://api.mapbox.com`. ```js ``` ### 2. Overriding the default MapStyles The default MapStyles KeplerGL uses might not be accessible to you, in this case you will need to provide MapStyle overrides. During construction of your component: ```js this.token = ''; this.apiHost = "https://api.mapbox.cn"; this.mapStyles = [ { id: 'dark', label: 'Dark Streets 9', url: 'mapbox://styles/mapbox/dark-v9', icon: `${this.apiHost}/styles/v1/mapbox/dark-v9/static/-122.3391,37.7922,9.19,0,0/400x300?access_token=${this.token}&logo=false&attribution=false`, layerGroups: [] // DEFAULT_LAYER_GROUPS }, { id: 'light', label: 'Light Streets 9', url: 'mapbox://styles/mapbox/light-v9', icon: `${this.apiHost}/styles/v1/mapbox/light-v9/static/-122.3391,37.7922,9.19,0,0/400x300?access_token=${this.token}&logo=false&attribution=false`, layerGroups: [] // DEFAULT_LAYER_GROUPS } ]; ``` and In render: ```js ``` ================================================ FILE: docs/api-reference/advanced-usages/forward-actions.md ================================================ # Forward Dispatch Actions One of the biggest challenge of using local state is to dispatch actions that only modify a specific instance of the state. For instance, if we have 2 kepler.gl components in our app, one with id `foo` other with id `bar`. Our keplerGl reducer is going to be `keplerGl: {foo: …, bar …}`. When `foo` dispatches an action, it only needs to update the state of `foo`, hence we need a way to decorate the action that the root reducer only pass it down to instance reducer `foo`. To solve this, we provide a set of forward functions called `wrapTo`, `forwardTo` and `unwrap`. `wrapTo` wraps an action payload into an forward action by adding an address `_addr_` and a `_forward_` signature to its `meta`. The root reducer will check if the given action has that address and if so, `unwrap` the action and pass it to the correct instance reducer. **Here are the different options to dispatch forwarded actions to kepler.gl reducer.** ### 1. Use `forwardTo` to add a dispatch function to your component You can add a dispatch function to your component that dispatches actions to a specific kepler.gl instance using connect. ```js // component import {KeplerGl} from '@kepler.gl/components'; import {connect} from 'react-redux'; // import action and forward dispatcher import {toggleFullScreen, forwardTo} from '@kepler.gl/actions'; const MapContainer = props => (
) const mapStateToProps = state => state const mapDispatchToProps = (dispatch, props) => ({ dispatch, keplerGlDispatch: forwardTo(‘foo’, dispatch) }); export default connect( mapStateToProps, mapDispatchToProps )(MapContainer); ``` - 2. Use `wrapTo` to wrap action creator You can also simply wrap an action into a forward action with the `wrapTo` helper ```js // component import {KeplerGl} from '@kepler.gl/components'; // action and wrapper import {toggleFullScreen, wrapTo} from '@kepler.gl/actions'; // create a function to wrapper action payload to 'foo' const wrapToMap = wrapTo('foo'); const MapContainer = ({dispatch}) => (
); ``` ================================================ FILE: docs/api-reference/advanced-usages/reducer-plugin.md ================================================ # Reducer Plugin For advanced users, who want to add additional action handler to kepler.gl reducer, kepler.gl provides a reducer plugin function. `Reducer.plugin` will take additional action handlers and return a new reducer function. Plugin is only meant to be called where the store is initialized. The state passed into the additional action handler is the instance state. `Reducer.plugin` will allow advanced users to extend the kepler.gl reducer behavior. Here is an example of adding an additional action `HIDE_AND_SHOW_SIDE_PANEL` handler that modifies the `uiState`. ```js import {combineReducers} from 'redux'; import keplerGlReducer from '@kepler.gl/reducers'; const customizedKeplerGlReducer = keplerGlReducer .plugin({ HIDE_AND_SHOW_SIDE_PANEL: (state, action) => ({ ...state, uiState: { ...state.uiState, readOnly: !state.uiState.readOnly } }) }); const reducers = combineReducers({ keplerGl: customizedKeplerGlReducer, app: appReducer }); ``` Note that, reducer plugin **should not be used to override default kepler.gl actions** The following code will not change `SET_FILTER`, because plugins are handled after default actions. ```js const customizedKeplerGlReducer = keplerGlReducer .plugin({ [ActionTypes.SET_FILTER]: (state, action) => state }); ``` For full implementation, take a look at the [custom reducer example][custom-reducer-example] [custom-reducer-example]: https://github.com/keplergl/kepler.gl/tree/master/examples/custom-reducer ================================================ FILE: docs/api-reference/advanced-usages/replace-ui-component.md ================================================ # Replace UI Component with Component Dependency Injection To allow customize a child component, the library author usually has to pass the child component down as a prop from top of the component tree. This approach will work for component that are relatively small, but it won’t scale for kepler.gl because it has hundreds of child components. To give user the flexibility to render certain component differently. Kepler.gl has a dependency injection system that allows user to inject custom components to kepler.gl UI replacing the default ones at bootstrap time. All you need to do is to create a component factory for the one you wish to replace, import the original component factory and call `injectComponents` at where `KeplerGl` is mounted. `injectComponents` will return a new `KeplerGl` component instance that renders the custom child component. This way we don’t have to keep track of hundreds of component as props and pass them all the way down. Dependency injection only happens once when `keplerGl` component is imported. ## Factory For each high level component in kepler.gl, we export a `factory`. A `factory` is a function that takes a set of `dependencies` and return a component instance. In this example below, the `MapContainerFactory` takes `MapPopover` and `MapControl` as dependencies and returns the `MapContainer` component instance. Not all components are exported as factories in kepler.gl at the moment, we are still testing this feature. ```js import MapPopoverFactory from 'components/map/map-popover'; import MapControlFactory from 'components/map/map-control'; function MapContainerFactory(MapPopover, MapControl) { return class MapContainer extends Component { render() { return (
); } } } MapContainerFactory.deps = [MapPopoverFactory, MapControlFactory]; ``` ## Recipes A recipe is an array of default factory, and the one to replace it. `[defaultFactory, customFactory]`. To replace default component, user can import the existing component factory, call `injectComponents` and pass in the new recipe to get a new `KeplerGl` instance. ### Inject Components In kepler.gl, we create the app injector by calling provide with an array of default recipes. We then export a `injectComponents` function that user can call to inject a different recipe and returns a new kepler.gl instance. Here is an example of how to use `injectComponents` to replace default `PanelHeader`. ```js import {injectComponents, PanelHeaderFactory} from '@kepler.gl/components'; // define custom header const CustomHeader = () => (
My kepler.gl app
); // create a factory const myCustomHeaderFactory = () => CustomHeader; // Inject custom header into Kepler.gl, const KeplerGl = injectComponents([ [PanelHeaderFactory, myCustomHeaderFactory] ]); // render KeplerGl, it will render your custom header const MapContainer = () => ; ``` ## Pass custom component props `injectComponents` allows user to render custom component, however, they usually also want to pass additional props to the customized component which current component injector doesn’t support. To enable passing additional props, we implemented a `withState`helper that passes additional props to the customized component. `withState` takes 3 arguments: `lenses`, `mapStateToProps` and `actionCreators`, They allows user to pass in kepler.gl instance state, state from other part of the app, and custom actions. - `lense` - A getter function to get a piece of kepler.gl subreducer state. Kepler.gl exports lenses for all its sub-reducers. For instance when pass `mapStateLens` to `withState`, the component will receive `mapState` of current kepler.gl instance as a prop. - `mapStateToProps` - A wild card to play. You can pass a `mapStateToProps` function to get the state from any part of the app. If the lenses aren’t enough, use `mapStateToProps`. - `actions` - action creators that will be passed to `bindActionCreators`. Here is an example of using `withState` helper to add reducer state and actions to customized component as additional props. ```js import {withState, injectComponents, PanelHeaderFactory} from '@kepler.gl/components'; import {visStateLens} from '@kepler.gl/reducers'; // custom action wrap to mounted instance const addTodo = (text) => ({ type: 'ADD_TODO', text }); // define custom header const CustomHeader = ({visState, todos, addTodo}) => (
addTodo('say hello')}>{`${Object.keys(visState.datasets).length} dataset loaded`}
); // now CustomHeader will receive `visState` `todos` and `addTodo` as additional props. const myCustomHeaderFactory = () => withState( // subreducer lenses [visStateLens], // mapStateToProps state => ({ todos: state.todos }), // actions {addTodo} )(CustomHeader); ``` ================================================ FILE: docs/api-reference/advanced-usages/saving-loading-w-schema.md ================================================ # Saving and Loading Maps with Schema Manager ![Processor and Schema][processor-schema] Kelper.gl provides a schema manager to save and load maps. It converts current map data and configuration into a smaller JSON blob. You can then load that JSON blob into an empty map by passing it to `addDataToMap`. The reason kepler.gl provides a Schema manager is to make it easy for users to connect the kepler.gl client app to any database, saving map data / config and later load it back. With the schema manager, a map saved in an older version can still be parsed and loaded with the latest kepler.gl library. ### Save map Pass the **instanceState** to `SchemaManager.save()` - `SchemaManager.save()` will output a JSON blob including data and config. Under the hood, `SchemaManager.save()` calls `SchemaManager.getDatasetToSave()` and `SchemaManager.getConfigToSave()` - `SchemaManager.getDatasetToSave()` will output an array of dataset. - `SchemaManager.getConfigToSave()` will output a JSON blob of the current config. In the example blow, `foo` is the id of the KeplerGl instance to be save. ```js import KeplerGlSchema from '@kepler.gl/schemas'; const mapToSave = KeplerGlSchema.save(state.keplerGl.foo); // mapToSave = {datasets: [], config: {}, info: {}}; const dataToSave = KeplerGlSchema.getDatasetToSave(state.keplerGl.foo); // dataToSave = [{version: '', data: {id, label, color, allData, fields}}] const configToSave = KeplerGlSchema.getConfigToSave(state.keplerGl.foo); // configToSave = {version: '', config: {}} ``` ### Load map Pass saved data and config to `SchemaManager.load()` - `SchemaManager.load()` will parsed saved config and data, apply version control, the output can then be passed to `addDataToMap` directly. Under the hood, `SchemaManager.load()` calls `SchemaManager.parseSavedData()` and `SchemaManager.parseSavedConfig()` - `SchemaManager.parseSavedData()` will output an array of parsed dataset. - `SchemaManager.parseSavedConfig()` will output a JSON blob of the parsed config. ```js import KeplerGlSchema from '@kepler.gl/schemas'; import {addDataToMap} from '@kepler.gl/actions'; const mapToLoad = KeplerGlSchema.load(savedDatasets, savedConfig); // mapToLoad = {datasets: [], config: {}}; this.props.dispatch(addDataToMap(mapToLoad)); ``` ### Match config with another dataset Often times, people want to keep a map config as template, then load it with different datasets. To match a config with a different dataset, you need to make sure `data.id` in the new dataset matches the old one. ```js import KeplerGlSchema from '@kepler.gl/schemas'; import {addDataToMap} from '@kepler.gl/actions'; // save current map data and config const {datasets, config} = KeplerGlSchema.save(state.keplerGl.foo); // mapToLoad = {datasets: [], config: {}}; // receive some new data const newData = someNewData; // newData = [{rows, fields}] // match id with old datasets const newDatasets = newData.map((d, i) => ({ version: datasets[i].version, data: { ...datasets[i].data, allData: d.rows, fields: d.fields } })); // load config with new datasets const mapToLoad = KeplerGlSchema.load(newDatasets, config); this.props.dispatch(addDataToMap(mapToLoad)); ``` [processor-schema]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/api_load-save.png ================================================ FILE: docs/api-reference/advanced-usages/using-updaters.md ================================================ # Using Updaters Updaters are state transition functions that mapped to actions. One action can map to multiple state updaters, each belongs to a subreducer. This action-updater pattern allows a user to import a specific action updater in the app's root reducer and use it to directly modify kepler.gl’s state without dispatching the action. This will give user a lot of freedom to control over kepler.gl's state transition. To achieve the same result with `togglePerspective` updating kepler.gl's map perspective mode. You can import and dispatch kepler.gl action `togglePerspective`: ```js // action and forward dispatcher import {togglePerspective} from '@kepler.gl/actions'; const MapContainer = ({dispatch}) => (
); ``` or import the corresponding updater `mapStateUpdaters.togglePerspectiveUpdater` and call it inside the root reducer. The example below demos how to add a button outside kepler.gl component, and update the map perspective when click it. ```js import keplerGlReducer, {mapStateUpdaters} from '@kepler.gl/reducers'; // Root Reducer const reducers = combineReducers({ keplerGl: keplerGlReducer, app: appReducer }); const composedReducer = (state, action) => { switch (action.type) { case 'CLICK_BUTTON': return { ...state, keplerGl: { ...state.keplerGl, foo: { ...state.keplerGl.foo, mapState: mapStateUpdaters.togglePerspectiveUpdater( t state.keplerGl.foo.mapState ) } } }; } return reducers(state, action); }; export default composedReducer; ``` ================================================ FILE: docs/api-reference/cloud-providers/README.md ================================================ # Cloud Providers The kepler.gl application does not have a backend, however it offers integration point for optional commercial backends. Each backend can integrate with kepler by adding a "cloud provider" object to kepler's global list of cloud providers. These objects must implement certain minimal set of methods, and can optionally immplement others, depending on the capability of the backend. The set of methods available for cloud providers to implement is subject to change as new features are added to the front-end. ## Cloud Provider Object A "cloud provider" object provides: - a name and an icon - any service specific methods (such as `uploadFile`) - a set of oauth2 methods to plug into the authentication flow and get access tokens Cloud-providers providers can implement the following properties | Field/method | Description | Required? | | --- | --- | --- | | `name` | Name of the provider | required | | `displayName` | Display name | | `icon` | React Element to render as Icon | | `thumbnail` | Size of the thumbnail image of the map that required by the provider | | `hasPrivateStorage` | To participate in kepler's build-in private map saving function | required | | `hasSharingUrl` | To participate in kepler's build-in share map via URL function | required | | `getShareUrl` | To show user the shared Url of the map | | `getMapUrl` | To update browser location once a map has been saved / loaded | | `getAccessToken` | To participate in kepler's built-in oauth login routes | | `getUserName` | To display user name of the logged in user | | `login` | Method called to perform user login | required | | `logout` | Method called to logout an user | required | | `uploadMap` | Method called to upload map to storage | required | | `listMaps` | Method called to load a catalog of maps saved by the current user | required | | `downloadMap` | MEthod called to download a specific map | required | ## Adding a new Cloud Provider An instance of the provider is added to array of cloud providers in the file `src/cloud-providers/providers.js` then passed to kepler.gl demo app. An example provider: [Dropbox Provider](https://github.com/keplergl/kepler.gl/blob/master/examples/demo-app/src/cloud-providers/dropbox-provider.js) ```js import {Provider} from '@kepler.gl/cloud-providers'; class MyProvider extends Provider { constructor() { this.name = 'foo'; this.displayName = 'My Provider'; } // ... other required methods below } const myProvider = new MyProvider(); const App = () => ``` ## Cloud Provider Instance Fields and Methods See [Cloud Provider API](./cloud-provider.md) ================================================ FILE: docs/api-reference/cloud-providers/cloud-provider.md ================================================ ### Table of Contents - [Provider][1] - [downloadMap][4] - [getAccessToken][7] - [getMapUrl][8] - [getShareUrl][10] - [getUserName][12] - [hasPrivateStorage][13] - [hasSharingUrl][14] - [listMaps][15] - [login][17] - [logout][19] - [uploadMap][21] - [MapResponse][23] - [Viz][25] ## Provider The default provider class **Parameters** - `props` **[object][27]** - `props.name` **[string][28]** - `props.displayName` **[string][28]** - `props.icon` **ReactElement** React element - `props.thumbnail` **[object][27]** thumbnail size object - `props.thumbnail.width` **[number][29]** thumbnail width in pixels - `props.thumbnail.height` **[number][29]** thumbnail height in pixels **Examples** ```javascript const myProvider = new Provider({ name: 'foo', displayName: 'Foo Storage' icon: Icon, thumbnail: {width: 300, height: 200} }) ``` ### downloadMap This method will be called when user select a map to load from the storage map viewer **Parameters** - `loadParams` **any** the loadParams property of each visualization object **Examples** ```javascript async downloadMap(loadParams) { const mockResponse = { map: { datasets: [], config: {}, info: { app: 'kepler.gl', created_at: '' title: 'test map', description: 'Hello this is my test dropbox map' } }, // pass csv here if your provider currently only support save / load file as csv format: 'keplergl' }; return downloadMap; } ``` Returns **[MapResponse][30]** the map object containing dataset config info and format option ### getAccessToken This method is called to determine whether user already logged in to this provider Returns **[boolean][31]** true if a user already logged in ### getMapUrl This method is called by kepler.gl demo app to pushes a new location to history, becoming the current location. **Parameters** - `fullURL` **[boolean][31]** Whether to return the full url with domain, or just the location (optional, default `true`) Returns **[string][28]** mapUrl ### getShareUrl This method is called after user share a map, to display the share url. **Parameters** - `fullUrl` **[boolean][31]** Whether to return the full url with domain, or just the location (optional, default `false`) Returns **[string][28]** shareUrl ### getUserName This method is called to get the user name of the current user. It will be displayed in the cloud provider tile. Returns **[string][28]** true if a user already logged in ### hasPrivateStorage Whether this provider support upload map to a private storage. If truthy, user will be displayed with the storage save icon on the top right of the side bar. Returns **[boolean][31]** ### hasSharingUrl Whether this provider support share map via a public url, if truthy, user will be displayed with a share map via url under the export map option on the top right of the side bar Returns **[boolean][31]** ### listMaps This method is called to get a list of maps saved by the current logged in user. **Examples** ```javascript async listMaps() { return [ { id: 'a', title: 'My map', description: 'My first kepler map', imageUrl: 'http://', udpatedAt: 1582677787000, privateMap: false, loadParams: {} } ]; } ``` Returns **[Array][32]<[Viz][33]>** an array of Viz objects ### login This method will be called when user click the login button in the cloud provider tile. Upon login success, `onCloudLoginSuccess` has to be called to notify kepler.gl UI **Parameters** - `onCloudLoginSuccess` **[function][34]** callbacks to be called after login success ### logout This method will be called when user click the logout button under the cloud provider tile. Upon login success, `onCloudLoginSuccess` has to be called to notify kepler.gl UI **Parameters** - `onCloudLogoutSuccess` **[function][34]** callbacks to be called after logout success ### uploadMap This method will be called to upload map for saving and sharing. Kepler.gl will package map data, config, title, description and thumbnail for upload to storage. With the option to overwrite already saved map, and upload as private or public map. **Parameters** - `param` **[Object][27]** - `param.mapData` **[Object][27]** the map object - `param.mapData.map` **[Object][27]** {datasets. config, info: {title, description}} - `param.mapData.thumbnail` **[Blob][35]** A thumbnail of current map. thumbnail size can be defined by provider by this.thumbnail - `param.options` **[Object][27]** (optional, default `{}`) - `param.options.overwrite` **[boolean][31]** whether user choose to overwrite already saved map under the same name - `param.options.isPublic` **[boolean][31]** whether user wish to share the map with others. if isPublic is truthy, kepler will call this.getShareUrl() to display an URL they can share with others ## MapResponse The returned object of `downloadMap`. The response object should contain: datasets: \[], config: {}, and info: {} each dataset object should be {info: {id, label}, data: {...}} to inform how kepler should process your data object, pass in `format` Type: [Object][27] ### Properties - `map` **[Object][27]** - `map.datasets` **[Array][32]<[Object][27]>** - `map.config` **[Object][27]** - `map.info` **[Object][27]** - `format` **[string][28]** one of 'csv': csv file string, 'geojson': geojson object, 'row': row object, 'keplergl': datasets array saved using KeplerGlSchema.save ## Viz Type: [Object][27] ### Properties - `id` **[string][28]** An unique id - `title` **[string][28]** The title of the map - `description` **[string][28]** The description of the map - `imageUrl` **[string][28]** The imageUrl of the map - `lastModification` **[number][29]** An epoch timestamp in milliseconds - `privateMap` **[boolean][31]** Optional, whether if this map is private to the user, or can be accessed by others via URL - `loadParams` **any** A property to be passed to `downloadMap` [1]: #provider [2]: #parameters [3]: #examples [4]: #downloadmap [5]: #parameters-1 [6]: #examples-1 [7]: #getaccesstoken [8]: #getmapurl [9]: #parameters-2 [10]: #getshareurl [11]: #parameters-3 [12]: #getusername [13]: #hasprivatestorage [14]: #hassharingurl [15]: #listmaps [16]: #examples-2 [17]: #login [18]: #parameters-4 [19]: #logout [20]: #parameters-5 [21]: #uploadmap [22]: #parameters-6 [23]: #mapresponse [24]: #properties [25]: #viz [26]: #properties-1 [27]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object [28]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String [29]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number [30]: #mapresponse [31]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean [32]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array [33]: #viz [34]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function [35]: https://developer.mozilla.org/docs/Web/API/Blob ================================================ FILE: docs/api-reference/components/README.md ================================================ # Components ...Coming soon ================================================ FILE: docs/api-reference/custom-theme/README.md ================================================ # Custom Theme You can pass theme name or object used to customize Kepler.gl style. Kepler.gl provide an `'light'` theme besides the default 'dark' theme. When pass in a theme object Kepler.gl will use the value passed as input to overwrite values from [theme](https://github.com/keplergl/kepler.gl/blob/master/src/styles/src/base.ts). ```js import KeplerGl from '@kepler.gl/components'; const Map = props => ( ); ``` ### Available Themes | theme | | | ------- | ------- | | `dark` (default) | ![Screen Shot 2020-03-11 at 2 11 45 PM](https://user-images.githubusercontent.com/3605556/76464370-78c13080-63a2-11ea-977e-9678a25580f9.png) | | `light` | ![Screen Shot 2020-03-11 at 2 10 15 PM](https://user-images.githubusercontent.com/3605556/76464360-74951300-63a2-11ea-82fe-3d055dc0b8dd.png) | | `base` | ![Screen Shot 2020-03-11 at 2 10 49 PM](https://user-images.githubusercontent.com/3605556/76464366-78289a00-63a2-11ea-944b-e5a9208bacde.png) | ================================================ FILE: docs/api-reference/ecosystem.md ================================================ ## Ecosystem The diagram below represents the data flow. Note that in most cases, you don't have to worry about action creators, forward dispatcher and state updaters, as they are handled under-the-hood by kepler.gl ![Data flow][data-flow] ## Component The Kepler.gl component will call redux connect under the hood, and dispatch to the corresponding reducer instance. To allow mounting of multiple instance of kepler.gl components in the same app, we implemented a local selector with forward dispatch system. The local selector will pass down the knowledge where the state of this instance lives, and the forward dispatch system will pass down a dispatch function that knows to dispatch action to the correct reducer instance. __Each kepler.gl component instance needs to have an unique id__. Read more about [Component][components]. ## Reducer and Forward Dispatcher ![Forward Dispatcher][forward-dispatcher] The kepler.gl root reducer that user mounted in their app is in fact a wrapper reducer that stored the child state and update them based on forwarded actions. If An action is not a forwarded action, it pass down to all child reducers. When a KeplerGl component instance is mounted with the id `foo`, the wrapper reducer will add a kepler.gl local state in the root state at key `foo`. One of the biggest challenge of using local state is to dispatch actions that only modify a specific local state. For instance, if we have 2 kepler.gl components in our app, one with id `foo` other with id `bar`. Our keplerGl reducer is going to be `keplerGl: {foo: …, bar …}`. When foo dispatches an action, it only needs to update the state of foo, we need a way to decorate the action that the root reducer only pass it down to subreducer `foo`. To solve this, kepler.gl has a forward dispatching system. It consists of a set of forward functions including `wrapTo`, `forwardTo` and `unwrap`. `wrapTo` wraps an action payload into an forward action by adding an address `_addr_` and a `_forward_` signature to its meta. Each kepler.gl component receives a forward dispatcher as a prop, which dispatches a forwarded action to the root reducer. The root reducer will check if the given action has that address and if so, unwrap the action and pass it to the child reducer. Read more about [Reducers][reducers]. ## Actions and Updaters Actions in reducers are mapped to state transition functions. `UPDATE_MAP` is mapped to `updateMapUpdater`. An updater is the backbone of the redux reducer. It is a pure function that takes the previous state and an action, and returns the next state. `(oldState, action) => newState`. It describes how the state should transition upon receiving that action. here is a snippet of the map state reducer in kepler.gl. ```js /* Action Handlers */ const actionHandler = { [ActionTypes.FIT_BOUNDS]: fitBoundsUpdater, [ActionTypes.TOGGLE_PERSPECTIVE]: togglePerspectiveUpdater }; /* Reducer */ export default handleActions(actionHandler, INITIAL_MAP_STATE); ``` This pattern allows a user to import a specific action updater in the app's root reducer and use it to directly modify kepler.gl’s state without dispatching the action. This will give user a lot of freedom to control over kepler.gl's state transition. Read more about [Actions and Updaters][actions-updaters]. ## Processors and Schema Manager ![Processor and Schema][processor-schema] Processors and schema manager are useful helpers to get data in and out of kepler.gl. You can use `processCsvData(csv)` and `processGeojson(geojson)` to parse csv or geoJson file and pass it to `addDataToMap()` action. To save and reload the current map, you can call `KeplerGlSchema.save()` and pass it the instant state. It will return a json output containing map data and config. Pass this json file to `processKeplerglJSON()` and then `addDataToMap()` will reproduce the same map. Read more about [Processors][processors] and [Schema Manager][schemas]. [basic-usage]: ./basic-usage.md [advanced-usage]: ./advanced-usage.md [components]: components/README.md [reducers]: reducers/README.md [actions-updaters]: actions/README.md [processors]: processors/README.md [schemas]: schemas/README.md [data-flow]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/api_data-flow.png [forward-dispatcher]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/api_forward-dispatch.png [processor-schema]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/api_load-save.png ================================================ FILE: docs/api-reference/get-started.md ================================================ ## Get Started ### Installation Use Node v18 and above, older node versions have not been tested ```sh npm install --save kepler.gl @kepler.gl/components @kepler.gl/reducers ``` ### Get Mapbox Token Kepler.gl is built on top of [Mapbox GL](https://www.mapbox.com). A mapbox account and an access token are needed to use kepler.gl in your app. Get a [Mapbox Access Token](https://www.mapbox.com/help/define-access-token/) at mapbox.com. ### Basic Usage ![Basic Usage][basic-usage] #### 0. Working Template Check full example on [Github](https://github.com/keplergl/kepler.gl/tree/master/examples/get-started). ```js import * as React from "react"; import ReactDOM from "react-dom/client"; import document from "global/document"; import { applyMiddleware, combineReducers, compose, createStore } from "redux"; import { connect, Provider } from "react-redux"; import keplerGlReducer, { enhanceReduxMiddleware } from "@kepler.gl/reducers"; import KeplerGl from "@kepler.gl/components"; import AutoSizer from "react-virtualized/dist/commonjs/AutoSizer"; const reducers = combineReducers({ keplerGl: keplerGlReducer.initialState({ uiState: { readOnly: false, currentModal: null, }, }), }); const middleWares = enhanceReduxMiddleware([ // Add other middlewares here ]); const enhancers = applyMiddleware(...middleWares); const initialState = {}; const store = createStore(reducers, initialState, compose(enhancers)); const App = () => (
{({ height, width }) => ( )}
); const mapStateToProps = (state) => state; const dispatchToProps = (dispatch) => ({ dispatch }); const ConnectedApp = connect(mapStateToProps, dispatchToProps)(App); const Root = () => ( ); export default Root; ``` #### 1. Mount reducer Kepler.gl uses [Redux](https://redux.js.org/) to manage its internal state, along with [react-palm](https://github.com/btford/react-palm) middleware to handle side effects. Mount kepler.gl reducer in your store, apply `taskMiddleware`. ```js import keplerGlReducer from '@kepler.gl/reducers'; import {createStore, combineReducers, applyMiddleware} from 'redux'; import {taskMiddleware} from 'react-palm/tasks'; const reducer = combineReducers({ // <-- mount kepler.gl reducer in your app keplerGl: keplerGlReducer, // Your other reducers here app: appReducer }); // create store const store = createStore(reducer, {}, applyMiddleware(taskMiddleware)); ``` If you mount `keplerGlReducer` in another address instead of `keplerGl`, or it is not mounted at root of your reducer, you will need to specify the path to it when you mount the component with the `getState` prop. #### 2. Mount component ```js import KeplerGl from '@kepler.gl/components'; const Map = props => ( ); ``` #### 3. Add data to map In order to interact with a kepler.gl instance and add new data to it, you can dispatch the __`addDataToMap`__ action from anywhere inside your app. It adds dataset(s) to a kepler.gl instance and updates the full configuration (mapState, mapStyle, visState). Read more about [addDataToMap](./actions/actions.md#adddatatomap) ```js import {addDataToMap} from '@kepler.gl/actions'; this.props.dispatch( addDataToMap({ // datasets datasets: { info: { label: 'Sample Taxi Trips in New York City', id: 'test_trip_data' }, data: sampleTripData }, // option option: { centerMap: true, readOnly: false }, // config config: { mapStyle: {styleType: 'light'} } }) ); ``` [basic-usage]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/api_basic-usage.png ================================================ FILE: docs/api-reference/localization/README.md ================================================ # Localization Kepler.gl supports localization through [react-intl]. Locale is determined by `uiState.locale` value. Current supported languages are: | locale code | Language | Default? | |-------------|------------|----------| | en | English | default | | fi | Finnish | | | pt | Portuguese | | | ca | Catalan | | | es | Spanish | | | ja | Japanese | | | cn | Chinese | | | ru | Русский | | ## Changing default language By default the first language is English `en`. The default language can be changed by giving locale value to uiState: ```js import {combineReducers} from 'redux'; import keplerGlReducer from '@kepler.gl/reducers'; import {LOCALE_CODES} from '@kepler.gl/localization'; const customizedKeplerGlReducer = keplerGlReducer.initialState({ uiState: { // use Finnish locale locale: LOCALE_CODES.fi } }); const reducers = combineReducers({ keplerGl: customizedKeplerGlReducer, app: appReducer }); ``` ## Adding new language Let's say we want to add the Swedish language to kepler.gl. Easiest way to add translation of new language is to follow these 3 steps: - Find out the [language code][language-codes] for Swedish: `sv` - Add new translation file `src/localization/translations/sv.js` by copying `src/localization/translations/en.js` and translating the strings - Update _LOCALES_ in `src/localization/locales.js` to include new language translation: ```javascript export const LOCALES = { en : 'English', fi : 'Suomi', pt: 'Português', // add Swedish language sv: 'Svenska' } ``` ## Modify default translation or add new translation the `localeMessages` prop of `KeplerGl` takes additional translations and merge with default translation. #### Example 1. Update default translation To update the english translation of `layerManager.addData`, pass `localeMessages` like this. ```javascript const localeMessages = { en: { ['layerManager.addData']: 'Add Data to Layer' } }; const App = () => ( ); ``` #### Example 2. Pass additional translation Sometimes together with dependency injection, you might need to add additional translations to the customized component. For example, adding an additional `settings` panel in the side panel, you will need to provide a translation for the panel name assigned to `sidebar.panels.settings` ```javascript const localeMessages = { en: { ['sidebar.panels.settings']: 'Settings' } }; const App = () => ( ); ``` [react-intl]: https://github.com/formatjs/react-intl [language-codes]: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes ================================================ FILE: docs/api-reference/processors/README.md ================================================ # Processors ...Coming soon ================================================ FILE: docs/api-reference/processors/processors.md ================================================ ### Table of Contents - [getFieldsFromData](#getfieldsfromdata) - [processCsvData](#processcsvdata) - [processGeojson](#processgeojson) - [processKeplerglJSON](#processkeplergljson) - [processRowObject](#processrowobject) ## getFieldsFromData Analyze field types from data in `string` format, e.g. uploaded csv. Assign `type`, `tableFieldIndex` and `format` (timestamp only) to each field **Parameters** - `data` **[Array][16]<[Object][17]>** array of row object - `fieldOrder` **[Array][16]** array of field names as string **Examples** ```javascript import {getFieldsFromData} from '@kepler.gl/processors'; const data = [{ time: '2016-09-17 00:09:55', value: '4', surge: '1.2', isTrip: 'true', zeroOnes: '0' }, { time: '2016-09-17 00:30:08', value: '3', surge: null, isTrip: 'false', zeroOnes: '1' }, { time: null, value: '2', surge: '1.3', isTrip: null, zeroOnes: '1' }]; const fieldOrder = ['time', 'value', 'surge', 'isTrip', 'zeroOnes']; const fields = getFieldsFromData(data, fieldOrder); // fields = [ // {name: 'time', format: 'YYYY-M-D H:m:s', tableFieldIndex: 1, type: 'timestamp'}, // {name: 'value', format: '', tableFieldIndex: 4, type: 'integer'}, // {name: 'surge', format: '', tableFieldIndex: 5, type: 'real'}, // {name: 'isTrip', format: '', tableFieldIndex: 6, type: 'boolean'}, // {name: 'zeroOnes', format: '', tableFieldIndex: 7, type: 'integer'}]; ``` Returns **[Array][16]<[Object][17]>** formatted fields ## processCsvData Process csv data, output a data object with `{fields: [], rows: []}`. The data object can be wrapped in a `dataset` and pass to [`addDataToMap`][18] **Parameters** - `rawData` **[string][19]** raw csv string **Examples** ```javascript import {processCsvData} from '@kepler.gl/processors'; const testData = `gps_data.utc_timestamp,gps_data.lat,gps_data.lng,gps_data.types,epoch,has_result,id,time,begintrip_ts_utc,begintrip_ts_local,date 2016-09-17 00:09:55,29.9900937,31.2590542,driver_analytics,1472688000000,False,1,2016-09-23T00:00:00.000Z,2016-10-01 09:41:39+00:00,2016-10-01 09:41:39+00:00,2016-09-23 2016-09-17 00:10:56,29.9927699,31.2461142,driver_analytics,1472688000000,False,2,2016-09-23T00:00:00.000Z,2016-10-01 09:46:37+00:00,2016-10-01 16:46:37+00:00,2016-09-23 2016-09-17 00:11:56,29.9907261,31.2312742,driver_analytics,1472688000000,False,3,2016-09-23T00:00:00.000Z,,,2016-09-23 2016-09-17 00:12:58,29.9870074,31.2175827,driver_analytics,1472688000000,False,4,2016-09-23T00:00:00.000Z,,,2016-09-23` const dataset = { info: {id: 'test_data', label: 'My Csv'}, data: processCsvData(testData) }; dispatch(addDataToMap({ datasets: [dataset], options: {centerMap: true, readOnly: true} })); ``` Returns **[Object][17]** data object `{fields: [], rows: []}` ## processGeojson Process GeoJSON [`FeatureCollection`][20], output a data object with `{fields: [], rows: []}`. The data object can be wrapped in a `dataset` and pass to [`addDataToMap`][18] **Parameters** - `rawData` **[Object][17]** raw geojson feature collection **Examples** ```javascript import {addDataToMap} from '@kepler.gl/actions'; import {processGeojson} from '@kepler.gl/processors'; const geojson = { "type" : "FeatureCollection", "features" : [{ "type" : "Feature", "properties" : { "capacity" : "10", "type" : "U-Rack" }, "geometry" : { "type" : "Point", "coordinates" : [ -71.073283, 42.417500 ] } }] }; dispatch(addDataToMap({ datasets: { info: { label: 'Sample Taxi Trips in New York City', id: 'test_trip_data' }, data: processGeojson(geojson) } })); ``` Returns **[Object][17]** dataset containing `fields` and `rows` ## processKeplerglJSON Process saved kepler.gl json to be pass to [`addDataToMap`][18]. The json object should contain `datasets` and `config`. **Parameters** - `rawData` **[Object][17]** - `rawData.datasets` **[Array][16]** - `rawData.config` **[Object][17]** **Examples** ```javascript import {addDataToMap} from '@kepler.gl/actions'; import {processKeplerglJSON} from '@kepler.gl/processors'; dispatch(addDataToMap(processKeplerglJSON(keplerGlJson))); ``` Returns **[Object][17]** datasets and config `{datasets: {}, config: {}}` ## processRowObject Process data where each row is an object, output can be passed to [`addDataToMap`][18] **Parameters** - `rawData` **[Array][16]<[Object][17]>** an array of row object, each object should have the same number of keys **Examples** ```javascript import {addDataToMap} from '@kepler.gl/actions'; import {processRowObject} from '@kepler.gl/processors'; const data = [ {lat: 31.27, lng: 127.56, value: 3}, {lat: 31.22, lng: 126.26, value: 1} ]; dispatch(addDataToMap({ datasets: { info: {label: 'My Data', id: 'my_data'}, data: processRowObject(data) } })); ``` Returns **[Object][17]** dataset containing `fields` and `rows` [1]: #getfieldsfromdata [2]: #parameters [3]: #examples [4]: #processcsvdata [5]: #parameters-1 [6]: #examples-1 [7]: #processgeojson [8]: #parameters-2 [9]: #examples-2 [10]: #processkeplergljson [11]: #parameters-3 [12]: #examples-3 [13]: #processrowobject [14]: #parameters-4 [15]: #examples-4 [16]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array [17]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object [18]: ../actions/actions.md#adddatatomap [19]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String [20]: http://wiki.geojson.org/GeoJSON_draft_version_6#FeatureCollection ================================================ FILE: docs/api-reference/reducers/README.md ================================================ ## Reducers Kepler.gl is a redux-connected component that utilizes redux to manage its state. The basic implementation of kepler.gl reducer is simple. However, to make the most of it, it's recommended to have basic knowledge on: - [Redux][redux] state container - [React][react] - [React Redux connect][react-redux] ![Compose-reducer][diagram-1] It is immportant to understand the relationship between __kepler.gl reducer__, __instance reducer__ and __subreducer__. Kepler.gl reducer is the root reducer that combines multiple instance reducer, which manages the state of each individual kepler.gl component. The instance reducer is consists of 4 subreducers, each manages an independent part of the state. ## KeplerGl Reducer To connect kepler.gl components to your Redux app you'll need the following pieces from the kepler.gl package: - Redux Reducer: `keplerGlReducer` imported from `@kepler.gl/reducers` - React Component: `KeplerGl` imported from `@kepler.gl/components` These are the only 2 pieces you need to get kepler.gl up and running in your app. When you mount kepler.gl reducer in your app reducer (with `combineReducers`), it will then managers __ALL__ KeplerGl component instances that you add to your app. Each kepler.gl instance state is stored in a instance reduccer. For instance, if you have 2 kepler.gl components in your App: ```js import KeplerGl from '@kepler.gl/components'; const MapApp = () => (
); ``` Your redux state will be: ```js state = { keplerGl: { foo: {}, bar: {} }, // ... other app state app: {} } ``` ## Instance Reducer Each kepler.gl component state is stored in a instance reduccer. A instance reducer has 4 subreducers. __`visState`__, __`mapState`__, __`mapStyle`__ and __`uiState`__. Each of them managers a piece of state that is mostly self contained. - __visState__ - Manages all data and visualization related state, including datasets, layers, filters and interaction configs. Some of the key updaters are `updateVisDataUpdater`, `layerConfigChangeUpdater`, `setFilterUpdater`, `interactionConfigChangeUpdater`. - __mapState__ - Manages base map behavior including the viewport, drag rotate and toggle split maps. Key updates are `updateMapUpdater`, `toggleSplitMapUpdater` and `togglePerspectiveUpdater`. - __mapStyle__ - Managers base map style, including setting base map style, toggling base map layers and adding custom base map style. - __uiState__ - Managers all UI component transition state, including open / close side panel, current displayed panel etc. Note, ui state reducer is the only reducer that’s not saved in kepler.gl schema. ## Subreducer The subreducers - __`visState`__, __`mapState`__, __`mapStyle`__ and __`uiState`__ - are assembled by a list of action handlers, each handler mapped to a state transition function named xxUpdater. For instance, here is a snippet of the map state reducer in kepler.gl: ```js /* Action Handlers */ const actionHandler = { [ActionTypes.UPDATE_MAP]: updateMapUpdater, [ActionTypes.FIT_BOUNDS]: fitBoundsUpdater, [ActionTypes.TOGGLE_PERSPECTIVE]: togglePerspectiveUpdater }; ``` User can import a specific action handler in their root reducer and use it to directly modify kepler.gl’s state (without dispathcing a kepler.gl action). This will give user the full control over kepler.gl’s component state. Here is an example how you can listen to an app action `QUERY_SUCCESS` and call `updateVisDataUpdater` to load data into kepler.gl. ```js import keplerGlReducer, {visStateUpdaters} from '@kepler.gl/reducers'; // Root Reducer const reducers = combineReducers({ keplerGl: keplerGlReducer, app: appReducer }); const composedReducer = (state, action) => { switch (action.type) { case 'QUERY_SUCCESS': return { ...state, keplerGl: { ...state.keplerGl, // 'map' is the id of the keplerGl instance map: { ...state.keplerGl.map, visState: visStateUpdaters.updateVisDataUpdater( // you have to pass the subreducer state that the updater is associated with state.keplerGl.map.visState, {datasets: action.payload} ) } } }; } return reducers(state, action); }; export default composedReducer; ``` [redux]: https://redux.js.org/ [react]: https://reactjs.org/ [react-redux]: https://react-redux.js.org/ [diagram-1]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/api_reducers_compose-reducers.png ================================================ FILE: docs/api-reference/reducers/combine.md ================================================ ### Table of Contents - [combinedUpdaters](#combinedupdaters) - [addDataToMapUpdater](#adddatatomapupdater) ## combinedUpdaters Some actions will affect the entire kepler.lg instance state. The updaters for these actions is exported as `combinedUpdaters`. These updater take the entire instance state as the first argument. Read more about [Using updaters][5] **Examples** ```javascript import keplerGlReducer, {combinedUpdaters} from '@kepler.gl/reducers'; // Root Reducer const reducers = combineReducers({ keplerGl: keplerGlReducer, app: appReducer }); const composedReducer = (state, action) => { switch (action.type) { // add data to map after receiving data from remote sources case 'LOAD_REMOTE_RESOURCE_SUCCESS': return { ...state, keplerGl: { ...state.keplerGl, // pass in kepler.gl instance state to combinedUpdaters map: combinedUpdaters.addDataToMapUpdater( state.keplerGl.map, { payload: { datasets: action.datasets, options: {readOnly: true}, config: action.config } } ) } }; } return reducers(state, action); }; export default composedReducer; ``` ### addDataToMapUpdater Combine data and full configuration update in a single action - **Action**: [`addDataToMap`][6] **Parameters** - `state` **[Object][7]** kepler.gl instance state, containing all subreducer state - `action` **[Object][7]** - `action.payload` **[Object][7]** `{datasets, options, config}` - `action.payload.datasets` **([Array][8]<[Object][7]> | [Object][7])** **\*required** datasets can be a dataset or an array of datasets Each dataset object needs to have `info` and `data` property. - `action.payload.datasets.info` **[Object][7]** \-info of a dataset - `action.payload.datasets.info.id` **[string][9]** id of this dataset. If config is defined, `id` should matches the `dataId` in config. - `action.payload.datasets.info.label` **[string][9]** A display name of this dataset - `action.payload.datasets.data` **[Object][7]** **\*required** The data object, in a tabular format with 2 properties `fields` and `rows` - `action.payload.datasets.data.fields` **[Array][8]<[Object][7]>** **\*required** Array of fields, - `action.payload.datasets.data.fields.name` **[string][9]** **\*required** Name of the field, - `action.payload.datasets.data.rows` **[Array][8]<[Array][8]>** **\*required** Array of rows, in a tabular format with `fields` and `rows` - `action.payload.options` **[Object][7]** option object `{centerMap: true}` - `action.payload.config` **[Object][7]** map config Returns **[Object][7]** nextState [1]: #combinedupdaters [2]: #examples [3]: #adddatatomapupdater [4]: #parameters [5]: ../advanced-usage/using-updaters.md [6]: ../actions/actions.md#adddatatomap [7]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object [8]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array [9]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String ================================================ FILE: docs/api-reference/reducers/map-state.md ================================================ ### Table of Contents - [mapStateUpdaters](#mapstateupdaters) - [fitBoundsUpdater](#fitboundsupdater) - [INITIAL\_MAP\_STATE](#initial_map_state) - [Properties](#properties) - [receiveMapConfigUpdater](#receivemapconfigupdater) - [resetMapConfigUpdater](#resetmapconfigupdater) - [togglePerspectiveUpdater](#toggleperspectiveupdater) - [toggleSplitMapUpdater](#togglesplitmapupdater) - [updateMapUpdater](#updatemapupdater) ## mapStateUpdaters Updaters for `mapState` reducer. Can be used in your root reducer to directly modify kepler.gl's state. Read more about [Using updaters][17] **Examples** ```javascript import keplerGlReducer, {mapStateUpdaters} from '@kepler.gl/reducers'; // Root Reducer const reducers = combineReducers({ keplerGl: keplerGlReducer, app: appReducer }); const composedReducer = (state, action) => { switch (action.type) { // click button to close side panel case 'CLICK_BUTTON': return { ...state, keplerGl: { ...state.keplerGl, foo: { ...state.keplerGl.foo, mapState: mapStateUpdaters.fitBoundsUpdater( mapState, {payload: [127.34, 31.09, 127.56, 31.59]]} ) } } }; } return reducers(state, action); }; export default composedReducer; ``` ### fitBoundsUpdater Fit map viewport to bounds - **Action**: [`fitBounds`][18] **Parameters** - `state` **[Object][19]** - `action` **[Object][19]** - `action.payload` **[Array][20]<[number][21]>** bounds as `[lngMin, latMin, lngMax, latMax]` Returns **[Object][19]** nextState ### INITIAL_MAP_STATE Default initial `mapState` #### Properties - `pitch` **[number][21]** Default: `0` - `bearing` **[number][21]** Default: `0` - `latitude` **[number][21]** Default: `37.75043` - `longitude` **[number][21]** Default: `-122.34679` - `zoom` **[number][21]** Default: `9` - `dragRotate` **[boolean][22]** Default: `false` - `width` **[number][21]** Default: `800` - `height` **[number][21]** Default: `800` - `isSplit` **[boolean][22]** Default: `false` ### receiveMapConfigUpdater Update `mapState` to propagate a new config - **Action**: [`receiveMapConfig`][23] **Parameters** - `state` **[Object][19]** - `action` **[Object][19]** - `action.payload` **[Object][19]** saved map config - `action.payload.config` (optional, default `{}`) - `action.payload.options` (optional, default `{}`) - `action.payload.bounds` (optional, default `null`) Returns **[Object][19]** nextState ### resetMapConfigUpdater reset mapState to initial State - **Action**: [`resetMapConfig`][24] **Parameters** - `state` **[Object][19]** `mapState` Returns **[Object][19]** nextState ### togglePerspectiveUpdater Toggle between 3d and 2d map. - **Action**: [`togglePerspective`][25] **Parameters** - `state` **[Object][19]** Returns **[Object][19]** nextState ### toggleSplitMapUpdater Toggle between one or split maps - **Action**: [`toggleSplitMap`][26] **Parameters** - `state` **[Object][19]** Returns **[Object][19]** nextState ### updateMapUpdater Update map viewport - **Action**: [`updateMap`][27] **Parameters** - `state` **[Object][19]** - `action` **[Object][19]** - `action.payload` **[Object][19]** viewport Returns **[Object][19]** nextState [1]: #mapstateupdaters [2]: #examples [3]: #fitboundsupdater [4]: #parameters [5]: #initial_map_state [6]: #properties [7]: #receivemapconfigupdater [8]: #parameters-1 [9]: #resetmapconfigupdater [10]: #parameters-2 [11]: #toggleperspectiveupdater [12]: #parameters-3 [13]: #togglesplitmapupdater [14]: #parameters-4 [15]: #updatemapupdater [16]: #parameters-5 [17]: ../advanced-usage/using-updaters.md [18]: ../actions/actions.md#fitbounds [19]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object [20]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array [21]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number [22]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean [23]: ../actions/actions.md#receivemapconfig [24]: ../actions/actions.md#resetmapconfig [25]: ../actions/actions.md#toggleperspective [26]: ../actions/actions.md#togglesplitmap [27]: ../actions/actions.md#updatemap ================================================ FILE: docs/api-reference/reducers/map-style.md ================================================ ### Table of Contents - [mapStyleUpdaters](#mapstyleupdaters) - [INITIAL\_MAP\_STYLE](#initial_map_style) - [Properties](#properties) - [initMapStyleUpdater](#initmapstyleupdater) - [inputMapStyleUpdater](#inputmapstyleupdater) - [loadCustomMapStyleUpdater](#loadcustommapstyleupdater) - [loadMapStyleErrUpdater](#loadmapstyleerrupdater) - [loadMapStylesUpdater](#loadmapstylesupdater) - [mapConfigChangeUpdater](#mapconfigchangeupdater) - [mapStyleChangeUpdater](#mapstylechangeupdater) - [resetMapConfigMapStyleUpdater](#resetmapconfigmapstyleupdater) ## mapStyleUpdaters Updaters for `mapStyle`. Can be used in your root reducer to directly modify kepler.gl's state. Read more about [Using updaters][21] **Examples** ```javascript import keplerGlReducer, {mapStyleUpdaters} from '@kepler.gl/reducers'; // Root Reducer const reducers = combineReducers({ keplerGl: keplerGlReducer, app: appReducer }); const composedReducer = (state, action) => { switch (action.type) { // click button to hide label from background map case 'CLICK_BUTTON': return { ...state, keplerGl: { ...state.keplerGl, foo: { ...state.keplerGl.foo, mapStyle: mapStyleUpdaters.mapConfigChangeUpdater( mapStyle, {payload: {visibleLayerGroups: {label: false, road: true, background: true}}} ) } } }; } return reducers(state, action); }; export default composedReducer; ``` ### INITIAL_MAP_STYLE Default initial `mapStyle` #### Properties - `styleType` **[string][22]** Default: `'dark'` - `visibleLayerGroups` **[Object][23]** Default: `{}` - `topLayerGroups` **[Object][23]** Default: `{}` - `mapStyles` **[Object][23]** mapping from style key to style object - `mapboxApiAccessToken` **[string][22]** Default: `null` - `inputStyle` **[Object][23]** Default: `{}` - `threeDBuildingColor` **[Array][24]** Default: `[r, g, b]` ### initMapStyleUpdater Propagate `mapStyle` reducer with `mapboxApiAccessToken` and `mapStylesReplaceDefault`. if mapStylesReplaceDefault is true mapStyles is emptied; loadMapStylesUpdater() will populate mapStyles. - **Action**: [`keplerGlInit`][25] **Parameters** - `state` **[Object][23]** - `action` **[Object][23]** - `action.payload` **[Object][23]** - `action.payload.mapboxApiAccessToken` **[string][22]** Returns **[Object][23]** nextState ### inputMapStyleUpdater Input a custom map style object - **Action**: [`inputMapStyle`][26] **Parameters** - `state` **[Object][23]** `mapStyle` - `action` **[Object][23]** action object - `action.payload` **[Object][23]** inputStyle - `action.payload.url` **[string][22]** style url e.g. `'mapbox://styles/heshan/xxxxxyyyyzzz'` - `action.payload.id` **[string][22]** style url e.g. `'custom_style_1'` - `action.payload.style` **[Object][23]** actual mapbox style json - `action.payload.name` **[string][22]** style name - `action.payload.layerGroups` **[Object][23]** layer groups that can be used to set map layer visibility - `action.payload.icon` **[Object][23]** icon image data url - `action.payload.inputStyle` - `action.payload.mapState` Returns **[Object][23]** nextState ### loadCustomMapStyleUpdater Callback when a custom map style object is received - **Action**: [`loadCustomMapStyle`][27] **Parameters** - `state` **[Object][23]** `mapStyle` - `action` **[Object][23]** - `action.payload` **[Object][23]** - `action.payload.icon` **[string][22]** - `action.payload.style` **[Object][23]** - `action.payload.error` **any** - `action.payload.icon` - `action.payload.style` - `action.payload.error` Returns **[Object][23]** nextState ### loadMapStyleErrUpdater Callback when load map style error - **Action**: [`loadMapStyleErr`][28] **Parameters** - `state` **[Object][23]** `mapStyle` - `action` **[Object][23]** - `action.payload` **any** error Returns **[Object][23]** nextState ### loadMapStylesUpdater Callback when load map style success - **Action**: [`loadMapStyles`][29] **Parameters** - `state` **[Object][23]** `mapStyle` - `action` **[Object][23]** - `action.payload` **[Object][23]** a `{[id]: style}` mapping Returns **[Object][23]** nextState ### mapConfigChangeUpdater Update `visibleLayerGroups`to change layer group visibility - **Action**: [`mapConfigChange`][30] **Parameters** - `state` **[Object][23]** `mapStyle` - `action` **[Object][23]** - `action.payload` **[Object][23]** new config `{visibleLayerGroups: {label: false, road: true, background: true}}` Returns **[Object][23]** nextState ### mapStyleChangeUpdater Change to another map style. The selected style should already been loaded into `mapStyle.mapStyles` - **Action**: [`mapStyleChange`][31] **Parameters** - `state` **[Object][23]** `mapStyle` - `action` **[Object][23]** - `action.payload` **[string][22]** Returns **[Object][23]** nextState ### resetMapConfigMapStyleUpdater Reset map style config to initial state - **Action**: [`resetMapConfig`][32] **Parameters** - `state` **[Object][23]** `mapStyle` Returns **[Object][23]** nextState [1]: #mapstyleupdaters [2]: #examples [3]: #initial_map_style [4]: #properties [5]: #initmapstyleupdater [6]: #parameters [7]: #inputmapstyleupdater [8]: #parameters-1 [9]: #loadcustommapstyleupdater [10]: #parameters-2 [11]: #loadmapstyleerrupdater [12]: #parameters-3 [13]: #loadmapstylesupdater [14]: #parameters-4 [15]: #mapconfigchangeupdater [16]: #parameters-5 [17]: #mapstylechangeupdater [18]: #parameters-6 [19]: #resetmapconfigmapstyleupdater [20]: #parameters-7 [21]: ../advanced-usage/using-updaters.md [22]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String [23]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object [24]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array [25]: ../actions/actions.md#keplerglinit [26]: ../actions/actions.md#inputmapstyle [27]: ../actions/actions.md#loadcustommapstyle [28]: ../actions/actions.md#loadmapstyleerr [29]: ../actions/actions.md#loadmapstyles [30]: ../actions/actions.md#mapconfigchange [31]: ../actions/actions.md#mapstylechange [32]: ../actions/actions.md#resetmapconfig ================================================ FILE: docs/api-reference/reducers/reducers.md ================================================ ### Table of Contents - [keplerGlReducer](#keplerglreducer) - [keplerGlReducer.initialState](#keplerglreducerinitialstate) - [keplerGlReducer.plugin](#keplerglreducerplugin) - [mapStateLens](#mapstatelens) - [mapStyleLens](#mapstylelens) - [providerStateLens](#providerstatelens) - [uiStateLens](#uistatelens) - [visStateLens](#visstatelens) ## keplerGlReducer Kepler.gl reducer to be mounted to your store. You can mount `keplerGlReducer` at property `keplerGl`, if you choose to mount it at another address e.g. `foo` you will need to specify it when you mount `KeplerGl` component in your app with `getState: state => state.foo` **Examples** ```javascript import keplerGlReducer from '@kepler.gl/reducers'; import {createStore, combineReducers, applyMiddleware, compose} from 'redux'; import {taskMiddleware} from 'react-palm/tasks'; const initialState = {}; const reducers = combineReducers({ // <-- mount kepler.gl reducer in your app keplerGl: keplerGlReducer, // Your other reducers here app: appReducer }); // using createStore export default createStore(reducer, initialState, applyMiddleware(taskMiddleware)); ``` ### keplerGlReducer.initialState Return a reducer that initiated with custom initial state. The parameter should be an object mapping from `subreducer` name to custom subreducer state, which will be shallow **merged** with default initial state. Default subreducer state: - [`visState`][19] - [`mapState`][20] - [`mapStyle`][21] - [`uiState`][22] **Parameters** - `iniSt` **[Object][23]** custom state to be merged with default initial state **Examples** ```javascript const myKeplerGlReducer = keplerGlReducer .initialState({ uiState: {readOnly: true} }); ``` ### keplerGlReducer.plugin Returns a kepler.gl reducer that will also pass each action through additional reducers spiecified. The parameter should be either a reducer map or a reducer function. The state passed into the additional action handler is the instance state. It will include all the subreducers `visState`, `uiState`, `mapState` and `mapStyle`. `.plugin` is only meant to be called once when mounting the keplerGlReducer to the store. **Note** This is an advanced option to give you more freedom to modify the internal state of the kepler.gl instance. You should only use this to adding additional actions instead of replacing default actions. **Parameters** - `customReducer` **([Object][23] \| [Function][24])** A reducer map or a reducer **Examples** ```javascript const myKeplerGlReducer = keplerGlReducer .plugin({ // 1. as reducer map HIDE_AND_SHOW_SIDE_PANEL: (state, action) => ({ ...state, uiState: { ...state.uiState, readOnly: !state.uiState.readOnly } }) }) .plugin(handleActions({ // 2. as reducer 'HIDE_MAP_CONTROLS': (state, action) => ({ ...state, uiState: { ...state.uiState, mapControls: hiddenMapControl } }) }, {})); ``` ## mapStateLens Connect subreducer `mapState`, used with `injectComponents`. Learn more at [Replace UI Component][25] **Parameters** - `reduxState` **any** ## mapStyleLens Connect subreducer `mapStyle`, used with `injectComponents`. Learn more at [Replace UI Component][25] **Parameters** - `reduxState` **any** ## providerStateLens Connect subreducer `providerState`, used with `injectComponents`. Learn more at [Replace UI Component][25] **Parameters** - `reduxState` **any** ## uiStateLens Connect subreducer `uiState`, used with `injectComponents`. Learn more at [Replace UI Component][25] **Parameters** - `reduxState` **any** ## visStateLens Connect subreducer `visState`, used with `injectComponents`. Learn more at [Replace UI Component][25] **Parameters** - `reduxState` **any** [1]: #keplerglreducer [2]: #examples [3]: #keplerglreducerinitialstate [4]: #parameters [5]: #examples-1 [6]: #keplerglreducerplugin [7]: #parameters-1 [8]: #examples-2 [9]: #mapstatelens [10]: #parameters-2 [11]: #mapstylelens [12]: #parameters-3 [13]: #providerstatelens [14]: #parameters-4 [15]: #uistatelens [16]: #parameters-5 [17]: #visstatelens [18]: #parameters-6 [19]: ./vis-state.md#INITIAL_VIS_STATE [20]: ./map-state.md#INITIAL_MAP_STATE [21]: ./map-style.md#INITIAL_MAP_STYLE [22]: ./ui-state.md#INITIAL_UI_STATE [23]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object [24]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function [25]: ../advanced-usages/replace-ui-component.md#pass-custom-component-props ================================================ FILE: docs/api-reference/reducers/ui-state.md ================================================ ### Table of Contents - [uiStateUpdaters](#uistateupdaters) - [addNotificationUpdater](#addnotificationupdater) - [cleanupExportImage](#cleanupexportimage) - [DEFAULT\_EXPORT\_DATA](#default_export_data) - [Properties](#properties) - [DEFAULT\_EXPORT\_IMAGE](#default_export_image) - [Properties](#properties-1) - [DEFAULT\_MAP\_CONTROLS\_FEATURES](#default_map_controls_features) - [Properties](#properties-2) - [hideExportDropdownUpdater](#hideexportdropdownupdater) - [INITIAL\_UI\_STATE](#initial_ui_state) - [Properties](#properties-3) - [loadFilesErrUpdater](#loadfileserrupdater) - [loadFilesUpdater](#loadfilesupdater) - [openDeleteModalUpdater](#opendeletemodalupdater) - [removeNotificationUpdater](#removenotificationupdater) - [setExportDataTypeUpdater](#setexportdatatypeupdater) - [setExportDataUpdater](#setexportdataupdater) - [setExportFilteredUpdater](#setexportfilteredupdater) - [setExportImageDataUri](#setexportimagedatauri) - [setExportImageSetting](#setexportimagesetting) - [setExportSelectedDatasetUpdater](#setexportselecteddatasetupdater) - [showExportDropdownUpdater](#showexportdropdownupdater) - [startExportingImage](#startexportingimage) - [toggleMapControlUpdater](#togglemapcontrolupdater) - [toggleModalUpdater](#togglemodalupdater) - [toggleSidePanelUpdater](#togglesidepanelupdater) - [toggleSplitMapUpdater](#togglesplitmapupdater) - [DEFAULT\_EXPORT\_HTML](#default_export_html) - [Properties](#properties-4) - [setUserMapboxAccessTokenUpdater](#setusermapboxaccesstokenupdater) ## uiStateUpdaters Updaters for `uiState` reducer. Can be used in your root reducer to directly modify kepler.gl's state. Read more about [Using updaters][53] **Examples** ```javascript import keplerGlReducer, {uiStateUpdaters} from '@kepler.gl/reducers'; // Root Reducer const reducers = combineReducers({ keplerGl: keplerGlReducer, app: appReducer }); const composedReducer = (state, action) => { switch (action.type) { // click button to close side panel case 'CLICK_BUTTON': return { ...state, keplerGl: { ...state.keplerGl, foo: { ...state.keplerGl.foo, uiState: uiStateUpdaters.toggleSidePanelUpdater( uiState, {payload: null} ) } } }; } return reducers(state, action); }; export default composedReducer; ``` ### addNotificationUpdater Add a notification to be displayed. Existing notification is going to be updated in case of matching ids. - **Action**: [`addNotification`][54] **Parameters** - `state` **[Object][55]** `uiState` - `action` **[Object][55]** - `action.payload` **[Object][55]** Returns **[Object][55]** nextState ### cleanupExportImage Delete cached export image - **Action**: [`cleanupExportImage`][56] **Parameters** - `state` **[Object][55]** `uiState` Returns **[Object][55]** nextState ### DEFAULT_EXPORT_DATA Default initial `exportData` settings Type: [Object][55] #### Properties - `selectedDataset` **[string][57]** Default: `''`, - `dataType` **[string][57]** Default: `'csv'`, - `filtered` **[boolean][58]** Default: `true`, - `config` **[boolean][58]** deprecated - `data` **[boolean][58]** used in modal config export. Default: `false` ### DEFAULT_EXPORT_IMAGE Default image export config Type: [Object][55] #### Properties - `ratio` **[string][57]** Default: `'SCREEN'`, - `resolution` **[string][57]** Default: `'ONE_X'`, - `legend` **[boolean][58]** Default: `false`, - `imageDataUri` **[string][57]** Default: `''`, - `exporting` **[boolean][58]** Default: `false` - `error` **[boolean][58]** Default: `false` ### DEFAULT_MAP_CONTROLS_FEATURES A list of map control visibility and whether is it active. Type: [Object][55] #### Properties - `visibleLayers` **[Object][55]** Default: `{show: true, active: false}` - `mapLegend` **[Object][55]** Default: `{show: true, active: false}` - `toggle3d` **[Object][55]** Default: `{show: true}` - `splitMap` **[Object][55]** Default: `{show: true}` ### hideExportDropdownUpdater Hide side panel header dropdown, activated by clicking the share link on top of the side panel - **Action**: [`hideExportDropdown`][59] **Parameters** - `state` **[Object][55]** `uiState` Returns **[Object][55]** nextState ### INITIAL_UI_STATE Default initial `uiState` Type: [Object][55] #### Properties - `readOnly` **[boolean][58]** Default: `false` - `activeSidePanel` **[string][57]** Default: `'layer'` - `currentModal` **([string][57] | null)** Default: `'addData'` - `datasetKeyToRemove` **([string][57] | null)** Default: `null` - `visibleDropdown` **([string][57] | null)** Default: `null` - `exportImage` **[Object][55]** Default: [`DEFAULT_EXPORT_IMAGE`][9] - `exportData` **[Object][55]** Default: [`DEFAULT_EXPORT_DATA`][7] - `mapControls` **[Object][55]** Default: [`DEFAULT_MAP_CONTROLS`][60] - `activeMapIndex` **[number][61]** defines which map the user clicked on. Default: 0 ### loadFilesErrUpdater Handles load file error and set fileLoading property to false - **Action**: [`loadFilesErr`][62] **Parameters** - `state` - `error` **[Object][55]** - `error.error` Returns **[Object][55]** nextState ### loadFilesUpdater Fired when file loading begin - **Action**: [`loadFiles`][63] **Parameters** - `state` **[Object][55]** `uiState` Returns **[Object][55]** nextState ### openDeleteModalUpdater Toggle active map control panel - **Action**: [`openDeleteModal`][64] **Parameters** - `state` **[Object][55]** `uiState` - `action` **[Object][55]** - `action.payload` **[string][57]** dataset id Returns **[Object][55]** nextState ### removeNotificationUpdater Remove a notification - **Action**: [`removeNotification`][65] **Parameters** - `state` **[Object][55]** `uiState` - `action` **[Object][55]** - `action.payload` **[String][57]** id of the notification to be removed Returns **[Object][55]** nextState ### setExportDataTypeUpdater Set data format for exporting data - **Action**: [`setExportDataType`][66] **Parameters** - `state` **[Object][55]** `uiState` - `action` **[Object][55]** - `action.payload` **[string][57]** one of `'text/csv'` Returns **[Object][55]** nextState ### setExportDataUpdater Whether to including data in map config, toggle between `true` or `false` - **Action**: [`setExportData`][67] **Parameters** - `state` **[Object][55]** `uiState` Returns **[Object][55]** nextState ### setExportFilteredUpdater Whether to export filtered data, `true` or `false` - **Action**: [`setExportFiltered`][68] **Parameters** - `state` **[Object][55]** `uiState` - `action` **[Object][55]** - `action.payload` **[boolean][58]** Returns **[Object][55]** nextState ### setExportImageDataUri Set `exportImage.setExportImageDataUri` to a image dataUri - **Action**: [`setExportImageDataUri`][69] **Parameters** - `state` **[Object][55]** `uiState` - `action` **[Object][55]** - `action.payload` **[string][57]** export image data uri Returns **[Object][55]** nextState ### setExportImageSetting Set `exportImage.legend` to `true` or `false` - **Action**: [`setExportImageSetting`][70] **Parameters** - `state` **[Object][55]** `uiState` - `$1` **[Object][55]** - `$1.payload` Returns **[Object][55]** nextState ### setExportSelectedDatasetUpdater Set selected dataset for export - **Action**: [`setExportSelectedDataset`][71] **Parameters** - `state` **[Object][55]** `uiState` - `action` **[Object][55]** - `action.payload` **[string][57]** dataset id Returns **[Object][55]** nextState ### showExportDropdownUpdater Hide and show side panel header dropdown, activated by clicking the share link on top of the side panel - **Action**: [`showExportDropdown`][72] **Parameters** - `state` **[Object][55]** `uiState` - `action` **[Object][55]** - `action.payload` **[string][57]** id of the dropdown Returns **[Object][55]** nextState ### startExportingImage Set `exportImage.exporting` to `true` - **Action**: [`startExportingImage`][73] **Parameters** - `state` **[Object][55]** `uiState` Returns **[Object][55]** nextState ### toggleMapControlUpdater Toggle active map control panel - **Action**: [`toggleMapControl`][74] **Parameters** - `state` **[Object][55]** `uiState` - `action` **[Object][55]** action - `action.payload` **[string][57]** map control panel id, one of the keys of: [`DEFAULT_MAP_CONTROLS`][60] - `action.payload.panelId` - `action.payload.index` (optional, default `0`) Returns **[Object][55]** nextState ### toggleModalUpdater Show and hide modal dialog - **Action**: [`toggleModal`][75] **Parameters** - `state` **[Object][55]** `uiState` - `action` **[Object][55]** - `action.payload` **([string][57] | null)** id of modal to be shown, null to hide modals. One of:- [`DATA_TABLE_ID`][76] - [`DELETE_DATA_ID`][77] - [`ADD_DATA_ID`][78] - [`EXPORT_IMAGE_ID`][79] - [`EXPORT_DATA_ID`][80] - [`ADD_MAP_STYLE_ID`][81] Returns **[Object][55]** nextState ### toggleSidePanelUpdater Toggle active side panel - **Action**: [`toggleSidePanel`][82] **Parameters** - `state` **[Object][55]** `uiState` - `action` **[Object][55]** - `action.payload` **([string][57] | null)** id of side panel to be shown, one of `layer`, `filter`, `interaction`, `map`. close side panel if `null` Returns **[Object][55]** nextState ### toggleSplitMapUpdater Handles toggle map split and reset all map control index to 0 - **Action**: [`toggleSplitMap`][83] **Parameters** - `state` Returns **[Object][55]** nextState ## DEFAULT_EXPORT_HTML Type: [Object][55] ### Properties - `exportMapboxAccessToken` **[string][57]** Default: null, this is used when we provide a default mapbox token for users to take advantage of - `userMapboxToken` **[string][57]** Default: '', mapbox token provided by user through input field ## setUserMapboxAccessTokenUpdater whether to export a mapbox access to HTML single page - **Action**: [`setUserMapboxAccessToken`][84] **Parameters** - `state` **[Object][55]** `uiState` - `action` **[Object][55]** - `action.payload` **[string][57]** Returns **[Object][55]** nextState [1]: #uistateupdaters [2]: #examples [3]: #addnotificationupdater [4]: #parameters [5]: #cleanupexportimage [6]: #parameters-1 [7]: #default_export_data [8]: #properties [9]: #default_export_image [10]: #properties-1 [11]: #default_map_controls_features [12]: #properties-2 [13]: #hideexportdropdownupdater [14]: #parameters-2 [15]: #initial_ui_state [16]: #properties-3 [17]: #loadfileserrupdater [18]: #parameters-3 [19]: #loadfilesupdater [20]: #parameters-4 [21]: #opendeletemodalupdater [22]: #parameters-5 [23]: #removenotificationupdater [24]: #parameters-6 [25]: #setexportdatatypeupdater [26]: #parameters-7 [27]: #setexportdataupdater [28]: #parameters-8 [29]: #setexportfilteredupdater [30]: #parameters-9 [31]: #setexportimagedatauri [32]: #parameters-10 [33]: #setexportimagesetting [34]: #parameters-11 [35]: #setexportselecteddatasetupdater [36]: #parameters-12 [37]: #showexportdropdownupdater [38]: #parameters-13 [39]: #startexportingimage [40]: #parameters-14 [41]: #togglemapcontrolupdater [42]: #parameters-15 [43]: #togglemodalupdater [44]: #parameters-16 [45]: #togglesidepanelupdater [46]: #parameters-17 [47]: #togglesplitmapupdater [48]: #parameters-18 [49]: #default_export_html [50]: #properties-4 [51]: #setusermapboxaccesstokenupdater [52]: #parameters-19 [53]: ../advanced-usage/using-updaters.md [54]: ../actions/actions.md#addnotification [55]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object [56]: ../actions/actions.md#cleanupexportimage [57]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String [58]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean [59]: ../actions/actions.md#hideexportdropdown [60]: #default_map_controls [61]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number [62]: ../actions/actions.md#loadfileserr [63]: ../actions/actions.md#loadfiles [64]: ../actions/actions.md#opendeletemodal [65]: ../actions/actions.md#removenotification [66]: ../actions/actions.md#setexportdatatype [67]: ../actions/actions.md#setexportdata [68]: ../actions/actions.md#setexportfiltered [69]: ../actions/actions.md#setexportimagedatauri [70]: ../actions/actions.md#setexportimagesetting [71]: ../actions/actions.md#setexportselecteddataset [72]: ../actions/actions.md#showexportdropdown [73]: ../actions/actions.md#startexportingimage [74]: ../actions/actions.md#togglemapcontrol [75]: ../actions/actions.md#togglemodal [76]: ../constants/default-settings.md#data_table_id [77]: ../constants/default-settings.md#delete_data_id [78]: ../constants/default-settings.md#add_data_id [79]: ../constants/default-settings.md#export_image_id [80]: ../constants/default-settings.md#export_data_id [81]: ../constants/default-settings.md#add_map_style_id [82]: ../actions/actions.md#togglesidepanel [83]: ../actions/actions.md#togglesplitmap [84]: ../actions/actions.md#setusermapboxaccesstoken ================================================ FILE: docs/api-reference/reducers/vis-state.md ================================================ ### Table of Contents - [visStateUpdaters](#visstateupdaters) - [addFilterUpdater](#addfilterupdater) - [addLayerUpdater](#addlayerupdater) - [applyCPUFilterUpdater](#applycpufilterupdater) - [enlargeFilterUpdater](#enlargefilterupdater) - [INITIAL\_VIS\_STATE](#initial_vis_state) - [Properties](#properties) - [interactionConfigChangeUpdater](#interactionconfigchangeupdater) - [layerClickUpdater](#layerclickupdater) - [layerHoverUpdater](#layerhoverupdater) - [layerTypeChangeUpdater](#layertypechangeupdater) - [layerVisConfigChangeUpdater](#layervisconfigchangeupdater) - [layerVisualChannelChangeUpdater](#layervisualchannelchangeupdater) - [loadFilesErrUpdater](#loadfileserrupdater) - [loadFilesUpdater](#loadfilesupdater) - [mapClickUpdater](#mapclickupdater) - [receiveMapConfigUpdater](#receivemapconfigupdater) - [removeDatasetUpdater](#removedatasetupdater) - [removeFilterUpdater](#removefilterupdater) - [removeLayerUpdater](#removelayerupdater) - [reorderLayerUpdater](#reorderlayerupdater) - [resetMapConfigUpdater](#resetmapconfigupdater) - [setFilterPlotUpdater](#setfilterplotupdater) - [setFilterUpdater](#setfilterupdater) - [setMapInfoUpdater](#setmapinfoupdater) - [showDatasetTableUpdater](#showdatasettableupdater) - [toggleFilterAnimationUpdater](#togglefilteranimationupdater) - [toggleLayerForMapUpdater](#togglelayerformapupdater) - [toggleSplitMapUpdater](#togglesplitmapupdater) - [updateAnimationTimeUpdater](#updateanimationtimeupdater) - [updateFilterAnimationSpeedUpdater](#updatefilteranimationspeedupdater) - [updateLayerAnimationSpeedUpdater](#updatelayeranimationspeedupdater) - [updateLayerBlendingUpdater](#updatelayerblendingupdater) - [updateVisDataUpdater](#updatevisdataupdater) ## visStateUpdaters Updaters for `visState` reducer. Can be used in your root reducer to directly modify kepler.gl's state. Read more about [Using updaters][67] **Examples** ```javascript import keplerGlReducer, {visStateUpdaters} from '@kepler.gl/reducers'; // Root Reducer const reducers = combineReducers({ keplerGl: keplerGlReducer, app: appReducer }); const composedReducer = (state, action) => { switch (action.type) { case 'CLICK_BUTTON': return { ...state, keplerGl: { ...state.keplerGl, foo: { ...state.keplerGl.foo, visState: visStateUpdaters.enlargeFilterUpdater( state.keplerGl.foo.visState, {idx: 0} ) } } }; } return reducers(state, action); }; export default composedReducer; ``` ### addFilterUpdater Add a new filter - **Action**: [`addFilter`][68] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.dataId` **[string][70]** dataset `id` this new filter is associated with Returns **[Object][69]** nextState ### addLayerUpdater Add a new layer - **Action**: [`addLayer`][71] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.props` **[Object][69]** new layer props Returns **[Object][69]** nextState ### applyCPUFilterUpdater When select dataset for export, apply cpu filter to selected dataset - **Action**: [`applyCPUFilter`][72] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** - `action.dataId` **[string][70]** dataset id Returns **[Object][69]** nextState ### enlargeFilterUpdater Show larger time filter at bottom for time playback (apply to time filter only) - **Action**: [`enlargeFilter`][73] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.idx` **[Number][74]** index of filter to enlarge Returns **[Object][69]** nextState ### INITIAL_VIS_STATE Default initial `visState` Type: [Object][69] #### Properties - `layers` **[Array][75]** - `layerData` **[Array][75]** - `layerToBeMerged` **[Array][75]** - `layerOrder` **[Array][75]** - `filters` **[Array][75]** - `filterToBeMerged` **[Array][75]** - `datasets` **[Array][75]** - `editingDataset` **[string][70]** - `interactionConfig` **[Object][69]** - `interactionToBeMerged` **[Object][69]** - `layerBlending` **[string][70]** - `hoverInfo` **[Object][69]** - `clicked` **[Object][69]** - `mousePos` **[Object][69]** - `splitMaps` **[Array][75]** a list of objects of layer availabilities and visibilities for each map - `layerClasses` **[Object][69]** - `animationConfig` **[Object][69]** - `editor` **[Object][69]** ### interactionConfigChangeUpdater Update `interactionConfig` - **Action**: [`interactionConfigChange`][76] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.config` **[Object][69]** new config as key value map: `{tooltip: {enabled: true}}` Returns **[Object][69]** nextState ### layerClickUpdater Trigger layer click event with clicked object - **Action**: [`onLayerClick`][77] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.info` **[Object][69]** Object clicked, returned by deck.gl Returns **[Object][69]** nextState ### layerHoverUpdater Trigger layer hover event with hovered object - **Action**: [`onLayerHover`][78] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.info` **[Object][69]** Object hovered, returned by deck.gl Returns **[Object][69]** nextState ### layerTypeChangeUpdater Update layer type. Previews layer config will be copied if applicable. - **Action**: [`layerTypeChange`][79] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.oldLayer` **[Object][69]** layer to be updated - `action.newType` **[string][70]** new type Returns **[Object][69]** nextState ### layerVisConfigChangeUpdater Update layer `visConfig` - **Action**: [`layerVisConfigChange`][80] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.oldLayer` **[Object][69]** layer to be updated - `action.newVisConfig` **[Object][69]** new visConfig as a key value map: e.g. `{opacity: 0.8}` Returns **[Object][69]** nextState ### layerVisualChannelChangeUpdater Update layer visual channel - **Action**: [`layerVisualChannelConfigChange`][81] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.oldLayer` **[Object][69]** layer to be updated - `action.newConfig` **[Object][69]** new visual channel config - `action.channel` **[string][70]** channel to be updated Returns **[Object][69]** nextState ### loadFilesErrUpdater Trigger loading file error - **Action**: [`loadFilesErr`][82] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.error` **any** Returns **[Object][69]** nextState ### loadFilesUpdater Trigger file loading dispatch `addDataToMap` if succeed, or `loadFilesErr` if failed - **Action**: [`loadFiles`][83] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.files` **[Array][75]<[Object][69]>** array of fileblob Returns **[Object][69]** nextState ### mapClickUpdater Trigger map click event, unselect clicked object - **Action**: [`onMapClick`][84] **Parameters** - `state` **[Object][69]** `visState` Returns **[Object][69]** nextState ### receiveMapConfigUpdater Propagate `visState` reducer with a new configuration. Current config will be override. - **Action**: [`receiveMapConfig`][85] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.payload` **[Object][69]** map config to be propagated - `action.payload.config` **[Object][69]** map config to be propagated - `action.payload.option` **[Object][69]** {keepExistingConfig: true | false} - `action.payload.config` (optional, default `{}`) - `action.payload.options` (optional, default `{}`) Returns **[Object][69]** nextState ### removeDatasetUpdater Remove a dataset and all layers, filters, tooltip configs that based on it - **Action**: [`removeDataset`][86] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.key` **[string][70]** dataset id Returns **[Object][69]** nextState ### removeFilterUpdater Remove a filter - **Action**: [`removeFilter`][87] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.idx` **[Number][74]** index of filter to b e removed Returns **[Object][69]** nextState ### removeLayerUpdater remove layer - **Action**: [`removeLayer`][88] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.idx` **[Number][74]** index of layer to b e removed Returns **[Object][69]** nextState ### reorderLayerUpdater Reorder layer - **Action**: [`reorderLayer`][89] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.order` **[Array][75]<[Number][74]>** an array of layer indexes Returns **[Object][69]** nextState ### resetMapConfigUpdater reset visState to initial State - **Action**: [`resetMapConfig`][90] **Parameters** - `state` **[Object][69]** `visState` Returns **[Object][69]** nextState ### setFilterPlotUpdater Set the property of a filter plot - **Action**: [`setFilterPlot`][91] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.idx` **[Number][74]** - `action.newProp` **[Object][69]** key value mapping of new prop `{yAxis: 'histogram'}` Returns **[Object][69]** nextState ### setFilterUpdater Update filter property - **Action**: [`setFilter`][92] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.idx` **[Number][74]** `idx` of filter to be updated - `action.prop` **[string][70]** `prop` of filter, e,g, `dataId`, `name`, `value` - `action.value` **any** new value - `datasetId` **[string][70]** used when updating a prop (dataId, name) that can be linked to multiple datasets Returns **[Object][69]** nextState ### setMapInfoUpdater User input to update the info of the map - **Action**: [`setMapInfo`][93] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.info` **[Object][69]** {title: 'hello'} Returns **[Object][69]** nextState ### showDatasetTableUpdater Display dataset table in a modal - **Action**: [`showDatasetTable`][94] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.dataId` **[string][70]** dataset id to show in table Returns **[Object][69]** nextState ### toggleFilterAnimationUpdater Start and end filter animation - **Action**: [`toggleFilterAnimation`][95] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.idx` **[Number][74]** idx of filter Returns **[Object][69]** nextState ### toggleLayerForMapUpdater Toggle visibility of a layer in a split map - **Action**: [`toggleLayerForMap`][96] **Parameters** - `state` **[Object][69]** - `action` **[Object][69]** - `action.mapIndex` **[Number][74]** index of the split map - `action.layerId` **[string][70]** id of the layer Returns **[Object][69]** nextState ### toggleSplitMapUpdater Toggle visibility of a layer for a split map - **Action**: [`toggleSplitMap`][97] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.payload` **([Number][74] \| [undefined][98])** index of the split map Returns **[Object][69]** nextState ### updateAnimationTimeUpdater Reset animation config current time to a specified value - **Action**: [`updateAnimationTime`][99] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.value` **[Number][74]** the value current time will be set to Returns **[Object][69]** nextState ### updateFilterAnimationSpeedUpdater Change filter animation speed - **Action**: [`updateFilterAnimationSpeed`][100] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.idx` **[Number][74]** `idx` of filter - `action.speed` **[Number][74]** `speed` to change it to. `speed` is a multiplier Returns **[Object][69]** nextState ### updateLayerAnimationSpeedUpdater Update animation speed with the vertical speed slider - **Action**: [`updateLayerAnimationSpeed`][101] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.speed` **[Number][74]** the updated speed of the animation Returns **[Object][69]** nextState ### updateLayerBlendingUpdater update layer blending mode - **Action**: [`updateLayerBlending`][102] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.mode` **[string][70]** one of `additive`, `normal` and `subtractive` Returns **[Object][69]** nextState ### updateVisDataUpdater Add new dataset to `visState`, with option to load a map config along with the datasets - **Action**: [`updateVisData`][103] **Parameters** - `state` **[Object][69]** `visState` - `action` **[Object][69]** action - `action.datasets` **([Array][75]<[Object][69]> | [Object][69])** **\*required** datasets can be a dataset or an array of datasets Each dataset object needs to have `info` and `data` property. - `action.datasets.info` **[Object][69]** \-info of a dataset - `action.datasets.info.id` **[string][70]** id of this dataset. If config is defined, `id` should matches the `dataId` in config. - `action.datasets.info.label` **[string][70]** A display name of this dataset - `action.datasets.data` **[Object][69]** **\*required** The data object, in a tabular format with 2 properties `fields` and `rows` - `action.datasets.data.fields` **[Array][75]<[Object][69]>** **\*required** Array of fields, - `action.datasets.data.fields.name` **[string][70]** **\*required** Name of the field, - `action.datasets.data.rows` **[Array][75]<[Array][75]>** **\*required** Array of rows, in a tabular format with `fields` and `rows` - `action.options` **[Object][69]** option object `{centerMap: true, keepExistingConfig: false}` - `action.config` **[Object][69]** map config Returns **[Object][69]** nextState [1]: #visstateupdaters [2]: #examples [3]: #addfilterupdater [4]: #parameters [5]: #addlayerupdater [6]: #parameters-1 [7]: #applycpufilterupdater [8]: #parameters-2 [9]: #enlargefilterupdater [10]: #parameters-3 [11]: #initial_vis_state [12]: #properties [13]: #interactionconfigchangeupdater [14]: #parameters-4 [15]: #layerclickupdater [16]: #parameters-5 [17]: #layerhoverupdater [18]: #parameters-6 [19]: #layertypechangeupdater [20]: #parameters-7 [21]: #layervisconfigchangeupdater [22]: #parameters-8 [23]: #layervisualchannelchangeupdater [24]: #parameters-9 [25]: #loadfileserrupdater [26]: #parameters-10 [27]: #loadfilesupdater [28]: #parameters-11 [29]: #mapclickupdater [30]: #parameters-12 [31]: #receivemapconfigupdater [32]: #parameters-13 [33]: #removedatasetupdater [34]: #parameters-14 [35]: #removefilterupdater [36]: #parameters-15 [37]: #removelayerupdater [38]: #parameters-16 [39]: #reorderlayerupdater [40]: #parameters-17 [41]: #resetmapconfigupdater [42]: #parameters-18 [43]: #setfilterplotupdater [44]: #parameters-19 [45]: #setfilterupdater [46]: #parameters-20 [47]: #setmapinfoupdater [48]: #parameters-21 [49]: #showdatasettableupdater [50]: #parameters-22 [51]: #togglefilteranimationupdater [52]: #parameters-23 [53]: #togglelayerformapupdater [54]: #parameters-24 [55]: #togglesplitmapupdater [56]: #parameters-25 [57]: #updateanimationtimeupdater [58]: #parameters-26 [59]: #updatefilteranimationspeedupdater [60]: #parameters-27 [61]: #updatelayeranimationspeedupdater [62]: #parameters-28 [63]: #updatelayerblendingupdater [64]: #parameters-29 [65]: #updatevisdataupdater [66]: #parameters-30 [67]: ../advanced-usage/using-updaters.md [68]: ../actions/actions.md#addfilter [69]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object [70]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String [71]: ../actions/actions.md#addlayer [72]: ../actions/actions.md#applycpufilter [73]: ../actions/actions.md#enlargefilter [74]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number [75]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array [76]: ../actions/actions.md#interactionconfigchange [77]: ../actions/actions.md#onlayerclick [78]: ../actions/actions.md#onlayerhover [79]: ../actions/actions.md#layertypechange [80]: ../actions/actions.md#layervisconfigchange [81]: ../actions/actions.md#layervisualchannelconfigchange [82]: ../actions/actions.md#loadfileserr [83]: ../actions/actions.md#loadfiles [84]: ../actions/actions.md#onmapclick [85]: ../actions/actions.md#receivemapconfig [86]: ../actions/actions.md#removedataset [87]: ../actions/actions.md#removefilter [88]: ../actions/actions.md#removelayer [89]: ../actions/actions.md#reorderlayer [90]: ../actions/actions.md#resetmapconfig [91]: ../actions/actions.md#setfilterplot [92]: ../actions/actions.md#setfilter [93]: ../actions/actions.md#setmapinfo [94]: ../actions/actions.md#showdatasettable [95]: ../actions/actions.md#togglefilteranimation [96]: ../actions/actions.md#togglelayerformap [97]: ../actions/actions.md#togglesplitmap [98]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined [99]: ../actions/actions.md#updateanimationtime [100]: ../actions/actions.md#updatefilteranimationspeed [101]: ../actions/actions.md#updatelayeranimationspeed [102]: ../actions/actions.md#updatelayerblending [103]: ../actions/actions.md#updatevisdata ================================================ FILE: docs/api-reference/schemas/README.md ================================================ # Schemas ...Coming Soon ================================================ FILE: docs/keplergl-jupyter/README.md ================================================ # Jupyter Notebook ## kepler.gl for Jupyter User Guide ### Table of contents - [Install](#install) - [1. Load kepler.gl Map](#1-load-keplergl-map) - [`KeplerGl()`](#keplergl) - [2. Add Data](#2-add-data) - [`.add_data()`](#add_data) - [`.data`](#data) - [3. Data Format](#3-data-format) - [`CSV`](#csv) - [`GeoJSON`](#geojson) - [`DataFrame`](#dataframe) - [`GeoDataFrame`](#geodataframe) - [`WKT`](#wkt) - [4. Customize the map](#4-customize-the-map) - [5. Save and load config](#5-save-and-load-config) - [`.config`](#config) - [6. Match config with data](#6-match-config-with-data) - [7. Save Map](#7-save-map) - [`.save_to_html()`](#save_to_html) - [`._repr_html_()`](#_repr_html_) - [Demo Notebooks](#demo-notebooks) - [FAQ & Troubleshoot](#faq--troubleshoot) ## Install ### Prerequisites - Python >= 2 - ipywidgets >= 7.0.0 To install use pip: ```bash $ pip install keplergl ``` If you're on Mac, used `pip install`, and you're running Notebook 5.3 and above, you don't need to run the following: ```bash $ jupyter nbextension install --py --sys-prefix keplergl # can be skipped for notebook 5.3 and above $ jupyter nbextension enable --py --sys-prefix keplergl # can be skipped for notebook 5.3 and above ``` If you are using Jupyter Lab, you will also need to install the JupyterLab extension. This require [node](https://nodejs.org/en/download/package-manager/#macos) `> 10.15.0` If you use [Homebrew](https://brew.sh/) on Mac: ```bash $ brew install node@10 ``` Then install jupyter labextension. ```bash $ jupyter labextension install @jupyter-widgets/jupyterlab-manager keplergl-jupyter ``` ### Prerequisites for JupyterLab - Node > 10.15.0 - Python 3 - JupyterLab>=1.0.0 ## 1. Load keplergl map ### `KeplerGl()` - Input: - __`height`__ _optional_ default: `400` Height of the map display - __`data`__ `dict` _optional_ Datasets as a dictionary, key is the name of the dataset. Read more on [Accepted data format][data_format] - __`use_arrow`__ `bool` _optional_ default: `False` Allow load and render data faster using GeoArrow - __`config`__ `dict` _optional_ Map config as a dictionary. The `dataId` in the layer and filter settings should match the `name` of the dataset they are created under - __`show_docs`__ `bool` _optional_ By default, the User Guide URL () will be printed when a map is created. To hide the User Guide URL, set `show_docs=False`. The following command will load kepler.gl widget below a cell. **The map object created here is `map_1` it will be used throughout the code example in this doc.** ```python # Load an empty map from keplergl import KeplerGl map_1 = KeplerGl() map_1 ``` ![empty map][empty_map] You can also create the map and pass in the data or data and config at the same time. Follow the instruction to [match config with data][match-config-w-data] ```python # Load a map with data and config and height from keplergl import KeplerGl map_2 = KeplerGl(height=400, data={"data_1": my_df}, config=config) map_2 ``` ![Load map with data and config][load_map_w_data] ## 2. Add Data ### `.add_data()` - Inputs - __`data`__ _required_ CSV, GeoJSON or DataFrame. Read more on [Accepted data format][data_format] - __`name`__ _required_ Name of the data entry. - __`use_arrow`__ _optional_ Allow load and render data faster using GeoArrow. `name` of the dataset will be the saved to the `dataId` property of each `layer`, `filter` and `interactionConfig` in the config. kepler.gl expected the data to be **CSV**, **GeoJSON**, **DataFrame** or **GeoDataFrame**. You can call __`add_data`__ multiple times to add multiple datasets to kepler.gl ```python # DataFrame df = pd.read_csv('hex-data.csv') map_1.add_data(data=df, name='data_1') # CSV with open('csv-data.csv', 'r') as f: csvData = f.read() map_1.add_data(data=csvData, name='data_2') # GeoJSON as string with open('sf_zip_geo.json', 'r') as f: geojson = f.read() map_1.add_data(data=geojson, name='geojson') ``` ![Add data to map][map_add_data] ### `.data` Print the current data added to the map. As a `Dict` ```python map_1.data # {'data_1': 'hex_id,value\n89283082c2fffff,64\n8928308288fffff,73\n89283082c07ffff,65\n89283082817ffff,74\n89283082c3bffff,66\n8...`, # 'data_3': 'location, lat, lng, name\n..', # 'data_3': '{"type": "FeatureCollecti...'} ``` ## 3. Data Format kepler.gl supports **CSV**, **GeoJSON**, Pandas **DataFrame** or GeoPandas **GeoDataFrame**. ### `CSV` You can create a `CSV` string by reading from a CSV file. ```python with open('csv-data.csv', 'r') as f: csvData = f.read() # csvData = "hex_id,value\n89283082c2fffff,64\n8928308288fffff,73\n89283082c07ffff,65\n89283082817ffff,74\n89283082c3bffff,66\n8..." map_1.add_data(data=csvData, name='data_2') ``` ### `GeoJSON` According to [GeoJSON Specification (RFC 7946)][geojson]: GeoJSON is a format for encoding a variety of geographic data structures. A GeoJSON object may represent a region of space (a `Geometry`), a spatially bounded entity (a Feature), or a list of Features (a `FeatureCollection`). GeoJSON supports the following geometry types: `Point`, `LineString`, `Polygon`, `MultiPoint`, `MultiLineString`, `MultiPolygon`, and `GeometryCollection`. Features in GeoJSON contain a Geometry object and additional properties, and a FeatureCollection contains a list of Features. kepler.gl supports all the GeoJSON types above excepts `GeometryCollection`. You can pass in either a single [`Feature`][features] or a [`FeatureCollection`][feature_collection]. You can format the `GeoJSON` either as a `string` or a `dict` type ```python feature = { "type": "Feature", "properties": {"name": "Coors Field"}, "geometry": {"type": "Point", "coordinates": [-104.99404, 39.75621]} } featureCollection = { "type": "FeatureCollection", "features": [{ "type": "Feature", "geometry": {"type": "Point", "coordinates": [102.0, 0.5]}, "properties": {"prop0": "value0"} }] } map_1.add_data(data=feature, name="feature") map_1.add_data(data=featureCollection, name="feature_collection") ``` Geometries (Polygons, LindStrings) can be embedded into CSV or DataFrame with a [`GeoJSON`][geojson] Json string. Use the `geometry` property of a [`Feature`][features], which includes `type` and `coordinates`. ```python # GeoJson Feature geometry geometryString = { 'type': 'Polygon', 'coordinates': [[[-74.158491,40.835947],[-74.148473,40.834522],[-74.142598,40.833128],[-74.151923,40.832074],[-74.158491,40.835947]]] } # create json string json_str = json.dumps(geometryString) # create data frame df_with_geometry = pd.DataFrame({ 'id': [1], 'geometry_string': [json_str] }) # add to map map_1.add_data(df_with_geometry, "df_with_geometry") ``` ### `DataFrame` kepler.gl accepts [pandas.DataFrame][data_frame] ```python df = pd.DataFrame( {'City': ['Buenos Aires', 'Brasilia', 'Santiago', 'Bogota', 'Caracas'], 'Latitude': [-34.58, -15.78, -33.45, 4.60, 10.48], 'Longitude': [-58.66, -47.91, -70.66, -74.08, -66.86]}) w1.add_data(data=df, name='cities') ``` ### `GeoDataFrame` kepler.gl accepts [geopandas.GeoDataFrame][geo_data_frame], it automatically converts the current `geometry` column from shapely to wkt string and re-projects geometries to latitude and longitude (EPSG:4326) if the active `geometry` column is in a different projection. ```python url = 'http://eric.clst.org/assets/wiki/uploads/Stuff/gz_2010_us_040_00_500k.json' country_gdf = geopandas.read_file(url) w1.add_data(data=country_gdf, name="state") ``` ![US state][geodataframe_map] ### `WKT` You can embed geometries (Polygon, LineStrings etc) into CSV or DataFrame using [`WKT`][wkt] ```python # WKT wkt_str = 'POLYGON ((-74.158491 40.835947, -74.130031 40.819962, -74.148818 40.830916, -74.151923 40.832074, -74.158491 40.835947))' df_w_wkt = pd.DataFrame({ 'id': [1], 'wkt_string': [wkt_str] }) map_1.add_data(df_w_wkt, "df_w_wkt") ``` ## 4. Customize the map Interact with kepler.gl and customize layers and filters. Map data and config will be stored locally to the widget state. To make sure the map state is saved, select `Widgets > Save Notebook Widget State`, before shutting down the kernel. ![Map interaction][map_interaction] ## 5. Save and load config ### `.config` you can print your current map configuration at any time in the notebook ```python map_1.config ## {u'config': {u'mapState': {u'bearing': 2.6192893401015205, # u'dragRotate': True, # u'isSplit': False, # u'latitude': 37.76209132041332, # u'longitude': -122.42590232651203, ``` When the map is final, you can copy this config and load it later to reproduce the same map. Follow the instruction to [match config with data][match-config-w-data]. #### Apply config to a map: 1. Directly apply config to the map. ```python config = { 'version': 'v1', 'config': { 'mapState': { 'latitude': 37.76209132041332, 'longitude': -122.42590232651203, 'zoom': 12.32053899007826 } ... } }, map_1.add_data(data=df, name='data_1') map_1.config = config ``` 2. Load it when creating the map ```python map_1 = KeplerGl(height=400, data={'data_1': my_df}, config=config) ``` If want to load the map next time with this saved config, the easiest way to do is to save the it to a file and use the magic command **%run** to load it w/o cluttering up your notebook. ```python # Save map_1 config to a file with open('hex_config.py', 'w') as f: f.write('config = {}'.format(map_1.config)) # load the config %run hex_config.py ``` ## 6. Match config with data All layers, filters and tooltips are associated with a specific dataset. Therefore the `data` and `config` in the map has to be able to match each other. The `name` of the dataset is assigned to: - `dataId` of `layer.config`, - `dataId` of `filter` - key in `interactionConfig.tooltip.fieldToShow`. ![Connect data and config][connect_data_config] You can use the same config on another dataset with the same name and schema. ## 7. Save Map When you click in the map and change settings, config is saved to widget state. Closing the notebook and reopen it will reload current map. However, you need to manually select `Widget > Save Notebook Widget State` before shut downing the kernel to make sure it will be reloaded. ![Save Widget State][save_widget_state] ### `.save_to_html()` - input - **`data`**: _optional_ A data dictionary {"name": data}, if not provided, will use current map data - **`config`**: _optional_ map config dictionary, if not provided, will use current map config - **`file_name`**: _optional_ the html file name, default is `keplergl_map.html` - **`read_only`**: _optional_ if `read_only` is `True`, hide side panel to disable map customization You can export your current map as an interactive html file. ```python # this will save current map map_1.save_to_html(file_name='first_map.html') # this will save map with provided data and config map_1.save_to_html(data={'data_1': df}, config=config, file_name='first_map.html') # this will save map with the interaction panel disabled map_1.save_to_html(file_name='first_map.html', read_only=True) ``` ### `._repr_html_()` - input - **`data`**: _optional_ A data dictionary {"name": data}, if not provided, will use current map data - **`config`**: _optional_ map config dictionary, if not provided, will use current map config - **`read_only`**: _optional_ if `read_only` is `True`, hide side panel to disable map customization You can also directly serve the current map via a flask app. To do that return kepler’s map HTML representation. Here is an example on how to do that: ```python from flask import Flask app = Flask(__name__) @app.route('/') def index(): return map_1._repr_html_() if __name__ == '__main__': app.run(debug=True) ``` # Demo Notebooks - [Load kepler.gl](https://github.com/keplergl/kepler.gl/blob/master/bindings/kepler.gl-jupyter/notebooks/Load%20kepler.gl.ipynb): Load kepler.gl widget, add data and config - [Geometry as String](https://github.com/keplergl/kepler.gl/blob/master/bindings/kepler.gl-jupyter/notebooks/Geometry%20as%20String.ipynb): Embed Polygon geometries as `GeoJson` and `WKT` inside a `CSV` - [GeoJSON](https://github.com/keplergl/kepler.gl/blob/master/bindings/kepler.gl-jupyter/notebooks/GeoJSON.ipynb): Load GeoJSON to kepler.gl - [DataFrame](https://github.com/keplergl/kepler.gl/blob/master/bindings/kepler.gl-jupyter/notebooks/DataFrame.ipynb): Load DataFrame to kepler.gl - [GeoDataFrame](https://github.com/keplergl/kepler.gl/blob/master/bindings/kepler.gl-jupyter/notebooks/GeoDataFrame.ipynb): Load GeoDataFrame to kepler.gl # FAQ & Troubleshoot #### 1. What about Microsoft Windows? keplergl is currently only published to PyPI, and unfortunately I use a Mac. If you encounter errors installing it on windows, [this issue](https://github.com/keplergl/kepler.gl/issues/557) might shed some light. Follow this issue for [conda](https://github.com/keplergl/kepler.gl/issues/646) support. #### 2. Install keplergl-jupyter on Jupyter Lab failed? Make sure you are using node 8.15.0. and you have installed `@jupyter-widgets/jupyterlab-manager`. Depends on your JupyterLab version. You might need to install the specific version of [jupyterlab-manager](https://github.com/jupyter-widgets/ipywidgets/tree/master/packages/jupyterlab-manager). with `jupyter labextension install @jupyter-widgets/jupyterlab-manager@0.31`. When use it in Jupyter lab, keplergl is only supported in JupyterLab > 1.0 and Python 3. Run `jupyter labextension install keplergl-jupyter --debug` and copy console output before creating an issue. If you are running `install` and `uninstall` several times. You should run. ``` jupyter lab clean jupyter lab build ``` #### 2.1 JavaScript heap out of memory when installing lab extension If you see this error during install labextension ```bash $ FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory ``` run ```bash $ export NODE_OPTIONS=--max-old-space-size=4096 ``` #### 3. Is my lab extension successfully installed? Run `jupyter labextension list` You should see below. (Version may vary) ```bash JupyterLab v1.1.4 Known labextensions: app dir: /Users/xxx/jupyter-python3/ENV3/share/jupyter/lab @jupyter-widgets/jupyterlab-manager v1.0.2 enabled OK keplergl-jupyter v0.1.0 enabled OK ``` #### 4. What's your python and node env Python ```text python==3.7.4 notebook==6.0.3 jupyterlab==2.1.2 ipywidgets==7.5.1 ``` Node (Only for JupyterLab) ```text node==8.15.0 yarn==1.7.0 ``` [jupyter_widget]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_widget.png [empty_map]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_empty_map.png [geodataframe_map]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_geodataframe.png [map_interaction]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_custom_map.gif [load_map_w_data]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_widget.png [map_add_data]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_add_data.png [connect_data_config]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_connect_data_w_config.png [save_widget_state]: https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/jupyter_save_state.png [wkt]: https://dev.mysql.com/doc/refman/5.7/en/gis-data-formats.html#gis-wkt-format [geojson]: https://tools.ietf.org/html/rfc7946 [feature_collection]: https://tools.ietf.org/html/rfc7946#section-3.3 [features]: https://tools.ietf.org/html/rfc7946#section-3.2 [data_frame]: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.html [geo_data_frame]: https://geopandas.readthedocs.io/en/latest/data_structures.html#geodataframe [match-config-w-data]: #6-match-config-with-data [data_format]: #3-data-format ================================================ FILE: docs/release-notes.md ================================================ # What's New? This page shows features that have landed to kepler.gl in major versions. For a complete list of changes to kepler.gl including each minor version, please [visit the full change log](../CHANGELOG.md). ## 3.2 _Released August 21st, 2025_ ### Raster Tile Layer The new [Raster Tile layer](/docs/user-guides/c-types-of-layers/n-raster-tile-layer.md) enables visualization of satellite and aerial imagery from raster PMTiles and Cloud-Optimized GeoTIFFs (via STAC). Use it to bring large imagery datasets into kepler.gl without dedicated tile infrastructure for raster PMTiles, or connect through a compatible raster tile server for COGs and elevation. ### WMS Layer The new WMS layer adds support for rendering imagery and map tiles from OGC Web Map Service endpoints, allowing you to integrate enterprise or public WMS sources directly in kepler.gl. ### AI Assistant - Generate idea buttons from the LLM to speed up workflows. - More reliable local model connectivity (fix for Ollama connection issues). - Configuration migrated to TypeScript for better npm consumption. ### More Bug Fixes and Improvements - Fit-to-bounds: fix initial basemap and deck projections mismatch. - Aggregation layers: fixes for custom color scales. - Vector tiles: regression fixes for field extraction and setup flow. - Image export: fixes when effects are enabled. - Loading indicator: behavior and visibility improvements. - DuckDB: fix importing files with spaces in column names. For the complete list of commits, see the [full change log](../CHANGELOG.md). ## 3.1.1 _Released March 10th, 2025_ ### DuckDB The DuckDB integration has been updated in response to feedback and requests, speeding up workflows for projects with local data. Notable changes include: - Users can now drag and drop files directly in kepler.gl to create a DuckDB table. - The schema panel now always updates when running a query. - Improved handling of DuckDB column types. ![DuckDB Drag and Drop](https://4sq-studio-public.s3.us-west-2.amazonaws.com/statics/keplergl/images/kepler-gl-duckdb-drag-drop.gif) ### Vector Tiles The Vector Tile layer has received a number of optimizations, bug fixes, and quality-of-life improvements. Notable changes include: - For older tilesets without fields in the metadata file, kepler.gl now attempts to retrieve fields from the tile data. - Automatically center the map to the tileset bounds. - Fix for UI freezes during initial Tileset setup. ### More Bug Fixes A number of bug fixes have been deployed in response to community feedback. The most notable bug fixes are listed below, but you can view a full list of changes [in the full change log](../CHANGELOG.md). - Fix for geocoder coordinates, allowing users to enter coordinates directly. - Fix for icon layers at higher zoom levels—icons now remain the same size. - Fix for a broken section of the Icon Layer UI. - Ensure the RangeBrush updates when the slider range changes. - Transform binary buffers to hex WKB when saving to JSON/HTML maps. - Improved logic for changing layer types. - Support arrow text labels from non-string vector sources. - Export GeoArrow columns to CSV as GeoJSON. - Restore support for string WKB data; save binary WKB as hex WKB. - AI Assistant now sends messages to 127.0.0.1 instead of a remote Ollama URL. - Fix for disappearing heatmaps when rendering black or duplicate colors. - Fix for point column suggestions not working. - Fix for crashes in GeoJSON and Trip layers when no data is present. - Fix for the "Save Map" action when using the FSQ provider (overwrite logic). - FSQ storage provider now prompts for login instead of auto-login after logout. ## 3.1 _Released January 29th, 2025_ ### Vector Tiles The new [Vector Tile layer](/docs/user-guides/c-types-of-layers/vector.md) allows the map to dynamically retrieve data based on the user's viewport and zoom level. This initial release supports both Mapbox Vector Tiles and PMTiles. By leveraging the efficiency of vector tiles, users can visualize complex, large-scale datasets without compromising performance, making it easier to explore and analyze geospatial data. ![Vector layer](https://4sq-studio-public.s3.us-west-2.amazonaws.com/statics/keplergl/images/kepler-vector.gif) ### DuckDB Support & SQL Explorer Leverage DuckDB directly within kepler.gl your geospatial projects with big data. Write and execute SQL queries to perform custom analyses, visualizing the results on your map. DuckDB enables in-browser data processing, allowing you to work with large datasets without the need for external infrastructure. ![SQL Data Explorer](https://4sq-studio-public.s3.us-west-2.amazonaws.com/statics/keplergl/images/kepler-duck-db.png) ### AI Assistant Kepler’s AI assistant can edit the map, including filters, base map customization, and a variety of layer configurations. Accessible via text chat, voice chat, and screenshot. The assistant can also produce SQL from natural language, which can be passed to DuckDB. ![AI Assistant](https://4sq-studio-public.s3.us-west-2.amazonaws.com/statics/keplergl/images/kepler-ai-assistant.png) ### Base Map Updates: MapLibre + Mapbox Mapbox and MapLibre base maps are now simultaneously supported. ### Color Scale Improvements Custom color scale is now supported in categorial/ordinal fields, aggregate layers, and other layer components. In addition, custom breaks are now supported within the color scales. ### Value Formatting Formatting for numeric values (e.g. 10,000 can be formatted 10k, $10,000.00, etc; .42 can be formatted as 42%). ### Animation Improvements Includes various updates to the user interface for animation (for both time filters and the trip layer). You may also sync the layers (such as the trip layer) with filters, and conversely sync filters with the layer. ### Legend Improvements The legend is now both movable and resizable, supports the editing of legend values, and offers a scale for radius scaling. ### Various Layer Improvements A number of improvements to layers, including: - Zoom to layer button lets users center their viewport on the layer’s data - Point layer now supports geojson - Arc layer supports creation from h3 - A vast number of other layer improvements This release also includes a wide range of bug fixes and performance improvements, which can be viewed in the [full change log.](../CHANGELOG.md) ================================================ FILE: docs/spatial-analysis-tutorial/README.md ================================================ # Tutorial: Spatial Data Analysis using Kepler.gl AI Assistant This tutorial will guide you through the process of using Kepler.gl AI Assistant to perform spatial data analysis. The spatial data analysis tools are powered by [Geoda](https://geodacenter.github.io/geoda-lib/), which is a free and open source software tool that serves as an introduction to spatial data science for students and researchers. To make it easier for users to go through the spatial data analysis features, we will try to replicate the [Geoda workbook](https://geodacenter.github.io/documentation.html) using Kepler.gl AI Assistant. ## Table of Contents #### [Get Started](./get-started.md) #### [Spatial Data Wrangling - Basic Operations](./spatial-data-wragling.md) #### [Spatial Data Wrangling - GIS Operations](./spatial-data-gis.md) #### [Basic Mapping](./basic-mapping.md) #### [Rate Mapping](./rate-mapping.md) #### [Exploratory Data Analysis](./exploratory-data-analysis.md) - [Univariate and Bivariate Analysis](./univariate-and-bivariate-analysis.md) - [Multivariate Analysis](./multivariate-analysis.md) #### [Contiguity-Based Spatial Weights](./contiguity-based-spatial-weights.md) #### [Distance-Based Spatial Weights](./distance-based-spatial-weights.md) #### [Global Spatial Autocorrelation](./global-spatial-autocorrelation.md) - [Moran Scatter Plot](./moran-scatter-plot.md) - Correlogram - Bivariate, Differential and Empirical Bayes #### [Local Spatial Autocorrelation](./local-spatial-autocorrelation.md) - [LISA and Local Moran](./local-moran-i.md) - Other Local Spatial Autorrelation - Multivariate Local Spatial Autorrelation - LISA for Discrete Variables #### [Spatial Regression](./spatial-regression.md) - [Ordinary Least Squares Regression](./ordinary-least-squares-regression.md) - [Regression Diagnostics](./regression-diagnostics.md) - [Spatial Lag Model](./spatial-lag-model.md) - [Spatial Error Model](./spatial-error-model.md) ================================================ FILE: docs/spatial-analysis-tutorial/basic-mapping.md ================================================ # Basic Mapping Original GeoDa lab by Luc Anselin: https://geodacenter.github.io/workbook/3a_mapping/lab3a.html ## Introduction In this Chapter, we will explore a range of mapping and geovisualization options. We start with a review of common thematic map classifications. We next focus on different statistical maps, in particular maps that are designed to highight extreme values or outliers. We also illustrate maps for categorical variables (unique value maps), and their extension to multiple categories in the form of co-location maps. We close with a review of some special approaches to geovisualization, i.e., ~~conditional maps~~, the cartogram and map animation. The main objective is to use the maps to interact with the data as part of the exploration process. ## Preliminaries We will illustrate the various operations by means of the data set with demographic and socio-economic information for 55 New York City sub-boroughs. - [nyc](https://geodacenter.github.io/data-and-lab/nyc/) socio-economic data for 55 New York City sub-boroughs: https://geodacenter.github.io/data-and-lab/data/nyc.geojson ## Thematic Maps – Overview We start by loading the NYC sub-boroughs dataset: ``` Load the dataset https://geodacenter.github.io/data-and-lab/data/nyc.geojson ``` Common map classifications include the Quantile Map, Natural Breaks Map, and Equal Intervals Map. Specialized classifications that are designed to bring out extreme values include the Percentile Map, Box Map (with two options for the hinge), and the Standard Deviation Map. The Unique Values Map does not involve a classification algorithm, since it uses the integer/string values of a categorical variable itself as the map categories. The Co-location Map is an extension of this principle to multiple categorical variables. Finally, Custom Breaks allows for the use of customized classifications. ### Common map classifications #### Quantile Map A quantile map is based on sorted values for a variable that are then grouped into bins that each have the same number of observations, the so-called quantiles. The number of bins corresponds to the particular quantile, e.g., five bins for a quintile map, or four bins for a quartile map, two of the most commonly used categories. For example, we can create a quantile map for the variable `rent2008` with 4 categories (quartile map): ``` Can you create a quantile map for the variable 'rent2008' with 4 categories? ``` or ``` Can you create a quartile map for the variable 'rent2008'? ``` Screenshot 2025-06-12 at 12 09 10 PM :::tip LLM has the 'knowledge' that to create a quartile map, it will use the quantile map with 4 categories. ::: The quantile map has been created with a default color scheme. If you want to replicate the same result in original GeoDa lab which use the colorbrewer2.org color scheme 'YlOrBr', you can use the following prompt: ``` Can you update the colors of the layers using colorBrewer's 4-class YlOrBr color scheme? ``` Screenshot 2025-06-12 at 2 37 01 PM You can further explore the quantile results by querying the number of areas in each category: ``` How many areas are in each category? ``` Screenshot 2025-06-12 at 2 39 19 PM Upon closer examination from the screenshot, something doesn’t seem to be quite right. With 55 total observations, we should expect roughly 14 (55/4 = 13.75) observations in each group. But the first group only has 7, and the third group has 19! If we open up the Table and sort on the variable `RENT2008`, we can see where the problem lies. Ignoring the zero entries for now (those are a potential problem in their own right), we see that observations starting in row 8 up to row 21 all have a value of 1000. The cut-off for the first quartile is at 14-th row. In a non-spatial analysis, this is not an issue, the first quartile value is given as 1000. But in a map, the observations are locations that need to be assigned to a group (with a separate color). Other than an arbitrary assignment, there is no way to classify observations with a rent of 1000 in either category 1 or category 2. To deal with these ties, then quantile algorithm (implemented in [geoda-lib](https://github.com/geodacenter/geoda-lib)) moves all the observations with a value of 1000 to the second category. As a result, even though the value of the first quartile is given as 1000 in the map legend, only those observations with rents less than 1000 are included in the first quartile category. As we see from the table, there are seven such observations. Any time there are ties in the ranking of observations that align with the values for the breakpoints, the classification in a quantile map will be problematic and result in categories with an unequal number of observations. A natural (Jenks) breaks map uses a nonlinear algorithm to group observations such that the within-group homogeneity is maximized, following the pathbreaking work of Fisher ([1958](https://www.jstor.org/stable/2281952)) and Jenks ([1977](https://books.google.com/books/about/Optimal_Data_Classification_for_Chorople.html?id=HvAENQAACAAJ)). In essence, this is a clustering algorithm in one dimension to determine the break points that yield groups with the largest internal similarity. To create such a map with four categories, you can use the following prompt: ``` Can you create a natural breaks map for the variable 'rent2008' with 4 categories using the same YlOrBr color scheme? ``` Screenshot 2025-06-12 at 3 03 58 PM :::tip You will see there is a new map layer been created. But it has the same name as the previous one. You can click on the label of the map layer in the Layers panel to edit the name of the layer. ::: If you want to compare the results of natural breaks map with the quartile map, you can click 'Switch to dual map view' button on the top right corner of the map to compare the two layers side by side. Screenshot 2025-06-12 at 3 02 54 PM In comparison to the quartile map, the natural breaks criterion is better at grouping the extreme observations. The three observations with zero values make up the first category, whereas the five high rent areas in Manhattan make up the top category. Note also that in contrast to the quantile maps, the number of observations in each category can be highly unequal. #### Equal Intervals Map An equal intervals (quantize) map uses the same principle as a histogram to organize the observations into categories that divide the range of the variable into equal interval bins. This contrasts with the quantile map, where the number of observations in each bin is equal, but the range for each bin is not. For the equal interval classification, the value range between the lower and upper bound in each bin is constant across bins, but the number of observations in each bin is typically not equal. :::tip In Kepler.gl, the equal intervals method is also callled 'quantize'. See documentation for more details: https://docs.kepler.gl/docs/user-guides/d-layer-attributes ::: To create an equal intervals map for the variable `rent2008` with 4 categories, you can use the following prompt: ``` Can you create a equal intervals map for the variable 'rent2008' with 4 categories using the same YlOrBr color scheme? ``` Screenshot 2025-06-12 at 3 16 40 PM As in the case of natural breaks, the equal interval approach can yield categories with highly unequal numbers of observations. In our example, the three zero observations again get grouped in the first category, but the second range (from 725 to 1450) contains the bulk of the spatial units (42). To illustrate the similarity with the histogram, you can use the following prompt: ``` Can you create a histogram for the variable 'rent2008' with 4 bins? ``` Screenshot 2025-06-12 at 3 18 18 PM The resulting histogram has the exact same ranges for each interval as the equal intervals map. The number of observations in each category is the same as well. The values for the number of observations in the descriptive statistics below the graph match the values given in the map legend. Finally, we illustrate the equivalence between the two graphs by selecting a category in the map legend. To accomplish this, we select the highest category in the histogram. This selects will highlights the related observations in the map, through linking. ![equal-map-histogram-link](https://github.com/user-attachments/assets/e60c9d4b-4c56-4993-8b65-6c9ca5325ce0) :::note The linking is now way one for now: from plot to map. The two-way linking is not supported yet. ::: ### Map options In Kepler.gl, there are several options to customize the map. - change base map [doc](https://docs.kepler.gl/docs/user-guides/f-map-styles) - chang layer order [doc](https://docs.kepler.gl/docs/user-guides/b-kepler-gl-workflow/add-data-to-layers/d-blend-and-rearrange-layers) - configure layer [doc](https://docs.kepler.gl/docs/user-guides/d-layer-attributes) - configure color palettes [doc](https://docs.kepler.gl/docs/user-guides/l-color-attributes) For saving and exporting the map, please refer to the following documentation: - save and export [doc](https://docs.kepler.gl/docs/user-guides/k-save-and-export) ### Extreme Value Maps Extreme value maps are variations of common choropleth maps where the classification is designed to highlight extreme values at the lower and upper end of the scale, with the goal of identifying outliers. These maps were developed in the spirit of spatializing EDA, i.e., adding spatial features to commonly used approaches in non-spatial EDA ([Anselin 1994](https://scholar.google.com/scholar?hl=en&as_sdt=0%2C3&q=Exploratory+Spatial+Data+Analysis+and+Geographic+Information+Systems&btnG=)). There are three types of extreme value maps: - Percentile Map - Box Map - Standard Deviation Map These are briefly described below. Only their distinctive features are highlighted, since they share all the same options with the other choropleth map types. #### Percentile Map The percentile map is a variant of a quantile map that would start off with 100 categories. However, rather than having these 100 categories, the map classification is reduced to six ranges, the lowest 1%, 1-10%, 10-50%, 50-90%, 90-99% and the top 1%. For example, you can create a percentile map for the variable `rent2008`, using the following prompt: ``` Can you create a percentile map for the variable 'rent2008' with color scheme: BuRd? ``` Screenshot 2025-06-12 at 10 46 35 PM :::tip The percentile has been defined as 6 categories mentioned above, so there is no need to specify the number of categories in the prompt. ::: Note how the extreme values are much better highlighted, especially at the upper end of the distribution. The classification also illustrates some common problems with this type of map. First of all, since there are fewer than 100 observations, in a strict sense there is no 1% of the distribution. This is handled (arbitrarily) by rounding, so that the highest category has one observation, but the lowest does not have any. In addition, since the values are sorted from low to high to determine the cut points, there can be an issue with ties. As we have seen, this is a generic problem for all quantile maps. As pointed out, the [algorithm](https://github.com/GeoDaCenter/geoda-lib/blob/main/cpp/src/mapping/percentile-breaks.cpp) handles ties by moving observations to the next highest category. For example, when there are a lot of observations with zero values (e.g., in the crime rate map for the U.S. counties), the lowest percentile can easily end up without observations, since all the zeros will be moved to the next category. #### Box Map A box map ([Anselin 1994](https://scholar.google.com/scholar?hl=en&as_sdt=0%2C3&q=Exploratory+Spatial+Data+Analysis+and+Geographic+Information+Systems&btnG=)) is the mapping counterpart of the idea behind a box plot. The point of departure is again a quantile map, more specifically, a quartile map. But the four categories are extended to six bins, to separately identify the lower and upper outliers. The definition of outliers is a function of a multiple of the inter-quartile range (IQR), the difference between the values for the 75 and 25 percentile. As we will see in a later chapter in our discussion of the box plot, we use two options for these cut-off values, or hinges, 1.5 and 3.0. The box map uses the same convention. To create a box map for the variable `rent2008`, you can use the following prompt: ``` Can you create a box map for the variable 'rent2008' using BuRd color scheme? ``` Screenshot 2025-06-13 at 12 06 55 PM Compared to the quartile map, the box map separates the three lower outliers (the observations with zero values) from the other four observations in the first quartile. They are depicted in dark blue. Similarly, it separates the six outliers in Manhattan from the eight other observations in the upper quartile. The upper outliers are colored dark red. To illustrate the correspondence between the box plot and the box map, we create a box plot for the variable `rent2008`. ``` Can you create a box plot for the variable 'rent2008'? ``` Screenshot 2025-06-13 at 12 07 25 PM In the box plot, we select the upper outliers, the matching six outlier locations in the box map are highlighted. Note that the outliers in the box plot do not provide any information on the fact that these locations are also adjoining in space. This the spatial perspective that the box map adds to the data exploration. ![box-map-plot-link](https://github.com/user-attachments/assets/5d02795e-abe1-452a-9fd2-e32aff8d4f53) The default box map uses the hinge criterion of 1.5. You can change the hinge criterion to 3.0 by using the following prompt: ``` Can you create a box map for the variable 'rent2008' with the hinge criterion of 3.0? ``` Screenshot 2025-06-13 at 3 28 52 PM The resulting box map, shown in screenshot, no longer has lower outliers and has only five upper outliers (compared to six for the 1.5 hinge). The box map is the preferred method to quickly and efficiently identify outliers and broad spatial patterns in a data set. #### Standard Deviation Map The third type of extreme values map is a standard deviation map. In some way, this is a parametric counterpart to the box map, in that the standard deviation is used as the criterion to identify outliers, instead of the inter-quartile range. In a standard deviation map, the variable under consideration is transformed to standard deviational units (with mean 0 and standard deviation 1). This is equivalent to the z-standardization we have seen before. The number of categories in the classification depends on the range of values, i.e., how many standard deviational units cover the range from lowest to highest. It is also quite common that some categories do not contain any observations (as in the example in the screenshot below). To create a standard deviation map for the variable `rent2008`, you can use the following prompt: ``` Can you create a standard deviation map for the variable 'rent2008'? ``` Screenshot 2025-06-13 at 3 30 28 PM In the screenshot above, there are five neighborhoods with median rent more than two standard deviations above the mean, and three with a median rent less than two standard deviations below the mean. Both sets would be labeled outliers in standard statistical practice. Also, note how the second lowest category does not contain any observations (so the corresponding color is not present in the map). ## Mapping Categorical Variables So far, our maps have pertained to continuous variables, with a clear order from low to high. The AI assistant in Kepler.gl also contains some functionality to map categorical variables, for which the numerical values are distinct, but not necessarily meaningful in and of themselves. Most importantly, the numerical values typically do not imply any ordering of the categories. The two relevant functions are the unique value map, for a single variable, and the co-location map, where the categories for multiple variables are compared. ### Unique Value Map To illustrate the categorical map, we first create a box map (with hinge 1.5) for each of the variables `kids2000` (the percentage households with kids under 18) and `pubast00` (the percentage households receiving public assistance). In each of these maps, we save the categories, respectively as `kidscat` and `asstcat`. The category labels go from 1 to 6, but not all categories necessarily have observations. For example, the map for public assistance does not have either lower (label 1) or higher (label 6), outliers, only observations for 2–5. For the kids map, we have categories 1–5. ``` Can you create a box map for the variable 'kids2000' with the hinge criterion of 1.5 using BuRd color scheme? ``` Screenshot 2025-06-13 at 3 37 59 PM Then, you can save the categories from the box map result into a new column. For example: ``` Can you save the 6 categories (index starts from 1) into a new column "kidscat" from the box map result? ``` Screenshot 2025-06-13 at 6 23 32 PM :::tip Expand the 'tableTool' function calling to see the result. The AI Assistant uses the following SQL query to get the categories: SELECT ..., CASE WHEN KIDS2000 < 10.8864 THEN 1 WHEN KIDS2000 >= 10.8864 AND KIDS2000 < 30.090975 THEN 2 WHEN KIDS2000 >= 30.090975 AND KIDS2000 < 38.2278 THEN 3 WHEN KIDS2000 >= 38.2278 AND KIDS2000 < 42.894025 THEN 4 WHEN KIDS2000 >= 42.894025 AND KIDS2000 < 62.0986 THEN 5 WHEN KIDS2000 >= 62.0986 THEN 6 END AS kidscat FROM nyctable; ::: To replicate the same result in the original [GeoDa lab](https://geodacenter.github.io/workbook/3a_mapping/lab3a.html), you can use the following prompt: ``` Can you create a unique values map using 'kidscat' in the new dataset with Paired color scheme? ``` Screenshot 2025-06-13 at 6 31 11 PM Then, you can do the same for the variable `pubast00` to save the categories into a new column. For example: ``` Can you create a box map for the variable 'pubast00' with the hinge criterion of 1.5 using BuRd color scheme? ``` Screenshot 2025-06-13 at 6 32 29 PM ``` Can you save the categories (index starts from 1) into a new column "asstcat" from the box map result? ``` Screenshot 2025-06-13 at 6 34 19 PM To replicate the same result in the original GeoDa lab, you can use the following prompt: ``` Can you create a unique values map using 'asstcat' in the new dataset with Paired color scheme? ``` Screenshot 2025-06-13 at 6 35 39 PM ### Co-location Map The co-location map is a map that shows the co-location of two categorical variables. It is a variant of the unique value map, where the categories for multiple variables are compared. To create a co-location map for the variables `kidscat` and `asstcat`, you can use the following prompt: ``` Can you compare the two categorical values 'asstcat' and 'kidscat' (keep the value if they are the same, 0 if they are different) and save the result into a new column 'co_location' to a new dataset? ``` ``` Can you create a unique values map using 'co_location' in the new dataset with Paired color scheme? please assign gray color to value 0. ``` Screenshot 2025-06-13 at 6 52 16 PM The above steps show how to create a co-location map of two variables step by step: - create a categorical variable from a continuous variable A using e.g. box map - create a categorical variable from a continuous variable B using the same method - compare the two categorical variables and save the result into a new column 'co_location' to a new dataset - create a unique values map using 'co_location' in the new dataset with Paired color scheme In Kepler.gl AI Assistant, we create a specific 'colocation' tool, so you can create a co-location map just with the following prompt: ``` Can you create a co-location map for the variables 'kids2000' and 'pubast00' using quantile breaks (k=5)? ``` Screenshot 2025-06-16 at 12 42 22 PM From the screenshot, you can see how AI Assistant plans the similar steps to create the co-location map: - Classify 'kids2000' into 5 quantile bins. - Classify 'pubast00' into 5 quantile bins. - Create a new dataset with both categorical variables. - Compare the two categorical variables: - Assign the same value if they match. - Assign -1 if they differ. - Visualize the result with a unique color for each match and gray for mismatches. ### Custom Classification In addition to the range of pre-defined classifications available for choropleth maps, it is also possible to create a custom classification using AI Assistant. This is often useful when substantive concerns dictate the cut points, rather than data driven criteria. For example, this may be appropriate when specific income categories are specified for certain government programs. A custom classification may also be useful when comparing the spatial distribution of a variable over time. All included pre-defined classifications are relative and would be re-computed for each time period. For example, when mapping crime rates over time, in an era of declining rates, the observations in the upper quartile in a later period may have crime rates that correspond to a much lower category in an earlier period. This would not be apparent using the pre-defined approaches, but could be visualized by setting the same break points for each time period. For example, you can create a custom classification for the variable `rent2008` with the following prompt: ``` Can you create a new map layer using the variable 'kids2000' with the break points: [20, 30, 40, 45, 50] and color scheme YlOrBr? ``` Screenshot 2025-06-16 at 11 53 44 AM Tip: to create a custom classification, what you need to prompt includes: - the variable name - the custom break values - the color scheme (optional) Kepler.gl has a custom classification tool that allows you to adjust the break points by simply dragging the break points. See [Custom Breaks Editor](https://docs.foursquare.com/analytics-products/docs/layers-color-scale-and-palettes#custom-breaks-editor). ## ~~Conditional Map~~ ## Cartogram A cartogram is a map type where the original layout of the areal unit is replaced by a geometric form (usually a circle, rectangle, or hexagon) that is proportional to the value of the variable for the location. This is in contrast to a standard choropleth map, where the size of the polygon corresponds to the area of the location in question. The cartogram has a long history and many variants have been suggested, some quite creative. In essence, the construction of a cartogram is an example of a nonlinear optimization problem, where the geometric forms have to be located such that they reflect the topology (spatial arrangement) of the locations as closely as possible (see [Tobler 2004](https://www.jstor.org/stable/3694068), for an extensive discussion of various aspects of the cartogram). The AI assistant in Kepler.gl implements a circular cartogram [algorithm](https://github.com/GeoDaCenter/geoda-lib/blob/main/cpp/src/geometry/cartogram.h), in which the areal units are represented as circles, whose size (and color) is proportional to the value observed at that location. The changed shapes remove the misleading effect that the area of the unit might have on perception of magnitude. This circular cartogram is implemented as the `cartogram` tool in the AI assistant. To create a cartogram for the variable `rent2008`, you can use the following prompt: ``` Can you create a cartogram for the variable 'rent2008' and create a box map using the cartogram with color scheme BuRd? ``` Screenshot 2025-06-16 at 11 53 44 AM The cartogram is most insightful when used in conjunction with a regular choropleth map. Selecting an observation in the cartogram then immediately links it with the corresponding area in the choropleth map. Except for multi-layer and base map, the cartogram has all the same options as a regular choropleth map, with one addition. The positioning of the circles in the cartogram is the result of a non-linear optimization algorithm. This tries to locate the center of the circle as close as possible to the centroid of the areal unit with which it corresponds, while respecting the contiguity structure as much as possible. There is no unique solution to this problem, and it is often good practice to experiment with further iterations that will slightly reposition the circles. This is implemented in the Improve Cartogram by specify the number of different iterations. ``` Can you create a cartogram for the variable 'rent2008' with 200 iterations and create a box map using the cartogram with color scheme BuRd? ``` You can use split map in Kepler.gl to compare the cartogram and the box map. Screenshot 2025-06-17 at 4 46 59 PM ## ~~Map Animation~~ ================================================ FILE: docs/spatial-analysis-tutorial/get-started.md ================================================ # Get Started Kepler.gl AI Assistant is a plugin for Kepler.gl that allows you to perform spatial data analysis and visualization using AI. ## Start AI Assistant To use AI Assistant, you can click the "AI Assistant" button in the top right corner of the Kepler.gl UI. Screenshot 2025-05-30 at 12 48 08 PM ## Configure AI Assistant You will see the AI Assistant configuration panel on the right side of the Kepler.gl UI. You can adjust the width of the panel by dragging the border between the panel and the Kepler.gl UI. Screenshot 2025-05-30 at 12 49 15 PM The configuration panel includes several important settings: ### AI Provider Select your preferred AI provider from the dropdown menu. Currently supports: - **OpenAI** - OpenAI's GPT models - **Google** - Google's Gemini models - **Anthropic** - Anthropic's Claude models - **Deepseek** - Deepseek's chat models - **XAI** - xAI's Grok models - **Ollama** - Local models via Ollama ### Select LLM Model Choose the specific language model that supports tools to use for AI interactions. Available options vary by provider: | Provider | Available Models | | ------------- | ---------------------------------------------------------------------------------------------------------------- | | **OpenAI** | gpt-4.1, gpt-4o, gpt-4o-mini, gpt-4, gpt-3.5-turbo, o1, o1-preview, o1-mini | | **Google** | gemini-2.5-flash-preview-04-17, gemini-2.5-pro-preview-05-06, gemini-2.0-flash, gemini-1.5-flash, gemini-1.5-pro | | **Anthropic** | claude-3.7-sonnet, claude-3.5-sonnet, claude-3.5-haiku, claude-3-opus, claude-3-sonnet, claude-3-haiku | | **XAI** | grok-3, grok-3-fast, grok-3-mini, grok-3-mini-fast | | **Deepseek** | deepseek-chat | | **Ollama** | Custom models (check "Input Model Name" to manually enter a custom model name) | For more details, please visit the documentation [here](https://github.com/geodacenter/openassistant). ### Authentication **For Cloud Providers (OpenAI, Google, Anthropic, Deepseek, XAI):** - **Enter Your API Key** - Provide your API key for the selected provider. This is required to authenticate and use the AI services. Your API key is stored locally and used only for making requests to the AI provider. For example: visit [https://platform.openai.com/docs/api-reference](https://platform.openai.com/docs/api-reference) to get your OpenAI API key, or visit [https://docs.anthropic.com/en/api/getting-started](https://docs.anthropic.com/en/api/getting-started) to get your Anthropic API key. **For Ollama (Local):** - **Base URL** - Enter the base URL for your Ollama instance (default: `http://localhost:11434/api`) - **Input Model Name** - Optionally check this to manually enter a model name instead of selecting from the dropdown See Ollama documentation for more details: [https://ollama.com/docs](https://ollama.com/docs) ### Temperature Control the creativity and randomness of AI responses using the temperature slider: - **0** (left) - More focused and deterministic responses - **2** (right) - More creative and varied responses - Range: 0.0 to 2.0 with 0.1 increments - Default setting is **0** for more precise analytical responses ### Top P Fine-tune the diversity of AI responses with the Top P parameter: - **0** (left) - More focused on the most likely responses - **1** (right) - Consider a broader range of possible responses - Range: 0.0 to 1.0 with 0.1 increments - Default setting is **1.0** for comprehensive responses ### Mapbox Token (Optional For Route/Isochrone) If you plan to use routing or isochrone analysis features, you can optionally provide your Mapbox access token. This enables advanced spatial analysis capabilities like: - Route e.g. "What is the driving route from 123 Main St to 456 Main St in San Francisco?" - Isochrone e.g. "What is the 30-minute travel time isochrone from 123 Main St in San Francisco?" ## Use AI Assistant If the connection to the selected AI provider is successful, you will see the AI Assistant chat interface. **Welcome Message**: You'll be greeted with "Hi, I am Kepler.gl AI Assistant!" confirming that the assistant is ready to help with your spatial analysis tasks. **Suggested Actions**: The interface displays helpful suggestion buttons to get you started quickly based on the dataset loaded in Kepler.gl. For example, in the screenshot above: - **Create a Bubble Chart**: "Visualize the relationship between AGE_2..." - Helps you create scatter plots and bubble charts to explore relationships between variables - **Generate a Histogram**: "Show the distribution of AGE_LT_21..." - Assists in creating histograms to understand the distribution of your data **Prompt Input**: Use the "Enter a prompt here" field to type your questions, requests, or commands in natural language. :::tip some useful prompts: what datasets are available to use? what tools are available to use? ::: #### Tips for Effective Prompting - **Be specific**: Include details about the data columns, analysis type, or visualization you want - **Use examples**: Reference specific field names or geographic areas in your dataset - **Ask follow-up questions**: Build on previous responses to refine your analysis - **Experiment**: Try different phrasings if the first attempt doesn't give you the desired result ### Additional Features The AI Assistant includes several advanced features to enhance your interaction experience: #### Screenshot to Ask Click the **"Screenshot to Ask"** button to capture specific areas of your map or interface and ask questions about them. Screenshot 2025-05-30 at 12 48 08 PM ##### How to use screenshot to ask? **Taking Screenshots** 1. Click the "Screenshot to Ask" button in the chat interface 2. A semi-transparent overlay will appear 3. Click and drag to select the area you want to capture 4. Release to complete the capture **Asking Questions** 1. After capturing, the screenshot will be attached to your next message 2. Type your question about the captured area 3. Send your message to get AI assistance **Managing Screenshots** 1. Click the "X" button on the screenshot preview to remove it 2. Use onRemoveScreenshot callback for programmatic removal #### Talk to Ask (Voice-to-Text) The voice-to-text feature allows users to record their voice, which will be converted to text using the LLM. Screenshot 2025-05-30 at 12 48 08 PM ##### How to use voice-to-text? When using the voice-to-text feature for the first time, users will be prompted to grant microphone access. The browser will display a permission dialog that looks like this: Users can choose from three options: - **Allow while visiting the site**: Grants temporary microphone access - **Allow this time**: Grants one-time microphone access - **Never allow**: Blocks microphone access Then, user can start recording their voice. User can stop recording by clicking the stop button or by clicking the microphone icon again. The text will be translated by LLM and displayed in the input box. This feature is only available with certain AI providers: - OpenAI (using Whisper model) - Google (using Gemini) If using an unsupported provider, you'll receive a "Method not implemented" error. ## Next Tutorial Next Tutorial: [Spatial Data Wrangling](./spatial-data-wrangling.md) ================================================ FILE: docs/spatial-analysis-tutorial/rate-mapping.md ================================================ # Maps for Rates or Proportions Original GeoDa lab by Luc Anselin: https://geodacenter.github.io/workbook/3b_ratemaps/lab3b.html ## Introduction In this chapter, we will explore some important concepts that are relevant when mapping rates or proportions. Such data are characterized by an intrinsic variance instability, in that the precision of the rate as an estimate for underlying risk is inversely proportional to the population at risk. Specifically, this implies that rates estimated from small populations (e.g., small rural counties) may have a large standard error. Furthermore, such rate estimates may potentially erroneously suggest the presence of outliers. In what follows, we will cover two basic methods to map rates. We will also consider the most commonly used rate smoothing technique, based on the Empirical Bayes approach. Spatially explicit smoothing techniques will be treated after we cover distance-based spatial weights. ### Objectives - Create thematic maps for rates - Assess extreme rate values by means of an excess risk map - Understand the principle behind shrinkage estimation or smoothing rates - Apply the Empirical Bayes smoothing principle to maps for rates ## Getting Started In this chapter, we will use a sample data set with lung cancer data for the 88 counties of the state of Ohio. This is a commonly used example in many texts that cover disease mapping and spatial statistics.2 The data set is also included as one of the Center for Spatial Data Science example data sets and can be downloaded from the [Ohio Lung Cancer Mortality page](https://geodacenter.github.io/data-and-lab/ohiolung/). - [ohlung.geojson](https://geodacenter.github.io/data-and-lab/data/ohlung.geojson) We can load the data by prompting: ``` Can you load the dataset: https://geodacenter.github.io/data-and-lab/data/ohlung.geojson? ``` Screenshot 2025-06-19 at 4 04 17 PM ## Choropleth Map for Rates ### Spatially extensive and spatially intensive variables We start our discussion of rate maps by illustrating something we should not be doing. This pertains to the important difference between a spatially extensive and a spatially intensive variable. In many applications that use public health data, we typically have access to a count of events, such as the number of cancer cases (a spatially extensive variable), as well as to the relevant population at risk, which allows for the calculation of a rate (a spatially intensive variable). In our example, we could consider the number (count) of lung cancer cases by county among white females in Ohio (say, in 1968). The corresponding variable in our data set is LFW68. We can create a box map (hinge 1.5) in the by now familar prompt: ``` Can you create a box map (hinge 1.5) for the LFW68 variable using color theme BuRd? ``` Screenshot 2025-06-19 at 4 05 08 PM Anyone familiar with the geography of Ohio will recognize the outliers as the counties with the largest populations, i.e., the metropolitan areas of Cincinnati, Columbus, Cleveland, etc. The labels for these cities in the base layer make this clear. This highlights a major problem with spatially extensive variables like total counts, in that they tend to vary with the size (population) of the areal units. So, everything else being the same, we would expect to have more lung cancer cases in counties with larger populations. Instead, we opt for a spatially intensive variable, such as the ratio of the number of cases over the population. More formally, if $O_i$ is the number of cancer cases in area $i$, and $P_i$ is the corresponding population at risk (in our example, the total number of white females), then the raw or crude rate or proportion follows as: $$r_i = \frac{O_i}{P_i}$$ #### Variance instability The crude rate is an estimator for the unknown underlying risk. In our example, that would be the risk of a white woman to be exposed to lung cancer. The crude rate is an unbiased estimator for the risk, which is a desirable property. However, its variance has an undesirable property, namely $$Var[r_i] = \frac{\pi_i(1-\pi_i)}{P_i}$$ where $\pi_i$ is the unknown underlying risk. This implies that the larger the population of an area ($P_i$ in the denominator), the smaller the variance for the estimator, or, in other words, the greater the precision. The flip side of this result is that for areas with sparse populations (small $P_i$), the estimate for the risk will be imprecise (large variance). Moreover, since the population typically varies across the areas under consideration, the precision of each rate will vary as well. This variance instability needs to somehow be reflected in the map, or corrected for, to avoid a spurious representation of the spatial distribution of the underlying risk. This is the main motivation for smoothing rates, to which we return below. The AI assistant in kepler.gl provides a tool to calculate the different types of rates: - [Raw Rate]() - [Excess Risk]() - [Empirical Bayes Rate]() - [Spatial Rate]() - [Spatial Empirical Bayes Rate]() ### Raw rate map First, we consider the Raw Rate or crude rate (proportion), the simple ratio of the events (number of lung cancer cases) over the population at risk (the county population). For example, we can use the following prompt: ``` Can you calculate the raw rates using event variable LFW68 and base variable POPFW68, and create a box map using the raw rates? ``` We immediately notice that the counties identified as upper outliers in this screenshot are very different from what the map for the counts suggested in the previous box map. If we use split map to compare the two maps, we can see that none of the original count outliers remain as extreme values in the rate map. In fact, some counties are in the lower quartiles (blue color) for the rates. Screenshot 2025-06-19 at 4 18 20 PM #### Raw rate values in table From the response text, we can see that there is a new dataset 'rates_qxxx' has been created and added in Kepler.gl. If we click on the table icon, we can see the raw rates column: Screenshot 2025-06-19 at 4 20 20 PM ### Excess risk map #### Relative risk A commonly used notion in demography and public health analysis is the concept of a standardized mortality rate (SMR), sometimes also referred to as relative risk or excess risk. The idea is to compare the observed mortality rate to a national (or regional) standard. More specifically, the observed number of events is compared to the number of events that would be expected had a reference risk been applied. In most applications, the reference risk is estimated from the aggregate of all the observations under consideration. For example, if we considered all the counties in Ohio, the reference rate would be the sum of all the events over the sum of all the populations at risk. Note that this average is not the average of the county rates. Instead, it is calculated as the ratio of the total sum of all events over the total sum of all populations at risk (e.g., in our example, all the white female deaths in the state over the state white female population). Formally, this is expressed as: $$\tilde{\pi} = \frac{\sum_{i=1}^{n} O_i}{\sum_{i=1}^{n} P_i},$$ which yields the expected number of events for each area $i$ as: $$E_i = \tilde{\pi} \times P_i.$$ The relative risk then follows as the ratio of the observed number of events (e.g., cancer cases) over the expected number: $$SMR_i = \frac{O_i}{E_i}.$$ #### Excess risk map We can map the standardized rates directly using the following prompt: ``` Can you calculate the excess risk rates using event variable LFW68 and base variable POPFW68, and create a box map using the excess risk rates? ``` In the excess risk map, the legend categories are hard coded, with the blue tones representing counties where the risk is less than the state average (excess risk ratio < 1), and the brown tones corresponding to those counties where the risk is higher than the state average (excess risk ratio > 1). Screenshot 2025-06-19 at 4 24 09 PM In the map above, we have six counties with an SMR greater than 2 (the brown colored counties), suggesting elevated rates relative to the state average. ## Empirical Bayes (EB) Smoothed Rate Map ### Borrowing strength As mentioned in the introduction, rates have an intrinsic variance instability, which may lead to the identification of spurious outliers. In order to correct for this, we can use smoothing approaches (also called shrinkage estimators), which improve on the precision of the crude rate by borrowing strength from the other observations. This idea goes back to the fundamental contributions of James and Stein (the so-called James-Stein paradox), who showed that in some instances biased estimators may have better precision in a mean squared error sense. The AI assistant in kepler.gl includes three methods to smooth the rates: an Empirical Bayes approach, a spatial averaging approach, and a combination between the two. We will consider the spatial approaches after we discuss distance-based spatial weights. Here, we focus on the Empirical Bayes (EB) method. First, we provide some formal background on the principles behind smoothing and shrinkage estimators. #### Bayes Law The formal logic behind the idea of smoothing is situated in a Bayesian framework, in which the distribution of a random variable is updated after observing data. The principle behind this is the so-called Bayes Law, which follows from the decomposition of a joint probability (or density) into two conditional probabilities: $$P[AB] = P[A|B] \times P[B] = P[B|A] \times P[A],$$ where $A$ and $B$ are random events, and | stands for the conditional probability of one event, given a value for the other. The second equality yields the formal expression of Bayes law as: $$P[A|B] = \frac{P[B|A] \times P[A]}{P[B]}.$$ In most instances in practice, the denominator in this expression can be ignored, and the equality sign is replaced by a proportionality sign: $$P[A|B] \propto P[B|A] \times P[A].$$ In the context of estimation and inference, the $A$ typically stands for a parameter (or a set of parameters) and $B$ stands for the data. The general strategy is to update what we know about the parameter $A$ a priori (reflected in the prior distribution $P[A]$), after observing the data $B$, to yield a posterior distribution, $P[A|B]$. The link between the prior and posterior distribution is established through the likelihood, $P[B|A]$. Using a more conventional notation with say $\pi$ as the parameter and $y$ as the observations, this gives: $$P[\pi|y] \propto P[y|\pi] \times P[\pi].$$ #### The Poisson-Gamma model For each particular estimation problem, we need to specify distributions for the prior and the likelihood in such a way that a proper posterior distribution results. In the context of rate estimation, the standard approach is to specify a Poisson distribution for the observed count of events (conditional upon the risk parameter), and a Gamma distribution for the prior of the risk parameter $\pi$. This is referred to as the Poisson-Gamma model. In this model, the prior distribution for the (unknown) risk parameter $\pi$ is $\text{Gamma}(\alpha, \beta)$, where $\alpha$ and $\beta$ are the shape and scale parameters of the Gamma distribution. In terms of the more familiar notions of mean and variance, this implies: $$E[\pi] = \frac{\alpha}{\beta},$$ and $$\text{Var}[\pi] = \frac{\alpha}{\beta^2}.$$ Using standard Bayesian principles, the combination of a Gamma prior for the risk parameter with a Poisson distribution for the count of events ($O$) yields the posterior distribution as $\text{Gamma}(O + \alpha, P + \beta)$. The new shape and scale parameters yield the mean and variance of the posterior distribution for the risk parameter as: $$E[\pi|O, P] = \frac{O + \alpha}{P + \beta},$$ and $$\text{Var}[\pi|O, P] = \frac{O + \alpha}{(P + \beta)^2}.$$ Different values for the $\alpha$ and $\beta$ parameters (reflecting more or less precise prior information) will yield smoothed rate estimates from the posterior distribution. In other words, the new risk estimate adjusts the crude rate with parameters from the prior Gamma distribution. #### The Empirical Bayes approach In the Empirical Bayes approach, values for $\alpha$ and $\beta$ of the prior Gamma distribution are estimated from the actual data. The smoothed rate is then expressed as a weighted average of the crude rate, say $r_i$, and the prior estimate, say $\theta$. The latter is estimated as a reference rate, typically the overall statewide average or some other standard. In essence, the EB technique consists of computing a weighted average between the raw rate for each county and the state average, with weights proportional to the underlying population at risk. Simply put, small counties (i.e., with a small population at risk) will tend to have their rates adjusted considerably, whereas for larger counties the rates will barely change. More formally, the EB estimate for the risk in location $i$ is: $$\pi_{EBi} = w_i r_i + (1 - w_i) \theta.$$ In this expression, the weights are: $$w_i = \frac{\sigma^2}{\sigma^2 + \mu/P_i},$$ with $P_i$ as the population at risk in area $i$, and $\mu$ and $\sigma^2$ as the mean and variance of the prior distribution. In the empirical Bayes approach, the mean $\mu$ and variance $\sigma^2$ of the prior (which determine the scale and shape parameters of the Gamma distribution) are estimated from the data. For $\mu$ this estimate is simply the reference rate (the same reference used in the computation of the SMR), $\sum_{i=1}^{n} O_i / \sum_{i=1}^{n} P_i$. The estimate of the variance is a bit more complex: $$\sigma^2 = \frac{\sum_{i=1}^{n} P_i (r_i - \mu)^2}{\sum_{i=1}^{n} P_i} - \frac{\mu \sum_{i=1}^{n} P_i}{n}.$$ While easy to calculate, the estimate for the variance can yield negative values. In such instances, the conventional approach is to set $\sigma^2$ to zero. As a result, the weight $w_i$ becomes zero, which in essence equates the smoothed rate estimate to the reference rate. ### EB rate map You can use the following prompt to create an EB smoothed rate map by using the dataset with raw rates, which we will compare to the EB rates in the next step: ``` Can you calculate the empirical bayes smoothed rates using event variable LFW68 and base variable POPFW68 from dataset with raw rates, and create a box map using the empirical bayes smoothed rates? ``` Screenshot 2025-06-23 at 7 24 53 PM In comparison to the box map for the crude rates and the excess rate map, none of the original outliers remain identified as such in the smoothed map. Instead, a new outlier is shown in the very southwestern corner of the state (Hamilton county). Since many of the original outlier counties have small populations at risk (check in the data table), their EB smoothed rates are quite different (lower) from the original. In contrast, Hamilton county is one of the most populous counties (it contains the city of Cincinnati), so that its raw rate is barely adjusted. Because of that, it percolates to the top of the distribution and becomes an outlier. To illustrate this phenomenon, we can systematically select observations in the box plot for the raw rates and compare their position in the box plot for the smoothed rates. This will reveal which observations are affected most. We create the box plots in the usual way using the raw rates and the empirical bayes smoothed rates by prompting: ``` Can you create a box plot for the raw rates and the empirical bayes smoothed rates? ``` Screenshot 2025-06-23 at 8 11 51 PM Now, the AI assistant will create two box plots for the raw rates and the empirical bayes smoothed rates. We select the three outliers in the raw rates box plot. The corresponding observations are within the upper quartile for the EB smoothed rates, but well within the fence, and thus no longer outliers after smoothing. We can of course also locate these observations on the map, or any other open views. Screenshot 2025-06-23 at 8 15 36 PM Next, we can carry out the reverse and select the outlier in the box plot for the EB smoothed rate. Its position is around the 75 percentile in the box plot for the crude rate. Also note how the range of the rates has shrunk. Many of the higher crude rates are well below 0.00012 for the EB rate, whereas the value for the EB outlier has barely changed. Screenshot 2025-06-23 at 8 15 19 PM Here is a screen captured video of the above steps: ![rates_box_plots-1](https://github.com/user-attachments/assets/62a416e8-d54b-4a74-a81a-777cf0cea103) ================================================ FILE: docs/spatial-analysis-tutorial/spatial-data-gis.md ================================================ # Spatial Data Wrangling (2) – GIS Operations Original GeoDa lab by Luc Anselin: https://geodacenter.github.io/workbook/01_datawrangling_2/lab1b.html ## Introduction Even though Kepler.gl is not GIS by design, a range of spatial data manipulation functions are available that perform some specialized GIS operations using the AI assistant. This includes ~~an efficient treatment of projections~~, conversion between points and polygons, the computation of a minimum spanning tree, and spatial aggregation and spatial join through multi-layer support. ## Objectives - Understand how projections are expressed in a coordinate reference system (CRS) - ~~Be able to efficiently change from one projection to another~~ - Create shape centers (mean center and centroid) for polygons - Construct Thiessen polygons for a point layer - Compute a minimum spanning tree based on the max-min distance between points - Operate on more than one layer - Dissolve areal units and compute aggregate values - Compute aggregate values based on a common indicator in a table - Implement a spatial join to carry out point in polygon operations - ~~Visualize the common link between two layers~~ ## Preliminaries We will continue to illustrate the various operations by means of a series of example data sets, all contained in the [GeoDa Center data set collection](https://geodacenter.github.io/data-and-lab/). Some of these are the same files used in the previous chapter. For the sake of completeness, we list all the sample data sets used: - Chicago commpop: population data for 77 Chicago Community Areas in 2000 and 2010 https://geodacenter.github.io/data-and-lab/data/chicago_commpop.geojson - Groceries: the location of 148 supermarkets in Chicago in 2015 https://geodacenter.github.io/data-and-lab//data/chicago_sup.geojson - Natregimes: homicide and socio-economic data for 3085 U.S. counties in 1960-1990 https://geodacenter.github.io/data-and-lab/data/natregimes.geojson - Home Sales: home sales in King County, WA during 2014-2015 (point data) https://geodacenter.github.io/data-and-lab//data/KingCountyHouseSales2015.geojson ## Projections Spatial observations need to be georeferenced, i.e., associated with specific geometric objects for which the location is represented in a two-dimensional Cartesian coordinate system. Since all observations originate on the surface of the three-dimensional near-spherical earth, this requires a transformation. The transformation involves two steps that are often confused by non-geographers. The topic is complex and forms the basis for the discipline of geodesy. A detailed treatment is beyond our scope, but a good understanding of the fundamental concepts is important. The classic reference is Snyder (1993), and a recent overview of a range of technical issues is offered in Kessler and Battersby (2019). The basic building blocks are degrees latitude and longitude that situate each location with respect to the equator and the Greenwich Meridian (near London, England). Longitude is the horizontal dimension (x), and is measured in degrees East (positive) and West (negative) of Greenwich, ranging from 0 to 180 degrees. Since the U.S. is west of Greenwich, the longitude for U.S. locations is negative. Latitude is the vertical dimension (y), and is measured in degrees North (positive) and South (negative) of the equator, ranging from 0 to 90 degrees. Since the U.S. is in the northern hemisphere, its latitude values will be positive. ### Selecting a projection In Kepler.gl, the WGS84 geographic coordinate system is used by default. All data is visualized using latitude and longitude in this system to represent geographic locations accurately. Note: the GeoJSON format uses the WGS84 geographic coordinate system by default. If you have datasets not in the WGS84 geographic coordinate system, you can convert them to WGS84 using other software like GDAL or GeoDa (see [Reprojection](https://geodacenter.github.io/workbook/01_datawrangling_2/lab1b.html)). However, when computing geometric measurements—such as distance, buffer, area, length, and perimeter—the AI assistant automatically uses GeoDa library to convert geographic coordinates (latitude and longitude) into projected coordinates (easting and northing) using the UTM projection with the WGS84 datum. This ensures accurate calculations in meters. For Universal Transverse Mercator or UTM, the global map is divided into parallel zones, as shown in Figure below. With each zone corresponds a specific projection that can be used to convert geographic coordinates (latitude and longitude) into projected coordinates (easting and northing). Screenshot 2025-06-08 at 5 01 00 PM UTM zones for North America (source: GISGeography) ## Converting Between Points and Polygons So far, we have represented the geography of the community areas by their actual boundaries. However, this is not the only possible way. We can equally well choose a representative point for each area, such as a mean center or a centroid. In addition, we can create new polygons to represent the community areas as tessellations around those central points, such as Thiessen polygons. The key factor is that all three representations are connected to the same cross-sectional data set. As we will see in later chapters, for some types of analyses it is advantageous to treat the areal units as points, whereas in other situations Thiessen polygons form a useful alternative to dealing with an actual point layer. The center point and Thiessen polygon functionality is brought up through the options menu associated with any map view (right click on the map to bring up the menu). We illustrate these features with the projected community area map we just created. ### Mean centers and centroids The **mean centers** is obtained as the simple average of the the X and Y coordinates that define the vertices of the polygon. The **centroid** is more complex, and is the actual center of mass of the polygon (image a cardboard cutout of the polygon, the centroid is the central point where a pin would hold up the cutout in a stable equilibrium). Both methods can yield strange results when the polygons are highly irregular or in a so-called multi-polygon situation (different polygons associated with the same ID, such as a mainland area and an island belonging to the same county). In those instances the centers can end up being located outside the polygon. Nevertheless, the shape centers are a handy way to convert a polygon layer to a corresponding point layer with the same underlying geography. For example, as we will see in a later chapter, they are used under the hood to calculate distance-based spatial weights for polygons. To add centroids of the map layer, you can use the following prompt to create a map layer first: ``` Can you create a map layer from https://geodacenter.github.io/data-and-lab/data/chicago_commpop.geojson? ``` After the map layer is created, you can add centroids by just prompting: ``` Can you get the centroids from the chicago commpop dataset? ``` Screenshot 2025-06-08 at 9 33 26 PM ### Thiessen polygons Point layers can be turned into a so-called tessellation or regular tiling of polygons centered around the points. Thiessen polygons are those polygons that define an area that is closer to the central point than to any other point. In other words, the polygon contains all possible locations that are nearest neighbors to the central point, rather than to any other point in the data set. The polygons are constructed by considering a line perpendicular at the midpoint to a line connecting the central point to its neighbors. For example, we can prompt the AI assistant to create Thiessen polygons for the point layer: ``` Can you create Thiessen polygons for the point layer? ``` Screenshot 2025-06-09 at 1 57 00 PM ### Minimum spanning tree A graph is a data structure that consists of nodes and vertices connecting these nodes. In our later discussions, we will often encounter a connectivity graph, which shows the observations that are connected for a given distance band. The connected points are separated by a distance that is smaller than the specified distance band. An important graph is the so-called max-min connectivity graph, which shows the connectedness structure among points for the smallest distance band that guarantees that each point has at least one other point it is connected to. A minimum spanning tree (MST) associated with a graph is a path through the graph that ensures that each node is visited once and which achieves a minimum cost objective. A typical application is to minimize the total distance traveled through the path. The MST is employed in a range of methods, particularly clustering algorithms. The Ai assistant uses GeoDa library to construct an MST based on the max-min connectivity graph for any point layer. The construction of the MST employs Prim’s algorithm, which is illustrated in more detail in the [Appendix](https://geodacenter.github.io/workbook/01_datawrangling_2/lab1b.html#appendix). To create a minimum spanning tree for the point layer, you can use the following prompt: ``` Can you create a minimum spanning tree for the point layer? ``` Screenshot 2025-06-09 at 8 39 46 PM ## Aggregation Spatial data sets often contain identifiers of larger encompassing units, such as states for counties, or census tracts for individual household data. Spatial disolve is a function that allows us to aggregate the smaller units into the larger units. We illustrate this functionality with the natregimes dataset using **spatial dissolve** tool. First, load the dataset: ``` Load the dataset https://geodacenter.github.io/data-and-lab/data/natregimes.geojson ``` While the observations are for counties, each county also includes a numeric code for the encompassing state in the variable STFIPS. We can use this variable to aggregate the counties into states. ``` Can you aggregate the counties into states based on the STFIPS variable? ``` If you want to aggregate the properties values of the counties into the states, you can use the following prompt: ``` Can you aggregate the counties into the states based on the STFIPS and aggregate the numeric variables by SUM? ``` Screenshot 2025-06-11 at 4 06 25 PM ## Multi-Layer Support Kepler.gl supports multi-layer visualization by default. When you load more datasets, the map layers will be automatically added to current map. You can drag-n-drop the layers to reorder them. This multi-layer infrastructure allows for the calculation of variables for one layer, based on the observations in a different layer. ``` Load the dataset https://geodacenter.github.io/data-and-lab/data/chicago_commpop.geojson ``` ``` Load the dataset https://geodacenter.github.io/data-and-lab/data/chicago_sup.geojson ``` Screenshot 2025-06-11 at 10 39 16 PM ## Spatial Join This is an example of a point in polygon GIS operation. There are two applications of this process. In one, the ID variable (or any other variable) of a spatial area is assigned to each point that is within the area’s boundary. We refer to this as Spatial Assign. The reverse of this process is to count (or otherwise aggregate) the number of points that are within a given area. We refer to this as Spatial Count. Even though the default application is simply assigning an ID or counting the number of points, more complex assignments and aggregations are possible as well. For example, rather than just counting the point, an aggregate over the points can be computed for a given variable, such as the mean, median, standard deviation, or sum. This process is called **Spatial Join**. ### Spatial assign We start the process illustrating the Spatial Assign operation by first loading the Chicago supermarkets point layer, chicago_sup.geojson, followed by the projected community area layer, chicago_commpop.geojson. The purpose of the Spatial Assign operation is to assign the community area ID to each supermarket. This is done by using the **Spatial Join** tool. ``` Can you assign the community name to each supermarket in chicago_sup.geojson? ``` Screenshot 2025-06-11 at 10 59 37 PM ### Spatial count The Spatial Count process works in the reverse order by counting the number of supermarkets in each community area. ``` Can you spatial join the points to the community areas and count the number of points in each community area? ``` Screenshot 2025-06-11 at 11 09 37 PM :::tip You can click on the spatialJoin tool to see the details of how spatial join tool has been applied on the datasets. ::: ### Spatial join with aggregation We can also carry out an aggregation over the points in each area. For example, when joining the points to the community areas, we can aggregate the points by the mean of the variable `NEAR_DIST` to get e.g. the nearest distance of the supermarkets in each community area. ``` Can you spatial join the points to the community areas and aggregate the mean value of the variable 'NEAR_DIST' of points in each community area? ``` Screenshot 2025-06-11 at 11 11 08 PM The aggregation options that are supported now include: COUNT, SUM, MEAN, MIN, MAX, UNIQUE. ## ~~Linked Multi-Layers~~ ================================================ FILE: docs/spatial-analysis-tutorial/spatial-data-wrangling.md ================================================ # Spatial Data Wrangling Original GeoDa lab by Luc Anselin: https://geodacenter.github.io/workbook/01_datawrangling_1/lab1a.html ## Introduction In this chapter, we tackle the topic of data wrangling, i.e., the process of getting data from its raw input into a form that is amenable for analysis. This is often considered to be the most time consuming part of a data science project, taking as much as 80% of the effort ([Dasu and Johnson 2003](https://onlinelibrary.wiley.com/doi/book/10.1002/0471448354)). However, with Kepler.gl AI Assistant, we can now achieve the same data manipulation goals with significantly less effort compared to traditional approaches using software like GeoDa. While data wrangling has increasingly evolved into a field of its own, with a growing number of operations turning into automatic procedures embedded into software ([Rattenbury et al. 2017](https://www.oreilly.com/library/view/principles-of-data/9781491938911/)), the integration of AI assistance represents the next evolution in making these processes even more intuitive and efficient. A detailed discussion of the underlying technical implementations is beyond our scope, but we'll provide practical examples of how to harness this technology for your spatial analysis needs. ### Objectives - Load a spatial layer from a range of formats - Create a point layer from coordinates in a table - Create a grid layer - Create new variables - Variable standardization - Merging tables ## Preliminaries We will illustrate the basic data input operations by means of a series of example data sets, all contained in the GeoDa Center data set collection. Specifically, we will use files from the following data sets: - Chicago commpop: population data for 77 Chicago Community Areas in 2000 and 2010 - Groceries: the location of 148 supermarkets in Chicago in 2015 - Natregimes: homicide and socio-economic data for 3085 U.S. counties in 1960-1990 - SanFran Crime: San Francisco crime incidents in 2012 (point data) You can download these data sets from the [GeoDa Center data and lab](https://geodacenter.github.io/data-and-lab). In this tutorial, we will use the following urls: - Chicago commonpop: https://geodacenter.github.io/data-and-lab/data/chicago_commpop.geojson - Groceries: https://geodacenter.github.io/data-and-lab//data/chicago_sup.geojson - Natregimes: https://geodacenter.github.io/data-and-lab/data/natregimes.geojson - SanFran Crime: https://geodacenter.github.io/data-and-lab/data/SFcartheft_july12.geojson A GeoJSON file is simple text and can easily be read by humans. As shown in Figure below, we see how the locational information is combined with the attributes. After some header information follows a list of features. Each of these contains properties, of which the first set consists of the different variable names with the associated values, just as would be the case in any standard data table. However, the final item refers to the geometry. It includes the type, here a MultiPolygon, followed by a list of x-y coordinates. In this fashion, the spatial information is integrated with the attribute information. Screenshot 2025-05-30 at 4 06 36 PM ### Spatial Data and GIS files If you are not familiar with spatial data and GIS files, you can refer to the [Spatial Data and GIS files](https://geodacenter.github.io/workbook/01_datawrangling_1/lab1a.html) chapter. ### Polygon Layer Most of the analyses covered in these chapters will pertain to areal units, or polygon layers. In Kepler.gl, you can drag and drop the e.g. chicago_commonpop.geojson file to load the data and create a polygon layer automatically (see [Add Data to your Map](https://docs.kepler.gl/docs/user-guides/j-get-started)). Here we will use the AI Assistant to load the data and create a polygon layer. ``` Can you create a map layer from https://geodacenter.github.io/data-and-lab/data/chicago_commpop.geojson ? ``` Screenshot 2025-05-30 at 4 06 36 PM ### Point Layer Point layer GIS files are loaded in the same fashion. For example, we can load the chicago_sup.geojson file to create a point layer. ``` Can you create a map layer from https://geodacenter.github.io/data-and-lab/data/chicago_sup.geojson? ``` Screenshot 2025-05-30 at 4 35 31 PM ### Tabular files Tabular files e.g. the comma separated value (csv) files are also supported. For example, we can load the commpopulation.csv file, which doesn't contain any geometric data. ``` Can you load a dataset from https://geodacenter.github.io/data-and-lab/data/commpopulation.csv? ``` Screenshot 2025-05-30 at 6 22 22 PM If the csv file contains coordinates, the AI Assistant will automatically create a point layer. Here we convert the chicago_sup.dbf, which is used in [GeoDa workbook](https://geodacenter.github.io/workbook/01_datawrangling_1/lab1a.html), to chicago_sup.csv file: ``` Can you create a map layerfrom https://geodacenter.github.io/data-and-lab/data/chicago_sup.csv? ``` Screenshot 2025-05-31 at 10 45 07 PM As you can see in the screenshot above, the AI Assistant confirms with you what type of map layer you want to create. Then, it performs fetching the data from the URL. However, it is not sure about which columns should be used for latitude and longitude coordinates since the columns in the csv file are "XCoord" and "YCoord" not named as "latitude" and "longitude". In the GeoDa workbook, you will need to specify the latitude/longitude columns in the configuration UI. However, with AI assistant, you can simply ask it to guess the columns based on the data. Once you confirm that you want to guess the columns, the AI Assistant successfully identifies the appropriate columns and creates the point layer, showing the grocery store locations as points on the map. ## Grid Grid layers are useful to aggregate counts of point locations in order to calculate point pattern statistics, such as quadrat counts. In Kepler.gl, users can create a grid layer from a dataset easily. See [Kepler.gl Grid Layer](https://docs.kepler.gl/docs/user-guides/c-types-of-layers/d-grid) for more details. In this tutorial, we are using the Ai assistant to create a grid layer from either the current map view (the map bounds defind by northwest and southweast points), or use the bounding box of an available data source. ``` Can you create a 20x20 grid layer over the chicago_commpop areas? ``` Screenshot 2025-06-04 at 3 55 13 PM Since there is a spatial join tool in the AI Assistant, we can also use it to filter the grids that intersect with chicago commpop polygons. The result will be more useful for a spatial data analysis. ``` Can you filter the grids that intersect with chicago commpop polygons? ``` Screenshot 2025-06-04 at 4 38 07 PM ## Table Manipulations A range of variable transformations are supported through the query tool in the AI Assistant. To illustrate these, we will use the Natregimes sample data set. After loading the natregimes.shp file, we obtain the base map of 3085 U.S. counties, shown in the screenshot below. ``` Can you create a map layer from https://geodacenter.github.io/data-and-lab/data/natregimes.geojson? ``` Screenshot 2025-06-06 at 3 49 01 PM The table of the dataset can be opened by using the 'Show Data Table' button when mouse over the dataset name in Kepler.gl layer panel. Screenshot 2025-06-06 at 3 49 55 PM This is a view only table. You can not e.g. edit the data, or add/remove a column in this table. The Foursqure Studio, which is developed based on Kepler.gl, has a more powerful table editor (see docs [here](https://docs.foursquare.com/analytics-products/docs/data)). We hope these features will be upstream back to Kepler.gl in the future. However, using different AI Assistant tools, like query, standardizeVariable, etc., you can achieve the same goal of manipulating the data in the table. The limitation is that you can not directly edit the data in the table, but you can create a new dataset with the manipulated data. ``` Can you create a new variable called "HR60_Z" and assign the z-value of the variable HR60 to it? ``` ### Variable properties ### Change variable properties One of the most used initial transformations pertains to getting the data into the right format. Often, observation identifiers, such as the FIPS code used by the U.S. census, are recorded as character or string variables, not in a numeric format. In order to use these variables effectively, we need to convert them to a different format. For example: ``` Can you change the column NOSOUTH to integer type and save it in a new dataset? ``` Screenshot 2025-06-06 at 4 13 37 PM :::info The AI Assistant calls the `tableTool` to achieve the goal. You can click to expand the `tableTool` to see the details of the tool. This tool uses a SQL query and a in-memory duckdb database to manipulate the data in the table e.g. `SELECT _geojson, ..., CAST(NOSOUTH AS VARCHAR) AS NOSOUTH, ... FROM natregimes_geojson_123456`. The result arrow object is a duckdb table, which can be used to create a new dataset in Kepler.gl. ::: ### Other variable operations The other variable operations, like add a variable, delete a variable or rename a variable, should also be supported via the `tableTool`. ## Calculator The calculator functionality is to create a new variable with: - special functions - univariate and bivariate operations - spatial lag - rates - data/time operations Spatial Lag and Rates are advanced functions that are discussed separately in later chapters. To illustrate the calculator functionality, we return to the Chicago community area sample data and load the commpopulation.csv file. This file only contains the population totals. ``` Can you load a dataset from https://geodacenter.github.io/data-and-lab/data/commpopulation.csv? ``` Screenshot 2025-06-06 at 4 20 05 PM ##### Special The three Special functions are: - **NORMAL**: generate random numbers with normal distribution - **UNIFORM RANDOM**: generate random numbers with uniform distribution - **ENUMERATE**: generate a sequence of numbers, which is especially useful to retain the order of observations after sorting on a given variable For example: ``` Can you create a new variable called "RANDOM" and assign random numbers with normal distribution to it? ``` Screenshot 2025-06-06 at 4 35 10 PM > As you can see from the screenshot, the AI Assistant tries to use `tableTool` to add a new column "RANDOM" using the Box-Muller transform with SQL query: `SELECT community, NID, POP2010, POP2000, (sqrt(-2 * log(random())) * cos(2 * pi() * random())) AS RANDOM FROM commpopulation_246810)`. :::note AI Assistant can make mistakes by trying to generate complex SQL query to add variable. One way to improve the result is to add SQL examples with your prompt, e.g. `can you create a variable using [random()](https://duckdb.org/docs/stable/sql/functions/numeric.html#random) function?` ::: ##### Univariate In Kepler.gl AI Assistant, there are six straightforward univariate transformations: - **NEGATIVE**: changing the sign - **INVERSE**: taking the inverse - **SQUARE ROOT**: taking the square root - **LOG (base 10/e)**: carrying out a log transformation - **ASSIGN**: assign a new variable to be set equal to any other variable, or to a constant (the typical use) - **SHUFFLE**: shuffle the values of a variable, which is an efficient way to implement spatial randomness, i.e., an allocation of values to locations, but where the location itself does not matter (any location is equally likely to receive a given observation value). For example: ``` Can you create a new variable called "POP2010_INV" and assign the inverse of the variable POP2010 to it? ``` Screenshot 2025-06-06 at 7 29 18 PM Since the `tableTool` uses DuckDB to manipulate the data, it can support more univariate transformations. For example, you can use functions like pow(), sqrt(), abs() etc., to transform the variable. For more details, you can refer to the [DuckDB documentation](https://duckdb.org/docs/stable/sql/functions/numeric). ##### Variable Standardization The univariate operations also include five types of variable standardization: - **STANDARDIZED (Z)** - **DEVIATION FROM MEAN** - **STANDARDIZED (MAD)** - **RANGE ADJUST** - **RANGE STANDARDIZED** The most commonly used is undoubtedly **STANDARDIZED (Z)**. This converts the specified variable such that its mean is zero and variance one, i.e., it creates a z-value as $$ z = \frac{x - \mu}{\sigma} $$ where $x$ is the original variable, $\mu$ is the mean, and $\sigma$ is the standard deviation. ``` Can you apply standardization (Z-score) to the variable POP2010? ``` A subset of this standardization is **DEVIATION FROM MEAN**, which only computes the numerator of the z-transformation. An alternative standardization is **STANDARDIZED (MAD)**, which uses the mean absolute deviation (MAD) as the denominator in the standardization. This is preferred in some of the clustering literature, since it diminishes the effect of outliers on the standard deviation (see, for example, the illustration in Kaufman and Rousseeuw 2005, 8–9). The mean absolute deviation for a variable $x$ is computed as: $$ mad = \frac{1}{n} \sum_{i} |x_i - \bar{x}|, $$ i.e., the average of the absolute deviations between an observation and the mean for that variable. The estimate for mad takes the place of $\sigma(x)$ in the denominator of the standardization expression. ``` Can you apply STANDARDIZED (MAD) to the variable POP2010? ``` Two additional transformations that are based on the range of the observations, i.e., the difference between the maximum and minimum. These are the **RANGE ADJUST** and the **RANGE STANDARDIZE**. RANGE ADJUST divides each value by the range of observations: $$ r_a = \frac{x_i - x_{max}}{x_{max} - x_{min}} $$ While RANGE ADJUST simply rescales observations in function of their range, RANGE STANDARDIZE turns them into a value between zero (for the minimum) and one (for the maximum): $$ r_s = \frac{x_i - x_{min}}{x_{max} - x_{min}} $$ In original GeoDa lab, the standardization is limited to one variable at a time, which is not very efficient. However, with the AI Assistant, you can apply the standardization to multiple variables at once in Kepler.gl. ``` Can you apply standardization (Z-score) to the variables POP2010 and POP2000? ``` Screenshot 2025-06-07 at 11 49 29 AM ##### Bivariate or Multivariate The bivariate functionality includes all classic algebraic operations. For example, to compute the population change for the Chicago community areas between 2010 and 2000, you can create a new variable `POPCH = POP2010 - POP2000`: ``` Can you create a new variable POPCH = POP2010 - POP2000? ``` Screenshot 2025-06-07 at 11 45 44 AM :::tip Since the AI Assistant can use SQL query to manipulate the data, you can also use it to create a new variable with multiple variables and operations. One example is the **NORMAL** function in the previous example: `SELECT community, NID, POP2010, POP2000, (sqrt(-2 * log(random())) * cos(2 * pi() * random())) AS RANDOM FROM commpopulation_246810)`. ::: ##### Date and time To illustrate these operations, we will use the SanFran Crime data set from the sample collection, which is one of the few sample data sets that contains a date stamp. We load the sf_cartheft dataset from the Crime Events subdirectory of the sample data set. This data set contains the locations of 3384 car thefts in San Francisco between July and December 2012. ``` Can you create a map layer from https://geodacenter.github.io/data-and-lab/data/SFcartheft_july12.geojson? ``` Screenshot 2025-06-07 at 11 52 11 AM We bring up the data table and note the variable Date in the seventh column. We can ask the AI Assistant to create a new variable called "YEAR" and assign the year of the Date to it. ``` Can you create a new variable called "YEAR" and assign the year of the Date to it? ``` Screenshot 2025-06-07 at 10 05 26 PM :::note You will see the AI assistant tried to call tableTools several times to complete the task. If the tool returns error, the AI assistant will try to fix it and recall the tool. The best practice is providing some extra information or example with your prompt e.g. please use date_part() function. ::: ## Merging tables An important operation on tables is the ability to Merge new variables into an existing data set. We illustrate this with the Chicago community area population data. First load the chicago_commpop.geojson file to create a polygon layer. ``` Can you create a map layer from https://geodacenter.github.io/data-and-lab/data/chicago_commpop.geojson? ``` A number of important parameters need to be selected. First is the datasource from which the data will be merged. In our example, we have chosen commpopulation.csv. Even though this contains the same information as we already have, we select it to illustrate the principles behind the merging operation. ``` Can you load a dataset from https://geodacenter.github.io/data-and-lab/data/commpopulation.csv? ``` There are two ways to merge two datasets: horizontal merge and vertical merge. The default method is Merge horizontally, but Stack (vertically) is supported as well. The latter operation is used to add observations to an existing data set. Best practice to carry out a merging operation is to select a key, i.e., a variable that contains (numeric) values that match the observations in both data sets. ``` Can you merge the table commpopulation.csv to chicago_commpop.geojson using NID as key? ``` Screenshot 2025-06-08 at 4 37 00 PM Since we are using SQL to merge the two datasets, the key column is required to merge horizontally. If you want to specify which columns you want to merge, you can mention them in the prompt: ``` Can you merge the table commpopulation.csv to chicago_commpop.geojson using NID as key and merge the column 'community'? ## Queries With the AI Assistant, you can easily query the dataset by just prompting. Load the sf_cartheft.geojson file to create a point layer. ``` Can you create a map layer from https://geodacenter.github.io/data-and-lab/data/sf_cartheft.geojson? ``` Then, you can query the dataset by just prompting. ``` Can you query the sf_cartheft dataset in October? ``` Screenshot 2025-06-08 at 4 52 41 PM ================================================ FILE: docs/table-of-contents.json ================================================ { "id": "table-of-contents", "chapters": [ { "title": "User Guides", "chapters": [ { "title": "Overview", "entries": [ {"entry": "docs"}, {"entry": "docs/user-guides/a-introduction"}, {"entry": "docs/user-guides/b-kepler-gl-workflow/a-add-data-to-the-map"}, {"entry": "docs/user-guides/c-types-of-layers"}, {"entry": "docs/user-guides/d-layer-attributes"}, {"entry": "docs/user-guides/e-filters"}, {"entry": "docs/user-guides/f-map-styles"}, {"entry": "docs/user-guides/g-interactions"}, {"entry": "docs/user-guides/h-playback"}, {"entry": "docs/user-guides/i-FAQ"}, {"entry": "docs/user-guides/j-get-started"}, {"entry": "docs/user-guides/k-save-and-export"}, {"entry": "docs/user-guides/l-color-attributes"}, {"entry": "docs/user-guides/m-map-settings"} ] }, { "title": "Workflow", "entries": [ {"entry": "docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/a-adding-data-layers"}, {"entry": "docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/b-create-a-layer"}, {"entry": "docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/c-hide-edit-and-delete-layers"}, {"entry": "docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/d-blend-and-rearrange-layers"} ] }, { "title": "Layer Types", "entries": [ {"entry": "docs/user-guides/c-types-of-layers/a-point"}, {"entry": "docs/user-guides/c-types-of-layers/b-arc"}, {"entry": "docs/user-guides/c-types-of-layers/c-line"}, {"entry": "docs/user-guides/c-types-of-layers/d-grid"}, {"entry": "docs/user-guides/c-types-of-layers/e-polygon"}, {"entry": "docs/user-guides/c-types-of-layers/f-cluster"}, {"entry": "docs/user-guides/c-types-of-layers/g-icon"}, {"entry": "docs/user-guides/c-types-of-layers/h-hexbin"}, {"entry": "docs/user-guides/c-types-of-layers/i-heatmap"}, {"entry": "docs/user-guides/c-types-of-layers/j-h3"}, {"entry": "docs/user-guides/c-types-of-layers/k.trip"} ] } ] }, { "title": "API Reference", "chapters": [ { "title": "Overview", "entries": [ {"entry": "docs/api-reference/overview"} ] }, { "title": "Actions", "entries": [ {"entry": "docs/api-reference/actions/overview"}, {"entry": "docs/api-reference/actions/actions"} ] }, { "title": "Components", "entries": [ {"entry": "docs/api-reference/components/overview"} ] }, { "title": "Processors", "entries": [ {"entry": "docs/api-reference/processors/overview"}, {"entry": "docs/api-reference/processors/processors"} ] }, { "title": "Reducers", "entries": [ {"entry": "docs/api-reference/reducers/overview"}, {"entry": "docs/api-reference/reducers/combine"}, {"entry": "docs/api-reference/reducers/map-state"}, {"entry": "docs/api-reference/reducers/map-style"}, {"entry": "docs/api-reference/reducers/reducers"}, {"entry": "docs/api-reference/reducers/ui-state"}, {"entry": "docs/api-reference/reducers/vis-state"} ] }, { "title": "Schemas", "entries": [ {"entry": "docs/api-reference/schemas/overview"} ] }, { "title": "Advanced Usage", "entries": [ {"entry": "docs/api-reference/advanced-usages/custom-initial-state"}, {"entry": "docs/api-reference/advanced-usages/custom-mapbox-host"}, {"entry": "docs/api-reference/advanced-usages/forward-actions"}, {"entry": "docs/api-reference/advanced-usages/reducer-plugin"}, {"entry": "docs/api-reference/advanced-usages/replace-ui-component"}, {"entry": "docs/api-reference/advanced-usages/saving-loading-w-schema"}, {"entry": "docs/api-reference/advanced-usages/using-updaters"} ] } ] }, { "title": "kepler.gl-jupyter", "entries": [ {"entry": "docs/keplergl-jupyter/user-guide"} ] } ] } ================================================ FILE: docs/user-guides/README.md ================================================ # User guides Kepler.gl is designed for geospatial data analysis. It allows technical and non-technical audiences to visualize trends in a city or region. With Kepler.gl, you can… Visualize a large amount of location data in your browser. Playback geo-temporal trends over time. Explore, filter, and deeply engage with location data to gain insight See the sample maps in the demo app for more examples. ![Kepler.gl sample map](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image11.png "Kepler.gl sample map") This guide will teach you how to perform data analysis in Kepler.gl by adding data to a map, creating layers, adding filters, and more. ## Table of contents: #### [Get Started](./j-get-started.md) #### [The kepler.gl workflow](./b-kepler-gl-workflow/README.md) * [Add data to the map](./b-kepler-gl-workflow/a-add-data-to-the-map.md) * [Adding data layers](./b-kepler-gl-workflow/b-add-data-layers/a-adding-data-layers.md) * [Create a layer](./b-kepler-gl-workflow/b-add-data-layers/b-create-a-layer.md) * [Hide, edit and delete layers](./b-kepler-gl-workflow/b-add-data-layers/c-hide-edit-and-delete-layers.md) * [Blend and rearrange layers](./b-kepler-gl-workflow/b-add-data-layers/d-blend-and-rearrange-layers.md) #### [Layers](./c-types-of-layers/README.md) * [Point](./c-types-of-layers/a-point.md) * [Arc](./c-types-of-layers/b-arc.md) * [Line](./c-types-of-layers/c-line.md) * [Grid](./c-types-of-layers/d-grid.md) * [Polygon](./c-types-of-layers/e-polygon.md) * [Cluster](./c-types-of-layers/f-cluster.md) * [Icon](./c-types-of-layers/g-icon.md) * [Hexbin](./c-types-of-layers/h-hexbin.md) * [Heatmap](./c-types-of-layers/i-heatmap.md) * [H3](./c-types-of-layers/j-h3.md) * [Trip](./c-types-of-layers/k-trip.md) * [S2](./c-types-of-layers/l-s2.md) * [Vector Tile Layer](./c-types-of-layers/m-vector-tile-layer.md) * [Raster Tile Layer](./c-types-of-layers/n-raster-tile-layer.md) * [WMS Layer](./c-types-of-layers/o-wms-layer.md) #### [Layer attributes](./d-layer-attributes.md) #### [Color Palettes](./l-color-attributes.md) #### [Filters](./e-filters.md) #### [Map styles](./f-map-styles.md#map-styles.md) * [Base map styles](./f-map-styles.md#base-map-styles.md) * [Map layers](./f-map-styles.md#map-layers.md) * [Custom styles](./f-map-styles.md#custom-styles.md) #### [Interactions](./g-interactions.md) * [Tooltips](./g-interactions.md#tooltips) * [Brushing](./g-interactions.md#brushing) * [Display Coordinates](./g-interactions.md#display-coordinates) #### [Map Settings](./m-map-settings.md) * [View maps in 3d](./m-map-settings.md#view-maps-in-3d) * [Display legend](./m-map-settings.md#display-legend) * [Split maps](./m-map-settings.md#split-maps) #### [SQL Data Explorer](./sql-data-explorer.md) #### [AI Assistant](./ai-assistant.md) #### [Time playback](./h-playback.md) #### [Save and export](./k-save-and-export.md) #### [FAQ](./i-FAQ.md) ================================================ FILE: docs/user-guides/ai-assistant.md ================================================ # AI Assistant > Note: This feature is currently undergoing development. Stay tuned for updates! The AI assistant in Kepler.gl is not only a LLM based chatbot, it is engineered to help users with creating maps and analyzing their spatial data. The AI assistant provides a new way that allows users to interact with the data and the map in a more natural and creative way. ![AI Assistant](https://4sq-studio-public.s3.us-west-2.amazonaws.com/statics/keplergl/images/kepler-ai-assistant.png 'AI Assistant') Your conversations can be advanced: `Create a geojson layer using population with quantile color scale and update its colors inspired by Van Gogh's Starry Night`. Or: `Check the correlation between temperature and precipitation in the dataset`. ## Supported Providers The following providers and models are currently supported. > Note: we are working on feature to allow users specify their own providers, models and base URL. | **Provider** | **Models** | | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- | | **OpenAI** | `gpt-4o`, `gpt-4o-mini`, `gpt-3.5-turbo`, `gpt-3.5-turbo-0125`, `o1-mini`, `o1-preview` | | **Google** | `gemini-2.0-flash-exp`, `gemini-1.5-flash`, `gemini-1.5-pro`, `gemini-1.0-pro` | | **Ollama** (local) | `deepseek-r1`, `phi4`, `phi3.5`, `qwen2.5-coder`, `qwen2`, `qawa`, `llava`, `mistral`, `gemma2`, `llama3.3`, `llama3.2`, `llama3.1`, `llama3.1:70b` | | **DeepSeek** | `deepseek-chat`, `deepseek-reasoner` | ## Parameters Before initating the AI assistant, the following parameters are required. A temperature and Top P are selected for you; however, you will need to provide an API key for a remote model, and a base URL for local models. | **Parameter** | **Description** | | --------------- | -------------------------------------------------------------------------------------------------------------------------------------- | | **Temperature** | Controls the randomness of the model's output. Range: `0-2`, Default: `1`. Lower values make responses more focused and deterministic. | | **Top P** | Controls the diversity of the output by limiting the cumulative probability of token selection. Range: `0-1`, Default: `0.8`. | | **API Key** | Required for OpenAI (`gpt` models) and Google (`gemini` models). | | **Base URL** | Required for Ollama (`localhost:11434` or another specified base URL). | ## Built-in Features - Take screenshot to ask [[Demo]](https://geoda.ai/img/highlight-screenshot.mp4) - Talk to ask [[Demo]](https://geoda.ai/img/highlight-ai-talk.mp4) ### Take a Screenshot to Ask This feature enables users to capture a screenshot anywhere within kepler.gl application and ask questions about the screenshot. For example, users can take a screenshot of the map (or partial of the map) and ask questions about the map e.g. _`how many counties are in this screenshot`_, or take a screenshot of the layer configuration panel and ask questions about how to use it, e.g. _`How can I adjust the opacity`_. Users can even take a screenshot of the plots in the chat panel and ask questions about the plots e.g. _`Can you give me a summary of the plot?`_. ![Screenshot to ask](https://4sq-studio-public.s3.us-west-2.amazonaws.com/statics/keplergl/images/kepler-ai-assistant-screenshot.png 'Screenshot to ask') #### How to use this feature? 1. Click the "Screenshot to Ask" button in the chat interface 2. A semi-transparent overlay will appear 3. Click and drag to select the area you want to capture 4. Release to complete the capture 5. The screenshot will be displayed in the chat interface 6. You can click the x button on the top right corner of the screenshot to delete the screenshot ### Talk to Ask This feature enables users to "talk" to the AI assistant. After clicking the "Talk to Ask" button, users can start talking using microphone. When clicking the same button again, the AI assistant will stop listening and send the transcript to the input box. When using the voice-to-text feature for the first time, users will be prompted to grant microphone access. The browser will display a permission dialog that looks like this: ![Talk to ask](https://4sq-studio-public.s3.us-west-2.amazonaws.com/statics/keplergl/images/kepler-ai-assistant-talk-to-ask.png 'Talk to ask') After granting access, users can start talking to the AI assistant. > Note: for OpenAI, the whisper model is used to transcribe the audio. Google's gemini models are multimodal models, so the audio-to-text feature is supported by default. ## Map and Data Analysis Assistant Using LLM function tools, kepler.gl's AI assistant can help transform users's prompt into actions that executed inside kepler.gl. This allows users to interact with kepler.gl in a more natural and creative way. ### Why use LLM function tools? Function calling enables the AI Assistant to perform specialized tasks that LLMs cannot handle directly, such as complex calculations, data analysis, visualization generation, and integration with external services. This allows the assistant to execute specific operations within kepler.gl while maintaining natural language interaction with users. ### Is my data secure? Yes, the data you used in kepler.gl stays within the browser, and will **never** be sent to the LLM. Using function tools, we can engineer the AI assistant to use only the meta data for function calling, e.g. the name of the dataset, the name of the layer, the name of the variables, etc. Here is a process diagram to show how the AI assistant works: ![AI Assistant Diagram](https://4sq-studio-public.s3.us-west-2.amazonaws.com/statics/keplergl/images/kepler-ai-assistant-diagram.png 'AI Assistant Diagram') ### Actions available to use The current supported actions are: - System: - Show dataset/layer/variable info. - Load data from url. - Change the basemap style. - Mapping and Data Analysis: - Create map layer from variable. - Query the data using SQL (coming soon) - Classify the data of a variable. - Quantile / Natural (Jenks) Breaks / Percentile / Box / Standard Deviation - Plots - Create histogram. - Create scatter plot with regression line. - Spatial Analysis: - Spatial join two datasets (e.g. count points and polygons). > Note: to see our plan to add more actions to the AI assistant, please check out this [Kepler.gl RFC](<[https://github.com/kepler-gl/kepler.gl/issues/4689](https://github.com/keplergl/kepler.gl/discussions/2843)>) and the [integration of GeoDa with Kepler.gl](<[text](https://github.com/GeoDaCenter/openassistant/wiki/Integration-Kepler.gl---GeoDaLib)>) Users can simply describe what they want to accomplish in plain text, and the AI Assistant will invoke the appropriate function with the correct parameters that your application can execute. The LLM will identify if the question can be answered by using one or multiple function tools, and the LLM will ask the user to confirm the parameters of each function call. > _Can you classify the data of the variable "population" using natural breaks and create a geojson layer using the breaks with colors inspired by Van Gogh's Starry Night._ #### Plots The plots created by the AI assistant are interactive, and can be used to explore the data. In each plot, there is a small toolbar on the top right corner, which contains three buttons: - **Box Select**: Select the data in the plot. - **Keep Selection**: Keep the selected data in the plot. - **Clear Selection**: Clear the selected data in the plot. One can click the **Box Select** button first. Then, start selecting the data in the plot by left clicking the mouse and dragging the mouse to select the data. The selected data will be highlighted in the plot and also be highlighted in the map. ##### Scatter Plot For scatter plot, the AI assistant will create a scatter plot with a regression line by default. If users select points in the plot, there will be 3 different regression lines created: one for all points, one for the selected points, and one for the unselected points. If users click the 'expand' button on the top right corner of the plot, the plot will be expanded to a floating modal dialog with more details of the regressions shown in a tablt. The regression details include: - R-squared - Slope - Intercept - P-value - Standard Error - Chow test for selected and unselected regression lines This scatter plot can help users to explore the relationship between two variables, and explore the heterogeneity of the data by selecting different points. ![Scatterplot](https://4sq-studio-public.s3.us-west-2.amazonaws.com/statics/keplergl/images/kepler-ai-assistant-scatterplot.png 'Scatterplot') ================================================ FILE: docs/user-guides/b-kepler-gl-workflow/README.md ================================================ # Kepler.gl workflow ## Table of contents * [Add data to the map](./a-add-data-to-the-map.md) * [Adding data layers](./b-add-data-layers/a-adding-data-layers.md) * [Create a layer](./b-add-data-layers/b-create-a-layer.md) * [Hide, edit and delete layers](./b-add-data-layers/c-hide-edit-and-delete-layers.md) * [Blend and rearrange layers](./b-add-data-layers/d-blend-and-rearrange-layers.md) [Back to table of contents](../README.md) ================================================ FILE: docs/user-guides/b-kepler-gl-workflow/a-add-data-to-the-map.md ================================================ # Add Data to the Map ## Ways to Add Data - Open kepler.gl/demo. You should see the following prompt: ![Add data to the map pop up](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image42.png "Add data to the map pop up") **kepler.gl is a pure client side app. Data lives only in your machine/browser. No information or maps is sent back up to our server.** - Choose one of three ways to add data to your map | | | |---|---| | **Local files** | Upload CSV / GeoJSON files. Because data is only stored in your browser, there is a **250mb** limit on how much data Chrome allows you to upload into a browser. For datasets larger than **250mb** you should directly load them from a remote URL. See below. | | **From URL** | Directly load data or map json by pasting a remote URL. You can link it to CSV | JSON | Kepler.gl config json. Make sure the url contains the file extension. CORS policy must be defined on your custom url domain. | | **Sample data** | Load one of kepler.gl’s sample datasets. The sample map data and config are directly loaded from [kepler.gl-data github][kepler.gl-data-github] repo | ## Supported Projection Coordinate System kepler.gl only supports **[Web Mercator]([https://en.wikipedia.org/wiki/Web_Mercator_projection) EPSG:3857 -- WGS84**. Geometry coordinates should be presented with a geographic coordinate reference system, using the WGS84 datum, and with longitude and latitude units of decimal degrees. ## Supported File Formats - [CSV](#csv) - [GeoJSON](#geojson) - [GeoArrow](#geoarrow) - [kepler.gl Json](#keplergl-json) ### CSV CSV file should contain header row and multiple columns. Each row should be 1 feature. Each column should contain only 1 data type, based on which kepler.gl will use to create layers and filters. | id | point_latitude | point_longitude | value | start_time |---|---|---|---|--- | a | 31.2384 | -127.30948 | 5 | 2019-08-01 12:00 | b | 31.2311 | -127.30231 | 11 | 2019-08-01 12:05 | c | 31.2334 | -127.30238 | 9 | 2019-08-01 11:55 #### 1. Data type detection Because CSV file content is uploaded as strings, kepler.gl will attempt to detect column data type by parsing a sample of data in each column. kepler.gl can detect | type | data |---|--- |**_`boolean`_** | `True`, `False`| |**_`date`_** | `2019-01-01`| |**_`geojson`_** | **WKT string:** `POLYGON ((-74.158 40.835, -74.148 40.830, -74.151 40.832, -74.158 40.835))`, **or GeoJson String** `{"type":"Polygon","coordinates":[[[-74.158,40.835],[-74.157,40.839],[-74.148,40.830],[-74.150,40.833],[-74.151,40.832],[-74.158,40.835]]]}` | |**_`integer`_** | `1`, `2`, `3`| |**_`real`_** | `-74.158`, `40.832`| |**_`string`_** | `hello`, `world` | |**_`timestamp`_** | `2018-09-01 00:00`, `1570306147`, `1570306147000`| **Note:** Make sure to clean up values such as `N/A`, `Null`, `\N`. If your column contains mixed type, kepler.gl will treat it as **_`string`_** to be safe. #### 2. Layer detection based on column names kepler.gl will auto detect layer, if the column names follows certain naming convention. kepler.gl creates a point layer if your CSV has columns that are named `_lat` and `_lng` or `_latitude` and `_longitude`, or `_lat` and `_lon`. | layer | auto create layer from column names |---|--- |**Point** | Point layer names have to be in pairs, and **ends with** `lat, lng`; `latitude, longitude`; `lat, lon`| |**Arc**| If two points layers are detected, one arc layer will be created | |**Icon**| A column named `icon` is present| |**H3**| A column named `h3_id` or `hexagon_id` is present | |**Polygon**| A column content contains `geojson` data types. Acceptable formats include [Well-Known Text](http://www.postgis.net/docs/ST_AsText.html) e.g. `POLYGON ((-74.158 40.835, -74.148 40.830, -74.151 40.832, -74.158 40.835))` and [GeoJSON Geometry](https://tools.ietf.org/html/rfc7946#appendix-A). e.g. `{"type":"LineString","coordinates":[[100.0, 0.0],[101.0, 1.0]]}` #### 3. Embed Geometries in CSV Geometries (Polygons, Points, LindStrings etc) can be embedded into CSV as a `GeoJSON` or `WKT` formatted string. ##### `GeoJSON` String Use the geometry of a Feature, which includes type and coordinates. It should be a JSON formatted string, with the `"` corrected escaped. More info on [String escape in csv](https://gpdb.docs.pivotal.io/43250/admin_guide/load/topics/g-escaping-in-csv-formatted-files.html) Example data.csv with GeoJSON ```txt id,geometry 1,"{""type"":""Polygon"",""coordinates"":[[[-74.158491,40.835947],[-74.157914,40.83902]]]}" ``` ##### `WKT`String [The Well-Known Text (WKT)](https://dev.mysql.com/doc/refman/5.7/en/gis-data-formats.html#gis-wkt-format) representation of geometry values is designed for exchanging geometry data in ASCII form. Example data.csv with WKT ```txt id,geometry 1,"POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))" ``` ### GeoJSON #### 1. Feature types - kepler.gl accepts GeoJSON formatted JSON that contains a single [Feature](https://tools.ietf.org/html/rfc7946#section-3.2) object or a [FeatureCollection](https://tools.ietf.org/html/rfc7946#section-3.3) object. kepler.gl creates one **`Polygon`** layer per GeoJSON file. - A single GeoJSON Feature: ```json { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [ [ [-10.0, -10.0], [10.0, -10.0], [10.0, 10.0], [-10.0, -10.0] ] ] }, "properties": { "name": "foo" } } ``` - GeoJSON Feature Collection. ```json { "type": "FeatureCollection", "features": [{ "type": "Feature", "geometry": { "type": "Point", "coordinates": [102.0, 0.5] }, "properties": { "prop0": "value0" } }, { "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0] ] }, "properties": { "prop0": "value0" } }] } ``` kepler.gl will render all features in one `Polygon` layer even though they have different geometry types. Acceptable geometry types are - [Point](https://tools.ietf.org/html/rfc7946#section-3.1.2) - [MultiPoint](https://tools.ietf.org/html/rfc7946#section-3.1.3) - [LineString](https://tools.ietf.org/html/rfc7946#section-3.1.4) - [MultiLineString](https://tools.ietf.org/html/rfc7946#section-3.1.5) - [Polygon](https://tools.ietf.org/html/rfc7946#section-3.1.6) - [MultiPolygon](https://tools.ietf.org/html/rfc7946#section-3.1.7). Feature properties will be parsed as columns. You can apply color, filters based on them. #### 2. Auto styling kepler.gl will read styles from GeoJSON files. If you are a GeoJSON expert, you can add style declarations to feature properties. kepler.gl will use the declarations to automatically style your feature. The acceptable style properties are: ```json "properties": { "lineColor": [130, 154, 227], "lineWidth": 0.5, "fillColor": [255, 0, 0], "radius": 1 // Point } ``` - See an example below: ```json { "type": "FeatureCollection", "features": [{ "type": "Feature", "geometry": { "type": "LineString", "coordinates": [ [-105.1547889, 39.9862516], [-105.1547167, 39.9862691] ] }, "properties": { "id": "a1398a11-d1ce-421c-bf66-a456ff525de9", "lineColor": [130, 154, 227], "lineWidth": 0.1 } }] } ``` ### GeoArrow [GeoArrow](https://geoarrow.org/) file, a binary data format which can be visualized with the [PolygonLayer](https://docs.kepler.gl/docs/user-guides/c-types-of-layers/e-polygon). ### kepler.gl JSON JSON file exported from kepler.gl. See "[Export Map as JSON](https://docs.kepler.gl/docs/user-guides/k-save-and-export#export-map-as-json)". ### Load Map Using URL You load data or map through custom URL. It currently supports URLs with file extension of `csv`, `json` and `kepler.gl.json` In addition, this also by-passes 250mb file upload size limit which allows you to upload larger file to Kepler. ![Load Map Using URL](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/a-load-map-using-url.gif "Load Map Using URL") ### Use Kepler.gl’s Sample Maps The sample maps are a great option for new users to explore Kepler.gl and get a feel for how it works. 1. At the initial load prompt select “Try sample data” in the top right corner. ![Try sample data pop up](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image2.png "Try sample data pop up") 2. Choose from the options to load the sample map and explore the configurations applied. ![Choose sample data pop up](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image5.png "Choose sample data pop up") ### Add multiple datasets To add additional datasets to your map: 1. Click __Add More Data__ in the top right corner. ![Add more data](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image22.png "Add more data") 2. Choose one of the options above: upload a JSON/CSV file, or use Kepler.gl’s sample data. 3. Repeat as needed. There is no limit on the number of datasets you can add. However, adding too many might cause its performance to suffer. [Back to table of contents](../README.md) [kepler.gl-data-github]: https://github.com/keplergl/kepler.gl-data ================================================ FILE: docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/a-adding-data-layers.md ================================================ # Adding Data Layers The term "Layer" refers to a layer of data visualization. For example, you might add a point layer to visualize all the instances where taxi trips began, as in the map of New York City below. ![Sample NYC Map](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image43.png "Sample NYC Map") Each blue dot represents the point (latitude and longitude). Layers work like paint—you can build up multiple layers to change the appearance of the canvas. You might create a second point layer to show trip drop-off locations. The map then looks like this: ![Sample NYC Map with colors](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image6.png "Sample NYC Map with colors") Learn more about the [types of layers](../../c-types-of-layers/README.md) available in Kepler.gl. [Back to table of contents](../../README.md) ================================================ FILE: docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/b-create-a-layer.md ================================================ # Create a Layer 1. Click the Data Layers icon in the left navigation bar. ![Add data layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image39.png "Add data layer") 2. The Layers panel displays a list of existing layers and the name of the dataset the layers belong to (Sample Trip Data, in the example below). To create a new layer, click __Add Layer__ at the bottom of the menu. ![Add layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image16.png "Add layer") 3. If your map contains multiple datasets, you’ll be asked to select the data source for your new layer. ![Select data source for layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image28.png "Select data source for layer") 4. Select a layer type. Read about the different [types of layers]. ![Select layer type](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image41.png "Select layer type") 5. Fill in the required columns and adjust the optional settings if desired. 6. Collapse the layer settings menu when finished. [Back to table of contents](../../README.md) ================================================ FILE: docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/c-hide-edit-and-delete-layers.md ================================================ # Hide, Edit and Delete Layers Each layer has its own tab in the __Data Layers__ menu: ![Hide, edit and delete layers](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image8.png "Hide, edit and delete layers") Click the __down arrow__ to open up the settings menu for that layer. Click the __trashcan__ to delete a layer. Click the __eye__ to toggle show/hide. __Note__: The colored line on the left of each layer tab represents what dataset that layer belongs to. [Back to table of contents](../../README.md) ================================================ FILE: docs/user-guides/b-kepler-gl-workflow/b-add-data-layers/d-blend-and-rearrange-layers.md ================================================ # Blend and Rearrange Layers

Rearrange layers by dragging and dropping them in the Layers panel. The layers at the top of the list will be displayed in the foreground of the map.

Rearrange layers

Blend layers by selecting an option from the dropdown at the bottom of the Layers panel.

Blend layers

There are three different ways to blend layers: Normal, Additive, and Subtractive.

## Normal Blending Normal layer blending does not alter the color values of overlapping data points. ![Normal blending](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image19.png "Normal blending") ## Additive Blending Additive blending adds the color values for overlapping data points. It makes layers, and particularly areas of high density, easier to visualize on a dark-colored map. ![Additive blending](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image34.png "Additive blending") ## Subtractive Blending Subtractive layer blending does not alter the color values of overlapping data points. ![Subtractive blending](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image26.png "Subtractive blending") [Back to table of contents](../../README.md) ================================================ FILE: docs/user-guides/c-types-of-layers/README.md ================================================ # Types of Layers ## Single Feature Layers Single feature layers render 1 feature ## Point ![Point layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image34.png 'Point layer') Point layers draw points for a given event or object based on its location - latitude and longitude. ## Arc ![Arc layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/c-arc-layer.png 'Arc layer') Arc layers draw an arc between two points. They’re useful for visualizing the distance between two points as well as comparing distances in 3D. Note that arc layers don’t show routes between points, but simply the distance between the two points. The tallest arc represents the greatest distance. To draw arcs, your dataset must contain the latitude and longitude of two different points for each arc. Layer Attributes: Color/ Color Based On, Opacity, Stroke Width/ Stroke Based On, High Precision Rendering ## Line ![Line layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/c-line-layer.png 'Line layer') Line layers are the 2D version of arc layers. Both draw a line between two points to represent distance, but in a line layer, the drawing lies flat on the map. Layer Attributes: Color, Stroke, High Precision Rendering ## Hexbin ![Hexbin layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/c-hexbin-layer.png 'Hexbin layer') Hexbin aggregates points into hexagons. The counts can be represented through color and/or height. Layer Attributes: Color/ Color Based On, Filter by Count Percentile, Opacity, Hexagon Radius (km), Coverage (Radius), Enable Height, Elevation Scale/ Height Based On, High Precision Rendering ## Heatmap ![Heatmap layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/c-heat-map.png 'Heatmap layer') Heatmap is a graphical representation of data in which data values are represented as colors. Layer Attributes: Color, Opacity, Radius, Weight ## Cluster ![Cluster layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/c-cluster-layer.png 'Cluster layer') Cluster layers visualize aggregated data based on a geospatial radius. Layer Attributes: Color, Cluster Size ## Icon ![Icon layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image33.png 'Icon layer') Icon layers are a type of point layer. They allow you to differentiate between points by assigning icons to points based on a field. For example, you might use icons to differentiate between types of venues and points of interest. Layer Attributes: Color, Radius, Label, High Precision Rendering To see the icon menu, create a new icon layer and click how to draw an icon layer: ![How to Draw Icon Layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image38.png 'How to Draw Icon Layer') ## Grid ![Grid layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image21.png 'Grid layer') ![3D Grid layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/c-grid-layer.png '3D Grid layer') Grids layers are similar to heatmaps. They show the density of points. They provide visual discrepancy in a map where multiple heatmap-style layers are present. Layer Attributes: Color, Radius, Height, High Precision Rendering ## GeoJSON ![GeoJSON layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image20.png 'GeoJSON layer') ![Polygon geoJSON layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image7.png 'Polygon geoJSON layer') GeoJSON layers can display either paths, polygons or points. For example, a path GeoJSON layer can display data like trip routes. A polygon GeoJSON layer is essentially a [choropleth](https://en.wikipedia.org/wiki/Choropleth_map) layer and works best for rendering geofences. To add a GeoJSON layer, your dataset must contain geometry data. ## H3 ![H3 layer - contour](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/c-h3-layer.png 'H3 layer') H3 layers visualize spatial data using [H3 Hexagonal Hierarchical Spatial Index](https://eng.uber.com/h3/). To use H3 layer, you need a `hex_id` in your dataset, which can be generated using [h3-js](https://github.com/uber/h3-js) from latitude, longitude and resolution. ## S2 Layer ![S2 Layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/l-s2.png 'S2 layer') To use S2 layer, you need to assign a column containing S2 tokens. ## Vector Tile Layer ![Vector Tile layer](https://4sq-studio-public.s3.us-west-2.amazonaws.com/statics/keplergl/documentation/layer-types/vector-tile.png 'Vector Tile Layer') Vector Tile Layer makes it possible to visualize very large datasets through MVTs (Mapbox Vector Tiles). To optimize performance, the layer only loads and renders tiles containing features that are visible within the current viewport. Supported URL templates: - MVT (https://api.mapbox.com/v4/mapbox.mapbox-streets-v8/{z}/{x}/{y}.mvt?access_token=your-mapbox-acceess-token) - pmtiles (https://your-cdn/filename.pmtiles) For step-by-step instructions, see [Vector Tile Layer — How to add](./m-vector-tile-layer.md). ## Raster Tile Layer (experimental) ![Raster Tile layer](https://4sq-studio-public.s3.us-west-2.amazonaws.com/statics/keplergl/documentation/layer-types/raster-tile.png 'Raster Tile Layer') Raster layers are used to show satellite and aerial imagery. They allow you to work interactively directly with massive, image collections stored in .pmtiles (in raster format) or Cloud Optimized GeoTIFF format. Supported URL templates: - Users can reference remote **.pmtiles files in raster format** for raster layers by supplying a direct link to the file. - **Cloud-Optimized GeoTIFFs (COG)** can also be used in raster layers by providing standardized Spatio-Temporal Asset Catalog (STAC) metadata. - The metadata file must be a valid _STAC Item_ or _STAC Collection_, version 1.0.0 or higher. - Raster data referenced in STAC assets should be Cloud-Optimized GeoTIFFs and need to be publicly accessible via HTTPS. - STAC item and collections _must have Electro-Optical and Raster extensions_, and at least one asset must have both eo:bands and raster:bands information. common_name must be provided in eo:bands and data_type must be provided in raster:bands. - To use COGs with STAC metadata, you must run your own raster tile server (e.g., TiTiler). Example implementation: [kepler-raster-server](https://github.com/igorDykhta/kepler-raster-server). Examples of raster .pmtiles: - Mount Whitney - https://pmtiles.io/usgs-mt-whitney-8-15-webp-512.pmtiles - Swiss historical - https://public-bucket-for-tests.s3.us-east-1.amazonaws.com/historic-swis-18xx.pmtiles Examples of supported STAC Items: - Bangladesh rivers — https://4sq-studio-public.s3.us-west-2.amazonaws.com/sdk/examples/sample-data/raster/planet-skysat-opendata.json - Antarctica ice — https://4sq-studio-public.s3.us-west-2.amazonaws.com/sdk/examples/sample-data/raster/sentinel-2-l2a.json - Kiribati island — https://4sq-studio-public.s3.us-west-2.amazonaws.com/sdk/examples/sample-data/raster/stac-example.json Examples of supported STAC Collections: - sentinel-2-l1c — https://earth-search.aws.element84.com/v1/collections/sentinel-2-l1c - modis-09A1-061 — https://planetarycomputer.microsoft.com/api/stac/v1/collections/modis-09A1-061 - landsat-c2-l1 — https://planetarycomputer.microsoft.com/api/stac/v1/collections/landsat-c2-l1 For step-by-step instructions, see [Raster Tile Layer — How to add](./n-raster-tile-layer.md). ## WMS Layer (experimental) ![WMS layer](https://4sq-studio-public.s3.us-west-2.amazonaws.com/statics/keplergl/documentation/layer-types/wms.png 'WMS Layer') - Web Map Service (WMS) layers render raster tiles from OGC WMS servers. - This feature is experimental and disabled by default. To try it, enable `enableWMSLayer: true` in the application configuration. - When enabled, add a WMS service via the Tilesets modal by providing the service URL and selecting a named layer. Feature info on click is supported for queryable layers. Examples of supported WMS Tiles: - https://ows.terrestris.de/osm/service - https://opengeo.ncep.noaa.gov/geoserver/conus/conus_cref_qcd/ows - https://gibs.earthdata.nasa.gov/wms/epsg4326/best/wms.cgi - https://geo.stadt-muenster.de/mapserv/starkregen_serv For step-by-step instructions, see [WMS Layer — How to add](./o-wms-layer.md). [Back to table of contents](../README.md) ================================================ FILE: docs/user-guides/c-types-of-layers/a-point.md ================================================ # Point ![Point layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image34.png "Point layer") Point layers draw points for a given event or object. __Layer Attributes__ - Basic - Columns: - Latitude - Longitude - Altitude (optional) - Fill - Enable fill - enabled by default - Single color / color based on - Color scale - Opacity - Outline - Enable outline - Single color / color based on - Color scale - Stroke width - Radius - Single radius / radius based on - Fixed radius to meter - Text, - Font Size - Font Color - Text Anchor [Back to table of contents](../README.md) ================================================ FILE: docs/user-guides/c-types-of-layers/b-arc.md ================================================ # Arc ![Arc layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image37.png "Arc layer") Arc layers draw an arc between two points. They’re useful for visualizing the distance between two points as well as comparing distances in 3D. Note that arc layers don’t show routes between points, but simply the distance between the two points. The tallest arc represents the greatest distance. To draw arcs, your dataset must contain the latitude and longitude of two different points for each arc. [Back to table of contents](../README.md) ================================================ FILE: docs/user-guides/c-types-of-layers/c-line.md ================================================ # Line ![Line layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image3.png "Line layer") Line layers are the 2D version of arc layers. Both draw a line between two points to represent distance, but in a line layer, the drawing lies flat on the map. [Back to table of contents](../README.md) ================================================ FILE: docs/user-guides/c-types-of-layers/d-grid.md ================================================ # Grid ![Grid layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image21.png "Grid layer") ![3D Grid layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image17.png "3D Grid layer") Grids layers are similar to heatmaps. They show the density of points. They provide visual discrepancy in a map where multiple heatmap-style layers are present. [Back to table of contents](../README.md) ================================================ FILE: docs/user-guides/c-types-of-layers/e-polygon.md ================================================ # Polygon Polygon layer can display all geometry types defined by [RFC 7946 (GeoJSON)](https://tools.ietf.org/html/rfc7946): `Point`, `LineString`, `Polygon`, `MultiPoint`, `MultiLineString`, `MultiPolygon`. You can load a GeoJSON file (with a single [`Feature`](https://tools.ietf.org/html/rfc7946#section-3.2) or a [`FeatureCollection`](https://tools.ietf.org/html/rfc7946#section-3.3)) or a GeoArrow file. ![GeoJSON layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image20.png "GeoJSON layer") ![Polygon layer - contour](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/layers-polygon-contour.png "Polygon layer") ![Polygon geoJSON layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image7.png "Polygon geoJSON layer") ![Polygon layer - buildings](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/layers-polygon-buildings.png "Grid layer") A path GeoJSON layer can display data like trip routes or contours. Stroke color can be set with a numerical field. A polygon GeoJSON layer is essentially a [choropleth](https://en.wikipedia.org/wiki/Choropleth_map) layer and works best for rendering geofences. Fill color or height can be set with a numerical field. For example, it can display population by census tracts. To add a polygon layer, your dataset must contain geometry data. [Back to table of contents](../README.md) ================================================ FILE: docs/user-guides/c-types-of-layers/f-cluster.md ================================================ # Cluster ![Cluster layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image46.png "Cluster layer") Cluster layers visualize aggregated data based on a geospatial radius. [Back to table of contents](../README.md) ================================================ FILE: docs/user-guides/c-types-of-layers/g-icon.md ================================================ # Icon ![Icon layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image33.png "Icon layer") Icon layers are a type of point layer. They allow you to differentiate between points by assigning icons to points based on a field. For example, you might use icons to differentiate between types of venues and points of interest. To see the icon menu, create a new icon layer and click how to draw an icon layer: ![How to Draw Icon Layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image38.png "How to Draw Icon Layer") [Back to table of contents](../README.md) ================================================ FILE: docs/user-guides/c-types-of-layers/h-hexbin.md ================================================ # Hexbin ![Hexbin layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/layers-hexbin.png "Hexbin layer") Hexbin layers are similar to grid layers. They display distributions of aggregate metrics such as point count within each hexbin, average/max/min/median/sum of a numerical field, or mode/unique count of a string field. Both the color and height dimensions can encode data. Users can adjust the hexagon radius and the space between hexbins. [Back to table of contents](../README.md) ================================================ FILE: docs/user-guides/c-types-of-layers/i-heatmap.md ================================================ # Heatmap ![Heatmap layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/layers-heat-map.png "Heatmap layer") Heatmap layers describe the intensity of data at geographical points through a colored overlap. The intensity can be weighted by a numerical field. [Back to table of contents](../README.md) ================================================ FILE: docs/user-guides/c-types-of-layers/j-h3.md ================================================ # H3 ![H3 layer - contour](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/layers-h3.png "H3 layer") H3 layers visualize spatial data using [H3 Hexagonal Hierarchical Spatial Index](https://eng.uber.com/h3/). To use H3 layer, you need a `hex_id` or `hexagon_id` in your dataset, which can be generated using [h3-js](https://github.com/uber/h3-js) from latitude, longitude and resolution. ### Naming Convention kepler.gl __auto generates__ H3 layer from column: `hex_id`, `hexagon_id` ### Sample dataset: hex_id | value | |----------|:------:| 89283082c2fffff | 64 | 8928308288fffff | 73 | 89283082c07ffff | 65 | 89283082817ffff | 74 | 89283082c3bffff | 66 | 89283082883ffff | 76 | [Back to table of contents](../README.md) ================================================ FILE: docs/user-guides/c-types-of-layers/k-trip.md ================================================ # Trip layer Trip layer can display animated path. ![Trip layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/k-trip.gif 'Trip layer') ### How to use trip layer to animate path **Data format** Currently trip layer support a special `geoJSON` format where the coordinate `linestring` has a 4th element denoting timestamp. In order to animate the path, the `geoJSON` data needs to contain `LineString` in its features' geometry, and the coordinates in the `LineString` need to have 4 elements in the format of `[longitude, latitude, altitude, timestamp]`, with the last element being a timestamp. Valid timestamp formats include unix in seconds such as `1564184363` or in milliseconds such as `1564184363000`. **Sample data** ``` { "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": { "vendor": "A" }, "geometry": { "type": "LineString", "coordinates": [ [-74.20986, 40.81773, 0, 1564184363], [-74.20987, 40.81765, 0, 1564184396], [-74.20998, 40.81746, 0, 1564184409] ] } } ] } ``` **Note** Support for more data formats such as csv will be added in future releases. **Layer attributes** - Color The path can be colored by an attribute from the properties. - Stroke Width Stroke width can be set by an attribute from the properties. - Trail Length Trail length determines how long it takes for a path to completely fade out in seconds. This can be adjusted using the slider. Short trail length retains few historical locations while long trail length retain more and show a longer tail. - Animation speed Animation speed can be adjusted using the animation control at the bottom. **When there are multiple layers** - Multiple trip layers When you add multiple trip layers, the time range from all the layers will be combined and the animation control will span the entire time range of those layers. - Multiple layers containing trip layer and other layers Other static layers can be added besides the trip layers. Upon hiding the trip layer, its animation control will also hide, giving place to the filter control. **Export** To export an animated map, you can use a screen recording or gif capture tool. You can also export the map as an interactive HTML to open in the browser. [Back to table of contents](../README.md) ================================================ FILE: docs/user-guides/c-types-of-layers/l-s2.md ================================================ # S2 Layer ![S2 Layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/l-s2.png 'S2 layer') To use S2 layer, you need to assign a column containing S2 tokens. ### Naming Convention Kepler.gl **auto generates** S2 layer from column named `s2` or `s2_token` ### Simple Dataset | token | value | | -------- | :-----------------: | | 80858004 | 0.5979242952642347 | | 8085800c | 0.5446256069712141 | | 80858014 | 0.1187171597109975 | | 8085801c | 0.2859146314037557 | | 80858024 | 0.19549012367504126 | | 80858034 | 0.3373452974230604 | | 8085803c | 0.9218176408795662 | | 80858044 | 0.23470692356446143 | | 8085804c | 0.1580509670379684 | | 80858054 | 0.15992745628743954 | [Back to table of contents](../README.md) ================================================ FILE: docs/user-guides/c-types-of-layers/m-vector-tile-layer.md ================================================ # Vector Tile Layer — How to add Follow these steps to add a Vector Tile layer (MVT or pmtiles): 1. Open Add Data → Tilesets. 2. Select Vector Tile tileset type. 3. Enter a tileset URL: - Mapbox Vector Tiles (MVT) template, e.g. `https://api.mapbox.com/v4/mapbox.mapbox-streets-v8/{z}/{x}/{y}.mvt?access_token=YOUR_TOKEN` - pmtiles URL, e.g. `https://your-cdn/filename.pmtiles` 4. Click Add. A new Vector Tile layer will appear in the Layers panel. 5. Style the layer (color, stroke, height, dynamic color) in the Layers panel. Notes: - Use Vector Tile layer for vector data in MVT/pmtiles formats. For raster pmtiles or COG/STAC imagery, use Raster Tile layer. Example Vector Tile sources: - US population — https://4sq-studio-public.s3.us-west-2.amazonaws.com/vector-tile/cb_v2/{z}/{x}/{y}.pbf - New Zealand buildings — https://r2-public.protomaps.com/protomaps-sample-datasets/nz-buildings-v3.pmtiles - US Zip Codes - https://r2-public.protomaps.com/protomaps-sample-datasets/cb_2018_us_zcta510_500k.pmtiles - Railways — https://4sq-studio-public.s3.us-west-2.amazonaws.com/pmtiles-test/161727fe-7952-4e57-aa05-850b3086b0b2.pmtiles [Back to layer overview](./README.md) ================================================ FILE: docs/user-guides/c-types-of-layers/n-raster-tile-layer.md ================================================ # Raster Tile Layer — How to add (experimental) Use Raster Tile layer to visualize satellite/aerial imagery from raster pmtiles or COGs via STAC metadata. 1. Open Add Data → Tilesets. 2. Select Raster Tile tileset type. 3. Paste URL to the tileset: - pmtiles (raster format): provide a direct HTTPS URL to a .pmtiles file containing raster imagery. Raster pmtiles don't require dedicated raster tile servers, unless you want to use elevation meshes. - STAC Item/Collection (COGs): provide a HTTPS URL to a STAC Item or Collection (v1.0.0+ with EO + Raster extensions). For this option you need to provide a [compatible raster tile server](https://github.com/igorDykhta/kepler-raster-server). 4. Click Add. 5. Style band selection and opacity as needed in Layers panel. Important notes for COGs via STAC: - The STAC Item/Collection must include EO and Raster extensions with `eo:bands` and `raster:bands` . - COG assets must be publicly accessible over HTTPS. - You must run your own raster tile server (e.g., TiTiler). Example implementation that supports collections and elevations: [kepler-raster-server](https://github.com/igorDykhta/kepler-raster-server). # Elevation To enable elevation rendering, you must provide one or more compatible raster tile servers when adding the tileset. Enter them in the "Raster tile servers" field of the Add Tileset form. - For STAC Items/Collections: compatible raster tile servers are required. - For raster .pmtiles: raster tile servers are optional for imagery, but required if you plan to use elevation. - The server must expose COGs as XYZ tiles and support elevation/DEM tiles. Example implementation: [kepler-raster-server](https://github.com/igorDykhta/kepler-raster-server) (TiTiler-based). Example Raster .pmtiles: - Mount Whitney - https://pmtiles.io/usgs-mt-whitney-8-15-webp-512.pmtiles - Swiss historical - https://public-bucket-for-tests.s3.us-east-1.amazonaws.com/historic-swis-18xx.pmtiles Example STAC Items: - Bangladesh rivers — https://4sq-studio-public.s3.us-west-2.amazonaws.com/sdk/examples/sample-data/raster/planet-skysat-opendata.json - Antarctica ice — https://4sq-studio-public.s3.us-west-2.amazonaws.com/sdk/examples/sample-data/raster/sentinel-2-l2a.json - Kiribati island — https://4sq-studio-public.s3.us-west-2.amazonaws.com/sdk/examples/sample-data/raster/stac-example.json Example STAC Collections: - sentinel-2-l1c — https://earth-search.aws.element84.com/v1/collections/sentinel-2-l1c - modis-09A1-061 — https://planetarycomputer.microsoft.com/api/stac/v1/collections/modis-09A1-061 - landsat-c2-l1 — https://planetarycomputer.microsoft.com/api/stac/v1/collections/landsat-c2-l1 [Back to layer overview](./README.md) ================================================ FILE: docs/user-guides/c-types-of-layers/o-wms-layer.md ================================================ # WMS Layer — How to add (experimental) Use WMS Layer to render imagery from OGC Web Map Service (WMS) endpoints. 1. Open Add Data → Tilesets. 2. Select WMS tileset type. 3. Enter the WMS service URL (GetCapabilities endpoint or base service URL). 4. Click Add. A new WMS layer will appear in the Layers panel. 5. In the Layers panel you can select a named layer from the service. Notes: - Feature info on click is supported for queryable layers (`queryable=true`). Example WMS services: - https://ows.terrestris.de/osm/service - https://opengeo.ncep.noaa.gov/geoserver/conus/conus_cref_qcd/ows - https://gibs.earthdata.nasa.gov/wms/epsg4326/best/wms.cgi - https://geo.stadt-muenster.de/mapserv/starkregen_serv [Back to layer overview](./README.md) ================================================ FILE: docs/user-guides/c-types-of-layers/vector.md ================================================ # Vector Layer Vector layers use the three basic GIS features – lines, points, and polygons – to represent real-world features in digital format. ![Vector layer](https://4sq-studio-public.s3.us-west-2.amazonaws.com/statics/keplergl/images/kepler-vector.gif 'Vector layer') # Settings The following tables describe every setting in the Vector Tile layer. ## Basic Core settings for the Vector layer. | Setting | Description | | ---------- | -------------------------------------------- | | Layer Type | Must be Vector Tile to use the Vector layer. | ## Fill Color Settings related to the fill color of the vector data. | Setting | Description | | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | | Color Based On | The field to base the fill color on. | | Color Scale | The color scale and palette for the fill color. | | Dynamic Color | Enable to estimate color range and scale based on tiles selected for rendering. When panning the map, the color scale will update dynamically. | | Opacity | The opacity of the fill color. 100 = fully opaque, 0 = fully transparent. | ## Stroke Color Settings related to the stroke/outline color of the Vector layer. | Setting | Description | | --------------------- | ---------------------------------------------------------------------------------- | | Stroke Color | Toggle to enable stroke. | | Stroke Color Based On | A column to base the stroke color on. When enabled, a color scale can be selected. | | Color | The color or color scale to use for the stroke. | | Opacity | The opacity of the stroke. | ## Stroke Width Settings related to the stroke/outline width of the Vector layer. | Setting | Description | | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | | Stroke Width | Toggle to enable stroke. | | Stroke Width Slider | Slide or enter a number to select the width of the stroke/outline in pixels. When "Stroke Based On" is selected, this becomes a range. | | Stroke Based On | A column to base the stroke width on. | | Stroke Scale | The method by which to scale the stroke/outline size. Choose between Linear, Sqrt, and Log. | ## Height > Note: Height only affects polygons on your map, not points. Height settings for the Vector layer. Height is best viewed with the 3D viewing mode. | Setting | Description | | --------------- | -------------------------------------------------- | | Height Slider | Increase to raise the height of the layer objects. | | Height Based On | A column to base the height on. | | Height Scale | Choose from linear, sqrt, and log. | | Fixed Height | Applies height without additional modifications. | [Back to table of contents](../README.md) ================================================ FILE: docs/user-guides/d-layer-attributes.md ================================================ # Layer Attributes | Layer Attribute | Description | Available in | | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------- | | Color/Color based on | Choose the color of your layer or assign color based on a field from your dataset(s). | All layers | | High-precision rendering | Activate high-precision rendering when zooming in closely on a layer. High-precision rendering sometimes results in a performance cost. | Point, Arc, Line, Icon, GeoJSON, Hexagon, Grid | | Radius/Radius based on | Change the radius of points or assign radius values based on a field from your dataset(s). | Point, Icon, GeoJSON | | Opacity | Change the transparency of a layer. 1 = opaque, 0 = invisible. | All layers | | Cluster size | Change the granularity of clusters. The lower the numerical value, the smaller the geospatial radius that will be used to aggregate clusters. | Cluster | | Radius range | Set a lower and upper threshold for projected radius size. | Point, Icon, Geojson, Cluster | | Stroke width/stroke width based on | Change the thickness of lines and arcs, or assign a width based on a field from your dataset(s). | Arc, line, Geojson | | Stroke width range | Set a lower and upper threshold for projected stroke width. | Arc, Line, Geojson | | Grid size | Change the number of square kilometers covered by each grid square. | Grid | | Color Palette | Choose from multiple, predefined or customized color palettes to apply to your layer. Predefined palettes are either Uber or ColorBrewer colors. | All layers | | Color Scale | Choose either a quantile or quantized color scale. A quantile color scale is determined by rank, while a quantized color scale is determined by value. | All layers | | Height based on | Assign grid square height based on a field from your dataset. | Grid, Hexagon, S2 | | Filter by count percentile | Increase or decrease the number of grid squares by choosing a range of percentiles to display. | Grid, Hexagon | | Coverage | Change what portion of each grid cell is covered by a color square. | Grid, Hexagon | | Height Scale | Change the height of the grid squares, hexagons or S2 when in 3D mode. | Grid, Hexagon, S2 | | Stroked | When activated, draws outlines around geoshapes. | GeoJSON, Point | | Filled | When activated, geo shapes are filled in with colors. | GeoJSON | | Extruded | In 3D mode, assign polygon height values based on some value from your dataset. | GeoJSON | | Wireframe | Create outlines around extruded polygons. | GeoJSON | | Stroke or radius based on | Control the radius/thickness of GeoJSON line and point features. | GeoJSON | [Back to table of contents](README.md) ================================================ FILE: docs/user-guides/e-filters.md ================================================ # Filters Add filters to your map to limit the data that is displayed. Filters must be based on the columns in your dataset. To add a filter: 1. Select Filters from the right navigation bar. ![select filters](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image1.png "select filters") 2. The Filters panel displays the list of existing filters, color-coded by dataset. To create a new filter, Click __Add Filter__. 3. Choose a dataset, and then a field on which to filter your data. Filter values are defined by field data type (number, string, timestamp, etc.). ![choose a dataset](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image29.png "choose a dataset") 4. Your filter is applied to your map as soon as you specify the field and value. 5. Delete a filter anytime by clicking the __trashcan__ to the right of the filter you wish to delete. __Note__: filters apply to all layers in the same dataset on your map. [Back to table of contents](README.md) ================================================ FILE: docs/user-guides/f-map-styles.md ================================================ # Map Styles - [Base Map Styles](#base-map-styles) - [Toggle Map Layers](#toggle-map-layers) - [Map Layers](#map-layers) - [Layer Order](#layer-order) - [Custom Map Styles](#custom-map-styles) ![map styles](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/f-map-styles-0.png "Map panel") kepler.gl provide a set of [Mapbox](https://www.mapbox.com) basemap styles as background map, including 3D buildings! You can also add your own custom map sytle using the Mapbox style link. ## Base Map Styles Open the __Base Map panel__ to select from a list of default map styles. ![base map panel](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/f-map-styles-1.png "base map panel") Open the __base map style__ drop down menu to change map color scheme and imagery. Options include: - __Dark__: dark base map with light-colored text. - __Light__: light base map with dark-colored text. ## Toggle Map Layers ![map layers](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/f-map-styles-2.png "map layers") #### Map Layers Hide and show water, buildings, roads, and more. Options include: - __Labels__: shows labels for cities, neighborhoods, and so on. - __Roads__: displays a translucent layer of road lines. - __Borders__: shows state and continent borders. - __Buildings__: shows building footprints. - __Water__: displays bodies of water. - __Land__: Shows parks, mountains, and other landscape features. - __3d Building__: Shows 3D buildings on the map. 3D buildings are only visible in the 3D map view. Resolution automatically updates based on current map zoom level. Use the input below to edit 3D bulding color. ![3d building](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/f-map-styles-3.png "3d buldings") #### Layer Order To control the order in which map imagery layers are displayed, toggle the move to top icon: ![move to top icon](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/f-map-styles-4.png "move to top icon"). __TIP__: Move labels to the top on maps with colored layers to keep the labels from being concealed. ![Examales of ordered layers](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/f-map-styles-5.png "examples of ordered layers") ## Custom Map Styles ![Add Custom Mapbox Styles button](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image45.png "Add Custom Mapbox Styles button") To add a custom base map style, click the add map style button to open the custom map style modal, paste in the mapbox [style Url](https://www.mapbox.com/help/studio-manual-publish/#style-url). Note that you need to paste in your [mapbox access token](https://www.mapbox.com/account/) if your style is not [published](https://www.mapbox.com/help/studio-manual-publish/#style-url). ![Add Custom Mapbox Styles popup](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image13.png "Add Custom Mapbox Styles popup") [Back to table of contents](README.md) ================================================ FILE: docs/user-guides/g-interactions.md ================================================ # Interactions - [Tooltips](#tooltips) - [Brushing](#brushing) - [Display Coordinates](#display-coordinates) You can toggle customization options on your map, including tooltips, brush highlighting, map imagery (water, parks, etc.), and more. ![Interaction menu](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/g-interactions-0.png "Interaction menu") To toggle customization options on your map: 1. Open the Interactions menu by clicking the Interactions icon: 2. Click the switch next to the options you wish to activate/deactivate. There are three types of interactions to choose from: __Tooltip__, __Brushing__ and __Coordinate__. Note that only one of tooltip and brushing can be on at a time. ## Tooltips tooltip displays metrics when hovering over a data point. You can choose which fields are displayed from the tooltip config menu. ![tooltips](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image25.png "tooltips") - __Image__ Image can be added to tooltip. If field name contains `` and the field content contains `http` url |id| `-tooltip` | |---|---| |1|`http://my-image.com/my-image-0.png`| |2|`http://my-image.com/my-image-1.png`| - __Web link__ Tooltip can be a clicable weblink. To add a web link as tooltip, add url starts with `http://` to the field content. ![tooltips](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/g-interactions-1.png "tooltips") Tip: click a point to pin the tooltip info to the map. To unpin the tooltip, press the blue pin icon. ![pin/unpin tooltip](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image15.png "pin/unpin tooltip") ## Brushing - __Brush__: Brush allows you to highlight areas with the cursor. When brush is turned on, all layers darken. Only the portion you hover over with the cursor is illuminated. Brush works well with arc layers in particular. ![brush](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image12.png "brush") [Back to table of contents](README.md) ## Display Coordinates ![coordinate](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/g-interactions-2.png "coordinate") When then on coordinate, a panel contains latitude and longitude will follow your mouse [Back to table of contents](README.md) ================================================ FILE: docs/user-guides/h-playback.md ================================================ # Playback Follow these steps to create a playback video of an event: 1. Add a filter based on a time-related field, like timestamp. For GeoJson, property field should contain a timestamp entry. 2. The playback window will appear on the bottom of the map. The bars are distribution graphs of all data points by time. Select the desired rolling time window: ![select filters](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/h-playback-1.png "select filters") 3. Press play to start the video. Click on the speed value and select/input your desired value _1x_, _2x_, _4x_ on the top right to change the playback speed. ![change speed](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/h-playback-2.gif "select filters") 4. Choose custom y axis. You can click __Select Y Axis__ to change the default distribution graph to a timeseries of the selected column. An example use of this function is to show a distance vs. time graph of a given trip. ![custom y axis](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/h-playback-3.png "select filters") [Back to table of contents](README.md) ================================================ FILE: docs/user-guides/i-FAQ.md ================================================ # FAQ ## Can I export my map to a video file? Kepler.gl does not have built-in functionality for exporting video. It only allows you to export maps as an image. However, you can use screen capture softwares such as Quicktime Player, LICEcap, Giffy, and others to export your map. ## How can I get data from my back-end service into Kepler.gl? You can create a react redux app with kepler.gl as your map display component, requesting data with any kind of server-side calls. The kepler.gl demo app uses simple AJAX calls to load data from a URL. ## Is there a limit on the number of datasets that can be added to a map? There is no limit, but the more datasets you add, the more likely it is that performance will suffer. ## What is the maximum file upload size? Kepler.gl accepts files no larger than 250mb in chrome. You can load bigger files in safari, but performance will be limited. ## How many layers can I add to a map? There is no limit on the amount of layers you can add. However, note that the more layers you have on your map, the more likely it is that performance will suffer. ## Why does my layer color change during filtering? When layer color is based on a numerical value (e.g, trip fare, distance, ETA), Kepler.gl recalculates the color scale based on filtered data. This is not the case for categorical values such as vehicle_name, cuisine_type and app version. [Back to table of contents](README.md) ================================================ FILE: docs/user-guides/j-get-started.md ================================================ # Get Started Kepler.gl is a tool designed for geospatial data analysis. This guide will help you get started creating visualizations in kepler.gl. ## 1) Add Data to your Map ![Add data to the map pop up](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image42.png "Add data to the map pop up") Kepler.gl will prompt you to add data to your map as soon as you open the web page. Upload your own CSV or GEOJSON file, or add kepler.gl sample data. Sample data is a great way to explore and get familiar with kepler.gl’s features. Read more about adding [Add data to the map](./b-kepler-gl-workflow/a-add-data-to-the-map.md). ## 2) Add Layers ![Add layer](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/j-get-started-layers.png "Add layer") Open the Data Layers menu to start building your visualization. Layers are simply data visualizations that can be built on top of one another. The map pictured above contains a GeoJSON path layer showing trip routes. If you’re new to kepler.gl, play around with the different settings for each type of layer. Layers of the same type can differ greatly in appearance depending on how they’re configured, opening up new possibilities for data analysis. Learn more about [adding data layers](./b-kepler-gl-workflow/b-add-data-layers/a-adding-data-layers.md) . ## 3) Add Filters ![choose a dataset](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/add-filter.png "choose a dataset") Add filters to your map to limit the data that is displayed. Filters must be based on the columns in your dataset. To create a new filter, open the Filter menu and click Add Filter. Note that filters apply to all layers and cannot be toggled on and off. Learn more about [filters](./e-filters.md). ## 4) Customize Map Settings ![Customize Map Settings](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/interactions.png "Customize Map Settings") Change the settings on your map in the Interactions and Base Map menus. Customization options include tooltips, brush highlighting, base map style, map imagery toggles (water, parks, satellite image, etc.), and many more. Read about [base map styles](./f-map-styles.md), [interactions](./g-interactions.md) and [map settings](./m-map-settings.md). ## 5) Save and Export ![Save and Export](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/export-save.png "Save and Export") Save your map as an image, export current map data, export current map as a json file to be load back into kepler.gl. Read about [Save and export](./k-save-and-export.md). [Back to table of contents](README.md) ================================================ FILE: docs/user-guides/k-save-and-export.md ================================================ # Save and Export ![Save and Export](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/k-save-and-export-1.png "activate interactions") kepler.gl is a client-side only application. In the demo app, the data you uploaded stays in your browser. kepler.gl does not send or store any user data to any backends. This rule poses an limitation on how you can save and share your maps. However, in the demo app, you can: - [Export map as an image](#export-image). - [Export filtered or unfiltered data as a csv](#export-data). - [Export Map](#export-map) - [Share Public URL (Dropbox)](#export-dropbox) ## Export Image ![Export Image](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/k-save-and-export-2.png "activate interactions") You can export the current map as an image. The export window will use the current map viewport, and the preview will show the entire exported map area. To adjust the viewport, you will have to close the export dialog. You can choose different export ratios or resolutions, and also to add a map legend. ## Export Data ![Export Data](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/k-save-and-export-3.png "activate interactions") You can export map data as a csv file, with the option to export ONLY the filtered data or the entire dataset. ## Export Map You can export the current map using two different formats. The __Export Map__ window provides two options: - HTML: create a single html file loads and renders your current map. - JSON: create a json file with your current map config and data. ### Export Map as HTML ![Export Map as HTML](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/k-save-and-export-4.png "activate interactions") To save and export your current map as HTML file, click on __Export Map__ and subsequently on __Export__. When prompted provide your own mapbox token to be used in the newly generated file. If you don't provide a Mapbox Token, Kepler.gl will use a default one which can expire at anytime without any communication and therefore break your your existing map. #### How to update an exported map token In order to edit the mapbox token in your html file you simply need to perform the following steps: 1. [Create a new mapbox token](https://docs.mapbox.com/help/how-mapbox-works/access-tokens/) or use your existing one. 2. Open the kepler.gl.map file with your favorite text editor. 3. Locate the following line in the exported file __kepler.gl.html__: ```javascript /** * Provide your MapBox Token **/ const MAPBOX_TOKEN = 'CURRENT_TOKEN'; ``` 4. Replace the current value a new valid token. The code should now look like the following: ```javascript /** * Provide your MapBox Token **/ const MAPBOX_TOKEN = 'pk.eyJ1IjoidWJlcmRh...'; ``` ### Export Map as JSON ![Export Map as JSON](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/k-save-and-export-5.png "activate interactions") You can export the current map as a `json` file. This is useful when you are running your own kepler.gl application and want to load your map programmatticaly. The JSON file includes: - dataset: processed data to create used to render your map - config: layer, filter, map style and interaction settings. The map config includes the current layer, filter, map style and interaction settings. **Note:** kepler.gl map config is coupled with loaded datasets. The __`dataId`__ key is used to bind layers, filters and tooltip settings to a specific dataset. If you try to upload a configuration with a dataset in your own kepler.gl app, you also need to make sure your dataset __`id`__ matches the __`dataId`__ in the config. ## Share Public URL (Dropbox) ![Export Map to Dropbox](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/k-save-and-export-5.png "activate interactions") To export the current map into your Dropbox account, click on __Share Public Url__ and select Dropbox as your cloud storage. Perform the authentication against Dropbox using your credentials. Once the authentication process is completed, click on __Upload__ and Kepler.gl will push your current map onto your account. At the end of the process Kepler.gl will automatically generate a permalink for your work you can share with other users. [Back to table of contents](README.md) ================================================ FILE: docs/user-guides/l-color-attributes.md ================================================ # Color Palettes Color palettes pride both predefined and customized options and can be applied to either fill or stroke. Predefined palettes comes in diverging, sequential and qualitative types. To choose a palette: 1. Expand layer pane and click on the color bar from either filled color or stroke color section. Click on the three dots to select the field to color by. expand 2. To choose a custom palette, toggle on custom button. Click on each color to pick new color either by clicking on the color picker or inputting HEX/RGB values. Colors steps can be added, removed or shuffled. toggle toggle 3) Your color is applied to your map as soon as you select the predefined palette or confirm the choices of customized colors. toggle [Back to table of contents](README.md) ================================================ FILE: docs/user-guides/m-map-settings.md ================================================ # Map Settings - [Split Maps](#split-maps) - [View Maps in 3D](#view-maps-in-3d) - [Display Legend](#display-legend) ![Map Settings](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/m-map-settings-0.png "Split Maps") ## Split Maps You can display a side-by-side comparison of the same map area with different layers with the Split Map functionality. ![Split Maps](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image36.png "Split Maps") 1. Enable this by clicking the Split Map icon in the top right corner of your map: ![Split Maps Icon](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/m-map-settings-split.png "Split Maps Icon") 2. Toggle the layers visible in each map with the layer icon in the top right corner of each map. ![Split Maps Icon](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/m-map-settings-layer.png "Split Maps Icon") ![Toggle Layers](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image35.png "Toggle Layers") 3. Zoom in and out on each map and the other will automatically mimic. ## View Maps in 3D View your map in 3D by clicking the 3D icon in the top right corner of your map ![View Maps in 3D](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/m-map-settings-3d.png "View Maps in 3D") - __drag__: pan - __cmd + drag__ (mac) or __ctrl + drag__ (win): rotate ![Map in 3D](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/f-map-styles-7.png "Map in 3D") ## Display Legend View your map in 3D by clicking the 3D icon in the top right corner of your map: ![Display Legend](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/m-map-settings-legend.png "Display Legend") ![Sample Legend](https://d1a3f4spazzrp4.cloudfront.net/kepler.gl/documentation/image14.png "Sample Legend") [Back to table of contents](README.md) ================================================ FILE: docs/user-guides/sql-data-explorer.md ================================================ # SQL/DuckDB Data Explorer **This feature is currently undergoing development. Stay tuned for updates!** The new SQL data explorer provides a DucKDB instance where you can use SQL to transform and add data to the map. ![SQL Data Explorer](https://4sq-studio-public.s3.us-west-2.amazonaws.com/statics/keplergl/images/kepler-duck-db.png 'SQL Data Explorer') You will need local data (i.e. data upload for your machine) or data accessible via a remote URL. Any dataset already added to kepler can be accessed via SQL editor by selecting it via its name in kepler. For instance, if your dataset is named `world-cities.csv`, you can select the entire dataset by writing `SELECT * FROM 'world-cities.csv'`. The data does not need to be pre-loaded to kepler -- you may also select data remotely via SQL. The following example loads earthquake data from our sample data repository: ``` SELECT * FROM 'https://raw.githubusercontent.com/keplergl/kepler.gl-data/refs/heads/master/earthquakes/data.csv' ``` Once you have a data selection you are satisfied with, click **Add to Map**. Your new dataset will be added to kepler. If you have a column that contains recognizable geography data, (i.e. lat/lng columns or polygon geometries), layers will automatically be created. ================================================ FILE: esbuild/umd-esbuild.config.mjs ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import esbuild from 'esbuild'; import {replace} from 'esbuild-plugin-replace'; import {umdWrapper} from 'esbuild-plugin-umd-wrapper'; import process from 'node:process'; import {spawn} from 'node:child_process'; import {join} from 'node:path'; import KeplerPackage from '../package.json' assert {type: 'json'}; const LIB_DIR = './'; const NODE_MODULES_DIR = join(LIB_DIR, 'node_modules'); const SRC_DIR = join(LIB_DIR, 'src'); const config = { entryPoints: ['./src/index.js'], bundle: true, platform: 'browser', outfile: './umd/keplergl.min.js', format: 'umd', logLevel: 'error', minify: true, sourcemap: false, treeShaking: true, external: ['react', 'react-dom', 'redux', 'react-redux', 'styled-components'], plugins: [ // automatically injected kepler.gl package version into the bundle replace({ __PACKAGE_VERSION__: KeplerPackage.version, include: /constants\/src\/default-settings\.ts/ }), umdWrapper({ libraryName: "KeplerGl", globals: { "react": "React", "react-dom": "ReactDOM", 'redux': 'Redux', 'react-redux': 'ReactRedux', 'styled-components': 'styled' } }) ] }; (async () => { await esbuild .build({ ...config }) .catch(e => { console.error(e); process.exit(1); }); })(); ================================================ FILE: examples/README.md ================================================ # Examples A list of examples to demonstrate adding `kepler.gl` to your app. Each of the examples is a complete project that can be ran locally. To start each example, cd into the folder then run: ``` yarn && yarn start ``` - ### [Demo App][demo-app] kepler.gl as a single page app, loading sample maps from remote url, saving map data to dropbox. This is also the source code of kepler.gl/#/demo. - ### [Open Modal][open-modal] Open kepler.gl in a modal. - ### [Custom Reducer][custom-reducer] Customize kepler.gl reducer initial state, adding more actions using plugin. - ### [umd client][umd-client] A single html file loading kepler.gl - ### [Replace UI Component][replace-component] Example showing how to replace kepler.gl default ui components using `injectComponents` method. - ### [Custom theme][custom-theme] Customize kepler.gl theme by override default style properties. - ### [Node App][node-app] Embed Kepler.gl in a node/express/webpack application. - ### [Custom map style][custom-map-style] Demo how to use kepler.gl with other basemap services other than Mapbox. [custom-reducer]: custom-reducer/README.md [demo-app]: demo-app/README.md [node-app]: node-app/README.md [open-modal]: open-modal/README.md [umd-client]: umd-client/README.md [replace-component]: replace-component/README.md [custom-theme]: custom-theme/README.md [custom-map-style]: custom-map-style/README.md ================================================ FILE: examples/custom-map-style/.babelrc ================================================ { "presets": [ "@babel/preset-env", "@babel/preset-react", "@babel/preset-typescript" ], "plugins": [ "@babel/plugin-transform-modules-commonjs", "@babel/plugin-transform-class-properties", "@babel/plugin-transform-optional-chaining", "@babel/plugin-transform-logical-assignment-operators", "@babel/plugin-transform-nullish-coalescing-operator", "@babel/plugin-transform-export-namespace-from" ] } ================================================ FILE: examples/custom-map-style/README.md ================================================ # Custom Map Style ![map layers](https://studio-public-data.foursquare.com/statics/keplergl/documentation/f-map-styles-8.jpg 'custom map style') Demo how to use kepler.gl with other basemap services other than Mapbox. Read more about [Custom Map Style][custom-map-styles] ### Run Example #### 1. Install ```sh yarn ``` #### 2. Start the app ```sh yarn start ``` [custom-map-styles]: ./docs/api-reference/advanced-usages/custom-map-styles.md ================================================ FILE: examples/custom-map-style/esbuild.config.mjs ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import esbuild from 'esbuild'; import {replace} from 'esbuild-plugin-replace'; import {dotenvRun} from '@dotenv-run/esbuild'; import copyPlugin from 'esbuild-plugin-copy'; import process from 'node:process'; import fs from 'node:fs'; import {spawn} from 'node:child_process'; import {join} from 'node:path'; const args = process.argv; const port = 8080; const NODE_ENV = JSON.stringify(process.env.NODE_ENV || 'production'); // Ensure a single instance of React and friends to avoid invalid hook calls const ROOT_NODE_MODULES = join('..', '..', 'node_modules'); const thirdPartyAliases = { react: join(ROOT_NODE_MODULES, 'react'), 'react-dom': join(ROOT_NODE_MODULES, 'react-dom'), 'react-redux': join(ROOT_NODE_MODULES, 'react-redux', 'lib'), 'styled-components': join(ROOT_NODE_MODULES, 'styled-components'), 'apache-arrow': join(ROOT_NODE_MODULES, 'apache-arrow') }; const config = { platform: 'browser', format: 'iife', logLevel: 'info', loader: { '.js': 'jsx', '.ts': 'ts', '.tsx': 'tsx', '.css': 'css', '.ttf': 'file', '.woff': 'file', '.woff2': 'file' }, entryPoints: ['src/main.tsx'], outfile: 'dist/bundle.js', bundle: true, define: { NODE_ENV, 'process.env.MapboxAccessToken': JSON.stringify(process.env.MapboxAccessToken || '') }, plugins: [ dotenvRun({ verbose: true, environment: NODE_ENV, root: '../../.env' }), replace({ __PACKAGE_VERSION__: '3.1.10', include: /constants\/src\/default-settings\.ts/ }), copyPlugin({ resolveFrom: 'cwd', assets: { from: ['index.html'], to: ['dist/index.html'] } }) ] }; function openURL(url) { const cmd = { darwin: ['open'], linux: ['xdg-open'], win32: ['cmd', '/c', 'start'] }; const command = cmd[process.platform]; if (command) { spawn(command[0], [...command.slice(1), url]); } } (async () => { if (args.includes('--build')) { const result = await esbuild .build({ ...config, alias: thirdPartyAliases, minify: true, sourcemap: false, metafile: true, define: { ...config.define, 'process.env.NODE_ENV': '"production"' }, drop: ['console', 'debugger'], treeShaking: true }) .catch(e => { console.error(e); process.exit(1); }); fs.writeFileSync('dist/esbuild-metadata.json', JSON.stringify(result.metafile)); } if (args.includes('--start')) { await esbuild .context({ ...config, alias: thirdPartyAliases, minify: false, sourcemap: true, banner: { js: `new EventSource('/esbuild').addEventListener('change', () => location.reload());` } }) .then(async ctx => { await ctx.watch(); await ctx.serve({ servedir: 'dist', port, fallback: 'dist/index.html', onRequest: ({remoteAddress, method, path, status, timeInMS}) => { console.info(remoteAddress, status, `"${method} ${path}" [${timeInMS}ms]`); } }); console.info(`kepler.gl custom-map-style example running at ${`http://localhost:${port}`}`); openURL(`http://localhost:${port}`); }) .catch(e => { console.error(e); process.exit(1); }); } })(); ================================================ FILE: examples/custom-map-style/index.html ================================================ kepler.gl demo
================================================ FILE: examples/custom-map-style/package.json ================================================ { "scripts": { "start": "node esbuild.config.mjs --start", "build": "node esbuild.config.mjs --build", "start-local": "NODE_ENV=local node esbuild.config.mjs --start" }, "dependencies": { "@kepler.gl/components": "^3.1.10", "@kepler.gl/reducers": "^3.1.10", "global": "^4.3.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-palm": "^3.3.6", "react-redux": "^8.0.5", "react-virtualized": "^9.21.0", "redux-actions": "^2.2.1", "styled-components": "6.1.8" }, "devDependencies": { "@dotenv-run/esbuild": "^1.5.0", "esbuild": "^0.25.0", "esbuild-plugin-copy": "^2.1.1", "esbuild-plugin-replace": "^1.4.0" } } ================================================ FILE: examples/custom-map-style/src/app.tsx ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import React from 'react'; import {connect} from 'react-redux'; import KeplerGl from '@kepler.gl/components'; import AutoSizer from 'react-virtualized/dist/commonjs/AutoSizer'; const localeMessages = { en: { mapLayers: { terrain: 'Terrain' } } }; const App = () => (
{({height, width}) => ( )}
); const mapStateToProps = state => state; const dispatchToProps = dispatch => ({dispatch}); export default connect(mapStateToProps, dispatchToProps)(App); ================================================ FILE: examples/custom-map-style/src/main.tsx ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import React from 'react'; import ReactDOM from 'react-dom/client'; import document from 'global/document'; import {Provider} from 'react-redux'; import store from './store.ts'; import App from './app.tsx'; const Root = () => ( ); const root = ReactDOM.createRoot(document.getElementById('root')); root.render(); ================================================ FILE: examples/custom-map-style/src/store.ts ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import {createStore, combineReducers, applyMiddleware, compose} from 'redux'; import keplerGlReducer, {enhanceReduxMiddleware} from '@kepler.gl/reducers'; const mapStyles = { voyager: { id: 'voyager', label: 'Voyager', url: 'https://api.maptiler.com/maps/voyager/style.json?key=ySQ0fIYn7eSl3ppOeEJd', icon: 'https://api.maptiler.com/maps/voyager/256/0/0/0.png?key=ySQ0fIYn7eSl3ppOeEJd' }, terrain: { id: 'terrain', label: 'Outdoor', url: 'https://api.maptiler.com/maps/outdoor/style.json?key=ySQ0fIYn7eSl3ppOeEJd', icon: 'https://openmaptiles.org/img/styles/terrain.jpg', layerGroups: [ { slug: 'label', filter: ({id}) => id.match(/(?=(label|place-|poi-))/), defaultVisibility: true }, { slug: 'road', filter: ({id}) => id.match(/(?=(road|railway|tunnel|street|bridge))(?!.*label)/), defaultVisibility: true }, { slug: 'terrain', filter: ({id}) => id.match(/(?=(hillshade))/), defaultVisibility: true }, { slug: 'building', filter: ({id}) => id.match(/building/), defaultVisibility: true } ] } }; const customizedKeplerGlReducer = keplerGlReducer.initialState({ mapStyle: { mapStyles, styleType: 'voyager' } }); const reducers = combineReducers({ keplerGl: customizedKeplerGlReducer }); const middlewares = enhanceReduxMiddleware([]); const enhancers = [applyMiddleware(...middlewares)]; export default createStore(reducers, {}, compose(...enhancers)); ================================================ FILE: examples/custom-reducer/.babelrc ================================================ { "presets": [ "@babel/preset-env", "@babel/preset-react", "@babel/preset-typescript" ], "plugins": [ "@babel/plugin-transform-modules-commonjs", "@babel/plugin-transform-class-properties", "@babel/plugin-transform-optional-chaining", "@babel/plugin-transform-logical-assignment-operators", "@babel/plugin-transform-nullish-coalescing-operator", "@babel/plugin-transform-export-namespace-from" ] } ================================================ FILE: examples/custom-reducer/README.md ================================================ # Customize kepler.gl Reducer This example demos how to customize kepler.gl reducer 1. Customize reducer initialState by `keplerGlReducer.initialState` 2. Adding custom actions by `keplerGlReducer.plugins` ### Local dev ``` yarn ``` add mapbox access token to node env ``` export MapboxAccessToken= ``` then ``` yarn start ``` ================================================ FILE: examples/custom-reducer/esbuild.config.mjs ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import esbuild from 'esbuild'; import {replace} from 'esbuild-plugin-replace'; import {dotenvRun} from '@dotenv-run/esbuild'; import copyPlugin from 'esbuild-plugin-copy'; import process from 'node:process'; import fs from 'node:fs'; import {spawn} from 'node:child_process'; import {join} from 'node:path'; const args = process.argv; const port = 8080; const NODE_ENV = JSON.stringify(process.env.NODE_ENV || 'production'); // Ensure a single instance of React and friends to avoid invalid hook calls const ROOT_NODE_MODULES = join('..', '..', 'node_modules'); const thirdPartyAliases = { react: join(ROOT_NODE_MODULES, 'react'), 'react-dom': join(ROOT_NODE_MODULES, 'react-dom'), 'react-redux': join(ROOT_NODE_MODULES, 'react-redux', 'lib'), 'styled-components': join(ROOT_NODE_MODULES, 'styled-components'), 'apache-arrow': join(ROOT_NODE_MODULES, 'apache-arrow') }; const config = { platform: 'browser', format: 'iife', logLevel: 'info', loader: { '.js': 'jsx', '.css': 'css', '.ttf': 'file', '.woff': 'file', '.woff2': 'file' }, entryPoints: ['src/main.js'], outfile: 'dist/bundle.js', bundle: true, define: { NODE_ENV, 'process.env.MapboxAccessToken': JSON.stringify(process.env.MapboxAccessToken || '') }, plugins: [ dotenvRun({ verbose: true, environment: NODE_ENV, root: '../../.env' }), replace({ __PACKAGE_VERSION__: '3.1.10', include: /constants\/src\/default-settings\.ts/ }), copyPlugin({ resolveFrom: 'cwd', assets: { from: ['index.html'], to: ['dist/index.html'] } }) ] }; function openURL(url) { const cmd = { darwin: ['open'], linux: ['xdg-open'], win32: ['cmd', '/c', 'start'] }; const command = cmd[process.platform]; if (command) { spawn(command[0], [...command.slice(1), url]); } } (async () => { if (args.includes('--build')) { const result = await esbuild .build({ ...config, alias: thirdPartyAliases, minify: true, sourcemap: false, metafile: true, define: { ...config.define, 'process.env.NODE_ENV': '"production"' }, drop: ['console', 'debugger'], treeShaking: true }) .catch(e => { console.error(e); process.exit(1); }); fs.writeFileSync('dist/esbuild-metadata.json', JSON.stringify(result.metafile)); } if (args.includes('--start')) { await esbuild .context({ ...config, alias: thirdPartyAliases, minify: false, sourcemap: true, banner: { js: `new EventSource('/esbuild').addEventListener('change', () => location.reload());` } }) .then(async ctx => { await ctx.watch(); await ctx.serve({ servedir: 'dist', port, fallback: 'dist/index.html', onRequest: ({remoteAddress, method, path, status, timeInMS}) => { console.info(remoteAddress, status, `"${method} ${path}" [${timeInMS}ms]`); } }); console.info(`kepler.gl custom-reducer example running at ${`http://localhost:${port}`}`); openURL(`http://localhost:${port}`); }) .catch(e => { console.error(e); process.exit(1); }); } })(); ================================================ FILE: examples/custom-reducer/index.html ================================================ kepler.gl demo
================================================ FILE: examples/custom-reducer/package.json ================================================ { "scripts": { "start": "node esbuild.config.mjs --start", "build": "node esbuild.config.mjs --build", "start-local": "NODE_ENV=local node esbuild.config.mjs --start" }, "dependencies": { "@kepler.gl/actions": "^3.1.10", "@kepler.gl/components": "^3.1.10", "@kepler.gl/reducers": "^3.1.10", "global": "^4.3.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-palm": "^3.3.6", "react-redux": "^8.0.5", "react-virtualized": "^9.21.0", "redux-actions": "^2.2.1", "styled-components": "6.1.8" }, "devDependencies": { "@dotenv-run/esbuild": "^1.5.0", "esbuild": "^0.25.0", "esbuild-plugin-copy": "^2.1.1", "esbuild-plugin-replace": "^1.4.0" } } ================================================ FILE: examples/custom-reducer/src/app-reducer.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import {createAction, handleActions} from 'redux-actions'; // CONSTANTS export const INIT = 'INIT'; // ACTIONS export const appInit = createAction(INIT); // INITIAL_STATE const initialState = { appName: 'example', loaded: false }; // REDUCER const appReducer = handleActions( { [INIT]: state => ({ ...state, loaded: true }) }, initialState ); export default appReducer; ================================================ FILE: examples/custom-reducer/src/app.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import React, {Component} from 'react'; import {connect} from 'react-redux'; import AutoSizer from 'react-virtualized/dist/commonjs/AutoSizer'; import KeplerGl from '@kepler.gl/components'; import {createAction} from 'redux-actions'; import {addDataToMap, wrapTo} from '@kepler.gl/actions'; import sampleData from './data/sample-data'; import config from './configurations/config'; const MAPBOX_TOKEN = process.env.MapboxAccessToken; // eslint-disable-line // extra actions plugged into kepler.gl reducer (store.js) const hideAndShowSidePanel = createAction('HIDE_AND_SHOW_SIDE_PANEL'); class App extends Component { componentDidMount() { this.props.dispatch( wrapTo( 'map1', addDataToMap({ datasets: sampleData, config }) ) ); } _toggleSidePanelVisibility = () => { this.props.dispatch(wrapTo('map1', hideAndShowSidePanel())); }; render() { return (
{({height, width}) => ( )}
); } } const mapStateToProps = state => state; const dispatchToProps = dispatch => ({dispatch}); export default connect(mapStateToProps, dispatchToProps)(App); ================================================ FILE: examples/custom-reducer/src/configurations/config.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project export default { version: 'v1', config: { visState: { filters: [], layers: [ { id: '1s8r5md', type: 'point', config: { dataId: 'tree_data', label: 'location', color: [18, 147, 154], columns: { lat: 'Location_latitude', lng: 'Location_longitude', altitude: null }, isVisible: true, visConfig: { radius: 10, fixedRadius: false, opacity: 0.8, outline: false, thickness: 2, colorRange: { name: 'Ice And Fire', type: 'diverging', category: 'Uber', colors: ['#D50255', '#FEAD54', '#FEEDB1', '#E8FEB5', '#49E3CE', '#0198BD'], reversed: true }, radiusRange: [33.6, 96.2], 'hi-precision': false } }, visualChannels: { colorField: { name: 'Species', type: 'string' }, colorScale: 'ordinal', sizeField: { name: 'Age', type: 'integer' }, sizeScale: 'sqrt' } }, { id: '7otjdz', type: 'hexagon', config: { dataId: 'tree_data', label: 'Density', color: [23, 184, 190], columns: { lat: 'Location_latitude', lng: 'Location_longitude' }, isVisible: true, visConfig: { opacity: 0.2, worldUnitSize: 0.8, resolution: 8, colorRange: { name: 'ColorBrewer GnBu-6', type: 'sequential', category: 'ColorBrewer', colors: ['#f0f9e8', '#ccebc5', '#a8ddb5', '#7bccc4', '#43a2ca', '#0868ac'], reversed: false }, coverage: 1, sizeRange: [0, 500], percentile: [0, 100], elevationPercentile: [0, 100], elevationScale: 5, 'hi-precision': false, colorAggregation: 'average', sizeAggregation: 'average', enable3d: false } }, visualChannels: { colorField: null, colorScale: 'quantile', sizeField: null, sizeScale: 'linear' } } ], interactionConfig: { tooltip: { fieldsToShow: { tree_data: ['TreeID', 'Species', 'Address', 'Has_Species', 'SiteInfo'] }, enabled: true }, brush: { size: 0.5, enabled: false }, geocoder: { enabled: false } }, layerBlending: 'normal', splitMaps: [] }, mapState: { bearing: 0, dragRotate: false, latitude: 37.76544453921235, longitude: -122.46289885132524, pitch: 0, zoom: 12.032736770460689, isSplit: false }, mapStyle: { styleType: 'light', topLayerGroups: { label: true }, visibleLayerGroups: { label: true, road: true, border: false, building: true, water: true, land: true } } } }; ================================================ FILE: examples/custom-reducer/src/data/sample-data.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project export default { info: { label: 'San Francisco Trees', id: 'tree_data' }, data: { fields: [ { name: 'TreeID' }, { name: 'Species' }, { name: 'Address' }, { name: 'Has_Species' }, { name: 'SiteInfo' }, { name: 'PlantType' }, { name: 'PlantDate' }, { name: 'Plan' }, { name: 'Age' }, { name: 'DBH' }, { name: 'Location_latitude' }, { name: 'Location_longitude' } ], rows: [ [ 141565, 'Myoporum laetum :: Myoporum', '501X Baker St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '7/21/88 0:00', 1988, 29, 21, 37.77596769, -122.4413967 ], [ 232565, 'Metrosideros excelsa :: New Zealand Xmas Tree', '940 Elizabeth St', false, 'Sidewalk: Curb side : Yard', 'Tree', '3/20/17 0:00', 2017, 0, 3, 37.75171022, -122.441498 ], [ 119263, 'Pinus radiata :: Monterey Pine', '495X Lakeshore Dr', false, 'Median : Yard', 'Tree', null, null, null, null, null, null ], [ 207368, 'Ligustrum japonicum :: Japanese Privet', '920 Kirkham St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 6, 37.76021031, -122.4707394 ], [ 188702, 'Acacia melanoxylon :: Blackwood Acacia', '1501 Evans Ave', false, ':', 'Tree', null, null, null, 17, 37.74220867, -122.3872932 ], [ 141566, 'Myoporum laetum :: Myoporum', '501X Baker St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 14, 37.77570453, -122.4414629 ], [ 188697, 'Acacia melanoxylon :: Blackwood Acacia', '1301 Evans Ave', false, ':', 'Tree', null, null, null, 15, 37.73973386, -122.3829339 ], [ 122650, 'Acer rubrum :: Red Maple', '300x Hickory St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '11/10/16 0:00', 2016, 1, 3, null, null ], [ 203507, 'Agonis flexuosa :: Peppermint Willow', '920 Kirkham St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 23, 37.76018051, -122.4708661 ], [ 122670, 'Lyonothamnus floribundus subsp. asplenifolius :: Santa Cruz Ironwood', '301x Hickory St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '11/10/16 0:00', 2016, 1, 3, null, null ], [ 122658, 'Acer rubrum :: Red Maple', '300x Hickory St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '11/10/16 0:00', 2016, 1, 3, null, null ], [ 122660, 'Acer rubrum :: Red Maple', '300x Hickory St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '11/10/16 0:00', 2016, 1, 3, null, null ], [ 122648, 'Acer rubrum :: Red Maple', '300x Hickory St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '11/10/16 0:00', 2016, 1, 3, null, null ], [ 196590, 'Pyrus calleryana :: Ornamental Pear', '43 Lafayette St', false, ':', 'Tree', null, null, null, 10, 37.77303718, -122.4172458 ], [ 196591, 'Pyrus calleryana :: Ornamental Pear', '43 Lafayette St', false, ':', 'Tree', null, null, null, 13, 37.77305251, -122.4172809 ], [ 122649, 'Acer rubrum :: Red Maple', '300x Hickory St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '11/10/16 0:00', 2016, 1, 3, null, null ], [ 145278, 'Fraxinus uhdei :: Shamel Ash: Evergreen Ash', '730 11th Ave', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/20/17 0:00', 2017, 0, 0, 37.77448101, -122.4691091 ], [ 96369, 'Lophostemon confertus :: Brisbane Box', '168 Cervantes Blvd', false, 'Sidewalk: Curb side : Cutout', 'Tree', '8/9/11 0:00', 2011, 6, 24, 37.80468521, -122.4402315 ], [ 182260, "Arbutus 'Marina' :: Hybrid Strawberry Tree", '1471 28th Ave', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 5, 37.75995923, -122.4866885 ], [ 251179, 'Podocarpus gracilor :: Fern Pine', '1043 Minna St', false, 'Sidewalk: Property side : Cutout', 'Tree', null, null, null, null, 37.77353367, -122.4169045 ], [ 251178, 'Podocarpus gracilor :: Fern Pine', '1043 Minna St', false, 'Sidewalk: Property side : Cutout', 'Tree', null, null, null, null, 37.77353367, -122.4169045 ], [ 203506, 'Agonis flexuosa :: Peppermint Willow', '910 Kirkham St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 15, 37.76026555, -122.4705695 ], [ 52566, 'Hakea suaveolens :: Sweet Hakea Tree', '1555 40th Ave', false, 'Sidewalk: Curb side : Cutout', 'Tree', '1/12/16 0:00', 2016, 1, 2, 37.75778273, -122.4993677 ], [ 22346, 'Lophostemon confertus :: Brisbane Box', '5280 03rd St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '6/27/14 0:00', 2014, 3, 3, 37.72954822, -122.3926894 ], [ 23567, 'Platanus x hispanica :: Sycamore: London Plane', '2975 Van Ness Ave', false, 'Sidewalk: Curb side : Cutout', 'Tree', '5/27/92 0:00', 1992, 25, 3, 37.80304673, -122.4250636 ], [ 237469, 'Prunus cerasifera :: Cherry Plum', '4200 23rd St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '7/17/00 0:00', 2000, 17, 0, 37.7528239, -122.4366208 ], [ 244214, 'Tree(s) ::', '342 Scott St', false, 'Sidewalk: Curb side : Yard', 'Tree', '3/20/17 0:00', 2017, 0, 3, 37.77300994, -122.4355982 ], [ 21823, 'Platanus x hispanica :: Sycamore: London Plane', '2741 Taylor St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '8/19/06 0:00', 2006, 11, 3, 37.80797069, -122.4158502 ], [ 188686, 'Acacia melanoxylon :: Blackwood Acacia', '1300 Evans Ave', false, ':', 'Tree', null, null, null, 12, 37.73901484, -122.381104 ], [ 196592, 'Pyrus calleryana :: Ornamental Pear', '43 Lafayette St', false, ':', 'Tree', null, null, null, 8, 37.77310137, -122.4173585 ], [ 22614, 'Acacia melanoxylon :: Blackwood Acacia', '1001 Turk St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 24, 37.78136501, -122.4248636 ], [ 10933, 'Lophostemon confertus :: Brisbane Box', '1359 Hudson Ave', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 12, 37.73743182, -122.3840631 ], [ 2889, 'Platanus x hispanica :: Sycamore: London Plane', '1545 California St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 65, 37.79059396, -122.4198251 ], [ 240126, "Prunus serrulata 'Kwanzan' :: Kwanzan Flowering Cherry", '20 Lily St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 4, 37.77473647, -122.4213262 ], [ 183515, 'Myoporum laetum :: Myoporum', '2562 26th Ave', false, 'Sidewalk: Curb side : Yard', 'Tree', '3/21/17 0:00', 2017, 0, 3, 37.73970633, -122.4828998 ], [ 13434, 'Platanus x hispanica :: Sycamore: London Plane', '2X Market St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 6, 37.79448363, -122.3950546 ], [ 226924, 'Juniperus chinensis :: Juniper', '1 Newburg St', false, 'Sidewalk: Property side : Pot', 'Tree', null, null, null, 11, 37.74625595, -122.4338758 ], [ 192589, 'Lophostemon confertus :: Brisbane Box', '1390 Mission St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 4, 37.7755405, -122.4157935 ], [ 3558, 'Lophostemon confertus :: Brisbane Box', '101 Cargo Way', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/21/17 17:52', 2017, 0, 6, 37.74050235, -122.3776366 ], [ 222540, 'Callistemon viminalis :: Weeping Bottlebrush', '1 Newburg St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 6, 37.74632546, -122.4338277 ], [ 192590, 'Lophostemon confertus :: Brisbane Box', '1390 Mission St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 4, 37.7755405, -122.4157935 ], [ 28375, 'Magnolia grandiflora :: Southern Magnolia', '3014 Sacramento St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '10/9/03 0:00', 2003, 14, 3, 37.78875791, -122.4429785 ], [ 222539, 'Callistemon viminalis :: Weeping Bottlebrush', '1 Newburg St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 6, 37.74630146, -122.4338571 ], [ 226925, 'Juniperus chinensis :: Juniper', '1 Newburg St', false, 'Sidewalk: Property side : Pot', 'Tree', null, null, null, 19, 37.74628109, -122.4338516 ], [ 27522, 'Metrosideros excelsa :: New Zealand Xmas Tree', '3201 California St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 8, 37.78709954, -122.4473685 ], [ 18228, 'Maytenus boaria :: Mayten', '1737-1795 Post St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '4/9/04 0:00', 2004, 13, 12, 37.78534132, -122.431005 ], [ 17325, 'Fraxinus americana :: American Ash', '150 Otis St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '8/31/16 0:00', 2016, 1, 3, 37.77095437, -122.4203558 ], [ 3528, 'Lophostemon confertus :: Brisbane Box', '201X Cargo Way', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/21/17 16:23', 2017, 0, 3, 37.74144532, -122.3793046 ], [ 251186, 'Juniperus chinensis :: Juniper', '3042 Steiner St', false, 'Sidewalk: Property side : Cutout', 'Tree', null, null, null, null, 37.79753285, -122.4371106 ], [ 138938, 'Tree(s) ::', '632 HAYES ST', false, 'Sidewalk: Curb side : Yard', 'Tree', '3/21/17 0:00', 2017, 0, 3, 37.77646121, -122.4269126 ], [ 60867, 'Tree(s) ::', null, false, 'Sidewalk: Curb side : Cutout', 'Tree', '4/25/83 0:00', 1983, 34, null, null, null ], [ 233897, 'Araucaria heterophylla :: Norfolk Island Pine', '1021 Noe St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 9, 37.75266993, -122.4318862 ], [ 251187, 'Schinus terebinthifolius :: Brazilian Pepper', '1 Baker St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, null, 37.77112958, -122.4406092 ], [ 121137, 'Pittosporum undulatum :: Victorian Box', '1388x Minna St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '9/8/16 0:00', 2016, 1, 3, null, null ], [ 2909, 'Platanus x hispanica :: Sycamore: London Plane', '1700 California St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 30, 37.79038763, -122.4229834 ], [ 27602, 'Pittosporum undulatum :: Victorian Box', '988 Fulton St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 20, 37.77766599, -122.4324106 ], [ 44642, 'Tree(s) ::', null, false, 'Sidewalk: Curb side : Cutout', 'Tree', '4/29/01 0:00', 2001, 16, null, null, null ], [ 4749, 'Acacia melanoxylon :: Blackwood Acacia', '1255 Columbus Ave', false, 'Sidewalk: Curb side : Cutout', 'Tree', '8/3/15 0:00', 2015, 2, 8, 37.80577303, -122.4182612 ], [ 44994, 'Tree(s) ::', null, false, 'Sidewalk: Curb side : Cutout', 'Tree', '4/25/01 0:00', 2001, 16, null, null, null ], [ 121139, 'Pittosporum undulatum :: Victorian Box', '1388x Minna St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '9/8/16 0:00', 2016, 1, 3, null, null ], [ 226596, 'Leptospermum scoparium :: New Zealand Tea Tree', '1 Newburg St', false, 'Sidewalk: Property side : Pot', 'Tree', null, null, null, 4, 37.74632473, -122.4337918 ], [ 239043, 'Pyrus calleryana :: Ornamental Pear', '10 12th St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 13, 37.77381038, -122.4194082 ], [ 222541, 'Callistemon citrinus :: Lemon Bottlebrush', '1 Newburg St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 5, 37.7463451, -122.433801 ], [ 138748, 'Lophostemon confertus :: Brisbane Box', '1614 Broderick St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 0, 37.7853077, -122.4415226 ], [ 226926, 'Juniperus chinensis :: Juniper', '1 Newburg St', false, 'Sidewalk: Property side : Pot', 'Tree', null, null, null, 15, 37.74630146, -122.4338212 ], [ 222538, 'Callistemon viminalis :: Weeping Bottlebrush', '1 Newburg St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 6, 37.74627164, -122.4338847 ], [ 166623, 'Potential Site :: Potential Site', '520 Jersey St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/21/17 0:00', 2017, 0, 3, 37.75036438, -122.4371358 ], [ 251188, 'Schinus terebinthifolius :: Brazilian Pepper', '1 Baker St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, null, 37.77112958, -122.4406092 ], [ 19206, 'Laurus nobilis :: Sweet Bay: Grecian Laurel', '630 Sansome St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 12, 37.79625001, -122.4016986 ], [ 121138, 'Pittosporum undulatum :: Victorian Box', '1388x Minna St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '9/8/16 0:00', 2016, 1, 3, null, null ], [ 251206, "Prunus serrulata 'Kwanzan' :: Kwanzan Flowering Cherry", '270 Trumbull St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, null, 37.73083203, -122.4245292 ], [ 25725, 'Platanus x hispanica :: Sycamore: London Plane', '729 Grove St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 12, 37.77705272, -122.4286972 ], [ 251249, 'Private shrub :: Private Shrub', '161 Lundys Ln', false, 'Front Yard : Yard', 'Landscaping', null, null, null, null, 37.7429691, -122.4194092 ], [ 251293, '::', '3789 Market St', false, 'Sidewalk: Property side : Cutout', 'Landscaping', null, null, null, null, 37.75373446, -122.442203 ], [ 221749, 'Pittosporum undulatum :: Victorian Box', '275 Grattan St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', null, null, null, 24, 37.76366261, -122.4520649 ], [ 221750, 'Pittosporum undulatum :: Victorian Box', '275 Grattan St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', null, null, null, 11, 37.76366331, -122.4521462 ], [ 245474, 'Pittosporum undulatum :: Victorian Box', '275 Grattan St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', null, null, null, 19, 37.76363745, -122.4522558 ], [ 251419, 'Melaleuca quinquenervia :: Cajeput', '39 Jones St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', '4/14/15 0:00', 2015, 2, null, 37.78164643, -122.4122686 ], [ 251418, 'Melaleuca quinquenervia :: Cajeput', '39 Jones St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', '4/14/15 0:00', 2015, 2, null, 37.78164643, -122.4122686 ], [ 16698, 'Pittosporum undulatum :: Victorian Box', '950X Noriega St', false, 'Median : Cutout', 'Landscaping', null, null, null, 12, 37.75434951, -122.4740143 ], [ 251532, '::', '2100X 20th St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', '5/15/17 0:00', 2017, 0, 3, null, null ], [ 251531, '::', '2100X 20th St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', '5/15/17 0:00', 2017, 0, 3, null, null ], [ 251642, 'Shrub :: Shrub', '2253 Broderick St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', null, null, null, null, 37.79122797, -122.4428704 ], [ 251700, '::', '1560 Sanchez St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', '6/5/17 0:00', 2017, 0, 3, 37.74408823, -122.4290963 ], [ 253008, '::', '1201 Tennessee St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', '7/10/17 0:00', 2017, 0, 3, 37.7563302, -122.3890342 ], [ 208471, 'Cordyline australis :: Dracena Palm', '1175 Kirkham St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', '8/23/17 0:00', 2017, 0, 3, 37.75989512, -122.4735278 ], [ 253411, 'Lophostemon confertus :: Brisbane Box', '1321 Mission St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', '8/30/17 0:00', 2017, 0, 3, 37.77599135, -122.4149312 ], [ 253409, 'Lophostemon confertus :: Brisbane Box', '1321 Mission St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', '8/30/17 0:00', 2017, 0, 3, 37.77599135, -122.4149312 ], [ 253410, 'Lophostemon confertus :: Brisbane Box', '1321 Mission St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', '8/30/17 0:00', 2017, 0, 3, 37.77599135, -122.4149312 ], [ 253412, 'Lophostemon confertus :: Brisbane Box', '1321 Mission St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', '8/30/17 0:00', 2017, 0, 3, 37.77599135, -122.4149312 ], [ 225282, 'Pittosporum crassifolium :: Karo Tree', '101 Rivoli St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', null, null, null, 6, 37.76244046, -122.4496446 ], [ 173852, '::', '450 Toland St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', '1/27/17 0:00', 2017, 0, 3, 37.74445161, -122.3985096 ], [ 173849, '::', '450 Toland St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', '1/27/17 0:00', 2017, 0, 3, 37.74445161, -122.3985096 ], [ 173850, '::', '450 Toland St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', '1/27/17 0:00', 2017, 0, 3, 37.74445161, -122.3985096 ], [ 173851, '::', '450 Toland St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', '1/27/17 0:00', 2017, 0, 3, 37.74445161, -122.3985096 ], [ 173848, '::', '450 Toland St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', '1/27/17 0:00', 2017, 0, 3, 37.74445161, -122.3985096 ], [ 173846, '::', '450 Toland St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', '1/27/17 0:00', 2017, 0, 3, 37.74445161, -122.3985096 ], [ 173847, '::', '450 Toland St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', '1/27/17 0:00', 2017, 0, 3, 37.74445161, -122.3985096 ], [ 173853, '::', '450 Toland St', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', '1/27/17 0:00', 2017, 0, 3, 37.74445161, -122.3985096 ], [ 107717, 'Tree(s) ::', '2400X 25th Ave', false, 'Sidewalk: Curb side : Cutout', 'Landscaping', '10/16/14 0:00', 2014, 3, 3, 37.74238326, -122.4917845 ], [ 110194, 'Ginkgo biloba :: Maidenhair Tree', '2123 Pierce St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/26/15 0:00', 2015, 2, 3, 37.78980712, -122.4374813 ], [ 59839, 'Metrosideros excelsa :: New Zealand Xmas Tree', '1201 Palou Ave', false, 'Sidewalk: Curb side : Cutout', 'Tree', '10/10/81 0:00', 1981, 36, 3, 37.72976741, -122.3836854 ], [ 183689, 'Rhamnus alaternus :: Italian Buckthorn', '1341 42nd Ave', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 6, 37.76162779, -122.5017998 ], [ 18916, 'Olea europaea :: Olive Tree', '2621 Sacramento St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 14, 37.78950262, -122.4361188 ], [ 20281, 'Metrosideros excelsa :: New Zealand Xmas Tree', '20X Sunset Blvd', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 12, null, null ], [ 119758, 'Maytenus boaria :: Mayten', '151X Octavia St Frontage West', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, null, null, null ], [ 228560, 'Lophostemon confertus :: Brisbane Box', '700 Valencia St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 7, 37.76151469, -122.4216727 ], [ 18052, 'Ulmus parvifolia :: Chinese Elm', '2840 Pine St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 18, 37.78687837, -122.4426898 ], [ 212622, 'Prunus cerasifera :: Cherry Plum', '115 Beverly St', false, 'Sidewalk: Property side : Yard', 'Tree', null, null, null, 4, 37.71819234, -122.4717606 ], [ 20398, 'Cupressus macrocarpa :: Monterey Cypress', '262X Sunset Blvd', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 24, null, null ], [ 66855, 'Maytenus boaria :: Mayten', '2041 Hayes St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '11/15/91 0:00', 1991, 26, 8, 37.77336241, -122.4501107 ], [ 237033, "Prunus serrulata 'Kwanzan' :: Kwanzan Flowering Cherry", '100 Octavia St', false, ':', 'Tree', null, null, null, 6, 37.77334931, -122.4236445 ], [ 116641, 'Ginkgo biloba :: Maidenhair Tree', '270 Brannan St', false, 'Sidewalk: Property side : Cutout', 'Tree', null, null, null, 1, 37.78270018, -122.3912181 ], [ 218972, 'Fraxinus americana :: American Ash', '742 Myra Way', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 10, 37.74058076, -122.4513096 ], [ 47510, "Arbutus 'Marina' :: Hybrid Strawberry Tree", '54X Cayuga Ave', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/27/17 0:00', 2017, 0, 3, 37.73158339, -122.4295272 ], [ 237030, "Prunus serrulata 'Kwanzan' :: Kwanzan Flowering Cherry", '100 Octavia St', false, ':', 'Tree', null, null, null, 5, 37.77325086, -122.4236179 ], [ 213016, 'Tree(s) ::', '120 Ortega St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/27/17 0:00', 2017, 0, 3, 37.75295695, -122.4649514 ], [ 228561, 'Lophostemon confertus :: Brisbane Box', '700 Valencia St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 7, 37.76156532, -122.4216758 ], [ 72565, 'Ginkgo biloba :: Maidenhair Tree', '270 Brannan St', false, 'Sidewalk: Property side : Cutout', 'Tree', '11/16/96 0:00', 1996, 21, 3, 37.78270018, -122.3912181 ], [ 116640, 'Ginkgo biloba :: Maidenhair Tree', '270 Brannan St', false, 'Sidewalk: Property side : Cutout', 'Tree', null, null, null, 1, 37.78270018, -122.3912181 ], [ 6337, 'Metrosideros excelsa :: New Zealand Xmas Tree', '1916 Ellis St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 18, 37.78175831, -122.4377689 ], [ 832, 'Lagunaria patersonii :: Primrose Tree', '1396 47th Ave', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/28/17 12:18', 2017, 0, 3, 37.76054428, -122.5069327 ], [ 251241, 'Cupressocyparis leylandii :: Leyland Cypress', '2305 Golden Gate Ave', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, null, 37.77731326, -122.448748 ], [ 18836, "Ficus microcarpa nitida 'Green Gem' :: Indian Laurel Fig Tree 'Green Gem'", '2055 Sacramento St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 12, 37.79068779, -122.4267446 ], [ 11598, 'Lagunaria patersonii :: Primrose Tree', '4134 Judah St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/28/17 11:51', 2017, 0, 3, 37.76048345, -122.5065435 ], [ 111561, 'Eriobotrya deflexa :: Bronze Loquat', '1498x Kansas St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/28/17 0:00', 2017, 0, 3, 37.75089751, -122.402317 ], [ 97319, 'Lagunaria patersonii :: Primrose Tree', '1038 Taraval St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/28/17 12:52', 2017, 0, 3, 37.74306751, -122.4774242 ], [ 58021, 'Lagunaria patersonii :: Primrose Tree', '4026 Irving St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/28/17 12:07', 2017, 0, 3, 37.76257173, -122.5012197 ], [ 175046, 'Metrosideros excelsa :: New Zealand Xmas Tree', '80X Junipero Serra Blvd', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 4, 37.71164354, -122.4709833 ], [ 26071, 'Melaleuca quinquenervia :: Cajeput', '247 Orizaba Ave', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/28/17 13:41', 2017, 0, 3, 37.71342972, -122.4626502 ], [ 11606, 'Lagunaria patersonii :: Primrose Tree', '4200x Judah St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/28/17 11:54', 2017, 0, 3, 37.76045095, -122.5071358 ], [ 36617, 'Robinia x ambigua :: Locust', null, false, 'Sidewalk: Curb side : Cutout', 'Tree', '5/20/98 0:00', 1998, 19, null, null, null ], [ 24532, 'Lagunaria patersonii :: Primrose Tree', '1395 47th Ave', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/28/17 12:21', 2017, 0, 3, 37.76072337, -122.5070915 ], [ 5972, 'Pittosporum undulatum :: Victorian Box', '1550 Eddy St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '2/2/90 0:00', 1990, 27, 8, 37.78138444, -122.4331105 ], [ 830, "Tristaniopsis laurina 'Elegant' :: Small-leaf Tristania 'Elegant'", '1384 47th Ave', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/28/17 12:15', 2017, 0, 3, 37.76071635, -122.5069447 ], [ 251225, 'Jacaranda mimosifolia :: Jacaranda', '1 Yukon St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, null, 37.75927435, -122.4422441 ], [ 54712, 'Lagunaria patersonii :: Primrose Tree', '4508 Irving St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/28/17 11:58', 2017, 0, 3, 37.76234527, -122.5063635 ], [ 3193, 'Platanus x hispanica :: Sycamore: London Plane', '3698 California St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 16, 37.78640011, -122.454267 ], [ 21682, 'Prunus serrulata :: Ornamental Cherry', '1830 Sutter St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/28/17 0:00', 2017, 0, 3, 37.78651577, -122.4305403 ], [ 97322, 'Lagunaria patersonii :: Primrose Tree', '1055 Taraval St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/28/17 12:42', 2017, 0, 3, 37.74287614, -122.4775411 ], [ 175377, 'Ulmus pumila :: Siberian Elm', '80X Junipero Serra Blvd', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 2, 37.71516198, -122.4717512 ], [ 142720, '::', '1170 COLUMBUS AVE', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, null, 37.80483123, -122.416565 ], [ 251231, 'Pinus radiata :: Monterey Pine', '164 Serrano Dr', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, null, 37.72047169, -122.4780251 ], [ 29943, "Tristaniopsis laurina 'Elegant' :: Small-leaf Tristania 'Elegant'", '242 Broad St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/28/17 12:23', 2017, 0, 3, 37.71323398, -122.4605594 ], [ 97323, 'Lagunaria patersonii :: Primrose Tree', '1011 Taraval St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/28/17 12:25', 2017, 0, 3, 37.74289372, -122.4772138 ], [ 11582, 'Lagunaria patersonii :: Primrose Tree', '4000 Judah St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/28/17 11:49', 2017, 0, 3, 37.76055019, -122.5050036 ], [ 251230, 'Ligustrum lucidum :: Glossy Privet', '99x Ogden Ave', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, null, 37.73605476, -122.4163909 ], [ 251232, 'Ligustrum lucidum :: Glossy Privet', '99x Ogden Ave', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, null, 37.73605476, -122.4163909 ], [ 179480, 'Schinus terebinthifolius :: Brazilian Pepper', '100 Serrano Dr', false, 'Sidewalk: Curb side : Yard', 'Tree', null, null, null, 11, 37.72024935, -122.4780157 ], [ 251221, 'Tree(s) ::', '2401X Washington St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/28/17 0:00', 2017, 0, 3, null, null ], [ 48827, 'Lophostemon confertus :: Brisbane Box', '435 Pacific Ave', false, 'Sidewalk: Curb side : Cutout', 'Tree', '11/7/02 0:00', 2002, 15, 5, 37.79736024, -122.4027685 ], [ 251242, 'Cupressocyparis leylandii :: Leyland Cypress', '2449 Golden Gate Ave', false, 'Sidewalk: Property side : Cutout', 'Tree', null, null, null, null, 37.7770353, -122.4514366 ], [ 48332, 'Tree(s) ::', null, false, 'Sidewalk: Curb side : Cutout', 'Tree', '7/17/02 0:00', 2002, 15, null, null, null ], [ 175044, 'Metrosideros excelsa :: New Zealand Xmas Tree', '80x Junipero Serra Blvd', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 19, 37.71158043, -122.4709734 ], [ 251226, 'Koelreuteria paniculata :: Golden Rain Tree', '1 Yukon St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, null, 37.75950087, -122.4421669 ], [ 17881, 'Olea europaea :: Olive Tree', '2205 Pine St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 12, 37.78806671, -122.4322373 ], [ 24515, 'Lophostemon confertus :: Brisbane Box', '2030 Fell St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '4/7/16 7:40', 2016, 1, 3, 37.77238102, -122.4513341 ], [ 97317, 'Lagunaria patersonii :: Primrose Tree', '1000 Taraval St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/28/17 12:59', 2017, 0, 3, 37.74308434, -122.4769891 ], [ 2985, 'Platanus x hispanica :: Sycamore: London Plane', '2253 California St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 65, 37.78912498, -122.4314293 ], [ 182083, 'Lagunaria patersonii :: Primrose Tree', '1101 Taraval St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/28/17 12:33', 2017, 0, 3, 37.74285808, -122.4780077 ], [ 18700, 'Platanus x hispanica :: Sycamore: London Plane', '100X Richardson Ave', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 18, 37.79975916, -122.4460044 ], [ 9914, "Ficus microcarpa nitida 'Green Gem' :: Indian Laurel Fig Tree 'Green Gem'", '1900 Gough St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 126, 37.79116413, -122.4257789 ], [ 93463, "Prunus x 'Amanogawa' :: Flowering Cherry", '1739 Taraval St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '3/28/17 13:05', 2017, 0, 3, 37.74255391, -122.4849289 ], [ 15429, "Ficus microcarpa nitida 'Green Gem' :: Indian Laurel Fig Tree 'Green Gem'", '2125 Mission St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '4/9/15 0:00', 2015, 2, 15, 37.76296062, -122.419386 ], [ 138801, 'Maytenus boaria :: Mayten', '2375 PINE ST', false, 'Sidewalk: Curb side : Cutout', 'Tree', '5/9/97 0:00', 1997, 20, 2, 37.78770158, -122.4350685 ], [ 251243, "Ceanothus 'Ray Hartman' :: California Lilac 'Ray Hartman'", '299x Chapman St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, null, 37.7417247, -122.411639 ], [ 138359, 'Ficus retusa nitida :: Banyan Fig', '2060 SUTTER ST', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 15, 37.78607841, -122.4338643 ], [ 251248, 'Corymbia ficifolia :: Red Flowering Gum', '829 Chenery St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, null, 37.73477716, -122.4360662 ], [ 138368, 'Ficus retusa nitida :: Banyan Fig', '2060 SUTTER ST', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 13, 37.78600955, -122.4344937 ], [ 138807, 'Ulmus parvifolia :: Chinese Elm', '2355 PINE ST', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 13, 37.78777373, -122.4346006 ], [ 57209, 'Magnolia grandiflora :: Southern Magnolia', '2898 Clay St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '12/15/14 0:00', 2014, 3, 3, 37.78998742, -122.4404101 ], [ 210495, 'Myoporum laetum :: Myoporum', '365 San Leandro Way', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 21, 37.73051136, -122.4689316 ], [ 138369, 'Ficus retusa nitida :: Banyan Fig', '2060 SUTTER ST', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 16, 37.78599791, -122.4345397 ], [ 6069, 'Metrosideros excelsa :: New Zealand Xmas Tree', '1930 Eddy St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '5/26/15 0:00', 2015, 2, 3, 37.78057618, -122.439557 ], [ 138802, 'Ulmus parvifolia :: Chinese Elm', '2375 PINE ST', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 12, 37.78771109, -122.4350205 ], [ 138365, 'Ficus retusa nitida :: Banyan Fig', '2060 SUTTER ST', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 19, 37.78603526, -122.4342542 ], [ 251246, 'Metrosideros excelsa :: New Zealand Xmas Tree', '722X Mendell St', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, null, 37.73887284, -122.3866046 ], [ 251245, 'Corymbia ficifolia :: Red Flowering Gum', '701 Chenery St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '6/4/92 0:00', 1992, 25, null, 37.73445362, -122.4338962 ], [ 103786, 'Magnolia grandiflora :: Southern Magnolia', '1221 Polk St', false, 'Sidewalk: Curb side : Pot', 'Tree', '11/1/09 0:00', 2009, 8, 3, 37.78810145, -122.4202677 ], [ 138362, 'Ficus retusa nitida :: Banyan Fig', '2060 SUTTER ST', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 15, 37.78605488, -122.4340541 ], [ 134567, 'Platanus x hispanica :: Sycamore: London Plane', '99 Grove St', false, 'Sidewalk: Curb side : Cutout', 'Tree', '7/6/11 0:00', 2011, 6, 4, 37.77846618, -122.4173997 ], [ 138367, 'Ficus retusa nitida :: Banyan Fig', '2060 SUTTER ST', false, 'Sidewalk: Curb side : Cutout', 'Tree', null, null, null, 15, 37.78601298, -122.4344509 ] ] } }; ================================================ FILE: examples/custom-reducer/src/main.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import React from 'react'; import ReactDOM from 'react-dom/client'; import document from 'global/document'; import Modal from 'react-modal'; import {Provider} from 'react-redux'; import store from './store'; import App from './app'; Modal.setAppElement('#root'); const Root = () => ( ); const root = ReactDOM.createRoot(document.getElementById('root')); root.render(); ================================================ FILE: examples/custom-reducer/src/store.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import {createStore, combineReducers, applyMiddleware, compose} from 'redux'; import keplerGlReducer, {uiStateUpdaters, enhanceReduxMiddleware} from '@kepler.gl/reducers'; import appReducer from './app-reducer'; import Window from 'global/window'; const customizedKeplerGlReducer = keplerGlReducer .initialState({ uiState: { // hide side panel to disallower user customize the map readOnly: true, // customize which map control button to show mapControls: { ...uiStateUpdaters.DEFAULT_MAP_CONTROLS, visibleLayers: { show: false }, mapLegend: { show: true, active: true }, toggle3d: { show: false }, splitMap: { show: false } } } }) // handle additional actions .plugin({ HIDE_AND_SHOW_SIDE_PANEL: state => ({ ...state, uiState: { ...state.uiState, readOnly: !state.uiState.readOnly } }) }); const reducers = combineReducers({ keplerGl: customizedKeplerGlReducer, app: appReducer }); const middlewares = enhanceReduxMiddleware([]); const enhancers = [applyMiddleware(...middlewares)]; const initialState = {}; // add redux devtools const composeEnhancers = Window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose; export default createStore(reducers, initialState, composeEnhancers(...enhancers)); ================================================ FILE: examples/custom-theme/.babelrc ================================================ { "presets": [ "@babel/preset-env", "@babel/preset-react", "@babel/preset-typescript" ] } ================================================ FILE: examples/custom-theme/README.md ================================================ # Customize kepler.gl Theme This example show how to customize Kepler.gl theme 1. Define an object (theme) to override Kepler.gl style 2. Pass the newly created object as prop to KeplerGl react component #### 1. Install ```sh yarn ``` #### 2. Mapbox Token add mapbox access token to node env ```sh export MapboxAccessToken= ``` #### 3. Start the app ```sh yarn start ``` ================================================ FILE: examples/custom-theme/esbuild.config.mjs ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import esbuild from 'esbuild'; import {replace} from 'esbuild-plugin-replace'; import {dotenvRun} from '@dotenv-run/esbuild'; import copyPlugin from 'esbuild-plugin-copy'; import process from 'node:process'; import fs from 'node:fs'; import {spawn} from 'node:child_process'; import {join} from 'node:path'; const args = process.argv; const port = 8080; const NODE_ENV = JSON.stringify(process.env.NODE_ENV || 'production'); // Ensure a single instance of React and friends to avoid invalid hook calls const ROOT_NODE_MODULES = join('..', '..', 'node_modules'); const thirdPartyAliases = { react: join(ROOT_NODE_MODULES, 'react'), 'react-dom': join(ROOT_NODE_MODULES, 'react-dom'), 'react-redux': join(ROOT_NODE_MODULES, 'react-redux', 'lib'), 'styled-components': join(ROOT_NODE_MODULES, 'styled-components'), 'apache-arrow': join(ROOT_NODE_MODULES, 'apache-arrow') }; const config = { platform: 'browser', format: 'iife', logLevel: 'info', loader: { '.js': 'jsx', '.css': 'css', '.ttf': 'file', '.woff': 'file', '.woff2': 'file' }, entryPoints: ['src/main.js'], outfile: 'dist/bundle.js', bundle: true, define: { NODE_ENV, 'process.env.MapboxAccessToken': JSON.stringify(process.env.MapboxAccessToken || '') }, plugins: [ dotenvRun({ verbose: true, environment: NODE_ENV, root: '../../.env' }), replace({ __PACKAGE_VERSION__: '3.1.10', include: /constants\/src\/default-settings\.ts/ }), copyPlugin({ resolveFrom: 'cwd', assets: { from: ['index.html'], to: ['dist/index.html'] } }) ] }; function openURL(url) { const cmd = { darwin: ['open'], linux: ['xdg-open'], win32: ['cmd', '/c', 'start'] }; const command = cmd[process.platform]; if (command) { spawn(command[0], [...command.slice(1), url]); } } (async () => { if (args.includes('--build')) { const result = await esbuild .build({ ...config, alias: thirdPartyAliases, minify: true, sourcemap: false, metafile: true, define: { ...config.define, 'process.env.NODE_ENV': '"production"' }, drop: ['console', 'debugger'], treeShaking: true }) .catch(e => { console.error(e); process.exit(1); }); fs.writeFileSync('dist/esbuild-metadata.json', JSON.stringify(result.metafile)); } if (args.includes('--start')) { await esbuild .context({ ...config, alias: thirdPartyAliases, minify: false, sourcemap: true, banner: { js: `new EventSource('/esbuild').addEventListener('change', () => location.reload());` } }) .then(async ctx => { await ctx.watch(); await ctx.serve({ servedir: 'dist', port, fallback: 'dist/index.html', onRequest: ({remoteAddress, method, path, status, timeInMS}) => { console.info(remoteAddress, status, `"${method} ${path}" [${timeInMS}ms]`); } }); console.info(`kepler.gl custom-theme example running at ${`http://localhost:${port}`}`); openURL(`http://localhost:${port}`); }) .catch(e => { console.error(e); process.exit(1); }); } })(); ================================================ FILE: examples/custom-theme/index.html ================================================ kepler.gl demo
================================================ FILE: examples/custom-theme/package.json ================================================ { "scripts": { "start": "node esbuild.config.mjs --start", "build": "node esbuild.config.mjs --build", "start-local": "NODE_ENV=local node esbuild.config.mjs --start" }, "dependencies": { "@kepler.gl/components": "^3.1.10", "@kepler.gl/reducers": "^3.1.10", "global": "^4.3.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-palm": "^3.3.6", "react-redux": "^8.0.5", "react-virtualized": "^9.21.0", "redux-actions": "^2.2.1", "styled-components": "6.1.8" }, "devDependencies": { "@dotenv-run/esbuild": "^1.5.0", "esbuild": "^0.25.0", "esbuild-plugin-copy": "^2.1.1", "esbuild-plugin-replace": "^1.4.0" } } ================================================ FILE: examples/custom-theme/src/actions.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project // CONSTANTS export const INIT = 'INIT'; // ACTIONS export function initApp() { return { type: INIT }; } ================================================ FILE: examples/custom-theme/src/app.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import React, {useEffect, useState} from 'react'; import styled from 'styled-components'; import Window from 'global/window'; import {connect} from 'react-redux'; import KeplerGl from '@kepler.gl/components'; const MAPBOX_TOKEN = process.env.MapboxAccessToken; // eslint-disable-line const theme = { sidePanelBg: '#ffffff', titleTextColor: '#000000', sidePanelHeaderBg: '#f7f7F7', subtextColorActive: '#2473bd', tooltipBg: '#1869b5', tooltipColor: '#ffffff', dropdownListBgd: '#ffffff', textColorHl: '#2473bd', inputBgd: '#f7f7f7', inputBgdHover: '#ffffff', inputBgdActive: '#ffffff', dropdownListHighlightBg: '#f0f0f0', panelBackground: '#f7f7F7', panelBackgroundHover: '#f7f7F7', secondaryInputBgd: '#f7f7F7', secondaryInputBgdActive: '#f7f7F7', secondaryInputBgdHover: '#ffffff', panelActiveBg: '#f7f7F7' }; const emptyTheme = {}; const StyleSwitch = styled.div` position: absolute; bottom: 24px; right: 24px; background-color: whitesmoke; padding: 4px; z-index: 1000; border-radius: 3px; border: 1px solid mediumseagreen; `; function App() { const [customTheme, setTheme] = useState(false); const [windowDimension, setDimension] = useState({ width: Window.innerWidth, height: Window.innerHeight }); useEffect(() => { const handleResize = () => { setDimension({width: Window.innerWidth, height: Window.innerHeight}); }; Window.addEventListener('resize', handleResize); return () => Window.removeEventListener('resize', handleResize); }, []); return (
setTheme(e.target.checked)} /> state.demo.keplerGl} width={windowDimension.width} height={windowDimension.height} theme={customTheme ? theme : emptyTheme} />
); // } } const mapStateToProps = state => state; const dispatchToProps = dispatch => ({dispatch}); export default connect(mapStateToProps, dispatchToProps)(App); ================================================ FILE: examples/custom-theme/src/main.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import React from 'react'; import ReactDOM from 'react-dom/client'; import document from 'global/document'; import Modal from 'react-modal'; import {Provider} from 'react-redux'; import store from './store'; import App from './app'; Modal.setAppElement('#root'); const Root = () => ( ); const root = ReactDOM.createRoot(document.getElementById('root')); root.render(); ================================================ FILE: examples/custom-theme/src/reducers/index.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import {combineReducers} from 'redux'; import {handleActions} from 'redux-actions'; import keplerGlReducer from '@kepler.gl/reducers'; import {INIT} from '../actions'; // INITIAL_APP_STATE const initialAppState = { appName: 'example' }; // App reducer export const appReducer = handleActions( { [INIT]: state => ({ ...state, loaded: true }) }, initialAppState ); // export demoReducer to be combined in website app export default combineReducers({ // mount keplerGl reducer keplerGl: keplerGlReducer, app: appReducer }); ================================================ FILE: examples/custom-theme/src/store.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import Window from 'global/window'; import {combineReducers, createStore, applyMiddleware, compose} from 'redux'; import {enhanceReduxMiddleware} from '@kepler.gl/reducers'; import demoReducer from './reducers/index'; const reducers = combineReducers({ demo: demoReducer }); const middlewares = enhanceReduxMiddleware([]); export const enhancers = [applyMiddleware(...middlewares)]; const initialState = {}; // add redux devtools const composeEnhancers = Window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose; export default createStore(reducers, initialState, composeEnhancers(...enhancers)); ================================================ FILE: examples/demo-app/.yarnrc.yml ================================================ # https://yarnpkg.com/configuration/yarnrc nodeLinker: node-modules # Define the registry to use when fetching packages. npmRegistryServer: 'https://registry.yarnpkg.com' ================================================ FILE: examples/demo-app/README.md ================================================ # Demo App This is the src code of kepler.gl demo app. You can copy this folder out and run it locally. #### Pre requirement - [Node.js ^18.x](http://nodejs.org): We use Node to generate the documentation, run a development web server, run tests, and generate distributable files. Depending on your system, you can install Node either from source or as a pre-packaged bundle. - [Yarn 4.4.0](https://yarnpkg.com): We use Yarn to install our Node.js module dependencies (rather than using npm). See the detailed [installation instructions][yarn-install]. #### 1. Install Dependencies Go to the root directory and install the dependencies using yarn: ```sh yarn bootstrap ``` Then, go to the `examples/demo-app` directory and install the dependencies using yarn: ```sh yarn install ``` #### 2. Environment Variables Create a `.env` file at the root directory by copying from `.env.template`: ```sh cp .env.template .env ``` Then update the following environment variables in your `.env` file: ```sh MAPBOX_ACCESS_TOKEN= DROPBOX_CLIENT_ID= MAPBOX_EXPORT_TOKEN= CARTO_CLIENT_ID= FOURSQUARE_CLIENT_ID= FOURSQUARE_DOMAIN= FOURSQUARE_USER_MAPS_URL= ``` #### 3. Start the app ```sh yarn start:local ``` [yarn-install]: https://yarnpkg.com/getting-started/install ================================================ FILE: examples/demo-app/esbuild.config.mjs ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import esbuild from 'esbuild'; import {replace} from 'esbuild-plugin-replace'; import {dotenvRun} from '@dotenv-run/esbuild'; import process from 'node:process'; import fs from 'node:fs'; import {spawn} from 'node:child_process'; import {join} from 'node:path'; import KeplerPackage from '../../package.json' assert {type: 'json'}; const args = process.argv; const BASE_NODE_MODULES_DIR = './node_modules'; const LIB_DIR = '../../'; const NODE_MODULES_DIR = join(LIB_DIR, 'node_modules'); const SRC_DIR = join(LIB_DIR, 'src'); // For debugging deck.gl, load deck.gl from external deck.gl directory const EXTERNAL_DECK_SRC = join(LIB_DIR, 'deck.gl'); // For debugging loaders.gl, load loaders.gl from external loaders.gl directory const EXTERNAL_LOADERS_SRC = join(LIB_DIR, 'loaders.gl'); // For debugging hubble.gl, load hubble.gl from external hubble.gl directory const EXTERNAL_HUBBLE_SRC = join(LIB_DIR, '../../hubble.gl'); const port = 8080; const getThirdPartyLibraryAliases = useKeplerNodeModules => { const nodeModulesDir = useKeplerNodeModules ? NODE_MODULES_DIR : BASE_NODE_MODULES_DIR; const localSources = useKeplerNodeModules ? { // Suppress useless warnings from react-date-picker's dep 'tiny-warning': `${SRC_DIR}/utils/src/noop.ts` } : {}; return { ...localSources, react: `${nodeModulesDir}/react`, 'react-dom': `${nodeModulesDir}/react-dom`, 'react-redux': `${nodeModulesDir}/react-redux/lib`, 'styled-components': `${nodeModulesDir}/styled-components`, 'react-intl': `${nodeModulesDir}/react-intl`, 'react-palm': `${nodeModulesDir}/react-palm`, // kepler.gl and loaders.gl need to use same apache-arrow 'apache-arrow': `${nodeModulesDir}/apache-arrow` }; }; // Env variables required for demo app const requiredEnvVariables = [ 'MapboxAccessToken', 'DropboxClientId', 'MapboxExportToken', 'CartoClientId', 'FoursquareClientId', 'FoursquareDomain', 'FoursquareAPIURL', 'FoursquareUserMapsURL' ]; /** * Check for all required env variables to be present */ const checkEnvVariables = () => { const missingVars = requiredEnvVariables.filter(key => !process.env[key]); if (missingVars.length > 0) { console.warn(`⚠️ Warning: Missing environment variables: ${missingVars.join(', ')}`); } else { console.log('✅ All required environment variables are set.'); } }; const NODE_ENV = JSON.stringify(process.env.NODE_ENV || 'production'); const config = { platform: 'browser', format: 'iife', logLevel: 'info', loader: { '.js': 'jsx', '.css': 'css', '.ttf': 'file', '.woff': 'file', '.woff2': 'file' }, entryPoints: ['src/main.js'], outfile: 'dist/bundle.js', bundle: true, define: { NODE_ENV, // Define process.env variables for browser environment 'process.env.MapboxAccessToken': JSON.stringify(process.env.MapboxAccessToken || ''), 'process.env.DropboxClientId': JSON.stringify(process.env.DropboxClientId || ''), 'process.env.MapboxExportToken': JSON.stringify(process.env.MapboxExportToken || ''), 'process.env.CartoClientId': JSON.stringify(process.env.CartoClientId || ''), 'process.env.FoursquareClientId': JSON.stringify(process.env.FoursquareClientId || ''), 'process.env.FoursquareDomain': JSON.stringify(process.env.FoursquareDomain || ''), 'process.env.FoursquareAPIURL': JSON.stringify(process.env.FoursquareAPIURL || ''), 'process.env.FoursquareUserMapsURL': JSON.stringify(process.env.FoursquareUserMapsURL || ''), 'process.env.NODE_ENV': NODE_ENV }, plugins: [ dotenvRun({ verbose: true, environment: NODE_ENV, root: '../../.env' }), // automatically injected kepler.gl package version into the bundle replace({ __PACKAGE_VERSION__: KeplerPackage.version, include: /constants\/src\/default-settings\.ts/ }) ] }; function addAliases(externals, args) { const resolveAlias = getThirdPartyLibraryAliases(true); // Combine flags const useLocalDeck = args.includes('--env.deck') || args.includes('--env.hubble_src'); const useRepoDeck = args.includes('--env.deck_src'); const useLocalAiAssistant = args.includes('--env.ai'); // resolve ai-assistant from local dir if (useLocalAiAssistant) { resolveAlias['@openassistant/core'] = join(LIB_DIR, '../openassistant/packages/core/src'); resolveAlias['@openassistant/ui'] = join(LIB_DIR, '../openassistant/packages/ui/src'); resolveAlias['@openassistant/echarts'] = join( LIB_DIR, '../openassistant/packages/components/echarts/src' ); resolveAlias['@openassistant/tables'] = join( LIB_DIR, '../openassistant/packages/components/tables/src' ); resolveAlias['@openassistant/geoda'] = join( LIB_DIR, '../openassistant/packages/tools/geoda/src' ); resolveAlias['@openassistant/duckdb'] = join( LIB_DIR, '../openassistant/packages/tools/duckdb/src' ); resolveAlias['@openassistant/plots'] = join( LIB_DIR, '../openassistant/packages/tools/plots/src' ); resolveAlias['@openassistant/osm'] = join(LIB_DIR, '../openassistant/packages/tools/osm/src'); resolveAlias['@openassistant/utils'] = join(LIB_DIR, '../openassistant/packages/utils/src'); resolveAlias['@kepler.gl/ai-assistant'] = join(SRC_DIR, 'ai-assistant/src'); } // resolve deck.gl from local dir if (useLocalDeck || useRepoDeck) { // Load deck.gl from root node_modules // if env.deck_src Load deck.gl from deck.gl/modules/main/src folder parallel to kepler.gl resolveAlias['deck.gl'] = useLocalDeck ? `${NODE_MODULES_DIR}/deck.gl/src` : `${EXTERNAL_DECK_SRC}/modules/main/src`; // if env.deck Load @deck.gl modules from root node_modules/@deck.gl // if env.deck_src Load @deck.gl modules from deck.gl/modules folder parallel to kepler.gl externals['deck.gl'].forEach(mdl => { resolveAlias[`@deck.gl/${mdl}`] = useLocalDeck ? `${NODE_MODULES_DIR}/@deck.gl/${mdl}/src` : `${EXTERNAL_DECK_SRC}/modules/${mdl}/src`; // types are stored in different directory resolveAlias[`@deck.gl/${mdl}/typed`] = useLocalDeck ? `${NODE_MODULES_DIR}/@deck.gl/${mdl}/typed` : `${EXTERNAL_DECK_SRC}/modules/${mdl}/src/types`; }); ['luma.gl', 'probe.gl', 'loaders.gl'].forEach(name => { // if env.deck Load ${name} from root node_modules // if env.deck_src Load ${name} from deck.gl/node_modules folder parallel to kepler.gl resolveAlias[name] = useLocalDeck ? `${NODE_MODULES_DIR}/${name}/src` : name === 'probe.gl' ? `${EXTERNAL_DECK_SRC}/node_modules/${name}/src` : `${EXTERNAL_DECK_SRC}/node_modules/@${name}/core/src`; // if env.deck Load @${name} modules from root node_modules/@${name} // if env.deck_src Load @${name} modules from deck.gl/node_modules/@${name} folder parallel to kepler.gl` externals[name].forEach(mdl => { resolveAlias[`@${name}/${mdl}`] = useLocalDeck ? `${NODE_MODULES_DIR}/@${name}/${mdl}/src` : `${EXTERNAL_DECK_SRC}/node_modules/@${name}/${mdl}/src`; }); }); } if (args.includes('--env.loaders_src')) { externals['loaders.gl'].forEach(mdl => { resolveAlias[`@loaders.gl/${mdl}`] = `${EXTERNAL_LOADERS_SRC}/modules/${mdl}/src`; }); } if (args.includes('--env.hubble_src')) { externals['hubble.gl'].forEach(mdl => { resolveAlias[`@hubble.gl/${mdl}`] = `${EXTERNAL_HUBBLE_SRC}/modules/${mdl}/src`; }); } return resolveAlias; } function openURL(url) { // Could potentially be replaced by https://www.npmjs.com/package/open, it was throwing an error when tried last const cmd = { darwin: ['open'], linux: ['xdg-open'], win32: ['cmd', '/c', 'start'] }; const command = cmd[process.platform]; if (command) { spawn(command[0], [...command.slice(1), url]); } } (async () => { // local dev const modules = ['@deck.gl', '@loaders.gl', '@luma.gl', '@probe.gl', '@hubble.gl']; const loadAllDirs = modules.map( dir => new Promise(success => { fs.readdir(join(NODE_MODULES_DIR, dir), (err, items) => { if (err) { const colorRed = '\x1b[31m'; const colorReset = '\x1b[0m'; console.log( `${colorRed}%s${colorReset}`, `Cannot find ${dir} in node_modules, make sure it is installed. ${err}` ); success(null); } success(items); }); }) ); const externals = await Promise.all(loadAllDirs).then(results => ({ 'deck.gl': results[0], 'loaders.gl': results[1], 'luma.gl': results[2], 'probe.gl': results[3], 'hubble.gl': results[4] })); const localAliases = addAliases(externals, args); if (args.includes('--build')) { await esbuild .build({ ...config, minify: true, sourcemap: false, // Add alias resolution for build alias: { ...getThirdPartyLibraryAliases(true) }, // Add these production optimizations define: { ...config.define, 'process.env.NODE_ENV': '"production"' }, drop: ['console', 'debugger'], treeShaking: true, metafile: true, // Optionally generate a bundle analysis plugins: [ ...config.plugins, { name: 'bundle-analyzer', setup(build) { build.onEnd(result => { if (result.metafile) { // Write bundle analysis to disk fs.writeFileSync('meta.json', JSON.stringify(result.metafile)); } }); } } ] }) .catch(e => { console.error(e); process.exit(1); }) .then(() => { checkEnvVariables(); }); } if (args.includes('--start')) { await esbuild .context({ ...config, minify: false, sourcemap: true, // add alias to resolve libraries so there is only one copy of them ...(process.env.NODE_ENV === 'local' ? {alias: localAliases} : {alias: getThirdPartyLibraryAliases(false)}), banner: { js: `new EventSource('/esbuild').addEventListener('change', () => location.reload());` } }) .then(async ctx => { checkEnvVariables(); await ctx.watch(); await ctx.serve({ servedir: 'dist', port, fallback: 'dist/index.html', onRequest: ({remoteAddress, method, path, status, timeInMS}) => { console.info(remoteAddress, status, `"${method} ${path}" [${timeInMS}ms]`); } }); console.info( `kepler.gl demo app running at ${`http://localhost:${port}`}, press Ctrl+C to stop` ); openURL(`http://localhost:${port}`); }) .catch(e => { console.error(e); process.exit(1); }); } })(); ================================================ FILE: examples/demo-app/package.json ================================================ { "scripts": { "start": "node esbuild.config.mjs --start", "build": "node esbuild.config.mjs --build", "deploy": "yarn build && netlify deploy -d dist", "deploy:prod": "yarn build && netlify deploy -d dist --prod", "start:local": "NODE_ENV=local node esbuild.config.mjs --start", "start:local-ai": "NODE_ENV=local node esbuild.config.mjs --start --env.ai", "start:local-deck": "NODE_ENV=local node esbuild.config.mjs --start --env.deck", "start:local-deck-src": "NODE_ENV=local node esbuild.config.mjs --start --env.deck_src", "start:local-loaders-src": "NODE_ENV=local node esbuild.config.mjs --start --env.loaders_src", "start:local-hubble-src": "NODE_ENV=local node esbuild.config.mjs --start --env.hubble_src" }, "dependencies": { "@auth0/auth0-spa-js": "^2.1.2", "@carto/toolkit": "0.0.1-rc.18", "@emotion/is-prop-valid": "^1.2.1", "@kepler.gl/actions": "^3.2.0", "@kepler.gl/ai-assistant": "^3.2.0", "@kepler.gl/cloud-providers": "^3.2.0", "@kepler.gl/components": "^3.2.0", "@kepler.gl/constants": "^3.2.0", "@kepler.gl/duckdb": "^3.2.0", "@kepler.gl/processors": "^3.2.0", "@kepler.gl/reducers": "^3.2.0", "@kepler.gl/schemas": "^3.2.0", "@kepler.gl/styles": "^3.2.0", "@kepler.gl/utils": "^3.2.0", "@loaders.gl/arrow": "^4.3.2", "@loaders.gl/core": "^4.3.2", "@loaders.gl/csv": "^4.3.2", "@loaders.gl/json": "^4.3.2", "@loaders.gl/parquet": "^4.3.2", "@openassistant/core": "^0.5.17", "@openassistant/ui": "^0.5.17", "@types/classnames": "^2.3.1", "@types/keymirror": "^0.1.1", "apache-arrow": ">=15.0.0", "classnames": "^2.2.1", "d3-format": "^2.0.0", "dropbox": "^4.0.12", "esbuild": "^0.25.0", "global": "^4.3.0", "keymirror": "^0.1.1", "markdown-to-jsx": "^7.7.6", "prop-types": "^15.6.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-intl": "^6.3.0", "react-redux": "^8.0.5", "react-resizable-panels": "^2.1.7", "react-router": "3.2.5", "react-router-redux": "^4.0.8", "react-virtualized": "^9.21.0", "redux": "^4.2.1", "redux-actions": "^2.2.1", "redux-logger": "^3.0.6", "redux-thunk": "^1.0.0", "styled-components": "6.1.8", "usehooks-ts": "^3.1.0" }, "resolutions": { "@luma.gl/core": "8.5.21", "@luma.gl/webgl": "8.5.21", "@deck.gl/core": "8.9.27", "@deck.gl/extensions": "8.9.27", "react-vis": "1.11.7" }, "engines": { "node": ">=18" }, "volta": { "node": "18.18.2", "yarn": "4.4.0" }, "packageManager": "yarn@4.4.0", "devDependencies": { "@dotenv-run/esbuild": "^1.5.0", "esbuild-plugin-replace": "^1.4.0" } } ================================================ FILE: examples/demo-app/src/actions.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import {push} from 'react-router-redux'; import {fetch} from 'global'; import {loadFiles, toggleModal} from '@kepler.gl/actions'; import {parseUri} from '@kepler.gl/common-utils'; import {load} from '@loaders.gl/core'; import {CSVLoader} from '@loaders.gl/csv'; import {GeoArrowLoader} from '@loaders.gl/arrow'; import {_GeoJSONLoader as GeoJSONLoader} from '@loaders.gl/json'; import {ParquetWasmLoader} from '@loaders.gl/parquet'; import { LOADING_SAMPLE_ERROR_MESSAGE, LOADING_SAMPLE_LIST_ERROR_MESSAGE, MAP_CONFIG_URL } from './constants/default-settings'; // CONSTANTS export const INIT = 'INIT'; export const LOAD_REMOTE_RESOURCE_SUCCESS = 'LOAD_REMOTE_RESOURCE_SUCCESS'; export const LOAD_REMOTE_DATASET_PROCESSED_SUCCESS = 'LOAD_REMOTE_DATASET_PROCESSED_SUCCESS'; export const LOAD_REMOTE_RESOURCE_ERROR = 'LOAD_REMOTE_RESOURCE_ERROR'; export const LOAD_MAP_SAMPLE_FILE = 'LOAD_MAP_SAMPLE_FILE'; export const SET_SAMPLE_LOADING_STATUS = 'SET_SAMPLE_LOADING_STATUS'; // Sharing export const PUSHING_FILE = 'PUSHING_FILE'; export const CLOUD_LOGIN_SUCCESS = 'CLOUD_LOGIN_SUCCESS'; // ACTIONS export function initApp() { return { type: INIT }; } export function loadRemoteResourceSuccess(response, config, options, remoteDatasetConfig) { return { type: LOAD_REMOTE_RESOURCE_SUCCESS, response, config, options, remoteDatasetConfig }; } export function loadRemoteDatasetProcessedSuccessAction(result) { return { type: LOAD_REMOTE_DATASET_PROCESSED_SUCCESS, payload: result }; } export function loadRemoteResourceError(error, url) { return { type: LOAD_REMOTE_RESOURCE_ERROR, error, url }; } export function loadMapSampleFile(samples) { return { type: LOAD_MAP_SAMPLE_FILE, samples }; } export function setLoadingMapStatus(isMapLoading) { return { type: SET_SAMPLE_LOADING_STATUS, isMapLoading }; } /** * Actions passed to kepler.gl, called * * Note: exportFile is called on both saving and sharing * * @param {*} param0 */ export function onExportFileSuccess({provider, options}) { return dispatch => { // if isPublic is true, use share Url if (options.isPublic && provider.getShareUrl) { dispatch(push(provider.getShareUrl(false))); } else if (!options.isPublic && provider.getMapUrl) { // if save private map to storage, use map url dispatch(push(provider.getMapUrl(false))); } }; } export function onLoadCloudMapSuccess({provider, loadParams}) { return dispatch => { const mapUrl = provider?.getMapUrl(loadParams); if (mapUrl) { const url = `/demo/map/${provider.name}?path=${mapUrl}`; dispatch(push(url)); } }; } // This can be moved into Kepler.gl to provide ability to load data from remote URLs /** * The method is able to load both data and kepler.gl files. * It uses loadFile action to dispatch and add new datasets/configs * to the kepler.gl instance * @param options * @param {string} options.dataUrl the URL to fetch data from. Current supported file type json,csv, kepler.json * @returns {Function} */ export function loadRemoteMap(options) { return dispatch => { dispatch(setLoadingMapStatus(true)); // breakdown url into url+query params loadRemoteRawData(options.dataUrl).then( // In this part we turn the response into a FileBlob // so we can use it to call loadFiles ([file, url]) => { const {file: filename} = parseUri(url); dispatch(loadFiles([new File([file], filename)])).then(() => dispatch(setLoadingMapStatus(false)) ); }, error => { const {target = {}} = error; const {status, responseText} = target; dispatch(loadRemoteResourceError({status, message: responseText}, options.dataUrl)); } ); }; } /** * Load a file from a remote URL * @param url * @returns {Promise} */ function loadRemoteRawData(url) { if (!url) { // TODO: we should return reject with an appropriate error return Promise.resolve(null); } return fetch(url) .then(resp => { if (!resp.ok) { return resp.text().then(text => { throw new Error(text); }); } return resp.blob(); }) .then(data => { return [data, url]; }); } // The following methods are only used to load SAMPLES /** * * @param {Object} options * @param {string} [options.dataUrl] the URL to fetch data from, e.g. https://raw.githubusercontent.com/keplergl/kepler.gl-data/master/earthquakes/data.csv * @param {string} [options.configUrl] the URL string to fetch kepler config from, e.g. https://raw.githubusercontent.com/keplergl/kepler.gl-data/master/earthquakes/config.json * @param {string} [options.id] the id used as dataset unique identifier, e.g. earthquakes * @param {string} [options.label] the label used to describe the new dataset, e.g. California Earthquakes * @param {string} [options.queryType] the type of query to execute to load data/config, e.g. sample * @param {string} [options.imageUrl] the URL to fetch the dataset image to use in sample gallery * @param {string} [options.description] the description used in sample galley to define the current example * @param {string} [options.size] the number of entries displayed in the current sample * @param {string} [keplergl] url to fetch the full data/config generated by kepler * @returns {Function} */ export function loadSample(options, pushRoute = true) { return (dispatch, getState) => { const {routing} = getState(); if (options.id && pushRoute) { dispatch(push(`/demo/${options.id}${routing.locationBeforeTransitions?.search ?? ''}`)); } // if the sample has a kepler.gl config file url we load it if (options.keplergl) { dispatch(loadRemoteMap({dataUrl: options.keplergl})); } else { dispatch(loadRemoteSampleMap(options)); } dispatch(setLoadingMapStatus(true)); }; } /** * Load remote map with config and data * @param options {configUrl, dataUrl} * @returns {Function} */ function loadRemoteSampleMap(options) { return dispatch => { // Load configuration first const {configUrl, dataUrl, remoteDatasetConfigUrl} = options; const toLoad = [loadRemoteConfig(configUrl)]; toLoad.push(dataUrl ? loadRemoteData(dataUrl) : null); // Load remote dataset config for tiled layers toLoad.push(remoteDatasetConfigUrl ? loadRemoteConfig(remoteDatasetConfigUrl) : null); Promise.all(toLoad).then( ([config, data, remoteDatasetConfig]) => { // TODO: these two actions can be merged dispatch(loadRemoteResourceSuccess(data, config, options, remoteDatasetConfig)); // TODO: toggleModal when async dataset task is done, show the spinner until then dispatch(toggleModal(null)); }, error => { if (error) { const {target = {}} = error; const {status, responseText} = target; dispatch( loadRemoteResourceError( { status, message: `${responseText} - ${LOADING_SAMPLE_ERROR_MESSAGE} ${options.id} (${configUrl})` }, configUrl ) ); } } ); }; } /** * * @param url * @returns {Promise} */ function loadRemoteConfig(url) { if (!url) { // TODO: we should return reject with an appropriate error return Promise.resolve(null); } return fetch(url).then(resp => { if (!resp.ok) { return resp.text().then(text => { throw new Error(text); }); } return resp.json(); }); } /** * * @param url to fetch data from (csv, json, geojson) * @returns {Promise} */ function loadRemoteData(url) { if (!url) { // TODO: we should return reject with an appropriate error return Promise.resolve(null); } // Load data return new Promise(resolve => { const loaders = [CSVLoader, GeoArrowLoader, ParquetWasmLoader, GeoJSONLoader]; const loadOptions = { csv: { shape: 'object-row-table' }, arrow: { shape: 'arrow-table' }, parquet: { shape: 'arrow-table' }, metadata: true }; const data = load(url, loaders, loadOptions); resolve(data); }); } /** * * @param sampleMapId optional if we pass the sampleMapId, after fetching * map sample configurations we are going to load the actual map data if it exists * @returns {function(*)} */ export function loadSampleConfigurations(sampleMapId = null) { return dispatch => { fetch(MAP_CONFIG_URL) .then(response => { if (!response.ok) { return response.text().then(text => { throw new Error(text); }); } else { return response.json(); } }) .then(samples => { dispatch(loadMapSampleFile(samples)); // Load the specified map const map = sampleMapId && samples.find(s => s.id === sampleMapId); if (map) { dispatch(loadSample(map, false)); } }) .catch(error => { dispatch( loadRemoteResourceError( {message: `${error} - ${LOADING_SAMPLE_LIST_ERROR_MESSAGE}`}, MAP_CONFIG_URL ) ); }); }; } ================================================ FILE: examples/demo-app/src/app.tsx ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import React, {useCallback, useEffect, useRef, useState} from 'react'; import AutoSizer from 'react-virtualized/dist/commonjs/AutoSizer'; import styled, {ThemeProvider, StyleSheetManager} from 'styled-components'; import Window from 'global/window'; import {connect, useDispatch} from 'react-redux'; import cloneDeep from 'lodash/cloneDeep'; import isEqual from 'lodash/isEqual'; import {useSelector} from 'react-redux'; import isPropValid from '@emotion/is-prop-valid'; import {WebMercatorViewport} from '@deck.gl/core'; import {ScreenshotWrapper} from '@openassistant/ui'; import { setStartScreenCapture, setScreenCaptured, AiAssistantPanel, setMapBoundary } from '@kepler.gl/ai-assistant'; import {panelBorderColor, theme} from '@kepler.gl/styles'; import {ParsedConfig} from '@kepler.gl/types'; import {getApplicationConfig} from '@kepler.gl/utils'; import {SqlPanel} from '@kepler.gl/duckdb/components'; import Banner from './components/banner'; import Announcement, {FormLink} from './components/announcement'; import {replaceLoadDataModal} from './factories/load-data-modal'; import {replaceMapControl} from './factories/map-control'; import {replacePanelHeader} from './factories/panel-header'; import {CLOUD_PROVIDERS_CONFIGURATION, DEFAULT_FEATURE_FLAGS} from './constants/default-settings'; import {messages} from './constants/localization'; import { loadRemoteMap, loadSampleConfigurations, onExportFileSuccess, onLoadCloudMapSuccess } from './actions'; import { loadCloudMap, addDataToMap, replaceDataInMap, toggleMapControl, toggleModal } from '@kepler.gl/actions'; import {CLOUD_PROVIDERS} from './cloud-providers'; import {Panel, PanelGroup, PanelResizeHandle} from 'react-resizable-panels'; const KeplerGl = require('@kepler.gl/components').injectComponents([ replaceLoadDataModal(), replaceMapControl(), replacePanelHeader() ]); // Sample data /* eslint-disable no-unused-vars */ import sampleTripData, {testCsvData, sampleTripDataConfig} from './data/sample-trip-data'; // import sampleGeojson from './data/sample-small-geojson'; // import sampleGeojsonPoints from './data/sample-geojson-points'; import sampleGeojsonConfig from './data/sample-geojson-config'; import sampleH3Data, {config as h3MapConfig} from './data/sample-hex-id-csv'; import sampleS2Data, {config as s2MapConfig, dataId as s2DataId} from './data/sample-s2-data'; import sampleAnimateTrip, { pointData, pointDataId, animateTripDataId, replacePointData, config as syncedTripConfig } from './data/sample-animate-trip-data'; import sampleIconCsv from './data/sample-icon-csv'; import sampleGpsData from './data/sample-gps-data'; import sampleRowData, {config as rowDataConfig} from './data/sample-row-data'; import {processCsvData, processGeojson, processRowObject} from '@kepler.gl/processors'; /* eslint-enable no-unused-vars */ // This implements the default behavior from styled-components v5 function shouldForwardProp(propName, target) { if (typeof target === 'string') { // For HTML elements, forward the prop if it is a valid HTML attribute return isPropValid(propName); } // For other elements, forward all props return true; } const BannerHeight = 48; const BannerKey = `banner-${FormLink}`; const keplerGlGetState = state => state.demo.keplerGl; const GlobalStyle = styled.div` font-family: ff-clan-web-pro, 'Helvetica Neue', Helvetica, sans-serif; font-weight: 400; font-size: 0.875em; line-height: 1.71429; *, *:before, *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } ul { margin: 0; padding: 0; } li { margin: 0; } a { text-decoration: none; color: ${props => props.theme.labelColor}; } `; const CONTAINER_STYLE = { transition: 'margin 1s, height 1s', position: 'absolute', width: '100%', height: '100%', left: 0, top: 0, display: 'flex', flexDirection: 'column', backgroundColor: '#333' }; const StyledResizeHandle = styled(PanelResizeHandle)` background-color: ${panelBorderColor}; &:hover { background-color: #555; } width: 100%; height: 5px; cursor: row-resize; `; const StyledVerticalResizeHandle = styled(PanelResizeHandle)` background-color: ${panelBorderColor}; width: 4px; height: 100%; cursor: row-resize; &:hover { background-color: #555; } `; const App = props => { const [showBanner, toggleShowBanner] = useState(false); const {params: {id, provider} = {}, location: {query = {}} = {}} = props; const dispatch = useDispatch(); // TODO find another way to check for existence of duckDb plugin const duckDbPluginEnabled = (getApplicationConfig().plugins || []).some(p => p.name === 'duckdb'); const isSqlPanelOpen = useSelector( state => duckDbPluginEnabled && state?.demo?.keplerGl?.map?.uiState.mapControls.sqlPanel?.active ); const isAiAssistantPanelOpen = useSelector( state => state?.demo?.keplerGl?.map?.uiState.mapControls.aiAssistant?.active ); const prevQueryRef = useRef(null); useEffect(() => { // if we pass an id as part of the url // we try to fetch along map configurations const cloudProvider = CLOUD_PROVIDERS.find(c => c.name === provider); if (cloudProvider) { // Prevent constant reloading after change of the location if (isEqual(prevQueryRef.current, {provider, id, query})) { return; } dispatch( loadCloudMap({ loadParams: query, provider: cloudProvider, onSuccess: onLoadCloudMapSuccess }) ); prevQueryRef.current = {provider, id, query}; return; } // Load sample using its id if (id) { dispatch(loadSampleConfigurations(id)); } // Load map using a custom if (query.mapUrl) { // TODO?: validate map url dispatch(loadRemoteMap({dataUrl: query.mapUrl})); } if (duckDbPluginEnabled && query.sql) { dispatch(toggleMapControl('sqlPanel', 0)); dispatch(toggleModal(null)); } // delay zs to show the banner // if (!window.localStorage.getItem(BannerKey)) { // window.setTimeout(_showBanner, 3000); // } // load sample data _loadSampleData(); // Notifications // no dependencies, as this was part of componentDidMount // eslint-disable-next-line react-hooks/exhaustive-deps }, []); /** * Update map boundary when view state changes, used by ai-assistant to * get data from vector tiles when map boundary changes */ const onViewStateChange = useCallback( viewState => { const viewport = new WebMercatorViewport(viewState); const nw = viewport.unproject([0, 0]); const se = viewport.unproject([viewport.width, viewport.height]); dispatch(setMapBoundary(nw, se)); }, [dispatch] ); const _setStartScreenCapture = useCallback( flag => { dispatch(setStartScreenCapture(flag)); }, [dispatch] ); const _setScreenCaptured = useCallback( screenshot => { dispatch(setScreenCaptured(screenshot)); }, [dispatch] ); /* const _showBanner = useCallback(() => { toggleShowBanner(true); }, [toggleShowBanner]); */ const hideBanner = useCallback(() => { toggleShowBanner(false); }, [toggleShowBanner]); const _disableBanner = useCallback(() => { hideBanner(); Window.localStorage.setItem(BannerKey, 'true'); }, [hideBanner]); const _loadRowData = useCallback(() => { dispatch( addDataToMap({ datasets: [ { info: { label: 'Sample Visit Data', id: 'sample_visit_data' }, data: processRowObject(sampleRowData) } ], config: rowDataConfig }) ); }, [dispatch]); const _loadVectorTileData = useCallback(() => { dispatch( addDataToMap({ datasets: [ { info: { label: 'Railroads', id: 'railroads.pmtiles', color: [255, 0, 0], type: 'vector-tile' }, data: { rows: [], fields: [ { name: 'continent', type: 'string', format: '', analyzerType: 'STRING' } ] }, metadata: { name: 'output.pmtiles', description: 'output.pmtiles', type: 'remote', remoteTileFormat: 'pmtiles', tilesetDataUrl: 'https://4sq-studio-public.s3.us-west-2.amazonaws.com/pmtiles-test/161727fe-7952-4e57-aa05-850b3086b0b2.pmtiles', tilesetMetadataUrl: 'https://4sq-studio-public.s3.us-west-2.amazonaws.com/pmtiles-test/161727fe-7952-4e57-aa05-850b3086b0b2.pmtiles', id: 'sz6uy1xtj', format: 'rows', label: 'output.pmtiles', metaJson: null, bounds: [-150.1122219, -51.8952777, 179.3577783, 69.6043747], center: [14.0625, 50.7026397, 6], maxZoom: 6, minZoom: 0, fields: [ { name: 'continent', id: 'continent', format: '', filterProps: { domain: [ 'Africa', 'Asia', 'Europe', 'North America', 'Oceania', 'South America' ], value: [], type: 'multiSelect', gpu: false }, type: 'string', analyzerType: 'STRING' } ] } } ], options: { autoCreateLayers: true } }) ); }, [dispatch]); const _loadPointData = useCallback(() => { dispatch( addDataToMap({ datasets: [ { info: { label: 'Sample Taxi Trips 1', id: 'test_trip_data', color: [255, 0, 0] }, data: { rows: sampleTripData.rows.slice(0, 20), fields: cloneDeep(sampleTripData.fields) } }, { info: { label: 'Sample Taxi Trips 2', id: 'test_trip_data_2', color: [0, 255, 0] }, data: { rows: sampleTripData.rows.slice(5, sampleTripData.rows.length), fields: cloneDeep(sampleTripData.fields) } } ], options: { // centerMap: true, keepExistingConfig: true }, config: sampleTripDataConfig }) ); }, [dispatch]); const _loadScenegraphLayer = useCallback(() => { dispatch( addDataToMap({ datasets: { info: { label: 'Sample Scenegraph Ducks', id: 'test_trip_data' }, data: processCsvData(testCsvData) }, config: { version: 'v1', config: { visState: { layers: [ { type: '3D', config: { dataId: 'test_trip_data', columns: { lat: 'gps_data.lat', lng: 'gps_data.lng' }, isVisible: true } } ] } } } }) ); }, [dispatch]); const _loadIconData = useCallback(() => { // load icon data and config and process csv file dispatch( addDataToMap({ datasets: [ { info: { label: 'Icon Data', id: 'test_icon_data' }, data: processCsvData(sampleIconCsv) } ] }) ); }, [dispatch]); const _loadTripGeoJson = useCallback(() => { dispatch( addDataToMap({ datasets: [ { info: {label: 'Trip animation', id: animateTripDataId}, data: processGeojson(sampleAnimateTrip) } ] }) ); }, [dispatch]); const _loadGeojsonData = useCallback(() => { // load geojson const geojsonPoints = processGeojson(sampleGeojsonPoints); const geojsonZip = null; // processGeojson(sampleGeojson); dispatch( addDataToMap({ datasets: [ geojsonPoints ? { info: {label: 'Bart Stops Geo', id: 'bart-stops-geo'}, data: geojsonPoints } : null, geojsonZip ? { info: {label: 'SF Zip Geo', id: 'sf-zip-geo'}, data: geojsonZip } : null ].filter(d => d !== null), options: { keepExistingConfig: true }, config: sampleGeojsonConfig as ParsedConfig }) ); }, [dispatch]); const _loadSyncedFilterWTripLayer = useCallback(() => { dispatch( addDataToMap({ datasets: [ { info: {label: 'Trip animation', id: animateTripDataId}, data: processGeojson(sampleAnimateTrip) }, { info: { label: 'Sample Taxi Trips', id: pointDataId, color: [255, 0, 0] }, data: pointData } ], config: syncedTripConfig, options: { centerMap: true } }) ); }, [dispatch]); const _replaceSyncedFilterWTripLayer = useCallback(() => { window.setTimeout(() => { dispatch( replaceDataInMap({ datasetToReplaceId: pointDataId, datasetToUse: { info: {label: 'Sample Taxi Trips Replaced', id: `${pointDataId}-2`}, data: replacePointData } }) ); }, 1000); }, [dispatch]); const _replaceData = useCallback(() => { // add geojson data const sliceData = processGeojson({ type: 'FeatureCollection', features: sampleGeojsonPoints.features.slice(0, 5) }); _loadGeojsonData(); Window.setTimeout(() => { dispatch( replaceDataInMap({ datasetToReplaceId: 'bart-stops-geo', datasetToUse: { info: {label: 'Bart Stops Geo Replaced', id: 'bart-stops-geo-2'}, data: sliceData } }) ); }, 1000); }, [dispatch, _loadGeojsonData]); const _loadH3HexagonData = useCallback(() => { // load h3 hexagon dispatch( addDataToMap({ datasets: [ { info: { label: 'H3 Hexagons V2', id: 'h3-hex-id' }, data: processCsvData(sampleH3Data) } ], config: h3MapConfig, options: { keepExistingConfig: true } }) ); }, [dispatch]); const _loadS2Data = useCallback(() => { // load s2 dispatch( addDataToMap({ datasets: [ { info: { label: 'S2 Data', id: s2DataId }, data: processCsvData(sampleS2Data) } ], config: s2MapConfig as ParsedConfig, options: { keepExistingConfig: true } }) ); }, [dispatch]); const _loadGpsData = useCallback(() => { dispatch( addDataToMap({ datasets: [ { info: { label: 'Gps Data', id: 'gps-data' }, data: processCsvData(sampleGpsData) } ], options: { keepExistingConfig: true } }) ); }, [dispatch]); const _loadSampleData = useCallback(() => { // _loadPointData(); // _loadGeojsonData(); // _loadTripGeoJson(); // _loadIconData(); // _loadH3HexagonData(); // _loadS2Data(); // _loadScenegraphLayer(); // _loadGpsData(); // _loadRowData(); // _loadVectorTileData(); // _loadSyncedFilterWTripLayer(); // _replaceSyncedFilterWTripLayer(); // eslint-disable-next-line react-hooks/exhaustive-deps }, [ _loadPointData, _loadGeojsonData, _loadTripGeoJson, _loadIconData, _loadH3HexagonData, _loadS2Data, _loadScenegraphLayer, _loadGpsData, _loadRowData, _replaceData, _loadVectorTileData, _loadSyncedFilterWTripLayer, _replaceSyncedFilterWTripLayer ]); return ( { // node ? (this.root = node) : null; // }} >
{({height, width}) => ( )} {isSqlPanelOpen && ( <> )} {isAiAssistantPanelOpen && ( <> )}
); }; const mapStateToProps = state => state; const dispatchToProps = dispatch => ({dispatch}); export default connect(mapStateToProps, dispatchToProps)(App); ================================================ FILE: examples/demo-app/src/cloud-providers/carto/carto-icon.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import React, {Component} from 'react'; import {Icons} from '@kepler.gl/components'; import PropTypes from 'prop-types'; class CartoIcon extends Component { static propTypes = { /** Set the height of the icon, ex. '16px' */ height: PropTypes.string, colors: PropTypes.arrayOf(PropTypes.string) }; static defaultProps = { height: '100%', viewBox: '0 0 92 36', predefinedClassName: 'data-ex-icons-carto' }; render() { return ( ); } } export default CartoIcon; ================================================ FILE: examples/demo-app/src/cloud-providers/carto/carto-provider.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import {OAuthApp} from '@carto/toolkit'; import Console from 'global/console'; import CartoIcon from './carto-icon'; import {Provider} from '@kepler.gl/cloud-providers'; import {createDataContainer} from '@kepler.gl/utils'; import {formatCsv} from '@kepler.gl/reducers'; const NAME = 'carto'; const DISPLAY_NAME = 'CARTO'; const NAMESPACE = 'keplergl'; const DOMAIN = 'carto.com'; const PRIVATE_STORAGE_ENABLED = true; const SHARING_ENABLED = true; export default class CartoProvider extends Provider { constructor(clientId) { super({name: NAME, displayName: DISPLAY_NAME, icon: CartoIcon}); this.clientId = clientId; this.thumbnail = {width: 300, height: 200}; this.currentMap = null; this._folderLink = `https://{user}.${DOMAIN}/dashboard/maps/external`; // Initialize CARTO API this._carto = new OAuthApp( { authorization: `https://${DOMAIN}/oauth2`, scopes: 'schemas:c datasets:rw:*' }, { serverUrlTemplate: `https://{user}.${DOMAIN}/`, namespace: NAMESPACE } ); this._carto.setClientID(clientId); } /** * The CARTO toolkit library takes care of the login process. */ login(onCloudLoginSuccess) { try { this._carto.login().then(() => { onCloudLoginSuccess && onCloudLoginSuccess(this.name); }); } catch (error) { this._manageErrors(error); } } logout(onCloudLogoutSuccess) { try { this._carto.oauth.clear(); this._carto.oauth._carto.sync(); onCloudLogoutSuccess(); } catch (error) { this._manageErrors(error); } } isEnabled() { return this.clientId !== null; } hasPrivateStorage() { return PRIVATE_STORAGE_ENABLED; } hasSharingUrl() { return SHARING_ENABLED; } async uploadMap({mapData = {}, options = {}}) { try { const {isPublic = true, overwrite = true} = options; const {map: {config, datasets, info} = {}, thumbnail} = mapData; const cartoDatasets = datasets.map(this._convertDataset); const cs = await this._carto.getCustomStorage(); const {title, description} = info; const name = title; const thumbnailBase64 = mapData && thumbnail ? await this._blobToBase64(mapData.thumbnail) : null; let result; if (overwrite) { result = await cs.updateVisualization( { id: this.currentMap.id, name, description, thumbnail: thumbnailBase64, config: JSON.stringify(config), isprivate: this.currentMap.isprivate }, cartoDatasets ); } else { // TODO: Ask for changing current shared map generation because of being too oriented to file based clouds // Check public name generation and replace const regex = /(?:^keplergl_)([a-z0-9]+)(?:.json$)/; const capturedName = name.match(regex); const visName = capturedName ? `sharedmap_${capturedName[1]}` : name; result = await cs.createVisualization( { name: visName, description, thumbnail: thumbnailBase64, config: JSON.stringify(config), isprivate: !isPublic }, cartoDatasets, true ); } if (result) { this.currentMap = result; } return { shareUrl: this._getMapPermalinkFromParams( { mapId: result.id, owner: this._carto.username, privateMap: !isPublic }, true ), folderLink: this._folderLink.replace('{user}', this._carto.username) }; } catch (error) { this._manageErrors(error); } } /** * Returns the access token. If it has expired returns null. The toolkit library loads it * from localStorage automatically */ async getAccessToken() { let accessToken = null; try { accessToken = this._carto.oauth.expired ? null : this._carto.oauth.token; } catch (error) { this._manageErrors(error, false); } return accessToken; } getUserName() { let username = null; try { username = this._carto.oauth.expired ? null : this._carto.username; } catch (error) { this._manageErrors(error, false); } return username; } /** * The CARTO cloud provider polls the created window internally to parse the URL * @param {*} location */ getAccessTokenFromLocation() { return; } async getUser() { return { name: this.getUserName(), abbreviated: '', email: '' }; } async downloadMap(queryParams) { try { const {owner: username, mapId, privateMap} = queryParams; if (!username || !mapId) { return; } let visualization; if (privateMap.trim().toLowerCase() === 'true') { await this._carto.login(); const currentUsername = this.getUserName(); if (currentUsername && currentUsername === username) { const cs = await this._carto.getCustomStorage(); visualization = await cs.getVisualization(mapId); } } else { visualization = await this._carto.PublicStorageReader.getVisualization(username, mapId); } if (!visualization) { throw new Error(`Can't find map with ID: ${mapId}`); } // These are the options required for the action. For now, all datasets that come from CARTO are CSV const datasets = visualization.datasets.map(dataset => { const datasetId = dataset.name; return { info: { id: datasetId, label: datasetId, description: dataset.description, dataUrl: '', configUrl: '', panelDisabled: true }, data: dataset.file }; }); // const datasets = visualization.datasets.map(dataset => dataset.file); this.currentMap = visualization.vis; return { map: { datasets, config: visualization.vis.config, info: {title: visualization.vis.name, description: visualization.vis.description} }, format: 'csv' }; } catch (error) { this._manageErrors(error); } } async listMaps() { // TODO: Implement pagination using {type='all', pageOffset=0, pageSize=-1} try { await this._carto.login(); const username = this.getUserName(); const cs = await this._carto.getCustomStorage(); const visualizations = await cs.getVisualizations(); let formattedVis = []; // Format visualization object for (const vis of visualizations) { formattedVis.push({ id: vis.id, title: vis.name, description: vis.description, privateMap: vis.isprivate, thumbnail: vis.thumbnail === 'undefined' ? null : vis.thumbnail, lastModification: new Date(Date.parse(vis.lastmodified)), loadParams: { owner: username, mapId: vis.id, privateMap: vis.isprivate.toString() } }); } formattedVis = formattedVis.sort((a, b) => b.lastModification - a.lastModification); return formattedVis; } catch (error) { this._manageErrors(error); } } getShareUrl(fullUrl = false) { return this.getMapUrl(fullUrl); } getMapUrl(fullUrl = true, mapParams = null) { if (mapParams) { return this._getMapPermalinkFromParams(mapParams, fullUrl); } else if (this.currentMap) { return this._getMapPermalinkFromParams( { mapId: this.currentMap.id, owner: this.getUserName(), privateMap: this.currentMap.isPrivate }, fullUrl ); } } getManagementUrl() { return this._folderLink.replace('{user}', this._carto.username); } getCurrentVisualization() { return this.currentMap ? {title: this.currentMap.name, description: this.currentMap.description} : null; } // PRIVATE _getMapPermalinkFromParams({mapId, owner, privateMap}, fullURL = true) { const mapLink = this._composeURL({mapId, owner, privateMap}); return fullURL ? `${window.location.protocol}//${window.location.host}/${mapLink}` : `/${mapLink}`; } _convertDataset({data: dataset}) { const {allData, fields, id} = dataset; const columns = fields.map(field => ({ name: field.name, type: field.type })); const dataContainer = createDataContainer([...allData]); const file = formatCsv(dataContainer, fields); return { name: id, columns, file }; } // eslint-disable-next-line complexity _manageErrors(error, throwException = true) { let message; if (error && error.message) { message = error.message; switch (error.message) { case 'No client ID has been specified': Console.error('No ClientID set for CARTO provider'); break; case 'Cannot set the client ID more than once': Console.error('CARTO provider already initialized'); break; case (error.message.match(/relation "[a-zA-Z0-9_]+" does not exist/) || {}).input: Console.error('CARTO custom storage is not properly initialized'); message = 'Custom storage is not properly initialized'; break; case ( error.message.match(/Failed to copy to keplergl_[a-zA-Z0-9_]+: Too many retries/) || {} ).input: Console.error('CARTO Rate limit exceeded'); message = "Failed to upload. You've exceeded the number of datasets allowed with your plan. Consider upgrading your plan."; break; case (error.message.match(/[a-zA-Z0-9_\s:]+: DB Quota exceeded/) || {}).input: Console.error('CARTO DB Quota exceeded'); message = "Failed to upload. You've exceeded your account's disk storage limit. Consider upgrading your plan."; break; default: Console.error(`CARTO provider: ${message}`); } } else { message = 'General error in CARTO provider'; Console.error(message); } // Use 'CARTO' as error code in order to show provider in notifications if (throwException) { throw new Error(message); } } _composeURL({mapId, owner, privateMap}) { return `demo/map/carto?mapId=${mapId}&owner=${owner}&privateMap=${privateMap}`; } _blobToBase64(blob) { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onloadend = () => { if (!reader.error) { resolve(reader.result); } else { reject(reader.error); } }; reader.readAsDataURL(blob); }); } } ================================================ FILE: examples/demo-app/src/cloud-providers/dropbox/dropbox-error-modal.js ================================================ // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project import React, {Component, createRef} from 'react'; import ReactDOM from 'react-dom'; const WIDTH = 400; const HEIGHT = 800; const style = {border: 0}; export default class Frame extends Component { componentDidMount() { this.renderFrameContents(); } componentDidUpdate() { this.renderFrameContents(); } componentWillUnmount() { this.root.current.unmount(); } root = createRef(); innerHtml = createRef(); renderFrameContents = () => { const doc = this.root.current.contentDocument; if (doc.readyState === 'complete') { ReactDOM.render( , doc ); } else { setTimeout(this.renderFrameContents.bind(this), 0); } }; render() { return