From 5a0e62fdcfe59e5a6f47063972fb4b123f50ec47 Mon Sep 17 00:00:00 2001 From: Mrtn-fa Date: Tue, 9 Apr 2024 13:36:56 -0400 Subject: [PATCH 01/11] commands, grid, and data processors WIP --- backend/config/__init__.py | 0 backend/config/environment.py | 3 +++ backend/config/paths.py | 6 +++++ backend/logs/.gitignore | 0 backend/processors/__init__.py | 0 backend/processors/commands.py | 46 ++++++++++++++++++++++++++++++++++ backend/processors/data.py | 16 ++++++++++++ backend/processors/grid.py | 46 ++++++++++++++++++++++++++++++++++ requirements-prod.txt | 4 ++- 9 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 backend/config/__init__.py create mode 100644 backend/config/environment.py create mode 100644 backend/config/paths.py create mode 100644 backend/logs/.gitignore create mode 100644 backend/processors/__init__.py create mode 100644 backend/processors/commands.py create mode 100644 backend/processors/data.py create mode 100644 backend/processors/grid.py diff --git a/backend/config/__init__.py b/backend/config/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/config/environment.py b/backend/config/environment.py new file mode 100644 index 0000000..0e0c652 --- /dev/null +++ b/backend/config/environment.py @@ -0,0 +1,3 @@ +from decouple import config + +PROTO_URL = config('PROTO_URL') \ No newline at end of file diff --git a/backend/config/paths.py b/backend/config/paths.py new file mode 100644 index 0000000..b6d94e8 --- /dev/null +++ b/backend/config/paths.py @@ -0,0 +1,6 @@ +import os +from pathlib import Path + +ROOT_PATH = Path(__file__).parent.parent +LOGS_PATH = Path(os.path.join(ROOT_PATH, "logs")) + diff --git a/backend/logs/.gitignore b/backend/logs/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/backend/processors/__init__.py b/backend/processors/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/processors/commands.py b/backend/processors/commands.py new file mode 100644 index 0000000..58540a1 --- /dev/null +++ b/backend/processors/commands.py @@ -0,0 +1,46 @@ +import logging +import os +import typer +import datetime +from pathlib import Path +from config.paths import LOGS_PATH +from processors.grid import generate_grid + +app = typer.Typer() +logger = logging.getLogger(__name__) + + +@app.command() +def calculate_speed( + start_date: str = typer.Option( + (datetime.datetime.now() - datetime.timedelta(minutes=60)).strftime('%Y-%m-%d %H:%M'), + help='Lower time bound to analyze (in UTC format). For example: 2020-01-01 04:00".' + 'If it\'s not provided, one hour to past will be used.'), + end_date: str = typer.Option( + datetime.datetime.now().strftime('%Y-%m-%d %H:%M'), + help='Lower time bound to analyze (in UTC format). For example: 2020-01-01 04:00".' + 'If it\'s not provided, one hour to past will be used.'), +): + print(start_date) + print(end_date) + grid_obj = generate_grid() + + + + vm = VehicleManager(grid_obj) + + +if __name__ == '__main__': + log_file_path = Path( + os.path.join(LOGS_PATH, 'output.log.{}'.format(datetime.datetime.now().strftime('%y_%m_%d_%H_%M_%S')))) + if log_file_path.exists(): + os.remove(log_file_path) + logging.basicConfig( + level=logging.INFO, + format='%(asctime)s %(levelname)s %(message)s', + handlers=[ + logging.FileHandler(log_file_path), + logging.StreamHandler() + ] + ) + app() diff --git a/backend/processors/data.py b/backend/processors/data.py new file mode 100644 index 0000000..33f4e12 --- /dev/null +++ b/backend/processors/data.py @@ -0,0 +1,16 @@ +import requests +from config.environment import PROTO_URL +from requests import Response + + +class ProtoFileProcessor: + def __init__(self): + self.url = PROTO_URL + + def download_proto_file(self) -> Response: + return requests.get(self.url) + + +class ShapeProcessor: + def __init__(self): + pass \ No newline at end of file diff --git a/backend/processors/grid.py b/backend/processors/grid.py new file mode 100644 index 0000000..c8b5612 --- /dev/null +++ b/backend/processors/grid.py @@ -0,0 +1,46 @@ +from typing import Dict, Tuple +from processors.data import ProtoFileProcessor +import logging + +logger = logging.getLogger(__name__) + + +class GridCell: + def __init__(self, x: float, y: float): + self.x = x + self.y = y + self.stops = [] + self.route_segments = {} + + +class GridManager(Dict[Tuple[int, int], GridCell]): + def __init__(self, stops: list, shapes_dict: dict): + super().__init__() + self.shapes_dict = shapes_dict + self.expected_cell_size_in_meters = 500 + self.grid_latitude_distance = 0 + self.grid_longitude_distance = 0 + self.grid_min_latitude = 0 + self.grid_min_longitude = 0 + self.latitude_cells_number = 0 + self.longitude_cells_number = 0 + + self.grid = None + + def process(self, shapes_dict): + grid = self.__create_grid() + + def __create_grid(self): + grid_min_lat = 90 + grid_max_lat = -90 + grid_min_lon = 180 + grid_max_lon = -180 + + + + +def generate_grid() -> GridManager: + logger.info("Generating grid object...") + grid_obj = GridManager() + grid_obj.process() + return grid_obj diff --git a/requirements-prod.txt b/requirements-prod.txt index e8d9c1a..4c81875 100644 --- a/requirements-prod.txt +++ b/requirements-prod.txt @@ -6,4 +6,6 @@ djangorestframework==3.13.1 django-filter==22.1 drf-spectacular==0.24.2 gunicorn==20.1.0 -psycopg2-binary==2.9.3 \ No newline at end of file +psycopg2-binary==2.9.3 +requests +typer \ No newline at end of file From b1d88da46bbfebd9f27925eb2b265dcac4a2f0c6 Mon Sep 17 00:00:00 2001 From: Mrtn-fa Date: Tue, 9 Apr 2024 13:47:41 -0400 Subject: [PATCH 02/11] fixed makefile --- Makefile | 27 ++++++++++--------- backend/config/environment.py | 2 +- ...2410cfde87ede10c5518f0dc7bf0948414c61.json | 1 + ...b2a663d92ed549739cfa18dc1c7834fa1514d.json | 1 + ...ce5f040ad099c8161bf254ab6ddabd1c6f03f.json | 1 + ...7defaaaab40b63589d435c13ffcd76917af0b.json | 1 + ...c925167560e2da18059a5f3e89ab99e55bc52.json | 1 + ...3e09df899604be20aa95453d2aa3a835f0564.json | 1 + ...d1c7d3c4ef744b62a0b8b24ab9d9af99336e7.json | 1 + 9 files changed, 23 insertions(+), 13 deletions(-) create mode 100644 backend/gps/utils/cache/32a2410cfde87ede10c5518f0dc7bf0948414c61.json create mode 100644 backend/gps/utils/cache/672b2a663d92ed549739cfa18dc1c7834fa1514d.json create mode 100644 backend/gps/utils/cache/6d9ce5f040ad099c8161bf254ab6ddabd1c6f03f.json create mode 100644 backend/gps/utils/cache/7cd7defaaaab40b63589d435c13ffcd76917af0b.json create mode 100644 backend/gps/utils/cache/83fc925167560e2da18059a5f3e89ab99e55bc52.json create mode 100644 backend/gps/utils/cache/c733e09df899604be20aa95453d2aa3a835f0564.json create mode 100644 backend/gps/utils/cache/fa7d1c7d3c4ef744b62a0b8b24ab9d9af99336e7.json diff --git a/Makefile b/Makefile index 43344d7..490fc99 100644 --- a/Makefile +++ b/Makefile @@ -1,14 +1,14 @@ # Windows ifeq ($(OS),Window_NT) - TEST = docker compose -p uoct-backend-test -f docker\docker-compose.yml - COMPOSE_DEV = docker compose -p uoct-backend-dev -f docker\docker-compose.yml -f docker\docker-compose-dev.yml --env-file .env.frontend - COMPOSE_PROD = docker compose -p uoct-backend-prod -f docker\docker-compose.yml --env-file .env.frontend + TEST = docker compose -p uoct-backend-test -f docker\docker-compose.yml --profile test + COMPOSE_DEV = docker compose -p uoct-backend-dev -f docker\docker-compose.yml -f docker\docker-compose-dev.yml --env-file .env.frontend --profile dev + COMPOSE_PROD = docker compose -p uoct-backend-prod -f docker\docker-compose.yml --env-file .env.frontend --profile prod MANAGE = python backend\manage.py # Linux else - TEST = docker compose -p uoct-backend-test -f docker/docker-compose.yml - COMPOSE_DEV = docker compose -p uoct-backend-dev -f docker/docker-compose.yml -f docker/docker-compose-dev.yml --env-file .env.frontend - COMPOSE_PROD = docker compose -p uoct-backend-prod -f docker/docker-compose.yml --env-file .env.frontend + TEST = docker compose -p uoct-backend-test -f docker/docker-compose.yml --profile test + COMPOSE_DEV = docker compose -p uoct-backend-dev -f docker/docker-compose.yml -f docker/docker-compose-dev.yml --env-file .env.frontend --profile dev + COMPOSE_PROD = docker compose -p uoct-backend-prod -f docker/docker-compose.yml --env-file .env.frontend --profile prod MANAGE = python backend/manage.py endif @@ -17,13 +17,16 @@ migrate: $(MANAGE) migrate test: - $(TEST) --profile test build - $(TEST) --profile test up --abort-on-container-exit + $(TEST) build + $(TEST) up --abort-on-container-exit dev_up: - $(COMPOSE_DEV) --profile dev build - $(COMPOSE_DEV) --profile dev up + $(COMPOSE_DEV) build + $(COMPOSE_DEV) up + +dev_down: + $(COMPOSE_DEV) down prod_up: - @$(COMPOSE_PROD) --profile prod build - @$(COMPOSE_PROD) --profile prod up -d \ No newline at end of file + @$(COMPOSE_PROD) build + @$(COMPOSE_PROD) up -d \ No newline at end of file diff --git a/backend/config/environment.py b/backend/config/environment.py index 0e0c652..eaff10d 100644 --- a/backend/config/environment.py +++ b/backend/config/environment.py @@ -1,3 +1,3 @@ from decouple import config -PROTO_URL = config('PROTO_URL') \ No newline at end of file +PROTO_URL = config('PROTO_URL') diff --git a/backend/gps/utils/cache/32a2410cfde87ede10c5518f0dc7bf0948414c61.json b/backend/gps/utils/cache/32a2410cfde87ede10c5518f0dc7bf0948414c61.json new file mode 100644 index 0000000..ea4e8a3 --- /dev/null +++ b/backend/gps/utils/cache/32a2410cfde87ede10c5518f0dc7bf0948414c61.json @@ -0,0 +1 @@ +[{"place_id": 1567591, "licence": "Data \u00a9 OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright", "osm_type": "relation", "osm_id": 198848, "lat": "-33.5739341", "lon": "-70.6205518", "class": "boundary", "type": "administrative", "place_rank": 8, "importance": 0.5240786020010473, "addresstype": "state", "name": "Santiago Metropolitan Region", "display_name": "Santiago Metropolitan Region, Chile", "boundingbox": ["-34.2917449", "-32.9221679", "-71.7148502", "-69.7702335"], "geojson": {"type": "Polygon", "coordinates": [[[-71.7148502, -33.9484966], [-71.7145975, -33.9484869], [-71.7143508, -33.9485314], [-71.7141362, -33.9486471], [-71.7138213, -33.9489666], [-71.7133745, -33.949635], [-71.713242, -33.9499723], [-71.712956, -33.9503825], [-71.7125553, -33.9509245], [-71.7122871, -33.9514496], [-71.7118258, -33.9524998], [-71.7115897, -33.9529715], [-71.7112249, -33.9534965], [-71.7108172, -33.9540483], [-71.7105276, -33.9544933], [-71.7102846, -33.9549569], [-71.7100271, -33.9556244], [-71.7098769, -33.9561049], [-71.7097551, -33.9565401], [-71.70968, -33.9570829], [-71.7096693, -33.9575902], [-71.7096049, -33.9578839], [-71.709401, -33.9582932], [-71.7089075, -33.9590852], [-71.7087037, -33.9593789], [-71.7085787, -33.9596556], [-71.7084821, -33.9600027], [-71.7084569, -33.9603933], [-71.7084784, -33.9606959], [-71.7085964, -33.9610074], [-71.7087788, -33.9613455], [-71.7091328, -33.9617726], [-71.7100233, -33.9626091], [-71.7103811, -33.9629748], [-71.7106171, -33.963313], [-71.7109283, -33.9638825], [-71.7114288, -33.9648159], [-71.7116541, -33.9652163], [-71.7118402, -33.9654842], [-71.7120511, -33.9657502], [-71.7122871, -33.9660172], [-71.7124411, -33.9662138], [-71.7124947, -33.9663829], [-71.712484, -33.9665875], [-71.7123659, -33.9667744], [-71.7121299, -33.9670057], [-71.7118295, -33.9671926], [-71.7113966, -33.9674231], [-71.7108854, -33.9676464], [-71.7101735, -33.9678769], [-71.709673, -33.9680112], [-71.7090829, -33.9681091], [-71.7079419, -33.9681972], [-71.7056674, -33.9683662], [-71.704845, -33.9683938], [-71.7042013, -33.9683671], [-71.7034294, -33.9683008], [-71.702799, -33.9681981], [-71.7018909, -33.9679836], [-71.7014617, -33.967948], [-71.7011076, -33.9679836], [-71.7008432, -33.9681002], [-71.7005964, -33.9683315], [-71.7003137, -33.9687667], [-71.7001673, -33.9691502], [-71.6998953, -33.9702971], [-71.6997381, -33.9708585], [-71.6995734, -33.9712847], [-71.6992982, -33.9718195], [-71.6990048, -33.9723257], [-71.6986293, -33.9728507], [-71.6981572, -33.9734201], [-71.6976674, -33.9738837], [-71.6969593, -33.9744264], [-71.6964229, -33.974809], [-71.6960758, -33.9750305], [-71.6956933, -33.9751916], [-71.6952964, -33.9752983], [-71.6947884, -33.9753597], [-71.6943844, -33.9753517], [-71.693855, -33.975253], [-71.6933008, -33.9750403], [-71.692546, -33.9745857], [-71.6917559, -33.9740349], [-71.6904754, -33.972993], [-71.6897565, -33.9724058], [-71.6892737, -33.9720855], [-71.6888017, -33.9718364], [-71.6884406, -33.9717038], [-71.6879434, -33.971605], [-71.6874643, -33.9715525], [-71.6870314, -33.9715783], [-71.686613, -33.9716851], [-71.6862734, -33.9718639], [-71.6859408, -33.972122], [-71.6847499, -33.9731808], [-71.6843315, -33.9735011], [-71.6839415, -33.9737404], [-71.6835483, -33.9739193], [-71.6831476, -33.9740607], [-71.6827222, -33.9741417], [-71.6821391, -33.9742031], [-71.6811343, -33.9742307], [-71.6799112, -33.9741862], [-71.6788882, -33.9740874], [-71.6783341, -33.9740082], [-71.6776796, -33.9738392], [-71.6755231, -33.9732342], [-71.6744717, -33.9729583], [-71.6740495, -33.9728863], [-71.6735705, -33.9728249], [-71.6730126, -33.9728249], [-71.6725512, -33.9728605], [-71.6718861, -33.9730028], [-71.6712423, -33.9731897], [-71.6707488, -33.9734121], [-71.6704377, -33.973599], [-71.6701694, -33.9738214], [-71.6691609, -33.9746933], [-71.6675301, -33.9760457], [-71.6668439, -33.9763923], [-71.6664228, -33.9767371], [-71.6661412, -33.9769617], [-71.6659534, -33.9771374], [-71.6658622, -33.9774333], [-71.6658408, -33.9777046], [-71.665881, -33.9790347], [-71.6660017, -33.9805383], [-71.6661573, -33.9813478], [-71.6663611, -33.9820418], [-71.6667366, -33.9829537], [-71.6668171, -33.983443], [-71.6668117, -33.9850398], [-71.6669726, -33.9864098], [-71.6670585, -33.9869303], [-71.6672301, -33.9872594], [-71.6673428, -33.9874507], [-71.6678198, -33.9879136], [-71.6680414, -33.9883308], [-71.6681631, -33.988652], [-71.6681846, -33.9890701], [-71.6681165, -33.9894072], [-71.6678949, -33.9899863], [-71.6671938, -33.9915066], [-71.6669792, -33.9919869], [-71.6666186, -33.9925123], [-71.6665113, -33.9929482], [-71.6665328, -33.9932906], [-71.6665328, -33.9937265], [-71.66664, -33.9941223], [-71.6668117, -33.9943848], [-71.6671068, -33.9946427], [-71.6676378, -33.9950474], [-71.667741, -33.9952159], [-71.6678091, -33.9955726], [-71.6678198, -33.9959907], [-71.6677517, -33.996479], [-71.6676337, -33.9968704], [-71.6674872, -33.9971381], [-71.6672512, -33.9973872], [-71.6669041, -33.997582], [-71.6664964, -33.9977243], [-71.6659423, -33.9978408], [-71.6653522, -33.9978853], [-71.6644687, -33.9978399], [-71.6636678, -33.9976807], [-71.6628953, -33.9974761], [-71.6624516, -33.9972796], [-71.662163, -33.9970625], [-71.6617902, -33.9967201], [-71.6615612, -33.9965235], [-71.6612323, -33.9963465], [-71.6607495, -33.9962131], [-71.6599878, -33.9961063], [-71.6586252, -33.9960085], [-71.6577776, -33.9959907], [-71.6564794, -33.996053], [-71.6551598, -33.9962042], [-71.6539474, -33.9963821], [-71.6531927, -33.9965413], [-71.6506392, -33.9972084], [-71.6490658, -33.9976096], [-71.6480144, -33.997912], [-71.6469163, -33.9982313], [-71.6459078, -33.9986405], [-71.6448708, -33.9991128], [-71.6427787, -34.0000912], [-71.6409881, -34.0009162], [-71.6406292, -34.0010954], [-71.6402631, -34.0012117], [-71.6399412, -34.0012873], [-71.6394812, -34.0013578], [-71.6386859, -34.0014385], [-71.6378008, -34.0015052], [-71.6363256, -34.0016386], [-71.6334127, -34.0020211], [-71.6318409, -34.002199], [-71.6310792, -34.0022924], [-71.630414, -34.0023413], [-71.6294538, -34.0023813], [-71.6274528, -34.0024213], [-71.6259615, -34.0024658], [-71.6245292, -34.0025414], [-71.6237997, -34.0025681], [-71.6233222, -34.0026126], [-71.6220522, -34.002852], [-71.6215573, -34.0029283], [-71.6209029, -34.0029728], [-71.620345, -34.0029861], [-71.6197817, -34.0029995], [-71.6186659, -34.0030261], [-71.6166918, -34.0031151], [-71.61615, -34.0031685], [-71.6156298, -34.0032528], [-71.6152865, -34.0034085], [-71.61497, -34.0035641], [-71.6146052, -34.0038621], [-71.6143638, -34.00416], [-71.6141626, -34.0044179], [-71.6139454, -34.0047915], [-71.6138676, -34.0050472], [-71.6138247, -34.0052896], [-71.6137657, -34.0055808], [-71.6136664, -34.005801], [-71.6135269, -34.0059833], [-71.6132319, -34.0063168], [-71.6123681, -34.0074554], [-71.611892, -34.0079928], [-71.6115341, -34.0083135], [-71.6112685, -34.0085959], [-71.6110593, -34.0088004], [-71.6108099, -34.0090628], [-71.6106141, -34.0092407], [-71.6104183, -34.0094007], [-71.6101366, -34.0095853], [-71.609855, -34.0097343], [-71.6096109, -34.0098343], [-71.6093561, -34.0098832], [-71.6091335, -34.0099077], [-71.6087982, -34.0098921], [-71.6082911, -34.0098789], [-71.6079854, -34.0098745], [-71.6076903, -34.0098923], [-71.607343, -34.0099494], [-71.6069621, -34.0100383], [-71.6066496, -34.0101279], [-71.606376, -34.0102524], [-71.6061454, -34.010377], [-71.6053301, -34.0108304], [-71.6046274, -34.0113284], [-71.6040909, -34.0116619], [-71.6037342, -34.0119154], [-71.6035143, -34.0121266], [-71.6033694, -34.0123445], [-71.6032916, -34.0126424], [-71.603297, -34.0128692], [-71.6033614, -34.0130915], [-71.6034418, -34.013305], [-71.6036296, -34.0135718], [-71.6037664, -34.0138341], [-71.6038415, -34.0141342], [-71.6038469, -34.0143477], [-71.6037959, -34.01457], [-71.6036671, -34.0149368], [-71.6034954, -34.0155395], [-71.6033451, -34.0159263], [-71.603254, -34.0162331], [-71.6031909, -34.016566], [-71.6031789, -34.0169979], [-71.6032003, -34.0177983], [-71.6031735, -34.0181095], [-71.6030984, -34.0185408], [-71.6029535, -34.0189677], [-71.6027926, -34.0192611], [-71.6025995, -34.0194968], [-71.602031, -34.019839], [-71.6015616, -34.020008], [-71.6011915, -34.0201347], [-71.6009474, -34.0202569], [-71.5994722, -34.021324], [-71.5990484, -34.021573], [-71.5988177, -34.0217553], [-71.5985817, -34.0219687], [-71.5982652, -34.0224711], [-71.5978789, -34.0232581], [-71.5977126, -34.0237249], [-71.5975785, -34.0243918], [-71.5974981, -34.0248098], [-71.5973827, -34.0252144], [-71.5972701, -34.0254166], [-71.5971279, -34.02557], [-71.5969349, -34.0257611], [-71.59672, -34.0258731], [-71.5962825, -34.0260168], [-71.5952972, -34.0262786], [-71.5944135, -34.0265325], [-71.5941024, -34.0266036], [-71.5936974, -34.0266659], [-71.5932307, -34.0267081], [-71.5928659, -34.0267415], [-71.5926728, -34.0267681], [-71.591616, -34.0270393], [-71.5913236, -34.0271105], [-71.590586, -34.0272683], [-71.5901193, -34.0273483], [-71.5898672, -34.0274017], [-71.5896392, -34.027475], [-71.5887299, -34.0277663], [-71.5884483, -34.0279064], [-71.5881237, -34.0281264], [-71.5879092, -34.0282887], [-71.5877858, -34.0284199], [-71.5876892, -34.0285488], [-71.5875819, -34.0287088], [-71.5874344, -34.029379], [-71.5873593, -34.0299892], [-71.5873754, -34.0307894], [-71.587413, -34.0312029], [-71.5874076, -34.0316386], [-71.5873915, -34.0320209], [-71.5873835, -34.0324499], [-71.5873539, -34.0327566], [-71.5873271, -34.0330434], [-71.5873432, -34.0332368], [-71.5874612, -34.0336102], [-71.5875605, -34.0339414], [-71.5877321, -34.0343681], [-71.5861075, -34.0334098], [-71.5851505, -34.0327234], [-71.5840497, -34.0316191], [-71.5829575, -34.0305184], [-71.5819726, -34.0300489], [-71.5815863, -34.0294639], [-71.5805564, -34.0289766], [-71.5801894, -34.0271983], [-71.5792968, -34.0267928], [-71.5785844, -34.0262486], [-71.5772197, -34.0254252], [-71.5764215, -34.0244578], [-71.5759816, -34.0235864], [-71.575737, -34.0221565], [-71.5753872, -34.0201984], [-71.5751061, -34.0192611], [-71.5753701, -34.0184003], [-71.5760031, -34.0175964], [-71.5770931, -34.0167961], [-71.577327, -34.0163888], [-71.5784535, -34.0159263], [-71.5800006, -34.0153518], [-71.5803396, -34.0149855], [-71.5806336, -34.0139183], [-71.580904, -34.01249], [-71.580703, -34.0115419], [-71.5792067, -34.0105993], [-71.5780008, -34.0100728], [-71.5770652, -34.0094876], [-71.5763893, -34.0086018], [-71.575885, -34.0080913], [-71.574559, -34.0076875], [-71.5722801, -34.0070116], [-71.5723939, -34.0061382], [-71.5721514, -34.005464], [-71.5716278, -34.0048646], [-71.5725119, -34.0040036], [-71.573617, -34.0022194], [-71.5743551, -34.0016875], [-71.5753271, -34.0010525], [-71.5753722, -34.000284], [-71.5740504, -33.999149], [-71.5733423, -33.9990103], [-71.5727329, -33.9984837], [-71.5721729, -33.9977241], [-71.5716192, -33.9974288], [-71.5712523, -33.9968453], [-71.5701086, -33.9956605], [-71.569467, -33.9944703], [-71.5689907, -33.9933406], [-71.5689971, -33.9917556], [-71.5693927, -33.9906719], [-71.5704756, -33.9892166], [-71.5667526, -33.9872898], [-71.5636141, -33.9867632], [-71.5631615, -33.9879756], [-71.5631888, -33.9882], [-71.5631649, -33.9883079], [-71.563048, -33.988518], [-71.5628978, -33.9886604], [-71.5627476, -33.9887271], [-71.5625899, -33.9887891], [-71.5623949, -33.9888242], [-71.5622271, -33.9888184], [-71.5621198, -33.9887939], [-71.5620635, -33.9887583], [-71.5620098, -33.9887405], [-71.5619187, -33.9887494], [-71.5618006, -33.9887761], [-71.5617175, -33.9887872], [-71.5616209, -33.9888228], [-71.5614439, -33.9888762], [-71.5613205, -33.9888984], [-71.5611891, -33.9889118], [-71.5610952, -33.9889274], [-71.5609879, -33.9889518], [-71.5609075, -33.9889896], [-71.5608592, -33.9890297], [-71.5607653, -33.9891631], [-71.56065, -33.989321], [-71.5605427, -33.9894344], [-71.5604381, -33.9895189], [-71.5603737, -33.9895456], [-71.5602208, -33.9895656], [-71.5601296, -33.9896012], [-71.5600706, -33.9896368], [-71.559966, -33.9896924], [-71.5598185, -33.9897947], [-71.55973, -33.9898303], [-71.5596307, -33.9898747], [-71.5595073, -33.9899459], [-71.5593384, -33.9900037], [-71.5592418, -33.9900571], [-71.5591613, -33.9901127], [-71.5591318, -33.9901505], [-71.559105, -33.9901972], [-71.5590996, -33.9902417], [-71.5590862, -33.9902951], [-71.5590514, -33.9903395], [-71.5589736, -33.9903773], [-71.5588359, -33.9904139], [-71.5587858, -33.9904396], [-71.5587376, -33.9904841], [-71.5587376, -33.9905375], [-71.5587608, -33.9906274], [-71.5587268, -33.9907932], [-71.5587027, -33.9908977], [-71.5586893, -33.9909911], [-71.5586893, -33.9910445], [-71.5586651, -33.9911357], [-71.5586034, -33.9912402], [-71.5585498, -33.9913047], [-71.5584371, -33.991387], [-71.5583057, -33.9914737], [-71.5581394, -33.9915738], [-71.5579919, -33.9916383], [-71.5578792, -33.9916761], [-71.5577478, -33.9916917], [-71.5576325, -33.9916961], [-71.5575386, -33.9916894], [-71.5574501, -33.9916694], [-71.5573804, -33.9916717], [-71.5573053, -33.991705], [-71.5572221, -33.9917739], [-71.5570719, -33.9918362], [-71.5568627, -33.9919318], [-71.556742, -33.9919986], [-71.5566293, -33.9920764], [-71.5565811, -33.9921409], [-71.5565033, -33.9922054], [-71.5564201, -33.9922476], [-71.556286, -33.9923099], [-71.5561439, -33.9923588], [-71.5560392, -33.9924144], [-71.5559266, -33.9924767], [-71.5558676, -33.9925301], [-71.5558595, -33.9925723], [-71.5558756, -33.9926324], [-71.5558649, -33.9926902], [-71.555822, -33.9927347], [-71.555712, -33.9927991], [-71.5556047, -33.9928948], [-71.5555001, -33.9929682], [-71.5554438, -33.9929926], [-71.5553365, -33.9930193], [-71.5552453, -33.9930482], [-71.5551648, -33.9930882], [-71.5551032, -33.9931438], [-71.5550629, -33.9932061], [-71.5549825, -33.9933596], [-71.5549637, -33.9934885], [-71.5549449, -33.9936442], [-71.55491, -33.9937598], [-71.5548564, -33.9938688], [-71.5547867, -33.99396], [-71.5546365, -33.9941379], [-71.5545238, -33.9942669], [-71.554336, -33.9944225], [-71.5542153, -33.9945004], [-71.554092, -33.9946004], [-71.5539605, -33.9946872], [-71.5538881, -33.9947316], [-71.5537942, -33.9947494], [-71.5536414, -33.9947694], [-71.5535636, -33.9948095], [-71.5534285, -33.9949528], [-71.5533062, -33.995154], [-71.5531936, -33.9953453], [-71.5531013, -33.995571], [-71.5529565, -33.9957534], [-71.5527955, -33.9959713], [-71.5526614, -33.9961625], [-71.5525756, -33.9962203], [-71.5524737, -33.9963226], [-71.5524264, -33.996475], [-71.5523782, -33.9965861], [-71.5523449, -33.9966784], [-71.5522591, -33.9967674], [-71.5522011, -33.9968752], [-71.5521196, -33.9969186], [-71.5520391, -33.9969809], [-71.5519597, -33.9970798], [-71.5518246, -33.9971543], [-71.5516915, -33.9972043], [-71.5516351, -33.9972356], [-71.5515948, -33.9973023], [-71.5515895, -33.9973579], [-71.5516109, -33.9973935], [-71.5516351, -33.9974313], [-71.5516565, -33.9974646], [-71.5516512, -33.9975002], [-71.5516029, -33.9975825], [-71.5515063, -33.997667], [-71.5514661, -33.9976915], [-71.5514178, -33.9976892], [-71.5513856, -33.9976803], [-71.5513534, -33.9976848], [-71.55134, -33.9977115], [-71.5513427, -33.9977426], [-71.5513749, -33.9977848], [-71.5513856, -33.9978382], [-71.5513856, -33.9978849], [-71.5513534, -33.9979316], [-71.5513025, -33.9979828], [-71.5512515, -33.9980272], [-71.5512059, -33.9980873], [-71.5511245, -33.9982172], [-71.551104, -33.9982874], [-71.551104, -33.9983386], [-71.5511228, -33.9983719], [-71.5511684, -33.998383], [-71.5512247, -33.9983719], [-71.5512703, -33.9983719], [-71.5512917, -33.9983964], [-71.5512783, -33.9984319], [-71.5512542, -33.9984786], [-71.5511389, -33.9986743], [-71.5511093, -33.998741], [-71.5511201, -33.9987855], [-71.5511389, -33.9988122], [-71.5511844, -33.99883], [-71.5512005, -33.99885], [-71.5512113, -33.9989256], [-71.5511925, -33.9990746], [-71.5512005, -33.9991524], [-71.5512077, -33.9992246], [-71.5511979, -33.9992858], [-71.5511818, -33.9993503], [-71.5511442, -33.9994259], [-71.5511067, -33.9994771], [-71.5510342, -33.9995304], [-71.5509538, -33.9995771], [-71.550876, -33.9996283], [-71.550825, -33.9996794], [-71.5507902, -33.9997372], [-71.5507553, -33.9997639], [-71.5506587, -33.999804], [-71.5505702, -33.9998484], [-71.5505354, -33.9998929], [-71.5505354, -33.9999507], [-71.55053, -34.0000374], [-71.5505434, -34.0001308], [-71.5505997, -34.0002264], [-71.5506748, -34.0003065], [-71.5507097, -34.0003576], [-71.5507285, -34.0004266], [-71.5507633, -34.0005422], [-71.5508009, -34.0006467], [-71.5508009, -34.0007134], [-71.5508143, -34.0008202], [-71.5508411, -34.0009113], [-71.5508814, -34.0010359], [-71.5509001, -34.001107], [-71.5509109, -34.0011715], [-71.5509028, -34.0012226], [-71.550876, -34.0012871], [-71.550766, -34.0013983], [-71.5506882, -34.0014739], [-71.5506051, -34.0015339], [-71.5504271, -34.0016528], [-71.5502913, -34.0017207], [-71.5501894, -34.0017808], [-71.5500874, -34.0018141], [-71.549964, -34.0018319], [-71.5498648, -34.001823], [-71.5497548, -34.001823], [-71.5496502, -34.0018497], [-71.5495483, -34.0018541], [-71.5494276, -34.0018564], [-71.5493579, -34.0018697], [-71.5492694, -34.001883], [-71.5491621, -34.0018786], [-71.5488938, -34.0018408], [-71.5487561, -34.0018107], [-71.548631, -34.0017986], [-71.5485639, -34.001803], [-71.5484969, -34.001823], [-71.5484084, -34.0018964], [-71.5482984, -34.0020142], [-71.5482126, -34.0020809], [-71.5481214, -34.0021299], [-71.5480436, -34.0021543], [-71.5478934, -34.0022077], [-71.5478156, -34.0022566], [-71.547762, -34.0023144], [-71.5476949, -34.0024056], [-71.5476171, -34.0024723], [-71.5475501, -34.0025101], [-71.5475125, -34.0025412], [-71.547483, -34.0025968], [-71.5474669, -34.0026635], [-71.5474723, -34.0027525], [-71.5474535, -34.0028081], [-71.5474079, -34.0028859], [-71.5473596, -34.0029393], [-71.5473113, -34.0029793], [-71.5472362, -34.0030504], [-71.5471155, -34.0031305], [-71.5470136, -34.0031683], [-71.5469063, -34.0031861], [-71.5466944, -34.0032328], [-71.5465603, -34.0032861], [-71.546453, -34.0033017], [-71.5463484, -34.003315], [-71.5462519, -34.0033506], [-71.5461499, -34.0034173], [-71.5461097, -34.0034685], [-71.5460963, -34.0035241], [-71.5460883, -34.0036308], [-71.5460695, -34.0037219], [-71.5460024, -34.0038198], [-71.5459005, -34.0039443], [-71.5457852, -34.0040666], [-71.5457074, -34.0041733], [-71.5456752, -34.0042334], [-71.5456671, -34.0042978], [-71.5456832, -34.0043712], [-71.545702, -34.0045246], [-71.5456859, -34.004618], [-71.5456564, -34.0046825], [-71.5456081, -34.0047559], [-71.5455572, -34.004807], [-71.5455062, -34.0048404], [-71.545474, -34.0048893], [-71.5454767, -34.0049449], [-71.5454955, -34.0050294], [-71.5454982, -34.0051094], [-71.545474, -34.0051939], [-71.5454338, -34.0052629], [-71.5453936, -34.0053474], [-71.5453614, -34.0054341], [-71.5453185, -34.0054852], [-71.5452478, -34.0055751], [-71.5452139, -34.0056542], [-71.5452139, -34.0057209], [-71.5452407, -34.0058254], [-71.5452648, -34.0059344], [-71.5452863, -34.0060633], [-71.5452863, -34.0061612], [-71.5452648, -34.0062523], [-71.5452139, -34.0063501], [-71.5451736, -34.0063991], [-71.5450969, -34.0064539], [-71.5450275, -34.0064887], [-71.5448974, -34.0065214], [-71.5447632, -34.0065458], [-71.5446586, -34.0065503], [-71.5445353, -34.0065547], [-71.544377, -34.0065836], [-71.5442858, -34.0066325], [-71.5442053, -34.0066881], [-71.5441356, -34.0067482], [-71.5440873, -34.0068326], [-71.5440283, -34.0068971], [-71.5438942, -34.0069838], [-71.5437976, -34.0070328], [-71.5437386, -34.0070439], [-71.543693, -34.0070661], [-71.5436528, -34.0071261], [-71.5435938, -34.0072418], [-71.5435777, -34.007304], [-71.543575, -34.0073685], [-71.5436018, -34.0074219], [-71.5436716, -34.0074975], [-71.5437199, -34.0075686], [-71.5437199, -34.0076197], [-71.5437065, -34.0076842], [-71.5436689, -34.0077532], [-71.5436206, -34.0077932], [-71.5435214, -34.0078376], [-71.543406, -34.0078643], [-71.5433148, -34.007891], [-71.5432773, -34.007911], [-71.5432424, -34.0079444], [-71.5432344, -34.0080022], [-71.5432263, -34.0080689], [-71.5432049, -34.0081267], [-71.5431781, -34.0081512], [-71.5431646, -34.0081978], [-71.5431834, -34.0082445], [-71.543229, -34.0082957], [-71.5433524, -34.0083513], [-71.5434624, -34.0084113], [-71.5435455, -34.0084736], [-71.5435965, -34.0085225], [-71.5436448, -34.0085869], [-71.5436689, -34.0086492], [-71.5436716, -34.0087359], [-71.5436546, -34.0088192], [-71.5436153, -34.0088693], [-71.5435402, -34.0089205], [-71.5434436, -34.0089672], [-71.5432478, -34.0090561], [-71.5431325, -34.0091072], [-71.5430466, -34.0091428], [-71.5429608, -34.009165], [-71.54283, -34.0092095], [-71.542765, -34.0092417], [-71.5417695, -34.0089095], [-71.5391066, -34.008198], [-71.5364394, -34.0079383], [-71.5356261, -34.007483], [-71.5336778, -34.0072624], [-71.5327036, -34.0073104], [-71.5319376, -34.007056], [-71.529018, -34.0071609], [-71.5271222, -34.006871], [-71.5264538, -34.0054551], [-71.5261537, -34.005464], [-71.5199768, -34.0054595], [-71.5077376, -34.0045177], [-71.5019462, -34.0033472], [-71.4973092, -34.002778], [-71.4927451, -34.0033472], [-71.4906595, -34.004025], [-71.4869473, -34.0053929], [-71.4859345, -34.0055636], [-71.4851877, -34.0057842], [-71.4847629, -34.0063766], [-71.4836106, -34.0069831], [-71.4814434, -34.0073246], [-71.4793877, -34.0074029], [-71.4771282, -34.0073335], [-71.4758308, -34.0076074], [-71.474637, -34.0083439], [-71.4737229, -34.0096726], [-71.4730556, -34.010553], [-71.472105, -34.0110031], [-71.4697685, -34.0110633], [-71.4682941, -34.0115367], [-71.4666483, -34.0125398], [-71.4623289, -34.0142793], [-71.4614105, -34.015158], [-71.4604964, -34.0167463], [-71.4589214, -34.0178916], [-71.4578514, -34.0180516], [-71.4568937, -34.0176462], [-71.4559839, -34.0165737], [-71.455235, -34.0160295], [-71.4540891, -34.0153696], [-71.4533188, -34.0154443], [-71.4519549, -34.0157306], [-71.4505872, -34.0156186], [-71.4494886, -34.0151242], [-71.4490123, -34.0145461], [-71.4483771, -34.0143647], [-71.4475574, -34.0149072], [-71.4470789, -34.0155937], [-71.446506, -34.0166057], [-71.4458344, -34.0179077], [-71.4438538, -34.0192362], [-71.4433281, -34.0204936], [-71.443135, -34.021687], [-71.4423539, -34.0222543], [-71.4406223, -34.0227327], [-71.4385624, -34.0228341], [-71.4373522, -34.0237304], [-71.4359617, -34.025507], [-71.4355347, -34.0270916], [-71.4349918, -34.0281088], [-71.4343953, -34.0292398], [-71.4331722, -34.0308687], [-71.4318783, -34.032807], [-71.4314513, -34.033024], [-71.43102, -34.032727], [-71.4306992, -34.0323357], [-71.430063, -34.0324709], [-71.4292841, -34.0330702], [-71.4284687, -34.0331129], [-71.4269967, -34.0325954], [-71.4264946, -34.0322184], [-71.4256449, -34.0320068], [-71.4245205, -34.0322895], [-71.4228725, -34.0331555], [-71.4218662, -34.0332285], [-71.4210293, -34.0326914], [-71.4201646, -34.0325652], [-71.4194844, -34.0328888], [-71.4186153, -34.0341869], [-71.4164974, -34.0351151], [-71.416032, -34.0351181], [-71.4152593, -34.0356059], [-71.4134118, -34.035862], [-71.412502, -34.0366639], [-71.4122917, -34.037946], [-71.412781, -34.0403553], [-71.4137552, -34.0412265], [-71.4138453, -34.0423325], [-71.4140277, -34.0432891], [-71.4146242, -34.0447239], [-71.4150641, -34.0452626], [-71.4161176, -34.0460449], [-71.4158215, -34.046957], [-71.4155855, -34.0479295], [-71.4159631, -34.0487883], [-71.4169459, -34.0494834], [-71.4171412, -34.0504026], [-71.4164653, -34.052024], [-71.4159031, -34.0527245], [-71.4151091, -34.0549449], [-71.4152164, -34.0567689], [-71.4148066, -34.0577662], [-71.4142852, -34.0584151], [-71.4132724, -34.0591404], [-71.4124012, -34.0604754], [-71.4116995, -34.0618619], [-71.4106416, -34.0631063], [-71.4092211, -34.0639044], [-71.4073329, -34.0646137], [-71.4062146, -34.0651513], [-71.4051764, -34.0653211], [-71.404552, -34.0657886], [-71.4040005, -34.0669174], [-71.4035134, -34.0673955], [-71.4022689, -34.0676586], [-71.4001081, -34.0676266], [-71.399302, -34.0677616], [-71.3986926, -34.0679873], [-71.398227, -34.0683446], [-71.3982592, -34.0686326], [-71.3982452, -34.0690449], [-71.3978097, -34.06918], [-71.397153, -34.0697426], [-71.3966348, -34.0703745], [-71.3953903, -34.0713992], [-71.3951457, -34.0716898], [-71.3950384, -34.0724834], [-71.3951296, -34.0731757], [-71.394635, -34.0737978], [-71.3937284, -34.0739417], [-71.3930828, -34.074116], [-71.3926663, -34.0743239], [-71.3916924, -34.0749905], [-71.3906954, -34.0755671], [-71.3901536, -34.0757955], [-71.389748, -34.0756649], [-71.3896281, -34.0751629], [-71.3890764, -34.0728335], [-71.3877549, -34.0698218], [-71.3871999, -34.0681829], [-71.3867936, -34.0678132], [-71.3862697, -34.067567], [-71.3844415, -34.0672959], [-71.3831487, -34.0668693], [-71.3824009, -34.0664516], [-71.3814514, -34.0654624], [-71.3810233, -34.0651175], [-71.3800019, -34.0648065], [-71.378788, -34.0645494], [-71.3778036, -34.0643327], [-71.3765097, -34.0635701], [-71.3752748, -34.0630546], [-71.3736765, -34.0621321], [-71.3727903, -34.0622228], [-71.372211, -34.061853], [-71.3716552, -34.0612522], [-71.3710158, -34.0609127], [-71.3699858, -34.0609571], [-71.3691261, -34.0606851], [-71.3682649, -34.06063], [-71.3672153, -34.0607171], [-71.3663377, -34.06047], [-71.3657615, -34.0605375], [-71.3650288, -34.0609846], [-71.3640031, -34.0614183], [-71.362736, -34.0615677], [-71.3619056, -34.0618352], [-71.359689, -34.0627507], [-71.3583207, -34.0629315], [-71.3570018, -34.0632325], [-71.3545556, -34.0632805], [-71.3527389, -34.0642572], [-71.3518176, -34.0650278], [-71.3509997, -34.0650669], [-71.3497791, -34.0639115], [-71.348041, -34.0632645], [-71.3473286, -34.0625943], [-71.3471055, -34.0613855], [-71.3466184, -34.060726], [-71.3465433, -34.059567], [-71.3469016, -34.0588773], [-71.3472192, -34.058024], [-71.3476462, -34.0573573], [-71.3474831, -34.0570444], [-71.3478243, -34.0560702], [-71.3472171, -34.0556809], [-71.3461656, -34.0552418], [-71.3448739, -34.0544009], [-71.3441379, -34.0534427], [-71.3434706, -34.0528525], [-71.3428848, -34.0521324], [-71.3412089, -34.0507653], [-71.3402283, -34.0503173], [-71.3394623, -34.0504702], [-71.3383164, -34.0506924], [-71.3376212, -34.0508862], [-71.3366363, -34.0512097], [-71.3356707, -34.0515049], [-71.3350527, -34.0521218], [-71.334027, -34.0525022], [-71.3332095, -34.0521449], [-71.3324091, -34.0514426], [-71.3323147, -34.051], [-71.3320615, -34.0503439], [-71.3309543, -34.0498728], [-71.3286261, -34.0490621], [-71.3275511, -34.0488149], [-71.3259847, -34.0487989], [-71.3246844, -34.0492487], [-71.3236716, -34.0490034], [-71.3227811, -34.04823], [-71.3215365, -34.0468646], [-71.320219, -34.0455364], [-71.3188822, -34.0449337], [-71.3175711, -34.0446208], [-71.3168931, -34.0439931], [-71.3166699, -34.0432784], [-71.3163051, -34.0429815], [-71.3152559, -34.042985], [-71.3143375, -34.0434331], [-71.3135739, -34.0441617], [-71.3128676, -34.0440927], [-71.3120651, -34.0438989], [-71.3112454, -34.0434757], [-71.3108163, -34.0426543], [-71.3101876, -34.0421049], [-71.3094194, -34.04184], [-71.3084624, -34.0414061], [-71.3065269, -34.0396405], [-71.3056192, -34.0385327], [-71.3053703, -34.0375637], [-71.305424, -34.0370124], [-71.3054218, -34.0364541], [-71.3048854, -34.0359935], [-71.3039198, -34.0355312], [-71.303173, -34.0347204], [-71.3032331, -34.0337477], [-71.3023383, -34.0332747], [-71.3017998, -34.0326896], [-71.3014736, -34.0318041], [-71.3010337, -34.0311337], [-71.3007633, -34.0305273], [-71.3003042, -34.0308225], [-71.3000381, -34.0316778], [-71.2999995, -34.0327323], [-71.3002269, -34.0333938], [-71.3003793, -34.0341336], [-71.299905, -34.0347879], [-71.2984159, -34.0354423], [-71.2979438, -34.0357891], [-71.297961, -34.0363367], [-71.2984545, -34.0371529], [-71.2984692, -34.0375538], [-71.2977571, -34.0384154], [-71.2973645, -34.0389293], [-71.2953503, -34.0412709], [-71.2942292, -34.0423342], [-71.2932325, -34.0428347], [-71.2924933, -34.0433752], [-71.2922296, -34.0443487], [-71.2913091, -34.0449266], [-71.2896957, -34.045065], [-71.2884466, -34.045412], [-71.2866034, -34.0461125], [-71.2854812, -34.0467632], [-71.2839491, -34.0467526], [-71.2828204, -34.0466441], [-71.2819321, -34.0470726], [-71.2812497, -34.0477589], [-71.2803635, -34.0483758], [-71.2792177, -34.0487794], [-71.2781899, -34.049343], [-71.2768209, -34.0501288], [-71.2756622, -34.0503635], [-71.2743275, -34.0505555], [-71.2730207, -34.0513271], [-71.272512, -34.0521039], [-71.2715852, -34.0527085], [-71.2703559, -34.0532461], [-71.2695446, -34.0539636], [-71.2688558, -34.055192], [-71.2681091, -34.0570622], [-71.2670598, -34.0592257], [-71.2662272, -34.059903], [-71.2655148, -34.0601803], [-71.2651887, -34.0606674], [-71.2649977, -34.0614246], [-71.2656672, -34.0623899], [-71.2653861, -34.0631152], [-71.2658517, -34.0638084], [-71.2671413, -34.0640182], [-71.2680511, -34.0645159], [-71.2681174, -34.0647922], [-71.2685318, -34.0651683], [-71.2689156, -34.0662889], [-71.2667784, -34.0665841], [-71.2670576, -34.0695427], [-71.2673645, -34.0733873], [-71.2674052, -34.0767642], [-71.2673023, -34.0788117], [-71.2669568, -34.0803952], [-71.2664311, -34.0825723], [-71.2660277, -34.0833969], [-71.2649526, -34.0839247], [-71.2645685, -34.0844241], [-71.2641179, -34.0853891], [-71.2615688, -34.0867273], [-71.2601955, -34.0876531], [-71.2587664, -34.0886749], [-71.2572922, -34.0892081], [-71.256449, -34.0894924], [-71.2557688, -34.0898709], [-71.2526169, -34.0904268], [-71.2515695, -34.0908998], [-71.2506661, -34.0918327], [-71.2493036, -34.0931086], [-71.2483873, -34.0937199], [-71.2470569, -34.0942903], [-71.2462823, -34.0944662], [-71.2454519, -34.0950775], [-71.2442868, -34.0952267], [-71.2432718, -34.0955359], [-71.2402573, -34.098814], [-71.2387292, -34.1002339], [-71.237339, -34.102794], [-71.2356136, -34.1044147], [-71.2347896, -34.1054523], [-71.2336588, -34.1060795], [-71.2325859, -34.1062838], [-71.2316546, -34.1073178], [-71.2316675, -34.1081404], [-71.2310388, -34.1097394], [-71.2310967, -34.1109564], [-71.2308585, -34.1122249], [-71.2309885, -34.112731], [-71.230777, -34.1134009], [-71.2313843, -34.1148737], [-71.2315323, -34.1159964], [-71.2312598, -34.117128], [-71.2305624, -34.1182117], [-71.229835, -34.1190342], [-71.228756, -34.119565], [-71.2281141, -34.1200663], [-71.2275712, -34.1211694], [-71.2273789, -34.1217502], [-71.2261858, -34.1226055], [-71.2259777, -34.1230043], [-71.2256808, -34.1239121], [-71.2250542, -34.1246564], [-71.223432, -34.1253616], [-71.2218895, -34.126102], [-71.2214772, -34.1266458], [-71.2212262, -34.1273563], [-71.2201812, -34.1282675], [-71.2198787, -34.1289958], [-71.2193379, -34.1298199], [-71.2191448, -34.1305979], [-71.2183423, -34.1313315], [-71.2170183, -34.1315126], [-71.2161879, -34.131724], [-71.2159691, -34.1326547], [-71.2160442, -34.1331662], [-71.2153797, -34.1342895], [-71.2150579, -34.1351341], [-71.2146985, -34.1355923], [-71.2137811, -34.1360417], [-71.2124132, -34.136253], [-71.211085, -34.1362139], [-71.2076092, -34.1356865], [-71.206356, -34.1354396], [-71.2062141, -34.1352495], [-71.2051605, -34.1353898], [-71.2049663, -34.1357832], [-71.2053282, -34.1368445], [-71.2054634, -34.1383612], [-71.2054309, -34.1389872], [-71.2050632, -34.1397602], [-71.2042596, -34.1407375], [-71.203309, -34.141931], [-71.2025709, -34.1433126], [-71.2023778, -34.1445522], [-71.2019315, -34.1452377], [-71.2008564, -34.1463796], [-71.2000839, -34.1469052], [-71.1989939, -34.1473403], [-71.1981964, -34.1482965], [-71.1967644, -34.1495672], [-71.1958833, -34.1500403], [-71.1946216, -34.1503351], [-71.1928985, -34.1509495], [-71.1910224, -34.1518419], [-71.1902678, -34.1522662], [-71.1898322, -34.1528105], [-71.1889514, -34.1533077], [-71.1878316, -34.1541113], [-71.1869733, -34.1552122], [-71.1862381, -34.1565741], [-71.1857416, -34.1576111], [-71.1848283, -34.1584606], [-71.1829586, -34.1584421], [-71.1812634, -34.1583906], [-71.1802699, -34.158648], [-71.1794331, -34.1591008], [-71.1781392, -34.1594595], [-71.1754098, -34.1594666], [-71.173573, -34.159811], [-71.1719444, -34.1604059], [-71.1698369, -34.1616114], [-71.1686055, -34.162192], [-71.1675412, -34.1622702], [-71.1661615, -34.1618725], [-71.1652195, -34.1618867], [-71.1642239, -34.1621849], [-71.1627626, -34.1630336], [-71.1612606, -34.1638681], [-71.1600222, -34.1642125], [-71.1577949, -34.1643332], [-71.1561708, -34.1640581], [-71.1546731, -34.163703], [-71.1535744, -34.1638344], [-71.1519694, -34.1644452], [-71.1504091, -34.1654136], [-71.1491195, -34.1659311], [-71.1482194, -34.1661184], [-71.1474933, -34.1661247], [-71.1467806, -34.1659214], [-71.1461326, -34.165624], [-71.1451756, -34.1653488], [-71.1446767, -34.1650407], [-71.1439472, -34.1648623], [-71.1431525, -34.1649547], [-71.1417598, -34.1654483], [-71.1401162, -34.165617], [-71.139337, -34.165379], [-71.1385613, -34.165118], [-71.1373353, -34.1653293], [-71.1356573, -34.1663449], [-71.132831, -34.1662871], [-71.1307206, -34.1664309], [-71.1301445, -34.1663271], [-71.1294782, -34.1662019], [-71.1288522, -34.1663936], [-71.1280234, -34.1664096], [-71.1272145, -34.1666227], [-71.1259291, -34.1666404], [-71.1251116, -34.1663173], [-71.123528, -34.1655938], [-71.1224691, -34.164991], [-71.1204274, -34.1644184], [-71.1192676, -34.1640678], [-71.1171157, -34.1642676], [-71.1152861, -34.1652938], [-71.1142047, -34.166027], [-71.1129011, -34.1666928], [-71.1115324, -34.1669343], [-71.1106513, -34.1669733], [-71.1097554, -34.1668668], [-71.1088488, -34.166699], [-71.108424, -34.1664726], [-71.1067707, -34.166304], [-71.1059306, -34.1663768], [-71.105259, -34.1666209], [-71.1047998, -34.166754], [-71.1035456, -34.1676853], [-71.1029018, -34.1681966], [-71.1016662, -34.1698584], [-71.0998037, -34.1709076], [-71.096997, -34.1713372], [-71.0958812, -34.1719835], [-71.0946989, -34.1732741], [-71.0931858, -34.1740179], [-71.0920904, -34.1744874], [-71.0914896, -34.1748762], [-71.0911699, -34.1752339], [-71.0905916, -34.1768316], [-71.0904081, -34.1777157], [-71.0901807, -34.1781621], [-71.0901463, -34.1787355], [-71.0902365, -34.1792184], [-71.0899575, -34.1800758], [-71.0894811, -34.1805755], [-71.0891357, -34.1806873], [-71.0884286, -34.1807406], [-71.0877098, -34.1805284], [-71.0872872, -34.1805699], [-71.0870714, -34.1804778], [-71.0866938, -34.1805302], [-71.0861337, -34.1804663], [-71.0856016, -34.1806695], [-71.0848506, -34.1811755], [-71.0837745, -34.1821642], [-71.082987, -34.1826186], [-71.0820664, -34.1827766], [-71.08156, -34.1826745], [-71.0807214, -34.1822548], [-71.0803273, -34.1820115], [-71.0801176, -34.1817706], [-71.0798005, -34.1815163], [-71.0792115, -34.1813973], [-71.0787512, -34.1814311], [-71.0783831, -34.1815726], [-71.0770915, -34.1820692], [-71.0758266, -34.1825645], [-71.0744157, -34.1834573], [-71.0713925, -34.1841696], [-71.071005, -34.18376], [-71.070681, -34.1832062], [-71.0702529, -34.1827997], [-71.0696864, -34.1824438], [-71.0685634, -34.1817613], [-71.0673897, -34.1809519], [-71.0670815, -34.1803349], [-71.0665182, -34.1797696], [-71.0656835, -34.1796329], [-71.0645988, -34.1795832], [-71.063699, -34.1798211], [-71.0627784, -34.180272], [-71.0614803, -34.1802383], [-71.0604439, -34.1795939], [-71.0578882, -34.1794856], [-71.0562145, -34.1793933], [-71.0546307, -34.1789326], [-71.053635, -34.1784045], [-71.0532778, -34.177934], [-71.0532509, -34.1772373], [-71.0533328, -34.1751488], [-71.0534087, -34.1742185], [-71.0530836, -34.1737436], [-71.0525664, -34.1733903], [-71.0517264, -34.173108], [-71.0507836, -34.1728179], [-71.049906, -34.1722604], [-71.0488414, -34.1715822], [-71.0478404, -34.1713203], [-71.047246, -34.1713816], [-71.0462214, -34.1716221], [-71.0445423, -34.1722124], [-71.0438525, -34.1723047], [-71.0432699, -34.1721219], [-71.0423612, -34.1717419], [-71.0414734, -34.1711364], [-71.0408956, -34.1707629], [-71.0403098, -34.1701095], [-71.0389526, -34.1685179], [-71.037604, -34.1674811], [-71.0362404, -34.1664833], [-71.0348655, -34.165828], [-71.0333629, -34.1651863], [-71.0328157, -34.1648739], [-71.0323662, -34.1647442], [-71.0318362, -34.1648135], [-71.0312954, -34.1650816], [-71.0307976, -34.1653426], [-71.0299032, -34.1656454], [-71.0281015, -34.1661735], [-71.027683, -34.1664735], [-71.0265018, -34.1675867], [-71.026092, -34.1683839], [-71.02624, -34.1695858], [-71.0260855, -34.1702977], [-71.0250752, -34.1704851], [-71.0231254, -34.1706031], [-71.0193331, -34.1699986], [-71.0171881, -34.1695325], [-71.0153266, -34.1687966], [-71.0142602, -34.1686244], [-71.0113484, -34.1688233], [-71.0094794, -34.1687807], [-71.0076834, -34.1684212], [-71.0065279, -34.1679098], [-71.0050323, -34.1678797], [-71.003639, -34.1682233], [-71.0001571, -34.169513], [-70.9984684, -34.1697873], [-70.9971981, -34.170137], [-70.9950095, -34.1709351], [-70.9942692, -34.1712786], [-70.9936705, -34.1713132], [-70.9927274, -34.1712324], [-70.9911031, -34.1716558], [-70.9898778, -34.1719976], [-70.9880379, -34.1722737], [-70.987054, -34.172516], [-70.9854415, -34.1730974], [-70.9844319, -34.1733708], [-70.9831085, -34.1732667], [-70.9823408, -34.172998], [-70.981843, -34.1725905], [-70.9811156, -34.1723624], [-70.980488, -34.1723882], [-70.9797595, -34.1726047], [-70.9789055, -34.1726997], [-70.9772961, -34.1731675], [-70.9766664, -34.1731391], [-70.9752676, -34.1729634], [-70.9732471, -34.1728293], [-70.9706636, -34.1722932], [-70.9687145, -34.1720438], [-70.9676974, -34.1714367], [-70.9668669, -34.1703395], [-70.9661009, -34.1695512], [-70.9649572, -34.1688429], [-70.9638414, -34.1680883], [-70.9629102, -34.1674954], [-70.9611246, -34.1663146], [-70.9594769, -34.1652228], [-70.9581505, -34.1643918], [-70.9571184, -34.1641521], [-70.9561593, -34.1641779], [-70.9547184, -34.1642587], [-70.9509475, -34.1631739], [-70.9493078, -34.1626554], [-70.9456901, -34.160831], [-70.9434982, -34.159787], [-70.9402741, -34.1574743], [-70.9389309, -34.1565945], [-70.9369182, -34.1546404], [-70.9346479, -34.152522], [-70.9337768, -34.151453], [-70.9306418, -34.1504097], [-70.9297427, -34.1499604], [-70.9289767, -34.1493913], [-70.9242713, -34.1476156], [-70.9206801, -34.1462783], [-70.9194795, -34.1461655], [-70.9171964, -34.1455404], [-70.9160173, -34.1452652], [-70.9154251, -34.1450006], [-70.9148372, -34.1444598], [-70.9142417, -34.1447652], [-70.9148919, -34.1436642], [-70.9151451, -34.1434298], [-70.9162437, -34.1418554], [-70.9174711, -34.141161], [-70.9184163, -34.1409204], [-70.9194455, -34.1404125], [-70.9209239, -34.1397181], [-70.9236734, -34.1388327], [-70.924771, -34.1382821], [-70.925621, -34.1375993], [-70.9265541, -34.1372769], [-70.9273956, -34.1371353], [-70.9283011, -34.13642], [-70.9289984, -34.1353491], [-70.9299383, -34.1336227], [-70.9301164, -34.1317595], [-70.9305477, -34.1302071], [-70.9315347, -34.1288999], [-70.9317794, -34.1278608], [-70.9320111, -34.1264611], [-70.9329059, -34.1250507], [-70.9342577, -34.123992], [-70.9347598, -34.1228516], [-70.934895, -34.1210522], [-70.9353928, -34.1201426], [-70.9355473, -34.1186878], [-70.935292, -34.1177143], [-70.9355817, -34.1170747], [-70.9362404, -34.1161776], [-70.9373412, -34.1151544], [-70.9382682, -34.1137527], [-70.9389226, -34.1119566], [-70.938781, -34.1112833], [-70.9387102, -34.1094178], [-70.9389398, -34.1086432], [-70.9398346, -34.1075719], [-70.9402809, -34.1069447], [-70.9410362, -34.1063318], [-70.9411671, -34.1048695], [-70.9405834, -34.1039794], [-70.9397359, -34.1031976], [-70.9390149, -34.1018046], [-70.9384076, -34.101284], [-70.9381716, -34.1000456], [-70.9383784, -34.0984526], [-70.9387381, -34.0972275], [-70.9387316, -34.0960388], [-70.9375472, -34.0942921], [-70.9371202, -34.0930109], [-70.9372833, -34.0918061], [-70.9375922, -34.0905266], [-70.9371481, -34.0895528], [-70.935215, -34.087157], [-70.9343865, -34.0860342], [-70.9320776, -34.0847227], [-70.9294297, -34.0834644], [-70.9275629, -34.0821298], [-70.9258227, -34.0811559], [-70.9242796, -34.0803303], [-70.9230439, -34.0795261], [-70.9211092, -34.0786348], [-70.9187355, -34.0779156], [-70.9175336, -34.0780883], [-70.9168448, -34.0787246], [-70.916553, -34.0791405], [-70.9145789, -34.0800202], [-70.9132528, -34.0805854], [-70.9122958, -34.0803472], [-70.9112637, -34.0795439], [-70.9101693, -34.0783194], [-70.9074893, -34.0771926], [-70.9057555, -34.0769189], [-70.9038136, -34.0772672], [-70.9027833, -34.0776893], [-70.901027, -34.0787636], [-70.9005968, -34.0793226], [-70.9001451, -34.0794425], [-70.8996183, -34.0794256], [-70.8985787, -34.078808], [-70.8970584, -34.0784748], [-70.8945889, -34.0769651], [-70.8936777, -34.0764647], [-70.8931102, -34.0758862], [-70.8928294, -34.0749691], [-70.8925855, -34.0741079], [-70.8921714, -34.073389], [-70.8916328, -34.072862], [-70.8913474, -34.0719093], [-70.8914754, -34.069756], [-70.8913145, -34.0688886], [-70.8912029, -34.0679288], [-70.8915727, -34.067263], [-70.8918217, -34.0665938], [-70.8917852, -34.0660081], [-70.891665, -34.065577], [-70.8914966, -34.0651397], [-70.8914225, -34.0646136], [-70.8912627, -34.0641923], [-70.8912187, -34.0629311], [-70.8911887, -34.0623178], [-70.8910073, -34.061829], [-70.8907284, -34.0613961], [-70.8897832, -34.0604513], [-70.8893948, -34.059838], [-70.8891169, -34.0592532], [-70.8890407, -34.0587527], [-70.8891352, -34.0578737], [-70.8892607, -34.0568426], [-70.8891437, -34.0560471], [-70.8890289, -34.0554853], [-70.8890171, -34.0550373], [-70.8887952, -34.0545703], [-70.8888852, -34.0540755], [-70.8890955, -34.0534577], [-70.8893937, -34.0527777], [-70.8897488, -34.0521688], [-70.8903507, -34.0516417], [-70.8910138, -34.0512648], [-70.8915878, -34.050839], [-70.891871, -34.0502363], [-70.8918249, -34.049454], [-70.8915309, -34.0483171], [-70.8911844, -34.0474752], [-70.8909848, -34.046468], [-70.8909784, -34.0456937], [-70.8908968, -34.0447114], [-70.8906007, -34.0438304], [-70.8902724, -34.0430916], [-70.8896952, -34.0423706], [-70.8890472, -34.0414318], [-70.8886802, -34.040597], [-70.8885343, -34.0397969], [-70.888603, -34.0391594], [-70.8887478, -34.0386571], [-70.8881738, -34.0386749], [-70.8856236, -34.0392475], [-70.8842364, -34.0397018], [-70.8826989, -34.0397551], [-70.8816121, -34.0393701], [-70.8808632, -34.0389959], [-70.8797753, -34.0384589], [-70.8787486, -34.038065], [-70.87768, -34.0375956], [-70.877106, -34.0374347], [-70.8763743, -34.0373822], [-70.8755149, -34.0374284], [-70.8743261, -34.0374436], [-70.8726374, -34.0373991], [-70.8715109, -34.0372906], [-70.8702803, -34.0370195], [-70.8691645, -34.0366158], [-70.8682901, -34.0360948], [-70.867494, -34.0356014], [-70.8667516, -34.0350937], [-70.8664544, -34.0345363], [-70.8662194, -34.0338214], [-70.8657774, -34.0333689], [-70.8653279, -34.0329554], [-70.8645371, -34.0325607], [-70.8637282, -34.0322548], [-70.8629042, -34.0320281], [-70.8618603, -34.0317195], [-70.861091, -34.0311958], [-70.8603593, -34.030818], [-70.8596566, -34.0307424], [-70.8585784, -34.0308055], [-70.8574271, -34.0308028], [-70.8563714, -34.0304792], [-70.855394, -34.0300835], [-70.8545271, -34.0300515], [-70.8533513, -34.0300124], [-70.8517162, -34.0299848], [-70.8504577, -34.029919], [-70.8495983, -34.0297688], [-70.8488055, -34.02951], [-70.8481467, -34.0291668], [-70.8476382, -34.0287711], [-70.8468002, -34.028556], [-70.8461072, -34.0286387], [-70.8453872, -34.0287062], [-70.8447146, -34.0287534], [-70.8440601, -34.0289596], [-70.84376, -34.0294674], [-70.8436749, -34.0300471], [-70.8433445, -34.0307708], [-70.84269, -34.0313986], [-70.8419154, -34.0318485], [-70.8411633, -34.0321268], [-70.8403157, -34.0322681], [-70.8392482, -34.0320983], [-70.8379597, -34.0321028], [-70.8369834, -34.0323028], [-70.8358107, -34.0326336], [-70.8349223, -34.0327678], [-70.8341434, -34.0325109], [-70.8333441, -34.0320974], [-70.8324454, -34.0319321], [-70.8311125, -34.0320779], [-70.8302415, -34.0324432], [-70.8294785, -34.0329279], [-70.8286352, -34.0332017], [-70.8275774, -34.0335725], [-70.8268961, -34.0341477], [-70.8261311, -34.0346181], [-70.8249703, -34.0353107], [-70.8239264, -34.0356503], [-70.823038, -34.0357943], [-70.8218174, -34.0357784], [-70.8196091, -34.0355836], [-70.8186263, -34.0353942], [-70.8178532, -34.0355036], [-70.8168861, -34.0349479], [-70.8161447, -34.0343487], [-70.8156019, -34.0337112], [-70.8141312, -34.0315622], [-70.8132214, -34.0293483], [-70.8129103, -34.0272676], [-70.8126271, -34.0265367], [-70.8118996, -34.0261953], [-70.810816, -34.0259712], [-70.8094843, -34.0259436], [-70.8083932, -34.0257035], [-70.8078149, -34.0255105], [-70.8075681, -34.0251193], [-70.8076832, -34.0244862], [-70.8082561, -34.0235917], [-70.8086338, -34.0226136], [-70.808505, -34.0214184], [-70.8078463, -34.0200028], [-70.8066962, -34.0186689], [-70.8059773, -34.0175519], [-70.8056233, -34.0167231], [-70.8055825, -34.0152985], [-70.8056276, -34.0134541], [-70.8058958, -34.0116736], [-70.8064, -34.0105015], [-70.8069494, -34.0096761], [-70.8069386, -34.0084595], [-70.8060374, -34.0071966], [-70.8045807, -34.0062251], [-70.8031964, -34.0053573], [-70.8018939, -34.0043434], [-70.8010034, -34.0037902], [-70.7997825, -34.0032565], [-70.7986872, -34.002581], [-70.7981817, -34.0022692], [-70.7959566, -34.0015168], [-70.7933044, -33.9999976], [-70.7929826, -33.9991917], [-70.7930705, -33.9976778], [-70.7933259, -33.9970481], [-70.7936142, -33.9965588], [-70.7935362, -33.9959611], [-70.79318, -33.9951677], [-70.7921178, -33.9942444], [-70.7917659, -33.9934562], [-70.7921242, -33.9924528], [-70.7928259, -33.9917626], [-70.7937872, -33.991364], [-70.7949481, -33.9911648], [-70.7957077, -33.9907538], [-70.7965553, -33.9896418], [-70.79739, -33.9888964], [-70.7976767, -33.9881552], [-70.7977612, -33.9866813], [-70.7975251, -33.9853807], [-70.796875, -33.9844181], [-70.7962999, -33.9832919], [-70.7958257, -33.9821656], [-70.7960403, -33.9810286], [-70.7963471, -33.9796816], [-70.7967505, -33.9781389], [-70.7972719, -33.9767759], [-70.7975037, -33.975589], [-70.7979865, -33.9748862], [-70.7983661, -33.9746824], [-70.7993984, -33.9741281], [-70.8007095, -33.9735623], [-70.8023274, -33.9730337], [-70.8033638, -33.9728754], [-70.8043694, -33.9723398], [-70.8063056, -33.9714998], [-70.8080434, -33.9712417], [-70.8095057, -33.971223], [-70.8107259, -33.9707702], [-70.8112902, -33.9698626], [-70.812067, -33.9686365], [-70.8131721, -33.9680208], [-70.8140111, -33.9673072], [-70.8151419, -33.9662946], [-70.8162537, -33.9659437], [-70.8175266, -33.965814], [-70.8188023, -33.9653842], [-70.8196509, -33.965014], [-70.8201391, -33.9645193], [-70.8207002, -33.964067], [-70.8211865, -33.9636749], [-70.8211991, -33.9636673], [-70.8217656, -33.9633287], [-70.8225091, -33.9631445], [-70.8234728, -33.9627715], [-70.8242786, -33.9623081], [-70.8248596, -33.9618646], [-70.8250443, -33.9615668], [-70.8248385, -33.9612642], [-70.8245282, -33.960636], [-70.8243923, -33.9596955], [-70.8240211, -33.9584621], [-70.8240018, -33.9566217], [-70.8242228, -33.9548882], [-70.8249244, -33.9534732], [-70.8247664, -33.9525862], [-70.8242078, -33.9515491], [-70.823448, -33.9510155], [-70.8221253, -33.9505897], [-70.8205771, -33.9501741], [-70.8194399, -33.9493579], [-70.8184614, -33.9486735], [-70.8176868, -33.9486175], [-70.816571, -33.9490082], [-70.8144874, -33.9489361], [-70.8139134, -33.9487145], [-70.8126968, -33.9493357], [-70.8109823, -33.948128], [-70.8096884, -33.9474987], [-70.8076285, -33.9462331], [-70.8068013, -33.9457445], [-70.8059333, -33.9450957], [-70.8056361, -33.9442635], [-70.8055589, -33.9429542], [-70.8056715, -33.9418301], [-70.8052177, -33.9410085], [-70.8047553, -33.9401674], [-70.804398, -33.9397793], [-70.8037221, -33.9392702], [-70.8035043, -33.9387976], [-70.8034915, -33.9381558], [-70.8033863, -33.9367886], [-70.802881, -33.9362625], [-70.801939, -33.9359421], [-70.8011236, -33.9357667], [-70.8001355, -33.9355148], [-70.7984242, -33.934646], [-70.7980766, -33.933698], [-70.7977708, -33.9331274], [-70.7973749, -33.9326699], [-70.7969833, -33.9316675], [-70.7967055, -33.9314049], [-70.7963857, -33.9313346], [-70.795962, -33.9314842], [-70.7952901, -33.9318215], [-70.794579, -33.9322746], [-70.7939836, -33.9328452], [-70.7933956, -33.9330936], [-70.792813, -33.9336019], [-70.7914666, -33.9345543], [-70.7905385, -33.9346558], [-70.7897585, -33.9349344], [-70.7890408, -33.934873], [-70.7885215, -33.9352273], [-70.7880698, -33.9356884], [-70.7876396, -33.9361699], [-70.7871729, -33.9364744], [-70.7870055, -33.936728], [-70.7862706, -33.9370262], [-70.7856247, -33.9370084], [-70.7845976, -33.9367791], [-70.7839499, -33.9371829], [-70.7836227, -33.9375923], [-70.7832901, -33.9379199], [-70.7827537, -33.938365], [-70.7817774, -33.9384415], [-70.7807141, -33.9387735], [-70.7785895, -33.9392002], [-70.7773914, -33.9402181], [-70.777003, -33.9410851], [-70.776385, -33.9416396], [-70.7746738, -33.9417259], [-70.7738069, -33.9420659], [-70.7726452, -33.9423737], [-70.7715603, -33.9429249], [-70.7708887, -33.9434544], [-70.7707664, -33.9443623], [-70.7704155, -33.9444878], [-70.7697643, -33.944267], [-70.7691989, -33.9437259], [-70.7677183, -33.9428892], [-70.7666433, -33.9427121], [-70.7653708, -33.9430975], [-70.764799, -33.9432025], [-70.7641939, -33.942851], [-70.7629683, -33.9425113], [-70.7618525, -33.9423689], [-70.7607796, -33.9424045], [-70.7593745, -33.9426053], [-70.7585473, -33.9429373], [-70.7582876, -33.9429524], [-70.7580462, -33.9424629], [-70.7574808, -33.941248], [-70.7565313, -33.9405136], [-70.7549799, -33.9390103], [-70.7547546, -33.9381504], [-70.7542547, -33.937611], [-70.7526014, -33.9371508], [-70.7522065, -33.9362358], [-70.7513708, -33.9352193], [-70.750565, -33.9345161], [-70.7497926, -33.9339116], [-70.7489739, -33.9330161], [-70.7483206, -33.9323832], [-70.747433, -33.9310821], [-70.7467034, -33.9298715], [-70.7462327, -33.9280551], [-70.7455611, -33.9272495], [-70.7446331, -33.926475], [-70.7443015, -33.925599], [-70.7442575, -33.9246153], [-70.7438316, -33.9241408], [-70.7427123, -33.923355], [-70.7414316, -33.9227707], [-70.7401548, -33.9224706], [-70.7390433, -33.9227075], [-70.7380123, -33.9229282], [-70.737066, -33.9227938], [-70.7351831, -33.9227858], [-70.7324258, -33.9227911], [-70.7313175, -33.9225686], [-70.7298863, -33.9218394], [-70.729014, -33.921153], [-70.7285698, -33.9204684], [-70.7281997, -33.9190733], [-70.7276729, -33.918313], [-70.7272137, -33.9180574], [-70.7265968, -33.9180637], [-70.726058, -33.9181379], [-70.7257696, -33.9181776], [-70.7253593, -33.9185363], [-70.7252868, -33.9185997], [-70.7250546, -33.9189946], [-70.7248937, -33.919147], [-70.7247965, -33.9192772], [-70.7243864, -33.9196517], [-70.7239157, -33.9195256], [-70.7234416, -33.9191489], [-70.7225799, -33.9188605], [-70.7215156, -33.9181741], [-70.7209603, -33.917721], [-70.7205554, -33.9175366], [-70.7197664, -33.9174442], [-70.7193602, -33.9172891], [-70.71924, -33.9168466], [-70.7189836, -33.9163409], [-70.7175631, -33.9157132], [-70.7167091, -33.9151274], [-70.7164559, -33.9147401], [-70.7164119, -33.9143234], [-70.716178, -33.9140091], [-70.7155697, -33.9136859], [-70.7149604, -33.9130465], [-70.7144357, -33.9127946], [-70.713764, -33.9118989], [-70.7134604, -33.9111991], [-70.712482, -33.9106773], [-70.712144, -33.9100941], [-70.7121858, -33.9087923], [-70.7121451, -33.907495], [-70.7116569, -33.9068405], [-70.7107439, -33.9062804], [-70.7099424, -33.9057506], [-70.7082602, -33.9054478], [-70.7064963, -33.9055298], [-70.7044782, -33.9060284], [-70.7024204, -33.9059937], [-70.7012084, -33.9057771], [-70.7005032, -33.9061985], [-70.6998659, -33.9069945], [-70.6984662, -33.9074896], [-70.6979615, -33.9079954], [-70.6955132, -33.9097913], [-70.692673, -33.9114246], [-70.6908269, -33.9123316], [-70.6894114, -33.9139889], [-70.6884, -33.9146635], [-70.6876948, -33.9159833], [-70.6870911, -33.9167647], [-70.6862357, -33.9179064], [-70.6858616, -33.9189816], [-70.6856931, -33.9201399], [-70.685692, -33.9211165], [-70.6854203, -33.9223935], [-70.684749, -33.9232754], [-70.6833596, -33.9243678], [-70.6817342, -33.9253613], [-70.6802053, -33.9255776], [-70.6791546, -33.9263462], [-70.6780388, -33.9274501], [-70.6765368, -33.9283047], [-70.6754696, -33.9290744], [-70.6747604, -33.9298533], [-70.6745285, -33.9310674], [-70.6743836, -33.9312989], [-70.6741744, -33.9315704], [-70.6737882, -33.9319754], [-70.6732839, -33.9324071], [-70.6729031, -33.9327721], [-70.672608, -33.9331193], [-70.6723398, -33.9333641], [-70.6719804, -33.9335732], [-70.6715566, -33.9337424], [-70.6713152, -33.9337646], [-70.6709182, -33.9338136], [-70.6703281, -33.9338136], [-70.6698185, -33.933867], [-70.6693035, -33.9340183], [-70.6685452, -33.9342908], [-70.6677961, -33.9346993], [-70.6673457, -33.9349878], [-70.6669861, -33.9351666], [-70.6667447, -33.9353713], [-70.6663692, -33.9357229], [-70.665881, -33.9360745], [-70.6656128, -33.936346], [-70.6654197, -33.9365819], [-70.6651515, -33.9369869], [-70.6650013, -33.9372095], [-70.6647492, -33.9374409], [-70.664438, -33.9376278], [-70.6639093, -33.9379083], [-70.6636226, -33.9379616], [-70.6633812, -33.9379838], [-70.6630272, -33.9379171], [-70.6626731, -33.9378904], [-70.6623137, -33.9379438], [-70.6618524, -33.9379304], [-70.6614876, -33.9379349], [-70.6611657, -33.937877], [-70.6608492, -33.9378414], [-70.6608009, -33.9378548], [-70.660463, -33.9378726], [-70.6601733, -33.9378058], [-70.6597978, -33.9377168], [-70.6595188, -33.93761], [-70.6591755, -33.9375388], [-70.6586337, -33.9375254], [-70.6583279, -33.9375032], [-70.6577861, -33.9374587], [-70.6574482, -33.937343], [-70.6570941, -33.9372005], [-70.6565309, -33.9371115], [-70.656091, -33.9369825], [-70.6558389, -33.9368], [-70.655458, -33.9366086], [-70.6550449, -33.9365063], [-70.6545675, -33.9364083], [-70.6542027, -33.9362526], [-70.6538969, -33.9360745], [-70.6535, -33.9358476], [-70.6531781, -33.9356206], [-70.6527972, -33.9353402], [-70.6524324, -33.9351399], [-70.6521589, -33.9350064], [-70.6518102, -33.9349307], [-70.6515366, -33.9348729], [-70.6511396, -33.9348284], [-70.6504262, -33.9348951], [-70.6501043, -33.9349396], [-70.6496, -33.9349396], [-70.6492299, -33.9348862], [-70.6489161, -33.934874], [-70.6486988, -33.9349129], [-70.6485459, -33.9349396], [-70.6482589, -33.9349374], [-70.6479156, -33.9349085], [-70.6475186, -33.934766], [-70.6471324, -33.9346014], [-70.6462419, -33.9341607], [-70.6458074, -33.9339471], [-70.6456035, -33.9338447], [-70.6451905, -33.9337023], [-70.6444663, -33.9335688], [-70.6440532, -33.9335287], [-70.6439245, -33.9334931], [-70.6438494, -33.9334531], [-70.6438226, -33.9333284], [-70.643785, -33.9331905], [-70.6438333, -33.9329724], [-70.6438601, -33.9328745], [-70.643962, -33.9326697], [-70.6440693, -33.9324427], [-70.6441069, -33.9321401], [-70.6442785, -33.9317573], [-70.6442463, -33.9314992], [-70.6441498, -33.9312677], [-70.6440961, -33.9310941], [-70.6439942, -33.9309205], [-70.6437743, -33.9307069], [-70.6435168, -33.9304532], [-70.6424707, -33.9298701], [-70.6421757, -33.9296342], [-70.6419987, -33.9294695], [-70.6412315, -33.9288241], [-70.6409365, -33.9286594], [-70.6406897, -33.9283968], [-70.6404161, -33.9279139], [-70.6404054, -33.9275155], [-70.6404108, -33.9270971], [-70.6403464, -33.9266565], [-70.6402445, -33.9263493], [-70.6400836, -33.9260155], [-70.6398046, -33.9255303], [-70.6394345, -33.9248404], [-70.6393218, -33.9245466], [-70.6392735, -33.9243107], [-70.6394291, -33.9239724], [-70.6396759, -33.9234382], [-70.6399602, -33.9231889], [-70.6402445, -33.9230242], [-70.6404162, -33.9229263], [-70.6404913, -33.9228106], [-70.6404913, -33.9226236], [-70.6402874, -33.9222631], [-70.6401533, -33.921947], [-70.640046, -33.921631], [-70.6398529, -33.9212927], [-70.6396598, -33.9209811], [-70.6395042, -33.9206784], [-70.6393433, -33.9203534], [-70.6392467, -33.920251], [-70.6389785, -33.9200863], [-70.6387639, -33.9199439], [-70.6383187, -33.9194631], [-70.638147, -33.9191604], [-70.6380558, -33.9188354], [-70.6379807, -33.9185372], [-70.6377822, -33.9182211], [-70.6372396, -33.9175233], [-70.6368756, -33.9173397], [-70.6365538, -33.9172151], [-70.6363821, -33.9170815], [-70.6363016, -33.9169034], [-70.6362641, -33.9166987], [-70.6362158, -33.916574], [-70.6361246, -33.916485], [-70.6357652, -33.9164049], [-70.6355292, -33.916396], [-70.6351215, -33.9163425], [-70.6346689, -33.9162412], [-70.6339574, -33.9159641], [-70.6336355, -33.9158172], [-70.6331494, -33.9156984], [-70.632568, -33.9155679], [-70.6321335, -33.9154789], [-70.6314757, -33.9151998], [-70.631184, -33.9150471], [-70.6308299, -33.9148779], [-70.6299225, -33.9147098], [-70.6295317, -33.9147132], [-70.6291938, -33.9146731], [-70.6287593, -33.9145663], [-70.6281007, -33.9144284], [-70.6276274, -33.9143393], [-70.626755, -33.9140601], [-70.6250087, -33.9129317], [-70.623924, -33.9118179], [-70.6232041, -33.9103015], [-70.6225153, -33.9090541], [-70.6217525, -33.9076143], [-70.6207375, -33.9065573], [-70.6196893, -33.9056143], [-70.617579, -33.9034862], [-70.6172968, -33.9026117], [-70.6172603, -33.9018664], [-70.6165841, -33.9014161], [-70.6147605, -33.9012724], [-70.6127553, -33.9007675], [-70.6106363, -33.8998725], [-70.6093743, -33.8986377], [-70.6086579, -33.8982019], [-70.6059875, -33.8985243], [-70.6052544, -33.898139], [-70.6045338, -33.8975198], [-70.6024545, -33.8959569], [-70.5996393, -33.8943138], [-70.5974438, -33.8941137], [-70.5952981, -33.8942206], [-70.5932427, -33.8940974], [-70.5909629, -33.8937198], [-70.5894598, -33.8931098], [-70.5884266, -33.8924534], [-70.5875286, -33.8923278], [-70.5864578, -33.8926858], [-70.5856843, -33.8931498], [-70.5854118, -33.8941188], [-70.5846758, -33.8954617], [-70.5838732, -33.8964894], [-70.5824173, -33.8971137], [-70.5809196, -33.8969089], [-70.5796965, -33.8969614], [-70.5783833, -33.897087], [-70.5763953, -33.89655], [-70.5754404, -33.8955642], [-70.5752419, -33.8947573], [-70.5748203, -33.8937136], [-70.5738678, -33.8929474], [-70.5717389, -33.8916946], [-70.5703206, -33.8910837], [-70.5675163, -33.8901687], [-70.5640464, -33.8886888], [-70.5629853, -33.8877572], [-70.5620336, -33.8865923], [-70.561495, -33.885446], [-70.561288, -33.8846186], [-70.5607269, -33.8843327], [-70.5592988, -33.8843175], [-70.5578794, -33.884265], [-70.5570233, -33.8838125], [-70.5559075, -33.8829797], [-70.5548614, -33.8817746], [-70.5540557, -33.8814085], [-70.5532682, -33.881576], [-70.5522811, -33.8818076], [-70.5504958, -33.8817684], [-70.5481398, -33.8815947], [-70.5462268, -33.881682], [-70.5441937, -33.8815421], [-70.5424868, -33.8810914], [-70.5411693, -33.8811146], [-70.5404333, -33.8815893], [-70.5394312, -33.8822743], [-70.5378626, -33.8825379], [-70.5362361, -33.8826119], [-70.5348929, -33.8832291], [-70.5335274, -33.8841836], [-70.5333286, -33.8846364], [-70.5326473, -33.8854344], [-70.5314286, -33.8860846], [-70.5297237, -33.8864889], [-70.5275962, -33.8861852], [-70.5253735, -33.8853949], [-70.5236072, -33.8860089], [-70.5215688, -33.8863455], [-70.5187645, -33.8866062], [-70.5174725, -33.8875595], [-70.5161271, -33.8878828], [-70.5147227, -33.8868461], [-70.5133572, -33.8860362], [-70.5112972, -33.8852524], [-70.5097638, -33.8840806], [-70.5090656, -33.8828298], [-70.5085611, -33.8812135], [-70.5082073, -33.8796233], [-70.5072104, -33.8781316], [-70.5053103, -33.8769772], [-70.5042664, -33.8759573], [-70.5039158, -33.8739937], [-70.5036583, -33.8718559], [-70.5037441, -33.8704306], [-70.5044219, -33.8685833], [-70.5043597, -33.8674403], [-70.5047813, -33.8664755], [-70.5040668, -33.8649325], [-70.5037042, -33.8639374], [-70.5027236, -33.8631793], [-70.5013409, -33.8628761], [-70.4992506, -33.8620773], [-70.4974106, -33.8614046], [-70.4961468, -33.8605885], [-70.4947713, -33.8604647], [-70.4940772, -33.8608478], [-70.4935279, -33.8616532], [-70.4928359, -33.8620826], [-70.490733, -33.8620612], [-70.4887128, -33.8620755], [-70.4875047, -33.8616407], [-70.4855199, -33.861067], [-70.4847216, -33.8610937], [-70.4826722, -33.8617753], [-70.4819075, -33.862104], [-70.4808711, -33.8619784], [-70.479899, -33.8614091], [-70.4790225, -33.8609048], [-70.477794, -33.8603043], [-70.477013, -33.8602161], [-70.4760806, -33.8603462], [-70.4753554, -33.8607302], [-70.4747857, -33.8615195], [-70.4744348, -33.8621378], [-70.4738394, -33.8625886], [-70.4730894, -33.8626982], [-70.4718556, -33.8623855], [-70.4698976, -33.8618821], [-70.4674622, -33.8611792], [-70.4654999, -33.8602304], [-70.4641448, -33.8594597], [-70.4623831, -33.8587434], [-70.4609948, -33.8583193], [-70.4593447, -33.858077], [-70.4579028, -33.858142], [-70.4552924, -33.8585412], [-70.4529933, -33.858502], [-70.4503078, -33.8583523], [-70.4496791, -33.858159], [-70.4482897, -33.8574845], [-70.4467622, -33.8566983], [-70.4448865, -33.8558202], [-70.4442804, -33.8553435], [-70.4418245, -33.8517038], [-70.4409823, -33.8509572], [-70.439874, -33.850566], [-70.4384707, -33.8507184], [-70.4375191, -33.8510703], [-70.4366951, -33.8516682], [-70.4357842, -33.852209], [-70.4348057, -33.8530207], [-70.4338079, -33.8536177], [-70.4321965, -33.8539732], [-70.4303736, -33.8543804], [-70.4288158, -33.8545675], [-70.4273696, -33.8548633], [-70.4261422, -33.8548428], [-70.4242239, -33.8546201], [-70.4231843, -33.8545488], [-70.4223839, -33.854727], [-70.4216996, -33.8551302], [-70.4197156, -33.8557178], [-70.41903, -33.8561018], [-70.4184381, -33.857126], [-70.4180398, -33.8580726], [-70.4179539, -33.8587826], [-70.4177092, -33.8594252], [-70.4175823, -33.8597586], [-70.4172179, -33.8602972], [-70.4161483, -33.8612817], [-70.4151419, -33.8624407], [-70.4144542, -33.8634466], [-70.4140111, -33.8642769], [-70.4137783, -33.8653655], [-70.4134993, -33.8667784], [-70.4131238, -33.8676969], [-70.4126314, -33.8683712], [-70.410885, -33.8708099], [-70.4098301, -33.8716575], [-70.4089664, -33.8723799], [-70.4078645, -33.873073], [-70.4065717, -33.8741936], [-70.4054929, -33.8748703], [-70.4040462, -33.8755475], [-70.4026053, -33.8761737], [-70.4012623, -33.8770612], [-70.4001768, -33.8786353], [-70.3990403, -33.8796463], [-70.3981539, -33.880325], [-70.3963294, -33.8808496], [-70.3934256, -33.881323], [-70.3920046, -33.8817572], [-70.3910466, -33.8818713], [-70.3897575, -33.8816633], [-70.3883804, -33.8811333], [-70.3875565, -33.8806016], [-70.3865909, -33.87993], [-70.3857717, -33.8795403], [-70.3847289, -33.8793412], [-70.3837676, -33.8794356], [-70.3827977, -33.879632], [-70.3812055, -33.8801838], [-70.3793157, -33.8809961], [-70.3780411, -33.8816784], [-70.3764291, -33.8825215], [-70.37542, -33.8831743], [-70.3748361, -33.8839217], [-70.3746041, -33.885356], [-70.3745864, -33.8868643], [-70.3748552, -33.8875331], [-70.3753792, -33.8882003], [-70.37553, -33.8886372], [-70.3753438, -33.8889293], [-70.3748471, -33.8894249], [-70.3743208, -33.8902438], [-70.3736476, -33.8918638], [-70.3731906, -33.8936944], [-70.3727764, -33.8943192], [-70.3719026, -33.8948575], [-70.3713951, -33.895366], [-70.3713969, -33.8957511], [-70.3714659, -33.8962695], [-70.3718693, -33.8968817], [-70.3725903, -33.897738], [-70.3726958, -33.8984127], [-70.3728875, -33.8990947], [-70.3728859, -33.8996308], [-70.3726901, -33.9001673], [-70.3722035, -33.9007475], [-70.3716933, -33.9014478], [-70.3710518, -33.9026687], [-70.3702578, -33.9037733], [-70.3686034, -33.9063806], [-70.3685883, -33.9067565], [-70.3686329, -33.9070693], [-70.369112, -33.9076922], [-70.3717121, -33.9095723], [-70.3740569, -33.9103527], [-70.3750472, -33.911078], [-70.3754409, -33.9117506], [-70.3756764, -33.9125965], [-70.3757746, -33.9145402], [-70.3757333, -33.9154844], [-70.376192, -33.9162924], [-70.3769821, -33.91699], [-70.3786269, -33.9188289], [-70.3785387, -33.9196389], [-70.3784636, -33.9199083], [-70.3784126, -33.9200284], [-70.3783536, -33.9201486], [-70.3782946, -33.920251], [-70.3782141, -33.9203979], [-70.3781095, -33.920576], [-70.3779566, -33.9207785], [-70.3778306, -33.9209343], [-70.3775999, -33.9211881], [-70.3774926, -33.9213171], [-70.3773826, -33.921444], [-70.3772754, -33.9215286], [-70.3771305, -33.9216844], [-70.3770044, -33.9218691], [-70.376932, -33.9219737], [-70.3768596, -33.9220561], [-70.3767193, -33.9223442], [-70.3766694, -33.9236151], [-70.3764264, -33.9257165], [-70.3762681, -33.926722], [-70.376381, -33.9273755], [-70.3761893, -33.9280151], [-70.3757639, -33.9289133], [-70.3753574, -33.9295414], [-70.3746904, -33.9301427], [-70.3740955, -33.9308601], [-70.3736793, -33.9311682], [-70.3731439, -33.9319956], [-70.3726707, -33.9326801], [-70.3721177, -33.9333415], [-70.3713966, -33.9339378], [-70.3708613, -33.9345597], [-70.3703415, -33.9350301], [-70.3701634, -33.9353087], [-70.3697557, -33.9361018], [-70.3696901, -33.9369825], [-70.3694004, -33.9371872], [-70.3691214, -33.9373074], [-70.3685857, -33.9373111], [-70.3682773, -33.9375145], [-70.3681544, -33.9379159], [-70.3678449, -33.9383761], [-70.3675718, -33.938836], [-70.3673321, -33.9392396], [-70.3670837, -33.940167], [-70.3668643, -33.9411705], [-70.3665837, -33.9416583], [-70.3665172, -33.9420909], [-70.366484, -33.9425644], [-70.3664148, -33.9429244], [-70.3657903, -33.9442742], [-70.3655243, -33.9446609], [-70.3652845, -33.945198], [-70.3647566, -33.9455718], [-70.3643001, -33.945906], [-70.3638012, -33.9461245], [-70.3635722, -33.946376], [-70.3635968, -33.9468615], [-70.3631149, -33.9471833], [-70.3630711, -33.9475103], [-70.3627423, -33.9478138], [-70.3626535, -33.9480356], [-70.3624467, -33.9483104], [-70.3619958, -33.9485495], [-70.3616986, -33.9488195], [-70.3613921, -33.9490258], [-70.3610605, -33.9493462], [-70.3606174, -33.9498597], [-70.3603382, -33.950276], [-70.3593632, -33.9509103], [-70.3586699, -33.9510736], [-70.3579924, -33.9511134], [-70.3570297, -33.9513008], [-70.356453, -33.9513092], [-70.3558557, -33.9514485], [-70.3551924, -33.9519978], [-70.3548526, -33.9522025], [-70.3544242, -33.952314], [-70.3540747, -33.9523336], [-70.3529238, -33.9526382], [-70.3524123, -33.9526809], [-70.3520191, -33.9526593], [-70.3515129, -33.9527376], [-70.3507131, -33.9529245], [-70.3503151, -33.9530751], [-70.3501169, -33.9532948], [-70.3498457, -33.9535248], [-70.3496762, -33.9538122], [-70.3487098, -33.9542357], [-70.3484975, -33.9543632], [-70.3481342, -33.9549449], [-70.3477029, -33.955371], [-70.3471882, -33.9561281], [-70.3467713, -33.9564716], [-70.3465535, -33.9567926], [-70.3461974, -33.9578672], [-70.3462145, -33.9584476], [-70.3462024, -33.9593976], [-70.3464167, -33.9598263], [-70.3464744, -33.9601453], [-70.3465482, -33.9610105], [-70.3465355, -33.9615997], [-70.3464374, -33.9619786], [-70.3467027, -33.9625942], [-70.3470591, -33.9630405], [-70.3474314, -33.9633003], [-70.3478528, -33.963838], [-70.3485679, -33.9643281], [-70.3490593, -33.964821], [-70.3491952, -33.9654626], [-70.3490864, -33.9658049], [-70.3496721, -33.966436], [-70.3503558, -33.966893], [-70.350833, -33.9673503], [-70.3508156, -33.9677627], [-70.3507552, -33.9685193], [-70.3504492, -33.9696224], [-70.3496963, -33.9710565], [-70.3485107, -33.9721963], [-70.3481133, -33.9724893], [-70.3474778, -33.9734379], [-70.346226, -33.9747492], [-70.3455965, -33.975692], [-70.3434832, -33.9772303], [-70.3427303, -33.9776923], [-70.3415689, -33.9787074], [-70.3412457, -33.9792195], [-70.3408858, -33.9793478], [-70.3404867, -33.9795956], [-70.3397692, -33.979832], [-70.3381349, -33.9801712], [-70.3371993, -33.9801347], [-70.336237, -33.9802662], [-70.3353907, -33.980227], [-70.3347392, -33.9802691], [-70.3340196, -33.9800853], [-70.3325621, -33.9803587], [-70.3305708, -33.9809265], [-70.3295078, -33.9813676], [-70.3290961, -33.9824712], [-70.3290041, -33.9828735], [-70.3283472, -33.9842665], [-70.3283003, -33.9847208], [-70.3281866, -33.9852364], [-70.3280391, -33.9857799], [-70.3277625, -33.9862603], [-70.3277861, -33.9870071], [-70.3279079, -33.9876074], [-70.3280061, -33.9884038], [-70.3280074, -33.9890189], [-70.327972, -33.9896817], [-70.3276048, -33.9909842], [-70.3272097, -33.9919478], [-70.3265185, -33.9932692], [-70.3259949, -33.9937998], [-70.3257002, -33.9942713], [-70.3243379, -33.9949831], [-70.3240769, -33.995439], [-70.3238586, -33.9960007], [-70.3239023, -33.9964328], [-70.3238843, -33.9969207], [-70.3231169, -33.9976169], [-70.3221495, -33.9981055], [-70.3216637, -33.9984597], [-70.3213821, -33.9988335], [-70.3211401, -33.9993191], [-70.3210602, -33.9997545], [-70.3211066, -34.00027], [-70.3213435, -34.00064], [-70.3219164, -34.0015056], [-70.3224853, -34.0021732], [-70.3236485, -34.0032854], [-70.3242453, -34.0042589], [-70.325182, -34.0048319], [-70.3260472, -34.0055534], [-70.3263066, -34.0063061], [-70.3267937, -34.0084933], [-70.327541, -34.0094], [-70.3278025, -34.0098007], [-70.3276898, -34.0103294], [-70.3270847, -34.010614], [-70.3257133, -34.0111373], [-70.3250602, -34.0114493], [-70.324536, -34.0118199], [-70.3237231, -34.0125287], [-70.3233498, -34.0129932], [-70.3224531, -34.0135666], [-70.3218699, -34.014217], [-70.3211522, -34.0154752], [-70.3211664, -34.0158825], [-70.321381, -34.0163765], [-70.322109, -34.0172647], [-70.3232341, -34.0183], [-70.3240812, -34.0189174], [-70.3248899, -34.0193923], [-70.3257511, -34.0198389], [-70.32646, -34.0199516], [-70.3276225, -34.0198772], [-70.3281512, -34.0199381], [-70.3290473, -34.0201835], [-70.3300413, -34.0203789], [-70.3307712, -34.0207537], [-70.3311853, -34.0212404], [-70.3319908, -34.0221834], [-70.3327026, -34.0228165], [-70.333536, -34.0235617], [-70.3342572, -34.0244613], [-70.3357574, -34.0263958], [-70.3371154, -34.0279874], [-70.3383188, -34.0291096], [-70.338689, -34.0295457], [-70.3390476, -34.0299733], [-70.3392156, -34.0301565], [-70.3393558, -34.0304773], [-70.3393974, -34.030818], [-70.3393416, -34.0314184], [-70.3393261, -34.0321706], [-70.3393526, -34.0327963], [-70.3394894, -34.0333371], [-70.3399888, -34.0339006], [-70.3405945, -34.0344341], [-70.3411993, -34.0351211], [-70.3414244, -34.0355306], [-70.341636, -34.0360667], [-70.3418546, -34.0363772], [-70.342306, -34.0369193], [-70.3435825, -34.0379473], [-70.3440489, -34.0385301], [-70.3443155, -34.0388255], [-70.3444426, -34.0390297], [-70.344419, -34.0391335], [-70.3442812, -34.0393418], [-70.3438649, -34.0398112], [-70.3434526, -34.0403682], [-70.3431013, -34.0410047], [-70.3427357, -34.0414483], [-70.3422253, -34.0418402], [-70.3416403, -34.0423932], [-70.3414965, -34.0428572], [-70.3413635, -34.0435993], [-70.3413299, -34.0442543], [-70.3415424, -34.0450433], [-70.3416475, -34.0455689], [-70.3416003, -34.0463852], [-70.3416035, -34.0476213], [-70.341599, -34.04801], [-70.3414396, -34.0485374], [-70.34115, -34.0488487], [-70.3408584, -34.0491116], [-70.3407774, -34.0494159], [-70.3407779, -34.049925], [-70.3407388, -34.0505053], [-70.3406242, -34.0514362], [-70.3405328, -34.05224], [-70.340403, -34.0529422], [-70.3402976, -34.0532518], [-70.3400714, -34.0534351], [-70.3396082, -34.0536674], [-70.3391504, -34.0540349], [-70.3386628, -34.0545325], [-70.3384576, -34.0547238], [-70.3381558, -34.0551069], [-70.3376049, -34.0555107], [-70.337092, -34.0558234], [-70.3364191, -34.0560176], [-70.3355144, -34.0561407], [-70.3339769, -34.056454], [-70.3330427, -34.0567789], [-70.3323421, -34.0571767], [-70.3317459, -34.0574613], [-70.331332, -34.0578402], [-70.3308701, -34.0583966], [-70.3305931, -34.0586659], [-70.3299965, -34.0589328], [-70.329054, -34.0591272], [-70.3279379, -34.059253], [-70.3268114, -34.0594526], [-70.3260797, -34.0594806], [-70.325079, -34.0592343], [-70.3245471, -34.0588917], [-70.3240018, -34.0581824], [-70.3233742, -34.0576822], [-70.3226199, -34.057436], [-70.3219073, -34.0573595], [-70.3202609, -34.057378], [-70.3180591, -34.0574278], [-70.3164999, -34.0573826], [-70.3155561, -34.0573284], [-70.3148978, -34.057284], [-70.3144719, -34.0584095], [-70.3142919, -34.0592477], [-70.3142276, -34.0600572], [-70.314131, -34.0606743], [-70.3138604, -34.06152], [-70.3135514, -34.0621541], [-70.3131989, -34.0624499], [-70.3125826, -34.062783], [-70.3118753, -34.0629027], [-70.3111291, -34.0632267], [-70.3106875, -34.0636275], [-70.3102206, -34.0644201], [-70.3098311, -34.0651598], [-70.3091665, -34.0664036], [-70.308717, -34.0668638], [-70.3084053, -34.0669227], [-70.3079442, -34.0668876], [-70.3071782, -34.0664488], [-70.3060844, -34.066093], [-70.3055621, -34.0659999], [-70.304659, -34.0659839], [-70.30411, -34.0657191], [-70.3038978, -34.0654713], [-70.3038426, -34.0652227], [-70.3040834, -34.0640419], [-70.3041864, -34.063286], [-70.3040301, -34.0625905], [-70.303539, -34.0617777], [-70.3020181, -34.0606425], [-70.2995205, -34.0600025], [-70.2958276, -34.0598639], [-70.293463, -34.0593466], [-70.2903902, -34.0583653], [-70.2872724, -34.0585199], [-70.2858991, -34.0591528], [-70.283144, -34.0610922], [-70.2791164, -34.0626494], [-70.2766251, -34.0638582], [-70.2728228, -34.0649212], [-70.2705932, -34.0657732], [-70.2688896, -34.067575], [-70.2673661, -34.0702857], [-70.2657203, -34.0713326], [-70.2619588, -34.0714872], [-70.2612791, -34.0708847], [-70.260858, -34.0698644], [-70.2600384, -34.0683714], [-70.2592551, -34.0672817], [-70.25812, -34.0667876], [-70.2565365, -34.0660144], [-70.2552254, -34.0650616], [-70.2544701, -34.064123], [-70.2539959, -34.0631294], [-70.2539143, -34.0616326], [-70.2534208, -34.0604452], [-70.2524595, -34.0596381], [-70.251039, -34.0592363], [-70.2499254, -34.0588577], [-70.2493438, -34.0579653], [-70.2484121, -34.0575057], [-70.2478896, -34.0533929], [-70.2487479, -34.0492683], [-70.2468596, -34.0437211], [-70.2449713, -34.0408763], [-70.2453146, -34.0368933], [-70.243598, -34.0340482], [-70.2417097, -34.0327679], [-70.2374182, -34.0319144], [-70.2320967, -34.0314876], [-70.2267752, -34.0314876], [-70.2226553, -34.0303495], [-70.2193938, -34.0304917], [-70.2156172, -34.0303495], [-70.211669, -34.0304917], [-70.2092657, -34.0313453], [-70.2075491, -34.0327679], [-70.2051459, -34.0343327], [-70.1987944, -34.033906], [-70.1941595, -34.0329102], [-70.191413, -34.0321989], [-70.1862631, -34.0326257], [-70.1824866, -34.0343327], [-70.17871, -34.0366088], [-70.1751051, -34.0411608], [-70.1725302, -34.0428677], [-70.1699553, -34.0450013], [-70.1702986, -34.0481305], [-70.1730452, -34.0506906], [-70.1745901, -34.0533929], [-70.1749335, -34.056664], [-70.1740752, -34.0609305], [-70.1727019, -34.063348], [-70.1718436, -34.0653389], [-70.1711569, -34.0698893], [-70.1709853, -34.0717379], [-70.1703874, -34.0732465], [-70.1667825, -34.0770855], [-70.1654092, -34.081351], [-70.1621476, -34.086327], [-70.1600877, -34.0887439], [-70.1587144, -34.0925822], [-70.161976, -34.0947146], [-70.1642076, -34.0974155], [-70.1645509, -34.1011113], [-70.1621476, -34.104807], [-70.1594011, -34.1087867], [-70.154958, -34.1124718], [-70.147937, -34.1153675], [-70.1438086, -34.1170872], [-70.1427614, -34.1191123], [-70.1417444, -34.1200396], [-70.1422679, -34.1209385], [-70.1444345, -34.1216347], [-70.1460316, -34.1231802], [-70.1486795, -34.1238126], [-70.1503961, -34.1245125], [-70.1525891, -34.1273758], [-70.1539307, -34.1285412], [-70.1565931, -34.1289887], [-70.1582496, -34.1304345], [-70.158417, -34.1328643], [-70.1614768, -34.1342248], [-70.162421, -34.1361643], [-70.1633737, -34.1382813], [-70.1645968, -34.1400644], [-70.1642406, -34.1414035], [-70.1630347, -34.1429024], [-70.162687, -34.1450406], [-70.1615627, -34.1471823], [-70.1605971, -34.1485994], [-70.1602108, -34.1503432], [-70.1621034, -34.1520515], [-70.1629359, -34.1538343], [-70.162996, -34.1564942], [-70.1635282, -34.1579005], [-70.1645624, -34.1591008], [-70.1631934, -34.1596051], [-70.1592826, -34.1594302], [-70.1561639, -34.1598892], [-70.1538465, -34.1611605], [-70.1531899, -34.1632449], [-70.1505677, -34.1661212], [-70.1494734, -34.1680244], [-70.1500699, -34.1699596], [-70.1465265, -34.1724375], [-70.1453621, -34.1757577], [-70.1458814, -34.1776678], [-70.1475293, -34.1791022], [-70.1469629, -34.1800501], [-70.1432893, -34.180753], [-70.1413766, -34.1828047], [-70.1369134, -34.1864968], [-70.1327836, -34.1888614], [-70.1291272, -34.1886094], [-70.1253249, -34.1881586], [-70.1209489, -34.1884848], [-70.1176874, -34.1903307], [-70.1161424, -34.1931705], [-70.1152441, -34.1979878], [-70.1148064, -34.2006428], [-70.1115963, -34.2022826], [-70.1057598, -34.2027689], [-70.0993311, -34.2030634], [-70.0926835, -34.2030244], [-70.0873406, -34.2018283], [-70.0834653, -34.1995744], [-70.0793626, -34.1985876], [-70.0775215, -34.1980801], [-70.0760202, -34.1997594], [-70.0724146, -34.2017324], [-70.0691072, -34.2046709], [-70.0671961, -34.2074893], [-70.0662906, -34.2095513], [-70.0646727, -34.2105362], [-70.0637758, -34.2117641], [-70.0621686, -34.2128288], [-70.0608446, -34.2152332], [-70.0584714, -34.2178025], [-70.0567741, -34.218789], [-70.0563471, -34.2198412], [-70.0559051, -34.2209093], [-70.054506, -34.2223074], [-70.052901, -34.2230153], [-70.0521358, -34.2244513], [-70.0509183, -34.2255525], [-70.0504033, -34.226821], [-70.0502574, -34.2283414], [-70.0505385, -34.2298352], [-70.0507703, -34.2315508], [-70.0511007, -34.2335927], [-70.0512544, -34.2357566], [-70.0513003, -34.2379566], [-70.0507939, -34.2392676], [-70.0504144, -34.2408276], [-70.0492682, -34.2431967], [-70.049397, -34.2443372], [-70.0500214, -34.2458573], [-70.0502553, -34.2476612], [-70.0509419, -34.2499014], [-70.0520105, -34.2512653], [-70.0520835, -34.2527765], [-70.0519549, -34.2546407], [-70.0522015, -34.2563538], [-70.0531156, -34.2573026], [-70.0542207, -34.2584536], [-70.054358, -34.2594574], [-70.0538293, -34.2607303], [-70.0538215, -34.2639903], [-70.053034, -34.265682], [-70.0524997, -34.2673454], [-70.0532443, -34.2693031], [-70.0534632, -34.2710515], [-70.0528087, -34.272002], [-70.0524826, -34.2732202], [-70.052456, -34.274633], [-70.0521968, -34.275546], [-70.0527036, -34.2770377], [-70.0534053, -34.2779828], [-70.0534031, -34.2789083], [-70.052871, -34.2801956], [-70.0515492, -34.2808285], [-70.0488519, -34.2810679], [-70.0459251, -34.2812026], [-70.0443909, -34.2823533], [-70.0432987, -34.2832682], [-70.0418224, -34.2842628], [-70.0400607, -34.2849046], [-70.0377304, -34.2848709], [-70.0366318, -34.2851067], [-70.0355417, -34.2861776], [-70.03322, -34.2872112], [-70.0318939, -34.287954], [-70.0307835, -34.2880091], [-70.0305677, -34.2877198], [-70.030396, -34.2874716], [-70.0301707, -34.2873254], [-70.0300098, -34.2872323], [-70.0297737, -34.2870993], [-70.0295913, -34.2869043], [-70.0294197, -34.2868024], [-70.029248, -34.2867403], [-70.0289851, -34.2866384], [-70.028674, -34.2866738], [-70.0283897, -34.2866428], [-70.0281644, -34.2865985], [-70.0279874, -34.2864478], [-70.0276816, -34.2863237], [-70.0275099, -34.2862572], [-70.0273275, -34.2861819], [-70.0271666, -34.2860577], [-70.027011, -34.2859115], [-70.026775, -34.2857564], [-70.0265765, -34.2856367], [-70.0262439, -34.2854284], [-70.0260294, -34.2852644], [-70.025788, -34.2851624], [-70.0255251, -34.2849674], [-70.0253159, -34.2847591], [-70.0250262, -34.2845109], [-70.0248599, -34.2842804], [-70.0247848, -34.2840366], [-70.0247258, -34.2838637], [-70.0247204, -34.2835003], [-70.0246668, -34.2830792], [-70.0244032, -34.2828022], [-70.0242033, -34.2825738], [-70.0239321, -34.2823097], [-70.0234895, -34.2819742], [-70.0232182, -34.2818457], [-70.0228756, -34.2816601], [-70.0224901, -34.2814745], [-70.0221418, -34.2814431], [-70.0217278, -34.2814859], [-70.0213566, -34.2815787], [-70.0209568, -34.2815716], [-70.0205356, -34.2815573], [-70.0200716, -34.2814716], [-70.0193293, -34.2812789], [-70.0189914, -34.2809701], [-70.0188724, -34.2806008], [-70.0188296, -34.2802867], [-70.018801, -34.2799726], [-70.0188678, -34.2796404], [-70.0190437, -34.2790303], [-70.019265, -34.2787091], [-70.0194435, -34.2782737], [-70.0196148, -34.2775598], [-70.0197147, -34.2772457], [-70.0197833, -34.2769616], [-70.0198132, -34.2765897], [-70.0196291, -34.2761607], [-70.0192436, -34.2759608], [-70.0187982, -34.2757909], [-70.0183627, -34.2757338], [-70.0178288, -34.2757545], [-70.0174704, -34.2758195], [-70.0170992, -34.2758052], [-70.0167994, -34.2757481], [-70.0164282, -34.2755768], [-70.0158429, -34.2751913], [-70.0156144, -34.27502], [-70.0152861, -34.2748058], [-70.0150434, -34.2745631], [-70.0147753, -34.2742366], [-70.0145865, -34.2735138], [-70.0144152, -34.2731997], [-70.0142296, -34.2728999], [-70.0139655, -34.2725786], [-70.0137442, -34.2723288], [-70.0136442, -34.2720575], [-70.0136157, -34.2717863], [-70.0136585, -34.2714294], [-70.0135586, -34.2711438], [-70.0133302, -34.2706727], [-70.01316, -34.2703408], [-70.0131743, -34.2700124], [-70.0130595, -34.2695787], [-70.012903, -34.2691701], [-70.0127317, -34.2687703], [-70.0121749, -34.2680993], [-70.0119973, -34.2676943], [-70.0118037, -34.2672998], [-70.011661, -34.2669857], [-70.0115381, -34.2666672], [-70.0112898, -34.2662719], [-70.0110185, -34.2660934], [-70.0106616, -34.2658293], [-70.0103903, -34.2656723], [-70.0100049, -34.2655723], [-70.0096622, -34.2654581], [-70.0093053, -34.265401], [-70.0085586, -34.2653168], [-70.0080809, -34.2654046], [-70.0076504, -34.265514], [-70.0073529, -34.2656033], [-70.0068255, -34.2657485], [-70.0064314, -34.265688], [-70.0061173, -34.2655595], [-70.0058246, -34.265224], [-70.0055748, -34.2648456], [-70.0055748, -34.264503], [-70.0055177, -34.2641461], [-70.00534, -34.2638316], [-70.0052036, -34.2634465], [-70.0050323, -34.2630182], [-70.0047896, -34.2626898], [-70.0044966, -34.2624371], [-70.0043759, -34.2623772], [-70.0041935, -34.2622841], [-70.0039735, -34.2621533], [-70.0038984, -34.2620824], [-70.0037938, -34.2619804], [-70.0036973, -34.2619117], [-70.003531, -34.2618563], [-70.0034022, -34.2617787], [-70.0031769, -34.2617078], [-70.0030187, -34.2616346], [-70.0029328, -34.2615326], [-70.0027826, -34.2614041], [-70.0025842, -34.261373], [-70.0024554, -34.2613132], [-70.0023106, -34.2612976], [-70.0020611, -34.2612954], [-70.0018787, -34.26126], [-70.0017339, -34.2612378], [-70.0016025, -34.2612622], [-70.0014523, -34.2612489], [-70.0012457, -34.261189], [-70.0009909, -34.2611425], [-70.0008407, -34.2611358], [-70.0003687, -34.2611669], [-70.0001621, -34.2611757], [-70.0000334, -34.2611624], [-69.999918, -34.2611358], [-69.9997786, -34.2610738], [-69.9995291, -34.2610028], [-69.9993226, -34.2609718], [-69.9991214, -34.2609851], [-69.9988753, -34.2610101], [-69.9986601, -34.2610183], [-69.9983865, -34.2610028], [-69.9981532, -34.2609718], [-69.9980003, -34.2609407], [-69.9977937, -34.2608809], [-69.9976462, -34.2608432], [-69.9973, -34.2607111], [-69.9971795, -34.2606681], [-69.9969288, -34.2605969], [-69.9967906, -34.2605661], [-69.9966458, -34.2605661], [-69.9965224, -34.260575], [-69.9963909, -34.2605794], [-69.9962086, -34.2606237], [-69.995994, -34.2606592], [-69.9956426, -34.2606902], [-69.9954495, -34.2607058], [-69.9952805, -34.2607257], [-69.9951035, -34.2607678], [-69.994787, -34.260821], [-69.994567, -34.2608543], [-69.9944034, -34.2608964], [-69.9942291, -34.2609385], [-69.9939796, -34.2610028], [-69.9936685, -34.2610693], [-69.9933842, -34.2611048], [-69.9930543, -34.2611469], [-69.9929202, -34.2611691], [-69.9927431, -34.2612001], [-69.9926037, -34.2612378], [-69.9923381, -34.2612356], [-69.9920726, -34.2612023], [-69.9918848, -34.2612001], [-69.9917185, -34.2612134], [-69.9915683, -34.2612156], [-69.9912572, -34.2612311], [-69.9910399, -34.2612223], [-69.9908307, -34.261189], [-69.9905062, -34.2611225], [-69.9903104, -34.2610671], [-69.990195, -34.2610427], [-69.9900582, -34.2609962], [-69.9898383, -34.2609319], [-69.9897096, -34.2609186], [-69.9896076, -34.260943], [-69.9895245, -34.2609563], [-69.9892697, -34.2609851], [-69.9891302, -34.2609895], [-69.9889612, -34.2609962], [-69.9886474, -34.2610338], [-69.9885374, -34.2610383], [-69.9883953, -34.2610383], [-69.988237, -34.261056], [-69.9880734, -34.261107], [-69.9879527, -34.2611624], [-69.9878159, -34.2612223], [-69.9876818, -34.2612688], [-69.987596, -34.2612688], [-69.9874485, -34.2612467], [-69.9872983, -34.2611979], [-69.9871454, -34.2611469], [-69.9869737, -34.261107], [-69.9868342, -34.2610893], [-69.9866974, -34.2610582], [-69.9865901, -34.2610072], [-69.9864882, -34.2609474], [-69.9863246, -34.2608543], [-69.986212, -34.2607634], [-69.9860027, -34.2605639], [-69.9859518, -34.2604508], [-69.9859571, -34.2603156], [-69.985925, -34.2602425], [-69.985815, -34.2601671], [-69.9857184, -34.2601272], [-69.9855387, -34.2600873], [-69.9854824, -34.2600496], [-69.985418, -34.259941], [-69.9853671, -34.2598523], [-69.9853054, -34.2597681], [-69.9852061, -34.2596084], [-69.9851203, -34.2594244], [-69.9850962, -34.259287], [-69.9850747, -34.2591828], [-69.9850876, -34.2590521], [-69.9850935, -34.2589367], [-69.9850506, -34.2587926], [-69.9850157, -34.2587372], [-69.985013, -34.2586774], [-69.9850318, -34.2585732], [-69.9850452, -34.25852], [-69.9850345, -34.2584269], [-69.9850345, -34.2583271], [-69.9850372, -34.2582562], [-69.9849808, -34.2581963], [-69.9849165, -34.2581453], [-69.9848843, -34.2580832], [-69.9848306, -34.2579879], [-69.9847743, -34.2578793], [-69.9847341, -34.2577906], [-69.9846858, -34.2577108], [-69.9846536, -34.2576022], [-69.9846616, -34.257529], [-69.9846724, -34.2574403], [-69.9846455, -34.257314], [-69.9846375, -34.2572231], [-69.9846348, -34.2570989], [-69.9846241, -34.2569726], [-69.9845812, -34.2568972], [-69.9845302, -34.2567997], [-69.9845195, -34.2567043], [-69.9845007, -34.2566179], [-69.9844712, -34.2565403], [-69.984439, -34.2564516], [-69.9843773, -34.2562964], [-69.9843746, -34.2561656], [-69.98438, -34.2560548], [-69.9843452, -34.2558827], [-69.9843076, -34.2557267], [-69.9842834, -34.2556025], [-69.9842083, -34.2554939], [-69.9841359, -34.2553609], [-69.9840876, -34.2552256], [-69.9839965, -34.2550372], [-69.9839562, -34.2549286], [-69.9839294, -34.2548643], [-69.9839106, -34.2548244], [-69.9837551, -34.2547712], [-69.9836504, -34.254749], [-69.9835807, -34.2547069], [-69.9835083, -34.2546382], [-69.9834278, -34.2545207], [-69.9833152, -34.2543987], [-69.9831918, -34.2543211], [-69.9830845, -34.2542502], [-69.9830228, -34.2541682], [-69.9829021, -34.2540684], [-69.9827385, -34.2539642], [-69.9825883, -34.2538467], [-69.9824998, -34.2537669], [-69.9824408, -34.2536849], [-69.982371, -34.2536117], [-69.9822584, -34.2535407], [-69.9821377, -34.2534521], [-69.9819848, -34.2533878], [-69.9818131, -34.2533368], [-69.9817166, -34.2533168], [-69.9815127, -34.253237], [-69.9811882, -34.2531594], [-69.9809897, -34.2531062], [-69.9808205, -34.2530662], [-69.9806786, -34.2530353], [-69.980442, -34.2530002], [-69.9801877, -34.252951], [-69.9800241, -34.2529355], [-69.9798739, -34.2529355], [-69.9796271, -34.2528956], [-69.9795252, -34.2528823], [-69.9794099, -34.2527825], [-69.9792811, -34.2526828], [-69.9790612, -34.2525874], [-69.9789056, -34.2525564], [-69.9787742, -34.2525187], [-69.9786535, -34.2524721], [-69.9784148, -34.2524322], [-69.9782109, -34.2524034], [-69.9780741, -34.252399], [-69.9778542, -34.2524123], [-69.9776503, -34.2523591], [-69.9774572, -34.2522948], [-69.9772453, -34.2522527], [-69.9770334, -34.2522238], [-69.9766928, -34.2522128], [-69.9765614, -34.2522349], [-69.9764112, -34.2522261], [-69.9762985, -34.2521839], [-69.9761322, -34.2520709], [-69.9759847, -34.2519157], [-69.9758104, -34.2518026], [-69.9756119, -34.2516851], [-69.9755019, -34.2515587], [-69.9753678, -34.25147], [-69.97518, -34.2513703], [-69.974885, -34.251255], [-69.9747267, -34.251184], [-69.9744692, -34.2510555], [-69.974319, -34.2509446], [-69.9741393, -34.2508271], [-69.9738899, -34.2506276], [-69.9736673, -34.2505012], [-69.9734795, -34.2503438], [-69.9733776, -34.2502551], [-69.9731657, -34.2500933], [-69.972986, -34.2499846], [-69.9727607, -34.2498627], [-69.9726212, -34.2497939], [-69.9724227, -34.2497141], [-69.9721545, -34.2497496], [-69.9719963, -34.2497718], [-69.9716663, -34.249825], [-69.9714866, -34.2499137], [-69.9713632, -34.2499713], [-69.9711058, -34.2500467], [-69.9708421, -34.2501053], [-69.9706256, -34.2501132], [-69.9702823, -34.2500777], [-69.9700892, -34.2500644], [-69.9698103, -34.2500245], [-69.9695581, -34.2500112], [-69.9693865, -34.2500733], [-69.9692524, -34.2501221], [-69.9689841, -34.2502817], [-69.9688017, -34.250397], [-69.9686301, -34.250499], [-69.9684531, -34.2506054], [-69.9682063, -34.2507562], [-69.9679756, -34.2509158], [-69.9677289, -34.251071], [-69.9675947, -34.2511641], [-69.967407, -34.2513282], [-69.9672031, -34.2514124], [-69.966979, -34.251554], [-69.9668062, -34.2516784], [-69.9666667, -34.251776], [-69.9664789, -34.251878], [-69.9663663, -34.2519223], [-69.9662215, -34.2519755], [-69.9659582, -34.2520394], [-69.9656726, -34.2521679], [-69.9654383, -34.2523214], [-69.9652451, -34.25245], [-69.9651378, -34.2525431], [-69.9650091, -34.2525786], [-69.9648589, -34.2525963], [-69.9647677, -34.2526584], [-69.9646711, -34.2527692], [-69.964537, -34.2529022], [-69.9644297, -34.2529555], [-69.9643332, -34.2529865], [-69.9642232, -34.2530242], [-69.9640676, -34.2530641], [-69.9638933, -34.2531084], [-69.9637377, -34.2531905], [-69.9636331, -34.2532836], [-69.9634722, -34.2533612], [-69.9633113, -34.253421], [-69.9631257, -34.2535527], [-69.9630189, -34.2536782], [-69.9629438, -34.2537292], [-69.9628258, -34.2537824], [-69.9626702, -34.2538977], [-69.9625334, -34.2540174], [-69.9624181, -34.2541992], [-69.9623537, -34.2543145], [-69.9622437, -34.2543854], [-69.9620774, -34.2544608], [-69.9619111, -34.2545739], [-69.9618065, -34.2546958], [-69.9617127, -34.2547778], [-69.9615598, -34.2548731], [-69.9614793, -34.2548909], [-69.9613076, -34.2549397], [-69.9610662, -34.2550039], [-69.9609268, -34.2550173], [-69.9607658, -34.255035], [-69.9606559, -34.2550549], [-69.96057, -34.255137], [-69.9604413, -34.2552633], [-69.9602374, -34.2553941], [-69.9600524, -34.2554983], [-69.9599236, -34.2555826], [-69.9597546, -34.2556668], [-69.9596098, -34.2557156], [-69.9594167, -34.2558464], [-69.9592558, -34.2559461], [-69.9591592, -34.2560282], [-69.9589446, -34.2561302], [-69.9587515, -34.2562055], [-69.9585584, -34.2563075], [-69.958443, -34.2563629], [-69.9583677, -34.2564341], [-69.958207, -34.2566312], [-69.9581239, -34.2567664], [-69.9580273, -34.2569349], [-69.957971, -34.2571145], [-69.9579066, -34.2572475], [-69.9578047, -34.2573539], [-69.957684, -34.257447], [-69.9575445, -34.2575046], [-69.9573594, -34.257529], [-69.9571797, -34.2575844], [-69.957051, -34.257631], [-69.9569652, -34.257733], [-69.956823, -34.2578616], [-69.9566594, -34.2579347], [-69.9565762, -34.2579879], [-69.9565226, -34.2580699], [-69.9564099, -34.2581697], [-69.9562973, -34.2582362], [-69.9561283, -34.2583337], [-69.9560961, -34.2583581], [-69.9559059, -34.2584996], [-69.9557287, -34.2586109], [-69.9555945, -34.258684], [-69.9554524, -34.2587949], [-69.9553075, -34.2589633], [-69.9551493, -34.2591119], [-69.9549428, -34.2592537], [-69.9548033, -34.2593336], [-69.9546745, -34.2594045], [-69.9545324, -34.2595331], [-69.9543741, -34.2596816], [-69.9542964, -34.2597858], [-69.9541917, -34.2599277], [-69.9541059, -34.2600274], [-69.9539825, -34.2601804], [-69.9538994, -34.260309], [-69.9538538, -34.2604287], [-69.9538136, -34.2605661], [-69.9537465, -34.2607035], [-69.9536687, -34.2608698], [-69.9535427, -34.2609784], [-69.9534032, -34.2610715], [-69.9533066, -34.2611602], [-69.9531886, -34.2612577], [-69.9530652, -34.2613775], [-69.9530196, -34.261455], [-69.9529365, -34.261557], [-69.952848, -34.2616834], [-69.9527246, -34.2617366], [-69.9526146, -34.261772], [-69.9525046, -34.2618452], [-69.9524403, -34.2619516], [-69.9522874, -34.2620913], [-69.9521479, -34.262273], [-69.9520648, -34.2624371], [-69.9519038, -34.2626942], [-69.9517939, -34.2628516], [-69.9516919, -34.2630112], [-69.9515954, -34.2631597], [-69.9514854, -34.2632506], [-69.9513701, -34.2633304], [-69.9512225, -34.2634634], [-69.9511287, -34.2635809], [-69.9510509, -34.2637294], [-69.950965, -34.2638247], [-69.9508658, -34.2639644], [-69.9507988, -34.2640819], [-69.9507397, -34.2642215], [-69.9506968, -34.2643279], [-69.9505895, -34.2644787], [-69.950442, -34.2645939], [-69.9503079, -34.2647358], [-69.9502462, -34.2648245], [-69.9501497, -34.2650107], [-69.9500907, -34.2651082], [-69.950037, -34.2652368], [-69.9499297, -34.2654274], [-69.9498117, -34.2655782], [-69.9497044, -34.2657998], [-69.9495864, -34.2659461], [-69.9493933, -34.2660525], [-69.9492109, -34.2661545], [-69.9490178, -34.2661988], [-69.9487656, -34.2662254], [-69.9486101, -34.2662254], [-69.9483017, -34.2662897], [-69.9481165, -34.2663318], [-69.9480146, -34.2664161], [-69.9479342, -34.2665491], [-69.9477947, -34.2666909], [-69.9477142, -34.266784], [-69.9476498, -34.2669835], [-69.9475801, -34.2671121], [-69.9475104, -34.267285], [-69.9473763, -34.2675377], [-69.9472475, -34.2676973], [-69.9471724, -34.2677948], [-69.9470919, -34.2679012], [-69.9470222, -34.2681273], [-69.9469686, -34.2682426], [-69.9468881, -34.2683578], [-69.9467862, -34.2685174], [-69.9466574, -34.2686814], [-69.9465287, -34.2688189], [-69.9464643, -34.2689297], [-69.9463838, -34.2690937], [-69.9462658, -34.269178], [-69.9461693, -34.2692622], [-69.9460942, -34.2694262], [-69.9460352, -34.2697897], [-69.9458903, -34.2700956], [-69.9457079, -34.2702064], [-69.9454451, -34.2703261], [-69.9451876, -34.2704458], [-69.9449086, -34.2705655], [-69.9446511, -34.2706498], [-69.9444687, -34.270703], [-69.944281, -34.2707384], [-69.9439967, -34.2707783], [-69.9437553, -34.2708492], [-69.9435139, -34.2709512], [-69.9432242, -34.2711108], [-69.9430203, -34.2712172], [-69.9428031, -34.2713524], [-69.9426931, -34.2714455], [-69.9425536, -34.2715608], [-69.9424249, -34.2717226], [-69.9423444, -34.27186], [-69.9422801, -34.2720772], [-69.9422211, -34.2724407], [-69.9421567, -34.2726446], [-69.9420172, -34.2728973], [-69.9418241, -34.2732874], [-69.9417812, -34.2734669], [-69.9417034, -34.2736177], [-69.9416471, -34.2736842], [-69.9414808, -34.2737795], [-69.9413762, -34.273826], [-69.9412823, -34.2738991], [-69.9412259, -34.2739634], [-69.9411804, -34.2740565], [-69.9411643, -34.2741563], [-69.9411267, -34.2743291], [-69.9411079, -34.2744621], [-69.9411321, -34.2746062], [-69.9411428, -34.2748611], [-69.9411321, -34.2750517], [-69.9410784, -34.2752822], [-69.9409926, -34.2755703], [-69.9408853, -34.275956], [-69.9408907, -34.2763416], [-69.9408424, -34.2766253], [-69.9409068, -34.2769445], [-69.9409121, -34.2772238], [-69.9408853, -34.2773789], [-69.9409068, -34.2776582], [-69.9409121, -34.277831], [-69.9409282, -34.278097], [-69.9409819, -34.2784649], [-69.9410141, -34.2788328], [-69.9410033, -34.2790101], [-69.9409872, -34.2791121], [-69.9410033, -34.2792406], [-69.9410194, -34.2794002], [-69.9410677, -34.2795199], [-69.9410087, -34.2797415], [-69.9409443, -34.2798612], [-69.9409121, -34.2798967], [-69.940837, -34.2799543], [-69.9407619, -34.2800119], [-69.9406439, -34.2800363], [-69.9404615, -34.2800784], [-69.9403247, -34.2801006], [-69.9401853, -34.2801205], [-69.9400082, -34.280136], [-69.9398553, -34.2801604], [-69.9396783, -34.2801693], [-69.9395362, -34.2801804], [-69.9394074, -34.2801936], [-69.9392599, -34.2802335], [-69.9391043, -34.2802845], [-69.9389675, -34.2802912], [-69.9387717, -34.2802823], [-69.938643, -34.2802823], [-69.9383774, -34.2801804], [-69.9380744, -34.2801116], [-69.937849, -34.2800695], [-69.9375621, -34.280023], [-69.9373475, -34.279992], [-69.9370524, -34.2799742], [-69.9367509, -34.2799868], [-69.9364436, -34.2800518], [-69.9362397, -34.2801116], [-69.9359581, -34.2802047], [-69.9357569, -34.2802867], [-69.935537, -34.280371], [-69.9353707, -34.2804552], [-69.9352205, -34.2805527], [-69.9348611, -34.2808009], [-69.9346572, -34.2809516], [-69.934566, -34.2809782], [-69.9344748, -34.2810092], [-69.9342763, -34.281058], [-69.934153, -34.2810802], [-69.9337292, -34.2812309], [-69.9336702, -34.2812442], [-69.9334556, -34.281253], [-69.9331713, -34.2812974], [-69.9331176, -34.2813018], [-69.933005, -34.2813195], [-69.932946, -34.2813195], [-69.932828, -34.2813328], [-69.9325383, -34.2813816], [-69.9322861, -34.2814037], [-69.9319536, -34.2814348], [-69.9316853, -34.2814348], [-69.9314386, -34.2814658], [-69.931165, -34.281488], [-69.9309129, -34.2815434], [-69.9307331, -34.2815744], [-69.9304944, -34.2816187], [-69.930312, -34.2816453], [-69.9301136, -34.2817384], [-69.9298065, -34.2819623], [-69.9295591, -34.2821717], [-69.9291974, -34.2823049], [-69.9288797, -34.2824099], [-69.9287027, -34.2824786], [-69.9285284, -34.2826027], [-69.9284184, -34.2827202], [-69.9282253, -34.2828022], [-69.9279892, -34.282862], [-69.9277291, -34.282913], [-69.927544, -34.2829507], [-69.9272999, -34.2829861], [-69.9270424, -34.283026], [-69.9268198, -34.2830637], [-69.9266025, -34.2831147], [-69.9264631, -34.28321], [-69.9264014, -34.2832698], [-69.9263397, -34.2834249], [-69.9262887, -34.283518], [-69.9262056, -34.28362], [-69.926101, -34.2836798], [-69.9258435, -34.2838128], [-69.9256477, -34.2839169], [-69.9254492, -34.2840632], [-69.9253432, -34.2841984], [-69.9252135, -34.2843233], [-69.924881, -34.2845607], [-69.9243814, -34.2848224], [-69.9240482, -34.2849652], [-69.9237151, -34.2850366], [-69.9234296, -34.2851793], [-69.9231916, -34.2853935], [-69.9231678, -34.2857028], [-69.9232868, -34.2859883], [-69.923382, -34.2862739], [-69.9234534, -34.286607], [-69.923501, -34.2868925], [-69.9234534, -34.2872257], [-69.9232868, -34.2875588], [-69.9231678, -34.2880109], [-69.9229537, -34.288344], [-69.9226206, -34.2888913], [-69.9224016, -34.2890959], [-69.9220447, -34.2893815], [-69.92167, -34.2898561], [-69.921611, -34.2899182], [-69.9214903, -34.2899647], [-69.9214125, -34.2899891], [-69.9212462, -34.2900135], [-69.9211389, -34.2900467], [-69.9210611, -34.2900689], [-69.9209431, -34.2901087], [-69.9208009, -34.2901265], [-69.9206829, -34.2901442], [-69.9205381, -34.2901265], [-69.9204254, -34.290122], [-69.9203664, -34.2901132], [-69.9202001, -34.2900733], [-69.9200928, -34.2900556], [-69.9199855, -34.2900644], [-69.9198246, -34.2900644], [-69.9197495, -34.2900556], [-69.9195135, -34.2900334], [-69.9193338, -34.2900112], [-69.9192265, -34.2900135], [-69.9190146, -34.2900157], [-69.9189609, -34.2900068], [-69.9187812, -34.2900002], [-69.9186176, -34.2899736], [-69.9184164, -34.2899625], [-69.9182314, -34.2899714], [-69.9180973, -34.2899448], [-69.9179953, -34.2899137], [-69.9177325, -34.289865], [-69.9175823, -34.2898694], [-69.9172604, -34.2898694], [-69.9171531, -34.2898561], [-69.9167454, -34.2897852], [-69.9165416, -34.289763], [-69.9164128, -34.289763], [-69.9160856, -34.2897808], [-69.916032, -34.2897896], [-69.9159354, -34.2898207], [-69.9157691, -34.2898517], [-69.9157101, -34.2898694], [-69.9155706, -34.2899492], [-69.9155277, -34.2899802], [-69.9152809, -34.2901087], [-69.9151897, -34.2901486], [-69.9150771, -34.2901797], [-69.9149108, -34.2902018], [-69.9147981, -34.2902107], [-69.9146211, -34.2902506], [-69.9144602, -34.2902639], [-69.9143046, -34.2903215], [-69.914251, -34.2903303], [-69.9139613, -34.2903303], [-69.9139023, -34.2903436], [-69.9138486, -34.2903481], [-69.9135804, -34.2904146], [-69.9134249, -34.2904633], [-69.9131942, -34.2904988], [-69.913044, -34.290552], [-69.9127489, -34.2906849], [-69.912588, -34.2907337], [-69.9125344, -34.290747], [-69.9124646, -34.2907558], [-69.9121481, -34.2908356], [-69.9118745, -34.2909198], [-69.9116573, -34.2910439], [-69.9114722, -34.2910705], [-69.9113596, -34.2911104], [-69.9110538, -34.2912788], [-69.9108338, -34.2913719], [-69.9106675, -34.2914162], [-69.9105442, -34.2914561], [-69.9102974, -34.2915314], [-69.9099316, -34.2917449], [-69.9094713, -34.2913852], [-69.9091762, -34.2911547], [-69.9088758, -34.2908201], [-69.9086658, -34.2905995], [-69.9082589, -34.2902705], [-69.9078646, -34.2900689], [-69.9075776, -34.2899359], [-69.9073684, -34.2898118], [-69.907068, -34.2896434], [-69.9067944, -34.2894617], [-69.9065584, -34.2892356], [-69.9063438, -34.2890805], [-69.9060702, -34.2888899], [-69.9058181, -34.288686], [-69.9055177, -34.2885043], [-69.9050993, -34.2882251], [-69.9047667, -34.2880522], [-69.9044126, -34.2879104], [-69.9039352, -34.2876666], [-69.9035704, -34.2874628], [-69.9031359, -34.2872234], [-69.9027336, -34.2870373], [-69.9022454, -34.2867713], [-69.901806, -34.2864556], [-69.9015641, -34.2862306], [-69.9009708, -34.2859988], [-69.9005639, -34.2858132], [-69.9001856, -34.2855562], [-69.8998929, -34.285285], [-69.8996952, -34.2850894], [-69.8993147, -34.2849281], [-69.8989007, -34.2848353], [-69.8984938, -34.2847353], [-69.8981797, -34.284771], [-69.8978561, -34.2846734], [-69.8979727, -34.284257], [-69.8980797, -34.2838502], [-69.8980226, -34.2834504], [-69.8979441, -34.2829793], [-69.8979941, -34.2825581], [-69.8980533, -34.2821566], [-69.8980369, -34.2818842], [-69.8980369, -34.2816273], [-69.8981473, -34.2812406], [-69.8983796, -34.2806707], [-69.8985866, -34.2801425], [-69.8986508, -34.279757], [-69.8985469, -34.2792669], [-69.898401, -34.2788761], [-69.898301, -34.2785335], [-69.8982678, -34.2780637], [-69.8981464, -34.2772367], [-69.8981583, -34.2769345], [-69.898144, -34.2765776], [-69.8982439, -34.2762064], [-69.8982582, -34.2759351], [-69.8983153, -34.2756496], [-69.8984295, -34.2754069], [-69.8984724, -34.2750928], [-69.8984866, -34.2748358], [-69.8984438, -34.2745217], [-69.8984724, -34.2741077], [-69.8985152, -34.2737222], [-69.898684, -34.2733433], [-69.8989292, -34.2728799], [-69.8990006, -34.2725658], [-69.8990075, -34.2722163], [-69.8990291, -34.2718305], [-69.8990931, -34.2715043], [-69.8992005, -34.2712166], [-69.8992897, -34.2708954], [-69.8993147, -34.2705456], [-69.8992933, -34.2701673], [-69.8993075, -34.2697818], [-69.8992005, -34.2695177], [-69.8989255, -34.2692381], [-69.8987151, -34.2689466], [-69.8985723, -34.2686611], [-69.8984081, -34.2683542], [-69.8981498, -34.2679292], [-69.8978656, -34.2675175], [-69.8977728, -34.2671478], [-69.8976443, -34.2665396], [-69.8975301, -34.2661327], [-69.8973299, -34.265816], [-69.8966021, -34.2653689], [-69.8963451, -34.2651405], [-69.8960239, -34.2649549], [-69.8959127, -34.2648666], [-69.895733, -34.2648045], [-69.8955882, -34.2647624], [-69.8954836, -34.2647691], [-69.8953897, -34.2648023], [-69.8951939, -34.2648555], [-69.8949578, -34.2649132], [-69.8947647, -34.2649486], [-69.8945367, -34.264993], [-69.8943034, -34.2650683], [-69.8942122, -34.2650705], [-69.8940915, -34.2650683], [-69.8938608, -34.2650816], [-69.8935711, -34.2651215], [-69.8934531, -34.2651348], [-69.8933083, -34.2651481], [-69.8930454, -34.2651481], [-69.8927879, -34.2651082], [-69.8925573, -34.2651304], [-69.8924017, -34.2651038], [-69.8922247, -34.2650816], [-69.8919994, -34.2650861], [-69.8917151, -34.2650861], [-69.8914415, -34.2650816], [-69.8911625, -34.2651127], [-69.8908407, -34.2650683], [-69.8905832, -34.2650772], [-69.8902506, -34.265157], [-69.8900735, -34.2652013], [-69.8898697, -34.2651969], [-69.8896605, -34.2651481], [-69.8894244, -34.2650639], [-69.8890972, -34.2650683], [-69.8887807, -34.2651304], [-69.888593, -34.2651304], [-69.8883033, -34.265126], [-69.8879707, -34.2651481], [-69.8875516, -34.2651547], [-69.8871518, -34.2651738], [-69.8868425, -34.2651547], [-69.8864073, -34.2650098], [-69.8861049, -34.2648692], [-69.8860073, -34.26486], [-69.8858625, -34.2648156], [-69.8857498, -34.2648156], [-69.8856962, -34.2648067], [-69.8855835, -34.2648112], [-69.8854655, -34.2648333], [-69.8852348, -34.2649087], [-69.8851275, -34.2649132], [-69.8848808, -34.2649309], [-69.8846555, -34.2649708], [-69.8845482, -34.2649797], [-69.8844785, -34.264993], [-69.8843443, -34.2650417], [-69.8842746, -34.2650462], [-69.8841244, -34.2650772], [-69.8837757, -34.2650772], [-69.8837167, -34.2650861], [-69.8835182, -34.2651348], [-69.8833466, -34.2652058], [-69.8830837, -34.2652811], [-69.8829067, -34.2653122], [-69.8827404, -34.2653299], [-69.8826277, -34.2653521], [-69.8825258, -34.2653875], [-69.8824346, -34.2654363], [-69.8823327, -34.2655028], [-69.8822576, -34.2655649], [-69.8821396, -34.2656447], [-69.8818713, -34.2657422], [-69.8818284, -34.2657644], [-69.8815924, -34.2658397], [-69.8815388, -34.265853], [-69.8813295, -34.2659284], [-69.8812169, -34.2659727], [-69.8811793, -34.2659949], [-69.881115, -34.2660614], [-69.8810506, -34.2661368], [-69.8809701, -34.26619], [-69.8809058, -34.2662166], [-69.8808092, -34.2662432], [-69.8806053, -34.2662875], [-69.8805517, -34.2663097], [-69.8803961, -34.266354], [-69.8803425, -34.2663806], [-69.8801601, -34.2664116], [-69.8800474, -34.2664338], [-69.8798382, -34.2665092], [-69.8796451, -34.2665934], [-69.8795432, -34.2666067], [-69.8794681, -34.2666111], [-69.8794091, -34.2666244], [-69.879216, -34.2667042], [-69.8790604, -34.2667973], [-69.8788512, -34.2668461], [-69.8785937, -34.2669259], [-69.8783362, -34.2669259], [-69.8782343, -34.2669436], [-69.8781806, -34.2669658], [-69.8781323, -34.2669791], [-69.8779553, -34.2670411], [-69.8777622, -34.2670411], [-69.8776335, -34.2670278], [-69.8775208, -34.2670057], [-69.8772848, -34.2670101], [-69.8772258, -34.267019], [-69.8770595, -34.267019], [-69.8768717, -34.2669924], [-69.8767644, -34.2669702], [-69.8765552, -34.2669037], [-69.8764372, -34.266886], [-69.8763299, -34.266855], [-69.8761851, -34.2668417], [-69.8760617, -34.2668195], [-69.8756218, -34.2668816], [-69.8754394, -34.2669348], [-69.8751068, -34.2669791], [-69.8750049, -34.2670057], [-69.8748279, -34.2670278], [-69.8747206, -34.2670344], [-69.8746133, -34.2670367], [-69.8744094, -34.2671032], [-69.8742378, -34.2671121], [-69.8741788, -34.2671032], [-69.8740286, -34.2670633], [-69.8735619, -34.2670633], [-69.8735082, -34.2670544], [-69.8733312, -34.266988], [-69.8731917, -34.266917], [-69.8729771, -34.2668505], [-69.8729289, -34.2668417], [-69.8728806, -34.2668239], [-69.8726553, -34.2668018], [-69.8726124, -34.266784], [-69.8725534, -34.2667796], [-69.8725051, -34.2667929], [-69.8723817, -34.2668151], [-69.8722637, -34.2668417], [-69.8720974, -34.2668683], [-69.8719874, -34.2668816], [-69.8718265, -34.2668417], [-69.8717219, -34.2667929], [-69.871636, -34.2667486], [-69.8715663, -34.2666909], [-69.871459, -34.2666399], [-69.8713195, -34.2665867], [-69.8711693, -34.2665313], [-69.8711318, -34.2665003], [-69.871003, -34.2663673], [-69.8709467, -34.2663119], [-69.8708689, -34.2662432], [-69.8707509, -34.2661013], [-69.8707187, -34.2660481], [-69.8706007, -34.2659727], [-69.8704746, -34.2659084], [-69.87037, -34.265873], [-69.8701823, -34.265802], [-69.8700267, -34.2657599], [-69.8698282, -34.2657267], [-69.8697102, -34.2657089], [-69.8695922, -34.2656979], [-69.8693615, -34.2657023], [-69.8692489, -34.2656979], [-69.8691013, -34.2657067], [-69.8689485, -34.2657089], [-69.8687768, -34.2656912], [-69.8686561, -34.2656868], [-69.868412, -34.2657067], [-69.8682377, -34.2657112], [-69.8677951, -34.2657466], [-69.8677254, -34.2657599], [-69.8675108, -34.2657865], [-69.8672587, -34.2657954], [-69.867087, -34.2657444], [-69.8669127, -34.2655626], [-69.8667651, -34.2653388], [-69.8666504, -34.2650043], [-69.8665933, -34.2646807], [-69.8665171, -34.2643381], [-69.8664013, -34.2640506], [-69.8662206, -34.2638075], [-69.8659159, -34.2636081], [-69.8655876, -34.2634367], [-69.8651878, -34.2632654], [-69.8649873, -34.2632125], [-69.8647738, -34.2631655], [-69.8643455, -34.2631655], [-69.8640028, -34.2632226], [-69.8636745, -34.2633511], [-69.8632828, -34.2634611], [-69.8625181, -34.2637508], [-69.8622227, -34.2638257], [-69.8618185, -34.2639792], [-69.861384, -34.2638745], [-69.8608843, -34.2635414], [-69.8606702, -34.2633035], [-69.8604798, -34.2629466], [-69.8602181, -34.2623636], [-69.8596327, -34.2615189], [-69.8592425, -34.2616236], [-69.8589189, -34.2616807], [-69.8585477, -34.2617378], [-69.8580242, -34.2616902], [-69.8575293, -34.2615665], [-69.8572247, -34.2614523], [-69.8562387, -34.2615541], [-69.8560064, -34.2609716], [-69.8558865, -34.260688], [-69.8558484, -34.2604024], [-69.8558103, -34.2599646], [-69.8557342, -34.2595458], [-69.8555629, -34.2592984], [-69.8554784, -34.2591252], [-69.855457, -34.2590232], [-69.8554167, -34.2589988], [-69.8552746, -34.2589456], [-69.8551485, -34.258899], [-69.8550299, -34.2588415], [-69.854891, -34.2587572], [-69.8547253, -34.2586131], [-69.8545745, -34.2584113], [-69.8544887, -34.2582872], [-69.8544404, -34.2581808], [-69.8544458, -34.2580012], [-69.854494, -34.2578505], [-69.8545048, -34.257733], [-69.8544914, -34.2575711], [-69.8544565, -34.2573118], [-69.8544055, -34.2571433], [-69.8543251, -34.2568595], [-69.8543358, -34.2567088], [-69.8543412, -34.2565891], [-69.8543733, -34.2563474], [-69.8543787, -34.2562499], [-69.8543492, -34.2561745], [-69.8542848, -34.2560526], [-69.8542097, -34.2560769], [-69.8540756, -34.2561213], [-69.8539978, -34.2561767], [-69.8538959, -34.25621], [-69.8537725, -34.2561989], [-69.8535714, -34.2561545], [-69.853338, -34.2561213], [-69.8531905, -34.2561279], [-69.8530564, -34.2561634], [-69.8529625, -34.2561834], [-69.8527506, -34.2562233], [-69.852536, -34.2562321], [-69.8521471, -34.2562188], [-69.851954, -34.2562299], [-69.8518306, -34.2562698], [-69.8516321, -34.2563097], [-69.85138, -34.2563252], [-69.8512566, -34.2563474], [-69.851042, -34.2563784], [-69.8508328, -34.256445], [-69.850511, -34.2565602], [-69.8503017, -34.2566267], [-69.850063, -34.2566933], [-69.8497331, -34.2567997], [-69.8494273, -34.2568883], [-69.8492396, -34.2569548], [-69.8489928, -34.2570524], [-69.8487461, -34.2571499], [-69.8485771, -34.2572076], [-69.8484349, -34.257212], [-69.8482311, -34.2572142], [-69.8480997, -34.2572142], [-69.847995, -34.2572142], [-69.84781, -34.2571898], [-69.8475659, -34.2571788], [-69.847362, -34.2572076], [-69.8470697, -34.2571987], [-69.8469248, -34.2572297], [-69.8467398, -34.2572519], [-69.8465252, -34.2572519], [-69.8463374, -34.2572563], [-69.8461229, -34.2572187], [-69.8459056, -34.2571832], [-69.8457742, -34.257161], [-69.8455311, -34.2571283], [-69.8451504, -34.2570712], [-69.844999, -34.2570568], [-69.8447683, -34.2570103], [-69.8445055, -34.2569659], [-69.8442453, -34.256926], [-69.8438081, -34.2568773], [-69.8435479, -34.2568706], [-69.8432985, -34.2568773], [-69.8431, -34.2568706], [-69.8427862, -34.2568396], [-69.8425797, -34.2568374], [-69.8424187, -34.2568507], [-69.8422068, -34.2568662], [-69.8419708, -34.2568906], [-69.8417187, -34.256875], [-69.8414022, -34.2568484], [-69.8410964, -34.2567974], [-69.8408228, -34.2567287], [-69.8404527, -34.2566223], [-69.8398941, -34.2564769], [-69.8394944, -34.2564198], [-69.8390946, -34.2563056], [-69.8386283, -34.256228], [-69.8379958, -34.2560814], [-69.8377007, -34.2560814], [-69.8375344, -34.256108], [-69.8372823, -34.256241], [-69.8370785, -34.2563341], [-69.8368746, -34.2563696], [-69.83666, -34.2563607], [-69.8362774, -34.2562485], [-69.8359728, -34.2561343], [-69.8356783, -34.2560237], [-69.8355013, -34.2559705], [-69.835021, -34.2558297], [-69.8347986, -34.2558375], [-69.8346323, -34.2558375], [-69.8342215, -34.2558868], [-69.8339349, -34.2559661], [-69.8337096, -34.2559794], [-69.8333005, -34.2559791], [-69.8326837, -34.2558764], [-69.8322183, -34.2557976], [-69.8320037, -34.2557577], [-69.8318052, -34.2557488], [-69.8315477, -34.2558065], [-69.8310962, -34.256002], [-69.8308826, -34.2561302], [-69.8306143, -34.2562898], [-69.8303515, -34.2564139], [-69.8301262, -34.2565026], [-69.829976, -34.2565026], [-69.8297802, -34.2564915], [-69.8295575, -34.2565336], [-69.8293537, -34.2565713], [-69.8291901, -34.256609], [-69.8289219, -34.256629], [-69.8288441, -34.256476], [-69.8287582, -34.256374], [-69.8286241, -34.2562587], [-69.8284096, -34.2561701], [-69.8282647, -34.2560282], [-69.8281038, -34.2559927], [-69.8279375, -34.2559528], [-69.8277122, -34.2558819], [-69.8274225, -34.2558065], [-69.8272616, -34.2557843], [-69.8270685, -34.2557134], [-69.8269129, -34.2556446], [-69.8268619, -34.2555604], [-69.8268592, -34.2554717], [-69.8269075, -34.2553542], [-69.8269129, -34.2552256], [-69.8269156, -34.2551325], [-69.8269343, -34.2550394], [-69.8269987, -34.2549241], [-69.8270577, -34.2548133], [-69.8271462, -34.2547335], [-69.8271945, -34.2546382], [-69.8272221, -34.2544858], [-69.8272428, -34.2543455], [-69.8272964, -34.2541615], [-69.8273528, -34.2539841], [-69.8274118, -34.2538755], [-69.8274574, -34.2536982], [-69.8274976, -34.2535651], [-69.8275244, -34.2533789], [-69.8275378, -34.2532658], [-69.8275486, -34.2531528], [-69.8275888, -34.2530064], [-69.8276156, -34.2528756], [-69.8276156, -34.252767], [-69.8275888, -34.2526273], [-69.8275539, -34.2524566], [-69.8274922, -34.2522992], [-69.8273608, -34.2520775], [-69.8271489, -34.2517849], [-69.8269826, -34.2516142], [-69.8267305, -34.2513082], [-69.8265186, -34.2511153], [-69.8263899, -34.2509779], [-69.8261336, -34.2507714], [-69.8253585, -34.2501533], [-69.8251548, -34.2498909], [-69.8249397, -34.2495632], [-69.8246732, -34.249211], [-69.8242773, -34.248855], [-69.8239498, -34.2487066], [-69.8234264, -34.2485543], [-69.8229029, -34.2484781], [-69.822427, -34.2484686], [-69.8219511, -34.2484401], [-69.8214467, -34.248402], [-69.8210374, -34.2484401], [-69.8206947, -34.248383], [-69.8201617, -34.2482497], [-69.8196002, -34.2480498], [-69.8192861, -34.247869], [-69.8188483, -34.2476977], [-69.8185247, -34.2475263], [-69.8182391, -34.247317], [-69.8179346, -34.2472027], [-69.8175919, -34.2470885], [-69.8172874, -34.2469743], [-69.8169257, -34.2468791], [-69.816564, -34.2468601], [-69.8162404, -34.2468601], [-69.8159168, -34.2469172], [-69.8156503, -34.2470505], [-69.8152125, -34.2472218], [-69.8148127, -34.2472789], [-69.8144891, -34.2472789], [-69.8141845, -34.247317], [-69.8138609, -34.2473741], [-69.8134269, -34.2474045], [-69.8129605, -34.2475949], [-69.812656, -34.2477757], [-69.8122372, -34.2477376], [-69.8119897, -34.2475854], [-69.8115519, -34.2473855], [-69.8109903, -34.2472522], [-69.8105145, -34.2472427], [-69.81001, -34.2473569], [-69.8096483, -34.2474521], [-69.8091724, -34.2475854], [-69.8086585, -34.2477567], [-69.8082016, -34.2478519], [-69.8079068, -34.2479626], [-69.8076332, -34.2480025], [-69.8074991, -34.2478761], [-69.8074213, -34.2477852], [-69.8073569, -34.2476722], [-69.807314, -34.247568], [-69.8072818, -34.2474128], [-69.8073033, -34.2472287], [-69.8072684, -34.2471423], [-69.8071906, -34.2470624], [-69.8070833, -34.2470137], [-69.80685, -34.2469715], [-69.80652, -34.2469449], [-69.8063511, -34.2468895], [-69.8061767, -34.2467609], [-69.8059917, -34.246619], [-69.8057556, -34.2463485], [-69.8054713, -34.2461756], [-69.8052353, -34.2460958], [-69.8052192, -34.2458164], [-69.8052621, -34.2455769], [-69.8053265, -34.245333], [-69.8054713, -34.2449384], [-69.8055089, -34.2446989], [-69.8054981, -34.2443397], [-69.8053677, -34.2437982], [-69.8052106, -34.2433713], [-69.8050131, -34.2428683], [-69.8050488, -34.2423686], [-69.8050012, -34.2420355], [-69.8050797, -34.2415814], [-69.804951, -34.241067], [-69.8048222, -34.2406856], [-69.8045969, -34.2402954], [-69.8042536, -34.2396834], [-69.8040176, -34.2391601], [-69.8038244, -34.23869], [-69.8037643, -34.2382688], [-69.8035669, -34.2374305], [-69.803406, -34.2369161], [-69.8032022, -34.2364371], [-69.8028857, -34.235936], [-69.802661, -34.2356178], [-69.8025692, -34.2352663], [-69.8025101, -34.2348006], [-69.802478, -34.2344414], [-69.8024619, -34.2340689], [-69.8025689, -34.2333825], [-69.8028331, -34.2329256], [-69.80309, -34.2326258], [-69.8034041, -34.2322689], [-69.8039181, -34.231912], [-69.804275, -34.2316122], [-69.8046177, -34.2313123], [-69.8048889, -34.2309697], [-69.8050745, -34.230727], [-69.8051887, -34.2304529], [-69.8052601, -34.2299246], [-69.8052316, -34.229425], [-69.8051887, -34.2289681], [-69.8051887, -34.2283828], [-69.8052744, -34.2279402], [-69.8053743, -34.2271978], [-69.8054314, -34.2265268], [-69.8054928, -34.2260101], [-69.8052353, -34.2257927], [-69.8048461, -34.225713], [-69.8045034, -34.2256844], [-69.8041037, -34.2256416], [-69.8034755, -34.2254703], [-69.8028331, -34.2252703], [-69.8021763, -34.2250276], [-69.8018404, -34.2248001], [-69.8016799, -34.2244078], [-69.8016197, -34.2241605], [-69.8015371, -34.2236394], [-69.8015086, -34.2232825], [-69.80148, -34.2230112], [-69.8014087, -34.2227543], [-69.801323, -34.222483], [-69.8010832, -34.2221157], [-69.8009491, -34.2217297], [-69.8006165, -34.2213217], [-69.8004341, -34.2209491], [-69.8002517, -34.2205587], [-69.8000586, -34.2201329], [-69.7997797, -34.2198313], [-69.7995544, -34.2196183], [-69.7990716, -34.2192546], [-69.7989321, -34.2190949], [-69.7987712, -34.2188465], [-69.7986531, -34.2184739], [-69.7985995, -34.218119], [-69.798578, -34.217773], [-69.7986424, -34.2174004], [-69.7987282, -34.216948], [-69.7987497, -34.2166508], [-69.7988838, -34.2162205], [-69.7991037, -34.2158301], [-69.7992647, -34.2154664], [-69.7994256, -34.2152179], [-69.7994739, -34.2148276], [-69.799398, -34.2144019], [-69.7993183, -34.2140779], [-69.7992754, -34.2137629], [-69.7992057, -34.2134879], [-69.7990823, -34.2131064], [-69.7989535, -34.2129245], [-69.7987121, -34.2126628], [-69.7984278, -34.2124942], [-69.7979611, -34.2119885], [-69.7974335, -34.2113286], [-69.7971618, -34.2110214], [-69.7971082, -34.2107996], [-69.7969955, -34.2103737], [-69.7968239, -34.209899], [-69.7967649, -34.2096018], [-69.7967541, -34.2092912], [-69.7966576, -34.2089097], [-69.7967112, -34.2086524], [-69.7967673, -34.2082086], [-69.7969093, -34.2077636], [-69.7969365, -34.207357], [-69.7970867, -34.2069577], [-69.7972906, -34.2066471], [-69.7975803, -34.2063543], [-69.7978699, -34.2059817], [-69.7982711, -34.2055389], [-69.7986042, -34.2050868], [-69.7989106, -34.2048104], [-69.7990286, -34.2044733], [-69.7991574, -34.2041449], [-69.7993612, -34.2036037], [-69.7994793, -34.2028495], [-69.7997119, -34.2022343], [-69.7999021, -34.2018497], [-69.8000985, -34.2012825], [-69.800277, -34.2008661], [-69.8002464, -34.2006], [-69.8002625, -34.2002407], [-69.800359, -34.1999301], [-69.8004931, -34.1994731], [-69.8006042, -34.1989744], [-69.8007231, -34.1984985], [-69.8007148, -34.1980988], [-69.8008718, -34.1974902], [-69.8007826, -34.1967466], [-69.8007826, -34.1960625], [-69.8006934, -34.1954677], [-69.8006752, -34.1951362], [-69.8007231, -34.1946051], [-69.8009169, -34.1940733], [-69.8011637, -34.193532], [-69.8057145, -34.1902303], [-69.8096627, -34.1865384], [-69.8124092, -34.1829883], [-69.8139542, -34.1797221], [-69.8161858, -34.1771659], [-69.8220223, -34.1736154], [-69.8259705, -34.1700647], [-69.8304337, -34.1686444], [-69.8338669, -34.1655197], [-69.8344052, -34.164207], [-69.8354119, -34.1632471], [-69.8386734, -34.1569971], [-69.8443383, -34.1528776], [-69.8510331, -34.1496102], [-69.8565262, -34.1459165], [-69.8601311, -34.1436434], [-69.864251, -34.1419385], [-69.8688858, -34.1403756], [-69.8712891, -34.1381024], [-69.8735207, -34.132561], [-69.8726624, -34.1292928], [-69.8703289, -34.1253266], [-69.8657959, -34.1220456], [-69.8616761, -34.1201981], [-69.8577279, -34.1172137], [-69.8558298, -34.1147159], [-69.8559022, -34.1144649], [-69.8559344, -34.1143073], [-69.855988, -34.1141407], [-69.8560095, -34.114043], [-69.8560685, -34.1138964], [-69.8561114, -34.1137454], [-69.8561704, -34.1136211], [-69.8563045, -34.1134123], [-69.8563689, -34.113288], [-69.8564011, -34.1131814], [-69.8564386, -34.1130837], [-69.8565406, -34.1129549], [-69.8566425, -34.1128172], [-69.8567498, -34.1126484], [-69.8569268, -34.1125019], [-69.8570931, -34.1123553], [-69.8572767, -34.1122396], [-69.8572594, -34.1120044], [-69.8572648, -34.1118179], [-69.8572594, -34.1115958], [-69.8572809, -34.1113515], [-69.857254, -34.1111339], [-69.8572969, -34.110974], [-69.8573184, -34.1108541], [-69.8573828, -34.1106631], [-69.8574472, -34.1104765], [-69.857592, -34.1102678], [-69.8576832, -34.1100813], [-69.8577154, -34.1099258], [-69.8577368, -34.1097037], [-69.8577744, -34.1095527], [-69.8578173, -34.1094239], [-69.8579031, -34.1092107], [-69.8579568, -34.1089664], [-69.8580051, -34.1087666], [-69.8580587, -34.1086155], [-69.8581338, -34.1084645], [-69.8582089, -34.1083046], [-69.8582196, -34.108198], [-69.8582679, -34.1079582], [-69.8583269, -34.1076917], [-69.8584262, -34.107474], [-69.8584932, -34.1073719], [-69.8585844, -34.1072564], [-69.8586193, -34.1071387], [-69.8586702, -34.1069388], [-69.8586971, -34.1068033], [-69.8587078, -34.1067056], [-69.8587105, -34.1066057], [-69.8587614, -34.1065013], [-69.8588178, -34.1063903], [-69.858866, -34.1062992], [-69.8589841, -34.106166], [-69.8590457, -34.1060482], [-69.8590645, -34.105975], [-69.8591369, -34.1058017], [-69.8592442, -34.1055774], [-69.8592818, -34.1054531], [-69.8592389, -34.1052776], [-69.8592362, -34.105131], [-69.8593113, -34.105], [-69.8593864, -34.1048157], [-69.859542, -34.1046136], [-69.8596439, -34.1043493], [-69.8597109, -34.1042093], [-69.8597502, -34.104006], [-69.8560112, -34.1008687], [-69.8523426, -34.0987613], [-69.8475752, -34.0973288], [-69.8420047, -34.0954795], [-69.8393355, -34.0932064], [-69.8365889, -34.0897945], [-69.8336707, -34.085956], [-69.8331557, -34.0809799], [-69.8331557, -34.0772832], [-69.831954, -34.072591], [-69.8331273, -34.0715729], [-69.8336707, -34.0711691], [-69.8372755, -34.0708847], [-69.8417387, -34.0707425], [-69.845172, -34.0694627], [-69.8480902, -34.0676142], [-69.8507595, -34.0643492], [-69.8510085, -34.0616415], [-69.8525534, -34.0583706], [-69.8528967, -34.0558107], [-69.8516951, -34.0532507], [-69.8494434, -34.0512772], [-69.8490036, -34.0504282], [-69.8487407, -34.0493526], [-69.8472319, -34.0479882], [-69.8470602, -34.0440056], [-69.8455153, -34.0395961], [-69.8422537, -34.035613], [-69.8378849, -34.0329159], [-69.832984, -34.0292114], [-69.8295508, -34.0255124], [-69.8254309, -34.0218133], [-69.823371, -34.0186831], [-69.8222122, -34.0141713], [-69.8235941, -34.0110551], [-69.8250446, -34.0099523], [-69.8300314, -34.0095681], [-69.8345289, -34.0084795], [-69.8393616, -34.0070491], [-69.8402285, -34.0032762], [-69.8407488, -34.0024357], [-69.8413153, -34.0015542], [-69.8416339, -34.0003473], [-69.8417351, -33.9983245], [-69.8411855, -33.9974173], [-69.8409484, -33.9965145], [-69.841016, -33.9956134], [-69.8415224, -33.9946448], [-69.840884, -33.9931343], [-69.8411007, -33.9919246], [-69.8413668, -33.9910003], [-69.8427637, -33.9899453], [-69.8436628, -33.9883512], [-69.844505, -33.98658], [-69.845197, -33.9839414], [-69.8453611, -33.9820145], [-69.8471217, -33.9800786], [-69.8483309, -33.9786435], [-69.8493233, -33.9777449], [-69.8510732, -33.976413], [-69.852837, -33.9740829], [-69.8542264, -33.9712855], [-69.8547145, -33.968965], [-69.8549162, -33.9663534], [-69.8544571, -33.9646797], [-69.8532465, -33.9628912], [-69.8551566, -33.963837], [-69.857076, -33.9636386], [-69.8597807, -33.9635131], [-69.8633277, -33.9633369], [-69.8673767, -33.9635095], [-69.8690976, -33.9632185], [-69.8710642, -33.9636688], [-69.8733902, -33.964394], [-69.8749051, -33.9652403], [-69.8761175, -33.9665429], [-69.8774511, -33.9666097], [-69.8784585, -33.9676952], [-69.8788383, -33.9695309], [-69.8809111, -33.9715907], [-69.8812802, -33.9729538], [-69.8805528, -33.9748738], [-69.8809873, -33.9757493], [-69.8833112, -33.9764522], [-69.8851651, -33.9764709], [-69.8871006, -33.9757751], [-69.8898987, -33.9750811], [-69.8915509, -33.9746149], [-69.8935927, -33.9733218], [-69.8952799, -33.9729199], [-69.8970076, -33.9728186], [-69.8992693, -33.9712926], [-69.9020802, -33.9688413], [-69.9033816, -33.9674372], [-69.9050832, -33.965355], [-69.9057393, -33.9636298], [-69.9047528, -33.9615625], [-69.9034331, -33.9599892], [-69.9009944, -33.9573285], [-69.9005599, -33.9555637], [-69.9007252, -33.9536993], [-69.9005159, -33.9523448], [-69.9006551, -33.9493536], [-69.8957949, -33.9457249], [-69.894334, -33.944406], [-69.8937096, -33.9431243], [-69.8929421, -33.94158], [-69.8918696, -33.9400216], [-69.8928738, -33.9392134], [-69.893481, -33.9379886], [-69.8942932, -33.9358692], [-69.8935958, -33.9344209], [-69.892214, -33.9327181], [-69.8917741, -33.9312199], [-69.8915445, -33.9285182], [-69.8919325, -33.9272103], [-69.891964, -33.9251166], [-69.8912991, -33.9231919], [-69.8906583, -33.921641], [-69.88979, -33.9201623], [-69.8878688, -33.9191117], [-69.8857772, -33.9172368], [-69.8838809, -33.9160232], [-69.8819075, -33.9153233], [-69.8772726, -33.914611], [-69.8757184, -33.9141721], [-69.8750124, -33.9116497], [-69.8740983, -33.9098867], [-69.8732711, -33.9076936], [-69.8716305, -33.9058669], [-69.8698912, -33.904496], [-69.8652792, -33.9013295], [-69.8638684, -33.9003838], [-69.8630364, -33.8980658], [-69.8609394, -33.8977212], [-69.8599888, -33.8961699], [-69.8594199, -33.8958046], [-69.8566733, -33.8939523], [-69.8552828, -33.8925202], [-69.8566253, -33.8901905], [-69.8569043, -33.8887335], [-69.8563893, -33.8859565], [-69.8599524, -33.8845554], [-69.8623739, -33.8831553], [-69.8644392, -33.881756], [-69.8661375, -33.8816046], [-69.8670416, -33.8813337], [-69.8683348, -33.8779393], [-69.8697735, -33.8755993], [-69.8696823, -33.8742364], [-69.8697778, -33.8729715], [-69.8696094, -33.8720139], [-69.8693444, -33.8687651], [-69.8700815, -33.8674476], [-69.87137, -33.8653541], [-69.8727283, -33.8631803], [-69.8733073, -33.8609521], [-69.8772726, -33.8594624], [-69.8818903, -33.8568181], [-69.8838508, -33.8553998], [-69.8849935, -33.8543511], [-69.8855181, -33.8532276], [-69.8858539, -33.8517735], [-69.8862677, -33.8508307], [-69.8875724, -33.8501717], [-69.8890286, -33.8494363], [-69.8913921, -33.849202], [-69.8925627, -33.848482], [-69.8940379, -33.8482824], [-69.8956429, -33.8486611], [-69.8965913, -33.8486923], [-69.8975934, -33.8478396], [-69.8982264, -33.847934], [-69.8989324, -33.8474439], [-69.8989699, -33.8468407], [-69.8990354, -33.8462232], [-69.899471, -33.8456966], [-69.8990565, -33.8450638], [-69.8990547, -33.8425278], [-69.8981942, -33.8404364], [-69.8982371, -33.8395987], [-69.8983659, -33.838098], [-69.8968274, -33.8375527], [-69.8957949, -33.8365803], [-69.897254, -33.8315896], [-69.8955292, -33.7997021], [-69.8948897, -33.7961804], [-69.8943919, -33.795123], [-69.8927011, -33.7942688], [-69.8929564, -33.7923786], [-69.8942503, -33.7906381], [-69.8956429, -33.7889315], [-69.8969347, -33.7863474], [-69.8977586, -33.7844249], [-69.8977957, -33.784398], [-69.8996169, -33.7830766], [-69.9001941, -33.7810916], [-69.90299, -33.7788408], [-69.9042989, -33.7741464], [-69.9041723, -33.7714281], [-69.9008589, -33.7657352], [-69.897872, -33.7603336], [-69.8966704, -33.7564802], [-69.8942671, -33.7541967], [-69.8911772, -33.750914], [-69.887744, -33.7437772], [-69.8827658, -33.7390666], [-69.8780154, -33.7348162], [-69.8780304, -33.733808], [-69.8765485, -33.7318952], [-69.8752764, -33.7304139], [-69.8740522, -33.7286248], [-69.873255, -33.7267554], [-69.8714644, -33.7255008], [-69.8688498, -33.7238375], [-69.8684839, -33.7222777], [-69.8672029, -33.7203288], [-69.8654809, -33.7176462], [-69.8642789, -33.7168588], [-69.8647514, -33.7149547], [-69.8664798, -33.7130467], [-69.8678091, -33.7112126], [-69.8688305, -33.7099819], [-69.8693691, -33.708196], [-69.8692731, -33.7073646], [-69.8696083, -33.7060326], [-69.8708014, -33.7043894], [-69.8714494, -33.7029453], [-69.8714193, -33.7009736], [-69.8718689, -33.6994419], [-69.8720481, -33.6977442], [-69.8728334, -33.6953046], [-69.8742196, -33.6930766], [-69.8756835, -33.6913344], [-69.8767033, -33.6900593], [-69.8774211, -33.6884748], [-69.8785283, -33.6880641], [-69.8803071, -33.6873098], [-69.8819433, -33.6866581], [-69.8836363, -33.6852199], [-69.8845183, -33.6842764], [-69.88478, -33.6832442], [-69.8844002, -33.6817372], [-69.883132, -33.6802123], [-69.8823939, -33.6774571], [-69.8817866, -33.675267], [-69.8813907, -33.6737884], [-69.882146, -33.6720884], [-69.8818564, -33.6691383], [-69.8816997, -33.6663559], [-69.8808575, -33.6642093], [-69.8804627, -33.6626859], [-69.8798865, -33.6607651], [-69.879599, -33.6586951], [-69.8781989, -33.6581968], [-69.876537, -33.6582879], [-69.8750307, -33.6574395], [-69.8735372, -33.6562508], [-69.8719805, -33.6545817], [-69.8708561, -33.6536931], [-69.8703765, -33.6519355], [-69.8728152, -33.6506397], [-69.8736348, -33.6497957], [-69.8756723, -33.64879], [-69.8787482, -33.6471109], [-69.8789521, -33.6459195], [-69.8768986, -33.6443377], [-69.8767172, -33.6429747], [-69.8759523, -33.6417555], [-69.8750221, -33.6409105], [-69.874373, -33.6387704], [-69.8741827, -33.637083], [-69.8740493, -33.6352732], [-69.8743108, -33.6337932], [-69.8747705, -33.6332786], [-69.8755832, -33.6320933], [-69.8764415, -33.630463], [-69.8757511, -33.6286939], [-69.875301, -33.6271773], [-69.8748694, -33.6239334], [-69.8761663, -33.6229513], [-69.877678, -33.6211734], [-69.8787632, -33.6200303], [-69.8807937, -33.6184369], [-69.8798533, -33.6167898], [-69.8789574, -33.61535], [-69.8786694, -33.6138869], [-69.8780648, -33.6124899], [-69.8772505, -33.6108959], [-69.8754444, -33.6080427], [-69.8750435, -33.6070564], [-69.8747533, -33.6051437], [-69.8743274, -33.6037278], [-69.8747855, -33.602769], [-69.8748939, -33.6020363], [-69.8745323, -33.6010627], [-69.8734407, -33.5997017], [-69.8721811, -33.5982464], [-69.871573, -33.597603], [-69.8704253, -33.5967611], [-69.8689919, -33.5961146], [-69.8672592, -33.5955341], [-69.8674507, -33.593749], [-69.8676535, -33.5930425], [-69.8674261, -33.5925586], [-69.8670323, -33.5921135], [-69.8670414, -33.5912466], [-69.8669261, -33.5903837], [-69.8663328, -33.5893296], [-69.8661712, -33.5884254], [-69.8660474, -33.5875184], [-69.8655222, -33.5862913], [-69.8653527, -33.585524], [-69.8654563, -33.5847951], [-69.8653497, -33.5830996], [-69.8660952, -33.581564], [-69.8663007, -33.5804706], [-69.8663602, -33.5797781], [-69.8665731, -33.5792204], [-69.8666627, -33.5782657], [-69.8670886, -33.5770671], [-69.8677517, -33.5756132], [-69.867984, -33.5744136], [-69.86833, -33.5735742], [-69.8687677, -33.572283], [-69.8689104, -33.5715956], [-69.8685912, -33.5687215], [-69.8687529, -33.5680481], [-69.8691432, -33.567318], [-69.8692319, -33.5666075], [-69.8690096, -33.5654389], [-69.8694356, -33.5643786], [-69.87034, -33.5627448], [-69.8711452, -33.5613457], [-69.8722449, -33.5593846], [-69.8728806, -33.5584034], [-69.8735243, -33.5575992], [-69.8738473, -33.5560292], [-69.8738421, -33.554895], [-69.8733741, -33.5532883], [-69.8726784, -33.5516566], [-69.8725266, -33.5501839], [-69.8723967, -33.548553], [-69.8720459, -33.5474952], [-69.8718695, -33.5460882], [-69.8716318, -33.5441926], [-69.8719974, -33.5431247], [-69.8720598, -33.5426913], [-69.872033, -33.5422397], [-69.8720223, -33.5419312], [-69.8720437, -33.5413052], [-69.8719686, -33.540961], [-69.8718292, -33.5405541], [-69.8717755, -33.5401964], [-69.8717326, -33.5397001], [-69.8716092, -33.5392216], [-69.8715234, -33.5388684], [-69.8713356, -33.5385241], [-69.8711371, -33.5382067], [-69.8706704, -33.5377729], [-69.8702091, -33.5374689], [-69.8698658, -33.5372274], [-69.8691201, -33.5368563], [-69.868809, -33.536664], [-69.8684979, -33.5364673], [-69.8681706, -33.536284], [-69.8672319, -33.5356177], [-69.8669046, -33.5353941], [-69.8665345, -33.5351795], [-69.866336, -33.5350633], [-69.8653919, -33.5344909], [-69.8650593, -33.5343255], [-69.8648715, -33.534236], [-69.8643297, -33.5339409], [-69.863922, -33.5337486], [-69.8635089, -33.5336145], [-69.8630637, -33.533525], [-69.8626103, -33.5333857], [-69.861905, -33.5332344], [-69.8614383, -33.5330555], [-69.861095, -33.5329348], [-69.8607034, -33.5327693], [-69.8602527, -33.5325502], [-69.8601025, -33.5324966], [-69.8598826, -33.5323714], [-69.8597378, -33.5322238], [-69.85955, -33.5320181], [-69.859212, -33.531562], [-69.8589063, -33.5311595], [-69.8585147, -33.5307168], [-69.8582089, -33.5303502], [-69.8579943, -33.530131], [-69.8576349, -33.5297688], [-69.8575008, -33.5296168], [-69.8573989, -33.5294469], [-69.8572379, -33.5290891], [-69.8570716, -33.5285883], [-69.8570234, -33.5282931], [-69.8569858, -33.5279399], [-69.8568517, -33.5274882], [-69.8567444, -33.5271618], [-69.8564977, -33.5268219], [-69.855811, -33.5261869], [-69.8553979, -33.5257039], [-69.8551297, -33.5253953], [-69.8546523, -33.5249258], [-69.8538423, -33.5243533], [-69.8533434, -33.5240358], [-69.8528338, -33.5237451], [-69.8524368, -33.5236065], [-69.8518896, -33.5234768], [-69.8515463, -33.523365], [-69.8508865, -33.5229983], [-69.8505035, -33.5227067], [-69.8500067, -33.5223812], [-69.8493415, -33.5219429], [-69.8489446, -33.5216656], [-69.8487461, -33.5215314], [-69.8484403, -33.5213347], [-69.8478502, -33.5210574], [-69.8474962, -33.5209366], [-69.8472172, -33.5208114], [-69.8464823, -33.5206728], [-69.8459995, -33.5205341], [-69.845742, -33.5204402], [-69.8447871, -33.5201808], [-69.8445672, -33.5200869], [-69.8442829, -33.5200019], [-69.8440307, -33.519908], [-69.8430812, -33.5196799], [-69.8428881, -33.5195994], [-69.8423892, -33.5193803], [-69.8417294, -33.5192282], [-69.841429, -33.5191567], [-69.8412198, -33.5190985], [-69.8409516, -33.5190136], [-69.8405975, -33.5189688], [-69.8403239, -33.5188973], [-69.8399699, -33.5187989], [-69.839707, -33.5187363], [-69.8393422, -33.5185932], [-69.8390043, -33.5184321], [-69.8386878, -33.5183114], [-69.8384035, -33.5181325], [-69.8380816, -33.517976], [-69.837749, -33.5177166], [-69.8375505, -33.5174482], [-69.8371857, -33.5170636], [-69.8368263, -33.5167147], [-69.836483, -33.5164956], [-69.8362684, -33.5163704], [-69.8360109, -33.5161646], [-69.8357481, -33.5159276], [-69.8356086, -33.5157979], [-69.8354155, -33.5155922], [-69.8352599, -33.5153551], [-69.8351393, -33.5150714], [-69.8351285, -33.5149783], [-69.8351365, -33.5148676], [-69.8351526, -33.514729], [-69.8351419, -33.5145456], [-69.8350453, -33.5142057], [-69.8350024, -33.5140939], [-69.8350024, -33.5138702], [-69.8348951, -33.5136645], [-69.8347664, -33.5134543], [-69.8345625, -33.5131501], [-69.8344928, -33.5128997], [-69.8343319, -33.5126], [-69.8342139, -33.5123808], [-69.8339993, -33.5121035], [-69.8338813, -33.5117681], [-69.8337954, -33.5116071], [-69.833715, -33.5113834], [-69.8336506, -33.5112403], [-69.8335433, -33.5110435], [-69.8334307, -33.5108467], [-69.8332965, -33.5106231], [-69.8333019, -33.510547], [-69.8332751, -33.510386], [-69.8332965, -33.5102071], [-69.8332322, -33.5100416], [-69.8332161, -33.509894], [-69.8332375, -33.5097464], [-69.8332322, -33.5094646], [-69.8331839, -33.5092678], [-69.8330712, -33.5091157], [-69.8329103, -33.5089547], [-69.8327172, -33.5087847], [-69.8325992, -33.5085253], [-69.8325938, -33.5081898], [-69.8325294, -33.5078991], [-69.8325187, -33.5076978], [-69.8325348, -33.5073937], [-69.832508, -33.5072103], [-69.8324382, -33.5068614], [-69.8323953, -33.5064857], [-69.8324329, -33.5061904], [-69.832449, -33.5060249], [-69.8324919, -33.5057521], [-69.8324382, -33.5055911], [-69.8324329, -33.5054434], [-69.832449, -33.5052958], [-69.8325509, -33.5051572], [-69.8326689, -33.505014], [-69.8327261, -33.5049162], [-69.8326367, -33.5046741], [-69.8326153, -33.5045265], [-69.8325831, -33.5043073], [-69.8325616, -33.5041015], [-69.8325616, -33.504021], [-69.8325938, -33.5038466], [-69.8326099, -33.5037392], [-69.8324543, -33.5035111], [-69.8323953, -33.5034216], [-69.8323095, -33.5032293], [-69.8322237, -33.5030369], [-69.8321164, -33.5028267], [-69.8320788, -33.5027417], [-69.8320252, -33.502603], [-69.8319447, -33.5023302], [-69.8318213, -33.502196], [-69.8316926, -33.5020036], [-69.8315853, -33.5016189], [-69.8315799, -33.5014131], [-69.8316765, -33.5011671], [-69.831773, -33.5009703], [-69.8317838, -33.5007422], [-69.831879, -33.5004095], [-69.8319072, -33.5002904], [-69.8321003, -33.5000891], [-69.8321593, -33.4998878], [-69.8321884, -33.4996242], [-69.8321217, -33.4992973], [-69.8320574, -33.4990826], [-69.8319876, -33.4988723], [-69.8319715, -33.4987068], [-69.831875, -33.4985323], [-69.8317891, -33.4984071], [-69.8317677, -33.4982147], [-69.8318428, -33.4979597], [-69.8318803, -33.4977719], [-69.8319072, -33.4976198], [-69.8318911, -33.4974408], [-69.8318374, -33.4972664], [-69.8317623, -33.4970561], [-69.8317623, -33.4968548], [-69.8317248, -33.4967206], [-69.8316819, -33.4966177], [-69.8316819, -33.4965327], [-69.8318321, -33.4964343], [-69.8319635, -33.4962844], [-69.8320144, -33.4960854], [-69.8321003, -33.4959333], [-69.8321271, -33.4957275], [-69.8321593, -33.4955709], [-69.8323202, -33.4954501], [-69.8324382, -33.4952801], [-69.8324651, -33.4951459], [-69.8324382, -33.4949401], [-69.8324221, -33.4948462], [-69.8324865, -33.4947075], [-69.8325402, -33.4945241], [-69.8325723, -33.4943496], [-69.8324865, -33.4940544], [-69.8324168, -33.4938575], [-69.8323524, -33.4936473], [-69.8322988, -33.4932446], [-69.8322076, -33.4928062], [-69.8320895, -33.4925333], [-69.8320198, -33.4923544], [-69.8319715, -33.4922023], [-69.8320198, -33.4919965], [-69.8320574, -33.4917594], [-69.8320198, -33.4916251], [-69.8319286, -33.4914149], [-69.8319072, -33.4912807], [-69.8318964, -33.4911688], [-69.8319984, -33.4909317], [-69.8321003, -33.4907841], [-69.8321646, -33.490549], [-69.8321271, -33.490377], [-69.832052, -33.4900548], [-69.8319286, -33.4898356], [-69.8318696, -33.4896433], [-69.8318052, -33.489348], [-69.8317301, -33.4891153], [-69.8316121, -33.488923], [-69.8314297, -33.4886948], [-69.8312634, -33.4885651], [-69.8311561, -33.4884487], [-69.8309952, -33.48831], [-69.8308396, -33.4880103], [-69.830786, -33.4877776], [-69.8306572, -33.4875495], [-69.8305231, -33.4873213], [-69.8304963, -33.487035], [-69.8303998, -33.4866189], [-69.8303783, -33.4864354], [-69.8304373, -33.4862789], [-69.8304427, -33.4860686], [-69.8303032, -33.485733], [-69.8301852, -33.4854198], [-69.8300779, -33.4851872], [-69.8300028, -33.4848203], [-69.8299545, -33.484534], [-69.8298365, -33.4842924], [-69.829756, -33.4839613], [-69.8297399, -33.4836705], [-69.8297936, -33.4834915], [-69.8298633, -33.4833036], [-69.8298526, -33.4831515], [-69.8298365, -33.4828964], [-69.8298043, -33.482628], [-69.8297346, -33.4823416], [-69.8297185, -33.48193], [-69.829697, -33.4816034], [-69.829697, -33.4813349], [-69.829756, -33.480883], [-69.8298204, -33.4805609], [-69.829756, -33.4800732], [-69.8296166, -33.479572], [-69.8294664, -33.4790351], [-69.829284, -33.478534], [-69.8290479, -33.4780507], [-69.8287851, -33.4775764], [-69.8285598, -33.4773706], [-69.8284149, -33.4771335], [-69.828195, -33.4767397], [-69.8280072, -33.4763594], [-69.8278195, -33.4759925], [-69.8275352, -33.4756256], [-69.8273099, -33.4753795], [-69.8271382, -33.4752631], [-69.8268968, -33.4751468], [-69.8266286, -33.4750573], [-69.8262584, -33.4749633], [-69.825958, -33.4748738], [-69.8256576, -33.4748067], [-69.8254913, -33.4747933], [-69.8251694, -33.4746635], [-69.8248959, -33.4745517], [-69.8245633, -33.4744935], [-69.8243594, -33.4744264], [-69.8242199, -33.4743592], [-69.8238659, -33.4742742], [-69.8235548, -33.4741847], [-69.8233026, -33.4741176], [-69.8228413, -33.4739878], [-69.8225302, -33.4738626], [-69.8222029, -33.4737373], [-69.821645, -33.4735583], [-69.8212856, -33.4733972], [-69.8207545, -33.4732182], [-69.8203898, -33.473075], [-69.8199821, -33.4728871], [-69.8197353, -33.4728602], [-69.8191774, -33.472726], [-69.8185444, -33.4726275], [-69.8179758, -33.4725291], [-69.8175359, -33.4723591], [-69.8173428, -33.4721264], [-69.8171496, -33.4717505], [-69.8171175, -33.4714731], [-69.8169673, -33.4711061], [-69.8166776, -33.4707302], [-69.8164415, -33.4705423], [-69.8160124, -33.4702648], [-69.8156262, -33.4700411], [-69.8153043, -33.4697502], [-69.8151123, -33.4693047], [-69.815594, -33.4686002], [-69.8159587, -33.4682064], [-69.8161519, -33.4678663], [-69.8163343, -33.467562], [-69.8165166, -33.4673382], [-69.8166347, -33.4670966], [-69.8167527, -33.4667475], [-69.8167981, -33.4665023], [-69.8169243, -33.4661926], [-69.8169887, -33.4658704], [-69.8171175, -33.4655393], [-69.8172248, -33.4654229], [-69.8177934, -33.4648054], [-69.8181045, -33.4644384], [-69.8183835, -33.4640177], [-69.8186731, -33.4634718], [-69.8190379, -33.4629437], [-69.819274, -33.4626662], [-69.819628, -33.4624067], [-69.8199821, -33.4620576], [-69.820497, -33.4617801], [-69.8208082, -33.46144], [-69.821012, -33.4611446], [-69.82113, -33.4606076], [-69.8212266, -33.4602317], [-69.821173, -33.4596588], [-69.8211193, -33.4591397], [-69.8210228, -33.4581551], [-69.8210228, -33.4576628], [-69.8210549, -33.4570093], [-69.82113, -33.4564365], [-69.821232, -33.4560068], [-69.8213382, -33.4556597], [-69.821409, -33.4554474], [-69.8215699, -33.455152], [-69.8217738, -33.4548611], [-69.8219991, -33.4546194], [-69.8222137, -33.4543956], [-69.8221243, -33.4540559], [-69.8219347, -33.45376], [-69.8217416, -33.4535004], [-69.8214197, -33.4531066], [-69.821291, -33.4526948], [-69.8209369, -33.4524352], [-69.820497, -33.4520682], [-69.8202215, -33.4517013], [-69.8199713, -33.4514998], [-69.8197246, -33.4513789], [-69.8194403, -33.4512223], [-69.8191506, -33.4510298], [-69.8189682, -33.4508239], [-69.8187931, -33.4505343], [-69.818598, -33.4500809], [-69.8184478, -33.4496199], [-69.8183245, -33.4493693], [-69.8181268, -33.4489639], [-69.8179704, -33.4486889], [-69.8177994, -33.4483952], [-69.8174822, -33.4478788], [-69.8173645, -33.4477355], [-69.8171657, -33.4474536], [-69.8168492, -33.4471223], [-69.8165649, -33.446894], [-69.8163825, -33.4467508], [-69.8161733, -33.4465897], [-69.8159695, -33.446339], [-69.8158139, -33.4460928], [-69.815771, -33.4458869], [-69.8155993, -33.4455109], [-69.8154545, -33.4452424], [-69.8152292, -33.4450051], [-69.8150414, -33.4447187], [-69.8149931, -33.4445307], [-69.8148483, -33.4441994], [-69.8146659, -33.443895], [-69.8144996, -33.4436578], [-69.8143119, -33.4433892], [-69.8142529, -33.4431654], [-69.8142636, -33.4428655], [-69.8143548, -33.4426014], [-69.8143762, -33.4424044], [-69.8144245, -33.4421403], [-69.8144996, -33.4418852], [-69.814505, -33.4416927], [-69.8145372, -33.4414868], [-69.8145479, -33.4411869], [-69.8146123, -33.4409541], [-69.8146445, -33.440793], [-69.8147517, -33.4405871], [-69.8148161, -33.4403364], [-69.8148483, -33.4400991], [-69.814902, -33.4399111], [-69.8150253, -33.4397365], [-69.8151594, -33.4395978], [-69.8152936, -33.4394859], [-69.815594, -33.439262], [-69.8157549, -33.4390114], [-69.8160607, -33.438792], [-69.8162377, -33.4386577], [-69.8164737, -33.4385055], [-69.8166668, -33.4383891], [-69.8168492, -33.4382459], [-69.8172194, -33.437834], [-69.8174393, -33.4376281], [-69.8176003, -33.4374535], [-69.8177558, -33.4372208], [-69.8179007, -33.4369566], [-69.8180562, -33.4367149], [-69.8182654, -33.4364597], [-69.8184639, -33.4362672], [-69.8186356, -33.4360658], [-69.8187965, -33.435833], [-69.8189682, -33.4355734], [-69.8192686, -33.435157], [-69.8193866, -33.4350138], [-69.8194724, -33.4348123], [-69.8196012, -33.4345169], [-69.8196441, -33.4341766], [-69.8197782, -33.4338812], [-69.8200464, -33.4334066], [-69.8201591, -33.4331515], [-69.8202127, -33.4330082], [-69.8201323, -33.4327978], [-69.8200893, -33.4326545], [-69.8200196, -33.43248], [-69.8198909, -33.4322606], [-69.8198158, -33.43218], [-69.8196441, -33.4319427], [-69.8194993, -33.4317592], [-69.8193491, -33.4315174], [-69.8192686, -33.4313921], [-69.8191935, -33.4312712], [-69.8191506, -33.4311593], [-69.8191023, -33.4309936], [-69.8190862, -33.4308549], [-69.819054, -33.4307474], [-69.8189467, -33.4306265], [-69.8187643, -33.4304878], [-69.8185927, -33.4303311], [-69.8183674, -33.4301788], [-69.8181474, -33.4300624], [-69.8179811, -33.4299326], [-69.8178417, -33.4298162], [-69.8176861, -33.4296103], [-69.817493, -33.4294043], [-69.8173696, -33.4292745], [-69.8171604, -33.4291268], [-69.8168587, -33.4289124], [-69.8165059, -33.4287641], [-69.8162484, -33.4286164], [-69.8159802, -33.4284552], [-69.815653, -33.4283343], [-69.8154599, -33.4282627], [-69.8150146, -33.4282135], [-69.8145801, -33.4281776], [-69.8143923, -33.4281374], [-69.8141778, -33.4280075], [-69.8139042, -33.4278732], [-69.8136789, -33.4277613], [-69.8133677, -33.4276896], [-69.8131102, -33.4276583], [-69.8128688, -33.4277076], [-69.8125845, -33.4277344], [-69.8123378, -33.4277255], [-69.8119623, -33.427627], [-69.8115546, -33.4274792], [-69.8112756, -33.4273001], [-69.8109323, -33.4270852], [-69.8106211, -33.4268301], [-69.8102188, -33.4265032], [-69.8099291, -33.4263241], [-69.8095965, -33.4261271], [-69.8093391, -33.4259481], [-69.8089689, -33.4257421], [-69.8085237, -33.4255048], [-69.8081803, -33.4252362], [-69.8079979, -33.4251153], [-69.8077565, -33.4249183], [-69.8073059, -33.424681], [-69.8070967, -33.424596], [-69.8068339, -33.4245736], [-69.8065656, -33.4245333], [-69.8063403, -33.4244527], [-69.8061311, -33.4243766], [-69.8058039, -33.4242646], [-69.8055679, -33.4241527], [-69.8052621, -33.4241482], [-69.804849, -33.4240945], [-69.8046291, -33.4240497], [-69.8044735, -33.4240273], [-69.8042589, -33.4240721], [-69.8040658, -33.4241169], [-69.803685, -33.4242467], [-69.8033953, -33.4243094], [-69.8031646, -33.4244885], [-69.8028964, -33.4246407], [-69.8026979, -33.4247124], [-69.8024833, -33.4247347], [-69.8022741, -33.4247437], [-69.802022, -33.4247168], [-69.8018557, -33.4245825], [-69.801625, -33.4244751], [-69.8011369, -33.4243408], [-69.8009116, -33.4243363], [-69.8005629, -33.4243228], [-69.799549, -33.4244303], [-69.7988999, -33.4244661], [-69.7985244, -33.4245154], [-69.798283, -33.4245557], [-69.7977144, -33.4245422], [-69.7971833, -33.4244348], [-69.7966595, -33.4242432], [-69.7963733, -33.4239557], [-69.7962177, -33.4236557], [-69.796046, -33.4232304], [-69.7958636, -33.4227827], [-69.7957403, -33.4224737], [-69.7955579, -33.4221245], [-69.7955203, -33.4218021], [-69.7955203, -33.4214977], [-69.7955525, -33.4213096], [-69.7956491, -33.4211126], [-69.795751, -33.4207902], [-69.7959495, -33.4205082], [-69.7961104, -33.420244], [-69.7962606, -33.4200604], [-69.796502, -33.4198589], [-69.7966254, -33.419747], [-69.7968185, -33.4195142], [-69.7970009, -33.4193485], [-69.7972047, -33.4191202], [-69.7973979, -33.4189276], [-69.7975427, -33.4187799], [-69.79765, -33.4185381], [-69.7976607, -33.4183724], [-69.7976446, -33.4181888], [-69.7976768, -33.417853], [-69.7976875, -33.4175575], [-69.7976714, -33.4173784], [-69.7975105, -33.4170247], [-69.7974891, -33.4168053], [-69.7975051, -33.4166844], [-69.7974944, -33.4165097], [-69.7974247, -33.4162008], [-69.797312, -33.4158515], [-69.7972637, -33.41565], [-69.7972637, -33.4153142], [-69.7973013, -33.4150366], [-69.7973496, -33.4147814], [-69.7974676, -33.4143381], [-69.7975105, -33.4139485], [-69.7975642, -33.4135992], [-69.7976339, -33.4134157], [-69.7976446, -33.4130753], [-69.7976822, -33.4126634], [-69.7976768, -33.4123813], [-69.7976285, -33.412144], [-69.7976553, -33.4119335], [-69.797827, -33.4116245], [-69.7980791, -33.411226], [-69.7981328, -33.4110021], [-69.7981703, -33.4106215], [-69.7981542, -33.4100259], [-69.7981757, -33.4097125], [-69.798165, -33.4094572], [-69.7981596, -33.4092244], [-69.7981703, -33.4090184], [-69.7982562, -33.4087586], [-69.7983098, -33.4086333], [-69.7984278, -33.4084273], [-69.7985029, -33.4083377], [-69.79868, -33.4081451], [-69.7988892, -33.407966], [-69.7989482, -33.4078854], [-69.7990125, -33.4077376], [-69.7990769, -33.4074958], [-69.7991628, -33.4073346], [-69.7992379, -33.4072003], [-69.7992432, -33.4070256], [-69.7992164, -33.4068555], [-69.7993076, -33.4065509], [-69.7994363, -33.4063942], [-69.7995275, -33.4062867], [-69.7995544, -33.4061121], [-69.799549, -33.4059688], [-69.799549, -33.4058389], [-69.7996134, -33.4056464], [-69.7996563, -33.4054941], [-69.7997636, -33.4053553], [-69.7998494, -33.4051851], [-69.7999996, -33.4049298], [-69.8001713, -33.4047283], [-69.8003161, -33.4045134], [-69.8005146, -33.4042492], [-69.8007774, -33.404079], [-69.8009706, -33.4040163], [-69.8012817, -33.4039267], [-69.8014748, -33.4038819], [-69.8017001, -33.4037924], [-69.8018986, -33.4036715], [-69.8022044, -33.4034834], [-69.802435, -33.403349], [-69.8026872, -33.4031699], [-69.8028213, -33.4030176], [-69.8028696, -33.4026907], [-69.8029125, -33.4024175], [-69.8029286, -33.4022115], [-69.8030305, -33.4020637], [-69.8031968, -33.4018264], [-69.8034275, -33.4016025], [-69.803583, -33.4012487], [-69.803862, -33.4010292], [-69.8039424, -33.4009217], [-69.8040175, -33.400671], [-69.8042911, -33.4002231], [-69.8045486, -33.3999007], [-69.8047096, -33.3995379], [-69.8048866, -33.3992513], [-69.8052138, -33.3988482], [-69.8055089, -33.3984944], [-69.8057342, -33.3982078], [-69.8058951, -33.3979435], [-69.8063779, -33.3973345], [-69.8066515, -33.3970657], [-69.8071214, -33.3966238], [-69.8073757, -33.3963805], [-69.807837, -33.3959864], [-69.8082233, -33.3958251], [-69.808631, -33.3956191], [-69.8090172, -33.3954758], [-69.8097575, -33.3952116], [-69.8100364, -33.3951399], [-69.8102242, -33.3950459], [-69.8103905, -33.3948309], [-69.8105085, -33.3946383], [-69.810648, -33.3944323], [-69.8108196, -33.3942352], [-69.811061, -33.3939441], [-69.8115492, -33.3934962], [-69.8121017, -33.3930573], [-69.8123163, -33.3928154], [-69.8124665, -33.3926587], [-69.8126435, -33.392475], [-69.812842, -33.3922959], [-69.8130566, -33.3921615], [-69.8132765, -33.392054], [-69.8137647, -33.3917853], [-69.8141402, -33.391633], [-69.814285, -33.3915658], [-69.8145104, -33.3915076], [-69.8146713, -33.3914762], [-69.8149127, -33.3914046], [-69.8151219, -33.3912792], [-69.815315, -33.3910821], [-69.8153955, -33.3909298], [-69.7950912, -33.3967657], [-69.7945547, -33.3963178], [-69.7940397, -33.3958431], [-69.7935677, -33.3951802], [-69.7931922, -33.3947592], [-69.7929132, -33.3945174], [-69.7924197, -33.3942038], [-69.7914648, -33.3940247], [-69.7905743, -33.3938008], [-69.7898018, -33.3936843], [-69.7890294, -33.3934604], [-69.7882033, -33.3931827], [-69.7873557, -33.3927438], [-69.7865832, -33.3923765], [-69.7859609, -33.3919376], [-69.7851992, -33.3912209], [-69.78477, -33.3905491], [-69.7839546, -33.3898593], [-69.7829515, -33.3886788], [-69.7826243, -33.3883723], [-69.7819913, -33.38779], [-69.7813904, -33.3872973], [-69.780972, -33.3869838], [-69.7796846, -33.3855236], [-69.7787726, -33.3844485], [-69.7778928, -33.3835975], [-69.7774208, -33.383042], [-69.777056, -33.3823164], [-69.7768843, -33.3818326], [-69.7767556, -33.3810801], [-69.7767019, -33.3803275], [-69.7763264, -33.3792345], [-69.775908, -33.3785088], [-69.7754467, -33.3779444], [-69.7749961, -33.377156], [-69.7747386, -33.3765019], [-69.7745025, -33.375821], [-69.7741485, -33.3746115], [-69.773891, -33.3736528], [-69.7734726, -33.3722641], [-69.7732043, -33.3714397], [-69.772861, -33.3700689], [-69.7727108, -33.3690116], [-69.7725123, -33.3676452], [-69.7725016, -33.3673136], [-69.7725606, -33.3670269], [-69.7726303, -33.3667267], [-69.7726786, -33.3662742], [-69.7727752, -33.3658262], [-69.772684, -33.36519], [-69.7727001, -33.3647957], [-69.772625, -33.3644597], [-69.7725749, -33.3641032], [-69.7723943, -33.3636533], [-69.7721583, -33.3633396], [-69.7718364, -33.3630081], [-69.7715575, -33.3627527], [-69.7713965, -33.3624525], [-69.7713429, -33.3621837], [-69.7712249, -33.3618566], [-69.7710478, -33.3612428], [-69.7709781, -33.3609605], [-69.7709727, -33.3607365], [-69.770844, -33.3604587], [-69.7706509, -33.3600599], [-69.7706187, -33.3598942], [-69.7705972, -33.3596522], [-69.7706348, -33.3593655], [-69.770447, -33.3590473], [-69.7703612, -33.3587023], [-69.7703827, -33.3583899], [-69.7703376, -33.3565358], [-69.7702335, -33.3553564], [-69.7708215, -33.3542891], [-69.7707142, -33.3539305], [-69.7705576, -33.3523543], [-69.7710142, -33.3483338], [-69.7735892, -33.3421675], [-69.7759924, -33.3338495], [-69.7782403, -33.328638], [-69.7804556, -33.3220883], [-69.7811008, -33.3208082], [-69.7824451, -33.3194554], [-69.7838889, -33.316494], [-69.7860865, -33.3134601], [-69.788352, -33.3108993], [-69.7902755, -33.3089475], [-69.7911505, -33.3076617], [-69.7918028, -33.3058773], [-69.7922153, -33.3051528], [-69.7926058, -33.3039208], [-69.793329, -33.3027159], [-69.7934727, -33.3018046], [-69.7949335, -33.3002327], [-69.7956121, -33.2996274], [-69.7957918, -33.2986262], [-69.7960643, -33.2980778], [-69.796303, -33.2963686], [-69.7970143, -33.295357], [-69.7972488, -33.2944504], [-69.7975298, -33.2933308], [-69.798136, -33.2920277], [-69.798474, -33.2909103], [-69.7992567, -33.2891696], [-69.7997459, -33.2882664], [-69.8007444, -33.287578], [-69.800969, -33.2876341], [-69.8048131, -33.2887104], [-69.8076477, -33.2897615], [-69.8087603, -33.2902354], [-69.8098503, -33.2898902], [-69.8105171, -33.2894982], [-69.8114619, -33.2892876], [-69.8136419, -33.2893655], [-69.8152147, -33.2890171], [-69.8166079, -33.2880548], [-69.8179726, -33.2871068], [-69.8209718, -33.2839767], [-69.8225425, -33.2821636], [-69.8243788, -33.2806097], [-69.8266892, -33.280825], [-69.8276629, -33.2806093], [-69.8283125, -33.2800276], [-69.8290726, -33.2786845], [-69.8296691, -33.2778494], [-69.8302678, -33.2774696], [-69.8312967, -33.2770561], [-69.83147, -33.2765941], [-69.8314866, -33.2757151], [-69.8323111, -33.2747647], [-69.8328379, -33.2741364], [-69.8346511, -33.2732304], [-69.8362325, -33.2728133], [-69.8377523, -33.2723267], [-69.8396577, -33.2720033], [-69.8405375, -33.2718468], [-69.843121, -33.2740768], [-69.8447582, -33.275185], [-69.8463149, -33.2757855], [-69.847677, -33.2758335], [-69.8498538, -33.2758577], [-69.8518725, -33.2773579], [-69.8531176, -33.2779674], [-69.8543685, -33.2786087], [-69.8554918, -33.2794576], [-69.8569279, -33.2802335], [-69.8579863, -33.2817165], [-69.858894, -33.2830475], [-69.8595109, -33.283439], [-69.8609893, -33.2823816], [-69.8614641, -33.2819609], [-69.8624468, -33.2818614], [-69.8635538, -33.2812955], [-69.8652487, -33.2805236], [-69.8668269, -33.2796016], [-69.8677726, -33.2793747], [-69.8683445, -33.2793343], [-69.8691057, -33.2791424], [-69.8698996, -33.278749], [-69.870663, -33.2780768], [-69.8715894, -33.277527], [-69.8719636, -33.2772491], [-69.8727696, -33.2770157], [-69.8735522, -33.2768681], [-69.8745801, -33.2761802], [-69.875522, -33.2762367], [-69.877243, -33.2766022], [-69.8786924, -33.2768094], [-69.880232, -33.2766847], [-69.8808776, -33.276506], [-69.8820446, -33.2765878], [-69.8834823, -33.2773601], [-69.8848406, -33.2781647], [-69.8857568, -33.2785894], [-69.8867449, -33.2787499], [-69.8874579, -33.2782889], [-69.8883307, -33.2774664], [-69.8893853, -33.2766587], [-69.8900038, -33.2762192], [-69.8908101, -33.2760003], [-69.8929596, -33.2755386], [-69.893437, -33.2754354], [-69.8936516, -33.2753861], [-69.894129, -33.2753592], [-69.8945099, -33.2753323], [-69.8949391, -33.2753053], [-69.8951805, -33.2752695], [-69.8956467, -33.2751881], [-69.8959315, -33.2750407], [-69.896248, -33.2750318], [-69.8966879, -33.2749466], [-69.8969024, -33.2748927], [-69.8972511, -33.2747761], [-69.8974872, -33.2747089], [-69.8978466, -33.2745564], [-69.8979324, -33.2745384], [-69.8981899, -33.2744487], [-69.8985225, -33.2743725], [-69.8988122, -33.2742828], [-69.8989838, -33.274229], [-69.8991984, -33.2740989], [-69.8996007, -33.273915], [-69.8997831, -33.2737984], [-69.8999441, -33.2737625], [-69.900282, -33.2736639], [-69.9006951, -33.2735428], [-69.9009918, -33.2734412], [-69.9012798, -33.2734262], [-69.901489, -33.2734351], [-69.9019396, -33.2734441], [-69.902445, -33.2734708], [-69.9027336, -33.273462], [-69.9032968, -33.2734306], [-69.9035651, -33.2733768], [-69.9038279, -33.2732692], [-69.9042302, -33.2731885], [-69.9043965, -33.2731571], [-69.9046487, -33.2730943], [-69.9048686, -33.2729777], [-69.9050885, -33.272861], [-69.9053568, -33.2727086], [-69.9054962, -33.2725695], [-69.905684, -33.2724081], [-69.9058557, -33.272287], [-69.9059093, -33.2722331], [-69.9061775, -33.2720582], [-69.9064297, -33.271982], [-69.9066603, -33.2718385], [-69.9068856, -33.2716994], [-69.9071002, -33.2715873], [-69.907288, -33.2714662], [-69.9074972, -33.2712868], [-69.9076366, -33.2711119], [-69.9077976, -33.2709235], [-69.9079639, -33.2707665], [-69.9081302, -33.2706544], [-69.908393, -33.2705737], [-69.9086398, -33.2705378], [-69.9088973, -33.2704391], [-69.9174803, -33.2447489], [-69.9179363, -33.2448701], [-69.9182206, -33.2448925], [-69.9185586, -33.2450069], [-69.9188054, -33.2450877], [-69.9190736, -33.2452021], [-69.9192774, -33.2452918], [-69.9194706, -33.245377], [-69.9196905, -33.2454802], [-69.9199104, -33.2455655], [-69.9201036, -33.2456776], [-69.9203932, -33.2458167], [-69.9206668, -33.2459872], [-69.9208975, -33.2460904], [-69.9211121, -33.2461981], [-69.9214044, -33.246382], [-69.9216914, -33.2465749], [-69.9212515, -33.2468441], [-69.9209726, -33.2470415], [-69.9208009, -33.2471581], [-69.9205542, -33.2473286], [-69.9203718, -33.2474991], [-69.9200606, -33.247867], [-69.9196959, -33.2482797], [-69.9194491, -33.2486745], [-69.9190843, -33.2492218], [-69.9190199, -33.2493026], [-69.9189878, -33.2494013], [-69.9189234, -33.2495807], [-69.918859, -33.2497602], [-69.9186659, -33.2500293], [-69.9185264, -33.2503793], [-69.9183655, -33.2507381], [-69.9183118, -33.2508638], [-69.9182582, -33.2510253], [-69.9182153, -33.2512496], [-69.9181187, -33.2515457], [-69.9179363, -33.2519853], [-69.9178076, -33.2523442], [-69.9177325, -33.2526133], [-69.9175501, -33.2529543], [-69.9175179, -33.2532952], [-69.9175072, -33.2535554], [-69.9173141, -33.2540848], [-69.9171209, -33.2544436], [-69.9169064, -33.2547397], [-69.9165416, -33.2552152], [-69.9162197, -33.2555472], [-69.9159569, -33.2558298], [-69.9157959, -33.2559285], [-69.9156296, -33.2560989], [-69.915576, -33.2562604], [-69.915576, -33.2565834], [-69.9156028, -33.2568077], [-69.9156404, -33.2571711], [-69.9156618, -33.2574671], [-69.9158227, -33.2578125], [-69.915989, -33.2582118], [-69.9161232, -33.2584405], [-69.9161393, -33.2585975], [-69.9162197, -33.2588712], [-69.9163485, -33.2591986], [-69.916445, -33.2594319], [-69.9165899, -33.2595979], [-69.9166864, -33.2597055], [-69.9167776, -33.2599791], [-69.9167508, -33.260172], [-69.9166971, -33.2602976], [-69.916606, -33.2606116], [-69.916606, -33.2607282], [-69.9167293, -33.2608763], [-69.9168634, -33.2610781], [-69.9170405, -33.2612531], [-69.9171746, -33.2614684], [-69.9173462, -33.2618631], [-69.9173677, -33.2620694], [-69.9174267, -33.2624776], [-69.9174964, -33.2627871], [-69.9175662, -33.2629396], [-69.9176627, -33.2631101], [-69.9176789, -33.2633792], [-69.9177647, -33.2637739], [-69.9178291, -33.2640072], [-69.9177808, -33.2642898], [-69.9178237, -33.2644647], [-69.9177486, -33.2647607], [-69.9176788, -33.2650029], [-69.9176949, -33.2651599], [-69.9176842, -33.2654515], [-69.9176627, -33.2656623], [-69.9174643, -33.2660166], [-69.9173141, -33.2664293], [-69.9170887, -33.2672905], [-69.9173462, -33.2673847], [-69.917711, -33.2675103], [-69.9179256, -33.2675462], [-69.9181616, -33.2675462], [-69.9183977, -33.2675103], [-69.9188268, -33.2675103], [-69.9191862, -33.2675192], [-69.9193311, -33.2675103], [-69.9198139, -33.2676], [-69.920302, -33.2676448], [-69.9207097, -33.2677704], [-69.9212301, -33.2678825], [-69.921611, -33.2680081], [-69.9220723, -33.2680799], [-69.9224961, -33.2681023], [-69.9228287, -33.2681606], [-69.9233705, -33.2683131], [-69.9236709, -33.2684342], [-69.9238801, -33.2685284], [-69.9241322, -33.2686854], [-69.9242663, -33.2687975], [-69.9244809, -33.2689366], [-69.9246419, -33.2691339], [-69.9246848, -33.2693358], [-69.9246579, -33.2695466], [-69.9246526, -33.2696766], [-69.9247384, -33.2700848], [-69.9247706, -33.2702821], [-69.9248564, -33.2704526], [-69.9251568, -33.2708024], [-69.925366, -33.2709953], [-69.9258757, -33.271363], [-69.9262619, -33.2716501], [-69.9265355, -33.2718743], [-69.9267983, -33.272112], [-69.9270773, -33.2723677], [-69.9272972, -33.272583], [-69.9275011, -33.2727444], [-69.9277908, -33.2729328], [-69.9279892, -33.2730763], [-69.9281824, -33.2731929], [-69.9284023, -33.273323], [-69.9286544, -33.2735248], [-69.9289495, -33.2738343], [-69.9291426, -33.2739644], [-69.9294162, -33.274081], [-69.9296576, -33.2742065], [-69.9300706, -33.2744173], [-69.9303281, -33.2744756], [-69.9306178, -33.2744891], [-69.9311757, -33.2746461], [-69.9319267, -33.2748613], [-69.932828, -33.2750048], [-69.9333, -33.2750945], [-69.9344802, -33.275256], [-69.9349308, -33.2753816], [-69.9361325, -33.2758839], [-69.9366689, -33.276153], [-69.9368191, -33.2762785], [-69.9370551, -33.2763682], [-69.9373985, -33.2766194], [-69.9375701, -33.2768257], [-69.9378598, -33.2770679], [-69.9382246, -33.2774715], [-69.938702, -33.2774895], [-69.9388254, -33.2777092], [-69.938997, -33.2780411], [-69.9393565, -33.278512], [-69.9394637, -33.2787362], [-69.9395818, -33.2790412], [-69.9397373, -33.2794089], [-69.9399841, -33.2800099], [-69.9400807, -33.2803238], [-69.940424, -33.2810324], [-69.9406171, -33.2813552], [-69.9407566, -33.2815077], [-69.9409068, -33.2817768], [-69.9411428, -33.2822522], [-69.9412608, -33.2824674], [-69.941411, -33.2827634], [-69.9417007, -33.2832477], [-69.9419046, -33.2835258], [-69.9421406, -33.2838217], [-69.9423391, -33.2840818], [-69.9424893, -33.2842209], [-69.9428004, -33.2844809], [-69.9430311, -33.2846379], [-69.9432725, -33.2846289], [-69.9434602, -33.28462], [-69.9436158, -33.2845706], [-69.9437928, -33.2845034], [-69.9441308, -33.2843016], [-69.9443615, -33.2840998], [-69.9445616, -33.283892], [-69.9447209, -33.2837859], [-69.9449676, -33.2836244], [-69.9451071, -33.2835616], [-69.9452734, -33.2834764], [-69.9454397, -33.2834047], [-69.9456596, -33.2833509], [-69.9458313, -33.2832612], [-69.9459976, -33.2831625], [-69.9461854, -33.2831042], [-69.9465072, -33.283019], [-69.9467003, -33.2829876], [-69.9469525, -33.2829428], [-69.9472368, -33.2829383], [-69.9475104, -33.2829383], [-69.9478751, -33.2829069], [-69.9482721, -33.2828621], [-69.9485081, -33.2828127], [-69.9487656, -33.2826872], [-69.9489695, -33.2825437], [-69.9493557, -33.2822701], [-69.9495971, -33.2820504], [-69.9496883, -33.282149], [-69.9498332, -33.2824495], [-69.9499619, -33.2827365], [-69.9500156, -33.2830414], [-69.9500692, -33.2832567], [-69.9500585, -33.2835258], [-69.9501228, -33.2839114], [-69.9502838, -33.284602], [-69.9504447, -33.2849339], [-69.95067, -33.2852478], [-69.9511528, -33.2857769], [-69.9515069, -33.2864406], [-69.9516785, -33.2868442], [-69.9518502, -33.2871043], [-69.9520648, -33.2873554], [-69.9522472, -33.2875079], [-69.9525583, -33.2877052], [-69.9528802, -33.2879832], [-69.9535024, -33.2882792], [-69.953996, -33.2884496], [-69.9543393, -33.2885123], [-69.9546611, -33.2885931], [-69.9547148, -33.2885931], [-69.9555516, -33.2886558], [-69.9561342, -33.2886005], [-69.9565601, -33.2886917], [-69.9569357, -33.2887724], [-69.9574506, -33.2890774], [-69.9576652, -33.2892388], [-69.9581266, -33.2894361], [-69.9586201, -33.2896334], [-69.9589849, -33.2898307], [-69.9592316, -33.290028], [-69.9594355, -33.2901625], [-69.9597359, -33.2903957], [-69.9601007, -33.2907275], [-69.9602938, -33.2909338], [-69.9605727, -33.2912566], [-69.9608624, -33.2915346], [-69.9611092, -33.2917768], [-69.961372, -33.2921848], [-69.9615705, -33.2923552], [-69.9616724, -33.2924987], [-69.9617851, -33.2926377], [-69.9619836, -33.2929471], [-69.9621606, -33.2932655], [-69.962343, -33.2935614], [-69.9626327, -33.2938394], [-69.9630028, -33.2941892], [-69.9632013, -33.2943506], [-69.9634588, -33.2945524], [-69.9636412, -33.2947541], [-69.9637592, -33.2948887], [-69.9638665, -33.2950142], [-69.9642259, -33.2954222], [-69.9643815, -33.2956644], [-69.9644297, -33.2957675], [-69.9644941, -33.2959558], [-69.9645853, -33.2962204], [-69.9647838, -33.2964759], [-69.9650252, -33.2966732], [-69.9651861, -33.2967898], [-69.9654651, -33.2970364], [-69.9656045, -33.2971709], [-69.9659264, -33.2975207], [-69.9661517, -33.297839], [-69.9664038, -33.2980677], [-69.9666667, -33.2983188], [-69.9670905, -33.2988434], [-69.9673802, -33.2991976], [-69.9676323, -33.2994531], [-69.9678737, -33.2996594], [-69.968158, -33.299897], [-69.9685228, -33.3003319], [-69.9688232, -33.3008161], [-69.9688554, -33.3009238], [-69.9688554, -33.30113], [-69.9687266, -33.3015425], [-69.9686945, -33.3020895], [-69.9687052, -33.3025199], [-69.9687588, -33.303309], [-69.9688071, -33.3036363], [-69.9688071, -33.303977], [-69.9687374, -33.3044029], [-69.9686194, -33.3047168], [-69.9685657, -33.304923], [-69.9685013, -33.3053713], [-69.968496, -33.3058331], [-69.9684477, -33.306129], [-69.9683565, -33.3064204], [-69.968276, -33.3067791], [-69.968276, -33.3070122], [-69.9683297, -33.307205], [-69.9683619, -33.3074516], [-69.9685174, -33.3077968], [-69.9687105, -33.3082093], [-69.9688339, -33.3084469], [-69.9690056, -33.3087428], [-69.9691021, -33.3089311], [-69.969247, -33.309209], [-69.9694723, -33.3093525], [-69.9697727, -33.3095677], [-69.9700999, -33.3097739], [-69.9702555, -33.3098994], [-69.9705559, -33.3101236], [-69.9707759, -33.3104015], [-69.9710172, -33.3106526], [-69.9713498, -33.3108678], [-69.9716181, -33.3110022], [-69.9718487, -33.3110919], [-69.9721813, -33.3111771], [-69.9725461, -33.3113026], [-69.972986, -33.3114237], [-69.9733025, -33.3115447], [-69.9735546, -33.3116299], [-69.9737477, -33.3116657], [-69.9742091, -33.3117285], [-69.9746168, -33.3118182], [-69.9749279, -33.3118002], [-69.9752605, -33.3118182], [-69.9755555, -33.311863], [-69.9757594, -33.3118585], [-69.9760437, -33.3118585], [-69.9762261, -33.3118002], [-69.976505, -33.3118002], [-69.976666, -33.3118361], [-69.9768913, -33.3119347], [-69.9771649, -33.3119751], [-69.9773848, -33.3120244], [-69.977653, -33.3121768], [-69.9779749, -33.3122665], [-69.9782914, -33.3123337], [-69.9786669, -33.3124009], [-69.9789351, -33.3124009], [-69.97908, -33.3124009], [-69.9795681, -33.3124637], [-69.9798524, -33.312522], [-69.9802011, -33.3127058], [-69.9805552, -33.3128627], [-69.9806947, -33.3129389], [-69.9809146, -33.3130599], [-69.981215, -33.3132168], [-69.9814457, -33.3132975], [-69.981671, -33.3134275], [-69.9818105, -33.3135038], [-69.9820679, -33.31371], [-69.9822664, -33.3137458], [-69.982481, -33.3136786], [-69.9826258, -33.3136338], [-69.9828887, -33.3135822], [-69.9831355, -33.3136741], [-69.9833393, -33.3137727], [-69.9837792, -33.3140955], [-69.9843156, -33.3145617], [-69.9844229, -33.3146155], [-69.9848199, -33.315001], [-69.9854529, -33.3154852], [-69.9857104, -33.3157273], [-69.985925, -33.3158528], [-69.9861825, -33.3160321], [-69.9865311, -33.3162204], [-69.9870193, -33.3164804], [-69.9873304, -33.316579], [-69.9876309, -33.3166238], [-69.9880171, -33.316839], [-69.9884141, -33.3171797], [-69.9884784, -33.3172604], [-69.9885535, -33.3174576], [-69.9887145, -33.317619], [-69.989208, -33.3178252], [-69.9894762, -33.3180224], [-69.9901414, -33.318399], [-69.9902165, -33.3184886], [-69.9902487, -33.3185872], [-69.9903774, -33.3188562], [-69.99071, -33.3191431], [-69.9909139, -33.3192327], [-69.9912679, -33.3193134], [-69.9920082, -33.3192865], [-69.9924266, -33.3191252], [-69.992888, -33.3188472], [-69.9930811, -33.3187845], [-69.9932957, -33.3186859], [-69.9938321, -33.3183721], [-69.9941218, -33.3182466], [-69.9944759, -33.3180224], [-69.9945724, -33.3179866], [-69.9948299, -33.3181659], [-69.9949908, -33.3183272], [-69.9953985, -33.3188562], [-69.9956024, -33.3192148], [-69.9959242, -33.3194658], [-69.9961388, -33.3196317], [-69.9963963, -33.3197303], [-69.9966484, -33.319802], [-69.996981, -33.3199276], [-69.997319, -33.3201069], [-69.9976033, -33.3202862], [-69.9977535, -33.3203982], [-69.9979895, -33.3206089], [-69.9981612, -33.3207837], [-69.9983275, -33.3209496], [-69.9986708, -33.3213261], [-69.9987781, -33.3214651], [-69.9989551, -33.3216713], [-69.9993038, -33.3219402], [-69.9998295, -33.3223616], [-70.0001192, -33.3225319], [-70.0006235, -33.3227471], [-70.0012136, -33.3229264], [-70.0015569, -33.3229891], [-70.0018519, -33.3229846], [-70.0020933, -33.3229936], [-70.0023347, -33.3229174], [-70.0024903, -33.322895], [-70.0026619, -33.322886], [-70.0028819, -33.3228502], [-70.003016, -33.3227426], [-70.003193, -33.3226036], [-70.0032735, -33.322514], [-70.0034344, -33.3223526], [-70.0034398, -33.3222226], [-70.0035095, -33.3220568], [-70.0037348, -33.3216533], [-70.0038207, -33.3215054], [-70.0039977, -33.3213306], [-70.0041318, -33.3211334], [-70.0041533, -33.3210437], [-70.0042874, -33.3208061], [-70.0044268, -33.320591], [-70.0045127, -33.3204184], [-70.0046226, -33.3202862], [-70.0047219, -33.3200979], [-70.0048882, -33.3198962], [-70.0049445, -33.3197191], [-70.0050303, -33.3195981], [-70.0051349, -33.319495], [-70.0052851, -33.3193784], [-70.0055265, -33.3192327], [-70.0057063, -33.3190871], [-70.0058109, -33.3189772], [-70.0058886, -33.3188472], [-70.0060308, -33.3186971], [-70.0062347, -33.3186231], [-70.0064921, -33.3184707], [-70.0068033, -33.3183362], [-70.0069964, -33.3182197], [-70.0073826, -33.3179148], [-70.0076401, -33.3176817], [-70.0078333, -33.3174486], [-70.0082409, -33.3172245], [-70.0083804, -33.3170183], [-70.0083804, -33.3164983], [-70.0082731, -33.316319], [-70.0080049, -33.3161486], [-70.0080049, -33.3159514], [-70.0080907, -33.3155928], [-70.0081551, -33.3155121], [-70.0081444, -33.3151266], [-70.0081122, -33.3149293], [-70.00808, -33.3148397], [-70.0079405, -33.3146334], [-70.0077367, -33.3143734], [-70.0074685, -33.3136203], [-70.0074041, -33.3133334], [-70.0074041, -33.3126968], [-70.0073397, -33.3124906], [-70.0072432, -33.3123023], [-70.0073075, -33.312114], [-70.0073612, -33.3120423], [-70.007683, -33.3118002], [-70.0078075, -33.3116732], [-70.0079191, -33.3114774], [-70.0079835, -33.3112802], [-70.0079835, -33.3110829], [-70.0079298, -33.3110022], [-70.0078869, -33.3107512], [-70.0079244, -33.3105943], [-70.0079352, -33.3105069], [-70.0080264, -33.3103948], [-70.0081256, -33.3102917], [-70.0082141, -33.3100922], [-70.0082436, -33.3099599], [-70.0083134, -33.3098075], [-70.0084341, -33.3096775], [-70.0085628, -33.309599], [-70.0086996, -33.3095632], [-70.0087559, -33.3095027], [-70.008772, -33.3093547], [-70.0087881, -33.3091552], [-70.008874, -33.308931], [-70.0092173, -33.3085007], [-70.0094426, -33.3080434], [-70.0094318, -33.3079537], [-70.0094238, -33.3078282], [-70.0093621, -33.3076735], [-70.0093192, -33.3075323], [-70.0093031, -33.3073619], [-70.009346, -33.3071512], [-70.0093406, -33.3068957], [-70.0093031, -33.3067074], [-70.0092763, -33.3065146], [-70.0093138, -33.3062008], [-70.0093567, -33.3060304], [-70.0093836, -33.3058331], [-70.0093889, -33.3055865], [-70.0093997, -33.3052458], [-70.0094104, -33.3049185], [-70.009405, -33.3047661], [-70.0093889, -33.3045554], [-70.0094748, -33.3042595], [-70.0094962, -33.3041608], [-70.0095928, -33.3040084], [-70.0096786, -33.3038291], [-70.0098288, -33.3035421], [-70.0100337, -33.3032626], [-70.0102204, -33.3029772], [-70.0103867, -33.3028831], [-70.010553, -33.3026634], [-70.0106871, -33.3025199], [-70.010789, -33.3023361], [-70.0109553, -33.3021209], [-70.0110734, -33.3020267], [-70.011245, -33.3019281], [-70.0113094, -33.3018563], [-70.0113952, -33.3017936], [-70.0116742, -33.3016322], [-70.012157, -33.3014259], [-70.0124574, -33.3012376], [-70.0122428, -33.3007803], [-70.0120497, -33.3002422], [-70.0119531, -33.2998298], [-70.0118566, -33.2994531], [-70.0117278, -33.2991572], [-70.0114811, -33.2987537], [-70.0112128, -33.2982156], [-70.0110519, -33.2980183], [-70.0110197, -33.2979107], [-70.0107837, -33.297561], [-70.0105369, -33.297301], [-70.0103653, -33.2970499], [-70.0103223, -33.2969602], [-70.0101721, -33.2967181], [-70.0101292, -33.2966015], [-70.0098932, -33.2961531], [-70.0097537, -33.2959648], [-70.0096035, -33.2956958], [-70.0095499, -33.2953908], [-70.0095499, -33.2951936], [-70.0093997, -33.2945479], [-70.0093889, -33.2942161], [-70.0093675, -33.2941174], [-70.0090563, -33.2937766], [-70.0088847, -33.2936332], [-70.0085843, -33.2934179], [-70.0083804, -33.2931668], [-70.0082409, -33.2926826], [-70.0081122, -33.2924135], [-70.0081122, -33.2920907], [-70.0081658, -33.2918754], [-70.0081766, -33.2916512], [-70.00808, -33.2913643], [-70.0079727, -33.291149], [-70.0077474, -33.2908262], [-70.0075221, -33.2903419], [-70.0071681, -33.290019], [-70.0070715, -33.2899562], [-70.0070071, -33.2898755], [-70.0069749, -33.2897858], [-70.0069535, -33.2894989], [-70.0068891, -33.2892926], [-70.0068891, -33.2887455], [-70.0068677, -33.2886379], [-70.0067496, -33.2884585], [-70.0066209, -33.2882881], [-70.0065458, -33.2881088], [-70.0065458, -33.287759], [-70.0065243, -33.2876514], [-70.0064385, -33.2874586], [-70.0063366, -33.2872926], [-70.0062722, -33.2871491], [-70.0062722, -33.2870056], [-70.0062507, -33.2867994], [-70.0063044, -33.2865841], [-70.006299, -33.2864227], [-70.0062937, -33.2863285], [-70.0062561, -33.2862074], [-70.0062937, -33.286037], [-70.0064224, -33.2859294], [-70.0066209, -33.2858801], [-70.0069749, -33.2858666], [-70.0074148, -33.2858487], [-70.0077635, -33.2858173], [-70.0078493, -33.2858128], [-70.0082946, -33.2858128], [-70.0085092, -33.285768], [-70.0086272, -33.285768], [-70.0087881, -33.2856245], [-70.0088954, -33.2854541], [-70.0089866, -33.2853464], [-70.0090885, -33.2852388], [-70.0092924, -33.2850191], [-70.0096357, -33.28462], [-70.0099254, -33.2844047], [-70.0101185, -33.2841715], [-70.0101721, -33.2840908], [-70.0103438, -33.2839114], [-70.0104189, -33.2838486], [-70.0105798, -33.2836782], [-70.0106979, -33.2835078], [-70.0107622, -33.2834361], [-70.0107944, -33.2833464], [-70.0109339, -33.2830773], [-70.0111511, -33.2829787], [-70.0114811, -33.2829069], [-70.0117278, -33.2828262], [-70.0119102, -33.2827365], [-70.0122857, -33.2825212], [-70.0126183, -33.2822253], [-70.0127041, -33.2821804], [-70.0127792, -33.2821176], [-70.0130904, -33.2818216], [-70.0131762, -33.2817768], [-70.0133908, -33.281714], [-70.0137878, -33.2816871], [-70.0139165, -33.2816602], [-70.0145173, -33.2816243], [-70.0148499, -33.2815615], [-70.0152469, -33.2813642], [-70.0156653, -33.2812207], [-70.0158584, -33.28114], [-70.0161588, -33.2810503], [-70.0165773, -33.280844], [-70.0166631, -33.2807633], [-70.0167489, -33.2807184], [-70.0168562, -33.2807095], [-70.0170279, -33.2805839], [-70.017103, -33.2805032], [-70.0174999, -33.2803148], [-70.0176072, -33.2802969], [-70.0177574, -33.2801623], [-70.0178647, -33.279983], [-70.0179398, -33.2799202], [-70.0179827, -33.2798305], [-70.0181329, -33.279669], [-70.0183904, -33.2794896], [-70.0186694, -33.2791578], [-70.0191307, -33.2783954], [-70.0193346, -33.2782967], [-70.0194204, -33.2782339], [-70.0202143, -33.2778572], [-70.0204826, -33.2778572], [-70.0207293, -33.2777944], [-70.0208259, -33.2777496], [-70.0209439, -33.2777227], [-70.0211477, -33.277615], [-70.0212121, -33.2775343], [-70.0214696, -33.277337], [-70.0218344, -33.2771127], [-70.0220704, -33.2770141], [-70.0222421, -33.2769154], [-70.0224781, -33.2768347], [-70.0225639, -33.2767719], [-70.0227893, -33.2767001], [-70.0231326, -33.2766104], [-70.0234008, -33.2766284], [-70.0237602, -33.2767181], [-70.0240767, -33.2768078], [-70.0244522, -33.2768526], [-70.0245863, -33.2768795], [-70.024876, -33.2769289], [-70.025273, -33.2769872], [-70.0255036, -33.2770544], [-70.0256431, -33.2770903], [-70.0260133, -33.2771217], [-70.0263491, -33.2770655], [-70.0266302, -33.2769737], [-70.026995, -33.2768167], [-70.0270701, -33.2767539], [-70.0273597, -33.2766104], [-70.0274778, -33.2765835], [-70.0275958, -33.2765297], [-70.0279176, -33.27644], [-70.0280249, -33.27644], [-70.0282073, -33.2763055], [-70.0283146, -33.276153], [-70.028497, -33.2759287], [-70.0285721, -33.275866], [-70.0286472, -33.2757763], [-70.028733, -33.2756955], [-70.0287974, -33.2754982], [-70.0287974, -33.2753009], [-70.0288189, -33.2752022], [-70.0289691, -33.27496], [-70.0290442, -33.2748882], [-70.0293338, -33.2746999], [-70.0296772, -33.2744039], [-70.0299132, -33.274063], [-70.0300527, -33.2739105], [-70.0302243, -33.2738029], [-70.030514, -33.2736504], [-70.0307179, -33.2735786], [-70.0309861, -33.2734351], [-70.0312543, -33.2732019], [-70.0315225, -33.2730404], [-70.0318122, -33.2729149], [-70.0319409, -33.2728969], [-70.0323808, -33.2729059], [-70.0324881, -33.272879], [-70.0325847, -33.2728072], [-70.0329387, -33.272565], [-70.0330889, -33.2724215], [-70.0331855, -33.2723677], [-70.0333464, -33.2722421], [-70.0334001, -33.2721524], [-70.0335395, -33.2719909], [-70.0337005, -33.2718564], [-70.0337756, -33.2717667], [-70.0341404, -33.2714976], [-70.0342262, -33.2714169], [-70.0344515, -33.2713182], [-70.0346339, -33.2712285], [-70.034945, -33.2711298], [-70.0353098, -33.2710491], [-70.0356746, -33.271058], [-70.0359321, -33.271058], [-70.03627, -33.2710468], [-70.0365758, -33.2710132], [-70.0368413, -33.2709773], [-70.0371659, -33.2709145], [-70.0373536, -33.2708876], [-70.0375736, -33.2708428], [-70.0380993, -33.2706544], [-70.0384909, -33.2704548], [-70.0386411, -33.2703718], [-70.0388074, -33.2702978], [-70.0388262, -33.2700893], [-70.0388369, -33.2699121], [-70.0388154, -33.2696856], [-70.0387967, -33.2694972], [-70.0387752, -33.2693088], [-70.0387752, -33.2687796], [-70.0387323, -33.2685464], [-70.0386894, -33.2684477], [-70.0385285, -33.2681786], [-70.0383461, -33.2679184], [-70.0381744, -33.2676314], [-70.0381529, -33.2673981], [-70.0380778, -33.2671828], [-70.0380564, -33.2669406], [-70.0380349, -33.2657655], [-70.0380027, -33.2655591], [-70.0379276, -33.2653618], [-70.0378418, -33.2650657], [-70.0376594, -33.264689], [-70.0370479, -33.2639085], [-70.036962, -33.2637291], [-70.0368977, -33.2636483], [-70.0368118, -33.263442], [-70.0367904, -33.2632446], [-70.0367046, -33.2630024], [-70.0366294, -33.2626795], [-70.0365865, -33.2625718], [-70.0365865, -33.2618452], [-70.0365436, -33.2616209], [-70.0365114, -33.2615312], [-70.036372, -33.2613517], [-70.0362969, -33.26128], [-70.0361896, -33.2612082], [-70.0360394, -33.2610377], [-70.0359535, -33.2609749], [-70.0358999, -33.2608404], [-70.0358248, -33.2607327], [-70.0355673, -33.2602393], [-70.0354815, -33.2601406], [-70.0352776, -33.2598625], [-70.0351381, -33.2594857], [-70.0351274, -33.2591627], [-70.0350845, -33.2590551], [-70.0350738, -33.2589564], [-70.0350416, -33.2588577], [-70.0348055, -33.2584091], [-70.0346232, -33.2580054], [-70.0345695, -33.2576555], [-70.0345695, -33.2572608], [-70.034591, -33.2570455], [-70.0346232, -33.2569288], [-70.0346232, -33.2567314], [-70.0345373, -33.2562829], [-70.0344622, -33.2561034], [-70.0343979, -33.2556728], [-70.0344622, -33.2553677], [-70.0344622, -33.2550447], [-70.0343522, -33.2547711], [-70.0341189, -33.2543539], [-70.0340438, -33.2540578], [-70.0340331, -33.2539502], [-70.0339741, -33.2537214], [-70.0337756, -33.2534388], [-70.0334752, -33.2532683], [-70.0333893, -33.2531965], [-70.0332928, -33.2531517], [-70.0328958, -33.2529004], [-70.0328207, -33.2528018], [-70.0326383, -33.2526582], [-70.032295, -33.2524788], [-70.0314796, -33.2521468], [-70.0312972, -33.2517879], [-70.0312221, -33.2514739], [-70.0311148, -33.2511778], [-70.0310826, -33.2509714], [-70.0310505, -33.2508727], [-70.0310075, -33.2503254], [-70.0309539, -33.2502447], [-70.0309324, -33.250146], [-70.0308788, -33.2500473], [-70.0307393, -33.2498858], [-70.0305247, -33.2497153], [-70.0302994, -33.2495897], [-70.0299883, -33.2494641], [-70.029881, -33.2494102], [-70.0293338, -33.2494013], [-70.0292158, -33.2493833], [-70.0290012, -33.2492757], [-70.0288725, -33.2492308], [-70.0287652, -33.24915], [-70.0287116, -33.2490693], [-70.0285077, -33.2485848], [-70.0282502, -33.2482079], [-70.0281537, -33.2481092], [-70.0280893, -33.2480105], [-70.0280035, -33.2479387], [-70.0277782, -33.2475978], [-70.0277674, -33.247212], [-70.0277138, -33.2468082], [-70.0277567, -33.2463775], [-70.0278211, -33.2461622], [-70.0279391, -33.2456956], [-70.0280249, -33.2456417], [-70.0281108, -33.24557], [-70.0282395, -33.2454084], [-70.028261, -33.2453187], [-70.0283468, -33.2451303], [-70.028379, -33.2449419], [-70.0284112, -33.2448521], [-70.0284219, -33.2447265], [-70.0284541, -33.2445201], [-70.0288725, -33.243569], [-70.0288832, -33.2434613], [-70.0289476, -33.2433447], [-70.0290549, -33.2429319], [-70.0292587, -33.2425191], [-70.0293231, -33.2424384], [-70.0294304, -33.2421512], [-70.0294304, -33.240886], [-70.029366, -33.2406976], [-70.0292158, -33.2405271], [-70.0289583, -33.2401681], [-70.0286472, -33.2398182], [-70.028497, -33.2395938], [-70.0278962, -33.2389747], [-70.0277889, -33.2389029], [-70.0276816, -33.238849], [-70.027467, -33.2387055], [-70.0270271, -33.2382209], [-70.0268126, -33.2377991], [-70.0266838, -33.2376197], [-70.0266516, -33.2375299], [-70.0265443, -33.2372248], [-70.0264692, -33.2367851], [-70.0264049, -33.2366415], [-70.0263405, -33.2362377], [-70.0262225, -33.2359685], [-70.0266194, -33.2354211], [-70.0267053, -33.2352416], [-70.0267696, -33.2350442], [-70.026834, -33.2349365], [-70.0268662, -33.2348378], [-70.0269199, -33.234757], [-70.026952, -33.2346673], [-70.0270593, -33.2345057], [-70.0271022, -33.234425], [-70.0271773, -33.2343532], [-70.027231, -33.2342724], [-70.0273597, -33.2339763], [-70.0274027, -33.2337878], [-70.0274134, -33.2334827], [-70.0274456, -33.2334019], [-70.0275529, -33.2331327], [-70.0275958, -33.233043], [-70.027628, -33.2329622], [-70.0276816, -33.2328635], [-70.0277031, -33.2326391], [-70.0276601, -33.2325494], [-70.0277567, -33.2325045], [-70.0278747, -33.2324866], [-70.0281966, -33.2324058], [-70.0284004, -33.2323161], [-70.0286901, -33.2321725], [-70.0287974, -33.2321007], [-70.0291836, -33.2319122], [-70.0292695, -33.2318494], [-70.0295913, -33.2316969], [-70.0296986, -33.2316699], [-70.0299561, -33.231652], [-70.0300527, -33.2316251], [-70.0301707, -33.2316251], [-70.0302672, -33.2315981], [-70.0308681, -33.2314545], [-70.0313723, -33.2314187], [-70.0320268, -33.2313199], [-70.0323165, -33.2311584], [-70.0324988, -33.2310776], [-70.0330997, -33.2308443], [-70.033325, -33.2307994], [-70.0334108, -33.2307456], [-70.0335074, -33.2307097], [-70.0337541, -33.2305392], [-70.0339794, -33.2303238], [-70.0343013, -33.229911], [-70.0344515, -33.2297763], [-70.0345373, -33.2297225], [-70.0346232, -33.2296417], [-70.0349343, -33.2294263], [-70.0355888, -33.2291302], [-70.0358033, -33.2290853], [-70.0360286, -33.2290135], [-70.0361145, -33.2289597], [-70.0363398, -33.228843], [-70.0365973, -33.2286545], [-70.0367475, -33.2285199], [-70.0369191, -33.2284032], [-70.0370157, -33.2283584], [-70.0371444, -33.2282955], [-70.0378525, -33.2281071], [-70.0382817, -33.2279455], [-70.038389, -33.2279276], [-70.0386036, -33.2278827], [-70.0387323, -33.2278737], [-70.0394726, -33.2278737], [-70.039773, -33.2279366], [-70.0400412, -33.2280173], [-70.0402343, -33.2280622], [-70.0405991, -33.2282148], [-70.0408566, -33.2282776], [-70.0409961, -33.2283404], [-70.0413394, -33.2284122], [-70.0421441, -33.2284122], [-70.0422621, -33.2284032], [-70.0424874, -33.2283853], [-70.0426161, -33.2283584], [-70.0428414, -33.2283404], [-70.0429809, -33.2283135], [-70.043453, -33.2281699], [-70.0437427, -33.2281161], [-70.0438607, -33.2280802], [-70.0439787, -33.2280712], [-70.0442469, -33.2280173], [-70.0443435, -33.2279904], [-70.0444722, -33.2279455], [-70.0452662, -33.2277571], [-70.0455022, -33.2277212], [-70.0458133, -33.2276045], [-70.0459099, -33.2275596], [-70.0460816, -33.227443], [-70.0461888, -33.2273981], [-70.0463498, -33.2272545], [-70.0465214, -33.2269134], [-70.0466824, -33.2266711], [-70.0468433, -33.2265455], [-70.0473046, -33.2263032], [-70.0474978, -33.2262493], [-70.0478304, -33.2262493], [-70.0479376, -33.2262852], [-70.0483132, -33.2263391], [-70.0484204, -33.2263391], [-70.0486565, -33.226375], [-70.0488925, -33.226375], [-70.0491285, -33.2264288], [-70.0493753, -33.2264602], [-70.0496543, -33.2264961], [-70.0501907, -33.2264916], [-70.05077, -33.2265051], [-70.0512046, -33.2265455], [-70.0515962, -33.226523], [-70.0520629, -33.226523], [-70.0523847, -33.2264288], [-70.0526047, -33.2263884], [-70.0529105, -33.2263615], [-70.0531894, -33.2263884], [-70.0535381, -33.226375], [-70.0538814, -33.2263301], [-70.0539887, -33.2263301], [-70.054332, -33.2262403], [-70.0548148, -33.2261955], [-70.054847, -33.2261057], [-70.0548577, -33.2252531], [-70.0548899, -33.2251185], [-70.0550294, -33.2247685], [-70.055083, -33.2244992], [-70.055083, -33.2243287], [-70.0550616, -33.2241851], [-70.0550616, -33.2238261], [-70.0550938, -33.2235837], [-70.0550938, -33.2234312], [-70.0552762, -33.2230093], [-70.0554156, -33.2227401], [-70.0554907, -33.2225785], [-70.0557912, -33.222058], [-70.0558233, -33.2219772], [-70.0558984, -33.2218785], [-70.0559414, -33.2217887], [-70.0560057, -33.2217169], [-70.0564242, -33.2207655], [-70.0566065, -33.2204873], [-70.0567675, -33.2201821], [-70.0567567, -33.2195179], [-70.0568211, -33.2194372], [-70.0570142, -33.2192846], [-70.0570893, -33.2191948], [-70.0573897, -33.2190422], [-70.0575292, -33.2189076], [-70.0576151, -33.2187999], [-70.0576902, -33.2185755], [-70.0576902, -33.2182703], [-70.05754, -33.2178575], [-70.0574863, -33.2177767], [-70.0574541, -33.21766], [-70.0574863, -33.2175433], [-70.05754, -33.2174535], [-70.057776, -33.2173099], [-70.0578833, -33.2172202], [-70.0581837, -33.2168701], [-70.0582802, -33.2168163], [-70.058409, -33.2167355], [-70.0584734, -33.2166547], [-70.0585967, -33.2163406], [-70.0586557, -33.2160354], [-70.0586772, -33.2158155], [-70.0587416, -33.215609], [-70.0588167, -33.2153218], [-70.0589615, -33.2150705], [-70.0591922, -33.2147339], [-70.0593853, -33.2145588], [-70.0595248, -33.2143838], [-70.0596428, -33.2141684], [-70.0597286, -33.213944], [-70.0597662, -33.2137151], [-70.0598574, -33.2135131], [-70.0599647, -33.2132977], [-70.0601149, -33.2131631], [-70.0603402, -33.2129656], [-70.0604475, -33.212795], [-70.0605333, -33.2126155], [-70.0605333, -33.212418], [-70.0605762, -33.2122026], [-70.0607157, -33.2119154], [-70.0607693, -33.2118256], [-70.0608444, -33.2117448], [-70.060941, -33.211682], [-70.0612521, -33.211305], [-70.0613487, -33.2111075], [-70.0614774, -33.210928], [-70.0615633, -33.2107484], [-70.0615847, -33.2106587], [-70.0615955, -33.2101111], [-70.0616598, -33.2098867], [-70.0617349, -33.2096982], [-70.0618744, -33.2094648], [-70.0621212, -33.2091596], [-70.0622177, -33.2090698], [-70.0625825, -33.2085761], [-70.0627005, -33.2081811], [-70.0627542, -33.2081004], [-70.0627971, -33.2080106], [-70.0628722, -33.2077144], [-70.062958, -33.2075169], [-70.0630224, -33.2073373], [-70.063076, -33.2072565], [-70.0633979, -33.2069334], [-70.0635374, -33.2067628], [-70.0637466, -33.206489], [-70.0638968, -33.2062152], [-70.0640148, -33.2060043], [-70.064224, -33.2057619], [-70.0644386, -33.2055824], [-70.0646854, -33.2054028], [-70.0647551, -33.2052771], [-70.0647068, -33.2051111], [-70.0646263, -33.2049585], [-70.0644761, -33.2047071], [-70.0643528, -33.2045725], [-70.0641918, -33.2041864], [-70.0640684, -33.2038588], [-70.0639933, -33.2037376], [-70.0639236, -33.2034952], [-70.0639236, -33.2032842], [-70.0640792, -33.2030508], [-70.0642508, -33.2028668], [-70.0644976, -33.2025122], [-70.0646049, -33.2023461], [-70.0646371, -33.20218], [-70.0646424, -33.2021396], [-70.0646532, -33.2018883], [-70.0647068, -33.2017446], [-70.0647068, -33.2015292], [-70.0646854, -33.2014215], [-70.0646317, -33.2013137], [-70.0645137, -33.2009995], [-70.0644171, -33.200802], [-70.0644064, -33.2002544], [-70.0643849, -33.2001556], [-70.0643206, -33.1999177], [-70.064224, -33.1997786], [-70.0641489, -33.1995586], [-70.064047, -33.1994015], [-70.0640363, -33.1991636], [-70.0639075, -33.1989212], [-70.0638056, -33.1987282], [-70.0636607, -33.1985846], [-70.0635428, -33.1984095], [-70.0633711, -33.1982658], [-70.0632638, -33.198203], [-70.0630278, -33.1980504], [-70.0629312, -33.1979875], [-70.0627703, -33.1978169], [-70.0626952, -33.1977092], [-70.0626523, -33.1976015], [-70.0625986, -33.197386], [-70.0623948, -33.1971436], [-70.0622124, -33.1969551], [-70.0620944, -33.1967396], [-70.06203, -33.1966588], [-70.0619173, -33.1965646], [-70.0617832, -33.1965107], [-70.0614935, -33.1964119], [-70.0612307, -33.1962863], [-70.0610375, -33.1962055], [-70.0608766, -33.1959855], [-70.0607425, -33.1958778], [-70.0606057, -33.1956623], [-70.0605011, -33.1954984], [-70.0603831, -33.1953054], [-70.0603402, -33.1951528], [-70.0602946, -33.1949014], [-70.0602704, -33.1946702], [-70.0602597, -33.1944054], [-70.0602543, -33.1941764], [-70.0603777, -33.1938891], [-70.0605011, -33.1935659], [-70.0605923, -33.1932292], [-70.0606835, -33.1929509], [-70.0607747, -33.1927175], [-70.0608659, -33.1925155], [-70.0610054, -33.1921967], [-70.0612682, -33.1916356], [-70.0613487, -33.1913438], [-70.061456, -33.191043], [-70.0615901, -33.1908365], [-70.0617242, -33.1905582], [-70.0619441, -33.1902484], [-70.0621641, -33.1901182], [-70.062266, -33.190024], [-70.062384, -33.1897726], [-70.0624108, -33.1896064], [-70.0624591, -33.1892922], [-70.0625879, -33.188951], [-70.0627327, -33.188731], [-70.0628293, -33.1885964], [-70.0630921, -33.1882552], [-70.0631833, -33.188098], [-70.0633174, -33.1878332], [-70.0634784, -33.1876177], [-70.0636286, -33.1873348], [-70.0637358, -33.1869353], [-70.0637519, -33.1866839], [-70.0637788, -33.1864055], [-70.0637949, -33.1862215], [-70.0638378, -33.1858129], [-70.0638056, -33.1855436], [-70.0638217, -33.1853101], [-70.0638056, -33.1850587], [-70.0638002, -33.1845918], [-70.0637949, -33.184273], [-70.0637734, -33.1839722], [-70.0637788, -33.1836624], [-70.0637949, -33.1834604], [-70.0637949, -33.1831461], [-70.0638431, -33.1829172], [-70.0639504, -33.1827331], [-70.064165, -33.1824637], [-70.0642616, -33.1823739], [-70.0645405, -33.1821449], [-70.0646746, -33.1820282], [-70.0647873, -33.1819115], [-70.0648248, -33.1817588], [-70.0648087, -33.1815792], [-70.0647444, -33.1813188], [-70.0646961, -33.1811437], [-70.0646639, -33.181009], [-70.0646639, -33.1808205], [-70.0646693, -33.1806723], [-70.0647336, -33.1804793], [-70.0648034, -33.1804388], [-70.0649536, -33.1802144], [-70.065136, -33.1798282], [-70.0652164, -33.1794825], [-70.0649965, -33.1794197], [-70.064739, -33.1793568], [-70.0644225, -33.179276], [-70.0640792, -33.1792131], [-70.0638592, -33.1791323], [-70.0637198, -33.1790964], [-70.0633872, -33.1789797], [-70.0631619, -33.1788988], [-70.0628614, -33.1788405], [-70.0625986, -33.1788001], [-70.0624108, -33.1787237], [-70.0622124, -33.1786654], [-70.0619978, -33.1785801], [-70.0618047, -33.1784139], [-70.0616437, -33.1782927], [-70.0614747, -33.1781715], [-70.0612012, -33.1779246], [-70.0610161, -33.1777203], [-70.0608444, -33.1775092], [-70.0607345, -33.177379], [-70.0606379, -33.1772488], [-70.0605735, -33.1770625], [-70.0604904, -33.1768155], [-70.0603831, -33.1765484], [-70.0603026, -33.1763576], [-70.0601631, -33.1760478], [-70.0600478, -33.1758457], [-70.059903, -33.1755943], [-70.0597528, -33.175372], [-70.0596482, -33.1751879], [-70.0594658, -33.1748961], [-70.0593263, -33.1745885], [-70.0591546, -33.1743011], [-70.058983, -33.1740542], [-70.0588435, -33.1738476], [-70.0585806, -33.1735827], [-70.0584036, -33.17321], [-70.0582749, -33.1729855], [-70.0579047, -33.1723704], [-70.0577921, -33.1721414], [-70.0575668, -33.1717687], [-70.0574917, -33.1715756], [-70.0574219, -33.1714544], [-70.0573897, -33.1712703], [-70.0574112, -33.1710592], [-70.057497, -33.1709156], [-70.0576258, -33.170727], [-70.0577813, -33.170498], [-70.0578457, -33.1703543], [-70.0581032, -33.1700265], [-70.0583124, -33.1698424], [-70.0584519, -33.1696762], [-70.0586343, -33.1694203], [-70.0588167, -33.1691778], [-70.0589132, -33.1688815], [-70.0591707, -33.1685716], [-70.0593746, -33.1683785], [-70.0594872, -33.168181], [-70.0596964, -33.1679026], [-70.0598252, -33.167696], [-70.0599808, -33.1675613], [-70.0602329, -33.1674715], [-70.0604636, -33.1673727], [-70.0607801, -33.167238], [-70.0608659, -33.167202], [-70.0610483, -33.1670583], [-70.0612307, -33.1668787], [-70.061338, -33.1667081], [-70.0614131, -33.1666362], [-70.0615633, -33.166295], [-70.061692, -33.1661333], [-70.0619602, -33.1659178], [-70.0620031, -33.165828], [-70.0620461, -33.1657471], [-70.0620675, -33.1656573], [-70.0620782, -33.1648311], [-70.0621641, -33.1647233], [-70.0622392, -33.1646514], [-70.0624001, -33.1645257], [-70.0625074, -33.1644898], [-70.062604, -33.1644449], [-70.0627005, -33.1644089], [-70.0627971, -33.1643461], [-70.0628615, -33.1642742], [-70.0632155, -33.163915], [-70.0633979, -33.1636276], [-70.0635266, -33.1633671], [-70.0637949, -33.162936], [-70.0639236, -33.1626396], [-70.0639558, -33.1624241], [-70.063988, -33.1623253], [-70.0640202, -33.1620828], [-70.0640524, -33.161993], [-70.0640953, -33.1619032], [-70.0643206, -33.1615529], [-70.0644708, -33.1613104], [-70.0645459, -33.1612026], [-70.0646746, -33.1609152], [-70.0647068, -33.1606907], [-70.0647175, -33.1604751], [-70.0647497, -33.1601518], [-70.0647605, -33.160044], [-70.0647926, -33.1599542], [-70.0650823, -33.1596668], [-70.0651789, -33.1596129], [-70.0655544, -33.1593255], [-70.065608, -33.1592356], [-70.0656939, -33.1591728], [-70.0658548, -33.1590111], [-70.066123, -33.1586608], [-70.066284, -33.1582926], [-70.0663054, -33.158077], [-70.0663591, -33.1577806], [-70.0663805, -33.1572237], [-70.0664878, -33.1569183], [-70.0665844, -33.1567567], [-70.0667131, -33.1563435], [-70.0668097, -33.1561818], [-70.0668204, -33.1558405], [-70.0667882, -33.1557237], [-70.0666809, -33.1553465], [-70.0665951, -33.1552387], [-70.0665414, -33.1551489], [-70.0664771, -33.1549513], [-70.0664449, -33.1547267], [-70.0663054, -33.1543944], [-70.0661659, -33.1541698], [-70.066123, -33.154071], [-70.0659835, -33.1537836], [-70.0658977, -33.1535411], [-70.0657475, -33.1532806], [-70.0656778, -33.1530201], [-70.0653237, -33.1528405], [-70.0650716, -33.1526698], [-70.064798, -33.1525171], [-70.064621, -33.1524138], [-70.0643474, -33.1523015], [-70.0640577, -33.1521084], [-70.0636768, -33.1518569], [-70.0635427, -33.1517222], [-70.0633282, -33.151565], [-70.0631082, -33.1514617], [-70.0629365, -33.1513584], [-70.0626415, -33.1512281], [-70.0624538, -33.1510485], [-70.0622499, -33.1509317], [-70.06203, -33.1508104], [-70.0618315, -33.150779], [-70.0615579, -33.1506981], [-70.0613058, -33.1506173], [-70.0609893, -33.1505724], [-70.0608927, -33.1505499], [-70.0606889, -33.1504601], [-70.0603777, -33.1503029], [-70.0601524, -33.1501412], [-70.0599486, -33.1500379], [-70.0597823, -33.1499706], [-70.0596267, -33.1499661], [-70.0594175, -33.149984], [-70.0592244, -33.1499526], [-70.059101, -33.1499526], [-70.0589186, -33.1498987], [-70.0587738, -33.1498179], [-70.0585109, -33.1497056], [-70.0583768, -33.1495574], [-70.0582051, -33.1494541], [-70.058012, -33.1494181], [-70.0578028, -33.1493957], [-70.0572985, -33.1493867], [-70.0569338, -33.1492879], [-70.0566119, -33.1490903], [-70.0564295, -33.1489286], [-70.0563437, -33.1488477], [-70.0562471, -33.1487759], [-70.0560969, -33.1486232], [-70.0558662, -33.148311], [-70.0557938, -33.1482459], [-70.0557911, -33.1480078], [-70.0558019, -33.14768], [-70.0557751, -33.1474015], [-70.055716, -33.1470107], [-70.0556946, -33.146876], [-70.0557053, -33.1465795], [-70.0557375, -33.1463909], [-70.0557912, -33.1462023], [-70.0557912, -33.145789], [-70.0557751, -33.1456363], [-70.0557482, -33.1454657], [-70.0557482, -33.1452276], [-70.0558019, -33.1449446], [-70.0558126, -33.1445494], [-70.0558019, -33.1443338], [-70.055877, -33.1441361], [-70.0559253, -33.1440149], [-70.0559574, -33.1438622], [-70.0559038, -33.1436825], [-70.0558502, -33.1436286], [-70.0557375, -33.143422], [-70.0555551, -33.1432468], [-70.0554103, -33.1430402], [-70.0552976, -33.1428695], [-70.0552064, -33.1427662], [-70.0550187, -33.1425865], [-70.0549114, -33.1425236], [-70.0547558, -33.1424697], [-70.0545788, -33.1424113], [-70.0544661, -33.1423754], [-70.0543159, -33.1423035], [-70.0542086, -33.1422137], [-70.0540853, -33.1420969], [-70.0539726, -33.1419936], [-70.0538492, -33.1418229], [-70.0537258, -33.1415714], [-70.0537044, -33.1413693], [-70.0536239, -33.141221], [-70.053404, -33.1410863], [-70.0532699, -33.1410099], [-70.0531304, -33.1409336], [-70.0530446, -33.1408797], [-70.0529265, -33.1407629], [-70.0528514, -33.1406596], [-70.0527549, -33.1404619], [-70.0526851, -33.1403227], [-70.0526798, -33.1400801], [-70.0527173, -33.1399588], [-70.0527602, -33.1398241], [-70.0527656, -33.1397567], [-70.0526047, -33.1396534], [-70.0525671, -33.1395186], [-70.0525671, -33.1393659], [-70.0525564, -33.1392177], [-70.0525457, -33.1391323], [-70.0524062, -33.139065], [-70.0522292, -33.1389122], [-70.0520736, -33.1388089], [-70.0519341, -33.138755], [-70.0518161, -33.1386472], [-70.0517464, -33.1385439], [-70.051682, -33.1383822], [-70.0516284, -33.1381396], [-70.0515693, -33.1380049], [-70.0514728, -33.1378746], [-70.0513762, -33.1376949], [-70.0513065, -33.1373985], [-70.0513172, -33.1371873], [-70.0514084, -33.1370077], [-70.0514728, -33.1368729], [-70.0515318, -33.1367336], [-70.0515264, -33.136545], [-70.0515318, -33.1363563], [-70.0515747, -33.1362575], [-70.0515801, -33.1361362], [-70.0516498, -33.1360059], [-70.0517625, -33.1358577], [-70.0518966, -33.1357364], [-70.0519717, -33.1356645], [-70.0521433, -33.1353815], [-70.0523687, -33.1351435], [-70.0525618, -33.1349009], [-70.0526261, -33.134811], [-70.0529158, -33.1344876], [-70.053066, -33.1343708], [-70.0532484, -33.134281], [-70.0533557, -33.1342181], [-70.053463, -33.1341911], [-70.0535703, -33.1341732], [-70.0536776, -33.1341282], [-70.0538814, -33.1340654], [-70.0541604, -33.1339216], [-70.0543562, -33.1338183], [-70.0544366, -33.1337711], [-70.0545573, -33.1336993], [-70.0546566, -33.1336296], [-70.0548068, -33.1335398], [-70.0550643, -33.1333983], [-70.0553459, -33.1332074], [-70.0556141, -33.1330659], [-70.0557214, -33.1330007], [-70.0559279, -33.1328165], [-70.056054, -33.1326571], [-70.0562525, -33.1325246], [-70.0564, -33.1323561], [-70.0566226, -33.1320551], [-70.0568184, -33.1317811], [-70.0569177, -33.131662], [-70.0570652, -33.1313835], [-70.0573576, -33.1310421], [-70.0574917, -33.1309231], [-70.0577116, -33.1307771], [-70.0578082, -33.1307142], [-70.0580335, -33.1304985], [-70.0581193, -33.1304446], [-70.0581837, -33.1303638], [-70.0583661, -33.130229], [-70.0590849, -33.1298067], [-70.0592351, -33.1296719], [-70.0595141, -33.1294833], [-70.0595999, -33.1294204], [-70.0597072, -33.1293934], [-70.0598467, -33.1292586], [-70.0599003, -33.1291778], [-70.0599969, -33.1291059], [-70.0605548, -33.1288453], [-70.0606299, -33.1287735], [-70.0608337, -33.1286387], [-70.0609839, -33.1285039], [-70.0614452, -33.1282164], [-70.0617027, -33.1280367], [-70.0618851, -33.1279379], [-70.0619924, -33.1279109], [-70.0620675, -33.127857], [-70.0621748, -33.1278211], [-70.0622606, -33.1277672], [-70.0627488, -33.1276054], [-70.0630438, -33.1274527], [-70.0635266, -33.127255], [-70.0638753, -33.1271787], [-70.0643206, -33.1270843], [-70.0648195, -33.126999], [-70.0651413, -33.1270169], [-70.0653613, -33.1269495], [-70.0655973, -33.1268507], [-70.065887, -33.1266126], [-70.0662839, -33.1263565], [-70.0665844, -33.1261678], [-70.0667024, -33.1261319], [-70.066917, -33.1260331], [-70.0671208, -33.1259792], [-70.0675285, -33.1258084], [-70.0676143, -33.1257545], [-70.0678182, -33.1256826], [-70.0681186, -33.1255389], [-70.0683332, -33.125485], [-70.0687677, -33.1253098], [-70.0689769, -33.1252244], [-70.0692076, -33.1251346], [-70.069406, -33.1249863], [-70.0696099, -33.1248066], [-70.069744, -33.1247167], [-70.0698996, -33.1246359], [-70.0701678, -33.1244696], [-70.0705004, -33.1243798], [-70.070715, -33.1243169], [-70.0708222, -33.124263], [-70.0709939, -33.1241372], [-70.071187, -33.1240294], [-70.0712729, -33.1239575], [-70.071466, -33.1238586], [-70.0719595, -33.1238946], [-70.0721848, -33.1238856], [-70.0727642, -33.1237868], [-70.073086, -33.123643], [-70.0732684, -33.1235082], [-70.0733543, -33.1234273], [-70.0734401, -33.1233645], [-70.0737298, -33.1231847], [-70.0740784, -33.1228298], [-70.0742662, -33.1226636], [-70.0745076, -33.122421], [-70.0746739, -33.1222907], [-70.0747544, -33.1222323], [-70.0749689, -33.122102], [-70.0751352, -33.1219537], [-70.0752533, -33.1218145], [-70.0753713, -33.1216932], [-70.0755081, -33.1215292], [-70.0756207, -33.1213607], [-70.0757039, -33.1211406], [-70.0757736, -33.1209361], [-70.0758138, -33.1206553], [-70.0758675, -33.1204487], [-70.0759935, -33.1200578], [-70.0760311, -33.1198421], [-70.0760901, -33.1196804], [-70.0761223, -33.1195141], [-70.0761706, -33.1192985], [-70.0762403, -33.1190064], [-70.0762618, -33.1188088], [-70.0763208, -33.1185774], [-70.0763127, -33.1182876], [-70.0762832, -33.1180809], [-70.0762618, -33.1179821], [-70.0762564, -33.1177439], [-70.0762457, -33.1174294], [-70.0762189, -33.1171284], [-70.0762108, -33.1169082], [-70.0762028, -33.1167465], [-70.0761464, -33.1166207], [-70.0760284, -33.1163534], [-70.0759318, -33.1161602], [-70.0758138, -33.1159872], [-70.0756288, -33.1157985], [-70.0753874, -33.1156592], [-70.0751862, -33.1155626], [-70.0750333, -33.1154502], [-70.0749019, -33.1153716], [-70.0746954, -33.1152975], [-70.0745398, -33.1152368], [-70.0744379, -33.1152233], [-70.0743306, -33.1151874], [-70.074234, -33.1151155], [-70.0740624, -33.1148639], [-70.0740194, -33.114774], [-70.0739685, -33.114664], [-70.0739309, -33.1145157], [-70.0738612, -33.1143494], [-70.0738022, -33.1142124], [-70.0736976, -33.1140596], [-70.0735527, -33.1139518], [-70.0734294, -33.11379], [-70.0733274, -33.11368], [-70.0732657, -33.1135923], [-70.0731719, -33.1133497], [-70.0730833, -33.1131924], [-70.0730324, -33.1131273], [-70.0729787, -33.1130374], [-70.072968, -33.1129251], [-70.07296, -33.1128532], [-70.0729841, -33.1127162], [-70.0730029, -33.1125836], [-70.07296, -33.1123994], [-70.0728956, -33.1122152], [-70.0728634, -33.1120849], [-70.0728473, -33.1119051], [-70.0728339, -33.1117613], [-70.0728339, -33.111649], [-70.0727937, -33.1115659], [-70.0727025, -33.111476], [-70.0726301, -33.1114311], [-70.0725496, -33.1113682], [-70.0724503, -33.1111592], [-70.0724155, -33.1110492], [-70.0724342, -33.1109234], [-70.0724396, -33.1108178], [-70.0723538, -33.1106538], [-70.0722572, -33.1105482], [-70.0722009, -33.1104763], [-70.0721607, -33.1103684], [-70.0721124, -33.1101775], [-70.0720695, -33.1099842], [-70.0720212, -33.1098427], [-70.0720319, -33.109627], [-70.0720212, -33.1094091], [-70.0720829, -33.1092294], [-70.072107, -33.1090968], [-70.0720936, -33.1089193], [-70.07204, -33.1088182], [-70.0719568, -33.1086946], [-70.0718576, -33.1085733], [-70.0717208, -33.108443], [-70.0715196, -33.1082857], [-70.0713453, -33.1080813], [-70.0711012, -33.1078723], [-70.0709724, -33.1077151], [-70.0707632, -33.1075623], [-70.0705326, -33.107414], [-70.0704306, -33.1073331], [-70.0702804, -33.1071983], [-70.0700873, -33.1070995], [-70.069862, -33.1070006], [-70.0697386, -33.1069062], [-70.0696313, -33.1067804], [-70.0695294, -33.1066681], [-70.0693846, -33.1065557], [-70.0691754, -33.106376], [-70.0690252, -33.1062277], [-70.0687999, -33.106057], [-70.0686818, -33.1059716], [-70.0684941, -33.1058592], [-70.0682312, -33.1056435], [-70.0681293, -33.1055492], [-70.0679416, -33.1054234], [-70.0677967, -33.1052975], [-70.0675929, -33.1051852], [-70.0673837, -33.1051043], [-70.0671315, -33.104992], [-70.0669599, -33.1049515], [-70.0667828, -33.1048302], [-70.0665522, -33.1046055], [-70.0664234, -33.1044752], [-70.0662196, -33.1042236], [-70.0659959, -33.103937], [-70.0659299, -33.1036663], [-70.0659621, -33.1035046], [-70.0661016, -33.1031361], [-70.0661659, -33.1030282], [-70.066241, -33.1029384], [-70.0663269, -33.1027586], [-70.0664449, -33.1025609], [-70.0667453, -33.1019048], [-70.067035, -33.1013745], [-70.0676251, -33.1008083], [-70.0678933, -33.1004848], [-70.06814, -33.1000983], [-70.0682902, -33.0997837], [-70.0684941, -33.0992175], [-70.0686336, -33.0989748], [-70.0686658, -33.098849], [-70.068934, -33.0984445], [-70.0690627, -33.0982827], [-70.0692129, -33.0980311], [-70.0693095, -33.0978423], [-70.0694704, -33.0975997], [-70.0695133, -33.0975008], [-70.0695241, -33.0974109], [-70.0696421, -33.0970424], [-70.069685, -33.0968042], [-70.069744, -33.096611], [-70.0698137, -33.0963144], [-70.0699532, -33.0960312], [-70.0701141, -33.09582], [-70.0702483, -33.0956672], [-70.0705111, -33.0954335], [-70.0706238, -33.0953212], [-70.0707579, -33.0951369], [-70.0708008, -33.0950111], [-70.0708062, -33.0948223], [-70.0708008, -33.094683], [-70.0707203, -33.0945437], [-70.0706184, -33.0944089], [-70.0702697, -33.0941257], [-70.070082, -33.0939864], [-70.0697601, -33.0937168], [-70.0695884, -33.093564], [-70.0694543, -33.0934201], [-70.0694221, -33.0932763], [-70.0694221, -33.093119], [-70.0695133, -33.0928089], [-70.0695938, -33.0926067], [-70.0695509, -33.092373], [-70.0695026, -33.0921842], [-70.0694919, -33.0919955], [-70.069508, -33.0918786], [-70.0694811, -33.0916314], [-70.0694811, -33.0915011], [-70.069449, -33.0913078], [-70.0694007, -33.091155], [-70.0693041, -33.0909842], [-70.0691915, -33.090755], [-70.0690359, -33.0904809], [-70.0688803, -33.0903371], [-70.068714, -33.0902067], [-70.0684834, -33.090009], [-70.0683117, -33.0898786], [-70.0680971, -33.089582], [-70.0679791, -33.0893977], [-70.0678021, -33.0892269], [-70.0677002, -33.0890607], [-70.0675178, -33.088791], [-70.0674856, -33.0886996], [-70.0674641, -33.0885932], [-70.06744, -33.0883168], [-70.0674373, -33.0881954], [-70.0674427, -33.0880809], [-70.0674534, -33.0878561], [-70.0675285, -33.0875235], [-70.0675955, -33.0872898], [-70.0677297, -33.0870067], [-70.0678772, -33.0868067], [-70.0679657, -33.0867168], [-70.0680435, -33.0866067], [-70.0682232, -33.0863235], [-70.0683171, -33.0861617], [-70.0683841, -33.0859707], [-70.0684431, -33.0858269], [-70.0685236, -33.0856291], [-70.0686067, -33.085465], [-70.0686979, -33.0853774], [-70.0689608, -33.0851616], [-70.0691432, -33.0850425], [-70.0692961, -33.084856], [-70.0694329, -33.0846695], [-70.0694624, -33.0845324], [-70.0694811, -33.0843481], [-70.0694758, -33.084193], [-70.0694677, -33.0840223], [-70.0694811, -33.0837121], [-70.0694758, -33.0835368], [-70.0695133, -33.0833795], [-70.0696528, -33.0830424], [-70.0697869, -33.0828581], [-70.0699049, -33.0827368], [-70.0700122, -33.0826514], [-70.0701195, -33.0825255], [-70.0702697, -33.0823367], [-70.0703663, -33.0821794], [-70.070436, -33.0819637], [-70.0704843, -33.0818288], [-70.0705326, -33.0815861], [-70.0704897, -33.0812939], [-70.0703609, -33.0810467], [-70.070259, -33.08084], [-70.0702107, -33.0805433], [-70.0701302, -33.0803141], [-70.0700927, -33.0800578], [-70.0700873, -33.0798556], [-70.0700766, -33.0796353], [-70.0701517, -33.0793746], [-70.0702429, -33.079078], [-70.0703555, -33.0788532], [-70.0705057, -33.0785925], [-70.0706613, -33.0783543], [-70.0707847, -33.078098], [-70.070892, -33.0777609], [-70.0710905, -33.0773788], [-70.0711978, -33.0770732], [-70.0712782, -33.076817], [-70.0715464, -33.0761247], [-70.0716215, -33.0759404], [-70.0716484, -33.0756707], [-70.0716698, -33.075455], [-70.0717449, -33.074956], [-70.0717771, -33.0747402], [-70.0717986, -33.0744166], [-70.0718844, -33.0742368], [-70.0720561, -33.073994], [-70.0720883, -33.0739131], [-70.072099, -33.0737063], [-70.0721741, -33.0734186], [-70.0723136, -33.0731489], [-70.0724316, -33.0729961], [-70.0724852, -33.0729152], [-70.0725603, -33.0728522], [-70.0728071, -33.0724207], [-70.0728607, -33.0723398], [-70.0731933, -33.0717913], [-70.0733006, -33.0716295], [-70.0733864, -33.0714497], [-70.0734615, -33.071162], [-70.0735688, -33.0709732], [-70.0736332, -33.0709013], [-70.0731826, -33.0700516], [-70.0732255, -33.0698134], [-70.0732523, -33.069674], [-70.0732738, -33.0694942], [-70.0733167, -33.0692245], [-70.0733328, -33.0690312], [-70.0733113, -33.0687435], [-70.0732577, -33.0684782], [-70.0732577, -33.068249], [-70.0732845, -33.0681321], [-70.073365, -33.0678129], [-70.0733703, -33.0676286], [-70.0733864, -33.0673858], [-70.0734884, -33.0671925], [-70.0735688, -33.0670577], [-70.0738531, -33.0666531], [-70.0739819, -33.0664597], [-70.0741455, -33.066217], [-70.074234, -33.0659877], [-70.0743198, -33.0658438], [-70.0743856, -33.0656899], [-70.0744969, -33.0654572], [-70.0745747, -33.0653201], [-70.0746658, -33.0651088], [-70.0748107, -33.0648863], [-70.0748831, -33.0647626], [-70.0751406, -33.0642614], [-70.0753391, -33.0639692], [-70.0755107, -33.0634881], [-70.0757092, -33.0632319], [-70.0758433, -33.063115], [-70.0760526, -33.0629756], [-70.0762028, -33.0628407], [-70.0764173, -33.0626969], [-70.0766319, -33.0625395], [-70.0768465, -33.0624271], [-70.0770986, -33.0623372], [-70.0774205, -33.0622922], [-70.0776619, -33.0622518], [-70.0780481, -33.0622248], [-70.0783378, -33.0621304], [-70.0784826, -33.0620585], [-70.0786382, -33.061955], [-70.0788474, -33.0618112], [-70.079003, -33.0616898], [-70.0792712, -33.0614425], [-70.0794697, -33.0612447], [-70.0795448, -33.0611098], [-70.0796574, -33.0609435], [-70.0798827, -33.0607592], [-70.0800222, -33.0606333], [-70.0801456, -33.0605074], [-70.0802851, -33.060359], [-70.0804192, -33.0602196], [-70.0806016, -33.0600173], [-70.080682, -33.0599319], [-70.0808162, -33.0598195], [-70.0811219, -33.0596846], [-70.0812453, -33.0596082], [-70.0815511, -33.0594733], [-70.0818086, -33.0593924], [-70.0823128, -33.0592215], [-70.0827152, -33.0591002], [-70.0831121, -33.0590012], [-70.0833321, -33.0589338], [-70.0835359, -33.0588124], [-70.0836647, -33.058709], [-70.0838202, -33.0585561], [-70.0840026, -33.0583853], [-70.084362, -33.0581335], [-70.0846785, -33.0579087], [-70.0848395, -33.0577199], [-70.0850809, -33.0575131], [-70.0853598, -33.0572748], [-70.0855905, -33.0570185], [-70.0857943, -33.0568117], [-70.0859767, -33.0566318], [-70.0861538, -33.056452], [-70.0864112, -33.0562317], [-70.0868082, -33.0560069], [-70.086996, -33.055908], [-70.0871891, -33.055836], [-70.0874358, -33.0557416], [-70.0876504, -33.0556472], [-70.0878865, -33.0555258], [-70.0880581, -33.0554179], [-70.0882834, -33.0552785], [-70.0884765, -33.0551931], [-70.0887662, -33.0550672], [-70.0890023, -33.0549548], [-70.0891417, -33.0548649], [-70.0893885, -33.054703], [-70.0895333, -33.0545771], [-70.0897372, -33.0543973], [-70.0901717, -33.054105], [-70.0903434, -33.0539701], [-70.0905043, -33.0538892], [-70.0905955, -33.0538487], [-70.0907403, -33.0538038], [-70.0909227, -33.0537408], [-70.0910622, -33.0536734], [-70.0914109, -33.053534], [-70.0917113, -33.0533811], [-70.0920224, -33.0531473], [-70.0923282, -33.0528595], [-70.0924999, -33.0527606], [-70.0927359, -33.0526122], [-70.0930578, -33.0524009], [-70.0933743, -33.0522121], [-70.0937229, -33.0520502], [-70.0941361, -33.0519108], [-70.0966267, -33.0525167], [-70.0995294, -33.0523369], [-70.1015668, -33.05201], [-70.1036343, -33.0548957], [-70.1054399, -33.0562508], [-70.1066448, -33.0581176], [-70.1081248, -33.0593176], [-70.1106896, -33.0607459], [-70.1124019, -33.0621819], [-70.1133262, -33.0628545], [-70.114582, -33.0647948], [-70.1150229, -33.0654278], [-70.1159842, -33.0668583], [-70.1154982, -33.0681144], [-70.1144221, -33.0698307], [-70.1134522, -33.0719696], [-70.1155798, -33.0723266], [-70.1184637, -33.0730098], [-70.1207156, -33.0733011], [-70.1239922, -33.0743737], [-70.1257893, -33.0758697], [-70.1271969, -33.0776776], [-70.1287258, -33.0792553], [-70.12942, -33.0799215], [-70.1294478, -33.0806829], [-70.1292858, -33.0821662], [-70.1294414, -33.0833906], [-70.1302976, -33.0848055], [-70.1312921, -33.0863633], [-70.1307857, -33.0891472], [-70.1311079, -33.0917026], [-70.132306, -33.0936541], [-70.1341471, -33.094686], [-70.1361008, -33.0941674], [-70.1381461, -33.0941474], [-70.1393978, -33.0950509], [-70.1410779, -33.094099], [-70.1434565, -33.0936793], [-70.1451023, -33.0944208], [-70.1478628, -33.0944037], [-70.1507532, -33.0946824], [-70.1525599, -33.0961043], [-70.1540534, -33.0967335], [-70.1562045, -33.0978732], [-70.1587344, -33.099091], [-70.1605475, -33.0988421], [-70.162291, -33.0978076], [-70.163233, -33.0982866], [-70.1639732, -33.0991809], [-70.1657081, -33.102163], [-70.167841, -33.1042787], [-70.171198, -33.1052259], [-70.1730316, -33.1056834], [-70.1743899, -33.1051972], [-70.1770174, -33.1028344], [-70.179259, -33.1020568], [-70.1819197, -33.1025601], [-70.1840655, -33.1034948], [-70.1856963, -33.1046452], [-70.1868121, -33.1056518], [-70.1879279, -33.1068021], [-70.1894728, -33.1081681], [-70.1912753, -33.1091746], [-70.1926485, -33.1098217], [-70.1952235, -33.1101812], [-70.1975409, -33.1106125], [-70.199515, -33.1109001], [-70.2002875, -33.1123379], [-70.2014891, -33.1144228], [-70.2021758, -33.116867], [-70.2026049, -33.118808], [-70.2026049, -33.1202457], [-70.2025191, -33.1220428], [-70.2032057, -33.1236242], [-70.2054373, -33.1247025], [-70.2080122, -33.1259963], [-70.2111021, -33.1264995], [-70.214192, -33.1276496], [-70.217282, -33.1287278], [-70.2190844, -33.1290872], [-70.2191702, -33.1300934], [-70.2203719, -33.1313872], [-70.2219168, -33.1329685], [-70.2231184, -33.1343341], [-70.2251784, -33.1345497], [-70.2267233, -33.1343341], [-70.2277533, -33.1346216], [-70.2290408, -33.1361309], [-70.2312724, -33.1374246], [-70.2342764, -33.1385027], [-70.232989, -33.1398682], [-70.2320448, -33.1415931], [-70.230393, -33.1442355], [-70.2290197, -33.1459602], [-70.2267881, -33.1481161], [-70.2261015, -33.1495534], [-70.2281614, -33.1525715], [-70.228848, -33.1545835], [-70.2292772, -33.1572422], [-70.2300497, -33.1588949], [-70.2330537, -33.1609068], [-70.237002, -33.1628467], [-70.2385469, -33.1644993], [-70.2393194, -33.1659363], [-70.2400919, -33.1681635], [-70.2406068, -33.1701033], [-70.2417226, -33.1720431], [-70.2430101, -33.1736955], [-70.2448984, -33.1759944], [-70.2467008, -33.1774312], [-70.2487608, -33.1782932], [-70.2523656, -33.1792271], [-70.2585455, -33.1818851], [-70.261807, -33.1828907], [-70.263352, -33.1827471], [-70.2651544, -33.1820287], [-70.2662702, -33.1812385], [-70.2662702, -33.180161], [-70.2658411, -33.1787961], [-70.2650686, -33.177503], [-70.2644678, -33.1754197], [-70.2642961, -33.1735518], [-70.2645536, -33.1716121], [-70.2646394, -33.169313], [-70.2648969, -33.1671577], [-70.2653261, -33.1657926], [-70.2660986, -33.1650741], [-70.2677293, -33.1633497], [-70.2685018, -33.1614097], [-70.2686735, -33.1599008], [-70.268416, -33.1586075], [-70.268416, -33.1573141], [-70.2686735, -33.1557332], [-70.2698751, -33.1535775], [-70.2702184, -33.1507032], [-70.2702184, -33.1491222], [-70.2710767, -33.1471101], [-70.2714201, -33.1440917], [-70.2707334, -33.1426544], [-70.2697034, -33.1412171], [-70.2702184, -33.1386298], [-70.2715917, -33.1353237], [-70.2710767, -33.1330237], [-70.2717634, -33.1311549], [-70.2743383, -33.1305799], [-70.2777715, -33.130508], [-70.2818056, -33.1307956], [-70.2844663, -33.1315862], [-70.2868696, -33.1316581], [-70.2893587, -33.1307237], [-70.2913328, -33.129358], [-70.2927919, -33.1281361], [-70.2947988, -33.1264798], [-70.2955366, -33.1258754], [-70.2958975, -33.1248934], [-70.295796, -33.1240389], [-70.2965685, -33.122098], [-70.2965685, -33.1204447], [-70.2964826, -33.1192226], [-70.2973409, -33.1178568], [-70.2979417, -33.1161315], [-70.2987142, -33.114478], [-70.29983, -33.113184], [-70.3016325, -33.1126088], [-70.3033491, -33.1126088], [-70.3051515, -33.1114586], [-70.3072973, -33.1100207], [-70.3091856, -33.1086547], [-70.3110738, -33.1081514], [-70.3133054, -33.1083671], [-70.3143354, -33.1095174], [-70.3169103, -33.1089423], [-70.3193994, -33.1067135], [-70.3207727, -33.1052037], [-70.3223177, -33.104269], [-70.3241201, -33.1041252], [-70.32721, -33.1041971], [-70.3290125, -33.1039095], [-70.3305574, -33.1026872], [-70.3311582, -33.1008178], [-70.332789, -33.0988046], [-70.3344198, -33.0978698], [-70.3363939, -33.0972946], [-70.3385397, -33.0970789], [-70.3405996, -33.0969351], [-70.3423162, -33.0970789], [-70.3426595, -33.0986608], [-70.3426595, -33.1009616], [-70.3431745, -33.102831], [-70.3454061, -33.1034062], [-70.3483244, -33.1045566], [-70.3510709, -33.105707], [-70.3570791, -33.1058508], [-70.3627439, -33.1065697], [-70.3685879, -33.1065697], [-70.3687521, -33.1065697], [-70.3725286, -33.1052756], [-70.3752752, -33.1025434], [-70.3771635, -33.0998112], [-70.3793951, -33.0967913], [-70.3821417, -33.093196], [-70.3845449, -33.0917578], [-70.3871198, -33.0893129], [-70.3876348, -33.0885937], [-70.3869482, -33.086724], [-70.3855749, -33.0844228], [-70.3854032, -33.0821215], [-70.3881498, -33.0809708], [-70.3917547, -33.0801078], [-70.3938146, -33.0795325], [-70.3948446, -33.0776626], [-70.3948446, -33.0753611], [-70.3951879, -33.0736349], [-70.3967329, -33.0717649], [-70.3986211, -33.0704702], [-70.4013677, -33.0703264], [-70.403256, -33.0698948], [-70.404286, -33.0678809], [-70.4058309, -33.065723], [-70.4063459, -33.0639966], [-70.404801, -33.0608316], [-70.3998909, -33.0537719], [-70.3981743, -33.0514698], [-70.3951879, -33.0491056], [-70.3967329, -33.0478825], [-70.398861, -33.0441315], [-70.4000626, -33.0424047], [-70.399376, -33.040534], [-70.398861, -33.0373681], [-70.398861, -33.0347778], [-70.3990326, -33.0329069], [-70.4026375, -33.03118], [-70.4065857, -33.0287333], [-70.4131089, -33.0249913], [-70.4154177, -33.0242912], [-70.4191084, -33.0236435], [-70.4227991, -33.0245071], [-70.4229708, -33.0231398], [-70.4240952, -33.021537], [-70.4264898, -33.0206929], [-70.429245, -33.0205295], [-70.4333649, -33.0211052], [-70.4349099, -33.0224006], [-70.4373131, -33.025567], [-70.4417763, -33.029309], [-70.4448662, -33.0318995], [-70.4469262, -33.0359291], [-70.4501877, -33.0370803], [-70.452591, -33.0386633], [-70.4532776, -33.0425486], [-70.4558526, -33.0452826], [-70.4589425, -33.0477288], [-70.4603158, -33.0523331], [-70.4630623, -33.0557862], [-70.464264, -33.0602463], [-70.4656373, -33.0625482], [-70.4683838, -33.06485], [-70.4711304, -33.0655693], [-70.4747353, -33.0664324], [-70.4779969, -33.0710358], [-70.4793702, -33.0754951], [-70.4812584, -33.0803856], [-70.4857216, -33.081824], [-70.4936181, -33.0841253], [-70.4975663, -33.0857074], [-70.5013428, -33.0870018], [-70.505806, -33.0887277], [-70.5086384, -33.0881524], [-70.5102692, -33.0853478], [-70.512415, -33.0834061], [-70.5140458, -33.0823993], [-70.5149041, -33.0808891], [-70.5163632, -33.080026], [-70.5183373, -33.0790911], [-70.5190239, -33.0776527], [-70.5186806, -33.0760704], [-70.5187664, -33.0736251], [-70.5205689, -33.0720427], [-70.5211697, -33.0699569], [-70.5231438, -33.0674394], [-70.5242596, -33.0642026], [-70.5244313, -33.0615411], [-70.5254612, -33.0593111], [-70.5264054, -33.0572969], [-70.526577, -33.0551388], [-70.5268345, -33.0519015], [-70.5273495, -33.0501749], [-70.5318985, -33.0502468], [-70.5329285, -33.0493835], [-70.5335293, -33.047513], [-70.5349026, -33.0462179], [-70.5379067, -33.0445632], [-70.5412541, -33.0427645], [-70.543314, -33.0408218], [-70.5458889, -33.0398865], [-70.5489789, -33.0371523], [-70.5513821, -33.0351376], [-70.5525837, -33.032835], [-70.5524979, -33.0308202], [-70.5503521, -33.0279418], [-70.5495797, -33.0257829], [-70.5489789, -33.0226165], [-70.5482064, -33.0208893], [-70.5464898, -33.0199538], [-70.5457173, -33.0177227], [-70.5465756, -33.0163553], [-70.5464039, -33.0147719], [-70.5469189, -33.0134045], [-70.5481205, -33.0121809], [-70.5491505, -33.0089421], [-70.5500947, -33.0073586], [-70.5536995, -33.0050552], [-70.5558453, -33.0036876], [-70.5567036, -33.0026799], [-70.5566178, -33.0013842], [-70.5568753, -32.9992247], [-70.5578194, -32.9974251], [-70.5594502, -32.9962013], [-70.561081, -32.9949775], [-70.5629693, -32.9931058], [-70.5647717, -32.9899382], [-70.5669175, -32.9884984], [-70.5709515, -32.9872745], [-70.5733548, -32.9856906], [-70.5747281, -32.9841067], [-70.5759297, -32.9818748], [-70.5775605, -32.9784908], [-70.580822, -32.9756827], [-70.5859719, -32.9730905], [-70.5876885, -32.9709303], [-70.5907784, -32.9697782], [-70.5927525, -32.9694902], [-70.5916367, -32.9672579], [-70.5915509, -32.9643774], [-70.5911217, -32.9617849], [-70.591465, -32.9596245], [-70.5926667, -32.9573199], [-70.5950699, -32.9551593], [-70.5973015, -32.9537189], [-70.5974732, -32.9525666], [-70.5950699, -32.9499737], [-70.5938683, -32.9482451], [-70.5942116, -32.9468046], [-70.5962716, -32.9449319], [-70.6003914, -32.9437794], [-70.6039963, -32.9421947], [-70.6063996, -32.9423388], [-70.6086312, -32.9437794], [-70.6105195, -32.9459402], [-70.6118927, -32.9489654], [-70.6140235, -32.9516435], [-70.6154976, -32.9495416], [-70.6182442, -32.9476689], [-70.6216774, -32.9476689], [-70.6251107, -32.9486773], [-70.6294022, -32.947957], [-70.6319771, -32.9472367], [-70.635582, -32.9470927], [-70.6381569, -32.9478129], [-70.6414185, -32.9499737], [-70.6436501, -32.950982], [-70.6463967, -32.9514142], [-70.6496582, -32.9514142], [-70.6534348, -32.9534308], [-70.6587563, -32.9527106], [-70.6623612, -32.954007], [-70.6647645, -32.9551593], [-70.669056, -32.9557355], [-70.6697426, -32.9571759], [-70.6723176, -32.9586162], [-70.6754075, -32.9591924], [-70.678669, -32.9581841], [-70.6838189, -32.9573199], [-70.6863733, -32.9562112], [-70.688797, -32.9551593], [-70.6941185, -32.9547272], [-70.6989251, -32.9563116], [-70.7030449, -32.9565997], [-70.7069931, -32.9565997], [-70.710598, -32.9565997], [-70.7130013, -32.9547272], [-70.7154046, -32.9537189], [-70.7176362, -32.9531427], [-70.7195244, -32.9519904], [-70.7207261, -32.9492535], [-70.7203827, -32.9411863], [-70.7210694, -32.9387372], [-70.721241, -32.9352795], [-70.7219277, -32.9319658], [-70.7215844, -32.9292282], [-70.7224427, -32.9262024], [-70.7257042, -32.9259143], [-70.7305108, -32.9250497], [-70.7332573, -32.9241852], [-70.7363472, -32.9221679], [-70.7401238, -32.9243293], [-70.7413254, -32.9253379], [-70.745102, -32.9274992], [-70.7488785, -32.9285078], [-70.7554017, -32.9289401], [-70.7581482, -32.9292282], [-70.7610665, -32.9296605], [-70.7636414, -32.9319658], [-70.7679329, -32.9338388], [-70.7729111, -32.9352795], [-70.7747994, -32.9341269], [-70.777546, -32.9335506], [-70.7787476, -32.9313894], [-70.7804642, -32.9285078], [-70.7821808, -32.9283637], [-70.7873307, -32.9295164], [-70.7917939, -32.928796], [-70.7962571, -32.9262024], [-70.8002053, -32.9246175], [-70.8036385, -32.9247616], [-70.8072449, -32.9263896], [-70.8107769, -32.9291273], [-70.8118683, -32.9293895], [-70.8119914, -32.9294282], [-70.814944, -32.9302403], [-70.817845, -32.9302835], [-70.8213426, -32.9283564], [-70.8256985, -32.9278413], [-70.8320543, -32.9276288], [-70.836436, -32.9266886], [-70.8393413, -32.9247146], [-70.8415757, -32.9228884], [-70.8438931, -32.9242572], [-70.8456097, -32.925482], [-70.8486138, -32.9274272], [-70.8538495, -32.9291562], [-70.8588276, -32.9299486], [-70.86166, -32.9302368], [-70.8649216, -32.932398], [-70.8669816, -32.9327582], [-70.868269, -32.9321098], [-70.8704148, -32.9308131], [-70.8718739, -32.9307411], [-70.8742772, -32.93247], [-70.8767663, -32.9339108], [-70.8795987, -32.9355676], [-70.8837185, -32.9369363], [-70.8854352, -32.938377], [-70.8872376, -32.938305], [-70.8885251, -32.9380889], [-70.8904133, -32.9371524], [-70.8937607, -32.9349193], [-70.896164, -32.9340549], [-70.8981381, -32.934271], [-70.9016572, -32.9352795], [-70.9050904, -32.9359278], [-70.9062062, -32.9371524], [-70.9085236, -32.9398897], [-70.9140168, -32.9420507], [-70.9158192, -32.9442116], [-70.9160767, -32.9467326], [-70.9176217, -32.9483892], [-70.9194241, -32.9505499], [-70.921999, -32.9537909], [-70.923029, -32.9545111], [-70.9238873, -32.9558795], [-70.9239731, -32.9595524], [-70.9252606, -32.961929], [-70.9265481, -32.9645215], [-70.9288655, -32.9675459], [-70.9315262, -32.9690581], [-70.9361611, -32.9710024], [-70.9383927, -32.9724425], [-70.9403668, -32.9729465], [-70.9430275, -32.9724425], [-70.9460316, -32.9718664], [-70.9474907, -32.9712184], [-70.9491215, -32.9690581], [-70.9518681, -32.9669698], [-70.9534989, -32.9658177], [-70.9551297, -32.9670419], [-70.9570179, -32.9689861], [-70.959507, -32.9714344], [-70.9630261, -32.9732345], [-70.9682618, -32.9752507], [-70.9710942, -32.9761867], [-70.9751282, -32.9764747], [-70.9789048, -32.9763307], [-70.9813939, -32.9764027], [-70.9837113, -32.9773388], [-70.9868012, -32.9795708], [-70.9883461, -32.9784188], [-70.9911786, -32.9774108], [-70.9948693, -32.9769788], [-70.9971009, -32.9766187], [-70.9995041, -32.9756827], [-71.0025082, -32.9756827], [-71.009203, -32.9755387], [-71.0134087, -32.9762587], [-71.0141764, -32.9766828], [-71.0169278, -32.9782028], [-71.0190735, -32.9803628], [-71.0210476, -32.9826668], [-71.0226784, -32.9846827], [-71.0249958, -32.9867705], [-71.0270558, -32.9888584], [-71.0270326, -32.9890726], [-71.0267983, -32.9912341], [-71.02697, -32.9944736], [-71.0270558, -32.9973531], [-71.0267983, -33.0002325], [-71.0267983, -33.0036156], [-71.0257683, -33.005919], [-71.0241375, -33.0072146], [-71.0240405, -33.0073037], [-71.0223351, -33.0088701], [-71.0209618, -33.0103096], [-71.0195027, -33.0126847], [-71.0196743, -33.0163553], [-71.0195027, -33.0189462], [-71.019331, -33.0211052], [-71.0185585, -33.0228324], [-71.0174427, -33.0254951], [-71.0152112, -33.0297408], [-71.0144387, -33.0321874], [-71.0144387, -33.0339863], [-71.013752, -33.0367206], [-71.0090313, -33.0412535], [-71.008173, -33.0422608], [-71.0054265, -33.0450668], [-71.0008774, -33.0476568], [-71.0021649, -33.0503907], [-71.0035382, -33.0522612], [-71.0055981, -33.0526209], [-71.0070572, -33.0537719], [-71.0074864, -33.0562898], [-71.0089455, -33.0581602], [-71.0093747, -33.0595989], [-71.0086022, -33.0622604], [-71.0089455, -33.0642026], [-71.0110054, -33.06485], [-71.013752, -33.0666482], [-71.0150395, -33.0680149], [-71.0176144, -33.0699569], [-71.0180436, -33.0712516], [-71.018816, -33.0725462], [-71.0211335, -33.0742005], [-71.0247384, -33.0775089], [-71.026455, -33.0802418], [-71.0288582, -33.08355], [-71.0257683, -33.0859951], [-71.0233651, -33.0872895], [-71.0189019, -33.0910288], [-71.0180618, -33.0926589], [-71.0167912, -33.0936392], [-71.0148431, -33.0951397], [-71.014929, -33.0961823], [-71.015401, -33.0970092], [-71.015916, -33.0991663], [-71.0166885, -33.1006763], [-71.0173569, -33.1028212], [-71.0175897, -33.1049183], [-71.0197602, -33.1092919], [-71.0199072, -33.1116765], [-71.0193063, -33.1136176], [-71.0197355, -33.1164931], [-71.0190735, -33.119069], [-71.017496, -33.1214472], [-71.0164986, -33.1229508], [-71.0151436, -33.1255506], [-71.0146103, -33.1281262], [-71.0127403, -33.1308337], [-71.0122071, -33.1330139], [-71.0125257, -33.13529], [-71.0120354, -33.138045], [-71.0128937, -33.1425008], [-71.0125504, -33.1460941], [-71.0154686, -33.1485375], [-71.013752, -33.1515556], [-71.0113488, -33.1538551], [-71.0077439, -33.1547174], [-71.0053406, -33.1541425], [-71.0044823, -33.1571605], [-71.0008774, -33.1620465], [-70.9964142, -33.1679381], [-70.9936676, -33.1742604], [-70.9937713, -33.1774505], [-70.9940203, -33.1796703], [-70.9923466, -33.1828238], [-70.9952905, -33.1866813], [-70.9963892, -33.189928], [-70.998432, -33.1923845], [-70.99699, -33.1957099], [-70.9972475, -33.198827], [-71.0022507, -33.1978211], [-71.0070572, -33.1985393], [-71.0120354, -33.1998321], [-71.0154686, -33.2008376], [-71.0178719, -33.2025612], [-71.0235367, -33.2015558], [-71.0267983, -33.2021303], [-71.0283432, -33.2051466], [-71.02697, -33.2093119], [-71.0257683, -33.2133333], [-71.0262068, -33.2163999], [-71.0301807, -33.2166727], [-71.0336647, -33.214913], [-71.0343514, -33.2118971], [-71.036583, -33.2085937], [-71.0393296, -33.2074447], [-71.0422478, -33.207732], [-71.0451661, -33.2093119], [-71.0480843, -33.2095991], [-71.0506592, -33.2071575], [-71.0532341, -33.2055775], [-71.0564957, -33.2051466], [-71.057354, -33.2060084], [-71.0582123, -33.2078756], [-71.0580407, -33.2117534], [-71.0593803, -33.2147698], [-71.0602386, -33.216802], [-71.0598953, -33.219947], [-71.0599289, -33.2243912], [-71.0621605, -33.2264015], [-71.0667954, -33.2289862], [-71.0728035, -33.2297042], [-71.0748635, -33.2305658], [-71.0772667, -33.2284119], [-71.0808716, -33.22554], [-71.0849915, -33.2243912], [-71.0880814, -33.2225243], [-71.0909996, -33.2206575], [-71.0934029, -33.2197958], [-71.0980378, -33.2203703], [-71.1035309, -33.2203703], [-71.1081658, -33.2202267], [-71.1109124, -33.2202267], [-71.1130133, -33.222121], [-71.1150732, -33.2251366], [-71.1157599, -33.2270034], [-71.1176482, -33.2281521], [-71.1198656, -33.2311208], [-71.1224547, -33.2320291], [-71.1241378, -33.2325064], [-71.1264681, -33.2336246], [-71.1294293, -33.2340805], [-71.1314098, -33.2359991], [-71.1338024, -33.2363168], [-71.135652, -33.2365321], [-71.1379287, -33.2373236], [-71.1403491, -33.2381294], [-71.1411658, -33.2367673], [-71.143569, -33.2356187], [-71.1478529, -33.233061], [-71.1500922, -33.2317419], [-71.1523238, -33.2285829], [-71.1554137, -33.2280085], [-71.1585036, -33.2274342], [-71.1609068, -33.2261418], [-71.1627951, -33.225711], [-71.1641684, -33.2265726], [-71.1650267, -33.2281521], [-71.1681166, -33.230306], [-71.1698062, -33.2311908], [-71.1713782, -33.2313111], [-71.1739583, -33.2303382], [-71.1764186, -33.2289485], [-71.1787596, -33.2282957], [-71.1816659, -33.2274269], [-71.184376, -33.2267286], [-71.1855561, -33.2274502], [-71.1868277, -33.2275777], [-71.189897, -33.2266927], [-71.1924698, -33.2271684], [-71.1940148, -33.2282005], [-71.1960786, -33.2287408], [-71.1978596, -33.2286869], [-71.1997804, -33.2282507], [-71.2011984, -33.2295144], [-71.2032308, -33.2308803], [-71.2050569, -33.2316431], [-71.2069065, -33.2319231], [-71.2089343, -33.2317813], [-71.2109298, -33.2317687], [-71.2119104, -33.2324615], [-71.213597, -33.2334056], [-71.214554, -33.2341253], [-71.2157106, -33.2342976], [-71.2156668, -33.2354751], [-71.2155857, -33.2370059], [-71.2155132, -33.2384381], [-71.2158994, -33.2390609], [-71.2174723, -33.2400713], [-71.2182937, -33.2400246], [-71.2203385, -33.2401099], [-71.2217767, -33.240721], [-71.2224569, -33.2414819], [-71.2226801, -33.2425246], [-71.2242529, -33.2442995], [-71.2254515, -33.2465302], [-71.2256232, -33.248253], [-71.2256232, -33.2499757], [-71.2250486, -33.2509841], [-71.2242589, -33.2520105], [-71.22192, -33.2532845], [-71.2211372, -33.2547694], [-71.2205364, -33.2575686], [-71.2199356, -33.2587169], [-71.2199356, -33.2601523], [-71.2206734, -33.2617537], [-71.2216776, -33.2632142], [-71.2228356, -33.2642173], [-71.2231603, -33.2653296], [-71.2240551, -33.2660723], [-71.2254842, -33.2665962], [-71.2263038, -33.2675669], [-71.2266965, -33.2688048], [-71.2263253, -33.2697772], [-71.224967, -33.2703208], [-71.2236624, -33.2710886], [-71.2231603, -33.2723732], [-71.2233298, -33.2750372], [-71.2227333, -33.2781838], [-71.2218466, -33.2801177], [-71.219615, -33.2812657], [-71.2182551, -33.2827222], [-71.2176514, -33.2839279], [-71.2173066, -33.2846165], [-71.2164998, -33.2851026], [-71.2152124, -33.2856263], [-71.2140429, -33.28596], [-71.2134352, -33.2871493], [-71.2135859, -33.2891797], [-71.2142532, -33.2903151], [-71.2138412, -33.2914791], [-71.2142339, -33.2922271], [-71.2148476, -33.2929373], [-71.2142747, -33.2940189], [-71.2136095, -33.2959272], [-71.2125645, -33.2975934], [-71.2123807, -33.2987645], [-71.2123133, -33.2992449], [-71.2122924, -33.2992964], [-71.2121019, -33.2997167], [-71.2119686, -33.2999171], [-71.2117933, -33.300141], [-71.2101097, -33.3030777], [-71.2077466, -33.3050102], [-71.2071715, -33.3058441], [-71.2063572, -33.3069686], [-71.2063353, -33.3082909], [-71.2063717, -33.3090125], [-71.2058063, -33.3089445], [-71.2047369, -33.3089105], [-71.2031235, -33.309021], [-71.2026214, -33.3098468], [-71.2009676, -33.3099927], [-71.199295, -33.3097511], [-71.1981392, -33.30948], [-71.195633, -33.3094991], [-71.1955529, -33.3108822], [-71.1963661, -33.3121051], [-71.1976986, -33.3135379], [-71.1989496, -33.3152898], [-71.2003285, -33.3156318], [-71.2010216, -33.3168072], [-71.2016207, -33.3172241], [-71.2024143, -33.3181509], [-71.2039795, -33.3196636], [-71.2050921, -33.3203602], [-71.2054876, -33.3216916], [-71.2058034, -33.3220649], [-71.2059433, -33.3239235], [-71.2058268, -33.3248628], [-71.2059303, -33.3258137], [-71.2065032, -33.3276111], [-71.20731, -33.3296227], [-71.2081962, -33.3306168], [-71.2095438, -33.3313367], [-71.2103752, -33.3318584], [-71.2110072, -33.33251], [-71.2112041, -33.3339962], [-71.2109917, -33.3355373], [-71.2116783, -33.3383321], [-71.213156, -33.3414136], [-71.2143801, -33.3435244], [-71.2148259, -33.3448437], [-71.2146983, -33.3463494], [-71.2150823, -33.3475302], [-71.2153897, -33.3482701], [-71.2159718, -33.3493097], [-71.2160088, -33.351923], [-71.2154906, -33.3533076], [-71.2144338, -33.3541845], [-71.2143592, -33.3550713], [-71.2158264, -33.3559585], [-71.2169138, -33.3576029], [-71.2177329, -33.3584197], [-71.2187462, -33.3592302], [-71.2194763, -33.3597679], [-71.2201431, -33.3605753], [-71.2201292, -33.3626143], [-71.2203507, -33.3649755], [-71.2209194, -33.3663061], [-71.2221999, -33.3675762], [-71.2229392, -33.3690067], [-71.2231939, -33.3696828], [-71.2233768, -33.370706], [-71.2227411, -33.3717767], [-71.2234165, -33.3726019], [-71.2241691, -33.3732833], [-71.2251009, -33.3741945], [-71.2262843, -33.374233], [-71.2271748, -33.3742272], [-71.2281238, -33.3744422], [-71.2293791, -33.3743522], [-71.230622, -33.3744189], [-71.2329775, -33.3751308], [-71.2340236, -33.3749901], [-71.235213, -33.374311], [-71.236061, -33.3743777], [-71.236908, -33.3749762], [-71.2378119, -33.3758784], [-71.2396643, -33.3779373], [-71.2412768, -33.379575], [-71.2425433, -33.3807307], [-71.2432396, -33.3815478], [-71.2433909, -33.3823684], [-71.2445534, -33.3834184], [-71.2453918, -33.3833736], [-71.2466793, -33.3828916], [-71.2476808, -33.3833104], [-71.2486051, -33.3833745], [-71.2501798, -33.3833861], [-71.2522288, -33.3833234], [-71.2548203, -33.3834497], [-71.2561019, -33.3838045], [-71.2575385, -33.3845037], [-71.2580513, -33.3850139], [-71.2587761, -33.3850614], [-71.2602711, -33.3856853], [-71.2619931, -33.3864137], [-71.2629539, -33.3867191], [-71.2637103, -33.3867496], [-71.2645541, -33.3869538], [-71.2662031, -33.3880414], [-71.2670014, -33.3885699], [-71.267048, -33.3886008], [-71.2674035, -33.3889902], [-71.2677428, -33.3893618], [-71.267657, -33.3904367], [-71.2672648, -33.3913996], [-71.2673206, -33.3924664], [-71.2673546, -33.3925646], [-71.267827, -33.3939301], [-71.269388, -33.3950274], [-71.2708986, -33.3963424], [-71.2715802, -33.3970627], [-71.2716389, -33.3971247], [-71.2718793, -33.3973787], [-71.2719314, -33.3974338], [-71.2720383, -33.3975467], [-71.2721743, -33.3976904], [-71.2723894, -33.397772], [-71.2724789, -33.3978059], [-71.2739317, -33.3983568], [-71.2749801, -33.3990439], [-71.2752959, -33.3992509], [-71.276145, -33.3997235], [-71.2765834, -33.3999674], [-71.2771821, -33.401178], [-71.2771821, -33.4012088], [-71.2771826, -33.4015425], [-71.2771833, -33.4019546], [-71.2771834, -33.4020085], [-71.2771839, -33.4023583], [-71.2771843, -33.4026021], [-71.2758071, -33.4040507], [-71.2771328, -33.4045743], [-71.2780425, -33.4055564], [-71.2798449, -33.4074193], [-71.2805224, -33.4085539], [-71.2821038, -33.4100711], [-71.283364, -33.4106435], [-71.2854026, -33.4103959], [-71.2866003, -33.4105054], [-71.289054, -33.410998], [-71.2906193, -33.4115533], [-71.2924411, -33.4118945], [-71.29403, -33.4116419], [-71.2958953, -33.4116465], [-71.2977198, -33.4128818], [-71.2988152, -33.4129185], [-71.2993651, -33.4118186], [-71.2999165, -33.4114872], [-71.3007876, -33.4112166], [-71.3029361, -33.4106795], [-71.3040573, -33.4097007], [-71.3055218, -33.4090908], [-71.3071665, -33.409011], [-71.3089727, -33.4094763], [-71.3107054, -33.4101095], [-71.3134611, -33.4103034], [-71.3147593, -33.4105304], [-71.3169206, -33.4103437], [-71.318317, -33.4100943], [-71.3192, -33.4101749], [-71.3201227, -33.4103938], [-71.321511, -33.4104001], [-71.3226498, -33.4101046], [-71.3232925, -33.4099373], [-71.324956, -33.409136], [-71.3252832, -33.4083093], [-71.3256496, -33.4074733], [-71.3260031, -33.4069959], [-71.3270518, -33.4070611], [-71.3279268, -33.40739], [-71.3298666, -33.4076779], [-71.3316985, -33.4076605], [-71.3322017, -33.4082791], [-71.3326308, -33.409927], [-71.3331458, -33.4115749], [-71.3343271, -33.4132516], [-71.3360131, -33.4128746], [-71.338639, -33.4135093], [-71.3408063, -33.4144152], [-71.342746, -33.4153018], [-71.343445, -33.4162696], [-71.3433596, -33.4178078], [-71.3432761, -33.4195196], [-71.3439412, -33.4212981], [-71.3436923, -33.4230102], [-71.3435099, -33.424194], [-71.342673, -33.4256164], [-71.341643, -33.4271923], [-71.3424155, -33.4285533], [-71.3432738, -33.429198], [-71.3435313, -33.4300576], [-71.3434455, -33.4315618], [-71.3428447, -33.4327079], [-71.3428447, -33.4334958], [-71.3414714, -33.4357878], [-71.3406907, -33.4373513], [-71.3407548, -33.4385987], [-71.3401754, -33.4395495], [-71.3387356, -33.4403159], [-71.3374117, -33.4410267], [-71.3373151, -33.4423087], [-71.338006, -33.443546], [-71.3380704, -33.4459291], [-71.3374396, -33.4471269], [-71.3378258, -33.448493], [-71.3388106, -33.4496822], [-71.3387528, -33.4506235], [-71.3382871, -33.4521578], [-71.3377097, -33.4538012], [-71.337317, -33.454622], [-71.3362919, -33.4560914], [-71.3367924, -33.4575822], [-71.3374753, -33.4582933], [-71.3390679, -33.4599609], [-71.3400309, -33.4611459], [-71.3402697, -33.4622138], [-71.3405389, -33.462898], [-71.3410807, -33.4641399], [-71.3413231, -33.4654099], [-71.3411346, -33.4671074], [-71.3411324, -33.4683944], [-71.3419005, -33.4695172], [-71.3420722, -33.4710923], [-71.3412997, -33.4721662], [-71.3402697, -33.4725958], [-71.3397548, -33.4735982], [-71.3393256, -33.4747437], [-71.3400122, -33.4763903], [-71.3408706, -33.477679], [-71.342158, -33.4790392], [-71.3434778, -33.4804795], [-71.3444541, -33.4819095], [-71.3455377, -33.4828777], [-71.3470504, -33.4836924], [-71.3483378, -33.4856252], [-71.3490245, -33.4869854], [-71.3502261, -33.4887033], [-71.351771, -33.4902781], [-71.3529727, -33.4920676], [-71.3529727, -33.4929982], [-71.352801, -33.4947876], [-71.352286, -33.4959329], [-71.3509986, -33.4973644], [-71.3497111, -33.498438], [-71.3491961, -33.49944], [-71.3493678, -33.5005136], [-71.3498828, -33.5019451], [-71.3503119, -33.5025892], [-71.3503119, -33.5035912], [-71.3513313, -33.5052709], [-71.3493678, -33.5064539], [-71.3489559, -33.507536], [-71.348252, -33.5094597], [-71.3487435, -33.5106187], [-71.3483379, -33.5115991], [-71.3485953, -33.5129664], [-71.349282, -33.514827], [-71.3497111, -33.5170453], [-71.3500544, -33.5184049], [-71.3500544, -33.5201223], [-71.3500544, -33.5216965], [-71.3501554, -33.5229304], [-71.3500544, -33.5249164], [-71.350179, -33.526415], [-71.3508356, -33.5275509], [-71.3509986, -33.5285655], [-71.3498828, -33.5297819], [-71.3481942, -33.5305452], [-71.3465355, -33.5311712], [-71.3447631, -33.5312804], [-71.3427675, -33.5304987], [-71.3413855, -33.5303542], [-71.3405702, -33.5307813], [-71.3394587, -33.531944], [-71.3371392, -33.5329581], [-71.3346136, -33.5342012], [-71.3326459, -33.5351241], [-71.3319442, -33.5356486], [-71.3327166, -33.5370795], [-71.333515, -33.5382345], [-71.334369, -33.5394936], [-71.3346265, -33.5404236], [-71.3345192, -33.54135], [-71.3335235, -33.5420887], [-71.3324013, -33.5428058], [-71.3316181, -33.5438592], [-71.3305709, -33.5469518], [-71.3303992, -33.5490262], [-71.3305817, -33.5505101], [-71.3294551, -33.5530319], [-71.3291976, -33.555607], [-71.3291117, -33.5575382], [-71.3288007, -33.5587626], [-71.3281676, -33.5603276], [-71.3279101, -33.5611144], [-71.3283393, -33.5627594], [-71.3290259, -33.5644043], [-71.3297984, -33.5653341], [-71.3305709, -33.5666929], [-71.3309142, -33.5685524], [-71.3301417, -33.5695536], [-71.3289401, -33.5705548], [-71.3287684, -33.5717705], [-71.3291117, -33.5732008], [-71.3293692, -33.5741305], [-71.3293692, -33.5757037], [-71.3293393, -33.5768224], [-71.3290861, -33.5782133], [-71.3295861, -33.5799312], [-71.3290346, -33.5816885], [-71.3290561, -33.582416], [-71.3291612, -33.5828755], [-71.329114, -33.5835405], [-71.3293886, -33.5846309], [-71.3309057, -33.5849151], [-71.3319421, -33.5854764], [-71.3319078, -33.5868564], [-71.3317383, -33.5883472], [-71.3317597, -33.5916021], [-71.3319743, -33.594453], [-71.3335552, -33.596906], [-71.3343969, -33.5989303], [-71.3351083, -33.6000008], [-71.3352478, -33.6003046], [-71.335237, -33.6006978], [-71.3353336, -33.6010106], [-71.3355374, -33.6014306], [-71.3357949, -33.6018238], [-71.3359022, -33.6022348], [-71.3359988, -33.6027084], [-71.3360202, -33.6032982], [-71.3359988, -33.603602], [-71.3358164, -33.6041292], [-71.3356876, -33.6047369], [-71.3356233, -33.6052194], [-71.3356233, -33.60555], [-71.3357306, -33.6061755], [-71.3357306, -33.6066491], [-71.3356662, -33.6069261], [-71.3357085, -33.6073214], [-71.3358915, -33.607489], [-71.3363421, -33.6076231], [-71.3368893, -33.607775], [-71.3374043, -33.6080073], [-71.3377369, -33.6082664], [-71.3380373, -33.6086953], [-71.3381767, -33.6090617], [-71.3383806, -33.6093923], [-71.3387775, -33.6097944], [-71.3390833, -33.6100937], [-71.3392282, -33.6102501], [-71.3395608, -33.6106611], [-71.3397002, -33.610813], [-71.3399953, -33.6109604], [-71.3403547, -33.6110811], [-71.3406336, -33.6111436], [-71.340875, -33.6112017], [-71.3413793, -33.6112732], [-71.3416636, -33.6113134], [-71.3419747, -33.6114921], [-71.3421571, -33.6117154], [-71.3424254, -33.6119209], [-71.3426715, -33.6120357], [-71.3428867, -33.6120192], [-71.3430798, -33.6119656], [-71.3434661, -33.6118941], [-71.3438523, -33.6119567], [-71.3443565, -33.6121175], [-71.3448393, -33.6124213], [-71.3453221, -33.6128412], [-71.3457406, -33.6132255], [-71.346159, -33.613556], [-71.3464594, -33.6137973], [-71.3466954, -33.6141547], [-71.346674, -33.6143959], [-71.3467276, -33.6147265], [-71.3467437, -33.6149588], [-71.3468295, -33.6151777], [-71.3470495, -33.6154457], [-71.3474035, -33.6156289], [-71.3476825, -33.6157987], [-71.3482082, -33.616031], [-71.3485623, -33.6162007], [-71.3487232, -33.6163571], [-71.3488305, -33.6165045], [-71.3489378, -33.6167368], [-71.3490343, -33.6171478], [-71.3491953, -33.6173533], [-71.3494849, -33.6174694], [-71.3500428, -33.617657], [-71.3503432, -33.6178], [-71.350869, -33.6179787], [-71.3512927, -33.6179921], [-71.3515341, -33.6180323], [-71.3520867, -33.618135], [-71.3525641, -33.618278], [-71.3528538, -33.6183361], [-71.3532293, -33.6184388], [-71.3534921, -33.6185326], [-71.3536531, -33.6186264], [-71.3537443, -33.6187515], [-71.3537818, -33.6189436], [-71.3538408, -33.6192027], [-71.3539159, -33.6196181], [-71.3539857, -33.6198817], [-71.3540769, -33.6202123], [-71.35427, -33.6205071], [-71.3544524, -33.6208823], [-71.3546562, -33.621061], [-71.3550129, -33.6212101], [-71.3553858, -33.6212844], [-71.355933, -33.6214005], [-71.3563836, -33.6215434], [-71.3567484, -33.6217668], [-71.3569951, -33.6220169], [-71.3571185, -33.6222626], [-71.3572311, -33.6224011], [-71.3574404, -33.6226245], [-71.3577515, -33.6228031], [-71.3582557, -33.6229371], [-71.3586098, -33.6229595], [-71.3589799, -33.6229863], [-71.3594145, -33.6230131], [-71.3595915, -33.6230354], [-71.3598543, -33.623098], [-71.3601387, -33.6231962], [-71.3605785, -33.6232543], [-71.3609111, -33.6232409], [-71.3615012, -33.6232141], [-71.3620055, -33.6231203], [-71.3622898, -33.6230935], [-71.3626546, -33.623031], [-71.3631427, -33.6229639], [-71.3635558, -33.6228925], [-71.3639474, -33.6228835], [-71.3647735, -33.622955], [-71.3655675, -33.6229103], [-71.3662005, -33.6228925], [-71.3668764, -33.6228478], [-71.3675094, -33.6228835], [-71.3681102, -33.6229282], [-71.3686574, -33.6230086], [-71.3689149, -33.6230086], [-71.3692367, -33.6230086], [-71.3695908, -33.6228389], [-71.3698912, -33.6226155], [-71.3701916, -33.6224636], [-71.3705886, -33.6223386], [-71.3711894, -33.622285], [-71.3718438, -33.6220974], [-71.3721442, -33.6219723], [-71.3728523, -33.6216953], [-71.3735819, -33.621472], [-71.3740862, -33.621338], [-71.3745689, -33.621329], [-71.3751912, -33.6214362], [-71.3761246, -33.6216239], [-71.3769615, -33.6216596], [-71.3781095, -33.621606], [-71.3785601, -33.6215881], [-71.3791609, -33.6215881], [-71.37959, -33.6217132], [-71.380384, -33.6220259], [-71.3809526, -33.6222314], [-71.3815105, -33.6224726], [-71.3820469, -33.6228478], [-71.3824546, -33.6232141], [-71.3828409, -33.6235625], [-71.3832915, -33.6241075], [-71.3834417, -33.6243487], [-71.3835693, -33.6247669], [-71.3836455, -33.6250813], [-71.3836992, -33.6255994], [-71.3839352, -33.6260997], [-71.3840318, -33.626466], [-71.3840747, -33.6267831], [-71.384064, -33.6273414], [-71.3840103, -33.6278596], [-71.3839138, -33.6282258], [-71.3837206, -33.6285385], [-71.3834739, -33.6288154], [-71.3831413, -33.629137], [-71.3829482, -33.6294586], [-71.3827872, -33.6297624], [-71.3824761, -33.6303609], [-71.3821757, -33.6307272], [-71.3820899, -33.6309951], [-71.3818538, -33.6314775], [-71.3817251, -33.6318348], [-71.3815105, -33.6321564], [-71.3813496, -33.632353], [-71.3812423, -33.6325316], [-71.3811672, -33.6331033], [-71.3811994, -33.6335946], [-71.3811457, -33.6340055], [-71.3812101, -33.6344164], [-71.3813067, -33.634939], [-71.3813657, -33.635332], [-71.3816017, -33.6357072], [-71.3818967, -33.6359618], [-71.3822883, -33.6362119], [-71.3828838, -33.6364263], [-71.3834846, -33.6365781], [-71.383903, -33.6367032], [-71.3842678, -33.6367836], [-71.3847613, -33.6369444], [-71.385212, -33.6371677], [-71.3855982, -33.6373285], [-71.3859844, -33.637516], [-71.3864458, -33.6377929], [-71.3867891, -33.6380966], [-71.3869608, -33.6383825], [-71.3870573, -33.6386951], [-71.3875294, -33.6391685], [-71.3877332, -33.6392846], [-71.3880122, -33.6393739], [-71.3882268, -33.6393739], [-71.3886559, -33.6392846], [-71.38901, -33.6391953], [-71.3895142, -33.6391328], [-71.3898361, -33.6390881], [-71.3901687, -33.6391238], [-71.3905871, -33.6393204], [-71.3908339, -33.6394722], [-71.3912201, -33.6396687], [-71.3916063, -33.6399009], [-71.3918316, -33.6400796], [-71.3923681, -33.640285], [-71.3928402, -33.6404279], [-71.393323, -33.6405173], [-71.3934624, -33.6405351], [-71.393795, -33.6406512], [-71.3940418, -33.6408477], [-71.3942671, -33.6411246], [-71.394546, -33.6413926], [-71.3951469, -33.6418392], [-71.3954795, -33.6421607], [-71.3955438, -33.6423037], [-71.3956082, -33.6426073], [-71.3956297, -33.6428932], [-71.3957477, -33.6432326], [-71.3958657, -33.6435095], [-71.3960803, -33.6438578], [-71.3962519, -33.6442865], [-71.396327, -33.6446616], [-71.3965738, -33.6450904], [-71.3965738, -33.6453315], [-71.3965416, -33.6455548], [-71.396445, -33.6459121], [-71.3961983, -33.6465551], [-71.3959301, -33.6470464], [-71.3956404, -33.6476894], [-71.3955653, -33.6480824], [-71.3955653, -33.6487612], [-71.3955438, -33.649297], [-71.3955331, -33.6497615], [-71.3955653, -33.6502437], [-71.3956156, -33.6509217], [-71.3956082, -33.6512351], [-71.3956404, -33.6514851], [-71.3957048, -33.651762], [-71.395855, -33.6519362], [-71.3959515, -33.6520612], [-71.3961124, -33.6521996], [-71.3962251, -33.6523559], [-71.3962466, -33.6525122], [-71.396209, -33.6527265], [-71.396209, -33.652923], [-71.3962519, -33.6533874], [-71.3962519, -33.6536643], [-71.3962412, -33.6540036], [-71.3961768, -33.6545663], [-71.3961446, -33.6549592], [-71.3961446, -33.6552807], [-71.3961554, -33.6558255], [-71.3961983, -33.656406], [-71.396327, -33.6566203], [-71.3966704, -33.6568614], [-71.3968742, -33.6569596], [-71.397121, -33.6570489], [-71.3975394, -33.6571918], [-71.3978183, -33.6573883], [-71.3980436, -33.6576116], [-71.3983119, -33.6578437], [-71.3985908, -33.6581206], [-71.3988054, -33.6585403], [-71.3989234, -33.6590672], [-71.3989341, -33.6594422], [-71.3989663, -33.6599245], [-71.3988698, -33.6602906], [-71.3987625, -33.6606746], [-71.3987625, -33.6608978], [-71.3988376, -33.6612997], [-71.3989234, -33.6615944], [-71.3990951, -33.6618623], [-71.3991702, -33.6621034], [-71.3992345, -33.6625677], [-71.3992882, -33.6627553], [-71.3996422, -33.6631214], [-71.3998354, -33.6632732], [-71.4000714, -33.6633714], [-71.4004147, -33.6633089], [-71.4008546, -33.6631571], [-71.4013159, -33.6630499], [-71.4017129, -33.663041], [-71.402303, -33.6628713], [-71.4027214, -33.6628178], [-71.4032042, -33.662782], [-71.4037407, -33.662666], [-71.4041269, -33.6625052], [-71.4046419, -33.6619605], [-71.4049101, -33.6616747], [-71.4050925, -33.6613979], [-71.4053071, -33.6611032], [-71.405586, -33.6608889], [-71.4060795, -33.6605139], [-71.406734, -33.6601656], [-71.4070666, -33.6600227], [-71.4076138, -33.6599959], [-71.408, -33.6600138], [-71.4085472, -33.6600138], [-71.4089334, -33.6597727], [-71.409545, -33.6592815], [-71.4101136, -33.6588975], [-71.4107144, -33.6585492], [-71.4112508, -33.6583974], [-71.4115405, -33.6583974], [-71.4119911, -33.6584778], [-71.4124203, -33.658585], [-71.4126992, -33.658585], [-71.4132464, -33.6583974], [-71.4138365, -33.6582456], [-71.4146841, -33.6582099], [-71.4153063, -33.6582099], [-71.4157677, -33.6581831], [-71.4162934, -33.6579598], [-71.4169264, -33.6576562], [-71.417377, -33.6573972], [-71.4175916, -33.6572186], [-71.4177525, -33.6571115], [-71.4178598, -33.6570579], [-71.4180207, -33.6571829], [-71.4181817, -33.6574151], [-71.4183211, -33.6576741], [-71.4186537, -33.6580402], [-71.4190614, -33.6582992], [-71.4192653, -33.6585403], [-71.4193618, -33.6588082], [-71.4197052, -33.6591386], [-71.420027, -33.6593083], [-71.4205206, -33.6595048], [-71.4208746, -33.6597637], [-71.4212179, -33.6599334], [-71.4217115, -33.6600138], [-71.422323, -33.6600584], [-71.422838, -33.6600852], [-71.4231598, -33.6600584], [-71.4236534, -33.6599781], [-71.424222, -33.6598084], [-71.4248872, -33.6596298], [-71.4252734, -33.659603], [-71.425724, -33.6596923], [-71.4260137, -33.6598262], [-71.4264321, -33.6599602], [-71.4268291, -33.6602727], [-71.4271832, -33.6605764], [-71.4276767, -33.6609782], [-71.4283955, -33.6614068], [-71.4287496, -33.661648], [-71.4291036, -33.6619962], [-71.429565, -33.6625588], [-71.4300799, -33.6629338], [-71.4306057, -33.6633625], [-71.4309168, -33.6637732], [-71.4308846, -33.6642554], [-71.4309049, -33.664644], [-71.4309542, -33.6660343], [-71.43095, -33.6680014], [-71.431436, -33.6691533], [-71.4325067, -33.6700283], [-71.4335217, -33.6711552], [-71.4339304, -33.6724516], [-71.4337781, -33.673765], [-71.4338746, -33.675482], [-71.4347496, -33.677155], [-71.4368095, -33.6785835], [-71.4374806, -33.679181], [-71.4378937, -33.6798827], [-71.4378894, -33.6806264], [-71.4378529, -33.6826736], [-71.4377199, -33.6834297], [-71.4372531, -33.6842859], [-71.4361105, -33.6850108], [-71.4352522, -33.6853108], [-71.4337255, -33.6854527], [-71.432702, -33.6858446], [-71.4308845, -33.6859142], [-71.4284759, -33.6860214], [-71.426967, -33.6859156], [-71.425416, -33.6862169], [-71.4233797, -33.6863213], [-71.4221716, -33.6865052], [-71.4214592, -33.6868105], [-71.4206664, -33.6877033], [-71.4205988, -33.688579], [-71.4220467, -33.6892965], [-71.4227333, -33.6915818], [-71.4235916, -33.6933672], [-71.4240208, -33.6956523], [-71.4245749, -33.6976172], [-71.424533, -33.6987374], [-71.4241066, -33.7002939], [-71.4234387, -33.7009877], [-71.4229237, -33.7012063], [-71.4223658, -33.7011358], [-71.422045, -33.7014018], [-71.4219688, -33.7021944], [-71.4217543, -33.7028005], [-71.4212092, -33.7035841], [-71.4207297, -33.7046784], [-71.4201632, -33.7053425], [-71.4200087, -33.7057298], [-71.4199915, -33.7063564], [-71.4201841, -33.7068018], [-71.420204, -33.7072632], [-71.4205473, -33.7076871], [-71.4205709, -33.7082485], [-71.4205709, -33.7084395], [-71.4200108, -33.7087269], [-71.4193242, -33.7084573], [-71.4189701, -33.7082422], [-71.4184906, -33.7082842], [-71.4177546, -33.7089045], [-71.4172181, -33.7091464], [-71.4159135, -33.7097845], [-71.4150509, -33.7102298], [-71.414258, -33.7107377], [-71.4138471, -33.7114329], [-71.4134029, -33.7118318], [-71.4128622, -33.7121736], [-71.4120629, -33.7125137], [-71.4117239, -33.7128867], [-71.4113773, -33.7135605], [-71.4104708, -33.7142441], [-71.4096886, -33.7145636], [-71.4092541, -33.7146895], [-71.408517, -33.7147189], [-71.4078068, -33.7146065], [-71.4073015, -33.7145511], [-71.406853, -33.7146377], [-71.4061588, -33.7151178], [-71.4054958, -33.715556], [-71.4049981, -33.7163915], [-71.4043854, -33.7172721], [-71.4037073, -33.7179843], [-71.402997, -33.7185393], [-71.4024724, -33.7187428], [-71.4017353, -33.7188374], [-71.4009553, -33.7190186], [-71.3999908, -33.7188294], [-71.3995265, -33.7188644], [-71.39914, -33.7188419], [-71.3985145, -33.7190614], [-71.3978966, -33.7194728], [-71.3967368, -33.7206757], [-71.3963269, -33.7213628], [-71.3955791, -33.7226577], [-71.3955866, -33.7235759], [-71.3957122, -33.7240845], [-71.3957165, -33.7248118], [-71.3954568, -33.7256916], [-71.3950459, -33.7263501], [-71.3944344, -33.7270274], [-71.3935707, -33.7272728], [-71.3925697, -33.7273388], [-71.3913193, -33.7278526], [-71.3906771, -33.7284328], [-71.3903671, -33.7291056], [-71.3902254, -33.7304119], [-71.390101, -33.7315103], [-71.3901257, -33.7327219], [-71.3902877, -33.7336035], [-71.3906535, -33.734071], [-71.3913863, -33.7344065], [-71.3918343, -33.7348479], [-71.3917854, -33.735578], [-71.3918959, -33.7361294], [-71.3921641, -33.73672], [-71.3920762, -33.7372241], [-71.3916191, -33.73749], [-71.3911385, -33.7374061], [-71.3903778, -33.7379762], [-71.3896885, -33.738845], [-71.3882294, -33.7393446], [-71.3868802, -33.7394412], [-71.3852558, -33.7398347], [-71.3840596, -33.7405502], [-71.3830886, -33.740982], [-71.3823923, -33.7410382], [-71.3819439, -33.7413674], [-71.3816785, -33.7418517], [-71.3813988, -33.7421213], [-71.3805083, -33.7421159], [-71.3793164, -33.7427137], [-71.3774141, -33.7433908], [-71.3746965, -33.744481], [-71.3740925, -33.7444899], [-71.3726214, -33.7439627], [-71.3725946, -33.7435064], [-71.3724875, -33.742885], [-71.3714135, -33.7427538], [-71.3708138, -33.7429322], [-71.3703041, -33.7432748], [-71.3702601, -33.743703], [-71.3701153, -33.7441188], [-71.3695081, -33.7442455], [-71.3684341, -33.7443026], [-71.3679492, -33.7444854], [-71.3677281, -33.7448129], [-71.3676241, -33.7455212], [-71.3674449, -33.7459494], [-71.3670404, -33.7461492], [-71.3659992, -33.746125], [-71.3651682, -33.7458727], [-71.3644215, -33.7458138], [-71.3638776, -33.746125], [-71.3633776, -33.7466167], [-71.3627049, -33.7468924], [-71.3619904, -33.7469334], [-71.3610452, -33.7466167], [-71.3598736, -33.7466899], [-71.3584069, -33.7468558], [-71.3581323, -33.7484633], [-71.3582106, -33.7498041], [-71.3579048, -33.7514625], [-71.3578362, -33.7539192], [-71.3581398, -33.7551288], [-71.3591805, -33.7563107], [-71.360115, -33.7571884], [-71.3599626, -33.7638843], [-71.3597555, -33.7705566], [-71.3613692, -33.7725035], [-71.3662883, -33.7784447], [-71.367182, -33.7790778], [-71.3725465, -33.7829766], [-71.3783626, -33.7861377], [-71.3796715, -33.7866254], [-71.3811038, -33.7868778], [-71.3822582, -33.787148], [-71.3828816, -33.7871453], [-71.3844029, -33.7869357], [-71.3868158, -33.7873111], [-71.3899969, -33.7871141], [-71.3919249, -33.787098], [-71.3939719, -33.7867735], [-71.3951414, -33.786333], [-71.3968891, -33.7855786], [-71.3974696, -33.785328], [-71.3982216, -33.7849535], [-71.3987892, -33.7848759], [-71.399375, -33.7848964], [-71.400199, -33.7852718], [-71.401142, -33.7858265], [-71.4022879, -33.7862723], [-71.4027782, -33.7863918], [-71.4032481, -33.7861082], [-71.4037985, -33.7857409], [-71.4044969, -33.7854814], [-71.4050244, -33.7855407], [-71.4054572, -33.7857355], [-71.4064356, -33.7858113], [-71.407457, -33.7860191], [-71.416833, -33.786695], [-71.4193178, -33.7869001], [-71.4235149, -33.7872211], [-71.4277195, -33.7874895], [-71.4350269, -33.7880182], [-71.4367564, -33.7877819], [-71.4397315, -33.7871426], [-71.4418832, -33.7862925], [-71.4456989, -33.7857551], [-71.4502801, -33.7847734], [-71.4526351, -33.7845629], [-71.4544244, -33.785693], [-71.4551797, -33.7854505], [-71.4562011, -33.7856788], [-71.4574457, -33.7856431], [-71.4590421, -33.7859927], [-71.4603124, -33.78585], [-71.4609046, -33.7852151], [-71.4609304, -33.7842378], [-71.4608102, -33.7829252], [-71.4612566, -33.7820263], [-71.4624839, -33.7813272], [-71.4637542, -33.7808777], [-71.4651953, -33.7805599], [-71.4666437, -33.7806179], [-71.4680664, -33.7812626], [-71.4690223, -33.7819315], [-71.4695351, -33.7828018], [-71.4698913, -33.7836007], [-71.4705007, -33.7841893], [-71.4713183, -33.7847047], [-71.4725092, -33.7848759], [-71.4743457, -33.7845731], [-71.4753587, -33.7842446], [-71.4761763, -33.7836542], [-71.4766955, -33.7826805], [-71.4775646, -33.7807454], [-71.4782426, -33.779249], [-71.4789958, -33.7780523], [-71.4798198, -33.7773353], [-71.4816328, -33.7762262], [-71.4827743, -33.775734], [-71.4843364, -33.7751632], [-71.4869716, -33.7735612], [-71.4882248, -33.7719273], [-71.489362, -33.7711764], [-71.490701, -33.7708304], [-71.4918511, -33.7704914], [-71.4930568, -33.7699264], [-71.4942093, -33.769901], [-71.4953165, -33.7697137], [-71.4964237, -33.7696495], [-71.4977088, -33.7697908], [-71.4986787, -33.7700262], [-71.4995008, -33.7700919], [-71.5006359, -33.7701525], [-71.5023353, -33.770174], [-71.5040348, -33.770743], [-71.5047429, -33.7717151], [-71.505039, -33.7727746], [-71.5058415, -33.773183], [-71.5071311, -33.7733899], [-71.5086246, -33.7735665], [-71.5096953, -33.7736717], [-71.511781, -33.7741658], [-71.5136607, -33.7742407], [-71.5150769, -33.7744833], [-71.5163944, -33.7756088], [-71.517581, -33.7767788], [-71.5183041, -33.777478], [-71.5193811, -33.7783095], [-71.520557, -33.778552], [-71.5221322, -33.7780166], [-71.5232115, -33.7775386], [-71.5243251, -33.7767699], [-71.5252028, -33.7758442], [-71.5269194, -33.7739946], [-71.5278635, -33.7727871], [-71.5280159, -33.7716152], [-71.5283527, -33.7708143], [-71.5292969, -33.7697066], [-71.5303891, -33.7684366], [-71.5314706, -33.7673949], [-71.5324617, -33.7667941], [-71.5333372, -33.7661876], [-71.5342041, -33.7657309], [-71.5356177, -33.7641018], [-71.5372019, -33.764159], [-71.5386546, -33.7642072], [-71.5407446, -33.7640181], [-71.5419891, -33.764316], [-71.5438602, -33.7645176], [-71.5451369, -33.7650724], [-71.5467913, -33.7659732], [-71.5481474, -33.767163], [-71.5491173, -33.7682279], [-71.5503597, -33.7686399], [-71.5518017, -33.7705414], [-71.5526793, -33.7713048], [-71.5525184, -33.7719184], [-71.5526793, -33.7724945], [-71.5532023, -33.7732671], [-71.553365, -33.7734621], [-71.553703, -33.7746304], [-71.5538263, -33.7750852], [-71.5539444, -33.7753795], [-71.5540516, -33.7757229], [-71.5541375, -33.7760038], [-71.5542394, -33.776414], [-71.5544057, -33.7772077], [-71.5545827, -33.7778632], [-71.554808, -33.7786078], [-71.5550923, -33.7794416], [-71.5552533, -33.7799098], [-71.5554303, -33.7805162], [-71.555543, -33.7808952], [-71.555602, -33.7811716], [-71.555661, -33.7814703], [-71.5557146, -33.7817646], [-71.5558487, -33.7824379], [-71.5559023, -33.7828972], [-71.5559721, -33.7833742], [-71.5560311, -33.7839583], [-71.5560633, -33.7844265], [-71.5560901, -33.785015], [-71.5560847, -33.7854296], [-71.5561062, -33.786094], [-71.5561223, -33.7865131], [-71.556192, -33.7869544], [-71.5562618, -33.7874226], [-71.5563261, -33.787748], [-71.5563905, -33.788185], [-71.5564441, -33.7885684], [-71.5564978, -33.7889651], [-71.5565353, -33.7894198], [-71.5565514, -33.7899191], [-71.5565514, -33.7906949], [-71.5565676, -33.7918229], [-71.5566158, -33.7926253], [-71.556648, -33.793138], [-71.5566695, -33.7938825], [-71.5566588, -33.7947474], [-71.5566802, -33.7956791], [-71.556707, -33.7961828], [-71.5567285, -33.7967], [-71.5567339, -33.7975782], [-71.5567714, -33.7985723], [-71.5567714, -33.7995708], [-71.5568143, -33.800498], [-71.5568519, -33.8017685], [-71.556868, -33.8026466], [-71.5569297, -33.8043784], [-71.5569645, -33.805417], [-71.5570235, -33.8072111], [-71.5570664, -33.809306], [-71.5571308, -33.8109663], [-71.5571684, -33.8126244], [-71.5572113, -33.814142], [-71.5572488, -33.8151582], [-71.5572729, -33.8159348], [-71.5572739, -33.816034], [-71.5572747, -33.8161109], [-71.5572703, -33.8166959], [-71.5572596, -33.81779], [-71.5572381, -33.8192385], [-71.5572193, -33.8208808], [-71.5572032, -33.8227971], [-71.5571411, -33.8268048], [-71.5571147, -33.830872], [-71.5571147, -33.831605], [-71.5571255, -33.8325408], [-71.5571255, -33.8329708], [-71.5571191, -33.8332329], [-71.5570986, -33.8339935], [-71.5570745, -33.8352189], [-71.5569779, -33.8381285], [-71.5569672, -33.8387234], [-71.5569431, -33.8402049], [-71.5569404, -33.8417777], [-71.5569153, -33.84513], [-71.5568867, -33.845948], [-71.5568572, -33.8467366], [-71.5568379, -33.8476455], [-71.5568304, -33.8479975], [-71.5567955, -33.8517799], [-71.5567982, -33.8529471], [-71.5567955, -33.8542012], [-71.5567875, -33.8546667], [-71.5567929, -33.855012], [-71.5568036, -33.8552659], [-71.5567821, -33.8555421], [-71.5567499, -33.8558896], [-71.5567114, -33.8565052], [-71.5567124, -33.8571948], [-71.5567124, -33.8578675], [-71.5567499, -33.8584377], [-71.556766, -33.8586203], [-71.5567607, -33.8589455], [-71.5567285, -33.8596672], [-71.5566857, -33.8603947], [-71.556522, -33.8653422], [-71.556522, -33.8655226], [-71.5565139, -33.8656629], [-71.556522, -33.865968], [-71.5565321, -33.8662349], [-71.5565273, -33.8664536], [-71.5565166, -33.8666629], [-71.5564871, -33.8674446], [-71.5564629, -33.8686317], [-71.556471, -33.8695782], [-71.5564629, -33.8700659], [-71.5564603, -33.8707674], [-71.5564415, -33.8712574], [-71.5564334, -33.8716649], [-71.5564361, -33.8720079], [-71.5564549, -33.8722484], [-71.5564549, -33.8723931], [-71.5564415, -33.8725513], [-71.5564442, -33.873834], [-71.5565783, -33.8737716], [-71.5567124, -33.8736959], [-71.5568385, -33.8736135], [-71.5569323, -33.8735311], [-71.5570155, -33.8734376], [-71.5571067, -33.8733708], [-71.5572059, -33.8733396], [-71.5573159, -33.8733173], [-71.557391, -33.8732795], [-71.5575063, -33.8732127], [-71.5576324, -33.8731815], [-71.5577289, -33.8731592], [-71.5578201, -33.8731681], [-71.5579006, -33.8731748], [-71.5579945, -33.8732015], [-71.5580857, -33.8732171], [-71.5581876, -33.8732082], [-71.5582868, -33.8731815], [-71.5584183, -33.8731058], [-71.5585336, -33.8730434], [-71.5586221, -33.8730234], [-71.5587321, -33.8730412], [-71.5588474, -33.8730635], [-71.5590701, -33.8731503], [-71.5591317, -33.8731904], [-71.5591854, -33.8732327], [-71.5592203, -33.8732862], [-71.5592364, -33.8733396], [-71.5592819, -33.8734131], [-71.5593919, -33.8734844], [-71.5595287, -33.8735734], [-71.5596414, -33.8736247], [-71.5597969, -33.8736803], [-71.5599203, -33.8737293], [-71.560033, -33.8737694], [-71.5601322, -33.8737872], [-71.5603253, -33.8738273], [-71.5604568, -33.8738295], [-71.560556, -33.8738362], [-71.5606365, -33.8738162], [-71.5606901, -33.8737828], [-71.5607277, -33.8737382], [-71.5607491, -33.873667], [-71.5607464, -33.8735912], [-71.5607196, -33.8735311], [-71.5606982, -33.873442], [-71.5606579, -33.8732862], [-71.5606445, -33.8731815], [-71.5606257, -33.8730746], [-71.5605828, -33.8729833], [-71.560556, -33.8728853], [-71.560548, -33.8728051], [-71.560556, -33.872676], [-71.5605801, -33.872529], [-71.560615, -33.8724243], [-71.5606391, -33.8723219], [-71.5606338, -33.8722484], [-71.5606177, -33.8721793], [-71.5606231, -33.8721125], [-71.5606472, -33.8720724], [-71.560674, -33.8720324], [-71.5607491, -33.8719722], [-71.5608618, -33.8719143], [-71.5609449, -33.8718698], [-71.5610442, -33.8718408], [-71.5611461, -33.8718186], [-71.5612346, -33.8717807], [-71.5613043, -33.8717495], [-71.5613607, -33.8716805], [-71.5614653, -33.871627], [-71.561535, -33.8716026], [-71.5616128, -33.8715981], [-71.5617335, -33.8716315], [-71.5617871, -33.871656], [-71.5618837, -33.8717028], [-71.5621009, -33.8717874], [-71.5622887, -33.8718698], [-71.5624201, -33.8719166], [-71.562573, -33.8719544], [-71.5627018, -33.8719923], [-71.5629298, -33.8720836], [-71.5633428, -33.8722462], [-71.5634394, -33.8723041], [-71.5635306, -33.8723486], [-71.5635547, -33.8723842], [-71.5635654, -33.8724466], [-71.5635547, -33.8725268], [-71.563552, -33.8725913], [-71.5635842, -33.8726403], [-71.5636218, -33.8726849], [-71.5637022, -33.8727383], [-71.5637773, -33.8728096], [-71.5638363, -33.872892], [-71.5638793, -33.8729655], [-71.5639302, -33.8730479], [-71.5639624, -33.873079], [-71.5640134, -33.873108], [-71.5640616, -33.8731191], [-71.5641394, -33.8731214], [-71.5642735, -33.8731147], [-71.5644962, -33.8730167], [-71.5645713, -33.8729454], [-71.5646464, -33.8728786], [-71.5647322, -33.8728007], [-71.564877, -33.872725], [-71.5650272, -33.8726693], [-71.5651533, -33.8726337], [-71.5652418, -33.8726158], [-71.5654054, -33.8725958], [-71.5655503, -33.8725713], [-71.5656334, -33.872529], [-71.5657327, -33.8724911], [-71.5658641, -33.8724444], [-71.5659714, -33.8724354], [-71.5661082, -33.872431], [-71.5662423, -33.8724689], [-71.5663362, -33.8725089], [-71.5664274, -33.8725824], [-71.5664649, -33.8726381], [-71.5665132, -33.8727405], [-71.5665212, -33.8728385], [-71.5665159, -33.8729521], [-71.5665507, -33.8730345], [-71.5665829, -33.8730902], [-71.5667895, -33.8732706], [-71.5668833, -33.8733507], [-71.5669665, -33.8734665], [-71.5670469, -33.8735512], [-71.5671542, -33.8736224], [-71.5672347, -33.8736269], [-71.5673232, -33.8735645], [-71.5673661, -33.8735044], [-71.5674815, -33.8734042], [-71.5676451, -33.8733129], [-71.567747, -33.8732572], [-71.5678865, -33.8731815], [-71.5680152, -33.8731191], [-71.5681547, -33.8730479], [-71.5682834, -33.8730167], [-71.5684041, -33.87299], [-71.5685463, -33.8729877], [-71.5686938, -33.8729588], [-71.5688762, -33.8728898], [-71.5690157, -33.8728385], [-71.5691927, -33.8727984], [-71.5693617, -33.8727472], [-71.5695843, -33.8726982], [-71.5697721, -33.8726715], [-71.5698981, -33.8726448], [-71.570043, -33.872627], [-71.5702146, -33.8726314], [-71.5703192, -33.8726314], [-71.570448, -33.8726648], [-71.5706304, -33.8727138], [-71.5708691, -33.8728007], [-71.5709549, -33.8728452], [-71.5710729, -33.8728987], [-71.5711668, -33.8729811], [-71.5712285, -33.8730724], [-71.5712982, -33.8732082], [-71.5713573, -33.873304], [-71.5714324, -33.8733797], [-71.5715101, -33.873422], [-71.5715852, -33.8734354], [-71.5716818, -33.8734443], [-71.5717864, -33.8734487], [-71.5719339, -33.8734732], [-71.5722236, -33.8735578], [-71.5723953, -33.8736291], [-71.572583, -33.8736915], [-71.5729697, -33.873879], [-71.5731275, -33.8739364], [-71.5732643, -33.8739765], [-71.5733957, -33.8740121], [-71.5735003, -33.8740233], [-71.5735647, -33.8740233], [-71.573672, -33.8739943], [-71.5738276, -33.873932], [-71.5740073, -33.8738563], [-71.5741736, -33.8737739], [-71.5742514, -33.8737315], [-71.5743318, -33.8736647], [-71.5743989, -33.8735823], [-71.5744686, -33.8734866], [-71.5745115, -33.8733819], [-71.5745437, -33.8732149], [-71.5745464, -33.8731191], [-71.5745679, -33.8730612], [-71.5746108, -33.87299], [-71.5746832, -33.8729477], [-71.5747261, -33.8729187], [-71.5747771, -33.8728452], [-71.5748173, -33.8727873], [-71.5748495, -33.8727049], [-71.574879, -33.8726648], [-71.57493, -33.8726136], [-71.5749756, -33.8726002], [-71.5750989, -33.8725869], [-71.5752652, -33.8725735], [-71.5754771, -33.8725579], [-71.5756622, -33.8725334], [-71.5758258, -33.8724889], [-71.5760162, -33.8724354], [-71.5761852, -33.8723597], [-71.5763006, -33.8722951], [-71.5763462, -33.8722551], [-71.5763918, -33.8721615], [-71.5764266, -33.8720947], [-71.5764642, -33.8720056], [-71.5764722, -33.8718987], [-71.5764561, -33.8718497], [-71.5763918, -33.871754], [-71.5763649, -33.8716671], [-71.5763676, -33.8715758], [-71.5763998, -33.8715202], [-71.5764722, -33.8714043], [-71.5765071, -33.8713598], [-71.5765768, -33.8712418], [-71.576609, -33.8711237], [-71.5766117, -33.8710235], [-71.5765929, -33.8709233], [-71.5766063, -33.8708342], [-71.5766171, -33.8707763], [-71.5766788, -33.8706583], [-71.5767485, -33.8705893], [-71.5768504, -33.8705024], [-71.576947, -33.8704378], [-71.5770543, -33.8703688], [-71.5772152, -33.8703109], [-71.5773439, -33.8702708], [-71.5774754, -33.8702307], [-71.5775585, -33.8701839], [-71.5776604, -33.8701104], [-71.5776899, -33.8700659], [-71.5777543, -33.8699412], [-71.5777758, -33.8698543], [-71.5778777, -33.8697163], [-71.5780279, -33.869527], [-71.5781218, -33.8694512], [-71.5782827, -33.869302], [-71.5784276, -33.869204], [-71.5785402, -33.8691105], [-71.5787602, -33.8689234], [-71.5788138, -33.86887], [-71.5789264, -33.8687141], [-71.5789908, -33.8686072], [-71.5790498, -33.8685136], [-71.5791786, -33.8683934], [-71.579302, -33.8683756], [-71.5794843, -33.8682776], [-71.5795916, -33.8681796], [-71.5797365, -33.8680103], [-71.5798062, -33.8679435], [-71.5799671, -33.8678232], [-71.5802354, -33.8676985], [-71.5804821, -33.8675872], [-71.5807557, -33.8674669], [-71.5809596, -33.8673823], [-71.58126, -33.867262], [-71.5815843, -33.8671675], [-71.5817937, -33.8672754], [-71.5820378, -33.8674134], [-71.5824294, -33.8676406], [-71.5828747, -33.8679168], [-71.5835667, -33.8683132], [-71.5840602, -33.8685894], [-71.5844947, -33.8688789], [-71.5849185, -33.8691506], [-71.5853638, -33.8694267], [-71.5863133, -33.8699701], [-71.5869302, -33.8703265], [-71.5878582, -33.8708877], [-71.5893173, -33.8717918], [-71.5917152, -33.8732572], [-71.5940197, -33.8746112], [-71.5957761, -33.8757068], [-71.5969035, -33.8763969], [-71.5983017, -33.8773001], [-71.5992147, -33.8778803], [-71.6005343, -33.8786686], [-71.6013765, -33.8791585], [-71.6036081, -33.8805079], [-71.6053355, -33.8816257], [-71.6067201, -33.8824542], [-71.6081035, -33.8832958], [-71.6093192, -33.884006], [-71.6107839, -33.8848615], [-71.6120946, -33.8856917], [-71.6130724, -33.8862796], [-71.6146374, -33.8872637], [-71.6167843, -33.8885693], [-71.6177326, -33.8891696], [-71.6186559, -33.8897311], [-71.6199696, -33.890559], [-71.6216603, -33.8916009], [-71.6228181, -33.8923179], [-71.624524, -33.8933287], [-71.6254815, -33.8938742], [-71.625609, -33.8939399], [-71.6257337, -33.8940033], [-71.6267744, -33.8946712], [-71.6280606, -33.8954455], [-71.6302747, -33.8968397], [-71.6314922, -33.8976117], [-71.6329756, -33.8985295], [-71.6337635, -33.8989974], [-71.634711, -33.8995714], [-71.6354798, -33.9000295], [-71.6365027, -33.9006511], [-71.6373348, -33.9011722], [-71.6386515, -33.9019441], [-71.6394773, -33.90247], [-71.6399594, -33.9027822], [-71.6410652, -33.903425], [-71.6420683, -33.9040283], [-71.6436265, -33.904989], [-71.6480245, -33.9076989], [-71.6549009, -33.9118731], [-71.655774, -33.9124478], [-71.6576872, -33.9135806], [-71.6599783, -33.915011], [-71.6633381, -33.917032], [-71.6669183, -33.9192529], [-71.669011, -33.9201265], [-71.6722951, -33.920893], [-71.6749408, -33.9216844], [-71.6762991, -33.9225961], [-71.6775737, -33.9231374], [-71.6788848, -33.9234347], [-71.6796594, -33.9239564], [-71.6807344, -33.9247345], [-71.68167, -33.9250051], [-71.6824038, -33.9250354], [-71.6833994, -33.9253185], [-71.6843608, -33.9262995], [-71.685041, -33.9265452], [-71.6859272, -33.9273713], [-71.6878154, -33.9274123], [-71.6893818, -33.9278147], [-71.6908099, -33.9279812], [-71.6914332, -33.9284111], [-71.6922658, -33.9291535], [-71.6933773, -33.9299832], [-71.6937335, -33.9315304], [-71.6940746, -33.9327285], [-71.6945875, -33.9329867], [-71.6951454, -33.9326805], [-71.6955767, -33.9329564], [-71.6956818, -33.933576], [-71.6962762, -33.9332163], [-71.6969199, -33.9331095], [-71.6977546, -33.9333588], [-71.6991086, -33.9338982], [-71.6998124, -33.9349165], [-71.7003553, -33.9352512], [-71.7014368, -33.9363674], [-71.7019088, -33.937003], [-71.7016106, -33.9377899], [-71.702117, -33.9382224], [-71.702692, -33.9387832], [-71.703177, -33.9396306], [-71.7037134, -33.94051], [-71.7047048, -33.940688], [-71.7057154, -33.9407058], [-71.7067733, -33.9409675], [-71.7074664, -33.9407094], [-71.7082217, -33.9405919], [-71.7091487, -33.9409871], [-71.7100821, -33.9412256], [-71.7106872, -33.9418166], [-71.7105112, -33.9427779], [-71.7121527, -33.9437267], [-71.7128179, -33.9442607], [-71.712775, -33.9449692], [-71.7129874, -33.9453946], [-71.7138822, -33.9457898], [-71.7143436, -33.9462918], [-71.7142491, -33.9470287], [-71.7147445, -33.947523], [-71.7148502, -33.9484966]]]}}] \ No newline at end of file diff --git a/backend/gps/utils/cache/672b2a663d92ed549739cfa18dc1c7834fa1514d.json b/backend/gps/utils/cache/672b2a663d92ed549739cfa18dc1c7834fa1514d.json new file mode 100644 index 0000000..9f0661e --- /dev/null +++ b/backend/gps/utils/cache/672b2a663d92ed549739cfa18dc1c7834fa1514d.json @@ -0,0 +1 @@ +[{"place_id": 1363431, "licence": "Data \u00a9 OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright", "osm_type": "relation", "osm_id": 164609, "lat": "-33.4377756", "lon": "-70.6504502", "class": "boundary", "type": "administrative", "place_rank": 16, "importance": 0.659760745604439, "addresstype": "city", "name": "Santiago", "display_name": "Santiago, Provincia de Santiago, Santiago Metropolitan Region, Chile", "boundingbox": ["-33.4785698", "-33.4255933", "-70.6920527", "-70.6249963"], "geojson": {"type": "Polygon", "coordinates": [[[-70.6920527, -33.4444848], [-70.6906888, -33.4444137], [-70.6900833, -33.4443859], [-70.6899544, -33.44438], [-70.6893368, -33.4443516], [-70.6889484, -33.4443337], [-70.6884781, -33.4443121], [-70.6880386, -33.4442919], [-70.6874306, -33.444264], [-70.6867406, -33.4442323], [-70.6855872, -33.4441793], [-70.6843688, -33.4441177], [-70.6842386, -33.444111], [-70.684126, -33.4441037], [-70.6835051, -33.4440762], [-70.6827769, -33.4440393], [-70.6822198, -33.4440119], [-70.6816078, -33.4439815], [-70.6805822, -33.4439309], [-70.6804629, -33.4439236], [-70.6803189, -33.4439121], [-70.6795784, -33.4438552], [-70.6795529, -33.4443197], [-70.6794979, -33.4449413], [-70.67949, -33.4450308], [-70.6794859, -33.4450764], [-70.6794188, -33.445835], [-70.6793461, -33.4466564], [-70.6793267, -33.4468752], [-70.6793176, -33.4469836], [-70.679296, -33.4472421], [-70.6792416, -33.4478923], [-70.6791968, -33.4484042], [-70.6790484, -33.4500985], [-70.6790005, -33.450645], [-70.678994, -33.4507192], [-70.6789825, -33.4508241], [-70.6778718, -33.4505935], [-70.6778679, -33.450614], [-70.6778491, -33.4507109], [-70.6778383, -33.4508625], [-70.6778383, -33.450947], [-70.677843, -33.4510416], [-70.6778484, -33.4511367], [-70.6778685, -33.4513896], [-70.6779396, -33.4524084], [-70.67801, -33.4534786], [-70.6780827, -33.454539], [-70.6781207, -33.4550608], [-70.6781553, -33.4555379], [-70.6782331, -33.4567282], [-70.6783411, -33.4581446], [-70.6783917, -33.458856], [-70.6784858, -33.4602285], [-70.6785876, -33.4614007], [-70.6786678, -33.4624783], [-70.6787532, -33.463397], [-70.6787975, -33.4640094], [-70.6788541, -33.464957], [-70.6789722, -33.4666558], [-70.6789975, -33.4670576], [-70.6791285, -33.4691406], [-70.6791465, -33.4692967], [-70.6791552, -33.469361], [-70.6791653, -33.4694108], [-70.6791747, -33.469451], [-70.6791902, -33.4694896], [-70.6792324, -33.4695719], [-70.6792867, -33.4696675], [-70.6793779, -33.4698196], [-70.6797132, -33.4703202], [-70.6797769, -33.4704025], [-70.6798024, -33.4704316], [-70.6798229, -33.4704514], [-70.6798537, -33.4704729], [-70.6798661, -33.4704984], [-70.6798721, -33.4705255], [-70.6798722, -33.4705472], [-70.6798681, -33.4705686], [-70.6798573, -33.4705912], [-70.6798406, -33.4706111], [-70.67981, -33.4706397], [-70.6797747, -33.4706643], [-70.6791112, -33.4706686], [-70.6781055, -33.4706608], [-70.6775696, -33.4706566], [-70.6767983, -33.4706504], [-70.6765254, -33.4706482], [-70.6763993, -33.4706471], [-70.6755451, -33.4706403], [-70.6742444, -33.4706298], [-70.6739345, -33.4706273], [-70.6736164, -33.4706247], [-70.6729527, -33.4706201], [-70.6729308, -33.4719227], [-70.6729205, -33.4726961], [-70.6729135, -33.4732247], [-70.6729145, -33.4737425], [-70.6729151, -33.4737682], [-70.6729259, -33.4742328], [-70.6729333, -33.4745521], [-70.6729285, -33.4746747], [-70.6730222, -33.4746845], [-70.6731043, -33.475069], [-70.6732577, -33.4753382], [-70.6734823, -33.4755786], [-70.6737425, -33.4757935], [-70.6741636, -33.4759681], [-70.6745155, -33.4760858], [-70.6749072, -33.4761798], [-70.675864, -33.4762312], [-70.6764431, -33.4762298], [-70.6769177, -33.4762808], [-70.6772932, -33.4762719], [-70.6777331, -33.476245], [-70.6780442, -33.476245], [-70.678036, -33.476654], [-70.6785976, -33.4766211], [-70.6807164, -33.4766538], [-70.6808173, -33.478399], [-70.6716346, -33.4785698], [-70.6716712, -33.476164], [-70.6716037, -33.4761631], [-70.6713903, -33.4761602], [-70.6704869, -33.4763574], [-70.6697596, -33.4764196], [-70.6674997, -33.4763347], [-70.6662655, -33.4761834], [-70.665564, -33.4760889], [-70.6655484, -33.4761822], [-70.6648246, -33.4760028], [-70.6619339, -33.4759191], [-70.6614405, -33.4759317], [-70.6596253, -33.4760904], [-70.658445, -33.4761863], [-70.6549426, -33.4764708], [-70.6540339, -33.4765557], [-70.6499422, -33.4767071], [-70.6482452, -33.4767575], [-70.648253, -33.4765685], [-70.6464723, -33.4765622], [-70.6419393, -33.4763947], [-70.6403686, -33.4763634], [-70.6392099, -33.47612], [-70.6379653, -33.4756976], [-70.6348068, -33.474595], [-70.6321803, -33.47365], [-70.6319636, -33.4735704], [-70.6305238, -33.4730414], [-70.6287385, -33.4723827], [-70.6270219, -33.4716883], [-70.6266896, -33.4715382], [-70.6264812, -33.471409], [-70.6260778, -33.4710439], [-70.6257001, -33.4706072], [-70.6252881, -33.4700702], [-70.6249963, -33.4695976], [-70.6255628, -33.4692683], [-70.6258289, -33.469032], [-70.6259549, -33.4688254], [-70.6260665, -33.4685963], [-70.6261636, -33.4682587], [-70.6263953, -33.467285], [-70.626979, -33.4653088], [-70.6278545, -33.4623588], [-70.628566, -33.4599728], [-70.6287042, -33.4595089], [-70.6293136, -33.4573034], [-70.6303521, -33.4536656], [-70.6308142, -33.4521227], [-70.6308247, -33.4520877], [-70.6308476, -33.4520112], [-70.6309264, -33.4517501], [-70.630936, -33.4517187], [-70.6315052, -33.4498297], [-70.6315881, -33.4495335], [-70.6323863, -33.4469339], [-70.6328091, -33.4454969], [-70.6328387, -33.4453963], [-70.6328601, -33.4453227], [-70.6328678, -33.4452962], [-70.6334659, -33.443239], [-70.633588, -33.4428015], [-70.6342746, -33.4402804], [-70.6348529, -33.4384495], [-70.6350672, -33.4376824], [-70.6352106, -33.4370971], [-70.635324, -33.4368263], [-70.6353569, -33.4367322], [-70.635375, -33.4366584], [-70.6354297, -33.4364262], [-70.6354157, -33.4362626], [-70.6353964, -33.4356977], [-70.6354783, -33.4356882], [-70.635564, -33.4356805], [-70.6359526, -33.4355971], [-70.6367164, -33.4354152], [-70.6387247, -33.4349365], [-70.6388361, -33.4349094], [-70.6426827, -33.4340127], [-70.6429061, -33.4339666], [-70.6443015, -33.433645], [-70.6452749, -33.4334172], [-70.6466827, -33.4331067], [-70.6477323, -33.4328388], [-70.6478122, -33.4328072], [-70.6479418, -33.4327561], [-70.6480358, -33.4327244], [-70.6484352, -33.432633], [-70.6485545, -33.4326057], [-70.6486834, -33.4325844], [-70.6496154, -33.4323912], [-70.6499406, -33.4323227], [-70.6502529, -33.4322569], [-70.6504564, -33.4322132], [-70.6511307, -33.432059], [-70.6512312, -33.432036], [-70.6514741, -33.4319796], [-70.6515016, -33.4319732], [-70.6515858, -33.4319557], [-70.6517093, -33.431924], [-70.6519733, -33.4318603], [-70.652567, -33.4317141], [-70.6528489, -33.4316459], [-70.6529612, -33.4316179], [-70.653033, -33.4316003], [-70.6536291, -33.4314562], [-70.6562121, -33.4308938], [-70.6574562, -33.4305918], [-70.6594229, -33.4301145], [-70.6595966, -33.4300664], [-70.659742, -33.4300195], [-70.6598847, -33.4299672], [-70.6600244, -33.4299097], [-70.6602243, -33.4298195], [-70.6603061, -33.4297737], [-70.6603557, -33.4297452], [-70.6603801, -33.429729], [-70.6604062, -33.4297061], [-70.6604272, -33.4296863], [-70.6604556, -33.4296433], [-70.6604697, -33.4296019], [-70.6604824, -33.429542], [-70.6604932, -33.4294888], [-70.6605046, -33.4294099], [-70.6605011, -33.4293816], [-70.6604864, -33.4292645], [-70.6608532, -33.4290954], [-70.6613347, -33.4288984], [-70.6618537, -33.4287294], [-70.662488, -33.4285504], [-70.6631251, -33.4283903], [-70.6636441, -33.428256], [-70.6641886, -33.4281083], [-70.664784, -33.4279225], [-70.6670988, -33.4271121], [-70.6689066, -33.4264294], [-70.6702504, -33.4259324], [-70.6711301, -33.4255933], [-70.6711482, -33.425638], [-70.6712227, -33.42583], [-70.6712462, -33.4258934], [-70.6712911, -33.4260057], [-70.6713259, -33.4260969], [-70.6713501, -33.4261694], [-70.6714466, -33.4264817], [-70.6715727, -33.4268899], [-70.6716418, -33.427102], [-70.671684, -33.4272397], [-70.6717276, -33.4274048], [-70.671746, -33.4274985], [-70.6717649, -33.4275771], [-70.6717943, -33.427719], [-70.6718282, -33.42796], [-70.6718389, -33.4280438], [-70.6718267, -33.4281507], [-70.6718025, -33.4283311], [-70.6722616, -33.428182], [-70.673583, -33.4277456], [-70.673686, -33.4277134], [-70.6737467, -33.427693], [-70.6754684, -33.4271111], [-70.675783, -33.426991], [-70.6762534, -33.4268114], [-70.6765716, -33.4266726], [-70.6766381, -33.4266443], [-70.6767362, -33.4266241], [-70.6768379, -33.4266023], [-70.6769606, -33.4265883], [-70.6770762, -33.4265816], [-70.6771705, -33.426581], [-70.6773237, -33.4265922], [-70.6774239, -33.4266065], [-70.6775061, -33.4266205], [-70.6775989, -33.4266454], [-70.6776626, -33.4266692], [-70.6777615, -33.4267047], [-70.677889, -33.4267545], [-70.678069, -33.4268396], [-70.678985, -33.4272442], [-70.6791023, -33.4273007], [-70.6791995, -33.4273522], [-70.6793263, -33.4274132], [-70.6794631, -33.4274994], [-70.6795623, -33.4275732], [-70.6796555, -33.4276533], [-70.6797709, -33.4277518], [-70.6798828, -33.427857], [-70.6800035, -33.4279801], [-70.6801035, -33.4280937], [-70.6801792, -33.4281883], [-70.6802718, -33.4283187], [-70.6803495, -33.428453], [-70.6804213, -33.42858], [-70.6804843, -33.4287082], [-70.680542, -33.4288391], [-70.680605, -33.4289947], [-70.6806473, -33.4291492], [-70.6806768, -33.4292902], [-70.6806955, -33.4294027], [-70.6807123, -33.4295521], [-70.6807217, -33.4296842], [-70.6807237, -33.4297905], [-70.680723, -33.4299293], [-70.680717, -33.4300518], [-70.680695, -33.4303372], [-70.6806734, -33.4306165], [-70.6806614, -33.4308056], [-70.6806547, -33.4309948], [-70.6806495, -33.4311623], [-70.6806339, -33.4316654], [-70.6806322, -33.4317127], [-70.6806168, -33.4321465], [-70.6805746, -33.4328941], [-70.6806016, -33.4330202], [-70.6805353, -33.4331246], [-70.6805072, -33.4337654], [-70.6804376, -33.4345456], [-70.6803234, -33.4358403], [-70.6802204, -33.4369874], [-70.6801524, -33.4378038], [-70.6800777, -33.4383689], [-70.6800722, -33.4384427], [-70.681249, -33.4385249], [-70.6817228, -33.438558], [-70.6817269, -33.4385152], [-70.6817675, -33.4379757], [-70.6817666, -33.4379469], [-70.6819136, -33.4379563], [-70.6819536, -33.4374899], [-70.6819588, -33.437412], [-70.6818133, -33.4374031], [-70.6817897, -33.437389], [-70.6814709, -33.4373683], [-70.6814712, -33.4373255], [-70.6810848, -33.4372992], [-70.6810644, -33.4375162], [-70.6807902, -33.4374994], [-70.6808121, -33.4372661], [-70.6809232, -33.4372726], [-70.6810319, -33.4360408], [-70.6819124, -33.4361604], [-70.6826786, -33.4363189], [-70.683705, -33.4365228], [-70.6837385, -33.4375262], [-70.6842913, -33.4375636], [-70.6841402, -33.4387182], [-70.6865408, -33.4388915], [-70.6884525, -33.4390059], [-70.6894933, -33.4390803], [-70.690934, -33.4391728], [-70.6916101, -33.439229], [-70.6916638, -33.4392354], [-70.6918361, -33.4392648], [-70.6918073, -33.4393818], [-70.691787, -33.4394758], [-70.691754, -33.4396368], [-70.6917324, -33.4397992], [-70.6917257, -33.4398833], [-70.6917221, -33.4399676], [-70.6917211, -33.4401207], [-70.6917268, -33.4402737], [-70.6917939, -33.4411858], [-70.6920024, -33.4436684], [-70.6920319, -33.4440204], [-70.6920493, -33.4442934], [-70.6920527, -33.4444848]]]}}] \ No newline at end of file diff --git a/backend/gps/utils/cache/6d9ce5f040ad099c8161bf254ab6ddabd1c6f03f.json b/backend/gps/utils/cache/6d9ce5f040ad099c8161bf254ab6ddabd1c6f03f.json new file mode 100644 index 0000000..25d6b00 --- /dev/null +++ b/backend/gps/utils/cache/6d9ce5f040ad099c8161bf254ab6ddabd1c6f03f.json @@ -0,0 +1 @@ +[{"place_id": 34091350, "licence": "Data \u00a9 OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright", "osm_type": "relation", "osm_id": 164609, "lat": "-33.4377756", "lon": "-70.6504502", "class": "boundary", "type": "administrative", "place_rank": 16, "importance": 0.659760745604439, "addresstype": "city", "name": "Santiago", "display_name": "Santiago, Provincia de Santiago, Santiago Metropolitan Region, Chile", "boundingbox": ["-33.4785698", "-33.4255933", "-70.6920527", "-70.6249963"], "geojson": {"type": "Polygon", "coordinates": [[[-70.6920527, -33.4444848], [-70.6906888, -33.4444137], [-70.6900833, -33.4443859], [-70.6899544, -33.44438], [-70.6893368, -33.4443516], [-70.6889484, -33.4443337], [-70.6884781, -33.4443121], [-70.6880386, -33.4442919], [-70.6874306, -33.444264], [-70.6867406, -33.4442323], [-70.6855872, -33.4441793], [-70.6843688, -33.4441177], [-70.6842386, -33.444111], [-70.684126, -33.4441037], [-70.6835051, -33.4440762], [-70.6827769, -33.4440393], [-70.6822198, -33.4440119], [-70.6816078, -33.4439815], [-70.6805822, -33.4439309], [-70.6804629, -33.4439236], [-70.6803189, -33.4439121], [-70.6795784, -33.4438552], [-70.6795529, -33.4443197], [-70.6794979, -33.4449413], [-70.67949, -33.4450308], [-70.6794859, -33.4450764], [-70.6794188, -33.445835], [-70.6793461, -33.4466564], [-70.6793267, -33.4468752], [-70.6793176, -33.4469836], [-70.679296, -33.4472421], [-70.6792416, -33.4478923], [-70.6791968, -33.4484042], [-70.6790484, -33.4500985], [-70.6790005, -33.450645], [-70.678994, -33.4507192], [-70.6789825, -33.4508241], [-70.6778718, -33.4505935], [-70.6778679, -33.450614], [-70.6778491, -33.4507109], [-70.6778383, -33.4508625], [-70.6778383, -33.450947], [-70.677843, -33.4510416], [-70.6778484, -33.4511367], [-70.6778685, -33.4513896], [-70.6779396, -33.4524084], [-70.67801, -33.4534786], [-70.6780827, -33.454539], [-70.6781207, -33.4550608], [-70.6781553, -33.4555379], [-70.6782331, -33.4567282], [-70.6783411, -33.4581446], [-70.6783917, -33.458856], [-70.6784858, -33.4602285], [-70.6785876, -33.4614007], [-70.6786678, -33.4624783], [-70.6787532, -33.463397], [-70.6787975, -33.4640094], [-70.6788541, -33.464957], [-70.6789722, -33.4666558], [-70.6789975, -33.4670576], [-70.6791285, -33.4691406], [-70.6791465, -33.4692967], [-70.6791552, -33.469361], [-70.6791653, -33.4694108], [-70.6791747, -33.469451], [-70.6791902, -33.4694896], [-70.6792324, -33.4695719], [-70.6792867, -33.4696675], [-70.6793779, -33.4698196], [-70.6797132, -33.4703202], [-70.6797769, -33.4704025], [-70.6798024, -33.4704316], [-70.6798229, -33.4704514], [-70.6798537, -33.4704729], [-70.6798661, -33.4704984], [-70.6798721, -33.4705255], [-70.6798722, -33.4705472], [-70.6798681, -33.4705686], [-70.6798573, -33.4705912], [-70.6798406, -33.4706111], [-70.67981, -33.4706397], [-70.6797747, -33.4706643], [-70.6791112, -33.4706686], [-70.6781055, -33.4706608], [-70.6775696, -33.4706566], [-70.6767983, -33.4706504], [-70.6765254, -33.4706482], [-70.6763993, -33.4706471], [-70.6755451, -33.4706403], [-70.6742444, -33.4706298], [-70.6739345, -33.4706273], [-70.6736164, -33.4706247], [-70.6729527, -33.4706201], [-70.6729308, -33.4719227], [-70.6729205, -33.4726961], [-70.6729135, -33.4732247], [-70.6729145, -33.4737425], [-70.6729151, -33.4737682], [-70.6729259, -33.4742328], [-70.6729333, -33.4745521], [-70.6729285, -33.4746747], [-70.6730222, -33.4746845], [-70.6731043, -33.475069], [-70.6732577, -33.4753382], [-70.6734823, -33.4755786], [-70.6737425, -33.4757935], [-70.6741636, -33.4759681], [-70.6745155, -33.4760858], [-70.6749072, -33.4761798], [-70.675864, -33.4762312], [-70.6764431, -33.4762298], [-70.6769177, -33.4762808], [-70.6772932, -33.4762719], [-70.6777331, -33.476245], [-70.6780442, -33.476245], [-70.678036, -33.476654], [-70.6785976, -33.4766211], [-70.6807164, -33.4766538], [-70.6808173, -33.478399], [-70.6716346, -33.4785698], [-70.6716712, -33.476164], [-70.6716037, -33.4761631], [-70.6713903, -33.4761602], [-70.6704869, -33.4763574], [-70.6697596, -33.4764196], [-70.6674997, -33.4763347], [-70.6662655, -33.4761834], [-70.665564, -33.4760889], [-70.6655484, -33.4761822], [-70.6648246, -33.4760028], [-70.6619339, -33.4759191], [-70.6614405, -33.4759317], [-70.6596253, -33.4760904], [-70.658445, -33.4761863], [-70.6549426, -33.4764708], [-70.6540339, -33.4765557], [-70.6499422, -33.4767071], [-70.6482452, -33.4767575], [-70.648253, -33.4765685], [-70.6464723, -33.4765622], [-70.6419393, -33.4763947], [-70.6403686, -33.4763634], [-70.6392099, -33.47612], [-70.6379653, -33.4756976], [-70.6348068, -33.474595], [-70.6321803, -33.47365], [-70.6319636, -33.4735704], [-70.6305238, -33.4730414], [-70.6287385, -33.4723827], [-70.6270219, -33.4716883], [-70.6266896, -33.4715382], [-70.6264812, -33.471409], [-70.6260778, -33.4710439], [-70.6257001, -33.4706072], [-70.6252881, -33.4700702], [-70.6249963, -33.4695976], [-70.6255628, -33.4692683], [-70.6258289, -33.469032], [-70.6259549, -33.4688254], [-70.6260665, -33.4685963], [-70.6261636, -33.4682587], [-70.6263953, -33.467285], [-70.626979, -33.4653088], [-70.6278545, -33.4623588], [-70.628566, -33.4599728], [-70.6287042, -33.4595089], [-70.6293136, -33.4573034], [-70.6303521, -33.4536656], [-70.6308142, -33.4521227], [-70.6308247, -33.4520877], [-70.6308476, -33.4520112], [-70.6309264, -33.4517501], [-70.630936, -33.4517187], [-70.6315052, -33.4498297], [-70.6315881, -33.4495335], [-70.6323863, -33.4469339], [-70.6328091, -33.4454969], [-70.6328387, -33.4453963], [-70.6328601, -33.4453227], [-70.6328678, -33.4452962], [-70.6334659, -33.443239], [-70.633588, -33.4428015], [-70.6342746, -33.4402804], [-70.6348529, -33.4384495], [-70.6350672, -33.4376824], [-70.6352106, -33.4370971], [-70.635324, -33.4368263], [-70.6353569, -33.4367322], [-70.635375, -33.4366584], [-70.6354297, -33.4364262], [-70.6354157, -33.4362626], [-70.6353964, -33.4356977], [-70.6354783, -33.4356882], [-70.635564, -33.4356805], [-70.6359526, -33.4355971], [-70.6367164, -33.4354152], [-70.6387247, -33.4349365], [-70.6388361, -33.4349094], [-70.6426827, -33.4340127], [-70.6429061, -33.4339666], [-70.6443015, -33.433645], [-70.6452749, -33.4334172], [-70.6466827, -33.4331067], [-70.6477323, -33.4328388], [-70.6478122, -33.4328072], [-70.6479418, -33.4327561], [-70.6480358, -33.4327244], [-70.6484352, -33.432633], [-70.6485545, -33.4326057], [-70.6486834, -33.4325844], [-70.6496154, -33.4323912], [-70.6499406, -33.4323227], [-70.6502529, -33.4322569], [-70.6504564, -33.4322132], [-70.6511307, -33.432059], [-70.6512312, -33.432036], [-70.6514741, -33.4319796], [-70.6515016, -33.4319732], [-70.6515858, -33.4319557], [-70.6517093, -33.431924], [-70.6519733, -33.4318603], [-70.652567, -33.4317141], [-70.6528489, -33.4316459], [-70.6529612, -33.4316179], [-70.653033, -33.4316003], [-70.6536291, -33.4314562], [-70.6562121, -33.4308938], [-70.6574562, -33.4305918], [-70.6594229, -33.4301145], [-70.6595966, -33.4300664], [-70.659742, -33.4300195], [-70.6598847, -33.4299672], [-70.6600244, -33.4299097], [-70.6602243, -33.4298195], [-70.6603061, -33.4297737], [-70.6603557, -33.4297452], [-70.6603801, -33.429729], [-70.6604062, -33.4297061], [-70.6604272, -33.4296863], [-70.6604556, -33.4296433], [-70.6604697, -33.4296019], [-70.6604824, -33.429542], [-70.6604932, -33.4294888], [-70.6605046, -33.4294099], [-70.6605011, -33.4293816], [-70.6604864, -33.4292645], [-70.6608532, -33.4290954], [-70.6613347, -33.4288984], [-70.6618537, -33.4287294], [-70.662488, -33.4285504], [-70.6631251, -33.4283903], [-70.6636441, -33.428256], [-70.6641886, -33.4281083], [-70.664784, -33.4279225], [-70.6670988, -33.4271121], [-70.6689066, -33.4264294], [-70.6702504, -33.4259324], [-70.6711301, -33.4255933], [-70.6711482, -33.425638], [-70.6712227, -33.42583], [-70.6712462, -33.4258934], [-70.6712911, -33.4260057], [-70.6713259, -33.4260969], [-70.6713501, -33.4261694], [-70.6714466, -33.4264817], [-70.6715727, -33.4268899], [-70.6716418, -33.427102], [-70.671684, -33.4272397], [-70.6717276, -33.4274048], [-70.671746, -33.4274985], [-70.6717649, -33.4275771], [-70.6717943, -33.427719], [-70.6718282, -33.42796], [-70.6718389, -33.4280438], [-70.6718267, -33.4281507], [-70.6718025, -33.4283311], [-70.6722616, -33.428182], [-70.673583, -33.4277456], [-70.673686, -33.4277134], [-70.6737467, -33.427693], [-70.6754684, -33.4271111], [-70.675783, -33.426991], [-70.6762534, -33.4268114], [-70.6765716, -33.4266726], [-70.6766381, -33.4266443], [-70.6767362, -33.4266241], [-70.6768379, -33.4266023], [-70.6769606, -33.4265883], [-70.6770762, -33.4265816], [-70.6771705, -33.426581], [-70.6773237, -33.4265922], [-70.6774239, -33.4266065], [-70.6775061, -33.4266205], [-70.6775989, -33.4266454], [-70.6776626, -33.4266692], [-70.6777615, -33.4267047], [-70.677889, -33.4267545], [-70.678069, -33.4268396], [-70.678985, -33.4272442], [-70.6791023, -33.4273007], [-70.6791995, -33.4273522], [-70.6793263, -33.4274132], [-70.6794631, -33.4274994], [-70.6795623, -33.4275732], [-70.6796555, -33.4276533], [-70.6797709, -33.4277518], [-70.6798828, -33.427857], [-70.6800035, -33.4279801], [-70.6801035, -33.4280937], [-70.6801792, -33.4281883], [-70.6802718, -33.4283187], [-70.6803495, -33.428453], [-70.6804213, -33.42858], [-70.6804843, -33.4287082], [-70.680542, -33.4288391], [-70.680605, -33.4289947], [-70.6806473, -33.4291492], [-70.6806768, -33.4292902], [-70.6806955, -33.4294027], [-70.6807123, -33.4295521], [-70.6807217, -33.4296842], [-70.6807237, -33.4297905], [-70.680723, -33.4299293], [-70.680717, -33.4300518], [-70.680695, -33.4303372], [-70.6806734, -33.4306165], [-70.6806614, -33.4308056], [-70.6806547, -33.4309948], [-70.6806495, -33.4311623], [-70.6806339, -33.4316654], [-70.6806322, -33.4317127], [-70.6806168, -33.4321465], [-70.6805746, -33.4328941], [-70.6806016, -33.4330202], [-70.6805353, -33.4331246], [-70.6805072, -33.4337654], [-70.6804376, -33.4345456], [-70.6803234, -33.4358403], [-70.6802204, -33.4369874], [-70.6801524, -33.4378038], [-70.6800777, -33.4383689], [-70.6800722, -33.4384427], [-70.681249, -33.4385249], [-70.6817228, -33.438558], [-70.6817269, -33.4385152], [-70.6817675, -33.4379757], [-70.6817666, -33.4379469], [-70.6819136, -33.4379563], [-70.6819536, -33.4374899], [-70.6819588, -33.437412], [-70.6818133, -33.4374031], [-70.6817897, -33.437389], [-70.6814709, -33.4373683], [-70.6814712, -33.4373255], [-70.6810848, -33.4372992], [-70.6810644, -33.4375162], [-70.6807902, -33.4374994], [-70.6808121, -33.4372661], [-70.6809232, -33.4372726], [-70.6810319, -33.4360408], [-70.6819124, -33.4361604], [-70.6826786, -33.4363189], [-70.683705, -33.4365228], [-70.6837385, -33.4375262], [-70.6842913, -33.4375636], [-70.6841402, -33.4387182], [-70.6865408, -33.4388915], [-70.6884525, -33.4390059], [-70.6894933, -33.4390803], [-70.690934, -33.4391728], [-70.6916101, -33.439229], [-70.6916638, -33.4392354], [-70.6918361, -33.4392648], [-70.6918073, -33.4393818], [-70.691787, -33.4394758], [-70.691754, -33.4396368], [-70.6917324, -33.4397992], [-70.6917257, -33.4398833], [-70.6917221, -33.4399676], [-70.6917211, -33.4401207], [-70.6917268, -33.4402737], [-70.6917939, -33.4411858], [-70.6920024, -33.4436684], [-70.6920319, -33.4440204], [-70.6920493, -33.4442934], [-70.6920527, -33.4444848]]]}}] \ No newline at end of file diff --git a/backend/gps/utils/cache/7cd7defaaaab40b63589d435c13ffcd76917af0b.json b/backend/gps/utils/cache/7cd7defaaaab40b63589d435c13ffcd76917af0b.json new file mode 100644 index 0000000..9f0661e --- /dev/null +++ b/backend/gps/utils/cache/7cd7defaaaab40b63589d435c13ffcd76917af0b.json @@ -0,0 +1 @@ +[{"place_id": 1363431, "licence": "Data \u00a9 OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright", "osm_type": "relation", "osm_id": 164609, "lat": "-33.4377756", "lon": "-70.6504502", "class": "boundary", "type": "administrative", "place_rank": 16, "importance": 0.659760745604439, "addresstype": "city", "name": "Santiago", "display_name": "Santiago, Provincia de Santiago, Santiago Metropolitan Region, Chile", "boundingbox": ["-33.4785698", "-33.4255933", "-70.6920527", "-70.6249963"], "geojson": {"type": "Polygon", "coordinates": [[[-70.6920527, -33.4444848], [-70.6906888, -33.4444137], [-70.6900833, -33.4443859], [-70.6899544, -33.44438], [-70.6893368, -33.4443516], [-70.6889484, -33.4443337], [-70.6884781, -33.4443121], [-70.6880386, -33.4442919], [-70.6874306, -33.444264], [-70.6867406, -33.4442323], [-70.6855872, -33.4441793], [-70.6843688, -33.4441177], [-70.6842386, -33.444111], [-70.684126, -33.4441037], [-70.6835051, -33.4440762], [-70.6827769, -33.4440393], [-70.6822198, -33.4440119], [-70.6816078, -33.4439815], [-70.6805822, -33.4439309], [-70.6804629, -33.4439236], [-70.6803189, -33.4439121], [-70.6795784, -33.4438552], [-70.6795529, -33.4443197], [-70.6794979, -33.4449413], [-70.67949, -33.4450308], [-70.6794859, -33.4450764], [-70.6794188, -33.445835], [-70.6793461, -33.4466564], [-70.6793267, -33.4468752], [-70.6793176, -33.4469836], [-70.679296, -33.4472421], [-70.6792416, -33.4478923], [-70.6791968, -33.4484042], [-70.6790484, -33.4500985], [-70.6790005, -33.450645], [-70.678994, -33.4507192], [-70.6789825, -33.4508241], [-70.6778718, -33.4505935], [-70.6778679, -33.450614], [-70.6778491, -33.4507109], [-70.6778383, -33.4508625], [-70.6778383, -33.450947], [-70.677843, -33.4510416], [-70.6778484, -33.4511367], [-70.6778685, -33.4513896], [-70.6779396, -33.4524084], [-70.67801, -33.4534786], [-70.6780827, -33.454539], [-70.6781207, -33.4550608], [-70.6781553, -33.4555379], [-70.6782331, -33.4567282], [-70.6783411, -33.4581446], [-70.6783917, -33.458856], [-70.6784858, -33.4602285], [-70.6785876, -33.4614007], [-70.6786678, -33.4624783], [-70.6787532, -33.463397], [-70.6787975, -33.4640094], [-70.6788541, -33.464957], [-70.6789722, -33.4666558], [-70.6789975, -33.4670576], [-70.6791285, -33.4691406], [-70.6791465, -33.4692967], [-70.6791552, -33.469361], [-70.6791653, -33.4694108], [-70.6791747, -33.469451], [-70.6791902, -33.4694896], [-70.6792324, -33.4695719], [-70.6792867, -33.4696675], [-70.6793779, -33.4698196], [-70.6797132, -33.4703202], [-70.6797769, -33.4704025], [-70.6798024, -33.4704316], [-70.6798229, -33.4704514], [-70.6798537, -33.4704729], [-70.6798661, -33.4704984], [-70.6798721, -33.4705255], [-70.6798722, -33.4705472], [-70.6798681, -33.4705686], [-70.6798573, -33.4705912], [-70.6798406, -33.4706111], [-70.67981, -33.4706397], [-70.6797747, -33.4706643], [-70.6791112, -33.4706686], [-70.6781055, -33.4706608], [-70.6775696, -33.4706566], [-70.6767983, -33.4706504], [-70.6765254, -33.4706482], [-70.6763993, -33.4706471], [-70.6755451, -33.4706403], [-70.6742444, -33.4706298], [-70.6739345, -33.4706273], [-70.6736164, -33.4706247], [-70.6729527, -33.4706201], [-70.6729308, -33.4719227], [-70.6729205, -33.4726961], [-70.6729135, -33.4732247], [-70.6729145, -33.4737425], [-70.6729151, -33.4737682], [-70.6729259, -33.4742328], [-70.6729333, -33.4745521], [-70.6729285, -33.4746747], [-70.6730222, -33.4746845], [-70.6731043, -33.475069], [-70.6732577, -33.4753382], [-70.6734823, -33.4755786], [-70.6737425, -33.4757935], [-70.6741636, -33.4759681], [-70.6745155, -33.4760858], [-70.6749072, -33.4761798], [-70.675864, -33.4762312], [-70.6764431, -33.4762298], [-70.6769177, -33.4762808], [-70.6772932, -33.4762719], [-70.6777331, -33.476245], [-70.6780442, -33.476245], [-70.678036, -33.476654], [-70.6785976, -33.4766211], [-70.6807164, -33.4766538], [-70.6808173, -33.478399], [-70.6716346, -33.4785698], [-70.6716712, -33.476164], [-70.6716037, -33.4761631], [-70.6713903, -33.4761602], [-70.6704869, -33.4763574], [-70.6697596, -33.4764196], [-70.6674997, -33.4763347], [-70.6662655, -33.4761834], [-70.665564, -33.4760889], [-70.6655484, -33.4761822], [-70.6648246, -33.4760028], [-70.6619339, -33.4759191], [-70.6614405, -33.4759317], [-70.6596253, -33.4760904], [-70.658445, -33.4761863], [-70.6549426, -33.4764708], [-70.6540339, -33.4765557], [-70.6499422, -33.4767071], [-70.6482452, -33.4767575], [-70.648253, -33.4765685], [-70.6464723, -33.4765622], [-70.6419393, -33.4763947], [-70.6403686, -33.4763634], [-70.6392099, -33.47612], [-70.6379653, -33.4756976], [-70.6348068, -33.474595], [-70.6321803, -33.47365], [-70.6319636, -33.4735704], [-70.6305238, -33.4730414], [-70.6287385, -33.4723827], [-70.6270219, -33.4716883], [-70.6266896, -33.4715382], [-70.6264812, -33.471409], [-70.6260778, -33.4710439], [-70.6257001, -33.4706072], [-70.6252881, -33.4700702], [-70.6249963, -33.4695976], [-70.6255628, -33.4692683], [-70.6258289, -33.469032], [-70.6259549, -33.4688254], [-70.6260665, -33.4685963], [-70.6261636, -33.4682587], [-70.6263953, -33.467285], [-70.626979, -33.4653088], [-70.6278545, -33.4623588], [-70.628566, -33.4599728], [-70.6287042, -33.4595089], [-70.6293136, -33.4573034], [-70.6303521, -33.4536656], [-70.6308142, -33.4521227], [-70.6308247, -33.4520877], [-70.6308476, -33.4520112], [-70.6309264, -33.4517501], [-70.630936, -33.4517187], [-70.6315052, -33.4498297], [-70.6315881, -33.4495335], [-70.6323863, -33.4469339], [-70.6328091, -33.4454969], [-70.6328387, -33.4453963], [-70.6328601, -33.4453227], [-70.6328678, -33.4452962], [-70.6334659, -33.443239], [-70.633588, -33.4428015], [-70.6342746, -33.4402804], [-70.6348529, -33.4384495], [-70.6350672, -33.4376824], [-70.6352106, -33.4370971], [-70.635324, -33.4368263], [-70.6353569, -33.4367322], [-70.635375, -33.4366584], [-70.6354297, -33.4364262], [-70.6354157, -33.4362626], [-70.6353964, -33.4356977], [-70.6354783, -33.4356882], [-70.635564, -33.4356805], [-70.6359526, -33.4355971], [-70.6367164, -33.4354152], [-70.6387247, -33.4349365], [-70.6388361, -33.4349094], [-70.6426827, -33.4340127], [-70.6429061, -33.4339666], [-70.6443015, -33.433645], [-70.6452749, -33.4334172], [-70.6466827, -33.4331067], [-70.6477323, -33.4328388], [-70.6478122, -33.4328072], [-70.6479418, -33.4327561], [-70.6480358, -33.4327244], [-70.6484352, -33.432633], [-70.6485545, -33.4326057], [-70.6486834, -33.4325844], [-70.6496154, -33.4323912], [-70.6499406, -33.4323227], [-70.6502529, -33.4322569], [-70.6504564, -33.4322132], [-70.6511307, -33.432059], [-70.6512312, -33.432036], [-70.6514741, -33.4319796], [-70.6515016, -33.4319732], [-70.6515858, -33.4319557], [-70.6517093, -33.431924], [-70.6519733, -33.4318603], [-70.652567, -33.4317141], [-70.6528489, -33.4316459], [-70.6529612, -33.4316179], [-70.653033, -33.4316003], [-70.6536291, -33.4314562], [-70.6562121, -33.4308938], [-70.6574562, -33.4305918], [-70.6594229, -33.4301145], [-70.6595966, -33.4300664], [-70.659742, -33.4300195], [-70.6598847, -33.4299672], [-70.6600244, -33.4299097], [-70.6602243, -33.4298195], [-70.6603061, -33.4297737], [-70.6603557, -33.4297452], [-70.6603801, -33.429729], [-70.6604062, -33.4297061], [-70.6604272, -33.4296863], [-70.6604556, -33.4296433], [-70.6604697, -33.4296019], [-70.6604824, -33.429542], [-70.6604932, -33.4294888], [-70.6605046, -33.4294099], [-70.6605011, -33.4293816], [-70.6604864, -33.4292645], [-70.6608532, -33.4290954], [-70.6613347, -33.4288984], [-70.6618537, -33.4287294], [-70.662488, -33.4285504], [-70.6631251, -33.4283903], [-70.6636441, -33.428256], [-70.6641886, -33.4281083], [-70.664784, -33.4279225], [-70.6670988, -33.4271121], [-70.6689066, -33.4264294], [-70.6702504, -33.4259324], [-70.6711301, -33.4255933], [-70.6711482, -33.425638], [-70.6712227, -33.42583], [-70.6712462, -33.4258934], [-70.6712911, -33.4260057], [-70.6713259, -33.4260969], [-70.6713501, -33.4261694], [-70.6714466, -33.4264817], [-70.6715727, -33.4268899], [-70.6716418, -33.427102], [-70.671684, -33.4272397], [-70.6717276, -33.4274048], [-70.671746, -33.4274985], [-70.6717649, -33.4275771], [-70.6717943, -33.427719], [-70.6718282, -33.42796], [-70.6718389, -33.4280438], [-70.6718267, -33.4281507], [-70.6718025, -33.4283311], [-70.6722616, -33.428182], [-70.673583, -33.4277456], [-70.673686, -33.4277134], [-70.6737467, -33.427693], [-70.6754684, -33.4271111], [-70.675783, -33.426991], [-70.6762534, -33.4268114], [-70.6765716, -33.4266726], [-70.6766381, -33.4266443], [-70.6767362, -33.4266241], [-70.6768379, -33.4266023], [-70.6769606, -33.4265883], [-70.6770762, -33.4265816], [-70.6771705, -33.426581], [-70.6773237, -33.4265922], [-70.6774239, -33.4266065], [-70.6775061, -33.4266205], [-70.6775989, -33.4266454], [-70.6776626, -33.4266692], [-70.6777615, -33.4267047], [-70.677889, -33.4267545], [-70.678069, -33.4268396], [-70.678985, -33.4272442], [-70.6791023, -33.4273007], [-70.6791995, -33.4273522], [-70.6793263, -33.4274132], [-70.6794631, -33.4274994], [-70.6795623, -33.4275732], [-70.6796555, -33.4276533], [-70.6797709, -33.4277518], [-70.6798828, -33.427857], [-70.6800035, -33.4279801], [-70.6801035, -33.4280937], [-70.6801792, -33.4281883], [-70.6802718, -33.4283187], [-70.6803495, -33.428453], [-70.6804213, -33.42858], [-70.6804843, -33.4287082], [-70.680542, -33.4288391], [-70.680605, -33.4289947], [-70.6806473, -33.4291492], [-70.6806768, -33.4292902], [-70.6806955, -33.4294027], [-70.6807123, -33.4295521], [-70.6807217, -33.4296842], [-70.6807237, -33.4297905], [-70.680723, -33.4299293], [-70.680717, -33.4300518], [-70.680695, -33.4303372], [-70.6806734, -33.4306165], [-70.6806614, -33.4308056], [-70.6806547, -33.4309948], [-70.6806495, -33.4311623], [-70.6806339, -33.4316654], [-70.6806322, -33.4317127], [-70.6806168, -33.4321465], [-70.6805746, -33.4328941], [-70.6806016, -33.4330202], [-70.6805353, -33.4331246], [-70.6805072, -33.4337654], [-70.6804376, -33.4345456], [-70.6803234, -33.4358403], [-70.6802204, -33.4369874], [-70.6801524, -33.4378038], [-70.6800777, -33.4383689], [-70.6800722, -33.4384427], [-70.681249, -33.4385249], [-70.6817228, -33.438558], [-70.6817269, -33.4385152], [-70.6817675, -33.4379757], [-70.6817666, -33.4379469], [-70.6819136, -33.4379563], [-70.6819536, -33.4374899], [-70.6819588, -33.437412], [-70.6818133, -33.4374031], [-70.6817897, -33.437389], [-70.6814709, -33.4373683], [-70.6814712, -33.4373255], [-70.6810848, -33.4372992], [-70.6810644, -33.4375162], [-70.6807902, -33.4374994], [-70.6808121, -33.4372661], [-70.6809232, -33.4372726], [-70.6810319, -33.4360408], [-70.6819124, -33.4361604], [-70.6826786, -33.4363189], [-70.683705, -33.4365228], [-70.6837385, -33.4375262], [-70.6842913, -33.4375636], [-70.6841402, -33.4387182], [-70.6865408, -33.4388915], [-70.6884525, -33.4390059], [-70.6894933, -33.4390803], [-70.690934, -33.4391728], [-70.6916101, -33.439229], [-70.6916638, -33.4392354], [-70.6918361, -33.4392648], [-70.6918073, -33.4393818], [-70.691787, -33.4394758], [-70.691754, -33.4396368], [-70.6917324, -33.4397992], [-70.6917257, -33.4398833], [-70.6917221, -33.4399676], [-70.6917211, -33.4401207], [-70.6917268, -33.4402737], [-70.6917939, -33.4411858], [-70.6920024, -33.4436684], [-70.6920319, -33.4440204], [-70.6920493, -33.4442934], [-70.6920527, -33.4444848]]]}}] \ No newline at end of file diff --git a/backend/gps/utils/cache/83fc925167560e2da18059a5f3e89ab99e55bc52.json b/backend/gps/utils/cache/83fc925167560e2da18059a5f3e89ab99e55bc52.json new file mode 100644 index 0000000..25d6b00 --- /dev/null +++ b/backend/gps/utils/cache/83fc925167560e2da18059a5f3e89ab99e55bc52.json @@ -0,0 +1 @@ +[{"place_id": 34091350, "licence": "Data \u00a9 OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright", "osm_type": "relation", "osm_id": 164609, "lat": "-33.4377756", "lon": "-70.6504502", "class": "boundary", "type": "administrative", "place_rank": 16, "importance": 0.659760745604439, "addresstype": "city", "name": "Santiago", "display_name": "Santiago, Provincia de Santiago, Santiago Metropolitan Region, Chile", "boundingbox": ["-33.4785698", "-33.4255933", "-70.6920527", "-70.6249963"], "geojson": {"type": "Polygon", "coordinates": [[[-70.6920527, -33.4444848], [-70.6906888, -33.4444137], [-70.6900833, -33.4443859], [-70.6899544, -33.44438], [-70.6893368, -33.4443516], [-70.6889484, -33.4443337], [-70.6884781, -33.4443121], [-70.6880386, -33.4442919], [-70.6874306, -33.444264], [-70.6867406, -33.4442323], [-70.6855872, -33.4441793], [-70.6843688, -33.4441177], [-70.6842386, -33.444111], [-70.684126, -33.4441037], [-70.6835051, -33.4440762], [-70.6827769, -33.4440393], [-70.6822198, -33.4440119], [-70.6816078, -33.4439815], [-70.6805822, -33.4439309], [-70.6804629, -33.4439236], [-70.6803189, -33.4439121], [-70.6795784, -33.4438552], [-70.6795529, -33.4443197], [-70.6794979, -33.4449413], [-70.67949, -33.4450308], [-70.6794859, -33.4450764], [-70.6794188, -33.445835], [-70.6793461, -33.4466564], [-70.6793267, -33.4468752], [-70.6793176, -33.4469836], [-70.679296, -33.4472421], [-70.6792416, -33.4478923], [-70.6791968, -33.4484042], [-70.6790484, -33.4500985], [-70.6790005, -33.450645], [-70.678994, -33.4507192], [-70.6789825, -33.4508241], [-70.6778718, -33.4505935], [-70.6778679, -33.450614], [-70.6778491, -33.4507109], [-70.6778383, -33.4508625], [-70.6778383, -33.450947], [-70.677843, -33.4510416], [-70.6778484, -33.4511367], [-70.6778685, -33.4513896], [-70.6779396, -33.4524084], [-70.67801, -33.4534786], [-70.6780827, -33.454539], [-70.6781207, -33.4550608], [-70.6781553, -33.4555379], [-70.6782331, -33.4567282], [-70.6783411, -33.4581446], [-70.6783917, -33.458856], [-70.6784858, -33.4602285], [-70.6785876, -33.4614007], [-70.6786678, -33.4624783], [-70.6787532, -33.463397], [-70.6787975, -33.4640094], [-70.6788541, -33.464957], [-70.6789722, -33.4666558], [-70.6789975, -33.4670576], [-70.6791285, -33.4691406], [-70.6791465, -33.4692967], [-70.6791552, -33.469361], [-70.6791653, -33.4694108], [-70.6791747, -33.469451], [-70.6791902, -33.4694896], [-70.6792324, -33.4695719], [-70.6792867, -33.4696675], [-70.6793779, -33.4698196], [-70.6797132, -33.4703202], [-70.6797769, -33.4704025], [-70.6798024, -33.4704316], [-70.6798229, -33.4704514], [-70.6798537, -33.4704729], [-70.6798661, -33.4704984], [-70.6798721, -33.4705255], [-70.6798722, -33.4705472], [-70.6798681, -33.4705686], [-70.6798573, -33.4705912], [-70.6798406, -33.4706111], [-70.67981, -33.4706397], [-70.6797747, -33.4706643], [-70.6791112, -33.4706686], [-70.6781055, -33.4706608], [-70.6775696, -33.4706566], [-70.6767983, -33.4706504], [-70.6765254, -33.4706482], [-70.6763993, -33.4706471], [-70.6755451, -33.4706403], [-70.6742444, -33.4706298], [-70.6739345, -33.4706273], [-70.6736164, -33.4706247], [-70.6729527, -33.4706201], [-70.6729308, -33.4719227], [-70.6729205, -33.4726961], [-70.6729135, -33.4732247], [-70.6729145, -33.4737425], [-70.6729151, -33.4737682], [-70.6729259, -33.4742328], [-70.6729333, -33.4745521], [-70.6729285, -33.4746747], [-70.6730222, -33.4746845], [-70.6731043, -33.475069], [-70.6732577, -33.4753382], [-70.6734823, -33.4755786], [-70.6737425, -33.4757935], [-70.6741636, -33.4759681], [-70.6745155, -33.4760858], [-70.6749072, -33.4761798], [-70.675864, -33.4762312], [-70.6764431, -33.4762298], [-70.6769177, -33.4762808], [-70.6772932, -33.4762719], [-70.6777331, -33.476245], [-70.6780442, -33.476245], [-70.678036, -33.476654], [-70.6785976, -33.4766211], [-70.6807164, -33.4766538], [-70.6808173, -33.478399], [-70.6716346, -33.4785698], [-70.6716712, -33.476164], [-70.6716037, -33.4761631], [-70.6713903, -33.4761602], [-70.6704869, -33.4763574], [-70.6697596, -33.4764196], [-70.6674997, -33.4763347], [-70.6662655, -33.4761834], [-70.665564, -33.4760889], [-70.6655484, -33.4761822], [-70.6648246, -33.4760028], [-70.6619339, -33.4759191], [-70.6614405, -33.4759317], [-70.6596253, -33.4760904], [-70.658445, -33.4761863], [-70.6549426, -33.4764708], [-70.6540339, -33.4765557], [-70.6499422, -33.4767071], [-70.6482452, -33.4767575], [-70.648253, -33.4765685], [-70.6464723, -33.4765622], [-70.6419393, -33.4763947], [-70.6403686, -33.4763634], [-70.6392099, -33.47612], [-70.6379653, -33.4756976], [-70.6348068, -33.474595], [-70.6321803, -33.47365], [-70.6319636, -33.4735704], [-70.6305238, -33.4730414], [-70.6287385, -33.4723827], [-70.6270219, -33.4716883], [-70.6266896, -33.4715382], [-70.6264812, -33.471409], [-70.6260778, -33.4710439], [-70.6257001, -33.4706072], [-70.6252881, -33.4700702], [-70.6249963, -33.4695976], [-70.6255628, -33.4692683], [-70.6258289, -33.469032], [-70.6259549, -33.4688254], [-70.6260665, -33.4685963], [-70.6261636, -33.4682587], [-70.6263953, -33.467285], [-70.626979, -33.4653088], [-70.6278545, -33.4623588], [-70.628566, -33.4599728], [-70.6287042, -33.4595089], [-70.6293136, -33.4573034], [-70.6303521, -33.4536656], [-70.6308142, -33.4521227], [-70.6308247, -33.4520877], [-70.6308476, -33.4520112], [-70.6309264, -33.4517501], [-70.630936, -33.4517187], [-70.6315052, -33.4498297], [-70.6315881, -33.4495335], [-70.6323863, -33.4469339], [-70.6328091, -33.4454969], [-70.6328387, -33.4453963], [-70.6328601, -33.4453227], [-70.6328678, -33.4452962], [-70.6334659, -33.443239], [-70.633588, -33.4428015], [-70.6342746, -33.4402804], [-70.6348529, -33.4384495], [-70.6350672, -33.4376824], [-70.6352106, -33.4370971], [-70.635324, -33.4368263], [-70.6353569, -33.4367322], [-70.635375, -33.4366584], [-70.6354297, -33.4364262], [-70.6354157, -33.4362626], [-70.6353964, -33.4356977], [-70.6354783, -33.4356882], [-70.635564, -33.4356805], [-70.6359526, -33.4355971], [-70.6367164, -33.4354152], [-70.6387247, -33.4349365], [-70.6388361, -33.4349094], [-70.6426827, -33.4340127], [-70.6429061, -33.4339666], [-70.6443015, -33.433645], [-70.6452749, -33.4334172], [-70.6466827, -33.4331067], [-70.6477323, -33.4328388], [-70.6478122, -33.4328072], [-70.6479418, -33.4327561], [-70.6480358, -33.4327244], [-70.6484352, -33.432633], [-70.6485545, -33.4326057], [-70.6486834, -33.4325844], [-70.6496154, -33.4323912], [-70.6499406, -33.4323227], [-70.6502529, -33.4322569], [-70.6504564, -33.4322132], [-70.6511307, -33.432059], [-70.6512312, -33.432036], [-70.6514741, -33.4319796], [-70.6515016, -33.4319732], [-70.6515858, -33.4319557], [-70.6517093, -33.431924], [-70.6519733, -33.4318603], [-70.652567, -33.4317141], [-70.6528489, -33.4316459], [-70.6529612, -33.4316179], [-70.653033, -33.4316003], [-70.6536291, -33.4314562], [-70.6562121, -33.4308938], [-70.6574562, -33.4305918], [-70.6594229, -33.4301145], [-70.6595966, -33.4300664], [-70.659742, -33.4300195], [-70.6598847, -33.4299672], [-70.6600244, -33.4299097], [-70.6602243, -33.4298195], [-70.6603061, -33.4297737], [-70.6603557, -33.4297452], [-70.6603801, -33.429729], [-70.6604062, -33.4297061], [-70.6604272, -33.4296863], [-70.6604556, -33.4296433], [-70.6604697, -33.4296019], [-70.6604824, -33.429542], [-70.6604932, -33.4294888], [-70.6605046, -33.4294099], [-70.6605011, -33.4293816], [-70.6604864, -33.4292645], [-70.6608532, -33.4290954], [-70.6613347, -33.4288984], [-70.6618537, -33.4287294], [-70.662488, -33.4285504], [-70.6631251, -33.4283903], [-70.6636441, -33.428256], [-70.6641886, -33.4281083], [-70.664784, -33.4279225], [-70.6670988, -33.4271121], [-70.6689066, -33.4264294], [-70.6702504, -33.4259324], [-70.6711301, -33.4255933], [-70.6711482, -33.425638], [-70.6712227, -33.42583], [-70.6712462, -33.4258934], [-70.6712911, -33.4260057], [-70.6713259, -33.4260969], [-70.6713501, -33.4261694], [-70.6714466, -33.4264817], [-70.6715727, -33.4268899], [-70.6716418, -33.427102], [-70.671684, -33.4272397], [-70.6717276, -33.4274048], [-70.671746, -33.4274985], [-70.6717649, -33.4275771], [-70.6717943, -33.427719], [-70.6718282, -33.42796], [-70.6718389, -33.4280438], [-70.6718267, -33.4281507], [-70.6718025, -33.4283311], [-70.6722616, -33.428182], [-70.673583, -33.4277456], [-70.673686, -33.4277134], [-70.6737467, -33.427693], [-70.6754684, -33.4271111], [-70.675783, -33.426991], [-70.6762534, -33.4268114], [-70.6765716, -33.4266726], [-70.6766381, -33.4266443], [-70.6767362, -33.4266241], [-70.6768379, -33.4266023], [-70.6769606, -33.4265883], [-70.6770762, -33.4265816], [-70.6771705, -33.426581], [-70.6773237, -33.4265922], [-70.6774239, -33.4266065], [-70.6775061, -33.4266205], [-70.6775989, -33.4266454], [-70.6776626, -33.4266692], [-70.6777615, -33.4267047], [-70.677889, -33.4267545], [-70.678069, -33.4268396], [-70.678985, -33.4272442], [-70.6791023, -33.4273007], [-70.6791995, -33.4273522], [-70.6793263, -33.4274132], [-70.6794631, -33.4274994], [-70.6795623, -33.4275732], [-70.6796555, -33.4276533], [-70.6797709, -33.4277518], [-70.6798828, -33.427857], [-70.6800035, -33.4279801], [-70.6801035, -33.4280937], [-70.6801792, -33.4281883], [-70.6802718, -33.4283187], [-70.6803495, -33.428453], [-70.6804213, -33.42858], [-70.6804843, -33.4287082], [-70.680542, -33.4288391], [-70.680605, -33.4289947], [-70.6806473, -33.4291492], [-70.6806768, -33.4292902], [-70.6806955, -33.4294027], [-70.6807123, -33.4295521], [-70.6807217, -33.4296842], [-70.6807237, -33.4297905], [-70.680723, -33.4299293], [-70.680717, -33.4300518], [-70.680695, -33.4303372], [-70.6806734, -33.4306165], [-70.6806614, -33.4308056], [-70.6806547, -33.4309948], [-70.6806495, -33.4311623], [-70.6806339, -33.4316654], [-70.6806322, -33.4317127], [-70.6806168, -33.4321465], [-70.6805746, -33.4328941], [-70.6806016, -33.4330202], [-70.6805353, -33.4331246], [-70.6805072, -33.4337654], [-70.6804376, -33.4345456], [-70.6803234, -33.4358403], [-70.6802204, -33.4369874], [-70.6801524, -33.4378038], [-70.6800777, -33.4383689], [-70.6800722, -33.4384427], [-70.681249, -33.4385249], [-70.6817228, -33.438558], [-70.6817269, -33.4385152], [-70.6817675, -33.4379757], [-70.6817666, -33.4379469], [-70.6819136, -33.4379563], [-70.6819536, -33.4374899], [-70.6819588, -33.437412], [-70.6818133, -33.4374031], [-70.6817897, -33.437389], [-70.6814709, -33.4373683], [-70.6814712, -33.4373255], [-70.6810848, -33.4372992], [-70.6810644, -33.4375162], [-70.6807902, -33.4374994], [-70.6808121, -33.4372661], [-70.6809232, -33.4372726], [-70.6810319, -33.4360408], [-70.6819124, -33.4361604], [-70.6826786, -33.4363189], [-70.683705, -33.4365228], [-70.6837385, -33.4375262], [-70.6842913, -33.4375636], [-70.6841402, -33.4387182], [-70.6865408, -33.4388915], [-70.6884525, -33.4390059], [-70.6894933, -33.4390803], [-70.690934, -33.4391728], [-70.6916101, -33.439229], [-70.6916638, -33.4392354], [-70.6918361, -33.4392648], [-70.6918073, -33.4393818], [-70.691787, -33.4394758], [-70.691754, -33.4396368], [-70.6917324, -33.4397992], [-70.6917257, -33.4398833], [-70.6917221, -33.4399676], [-70.6917211, -33.4401207], [-70.6917268, -33.4402737], [-70.6917939, -33.4411858], [-70.6920024, -33.4436684], [-70.6920319, -33.4440204], [-70.6920493, -33.4442934], [-70.6920527, -33.4444848]]]}}] \ No newline at end of file diff --git a/backend/gps/utils/cache/c733e09df899604be20aa95453d2aa3a835f0564.json b/backend/gps/utils/cache/c733e09df899604be20aa95453d2aa3a835f0564.json new file mode 100644 index 0000000..9f0661e --- /dev/null +++ b/backend/gps/utils/cache/c733e09df899604be20aa95453d2aa3a835f0564.json @@ -0,0 +1 @@ +[{"place_id": 1363431, "licence": "Data \u00a9 OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright", "osm_type": "relation", "osm_id": 164609, "lat": "-33.4377756", "lon": "-70.6504502", "class": "boundary", "type": "administrative", "place_rank": 16, "importance": 0.659760745604439, "addresstype": "city", "name": "Santiago", "display_name": "Santiago, Provincia de Santiago, Santiago Metropolitan Region, Chile", "boundingbox": ["-33.4785698", "-33.4255933", "-70.6920527", "-70.6249963"], "geojson": {"type": "Polygon", "coordinates": [[[-70.6920527, -33.4444848], [-70.6906888, -33.4444137], [-70.6900833, -33.4443859], [-70.6899544, -33.44438], [-70.6893368, -33.4443516], [-70.6889484, -33.4443337], [-70.6884781, -33.4443121], [-70.6880386, -33.4442919], [-70.6874306, -33.444264], [-70.6867406, -33.4442323], [-70.6855872, -33.4441793], [-70.6843688, -33.4441177], [-70.6842386, -33.444111], [-70.684126, -33.4441037], [-70.6835051, -33.4440762], [-70.6827769, -33.4440393], [-70.6822198, -33.4440119], [-70.6816078, -33.4439815], [-70.6805822, -33.4439309], [-70.6804629, -33.4439236], [-70.6803189, -33.4439121], [-70.6795784, -33.4438552], [-70.6795529, -33.4443197], [-70.6794979, -33.4449413], [-70.67949, -33.4450308], [-70.6794859, -33.4450764], [-70.6794188, -33.445835], [-70.6793461, -33.4466564], [-70.6793267, -33.4468752], [-70.6793176, -33.4469836], [-70.679296, -33.4472421], [-70.6792416, -33.4478923], [-70.6791968, -33.4484042], [-70.6790484, -33.4500985], [-70.6790005, -33.450645], [-70.678994, -33.4507192], [-70.6789825, -33.4508241], [-70.6778718, -33.4505935], [-70.6778679, -33.450614], [-70.6778491, -33.4507109], [-70.6778383, -33.4508625], [-70.6778383, -33.450947], [-70.677843, -33.4510416], [-70.6778484, -33.4511367], [-70.6778685, -33.4513896], [-70.6779396, -33.4524084], [-70.67801, -33.4534786], [-70.6780827, -33.454539], [-70.6781207, -33.4550608], [-70.6781553, -33.4555379], [-70.6782331, -33.4567282], [-70.6783411, -33.4581446], [-70.6783917, -33.458856], [-70.6784858, -33.4602285], [-70.6785876, -33.4614007], [-70.6786678, -33.4624783], [-70.6787532, -33.463397], [-70.6787975, -33.4640094], [-70.6788541, -33.464957], [-70.6789722, -33.4666558], [-70.6789975, -33.4670576], [-70.6791285, -33.4691406], [-70.6791465, -33.4692967], [-70.6791552, -33.469361], [-70.6791653, -33.4694108], [-70.6791747, -33.469451], [-70.6791902, -33.4694896], [-70.6792324, -33.4695719], [-70.6792867, -33.4696675], [-70.6793779, -33.4698196], [-70.6797132, -33.4703202], [-70.6797769, -33.4704025], [-70.6798024, -33.4704316], [-70.6798229, -33.4704514], [-70.6798537, -33.4704729], [-70.6798661, -33.4704984], [-70.6798721, -33.4705255], [-70.6798722, -33.4705472], [-70.6798681, -33.4705686], [-70.6798573, -33.4705912], [-70.6798406, -33.4706111], [-70.67981, -33.4706397], [-70.6797747, -33.4706643], [-70.6791112, -33.4706686], [-70.6781055, -33.4706608], [-70.6775696, -33.4706566], [-70.6767983, -33.4706504], [-70.6765254, -33.4706482], [-70.6763993, -33.4706471], [-70.6755451, -33.4706403], [-70.6742444, -33.4706298], [-70.6739345, -33.4706273], [-70.6736164, -33.4706247], [-70.6729527, -33.4706201], [-70.6729308, -33.4719227], [-70.6729205, -33.4726961], [-70.6729135, -33.4732247], [-70.6729145, -33.4737425], [-70.6729151, -33.4737682], [-70.6729259, -33.4742328], [-70.6729333, -33.4745521], [-70.6729285, -33.4746747], [-70.6730222, -33.4746845], [-70.6731043, -33.475069], [-70.6732577, -33.4753382], [-70.6734823, -33.4755786], [-70.6737425, -33.4757935], [-70.6741636, -33.4759681], [-70.6745155, -33.4760858], [-70.6749072, -33.4761798], [-70.675864, -33.4762312], [-70.6764431, -33.4762298], [-70.6769177, -33.4762808], [-70.6772932, -33.4762719], [-70.6777331, -33.476245], [-70.6780442, -33.476245], [-70.678036, -33.476654], [-70.6785976, -33.4766211], [-70.6807164, -33.4766538], [-70.6808173, -33.478399], [-70.6716346, -33.4785698], [-70.6716712, -33.476164], [-70.6716037, -33.4761631], [-70.6713903, -33.4761602], [-70.6704869, -33.4763574], [-70.6697596, -33.4764196], [-70.6674997, -33.4763347], [-70.6662655, -33.4761834], [-70.665564, -33.4760889], [-70.6655484, -33.4761822], [-70.6648246, -33.4760028], [-70.6619339, -33.4759191], [-70.6614405, -33.4759317], [-70.6596253, -33.4760904], [-70.658445, -33.4761863], [-70.6549426, -33.4764708], [-70.6540339, -33.4765557], [-70.6499422, -33.4767071], [-70.6482452, -33.4767575], [-70.648253, -33.4765685], [-70.6464723, -33.4765622], [-70.6419393, -33.4763947], [-70.6403686, -33.4763634], [-70.6392099, -33.47612], [-70.6379653, -33.4756976], [-70.6348068, -33.474595], [-70.6321803, -33.47365], [-70.6319636, -33.4735704], [-70.6305238, -33.4730414], [-70.6287385, -33.4723827], [-70.6270219, -33.4716883], [-70.6266896, -33.4715382], [-70.6264812, -33.471409], [-70.6260778, -33.4710439], [-70.6257001, -33.4706072], [-70.6252881, -33.4700702], [-70.6249963, -33.4695976], [-70.6255628, -33.4692683], [-70.6258289, -33.469032], [-70.6259549, -33.4688254], [-70.6260665, -33.4685963], [-70.6261636, -33.4682587], [-70.6263953, -33.467285], [-70.626979, -33.4653088], [-70.6278545, -33.4623588], [-70.628566, -33.4599728], [-70.6287042, -33.4595089], [-70.6293136, -33.4573034], [-70.6303521, -33.4536656], [-70.6308142, -33.4521227], [-70.6308247, -33.4520877], [-70.6308476, -33.4520112], [-70.6309264, -33.4517501], [-70.630936, -33.4517187], [-70.6315052, -33.4498297], [-70.6315881, -33.4495335], [-70.6323863, -33.4469339], [-70.6328091, -33.4454969], [-70.6328387, -33.4453963], [-70.6328601, -33.4453227], [-70.6328678, -33.4452962], [-70.6334659, -33.443239], [-70.633588, -33.4428015], [-70.6342746, -33.4402804], [-70.6348529, -33.4384495], [-70.6350672, -33.4376824], [-70.6352106, -33.4370971], [-70.635324, -33.4368263], [-70.6353569, -33.4367322], [-70.635375, -33.4366584], [-70.6354297, -33.4364262], [-70.6354157, -33.4362626], [-70.6353964, -33.4356977], [-70.6354783, -33.4356882], [-70.635564, -33.4356805], [-70.6359526, -33.4355971], [-70.6367164, -33.4354152], [-70.6387247, -33.4349365], [-70.6388361, -33.4349094], [-70.6426827, -33.4340127], [-70.6429061, -33.4339666], [-70.6443015, -33.433645], [-70.6452749, -33.4334172], [-70.6466827, -33.4331067], [-70.6477323, -33.4328388], [-70.6478122, -33.4328072], [-70.6479418, -33.4327561], [-70.6480358, -33.4327244], [-70.6484352, -33.432633], [-70.6485545, -33.4326057], [-70.6486834, -33.4325844], [-70.6496154, -33.4323912], [-70.6499406, -33.4323227], [-70.6502529, -33.4322569], [-70.6504564, -33.4322132], [-70.6511307, -33.432059], [-70.6512312, -33.432036], [-70.6514741, -33.4319796], [-70.6515016, -33.4319732], [-70.6515858, -33.4319557], [-70.6517093, -33.431924], [-70.6519733, -33.4318603], [-70.652567, -33.4317141], [-70.6528489, -33.4316459], [-70.6529612, -33.4316179], [-70.653033, -33.4316003], [-70.6536291, -33.4314562], [-70.6562121, -33.4308938], [-70.6574562, -33.4305918], [-70.6594229, -33.4301145], [-70.6595966, -33.4300664], [-70.659742, -33.4300195], [-70.6598847, -33.4299672], [-70.6600244, -33.4299097], [-70.6602243, -33.4298195], [-70.6603061, -33.4297737], [-70.6603557, -33.4297452], [-70.6603801, -33.429729], [-70.6604062, -33.4297061], [-70.6604272, -33.4296863], [-70.6604556, -33.4296433], [-70.6604697, -33.4296019], [-70.6604824, -33.429542], [-70.6604932, -33.4294888], [-70.6605046, -33.4294099], [-70.6605011, -33.4293816], [-70.6604864, -33.4292645], [-70.6608532, -33.4290954], [-70.6613347, -33.4288984], [-70.6618537, -33.4287294], [-70.662488, -33.4285504], [-70.6631251, -33.4283903], [-70.6636441, -33.428256], [-70.6641886, -33.4281083], [-70.664784, -33.4279225], [-70.6670988, -33.4271121], [-70.6689066, -33.4264294], [-70.6702504, -33.4259324], [-70.6711301, -33.4255933], [-70.6711482, -33.425638], [-70.6712227, -33.42583], [-70.6712462, -33.4258934], [-70.6712911, -33.4260057], [-70.6713259, -33.4260969], [-70.6713501, -33.4261694], [-70.6714466, -33.4264817], [-70.6715727, -33.4268899], [-70.6716418, -33.427102], [-70.671684, -33.4272397], [-70.6717276, -33.4274048], [-70.671746, -33.4274985], [-70.6717649, -33.4275771], [-70.6717943, -33.427719], [-70.6718282, -33.42796], [-70.6718389, -33.4280438], [-70.6718267, -33.4281507], [-70.6718025, -33.4283311], [-70.6722616, -33.428182], [-70.673583, -33.4277456], [-70.673686, -33.4277134], [-70.6737467, -33.427693], [-70.6754684, -33.4271111], [-70.675783, -33.426991], [-70.6762534, -33.4268114], [-70.6765716, -33.4266726], [-70.6766381, -33.4266443], [-70.6767362, -33.4266241], [-70.6768379, -33.4266023], [-70.6769606, -33.4265883], [-70.6770762, -33.4265816], [-70.6771705, -33.426581], [-70.6773237, -33.4265922], [-70.6774239, -33.4266065], [-70.6775061, -33.4266205], [-70.6775989, -33.4266454], [-70.6776626, -33.4266692], [-70.6777615, -33.4267047], [-70.677889, -33.4267545], [-70.678069, -33.4268396], [-70.678985, -33.4272442], [-70.6791023, -33.4273007], [-70.6791995, -33.4273522], [-70.6793263, -33.4274132], [-70.6794631, -33.4274994], [-70.6795623, -33.4275732], [-70.6796555, -33.4276533], [-70.6797709, -33.4277518], [-70.6798828, -33.427857], [-70.6800035, -33.4279801], [-70.6801035, -33.4280937], [-70.6801792, -33.4281883], [-70.6802718, -33.4283187], [-70.6803495, -33.428453], [-70.6804213, -33.42858], [-70.6804843, -33.4287082], [-70.680542, -33.4288391], [-70.680605, -33.4289947], [-70.6806473, -33.4291492], [-70.6806768, -33.4292902], [-70.6806955, -33.4294027], [-70.6807123, -33.4295521], [-70.6807217, -33.4296842], [-70.6807237, -33.4297905], [-70.680723, -33.4299293], [-70.680717, -33.4300518], [-70.680695, -33.4303372], [-70.6806734, -33.4306165], [-70.6806614, -33.4308056], [-70.6806547, -33.4309948], [-70.6806495, -33.4311623], [-70.6806339, -33.4316654], [-70.6806322, -33.4317127], [-70.6806168, -33.4321465], [-70.6805746, -33.4328941], [-70.6806016, -33.4330202], [-70.6805353, -33.4331246], [-70.6805072, -33.4337654], [-70.6804376, -33.4345456], [-70.6803234, -33.4358403], [-70.6802204, -33.4369874], [-70.6801524, -33.4378038], [-70.6800777, -33.4383689], [-70.6800722, -33.4384427], [-70.681249, -33.4385249], [-70.6817228, -33.438558], [-70.6817269, -33.4385152], [-70.6817675, -33.4379757], [-70.6817666, -33.4379469], [-70.6819136, -33.4379563], [-70.6819536, -33.4374899], [-70.6819588, -33.437412], [-70.6818133, -33.4374031], [-70.6817897, -33.437389], [-70.6814709, -33.4373683], [-70.6814712, -33.4373255], [-70.6810848, -33.4372992], [-70.6810644, -33.4375162], [-70.6807902, -33.4374994], [-70.6808121, -33.4372661], [-70.6809232, -33.4372726], [-70.6810319, -33.4360408], [-70.6819124, -33.4361604], [-70.6826786, -33.4363189], [-70.683705, -33.4365228], [-70.6837385, -33.4375262], [-70.6842913, -33.4375636], [-70.6841402, -33.4387182], [-70.6865408, -33.4388915], [-70.6884525, -33.4390059], [-70.6894933, -33.4390803], [-70.690934, -33.4391728], [-70.6916101, -33.439229], [-70.6916638, -33.4392354], [-70.6918361, -33.4392648], [-70.6918073, -33.4393818], [-70.691787, -33.4394758], [-70.691754, -33.4396368], [-70.6917324, -33.4397992], [-70.6917257, -33.4398833], [-70.6917221, -33.4399676], [-70.6917211, -33.4401207], [-70.6917268, -33.4402737], [-70.6917939, -33.4411858], [-70.6920024, -33.4436684], [-70.6920319, -33.4440204], [-70.6920493, -33.4442934], [-70.6920527, -33.4444848]]]}}] \ No newline at end of file diff --git a/backend/gps/utils/cache/fa7d1c7d3c4ef744b62a0b8b24ab9d9af99336e7.json b/backend/gps/utils/cache/fa7d1c7d3c4ef744b62a0b8b24ab9d9af99336e7.json new file mode 100644 index 0000000..9f0661e --- /dev/null +++ b/backend/gps/utils/cache/fa7d1c7d3c4ef744b62a0b8b24ab9d9af99336e7.json @@ -0,0 +1 @@ +[{"place_id": 1363431, "licence": "Data \u00a9 OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright", "osm_type": "relation", "osm_id": 164609, "lat": "-33.4377756", "lon": "-70.6504502", "class": "boundary", "type": "administrative", "place_rank": 16, "importance": 0.659760745604439, "addresstype": "city", "name": "Santiago", "display_name": "Santiago, Provincia de Santiago, Santiago Metropolitan Region, Chile", "boundingbox": ["-33.4785698", "-33.4255933", "-70.6920527", "-70.6249963"], "geojson": {"type": "Polygon", "coordinates": [[[-70.6920527, -33.4444848], [-70.6906888, -33.4444137], [-70.6900833, -33.4443859], [-70.6899544, -33.44438], [-70.6893368, -33.4443516], [-70.6889484, -33.4443337], [-70.6884781, -33.4443121], [-70.6880386, -33.4442919], [-70.6874306, -33.444264], [-70.6867406, -33.4442323], [-70.6855872, -33.4441793], [-70.6843688, -33.4441177], [-70.6842386, -33.444111], [-70.684126, -33.4441037], [-70.6835051, -33.4440762], [-70.6827769, -33.4440393], [-70.6822198, -33.4440119], [-70.6816078, -33.4439815], [-70.6805822, -33.4439309], [-70.6804629, -33.4439236], [-70.6803189, -33.4439121], [-70.6795784, -33.4438552], [-70.6795529, -33.4443197], [-70.6794979, -33.4449413], [-70.67949, -33.4450308], [-70.6794859, -33.4450764], [-70.6794188, -33.445835], [-70.6793461, -33.4466564], [-70.6793267, -33.4468752], [-70.6793176, -33.4469836], [-70.679296, -33.4472421], [-70.6792416, -33.4478923], [-70.6791968, -33.4484042], [-70.6790484, -33.4500985], [-70.6790005, -33.450645], [-70.678994, -33.4507192], [-70.6789825, -33.4508241], [-70.6778718, -33.4505935], [-70.6778679, -33.450614], [-70.6778491, -33.4507109], [-70.6778383, -33.4508625], [-70.6778383, -33.450947], [-70.677843, -33.4510416], [-70.6778484, -33.4511367], [-70.6778685, -33.4513896], [-70.6779396, -33.4524084], [-70.67801, -33.4534786], [-70.6780827, -33.454539], [-70.6781207, -33.4550608], [-70.6781553, -33.4555379], [-70.6782331, -33.4567282], [-70.6783411, -33.4581446], [-70.6783917, -33.458856], [-70.6784858, -33.4602285], [-70.6785876, -33.4614007], [-70.6786678, -33.4624783], [-70.6787532, -33.463397], [-70.6787975, -33.4640094], [-70.6788541, -33.464957], [-70.6789722, -33.4666558], [-70.6789975, -33.4670576], [-70.6791285, -33.4691406], [-70.6791465, -33.4692967], [-70.6791552, -33.469361], [-70.6791653, -33.4694108], [-70.6791747, -33.469451], [-70.6791902, -33.4694896], [-70.6792324, -33.4695719], [-70.6792867, -33.4696675], [-70.6793779, -33.4698196], [-70.6797132, -33.4703202], [-70.6797769, -33.4704025], [-70.6798024, -33.4704316], [-70.6798229, -33.4704514], [-70.6798537, -33.4704729], [-70.6798661, -33.4704984], [-70.6798721, -33.4705255], [-70.6798722, -33.4705472], [-70.6798681, -33.4705686], [-70.6798573, -33.4705912], [-70.6798406, -33.4706111], [-70.67981, -33.4706397], [-70.6797747, -33.4706643], [-70.6791112, -33.4706686], [-70.6781055, -33.4706608], [-70.6775696, -33.4706566], [-70.6767983, -33.4706504], [-70.6765254, -33.4706482], [-70.6763993, -33.4706471], [-70.6755451, -33.4706403], [-70.6742444, -33.4706298], [-70.6739345, -33.4706273], [-70.6736164, -33.4706247], [-70.6729527, -33.4706201], [-70.6729308, -33.4719227], [-70.6729205, -33.4726961], [-70.6729135, -33.4732247], [-70.6729145, -33.4737425], [-70.6729151, -33.4737682], [-70.6729259, -33.4742328], [-70.6729333, -33.4745521], [-70.6729285, -33.4746747], [-70.6730222, -33.4746845], [-70.6731043, -33.475069], [-70.6732577, -33.4753382], [-70.6734823, -33.4755786], [-70.6737425, -33.4757935], [-70.6741636, -33.4759681], [-70.6745155, -33.4760858], [-70.6749072, -33.4761798], [-70.675864, -33.4762312], [-70.6764431, -33.4762298], [-70.6769177, -33.4762808], [-70.6772932, -33.4762719], [-70.6777331, -33.476245], [-70.6780442, -33.476245], [-70.678036, -33.476654], [-70.6785976, -33.4766211], [-70.6807164, -33.4766538], [-70.6808173, -33.478399], [-70.6716346, -33.4785698], [-70.6716712, -33.476164], [-70.6716037, -33.4761631], [-70.6713903, -33.4761602], [-70.6704869, -33.4763574], [-70.6697596, -33.4764196], [-70.6674997, -33.4763347], [-70.6662655, -33.4761834], [-70.665564, -33.4760889], [-70.6655484, -33.4761822], [-70.6648246, -33.4760028], [-70.6619339, -33.4759191], [-70.6614405, -33.4759317], [-70.6596253, -33.4760904], [-70.658445, -33.4761863], [-70.6549426, -33.4764708], [-70.6540339, -33.4765557], [-70.6499422, -33.4767071], [-70.6482452, -33.4767575], [-70.648253, -33.4765685], [-70.6464723, -33.4765622], [-70.6419393, -33.4763947], [-70.6403686, -33.4763634], [-70.6392099, -33.47612], [-70.6379653, -33.4756976], [-70.6348068, -33.474595], [-70.6321803, -33.47365], [-70.6319636, -33.4735704], [-70.6305238, -33.4730414], [-70.6287385, -33.4723827], [-70.6270219, -33.4716883], [-70.6266896, -33.4715382], [-70.6264812, -33.471409], [-70.6260778, -33.4710439], [-70.6257001, -33.4706072], [-70.6252881, -33.4700702], [-70.6249963, -33.4695976], [-70.6255628, -33.4692683], [-70.6258289, -33.469032], [-70.6259549, -33.4688254], [-70.6260665, -33.4685963], [-70.6261636, -33.4682587], [-70.6263953, -33.467285], [-70.626979, -33.4653088], [-70.6278545, -33.4623588], [-70.628566, -33.4599728], [-70.6287042, -33.4595089], [-70.6293136, -33.4573034], [-70.6303521, -33.4536656], [-70.6308142, -33.4521227], [-70.6308247, -33.4520877], [-70.6308476, -33.4520112], [-70.6309264, -33.4517501], [-70.630936, -33.4517187], [-70.6315052, -33.4498297], [-70.6315881, -33.4495335], [-70.6323863, -33.4469339], [-70.6328091, -33.4454969], [-70.6328387, -33.4453963], [-70.6328601, -33.4453227], [-70.6328678, -33.4452962], [-70.6334659, -33.443239], [-70.633588, -33.4428015], [-70.6342746, -33.4402804], [-70.6348529, -33.4384495], [-70.6350672, -33.4376824], [-70.6352106, -33.4370971], [-70.635324, -33.4368263], [-70.6353569, -33.4367322], [-70.635375, -33.4366584], [-70.6354297, -33.4364262], [-70.6354157, -33.4362626], [-70.6353964, -33.4356977], [-70.6354783, -33.4356882], [-70.635564, -33.4356805], [-70.6359526, -33.4355971], [-70.6367164, -33.4354152], [-70.6387247, -33.4349365], [-70.6388361, -33.4349094], [-70.6426827, -33.4340127], [-70.6429061, -33.4339666], [-70.6443015, -33.433645], [-70.6452749, -33.4334172], [-70.6466827, -33.4331067], [-70.6477323, -33.4328388], [-70.6478122, -33.4328072], [-70.6479418, -33.4327561], [-70.6480358, -33.4327244], [-70.6484352, -33.432633], [-70.6485545, -33.4326057], [-70.6486834, -33.4325844], [-70.6496154, -33.4323912], [-70.6499406, -33.4323227], [-70.6502529, -33.4322569], [-70.6504564, -33.4322132], [-70.6511307, -33.432059], [-70.6512312, -33.432036], [-70.6514741, -33.4319796], [-70.6515016, -33.4319732], [-70.6515858, -33.4319557], [-70.6517093, -33.431924], [-70.6519733, -33.4318603], [-70.652567, -33.4317141], [-70.6528489, -33.4316459], [-70.6529612, -33.4316179], [-70.653033, -33.4316003], [-70.6536291, -33.4314562], [-70.6562121, -33.4308938], [-70.6574562, -33.4305918], [-70.6594229, -33.4301145], [-70.6595966, -33.4300664], [-70.659742, -33.4300195], [-70.6598847, -33.4299672], [-70.6600244, -33.4299097], [-70.6602243, -33.4298195], [-70.6603061, -33.4297737], [-70.6603557, -33.4297452], [-70.6603801, -33.429729], [-70.6604062, -33.4297061], [-70.6604272, -33.4296863], [-70.6604556, -33.4296433], [-70.6604697, -33.4296019], [-70.6604824, -33.429542], [-70.6604932, -33.4294888], [-70.6605046, -33.4294099], [-70.6605011, -33.4293816], [-70.6604864, -33.4292645], [-70.6608532, -33.4290954], [-70.6613347, -33.4288984], [-70.6618537, -33.4287294], [-70.662488, -33.4285504], [-70.6631251, -33.4283903], [-70.6636441, -33.428256], [-70.6641886, -33.4281083], [-70.664784, -33.4279225], [-70.6670988, -33.4271121], [-70.6689066, -33.4264294], [-70.6702504, -33.4259324], [-70.6711301, -33.4255933], [-70.6711482, -33.425638], [-70.6712227, -33.42583], [-70.6712462, -33.4258934], [-70.6712911, -33.4260057], [-70.6713259, -33.4260969], [-70.6713501, -33.4261694], [-70.6714466, -33.4264817], [-70.6715727, -33.4268899], [-70.6716418, -33.427102], [-70.671684, -33.4272397], [-70.6717276, -33.4274048], [-70.671746, -33.4274985], [-70.6717649, -33.4275771], [-70.6717943, -33.427719], [-70.6718282, -33.42796], [-70.6718389, -33.4280438], [-70.6718267, -33.4281507], [-70.6718025, -33.4283311], [-70.6722616, -33.428182], [-70.673583, -33.4277456], [-70.673686, -33.4277134], [-70.6737467, -33.427693], [-70.6754684, -33.4271111], [-70.675783, -33.426991], [-70.6762534, -33.4268114], [-70.6765716, -33.4266726], [-70.6766381, -33.4266443], [-70.6767362, -33.4266241], [-70.6768379, -33.4266023], [-70.6769606, -33.4265883], [-70.6770762, -33.4265816], [-70.6771705, -33.426581], [-70.6773237, -33.4265922], [-70.6774239, -33.4266065], [-70.6775061, -33.4266205], [-70.6775989, -33.4266454], [-70.6776626, -33.4266692], [-70.6777615, -33.4267047], [-70.677889, -33.4267545], [-70.678069, -33.4268396], [-70.678985, -33.4272442], [-70.6791023, -33.4273007], [-70.6791995, -33.4273522], [-70.6793263, -33.4274132], [-70.6794631, -33.4274994], [-70.6795623, -33.4275732], [-70.6796555, -33.4276533], [-70.6797709, -33.4277518], [-70.6798828, -33.427857], [-70.6800035, -33.4279801], [-70.6801035, -33.4280937], [-70.6801792, -33.4281883], [-70.6802718, -33.4283187], [-70.6803495, -33.428453], [-70.6804213, -33.42858], [-70.6804843, -33.4287082], [-70.680542, -33.4288391], [-70.680605, -33.4289947], [-70.6806473, -33.4291492], [-70.6806768, -33.4292902], [-70.6806955, -33.4294027], [-70.6807123, -33.4295521], [-70.6807217, -33.4296842], [-70.6807237, -33.4297905], [-70.680723, -33.4299293], [-70.680717, -33.4300518], [-70.680695, -33.4303372], [-70.6806734, -33.4306165], [-70.6806614, -33.4308056], [-70.6806547, -33.4309948], [-70.6806495, -33.4311623], [-70.6806339, -33.4316654], [-70.6806322, -33.4317127], [-70.6806168, -33.4321465], [-70.6805746, -33.4328941], [-70.6806016, -33.4330202], [-70.6805353, -33.4331246], [-70.6805072, -33.4337654], [-70.6804376, -33.4345456], [-70.6803234, -33.4358403], [-70.6802204, -33.4369874], [-70.6801524, -33.4378038], [-70.6800777, -33.4383689], [-70.6800722, -33.4384427], [-70.681249, -33.4385249], [-70.6817228, -33.438558], [-70.6817269, -33.4385152], [-70.6817675, -33.4379757], [-70.6817666, -33.4379469], [-70.6819136, -33.4379563], [-70.6819536, -33.4374899], [-70.6819588, -33.437412], [-70.6818133, -33.4374031], [-70.6817897, -33.437389], [-70.6814709, -33.4373683], [-70.6814712, -33.4373255], [-70.6810848, -33.4372992], [-70.6810644, -33.4375162], [-70.6807902, -33.4374994], [-70.6808121, -33.4372661], [-70.6809232, -33.4372726], [-70.6810319, -33.4360408], [-70.6819124, -33.4361604], [-70.6826786, -33.4363189], [-70.683705, -33.4365228], [-70.6837385, -33.4375262], [-70.6842913, -33.4375636], [-70.6841402, -33.4387182], [-70.6865408, -33.4388915], [-70.6884525, -33.4390059], [-70.6894933, -33.4390803], [-70.690934, -33.4391728], [-70.6916101, -33.439229], [-70.6916638, -33.4392354], [-70.6918361, -33.4392648], [-70.6918073, -33.4393818], [-70.691787, -33.4394758], [-70.691754, -33.4396368], [-70.6917324, -33.4397992], [-70.6917257, -33.4398833], [-70.6917221, -33.4399676], [-70.6917211, -33.4401207], [-70.6917268, -33.4402737], [-70.6917939, -33.4411858], [-70.6920024, -33.4436684], [-70.6920319, -33.4440204], [-70.6920493, -33.4442934], [-70.6920527, -33.4444848]]]}}] \ No newline at end of file From cf5699834bb0bef6f848ea3a6659267d8938f1ad Mon Sep 17 00:00:00 2001 From: Mrtn-fa Date: Tue, 16 Apr 2024 17:32:26 -0400 Subject: [PATCH 03/11] Modified Makefile commands, added endpoint /api/geo/mapData/ for getting map info (pending to add the velocity of each segment). Added tests --- Makefile | 8 +- backend/backend/tests/__init__.py | 0 backend/backend/tests/baseTest.py | 17 + backend/backend/urls.py | 3 +- backend/config/paths.py | 2 +- backend/processors/expedition.py | 77 ++++ backend/processors/geometry/__init__.py | 0 backend/processors/geometry/constants.py | 9 + backend/processors/geometry/line.py | 334 ++++++++++++++++++ backend/processors/geometry/point.py | 62 ++++ backend/processors/gps.py | 14 + backend/processors/grid.py | 83 ++++- backend/processors/models/__init__.py | 0 backend/processors/models/shapes.py | 13 + backend/processors/segment.py | 275 ++++++++++++++ backend/processors/util/__init__.py | 0 backend/processors/util/shapes.py | 88 +++++ backend/processors/vehicle.py | 69 ++++ backend/rest_api/migrations/0001_initial.py | 32 ++ ...segment_sequence_alter_segment_geometry.py | 24 ++ backend/rest_api/models.py | 36 +- backend/rest_api/tests/test_geometry.py | 115 ++++++ backend/rest_api/tests/tests_views_base.py | 12 +- backend/rest_api/urls.py | 8 + backend/rest_api/views.py | 18 + docker/docker-compose-dev.yml | 2 +- requirements-prod.txt | 3 +- 27 files changed, 1293 insertions(+), 11 deletions(-) create mode 100644 backend/backend/tests/__init__.py create mode 100644 backend/backend/tests/baseTest.py create mode 100644 backend/processors/expedition.py create mode 100644 backend/processors/geometry/__init__.py create mode 100644 backend/processors/geometry/constants.py create mode 100644 backend/processors/geometry/line.py create mode 100644 backend/processors/geometry/point.py create mode 100644 backend/processors/gps.py create mode 100644 backend/processors/models/__init__.py create mode 100644 backend/processors/models/shapes.py create mode 100644 backend/processors/segment.py create mode 100644 backend/processors/util/__init__.py create mode 100644 backend/processors/util/shapes.py create mode 100644 backend/processors/vehicle.py create mode 100644 backend/rest_api/migrations/0001_initial.py create mode 100644 backend/rest_api/migrations/0002_rename_place_segment_sequence_alter_segment_geometry.py create mode 100644 backend/rest_api/tests/test_geometry.py create mode 100644 backend/rest_api/urls.py diff --git a/Makefile b/Makefile index 490fc99..afdde31 100644 --- a/Makefile +++ b/Makefile @@ -20,13 +20,17 @@ test: $(TEST) build $(TEST) up --abort-on-container-exit -dev_up: +build: $(COMPOSE_DEV) build + +up: $(COMPOSE_DEV) up -dev_down: +down: $(COMPOSE_DEV) down +db: + $(COMPOSE_DEV) up db prod_up: @$(COMPOSE_PROD) build @$(COMPOSE_PROD) up -d \ No newline at end of file diff --git a/backend/backend/tests/__init__.py b/backend/backend/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/backend/tests/baseTest.py b/backend/backend/tests/baseTest.py new file mode 100644 index 0000000..521ba53 --- /dev/null +++ b/backend/backend/tests/baseTest.py @@ -0,0 +1,17 @@ +from django.test import TestCase +from rest_framework.test import APIClient +from django.contrib.auth import get_user_model +from django.urls import reverse + + +class BaseTest(TestCase): + + def setUp(self): + self.user = get_user_model().objects.create_user({ + 'username': "TestUser", + 'password': "TestPassword" + }) + self.client = APIClient() + login_token = self.client.get(reverse('login')).content + return + self.client.credentials(HTTP_AUTHORIZATION='Token {0}'.format(login_token)) diff --git a/backend/backend/urls.py b/backend/backend/urls.py index 2dd3cdb..c5f43e8 100644 --- a/backend/backend/urls.py +++ b/backend/backend/urls.py @@ -26,7 +26,8 @@ path('api/schema/', SpectacularAPIView.as_view(), name='schema'), path('api/schema/swagger-ui/', SpectacularSwaggerView.as_view(url_name='schema'), name='swagger-ui'), path('admin/', admin.site.urls), - path('gps/', include(('gps.urls', 'gps'), namespace='gps')) + path('api/gps/', include(('gps.urls', 'gps'), namespace='gps')), + path('api/geo/', include(('rest_api.urls', 'geo'), namespace='geo')) ] diff --git a/backend/config/paths.py b/backend/config/paths.py index b6d94e8..d17d048 100644 --- a/backend/config/paths.py +++ b/backend/config/paths.py @@ -3,4 +3,4 @@ ROOT_PATH = Path(__file__).parent.parent LOGS_PATH = Path(os.path.join(ROOT_PATH, "logs")) - +TEST_PATH = Path("C:/Users/mnfar/Desktop/Memoria/Recursos/test_uoct") diff --git a/backend/processors/expedition.py b/backend/processors/expedition.py new file mode 100644 index 0000000..370c57f --- /dev/null +++ b/backend/processors/expedition.py @@ -0,0 +1,77 @@ +import logging + +from processors.grid import GridManager +from collections import defaultdict +from processors.gps import GPSPulse + +logger = logging.getLogger(__name__) + + +class ExpeditionData: + MAXIMUM_ACCEPTABLE_TIME_BETWEEN_GPS_PULSES = 60 * 10 # in seconds + + def __init__(self, grid_manager: GridManager, license_plate: str, shape_id: str, trip_id: str, route_id: str | None, + direction_id: str | None, start_date: str | None, start_time: str | None): + self.grid_manager = grid_manager + self.license_plate = license_plate + self.shape_id = shape_id + self.trip_id = trip_id + self.route_id = route_id + self.direction_id = direction_id + self.start_date = start_date + self.start_time = start_time + + self.gps_points = [] + self.gps_distance_to_route = [] + self.gps_distance_on_route = [] + self.gps_distance_on_route_dict = dict() + + self.ignored_point_counter = 0 + self.ignored_segments_because_time_between_gps_pulses = 0 + + self.stop_times = defaultdict(list) + + def add_gps_point(self, gps_pulse: GPSPulse): + if len(self.gps_points) == 0: + dist_to_route, dist_on_route = self.grid_manager.get_on_route_distances(gps_pulse, self.shape_id) + if dist_to_route is None or dist_on_route is None: + logger.warning( + f"It could not calculate the projection from point {gps_pulse} to " + f"shape_id {self.shape_id}: ({dist_to_route, dist_on_route})" + ) + else: + self.gps_distance_to_route.append(dist_to_route) + self.gps_distance_on_route.append(dist_on_route) + self.gps_distance_on_route_dict[gps_pulse] = dist_on_route + self.gps_points.append(gps_pulse) + elif gps_pulse.timestamp > self.gps_points[-1].timestamp: + previous_distance = self.gps_distance_on_route[-1] + dist_to_route, dist_on_route = self.grid_manager.get_on_route_distances(gps_pulse, self.shape_id, + previous_distance) + if dist_to_route is None or dist_on_route is None: + logger.warning( + f"it could not calculate projection from point {gps_pulse} to shape_id {self.shape_id}") + else: + self.gps_distance_to_route.append(dist_to_route) + self.gps_distance_on_route.append(dist_on_route) + self.gps_distance_on_route_dict[gps_pulse] = dist_on_route + self.gps_points.append(gps_pulse) + elif gps_pulse.timestamp == self.gps_points[-1].timestamp: + logger.warning(f'gps point {gps_pulse} is equal to previous gps point {gps_pulse}.') + self.ignored_point_counter += 1 + elif gps_pulse.timestamp < self.gps_points[-1].timestamp: + logger.warning(f'gps point {gps_pulse} is older than latest gps point {gps_pulse}.') + self.ignored_point_counter += 1 + + def __eq__(self, other): + return (self.trip_id == other.trip_id and + self.route_id == other.route_id and + self.direction_id == other.direction_id and + self.start_date == other.start_date and + self.start_time == other.start_time) + + def __hash__(self): + return hash((self.trip_id, self.route_id, self.direction_id, self.start_date, self.start_time)) + + def __str__(self): + return f"Expedition {self.trip_id} ({self.route_id},{self.direction_id},{self.start_date},{self.start_time})" diff --git a/backend/processors/geometry/__init__.py b/backend/processors/geometry/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/processors/geometry/constants.py b/backend/processors/geometry/constants.py new file mode 100644 index 0000000..1649c5c --- /dev/null +++ b/backend/processors/geometry/constants.py @@ -0,0 +1,9 @@ +EARTH_RADIUS_KM = 6373.0 + +# Set the boundaries for latitude +MAX_LATITUDE = 90.0 +MIN_LATITUDE = -90.0 + +# Set the boundaries for longitude +MAX_LONGITUDE = 180.0 +MIN_LONGITUDE = -180.0 \ No newline at end of file diff --git a/backend/processors/geometry/line.py b/backend/processors/geometry/line.py new file mode 100644 index 0000000..3cb96fb --- /dev/null +++ b/backend/processors/geometry/line.py @@ -0,0 +1,334 @@ +import math + +from processors.geometry.point import Point + + +class Line: + + def __init__(self, point_a: Point, point_b: Point): + """ + A Line is a segment between two points. Both points must be in geographical coordinates. + + :param point_a: Initial point of the line that must be a Point object + :type point_a: Point + + :param point_b: Final point of the line that must be a Point object + :type point_b: Point + """ + # Private attributes + self._point_a = None + self._point_b = None + self._length = None + + # Check for valid values using the setters + self.point_a = point_a + self.point_b = point_b + + # Calculate the length of the line + self.length = self.point_a.distance(self.point_b) + + @property + def point_a(self) -> Point: + """ + Get the initial point of the line. + + :return: A Point object to get the initial point of the line. + :rtype: Point + """ + return self._point_a + + @point_a.setter + def point_a(self, value: Point) -> None: + """ + Set the initial point of the line and check for valid values. + + :param value: A Point object to set as the initial point of the line. + :param value: Point + + :raises ValueError: If the value is not a Point object. + """ + if not isinstance(value, Point): + raise ValueError("Point A must be a Point object.") + + self._point_a = value + + @property + def point_b(self) -> Point: + """ + Get the final point of the line. + + :return: A Point object to get the final point of the line. + :rtype: Point + """ + return self._point_b + + @point_b.setter + def point_b(self, value: Point) -> None: + """ + Set the final point of the line and check for valid values. + + :param value: A Point object to set as the final point of the line. + :type value: Point + + :raises ValueError: If the value is not a Point object. + """ + if not isinstance(value, Point): + raise ValueError("Point B must be a Point object.") + + self._point_b = value + + @property + def length(self) -> float: + """ + Get the length of the line. + + :return: A float value that corresponds to the length of the line. + :rtype: float + """ + return self._length + + @length.setter + def length(self, value: float) -> None: + """ + Set the length of the line and check for valid values. + + :param value: A non-negative float value. + :type value: float + + :raises ValueError: If the value is not a non-negative float. + """ + if not isinstance(value, float): + raise ValueError("Length must be a float.") + + if value < 0: + raise ValueError("Length must be non-negative.") + + self._length = value + + def distances(self, point: Point) -> tuple[float, float]: + """ + Calculate the distance from a point to the line and the distance from the initial point of the line to the + projection of the point on the line. + + :param point: A Point object that will be projected on the line. + :type point: Point + + :return: A tuple with the distance between the point and its projection to the line and the distance from the + initial point of the line to the aforementioned projection. + :rtype: tuple[float, float] + """ + # Get distances of the triangle formed by the line and the point + distance_a = point.distance(self.point_a) + distance_b = point.distance(self.point_b) + segment_length = self.length + + # Sort the distances to get the smallest one + sides = [segment_length, distance_b, distance_a] + sides.sort() + + # Check if the triangle is obtuse using the Pythagorean theorem + is_obtuse = (sides[0] ** 2 + sides[1] ** 2 < sides[2] ** 2) + + # Check if the segment's length is the largest side of the triangle + is_largest = (sides[2] == segment_length) + + if not is_obtuse or is_largest: + # The projection is inside the segment + + # Calculate the semi perimeter of the triangle + s = (segment_length + distance_a + distance_b) / 2 + + # Calculate the area of the triangle using Heron's formula + a = math.sqrt(s * (s - distance_a) * (s - distance_b) * (s - segment_length)) + + # Calculate the distance from the point to the projection using the area of the triangle + stop_distance = (a * 2) / segment_length + + # Calculate the distance from the initial point of the line to the projection + projection_distance = math.sqrt(abs(distance_a ** 2 - stop_distance ** 2)) + + return stop_distance, projection_distance + else: + # The projection is outside the segment + + # Get the smallest distance + min_distance = min(distance_a, distance_b) + + if min_distance == distance_a: + # The point is closer to the initial point of the line + return distance_a, 0 + else: + # The point is closer to the final point of the line + return distance_b, segment_length + + def __eq__(self, line: "Line") -> bool: + """ + Return True if the points of two lines are equal, False otherwise. + + :param line: A Line object to compare with the current instance. + :type line: Line + + :return: A boolean value that indicates if the points of two lines are equal. + :rtype: bool + """ + are_equal = self.point_a == line.point_a + are_equal &= self.point_b == line.point_b + + return are_equal + + def __hash__(self) -> int: + """ + Hash the line instance based on its points. + + :return: An integer value that corresponds to the hash of the line instance. + :rtype: int + """ + return hash((self.point_a, self.point_b)) + + def __str__(self) -> str: + """ + Return a string representation of the line. + + :return: A string representation of the line. + :rtype: str + """ + return f"Line(point_a={self.point_a}, point_b={self.point_b})" + + +class PolylineSegment(Line): + + def __init__(self, point_a: Point, point_b: Point, prev_distance: float | int, sequence: int): + """ + A Segment is a line with a previous distance and a sequence number. + + :param point_a: Initial point of the segment that must be a Point object + :type point_a: Point + + :param point_b: Final point of the segment that must be a Point object + :type point_b: Point + + :param prev_distance: Distance from the initial point of the Polyline to the previous point + :type prev_distance: float or int + + :param sequence: Sequence number of the segment that conforms the polyline + :type sequence: int + """ + # Initialize the parent class + super(PolylineSegment, self).__init__(point_a, point_b) + + # Private attributes + self._prev_distance = None + self._sequence = None + + # Check for valid values using the setters + self.prev_distance = prev_distance + self.sequence = sequence + + @property + def prev_distance(self) -> float | int: + """ + Get the previous distance of the segment. + + :return: A non-negative numeric value that corresponds to the previous distance of the segment. + :rtype: float or int + """ + return self._prev_distance + + @prev_distance.setter + def prev_distance(self, value: float | int) -> None: + """ + Set the previous distance of the segment and check for valid values. + + :param value: A non-negative numeric value that corresponds to the previous distance of the segment. + :type value: float or int + + :raises ValueError: If the value is not a non-negative numeric value. + """ + if not isinstance(value, (float, int)): + raise ValueError("Previous distance must be a numeric value.") + + if value < 0: + raise ValueError("Previous distance must be a non-negative value.") + + self._prev_distance = value + + @property + def sequence(self) -> int: + """ + Get the sequence number of the segment. + + :return: A non-negative integer value that corresponds to the sequence number of the segment. + :rtype: int + """ + return self._sequence + + @sequence.setter + def sequence(self, value: int) -> None: + """ + Set the sequence number of the segment and check for valid values. + + :param value: A non-negative integer value. + :raises ValueError: If the value is not a non-negative integer value. + """ + if not isinstance(value, int): + raise ValueError("Sequence must be an integer.") + + if value < 0: + raise ValueError("Sequence must be non-negative.") + + self._sequence = value + + def on_route_distances(self, point: Point) -> tuple[float, float]: + """ + Calculate the distance from a point to the segment of the polyline and the distance from the initial point of + the polyline to the projection of the point on the segment. + + :param point: A Point object that will be projected on the segment. + :type point: Point + + :return: A tuple with the distance between the point and the line, and its projection to the segment. + :rtype: tuple[float, float] + """ + # Calculate the distance from the point to the segment + distance, projection = self.distances(point) + + # Accumulate the previous on route distance to the projection + projection += self.prev_distance + + return distance, projection + + def __eq__(self, polyline_segment: "PolylineSegment") -> bool: + """ + Return True if the points of two polyline segments are equal and the previous distance + and sequence are equal, False otherwise. + + :param polyline_segment: A PolylineSegment object to compare with the current instance. + :type polyline_segment: PolylineSegment + + :return: A boolean value that indicates if the points of two polyline segments are equal. + :rtype: bool + """ + are_equal = super(PolylineSegment, self).__eq__(polyline_segment) + are_equal &= self.prev_distance == polyline_segment.prev_distance + are_equal &= self.sequence == polyline_segment.sequence + + return are_equal + + def __hash__(self) -> int: + """ + Hash the polyline segment instance based on its points, previous distance, and sequence. + + :return: An integer value that corresponds to the hash of the polyline segment instance. + :rtype: int + """ + return hash((self.point_a, self.point_b, self.prev_distance, self.sequence)) + + def __str__(self) -> str: + """ + Return a string representation of the polyline's segment. + + :return: A string representation of the polyline's segment. + :rtype: str + """ + return (f"PolylineSegment(point_a={self.point_a}, point_b={self.point_b}," + f"prev_distance={self.prev_distance}, sequence={self.sequence})") diff --git a/backend/processors/geometry/point.py b/backend/processors/geometry/point.py new file mode 100644 index 0000000..4fa2539 --- /dev/null +++ b/backend/processors/geometry/point.py @@ -0,0 +1,62 @@ +import math +from processors.geometry.constants import EARTH_RADIUS_KM + + +class Point: + def __init__(self, latitude: float, longitude: float): + self.latitude = latitude + self.longitude = longitude + + def haversine_distance(self, other: "Point") -> float: + if not isinstance(other, Point): + raise ValueError("Other point must be of type Point") + + lat1, lon1 = math.radians(self.latitude), math.radians(self.longitude) + lat2, lon2 = math.radians(other.latitude), math.radians(other.longitude) + + lon_dist, lat_dist = lon2 - lon1, lat2 - lat1 + + # Apply the Haversine formula to calculate the distance between two points on the surface of the earth + a = math.sin(lat_dist / 2) ** 2 + math.cos(lat1) * math.cos(lat2) * math.sin(lon_dist / 2) ** 2 + c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a)) + + # Calculate the distance in meters + distance = EARTH_RADIUS_KM * c * 1000 + + return distance + + def distance(self, other: "Point") -> float: + return self.haversine_distance(other) + + def __eq__(self, point: "Point") -> bool: + """ + Return True if the latitude and longitude of two Point objects are equal, False otherwise. + + :param point: Another Point object to compare to + :type point: Point + """ + if not isinstance(point, Point): + raise ValueError("Point must be a Point object.") + + are_equal = (self.latitude == point.latitude and + self.longitude == point.longitude) + + return are_equal + + def __hash__(self) -> int: + """ + Hash the point instance based on its points and its id. + + :return: A representation of the point instance as a hash + :rtype: int + """ + return hash((self.latitude, self.longitude)) + + def __str__(self) -> str: + """ + Return a string representation of the point. + + :return: A string representation of the point + :rtype: str + """ + return f"Point(latitude={str(self.latitude)}, longitude={str(self.longitude)})" diff --git a/backend/processors/gps.py b/backend/processors/gps.py new file mode 100644 index 0000000..607a496 --- /dev/null +++ b/backend/processors/gps.py @@ -0,0 +1,14 @@ +from processors.geometry.point import Point +from datetime import datetime + + +class GPSPulse(Point): + def __init__(self, timestamp: datetime, latitude: float, longitude:float): + super().__init__(latitude, longitude) + self.timestamp = timestamp + + def __hash__(self) -> int: + return hash((self.timestamp, self.latitude, self.longitude)) + + def __str__(self) -> str: + return f"GPS(timestamp={str(self.timestamp)}latitude={str(self.latitude)}, longitude={str(self.longitude)})" diff --git a/backend/processors/grid.py b/backend/processors/grid.py index c8b5612..9982ae6 100644 --- a/backend/processors/grid.py +++ b/backend/processors/grid.py @@ -1,8 +1,11 @@ -from typing import Dict, Tuple -from processors.data import ProtoFileProcessor +from typing import Dict, Tuple, List import logging +import math +from processors.geometry.point import Point +from processors.geometry.line import PolylineSegment logger = logging.getLogger(__name__) +DISTANCE_THRESHOLD = 25 # meters class GridCell: @@ -36,7 +39,83 @@ def __create_grid(self): grid_min_lon = 180 grid_max_lon = -180 + @staticmethod + def __get_distances_from_segments(point: Point, segments: List[PolylineSegment], distance_threshold, + previous_distance=None, ) -> Tuple[float, float] or None: + closest_distance = math.inf + closest_on_route_distance = math.inf + for segment in segments: + aux_dist, aux_proj = segment.on_route_distances(point) + if (previous_distance is not None and previous_distance <= aux_proj) or previous_distance is None: + if aux_dist < closest_distance: + closest_distance = aux_dist + closest_on_route_distance = aux_proj + if closest_distance <= distance_threshold: + return closest_distance, closest_on_route_distance + return None, None + + def get_indexes_from_point(self, lat: float, lon: float) -> Tuple[int, int]: + lat_index = int((lat - self.grid_min_latitude) / self.grid_latitude_distance) + lon_index = int((lon - self.grid_min_longitude) / self.grid_longitude_distance) + return lat_index, lon_index + + def get_on_route_distances(self, point: Point, shape_id: str, previous_distance=None, + threshold=DISTANCE_THRESHOLD) -> Tuple[float, float] or None: + segments = set() + + lat_index, lon_index = self.get_indexes_from_point(point.latitude, point.longitude) + for i in range(lat_index - 1, lat_index + 2): + for j in range(lon_index - 1, lon_index + 2): + cell_data: GridCell = self.grid.get((i, j)) + + if cell_data is None or shape_id not in cell_data.route_segments: + continue + segments.update(cell_data.route_segments[shape_id]) + + segments = list(segments) + segments = sorted(segments, key=lambda x: x.sequence) + + logger.debug(list(map(lambda x: str(x), segments))) + + projection = None + distance = None + + if previous_distance is None: + if len(segments) > 1: + max_index = max(segments, key=lambda x: x.sequence).sequence + min_index = min(segments, key=lambda x: x.sequence).sequence + + if max_index - min_index + 1 == len(segments): + distance, projection = self.__get_distances_from_segments(point, segments, threshold) + else: + segment_groups = [[]] + group_index = 0 + segment_index = segments[0].sequence - 1 + for segment in segments: + if segment.sequence == segment_index + 1: + segment_groups[group_index].append(segment) + segment_index = segment.sequence + else: + segment_groups.append([segment]) + segment_index = segment.sequence + group_index += 1 + + distance = math.inf + for segment_group in segment_groups: + if len(segment_group) == 1: + distance_aux, projection_aux = segments[0].on_route_distances(point) + else: + distance_aux, projection_aux = self.__get_distances_from_segments(point, segment_group, + threshold) + if distance_aux is not None and distance_aux < distance: + distance = distance_aux + projection = projection_aux + elif len(segments) == 1: + distance, projection = segments[0].on_route_distances(point) + else: + distance, projection = self.__get_distances_from_segments(point, segments, threshold, previous_distance) + return distance, projection def generate_grid() -> GridManager: diff --git a/backend/processors/models/__init__.py b/backend/processors/models/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/processors/models/shapes.py b/backend/processors/models/shapes.py new file mode 100644 index 0000000..914f687 --- /dev/null +++ b/backend/processors/models/shapes.py @@ -0,0 +1,13 @@ +from rest_api.models import Shape +from geojson.feature import FeatureCollection + + +def shapes_to_geojson(): + shapes = Shape.objects.all() + features = [] + for shape in shapes: + features.extend(shape.to_geojson()) + geojson = FeatureCollection( + features=features, + ) + return geojson diff --git a/backend/processors/segment.py b/backend/processors/segment.py new file mode 100644 index 0000000..3370b35 --- /dev/null +++ b/backend/processors/segment.py @@ -0,0 +1,275 @@ +import datetime +import logging +import math +from bisect import bisect_right +from collections import defaultdict +from typing import List + +import pytz + +from processors.geometry.point import Point + +logger = logging.getLogger(__name__) + + +class SpatialSegment: + + def __init__(self, index: int, start_distance: int, end_distance: int, is_last: bool = False): + self.index = index + self.start_distance = start_distance + self.end_distance = end_distance + self.is_last = is_last + + def is_part_of(self, start_distance: int, end_distance: int) -> bool: + if self.is_last: + is_part_of = self.start_distance <= start_distance <= self.end_distance or \ + self.start_distance <= end_distance <= self.end_distance + else: + is_part_of = self.start_distance <= start_distance < self.end_distance or \ + self.start_distance <= end_distance < self.end_distance + return is_part_of + + def get_name(self): + return f"{self.start_distance}-{self.end_distance}" + + def __eq__(self, other): + return (self.index == other.index and + self.start_distance == other.start_distance and + self.end_distance == other.end_distance and + self.is_last == other.is_last) + + def __hash__(self): + return hash((self.index, self.start_distance, self.end_distance)) + + def __str__(self): + return f"SpatialSegment {self.index} -> [{self.start_distance}-{self.end_distance})" + + +class PartialSpatialSegment(SpatialSegment): + + def __init__(self, start_distance: int, end_distance: int, spatial_segment: SpatialSegment): + super().__init__(spatial_segment.index, start_distance, end_distance, spatial_segment.is_last) + value_error_message = f"partial segment {start_distance}-{end_distance} is not part of {spatial_segment}" + if not (spatial_segment.start_distance <= start_distance <= spatial_segment.end_distance and + spatial_segment.start_distance <= end_distance <= spatial_segment.end_distance and + start_distance <= end_distance): + raise ValueError(value_error_message) + self.complete_spatial_segment = spatial_segment + + def __eq__(self, other): + return super().__eq__(other) and self.complete_spatial_segment == other.complete_spatial_segment + + def __str__(self): + return f"PartialSpatialSegment {self.index} -> [{self.start_distance}-{self.end_distance})" + + +class TemporalSegment: + + def __init__(self, index: int, start_time: datetime.datetime, end_time: datetime.datetime): + self.index = index + self.start_time = start_time + self.end_time = end_time + + def get_name(self): + return f"[{self.start_time}-{self.end_time})" + + def get_date(self): + return self.start_time.date() + + def __eq__(self, other): + condition = self.index == other.index and \ + self.start_time == other.start_time and \ + self.end_time == other.end_time + return condition + + def __hash__(self): + return hash((self.index, self.start_time, self.end_time)) + + def __str__(self): + return f"TemporalSegment {self.index} -> [{self.start_time}-{self.end_time})" + + +class PartialTemporalSegment(TemporalSegment): + + def __init__(self, start_time: datetime.datetime, end_time: datetime.datetime, temporal_segment: TemporalSegment): + super().__init__(temporal_segment.index, start_time, end_time) + value_error_message = f"partial segment {start_time}-{end_time} is not part of {temporal_segment}" + if not (temporal_segment.start_time <= start_time <= temporal_segment.end_time and + temporal_segment.start_time <= end_time <= temporal_segment.end_time and + start_time <= end_time): + raise ValueError(value_error_message) + self.complete_temporal_segment = temporal_segment + + def __eq__(self, other): + return super().__eq__(other) and self.complete_temporal_segment == other.complete_temporal_segment + + def __str__(self): + return f"PartialTemporalSegment {self.index} -> [{self.start_time}-{self.end_time})" + + +class SegmentCriteria: + + def __init__(self, grid_manager, gtfs_manager): + self.grid_manager = grid_manager + self.gtfs_manager = gtfs_manager + self.temporal_segment_duration = 30 # in minutes + + def get_spatial_segment(self, *args, **kwargs): + raise NotImplementedError('You must create a subclass of') + + def get_temporal_segment(self, dt: datetime.datetime, timezone: datetime.tzinfo = pytz.UTC): + if dt.tzinfo is None: + raise ValueError("datetime instance must have a tzinfo") + converted_timestamp = dt.astimezone(timezone) + day_minutes = converted_timestamp.minute + converted_timestamp.hour * 60 + index = int(day_minutes / self.temporal_segment_duration) + + start_time = converted_timestamp.replace(hour=0, minute=0, second=0, microsecond=0) + start_time = start_time + datetime.timedelta(minutes=index * self.temporal_segment_duration) + end_time = start_time + datetime.timedelta(minutes=self.temporal_segment_duration) + + ts_obj = TemporalSegment(index, start_time, end_time) + return ts_obj + + def get_day_type(self, dt: datetime.datetime, timezone: datetime.tzinfo = pytz.UTC): + if dt.tzinfo is None: + raise ValueError("datetime instance must have a tzinfo") + converted_timestamp = dt.astimezone(timezone) + weekday = converted_timestamp.weekday() + day_type = 'L' if weekday < 5 else 'S' if weekday == 5 else 'D' + + return day_type + + def get_range_of_spatial_segments(self, *args, **kwargs): + raise NotImplementedError('You must create a subclass of') + + def get_range_of_temporal_segments(self, dt1: datetime.datetime, dt2: datetime.datetime) -> list[datetime]: + """ + Obtains a list of temporal intervals between two datetime. + + :param dt1: Start datetime + :type dt1: datetime.datetime + + :param dt2: End datetime + :type dt2: datetime.datetime + + :return: List of 30-minute intervals + :rtype: list[datetime.datetime] + + """ + number_of_periods = 60 * 24 / self.temporal_segment_duration + periods = [] + first_temp_segment = self.get_temporal_segment(dt1) + if first_temp_segment.start_time < dt1: + new_first_temp_segment = PartialTemporalSegment(dt1, first_temp_segment.end_time, first_temp_segment) + periods.append(new_first_temp_segment) + else: + periods.append(first_temp_segment) + + while True: + if periods[-1].end_time >= dt2: + break + new_end_time = periods[-1].end_time + datetime.timedelta(minutes=self.temporal_segment_duration) + + next_index = int((periods[-1].index + 1) % number_of_periods) + periods.append(TemporalSegment(next_index, periods[-1].end_time, new_end_time)) + + if periods[-1].end_time > dt2: + if isinstance(periods[-1], PartialTemporalSegment): + segment_parent = periods[-1].complete_temporal_segment + else: + segment_parent = periods[-1] + periods[-1] = PartialTemporalSegment(periods[-1].start_time, dt2, segment_parent) + + return periods + + +class FiveHundredMeterSegmentCriteria(SegmentCriteria): + + def __init__(self, grid_manager, gtfs_manager): + super().__init__(grid_manager, gtfs_manager) + self.spatial_segment_distance = 500 # in meters + self.shape_id_distance_dict = self.__calculate_shape_distance() + self.spatial_segments_by_shape_id, self.spatial_segment_init_list_by_shape_id = self.__calculate_spatial_segments() + + def __calculate_shape_distance(self): + shape_id_dict = self.gtfs_manager.get_shape_id_dict() + + result = dict() + # calculate shape distance + for shape_id in shape_id_dict: + last_latitude = shape_id_dict[shape_id][-1][0] + last_longitude = shape_id_dict[shape_id][-1][1] + point_obj = Point(last_latitude, last_longitude) + dist_to_route, dist_on_route = self.grid_manager.get_on_route_distances(point_obj, shape_id) + if dist_on_route is None: + raise ValueError(f"Projection error for shape_id {shape_id}") + # round to upper integer to catch all gps projections + result[shape_id] = math.ceil(dist_on_route) + logger.info(f"shape_id {shape_id} has {dist_on_route} meters.") + + return result + + def __calculate_spatial_segments(self): + segment_init_list = defaultdict(list) + data = dict() + for shape_id in self.shape_id_distance_dict: + distance = self.shape_id_distance_dict[shape_id] + segment_list = [] + range_list = list(range(0, distance, self.spatial_segment_distance)) + if distance == 0: + logger.error(f"Shape ID {shape_id} with a distance of 0 meters.") + continue + if range_list[-1] != distance: + range_list += [distance] + for index, start_distance in enumerate(range_list[:-1]): + end_distance = range_list[index + 1] + is_last = end_distance == distance + ss_obj = SpatialSegment(index, start_distance, end_distance, is_last=is_last) + segment_list.append(ss_obj) + segment_init_list[shape_id].append(start_distance) + data[shape_id] = segment_list + + return data, segment_init_list + + def get_spatial_segment(self, shape_id: str, distance: int) -> SpatialSegment: + segment_list = self.spatial_segments_by_shape_id[shape_id] + index = bisect_right(self.spatial_segment_init_list_by_shape_id[shape_id], distance) + + if distance < 0 or distance > segment_list[-1].end_distance: + raise ValueError(f"distance {distance} is not part of the shape {shape_id}") + + if index == len(self.spatial_segment_init_list_by_shape_id[shape_id]): + return segment_list[-1] + else: + return segment_list[index - 1] + + def get_range_of_spatial_segments(self, shape_id: str, start_distance: int, end_distance: int) \ + -> List[SpatialSegment or PartialSpatialSegment]: + """ + Parameters: + - `shape_id`: A string representing the shape identifier. + - `start_distance`: An integer representing the starting distance. + - `end_distance`: An integer representing the ending distance. + + Returns: + - A list of `SpatialSegment` or PartialSpatialSegment objects that fall within the specified range of distances. + """ + segment_list = self.spatial_segments_by_shape_id[shape_id] + result_segment = [] + aux_start_distance = start_distance + for segment_obj in segment_list: + if segment_obj.is_part_of(aux_start_distance, end_distance): + result_segment.append(segment_obj) + aux_start_distance = min(end_distance, segment_obj.end_distance) + + if start_distance > result_segment[0].start_distance: + result_segment[0] = PartialSpatialSegment(start_distance, result_segment[0].end_distance, result_segment[0]) + if end_distance < result_segment[-1].end_distance: + if isinstance(result_segment[-1], PartialSpatialSegment): + segment_parent = result_segment[-1].complete_spatial_segment + else: + segment_parent = result_segment[-1] + result_segment[-1] = PartialSpatialSegment(result_segment[-1].start_distance, end_distance, segment_parent) + + return result_segment diff --git a/backend/processors/util/__init__.py b/backend/processors/util/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/processors/util/shapes.py b/backend/processors/util/shapes.py new file mode 100644 index 0000000..7bbd8de --- /dev/null +++ b/backend/processors/util/shapes.py @@ -0,0 +1,88 @@ +import os +import geopandas as gpd +from config.paths import TEST_PATH +from geojson import Feature, FeatureCollection, MultiLineString +from processors.geometry.point import Point as Pointt +from shapely.geometry import Point, LineString +from shapely.ops import linemerge, split +import warnings + +shapes = ["shape_0.geojson", "shape_1.geojson"] +SHAPES_PATH = os.path.join(TEST_PATH, "input_shapes") +OUTPUT_PATH = os.path.join(TEST_PATH, "output_shapes") + + +def clean_linestring(linestring): + previous_coords = None + coords = [] + for point in linestring.coords: + if previous_coords is None: + previous_coords = point + if previous_coords == point: + print("Repeated point:", point) + continue + coords.append([float(point[0]), float(point[1])]) + previous_coords = point + linestring = LineString(coordinates=coords) + print(linestring) + return linestring + + +def merge_shapes(shapes_file_paths, output_filename="merged_shapes.geojson"): + linestrings = [] + for path in shapes_file_paths: + shape_path = os.path.join(SHAPES_PATH, path) + gdf = gpd.read_file(shape_path) + merged = linemerge(gdf["geometry"].unary_union).simplify(tolerance=0) + linestrings.append(merged) + + feature_col = FeatureCollection(features=[Feature(geometry=f) for f in linestrings]) + output_gdf = gpd.GeoDataFrame.from_features(feature_col) + output_path = os.path.join(OUTPUT_PATH, output_filename) + output_gdf.to_file(output_path, driver="GeoJSON") + + +def segment_shapes_by_distance(shapes_file_name: str = "merged_shapes.geojson", distance_in_meters: int = 500, + output_filename="segmented_shapes.geojson"): + shapes_path = os.path.join(TEST_PATH, shapes_file_name) + output_path = os.path.join(TEST_PATH, output_filename) + + gdf = gpd.read_file(shapes_path) + features = [] + total_distance = 0 + for shape in gdf.itertuples(): + points = [] + linestrings = [] + geometry = shape.geometry + previous_point = None + previous_distance = 0 + for point in geometry.coords: + p_obj = Pointt(point[1], point[0]) + if previous_point is None: + previous_point = p_obj + continue + previous_distance += p_obj.distance(previous_point) + total_distance += p_obj.distance(previous_point) + if previous_distance >= distance_in_meters: + points.append(Point(point[0], point[1])) + previous_distance = 0 + previous_point = p_obj + previous_geometry = geometry + for idx, point in enumerate(points): + splitted = split(previous_geometry, point) + previous_geometry = splitted.geoms[1] + linestrings.append(splitted.geoms[0]) + + mls_coords = [tuple(line.coords) for line in linestrings] + features.append(Feature(geometry=MultiLineString(coordinates=mls_coords))) + output = gpd.GeoDataFrame.from_features(FeatureCollection(features, crs={'init': 'epsg:4326'})) + output.to_file(output_path, driver='GeoJSON') + + +def main(): + # merge_shapes(shapes) + segment_shapes_by_distance() + + +if __name__ == "__main__": + main() diff --git a/backend/processors/vehicle.py b/backend/processors/vehicle.py new file mode 100644 index 0000000..9aa53a2 --- /dev/null +++ b/backend/processors/vehicle.py @@ -0,0 +1,69 @@ +import logging + +from processors.grid import GridManager +from processors.gps import GPSPulse +from processors.expedition import ExpeditionData + +logger = logging.getLogger(__name__) + + +class VehicleData: + def __init__(self, license_plate: str, grid_manager: GridManager): + self.license_plate = license_plate + self.grid_manager = grid_manager + self.expeditions = dict() + + def add_gps_pulse(self, gps_point: GPSPulse, license_plate: str, shape_id: str, trip_id: str, route_id: str | None, + direction_id: str | None, start_date: str | None, start_time: str | None): + new_expedition = ExpeditionData(self.grid_manager, license_plate, shape_id, trip_id, route_id, direction_id, + start_date, start_time) + if new_expedition not in self.expeditions: + self.expeditions[new_expedition] = new_expedition + self.expeditions[new_expedition].add_gps_point(gps_point) + + def __eq__(self, other): + return self.license_plate == other.license_plate + + def __hash__(self): + return hash(self.license_plate) + + def __str__(self): + return f'Vehicle ${self.license_plate}' + + +class VehicleManager: + def __init__(self, grid_manager: GridManager, gtfs_manager: GTFSManager): + self.vehicles = {} + self.grid_manager = grid_manager + self.gtfs_manager = gtfs_manager + + self.gtfs_timezone = self.gtfs_manager.get_timezone() + self.trip_dict = self.gtfs_manager.get_trip_dict() + + # TODO: Ahora los datos no dependen del trip_id. Sólamente dependen de si se encuentran en cierta ruta + # (ahora route_id es el identificador) + def add_data(self, license_plate: str, gps_pulse: GPSPulse, trip_id: str, route_id: str | None, + direction_id: str | None, start_date: str | None, start_time: str | None): + vehicle_data = VehicleData(license_plate, self.grid_manager) + if vehicle_data not in self.vehicles: + self.vehicles[vehicle_data] = vehicle_data + + try: + shape_id = self.trip_dict[trip_id]['shape_id'] + self.vehicles[vehicle_data].add_gps_pulse(gps_pulse, license_plate, shape_id, trip_id, route_id, + direction_id, start_date, start_time) + except KeyError: + logger.error(f'trip_id "{trip_id}" does not exist in gtfs') + + def calculate_speed(self, segment_criteria: SegmentCriteria): + records = [] + for vehicle in self.vehicles: + logger.info(f"processing vehicle {vehicle}...") + for expedition in self.vehicles[vehicle].expeditions: + try: + logger.info(f'\tprocessing expedition {expedition}...') + exp_records = expedition.calculate_speed(segment_criteria, self.gtfs_timezone) + records.extend(exp_records) + except ValueError as e: + logger.error(f'vehicle: {e}') + return records diff --git a/backend/rest_api/migrations/0001_initial.py b/backend/rest_api/migrations/0001_initial.py new file mode 100644 index 0000000..35f9808 --- /dev/null +++ b/backend/rest_api/migrations/0001_initial.py @@ -0,0 +1,32 @@ +# Generated by Django 4.1.1 on 2024-04-14 22:45 + +import django.contrib.postgres.fields +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Shape', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=128)), + ], + ), + migrations.CreateModel( + name='Segment', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('place', models.IntegerField()), + ('geometry', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('shape_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='rest_api.shape')), + ], + ), + ] diff --git a/backend/rest_api/migrations/0002_rename_place_segment_sequence_alter_segment_geometry.py b/backend/rest_api/migrations/0002_rename_place_segment_sequence_alter_segment_geometry.py new file mode 100644 index 0000000..29215ac --- /dev/null +++ b/backend/rest_api/migrations/0002_rename_place_segment_sequence_alter_segment_geometry.py @@ -0,0 +1,24 @@ +# Generated by Django 4.1.1 on 2024-04-16 20:52 + +import django.contrib.postgres.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0001_initial'), + ] + + operations = [ + migrations.RenameField( + model_name='segment', + old_name='place', + new_name='sequence', + ), + migrations.AlterField( + model_name='segment', + name='geometry', + field=django.contrib.postgres.fields.ArrayField(base_field=django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None), size=None), + ), + ] diff --git a/backend/rest_api/models.py b/backend/rest_api/models.py index 71a8362..3dbc32f 100644 --- a/backend/rest_api/models.py +++ b/backend/rest_api/models.py @@ -1,3 +1,37 @@ +from django.contrib.postgres.fields import ArrayField from django.db import models +from geojson.geometry import LineString +from geojson.feature import Feature -# Create your models here. + +class Shape(models.Model): + name = models.CharField(max_length=128) + + def to_geojson(self): + segments = Segment.objects.filter(shape_id=self.pk).all() + if len(segments) == 0: + return {} + geojson = [segment.to_geojson() for segment in segments] + return geojson + + def __str__(self): + return f"'{self.name}'" + + +class Segment(models.Model): + shape_id = models.ForeignKey(Shape, on_delete=models.CASCADE) + sequence = models.IntegerField(blank=False, null=False) + geometry = ArrayField(ArrayField(models.FloatField()), blank=False, null=False) + + def __str__(self): + return f"Segment {self.sequence} of Shape {self.shape_id}" + + def to_geojson(self): + feature = Feature( + geometry=LineString(coordinates=self.geometry), + properties={ + "shape_id": self.shape_id.pk, + "sequence": self.sequence + } + ) + return feature diff --git a/backend/rest_api/tests/test_geometry.py b/backend/rest_api/tests/test_geometry.py new file mode 100644 index 0000000..4433ca8 --- /dev/null +++ b/backend/rest_api/tests/test_geometry.py @@ -0,0 +1,115 @@ +import json + +from rest_api.tests.tests_views_base import BaseTestCase +from rest_api.models import Shape, Segment +from geojson.geometry import LineString, MultiLineString +from geojson.feature import Feature, FeatureCollection +from processors.models.shapes import shapes_to_geojson + + +class GeometryTestCase(BaseTestCase): + def setUp(self): + self.login_process() + self.shape_data = { + 'name': 'Test Shape' + } + self.segment_data = [ + { + 'sequence': 0, + 'geometry': [(0, 0), (0, 1), (0, 2)] + }, + { + 'sequence': 1, + 'geometry': [(0, 3), (0, 4), (0, 5)] + } + ] + + def create_shape(self, shape_data=None): + shape_data = shape_data or self.shape_data + return Shape.objects.create(**shape_data) + + def create_segments(self, segment_data=None): + segment_data = segment_data or self.segment_data + shape_obj = self.create_shape() + for segment in segment_data: + segment['shape_id'] = shape_obj + segments = Segment.objects.bulk_create([Segment(**segment) for segment in segment_data]) + return shape_obj, segments + + +class ShapeTest(GeometryTestCase): + def test_create(self): + shape_obj = Shape.objects.create(**self.shape_data) + expected_obj = Shape.objects.get(pk=shape_obj.pk) + self.assertEqual(shape_obj, expected_obj) + + def test_to_geojson(self): + shape, segments = self.create_segments() + actual = shape.to_geojson() + expected = [Feature( + geometry=LineString(coordinates=segment.geometry), + properties={ + "shape_id": shape.pk, + "sequence": segment.sequence + } + ) for segment in segments] + self.assertEqual(actual, expected) + + def test_to_geojson_with_no_segments(self): + shape = self.create_shape() + actual = shape.to_geojson() + expected = {} + self.assertDictEqual(actual, expected) + + +class SegmentTest(GeometryTestCase): + def test_create(self): + segment_data = [ + { + 'sequence': 0, + 'geometry': [(0, 0), (0, 1), (0, 2)] + }, + { + 'sequence': 1, + 'geometry': [(0, 3), (0, 4), (0, 5)] + }, + { + 'sequence': 2, + 'geometry': [(0, 6), (0, 7), (0, 8)] + } + ] + _, segments = self.create_segments(segment_data) + self.assertEqual(len(segments), len(segment_data)) + + def test_to_geojson(self): + shape, segments = self.create_segments() + expected = [Feature( + geometry=LineString(coordinates=segment.geometry), + properties={ + "shape_id": segment.shape_id.pk, + "sequence": segment.sequence + } + ) for segment in segments] + actual = [segment.to_geojson() for segment in segments] + self.assertEqual(actual, expected) + + +class GeoJSONTest(GeometryTestCase): + def test_shapes_to_geojson(self): + _, _ = self.create_segments() + actual = shapes_to_geojson() + features = [] + shapes = Shape.objects.all() + for shape in shapes: + features.extend(shape.to_geojson()) + expected = FeatureCollection( + features=features + ) + + self.assertEqual(actual, expected) + + def test_shapes_to_geojson_without_shapes(self): + expected = FeatureCollection(features=[]) + actual = shapes_to_geojson() + + self.assertDictEqual(actual, expected) diff --git a/backend/rest_api/tests/tests_views_base.py b/backend/rest_api/tests/tests_views_base.py index 0eeff20..7ef97af 100644 --- a/backend/rest_api/tests/tests_views_base.py +++ b/backend/rest_api/tests/tests_views_base.py @@ -1,7 +1,8 @@ import json - from django.contrib.auth import get_user_model +from rest_framework import status from rest_framework.test import APITestCase, APIClient +from rest_framework.reverse import reverse class BaseTestCase(APITestCase): @@ -17,7 +18,7 @@ class BaseTestCase(APITestCase): def setUp(self): self.client = APIClient() - def _make_request(self, client, method, url, data, status_code, json_process=False, **additional_method_params): + def _make_request(self, client, method, url, data=None, status_code=status.HTTP_200_OK, json_process=False, **additional_method_params): method_obj = None if method == self.GET_REQUEST: method_obj = client.get @@ -45,3 +46,10 @@ def create_user(username, password): "password": password } return get_user_model().objects.create_user(**user_user_attributes) + + def login_process(self): + user_credentials = {"username": "TestUser", "password": "TestPassword"} + self.create_user(**user_credentials) + login_response = self._make_request(self.client, self.POST_REQUEST, reverse('login'), data=user_credentials) + login_token = json.loads(login_response.content.decode('utf-8'))['token'] + self.client.credentials(HTTP_AUTHORIZATION='Token {}'.format(login_token)) diff --git a/backend/rest_api/urls.py b/backend/rest_api/urls.py new file mode 100644 index 0000000..9cfe6e1 --- /dev/null +++ b/backend/rest_api/urls.py @@ -0,0 +1,8 @@ +from django.urls import include, path +from rest_api.views import GeoJSONViewSet + +# Wire up our API using automatic URL routing. +# Additionally, we include login URLs for the browsable API. +urlpatterns = [ + path('mapData/', GeoJSONViewSet.as_view(), name='mapData'), +] diff --git a/backend/rest_api/views.py b/backend/rest_api/views.py index 91ea44a..1bbbc38 100644 --- a/backend/rest_api/views.py +++ b/backend/rest_api/views.py @@ -1,3 +1,21 @@ +import json + from django.shortcuts import render +from rest_framework import viewsets +from django.http import JsonResponse +from rest_framework import generics +from rest_framework.permissions import AllowAny +from processors.models.shapes import shapes_to_geojson + # Create your views here. +class GeoJSONViewSet(generics.GenericAPIView): + permission_classes = [AllowAny] + + def get(self, request): + # Returns a GeoJSON with the latest data. + # This includes the 500-meter-segmented-path with its corresponding velocities + # TODO: Change placeholder with real information + shapes_json = shapes_to_geojson() + + return JsonResponse(shapes_json, safe=False) diff --git a/docker/docker-compose-dev.yml b/docker/docker-compose-dev.yml index abe2efb..d1d28f9 100644 --- a/docker/docker-compose-dev.yml +++ b/docker/docker-compose-dev.yml @@ -31,4 +31,4 @@ services: db: profiles: [ 'dev', 'test' ] ports: - - "5432:5432" \ No newline at end of file + - "5431:5432" \ No newline at end of file diff --git a/requirements-prod.txt b/requirements-prod.txt index 4c81875..bfb5ba7 100644 --- a/requirements-prod.txt +++ b/requirements-prod.txt @@ -8,4 +8,5 @@ drf-spectacular==0.24.2 gunicorn==20.1.0 psycopg2-binary==2.9.3 requests -typer \ No newline at end of file +typer +geojson \ No newline at end of file From d6c2618e48c25a8b98087d13d2c1e7733262b8fe Mon Sep 17 00:00:00 2001 From: Mrtn-fa Date: Tue, 16 Apr 2024 18:52:34 -0400 Subject: [PATCH 04/11] added flush_shape_objects and its test. Added OSM query process (WIP) --- backend/processors/osm/__init__.py | 0 backend/processors/osm/query.py | 46 +++++++++++++++++++ .../{test_geometry.py => test_models.py} | 10 +++- backend/rest_api/util/__init__.py | 0 backend/rest_api/util/shape.py | 5 ++ requirements-prod.txt | 3 +- 6 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 backend/processors/osm/__init__.py create mode 100644 backend/processors/osm/query.py rename backend/rest_api/tests/{test_geometry.py => test_models.py} (89%) create mode 100644 backend/rest_api/util/__init__.py create mode 100644 backend/rest_api/util/shape.py diff --git a/backend/processors/osm/__init__.py b/backend/processors/osm/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/processors/osm/query.py b/backend/processors/osm/query.py new file mode 100644 index 0000000..b3305a0 --- /dev/null +++ b/backend/processors/osm/query.py @@ -0,0 +1,46 @@ +import overpass +import geojson +import geopandas as gpd + +ALAMEDA_QUERY = """ + rel(1674530); + map_to_area->.santiago; + ( + way(area.santiago)[highway="primary"][name="Avenida Providencia"]; + way(area.santiago)[highway="primary"][name="Avenida Nueva Providencia"]; + way(176118014); + way(area.santiago)[highway="primary"][name="Avenida Libertador Bernardo O'Higgins"]; + way(area.santiago)[highway="primary"][name="Avenida Apoquindo"]; + ); +""" + + +def overpass_query(query): + api = overpass.API() + response = api.get(query, verbosity='geom') + return geojson.loads(geojson.dumps(response)) + + +# Separa el geojson en N linestring, con N el número de calles aisladas (alameda ida, alameda vuelta == 2) +def split_geojson_by_shape(geojson_data): + # TODO: completar la función + return gpd.GeoDataFrame() + + +def segment_shapes(shapes_gdf): + # TODO: completar la función + return gpd.GeoDataFrame() + + +def save_shapes_and_segments(segmented_shapes_gdf): + # TODO: completar la función + return gpd.GeoDataFrame() + + +def process_geojson(geojson_data): + splitted_gdf = split_geojson_by_shape(geojson_data) + segmented_shapes = segment_shapes(splitted_gdf) + + +data = overpass_query(ALAMEDA_QUERY) +process_geojson(data) diff --git a/backend/rest_api/tests/test_geometry.py b/backend/rest_api/tests/test_models.py similarity index 89% rename from backend/rest_api/tests/test_geometry.py rename to backend/rest_api/tests/test_models.py index 4433ca8..9352f75 100644 --- a/backend/rest_api/tests/test_geometry.py +++ b/backend/rest_api/tests/test_models.py @@ -1,4 +1,4 @@ -import json +from rest_api.util.shape import flush_shape_objects from rest_api.tests.tests_views_base import BaseTestCase from rest_api.models import Shape, Segment @@ -61,6 +61,14 @@ def test_to_geojson_with_no_segments(self): expected = {} self.assertDictEqual(actual, expected) + def test_flush_shape_objects(self): + _, _ = self.create_segments() + self.assertTrue(len(Shape.objects.all()) == 1) + self.assertTrue(len(Segment.objects.all()) == len(self.segment_data)) + flush_shape_objects() + self.assertTrue(len(Shape.objects.all()) == 0) + self.assertTrue(len(Segment.objects.all()) == 0) + class SegmentTest(GeometryTestCase): def test_create(self): diff --git a/backend/rest_api/util/__init__.py b/backend/rest_api/util/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/rest_api/util/shape.py b/backend/rest_api/util/shape.py new file mode 100644 index 0000000..88a283c --- /dev/null +++ b/backend/rest_api/util/shape.py @@ -0,0 +1,5 @@ +from rest_api.models import Shape + + +def flush_shape_objects(): + Shape.objects.all().delete() diff --git a/requirements-prod.txt b/requirements-prod.txt index bfb5ba7..fa675d5 100644 --- a/requirements-prod.txt +++ b/requirements-prod.txt @@ -9,4 +9,5 @@ gunicorn==20.1.0 psycopg2-binary==2.9.3 requests typer -geojson \ No newline at end of file +geojson +overpass \ No newline at end of file From dc5e3add64e0474c81065c0e95b14c54c192f802 Mon Sep 17 00:00:00 2001 From: Mrtn-fa Date: Wed, 17 Apr 2024 21:14:09 -0400 Subject: [PATCH 05/11] pending container fix --- Makefile | 2 +- backend/processors/osm/process.py | 47 ++++++++++++++++++++++++ backend/processors/osm/query.py | 22 ----------- backend/processors/tests/__init__.py | 0 backend/processors/tests/test_process.py | 32 ++++++++++++++++ docker/Dockerfile | 4 +- docker/dev/backend_env | 2 +- requirements-prod.txt | 6 ++- 8 files changed, 87 insertions(+), 28 deletions(-) create mode 100644 backend/processors/osm/process.py create mode 100644 backend/processors/tests/__init__.py create mode 100644 backend/processors/tests/test_process.py diff --git a/Makefile b/Makefile index afdde31..adc3fe8 100644 --- a/Makefile +++ b/Makefile @@ -21,7 +21,7 @@ test: $(TEST) up --abort-on-container-exit build: - $(COMPOSE_DEV) build + $(COMPOSE_DEV) build --no-cache up: $(COMPOSE_DEV) up diff --git a/backend/processors/osm/process.py b/backend/processors/osm/process.py new file mode 100644 index 0000000..b5cdb7a --- /dev/null +++ b/backend/processors/osm/process.py @@ -0,0 +1,47 @@ +from geojson.feature import FeatureCollection +import geopandas as gpd +from typing import List + + +# Separa el geojson en N linestring, con N el número de calles aisladas (alameda ida, alameda vuelta == 2) +def split_geojson_by_shape(df: gpd.GeoDataFrame) -> List[gpd.GeoDataFrame]: + output = [] + aux_df = df.copy() + + while not aux_df.empty: + current_df = aux_df.copy() + current_direction = [current_df.iloc[0]] + dir_len = len(current_direction) + i = 0 + while i < dir_len: + new_aux_df = [] + curr_geom = current_direction[i].geometry + for feature in current_df.itertuples(): + comp_geom = feature.geometry + if comp_geom in current_direction or curr_geom == comp_geom: + continue + if curr_geom.touches(comp_geom): + current_direction.append(comp_geom) + dir_len += 1 + else: + new_aux_df.append(feature) + current_df = gpd.GeoDataFrame.from_features(FeatureCollection(features=new_aux_df)) + i += 1 + output.append(gpd.GeoDataFrame.from_features(current_direction)) + aux_df = current_df.copy() + return output + + +def segment_shapes(shapes_gdf): + # TODO: completar la función + return gpd.GeoDataFrame() + + +def save_shapes_and_segments(segmented_shapes_gdf): + # TODO: completar la función + return gpd.GeoDataFrame() + + +def process_geojson(geojson_data): + splitted_gdf = split_geojson_by_shape(geojson_data) + segmented_shapes = segment_shapes(splitted_gdf) \ No newline at end of file diff --git a/backend/processors/osm/query.py b/backend/processors/osm/query.py index b3305a0..fbcad92 100644 --- a/backend/processors/osm/query.py +++ b/backend/processors/osm/query.py @@ -21,26 +21,4 @@ def overpass_query(query): return geojson.loads(geojson.dumps(response)) -# Separa el geojson en N linestring, con N el número de calles aisladas (alameda ida, alameda vuelta == 2) -def split_geojson_by_shape(geojson_data): - # TODO: completar la función - return gpd.GeoDataFrame() - - -def segment_shapes(shapes_gdf): - # TODO: completar la función - return gpd.GeoDataFrame() - - -def save_shapes_and_segments(segmented_shapes_gdf): - # TODO: completar la función - return gpd.GeoDataFrame() - - -def process_geojson(geojson_data): - splitted_gdf = split_geojson_by_shape(geojson_data) - segmented_shapes = segment_shapes(splitted_gdf) - - data = overpass_query(ALAMEDA_QUERY) -process_geojson(data) diff --git a/backend/processors/tests/__init__.py b/backend/processors/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/processors/tests/test_process.py b/backend/processors/tests/test_process.py new file mode 100644 index 0000000..2b975e3 --- /dev/null +++ b/backend/processors/tests/test_process.py @@ -0,0 +1,32 @@ +from rest_api.tests.tests_views_base import BaseTestCase +import geopandas as gpd +from geojson.feature import Feature, FeatureCollection +from geojson.geometry import LineString +from processors.osm.process import split_geojson_by_shape + + +class TestProcess(BaseTestCase): + def setUp(self): + super(TestProcess, self).setUp() + self.gdf_data = gpd.GeoDataFrame.from_features( + features=[ + Feature(geometry=LineString(coordinates=[(0, 0), (0, 1), (0, 2)])), + Feature(geometry=LineString(coordinates=[(1, 0), (1, 1), (1, 2)])), + ] + ) + + def test_split_geojson_by_shape(self): + actual = split_geojson_by_shape(self.gdf_data) + expected = [ + gpd.GeoDataFrame.from_features( + features=[ + Feature(geometry=LineString(coordinates=[(0, 0), (0, 1), (0, 2)])) + ] + ), + gpd.GeoDataFrame.from_features( + features=[ + Feature(geometry=LineString(coordinates=[(1, 0), (1, 1), (1, 2)])) + ] + ) + ] + self.assertEqual(actual, expected) diff --git a/docker/Dockerfile b/docker/Dockerfile index 89f29f2..c1a2a92 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,9 +1,9 @@ -FROM python:3.9.13-alpine3.16 as base +FROM python:3.11.0-alpine3.16 as base FROM base as builder RUN mkdir /install -RUN /bin/sh -c 'apk update && apk add --no-cache gcc musl-dev geos-dev postgresql-dev' +RUN /bin/sh -c 'apk update && apk add --no-cache gcc cmake make libtool musl-dev geos-dev postgresql-dev' COPY requirements-prod.txt /install/requirements-prod.txt RUN /bin/sh -c 'pip3 install --no-cache-dir --upgrade pip' RUN /bin/sh -c 'pip3 install --no-cache-dir --no-warn-script-location --prefix /install -r /install/requirements-prod.txt' diff --git a/docker/dev/backend_env b/docker/dev/backend_env index 441cbc1..39be452 100644 --- a/docker/dev/backend_env +++ b/docker/dev/backend_env @@ -10,7 +10,7 @@ DB_NAME=dbtemp DB_USER=user DB_PASS=pass DB_HOST=db -DB_PORT=5432 +DB_PORT=5431 # needed in dev mode CORS_ALLOWED_ORIGINS=http://127.0.0.1:8081,http://localhost:8081,http://localhost:5173,http://127.0.0.1:5173 diff --git a/requirements-prod.txt b/requirements-prod.txt index fa675d5..d784338 100644 --- a/requirements-prod.txt +++ b/requirements-prod.txt @@ -6,8 +6,10 @@ djangorestframework==3.13.1 django-filter==22.1 drf-spectacular==0.24.2 gunicorn==20.1.0 -psycopg2-binary==2.9.3 +psycopg2-binary requests typer geojson -overpass \ No newline at end of file +overpass +geopandas +GDAL \ No newline at end of file From 1d82f8fb6c7c2aecead0d592a5127d7d19106477 Mon Sep 17 00:00:00 2001 From: Mrtn-fa Date: Wed, 17 Apr 2024 23:13:23 -0400 Subject: [PATCH 06/11] added split_geojson_by_shapes & test --- backend/processors/osm/process.py | 15 +++--- backend/processors/tests/test_process.py | 59 +++++++++++++++++++----- 2 files changed, 57 insertions(+), 17 deletions(-) diff --git a/backend/processors/osm/process.py b/backend/processors/osm/process.py index b5cdb7a..d5d8be7 100644 --- a/backend/processors/osm/process.py +++ b/backend/processors/osm/process.py @@ -1,6 +1,6 @@ -from geojson.feature import FeatureCollection import geopandas as gpd from typing import List +from geojson.feature import Feature, FeatureCollection # Separa el geojson en N linestring, con N el número de calles aisladas (alameda ida, alameda vuelta == 2) @@ -11,23 +11,26 @@ def split_geojson_by_shape(df: gpd.GeoDataFrame) -> List[gpd.GeoDataFrame]: while not aux_df.empty: current_df = aux_df.copy() current_direction = [current_df.iloc[0]] + aux_geom = [current_direction[0].geometry] dir_len = len(current_direction) i = 0 while i < dir_len: new_aux_df = [] - curr_geom = current_direction[i].geometry + curr_geom = aux_geom[i] for feature in current_df.itertuples(): comp_geom = feature.geometry - if comp_geom in current_direction or curr_geom == comp_geom: + if comp_geom in aux_geom or curr_geom == comp_geom: continue if curr_geom.touches(comp_geom): - current_direction.append(comp_geom) + current_direction.append(feature) + aux_geom.append(comp_geom) dir_len += 1 else: new_aux_df.append(feature) - current_df = gpd.GeoDataFrame.from_features(FeatureCollection(features=new_aux_df)) + features = FeatureCollection(features=[Feature(geometry=f.geometry) for f in new_aux_df]) + current_df = gpd.GeoDataFrame.from_features(features) i += 1 - output.append(gpd.GeoDataFrame.from_features(current_direction)) + output.append(gpd.GeoDataFrame.from_features(FeatureCollection(features=[Feature(geometry=f.geometry) for f in current_direction]))) aux_df = current_df.copy() return output diff --git a/backend/processors/tests/test_process.py b/backend/processors/tests/test_process.py index 2b975e3..e06fa13 100644 --- a/backend/processors/tests/test_process.py +++ b/backend/processors/tests/test_process.py @@ -3,30 +3,67 @@ from geojson.feature import Feature, FeatureCollection from geojson.geometry import LineString from processors.osm.process import split_geojson_by_shape +import pandas as pd class TestProcess(BaseTestCase): def setUp(self): super(TestProcess, self).setUp() - self.gdf_data = gpd.GeoDataFrame.from_features( - features=[ - Feature(geometry=LineString(coordinates=[(0, 0), (0, 1), (0, 2)])), - Feature(geometry=LineString(coordinates=[(1, 0), (1, 1), (1, 2)])), - ] - ) + self.gdf_data_no_touches = gpd.GeoDataFrame([ + Feature(geometry=LineString(coordinates=[(0, 0), (0, 1), (0, 2)])), + Feature(geometry=LineString(coordinates=[(1, 0), (1, 1), (1, 2)])), + ]) + self.gdf_data_touches = gpd.GeoDataFrame([ + Feature(geometry=LineString(coordinates=[(0, 0), (0, 1), (0, 2)])), + Feature(geometry=LineString(coordinates=[(0, 2), (0, 3), (0, 4)])), + ]) + self.gdf_data_mixed = gpd.GeoDataFrame([ + Feature(geometry=LineString(coordinates=[(0, 0), (0, 1), (0, 2)])), + Feature(geometry=LineString(coordinates=[(0, 2), (0, 3), (0, 4)])), + Feature(geometry=LineString(coordinates=[(0, 5), (0, 6), (0, 7)])) + ]) - def test_split_geojson_by_shape(self): - actual = split_geojson_by_shape(self.gdf_data) + def test_split_geojson_by_shape_no_touches(self): + actual = split_geojson_by_shape(self.gdf_data_no_touches) + expected = [ + gpd.GeoDataFrame.from_features( + features=[Feature(geometry=LineString(coordinates=[(0, 0), (0, 1), (0, 2)]))]), + gpd.GeoDataFrame.from_features( + features=[Feature(geometry=LineString(coordinates=[(1, 0), (1, 1), (1, 2)]))]) + ] + actual = gpd.GeoDataFrame(pd.concat(actual, ignore_index=True)) + expected = gpd.GeoDataFrame(pd.concat(expected, ignore_index=True)) + self.assertTrue(actual.equals(expected)) + + def test_split_geojson_by_shape_touches(self): + actual = split_geojson_by_shape(self.gdf_data_touches) + expected = [ + gpd.GeoDataFrame.from_features( + features=[ + Feature(geometry=LineString(coordinates=[(0, 0), (0, 1), (0, 2)])), + Feature(geometry=LineString(coordinates=[(0, 2), (0, 3), (0, 4)])), + ] + ) + ] + actual = gpd.GeoDataFrame(pd.concat(actual, ignore_index=True)) + expected = gpd.GeoDataFrame(pd.concat(expected, ignore_index=True)) + self.assertTrue(actual.equals(expected)) + + def test_split_geojson_by_shape_mixed(self): + actual = split_geojson_by_shape(self.gdf_data_mixed) expected = [ gpd.GeoDataFrame.from_features( features=[ - Feature(geometry=LineString(coordinates=[(0, 0), (0, 1), (0, 2)])) + Feature(geometry=LineString(coordinates=[(0, 0), (0, 1), (0, 2)])), + Feature(geometry=LineString(coordinates=[(0, 2), (0, 3), (0, 4)])) ] ), gpd.GeoDataFrame.from_features( features=[ - Feature(geometry=LineString(coordinates=[(1, 0), (1, 1), (1, 2)])) + Feature(geometry=LineString(coordinates=[(0, 5), (0, 6), (0, 7)])) ] ) ] - self.assertEqual(actual, expected) + actual = gpd.GeoDataFrame(pd.concat(actual, ignore_index=True)) + expected = gpd.GeoDataFrame(pd.concat(expected, ignore_index=True)) + self.assertTrue(actual.equals(expected)) From d9cf13325bb738bd9304f463e6f4e7f3c510026f Mon Sep 17 00:00:00 2001 From: Mrtn-fa Date: Thu, 18 Apr 2024 16:20:57 -0400 Subject: [PATCH 07/11] fixed dockerfile --- docker/Dockerfile | 5 +++-- requirements-prod.txt | 3 +-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index c1a2a92..847ffdc 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,9 +1,10 @@ -FROM python:3.11.0-alpine3.16 as base +FROM python:3.9.13-alpine3.16 as base FROM base as builder +ENV PROJ_DIR=/usr RUN mkdir /install -RUN /bin/sh -c 'apk update && apk add --no-cache gcc cmake make libtool musl-dev geos-dev postgresql-dev' +RUN /bin/sh -c 'apk update && apk add --no-cache gdal-dev g++ proj proj-dev proj-util gcc musl-dev geos-dev postgresql-dev' COPY requirements-prod.txt /install/requirements-prod.txt RUN /bin/sh -c 'pip3 install --no-cache-dir --upgrade pip' RUN /bin/sh -c 'pip3 install --no-cache-dir --no-warn-script-location --prefix /install -r /install/requirements-prod.txt' diff --git a/requirements-prod.txt b/requirements-prod.txt index d784338..4d14f2c 100644 --- a/requirements-prod.txt +++ b/requirements-prod.txt @@ -11,5 +11,4 @@ requests typer geojson overpass -geopandas -GDAL \ No newline at end of file +geopandas \ No newline at end of file From fa7cd79ca66d70c713711213da5f6cef9e6fde75 Mon Sep 17 00:00:00 2001 From: Mrtn-fa Date: Thu, 18 Apr 2024 19:30:41 -0400 Subject: [PATCH 08/11] Added process_shape_data pipeline (pending tests). --- Makefile | 2 +- backend/processors/osm/process.py | 89 ++++++++++++++++--- backend/processors/osm/query.py | 3 - backend/processors/tests/test_process.py | 53 ++++++++++- .../0003_rename_shape_id_segment_shape.py | 18 ++++ backend/rest_api/models.py | 8 +- docker/dev/backend_env | 2 +- 7 files changed, 155 insertions(+), 20 deletions(-) create mode 100644 backend/rest_api/migrations/0003_rename_shape_id_segment_shape.py diff --git a/Makefile b/Makefile index adc3fe8..afdde31 100644 --- a/Makefile +++ b/Makefile @@ -21,7 +21,7 @@ test: $(TEST) up --abort-on-container-exit build: - $(COMPOSE_DEV) build --no-cache + $(COMPOSE_DEV) build up: $(COMPOSE_DEV) up diff --git a/backend/processors/osm/process.py b/backend/processors/osm/process.py index d5d8be7..3e841e4 100644 --- a/backend/processors/osm/process.py +++ b/backend/processors/osm/process.py @@ -1,6 +1,15 @@ import geopandas as gpd from typing import List from geojson.feature import Feature, FeatureCollection +from shapely import Point +from shapely.ops import linemerge, split +from geojson.geometry import LineString +from shapely.geometry import LineString as shp_LineString +import shapely as shp +import json +from rest_api.util.shape import flush_shape_objects +from rest_api.models import Shape, Segment +from processors.osm.query import overpass_query, ALAMEDA_QUERY # Separa el geojson en N linestring, con N el número de calles aisladas (alameda ida, alameda vuelta == 2) @@ -30,21 +39,81 @@ def split_geojson_by_shape(df: gpd.GeoDataFrame) -> List[gpd.GeoDataFrame]: features = FeatureCollection(features=[Feature(geometry=f.geometry) for f in new_aux_df]) current_df = gpd.GeoDataFrame.from_features(features) i += 1 - output.append(gpd.GeoDataFrame.from_features(FeatureCollection(features=[Feature(geometry=f.geometry) for f in current_direction]))) + output.append(gpd.GeoDataFrame.from_features( + FeatureCollection(features=[Feature(geometry=f.geometry) for f in current_direction]))) aux_df = current_df.copy() return output -def segment_shapes(shapes_gdf): - # TODO: completar la función - return gpd.GeoDataFrame() +def merge_shape(gdf: gpd.GeoDataFrame) -> shp_LineString: + merged = linemerge(gdf["geometry"].unary_union) + return merged -def save_shapes_and_segments(segmented_shapes_gdf): - # TODO: completar la función - return gpd.GeoDataFrame() +def segment_shape_by_distance(shape: shp_LineString, distance_threshold: float = 500): + if distance_threshold <= 0: + raise ValueError("distance_threshold must be greater than 0.") + output_linestrings = [] + geom = shape + counter = 0 + geom_len = len(geom.coords) + while counter < geom_len: + previous_point = None + distance_accum = 0 + counter = 0 + for point in geom.coords: + point_obj = Point(point[0], point[1]) + if previous_point is None: + previous_point = point_obj + counter += 1 + continue + distance_accum += point_obj.distance(previous_point) + if distance_accum >= distance_threshold: + splitted = split(geom, point_obj).geoms + output_linestrings.append(splitted[0]) + if len(splitted) == 2: + geom = splitted[1] + geom_len = len(geom.coords) + else: + geom_len = 0 + geom = None + break + else: + counter += 1 + previous_point = point_obj + if geom is not None: + output_linestrings.append(geom) + return output_linestrings + + +def save_segmented_shape_to_db(segmented_shape: List[shp_LineString], shape_name: str): + # clears the db + shape = Shape.objects.create(**{"name": shape_name}) + for idx, segment in enumerate(segmented_shape): + segment_data = { + "shape": shape, + "segment": idx, + "geometry": segment.coords + } + Segment.objects.create(**segment_data) + + +def save_all_segmented_shapes_to_db(segmented_shapes: List[List[shp_LineString]]): + flush_shape_objects() + for idx, segmented_shape in enumerate(segmented_shapes): + save_segmented_shape_to_db(segmented_shape, shape_name=f"shape_{idx}") + + +# Crea la consulta, separa los distintos shapes, los mergea y divide en segmentos de 'distance_threshold' metros." +# Almacena toda la información en la db +def process_shape_data(distance_threshold: float = 500): + query_data = gpd.GeoDataFrame.from_dict(overpass_query(ALAMEDA_QUERY)) + splitted_geojson = split_geojson_by_shape(query_data) + segmented_shapes = [] + for feature in splitted_geojson: + merged = merge_shape(feature) + segmented = segment_shape_by_distance(merged, distance_threshold) + segmented_shapes.append(segmented) + save_all_segmented_shapes_to_db(segmented_shapes) -def process_geojson(geojson_data): - splitted_gdf = split_geojson_by_shape(geojson_data) - segmented_shapes = segment_shapes(splitted_gdf) \ No newline at end of file diff --git a/backend/processors/osm/query.py b/backend/processors/osm/query.py index fbcad92..6fbc97a 100644 --- a/backend/processors/osm/query.py +++ b/backend/processors/osm/query.py @@ -19,6 +19,3 @@ def overpass_query(query): api = overpass.API() response = api.get(query, verbosity='geom') return geojson.loads(geojson.dumps(response)) - - -data = overpass_query(ALAMEDA_QUERY) diff --git a/backend/processors/tests/test_process.py b/backend/processors/tests/test_process.py index e06fa13..879e6e2 100644 --- a/backend/processors/tests/test_process.py +++ b/backend/processors/tests/test_process.py @@ -2,7 +2,8 @@ import geopandas as gpd from geojson.feature import Feature, FeatureCollection from geojson.geometry import LineString -from processors.osm.process import split_geojson_by_shape +from shapely.geometry import LineString as shp_LineString +from processors.osm.process import split_geojson_by_shape, merge_shape, segment_shape_by_distance import pandas as pd @@ -67,3 +68,53 @@ def test_split_geojson_by_shape_mixed(self): actual = gpd.GeoDataFrame(pd.concat(actual, ignore_index=True)) expected = gpd.GeoDataFrame(pd.concat(expected, ignore_index=True)) self.assertTrue(actual.equals(expected)) + + +class TestGeometryUtils(BaseTestCase): + def setUp(self): + super(TestGeometryUtils, self).setUp() + self.gdf = gdf = gpd.GeoDataFrame.from_features( + FeatureCollection( + [ + Feature(geometry=LineString([(0, 0), (0, 1), (0, 2)])), + Feature(geometry=LineString([(0, 2), (0, 3), (0, 4)])), + ] + ) + ) + + def test_merge_shape(self): + expected = shp_LineString([(0.0, 0.0), (0.0, 1.0), (0.0, 2.0), (0.0, 3.0), (0.0, 4.0)]) + actual = merge_shape(self.gdf) + + self.assertEqual(actual, expected) + + def test_segment_shape_by_distance_exact(self): + merged = merge_shape(self.gdf) + actual = segment_shape_by_distance(merged, 2) + expected = [ + shp_LineString([(0.0, 0.0), (0.0, 1.0), (0.0, 2.0)]), + shp_LineString([(0.0, 2.0), (0.0, 3.0), (0.0, 4.0)]), + ] + self.assertEqual(actual, expected) + + def test_segment_shape_by_distance_not_exact(self): + merged = merge_shape(self.gdf) + actual = segment_shape_by_distance(merged, 3) + expected = [ + shp_LineString([(0.0, 0.0), (0.0, 1.0), (0.0, 2.0), (0.0, 3.0)]), + shp_LineString([(0.0, 3.0), (0.0, 4.0)]), + ] + self.assertEqual(actual, expected) + + def test_segment_shape_by_distance_greater_threshold(self): + merged = merge_shape(self.gdf) + actual = segment_shape_by_distance(merged) + expected = [merged] + self.assertEqual(actual, expected) + + def test_segment_shape_by_distance_raises(self): + merged = merge_shape(self.gdf) + with self.assertRaises(ValueError) as context: + segment_shape_by_distance(merged, 0) + self.assertEqual("distance_threshold must be greater than 0.", str(context.exception)) + diff --git a/backend/rest_api/migrations/0003_rename_shape_id_segment_shape.py b/backend/rest_api/migrations/0003_rename_shape_id_segment_shape.py new file mode 100644 index 0000000..ca28432 --- /dev/null +++ b/backend/rest_api/migrations/0003_rename_shape_id_segment_shape.py @@ -0,0 +1,18 @@ +# Generated by Django 4.1.1 on 2024-04-18 23:19 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('rest_api', '0002_rename_place_segment_sequence_alter_segment_geometry'), + ] + + operations = [ + migrations.RenameField( + model_name='segment', + old_name='shape_id', + new_name='shape', + ), + ] diff --git a/backend/rest_api/models.py b/backend/rest_api/models.py index 3dbc32f..6aee4f5 100644 --- a/backend/rest_api/models.py +++ b/backend/rest_api/models.py @@ -8,7 +8,7 @@ class Shape(models.Model): name = models.CharField(max_length=128) def to_geojson(self): - segments = Segment.objects.filter(shape_id=self.pk).all() + segments = Segment.objects.filter(shape=self.pk).all() if len(segments) == 0: return {} geojson = [segment.to_geojson() for segment in segments] @@ -19,18 +19,18 @@ def __str__(self): class Segment(models.Model): - shape_id = models.ForeignKey(Shape, on_delete=models.CASCADE) + shape = models.ForeignKey(Shape, on_delete=models.CASCADE) sequence = models.IntegerField(blank=False, null=False) geometry = ArrayField(ArrayField(models.FloatField()), blank=False, null=False) def __str__(self): - return f"Segment {self.sequence} of Shape {self.shape_id}" + return f"Segment {self.sequence} of Shape {self.shape}" def to_geojson(self): feature = Feature( geometry=LineString(coordinates=self.geometry), properties={ - "shape_id": self.shape_id.pk, + "shape_id": self.shape.pk, "sequence": self.sequence } ) diff --git a/docker/dev/backend_env b/docker/dev/backend_env index 39be452..441cbc1 100644 --- a/docker/dev/backend_env +++ b/docker/dev/backend_env @@ -10,7 +10,7 @@ DB_NAME=dbtemp DB_USER=user DB_PASS=pass DB_HOST=db -DB_PORT=5431 +DB_PORT=5432 # needed in dev mode CORS_ALLOWED_ORIGINS=http://127.0.0.1:8081,http://localhost:8081,http://localhost:5173,http://127.0.0.1:5173 From e7b1c1097fbbfa924083f1de8755c0e594eeedc7 Mon Sep 17 00:00:00 2001 From: Mrtn-fa Date: Fri, 19 Apr 2024 16:44:55 -0400 Subject: [PATCH 09/11] fixed Dockerfile. Added command process_shape_data. Added ShapeSerializer and ShapeViewSet --- backend/processors/models/shapes.py | 1 + backend/processors/osm/process.py | 13 ++++---- backend/processors/tests/test_process.py | 7 ++-- backend/rest_api/management/__init__.py | 0 .../rest_api/management/commands/__init__.py | 0 .../management/commands/process_shape_data.py | 21 ++++++++++++ backend/rest_api/models.py | 3 +- backend/rest_api/serializers.py | 8 +++++ backend/rest_api/urls.py | 3 +- backend/rest_api/views.py | 11 ++++++- docker/Dockerfile | 33 ++++++++++++++----- 11 files changed, 79 insertions(+), 21 deletions(-) create mode 100644 backend/rest_api/management/__init__.py create mode 100644 backend/rest_api/management/commands/__init__.py create mode 100644 backend/rest_api/management/commands/process_shape_data.py diff --git a/backend/processors/models/shapes.py b/backend/processors/models/shapes.py index 914f687..abf55c1 100644 --- a/backend/processors/models/shapes.py +++ b/backend/processors/models/shapes.py @@ -4,6 +4,7 @@ def shapes_to_geojson(): shapes = Shape.objects.all() + print(shapes) features = [] for shape in shapes: features.extend(shape.to_geojson()) diff --git a/backend/processors/osm/process.py b/backend/processors/osm/process.py index 3e841e4..abe28de 100644 --- a/backend/processors/osm/process.py +++ b/backend/processors/osm/process.py @@ -87,15 +87,16 @@ def segment_shape_by_distance(shape: shp_LineString, distance_threshold: float = def save_segmented_shape_to_db(segmented_shape: List[shp_LineString], shape_name: str): - # clears the db shape = Shape.objects.create(**{"name": shape_name}) + print("Created shape", shape) for idx, segment in enumerate(segmented_shape): segment_data = { "shape": shape, - "segment": idx, - "geometry": segment.coords + "sequence": idx, + "geometry": list(segment.coords) } - Segment.objects.create(**segment_data) + segment = Segment.objects.create(**segment_data) + print("Created segment", segment) def save_all_segmented_shapes_to_db(segmented_shapes: List[List[shp_LineString]]): @@ -107,7 +108,7 @@ def save_all_segmented_shapes_to_db(segmented_shapes: List[List[shp_LineString]] # Crea la consulta, separa los distintos shapes, los mergea y divide en segmentos de 'distance_threshold' metros." # Almacena toda la información en la db def process_shape_data(distance_threshold: float = 500): - query_data = gpd.GeoDataFrame.from_dict(overpass_query(ALAMEDA_QUERY)) + query_data = gpd.GeoDataFrame.from_features(overpass_query(ALAMEDA_QUERY)) splitted_geojson = split_geojson_by_shape(query_data) segmented_shapes = [] for feature in splitted_geojson: @@ -115,5 +116,3 @@ def process_shape_data(distance_threshold: float = 500): segmented = segment_shape_by_distance(merged, distance_threshold) segmented_shapes.append(segmented) save_all_segmented_shapes_to_db(segmented_shapes) - - diff --git a/backend/processors/tests/test_process.py b/backend/processors/tests/test_process.py index 879e6e2..b45154e 100644 --- a/backend/processors/tests/test_process.py +++ b/backend/processors/tests/test_process.py @@ -3,7 +3,7 @@ from geojson.feature import Feature, FeatureCollection from geojson.geometry import LineString from shapely.geometry import LineString as shp_LineString -from processors.osm.process import split_geojson_by_shape, merge_shape, segment_shape_by_distance +from processors.osm.process import split_geojson_by_shape, merge_shape, segment_shape_by_distance, process_shape_data import pandas as pd @@ -69,11 +69,14 @@ def test_split_geojson_by_shape_mixed(self): expected = gpd.GeoDataFrame(pd.concat(expected, ignore_index=True)) self.assertTrue(actual.equals(expected)) + def test_process_pipeline(self): + process_shape_data() + class TestGeometryUtils(BaseTestCase): def setUp(self): super(TestGeometryUtils, self).setUp() - self.gdf = gdf = gpd.GeoDataFrame.from_features( + self.gdf = gpd.GeoDataFrame.from_features( FeatureCollection( [ Feature(geometry=LineString([(0, 0), (0, 1), (0, 2)])), diff --git a/backend/rest_api/management/__init__.py b/backend/rest_api/management/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/rest_api/management/commands/__init__.py b/backend/rest_api/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/backend/rest_api/management/commands/process_shape_data.py b/backend/rest_api/management/commands/process_shape_data.py new file mode 100644 index 0000000..7937a17 --- /dev/null +++ b/backend/rest_api/management/commands/process_shape_data.py @@ -0,0 +1,21 @@ +from django.core.management import BaseCommand, CommandError +from processors.osm.process import process_shape_data + + +class Command(BaseCommand): + help = 'Queries a custom OSM Overpass query, processes it and saves it to database' + + def add_arguments(self, parser): + parser.add_argument( + "--distance", + help="Sets the distance threshold of segments in each shape queried", + type=int or float + ) + + def handle(self, *args, **options): + if options["distance"]: + if options["distance"] <= 0.0: + raise CommandError("Distance must be greater than 0") + process_shape_data(options['distance']) + else: + process_shape_data() diff --git a/backend/rest_api/models.py b/backend/rest_api/models.py index 6aee4f5..f729aca 100644 --- a/backend/rest_api/models.py +++ b/backend/rest_api/models.py @@ -8,7 +8,8 @@ class Shape(models.Model): name = models.CharField(max_length=128) def to_geojson(self): - segments = Segment.objects.filter(shape=self.pk).all() + segments = Segment.objects.filter(shape=self).all() + print(segments) if len(segments) == 0: return {} geojson = [segment.to_geojson() for segment in segments] diff --git a/backend/rest_api/serializers.py b/backend/rest_api/serializers.py index e69de29..0d4b17d 100644 --- a/backend/rest_api/serializers.py +++ b/backend/rest_api/serializers.py @@ -0,0 +1,8 @@ +from rest_framework import serializers +from rest_api.models import Shape + + +class ShapeSerializer(serializers.ModelSerializer): + class Meta: + model = Shape + fields = '__all__' diff --git a/backend/rest_api/urls.py b/backend/rest_api/urls.py index 9cfe6e1..dcdd267 100644 --- a/backend/rest_api/urls.py +++ b/backend/rest_api/urls.py @@ -1,8 +1,9 @@ from django.urls import include, path -from rest_api.views import GeoJSONViewSet +from rest_api.views import GeoJSONViewSet, ShapeViewSet # Wire up our API using automatic URL routing. # Additionally, we include login URLs for the browsable API. urlpatterns = [ path('mapData/', GeoJSONViewSet.as_view(), name='mapData'), + path('shapes/', ShapeViewSet.as_view({"get": 'list'}), name="shape") ] diff --git a/backend/rest_api/views.py b/backend/rest_api/views.py index 1bbbc38..1a7d674 100644 --- a/backend/rest_api/views.py +++ b/backend/rest_api/views.py @@ -6,7 +6,8 @@ from rest_framework import generics from rest_framework.permissions import AllowAny from processors.models.shapes import shapes_to_geojson - +from rest_api.models import Shape +from rest_api.serializers import ShapeSerializer # Create your views here. class GeoJSONViewSet(generics.GenericAPIView): @@ -19,3 +20,11 @@ def get(self, request): shapes_json = shapes_to_geojson() return JsonResponse(shapes_json, safe=False) + + +class ShapeViewSet(viewsets.ModelViewSet): + permission_classes = [AllowAny] + queryset = Shape.objects.all() + serializer_class = ShapeSerializer + + diff --git a/docker/Dockerfile b/docker/Dockerfile index 847ffdc..5f6c035 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,37 +1,52 @@ FROM python:3.9.13-alpine3.16 as base -FROM base as builder +FROM base as dependencies + +RUN /bin/sh -c "apk update" +RUN /bin/sh -c "apk add --no-cache \ + gdal-dev \ + g++ \ + proj \ + proj-dev \ + proj-util \ + gcc \ + musl-dev \ + geos \ + geos-dev \ + postgresql-dev\ + " + +FROM dependencies as requirements -ENV PROJ_DIR=/usr RUN mkdir /install -RUN /bin/sh -c 'apk update && apk add --no-cache gdal-dev g++ proj proj-dev proj-util gcc musl-dev geos-dev postgresql-dev' COPY requirements-prod.txt /install/requirements-prod.txt RUN /bin/sh -c 'pip3 install --no-cache-dir --upgrade pip' RUN /bin/sh -c 'pip3 install --no-cache-dir --no-warn-script-location --prefix /install -r /install/requirements-prod.txt' -# Set build target as dev in your docker-compose file -FROM base as dev +FROM requirements as dev + ENV PYTHONUNBUFFERED 1 -COPY --from=builder /install /usr/local +COPY --from=requirements /install /usr/local COPY requirements-dev.txt /install/requirements-dev.txt RUN /bin/sh -c 'apk update && apk add --no-cache postgresql-dev' RUN /bin/sh -c 'pip3 install --no-cache-dir --upgrade pip' RUN /bin/sh -c 'pip3 install --no-cache-dir -r /install/requirements-dev.txt' + WORKDIR /app COPY ./docker/entrypoint.sh ./docker/entrypoint.sh -COPY ./backend ./backend EXPOSE 8000 ENTRYPOINT ["/bin/sh", "docker/entrypoint.sh"] +COPY ./backend ./backend # Set build target as prod in your docker-compose file -FROM base as prod +FROM requirements as prod # Prevents Python from writing pyc files to disc ENV PYTHONDONTWRITEBYTECODE 1 # Prevents Python from buffering stdout and stderr ENV PYTHONUNBUFFERED 1 -COPY --from=builder /install /usr/local +COPY --from=requirements /install /usr/local RUN /bin/sh -c 'apk update && apk add --no-cache postgresql-dev' WORKDIR /app From e6ab2dd23f992b68ed1403e491fae7b91dbc8d8c Mon Sep 17 00:00:00 2001 From: Mrtn-fa Date: Fri, 19 Apr 2024 17:48:19 -0400 Subject: [PATCH 10/11] Added auxiliary Point class 'Point' to calculate Haversine distance. Fixed tests. --- Makefile | 3 +++ backend/processors/geometry/point.py | 32 +++++++++++++++--------- backend/processors/models/shapes.py | 1 - backend/processors/osm/process.py | 17 +++++++------ backend/processors/tests/test_process.py | 4 +-- backend/processors/util/shapes.py | 1 - backend/rest_api/models.py | 1 - backend/rest_api/serializers.py | 8 +++++- backend/rest_api/tests/test_models.py | 4 +-- backend/rest_api/urls.py | 5 ++-- backend/rest_api/views.py | 14 +++++++---- 11 files changed, 55 insertions(+), 35 deletions(-) diff --git a/Makefile b/Makefile index afdde31..22b6003 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,9 @@ test: $(TEST) build $(TEST) up --abort-on-container-exit +test_down: + $(TEST) down + build: $(COMPOSE_DEV) build diff --git a/backend/processors/geometry/point.py b/backend/processors/geometry/point.py index 4fa2539..3ecc2f0 100644 --- a/backend/processors/geometry/point.py +++ b/backend/processors/geometry/point.py @@ -2,17 +2,28 @@ from processors.geometry.constants import EARTH_RADIUS_KM +# Lon: x +# Lat: y class Point: - def __init__(self, latitude: float, longitude: float): - self.latitude = latitude - self.longitude = longitude + def __init__(self, x, y): + self.x = x + self.y = y + + def distance(self, other: "Point", algorithm: str = 'euclidean') -> float: + if algorithm == 'euclidean': + return self.euclidean_distance(other) + elif algorithm == 'haversine': + return self.haversine_distance(other) + + def euclidean_distance(self, other: "Point") -> float: + return math.sqrt((other.x - self.x) ** 2 + (other.y - self.y) ** 2) def haversine_distance(self, other: "Point") -> float: if not isinstance(other, Point): raise ValueError("Other point must be of type Point") - lat1, lon1 = math.radians(self.latitude), math.radians(self.longitude) - lat2, lon2 = math.radians(other.latitude), math.radians(other.longitude) + lat1, lon1 = math.radians(self.y), math.radians(self.x) + lat2, lon2 = math.radians(other.y), math.radians(other.x) lon_dist, lat_dist = lon2 - lon1, lat2 - lat1 @@ -25,9 +36,6 @@ def haversine_distance(self, other: "Point") -> float: return distance - def distance(self, other: "Point") -> float: - return self.haversine_distance(other) - def __eq__(self, point: "Point") -> bool: """ Return True if the latitude and longitude of two Point objects are equal, False otherwise. @@ -38,8 +46,8 @@ def __eq__(self, point: "Point") -> bool: if not isinstance(point, Point): raise ValueError("Point must be a Point object.") - are_equal = (self.latitude == point.latitude and - self.longitude == point.longitude) + are_equal = (self.y == point.y and + self.x == point.x) return are_equal @@ -50,7 +58,7 @@ def __hash__(self) -> int: :return: A representation of the point instance as a hash :rtype: int """ - return hash((self.latitude, self.longitude)) + return hash((self.y, self.x)) def __str__(self) -> str: """ @@ -59,4 +67,4 @@ def __str__(self) -> str: :return: A string representation of the point :rtype: str """ - return f"Point(latitude={str(self.latitude)}, longitude={str(self.longitude)})" + return f"Point(latitude={str(self.y)}, longitude={str(self.x)})" diff --git a/backend/processors/models/shapes.py b/backend/processors/models/shapes.py index abf55c1..914f687 100644 --- a/backend/processors/models/shapes.py +++ b/backend/processors/models/shapes.py @@ -4,7 +4,6 @@ def shapes_to_geojson(): shapes = Shape.objects.all() - print(shapes) features = [] for shape in shapes: features.extend(shape.to_geojson()) diff --git a/backend/processors/osm/process.py b/backend/processors/osm/process.py index abe28de..cfb6f7c 100644 --- a/backend/processors/osm/process.py +++ b/backend/processors/osm/process.py @@ -1,12 +1,10 @@ import geopandas as gpd from typing import List from geojson.feature import Feature, FeatureCollection -from shapely import Point +from processors.geometry.point import Point as p +from shapely.geometry import Point from shapely.ops import linemerge, split -from geojson.geometry import LineString from shapely.geometry import LineString as shp_LineString -import shapely as shp -import json from rest_api.util.shape import flush_shape_objects from rest_api.models import Shape, Segment from processors.osm.query import overpass_query, ALAMEDA_QUERY @@ -50,7 +48,7 @@ def merge_shape(gdf: gpd.GeoDataFrame) -> shp_LineString: return merged -def segment_shape_by_distance(shape: shp_LineString, distance_threshold: float = 500): +def segment_shape_by_distance(shape: shp_LineString, distance_threshold: float = 500, distance_algorithm: str = 'euclidean'): if distance_threshold <= 0: raise ValueError("distance_threshold must be greater than 0.") output_linestrings = [] @@ -67,7 +65,9 @@ def segment_shape_by_distance(shape: shp_LineString, distance_threshold: float = previous_point = point_obj counter += 1 continue - distance_accum += point_obj.distance(previous_point) + previous_p_aux = p(previous_point.x, previous_point.y) + actual_p_aux = p(point[0], point[1]) + distance_accum += actual_p_aux.distance(previous_p_aux, algorithm=distance_algorithm) if distance_accum >= distance_threshold: splitted = split(geom, point_obj).geoms output_linestrings.append(splitted[0]) @@ -111,8 +111,9 @@ def process_shape_data(distance_threshold: float = 500): query_data = gpd.GeoDataFrame.from_features(overpass_query(ALAMEDA_QUERY)) splitted_geojson = split_geojson_by_shape(query_data) segmented_shapes = [] - for feature in splitted_geojson: + for idx, feature in enumerate(splitted_geojson): merged = merge_shape(feature) - segmented = segment_shape_by_distance(merged, distance_threshold) + segmented = segment_shape_by_distance(merged, distance_threshold, distance_algorithm='haversine') segmented_shapes.append(segmented) + print(idx, segmented) save_all_segmented_shapes_to_db(segmented_shapes) diff --git a/backend/processors/tests/test_process.py b/backend/processors/tests/test_process.py index b45154e..3254ed0 100644 --- a/backend/processors/tests/test_process.py +++ b/backend/processors/tests/test_process.py @@ -70,7 +70,7 @@ def test_split_geojson_by_shape_mixed(self): self.assertTrue(actual.equals(expected)) def test_process_pipeline(self): - process_shape_data() + pass#process_shape_data() class TestGeometryUtils(BaseTestCase): @@ -93,7 +93,7 @@ def test_merge_shape(self): def test_segment_shape_by_distance_exact(self): merged = merge_shape(self.gdf) - actual = segment_shape_by_distance(merged, 2) + actual = segment_shape_by_distance(merged, distance_threshold=2) expected = [ shp_LineString([(0.0, 0.0), (0.0, 1.0), (0.0, 2.0)]), shp_LineString([(0.0, 2.0), (0.0, 3.0), (0.0, 4.0)]), diff --git a/backend/processors/util/shapes.py b/backend/processors/util/shapes.py index 7bbd8de..1833994 100644 --- a/backend/processors/util/shapes.py +++ b/backend/processors/util/shapes.py @@ -24,7 +24,6 @@ def clean_linestring(linestring): coords.append([float(point[0]), float(point[1])]) previous_coords = point linestring = LineString(coordinates=coords) - print(linestring) return linestring diff --git a/backend/rest_api/models.py b/backend/rest_api/models.py index f729aca..b5f1ad4 100644 --- a/backend/rest_api/models.py +++ b/backend/rest_api/models.py @@ -9,7 +9,6 @@ class Shape(models.Model): def to_geojson(self): segments = Segment.objects.filter(shape=self).all() - print(segments) if len(segments) == 0: return {} geojson = [segment.to_geojson() for segment in segments] diff --git a/backend/rest_api/serializers.py b/backend/rest_api/serializers.py index 0d4b17d..740e3b6 100644 --- a/backend/rest_api/serializers.py +++ b/backend/rest_api/serializers.py @@ -1,8 +1,14 @@ from rest_framework import serializers -from rest_api.models import Shape +from rest_api.models import Shape, Segment class ShapeSerializer(serializers.ModelSerializer): class Meta: model = Shape fields = '__all__' + + +class SegmentSerializer(serializers.ModelSerializer): + class Meta: + model = Segment + fields = '__all__' diff --git a/backend/rest_api/tests/test_models.py b/backend/rest_api/tests/test_models.py index 9352f75..f6db3c8 100644 --- a/backend/rest_api/tests/test_models.py +++ b/backend/rest_api/tests/test_models.py @@ -32,7 +32,7 @@ def create_segments(self, segment_data=None): segment_data = segment_data or self.segment_data shape_obj = self.create_shape() for segment in segment_data: - segment['shape_id'] = shape_obj + segment['shape'] = shape_obj segments = Segment.objects.bulk_create([Segment(**segment) for segment in segment_data]) return shape_obj, segments @@ -94,7 +94,7 @@ def test_to_geojson(self): expected = [Feature( geometry=LineString(coordinates=segment.geometry), properties={ - "shape_id": segment.shape_id.pk, + "shape_id": segment.shape.pk, "sequence": segment.sequence } ) for segment in segments] diff --git a/backend/rest_api/urls.py b/backend/rest_api/urls.py index dcdd267..98c1d13 100644 --- a/backend/rest_api/urls.py +++ b/backend/rest_api/urls.py @@ -1,9 +1,10 @@ from django.urls import include, path -from rest_api.views import GeoJSONViewSet, ShapeViewSet +from rest_api.views import GeoJSONViewSet, ShapeViewSet, SegmentViewSet # Wire up our API using automatic URL routing. # Additionally, we include login URLs for the browsable API. urlpatterns = [ path('mapData/', GeoJSONViewSet.as_view(), name='mapData'), - path('shapes/', ShapeViewSet.as_view({"get": 'list'}), name="shape") + path('shape/', ShapeViewSet.as_view({"get": 'list'}), name="shape"), + path('shape//segments/', SegmentViewSet.as_view({"get": 'list'}), name="segments" ) ] diff --git a/backend/rest_api/views.py b/backend/rest_api/views.py index 1a7d674..373fd2d 100644 --- a/backend/rest_api/views.py +++ b/backend/rest_api/views.py @@ -1,13 +1,11 @@ -import json - -from django.shortcuts import render from rest_framework import viewsets from django.http import JsonResponse from rest_framework import generics from rest_framework.permissions import AllowAny from processors.models.shapes import shapes_to_geojson -from rest_api.models import Shape -from rest_api.serializers import ShapeSerializer +from rest_api.models import Shape, Segment +from rest_api.serializers import ShapeSerializer, SegmentSerializer + # Create your views here. class GeoJSONViewSet(generics.GenericAPIView): @@ -28,3 +26,9 @@ class ShapeViewSet(viewsets.ModelViewSet): serializer_class = ShapeSerializer +class SegmentViewSet(viewsets.ModelViewSet): + permission_classes = [AllowAny] + serializer_class = SegmentSerializer + + def get_queryset(self): + return Segment.objects.filter(shape__id=self.kwargs['shape_pk']).order_by('sequence') From b5b2266dcea30e9986c2f37aa7d509e068b0cb26 Mon Sep 17 00:00:00 2001 From: Mrtn-fa Date: Fri, 19 Apr 2024 18:00:16 -0400 Subject: [PATCH 11/11] added test_task.yml --- .github/workflows/test_task.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .github/workflows/test_task.yml diff --git a/.github/workflows/test_task.yml b/.github/workflows/test_task.yml new file mode 100644 index 0000000..40121bf --- /dev/null +++ b/.github/workflows/test_task.yml @@ -0,0 +1,25 @@ +name: UOCT - tests +on: + push: + branches: + - dev + - main + paths-ignore: + - 'README.md' + pull_request: + branches: + - dev + - main + paths-ignore: + - 'README.md' + +jobs: + test-build: + runs-on: ubuntu-latest + steps: + - name: Repo checkout + uses: actions/checkout@v4.1.1 + + - name: Build and run tests + if: github.event_name == 'pull_request' || (github.event_name == 'push' && !contains(github.event.head_commit.message, 'Merge pull request')) + run: make test